diff options
Diffstat (limited to 'python/notebooks')
| -rw-r--r-- | python/notebooks/Marketing Strategy.ipynb | 5328 |
1 files changed, 4945 insertions, 383 deletions
diff --git a/python/notebooks/Marketing Strategy.ipynb b/python/notebooks/Marketing Strategy.ipynb index 509d939c..86f1e948 100644 --- a/python/notebooks/Marketing Strategy.ipynb +++ b/python/notebooks/Marketing Strategy.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 111, + "execution_count": 21, "metadata": {}, "outputs": [], "source": [ @@ -14,7 +14,7 @@ }, { "cell_type": "code", - "execution_count": 112, + "execution_count": 22, "metadata": { "collapsed": true }, @@ -25,7 +25,7 @@ }, { "cell_type": "code", - "execution_count": 113, + "execution_count": 23, "metadata": {}, "outputs": [], "source": [ @@ -37,13 +37,16 @@ "prob = .1\n", "successprob = np.full((num_prospect, 1), prob)\n", "issuerweights = np.full(num_prospect, 1/num_prospect)\n", - "amount = np.full(num_prospect, 0.0)" + "zero_recov = np.full(num_prospect, 0.0)\n", + "bins = [0,0.1, 50, 100, 150, 200, 250, 300, 350, 400, 450, 500, pool_size]" ] }, { "cell_type": "code", - "execution_count": 114, - "metadata": {}, + "execution_count": 24, + "metadata": { + "scrolled": false + }, "outputs": [ { "data": { @@ -833,18 +836,7 @@ }, "metadata": {}, "output_type": "display_data" - } - ], - "source": [ - "df = mk.run_scenario(pool_size, rho, successprob, issuerweights, amount)\n", - "ax = mk.plot_prob_over(df)" - ] - }, - { - "cell_type": "code", - "execution_count": 115, - "metadata": {}, - "outputs": [ + }, { "data": { "application/javascript": [ @@ -1625,7 +1617,7 @@ { "data": { "text/html": [ - "<img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAoAAAAHgCAYAAAA10dzkAAAgAElEQVR4Xu3dC9y91Zz//7ehUvQtIiqmg6EUJsdBpnKYiRojh9SgA0rFoFCkqBQqTOWsHEaR+BkVchinDtNxlFNqfjl9O8lhoi8piZ//472t/f1f3e1978917Wvde637fl2PR4/ovq611/W81t77vde11rruJDYEEEAAAQQQQACBJSVwpyV1tpwsAggggAACCCCAgAiANAIEEEAAAQQQQGCJCRAAl9gF53QRQAABBBBAAAECIG0AAQQQQAABBBBYYgIEwCV2wTldBBBAAAEEEECAAEgbQAABBBBAAAEElpgAAXCJXXBOFwEEEEAAAQQQIADSBhBAAAEEEEAAgSUmQABcYhec00UAAQQQQAABBAiAtAEEEEAAAQQQQGCJCRAAl9gF53QRQAABBBBAAAECIG0AAQQQQAABBBBYYgIEwCV2wTldBBBAAAEEEECAAEgbQAABBBBAAAEElpgAAXCJXXBOFwEEEEAAAQQQIADSBhBAAAEEEEAAgSUmQABcYhec00UAAQQQQAABBBZ7APT5rS/pt1xqBBBAAAEEEEBgEQisKemnkv48zbks9gC4gaRrpwHiWAQQQAABBBBAoDCB+0m6bpo6LfYAuEzSimuuuUbLlvl/siGAAAIIIIAAAnUK/OY3v9H9739/V34tSb+Z5iyWRABcsWIFAXCaVsKxCCCAAAIIIDBzAQfAtdZy9iMATroYgx5AAuAkJv6OAAIIIIAAAqULEADjV4gAGLdiTwQQQAABBBAoWIAAGL84BMC4FXsigAACCBQs8Kc//Um33XZbwTWkatMKrLLKKrrzne88thgCYFyYABi3Yk8EEEAAgQIF/vznP+tnP/uZbrzxxgJrR5X6Flh77bV13/veV3e60x2naRAA49oEwLgVeyKAAAIIFChw/fXXD8LfuuuuqzXWWGNkMCiw2lSppYCD/s0336xf/OIXcghcb7317lACATCOSgCMW7EnAggggEBhAr7te+WVVw7C3zrrrFNY7ahODoEbbrhhEAIf9KAH3eF2MAEwLk4AjFuxJwIIIIBAYQK///3v9ZOf/EQbbbSRVl999cJqR3VyCNxyyy1avny5Nt54Y931rne93UsQAOPiBMC4FXsigAACCBQmMAyAo8JAYVWlOj0JzHfNCYBxZAJg3Io9EUAAAQQKEyAAFnZBFqA6BMB+kAmA/ThSCgIIIIDADAQIgHdE9+zY0047TTvuuGPnK3LYYYfp9NNP17e//e2xZeyxxx6DyTfez9u2226rLbfcUscdd9zg//u2/H777Tf4p8+NANiPJgGwH0dKQQABBBCYgcB8YWCj1525YDVaftQOrV/LAeqjH/3o4Li73OUug2fYPutZz9Lhhx+uu93tbq3LGx6wUAHQTxHzzFzPyB0VAH/5y18OzsMzs731US+XQwDs3DRudyABsB9HSkEAAQQQmIFA7QHw5z//uT7ykY8MFrA+99xzteeee2r33XfX+973vttpOmh5xrOD4qStj6AV6QGcW4+5PYBz/95HvQiAk65+/O9LKgDm/DXY5ddf/DKxJwIIIIDAKIHaA2DzFqrPb6+99tLnP/95feITn9ATn/hEfelLX9LBBx+s7373u/ryl788+G8Oh29/+9t1zTXXDGbCHnLIIdp1111X8jhovfe979VnP/tZnXXWWYNFk4855hjttNNOK/d57WtfO7hNfO211w7+/vznP19vfOMb5SdteBsGwH333VdHHnmkvPTKDjvsoBNPPHFlj1+bW8C+HXzVVVetfP0NN9xwULdNNtlEF198sR71qEet/Nu73vWuwfl5pu+oxZ7pAezns4AA2I+jCIA9QVIMAggg0EJgsQXAV7ziFTrllFP06U9/ehD2Hvawhw3CkIOSb7Wec8452nnnnQfj7J7ylKcMwuKBBx6or3zlK4P9vTk0eU3Eo446SltvvbVOPvlkvfWtb9X3vvc9PfjBDx7s41D3pCc9Seuvv/7gvzt4vupVrxqUNQyAft2/+7u/0zve8Q55du2LX/xiPeYxj9HHP/7xwT5tAqBvB3utRvd2PvWpTx2s33fve99b//iP/6gHPvCBes973rPyqj/iEY/Q05/+9MGt8Lahn1nA8TcPATBuNe+eBMCeICkGAQQQaCGwmAKge8K23357PfnJT5Z73hzoPMHiGc94xkqRrbbaSltssYVOOOGElf/tuc99rn73u9/pzDP/MubRAXCfffa53W3kxz72sXKwcs/gqO1tb3ubPvnJT+qb3/zmygDokOheuPvd736D/+beSPcCXnfddYNewzYBcFivuZNTPvWpTw3q6qe5rLbaavrOd76jhz/84frxj388mESyWALgSyUdIMnPLvm+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\" width=\"640\">" + "<img src=\"data:image/png;base64,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\" width=\"640\">" ], "text/plain": [ "<IPython.core.display.HTML object>" @@ -1641,45 +1633,40 @@ "dtype: float64" ] }, - "execution_count": 115, + "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "mk.plot_scenarios(df, pool_size)\n", + "df = mk.run_scenario(pool_size, rho, successprob, issuerweights, zero_recov)\n", + "ax = mk.plot_prob_over(df)\n", + "mk.plot_scenarios(df, bins)\n", "mk.prob_over(df, 50)" ] }, { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "mk.plot_scenarios(df, pool_size)\n", - "mk.prob_over(df, 100)" - ] - }, - { "cell_type": "code", - "execution_count": 116, + "execution_count": 25, "metadata": { "collapsed": true }, "outputs": [], "source": [ - "#40 prospect of 25mm each, correlation of 80%, likelihood: 10% each - expected capital raised: 100mm\n", - "num_prospect = 80\n", - "pool_size = 50*num_prospect #50*80=4bn\n", - "rho = .8\n", - "prob = .025\n", + "#40 prospect of 50mm each, correlation of 80%, likelihood: 5% each - expected capital raised: 100mm\n", + "num_prospect = 40\n", + "pool_size = 2000\n", + "rho = .8 \n", + "prob = .05\n", "successprob = np.full((num_prospect, 1), prob)\n", "issuerweights = np.full(num_prospect, 1/num_prospect)\n", - "amount = np.full(num_prospect, 0.0)" + "zero_recov = np.full(num_prospect, 0.0)\n", + "bins = [0,0.1, 50, 100, 150, 200, 250, 300, 350, 400, 450, 500, pool_size]" ] }, { "cell_type": "code", - "execution_count": 117, + "execution_count": 26, "metadata": {}, "outputs": [ { @@ -2462,7 +2449,796 @@ { "data": { "text/html": [ - "<img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAoAAAAHgCAYAAAA10dzkAAAgAElEQVR4XuydB5hU1d2HXzqigNKrFCkqFhRBRAVUVOy9d6OiJvZEY++xxpaoMXaNjc9G7BUBBUFBioAovQoIUpQO+z2/8V4yzs7uzsyd3Z1lfud5NpGde8499z3/2Xnn1Eo4mYAJmIAJmIAJmIAJ5BWBSnn1tH5YEzABEzABEzABEzABLIAOAhMwARMwARMwARPIMwIWwDxrcD+uCZiACZiACZiACVgAHQMmYAImYAImYAImkGcELIB51uB+XBMwARMwARMwAROwADoGTMAETMAETMAETCDPCFgA86zB/bgmYAImYAImYAImYAF0DJiACZiACZiACZhAnhGwAOZZg/txTcAETMAETMAETMAC6BgwARMwARMwARMwgTwjYAHMswb345qACZiACZiACZiABdAxYAImYAImYAImYAJ5RsACmGcN7sc1ARMwARMwARMwAQugY8AETMAETMAETMAE8oyABTDPGtyPawImYAImYAImYAIWQMeACZiACZiACZiACeQZAQtgnjW4H9cETMAETMAETMAELICOARMwARMwARMwARPIMwIWwDxrcD+uCZiACZiACZiACVgAHQMmYAImYAImYAImkGcELIB51uB+XBMwARMwARMwAROwADoGTMAETMAETMAETCDPCFgA86zB/bgmYAImYAImYAImYAF0DJiACZiACZiACZhAnhGwAOZZg/txTcAETMAETMAETMAC6BgwARMwARMwARMwgTwjYAHMswb345qACZiACZiACZiABdAxYAImYAImYAImYAJ5RsACmGcN7sc1ARMwARMwARMwAQugY8AETMAETMAETMAE8oyABTDPGtyPawImYAImYAImYAIWQMeACZiACZiACZiACeQZAQtgnjW4H9cETMAETMAETMAELICOARMwARMwARMwARPIMwIWwDxrcD+uCZiACZiACZiACVgAHQMmYAImYAImYAImkGcELIB51uAV8HHPBJ6Oq/d64EfgI+A6YE4Wnym8V1fg6yyVexNwI9AQ+KmEMj8LXu8dd10BcDOgcpT02kBgHyC8/mCgW9w1Wap6WsXcBpwONAN+AbZMK3d6F4ft1AaYnkZWXStmyl+WqSPwDfAmcHLCjbcCvgVmAz0AxXc+J/FpBDxQChAyidH7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XhKwAP6+2bVC9o033uDII4/MOB5uuukm3nzzTUaP1pkKydOZZ57JkiVLYtcp9e7dm86dO/PAA7+d36Ah+UsvvTT2k81kAbQAZjOeEsuyAJYmXZdtAiZgAlkkUFEFUAL17LPPxkhoaxOdYXv00Udz8803s/nmm2dMqKwEUFulaWHGlltumVQAtVhDz6HFOUrZqJfKsQBaADN+c6SQ0QKYAiRfYgImYAK5QKAiC+D8+fN5+umnY/sXDhkyhHPOOYczzjiDRx999HdoJVpa+SpRLCllQ7RS6QFMrEdiD2Di69molwWwpNb3HMCSCRV/RUwAz39yMDVqaR3Jb6lnh4YcvWuLqGU7vwmYgAmYQBYJVGQBjB9CFZJzzz2Xt99+m5deeol99tmH999/n2uvvZaxY8fywQcfxH4nObz33nuZNWtWbCXsddddx2mn6XyF35JE65FHHuG///0vn332GU2aNOHuu+/muON0Mutv6aqrrooNE2vvRL1+yimncMMNN1CtWrXY66EAXnDBBdx2220sWrSIQw45hMcff3xjj186Q8AaDtbK3TC1atUqVre2bdsyYsQIdtttt42v/eMf/4g93/Tp05Nu6eMewOLfPJ4DGO2PS0wAW17an8o1fuu6VqpetTKTbu3rPaaisXVuEzABE8gqgUQhUG/ZyrWp7PiV1WrECtusWpWUPyMSBUr5L774Yl588UVeffXVmOzttNNOMRmSKGmodfDgwZxwwgmxeXZ9+vSJyeKVV17JRx99FLs+FMD69etz55130rNnT55//nnuuOMOxo0bx3bbbRe7RlK377770qxZs9jvJZ6XX355rKxQAHXf3Xffnb///e9ode0f/vAHunXrxgsvaIc2SEcANRzcqFGjWG9n37590Yke2rPxgAMOiO3n9/DDD29sjF133ZXDDjssNhSeLFkALYDZf+f+r8SYAD703mg227w2q9dt4J4PJsVenXz7QVSt8vuNJ0uzIi7bBEzABEygeAKJQrBizTq2v0E7hZV9mnDLgdSqXvIwbTKBUk/YwQcfzH777Yd63iR0WmBxxBFHbHyQPffck06dOvHvf/974++OP/54fv31V955Rzue/dYDeP755/9uGLl79+5IrNQzmCzdc889vPLKK3z9tU5N/a0HUJKoXrgWLX4b+VJvpHoB58yZE+s1TEcAw3olLk7p379/rK7z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\" width=\"640\">" + "<img src=\"data:image/png;base64,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\" width=\"640\">" + ], + "text/plain": [ + "<IPython.core.display.HTML object>" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/javascript": [ + "/* Put everything inside the global mpl namespace */\n", + "window.mpl = {};\n", + "\n", + "\n", + "mpl.get_websocket_type = function() {\n", + " if (typeof(WebSocket) !== 'undefined') {\n", + " return WebSocket;\n", + " } else if (typeof(MozWebSocket) !== 'undefined') {\n", + " return MozWebSocket;\n", + " } else {\n", + " alert('Your browser does not have WebSocket support.' +\n", + " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", + " 'Firefox 4 and 5 are also supported but you ' +\n", + " 'have to enable WebSockets in about:config.');\n", + " };\n", + "}\n", + "\n", + "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", + " this.id = figure_id;\n", + "\n", + " this.ws = websocket;\n", + "\n", + " this.supports_binary = (this.ws.binaryType != undefined);\n", + "\n", + " if (!this.supports_binary) {\n", + " var warnings = document.getElementById(\"mpl-warnings\");\n", + " if (warnings) {\n", + " warnings.style.display = 'block';\n", + " warnings.textContent = (\n", + " \"This browser does not support binary websocket messages. \" +\n", + " \"Performance may be slow.\");\n", + " }\n", + " }\n", + "\n", + " this.imageObj = new Image();\n", + "\n", + " this.context = undefined;\n", + " this.message = undefined;\n", + " this.canvas = undefined;\n", + " this.rubberband_canvas = undefined;\n", + " this.rubberband_context = undefined;\n", + " this.format_dropdown = undefined;\n", + "\n", + " this.image_mode = 'full';\n", + "\n", + " this.root = $('<div/>');\n", + " this._root_extra_style(this.root)\n", + " this.root.attr('style', 'display: inline-block');\n", + "\n", + " $(parent_element).append(this.root);\n", + "\n", + " this._init_header(this);\n", + " this._init_canvas(this);\n", + " this._init_toolbar(this);\n", + "\n", + " var fig = this;\n", + "\n", + " this.waiting = false;\n", + "\n", + " this.ws.onopen = function () {\n", + " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", + " fig.send_message(\"send_image_mode\", {});\n", + " if (mpl.ratio != 1) {\n", + " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", + " }\n", + " fig.send_message(\"refresh\", {});\n", + " }\n", + "\n", + " this.imageObj.onload = function() {\n", + " if (fig.image_mode == 'full') {\n", + " // Full images could contain transparency (where diff images\n", + " // almost always do), so we need to clear the canvas so that\n", + " // there is no ghosting.\n", + " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", + " }\n", + " fig.context.drawImage(fig.imageObj, 0, 0);\n", + " };\n", + "\n", + " this.imageObj.onunload = function() {\n", + " this.ws.close();\n", + " }\n", + "\n", + " this.ws.onmessage = this._make_on_message_function(this);\n", + "\n", + " this.ondownload = ondownload;\n", + "}\n", + "\n", + "mpl.figure.prototype._init_header = function() {\n", + " var titlebar = $(\n", + " '<div class=\"ui-dialog-titlebar ui-widget-header ui-corner-all ' +\n", + " 'ui-helper-clearfix\"/>');\n", + " var titletext = $(\n", + " '<div class=\"ui-dialog-title\" style=\"width: 100%; ' +\n", + " 'text-align: center; padding: 3px;\"/>');\n", + " titlebar.append(titletext)\n", + " this.root.append(titlebar);\n", + " this.header = titletext[0];\n", + "}\n", + "\n", + "\n", + "\n", + "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", + "\n", + "}\n", + "\n", + "\n", + "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", + "\n", + "}\n", + "\n", + "mpl.figure.prototype._init_canvas = function() {\n", + " var fig = this;\n", + "\n", + " var canvas_div = $('<div/>');\n", + "\n", + " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", + "\n", + " function canvas_keyboard_event(event) {\n", + " return fig.key_event(event, event['data']);\n", + " }\n", + "\n", + " canvas_div.keydown('key_press', canvas_keyboard_event);\n", + " canvas_div.keyup('key_release', canvas_keyboard_event);\n", + " this.canvas_div = canvas_div\n", + " this._canvas_extra_style(canvas_div)\n", + " this.root.append(canvas_div);\n", + "\n", + " var canvas = $('<canvas/>');\n", + " canvas.addClass('mpl-canvas');\n", + " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", + "\n", + " this.canvas = canvas[0];\n", + " this.context = canvas[0].getContext(\"2d\");\n", + "\n", + " var backingStore = this.context.backingStorePixelRatio ||\n", + "\tthis.context.webkitBackingStorePixelRatio ||\n", + "\tthis.context.mozBackingStorePixelRatio ||\n", + "\tthis.context.msBackingStorePixelRatio ||\n", + "\tthis.context.oBackingStorePixelRatio ||\n", + "\tthis.context.backingStorePixelRatio || 1;\n", + "\n", + " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", + "\n", + " var rubberband = $('<canvas/>');\n", + " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", + "\n", + " var pass_mouse_events = true;\n", + "\n", + " canvas_div.resizable({\n", + " start: function(event, ui) {\n", + " pass_mouse_events = false;\n", + " },\n", + " resize: function(event, ui) {\n", + " fig.request_resize(ui.size.width, ui.size.height);\n", + " },\n", + " stop: function(event, ui) {\n", + " pass_mouse_events = true;\n", + " fig.request_resize(ui.size.width, ui.size.height);\n", + " },\n", + " });\n", + "\n", + " function mouse_event_fn(event) {\n", + " if (pass_mouse_events)\n", + " return fig.mouse_event(event, event['data']);\n", + " }\n", + "\n", + " rubberband.mousedown('button_press', mouse_event_fn);\n", + " rubberband.mouseup('button_release', mouse_event_fn);\n", + " // Throttle sequential mouse events to 1 every 20ms.\n", + " rubberband.mousemove('motion_notify', mouse_event_fn);\n", + "\n", + " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", + " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", + "\n", + " canvas_div.on(\"wheel\", function (event) {\n", + " event = event.originalEvent;\n", + " event['data'] = 'scroll'\n", + " if (event.deltaY < 0) {\n", + " event.step = 1;\n", + " } else {\n", + " event.step = -1;\n", + " }\n", + " mouse_event_fn(event);\n", + " });\n", + "\n", + " canvas_div.append(canvas);\n", + " canvas_div.append(rubberband);\n", + "\n", + " this.rubberband = rubberband;\n", + " this.rubberband_canvas = rubberband[0];\n", + " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", + " this.rubberband_context.strokeStyle = \"#000000\";\n", + "\n", + " this._resize_canvas = function(width, height) {\n", + " // Keep the size of the canvas, canvas container, and rubber band\n", + " // canvas in synch.\n", + " canvas_div.css('width', width)\n", + " canvas_div.css('height', height)\n", + "\n", + " canvas.attr('width', width * mpl.ratio);\n", + " canvas.attr('height', height * mpl.ratio);\n", + " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", + "\n", + " rubberband.attr('width', width);\n", + " rubberband.attr('height', height);\n", + " }\n", + "\n", + " // Set the figure to an initial 600x600px, this will subsequently be updated\n", + " // upon first draw.\n", + " this._resize_canvas(600, 600);\n", + "\n", + " // Disable right mouse context menu.\n", + " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", + " return false;\n", + " });\n", + "\n", + " function set_focus () {\n", + " canvas.focus();\n", + " canvas_div.focus();\n", + " }\n", + "\n", + " window.setTimeout(set_focus, 100);\n", + "}\n", + "\n", + "mpl.figure.prototype._init_toolbar = function() {\n", + " var fig = this;\n", + "\n", + " var nav_element = $('<div/>')\n", + " nav_element.attr('style', 'width: 100%');\n", + " this.root.append(nav_element);\n", + "\n", + " // Define a callback function for later on.\n", + " function toolbar_event(event) {\n", + " return fig.toolbar_button_onclick(event['data']);\n", + " }\n", + " function toolbar_mouse_event(event) {\n", + " return fig.toolbar_button_onmouseover(event['data']);\n", + " }\n", + "\n", + " for(var toolbar_ind in mpl.toolbar_items) {\n", + " var name = mpl.toolbar_items[toolbar_ind][0];\n", + " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", + " var image = mpl.toolbar_items[toolbar_ind][2];\n", + " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", + "\n", + " if (!name) {\n", + " // put a spacer in here.\n", + " continue;\n", + " }\n", + " var button = $('<button/>');\n", + " button.addClass('ui-button ui-widget ui-state-default ui-corner-all ' +\n", + " 'ui-button-icon-only');\n", + " button.attr('role', 'button');\n", + " button.attr('aria-disabled', 'false');\n", + " button.click(method_name, toolbar_event);\n", + " button.mouseover(tooltip, toolbar_mouse_event);\n", + "\n", + " var icon_img = $('<span/>');\n", + " icon_img.addClass('ui-button-icon-primary ui-icon');\n", + " icon_img.addClass(image);\n", + " icon_img.addClass('ui-corner-all');\n", + "\n", + " var tooltip_span = $('<span/>');\n", + " tooltip_span.addClass('ui-button-text');\n", + " tooltip_span.html(tooltip);\n", + "\n", + " button.append(icon_img);\n", + " button.append(tooltip_span);\n", + "\n", + " nav_element.append(button);\n", + " }\n", + "\n", + " var fmt_picker_span = $('<span/>');\n", + "\n", + " var fmt_picker = $('<select/>');\n", + " fmt_picker.addClass('mpl-toolbar-option ui-widget ui-widget-content');\n", + " fmt_picker_span.append(fmt_picker);\n", + " nav_element.append(fmt_picker_span);\n", + " this.format_dropdown = fmt_picker[0];\n", + "\n", + " for (var ind in mpl.extensions) {\n", + " var fmt = mpl.extensions[ind];\n", + " var option = $(\n", + " '<option/>', {selected: fmt === mpl.default_extension}).html(fmt);\n", + " fmt_picker.append(option)\n", + " }\n", + "\n", + " // Add hover states to the ui-buttons\n", + " $( \".ui-button\" ).hover(\n", + " function() { $(this).addClass(\"ui-state-hover\");},\n", + " function() { $(this).removeClass(\"ui-state-hover\");}\n", + " );\n", + "\n", + " var status_bar = $('<span class=\"mpl-message\"/>');\n", + " nav_element.append(status_bar);\n", + " this.message = status_bar[0];\n", + "}\n", + "\n", + "mpl.figure.prototype.request_resize = function(x_pixels, y_pixels) {\n", + " // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n", + " // which will in turn request a refresh of the image.\n", + " this.send_message('resize', {'width': x_pixels, 'height': y_pixels});\n", + "}\n", + "\n", + "mpl.figure.prototype.send_message = function(type, properties) {\n", + " properties['type'] = type;\n", + " properties['figure_id'] = this.id;\n", + " this.ws.send(JSON.stringify(properties));\n", + "}\n", + "\n", + "mpl.figure.prototype.send_draw_message = function() {\n", + " if (!this.waiting) {\n", + " this.waiting = true;\n", + " this.ws.send(JSON.stringify({type: \"draw\", figure_id: this.id}));\n", + " }\n", + "}\n", + "\n", + "\n", + "mpl.figure.prototype.handle_save = function(fig, msg) {\n", + " var format_dropdown = fig.format_dropdown;\n", + " var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n", + " fig.ondownload(fig, format);\n", + "}\n", + "\n", + "\n", + "mpl.figure.prototype.handle_resize = function(fig, msg) {\n", + " var size = msg['size'];\n", + " if (size[0] != fig.canvas.width || size[1] != fig.canvas.height) {\n", + " fig._resize_canvas(size[0], size[1]);\n", + " fig.send_message(\"refresh\", {});\n", + " };\n", + "}\n", + "\n", + "mpl.figure.prototype.handle_rubberband = function(fig, msg) {\n", + " var x0 = msg['x0'] / mpl.ratio;\n", + " var y0 = (fig.canvas.height - msg['y0']) / mpl.ratio;\n", + " var x1 = msg['x1'] / mpl.ratio;\n", + " var y1 = (fig.canvas.height - msg['y1']) / mpl.ratio;\n", + " x0 = Math.floor(x0) + 0.5;\n", + " y0 = Math.floor(y0) + 0.5;\n", + " x1 = Math.floor(x1) + 0.5;\n", + " y1 = Math.floor(y1) + 0.5;\n", + " var min_x = Math.min(x0, x1);\n", + " var min_y = Math.min(y0, y1);\n", + " var width = Math.abs(x1 - x0);\n", + " var height = Math.abs(y1 - y0);\n", + "\n", + " fig.rubberband_context.clearRect(\n", + " 0, 0, fig.canvas.width, fig.canvas.height);\n", + "\n", + " fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n", + "}\n", + "\n", + "mpl.figure.prototype.handle_figure_label = function(fig, msg) {\n", + " // Updates the figure title.\n", + " fig.header.textContent = msg['label'];\n", + "}\n", + "\n", + "mpl.figure.prototype.handle_cursor = function(fig, msg) {\n", + " var cursor = msg['cursor'];\n", + " switch(cursor)\n", + " {\n", + " case 0:\n", + " cursor = 'pointer';\n", + " break;\n", + " case 1:\n", + " cursor = 'default';\n", + " break;\n", + " case 2:\n", + " cursor = 'crosshair';\n", + " break;\n", + " case 3:\n", + " cursor = 'move';\n", + " break;\n", + " }\n", + " fig.rubberband_canvas.style.cursor = cursor;\n", + "}\n", + "\n", + "mpl.figure.prototype.handle_message = function(fig, msg) {\n", + " fig.message.textContent = msg['message'];\n", + "}\n", + "\n", + "mpl.figure.prototype.handle_draw = function(fig, msg) {\n", + " // Request the server to send over a new figure.\n", + " fig.send_draw_message();\n", + "}\n", + "\n", + "mpl.figure.prototype.handle_image_mode = function(fig, msg) {\n", + " fig.image_mode = msg['mode'];\n", + "}\n", + "\n", + "mpl.figure.prototype.updated_canvas_event = function() {\n", + " // Called whenever the canvas gets updated.\n", + " this.send_message(\"ack\", {});\n", + "}\n", + "\n", + "// A function to construct a web socket function for onmessage handling.\n", + "// Called in the figure constructor.\n", + "mpl.figure.prototype._make_on_message_function = function(fig) {\n", + " return function socket_on_message(evt) {\n", + " if (evt.data instanceof Blob) {\n", + " /* FIXME: We get \"Resource interpreted as Image but\n", + " * transferred with MIME type text/plain:\" errors on\n", + " * Chrome. But how to set the MIME type? It doesn't seem\n", + " * to be part of the websocket stream */\n", + " evt.data.type = \"image/png\";\n", + "\n", + " /* Free the memory for the previous frames */\n", + " if (fig.imageObj.src) {\n", + " (window.URL || window.webkitURL).revokeObjectURL(\n", + " fig.imageObj.src);\n", + " }\n", + "\n", + " fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n", + " evt.data);\n", + " fig.updated_canvas_event();\n", + " fig.waiting = false;\n", + " return;\n", + " }\n", + " else if (typeof evt.data === 'string' && evt.data.slice(0, 21) == \"data:image/png;base64\") {\n", + " fig.imageObj.src = evt.data;\n", + " fig.updated_canvas_event();\n", + " fig.waiting = false;\n", + " return;\n", + " }\n", + "\n", + " var msg = JSON.parse(evt.data);\n", + " var msg_type = msg['type'];\n", + "\n", + " // Call the \"handle_{type}\" callback, which takes\n", + " // the figure and JSON message as its only arguments.\n", + " try {\n", + " var callback = fig[\"handle_\" + msg_type];\n", + " } catch (e) {\n", + " console.log(\"No handler for the '\" + msg_type + \"' message type: \", msg);\n", + " return;\n", + " }\n", + "\n", + " if (callback) {\n", + " try {\n", + " // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n", + " callback(fig, msg);\n", + " } catch (e) {\n", + " console.log(\"Exception inside the 'handler_\" + msg_type + \"' callback:\", e, e.stack, msg);\n", + " }\n", + " }\n", + " };\n", + "}\n", + "\n", + "// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n", + "mpl.findpos = function(e) {\n", + " //this section is from http://www.quirksmode.org/js/events_properties.html\n", + " var targ;\n", + " if (!e)\n", + " e = window.event;\n", + " if (e.target)\n", + " targ = e.target;\n", + " else if (e.srcElement)\n", + " targ = e.srcElement;\n", + " if (targ.nodeType == 3) // defeat Safari bug\n", + " targ = targ.parentNode;\n", + "\n", + " // jQuery normalizes the pageX and pageY\n", + " // pageX,Y are the mouse positions relative to the document\n", + " // offset() returns the position of the element relative to the document\n", + " var x = e.pageX - $(targ).offset().left;\n", + " var y = e.pageY - $(targ).offset().top;\n", + "\n", + " return {\"x\": x, \"y\": y};\n", + "};\n", + "\n", + "/*\n", + " * return a copy of an object with only non-object keys\n", + " * we need this to avoid circular references\n", + " * http://stackoverflow.com/a/24161582/3208463\n", + " */\n", + "function simpleKeys (original) {\n", + " return Object.keys(original).reduce(function (obj, key) {\n", + " if (typeof original[key] !== 'object')\n", + " obj[key] = original[key]\n", + " return obj;\n", + " }, {});\n", + "}\n", + "\n", + "mpl.figure.prototype.mouse_event = function(event, name) {\n", + " var canvas_pos = mpl.findpos(event)\n", + "\n", + " if (name === 'button_press')\n", + " {\n", + " this.canvas.focus();\n", + " this.canvas_div.focus();\n", + " }\n", + "\n", + " var x = canvas_pos.x * mpl.ratio;\n", + " var y = canvas_pos.y * mpl.ratio;\n", + "\n", + " this.send_message(name, {x: x, y: y, button: event.button,\n", + " step: event.step,\n", + " guiEvent: simpleKeys(event)});\n", + "\n", + " /* This prevents the web browser from automatically changing to\n", + " * the text insertion cursor when the button is pressed. We want\n", + " * to control all of the cursor setting manually through the\n", + " * 'cursor' event from matplotlib */\n", + " event.preventDefault();\n", + " return false;\n", + "}\n", + "\n", + "mpl.figure.prototype._key_event_extra = function(event, name) {\n", + " // Handle any extra behaviour associated with a key event\n", + "}\n", + "\n", + "mpl.figure.prototype.key_event = function(event, name) {\n", + "\n", + " // Prevent repeat events\n", + " if (name == 'key_press')\n", + " {\n", + " if (event.which === this._key)\n", + " return;\n", + " else\n", + " this._key = event.which;\n", + " }\n", + " if (name == 'key_release')\n", + " this._key = null;\n", + "\n", + " var value = '';\n", + " if (event.ctrlKey && event.which != 17)\n", + " value += \"ctrl+\";\n", + " if (event.altKey && event.which != 18)\n", + " value += \"alt+\";\n", + " if (event.shiftKey && event.which != 16)\n", + " value += \"shift+\";\n", + "\n", + " value += 'k';\n", + " value += event.which.toString();\n", + "\n", + " this._key_event_extra(event, name);\n", + "\n", + " this.send_message(name, {key: value,\n", + " guiEvent: simpleKeys(event)});\n", + " return false;\n", + "}\n", + "\n", + "mpl.figure.prototype.toolbar_button_onclick = function(name) {\n", + " if (name == 'download') {\n", + " this.handle_save(this, null);\n", + " } else {\n", + " this.send_message(\"toolbar_button\", {name: name});\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.toolbar_button_onmouseover = function(tooltip) {\n", + " this.message.textContent = tooltip;\n", + "};\n", + "mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Pan axes with left mouse, zoom with right\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n", + "\n", + "mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n", + "\n", + "mpl.default_extension = \"png\";var comm_websocket_adapter = function(comm) {\n", + " // Create a \"websocket\"-like object which calls the given IPython comm\n", + " // object with the appropriate methods. Currently this is a non binary\n", + " // socket, so there is still some room for performance tuning.\n", + " var ws = {};\n", + "\n", + " ws.close = function() {\n", + " comm.close()\n", + " };\n", + " ws.send = function(m) {\n", + " //console.log('sending', m);\n", + " comm.send(m);\n", + " };\n", + " // Register the callback with on_msg.\n", + " comm.on_msg(function(msg) {\n", + " //console.log('receiving', msg['content']['data'], msg);\n", + " // Pass the mpl event to the overriden (by mpl) onmessage function.\n", + " ws.onmessage(msg['content']['data'])\n", + " });\n", + " return ws;\n", + "}\n", + "\n", + "mpl.mpl_figure_comm = function(comm, msg) {\n", + " // This is the function which gets called when the mpl process\n", + " // starts-up an IPython Comm through the \"matplotlib\" channel.\n", + "\n", + " var id = msg.content.data.id;\n", + " // Get hold of the div created by the display call when the Comm\n", + " // socket was opened in Python.\n", + " var element = $(\"#\" + id);\n", + " var ws_proxy = comm_websocket_adapter(comm)\n", + "\n", + " function ondownload(figure, format) {\n", + " window.open(figure.imageObj.src);\n", + " }\n", + "\n", + " var fig = new mpl.figure(id, ws_proxy,\n", + " ondownload,\n", + " element.get(0));\n", + "\n", + " // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n", + " // web socket which is closed, not our websocket->open comm proxy.\n", + " ws_proxy.onopen();\n", + "\n", + " fig.parent_element = element.get(0);\n", + " fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n", + " if (!fig.cell_info) {\n", + " console.error(\"Failed to find cell for figure\", id, fig);\n", + " return;\n", + " }\n", + "\n", + " var output_index = fig.cell_info[2]\n", + " var cell = fig.cell_info[0];\n", + "\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_close = function(fig, msg) {\n", + " var width = fig.canvas.width/mpl.ratio\n", + " fig.root.unbind('remove')\n", + "\n", + " // Update the output cell to use the data from the current canvas.\n", + " fig.push_to_output();\n", + " var dataURL = fig.canvas.toDataURL();\n", + " // Re-enable the keyboard manager in IPython - without this line, in FF,\n", + " // the notebook keyboard shortcuts fail.\n", + " IPython.keyboard_manager.enable()\n", + " $(fig.parent_element).html('<img src=\"' + dataURL + '\" width=\"' + width + '\">');\n", + " fig.close_ws(fig, msg);\n", + "}\n", + "\n", + "mpl.figure.prototype.close_ws = function(fig, msg){\n", + " fig.send_message('closing', msg);\n", + " // fig.ws.close()\n", + "}\n", + "\n", + "mpl.figure.prototype.push_to_output = function(remove_interactive) {\n", + " // Turn the data on the canvas into data in the output cell.\n", + " var width = this.canvas.width/mpl.ratio\n", + " var dataURL = this.canvas.toDataURL();\n", + " this.cell_info[1]['text/html'] = '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n", + "}\n", + "\n", + "mpl.figure.prototype.updated_canvas_event = function() {\n", + " // Tell IPython that the notebook contents must change.\n", + " IPython.notebook.set_dirty(true);\n", + " this.send_message(\"ack\", {});\n", + " var fig = this;\n", + " // Wait a second, then push the new image to the DOM so\n", + " // that it is saved nicely (might be nice to debounce this).\n", + " setTimeout(function () { fig.push_to_output() }, 1000);\n", + "}\n", + "\n", + "mpl.figure.prototype._init_toolbar = function() {\n", + " var fig = this;\n", + "\n", + " var nav_element = $('<div/>')\n", + " nav_element.attr('style', 'width: 100%');\n", + " this.root.append(nav_element);\n", + "\n", + " // Define a callback function for later on.\n", + " function toolbar_event(event) {\n", + " return fig.toolbar_button_onclick(event['data']);\n", + " }\n", + " function toolbar_mouse_event(event) {\n", + " return fig.toolbar_button_onmouseover(event['data']);\n", + " }\n", + "\n", + " for(var toolbar_ind in mpl.toolbar_items){\n", + " var name = mpl.toolbar_items[toolbar_ind][0];\n", + " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", + " var image = mpl.toolbar_items[toolbar_ind][2];\n", + " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", + "\n", + " if (!name) { continue; };\n", + "\n", + " var button = $('<button class=\"btn btn-default\" href=\"#\" title=\"' + name + '\"><i class=\"fa ' + image + ' fa-lg\"></i></button>');\n", + " button.click(method_name, toolbar_event);\n", + " button.mouseover(tooltip, toolbar_mouse_event);\n", + " nav_element.append(button);\n", + " }\n", + "\n", + " // Add the status bar.\n", + " var status_bar = $('<span class=\"mpl-message\" style=\"text-align:right; float: right;\"/>');\n", + " nav_element.append(status_bar);\n", + " this.message = status_bar[0];\n", + "\n", + " // Add the close button to the window.\n", + " var buttongrp = $('<div class=\"btn-group inline pull-right\"></div>');\n", + " var button = $('<button class=\"btn btn-mini btn-primary\" href=\"#\" title=\"Stop Interaction\"><i class=\"fa fa-power-off icon-remove icon-large\"></i></button>');\n", + " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", + " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", + " buttongrp.append(button);\n", + " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", + " titlebar.prepend(buttongrp);\n", + "}\n", + "\n", + "mpl.figure.prototype._root_extra_style = function(el){\n", + " var fig = this\n", + " el.on(\"remove\", function(){\n", + "\tfig.close_ws(fig, {});\n", + " });\n", + "}\n", + "\n", + "mpl.figure.prototype._canvas_extra_style = function(el){\n", + " // this is important to make the div 'focusable\n", + " el.attr('tabindex', 0)\n", + " // reach out to IPython and tell the keyboard manager to turn it's self\n", + " // off when our div gets focus\n", + "\n", + " // location in version 3\n", + " if (IPython.notebook.keyboard_manager) {\n", + " IPython.notebook.keyboard_manager.register_events(el);\n", + " }\n", + " else {\n", + " // location in version 2\n", + " IPython.keyboard_manager.register_events(el);\n", + " }\n", + "\n", + "}\n", + "\n", + "mpl.figure.prototype._key_event_extra = function(event, name) {\n", + " var manager = IPython.notebook.keyboard_manager;\n", + " if (!manager)\n", + " manager = IPython.keyboard_manager;\n", + "\n", + " // Check for shift+enter\n", + " if (event.shiftKey && event.which == 13) {\n", + " this.canvas_div.blur();\n", + " // select the cell after this one\n", + " var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n", + " IPython.notebook.select(index + 1);\n", + " }\n", + "}\n", + "\n", + "mpl.figure.prototype.handle_save = function(fig, msg) {\n", + " fig.ondownload(fig, null);\n", + "}\n", + "\n", + "\n", + "mpl.find_output_cell = function(html_output) {\n", + " // Return the cell and output element which can be found *uniquely* in the notebook.\n", + " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", + " // IPython event is triggered only after the cells have been serialised, which for\n", + " // our purposes (turning an active figure into a static one), is too late.\n", + " var cells = IPython.notebook.get_cells();\n", + " var ncells = cells.length;\n", + " for (var i=0; i<ncells; i++) {\n", + " var cell = cells[i];\n", + " if (cell.cell_type === 'code'){\n", + " for (var j=0; j<cell.output_area.outputs.length; j++) {\n", + " var data = cell.output_area.outputs[j];\n", + " if (data.data) {\n", + " // IPython >= 3 moved mimebundle to data attribute of output\n", + " data = data.data;\n", + " }\n", + " if (data['text/html'] == html_output) {\n", + " return [cell, data, j];\n", + " }\n", + " }\n", + " }\n", + " }\n", + "}\n", + "\n", + "// Register the function which deals with the matplotlib target/channel.\n", + "// The kernel may be null if the page has been refreshed.\n", + "if (IPython.notebook.kernel != null) {\n", + " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", + "}\n" + ], + "text/plain": [ + "<IPython.core.display.Javascript object>" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "<img src=\"data:image/png;base64,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\" width=\"640\">" ], "text/plain": [ "<IPython.core.display.HTML object>" @@ -2474,23 +3250,74 @@ { "data": { "text/plain": [ - "<matplotlib.axes._subplots.AxesSubplot at 0x7ffb66111c88>" + "Probability 0.200852\n", + "dtype: float64" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df = mk.run_scenario(pool_size, rho, successprob, issuerweights, zero_recov)\n", + "mk.plot_prob_over(df)\n", + "mk.plot_scenarios(df, bins)\n", + "mk.prob_over(df, 50)" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [], + "source": [ + "#Current pipeline\n", + "#\tLikelihood\t\t\t\n", + "#size\t1\t2\t3\t4\n", + "#25\t0\t1\t1\t5\n", + "#10\t0\t0\t1\t12\n", + "#5\t4\t0\t2\t19\n", + "#2\t2\t0\t0\t16\n", + "#35% correlation\n", + "num = (4, 2, 1, 1, 1, 2, 5, 12, 19, 16)\n", + "size = (5, 2, 25, 25, 10, 5, 25, 10, 5, 2)\n", + "prob = (.5, .5, .35, .25, .25, .25, .05, .05, .05, .05)\n", + "rho = .35\n", + "zero_recov = np.full(sum(num), 0.0)\n", + "pool_size = sum(n*s for n,s in zip(num, size))\n", + "successprob, issuerweights = [], []\n", + "for n, s, p in zip(num,size,prob):\n", + " successprob.append(np.full((n, 1), p)) \n", + " issuerweights.append(np.full(n, s/pool_size))\n", + "successprob = np.concatenate(successprob)\n", + "issuerweights = np.concatenate(issuerweights)" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "466" ] }, - "execution_count": 117, + "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "df1 = mk.run_scenario(pool_size, rho, successprob, issuerweights, amount)\n", - "#ax1 = deepcopy(ax)\n", - "mk.plot_prob_over(df1)" + "bins = [0,0.1, 50, 100, 150, 200, 250, 300, 350, 400, 450, pool_size]\n", + "pool_size" ] }, { "cell_type": "code", - "execution_count": 118, + "execution_count": 29, "metadata": {}, "outputs": [ { @@ -3273,7 +4100,796 @@ { "data": { "text/html": [ - "<img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAoAAAAHgCAYAAAA10dzkAAAgAElEQVR4Xu3dCZhsVX2u8VeNoCQccCKCGHACAsagUaOg4hSNEqNRERNFuMqcREEDgqjgjFMUpxgnFJxvbgAVhzghXEC4ghNDgtNhikaDeozigMN9vj6rsGy7uqq7q/Zeq/vdz3MehrOr1qrfXlX11d5r/fcNcFNAAQUUUEABBRRYUwI3WFOv1hergAIKKKCAAgoogAHQQaCAAgoooIACCqwxAQPgGjvgvlwFFFBAAQUUUMAA6BhQQAEFFFBAAQXWmIABcI0dcF+uAgoooIACCihgAHQMKKCAAgoooIACa0zAALjGDrgvVwEFFFBAAQUUMAA6BhRQQAEFFFBAgTUmYABcYwfcl6uAAgoooIACChgAHQMKKKCAAgoooMAaEzAArrED7stVQAEFFFBAAQUMgI4BBRRQQAEFFFBgjQkYANfYAfflKqCAAgoooIACBkDHgAIKKKCAAgoosMYEDIBr7ID7chVQQAEFFFBAAQOgY0ABBRRQQAEFFFhjAgbANXbAfbkKKKCAAgoooEDLATB93wb4Hw+jAgoooIACCiiwRgQ2B/4T+NVKXm/LAfA2wFUrefE+VgEFFFBAAQUUaFBgW+DqlfS75QC4Dthw5ZVXsm5d/tVNAQUUUEABBRRYvQI/+MEPuO1tb5sXuAXwg5W80uYD4IYNGwyAKxkBPlYBBRRQQAEFmhBIANxii2Q/A+AGA2ATY9ZOKqCAAgoooMAKBQyAGwHnLgEbAFc4mny4AgoooIACCjQhYAA0ADYxUO2kAgoooMD0BH7xi19w3XXXTe8JfabqBG584xtzoxvdaGS/DIAGwOoGrR1SQAEFFJiNwK9+9Su+9a1v8f3vf382DfisVQlsueWW3PrWt+YGN/jtZRoGQANgVYPVziiggAIKzE7gm9/85lz422qrrdhss80WDAaza91n7kogQf/aa6/l29/+NgmBW2+99W81bQA0AHY1Hm1HAQUUUKBHgVz2veyyy+bC3y1ucYsee2LTXQlcc801cyFwhx12+K3LwQZAA2BX49B2FFBAAQV6FPjJT37CN77xDbbffntuetOb9tgTm+5K4Mc//jHr16/ndre7HTe5yU1+o1kDoAGwq3FoOwoooIACPQoMAuBCYaDHbtn0DAUWO+YGQAPgDIeeT62AAgooUIuAAbCWI9FdPwyA462tAzjeyD0UUEABBRoWMAD+9sHL6thTTjmFRz3qUcs+sscddxynnnoqX/jCF0Y+x3777Te3+Cb7Zbv//e/Prrvuyqtf/eq5/85l+cMOO2zuzzQ3A+B4TQPgeCP3UEABBRRoWGCxMLD9Uad39srWH7/nkttKgHrHO94x97jf+Z3fmbuH7aMf/Wie97zn8bu/+7tLfr7BA7oKgLnRRFbmZkXuQgHwO9/5ztzryMrsbNPoV57HADh+aBgAxxu5hwIKKKBAwwKtB8D/+q//4sQTT5wrYH3WWWex//77s++++/JP//RPv3FUErSy4jlBcdw2jaA1yRnA+f2YfwZw/t9Po18GwHFHf+PfLzkAzvrX0nJ+IU32Ut1LAQUUUGAtCrQeAIcvoeb4HXDAAXzoQx/iPe95Dw94wAP46Ec/yjHHHMOXvvQlPvaxj839v4TDV7ziFVx55ZVzK2Gf/exns88++1x/+BO03vCGN/CBD3yAM844Y65o8ste9jL22muv6/d55jOfOXeZ+Kqrrpr7+yc84Qk897nPJXfayDYIgIcccggvfOELSemVPffckze/+c3Xn/FbyiXgXA6+/PLLr29/u+22m+vb7W9/e84//3zufve7X/93r33ta+deX1b6LlTs2TOA49/pBsDxRu6hgAIKKNCwwGoLgE996lN597vfzb/8y7/Mhb273OUuc2EoQSmXWs8880z23nvvuXl2D37wg+fC4pFHHsnHP/7xuf2zJTSlJuLxxx/P/e53P04++WRe8pKX8OUvf5k//MM/nNsnoe6BD3wg22yzzdz/T/B8+tOfPvdcgwCYdv/0T/+UV77ylWR17VOe8hTuec978q53vWtun6UEwFwOTq3GnO388z//87n6fbe61a14yEMewp3udCde//rXXz8K73a3u/GIRzxi7lL4QpsBcPwb1gA43sg9FFBAAQUaFlhNATBnwh7+8IfzoAc9iJx5S6DLAotHPvKR1x+h3XffnV122YU3velN1/+/xz3ucfzoRz/i9NM3znlMADz44IN/4zLyve51LxKscmZwoe3lL38573vf+/jc5z53fQBMSMxZuG233Xbu/+VsZM4CXn311XNnDZcSAAf9mr845f3vf/9cX3M3l0033ZQvfvGL3PWud+XrX//63CISA+Dy3pwGwOW5+SgFFFBAgUYEWg+A73znO+eKGf/85z+fmweYsPfGN76RSy65ZC4A5hLtbW5zm+uPxs1vfnNe9apXzc0THGwnnHAC+ZPQNAhaWVzypCc96fp9Dj/88LkVvZ/+9Kfn/l/OMOYs4le/+lV++MMfzrW/bt26uTtsZMsl4JNOOun658z/y6KPnIXMpds99thjKgHwZz/72VzAfM1rXsPjH/94nva0p3HRRRfxyU9+cuQI9Azg+DenAXC8kXsooIACCjQs0HoAzNm0zOnL3Ltcjh3MwUvISgD83ve+d/2cuxymBMAEt+Fwl//OvLmvfe1riwbAnF371Kc+xWc/+1nuc5/7zF1ifehDH8oWW2zBe9/73rlLvZmTOCoADoosf+Yzn5m7tDyNM4Bp6xnPeMZc6PvgBz84F3bzejIncdRmABz/hjUAjjdyDwUUUECBhgVaD4DzF4EMDsWoADjqEvC11147Nx8wWy4B5xLy8OXee9/73nOXVvP/EvTyz0FgzGOy+jhnBYcDYC4BX3HFFXPBNFsWoeQS9XIvAW+yySZzi1se85jH/MaIu/TSS7nzne8816+ceczl4MVu62cAHP+GNQCON3IPBRRQQIGGBdZaAMycwMz5yyXTzBXMWbMs3PjEJz4xV4h5EABvectb8tKXvnTuTF8WbSTMZbHHzjvvzGmnncZjH/vYucUh97jHPebmDuZsYMrMDAfALAJJcMw/c/YvITHzCBPisi31DOAOO+wwt3Alq40z3+9mN7vZ9SMvwTbzD5/85Cf/Vgmc+cOzxQB4KHAEsDVwMZDS2Gct8r7L3x8C/AHw37lkDxydGogTvlcNgBNCuZsCCiigQJsCay0A5ihNUgYmq2oTFrNqOAs2siI4c+wGW0Lj2972Nn7605/OLezIIpGcfRsOgHn8QQcdNBcev/vd786d/XvLW95yfXBbagBMWM1K4ywsyaXe/HOwpS9ZZZyFMAmli22tBcC9gZOBhMCzgYNyxhXYGbhigReai99vBZ4MnAPsALwdeB9w+IRvUwPghFDupoACCijQpoC3gmvzuM3v9Yte9KK5eYg5Szluay0AngdcWM7oDV7bpUBuoJezevO31wEp1vOgob94JXBP4L7jcMrfGwAnhHI3BRRQQIE2BQyAbR63Qa+zAjlzAFP37wUveMFcPcJxW0sBcBPgWiAluE8ZemEnALsCeyzwYnOe9o3AQ4DzgdsDKfCTmwYePw7HADihkLspoIACCjQtYABs+vDNzSPMnMJHPepRcwWwUyB63NZSAMzymauB3cvl3MFrexaQQj47jnixfw/krN8Ncp/oXPYvl5BH2WwK5M9g2xy4KnV7Uttnks1bwU2i5D4KKKCAArUIGABrORLd9aPFALgbcO4Q0TFAbt630wJsWcrzXuDZQC4f3xHIGcM3Ay8YwXwccOz8vzMAdjcobUkBBRRQoFsBA2C33jW01lIAXM4l4KwO/mxZNTzwfiKQe7/8HvDLBQ6CZwBrGJn2QQEFFFCgMwEDYGfU1TTUUgAMWs7iXTDvEu4lwGkjFoFk308AzxwS/2vgbSUA/mKCI+EikAmQ3EUBBRRQoF2BQRjIfWMXKx7c7iu05/MFfvzjH8+VkLnd7W43dxu94W1wtxJgC+AHK9HL/LtpbIMyMAeXy8AHAlnqsgtwOXBSmSc4WBGcy7lPB7Lf4BJw5gAmGOa5JtkMgJMouY8CCiigQLMCKV582WWXsdVWW3GLW9yi2ddhxycXuOaaa+buWZzC0vMXjdQYAPPKUgPwyFII+qJSz+/M8pLPAFIRcb/y31n0MZgjmLtAfwf4YPl/G2/UN34zAI43cg8FFFBAgcYFcuuwFDBOCNxss83mboXmtvoEfvWrX5Fb3iX8bbnllmy9de6r8ZtbrQGw66NhAOxa3PYUUEABBToXSDD41re+df1dLDrvgA12KpDwl7ubLBT0DYAbD4UBsNMhaWMKKKCAAn0K5HLwdddd12cXbHvGAje+8Y0XrRVoADQAzngI+vQKKKCAAgooUJuAAdAAWNuYtD8KKKCAAgooMGMBA6ABcMZDzKdXQAEFFFBAgdoEDIAGwNrGpP1RQAEFFFBAgRkLGAANgDMeYj69AgoooIACCtQmYAA0ANY2Ju2PAgoooIACCsxYwABoAJzxEPPpFVBAAQUUUKA2AQOgAbC2MWl/FFBAAQUUUGDGAgZAA+CMh5hPr4ACCiiggAK1CRgADYC1jUn7o4ACCiiggAIzFjAAGgBnPMR8egUUUEABBRSoTcAAaACsbUzaHwUUUEABBRSYsYAB0AA44yHm0yuggAIKKKBAbQIGQANgbWPS/iiggAIKKKDAjAUMgAbAGQ8xn14BBRRQQAEFahMwABoAaxuT9kcBBRRQQAEFZixgADQAzniI+fQKKKCAAgooUJuAAdAAWNuYtD8KKKCAAgooMGMBA6ABcMZDzKdXQAEFFFBAgdoEDIAGwNrGpP1RQAEFFFBAgRkLGAANgDMeYj69AgoooIACCtQmYAA0ANY2Ju2PAgoooIACCsxYwABoAJzxEPPpFVBAAQUUUKA2AQOgAbC2MWl/FFBAAQUUUGDGAgZAA+CMh5hPr4ACCiiggAK1CRgADYC1jUn7o4ACCiiggAIzFqg1AB4KHAFsDVwMHAacNcLiDGCPBf7uw8CeE/qtAzZs2LCBdevyr+O37Y86ffxOK9hj/fGTdn0FjfhQBRRQQAEFFFiTAjUGwL2Bk4GEwLOBg4D9gZ2BKxY4SjcHNhn6/7cAvlge8/YJj6oBcEIod1NAAQUUUECB9gVqDIDnARcChwzxXgqcChw9AXnOFj6/nD380QT7ZxcD4IRQ7qaAAgoooIAC7QvUFgBzJu9aYC/glCHeE4BdR1zqnX8UvgycCxy4yOHZFMifwbY5cJWXgNsf0L4CBRRQQAEFFBgvUFsA3Aa4GtgdOGeo+88C9gV2HPOS7gnkDOKfAucvsu9xwLHz/94AOH7AuIcCCiiggAIKtC9QawDcrZzFGwgfA+wD7DSG/J+BPPaPxuznGcD2x66vQAEFFFBAAQWWKVBbAFzJJeDNgG8CzwVyyXgpm3MAl6LlvgoooIACCijQtEBtATCYuYR7QVkFPMC9BDhtzCKQ/YA3ArcBrlniUTEALhHM3RVQQAEFFFCgXYEaA+CgDMzBQ4s5DgB2AS4HTirzBOevCE6dwMwffPwyDocBcBloPkQBBRRQQAEF2hSoMQBGMjUAjyylXC4CDgfOLMQp/LweyBm/wbYD8B/AQ4CPL+NQGACXgeZDFFBAAQUUUKBNgVoDYNeaBsCuxW1PAQUUUEABBXoTMABupDcA9jYEbVgBBRRQQAEFuhYwABoAux5ztqeAAgoooIACPQsYAA2APQ9Bm1dAAQUUUECBrgUMgAbArsec7SmggAIKKKBAzwIGQANgz0PQ5hVQQAEFFFCgawEDoAGw6zFnewoooIACCijQs4AB0ADY8xC0eQUUUEABBRToWsAAaADseszZngIKKKCAAgr0LGAANAD2PARtXgEFFFBAAQW6FjAAGgC7HnO2p4ACCiiggAI9CxgADYA9D0GbV0ABBRRQQIGuBQyABsCux5ztKaCAAgoooEDPAgZAA2DPQ9DmFVBAAQUUUKBrAQOgAbDrMWd7CiiggAIKKNCzgAHQANjzELR5BRRQQAEFFOhawABoAOx6zNmeAgoooIACCvQsYAA0APY8BG1eAQUUUEABBboWMAAaALsec7angAIKKKCAAj0LGAANgD0PQZtXQAEFFFBAga4FDIAGwK7HnO0poIACCiigQM8CBkADYM9D0OYVUEABBRRQoGsBA6ABsOsxZ3sKKKCAAgoo0LOAAdAA2PMQtHkFFFBAAQUU6FrAAGgA7HrM2Z4CCiiggAIK9CxgADQA9jwEbV4BBRRQQAEFuhYwABoAux5ztqeAAgoooIACPQsYAA2APQ9Bm1dAAQUUUECBrgVqDYCHAkcAWwMXA4cBZy2CsyXwIuDRwM2AbwDPAD48Ieg6YMOGDRtYty7/On7b/qjTx++0gj3WH7/nCh7tQxVQQAEFFFBAgdECNQbAvYGTgYTAs4GDgP2BnYErFngpm5T9vg28GLgKuC3wP8AXJzz4BsAJodxNAQUUUEABBdoXqDEAngdcCBwyxHspcCpw9ALkB5ezhTsB1y3zkBgAlwnnwxRQQAEFFFCgPYHaAmDO5l0L7AWcMsR5ArArsMcCxLnM+93yuEcC3wHeDbwU+MWIQ7IpkD+DbfOcOfQScHsD2B4roIACCiigwNIFaguA2wBXA7sD5wy9nGcB+wI7LvAS/x3YHngX8AbgTsDrgYTG548gOQ44dv7fGQCXPoB8hAIKKKCAAgq0J1BrANwNOHeI8xhgHyCXeedvlwE3AW43dMbv6UOLSBY6Kp4BbG+s2mMFFFBAAQUUmJJAbQFwOZeAP1Pm/j14yORhZQVwgt7PJrByDuAESO6igAIKKKCAAqtDoLYAGNUsArmgrAIeKF8CnDZiEUhW/v4NcHvgl+UBTwOeCeSS8iSbAXASJfdRQAEFFFBAgVUhUGMAHJSByereXAY+EDgA2AW4HDipzBMcrAhOyZcExLcDry1zAN8GvKbUBpzkQBkAJ1FyHwUUUEABBRRYFQI1BsDApgbgkaUQ9EXA4cCZRfwMYD2w39ARuDfwqrJSOItI3jpmFfD8g2cAXBXD2RehgAIKKKCAApMI1BoAJ+n7NPcxAE5T0+dSQAEFFFBAgaoFDIAbD48BsOphaucUUEABBRRQYJoCBkAD4DTHk8+lgAIKKKCAAg0IGAANgA0MU7uogAIKKKCAAtMUMAAaAKc5nnwuBRRQQAEFFGhAwABoAGxgmNpFBRRQQAEFFJimgAHQADjN8eRzKaCAAgoooEADAgZAA2ADw9QuKqCAAgoooMA0BQyABsBpjiefSwEFFFBAAQUaEDAAGgAbGKZ2UQEFFFBAAQWmKWAANABOczz5XAoooIACCijQgIAB0ADYwDC1iwoooIACCigwTQEDoAFwmuPJ51JAAQUUUECBBgQMgAbABoapXVRAAQUUUECBaQoYAA2A0xxPPpcCCiiggAIKNCBgADQANjBM7aICCiiggAIKTFPAAGgAnOZ48rkUUEABBRRQoAEBA6ABsIFhahcVUEABBRRQYJoCBkAD4DTHk8+lgAIKKKCAAg0IGAANgA0MU7uogAIKKKCAAtMUMAAaAKc5nnwuBRRQQAEFFGhAwABoAGxgmNpFBRRQQAEFFJimgAHQADjN8eRzKaCAAgoooEADAgZAA2ADw9QuKqCAAgoooMA0BQyABsBpjiefSwEFFFBAAQUaEDAAGgAbGKZ2UQEFFFBAAQWmKWAANABOczz5XAoooIACCijQgIAB0ADYwDC1iwoooIACCigwTYFaA+ChwBHA1sDFwGHAWSNe+H7AiQv83U2Bn0yItQ7YsGHDBtaty7+O37Y/6vTxO61gj/XH77mCR/tQBRRQQAEFFFBgtECNAXBv4GQgIfBs4CBgf2Bn4IoFXkoC4AnAjvP+7ltLOPAGwCVguasCCiiggAIKtC1QYwA8D7gQOGSI9lLgVODoEQHw1cCWKzgUBsAV4PlQBRRQQAEFFGhLoLYAuAlwLbAXcMoQZc7w7QrsMSIAvgW4GrgR8AXgOcDnFzkUmwL5M9g2B67yEnBbg9feKqCAAgoooMDyBGoLgNuUILc7cM7QS3oWsO8Cl3mzy72AOwJfBnIm72nAw4E/Br4yguU44Nj5f2cAXN4g8lEKKKCAAgoo0JZArQFwN+DcIcpjgH2AnSbgvWG5hHwm8NQR+3sGcAJId1FAAQUUUECB1SlQWwBcziXghY7Mm4FtgYdNeNicAzghlLspoIACCiigQPsCtQXAiGYRyAVlFfBA+BLgtBGLQOYfhRsA55dLwk+e8BAZACeEcjcFFFBAAQUUaF+gxgA4KANzcLkMfCBwALALcDlwUpknOFgRnLl8ny3z/RLkctk3l4szjzBBcJLNADiJkvsooIACCiigwKoQqDEABjY1AI8shaAvAg4HMqcv2xnAeiD1/7K9Cng0cOsUcy6rf7PIY3gO4biDZQAcJ+TfK6CAAgoooMCqEag1AHYNbADsWtz2FFBAAQUUUKA3AQPgRnoDYG9D0IYVUEABBRRQoGsBA6ABsOsxZ3sKKKCAAgoo0LOAAdAA2PMQtHkFFFBAAQUU6FrAAGgA7HrM2Z4CCiiggAIK9CxgADQA9jwEbV4BBRRQQAEFuhYwABoAux5ztqeAAgoooIACPQsYAA2APQ9Bm1dAAQUUUECBrgUMgAbArsec7SmggAIKKKBAzwIGQANgz0PQ5hVQQAEFFFCgawEDoAGw6zFnewoooIACCijQs4AB0ADY8xC0eQUUUEABBRToWsAAaADseszZngIKKKCAAgr0LGAANAD2PARtXgEFFFBAAQW6FjAAGgC7HnO2p4ACCiiggAI9CxgADYA9D0GbV0ABBRRQQIGuBQyABsCux5ztKaCAAgoooEDPAgZAA2DPQ9DmFVBAAQUUUKBrAQOgAbDrMWd7CiiggAIKKNCzgAHQANjzELR5BRRQQAEFFOhawABoAOx6zNmeAgoooIACCvQsYAA0APY8BG1eAQUUUEABBboWMAAaALsec7angAIKKKCAAj0LGAANgD0PQZtXQAEFFFBAga4FDIAGwK7HnO0poIACCiigQM8CBkADYM9D0OYVUEABBRRQoGsBA6ABsOsxZ3sKKKCAAgoo0LNArQHwUOAIYGvgYuAw4KwJrB4PvAc4DXjUBPsPdlkHbNiwYQPr1uVfx2/bH3X6+J1WsMf64/dcwaN9qAIKKKCAAgooMFqgxgC4N3AykBB4NnAQsD+wM3DFIgdzu7L/14HvGgAd9goooIACCiigwMICNQbA84ALgUOGunwpcCpw9IgDeSPgM8CJwH2BLQ2ADnkFFFBAAQUUUKCNALgJcC2wF3DKUJdPAHYF9hhxIJ8H3AX4K+DtBkCHuwIKKKCAAgoo0M4l4G2Aq4HdgXOGuv0sYF9gxwVeSvZ9XwmI/z1hANwUyJ/BtjlwlXMAfasooIACCiigwFoQqO0S8CAA7gacO3QAjgH2AXaad1AS3L5U5gt+pPzdJGcAjwOOnX+ADYBrYcj7GhVQQAEFFFCgtgC41EvAuSz8eeAXQ4fyhuXff1nOGH5tgcPsGUDHvgIKKKCAAgqsWYHaAmAORBaBXFDO6g0OzCWltMv8RSA3Ae447+i9EMiZwacBlwE/m+DoWgZmAiR3UUABBRRQQIHVIVBjAByUgTm4XAY+EDgA2AW4HDipzBMctSJ4kkvA84+eAXB1jGdfhQIKKKCAAgpMIFBjAEy3UwPwyFII+iLgcODM8nrOANYD+414fQbACQ68uyiggAIKKKDA2hWoNQB2fUQ8A9i1uO0poIACCiigQG8CBsCN9AbA3oagDSuggAIKKKBA1wIGQANg12PO9hRQQAEFFFCgZwEDoAGw5yFo8woooIACCijQtYAB0ADY9ZizPQUUUEABBRToWcAAaADseQjavAIKKKCAAgp0LWAANAB2PeZsTwEFFFBAAQV6FjAAGgB7HoI2r4ACCiiggAJdCxgADYBdjznbU0ABBRRQQIGeBQyABsCeh6DNK6CAAgoooEDXAgZAA2DXY872FFBAAQUUUKBnAQOgAbDnIWjzCiiggAIKKNC1gAHQANj1mLM9BRRQQAEFFOhZwABoAOx5CNq8AgoooIACCnQtYAA0AHY95mxPAQUUUEABBXoWMAAaAHsegjavgAIKKKCAAl0LGAANgF2POdtTQAEFFFBAgZ4FDIAGwJ6HoM0roIACCiigQNcCBkADYNdjzvYUUEABBRRQoGcBA6ABsOchaPMKKKCAAgoo0LWAAdAA2PWYsz0FFFBAAQUU6FnAAGgA7HkI2rwCCiiggAIKdC1gADQAdj3mbE8BBRRQQAEFehYwABoAex6CNq+AAgoooIACXQsYAA2AXY8521NAAQUUUECBngUMgAbAnoegzSuggAIKKKBA1wIGQANg12PO9hRQQAEFFFCgZwEDoAGw5yFo8woooIACCijQtUCtAfBQ4Ahga+Bi4DDgrBE4jwaeBdwRuDHwFeCVwMlLwFwHbNiwYQPr1uVfx2/bH3X6+J1WsMf64/dcwaN9qAIKKKCAAgooMFqgxgC4dwlvCYFnAwcB+wM7A1cs8FLuD9wM+HfgZ8BflACYBPWxCQ++AXBCKHdTQAEFFFBAgfYFagyA5wEXAocM8V4KnAocPSF5Hp9TdM+ZcH8D4IRQ7qaAAgoooIAC7QvUFgA3Aa4F9gJOGeI9AdgV2GMM+Q2ABwIfAB4FfHzCQ2QAnBDK3RRQQAEFFFCgfYHaAuA2wNXA7sA5Q7yZ47cvsOMI8i3K4zYFfgHk8vHbFjk82S9/BtvmwFXOAWx/QPsKFFBAAQUUUGC8QK0BcDfg3KHuHwPsA+w04iXdELg98HvAg8ql35wBPGPE/scBx87/OwPg+AHjHgoooIACCijQvkBtAXCll4AHR+QtwG2Bh444RJ4BbH/s+goUUEABBRRQYJkCtQXAvIwsArmgXMYdvKxLgNOWsAjkrWU0Dx4AACAASURBVMAdgKwQnmRzDuAkSu6jgAIKKKCAAqtCoMYAOCgDc3C5DHwgcACwC3A5cFKZ7zdYEZx/fg74GpAziA8HXlpWEedM4CSbAXASJfdRQAEFFFBAgVUhUGMADGwWcRxZCkFfBBwOnFnEM69vPbBf+e8XAgmN2wI/LvUAs2r4fUs4QgbAJWC5qwIKKKCAAgq0LVBrAOxa1QDYtbjtKaCAAgoooEBvAgbAjfQGwN6GoA0roIACCiigQNcCBkADYNdjzvYUUEABBRRQoGcBA6ABsOchaPMKKKCAAgoo0LWAAdAA2PWYsz0FFFBAAQUU6FnAAGgA7HkI2rwCCiiggAIKdC1gADQAdj3mbE8BBRRQQAEFehYwABoAex6CNq+AAgoooIACXQsYAA2AXY8521NAAQUUUECBngUMgAbAnoegzSuggAIKKKBA1wIGQANg12PO9hRQQAEFFFCgZwEDoAGw5yFo8woooIACCijQtYAB0ADY9ZizPQUUUEABBRToWcAAaADseQjavAIKKKCAAgp0LWAANAB2PeZsTwEFFFBAAQV6FjAAGgB7HoI2r4ACCiiggAJdCxgADYBdjznbU0ABBRRQQIGeBQyABsCeh6DNK6CAAgoooEDXAgZAA2DXY872FFBAAQUUUKBnAQOgAbDnIWjzCiiggAIKKNC1gAHQANj1mLM9BRRQQAEFFOhZwABoAOx5CNq8AgoooIACCnQtYAA0AHY95mxPAQUUUEABBXoWMAAaAHsegjavgAIKKKCAAl0LGAANgF2POdtTQAEFFFBAgZ4FDIAGwJ6HoM0roIACCiigQNcCBkADYNdjzvYUUEABBRRQoGcBA6ABsOchaPMKKKCAAgoo0LVArQHwUOAIYGvgYuAw4KwROAcATwLuXP7+AuBZwPlLwFwHbNiwYQPr1uVfx2/bH3X6+J1WsMf64/dcwaN9qAIKKKCAAgooMFqgxgC4N3AykBB4NnAQsD+wM3DFAi/lXWW/c4CfAEcCjwZ2Aa6e8OAbACeEcjcFFFBAAQUUaF+gxgB4HnAhcMgQ76XAqcDRE5DfCPge8HfASRPsn10MgBNCuZsCCiiggAIKtC9QWwDcBLgW2As4ZYj3BGBXYI8JyDcHvl2e40Mj9t8UyJ/Blsdc5SXgCXTdRQEFFFBAAQWaF6gtAG5TLtvuDuSS7mDLnL59gR0nEH898NAyJzCXhBfajgOOnf8XBsAJdN1FAQUUUEABBZoXqDUA7gacO6R7DLAPsNMY8cz/Owq4P/ClRfb1DGDzQ9cXoIACCiiggALLFagtAK7kEvA/AM8GHgx8bokgzgFcIpi7K6CAAgoooEC7ArUFwEhmEUhKuWQV8GC7BDhtkUUgKRmT8JdLv59dxuEwAC4DzYcooIACCiigQJsCNQbAQRmYg8tl4AOB1PpLWZfLy8relHcZrAjOZd8XAH9TysEMjsQPgfyZZDMATqLkPgoooIACCiiwKgRqDICBzdm/BLsUgr4IOBw4s4ifAawH9iv/nX/fboGj8Twgiz0m2QyAkyi5jwIKKKCAAgqsCoFaA2DXuAbArsVtTwEFFFBAAQV6EzAAbqQ3APY2BG1YAQUUUEABBboWMAAaALsec7angAIKKKCAAj0LGAANgD0PQZtXQAEFFFBAga4FDIAGwK7HnO0poIACCiigQM8CBkADYM9D0OYVUEABBRRQoGsBA6ABsOsxZ3sKKKCAAgoo0LOAAdAA2PMQtHkFFFBAAQUU6FrAAGgA7HrM2Z4CCiiggAIK9CxgADQA9jwEbV4BBRRQQAEFuhYwABoAux5ztqeAAgoooIACPQsYAA2APQ9Bm1dAAQUUUECBrgUMgAbArsec7SmggAIKKKBAzwIGQANgz0PQ5hVQQAEFFFCgawEDoAGw6zFnewoooIACCijQs4AB0ADY8xC0eQUUUEABBRToWsAAaADseszZngIKKKCAAgr0LGAANAD2PARtXgEFFFBAAQW6FjAAGgC7HnO2p4ACCiiggAI9CxgADYA9D0GbV0ABBRRQQIGuBQyABsCux5ztKaCAAgoooEDPAgZAA2DPQ9DmFVBAAQUUUKBrAQOgAbDrMWd7CiiggAIKKNCzgAHQANjzELR5BRRQQAEFFOhawABoAOx6zNmeAgoooIACCvQsYAA0APY8BG1eAQUUUEABBboWMAAaALsec7angAIKKKCAAj0LGAANgD0PQZtXQAEFFFBAga4Fag2AhwJHAFsDFwOHAWeNwNkFeD7wJ8B2wOHAq5cIuQ7YsGHDBtaty7+O37Y/6vTxO61gj/XH77mCR/tQBRRQQAEFFFBgtECNAXBv4GQgIfBs4CBgf2Bn4IoFXso9gMcBFwCvAl5qAHTIK6CAAgoooIACbQXA84ALgUOGun0pcCpw9JiDub6EP88AOuoVUEABBRRQQIERArWdAdwEuBbYCzhlqM8nALsCe0wpAG4K5M9g2xy4ykvAvk8UUEABBRRQYC0I1BYAtwGuBnYHzhk6AM8C9gV2nFIAPA44dv5zGQDXwpD3NSqggAIKKKBArQFwN+DcocNzDLAPsNOUAqBnAB37CiiggAIKKLBmBWoLgF1dAp5/wF0FvGbfAr5wBRRQQAEF1p5AbQEwRyCLQLKiN6uAB9slwGkuAll7A9RXrIACCiiggALTF6gxAA7KwBxcLgMfCBwApN7f5cBJZZ7gYEVwzhqmREy2DwPvKn9+CHx1QjLPAE4I5W4KKKCAAgoo0L5AjQEwqjn7d2QpBH1RKe58ZuE+A0i5l/3Kf28PfGOBQ/EZ4P4THiID4IRQ7qaAAgoooIAC7QvUGgC7ljUAdi1uewoooIACCijQm4ABcCO9AbC3IWjDCiiggAIKKNC1gAHQANj1mLM9BRRQQAEFFOhZwABoAOx5CNq8AgoooIACCnQtYAA0AHY95mxPAQUUUEABBXoWMAAaAHsegjavgAIKKKCAAl0LGAANgF2POdtTQAEFFFBAgZ4FDIAGwJ6HoM0roIACCiigQNcCBkADYNdjzvYUUEABBRRQoGcBA6ABsOchaPMKKKCAAgoo0LWAAdAA2PWYsz0FFFBAAQUU6FnAAGgA7HkI2rwCCiiggAIKdC1gADQAdj3mbE8BBRRQQIE1KbD9UafP9HWvP37PiZ/fAGgAnHiwuKMCCiiggAIKLF/AALh8u1k9ch2wYcOGDaxbl38dv9V0EMf31j0UUEABBRRQoG+BmrKDZwA9A9j3+8H2FVBAAQUUWBMCBsD6DrNnAOs7JvZIAQUUUECBVSVgAKzvcBoA6zsm9kgBBRRQQIFVJWAArO9wGgDrOyb2SAEFFFBAgVUlYACs73CuuQBY0yCsbzjYIwUUUEABBaYvUNN3r4tANh5fA+CUx/lSahFNuWmfTgEFFFBAgSoFDID1HRYD4JSPiQFwyqA+nQIKKKBA8wIGwPoOoQFwysfEADhlUJ9OAQUUUKB5AQNgfYfQADjlYzLLAFjTG2jKbD6dAgoooMAqFqjp+8s5gBsHmgFwym84A+CUQX06BRRQQIHmBQyA9R1CA+CUj4kBcMqgPp0CCiigQPMCBsD6DqEBcMrHxAA4GrSmD4ApH3afTgEFFFBgEYGaPv+9BOwl4Jm8WQ2ABsCZDCyfVAEFFGhYwAA4/uAdChwBbA1cDBwGnLXIwx4DvAC4A/A14BjglPHNXL+HZwCXgDXJrgbA1RsAa/oAm2Qszt+n9f4v5zX7GAUUqEOgps+fGs8A7g2cDCQEng0cBOwP7AxcscAhvHcJh88poe+vgOcD9wHOm/CQGwAnhJp0NwOgAXDSsTJ/v1mOnbRV0wfwco18nAIKtClQ0+dPjQEwoe1C4JChw3spcCpw9AKH/H1lFe/Dhv7uo8D3gL+ecIgYACeEmnS3WX6J1/QGmtRjeD/7v7jaLMfOagiAjh/Hz3I+dwaPaX38rOS11/DYmvxrC4CbANcCe827hHsCsCuwxwIHMGcFX1X+DP768HLZeLsRB3xTIH8G2+bAVVdeeSXr1iULjt/ufOzHxu+0gj0uet5DV/Do8Q9tuf8t9z1Hxv4vPj4d+4v7OH4cP+M/4Ufv4fhx/AwEEgBve9vb5j+3AH6wknF1g5U8uDx2G+BqYHfgnKHnexawL7DjAm38DNgPePfQ3/0NcOK8kDf80OOAY6fQX59CAQUUUEABBRRoWWDbkr2W/RqmGQB3A84d6kkWdewD7DQiACYcvmfo754AvBW4yYhXM/8MYHa7OfDdZb/6xR84d4YRCPL/zKiNWT5ty/1vue85pvZ/liN7/HPrP95olnvoP0vd8c+t/3ijWe7RhX/a+E/gVyt5IdMIgF1dAl7J61zOY+fmGE7jNOtyGp/CY1ruf8t9z6Gz/1MYwCt4Cv1XgDeFh+o/BcQVPIX+K8CbwkOb8Z9GAIxXFoFcUFYBD/wuAU5bZBFIEuzDh7A/Anx/CYtApnCcFn2KZg7iiFfRcv9b7rsBcNbvzPHP7/gZbzTLPfSfpe7459Z/vNEs92jGf1oBcFAG5uByGfhA4ABgF+By4KRyrXqwIjiXi88stf8SEh8JvHCJZWBmeQD9Ep+17uLP38wbaBWGb8d+v2Nff/1XKuDn50oFV/b4ZvynFQDDlRqAR5ZC0BcBWdWbkJftDGB9WfgxoH1sCX23HyoE/a8rc5/qozPnMIH1JcBPp/rM3TxZy/1vue85uva/mzE+qhX99V+JgONnJXorf6z+Kzec6BmmGQAnatCdFFBAAQUUUEABBfoVMAD262/rCiiggAIKKKBA5wIGwM7JbVABBRRQQAEFFOhXwADYr7+tK6CAAgoooIACnQsYADsnt0EFFFBAAQUUUKBfAQPgwv5ZhdTiyt9+R9Pabn174L5A/rkZ8B3g86Us0k8qp8l4v+cCff9G5f0e7l5ujjlsf3Fj72H73+9g078//9Xw+TPQayo7GAA3HraHlgLU+QL/A+CGwLXAhcC/lXsU57YrtW653/JfjwggHwP+T+VfhhmHe4zo/yeAK2uFB3IP66eWAPXtUu/yx+U2hXcAEv7eBby01MSs6aWkHuffA48CckefFGIf9D0fZF8H3gS8sdLbIW4HpPZoxn6+wIc/z3K/8bNK/zP+f1kTfOmL/e/3oOjfr3/rnz/NZ4e1HgDzxZcv5i2ADwPnz/sCv3MJJfcG3g48p5zZ6fdt8+vW7wq8rPTxnEX6n8KU2e/VlQXBm5Z6kakheQvgiwv4b1NC+POBz9YCX/qRHwgJFhkbHwCumNe/hKiMnccDjym1Mv93Ja8hBdjvAby79P1z5UfPoHupz5kfRAlXfww8Cfh4JX1PN04A/lcZG7Ef9d5N/39e9v1/9n9qAvpPjXJZT9S6f+ufP61nh7lBt9YDYL40XgCcPuYMwW2ApwH/BbxyWW/X2Twod1l5efkS/+4iTSSEpDD3F4AXz6Yry3rWnNnLbQQToHKm8roFniW/0nOWLWd6creYNy+rpdk8aM8ydiZ59lsCtwNqCSF/Wyxzpmzcljv6JIjXFAAz7vOjJpfax2255WQuy//LuB07/Hv73yH2Ak3p369/658/rWcHA2C/438qreey3SRf4IPGlrr/VDq5yJPkDGvuGjPJlr4nDH5lkp3dRwEFFFBAAQVGC6z1M4CODQWmJXAnIHNabg38qpwtzmX5FgLr7wF/Mq/vFwA/nBZOB8+THwfD9jk73tJm//s9Wvr3578aPn/601tBywbA8XiZXP484Mnjd+1tj22BQ0YEkEzgr3kRRdAyDh+8QP/PBj5ZAlVvuGMazvzRk4BHABuALATJ67kVkLmXHyzz535Q4Qv4nTKl4QDgJuVscvp+47J4JQtAjhhxab6Wl5OpDU8vl6gHn2cJ4Fm0lekamfda82b/+z06+vfnvxo+fzKP+rAR372vAjK3utrNADj+0GQCfCb732j8rr3scR/gIyXkZcVy5inmuG4F/FlZHfkwIGGqxi3zKz8E/FG5HDzc/1wizsKQvyyLQ2rsf8LfrkBCVOYzDm9/WlahZu7lvhV2PhPJszjlGWUOZlYBZ9uyrIzPPKl/LR9wFXZ/blHWP5R5rZlDOjx2srL/aOAVZe6o/Z++gP7TN13KM7bu3/rnTxaCvL+cpJj/+fMQ4EHA44AseKlyMwBuDBeLbVkNmTMJtQbALCr4v2WRx0KvI79CEhLzS6XGLW+OXAJ4IvDNeR3cGnhnKUGSN1uNW0JTwsb88Dfo672Aj5ZQVVv/s4Bib+BTIzqWD7D3lrOZtfU9/cmZ7ZSxOXVE5/4KeB2QHxk1bva/36Oif7/+rX/+ZP56vp+OH8H4zHL1J4voqtwMgBvLeOSS0WIW+ftaA2DqtuUM1H+MGGE7lYLEKblS45Z5ZruXM30L9S+lblLPLSGxxi0BML/2sipsoS1nAfPrMGfVattin3mLXxrRsYyr/Lio1T61OjN38dIR/c8Hb34gZQVwjZv97/eo6N+vf+ufP6nxehfgshGMqc+bK1iZXlPlZgCEq4EsSR91FiFfgpkQX2sATLHelLI5ccQIS620XCrImcwat/wKzGnyT4/o3AOB91V8Furk8iHwlAXme9y9lFr5cvklWJt/5ifmh8ETyuXT4f79PpDXlg+5cWfJ+3pdZwBXAfuVWn/D/cj8oneUs3/376uDY9q1//0eGP379W/98yd3G8pnTMpRLbQdWT6bdu6XeXTrBsCNBXwzR+u5I5gyBzC39MrdQWrcUkQ5l3lTHy912jIPKmcssyIycwD3L3O4shikxu21wCPLRP70PwspsmVxRfqfy+8J56nDWOOWM3vvKZeBczYwi0DinwCV15Czf6ljOJhfV9NryAKnFEDPWeJczhgeO5l/eQmQWocJWTVumTeaea8puP2Zef2/Xyl6njGUD+oaN/vf71HRv1//1j9/Mn86U2TyGTSYfz/83ZsrQ7kJQOZRV7kZADfe7eB3yzythQ5S/i5ncvIFU+uWeVxZzZbLYYMzlb8oZy7/sUxUrbXvqe+XycBZZZ2zNoO6hvn/uYPDW0uAXUq9wz5ea0JUCm4neGf7VrkP8L/30ZkltJkfNpnDmLmK8/ueD7Uab6E2/PI2L/NHF+p/7nJS4+pr+7+EATrjXR0/MwYe8/Stf/7kMz8nJxb67M/32rn98i7eugGw5qOz9L6lfEfuOJHtvysv3zH/1aVkyqAW3SBA5dJ77V/gSz9KPkIBBRRQQIGeBQyAv3kAcvYsASqnca8BchbNTYGVCGQlc4L5/PsEr+Q5fawCCiiggAIrEjAAbuRLuYjUE8ul3lyGzJbLjynimFpooxaIrAi/owdnjmBC7fM7am/azeSYZBXnmdN+4o6eLytUd6h4EdFiDC33Pa/rE2XxU60LoMYNQfs/Tmi2f6//bH3HPXvrnz8vLtNqqr2JhAEQDgJeA7ytTNifX0w2q2hTayyLLFrccieN21W8CnicaesfAqm/mABb8xzSUccgtRezkCUr3Vrcsro/P35yJ58WN/vf71HTv1//1j9/8rmZhS6pZFHlZgCErwIvKYsNFjpISe/HAHeo8giu/k5tUy6htnZv19V/ZHyFCiiggALNChgAofVCys0OvlXW8dZvaL5duVyR+a85C95a4G59/q797/cDQf9+/Vv//OlXb5mtGwA3zvPL5bncD3WhLXXo9ijzA5fJPPOHpVRNas3lrg4p5TH4Es/9f1Oj7kcz78HKG7jTiBtqf2XlTz3TZ2j9huYpH/R0IGdaB58HGT//WWowvnqmeit/8tbn79r/lY+BlTyD/ivRW/ljW//82RY4ZMR3V2rv5naD1W4GwI3h7vRyxmOhYo75ZfLwcjuyGg9kqoyngPJgntnwHMa8toS/FKRMUd8at8wxOwl4RCkCnULKGZe3AlIaJtXin1RxOZiWb2je+s3kW5+/a//7/UTSv1//1j9/7gN8pIS8QXbId9dW5SYGmf/3MCAnYqrcDIAbD8v2JcUvVEw2KX59lUdvY6dyC7UUHd53qIjyoLsppvx2IKVIHlDpa0j4y+32DgDOm9fH3Ef3TeVOLXl9NW4t39A8v06zwGnUKvecHXlduZ1ajfatz9+1//2OKv379W/98yf3Gc+90nMWc6Etd+hKSMxCwCo3A2CVh2VJncoNzVMqZdQZvtzS6/xyhnBJT9zRzrlFWu5EMT/8DZpPKP8okFuu1bi1fEPzjJ0U385K64W2XYB8yOXsco1b6/N37X+/o0r/fv39/OnX//o5Pz13w+ZXIHA1kFp/p414jiylf33FZ3ESAHOJOiF1oS1nAXM/3VoDYMs3ND+j3Od3v1L3ctg/cxtTxuA2wP1XMD5n+dDW5+/a/1mOjvHPrf94o1nu0frnz9eBFwAnjkBKCblc5q62DqlnAMcP79pr+RxX7pX7wjIXMHMAh29I/SwgE/lrLQR9MnAX4Cml8PbwEcmZzdRf/HKZBzj+aHW/R8s3NP+jchPzTctCqOGxcz/gp2Uuy8Xds07UYuvzd+3/RId5ZjvpPzPaiZ649c+fnHjJZd58R2Ue/vzv3v3Ld3OmkVW5GQDHH5ZU884cuqT5WrdnlhtSD1YAp585tpkbmPD3slo7Xs7sZaVyLgPnbGAWgSTA/n4pQpyzf1nhnL+rdWv5huabA08EFpr/+u6KF98MxkLL83fzGux/v+9q/fv1b/3zZ+8yBzBTaVJKKFtuIZv72P8j8P5+eRdv3QBY89FZet9yx4+EwGwJf99Y+lP09og/BO5dgt+g/+cC/95bj2xYAQUUUECB8QK533vuOpTtv4Hrxj+k/z0MgP0fA3uw+gRuBtwR+GaZY1f7K2y1BmPtrpP2b34R8fx4uxDIAiO32QvoP3vjxVpYDZ8/TRYSNwBuHJZZpn3YiGKOucafycKtbAkfKZmSN1UCSOYwVl2MEmi5kHWmCGT+ZVa05VdgFtxkPmPeW7mUncU5uYT9kwoHUOs1GLN46FNDC1jifOTQ2M89vvOn1q31IuL69zuyWvdv/fMnR7/pQuIGQMgq2Vyn/2RZbTpcSDlvsAcBj1tklW2/HwEb79iQybTXALkEfE7pUBZO5LJq5lhkfletl1JbL2Sd+R6ZI5q5i1lwkx8SBwOfBe4GZALwP5fVYn2Plfntt16Dcdj+McD7gDcM2f9dmbubOaY1bi0XEY+n/v2Oqtb9W//8ab2QuGVggIuAdwLHj3gvZ4FF7kSRmmg1br8s8/4SQPJFlzmAe5YzUlnd+S/l7NNeNXZ+FRSyHvb/PPBa4G1D1vnxkJXaCbq1ba3XYBy2T0HW/Ig7dgj5H8qPt3vWBl/603IR8bwE/fsdWK37t/7503ohcQNgCUcpQ3LZiPfyjsAXgZv0+14f2frwh0DqEmXpeS6LDbbU0UsITLmSGrfWC1nHPyuW82Weyb+pmZcfFYMtqwxTRiWXuWvbWq/BODz2c+Y+t13K3LnBtkOpL1lrDcmWi4jPD4D6d//ubn38t/7503ohcQNg+XLOPLlRpVIypyiFcms8gzP4EB4EkBSFzmXr4bptCSC5/FtrgG29kHU+hJ9dJuznbPHj5903+o/LWc6bd//9MLbF1mswxv6BwHeBDwCPnTdfd6dyJ5NMg6hxa7mI+OCzR//+Rlbr47/1z5/WC4kbAIHMHXpvKYg7uKHzcCHlBKp8qf9rf+/zRVvOh0DOOP28TH7P5epThh6Rgr6p57Ztpf1vvZB17hOd8TLYUncxc7sGW+YEplZUStzUtuXMWMs1GDP2Yz+Yy5x7cg7b/3UJ57VO32i5iPggAOrf37u69fHf+udP64XEDYDlvZsv56eVL+nhOnqpQ5cvlPyz1m14zlP6mMUHKZ482F5ewl++DGvdWi5kPc40C3ByR43MD6x1y5myvAfmj/1aFw4NHLebB5pLqlkMNdjyYyhbJpvXurVcRFz/fkfVavCPYKufP+l704XEXQXc7xvY1n9ToOVC1h5LBRRQQAEFmhEwADZzqOxoowKpy/iIys9CZXpAJmTPLzycuoY5M3hmo/YtdDufwTmLkFqdmcaxSaktlhX8Hy4Li2p/HSmCm5Ikgy0Lz9L/XDlp4o4I84CziC63/ry8dvgR/TsROIaNJcJa23YdquN59rzpNbW+lmYLiRsAax1S9msgkHlSzwOe3ChJFoFkZergPpE1vYzUL0yh6tzHMnO53gX87VAQzOKifInU2Pc4JqC+CHh0WQjyT0C+/AZb7f1PhYFM18gYzwr+zDf+3+WSWD6bs0J+N+ArNQ2aob5k/KS/meaQL+vUVM3E/oeXfdLvrIpPQfoat78c0anM986UoEEB/SwwqnFL9YqFtixOSPmpjKlsX6qx82Vuemrp/Q+QEPV/gD8rPxry3s79dPPftd4HvvVC7s4BrPSNYbd+LVBzgEov1405WPmQ/kylISqr31Mq5e+BTMh+SVlQkQ/d75XyNvnyzjy1GrcsIErR7VeU/qfwc4pB50slWwJgzf0/tXhnFXl+4CQAJjSlZmcCYArU58txnxrxy1ntO5Qaqk8oQTZnAjPfOGMmPygSPnJcatzmL6JYqI/5YVTrD6DF+j9YnFNz/4cLWWeuehZkZiV/fjDfuYz/jwJPr3HwlPUB6fMzyg+5QVDNZ+lDgbym/JjIQsAqN88AVnlY1lSnRv0KHyDcHnhlAx/Cow7a4JZwNX6JpARPbmV0ful8LtslQGVyee6Ak1/hNZ8BTFjKyt8Plf4njHyknI1KoNqq8v6neHtC3xdKnciEvazaT1HrbLn8ngoF8yf71/IBkbGRs69ZeJYyR6mDmR8PKcid7QHAW4Aclxq3jJWEkIyVHIvBlsvW+eF5SY2dHupTxs1VQAqepyZdtnze5H2RmpiDM8e1XsoermOYShbPL6Fv8BJzJjlVFfIjtcat9ULungGscVStsT61/it8Q7kMed6I45Z7MudWcDUGwMz5u+u8S4y5rJHLegneTyzhpMa+hzuXSFOfM6V4Bts2AeyaawAAFApJREFUpRB6LoOlhmcu49Xc/6yAvKJ0PgEwc6C+Vv47l4bzJV5rDc+Ejnw5Dy6VZjyl/7lDQrY/KDVIN6v4My0/IHKGJlMfBj8kWgmAmS+a+rUJ3XmvDioNtNL/4SL6CVMpqzIcuvPDJ5UIblrp+Gm9kLsBcMKBlXISmeMy+GCe8GHV7JazCrmbScJKbVvOQuXDN5fDFtryhZK5ILV+iX+6nHUaVUg8ZxLywVzjZdRcnsv8ysy9Gd4GITD3Ms4CkVrtM8fpgKEzTsMhMMclwSqFimvtf4JSiswPzvgdUm5LmSCYLf6nl3tN1/a+TX9yZimXqwdnkHM7zbwPUpg7W8b+J4Bb1dj5oT6ln6mVmuOQQJjPyRbOAA5eQs72vancB/ulpexUC/1PAEy/80MuUwgydWD4LlaZm5xLwLWOn9YLuRsAJ/xgykDNr6oM1syXam1L/zOn68XlcmpN/c8E61zKeO6ITtUcoNLlBJD8Qn3NiP5nHlrmqSVo1bblyyIBO/NV5m8JgQmGf1FxgMrlxVzyesoC/b8NcEY5k1lrAHxjuXNJXsdC21HAfcu9vWsbO+lPFhDlC3u4+PZwP/PDLpeIM52g9i3v4VeVHww5+525u7VfAh42zedMFkDlrjdZlNNCAMz7c7iI/juBtw69qOeUsZOFRDVurRdyNwAuYVSlVEO+KHM5r7Utp9JTYy/9P7qyzucLLvfJzS+9hbb83d3LQorKut58dxLycnnuByNeSYJTzgDWOoco4zqXUIcLnw+/lKxSzRy7LHZpcct79icVr6IdZ3qPMjdt+N7Y4x7T999nTnLmLmZB1PC8wL77NWn7Ty39z4mKzA9seUsQ/1nlr6PlQu4GwJbfHfZdAQUUUEABBRRYjoCrgH+tlsn6qbmV22HltPR/AedUXINrOcfbxyiggAIKKKDA7ASaKSRuAIQtSj2r3K0hk39z2j8umXiaGm+Z6JlFIKMuk81uGE3nmWuvozedV+mzKKCAAgoo0J1A64XEvQRcwl8mwmcy//xSHrmlURZ+ZJHCvt2Nq6m2VPsiiqm+WJ9MAQUUUECBDgRaL2FmACy3mcniiFF13LKiKgsUUt27xi2VxhfbcoYzq6hqXQlZo6l9UkABBRRQYDGB1guJGwBLAMxKwUEtq/kHPGcBs8qw1gCY8jQfL3MWFxqsqdBfcykPP2LqFkgx39RqzB0T3BRQQAEFfi3QciFxA2C5eXlqPqWWWO4eMLyl/MibgS+XeYA1DvwU800druH6ScP9rL2Q8iSmNReynqT/uVSQmldHlKLWkzymln3S99yNIuWDxp1trqXPw/34RqlVlzqTCbKtbS2PnVjr3++I03/2/s0WEncRyMYze+8pNfJyM+csAskq4BTWzOXTnP37m3KmcPZDaektpPhnKqmn6OpC2x8CHy51AJf+7HU8ouZC1pMI5W4PqVmXM827T/KAivbJ7ZlSjy59z/ugte24Yp8fEbXek3Yx05bHTl6X/v2+Y/Tvxr/JQuIGwF8PjhSUzc3XUwYm27eAc8u9CLsZQstrZdMyvy8hcLVuNReyXq3mvi4FFFBAgaUJNFVI3AC4tIPr3gosJpCFNrcsZ5CvaWzeXEL2cA3MWu/+sVpHYMtjZzUcE/37PYr69+BvAByPnttJ3bjcWH783v3t0Xoh698DcvPv4RByAfDD/kgnbvmvgH8ot6zL7dWy/bzMKX05cOrEz9T9jpnE/HRgm1L/Mj3IFIj/LPeNfnX3XVpSi7nd2GEjirjn3q7z5/Uu6ck72LnlsRMe/TsYJIs0oX+//k23bgAcf/guBXaouIxK64WsE5heWeow3qTc+zHjMqE790FNHcYsnshq5xq3g4DXAG8r80VzB5n0f6syr/R/AbkvZxYT1bblZusJri8e0fcs/HgF8MLaOl768yjg/cAnF+h/5iw+CHgccFql/W957IRU/34Hlv79+jffugFw/CHML6zNgM+M37WXPU4CWi5knRXMjwGeUb7EsxAnWxbnpD5jzqBl9WnO8tS4fbXcOH7UKuwnA8dUugDhyhJOR52hzNmp1wG3qREeuAh4J3D8iP49s6ze36XS/rc8dkKqf78DS/9+/Ztv3QDY/CEkganlQtbfAfYupToWOho5i/Pecmu+Go/Wj0sA/48Rncvios8DWSVW25aFQ7nsnrPcC20JTv+v/ACqre/pT84Qp4TTZSM6tyPwRSBnlmvcWh47+vc/ohz//R+DpntgAPz14Wt1DloCYMuFrDPHbzcg9QwX2nJ28/8COT41bpljlrPDOYO50JbL2ymlkpqStW2pTXgVkFIjmbM4vOXS/DvK2b/cSabG7eLSx5eN6NyR5bXtXGPny/zEVsdOSPXvd2Dp369/860bAKH1OWgnl7MgrRay/mA5O/aEBe5mklqMeX35pTvqxtt9vwkT7k4Hsmr238pryCKKLGb5s1KD7uHAWX13dIH2/6j0OaWEEkQyf3HQ99TN+2l5DfmiqXHL1IGcHY77Qvb5YfT4igtYtzx2Mh707/ddoX+//pO0XnUhdwPgxrtotDwHrfVC1rcthapzqTRzWoZDyJ2BS4A9y5mqSd5wfeyzPXAIkPtGz68j+UZgfR+dmrDNzYEnjuj7u4EfTPg8fe2W2p1PG1HDM+/t1PKseWt57MRV/35Hl/79+o9rvepC7gZAaH0O2mAAtlrIOv2/YZnHuFCAypmd/IpyU0ABBRRQQIEpCRgAN9aZa3kO2pSGgk+jgAIKKKCAAssQaLKQtQEQWp+DNm6stlLIetzraPXvs5Ail7kf2OAL+ARw+/Knwe7P1TfMJfmU4mlxa3nsxFv/fked/rP3b7qQuwFw45fzh4GW56AtNsxrL2Q97i3aev/zIZwQnoLQrW1/W25t97zWOl76uxoCVKtjJ4dA/37fOPrP1r/1Qu5zdyxwW91z0GovZD1u/KXafe52kg8zNwUUUEABBWoQaL2QuwGwhlFkHxSoQKDJOSwVuNkFBRRYmwKtF3Jf8wEwdxFI6ZFJV5nmzgi548P8ork1DP9WC1kP221X5mylFl3KwaS2Xgtbyzdkb3oOC7BtKcGThVyZ7zcYO+cAKcGT293VvLU8duKqf7+jS//+/Fu+CcCc2lq/BPyL8qWRUjCTbKmJljtTfH2SnTvap/VC1mE6HHg6sM3QmMwX+X8CuZPGqzuyXE4zLd+QvfU5LPcBPlJC3qAQdD7TtioFrDO/92HA2cs5sB08puWxEx79OxgkizShf7/+rRdyX/MBMGf+3gTknqiTbIcCua1UTQGw9ULWzwH+oawY/Fg58zf4Es89jo8GXgG8cJID1MM+Ld+QvfU5LLlPcW4TmB8QC22vKiElZ9lq3FoeO/HUv99RpX+//mm96ULua/0MYO6FmjNNS9n+BvjmUh4w431bL2SdS3R/D5w6wimXKF9X7kk7Y8plPX3LN2RvfQ5L6/1veezkzaL/sj4ypvYg/adGuTafaK0HwNVw1FsvZJ2zr38CpNzLQlvmXeaX7maVHqyWb8je+hyWnIl/AXDiiLGR0js5w5xahjVuLY+deOrf76jSv1//5ls3ADZ/CJsvZJ2zsFcBuWfi/MU1md+Y8i+3Ae5f6aFq+Ybsrc9hyZSMXOZ9M/DxefeR/jNgf+CwshikxuHT8tiJp/79jir9+/Uf13r1dRgNgOMOYf1/33oh6z8CMoF/U+Az877E7wf8tEzoz9mSWreWb8je9BwWYO8yBzBnkVPKJlsWd10A/CPw/loHTelXy2MnL0H/fgeY/v36L9Z69TcBMADWO3iW0rMbAlkwca+yqjmP/RZwbglXk5a5WUqb09x3c+CJI/r/biCrr90UWEzgxuWuJdnnv4Hr5OpUQP9OuX+rMf379W+ydQNgk4fNTlcqMFzHMAH8ikr7uRq7ZSHrfo+q/vr3K2DrSxYwAC6ZrKoHrKZC1vNhbwV8v5EzOa3WMXwI8KmhuZdZ4X4kcKey0v01QP7UvLVcyHoH4CtDlQhS1y0lkQb+rwVOqxkf0L/fA6R/v/5NF3I3APY7eFba+mooZH1gWeiRuX4Zj6n7dwSwDkiZjH8uX4q1XsZuuY5hxs/WwLeBLEh4H/AG4LPA3YC/A7KS9j0rHagzenzrhayH/bPI6ZPA6UP++XJ/OJD6mDVu+vd7VPTv17/1Qu5rvhB0v8Nn5a2vhkLWw1+C+UDLnT+eO/QlmALQzy61AFcuNv1naLmOYcZPbp+WAJiCygkgxw4R5WzU44B7Tp9tKs/YeiHrYf9PlNtM/u2QzEuA3OIuq7Vr3PTv96jo369/64XcDYD9jp8Vt74aClkPfwmeX842pbTHYEspjxSK/uMVa83mCVquYzhsn3sv57ZpFw4x5RJljsmWs6Fb8bO2Xgh32D+3PcwZv/OGVHLXoTOHFresGGzKT6D/lEGX+HT6LxFsyru3XsjdADjlAeHTLV0gX4K/D+SOJvnzIOBLQ0+TIr5fBLJSuMat5TqGsX8g8F3gA8BjgRSHHmw7lSLctdq3Xsg6/pnvl3H/+XIZ/gtD/ncsY/93axz4ZaykdNMzRvQvZ/Nz9vLulfZf/34PTOv+rRdyNwD2O/5tHciHwL7AhnKZd695Z0FyJ5BzgC0q1Wq5jmHscyvEwVzgLGbJvaUH21+Xy+85BjVurReyHvjHNsfgAOCtQ9CPBF4O5ExsjZv+/R4V/fv1b72QuwGw3/Fj6yUADkNkvl8KaA62XAJOxfssSqh1a7WOYcrWDG+5reA1Q//jSeXfT6oVvvGbsc+f25d7jF82ZP00YJMSAms9BC0XEte/31G1GvybLuTuKuB+3wC2Pl7gL0opmFpXQo5/Be6hgAIKKKBAZQIGwMoOiN1ZdQKp0J9SKy0Whc69mLdptO+rbiA19IIypze3dmxxzIe59f5nJf/ryx1xGho213e1xf43eRMAA2CLb4/V0+fVXMh6cJSyejkrawf3qW3p6LXQ90wPeHRZyPLGUth6YHzLsoo5C4lq3Vruf6Y+/BNwXyCLoTKHMSv4DylzS1Na6BEV38qx9f6nVur8Ld/pWVSUouL/Xv6y1ltptt7/8LZ6E4C5oWEArPVrYW30azUUsh53pFoIUaNeQ+19fyqQWnknlkVCWUD0vPL/BmdyUl6l1vDdev9zp5IHl+LhCeFZyHUH4GAg9ydPUfGsLj9m3Jukp79vvf/5/Fxoy/f6YHFX/lnr+G+9/y3fBMAA2NOHjs3+WmA1FLIerpu30LG9aVnFWeOHcMt9j3XKMLwIeHeBz4TsU8vdY1JMPJfyag6Arfc/l3izgv/TZarAVUBWLn+wHI/cxeQfgZQTqnFrvf/xTtmglNsZ3Ckp4S9FxbN47hsFPaV6atxa73/LNwEwANb4jlhjfVoNhaxTDPS9Qx+28w9h5v/l0liNAbDlvsc5RbhTLHn9EHpK1uSOJjkr+OrKA2Dr/c/4SR3DfBFm+xFw16GVzJkXdQlQax3D1vt/81I2KCWy9gGuLsfhulI4P/Y1b633v+WbABgAa35n2LdmBFKMOLXbMhdqoW1X4IJKA2DLfY91zuA8AThrHnxC4aeAfyt/X2P4Xg39T+DIHL/BmeSciT2s3Fowry9hPMcmX/Q1bq33f2CaOZcpn5VbN+a+3a0EwNb73/JNAAyANX4i2afmBHKWKVu++BbaMifqLcADKnxlLfc9nAkcuY/xQvYJH7k0eYtKw/dq6P9Hhi65LzS89ytnv3evcOynS633f5g1P3ryfshZv8yFzfzd2s8Att7/lm8CYACs9EPJbimgwGQCWUX+J+Vy70KPSAjM7e2yMKTGrfX+58xe5p59fwRu7i2d+9XmTEmNW+v9n2+aouHHlx+bWZQzmANYo/1CfWqx/63eBMAA2Mq7wn4qoIACCiiggALTFLAMzDQ1fa61JtByHcOW+55xZv/7fbfpr/9KBFofP4u99luVs+KZi1n1ZgCs+vDYucoFWq5j2HLfMyzsf79vDv31X4lA6+Mnr/1A4B3AT0tN5aOBI4AUuM4K838uC3MGJXpW4jWTxxoAZ8Lqk64RgZbrGLbc9wwv+9/vm0x//Vci0Pr4GfwITZmvLEQ7qNRjTP3RzwJ3A15YVme/biVQs3ysAXCWuj73ahdouY5hy33PuLL//b679Nd/JQKtj5/Bj9BblwB4finBk1shDrYU4/77siJ7JVYze6wBcGa0PrECCiiggAIKrFKBnMXM3YZy7+X8eRDwpaHXmnuQfxHISuEqNwNglYfFTimggAIKKKBAxQIJgLkVYu6Bncu8qb943lB/U4bqnHKf8ipfhgGwysNipxRQQAEFFFCgYoH5iztyN5YXD/U3l4APLfMBq3wZBsAqD4udUkABBRRQQIGGBf6i3JbvY7W+BgNgrUfGfimggAIKKKCAAjMSMADOCNanVUABBRRQQIFVKbAqClkbAFfl2PRFKaCAAgoooMCMBFZDIWsMgDMaHT6tAgoooIACCqxKgdVQyNoAuCqHpi9KAQUUUEABBWYlsBoKWRsAZzU6fF4FFFBAAQUUUKBWAS8B13pk7JcCCiiggAIKKDAjAQPgjGB9WgUUUEABBRRQoFYBA2CtR8Z+KaCAAgoooIACMxIwAM4I1qdVQAEFFFBAAQVqFTAA1npk7JcCCiiggAIKKDAjAQPgjGB9WgUUUEABBRRQoFYBA2CtR8Z+KaCAAgoooIACMxIwAM4I1qdVQAEFFFBAAQVqFTAA1npk7JcCCiiggAIKKDAjAQPgjGB9WgUUUEABBRRQoFYBA2CtR8Z+KaCAAgoooIACMxIwAM4I1qdVQAEFFFBAAQVqFTAA1npk7JcCCiiggAIKKDAjAQPgjGB9WgUUUEABBRRQoFaB/w+vdpzfnNBqZQAAAABJRU5ErkJggg==\" width=\"640\">" + "<img src=\"data:image/png;base64,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\" width=\"640\">" + ], + "text/plain": [ + "<IPython.core.display.HTML object>" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/javascript": [ + "/* Put everything inside the global mpl namespace */\n", + "window.mpl = {};\n", + "\n", + "\n", + "mpl.get_websocket_type = function() {\n", + " if (typeof(WebSocket) !== 'undefined') {\n", + " return WebSocket;\n", + " } else if (typeof(MozWebSocket) !== 'undefined') {\n", + " return MozWebSocket;\n", + " } else {\n", + " alert('Your browser does not have WebSocket support.' +\n", + " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", + " 'Firefox 4 and 5 are also supported but you ' +\n", + " 'have to enable WebSockets in about:config.');\n", + " };\n", + "}\n", + "\n", + "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", + " this.id = figure_id;\n", + "\n", + " this.ws = websocket;\n", + "\n", + " this.supports_binary = (this.ws.binaryType != undefined);\n", + "\n", + " if (!this.supports_binary) {\n", + " var warnings = document.getElementById(\"mpl-warnings\");\n", + " if (warnings) {\n", + " warnings.style.display = 'block';\n", + " warnings.textContent = (\n", + " \"This browser does not support binary websocket messages. \" +\n", + " \"Performance may be slow.\");\n", + " }\n", + " }\n", + "\n", + " this.imageObj = new Image();\n", + "\n", + " this.context = undefined;\n", + " this.message = undefined;\n", + " this.canvas = undefined;\n", + " this.rubberband_canvas = undefined;\n", + " this.rubberband_context = undefined;\n", + " this.format_dropdown = undefined;\n", + "\n", + " this.image_mode = 'full';\n", + "\n", + " this.root = $('<div/>');\n", + " this._root_extra_style(this.root)\n", + " this.root.attr('style', 'display: inline-block');\n", + "\n", + " $(parent_element).append(this.root);\n", + "\n", + " this._init_header(this);\n", + " this._init_canvas(this);\n", + " this._init_toolbar(this);\n", + "\n", + " var fig = this;\n", + "\n", + " this.waiting = false;\n", + "\n", + " this.ws.onopen = function () {\n", + " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", + " fig.send_message(\"send_image_mode\", {});\n", + " if (mpl.ratio != 1) {\n", + " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", + " }\n", + " fig.send_message(\"refresh\", {});\n", + " }\n", + "\n", + " this.imageObj.onload = function() {\n", + " if (fig.image_mode == 'full') {\n", + " // Full images could contain transparency (where diff images\n", + " // almost always do), so we need to clear the canvas so that\n", + " // there is no ghosting.\n", + " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", + " }\n", + " fig.context.drawImage(fig.imageObj, 0, 0);\n", + " };\n", + "\n", + " this.imageObj.onunload = function() {\n", + " this.ws.close();\n", + " }\n", + "\n", + " this.ws.onmessage = this._make_on_message_function(this);\n", + "\n", + " this.ondownload = ondownload;\n", + "}\n", + "\n", + "mpl.figure.prototype._init_header = function() {\n", + " var titlebar = $(\n", + " '<div class=\"ui-dialog-titlebar ui-widget-header ui-corner-all ' +\n", + " 'ui-helper-clearfix\"/>');\n", + " var titletext = $(\n", + " '<div class=\"ui-dialog-title\" style=\"width: 100%; ' +\n", + " 'text-align: center; padding: 3px;\"/>');\n", + " titlebar.append(titletext)\n", + " this.root.append(titlebar);\n", + " this.header = titletext[0];\n", + "}\n", + "\n", + "\n", + "\n", + "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", + "\n", + "}\n", + "\n", + "\n", + "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", + "\n", + "}\n", + "\n", + "mpl.figure.prototype._init_canvas = function() {\n", + " var fig = this;\n", + "\n", + " var canvas_div = $('<div/>');\n", + "\n", + " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", + "\n", + " function canvas_keyboard_event(event) {\n", + " return fig.key_event(event, event['data']);\n", + " }\n", + "\n", + " canvas_div.keydown('key_press', canvas_keyboard_event);\n", + " canvas_div.keyup('key_release', canvas_keyboard_event);\n", + " this.canvas_div = canvas_div\n", + " this._canvas_extra_style(canvas_div)\n", + " this.root.append(canvas_div);\n", + "\n", + " var canvas = $('<canvas/>');\n", + " canvas.addClass('mpl-canvas');\n", + " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", + "\n", + " this.canvas = canvas[0];\n", + " this.context = canvas[0].getContext(\"2d\");\n", + "\n", + " var backingStore = this.context.backingStorePixelRatio ||\n", + "\tthis.context.webkitBackingStorePixelRatio ||\n", + "\tthis.context.mozBackingStorePixelRatio ||\n", + "\tthis.context.msBackingStorePixelRatio ||\n", + "\tthis.context.oBackingStorePixelRatio ||\n", + "\tthis.context.backingStorePixelRatio || 1;\n", + "\n", + " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", + "\n", + " var rubberband = $('<canvas/>');\n", + " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", + "\n", + " var pass_mouse_events = true;\n", + "\n", + " canvas_div.resizable({\n", + " start: function(event, ui) {\n", + " pass_mouse_events = false;\n", + " },\n", + " resize: function(event, ui) {\n", + " fig.request_resize(ui.size.width, ui.size.height);\n", + " },\n", + " stop: function(event, ui) {\n", + " pass_mouse_events = true;\n", + " fig.request_resize(ui.size.width, ui.size.height);\n", + " },\n", + " });\n", + "\n", + " function mouse_event_fn(event) {\n", + " if (pass_mouse_events)\n", + " return fig.mouse_event(event, event['data']);\n", + " }\n", + "\n", + " rubberband.mousedown('button_press', mouse_event_fn);\n", + " rubberband.mouseup('button_release', mouse_event_fn);\n", + " // Throttle sequential mouse events to 1 every 20ms.\n", + " rubberband.mousemove('motion_notify', mouse_event_fn);\n", + "\n", + " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", + " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", + "\n", + " canvas_div.on(\"wheel\", function (event) {\n", + " event = event.originalEvent;\n", + " event['data'] = 'scroll'\n", + " if (event.deltaY < 0) {\n", + " event.step = 1;\n", + " } else {\n", + " event.step = -1;\n", + " }\n", + " mouse_event_fn(event);\n", + " });\n", + "\n", + " canvas_div.append(canvas);\n", + " canvas_div.append(rubberband);\n", + "\n", + " this.rubberband = rubberband;\n", + " this.rubberband_canvas = rubberband[0];\n", + " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", + " this.rubberband_context.strokeStyle = \"#000000\";\n", + "\n", + " this._resize_canvas = function(width, height) {\n", + " // Keep the size of the canvas, canvas container, and rubber band\n", + " // canvas in synch.\n", + " canvas_div.css('width', width)\n", + " canvas_div.css('height', height)\n", + "\n", + " canvas.attr('width', width * mpl.ratio);\n", + " canvas.attr('height', height * mpl.ratio);\n", + " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", + "\n", + " rubberband.attr('width', width);\n", + " rubberband.attr('height', height);\n", + " }\n", + "\n", + " // Set the figure to an initial 600x600px, this will subsequently be updated\n", + " // upon first draw.\n", + " this._resize_canvas(600, 600);\n", + "\n", + " // Disable right mouse context menu.\n", + " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", + " return false;\n", + " });\n", + "\n", + " function set_focus () {\n", + " canvas.focus();\n", + " canvas_div.focus();\n", + " }\n", + "\n", + " window.setTimeout(set_focus, 100);\n", + "}\n", + "\n", + "mpl.figure.prototype._init_toolbar = function() {\n", + " var fig = this;\n", + "\n", + " var nav_element = $('<div/>')\n", + " nav_element.attr('style', 'width: 100%');\n", + " this.root.append(nav_element);\n", + "\n", + " // Define a callback function for later on.\n", + " function toolbar_event(event) {\n", + " return fig.toolbar_button_onclick(event['data']);\n", + " }\n", + " function toolbar_mouse_event(event) {\n", + " return fig.toolbar_button_onmouseover(event['data']);\n", + " }\n", + "\n", + " for(var toolbar_ind in mpl.toolbar_items) {\n", + " var name = mpl.toolbar_items[toolbar_ind][0];\n", + " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", + " var image = mpl.toolbar_items[toolbar_ind][2];\n", + " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", + "\n", + " if (!name) {\n", + " // put a spacer in here.\n", + " continue;\n", + " }\n", + " var button = $('<button/>');\n", + " button.addClass('ui-button ui-widget ui-state-default ui-corner-all ' +\n", + " 'ui-button-icon-only');\n", + " button.attr('role', 'button');\n", + " button.attr('aria-disabled', 'false');\n", + " button.click(method_name, toolbar_event);\n", + " button.mouseover(tooltip, toolbar_mouse_event);\n", + "\n", + " var icon_img = $('<span/>');\n", + " icon_img.addClass('ui-button-icon-primary ui-icon');\n", + " icon_img.addClass(image);\n", + " icon_img.addClass('ui-corner-all');\n", + "\n", + " var tooltip_span = $('<span/>');\n", + " tooltip_span.addClass('ui-button-text');\n", + " tooltip_span.html(tooltip);\n", + "\n", + " button.append(icon_img);\n", + " button.append(tooltip_span);\n", + "\n", + " nav_element.append(button);\n", + " }\n", + "\n", + " var fmt_picker_span = $('<span/>');\n", + "\n", + " var fmt_picker = $('<select/>');\n", + " fmt_picker.addClass('mpl-toolbar-option ui-widget ui-widget-content');\n", + " fmt_picker_span.append(fmt_picker);\n", + " nav_element.append(fmt_picker_span);\n", + " this.format_dropdown = fmt_picker[0];\n", + "\n", + " for (var ind in mpl.extensions) {\n", + " var fmt = mpl.extensions[ind];\n", + " var option = $(\n", + " '<option/>', {selected: fmt === mpl.default_extension}).html(fmt);\n", + " fmt_picker.append(option)\n", + " }\n", + "\n", + " // Add hover states to the ui-buttons\n", + " $( \".ui-button\" ).hover(\n", + " function() { $(this).addClass(\"ui-state-hover\");},\n", + " function() { $(this).removeClass(\"ui-state-hover\");}\n", + " );\n", + "\n", + " var status_bar = $('<span class=\"mpl-message\"/>');\n", + " nav_element.append(status_bar);\n", + " this.message = status_bar[0];\n", + "}\n", + "\n", + "mpl.figure.prototype.request_resize = function(x_pixels, y_pixels) {\n", + " // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n", + " // which will in turn request a refresh of the image.\n", + " this.send_message('resize', {'width': x_pixels, 'height': y_pixels});\n", + "}\n", + "\n", + "mpl.figure.prototype.send_message = function(type, properties) {\n", + " properties['type'] = type;\n", + " properties['figure_id'] = this.id;\n", + " this.ws.send(JSON.stringify(properties));\n", + "}\n", + "\n", + "mpl.figure.prototype.send_draw_message = function() {\n", + " if (!this.waiting) {\n", + " this.waiting = true;\n", + " this.ws.send(JSON.stringify({type: \"draw\", figure_id: this.id}));\n", + " }\n", + "}\n", + "\n", + "\n", + "mpl.figure.prototype.handle_save = function(fig, msg) {\n", + " var format_dropdown = fig.format_dropdown;\n", + " var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n", + " fig.ondownload(fig, format);\n", + "}\n", + "\n", + "\n", + "mpl.figure.prototype.handle_resize = function(fig, msg) {\n", + " var size = msg['size'];\n", + " if (size[0] != fig.canvas.width || size[1] != fig.canvas.height) {\n", + " fig._resize_canvas(size[0], size[1]);\n", + " fig.send_message(\"refresh\", {});\n", + " };\n", + "}\n", + "\n", + "mpl.figure.prototype.handle_rubberband = function(fig, msg) {\n", + " var x0 = msg['x0'] / mpl.ratio;\n", + " var y0 = (fig.canvas.height - msg['y0']) / mpl.ratio;\n", + " var x1 = msg['x1'] / mpl.ratio;\n", + " var y1 = (fig.canvas.height - msg['y1']) / mpl.ratio;\n", + " x0 = Math.floor(x0) + 0.5;\n", + " y0 = Math.floor(y0) + 0.5;\n", + " x1 = Math.floor(x1) + 0.5;\n", + " y1 = Math.floor(y1) + 0.5;\n", + " var min_x = Math.min(x0, x1);\n", + " var min_y = Math.min(y0, y1);\n", + " var width = Math.abs(x1 - x0);\n", + " var height = Math.abs(y1 - y0);\n", + "\n", + " fig.rubberband_context.clearRect(\n", + " 0, 0, fig.canvas.width, fig.canvas.height);\n", + "\n", + " fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n", + "}\n", + "\n", + "mpl.figure.prototype.handle_figure_label = function(fig, msg) {\n", + " // Updates the figure title.\n", + " fig.header.textContent = msg['label'];\n", + "}\n", + "\n", + "mpl.figure.prototype.handle_cursor = function(fig, msg) {\n", + " var cursor = msg['cursor'];\n", + " switch(cursor)\n", + " {\n", + " case 0:\n", + " cursor = 'pointer';\n", + " break;\n", + " case 1:\n", + " cursor = 'default';\n", + " break;\n", + " case 2:\n", + " cursor = 'crosshair';\n", + " break;\n", + " case 3:\n", + " cursor = 'move';\n", + " break;\n", + " }\n", + " fig.rubberband_canvas.style.cursor = cursor;\n", + "}\n", + "\n", + "mpl.figure.prototype.handle_message = function(fig, msg) {\n", + " fig.message.textContent = msg['message'];\n", + "}\n", + "\n", + "mpl.figure.prototype.handle_draw = function(fig, msg) {\n", + " // Request the server to send over a new figure.\n", + " fig.send_draw_message();\n", + "}\n", + "\n", + "mpl.figure.prototype.handle_image_mode = function(fig, msg) {\n", + " fig.image_mode = msg['mode'];\n", + "}\n", + "\n", + "mpl.figure.prototype.updated_canvas_event = function() {\n", + " // Called whenever the canvas gets updated.\n", + " this.send_message(\"ack\", {});\n", + "}\n", + "\n", + "// A function to construct a web socket function for onmessage handling.\n", + "// Called in the figure constructor.\n", + "mpl.figure.prototype._make_on_message_function = function(fig) {\n", + " return function socket_on_message(evt) {\n", + " if (evt.data instanceof Blob) {\n", + " /* FIXME: We get \"Resource interpreted as Image but\n", + " * transferred with MIME type text/plain:\" errors on\n", + " * Chrome. But how to set the MIME type? It doesn't seem\n", + " * to be part of the websocket stream */\n", + " evt.data.type = \"image/png\";\n", + "\n", + " /* Free the memory for the previous frames */\n", + " if (fig.imageObj.src) {\n", + " (window.URL || window.webkitURL).revokeObjectURL(\n", + " fig.imageObj.src);\n", + " }\n", + "\n", + " fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n", + " evt.data);\n", + " fig.updated_canvas_event();\n", + " fig.waiting = false;\n", + " return;\n", + " }\n", + " else if (typeof evt.data === 'string' && evt.data.slice(0, 21) == \"data:image/png;base64\") {\n", + " fig.imageObj.src = evt.data;\n", + " fig.updated_canvas_event();\n", + " fig.waiting = false;\n", + " return;\n", + " }\n", + "\n", + " var msg = JSON.parse(evt.data);\n", + " var msg_type = msg['type'];\n", + "\n", + " // Call the \"handle_{type}\" callback, which takes\n", + " // the figure and JSON message as its only arguments.\n", + " try {\n", + " var callback = fig[\"handle_\" + msg_type];\n", + " } catch (e) {\n", + " console.log(\"No handler for the '\" + msg_type + \"' message type: \", msg);\n", + " return;\n", + " }\n", + "\n", + " if (callback) {\n", + " try {\n", + " // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n", + " callback(fig, msg);\n", + " } catch (e) {\n", + " console.log(\"Exception inside the 'handler_\" + msg_type + \"' callback:\", e, e.stack, msg);\n", + " }\n", + " }\n", + " };\n", + "}\n", + "\n", + "// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n", + "mpl.findpos = function(e) {\n", + " //this section is from http://www.quirksmode.org/js/events_properties.html\n", + " var targ;\n", + " if (!e)\n", + " e = window.event;\n", + " if (e.target)\n", + " targ = e.target;\n", + " else if (e.srcElement)\n", + " targ = e.srcElement;\n", + " if (targ.nodeType == 3) // defeat Safari bug\n", + " targ = targ.parentNode;\n", + "\n", + " // jQuery normalizes the pageX and pageY\n", + " // pageX,Y are the mouse positions relative to the document\n", + " // offset() returns the position of the element relative to the document\n", + " var x = e.pageX - $(targ).offset().left;\n", + " var y = e.pageY - $(targ).offset().top;\n", + "\n", + " return {\"x\": x, \"y\": y};\n", + "};\n", + "\n", + "/*\n", + " * return a copy of an object with only non-object keys\n", + " * we need this to avoid circular references\n", + " * http://stackoverflow.com/a/24161582/3208463\n", + " */\n", + "function simpleKeys (original) {\n", + " return Object.keys(original).reduce(function (obj, key) {\n", + " if (typeof original[key] !== 'object')\n", + " obj[key] = original[key]\n", + " return obj;\n", + " }, {});\n", + "}\n", + "\n", + "mpl.figure.prototype.mouse_event = function(event, name) {\n", + " var canvas_pos = mpl.findpos(event)\n", + "\n", + " if (name === 'button_press')\n", + " {\n", + " this.canvas.focus();\n", + " this.canvas_div.focus();\n", + " }\n", + "\n", + " var x = canvas_pos.x * mpl.ratio;\n", + " var y = canvas_pos.y * mpl.ratio;\n", + "\n", + " this.send_message(name, {x: x, y: y, button: event.button,\n", + " step: event.step,\n", + " guiEvent: simpleKeys(event)});\n", + "\n", + " /* This prevents the web browser from automatically changing to\n", + " * the text insertion cursor when the button is pressed. We want\n", + " * to control all of the cursor setting manually through the\n", + " * 'cursor' event from matplotlib */\n", + " event.preventDefault();\n", + " return false;\n", + "}\n", + "\n", + "mpl.figure.prototype._key_event_extra = function(event, name) {\n", + " // Handle any extra behaviour associated with a key event\n", + "}\n", + "\n", + "mpl.figure.prototype.key_event = function(event, name) {\n", + "\n", + " // Prevent repeat events\n", + " if (name == 'key_press')\n", + " {\n", + " if (event.which === this._key)\n", + " return;\n", + " else\n", + " this._key = event.which;\n", + " }\n", + " if (name == 'key_release')\n", + " this._key = null;\n", + "\n", + " var value = '';\n", + " if (event.ctrlKey && event.which != 17)\n", + " value += \"ctrl+\";\n", + " if (event.altKey && event.which != 18)\n", + " value += \"alt+\";\n", + " if (event.shiftKey && event.which != 16)\n", + " value += \"shift+\";\n", + "\n", + " value += 'k';\n", + " value += event.which.toString();\n", + "\n", + " this._key_event_extra(event, name);\n", + "\n", + " this.send_message(name, {key: value,\n", + " guiEvent: simpleKeys(event)});\n", + " return false;\n", + "}\n", + "\n", + "mpl.figure.prototype.toolbar_button_onclick = function(name) {\n", + " if (name == 'download') {\n", + " this.handle_save(this, null);\n", + " } else {\n", + " this.send_message(\"toolbar_button\", {name: name});\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.toolbar_button_onmouseover = function(tooltip) {\n", + " this.message.textContent = tooltip;\n", + "};\n", + "mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Pan axes with left mouse, zoom with right\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n", + "\n", + "mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n", + "\n", + "mpl.default_extension = \"png\";var comm_websocket_adapter = function(comm) {\n", + " // Create a \"websocket\"-like object which calls the given IPython comm\n", + " // object with the appropriate methods. Currently this is a non binary\n", + " // socket, so there is still some room for performance tuning.\n", + " var ws = {};\n", + "\n", + " ws.close = function() {\n", + " comm.close()\n", + " };\n", + " ws.send = function(m) {\n", + " //console.log('sending', m);\n", + " comm.send(m);\n", + " };\n", + " // Register the callback with on_msg.\n", + " comm.on_msg(function(msg) {\n", + " //console.log('receiving', msg['content']['data'], msg);\n", + " // Pass the mpl event to the overriden (by mpl) onmessage function.\n", + " ws.onmessage(msg['content']['data'])\n", + " });\n", + " return ws;\n", + "}\n", + "\n", + "mpl.mpl_figure_comm = function(comm, msg) {\n", + " // This is the function which gets called when the mpl process\n", + " // starts-up an IPython Comm through the \"matplotlib\" channel.\n", + "\n", + " var id = msg.content.data.id;\n", + " // Get hold of the div created by the display call when the Comm\n", + " // socket was opened in Python.\n", + " var element = $(\"#\" + id);\n", + " var ws_proxy = comm_websocket_adapter(comm)\n", + "\n", + " function ondownload(figure, format) {\n", + " window.open(figure.imageObj.src);\n", + " }\n", + "\n", + " var fig = new mpl.figure(id, ws_proxy,\n", + " ondownload,\n", + " element.get(0));\n", + "\n", + " // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n", + " // web socket which is closed, not our websocket->open comm proxy.\n", + " ws_proxy.onopen();\n", + "\n", + " fig.parent_element = element.get(0);\n", + " fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n", + " if (!fig.cell_info) {\n", + " console.error(\"Failed to find cell for figure\", id, fig);\n", + " return;\n", + " }\n", + "\n", + " var output_index = fig.cell_info[2]\n", + " var cell = fig.cell_info[0];\n", + "\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_close = function(fig, msg) {\n", + " var width = fig.canvas.width/mpl.ratio\n", + " fig.root.unbind('remove')\n", + "\n", + " // Update the output cell to use the data from the current canvas.\n", + " fig.push_to_output();\n", + " var dataURL = fig.canvas.toDataURL();\n", + " // Re-enable the keyboard manager in IPython - without this line, in FF,\n", + " // the notebook keyboard shortcuts fail.\n", + " IPython.keyboard_manager.enable()\n", + " $(fig.parent_element).html('<img src=\"' + dataURL + '\" width=\"' + width + '\">');\n", + " fig.close_ws(fig, msg);\n", + "}\n", + "\n", + "mpl.figure.prototype.close_ws = function(fig, msg){\n", + " fig.send_message('closing', msg);\n", + " // fig.ws.close()\n", + "}\n", + "\n", + "mpl.figure.prototype.push_to_output = function(remove_interactive) {\n", + " // Turn the data on the canvas into data in the output cell.\n", + " var width = this.canvas.width/mpl.ratio\n", + " var dataURL = this.canvas.toDataURL();\n", + " this.cell_info[1]['text/html'] = '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n", + "}\n", + "\n", + "mpl.figure.prototype.updated_canvas_event = function() {\n", + " // Tell IPython that the notebook contents must change.\n", + " IPython.notebook.set_dirty(true);\n", + " this.send_message(\"ack\", {});\n", + " var fig = this;\n", + " // Wait a second, then push the new image to the DOM so\n", + " // that it is saved nicely (might be nice to debounce this).\n", + " setTimeout(function () { fig.push_to_output() }, 1000);\n", + "}\n", + "\n", + "mpl.figure.prototype._init_toolbar = function() {\n", + " var fig = this;\n", + "\n", + " var nav_element = $('<div/>')\n", + " nav_element.attr('style', 'width: 100%');\n", + " this.root.append(nav_element);\n", + "\n", + " // Define a callback function for later on.\n", + " function toolbar_event(event) {\n", + " return fig.toolbar_button_onclick(event['data']);\n", + " }\n", + " function toolbar_mouse_event(event) {\n", + " return fig.toolbar_button_onmouseover(event['data']);\n", + " }\n", + "\n", + " for(var toolbar_ind in mpl.toolbar_items){\n", + " var name = mpl.toolbar_items[toolbar_ind][0];\n", + " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", + " var image = mpl.toolbar_items[toolbar_ind][2];\n", + " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", + "\n", + " if (!name) { continue; };\n", + "\n", + " var button = $('<button class=\"btn btn-default\" href=\"#\" title=\"' + name + '\"><i class=\"fa ' + image + ' fa-lg\"></i></button>');\n", + " button.click(method_name, toolbar_event);\n", + " button.mouseover(tooltip, toolbar_mouse_event);\n", + " nav_element.append(button);\n", + " }\n", + "\n", + " // Add the status bar.\n", + " var status_bar = $('<span class=\"mpl-message\" style=\"text-align:right; float: right;\"/>');\n", + " nav_element.append(status_bar);\n", + " this.message = status_bar[0];\n", + "\n", + " // Add the close button to the window.\n", + " var buttongrp = $('<div class=\"btn-group inline pull-right\"></div>');\n", + " var button = $('<button class=\"btn btn-mini btn-primary\" href=\"#\" title=\"Stop Interaction\"><i class=\"fa fa-power-off icon-remove icon-large\"></i></button>');\n", + " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", + " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", + " buttongrp.append(button);\n", + " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", + " titlebar.prepend(buttongrp);\n", + "}\n", + "\n", + "mpl.figure.prototype._root_extra_style = function(el){\n", + " var fig = this\n", + " el.on(\"remove\", function(){\n", + "\tfig.close_ws(fig, {});\n", + " });\n", + "}\n", + "\n", + "mpl.figure.prototype._canvas_extra_style = function(el){\n", + " // this is important to make the div 'focusable\n", + " el.attr('tabindex', 0)\n", + " // reach out to IPython and tell the keyboard manager to turn it's self\n", + " // off when our div gets focus\n", + "\n", + " // location in version 3\n", + " if (IPython.notebook.keyboard_manager) {\n", + " IPython.notebook.keyboard_manager.register_events(el);\n", + " }\n", + " else {\n", + " // location in version 2\n", + " IPython.keyboard_manager.register_events(el);\n", + " }\n", + "\n", + "}\n", + "\n", + "mpl.figure.prototype._key_event_extra = function(event, name) {\n", + " var manager = IPython.notebook.keyboard_manager;\n", + " if (!manager)\n", + " manager = IPython.keyboard_manager;\n", + "\n", + " // Check for shift+enter\n", + " if (event.shiftKey && event.which == 13) {\n", + " this.canvas_div.blur();\n", + " // select the cell after this one\n", + " var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n", + " IPython.notebook.select(index + 1);\n", + " }\n", + "}\n", + "\n", + "mpl.figure.prototype.handle_save = function(fig, msg) {\n", + " fig.ondownload(fig, null);\n", + "}\n", + "\n", + "\n", + "mpl.find_output_cell = function(html_output) {\n", + " // Return the cell and output element which can be found *uniquely* in the notebook.\n", + " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", + " // IPython event is triggered only after the cells have been serialised, which for\n", + " // our purposes (turning an active figure into a static one), is too late.\n", + " var cells = IPython.notebook.get_cells();\n", + " var ncells = cells.length;\n", + " for (var i=0; i<ncells; i++) {\n", + " var cell = cells[i];\n", + " if (cell.cell_type === 'code'){\n", + " for (var j=0; j<cell.output_area.outputs.length; j++) {\n", + " var data = cell.output_area.outputs[j];\n", + " if (data.data) {\n", + " // IPython >= 3 moved mimebundle to data attribute of output\n", + " data = data.data;\n", + " }\n", + " if (data['text/html'] == html_output) {\n", + " return [cell, data, j];\n", + " }\n", + " }\n", + " }\n", + " }\n", + "}\n", + "\n", + "// Register the function which deals with the matplotlib target/channel.\n", + "// The kernel may be null if the page has been refreshed.\n", + "if (IPython.notebook.kernel != null) {\n", + " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", + "}\n" + ], + "text/plain": [ + "<IPython.core.display.Javascript object>" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "<img src=\"data:image/png;base64,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\" width=\"640\">" ], "text/plain": [ "<IPython.core.display.HTML object>" @@ -3285,381 +4901,3327 @@ { "data": { "text/plain": [ - "Probability 0.136514\n", + "Probability 0.382899\n", "dtype: float64" ] }, - "execution_count": 118, + "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "mk.plot_scenarios(df1, pool_size)\n", - "mk.prob_over(df1, 50)" + "df = mk.run_scenario(pool_size, rho, successprob, issuerweights, zero_recov)\n", + "mk.plot_prob_over(df)\n", + "mk.plot_scenarios(df, bins)\n", + "mk.prob_over(df, 50)" ] }, { "cell_type": "code", - "execution_count": 119, + "execution_count": 36, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "#Current pipeline\n", + "#LMCG\tLikelihood\t\t\t\n", + "#size\t1\t2\t3\t4\n", + "#25\t0\t0\t0\t2\n", + "#10\t0\t0\t0\t2\n", + "#5\t0\t0\t1\t2\n", + "#2\t1\t0\t0\t1\n", + "#50% correlation\n", + "num = (1,1,2,2,2,1)\n", + "size = (2,5,25,10,5,2)\n", + "prob = (.5, .25, .05, .05, .05, .05)\n", + "rho = .6\n", + "zero_recov = np.full(sum(num), 0.0)\n", + "pool_size = sum(n*s for n,s in zip(num, size))\n", + "successprob, issuerweights = [], []\n", + "for n, s, p in zip(num,size,prob):\n", + " successprob.append(np.full((n, 1), p)) \n", + " issuerweights.append(np.full(n, s/pool_size))\n", + "successprob = np.concatenate(successprob)\n", + "issuerweights = np.concatenate(issuerweights)" + ] + }, + { + "cell_type": "code", + "execution_count": 37, "metadata": {}, "outputs": [ { "data": { - "text/html": [ - "<div>\n", - "<style>\n", - " .dataframe thead tr:only-child th {\n", - " text-align: right;\n", + "text/plain": [ + "89" + ] + }, + "execution_count": 37, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "bins = [0,0.1, 10, 20, 30, 40, 50, 60, 70, 80, pool_size]\n", + "pool_size" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [ + { + "data": { + "application/javascript": [ + "/* Put everything inside the global mpl namespace */\n", + "window.mpl = {};\n", + "\n", + "\n", + "mpl.get_websocket_type = function() {\n", + " if (typeof(WebSocket) !== 'undefined') {\n", + " return WebSocket;\n", + " } else if (typeof(MozWebSocket) !== 'undefined') {\n", + " return MozWebSocket;\n", + " } else {\n", + " alert('Your browser does not have WebSocket support.' +\n", + " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", + " 'Firefox 4 and 5 are also supported but you ' +\n", + " 'have to enable WebSockets in about:config.');\n", + " };\n", + "}\n", + "\n", + "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", + " this.id = figure_id;\n", + "\n", + " this.ws = websocket;\n", + "\n", + " this.supports_binary = (this.ws.binaryType != undefined);\n", + "\n", + " if (!this.supports_binary) {\n", + " var warnings = document.getElementById(\"mpl-warnings\");\n", + " if (warnings) {\n", + " warnings.style.display = 'block';\n", + " warnings.textContent = (\n", + " \"This browser does not support binary websocket messages. \" +\n", + " \"Performance may be slow.\");\n", + " }\n", + " }\n", + "\n", + " this.imageObj = new Image();\n", + "\n", + " this.context = undefined;\n", + " this.message = undefined;\n", + " this.canvas = undefined;\n", + " this.rubberband_canvas = undefined;\n", + " this.rubberband_context = undefined;\n", + " this.format_dropdown = undefined;\n", + "\n", + " this.image_mode = 'full';\n", + "\n", + " this.root = $('<div/>');\n", + " this._root_extra_style(this.root)\n", + " this.root.attr('style', 'display: inline-block');\n", + "\n", + " $(parent_element).append(this.root);\n", + "\n", + " this._init_header(this);\n", + " this._init_canvas(this);\n", + " this._init_toolbar(this);\n", + "\n", + " var fig = this;\n", + "\n", + " this.waiting = false;\n", + "\n", + " this.ws.onopen = function () {\n", + " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", + " fig.send_message(\"send_image_mode\", {});\n", + " if (mpl.ratio != 1) {\n", + " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", + " }\n", + " fig.send_message(\"refresh\", {});\n", + " }\n", + "\n", + " this.imageObj.onload = function() {\n", + " if (fig.image_mode == 'full') {\n", + " // Full images could contain transparency (where diff images\n", + " // almost always do), so we need to clear the canvas so that\n", + " // there is no ghosting.\n", + " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", + " }\n", + " fig.context.drawImage(fig.imageObj, 0, 0);\n", + " };\n", + "\n", + " this.imageObj.onunload = function() {\n", + " this.ws.close();\n", + " }\n", + "\n", + " this.ws.onmessage = this._make_on_message_function(this);\n", + "\n", + " this.ondownload = ondownload;\n", + "}\n", + "\n", + "mpl.figure.prototype._init_header = function() {\n", + " var titlebar = $(\n", + " '<div class=\"ui-dialog-titlebar ui-widget-header ui-corner-all ' +\n", + " 'ui-helper-clearfix\"/>');\n", + " var titletext = $(\n", + " '<div class=\"ui-dialog-title\" style=\"width: 100%; ' +\n", + " 'text-align: center; padding: 3px;\"/>');\n", + " titlebar.append(titletext)\n", + " this.root.append(titlebar);\n", + " this.header = titletext[0];\n", + "}\n", + "\n", + "\n", + "\n", + "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", + "\n", + "}\n", + "\n", + "\n", + "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", + "\n", + "}\n", + "\n", + "mpl.figure.prototype._init_canvas = function() {\n", + " var fig = this;\n", + "\n", + " var canvas_div = $('<div/>');\n", + "\n", + " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", + "\n", + " function canvas_keyboard_event(event) {\n", + " return fig.key_event(event, event['data']);\n", + " }\n", + "\n", + " canvas_div.keydown('key_press', canvas_keyboard_event);\n", + " canvas_div.keyup('key_release', canvas_keyboard_event);\n", + " this.canvas_div = canvas_div\n", + " this._canvas_extra_style(canvas_div)\n", + " this.root.append(canvas_div);\n", + "\n", + " var canvas = $('<canvas/>');\n", + " canvas.addClass('mpl-canvas');\n", + " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", + "\n", + " this.canvas = canvas[0];\n", + " this.context = canvas[0].getContext(\"2d\");\n", + "\n", + " var backingStore = this.context.backingStorePixelRatio ||\n", + "\tthis.context.webkitBackingStorePixelRatio ||\n", + "\tthis.context.mozBackingStorePixelRatio ||\n", + "\tthis.context.msBackingStorePixelRatio ||\n", + "\tthis.context.oBackingStorePixelRatio ||\n", + "\tthis.context.backingStorePixelRatio || 1;\n", + "\n", + " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", + "\n", + " var rubberband = $('<canvas/>');\n", + " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", + "\n", + " var pass_mouse_events = true;\n", + "\n", + " canvas_div.resizable({\n", + " start: function(event, ui) {\n", + " pass_mouse_events = false;\n", + " },\n", + " resize: function(event, ui) {\n", + " fig.request_resize(ui.size.width, ui.size.height);\n", + " },\n", + " stop: function(event, ui) {\n", + " pass_mouse_events = true;\n", + " fig.request_resize(ui.size.width, ui.size.height);\n", + " },\n", + " });\n", + "\n", + " function mouse_event_fn(event) {\n", + " if (pass_mouse_events)\n", + " return fig.mouse_event(event, event['data']);\n", + " }\n", + "\n", + " rubberband.mousedown('button_press', mouse_event_fn);\n", + " rubberband.mouseup('button_release', mouse_event_fn);\n", + " // Throttle sequential mouse events to 1 every 20ms.\n", + " rubberband.mousemove('motion_notify', mouse_event_fn);\n", + "\n", + " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", + " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", + "\n", + " canvas_div.on(\"wheel\", function (event) {\n", + " event = event.originalEvent;\n", + " event['data'] = 'scroll'\n", + " if (event.deltaY < 0) {\n", + " event.step = 1;\n", + " } else {\n", + " event.step = -1;\n", + " }\n", + " mouse_event_fn(event);\n", + " });\n", + "\n", + " canvas_div.append(canvas);\n", + " canvas_div.append(rubberband);\n", + "\n", + " this.rubberband = rubberband;\n", + " this.rubberband_canvas = rubberband[0];\n", + " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", + " this.rubberband_context.strokeStyle = \"#000000\";\n", + "\n", + " this._resize_canvas = function(width, height) {\n", + " // Keep the size of the canvas, canvas container, and rubber band\n", + " // canvas in synch.\n", + " canvas_div.css('width', width)\n", + " canvas_div.css('height', height)\n", + "\n", + " canvas.attr('width', width * mpl.ratio);\n", + " canvas.attr('height', height * mpl.ratio);\n", + " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", + "\n", + " rubberband.attr('width', width);\n", + " rubberband.attr('height', height);\n", + " }\n", + "\n", + " // Set the figure to an initial 600x600px, this will subsequently be updated\n", + " // upon first draw.\n", + " this._resize_canvas(600, 600);\n", + "\n", + " // Disable right mouse context menu.\n", + " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", + " return false;\n", + " });\n", + "\n", + " function set_focus () {\n", + " canvas.focus();\n", + " canvas_div.focus();\n", + " }\n", + "\n", + " window.setTimeout(set_focus, 100);\n", + "}\n", + "\n", + "mpl.figure.prototype._init_toolbar = function() {\n", + " var fig = this;\n", + "\n", + " var nav_element = $('<div/>')\n", + " nav_element.attr('style', 'width: 100%');\n", + " this.root.append(nav_element);\n", + "\n", + " // Define a callback function for later on.\n", + " function toolbar_event(event) {\n", + " return fig.toolbar_button_onclick(event['data']);\n", + " }\n", + " function toolbar_mouse_event(event) {\n", + " return fig.toolbar_button_onmouseover(event['data']);\n", + " }\n", + "\n", + " for(var toolbar_ind in mpl.toolbar_items) {\n", + " var name = mpl.toolbar_items[toolbar_ind][0];\n", + " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", + " var image = mpl.toolbar_items[toolbar_ind][2];\n", + " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", + "\n", + " if (!name) {\n", + " // put a spacer in here.\n", + " continue;\n", + " }\n", + " var button = $('<button/>');\n", + " button.addClass('ui-button ui-widget ui-state-default ui-corner-all ' +\n", + " 'ui-button-icon-only');\n", + " button.attr('role', 'button');\n", + " button.attr('aria-disabled', 'false');\n", + " button.click(method_name, toolbar_event);\n", + " button.mouseover(tooltip, toolbar_mouse_event);\n", + "\n", + " var icon_img = $('<span/>');\n", + " icon_img.addClass('ui-button-icon-primary ui-icon');\n", + " icon_img.addClass(image);\n", + " icon_img.addClass('ui-corner-all');\n", + "\n", + " var tooltip_span = $('<span/>');\n", + " tooltip_span.addClass('ui-button-text');\n", + " tooltip_span.html(tooltip);\n", + "\n", + " button.append(icon_img);\n", + " button.append(tooltip_span);\n", + "\n", + " nav_element.append(button);\n", + " }\n", + "\n", + " var fmt_picker_span = $('<span/>');\n", + "\n", + " var fmt_picker = $('<select/>');\n", + " fmt_picker.addClass('mpl-toolbar-option ui-widget ui-widget-content');\n", + " fmt_picker_span.append(fmt_picker);\n", + " nav_element.append(fmt_picker_span);\n", + " this.format_dropdown = fmt_picker[0];\n", + "\n", + " for (var ind in mpl.extensions) {\n", + " var fmt = mpl.extensions[ind];\n", + " var option = $(\n", + " '<option/>', {selected: fmt === mpl.default_extension}).html(fmt);\n", + " fmt_picker.append(option)\n", + " }\n", + "\n", + " // Add hover states to the ui-buttons\n", + " $( \".ui-button\" ).hover(\n", + " function() { $(this).addClass(\"ui-state-hover\");},\n", + " function() { $(this).removeClass(\"ui-state-hover\");}\n", + " );\n", + "\n", + " var status_bar = $('<span class=\"mpl-message\"/>');\n", + " nav_element.append(status_bar);\n", + " this.message = status_bar[0];\n", + "}\n", + "\n", + "mpl.figure.prototype.request_resize = function(x_pixels, y_pixels) {\n", + " // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n", + " // which will in turn request a refresh of the image.\n", + " this.send_message('resize', {'width': x_pixels, 'height': y_pixels});\n", + "}\n", + "\n", + "mpl.figure.prototype.send_message = function(type, properties) {\n", + " properties['type'] = type;\n", + " properties['figure_id'] = this.id;\n", + " this.ws.send(JSON.stringify(properties));\n", + "}\n", + "\n", + "mpl.figure.prototype.send_draw_message = function() {\n", + " if (!this.waiting) {\n", + " this.waiting = true;\n", + " this.ws.send(JSON.stringify({type: \"draw\", figure_id: this.id}));\n", + " }\n", + "}\n", + "\n", + "\n", + "mpl.figure.prototype.handle_save = function(fig, msg) {\n", + " var format_dropdown = fig.format_dropdown;\n", + " var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n", + " fig.ondownload(fig, format);\n", + "}\n", + "\n", + "\n", + "mpl.figure.prototype.handle_resize = function(fig, msg) {\n", + " var size = msg['size'];\n", + " if (size[0] != fig.canvas.width || size[1] != fig.canvas.height) {\n", + " fig._resize_canvas(size[0], size[1]);\n", + " fig.send_message(\"refresh\", {});\n", + " };\n", + "}\n", + "\n", + "mpl.figure.prototype.handle_rubberband = function(fig, msg) {\n", + " var x0 = msg['x0'] / mpl.ratio;\n", + " var y0 = (fig.canvas.height - msg['y0']) / mpl.ratio;\n", + " var x1 = msg['x1'] / mpl.ratio;\n", + " var y1 = (fig.canvas.height - msg['y1']) / mpl.ratio;\n", + " x0 = Math.floor(x0) + 0.5;\n", + " y0 = Math.floor(y0) + 0.5;\n", + " x1 = Math.floor(x1) + 0.5;\n", + " y1 = Math.floor(y1) + 0.5;\n", + " var min_x = Math.min(x0, x1);\n", + " var min_y = Math.min(y0, y1);\n", + " var width = Math.abs(x1 - x0);\n", + " var height = Math.abs(y1 - y0);\n", + "\n", + " fig.rubberband_context.clearRect(\n", + " 0, 0, fig.canvas.width, fig.canvas.height);\n", + "\n", + " fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n", + "}\n", + "\n", + "mpl.figure.prototype.handle_figure_label = function(fig, msg) {\n", + " // Updates the figure title.\n", + " fig.header.textContent = msg['label'];\n", + "}\n", + "\n", + "mpl.figure.prototype.handle_cursor = function(fig, msg) {\n", + " var cursor = msg['cursor'];\n", + " switch(cursor)\n", + " {\n", + " case 0:\n", + " cursor = 'pointer';\n", + " break;\n", + " case 1:\n", + " cursor = 'default';\n", + " break;\n", + " case 2:\n", + " cursor = 'crosshair';\n", + " break;\n", + " case 3:\n", + " cursor = 'move';\n", + " break;\n", + " }\n", + " fig.rubberband_canvas.style.cursor = cursor;\n", + "}\n", + "\n", + "mpl.figure.prototype.handle_message = function(fig, msg) {\n", + " fig.message.textContent = msg['message'];\n", + "}\n", + "\n", + "mpl.figure.prototype.handle_draw = function(fig, msg) {\n", + " // Request the server to send over a new figure.\n", + " fig.send_draw_message();\n", + "}\n", + "\n", + "mpl.figure.prototype.handle_image_mode = function(fig, msg) {\n", + " fig.image_mode = msg['mode'];\n", + "}\n", + "\n", + "mpl.figure.prototype.updated_canvas_event = function() {\n", + " // Called whenever the canvas gets updated.\n", + " this.send_message(\"ack\", {});\n", + "}\n", + "\n", + "// A function to construct a web socket function for onmessage handling.\n", + "// Called in the figure constructor.\n", + "mpl.figure.prototype._make_on_message_function = function(fig) {\n", + " return function socket_on_message(evt) {\n", + " if (evt.data instanceof Blob) {\n", + " /* FIXME: We get \"Resource interpreted as Image but\n", + " * transferred with MIME type text/plain:\" errors on\n", + " * Chrome. But how to set the MIME type? It doesn't seem\n", + " * to be part of the websocket stream */\n", + " evt.data.type = \"image/png\";\n", + "\n", + " /* Free the memory for the previous frames */\n", + " if (fig.imageObj.src) {\n", + " (window.URL || window.webkitURL).revokeObjectURL(\n", + " fig.imageObj.src);\n", + " }\n", + "\n", + " fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n", + " evt.data);\n", + " fig.updated_canvas_event();\n", + " fig.waiting = false;\n", + " return;\n", + " }\n", + " else if (typeof evt.data === 'string' && evt.data.slice(0, 21) == \"data:image/png;base64\") {\n", + " fig.imageObj.src = evt.data;\n", + " fig.updated_canvas_event();\n", + " fig.waiting = false;\n", + " return;\n", + " }\n", + "\n", + " var msg = JSON.parse(evt.data);\n", + " var msg_type = msg['type'];\n", + "\n", + " // Call the \"handle_{type}\" callback, which takes\n", + " // the figure and JSON message as its only arguments.\n", + " try {\n", + " var callback = fig[\"handle_\" + msg_type];\n", + " } catch (e) {\n", + " console.log(\"No handler for the '\" + msg_type + \"' message type: \", msg);\n", + " return;\n", + " }\n", + "\n", + " if (callback) {\n", + " try {\n", + " // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n", + " callback(fig, msg);\n", + " } catch (e) {\n", + " console.log(\"Exception inside the 'handler_\" + msg_type + \"' callback:\", e, e.stack, msg);\n", + " }\n", + " }\n", + " };\n", + "}\n", + "\n", + "// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n", + "mpl.findpos = function(e) {\n", + " //this section is from http://www.quirksmode.org/js/events_properties.html\n", + " var targ;\n", + " if (!e)\n", + " e = window.event;\n", + " if (e.target)\n", + " targ = e.target;\n", + " else if (e.srcElement)\n", + " targ = e.srcElement;\n", + " if (targ.nodeType == 3) // defeat Safari bug\n", + " targ = targ.parentNode;\n", + "\n", + " // jQuery normalizes the pageX and pageY\n", + " // pageX,Y are the mouse positions relative to the document\n", + " // offset() returns the position of the element relative to the document\n", + " var x = e.pageX - $(targ).offset().left;\n", + " var y = e.pageY - $(targ).offset().top;\n", + "\n", + " return {\"x\": x, \"y\": y};\n", + "};\n", + "\n", + "/*\n", + " * return a copy of an object with only non-object keys\n", + " * we need this to avoid circular references\n", + " * http://stackoverflow.com/a/24161582/3208463\n", + " */\n", + "function simpleKeys (original) {\n", + " return Object.keys(original).reduce(function (obj, key) {\n", + " if (typeof original[key] !== 'object')\n", + " obj[key] = original[key]\n", + " return obj;\n", + " }, {});\n", + "}\n", + "\n", + "mpl.figure.prototype.mouse_event = function(event, name) {\n", + " var canvas_pos = mpl.findpos(event)\n", + "\n", + " if (name === 'button_press')\n", + " {\n", + " this.canvas.focus();\n", + " this.canvas_div.focus();\n", + " }\n", + "\n", + " var x = canvas_pos.x * mpl.ratio;\n", + " var y = canvas_pos.y * mpl.ratio;\n", + "\n", + " this.send_message(name, {x: x, y: y, button: event.button,\n", + " step: event.step,\n", + " guiEvent: simpleKeys(event)});\n", + "\n", + " /* This prevents the web browser from automatically changing to\n", + " * the text insertion cursor when the button is pressed. We want\n", + " * to control all of the cursor setting manually through the\n", + " * 'cursor' event from matplotlib */\n", + " event.preventDefault();\n", + " return false;\n", + "}\n", + "\n", + "mpl.figure.prototype._key_event_extra = function(event, name) {\n", + " // Handle any extra behaviour associated with a key event\n", + "}\n", + "\n", + "mpl.figure.prototype.key_event = function(event, name) {\n", + "\n", + " // Prevent repeat events\n", + " if (name == 'key_press')\n", + " {\n", + " if (event.which === this._key)\n", + " return;\n", + " else\n", + " this._key = event.which;\n", + " }\n", + " if (name == 'key_release')\n", + " this._key = null;\n", + "\n", + " var value = '';\n", + " if (event.ctrlKey && event.which != 17)\n", + " value += \"ctrl+\";\n", + " if (event.altKey && event.which != 18)\n", + " value += \"alt+\";\n", + " if (event.shiftKey && event.which != 16)\n", + " value += \"shift+\";\n", + "\n", + " value += 'k';\n", + " value += event.which.toString();\n", + "\n", + " this._key_event_extra(event, name);\n", + "\n", + " this.send_message(name, {key: value,\n", + " guiEvent: simpleKeys(event)});\n", + " return false;\n", + "}\n", + "\n", + "mpl.figure.prototype.toolbar_button_onclick = function(name) {\n", + " if (name == 'download') {\n", + " this.handle_save(this, null);\n", + " } else {\n", + " this.send_message(\"toolbar_button\", {name: name});\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.toolbar_button_onmouseover = function(tooltip) {\n", + " this.message.textContent = tooltip;\n", + "};\n", + "mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Pan axes with left mouse, zoom with right\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n", + "\n", + "mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n", + "\n", + "mpl.default_extension = \"png\";var comm_websocket_adapter = function(comm) {\n", + " // Create a \"websocket\"-like object which calls the given IPython comm\n", + " // object with the appropriate methods. Currently this is a non binary\n", + " // socket, so there is still some room for performance tuning.\n", + " var ws = {};\n", + "\n", + " ws.close = function() {\n", + " comm.close()\n", + " };\n", + " ws.send = function(m) {\n", + " //console.log('sending', m);\n", + " comm.send(m);\n", + " };\n", + " // Register the callback with on_msg.\n", + " comm.on_msg(function(msg) {\n", + " //console.log('receiving', msg['content']['data'], msg);\n", + " // Pass the mpl event to the overriden (by mpl) onmessage function.\n", + " ws.onmessage(msg['content']['data'])\n", + " });\n", + " return ws;\n", + "}\n", + "\n", + "mpl.mpl_figure_comm = function(comm, msg) {\n", + " // This is the function which gets called when the mpl process\n", + " // starts-up an IPython Comm through the \"matplotlib\" channel.\n", + "\n", + " var id = msg.content.data.id;\n", + " // Get hold of the div created by the display call when the Comm\n", + " // socket was opened in Python.\n", + " var element = $(\"#\" + id);\n", + " var ws_proxy = comm_websocket_adapter(comm)\n", + "\n", + " function ondownload(figure, format) {\n", + " window.open(figure.imageObj.src);\n", + " }\n", + "\n", + " var fig = new mpl.figure(id, ws_proxy,\n", + " ondownload,\n", + " element.get(0));\n", + "\n", + " // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n", + " // web socket which is closed, not our websocket->open comm proxy.\n", + " ws_proxy.onopen();\n", + "\n", + " fig.parent_element = element.get(0);\n", + " fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n", + " if (!fig.cell_info) {\n", + " console.error(\"Failed to find cell for figure\", id, fig);\n", + " return;\n", + " }\n", + "\n", + " var output_index = fig.cell_info[2]\n", + " var cell = fig.cell_info[0];\n", + "\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_close = function(fig, msg) {\n", + " var width = fig.canvas.width/mpl.ratio\n", + " fig.root.unbind('remove')\n", + "\n", + " // Update the output cell to use the data from the current canvas.\n", + " fig.push_to_output();\n", + " var dataURL = fig.canvas.toDataURL();\n", + " // Re-enable the keyboard manager in IPython - without this line, in FF,\n", + " // the notebook keyboard shortcuts fail.\n", + " IPython.keyboard_manager.enable()\n", + " $(fig.parent_element).html('<img src=\"' + dataURL + '\" width=\"' + width + '\">');\n", + " fig.close_ws(fig, msg);\n", + "}\n", + "\n", + "mpl.figure.prototype.close_ws = function(fig, msg){\n", + " fig.send_message('closing', msg);\n", + " // fig.ws.close()\n", + "}\n", + "\n", + "mpl.figure.prototype.push_to_output = function(remove_interactive) {\n", + " // Turn the data on the canvas into data in the output cell.\n", + " var width = this.canvas.width/mpl.ratio\n", + " var dataURL = this.canvas.toDataURL();\n", + " this.cell_info[1]['text/html'] = '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n", + "}\n", + "\n", + "mpl.figure.prototype.updated_canvas_event = function() {\n", + " // Tell IPython that the notebook contents must change.\n", + " IPython.notebook.set_dirty(true);\n", + " this.send_message(\"ack\", {});\n", + " var fig = this;\n", + " // Wait a second, then push the new image to the DOM so\n", + " // that it is saved nicely (might be nice to debounce this).\n", + " setTimeout(function () { fig.push_to_output() }, 1000);\n", + "}\n", + "\n", + "mpl.figure.prototype._init_toolbar = function() {\n", + " var fig = this;\n", + "\n", + " var nav_element = $('<div/>')\n", + " nav_element.attr('style', 'width: 100%');\n", + " this.root.append(nav_element);\n", + "\n", + " // Define a callback function for later on.\n", + " function toolbar_event(event) {\n", + " return fig.toolbar_button_onclick(event['data']);\n", + " }\n", + " function toolbar_mouse_event(event) {\n", + " return fig.toolbar_button_onmouseover(event['data']);\n", " }\n", "\n", - " .dataframe thead th {\n", - " text-align: left;\n", + " for(var toolbar_ind in mpl.toolbar_items){\n", + " var name = mpl.toolbar_items[toolbar_ind][0];\n", + " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", + " var image = mpl.toolbar_items[toolbar_ind][2];\n", + " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", + "\n", + " if (!name) { continue; };\n", + "\n", + " var button = $('<button class=\"btn btn-default\" href=\"#\" title=\"' + name + '\"><i class=\"fa ' + image + ' fa-lg\"></i></button>');\n", + " button.click(method_name, toolbar_event);\n", + " button.mouseover(tooltip, toolbar_mouse_event);\n", + " nav_element.append(button);\n", " }\n", "\n", - " .dataframe tbody tr th {\n", - " vertical-align: top;\n", + " // Add the status bar.\n", + " var status_bar = $('<span class=\"mpl-message\" style=\"text-align:right; float: right;\"/>');\n", + " nav_element.append(status_bar);\n", + " this.message = status_bar[0];\n", + "\n", + " // Add the close button to the window.\n", + " var buttongrp = $('<div class=\"btn-group inline pull-right\"></div>');\n", + " var button = $('<button class=\"btn btn-mini btn-primary\" href=\"#\" title=\"Stop Interaction\"><i class=\"fa fa-power-off icon-remove icon-large\"></i></button>');\n", + " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", + " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", + " buttongrp.append(button);\n", + " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", + " titlebar.prepend(buttongrp);\n", + "}\n", + "\n", + "mpl.figure.prototype._root_extra_style = function(el){\n", + " var fig = this\n", + " el.on(\"remove\", function(){\n", + "\tfig.close_ws(fig, {});\n", + " });\n", + "}\n", + "\n", + "mpl.figure.prototype._canvas_extra_style = function(el){\n", + " // this is important to make the div 'focusable\n", + " el.attr('tabindex', 0)\n", + " // reach out to IPython and tell the keyboard manager to turn it's self\n", + " // off when our div gets focus\n", + "\n", + " // location in version 3\n", + " if (IPython.notebook.keyboard_manager) {\n", + " IPython.notebook.keyboard_manager.register_events(el);\n", + " }\n", + " else {\n", + " // location in version 2\n", + " IPython.keyboard_manager.register_events(el);\n", + " }\n", + "\n", + "}\n", + "\n", + "mpl.figure.prototype._key_event_extra = function(event, name) {\n", + " var manager = IPython.notebook.keyboard_manager;\n", + " if (!manager)\n", + " manager = IPython.keyboard_manager;\n", + "\n", + " // Check for shift+enter\n", + " if (event.shiftKey && event.which == 13) {\n", + " this.canvas_div.blur();\n", + " // select the cell after this one\n", + " var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n", + " IPython.notebook.select(index + 1);\n", " }\n", - "</style>\n", - "<table border=\"1\" class=\"dataframe\">\n", - " <thead>\n", - " <tr style=\"text-align: right;\">\n", - " <th></th>\n", - " <th>Probability</th>\n", - " </tr>\n", - " </thead>\n", - " <tbody>\n", - " <tr>\n", - " <th>0.0</th>\n", - " <td>0.830290</td>\n", - " </tr>\n", - " <tr>\n", - " <th>8.0</th>\n", - " <td>0.000000</td>\n", - " </tr>\n", - " <tr>\n", - " <th>16.0</th>\n", - " <td>0.000000</td>\n", - " </tr>\n", - " <tr>\n", - " <th>24.0</th>\n", - " <td>0.000000</td>\n", - " </tr>\n", - " <tr>\n", - " <th>32.0</th>\n", - " <td>0.000000</td>\n", - " </tr>\n", - " <tr>\n", - " <th>40.0</th>\n", - " <td>0.000000</td>\n", - " </tr>\n", - " <tr>\n", - " <th>48.0</th>\n", - " <td>0.033196</td>\n", - " </tr>\n", - " <tr>\n", - " <th>56.0</th>\n", - " <td>0.011065</td>\n", - " </tr>\n", - " <tr>\n", - " <th>64.0</th>\n", - " <td>0.000000</td>\n", - " </tr>\n", - " <tr>\n", - " <th>72.0</th>\n", - " <td>0.000000</td>\n", - " </tr>\n", - " <tr>\n", - " <th>80.0</th>\n", - " <td>0.000000</td>\n", - " </tr>\n", - " <tr>\n", - " <th>88.0</th>\n", - " <td>0.000000</td>\n", - " </tr>\n", - " <tr>\n", - " <th>96.0</th>\n", - " <td>0.011714</td>\n", - " </tr>\n", - " <tr>\n", - " <th>104.0</th>\n", - " <td>0.007809</td>\n", - " </tr>\n", - " <tr>\n", - " <th>112.0</th>\n", - " <td>0.001302</td>\n", - " </tr>\n", - " <tr>\n", - " <th>120.0</th>\n", - " <td>0.000000</td>\n", - " </tr>\n", - " <tr>\n", - " <th>128.0</th>\n", - " <td>0.000000</td>\n", - " </tr>\n", - " <tr>\n", - " <th>136.0</th>\n", - " <td>0.000000</td>\n", - " </tr>\n", - " <tr>\n", - " <th>144.0</th>\n", - " <td>0.005597</td>\n", - " </tr>\n", - " <tr>\n", - " <th>152.0</th>\n", - " <td>0.005597</td>\n", - " </tr>\n", - " <tr>\n", - " <th>160.0</th>\n", - " <td>0.001866</td>\n", - " </tr>\n", - " <tr>\n", - " <th>168.0</th>\n", - " <td>0.000207</td>\n", - " </tr>\n", - " <tr>\n", - " <th>176.0</th>\n", - " <td>0.000000</td>\n", - " </tr>\n", - " <tr>\n", - " <th>184.0</th>\n", - " <td>0.000000</td>\n", - " </tr>\n", - " <tr>\n", - " <th>192.0</th>\n", - " <td>0.003035</td>\n", - " </tr>\n", - " <tr>\n", - " <th>200.0</th>\n", - " <td>0.004047</td>\n", - " </tr>\n", - " <tr>\n", - " <th>208.0</th>\n", - " <td>0.002023</td>\n", - " </tr>\n", - " <tr>\n", - " <th>216.0</th>\n", - " <td>0.000450</td>\n", - " </tr>\n", - " <tr>\n", - " <th>224.0</th>\n", - " <td>0.000037</td>\n", - " </tr>\n", - " <tr>\n", - " <th>232.0</th>\n", - " <td>0.000000</td>\n", - " </tr>\n", - " <tr>\n", - " <th>...</th>\n", - " <td>...</td>\n", - " </tr>\n", - " <tr>\n", - " <th>3768.0</th>\n", - " <td>0.000041</td>\n", - " </tr>\n", - " <tr>\n", - " <th>3776.0</th>\n", - " <td>0.000041</td>\n", - " </tr>\n", - " <tr>\n", - " <th>3784.0</th>\n", - " <td>0.000041</td>\n", - " </tr>\n", - " <tr>\n", - " <th>3792.0</th>\n", - " <td>0.000041</td>\n", - " </tr>\n", - " <tr>\n", - " <th>3800.0</th>\n", - " <td>0.000041</td>\n", - " </tr>\n", - " <tr>\n", - " <th>3808.0</th>\n", - " <td>0.000041</td>\n", - " </tr>\n", - " <tr>\n", - " <th>3816.0</th>\n", - " <td>0.000042</td>\n", - " </tr>\n", - " <tr>\n", - " <th>3824.0</th>\n", - " <td>0.000042</td>\n", - " </tr>\n", - " <tr>\n", - " <th>3832.0</th>\n", - " <td>0.000042</td>\n", - " </tr>\n", - " <tr>\n", - " <th>3840.0</th>\n", - " <td>0.000042</td>\n", - " </tr>\n", - " <tr>\n", - " <th>3848.0</th>\n", - " <td>0.000042</td>\n", - " </tr>\n", - " <tr>\n", - " <th>3856.0</th>\n", - " <td>0.000042</td>\n", - " </tr>\n", - " <tr>\n", - " <th>3864.0</th>\n", - " <td>0.000043</td>\n", - " </tr>\n", - " <tr>\n", - " <th>3872.0</th>\n", - " <td>0.000043</td>\n", - " </tr>\n", - " <tr>\n", - " <th>3880.0</th>\n", - " <td>0.000043</td>\n", - " </tr>\n", - " <tr>\n", - " <th>3888.0</th>\n", - " <td>0.000044</td>\n", - " </tr>\n", - " <tr>\n", - " <th>3896.0</th>\n", - " <td>0.000044</td>\n", - " </tr>\n", - " <tr>\n", - " <th>3904.0</th>\n", - " <td>0.000045</td>\n", - " </tr>\n", - " <tr>\n", - " <th>3912.0</th>\n", - " <td>0.000045</td>\n", - " </tr>\n", - " <tr>\n", - " <th>3920.0</th>\n", - " <td>0.000046</td>\n", - " </tr>\n", - " <tr>\n", - " <th>3928.0</th>\n", - " <td>0.000047</td>\n", - " </tr>\n", - " <tr>\n", - " <th>3936.0</th>\n", - " <td>0.000049</td>\n", - " </tr>\n", - " <tr>\n", - " <th>3944.0</th>\n", - " <td>0.000050</td>\n", - " </tr>\n", - " <tr>\n", - " <th>3952.0</th>\n", - " <td>0.000052</td>\n", - " </tr>\n", - " <tr>\n", - " <th>3960.0</th>\n", - " <td>0.000054</td>\n", - " </tr>\n", - " <tr>\n", - " <th>3968.0</th>\n", - " <td>0.000055</td>\n", - " </tr>\n", - " <tr>\n", - " <th>3976.0</th>\n", - " <td>0.000057</td>\n", - " </tr>\n", - " <tr>\n", - " <th>3984.0</th>\n", - " <td>0.000057</td>\n", - " </tr>\n", - " <tr>\n", - " <th>3992.0</th>\n", - " <td>0.000056</td>\n", - " </tr>\n", - " <tr>\n", - " <th>4000.0</th>\n", - " <td>0.000254</td>\n", - " </tr>\n", - " </tbody>\n", - "</table>\n", - "<p>501 rows × 1 columns</p>\n", - "</div>" + "}\n", + "\n", + "mpl.figure.prototype.handle_save = function(fig, msg) {\n", + " fig.ondownload(fig, null);\n", + "}\n", + "\n", + "\n", + "mpl.find_output_cell = function(html_output) {\n", + " // Return the cell and output element which can be found *uniquely* in the notebook.\n", + " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", + " // IPython event is triggered only after the cells have been serialised, which for\n", + " // our purposes (turning an active figure into a static one), is too late.\n", + " var cells = IPython.notebook.get_cells();\n", + " var ncells = cells.length;\n", + " for (var i=0; i<ncells; i++) {\n", + " var cell = cells[i];\n", + " if (cell.cell_type === 'code'){\n", + " for (var j=0; j<cell.output_area.outputs.length; j++) {\n", + " var data = cell.output_area.outputs[j];\n", + " if (data.data) {\n", + " // IPython >= 3 moved mimebundle to data attribute of output\n", + " data = data.data;\n", + " }\n", + " if (data['text/html'] == html_output) {\n", + " return [cell, data, j];\n", + " }\n", + " }\n", + " }\n", + " }\n", + "}\n", + "\n", + "// Register the function which deals with the matplotlib target/channel.\n", + "// The kernel may be null if the page has been refreshed.\n", + "if (IPython.notebook.kernel != null) {\n", + " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", + "}\n" + ], + "text/plain": [ + "<IPython.core.display.Javascript object>" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "<img src=\"data:image/png;base64,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\" width=\"640\">" ], "text/plain": [ - " Probability\n", - "0.0 0.830290\n", - "8.0 0.000000\n", - "16.0 0.000000\n", - "24.0 0.000000\n", - "32.0 0.000000\n", - "40.0 0.000000\n", - "48.0 0.033196\n", - "56.0 0.011065\n", - "64.0 0.000000\n", - "72.0 0.000000\n", - "80.0 0.000000\n", - "88.0 0.000000\n", - "96.0 0.011714\n", - "104.0 0.007809\n", - "112.0 0.001302\n", - "120.0 0.000000\n", - "128.0 0.000000\n", - "136.0 0.000000\n", - "144.0 0.005597\n", - "152.0 0.005597\n", - "160.0 0.001866\n", - "168.0 0.000207\n", - "176.0 0.000000\n", - "184.0 0.000000\n", - "192.0 0.003035\n", - "200.0 0.004047\n", - "208.0 0.002023\n", - "216.0 0.000450\n", - "224.0 0.000037\n", - "232.0 0.000000\n", - "... ...\n", - "3768.0 0.000041\n", - "3776.0 0.000041\n", - "3784.0 0.000041\n", - "3792.0 0.000041\n", - "3800.0 0.000041\n", - "3808.0 0.000041\n", - "3816.0 0.000042\n", - "3824.0 0.000042\n", - "3832.0 0.000042\n", - "3840.0 0.000042\n", - "3848.0 0.000042\n", - "3856.0 0.000042\n", - "3864.0 0.000043\n", - "3872.0 0.000043\n", - "3880.0 0.000043\n", - "3888.0 0.000044\n", - "3896.0 0.000044\n", - "3904.0 0.000045\n", - "3912.0 0.000045\n", - "3920.0 0.000046\n", - "3928.0 0.000047\n", - "3936.0 0.000049\n", - "3944.0 0.000050\n", - "3952.0 0.000052\n", - "3960.0 0.000054\n", - "3968.0 0.000055\n", - "3976.0 0.000057\n", - "3984.0 0.000057\n", - "3992.0 0.000056\n", - "4000.0 0.000254\n", + "<IPython.core.display.HTML object>" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/javascript": [ + "/* Put everything inside the global mpl namespace */\n", + "window.mpl = {};\n", + "\n", + "\n", + "mpl.get_websocket_type = function() {\n", + " if (typeof(WebSocket) !== 'undefined') {\n", + " return WebSocket;\n", + " } else if (typeof(MozWebSocket) !== 'undefined') {\n", + " return MozWebSocket;\n", + " } else {\n", + " alert('Your browser does not have WebSocket support.' +\n", + " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", + " 'Firefox 4 and 5 are also supported but you ' +\n", + " 'have to enable WebSockets in about:config.');\n", + " };\n", + "}\n", + "\n", + "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", + " this.id = figure_id;\n", + "\n", + " this.ws = websocket;\n", + "\n", + " this.supports_binary = (this.ws.binaryType != undefined);\n", + "\n", + " if (!this.supports_binary) {\n", + " var warnings = document.getElementById(\"mpl-warnings\");\n", + " if (warnings) {\n", + " warnings.style.display = 'block';\n", + " warnings.textContent = (\n", + " \"This browser does not support binary websocket messages. \" +\n", + " \"Performance may be slow.\");\n", + " }\n", + " }\n", + "\n", + " this.imageObj = new Image();\n", + "\n", + " this.context = undefined;\n", + " this.message = undefined;\n", + " this.canvas = undefined;\n", + " this.rubberband_canvas = undefined;\n", + " this.rubberband_context = undefined;\n", + " this.format_dropdown = undefined;\n", + "\n", + " this.image_mode = 'full';\n", + "\n", + " this.root = $('<div/>');\n", + " this._root_extra_style(this.root)\n", + " this.root.attr('style', 'display: inline-block');\n", + "\n", + " $(parent_element).append(this.root);\n", + "\n", + " this._init_header(this);\n", + " this._init_canvas(this);\n", + " this._init_toolbar(this);\n", + "\n", + " var fig = this;\n", + "\n", + " this.waiting = false;\n", + "\n", + " this.ws.onopen = function () {\n", + " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", + " fig.send_message(\"send_image_mode\", {});\n", + " if (mpl.ratio != 1) {\n", + " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", + " }\n", + " fig.send_message(\"refresh\", {});\n", + " }\n", + "\n", + " this.imageObj.onload = function() {\n", + " if (fig.image_mode == 'full') {\n", + " // Full images could contain transparency (where diff images\n", + " // almost always do), so we need to clear the canvas so that\n", + " // there is no ghosting.\n", + " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", + " }\n", + " fig.context.drawImage(fig.imageObj, 0, 0);\n", + " };\n", + "\n", + " this.imageObj.onunload = function() {\n", + " this.ws.close();\n", + " }\n", + "\n", + " this.ws.onmessage = this._make_on_message_function(this);\n", + "\n", + " this.ondownload = ondownload;\n", + "}\n", + "\n", + "mpl.figure.prototype._init_header = function() {\n", + " var titlebar = $(\n", + " '<div class=\"ui-dialog-titlebar ui-widget-header ui-corner-all ' +\n", + " 'ui-helper-clearfix\"/>');\n", + " var titletext = $(\n", + " '<div class=\"ui-dialog-title\" style=\"width: 100%; ' +\n", + " 'text-align: center; padding: 3px;\"/>');\n", + " titlebar.append(titletext)\n", + " this.root.append(titlebar);\n", + " this.header = titletext[0];\n", + "}\n", + "\n", + "\n", + "\n", + "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", + "\n", + "}\n", + "\n", + "\n", + "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", + "\n", + "}\n", + "\n", + "mpl.figure.prototype._init_canvas = function() {\n", + " var fig = this;\n", + "\n", + " var canvas_div = $('<div/>');\n", + "\n", + " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", + "\n", + " function canvas_keyboard_event(event) {\n", + " return fig.key_event(event, event['data']);\n", + " }\n", + "\n", + " canvas_div.keydown('key_press', canvas_keyboard_event);\n", + " canvas_div.keyup('key_release', canvas_keyboard_event);\n", + " this.canvas_div = canvas_div\n", + " this._canvas_extra_style(canvas_div)\n", + " this.root.append(canvas_div);\n", + "\n", + " var canvas = $('<canvas/>');\n", + " canvas.addClass('mpl-canvas');\n", + " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", + "\n", + " this.canvas = canvas[0];\n", + " this.context = canvas[0].getContext(\"2d\");\n", + "\n", + " var backingStore = this.context.backingStorePixelRatio ||\n", + "\tthis.context.webkitBackingStorePixelRatio ||\n", + "\tthis.context.mozBackingStorePixelRatio ||\n", + "\tthis.context.msBackingStorePixelRatio ||\n", + "\tthis.context.oBackingStorePixelRatio ||\n", + "\tthis.context.backingStorePixelRatio || 1;\n", + "\n", + " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", + "\n", + " var rubberband = $('<canvas/>');\n", + " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", + "\n", + " var pass_mouse_events = true;\n", + "\n", + " canvas_div.resizable({\n", + " start: function(event, ui) {\n", + " pass_mouse_events = false;\n", + " },\n", + " resize: function(event, ui) {\n", + " fig.request_resize(ui.size.width, ui.size.height);\n", + " },\n", + " stop: function(event, ui) {\n", + " pass_mouse_events = true;\n", + " fig.request_resize(ui.size.width, ui.size.height);\n", + " },\n", + " });\n", + "\n", + " function mouse_event_fn(event) {\n", + " if (pass_mouse_events)\n", + " return fig.mouse_event(event, event['data']);\n", + " }\n", + "\n", + " rubberband.mousedown('button_press', mouse_event_fn);\n", + " rubberband.mouseup('button_release', mouse_event_fn);\n", + " // Throttle sequential mouse events to 1 every 20ms.\n", + " rubberband.mousemove('motion_notify', mouse_event_fn);\n", + "\n", + " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", + " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", + "\n", + " canvas_div.on(\"wheel\", function (event) {\n", + " event = event.originalEvent;\n", + " event['data'] = 'scroll'\n", + " if (event.deltaY < 0) {\n", + " event.step = 1;\n", + " } else {\n", + " event.step = -1;\n", + " }\n", + " mouse_event_fn(event);\n", + " });\n", + "\n", + " canvas_div.append(canvas);\n", + " canvas_div.append(rubberband);\n", + "\n", + " this.rubberband = rubberband;\n", + " this.rubberband_canvas = rubberband[0];\n", + " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", + " this.rubberband_context.strokeStyle = \"#000000\";\n", + "\n", + " this._resize_canvas = function(width, height) {\n", + " // Keep the size of the canvas, canvas container, and rubber band\n", + " // canvas in synch.\n", + " canvas_div.css('width', width)\n", + " canvas_div.css('height', height)\n", + "\n", + " canvas.attr('width', width * mpl.ratio);\n", + " canvas.attr('height', height * mpl.ratio);\n", + " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", + "\n", + " rubberband.attr('width', width);\n", + " rubberband.attr('height', height);\n", + " }\n", + "\n", + " // Set the figure to an initial 600x600px, this will subsequently be updated\n", + " // upon first draw.\n", + " this._resize_canvas(600, 600);\n", + "\n", + " // Disable right mouse context menu.\n", + " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", + " return false;\n", + " });\n", + "\n", + " function set_focus () {\n", + " canvas.focus();\n", + " canvas_div.focus();\n", + " }\n", + "\n", + " window.setTimeout(set_focus, 100);\n", + "}\n", + "\n", + "mpl.figure.prototype._init_toolbar = function() {\n", + " var fig = this;\n", + "\n", + " var nav_element = $('<div/>')\n", + " nav_element.attr('style', 'width: 100%');\n", + " this.root.append(nav_element);\n", + "\n", + " // Define a callback function for later on.\n", + " function toolbar_event(event) {\n", + " return fig.toolbar_button_onclick(event['data']);\n", + " }\n", + " function toolbar_mouse_event(event) {\n", + " return fig.toolbar_button_onmouseover(event['data']);\n", + " }\n", + "\n", + " for(var toolbar_ind in mpl.toolbar_items) {\n", + " var name = mpl.toolbar_items[toolbar_ind][0];\n", + " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", + " var image = mpl.toolbar_items[toolbar_ind][2];\n", + " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", + "\n", + " if (!name) {\n", + " // put a spacer in here.\n", + " continue;\n", + " }\n", + " var button = $('<button/>');\n", + " button.addClass('ui-button ui-widget ui-state-default ui-corner-all ' +\n", + " 'ui-button-icon-only');\n", + " button.attr('role', 'button');\n", + " button.attr('aria-disabled', 'false');\n", + " button.click(method_name, toolbar_event);\n", + " button.mouseover(tooltip, toolbar_mouse_event);\n", + "\n", + " var icon_img = $('<span/>');\n", + " icon_img.addClass('ui-button-icon-primary ui-icon');\n", + " icon_img.addClass(image);\n", + " icon_img.addClass('ui-corner-all');\n", + "\n", + " var tooltip_span = $('<span/>');\n", + " tooltip_span.addClass('ui-button-text');\n", + " tooltip_span.html(tooltip);\n", + "\n", + " button.append(icon_img);\n", + " button.append(tooltip_span);\n", + "\n", + " nav_element.append(button);\n", + " }\n", + "\n", + " var fmt_picker_span = $('<span/>');\n", + "\n", + " var fmt_picker = $('<select/>');\n", + " fmt_picker.addClass('mpl-toolbar-option ui-widget ui-widget-content');\n", + " fmt_picker_span.append(fmt_picker);\n", + " nav_element.append(fmt_picker_span);\n", + " this.format_dropdown = fmt_picker[0];\n", + "\n", + " for (var ind in mpl.extensions) {\n", + " var fmt = mpl.extensions[ind];\n", + " var option = $(\n", + " '<option/>', {selected: fmt === mpl.default_extension}).html(fmt);\n", + " fmt_picker.append(option)\n", + " }\n", + "\n", + " // Add hover states to the ui-buttons\n", + " $( \".ui-button\" ).hover(\n", + " function() { $(this).addClass(\"ui-state-hover\");},\n", + " function() { $(this).removeClass(\"ui-state-hover\");}\n", + " );\n", + "\n", + " var status_bar = $('<span class=\"mpl-message\"/>');\n", + " nav_element.append(status_bar);\n", + " this.message = status_bar[0];\n", + "}\n", + "\n", + "mpl.figure.prototype.request_resize = function(x_pixels, y_pixels) {\n", + " // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n", + " // which will in turn request a refresh of the image.\n", + " this.send_message('resize', {'width': x_pixels, 'height': y_pixels});\n", + "}\n", + "\n", + "mpl.figure.prototype.send_message = function(type, properties) {\n", + " properties['type'] = type;\n", + " properties['figure_id'] = this.id;\n", + " this.ws.send(JSON.stringify(properties));\n", + "}\n", + "\n", + "mpl.figure.prototype.send_draw_message = function() {\n", + " if (!this.waiting) {\n", + " this.waiting = true;\n", + " this.ws.send(JSON.stringify({type: \"draw\", figure_id: this.id}));\n", + " }\n", + "}\n", + "\n", + "\n", + "mpl.figure.prototype.handle_save = function(fig, msg) {\n", + " var format_dropdown = fig.format_dropdown;\n", + " var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n", + " fig.ondownload(fig, format);\n", + "}\n", + "\n", + "\n", + "mpl.figure.prototype.handle_resize = function(fig, msg) {\n", + " var size = msg['size'];\n", + " if (size[0] != fig.canvas.width || size[1] != fig.canvas.height) {\n", + " fig._resize_canvas(size[0], size[1]);\n", + " fig.send_message(\"refresh\", {});\n", + " };\n", + "}\n", + "\n", + "mpl.figure.prototype.handle_rubberband = function(fig, msg) {\n", + " var x0 = msg['x0'] / mpl.ratio;\n", + " var y0 = (fig.canvas.height - msg['y0']) / mpl.ratio;\n", + " var x1 = msg['x1'] / mpl.ratio;\n", + " var y1 = (fig.canvas.height - msg['y1']) / mpl.ratio;\n", + " x0 = Math.floor(x0) + 0.5;\n", + " y0 = Math.floor(y0) + 0.5;\n", + " x1 = Math.floor(x1) + 0.5;\n", + " y1 = Math.floor(y1) + 0.5;\n", + " var min_x = Math.min(x0, x1);\n", + " var min_y = Math.min(y0, y1);\n", + " var width = Math.abs(x1 - x0);\n", + " var height = Math.abs(y1 - y0);\n", + "\n", + " fig.rubberband_context.clearRect(\n", + " 0, 0, fig.canvas.width, fig.canvas.height);\n", + "\n", + " fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n", + "}\n", + "\n", + "mpl.figure.prototype.handle_figure_label = function(fig, msg) {\n", + " // Updates the figure title.\n", + " fig.header.textContent = msg['label'];\n", + "}\n", + "\n", + "mpl.figure.prototype.handle_cursor = function(fig, msg) {\n", + " var cursor = msg['cursor'];\n", + " switch(cursor)\n", + " {\n", + " case 0:\n", + " cursor = 'pointer';\n", + " break;\n", + " case 1:\n", + " cursor = 'default';\n", + " break;\n", + " case 2:\n", + " cursor = 'crosshair';\n", + " break;\n", + " case 3:\n", + " cursor = 'move';\n", + " break;\n", + " }\n", + " fig.rubberband_canvas.style.cursor = cursor;\n", + "}\n", + "\n", + "mpl.figure.prototype.handle_message = function(fig, msg) {\n", + " fig.message.textContent = msg['message'];\n", + "}\n", + "\n", + "mpl.figure.prototype.handle_draw = function(fig, msg) {\n", + " // Request the server to send over a new figure.\n", + " fig.send_draw_message();\n", + "}\n", + "\n", + "mpl.figure.prototype.handle_image_mode = function(fig, msg) {\n", + " fig.image_mode = msg['mode'];\n", + "}\n", + "\n", + "mpl.figure.prototype.updated_canvas_event = function() {\n", + " // Called whenever the canvas gets updated.\n", + " this.send_message(\"ack\", {});\n", + "}\n", + "\n", + "// A function to construct a web socket function for onmessage handling.\n", + "// Called in the figure constructor.\n", + "mpl.figure.prototype._make_on_message_function = function(fig) {\n", + " return function socket_on_message(evt) {\n", + " if (evt.data instanceof Blob) {\n", + " /* FIXME: We get \"Resource interpreted as Image but\n", + " * transferred with MIME type text/plain:\" errors on\n", + " * Chrome. But how to set the MIME type? It doesn't seem\n", + " * to be part of the websocket stream */\n", + " evt.data.type = \"image/png\";\n", + "\n", + " /* Free the memory for the previous frames */\n", + " if (fig.imageObj.src) {\n", + " (window.URL || window.webkitURL).revokeObjectURL(\n", + " fig.imageObj.src);\n", + " }\n", + "\n", + " fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n", + " evt.data);\n", + " fig.updated_canvas_event();\n", + " fig.waiting = false;\n", + " return;\n", + " }\n", + " else if (typeof evt.data === 'string' && evt.data.slice(0, 21) == \"data:image/png;base64\") {\n", + " fig.imageObj.src = evt.data;\n", + " fig.updated_canvas_event();\n", + " fig.waiting = false;\n", + " return;\n", + " }\n", + "\n", + " var msg = JSON.parse(evt.data);\n", + " var msg_type = msg['type'];\n", + "\n", + " // Call the \"handle_{type}\" callback, which takes\n", + " // the figure and JSON message as its only arguments.\n", + " try {\n", + " var callback = fig[\"handle_\" + msg_type];\n", + " } catch (e) {\n", + " console.log(\"No handler for the '\" + msg_type + \"' message type: \", msg);\n", + " return;\n", + " }\n", + "\n", + " if (callback) {\n", + " try {\n", + " // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n", + " callback(fig, msg);\n", + " } catch (e) {\n", + " console.log(\"Exception inside the 'handler_\" + msg_type + \"' callback:\", e, e.stack, msg);\n", + " }\n", + " }\n", + " };\n", + "}\n", + "\n", + "// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n", + "mpl.findpos = function(e) {\n", + " //this section is from http://www.quirksmode.org/js/events_properties.html\n", + " var targ;\n", + " if (!e)\n", + " e = window.event;\n", + " if (e.target)\n", + " targ = e.target;\n", + " else if (e.srcElement)\n", + " targ = e.srcElement;\n", + " if (targ.nodeType == 3) // defeat Safari bug\n", + " targ = targ.parentNode;\n", + "\n", + " // jQuery normalizes the pageX and pageY\n", + " // pageX,Y are the mouse positions relative to the document\n", + " // offset() returns the position of the element relative to the document\n", + " var x = e.pageX - $(targ).offset().left;\n", + " var y = e.pageY - $(targ).offset().top;\n", + "\n", + " return {\"x\": x, \"y\": y};\n", + "};\n", + "\n", + "/*\n", + " * return a copy of an object with only non-object keys\n", + " * we need this to avoid circular references\n", + " * http://stackoverflow.com/a/24161582/3208463\n", + " */\n", + "function simpleKeys (original) {\n", + " return Object.keys(original).reduce(function (obj, key) {\n", + " if (typeof original[key] !== 'object')\n", + " obj[key] = original[key]\n", + " return obj;\n", + " }, {});\n", + "}\n", + "\n", + "mpl.figure.prototype.mouse_event = function(event, name) {\n", + " var canvas_pos = mpl.findpos(event)\n", + "\n", + " if (name === 'button_press')\n", + " {\n", + " this.canvas.focus();\n", + " this.canvas_div.focus();\n", + " }\n", + "\n", + " var x = canvas_pos.x * mpl.ratio;\n", + " var y = canvas_pos.y * mpl.ratio;\n", + "\n", + " this.send_message(name, {x: x, y: y, button: event.button,\n", + " step: event.step,\n", + " guiEvent: simpleKeys(event)});\n", + "\n", + " /* This prevents the web browser from automatically changing to\n", + " * the text insertion cursor when the button is pressed. We want\n", + " * to control all of the cursor setting manually through the\n", + " * 'cursor' event from matplotlib */\n", + " event.preventDefault();\n", + " return false;\n", + "}\n", + "\n", + "mpl.figure.prototype._key_event_extra = function(event, name) {\n", + " // Handle any extra behaviour associated with a key event\n", + "}\n", + "\n", + "mpl.figure.prototype.key_event = function(event, name) {\n", + "\n", + " // Prevent repeat events\n", + " if (name == 'key_press')\n", + " {\n", + " if (event.which === this._key)\n", + " return;\n", + " else\n", + " this._key = event.which;\n", + " }\n", + " if (name == 'key_release')\n", + " this._key = null;\n", + "\n", + " var value = '';\n", + " if (event.ctrlKey && event.which != 17)\n", + " value += \"ctrl+\";\n", + " if (event.altKey && event.which != 18)\n", + " value += \"alt+\";\n", + " if (event.shiftKey && event.which != 16)\n", + " value += \"shift+\";\n", + "\n", + " value += 'k';\n", + " value += event.which.toString();\n", + "\n", + " this._key_event_extra(event, name);\n", + "\n", + " this.send_message(name, {key: value,\n", + " guiEvent: simpleKeys(event)});\n", + " return false;\n", + "}\n", + "\n", + "mpl.figure.prototype.toolbar_button_onclick = function(name) {\n", + " if (name == 'download') {\n", + " this.handle_save(this, null);\n", + " } else {\n", + " this.send_message(\"toolbar_button\", {name: name});\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.toolbar_button_onmouseover = function(tooltip) {\n", + " this.message.textContent = tooltip;\n", + "};\n", + "mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Pan axes with left mouse, zoom with right\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n", + "\n", + "mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n", + "\n", + "mpl.default_extension = \"png\";var comm_websocket_adapter = function(comm) {\n", + " // Create a \"websocket\"-like object which calls the given IPython comm\n", + " // object with the appropriate methods. Currently this is a non binary\n", + " // socket, so there is still some room for performance tuning.\n", + " var ws = {};\n", + "\n", + " ws.close = function() {\n", + " comm.close()\n", + " };\n", + " ws.send = function(m) {\n", + " //console.log('sending', m);\n", + " comm.send(m);\n", + " };\n", + " // Register the callback with on_msg.\n", + " comm.on_msg(function(msg) {\n", + " //console.log('receiving', msg['content']['data'], msg);\n", + " // Pass the mpl event to the overriden (by mpl) onmessage function.\n", + " ws.onmessage(msg['content']['data'])\n", + " });\n", + " return ws;\n", + "}\n", + "\n", + "mpl.mpl_figure_comm = function(comm, msg) {\n", + " // This is the function which gets called when the mpl process\n", + " // starts-up an IPython Comm through the \"matplotlib\" channel.\n", + "\n", + " var id = msg.content.data.id;\n", + " // Get hold of the div created by the display call when the Comm\n", + " // socket was opened in Python.\n", + " var element = $(\"#\" + id);\n", + " var ws_proxy = comm_websocket_adapter(comm)\n", + "\n", + " function ondownload(figure, format) {\n", + " window.open(figure.imageObj.src);\n", + " }\n", + "\n", + " var fig = new mpl.figure(id, ws_proxy,\n", + " ondownload,\n", + " element.get(0));\n", + "\n", + " // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n", + " // web socket which is closed, not our websocket->open comm proxy.\n", + " ws_proxy.onopen();\n", + "\n", + " fig.parent_element = element.get(0);\n", + " fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n", + " if (!fig.cell_info) {\n", + " console.error(\"Failed to find cell for figure\", id, fig);\n", + " return;\n", + " }\n", + "\n", + " var output_index = fig.cell_info[2]\n", + " var cell = fig.cell_info[0];\n", + "\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_close = function(fig, msg) {\n", + " var width = fig.canvas.width/mpl.ratio\n", + " fig.root.unbind('remove')\n", + "\n", + " // Update the output cell to use the data from the current canvas.\n", + " fig.push_to_output();\n", + " var dataURL = fig.canvas.toDataURL();\n", + " // Re-enable the keyboard manager in IPython - without this line, in FF,\n", + " // the notebook keyboard shortcuts fail.\n", + " IPython.keyboard_manager.enable()\n", + " $(fig.parent_element).html('<img src=\"' + dataURL + '\" width=\"' + width + '\">');\n", + " fig.close_ws(fig, msg);\n", + "}\n", + "\n", + "mpl.figure.prototype.close_ws = function(fig, msg){\n", + " fig.send_message('closing', msg);\n", + " // fig.ws.close()\n", + "}\n", + "\n", + "mpl.figure.prototype.push_to_output = function(remove_interactive) {\n", + " // Turn the data on the canvas into data in the output cell.\n", + " var width = this.canvas.width/mpl.ratio\n", + " var dataURL = this.canvas.toDataURL();\n", + " this.cell_info[1]['text/html'] = '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n", + "}\n", + "\n", + "mpl.figure.prototype.updated_canvas_event = function() {\n", + " // Tell IPython that the notebook contents must change.\n", + " IPython.notebook.set_dirty(true);\n", + " this.send_message(\"ack\", {});\n", + " var fig = this;\n", + " // Wait a second, then push the new image to the DOM so\n", + " // that it is saved nicely (might be nice to debounce this).\n", + " setTimeout(function () { fig.push_to_output() }, 1000);\n", + "}\n", + "\n", + "mpl.figure.prototype._init_toolbar = function() {\n", + " var fig = this;\n", + "\n", + " var nav_element = $('<div/>')\n", + " nav_element.attr('style', 'width: 100%');\n", + " this.root.append(nav_element);\n", + "\n", + " // Define a callback function for later on.\n", + " function toolbar_event(event) {\n", + " return fig.toolbar_button_onclick(event['data']);\n", + " }\n", + " function toolbar_mouse_event(event) {\n", + " return fig.toolbar_button_onmouseover(event['data']);\n", + " }\n", + "\n", + " for(var toolbar_ind in mpl.toolbar_items){\n", + " var name = mpl.toolbar_items[toolbar_ind][0];\n", + " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", + " var image = mpl.toolbar_items[toolbar_ind][2];\n", + " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", + "\n", + " if (!name) { continue; };\n", + "\n", + " var button = $('<button class=\"btn btn-default\" href=\"#\" title=\"' + name + '\"><i class=\"fa ' + image + ' fa-lg\"></i></button>');\n", + " button.click(method_name, toolbar_event);\n", + " button.mouseover(tooltip, toolbar_mouse_event);\n", + " nav_element.append(button);\n", + " }\n", + "\n", + " // Add the status bar.\n", + " var status_bar = $('<span class=\"mpl-message\" style=\"text-align:right; float: right;\"/>');\n", + " nav_element.append(status_bar);\n", + " this.message = status_bar[0];\n", + "\n", + " // Add the close button to the window.\n", + " var buttongrp = $('<div class=\"btn-group inline pull-right\"></div>');\n", + " var button = $('<button class=\"btn btn-mini btn-primary\" href=\"#\" title=\"Stop Interaction\"><i class=\"fa fa-power-off icon-remove icon-large\"></i></button>');\n", + " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", + " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", + " buttongrp.append(button);\n", + " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", + " titlebar.prepend(buttongrp);\n", + "}\n", + "\n", + "mpl.figure.prototype._root_extra_style = function(el){\n", + " var fig = this\n", + " el.on(\"remove\", function(){\n", + "\tfig.close_ws(fig, {});\n", + " });\n", + "}\n", + "\n", + "mpl.figure.prototype._canvas_extra_style = function(el){\n", + " // this is important to make the div 'focusable\n", + " el.attr('tabindex', 0)\n", + " // reach out to IPython and tell the keyboard manager to turn it's self\n", + " // off when our div gets focus\n", + "\n", + " // location in version 3\n", + " if (IPython.notebook.keyboard_manager) {\n", + " IPython.notebook.keyboard_manager.register_events(el);\n", + " }\n", + " else {\n", + " // location in version 2\n", + " IPython.keyboard_manager.register_events(el);\n", + " }\n", + "\n", + "}\n", + "\n", + "mpl.figure.prototype._key_event_extra = function(event, name) {\n", + " var manager = IPython.notebook.keyboard_manager;\n", + " if (!manager)\n", + " manager = IPython.keyboard_manager;\n", + "\n", + " // Check for shift+enter\n", + " if (event.shiftKey && event.which == 13) {\n", + " this.canvas_div.blur();\n", + " // select the cell after this one\n", + " var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n", + " IPython.notebook.select(index + 1);\n", + " }\n", + "}\n", + "\n", + "mpl.figure.prototype.handle_save = function(fig, msg) {\n", + " fig.ondownload(fig, null);\n", + "}\n", + "\n", + "\n", + "mpl.find_output_cell = function(html_output) {\n", + " // Return the cell and output element which can be found *uniquely* in the notebook.\n", + " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", + " // IPython event is triggered only after the cells have been serialised, which for\n", + " // our purposes (turning an active figure into a static one), is too late.\n", + " var cells = IPython.notebook.get_cells();\n", + " var ncells = cells.length;\n", + " for (var i=0; i<ncells; i++) {\n", + " var cell = cells[i];\n", + " if (cell.cell_type === 'code'){\n", + " for (var j=0; j<cell.output_area.outputs.length; j++) {\n", + " var data = cell.output_area.outputs[j];\n", + " if (data.data) {\n", + " // IPython >= 3 moved mimebundle to data attribute of output\n", + " data = data.data;\n", + " }\n", + " if (data['text/html'] == html_output) {\n", + " return [cell, data, j];\n", + " }\n", + " }\n", + " }\n", + " }\n", + "}\n", "\n", - "[501 rows x 1 columns]" + "// Register the function which deals with the matplotlib target/channel.\n", + "// The kernel may be null if the page has been refreshed.\n", + "if (IPython.notebook.kernel != null) {\n", + " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", + "}\n" + ], + "text/plain": [ + "<IPython.core.display.Javascript object>" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "<img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAoAAAAHgCAYAAAA10dzkAAAgAElEQVR4Xu29B5h1VXm/fRsLKBF7wyCoUewSS+w9VkRRA6KxAH/FrtgxFuxibMFeomg0Rk0iaMSGiiVW7MEukYhoBMG82KPod/3MOp+bk5l39sycs9dee+51XV6+zOyz11r3es6Z+zyr7HNgkYAEJCABCUhAAhLYUgTOsaV6a2clIAEJSEACEpCABFAADQIJSEACEpCABCSwxQgogFtswO2uBCQgAQlIQAISUACNAQlIQAISkIAEJLDFCCiAW2zA7a4EJCABCUhAAhJQAI0BCUhAAhKQgAQksMUIKIBbbMDtrgQkIAEJSEACElAAjQEJSEACEpCABCSwxQgogFtswO2uBCQgAQlIQAISUACNAQlIQAISkIAEJLDFCCiAW2zA7a4EJCABCUhAAhJQAI0BCUhAAhKQgAQksMUIKIBbbMDtrgQkIAEJSEACElAAjQEJSEACEpCABCSwxQgogFtswO2uBCQgAQlIQAISUACNAQlIQAISkIAEJLDFCCiA/Qc8rM7f/3KvlIAEJCABCUhAAksh8BPgd5u5swLYn97OwLb+l3ulBCQgAQlIQAISWAqBCwBnbubOCmB/er8XwJNPPpmdd84/LRKQgAQkIAEJSGA4AmeeeSa77rprKlQAh8PO7wVw27ZtCuCA0K1KAhKQgAQkIIH/JRABvMAF4n4K4JAxoQAOSdu6JCABCUhAAhI4GwEFsE5AKIB1uFurBCQgAQlIQAJmAKvFgAJYDb0VS0ACEpCABCRgBrBODCiAdbhbqwQkIAEJSEACZgCrxYACWA29FUtAAhKQgAQkYAawTgwogHW4W6sEJCABCUhAAmYAq8WAAlgNvRVLQAISkIAEJGAGsE4MKIB1uFurBCQgAQlIQAJmAKvFgAJYDb0VS0ACEpCABCRgBrBODCiAdbhbqwQkIAEJSEACZgCrxYACWA29FUtAAhKQgAQkYAawTgwogHW4W6sEJCABCUhAAmYAq8WAAlgNvRVLQAISkIAEJGAGsE4MKIB1uFurBCQgAQlIQAJmAKvFwIYFcPdDjxms0ScdvtdgdVmRBCQgAQlIQALDETADOBzrbk0KYB3u1ioBCUhAAhKQgBnAajGgAFZDb8USkIAEJCABCZgBrBMDCmAd7tYqAQlIQAISkIAZwGoxoABWQ2/FEpCABCQgAQmYAawTAwpgHe7WKgEJSEACEpCAGcBqMaAAVkNvxRKQgAQkIAEJmAGsEwMKYB3u1ioBCUhAAhKQgBnAajGgAFZDb8USkIAEJCABCZgBrBMDCmAd7tYqAQlIQAISkIAZwGoxoABWQ2/FEpCABCQgAQmYAawTAwpgHe7WKgEJSEACEpCAGcBqMaAAVkNvxRKQgAQkIAEJmAGsEwMKYB3u1ioBCUhAAhKQgBnAajGgAFZDb8USkIAEJCABCZgBrBMDCmAd7tYqAQlIQAISkIAZwGoxoABWQ2/FEpCABCQgAQmYAawTAwpgHe7WKgEJSEACEpCAGcBqMaAAVkNvxRKQgAQkIAEJmAGsEwMKYB3u1ioBCUhAAhKQgBnAajGgAFZDb8USkIAEJCABCZgBrBMDCmAd7tYqAQlIQAISkIAZwGoxoABWQ2/FEpCABCQgAQmYAawTAwpgHe7WKgEJSEACEpCAGcBqMaAAVkNvxRKQgAQkIAEJmAGsEwMKYB3u1ioBCUhAAhKQgBnAajGgAM6h3/3QYwYdjJMO32vQ+qxMAhKQgAQkMCYCZgDrjIYCqADWiTxrlYAEJCABCWyxDOATgGcDRwCHlNHfAXg+cA/gvMAHgQcD3yu/vzDwBuAWwDeBA4EvdSLn5cCJwAvWGU0KoAK4zpDxcglIQAISkMDiCGyVDOB1gbdFeIHjOgL4CmBv4ADg9CJykb5rA2eV/86/DwYeBNwYyL1SbgC8BLheuXY9o6IAKoDriRevlYAEJCABCSyUwFYQwD8GPl8ye08CvlgE8ALAacC9gbcWqrsAJwN3AN4HvBt4J/BK4MrAZ4GdgHMDxwP3Kz9b76AogArgemPG6yUgAQlIQAILI7AVBDBTuGcAjwQ+3BHAW5Yp32T8ftwhmineo4HDgOcAlwfuCTwUuHvJ/EUkL9rJJK53QBRABXC9MeP1EpCABCQggYURmLoA7g88sUzb/nJOACN1RwJZB9gt7we+AzwASJYw08Q3Ak4q08C/BrJlNVPAzwJuU7KA9we2rTIyqaNbz/mzznDbtm3svHNcsH8ZcrfskDtlh+xXaA/Zt/6j65USkIAEJCCBYQhMWQB3LWIWQZtt3OhmAFcTwGPLxo4HrjIEHyobSXYD7gjkPJHXlDWEj17lNU8tGcWz/VoB/AMOBXCYN7y1SEACEpCABEJgygK4D3DU3AaNcwK/A34L3Bb4ALC9KeD5KDmoSN9dgbeX12cncCTw6WXzyEqRZQZwjfebAugHkgQkIAEJSGA4AlMWwEyzJkvXLZny/Trw3LLZI5tA7lV2COe6S5UjYGabQLqvvRjwmbIT+BTgHcAsGxjZTJZvz55D5xrAOVAKYM/I8TIJSEACEpDAAghMWQBXwtOdAs7vs74v07g5BiYbRXIm4EU6x8B07/Fm4BPAS8sPHwfsV3YR5xzArBt8SM8xUQAVwJ6h4mUSkIAEJCCBxRPY6gK4I/C8ssu3exB0joLplkwXZ4o3Gz8yfZxyPuD1wO1KZjBrCk/tOUQKoALYM1S8TAISkIAEJLB4AltNABdPcGN3VAAVwI1Fjq+SgAQkIAEJLICAArgAiBu4hQKoAG4gbHyJBCQgAQlIYDEEFMDFcFzvXRRABXC9MeP1EpCABCQggYURUAAXhnJdN1IAFcB1BYwXS0ACEpCABBZJQAFcJM3+91IAFcD+0eKVEpCABCQggQUTUAAXDLTn7RRABbBnqHiZBCQgAQlIYPEEFMDFM+1zRwVQAewTJ14jAQlIQAISWAoBBXApWNe8qQKoAK4ZJF4gAQlIQAISWBYBBXBZZLd/XwVQAawTedYqAQlIQAISABTAOmGgACqAdSLPWiUgAQlIQAIKYLUYUAAVwGrBZ8USkIAEJCABM4B1YkABVADrRJ61SkACEpCABMwAVosBBVABrBZ8ViwBCUhAAhIwA1gnBhRABbBO5FmrBCQgAQlIwAxgtRhQABXAasFnxRKQgAQkIAEzgHViQAFUAOtEnrVKQAISkIAEzABWiwEFUAGsFnxWLAEJSEACEjADWCcGFEAFsE7kWasEJCABCUjADGC1GFAAFcBqwWfFEpCABCQgATOAdWJAAVQA60SetUpAAhKQgATMAFaLAQVQAawWfFYsAQlIQAISMANYJwYUQAWwTuRZqwQkIAEJSMAMYLUYUAAVwGrBZ8USkIAEJCABM4B1YkABVADrRJ61SkACEpCABMwAVosBBVABrBZ8ViwBCUhAAhIwA1gnBhRABbBO5FmrBCQgAQlIwAxgtRhQABXAasFnxRKQgAQkIAEzgHViQAFUAOtEnrVKQAISkIAEzABWiwEFUAGsFnxWLAEJSEACEjADWCcGFEAFsE7kWasEJCABCUjADGC1GFAAFcBqwWfFEpCABCQgATOAdWJAAVQA60SetUpAAhKQgATMAFaLAQVQAawWfFYsAQlIQAISMANYJwYUQAWwTuRZqwQkIAEJSMAMYLUYUAAVwGrBZ8USkIAEJCABM4B1YkABVADrRJ61SkACEpCABMwAVosBBVABrBZ8ViwBCUhAAhIwA1gnBhRABbBO5FmrBCQgAQlIwAxgtRhQABXAasFnxRKQgAQkIAEzgHViQAFUAOtEnrVKQAISkIAEzABWiwEFUAGsFnxWLAEJSEACEjADWCcGFEAFsE7kWasEJCABCUjADGC1GFAAFcBqwWfFEpCABCQgATOAdWJAAVQA60SetUpAAhKQgATMAFaLAQVQAawWfFYsAQlIQAISMANYJwYUQAWwTuRZqwQkIAEJSMAMYLUYUAAVwGrBZ8USkIAEJCABM4B1YkABVADrRJ61SkACEpCABMwAVosBBVABrBZ8ViwBCUhAAhIwA1gnBhRABbBO5FmrBCQgAQlIwAxgtRhQABXAasFnxRKQgAQkIAEzgHViQAFUAOtEnrVKQAISkIAEzABWiwEFUAGsFnxWLAEJSEACEjADWCcGFEAFsE7kWasEJCABCUjADGC1GFAAFcBqwWfFEpCABCQgATOAdWJAAVQA60SetUpAAhKQgATMAFaLAQVQAawWfFYsAQlIQAISMANYJwYUQAWwTuRZqwQkIAEJSMAMYLUYUAAVwGrBZ8USkIAEJCABM4B1YkABVADrRJ61SkACEpCABMwAVosBBVABrBZ8ViwBCUhAAhIwA1gnBhRABbBO5FmrBCQgAQlIwAxgtRhQABXAasFnxRKQgAQkIAEzgHViQAFUAOtEnrVKQAISkIAEzABWiwEFUAGsFnxWLAEJSEACEjADWCcGFEAFsE7kWasEJCABCUjADGC1GFAAFcBqwWfFEpCABCQggalnAB8E5H+7l6H+CvB04D3lv3cAng/cAzgv8EHgwcD3yu8vDLwBuAXwTeBA4EudsHk5cCLwgnWGkgKoAK4zZLxcAhKQgAQksDgCUxfAvYGzgG8XZPcFHgv8GRAZfAWQaw4ATi8iF+m7dnldxC7/PriI5I2B65Z73QB4CXC9cu16RkUBVADXEy9eKwEJSEACElgogakL4EqwzigS+M/AacC9gbeWC3cBTgbuALwPeDfwTuCVwJWBzwI7AecGjgfuV3623kFRABXA9caM10tAAhKQgAQWRmArCeA5gX3LlG4ygJcsU77J+P24QzRTvEcDhwHPAS4P3BN4KHB3IJm/JwEXBQ7pORKZas7/ZuX8mWbetm0bO+8cF+xfdj/0mP4Xb/LKkw7fa5N36P/yIfuVVg3Zt/4UvFICEpCABCQwDIGtIIBXBz4J7Aj8tMhcMnuRuiPnxCzU3w98B3gAcIEyTXyjOEOZBv41EAuLCD4LuE3JAt4f2LbKsD21COXZfq0A/gGHAjjMG95aJCABCUhAAiGwFQTwPMBlgAsCdyvTtjcD9lxFAI8tGzseuEqIfAg4AtgNuCOQNNlryhrCR6/yGjOAa7zfFEA/kCQgAQlIQALDERibAJ4DiJzdpOzcPV9Zp/cF4ANlfd5m6eQ+2bmbdX/Z9bu9KeD5ug4q0ndX4O2lTdkJHAnM7uJsGOlTXAM4R0kB7BM2XiMBCUhAAhJYDIGxCGCOYHlkOYLlIuWolVOAXxRBuxqQDRqZno1ofWoT3Y/0ZaPHI4pc3gt4W7nfpcoRMLNNIN1qLgZ8BshO4LTtHcAsG7gPkGneZBX7FAVQAewTJ14jAQlIQAISWAqBsQhghOzTwOvL7tuss5svmXLNur1MzT6zTLuuBeXZ5cy/3D8bL/YHDgVuB2SqN8fAZBo3x8Bkd3DOBIyAzo6B6d7/zcAngJeWHz4O2K/sIs5xMVk3+JC1GlR+rwAqgD1DxcskIAEJSEACiycwFgFMhu+Ent3Lmr7I4Ld6XP9a4FZAMnvZoPFl4LlF/vLybAx5XhHL7kHQEcZuuW3JPGbjx2/LLzI9HWGNTCYzGDk9tUebcokCqAD2DBUvk4AEJCABCSyewFgEcPE9G/cdFUAFcNwRauskIAEJSGDSBMYsgOcqR7HcHMgZfh8HXgb8cgIjogAqgBMIY7sgAQlIQAKtEhizAGZ37RXLbts8eeM+5Xm8eW5v60UBVABbj2HbLwEJSEACDRMYkwDeBTiqwzLP792j85zdK5XdvznPr/WiACqArcew7ZeABCQggYYJjEkA3wX8puykzTErOZolGzf+pTx7N0/ayEaNWzfMe9Z0BVABnEAY2wUJSEACEmiVwJgEMAxzTMszgBcDbwSeDHTXAOasvdNahd1ptwKoAE4gjO2CBCQgAQm0SmBsAhiOmeLN0SzXKJtAvtgq3O20WwFUACcY1nZJAhKQgARaITBGAZyxu2nZ9fte4CnlqSCtcF2rnQqgArhWjPh7CUhAAhKQwNIIjEkAdy1P4rhKObD5McDpwJOAuwOHlKd6LA3GgDdWABXAAcPNqiQgAQlIQAJnJzAmATwO+GF5ukaevHF54E6luVcGXgX8V3n8WuvjqAAqgK3HsO2XgAQkIIGGCYxJAH8C7AmcCJyjPFt39zm2BwOvbpj3rOkKoAI4gTC2CxKQgAQk0CqBMQngR4DvAW8A/gJI1m/vVsGu0W4FUAGcaGjbLQlIQAISaIHAmARwN+AFRfyy8/exwPdbgLiBNiqACuAGwsaXSEACEpCABBZDYEwCuJgetXEXBVABbCNSbaUEJCABCUySwFgEcCfgZ+sgvN7r13HrQS5VABXAQQLNSiQgAQlIQAIrERiLAP4AeEnZAbzatG82hmRt4KOAjwLPaXhIFUAFsOHwtekSkIAEJNA6gbEI4B7AM8uxL1n/99my/u+XwIWAnA14A+DXRfyyE/ishuErgApgw+Fr0yUgAQlIoHUCYxHAGcc/AfYF8hSQHAFzXuBHwBeA9wHvBn7bOnRAAVQAJxDGdkECEpCABFolMDYBbJXjetutACqA640Zr5eABCQgAQksjIACuDCU67qRAqgAritgvFgCEpCABCSwSAIK4CJp9r+XAqgA9o8Wr5SABCQgAQksmIACuGCgPW+nACqAPUPFyyQgAQlIQAKLJ6AALp5pnzsqgApgnzjxGglIQAISkMBSCCiAS8G65k0VQAVwzSDxAglIQAISkMCyCIxRAE8CXlcOhf7usjpe+b4KoAJYOQStXgISkIAEtjKBMQrgw4ADgGsCxwGvBY4CfjWhgVIAFcAJhbNdkYAEJCCB1giMUQBnDCOABwH3AM4FvLlkBj/fGuQV2qsAKoATCGO7IAEJSEACrRIYswDOmJ4beDDwXCD/PgE4AjgS+F2j4BVABbDR0LXZEpCABCQwBQJjFsDI3l2AA4FbA58q08G7AA8t08P3bHQQFEAFsNHQtdkSkIAEJDAFAmMUwGsV6cvU71nAG4G/A77eAX5d4KPlWcEtjoMCqAC2GLe2WQISkIAEJkJgjAIY6Tu2ZPuOBn69AuudgJcWUWxxKBRABbDFuLXNEpCABCQwEQJjFMDdgP+cCN/VuqEAKoATD3G7JwEJSEACYyYwRgH8DyBTvKfPgbsgkB3Alxsz0J5tUwAVwJ6h4mUSkIAEJCCBxRMYowD+FrgkcOpcdy8B5GDoHRaPYfA7KoAK4OBBZ4USkIAEJCCBGYExCeCdSqOy7u++wLbOMJ0TuFXZDbzHBIZPAVQAJxDGdkECEpCABFolMCYBTOYvJWf7nWMOaDaC5BFxjwbe1SrsTrsVQAVwAmFsFyQgAQlIoFUCYxLAGcPvlDWAP2oVao92K4AKYI8w8RIJSEACEpDAcgiMUQCX09Nx3VUBVADHFZG2RgISkIAEthSBsQjgw4FXA78E8u/tlRdPYIQUQAVwAmFsFyQgAQlIoFUCYxHATPtepxz9kn+vVrI+0GNgBoq2kw7fa6CaYPdDjxmsrlQ0ZN8G7ZiVSUACEpCABHoQGIsA9mjqpC4xA2gGcFIBbWckIAEJSKAtAgpgnfFSABXAOpFnrRKQgAQkIAFgLAL4wnWMxqPWce1YL1UAFcCxxqbtkoAEJCCBLUBgLAJ4XE/WWQN4y57XjvkyBVABHHN82jYJSEACEpg4gbEI4MQx/5/uKYAK4FaLefsrAQlIQAIjIqAA1hkMBVABrBN51ioBCUhAAhIY0RrAtwMHpD1A/r29ctcJjJwCqABOIIztggQkIAEJtEpgLBnAI8sB0D8B8u/tlQNbhd1ptwKoAE4gjO2CBCQgAQm0SmAsAtgqv422WwFUADcaO75OAhKQgAQksGkCYxbAiwN7ANn5+03g1E33djw3UAAVwPFEoy2RgAQkIIEtR2CMAhg5ehmwP3DOMiJnAW8FHgJsm8AoKYAK4ATC2C5IQAISkECrBMYogG8D9gQeBnyyZABvCBwBfBnYr1XYnXYrgArgBMLYLkhAAhKQQKsExiiAPwNuC/zbHNSbAO8FdmoVtgK4+sjtfugxgw7rSYfvNWh9ViYBCUhAAhIYE4ExCuB3gfx1/vc5UNcA3g38yZgAbrAtZgDNAG4wdHyZBCQgAQlIYPMExiiABwP7AvcBflC6eEngDeWMwFdtvtvV76AAKoDVg9AGSEACEpDA1iUwFgH8QlnrNxuJKwA7AMkGplwG+BXwLeBaExguBVABnEAY2wUJSEACEmiVwFgE8LB1AHzaOq4d66UKoAI41ti0XRKQgAQksAUIjEUAtwDqs3VRAVQAt1rM218JSEACEhgRAQWwzmAogApgncizVglIQAISkAAwRgHM4c+PLOf9Ze3feeZG6sITGDkFUAGcQBjbBQlIQAISaJXAGAXw6cD9gBcCzwCeBewO7APkdy9uFXan3QqgAjiBMLYLEpCABCTQKoExCuCJwMOBnAz8k/JUkNnPrg/cs1XYCuDqI+dB0BOIarsgAQlIQALNEBijAOZJIFcuR8DkHMAcCv154HJAjou5QDN0V2+oGUAzgBMIY7sgAQlIQAKtEhijAH6jHAL9aeBjJRN4OHB34CXAxVuFbQbQDOAEYtcuSEACEpDABAiMUQAje2cCzwb+EvhH4KRyGPSLgEMnwN0MoBnACYSxXZCABCQggVYJjFEA51lm3d8NgW8D72wV9Fy7FUAFcCKhbDckIAEJSKBFAi0I4Ga4PgG4K3Al4BfAJ4DHA5lmnpU8cu75wD2A8wIfBB4MfK9ckGNn8hziWwDfBA4EvtR5/cuBbFJ5wToaqgAqgOsIFy+VgAQkIAEJLJbAWAVwD+BhZTPI74Cvl/V/XXHrQ+K9wFuA44FzlSNlrg5cBchmk5RXAHsDBwCnF5GL9F0bOKv8d/59MPAg4MbAdctrb1Dadb1ybZ825RoFUAHsGyteJwEJSEACElg4gTEK4Gzd32eBT5YeZxo40pUjYP5pExQuBpwK3Az4aNlRfBpwb+Ct5b67ACcDdwDeB7y7TD2/sghp2rUTcO4iljmzMD9bT1EAFcD1xIvXSkACEpCABBZKYIwC+B/Am4CnzPX0aUXUchzMRsufAt8CkgU8AbhlmfJNxu/HnZtmivdo4DDgOcDli3w+tOxGTubvScBFgUM20BgFUAHcQNj4EglIQAISkMBiCIxRAH8OXKNs+uj28gpl7d35Ntj1cwDvAC4E3KTcIxnFI4GsA+yW9wPfAR5QsoSZJr5R2Y2caeBfl+NpIoJ5UsltShbw/sC2FdqX+3frOH/WGG7bto2dd44L9i9DHph80uE5gnGYMmS/0qMh+zYMQWuRgAQkIAEJ9CcwRgHMlGumeSNm3ZLNF/sDt+3fvbNd+bJyqHTW8M02eKwmgMeWjR0PXKWuDwFHALsBdyz3fU1ZQ/joFV7z1JJNPNuvFMA/4FAANxjVvkwCEpCABCSwAQJjEcA7ddqeNXh55u/bgE+Vn2cN4L5ForIWb70lB0jnWcI3LZm92ev7TAHP13VQkb7sLn478AEgO4GTLku7s2FkvpgBXGPEFMD1hrTXS0ACEpCABDZOYCwC+NueXciO4HP2vDaXZdo38ncX4OZl/V/35XmsXDaB3KsIZ353qZIhnG0C6V6fTSSfKTuBTylTyrNsYAQzmb49e7TPNYBzkBTAHlHjJRKQgAQkIIEFERiLAC6oO//nNsnMZZr3znNn/2WdXs4FTMn6vkzj5hiYM8qZgBfpHAPTvemby1mCLy0/fBywX9mcknMAs27wIT06owAqgD3CxEskIAEJSEACyyEwdQFMxnClkvWEry+/2BF4XhHF7kHQOQqmW7L2MFO82fgxy1hmQ0ruc7uSGYxs5piZtYoCqACuFSP+XgISkIAEJLA0AmMVwJzT95jOQdBfK5L2saWRGPbGCqACOGzEWZsEJCABCUigQ2CMApj1eNkBnA0WHy/r+PIs4KzjyzRtpmFbLwqgAth6DNt+CUhAAhJomMAYBTDZvlcDL5rj+igg5+xduWHes6YrgArgBMLYLkhAAhKQQKsExiiAvwKuusJB0HmKR57ekTV7rRcFUAFsPYZtvwQkIAEJNExgjAL47bLe71VzXPNUjqwLzBNBWi8KoALYegzbfglIQAISaJjAGAUwj1r7W+B15ciV7OTN0zuy/u8RwLwYtohfAVQAW4xb2ywBCUhAAhMhMEYBDNps+Mgj1Wbr/Wa7gPMs3ykUBVABnEIc2wcJSEACEmiUwNgEME/5SLbvy8CPG2Xap9kKoALYJ068RgISkIAEJLAUAmMTwHTylyXzl6dqTLUogArgVGPbfklAAhKQQAMExiiAxwOHAh9sgN9Gm6gAKoAbjR1fJwEJSEACEtg0gTEK4G2A5wJPBj4H/Gyul2duutf1b6AAKoD1o9AWSEACEpDAliUwRgGcPWc3g9J9lu85yn9nnWDrRQFUAFuPYdsvAQlIQAINExijAN58Tvzm8X6kYd6zpiuACuAEwtguSEACEpBAqwTGKICtslxPuxVABXA98eK1EpCABCQggYUSGJMAnq88AWQf4NzAB4CHAz9aaI/HcTMFUAEcRyTaCglIQAIS2JIExiSAzwMeDPxDOQrmHsCHgX0nODIKoAI4wbC2SxKQgAQk0AqBMQngicATgbcUeH8OfBzYETirFaA926kAKoA9Q8XLJCABCUhAAosnMCYB/B/gssApnW7+ArgicPLiu171jgqgAlg1AK1cAhKQgAS2NoExCWCyfJcETusMyU+AawBTeyqIAqgAbu1PHnsvAQlIQAJVCYxJAHP+33uAX3WI7A18aO4w6LtWJbaYyhVABXAxkeRdJCABCUhAAhsgMCYBPLJn+w/sed2YL1MAFcAxx6dtk4AEJCCBiRMYkwBOHPXZuqcAKoBbKd7tqwQkIAEJjIyAAlhnQBRABbBO5FmrBCQgAQlIAFAA64SBAqgA1ok8a36rl04AACAASURBVJWABCQgAQkogNViQAFUAKsFnxVLQAISkIAEzADWiQEFUAGsE3nWKgEJSEACEjADWC0GFEAFsFrwWbEEJCABCUjADGCdGFAAFcA6kWetEpCABCQgATOA1WJAAVQAqwWfFUtAAhKQgATMANaJAQVQAawTedYqAQlIQAISMANYLQYUQAWwWvBZsQQkIAEJSMAMYJ0YUAAVwDqRZ60SkIAEJCABM4DVYkABVACrBZ8VS0ACEpCABMwA1okBBVABrBN51ioBCUhAAhIwA1gtBhRABbBa8FmxBCQgAQlIwAxgnRhQABXAOpFnrRKQgAQkIAEzgNViQAFUAKsFnxVLQAISkIAEzADWiQEFUAGsE3nWKgEJSEACEjADWC0GFEAFsFrwWbEEJCABCUjADGCdGFAAFcA6kWetEpCABCQgATOA1WJAAVQAqwWfFUtAAhKQgATMANaJAQVQAawTedYqAQlIQAISMANYLQYUQAWwWvBZsQQkIAEJSMAMYJ0YUAAVwDqRZ60SkIAEJCABM4DVYkABVACrBZ8VS0ACEpCABMwA1okBBVABrBN51ioBCUhAAhIwA1gtBhRABbBa8FmxBCQgAQlIwAxgnRhQABXAOpFnrRKQgAQkIAEzgNViQAFUAKsFnxVLQAISkIAEzADWiQEFUAGsE3nWKgEJSEACEjADWC0GFEAFsFrwWbEEJCABCUjADGCdGFAAFcA6kWetEpCABCQgATOA1WJAAVQAqwWfFUtAAhKQgATMANaJAQVQAawTedYqAQlIQAISMANYLQYUQAWwWvBZsQQkIAEJSMAMYJ0YUAAVwDqRZ60SkIAEJCABM4DVYkABVACrBZ8VS0ACEpCABMwA1okBBVABrBN51ioBCUhAAhIwA1gtBhRABbBa8FmxBCQgAQlIwAxgnRhQABXAOpFnrRKQgAQkIAEzgNViQAFUAKsFnxVLQAISkIAEzADWiQEFUAGsE3nWKgEJSEACEjADWC0GFEAFsFrwWbEEJCABCUjADGCdGFAAFcA6kWetEpCABCQgATOA1WJAAVQAqwWfFUtAAhKQgATMANaJAQVQAawTedYqAQlIQAIS2AIZwJsCjwWuDVwKuAtwdGfkzwEcBhwMXAj4NPAQ4Cvlmh2AvwPuDPwAeBDwoc7rHwfsCjxsndGkACqA6wwZL5eABCQgAQksjsDUM4C3B24EfB74lxUE8PHAE4EDgG8CTwIijXsAPyliF+nbF8i9IpOXBH4HXBZ4H3CdiPQ6h0QBVADXGTJeLgEJSEACElgcgakLYJdUpK2bAUz27/vA3wLP7WT8fghEDF8FvLzI3aHAeYGfAxcHTgPeW645agPDoQAqgBsIG18iAQlIQAISWAyBrSyAlwNOBK4FfKGD8x3AfwP3BR4A3Bu4NXDbIoSXBv4K+Etgnw0OgwKoAG4wdHyZBCQgAQlIYPMEtrIA3hD4OBChSyZwVl4N7FaE79wlQ3gH4EfAI4GvAscDtyhrB/cvInkQcMoqQ5K1hPnfrJwf+N62bdvYeee4YP+y+6HH9L94k1eedPhem7xD/5cP2a+0asi+9afglRKQgAQkIIFhCCiAsEvZ4DEj/pqyseN2qwzB60vG8DvAs4HrAdkMcjXgbqu85qlls8nZfq0A/gGHAjjMG95aJCABCUhAAiGwlQWwzxTwfJTcEjgcuAHwPOA3Rf6uCnwUuMgqYWUGcI33mwLoB5IEJCABCUhgOAJbWQBnm0BeBPxNQX4e4NTOJpDuSOxYMn/3LP9/BPDbMi28J/Bh4II9h841gHOgFMCekeNlEpCABCQggQUQmLoA/jHwp4VTNno8CjgOOAP4bhG9JwAHAt8C/hq4eecYmC7iTPdGEB9TfrhfyQLuDTy8nDPYd9GcAqgALuDt6y0kIAEJSEACGyMwdQGMzEX45ssbytl/s4Ogs9u3exD0CXMvyPq+HPeSTN/Pyu/+CHhp2RH8DSCZwW/3HAYFUAHsGSpeJgEJSEACElg8gakL4OKJLeaOCqACuJhI8i4SkIAEJCCBDRBQADcAbQEvUQAVwAWEkbeQgAQkIAEJbIyAArgxbpt9lQKoAG42hny9BCQgAQlIYMMEFMANo9vUCxVABXBTAeSLJSABCUhAApshoABuht7GX6sAKoAbjx5fKQEJSEACEtgkAQVwkwA3+HIFUAHcYOj4MglIQAISkMDmCSiAm2e4kTsogArgRuLG10hAAhKQgAQWQkABXAjGdd9EAVQA1x00vkACEpCABCSwKAIK4KJIru8+CqACuL6I8WoJSEACEpDAAgkogAuEuY5bKYAK4DrCxUslIAEJSEACiyWgAC6WZ9+7KYAKYN9Y8ToJSEACEpDAwgkogAtH2uuGCqAC2CtQvEgCEpCABCSwDAIK4DKorn1PBVABXDtKvEICEpCABCSwJAIK4JLArnFbBVABrBN51ioBCUhAAhIAFMA6YaAAKoB1Is9aJSABCUhAAgpgtRhQABXAasFnxRKQgAQkIAEzgHViQAFUAOtEnrVKQAISkIAEzABWiwEFUAGsFnxWLAEJSEACEjADWCcGFEAFsE7kWasEJCABCUjADGC1GFAAFcBqwWfFEpCABCQgATOAdWJAAVQA60SetUpAAhKQgATMAFaLAQVQAawWfFYsAQlIQAISMANYJwYUQAWwTuRZqwQkIAEJSMAMYLUYUAAVwGrBZ8USkIAEJCABM4B1YkABVADrRJ61SkACEpCABMwAVosBBVABrBZ8ViwBCUhAAhIwA1gnBhRABbBO5FmrBCQgAQlIwAxgtRhQABXAasFnxRKQgAQkIAEzgHViQAFUAOtEnrVKQAISkIAEzABWiwEFUAGsFnxWLAEJSEACEjADWCcGFEAFsE7kWasEJCABCUjADGC1GFAAFcBqwWfFEpCABCQgATOAdWJAAdxCArj7occMFmUnHb7XYHVZkQQkIAEJtEtAAawzdgqgAriUyFMAl4LVm0pAAhKYHAEFsM6QKoAK4FIiTwFcClZvKgEJSGByBBTAOkOqACqAS4k8BXApWL2pBCQggckRUADrDKkCqAAuJfIUwKVg9aYSkIAEJkdAAawzpAqgAriUyFMAl4LVm0pAAhKYHAEFsM6QKoAK4FIiTwFcClZvKgEJSGByBBTAOkOqACqAS4k8BXApWL2pBCQggckRUADrDKkCqAAuJfIUwKVg9aYSkIAEJkdAAawzpAqgAriUyFMAl4LVm0pAAhKYHAEFsM6QKoAK4FIiTwFcClZvKgEJSGByBBTAOkOqACqAS4k8BXApWL2pBCQggckRUADrDKkCqAAuJfIUwKVg9aYSkIAEJkdAAawzpAqgAriUyFMAl4LVm0pAAhKYHAEFsM6QKoAK4FIiTwFcClZvKgEJSGByBBTAOkOqACqAS4k8BXAxWHc/9JjF3KjnXRy3nqC8TAISWBgBBXBhKNd1IwVQAVxXwPS9WJHoS2r71ymAi+HoXSQggfESUADrjI0CqAAuJfIUwMVgVQAXw9G7SEAC4yWgANYZGwVQAVxK5CmAi8GqAC6Go3eRgATGS0ABrDM2CqACuJTIG1oAhxSlIfs2ZL8SCEP2bSmB500lIIHmCCiAdYZMAVQAlxJ5Q4vEkKI0ZN+G7JcCuJS3gjeVgATWIKAA1gkRBVABXErkDSlJ6cCQojRk34bslwK4lLeCN5WABBTAUcaAAqgALiUwh5QkBXBxQzj0uC2u5d5JAhJolYAZwDojpwAqgEuJvKFFYshM2ZB9G7JfZgCX8lbwphKQgBnAUcaAAqgALiUwh5QkM4CLG8Khx21xLfdOEpBAqwTMANYZOQVQAVxK5A0tEkNmyobs25D9MgO4lLeCN5WABMwAjjIGFEAFcCmBOaQkmQFc3BAOPW6La7l3koAEWiVgBrDOyCmACuBSIm9okRgyUzZk34bs19AZwCH7NuSYLeUN5U0lMGECCmCdwVUAFcClRN7Qf3CnKhND9ksBXMpbwZtKQAJOAY8yBhRABXApgakALgarArgYjkPH42Ja7V0ksDUImAGsM84KoAK4lMgb+g/ukKI0ZN+G7JcZwKW8FbypBCRgBnCUMaAAKoBLCcwhJSkdGFKUhuzbkP1SAJfyVvCmEpCAAjjKGFAAFcClBOaQkqQALm4Ihxy3IeV2yH5NOR4XF2neSQJ/IOAUcJ1oUAAVwKVEnn9wF4N1SEkyA7iYMVMAF8fRO20NAgpgnXFWABXApUSeArgYrArgYjgaj4vh6F0ksAwCCuD/Un0w8FjgUsBXgEOAjxXgLwQOAH4KPA54S2cg9gPuDey9zsFRABXAdYZMv8v9g9uP01pXKYBrEer3e+OxH6e1rppyPK7Vd3+/PAIKINwdeGORwI8DDwDuB1wFuCbwGuCOwBWA1wF/ApwOXBA4HrgV8N11DpECqACuM2T6Xe4f3H6c1rpqyn9wh+yb8bhWpPX7/ZBjlhYNOW5D9m3IfvUb2bpXKYDwaeDzwIM6Q/E14Gjgx8C1gP3L735YZDDi92og171oA0OoACqAGwibtV8y9AfcVD+8h+yXf3DXjuu+Vww5bkO+14bsl/HYN9rWvm7IcdtIPG51ATwP8HNgX+CoznAeAewJPBt4GXBd4HLAccBuwFWBvwWuB5y1dhiwA/z+f7NyfuB7J598MjvvHBfsX6522Pv6X7zJK0942m03eYf+Lx+yX2nVVPs2ZL/CcchxG7JvQ/bLeOz/ObHWlUOOm/G41mj0+/1Ux6yFz8cI4K677pqmXgA4s9+IrXzVOTbz4kqv3QU4BbgR8IlOG/4auC+wB/BU4F7AL4CnAMcAnyvrAm8APAz4EXBwWT+4Uldyj8Mq9dFqJSABCUhAAhKQwGoEsrQtLrTh0rIA3hD4ZKfnTyybO660Ao3IXGz5SOD9wNXLtPBDgWuvQm8+A5jLLgycsWHa/V/4+2xjWbv4k/4va+JK+9bEMJ2tkY5Ze2OWFk913KbarymP2ZT7ViMeU+f3gd9t5qOpRQFcawr4ZnNAIoT/CvwZcBBwYyA7gXcqu4Q3nUbdzACs8trfrzdcRIp3CW3b7C3t22YJDv96x2x45ouocarjNtV+Zczt2yIif9h7NDtmLQpghjabQDKlm6NgZuWrwDuAJ3R+lv59BHg+8E7gkcBNgbuUHcHZMHIh4L+HjZc1a2s2oNbsmR9wPRCN7hLjcXRD0qtBUx23qfZLAewV1qO7qNl4bFUAZ8fAPLBMA2ct3/3LRo//7IRHfn4b4C/Lz/4cOBbITonbl59nc8jYSrMB1QOkfesBaWSXOGYjG5CezZnquE21Xwpgz8Ae2WXNxmOrApjxT/YvhzznIOgTSnbvo53AuETJFGatYObKZyWbQh4BnFo2jXxmZMGU5mT9YTKZzwF+NcL2baZJ9m0z9Oq81jGrw32ztU513KbaLz/7NxvxdV7fbDy2LIB1htpaJSABCUhAAhKQQOMEFMDGB9DmS0ACEpCABCQggfUSUADXS8zrJSABCUhAAhKQQOMEFMDGB9DmS0ACEpCABCQggfUSUADXS8zrJSABCUhAAhKQQOMEFMDGB7CB5l8ByE7sS5ZTy39YHuH3rQbabhMlIIFxEDgncNHyGXJ6z+e5j6PltmKKBGbxeFZ5rGyTfVQAmxy2JhqdJ6z8PbB3eapJjt1JvF2snHafp7PcZ7MPs65I4rrAIavI7YuAz1Zs22aqzvMlH7RKv14JnLyZm1d+7ZT7NtV4zKH9jwGuA5yrxM9vyvvrecDRlWNqM9VPdczCZKp92wt4PJAzhc9dBj+Pa83fszyO9rubCYihX6sADk1869QX+duzHNCdJ7d0y/WAVwNfLGcxtkZlH+BtwAeB9wHJaua9dPFy8PityuMG82Salkoek/ieInl5Zna3X7cGdi0HqH+8pU6Vtk65b1ONxwcALwZet8L7LIf5Hwg8DHhNg/E41THLUEy1b/cGXga8Fvhlib8jgTx8Yv/yIIrMdjUzu6UAju+T4yZAPvguX55UcgqQwPsO8G/ja+6qLcrj9fIhPS9/sxdcH3hveSRfQ936fVNz8PibgMNXaXi+ISa7OcanzGyP9fElxvLIxJVKMpsRqXy7b61MuW9Tjcdvl8Pw8wd3pZJnuyfrks/K1spUx2zKn49fA54KvLUEW7LSRwGXKUsT3gKcB7hrK8GoAI5rpO4GvBH4hyJ9VwH+ozz15I7AHcbV3O22JgKYx/Ct9qSVZAGTPbtgQ32aNTXf/q4BfHOVtu8BfAnYsbG+/aJkbb+xSruvBHwBOG9j/Upzp9w347G9gJzqmGUkptq3nwP5m3xSJ9x+DexWnjaWaeH8TbtQK+GoAI5rpPLHNVmWTJ9mXcE1iwBmKjXZsmykaKVEZCNJ/2+F9XD55pRpm38vmbJW+jRr51eANwB/s0rD84jCA8qHRUt9y5eNZwCZ1lipZMrtycDlWupUaeuU+zbVeMw62o8Aj14l3l4A3KysD2wtJKc6ZhmHqfbtq0AeJfvPJdiuBXwSOF/ZlPSnZVnTH7cSjArguEaq+w2jK4D5g5vgaymjlMzeP5Zp4GQDswnkd0Ce0ZwNIvmmdE8gv2utJFObdH/Wyc3WyqVvEfSslUvmM2tC3t5Yx/J87XwBiZwfW9YAdvt1v7LxJZtBWitT7ttU4zFyd0xZY7XS+yyZl8yKfKy1YASmOmYZiqn27SHAs4BXlSxnPg+zZjr/n/JX5ctKxLCJogCOa5hOLOv/PjCXAcx6skMbzCiFbqYNb9DJXv5X+db09XGhX3dr0qdHrNK3I0of133TEbzg7kDWAF4byFEHKTnq4HPAC8vmlxE0c0NNmHLfphqPu5dd6VkzPJsBmX2G5ItIdzpuQ0FR8UVTHbMgnWrfckLCvYAdShIjMyaZ8k7JkWf5zGzmb5sCWPHdv0LVmTq8L5DFzcnA5NttvuUmK/N04KXjaq6tmTCBHHGQc9dSfgRkrctUypT7NpUxsh8SkMCSCSiASwa8gdsnxZwMzGy691fA88vaqw3cbrQvyULZnBGY9Y4WCdQicPOyUz2bRCzjJ5AsS3Zd5uiN7BK2tEMgy3/iHMngtlyS5cusyKxk88cflQ1y+XvdTFEAxzlUWVSa3UYJqqz9++k4m7mpVmWDy+c704ybulmFF+dA0BxSe0bZNJEjAmYlcvsvwC0rtGuzVWY9S44i+nDpV6ZNc/RBpjyyseewzVYwstf/T9ls1R2/kTVxzeZcsZw9lvWaKTmqJ4cnR5Z+ALwEaO1MyvQjy15yisCHys7KLL6/Relj+pp1gfdodB1x1njnLNEccfOJNUe4rQsuXNYRZ7Pfu4CHl3VzmdnKuOVosKwTTGy2VLIcIeu6s7kxa9gTe/mcz7mvKTmq7fbbOR1idH1VAEc3JJNp0M5r9CRvouzwm60za6nj2bySzGV2ZmdDSz7oIk45vicl33S/32Df8mSTZ5YPt6zhyaGnyUZnCUK+jGQ3ZpYp5BDv1kq+bKxUssM+a3Zm63iaWcDd6UyyEZcqG62S0cwB5dk88Skg/ckXlSwnyR+tlkqyfJkl+HIRiqxLzakCkfUctZQ1gNlxOluE31Lfflu+3OeLfo5d+rvyBSub5VovObg7Z4Vms8RfAj8uJwdkI1b6nTXSGcMsd2qp5AtIlsVkRi5n8166LI3JmsD0K6cnZCYh77cmigI4rmHaqXzrzTeKPFUif3S7paXjN/KGmGUkVqKc2MvvWxTAyETe7MmspORDLv8dgco3+lYFMB/KWdT8ZuDPSvblgaVP6WeOgclOuAhvayVrGLO5KlI0K4nBHGsTkZj94X1aax0rf3yyQSJ9SB8jFBmnWXlOebRfdtW2VCLlEb2IYLIrEYaPdjoQIcwjuHZpqVOlrfl8zJhF3COw+VKZ40OSMYsM5svl9j4/x9zlfPnNZ2Iym/ksTKYvDwXIuvaUG5XDlPNoxpZK3l854SFPsMoX/4jtTTsPaMiXrXe3dFybAjiu8MuxKfmQzlRb3jTzHwD55tRK2Va2zK/2JJBMT+UbYosCmCn5q5c/SrPxSOblnSVDltPhW8wA5hii7NqePc8yf4DzRzZZlpScc5UnajRz0GnnzZI/Ojm7MVnaSF7+AKdEDLMcIUstWi0zmcgfqMRdMhDd912yTBGn2aaeVvoZkX1UyWbmHMdkWrrTpcneZhYhf4xbK90xS9vzBIlMiybDmWnujGO+VObcudbKz8oSpoh7SpZZRI7y9JOUy5YzYJs5L6+0+8zyWZEvI0nOZL1fvgzn0P/Z52OSA2vNfo1mPBXA0QzF7xuSM/GytqzFZ63OkzyunJG02mHJ+aObg6/ns5zjGpGVW5MP5zzup5tNypWR93yDj6g/oUG5zW7frP+brYc7uawnm32QRwAzZudvYZBWaGM+mPOlI5n0ZFxy7NJUBDBfqE4r4xORSJZiVjJu+SOVGYaWStYxZt3Yncr/klXK1FvGLRKRqcbE7L4tdaq0tTttP9/8rDWLCCbjmQ0vrZXEXs4SzRKSrInLo9OyjjjHSKVkViEZ6nyJbqnk0Odk2DNrkNmQZNYj6fmsT8nP79zSDIkCOK7wyzeLrNVpeUH6jOj9yyPD8jD3lUqmBvJB0OKU29HlD+pKGyKSCYwE5nFprWU386zpTGvPnnU5P255HGE+9Fr74J7vRz68n102tORopWSSWs8AzmYL8pme9173+bn5o/Q8IJtFWiv5/MjnRKQvYpRM2W+Ac5VNZFkj2OKu0vkM4ErjMlsm09qY5UDkZNvz9yzTvMncZhzz+ZJ+58tzMrsRxJZKprHz2Z+kRQQ+/53p+sx25b+z7jFfLLO5p4miAI5rmPJGyYd1vvllOs4yTgLJ9N2wyNBKLYwEZgwjGi2VTJNm+qabPeq2P4u48+E3hfMokzHLdHCmcK7WuADOr+3L8pHuc6pzYHnEKRLYYrkykC8fydwm/tK/zJIkG9PqOrl8ecx4TPVzPjvR87z3TNknc5ZlCNnVnRMusm4zgthiSeY509l5TGFmRpLISDYz/crGq8x8NVMUwHENVabXLl/OSsoJ9/OH77a4Q3FchG2NBP5AIDKR6eys7WlVJBxPCUhAAhsioABuCNvSXrTWGWstTpcuDZY3loAEJCABCUhgYwQUwI1x81USkIAEJCABCUigWQIK4DiHLkdvZN1LpqWyOD1TwxYJSEACEpCABCSwEAIK4EIwLuwmOfz5LUA2EeRImIxPzrjKwtL9yzEPC6vMG0lAAhKQgAQksDUJKIDjGvccv5FNIDnranYUTHZPZcdUHnyeZw+2WHIcyj6drGb6lmeTdh+o3WK/um3OcQfJ2J7Sekfm2j/7jJjiJgn71l6wTvV9lpGYct+m+l5reswUwHF9AOY8ob8oT1votuzPy4PPLziu5vZqTQ6hzfb4vFFysn9iLueR5ZDhHHqd871aLdlF+qTyjNzZqfZ5yPsLylNQZk+baLF/9wEeC+S4lJQcK5JjK/KUmtaLfWtrBKf8Ppty3xJlU3yvTWbMFMBxfRBGHvIkhvlz2PJc1jzyqJlHzHSw5tmIibMcDnpG+flFgDeVQ0Ejga2WHIqcE/uzezvnkqWfOUsvp97nJPwnNtqxHNKaZwLnvL9uv3LeVYT3RY32K822b+0N3lTfZxmJKfdtqu+1yYyZAjiuD8NMiybLl6nePG4s5dLlwNo8eDrP+Gyt5GDh65dnP3bbnkfBRS5aex5ktw8ZozylIM8A7pYc5v3yMnatjVfamxP8I7V/P9f4HG4duc1hqK0W+9beyE31fZaRmHLfpvpem8yYKYDj+jDctayNy5MJMkWadVe7AV8ua+jys9ZKsn45xb/7EPf0IZmynAh/4dY61GnvL4FrzD11Ib/eo2Rx8zi4Fkv6lRjMutNuyXTwvwM7ttip0mb71t7gTfV9lpGYet+m+DkymTFTAMf5YZh1gDkGJuOTY2DyyKNWS7JIeYJJpko/UzqRRwRlivRzwAGtdgz4dPnfw+f6kOfp5rmQyXy2WE4A3lyel9ttf6Z/7974s4DtW3sROdX3WUZiyn2b6nttMmOmAI7vw/BWQP6XI2Gy2LRbDhpfc9dsUaa0s4s5D22fPdouD3LPtGmelZvjbloteQZrNrh8tzzvMhnbPCM4mdw7AB9rtGN3A7IjPV88Mk2ffuXZnonL/YCjGu1Xmm3f2hu8qb7PMhJT7ttU32uTGTMFcFwfhll39ZTyoOk88Hz+6I0W1wDOCGc3cDerOT+9OK6R6N+aXcrDwK/Uydhm/d9sDWf/O43ryhxG/si5Mcvu5ikcSm7fxhVrfVoz1fdZ+j7lvk31vTaJMVMA+3z0DHdNpO9xEzlqY0YtQvt84OdzGLM+LseMPH04vAuv6TKdtZrzN8/vkhm0SEACmyMw5ffZlPu2uVEf76snM2YK4LiC7HQgZ/61fDbePNEc9nwp4NS5X+QomPwsh0S3Wqbat6n2K3Fm39p7tzlm7Y3ZlN9rk4lHBXBcb6znAj8tZ7CNq2Ubb00OQ77ECo+xu2VZZ3axjd+6+itX61t2bmfzzk7VW7ixBqRfl1xB2jPtkS8nre5uDg37trGYqPmqqb7PZvG40udj658hU36vTSYeFcCaH2v/t+4jysnpOfYl/5ttmphdmYM1Wyk5tzBrGPMs4zPn1jMm65fz/15Z1s+10qdZO19Y/vGIspu5O72dvmWXc74l5qiblspsN3MOen5y+TIya3/6dVNgdyAHk7dW7Ft74zbV91neO1Pu21Tfa5MbMwVwXH/GjttOcyJTyZq1UnJocOLrdcAhQB5zNyv/A5xUds620p9uO2fjlN1gnwTSn/m+Zd3jtxrrXA5uTUn24Xtzz2qejVnWdOYYhNaKfWtv3Kb6Pst7Z8p9m+p7bXJjpgC29mesvfZGknKUyG/aa/qaLT4SSBYwGc4plXzQ3RVIFndqxb61N6JTfZ9lJKbct6m+1yYzZgpgex+GtlgCEui2AQAAEQNJREFUEpCABCQgAQlsioACuCl8vlgCEpCABCQgAQm0R0ABbG/MbLEEJCABCUhAAhLYFAEFcFP4fLEEJCABCUhAAhJoj4AC2N6Y2WIJSEACEpCABCSwKQIK4Kbw+eJNELh8OUOvpaNtut3NIc/3BG5YDk3OMT0/LDue/xH42SbY1HxpPhP+YpV+fXCF51PXbOt667Zv6yVW//qpvs9Cdsp9m+p7bVJjpgDW/4Dbqi24JvD5Rh8FdxXgWOB8wEeK+OW9dHEgx95E/m5TngbS0vheGngXcHXghLl+XQ34EnAn4JSWOlXaat/aG7epvs8SklPu21Tfa5MbMwWwwb9kjTR5dhr8as3Nh8RjGhXAnG/1X0AOu+4eAp2+ngd4fXn+8S0aGatZM99RntByL+AHc23P85zfBPwE2KexfqW59q29cZvq+yzxOOW+TfW9NrkxUwAb/EvWSJPzvMRIxLwgzZofUcrzZvOIsdZKHv12ne1k+JIt+0zJELbUtzyHOo+vS6ZvpZJHwH2sSGJL/Upb7dv/Pn6xpTLV91nGYMp9m+p7bXJjpgC29HHYVlvzOKDHA29bpdl7Ap9rVAAzBfrgklVaqXvJkL0MSJazpXIasF/nMVXzbc96zbcCF2upU6Wt9q29cZvq+ywhOeW+TfW9NrkxUwAb/EvWSJP/GTixSOBKTc4awC8Af9RIf7rNfGp5vvEzy1rAbP7IJpBkNG8N/DXwt8DTG+vbS4A7A48q/Zo9v/kCpV8vAI4uj79rrGvYt/99bGFLZarvs4zBlPs21ffa5MZMAWzp47CttmbBbDZJfHaVZp8b2AX4z7a69f+3NtnN/EGN9EX+UvJ+ytrAyN/fNNivTMsfARwEnKszfZ+f51nOry3iu9q0/pi7bN9WX44x5nGb4vtsxnuqfZvye21SY6YAjvmjz7a1QOCyRQLT1shfpr5bLzsD157rV6brz2y9Y4B9a3MQp/g+m43EVPs25ffaJMZMAWzzw9BWS0ACEliLQD7fZ9npta719xKQwBYjoABusQEfUXefXTJMmW6cWtkVeFqZSm2tb+ct2b8zVtjlvGPZJPL3rXWqtPfKwPWBTwJfB65UpvF3KEfcfKjRfq3W7EzVZ63t1ybSrwuVo5euUE4YeANwcqN9y476/+7MGOTopQcBlynLYl4KvKXRvmUNYDb/5cSAqZWHlRMgjil9vDfwhLKW/e3AU8pymSb6rQA2MUyTbGQ+vCNKrT4JZHuD0uoh11cE3l/+CCVzlA/wPO3k+6Wzlyj/bvHontuVXds5oiJrU+8CRGRz5E0+B3OA922BFiXwhasEY9ao5uzG08vvs7mnpZK4y6HkaX+m3D5RGv/vQGT+/EXoI/OtlRyC/+iy4/5+wIvLk5Ei63sA+VnG73WtdQzIEWD5/MgmwKwbzmd9lse0Xp4MPLZ8Rua4rKz1zn+/qPT5kcArgMNa6agC2MpI2c4xEcjTMLZXLgdkx2xronRU2fxxIHBBIGKRMw1vDnwXaFkAIw+RuycB+wMvLx/WTywD+SzguuUJLmOKtT5tyR/ciGwySt0Sqc0mrDyZJn+QW/uylX5lk9WpQB6vmH/vVc7QS9Y2Jw38Eti3D6SRXZMxicTmfRUZfCXw6k4b88UrsXnVkbW7T3MybjkNYW/gr4CcIvCeIrjvLrLU5z5juyZCG+FLpi9f8rMuOg8D+IfS0HypzOa/ZKibKApgE8NkI0dGYPYNd3vvn/zBbU0Ac5xNngOcDMus5DzDOwJ5qkn+aCUr01q/0pccaZONLd8u0zW/Aq5X/vjm9xHdD3Q2vows5LbbnExB3b9kjboZzF+XP1RfbakznbZ2BfA/Vuhfxi8SmJmE1sqPSsY5EpH3XR4d2T2APc9Kz/sw2erWSnfcctpDxChLffLZkr7mSUlHlvdiS33LQdBZNhJpT8kSi0zlf6X8925l2UyeF9xEUQCbGKZmG/knZV3LDTvHpeQDINmYfONtdf1ODgR9SDkTb6XBafWQ6+zyzR/V+TVjWdOTw62TlfjwBAQwY5ZH2uVbfMQiJR/emUrMGsgWS7KXme7917ImKfI3BQFM1jkHC+c9F0ma/bHNGO1exixrU1srbwTyJSRTvVkv9w0gU4yzEqm/B3CN1jpWMnyzzG23+VnfGBE8oEh7a18k81mRBwC8t2T58nmR2YR/Kp28Q3kAQJYrNFEUwCaGqclG3rik/SN5WVcW8Uu8XbxMD+Rb++2BjzfYu3cCXywLfldqfquHXOfxdZG9/HGaL1mUnumcHO3Q2gd3+pLsSs7wyod3SjJ++QDP+YYpidesCcz0faslj3pLxjZfQLKpINml/LvlDOAJZYwyrXYfIMsUZuWmwJuBfNFsreQM1Hz2JZuUafpsAMl4zdYAZrNSMmeZMm2tdDOAK7U9fweSDTy2sY7l4P+Dy1riW5VNOvlMfE5ZYpEp+2Skm1lrqwA2FoENNfd44N+ALIxdqWThbP7oJnPRWrkJkDT/TCbm25/f5VnBH2msY8k6pG/5JrtSybq5Bzb69Ja0O19GsntvpZI1gMk2JSPTeklWIgvU88i+bKJoVQDnF9N/CnhfZ3CeV+QvmbIWS9bZHlrWyuWLR56KlOenRwzz+bjaIfpj72vOQs3n32zz0djb27d9+eKb8Yqc52/bc0sGMOv+MlWf7PtDy1KZvvesep0CWBX/pCv/Rck+ZGpjpZK1FHkUXKtTbpMePDvXPIFkxbLmMesas3bTIgEJSOBsBBRAA2JZBLJe4hllse9KdWSnada8tDzltix23lcCEpCABCSwVAIK4FLxbumbZ7FspjFeU9Z6ZA1gdsZmcXCOCMhU2yFlM8iWBmXnJSABCUhAAkMTUACHJr616rt7WQOYqajZxoGzymLnnDGX3W8WCUhAAhKQgAQGJqAADgx8i1aXs6AuWvqe869yPIVFAhKQgAQkIIFKBBTASuCtVgISkIAEJCABCdQioADWIm+9EpCABCQgAQlIoBIBBbASeKuVgAQkIAEJSEACtQgogLXIW68EJCABCUhAAhKoREABrATeaiUgAQlIQAISkEAtAgpgLfLWKwEJSEACEpCABCoRUAArgbdaCUhgYQQOKM++zbNVl1VOKnXkGbstlY+Ww9bfPHCjdwC+BdylnPs5cPVWJwEJrEVAAVyLkL+XgASWReD1wH3LzXNA+PeBY4C/Bn68jkrzPOnzA6eu4zXrvbSvAOYZvHkMYv6X5113y+7Ad4A/A74497ujgf8GIrMpHwZuBjwBOHzu2ncDtweeBjx1Ox25I5AD19OO3663wwu4/uHAnYC/WMC9vIUEJLBgAgrggoF6OwlIoDeBCOAlgDwX+lzAVYDXAR8D7tH7LsNc2FcAn1SE66alDx/vNG+9ApjnZP8C2KNzj12KXJ4BvHoNAXw/cBzwnGEQ/Z9aLlKkfk/ga5XaYLUSkMAqBBRAQ0MCEqhFIAKYadt9Og14QcmCRR5m5VFFEiNEEZ9/BR4H/LRcMD8FfM0yXXud8vzpTEU+APhsuf6GJat2XSBPpjmqZNp+Vn5/ceC1JXP1X0Ck7lk9poDzefptIM/BvgWQ+xy0CQH8KrAfcGdgJpLJjl4fuAyQrOFqGcA8eScZ0asDX+m0Ic/jfiCwN3BL4D9LG08D/g4Iky8D9wJOLK9LHRmjF5f6Lgy8EXgo8Ggg4/NHwBGFUzeeIqAR+qfUCjLrlYAEViagABoZEpBALQLzAhjBi9xF/i7ZadQhwJeAZOEuC7wc+FARrVw2L4AnAF8oMpKp5WSgvlnuESH6BPDkMt18MeCl5XfJRKZkinVX4GDgf4r4ZNo28rW9NYARqn8AMg2caddPA5cCflLuu94MYKaJ8xm9E3C/co/0I/IbKdueAEbY3gTsPDf9GwE8pUhb7v/cwidT1n8DfLdkYTMdnWnmlNQV0XsvcBhweeCfS3Yx7XkZEKlO9vYGwKc6Y5f7/3kR4lpxZr0SkMAKBBRAw0ICEqhFIAKYTNMvgXMCO5aGJKP0ou00al/gFZ3nS88L4JnAw4A3rHCPvy/TqskIzsqNgY8U0Upm7RslyxaBS4nMZQrzkWsIYOQvWbdclxLBilwms5ayEQGMVP1bEclrA/9UBPP4NQQw0hwGkbVuiQA+swhwfp5s4ieB/1cELj/bHzgSyNrKlAjgY4uUz2Q2Mpip6dx/tr7w60DGtLtmMesAwyPibpGABEZEQAEc0WDYFAlsMQKRhUsDDwLOV7JcVwSyeeE3HRaZTk32LWsEk9HKesHI4h8DmbadF8AIyxOL1H2gSNNsOjPToX8K/Lpz/3wOpv7cP/Unu5X7J3s4K9mUkk0Xq2UAM5X9AyAy+bnyoscAdy3ZsY0KYEQu98v0azhkyjr3jVxuLwOYzSOR66uuIICZVo5IpkTMkv1Lli5SmZJ6kmG9ABCZDs9Id/deketMM+/VuX8kOm2NwM/K/YtwZq2nRQISGBEBBXBEg2FTJLDFCKy0BjBrxpLxyhRtym5AMkuvBN5a1gBGsrJG70KdnbMRs+4xMBG5yEmmMbObNlmtrPVLJu/YIlTzuDP9eYciRznGpLtzdi0BzLq/TIV2pTGfr1kbF3HKer60N2sYb17ktFt/dv1mmvsR5Yf570heBPAhZbd0BDWilnutJYARrwhrNo10SzKAOZol8piyUlYy7cs4zPjO1gBmKn1WVhq7bptn1z0euDdwtS0W23ZXAqMnoACOfohsoAQmS2AliYh8vKdMLeZYmLsBbwG6QpZNGc9YQwC70P6xTO/mSJJM02Z94a1WoZppzQjn9YDPlGtmP9veFHAyX5Gm9Klbkrn7fMna5eeZIs5au+d3LspUa+Qz6+uyvjGlK1MRsbCIIGbKNmUtAcwGmLQ/6ym7R+oMLYDZLJISCbRIQAIjIqAAjmgwbIoEthiBlQQwCLJbNxsJsss0Wads6EgmLBtEblSONcnU8UoZwMjU88o0bs7cy4aMTFf+C5Bs1DXKvbPG7TVlCvnKwK3LmrnUHwFN5iybQDIVnexi1t+ttglk1sbcJ/LYLcnEZQdx2ptp52zgOLRk+rIZJX1Iu5LVjGhmynVeAPPfyW7m9bOdymsJYNZURhqztu9dnQYNLYDZuJNs7kwEt1iI210JjJeAAjjesbFlEpg6gdUE8J5lE0LW6p1cNhFkE0IkKE+2SBYvmzlWEsDzFOGLKGbdWdbMvb1sYshmk5QcdRIpy47VfAZmfWCml59dfp8MYTZu5ADjH5ZjYJJxjAiutAbwJeVIlfn1drlddhlnbWDW3aUdmRLOMSzZhJINFNltG9mNFOYImVlZaTq1Gw9rCWCuzfl/meLtnqk4pACGb3ZUR6ZznqFFAhIYEQEFcESDYVMkIAEJLJBABDibXpK9zHl/Q5dsNEn2dibWQ9dvfRKQwHYIKICGhwQkIIHpEsgh0tl4ksOYhyxZs5msbQ72Nvs3JHnrkkBPAgpgT1BeJgEJSEACEpCABKZCQAGcykjaDwlIQAISkIAEJNCTgALYE5SXSUACEpCABCQggakQUACnMpL2QwISkIAEJCABCfQkoAD2BOVlEpCABCQgAQlIYCoEFMCpjKT9kIAEJCABCUhAAj0JKIA9QXmZBCQgAQlIQAISmAoBBXAqI2k/JCABCUhAAhKQQE8CCmBPUF4mAQlIQAISkIAEpkJAAZzKSNoPCUhAAhKQgAQk0JOAAtgTlJdJQAISkIAEJCCBqRBQAKcykvZDAhKQgAQkIAEJ9CSgAPYE5WUSkIAEJCABCUhgKgQUwKmMpP2QgAQkIAEJSEACPQkogD1BeZkEJCABCUhAAhKYCoH/D5CtXLKQJiTwAAAAAElFTkSuQmCC\" width=\"640\">" + ], + "text/plain": [ + "<IPython.core.display.HTML object>" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "Probability 0.023559\n", + "dtype: float64" ] }, - "execution_count": 119, + "execution_count": 38, "metadata": {}, "output_type": "execute_result" } ], - "source": [] + "source": [ + "df = mk.run_scenario(pool_size, rho, successprob, issuerweights, zero_recov)\n", + "mk.plot_prob_over(df)\n", + "mk.plot_scenarios(df, bins)\n", + "mk.prob_over(df, 50)" + ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 33, "metadata": { "collapsed": true }, "outputs": [], - "source": [] + "source": [ + "#Current pipeline\n", + "#Agecroft\tLikelihood\t\t\t\n", + "#size\t1\t2\t3\t4\n", + "#25\t0\t1\t1\t3\n", + "#10\t0\t0\t1\t10\n", + "#5\t4\t0\t1\t17\n", + "#2\t1\t0\t0\t15\n", + "#30% correlation\n", + "num = (4,1,1,1,1,1,3,10,17,15)\n", + "size = (5,2,25,25,10,5,25,10,5,2)\n", + "prob = (.5, .5,.35,.25,.25,.25,.05,.05,.05,.05)\n", + "rho = .3\n", + "zero_recov = np.full(sum(num), 0.0)\n", + "pool_size = sum(n*s for n,s in zip(num, size))\n", + "successprob, issuerweights = [], []\n", + "for n, s, p in zip(num,size,prob):\n", + " successprob.append(np.full((n, 1), p)) \n", + " issuerweights.append(np.full(n, s/pool_size))\n", + "successprob = np.concatenate(successprob)\n", + "issuerweights = np.concatenate(issuerweights)" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "377" + ] + }, + "execution_count": 34, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "bins = [0,0.1, 50, 100, 150, 200, 250, 300, 350, pool_size]\n", + "pool_size" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [ + { + "data": { + "application/javascript": [ + "/* Put everything inside the global mpl namespace */\n", + "window.mpl = {};\n", + "\n", + "\n", + "mpl.get_websocket_type = function() {\n", + " if (typeof(WebSocket) !== 'undefined') {\n", + " return WebSocket;\n", + " } else if (typeof(MozWebSocket) !== 'undefined') {\n", + " return MozWebSocket;\n", + " } else {\n", + " alert('Your browser does not have WebSocket support.' +\n", + " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", + " 'Firefox 4 and 5 are also supported but you ' +\n", + " 'have to enable WebSockets in about:config.');\n", + " };\n", + "}\n", + "\n", + "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", + " this.id = figure_id;\n", + "\n", + " this.ws = websocket;\n", + "\n", + " this.supports_binary = (this.ws.binaryType != undefined);\n", + "\n", + " if (!this.supports_binary) {\n", + " var warnings = document.getElementById(\"mpl-warnings\");\n", + " if (warnings) {\n", + " warnings.style.display = 'block';\n", + " warnings.textContent = (\n", + " \"This browser does not support binary websocket messages. \" +\n", + " \"Performance may be slow.\");\n", + " }\n", + " }\n", + "\n", + " this.imageObj = new Image();\n", + "\n", + " this.context = undefined;\n", + " this.message = undefined;\n", + " this.canvas = undefined;\n", + " this.rubberband_canvas = undefined;\n", + " this.rubberband_context = undefined;\n", + " this.format_dropdown = undefined;\n", + "\n", + " this.image_mode = 'full';\n", + "\n", + " this.root = $('<div/>');\n", + " this._root_extra_style(this.root)\n", + " this.root.attr('style', 'display: inline-block');\n", + "\n", + " $(parent_element).append(this.root);\n", + "\n", + " this._init_header(this);\n", + " this._init_canvas(this);\n", + " this._init_toolbar(this);\n", + "\n", + " var fig = this;\n", + "\n", + " this.waiting = false;\n", + "\n", + " this.ws.onopen = function () {\n", + " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", + " fig.send_message(\"send_image_mode\", {});\n", + " if (mpl.ratio != 1) {\n", + " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", + " }\n", + " fig.send_message(\"refresh\", {});\n", + " }\n", + "\n", + " this.imageObj.onload = function() {\n", + " if (fig.image_mode == 'full') {\n", + " // Full images could contain transparency (where diff images\n", + " // almost always do), so we need to clear the canvas so that\n", + " // there is no ghosting.\n", + " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", + " }\n", + " fig.context.drawImage(fig.imageObj, 0, 0);\n", + " };\n", + "\n", + " this.imageObj.onunload = function() {\n", + " this.ws.close();\n", + " }\n", + "\n", + " this.ws.onmessage = this._make_on_message_function(this);\n", + "\n", + " this.ondownload = ondownload;\n", + "}\n", + "\n", + "mpl.figure.prototype._init_header = function() {\n", + " var titlebar = $(\n", + " '<div class=\"ui-dialog-titlebar ui-widget-header ui-corner-all ' +\n", + " 'ui-helper-clearfix\"/>');\n", + " var titletext = $(\n", + " '<div class=\"ui-dialog-title\" style=\"width: 100%; ' +\n", + " 'text-align: center; padding: 3px;\"/>');\n", + " titlebar.append(titletext)\n", + " this.root.append(titlebar);\n", + " this.header = titletext[0];\n", + "}\n", + "\n", + "\n", + "\n", + "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", + "\n", + "}\n", + "\n", + "\n", + "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", + "\n", + "}\n", + "\n", + "mpl.figure.prototype._init_canvas = function() {\n", + " var fig = this;\n", + "\n", + " var canvas_div = $('<div/>');\n", + "\n", + " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", + "\n", + " function canvas_keyboard_event(event) {\n", + " return fig.key_event(event, event['data']);\n", + " }\n", + "\n", + " canvas_div.keydown('key_press', canvas_keyboard_event);\n", + " canvas_div.keyup('key_release', canvas_keyboard_event);\n", + " this.canvas_div = canvas_div\n", + " this._canvas_extra_style(canvas_div)\n", + " this.root.append(canvas_div);\n", + "\n", + " var canvas = $('<canvas/>');\n", + " canvas.addClass('mpl-canvas');\n", + " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", + "\n", + " this.canvas = canvas[0];\n", + " this.context = canvas[0].getContext(\"2d\");\n", + "\n", + " var backingStore = this.context.backingStorePixelRatio ||\n", + "\tthis.context.webkitBackingStorePixelRatio ||\n", + "\tthis.context.mozBackingStorePixelRatio ||\n", + "\tthis.context.msBackingStorePixelRatio ||\n", + "\tthis.context.oBackingStorePixelRatio ||\n", + "\tthis.context.backingStorePixelRatio || 1;\n", + "\n", + " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", + "\n", + " var rubberband = $('<canvas/>');\n", + " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", + "\n", + " var pass_mouse_events = true;\n", + "\n", + " canvas_div.resizable({\n", + " start: function(event, ui) {\n", + " pass_mouse_events = false;\n", + " },\n", + " resize: function(event, ui) {\n", + " fig.request_resize(ui.size.width, ui.size.height);\n", + " },\n", + " stop: function(event, ui) {\n", + " pass_mouse_events = true;\n", + " fig.request_resize(ui.size.width, ui.size.height);\n", + " },\n", + " });\n", + "\n", + " function mouse_event_fn(event) {\n", + " if (pass_mouse_events)\n", + " return fig.mouse_event(event, event['data']);\n", + " }\n", + "\n", + " rubberband.mousedown('button_press', mouse_event_fn);\n", + " rubberband.mouseup('button_release', mouse_event_fn);\n", + " // Throttle sequential mouse events to 1 every 20ms.\n", + " rubberband.mousemove('motion_notify', mouse_event_fn);\n", + "\n", + " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", + " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", + "\n", + " canvas_div.on(\"wheel\", function (event) {\n", + " event = event.originalEvent;\n", + " event['data'] = 'scroll'\n", + " if (event.deltaY < 0) {\n", + " event.step = 1;\n", + " } else {\n", + " event.step = -1;\n", + " }\n", + " mouse_event_fn(event);\n", + " });\n", + "\n", + " canvas_div.append(canvas);\n", + " canvas_div.append(rubberband);\n", + "\n", + " this.rubberband = rubberband;\n", + " this.rubberband_canvas = rubberband[0];\n", + " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", + " this.rubberband_context.strokeStyle = \"#000000\";\n", + "\n", + " this._resize_canvas = function(width, height) {\n", + " // Keep the size of the canvas, canvas container, and rubber band\n", + " // canvas in synch.\n", + " canvas_div.css('width', width)\n", + " canvas_div.css('height', height)\n", + "\n", + " canvas.attr('width', width * mpl.ratio);\n", + " canvas.attr('height', height * mpl.ratio);\n", + " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", + "\n", + " rubberband.attr('width', width);\n", + " rubberband.attr('height', height);\n", + " }\n", + "\n", + " // Set the figure to an initial 600x600px, this will subsequently be updated\n", + " // upon first draw.\n", + " this._resize_canvas(600, 600);\n", + "\n", + " // Disable right mouse context menu.\n", + " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", + " return false;\n", + " });\n", + "\n", + " function set_focus () {\n", + " canvas.focus();\n", + " canvas_div.focus();\n", + " }\n", + "\n", + " window.setTimeout(set_focus, 100);\n", + "}\n", + "\n", + "mpl.figure.prototype._init_toolbar = function() {\n", + " var fig = this;\n", + "\n", + " var nav_element = $('<div/>')\n", + " nav_element.attr('style', 'width: 100%');\n", + " this.root.append(nav_element);\n", + "\n", + " // Define a callback function for later on.\n", + " function toolbar_event(event) {\n", + " return fig.toolbar_button_onclick(event['data']);\n", + " }\n", + " function toolbar_mouse_event(event) {\n", + " return fig.toolbar_button_onmouseover(event['data']);\n", + " }\n", + "\n", + " for(var toolbar_ind in mpl.toolbar_items) {\n", + " var name = mpl.toolbar_items[toolbar_ind][0];\n", + " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", + " var image = mpl.toolbar_items[toolbar_ind][2];\n", + " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", + "\n", + " if (!name) {\n", + " // put a spacer in here.\n", + " continue;\n", + " }\n", + " var button = $('<button/>');\n", + " button.addClass('ui-button ui-widget ui-state-default ui-corner-all ' +\n", + " 'ui-button-icon-only');\n", + " button.attr('role', 'button');\n", + " button.attr('aria-disabled', 'false');\n", + " button.click(method_name, toolbar_event);\n", + " button.mouseover(tooltip, toolbar_mouse_event);\n", + "\n", + " var icon_img = $('<span/>');\n", + " icon_img.addClass('ui-button-icon-primary ui-icon');\n", + " icon_img.addClass(image);\n", + " icon_img.addClass('ui-corner-all');\n", + "\n", + " var tooltip_span = $('<span/>');\n", + " tooltip_span.addClass('ui-button-text');\n", + " tooltip_span.html(tooltip);\n", + "\n", + " button.append(icon_img);\n", + " button.append(tooltip_span);\n", + "\n", + " nav_element.append(button);\n", + " }\n", + "\n", + " var fmt_picker_span = $('<span/>');\n", + "\n", + " var fmt_picker = $('<select/>');\n", + " fmt_picker.addClass('mpl-toolbar-option ui-widget ui-widget-content');\n", + " fmt_picker_span.append(fmt_picker);\n", + " nav_element.append(fmt_picker_span);\n", + " this.format_dropdown = fmt_picker[0];\n", + "\n", + " for (var ind in mpl.extensions) {\n", + " var fmt = mpl.extensions[ind];\n", + " var option = $(\n", + " '<option/>', {selected: fmt === mpl.default_extension}).html(fmt);\n", + " fmt_picker.append(option)\n", + " }\n", + "\n", + " // Add hover states to the ui-buttons\n", + " $( \".ui-button\" ).hover(\n", + " function() { $(this).addClass(\"ui-state-hover\");},\n", + " function() { $(this).removeClass(\"ui-state-hover\");}\n", + " );\n", + "\n", + " var status_bar = $('<span class=\"mpl-message\"/>');\n", + " nav_element.append(status_bar);\n", + " this.message = status_bar[0];\n", + "}\n", + "\n", + "mpl.figure.prototype.request_resize = function(x_pixels, y_pixels) {\n", + " // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n", + " // which will in turn request a refresh of the image.\n", + " this.send_message('resize', {'width': x_pixels, 'height': y_pixels});\n", + "}\n", + "\n", + "mpl.figure.prototype.send_message = function(type, properties) {\n", + " properties['type'] = type;\n", + " properties['figure_id'] = this.id;\n", + " this.ws.send(JSON.stringify(properties));\n", + "}\n", + "\n", + "mpl.figure.prototype.send_draw_message = function() {\n", + " if (!this.waiting) {\n", + " this.waiting = true;\n", + " this.ws.send(JSON.stringify({type: \"draw\", figure_id: this.id}));\n", + " }\n", + "}\n", + "\n", + "\n", + "mpl.figure.prototype.handle_save = function(fig, msg) {\n", + " var format_dropdown = fig.format_dropdown;\n", + " var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n", + " fig.ondownload(fig, format);\n", + "}\n", + "\n", + "\n", + "mpl.figure.prototype.handle_resize = function(fig, msg) {\n", + " var size = msg['size'];\n", + " if (size[0] != fig.canvas.width || size[1] != fig.canvas.height) {\n", + " fig._resize_canvas(size[0], size[1]);\n", + " fig.send_message(\"refresh\", {});\n", + " };\n", + "}\n", + "\n", + "mpl.figure.prototype.handle_rubberband = function(fig, msg) {\n", + " var x0 = msg['x0'] / mpl.ratio;\n", + " var y0 = (fig.canvas.height - msg['y0']) / mpl.ratio;\n", + " var x1 = msg['x1'] / mpl.ratio;\n", + " var y1 = (fig.canvas.height - msg['y1']) / mpl.ratio;\n", + " x0 = Math.floor(x0) + 0.5;\n", + " y0 = Math.floor(y0) + 0.5;\n", + " x1 = Math.floor(x1) + 0.5;\n", + " y1 = Math.floor(y1) + 0.5;\n", + " var min_x = Math.min(x0, x1);\n", + " var min_y = Math.min(y0, y1);\n", + " var width = Math.abs(x1 - x0);\n", + " var height = Math.abs(y1 - y0);\n", + "\n", + " fig.rubberband_context.clearRect(\n", + " 0, 0, fig.canvas.width, fig.canvas.height);\n", + "\n", + " fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n", + "}\n", + "\n", + "mpl.figure.prototype.handle_figure_label = function(fig, msg) {\n", + " // Updates the figure title.\n", + " fig.header.textContent = msg['label'];\n", + "}\n", + "\n", + "mpl.figure.prototype.handle_cursor = function(fig, msg) {\n", + " var cursor = msg['cursor'];\n", + " switch(cursor)\n", + " {\n", + " case 0:\n", + " cursor = 'pointer';\n", + " break;\n", + " case 1:\n", + " cursor = 'default';\n", + " break;\n", + " case 2:\n", + " cursor = 'crosshair';\n", + " break;\n", + " case 3:\n", + " cursor = 'move';\n", + " break;\n", + " }\n", + " fig.rubberband_canvas.style.cursor = cursor;\n", + "}\n", + "\n", + "mpl.figure.prototype.handle_message = function(fig, msg) {\n", + " fig.message.textContent = msg['message'];\n", + "}\n", + "\n", + "mpl.figure.prototype.handle_draw = function(fig, msg) {\n", + " // Request the server to send over a new figure.\n", + " fig.send_draw_message();\n", + "}\n", + "\n", + "mpl.figure.prototype.handle_image_mode = function(fig, msg) {\n", + " fig.image_mode = msg['mode'];\n", + "}\n", + "\n", + "mpl.figure.prototype.updated_canvas_event = function() {\n", + " // Called whenever the canvas gets updated.\n", + " this.send_message(\"ack\", {});\n", + "}\n", + "\n", + "// A function to construct a web socket function for onmessage handling.\n", + "// Called in the figure constructor.\n", + "mpl.figure.prototype._make_on_message_function = function(fig) {\n", + " return function socket_on_message(evt) {\n", + " if (evt.data instanceof Blob) {\n", + " /* FIXME: We get \"Resource interpreted as Image but\n", + " * transferred with MIME type text/plain:\" errors on\n", + " * Chrome. But how to set the MIME type? It doesn't seem\n", + " * to be part of the websocket stream */\n", + " evt.data.type = \"image/png\";\n", + "\n", + " /* Free the memory for the previous frames */\n", + " if (fig.imageObj.src) {\n", + " (window.URL || window.webkitURL).revokeObjectURL(\n", + " fig.imageObj.src);\n", + " }\n", + "\n", + " fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n", + " evt.data);\n", + " fig.updated_canvas_event();\n", + " fig.waiting = false;\n", + " return;\n", + " }\n", + " else if (typeof evt.data === 'string' && evt.data.slice(0, 21) == \"data:image/png;base64\") {\n", + " fig.imageObj.src = evt.data;\n", + " fig.updated_canvas_event();\n", + " fig.waiting = false;\n", + " return;\n", + " }\n", + "\n", + " var msg = JSON.parse(evt.data);\n", + " var msg_type = msg['type'];\n", + "\n", + " // Call the \"handle_{type}\" callback, which takes\n", + " // the figure and JSON message as its only arguments.\n", + " try {\n", + " var callback = fig[\"handle_\" + msg_type];\n", + " } catch (e) {\n", + " console.log(\"No handler for the '\" + msg_type + \"' message type: \", msg);\n", + " return;\n", + " }\n", + "\n", + " if (callback) {\n", + " try {\n", + " // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n", + " callback(fig, msg);\n", + " } catch (e) {\n", + " console.log(\"Exception inside the 'handler_\" + msg_type + \"' callback:\", e, e.stack, msg);\n", + " }\n", + " }\n", + " };\n", + "}\n", + "\n", + "// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n", + "mpl.findpos = function(e) {\n", + " //this section is from http://www.quirksmode.org/js/events_properties.html\n", + " var targ;\n", + " if (!e)\n", + " e = window.event;\n", + " if (e.target)\n", + " targ = e.target;\n", + " else if (e.srcElement)\n", + " targ = e.srcElement;\n", + " if (targ.nodeType == 3) // defeat Safari bug\n", + " targ = targ.parentNode;\n", + "\n", + " // jQuery normalizes the pageX and pageY\n", + " // pageX,Y are the mouse positions relative to the document\n", + " // offset() returns the position of the element relative to the document\n", + " var x = e.pageX - $(targ).offset().left;\n", + " var y = e.pageY - $(targ).offset().top;\n", + "\n", + " return {\"x\": x, \"y\": y};\n", + "};\n", + "\n", + "/*\n", + " * return a copy of an object with only non-object keys\n", + " * we need this to avoid circular references\n", + " * http://stackoverflow.com/a/24161582/3208463\n", + " */\n", + "function simpleKeys (original) {\n", + " return Object.keys(original).reduce(function (obj, key) {\n", + " if (typeof original[key] !== 'object')\n", + " obj[key] = original[key]\n", + " return obj;\n", + " }, {});\n", + "}\n", + "\n", + "mpl.figure.prototype.mouse_event = function(event, name) {\n", + " var canvas_pos = mpl.findpos(event)\n", + "\n", + " if (name === 'button_press')\n", + " {\n", + " this.canvas.focus();\n", + " this.canvas_div.focus();\n", + " }\n", + "\n", + " var x = canvas_pos.x * mpl.ratio;\n", + " var y = canvas_pos.y * mpl.ratio;\n", + "\n", + " this.send_message(name, {x: x, y: y, button: event.button,\n", + " step: event.step,\n", + " guiEvent: simpleKeys(event)});\n", + "\n", + " /* This prevents the web browser from automatically changing to\n", + " * the text insertion cursor when the button is pressed. We want\n", + " * to control all of the cursor setting manually through the\n", + " * 'cursor' event from matplotlib */\n", + " event.preventDefault();\n", + " return false;\n", + "}\n", + "\n", + "mpl.figure.prototype._key_event_extra = function(event, name) {\n", + " // Handle any extra behaviour associated with a key event\n", + "}\n", + "\n", + "mpl.figure.prototype.key_event = function(event, name) {\n", + "\n", + " // Prevent repeat events\n", + " if (name == 'key_press')\n", + " {\n", + " if (event.which === this._key)\n", + " return;\n", + " else\n", + " this._key = event.which;\n", + " }\n", + " if (name == 'key_release')\n", + " this._key = null;\n", + "\n", + " var value = '';\n", + " if (event.ctrlKey && event.which != 17)\n", + " value += \"ctrl+\";\n", + " if (event.altKey && event.which != 18)\n", + " value += \"alt+\";\n", + " if (event.shiftKey && event.which != 16)\n", + " value += \"shift+\";\n", + "\n", + " value += 'k';\n", + " value += event.which.toString();\n", + "\n", + " this._key_event_extra(event, name);\n", + "\n", + " this.send_message(name, {key: value,\n", + " guiEvent: simpleKeys(event)});\n", + " return false;\n", + "}\n", + "\n", + "mpl.figure.prototype.toolbar_button_onclick = function(name) {\n", + " if (name == 'download') {\n", + " this.handle_save(this, null);\n", + " } else {\n", + " this.send_message(\"toolbar_button\", {name: name});\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.toolbar_button_onmouseover = function(tooltip) {\n", + " this.message.textContent = tooltip;\n", + "};\n", + "mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Pan axes with left mouse, zoom with right\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n", + "\n", + "mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n", + "\n", + "mpl.default_extension = \"png\";var comm_websocket_adapter = function(comm) {\n", + " // Create a \"websocket\"-like object which calls the given IPython comm\n", + " // object with the appropriate methods. Currently this is a non binary\n", + " // socket, so there is still some room for performance tuning.\n", + " var ws = {};\n", + "\n", + " ws.close = function() {\n", + " comm.close()\n", + " };\n", + " ws.send = function(m) {\n", + " //console.log('sending', m);\n", + " comm.send(m);\n", + " };\n", + " // Register the callback with on_msg.\n", + " comm.on_msg(function(msg) {\n", + " //console.log('receiving', msg['content']['data'], msg);\n", + " // Pass the mpl event to the overriden (by mpl) onmessage function.\n", + " ws.onmessage(msg['content']['data'])\n", + " });\n", + " return ws;\n", + "}\n", + "\n", + "mpl.mpl_figure_comm = function(comm, msg) {\n", + " // This is the function which gets called when the mpl process\n", + " // starts-up an IPython Comm through the \"matplotlib\" channel.\n", + "\n", + " var id = msg.content.data.id;\n", + " // Get hold of the div created by the display call when the Comm\n", + " // socket was opened in Python.\n", + " var element = $(\"#\" + id);\n", + " var ws_proxy = comm_websocket_adapter(comm)\n", + "\n", + " function ondownload(figure, format) {\n", + " window.open(figure.imageObj.src);\n", + " }\n", + "\n", + " var fig = new mpl.figure(id, ws_proxy,\n", + " ondownload,\n", + " element.get(0));\n", + "\n", + " // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n", + " // web socket which is closed, not our websocket->open comm proxy.\n", + " ws_proxy.onopen();\n", + "\n", + " fig.parent_element = element.get(0);\n", + " fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n", + " if (!fig.cell_info) {\n", + " console.error(\"Failed to find cell for figure\", id, fig);\n", + " return;\n", + " }\n", + "\n", + " var output_index = fig.cell_info[2]\n", + " var cell = fig.cell_info[0];\n", + "\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_close = function(fig, msg) {\n", + " var width = fig.canvas.width/mpl.ratio\n", + " fig.root.unbind('remove')\n", + "\n", + " // Update the output cell to use the data from the current canvas.\n", + " fig.push_to_output();\n", + " var dataURL = fig.canvas.toDataURL();\n", + " // Re-enable the keyboard manager in IPython - without this line, in FF,\n", + " // the notebook keyboard shortcuts fail.\n", + " IPython.keyboard_manager.enable()\n", + " $(fig.parent_element).html('<img src=\"' + dataURL + '\" width=\"' + width + '\">');\n", + " fig.close_ws(fig, msg);\n", + "}\n", + "\n", + "mpl.figure.prototype.close_ws = function(fig, msg){\n", + " fig.send_message('closing', msg);\n", + " // fig.ws.close()\n", + "}\n", + "\n", + "mpl.figure.prototype.push_to_output = function(remove_interactive) {\n", + " // Turn the data on the canvas into data in the output cell.\n", + " var width = this.canvas.width/mpl.ratio\n", + " var dataURL = this.canvas.toDataURL();\n", + " this.cell_info[1]['text/html'] = '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n", + "}\n", + "\n", + "mpl.figure.prototype.updated_canvas_event = function() {\n", + " // Tell IPython that the notebook contents must change.\n", + " IPython.notebook.set_dirty(true);\n", + " this.send_message(\"ack\", {});\n", + " var fig = this;\n", + " // Wait a second, then push the new image to the DOM so\n", + " // that it is saved nicely (might be nice to debounce this).\n", + " setTimeout(function () { fig.push_to_output() }, 1000);\n", + "}\n", + "\n", + "mpl.figure.prototype._init_toolbar = function() {\n", + " var fig = this;\n", + "\n", + " var nav_element = $('<div/>')\n", + " nav_element.attr('style', 'width: 100%');\n", + " this.root.append(nav_element);\n", + "\n", + " // Define a callback function for later on.\n", + " function toolbar_event(event) {\n", + " return fig.toolbar_button_onclick(event['data']);\n", + " }\n", + " function toolbar_mouse_event(event) {\n", + " return fig.toolbar_button_onmouseover(event['data']);\n", + " }\n", + "\n", + " for(var toolbar_ind in mpl.toolbar_items){\n", + " var name = mpl.toolbar_items[toolbar_ind][0];\n", + " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", + " var image = mpl.toolbar_items[toolbar_ind][2];\n", + " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", + "\n", + " if (!name) { continue; };\n", + "\n", + " var button = $('<button class=\"btn btn-default\" href=\"#\" title=\"' + name + '\"><i class=\"fa ' + image + ' fa-lg\"></i></button>');\n", + " button.click(method_name, toolbar_event);\n", + " button.mouseover(tooltip, toolbar_mouse_event);\n", + " nav_element.append(button);\n", + " }\n", + "\n", + " // Add the status bar.\n", + " var status_bar = $('<span class=\"mpl-message\" style=\"text-align:right; float: right;\"/>');\n", + " nav_element.append(status_bar);\n", + " this.message = status_bar[0];\n", + "\n", + " // Add the close button to the window.\n", + " var buttongrp = $('<div class=\"btn-group inline pull-right\"></div>');\n", + " var button = $('<button class=\"btn btn-mini btn-primary\" href=\"#\" title=\"Stop Interaction\"><i class=\"fa fa-power-off icon-remove icon-large\"></i></button>');\n", + " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", + " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", + " buttongrp.append(button);\n", + " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", + " titlebar.prepend(buttongrp);\n", + "}\n", + "\n", + "mpl.figure.prototype._root_extra_style = function(el){\n", + " var fig = this\n", + " el.on(\"remove\", function(){\n", + "\tfig.close_ws(fig, {});\n", + " });\n", + "}\n", + "\n", + "mpl.figure.prototype._canvas_extra_style = function(el){\n", + " // this is important to make the div 'focusable\n", + " el.attr('tabindex', 0)\n", + " // reach out to IPython and tell the keyboard manager to turn it's self\n", + " // off when our div gets focus\n", + "\n", + " // location in version 3\n", + " if (IPython.notebook.keyboard_manager) {\n", + " IPython.notebook.keyboard_manager.register_events(el);\n", + " }\n", + " else {\n", + " // location in version 2\n", + " IPython.keyboard_manager.register_events(el);\n", + " }\n", + "\n", + "}\n", + "\n", + "mpl.figure.prototype._key_event_extra = function(event, name) {\n", + " var manager = IPython.notebook.keyboard_manager;\n", + " if (!manager)\n", + " manager = IPython.keyboard_manager;\n", + "\n", + " // Check for shift+enter\n", + " if (event.shiftKey && event.which == 13) {\n", + " this.canvas_div.blur();\n", + " // select the cell after this one\n", + " var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n", + " IPython.notebook.select(index + 1);\n", + " }\n", + "}\n", + "\n", + "mpl.figure.prototype.handle_save = function(fig, msg) {\n", + " fig.ondownload(fig, null);\n", + "}\n", + "\n", + "\n", + "mpl.find_output_cell = function(html_output) {\n", + " // Return the cell and output element which can be found *uniquely* in the notebook.\n", + " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", + " // IPython event is triggered only after the cells have been serialised, which for\n", + " // our purposes (turning an active figure into a static one), is too late.\n", + " var cells = IPython.notebook.get_cells();\n", + " var ncells = cells.length;\n", + " for (var i=0; i<ncells; i++) {\n", + " var cell = cells[i];\n", + " if (cell.cell_type === 'code'){\n", + " for (var j=0; j<cell.output_area.outputs.length; j++) {\n", + " var data = cell.output_area.outputs[j];\n", + " if (data.data) {\n", + " // IPython >= 3 moved mimebundle to data attribute of output\n", + " data = data.data;\n", + " }\n", + " if (data['text/html'] == html_output) {\n", + " return [cell, data, j];\n", + " }\n", + " }\n", + " }\n", + " }\n", + "}\n", + "\n", + "// Register the function which deals with the matplotlib target/channel.\n", + "// The kernel may be null if the page has been refreshed.\n", + "if (IPython.notebook.kernel != null) {\n", + " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", + "}\n" + ], + "text/plain": [ + "<IPython.core.display.Javascript object>" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "<img src=\"data:image/png;base64,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\" width=\"640\">" + ], + "text/plain": [ + "<IPython.core.display.HTML object>" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/javascript": [ + "/* Put everything inside the global mpl namespace */\n", + "window.mpl = {};\n", + "\n", + "\n", + "mpl.get_websocket_type = function() {\n", + " if (typeof(WebSocket) !== 'undefined') {\n", + " return WebSocket;\n", + " } else if (typeof(MozWebSocket) !== 'undefined') {\n", + " return MozWebSocket;\n", + " } else {\n", + " alert('Your browser does not have WebSocket support.' +\n", + " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", + " 'Firefox 4 and 5 are also supported but you ' +\n", + " 'have to enable WebSockets in about:config.');\n", + " };\n", + "}\n", + "\n", + "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", + " this.id = figure_id;\n", + "\n", + " this.ws = websocket;\n", + "\n", + " this.supports_binary = (this.ws.binaryType != undefined);\n", + "\n", + " if (!this.supports_binary) {\n", + " var warnings = document.getElementById(\"mpl-warnings\");\n", + " if (warnings) {\n", + " warnings.style.display = 'block';\n", + " warnings.textContent = (\n", + " \"This browser does not support binary websocket messages. \" +\n", + " \"Performance may be slow.\");\n", + " }\n", + " }\n", + "\n", + " this.imageObj = new Image();\n", + "\n", + " this.context = undefined;\n", + " this.message = undefined;\n", + " this.canvas = undefined;\n", + " this.rubberband_canvas = undefined;\n", + " this.rubberband_context = undefined;\n", + " this.format_dropdown = undefined;\n", + "\n", + " this.image_mode = 'full';\n", + "\n", + " this.root = $('<div/>');\n", + " this._root_extra_style(this.root)\n", + " this.root.attr('style', 'display: inline-block');\n", + "\n", + " $(parent_element).append(this.root);\n", + "\n", + " this._init_header(this);\n", + " this._init_canvas(this);\n", + " this._init_toolbar(this);\n", + "\n", + " var fig = this;\n", + "\n", + " this.waiting = false;\n", + "\n", + " this.ws.onopen = function () {\n", + " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", + " fig.send_message(\"send_image_mode\", {});\n", + " if (mpl.ratio != 1) {\n", + " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", + " }\n", + " fig.send_message(\"refresh\", {});\n", + " }\n", + "\n", + " this.imageObj.onload = function() {\n", + " if (fig.image_mode == 'full') {\n", + " // Full images could contain transparency (where diff images\n", + " // almost always do), so we need to clear the canvas so that\n", + " // there is no ghosting.\n", + " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", + " }\n", + " fig.context.drawImage(fig.imageObj, 0, 0);\n", + " };\n", + "\n", + " this.imageObj.onunload = function() {\n", + " this.ws.close();\n", + " }\n", + "\n", + " this.ws.onmessage = this._make_on_message_function(this);\n", + "\n", + " this.ondownload = ondownload;\n", + "}\n", + "\n", + "mpl.figure.prototype._init_header = function() {\n", + " var titlebar = $(\n", + " '<div class=\"ui-dialog-titlebar ui-widget-header ui-corner-all ' +\n", + " 'ui-helper-clearfix\"/>');\n", + " var titletext = $(\n", + " '<div class=\"ui-dialog-title\" style=\"width: 100%; ' +\n", + " 'text-align: center; padding: 3px;\"/>');\n", + " titlebar.append(titletext)\n", + " this.root.append(titlebar);\n", + " this.header = titletext[0];\n", + "}\n", + "\n", + "\n", + "\n", + "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", + "\n", + "}\n", + "\n", + "\n", + "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", + "\n", + "}\n", + "\n", + "mpl.figure.prototype._init_canvas = function() {\n", + " var fig = this;\n", + "\n", + " var canvas_div = $('<div/>');\n", + "\n", + " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", + "\n", + " function canvas_keyboard_event(event) {\n", + " return fig.key_event(event, event['data']);\n", + " }\n", + "\n", + " canvas_div.keydown('key_press', canvas_keyboard_event);\n", + " canvas_div.keyup('key_release', canvas_keyboard_event);\n", + " this.canvas_div = canvas_div\n", + " this._canvas_extra_style(canvas_div)\n", + " this.root.append(canvas_div);\n", + "\n", + " var canvas = $('<canvas/>');\n", + " canvas.addClass('mpl-canvas');\n", + " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", + "\n", + " this.canvas = canvas[0];\n", + " this.context = canvas[0].getContext(\"2d\");\n", + "\n", + " var backingStore = this.context.backingStorePixelRatio ||\n", + "\tthis.context.webkitBackingStorePixelRatio ||\n", + "\tthis.context.mozBackingStorePixelRatio ||\n", + "\tthis.context.msBackingStorePixelRatio ||\n", + "\tthis.context.oBackingStorePixelRatio ||\n", + "\tthis.context.backingStorePixelRatio || 1;\n", + "\n", + " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", + "\n", + " var rubberband = $('<canvas/>');\n", + " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", + "\n", + " var pass_mouse_events = true;\n", + "\n", + " canvas_div.resizable({\n", + " start: function(event, ui) {\n", + " pass_mouse_events = false;\n", + " },\n", + " resize: function(event, ui) {\n", + " fig.request_resize(ui.size.width, ui.size.height);\n", + " },\n", + " stop: function(event, ui) {\n", + " pass_mouse_events = true;\n", + " fig.request_resize(ui.size.width, ui.size.height);\n", + " },\n", + " });\n", + "\n", + " function mouse_event_fn(event) {\n", + " if (pass_mouse_events)\n", + " return fig.mouse_event(event, event['data']);\n", + " }\n", + "\n", + " rubberband.mousedown('button_press', mouse_event_fn);\n", + " rubberband.mouseup('button_release', mouse_event_fn);\n", + " // Throttle sequential mouse events to 1 every 20ms.\n", + " rubberband.mousemove('motion_notify', mouse_event_fn);\n", + "\n", + " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", + " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", + "\n", + " canvas_div.on(\"wheel\", function (event) {\n", + " event = event.originalEvent;\n", + " event['data'] = 'scroll'\n", + " if (event.deltaY < 0) {\n", + " event.step = 1;\n", + " } else {\n", + " event.step = -1;\n", + " }\n", + " mouse_event_fn(event);\n", + " });\n", + "\n", + " canvas_div.append(canvas);\n", + " canvas_div.append(rubberband);\n", + "\n", + " this.rubberband = rubberband;\n", + " this.rubberband_canvas = rubberband[0];\n", + " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", + " this.rubberband_context.strokeStyle = \"#000000\";\n", + "\n", + " this._resize_canvas = function(width, height) {\n", + " // Keep the size of the canvas, canvas container, and rubber band\n", + " // canvas in synch.\n", + " canvas_div.css('width', width)\n", + " canvas_div.css('height', height)\n", + "\n", + " canvas.attr('width', width * mpl.ratio);\n", + " canvas.attr('height', height * mpl.ratio);\n", + " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", + "\n", + " rubberband.attr('width', width);\n", + " rubberband.attr('height', height);\n", + " }\n", + "\n", + " // Set the figure to an initial 600x600px, this will subsequently be updated\n", + " // upon first draw.\n", + " this._resize_canvas(600, 600);\n", + "\n", + " // Disable right mouse context menu.\n", + " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", + " return false;\n", + " });\n", + "\n", + " function set_focus () {\n", + " canvas.focus();\n", + " canvas_div.focus();\n", + " }\n", + "\n", + " window.setTimeout(set_focus, 100);\n", + "}\n", + "\n", + "mpl.figure.prototype._init_toolbar = function() {\n", + " var fig = this;\n", + "\n", + " var nav_element = $('<div/>')\n", + " nav_element.attr('style', 'width: 100%');\n", + " this.root.append(nav_element);\n", + "\n", + " // Define a callback function for later on.\n", + " function toolbar_event(event) {\n", + " return fig.toolbar_button_onclick(event['data']);\n", + " }\n", + " function toolbar_mouse_event(event) {\n", + " return fig.toolbar_button_onmouseover(event['data']);\n", + " }\n", + "\n", + " for(var toolbar_ind in mpl.toolbar_items) {\n", + " var name = mpl.toolbar_items[toolbar_ind][0];\n", + " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", + " var image = mpl.toolbar_items[toolbar_ind][2];\n", + " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", + "\n", + " if (!name) {\n", + " // put a spacer in here.\n", + " continue;\n", + " }\n", + " var button = $('<button/>');\n", + " button.addClass('ui-button ui-widget ui-state-default ui-corner-all ' +\n", + " 'ui-button-icon-only');\n", + " button.attr('role', 'button');\n", + " button.attr('aria-disabled', 'false');\n", + " button.click(method_name, toolbar_event);\n", + " button.mouseover(tooltip, toolbar_mouse_event);\n", + "\n", + " var icon_img = $('<span/>');\n", + " icon_img.addClass('ui-button-icon-primary ui-icon');\n", + " icon_img.addClass(image);\n", + " icon_img.addClass('ui-corner-all');\n", + "\n", + " var tooltip_span = $('<span/>');\n", + " tooltip_span.addClass('ui-button-text');\n", + " tooltip_span.html(tooltip);\n", + "\n", + " button.append(icon_img);\n", + " button.append(tooltip_span);\n", + "\n", + " nav_element.append(button);\n", + " }\n", + "\n", + " var fmt_picker_span = $('<span/>');\n", + "\n", + " var fmt_picker = $('<select/>');\n", + " fmt_picker.addClass('mpl-toolbar-option ui-widget ui-widget-content');\n", + " fmt_picker_span.append(fmt_picker);\n", + " nav_element.append(fmt_picker_span);\n", + " this.format_dropdown = fmt_picker[0];\n", + "\n", + " for (var ind in mpl.extensions) {\n", + " var fmt = mpl.extensions[ind];\n", + " var option = $(\n", + " '<option/>', {selected: fmt === mpl.default_extension}).html(fmt);\n", + " fmt_picker.append(option)\n", + " }\n", + "\n", + " // Add hover states to the ui-buttons\n", + " $( \".ui-button\" ).hover(\n", + " function() { $(this).addClass(\"ui-state-hover\");},\n", + " function() { $(this).removeClass(\"ui-state-hover\");}\n", + " );\n", + "\n", + " var status_bar = $('<span class=\"mpl-message\"/>');\n", + " nav_element.append(status_bar);\n", + " this.message = status_bar[0];\n", + "}\n", + "\n", + "mpl.figure.prototype.request_resize = function(x_pixels, y_pixels) {\n", + " // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n", + " // which will in turn request a refresh of the image.\n", + " this.send_message('resize', {'width': x_pixels, 'height': y_pixels});\n", + "}\n", + "\n", + "mpl.figure.prototype.send_message = function(type, properties) {\n", + " properties['type'] = type;\n", + " properties['figure_id'] = this.id;\n", + " this.ws.send(JSON.stringify(properties));\n", + "}\n", + "\n", + "mpl.figure.prototype.send_draw_message = function() {\n", + " if (!this.waiting) {\n", + " this.waiting = true;\n", + " this.ws.send(JSON.stringify({type: \"draw\", figure_id: this.id}));\n", + " }\n", + "}\n", + "\n", + "\n", + "mpl.figure.prototype.handle_save = function(fig, msg) {\n", + " var format_dropdown = fig.format_dropdown;\n", + " var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n", + " fig.ondownload(fig, format);\n", + "}\n", + "\n", + "\n", + "mpl.figure.prototype.handle_resize = function(fig, msg) {\n", + " var size = msg['size'];\n", + " if (size[0] != fig.canvas.width || size[1] != fig.canvas.height) {\n", + " fig._resize_canvas(size[0], size[1]);\n", + " fig.send_message(\"refresh\", {});\n", + " };\n", + "}\n", + "\n", + "mpl.figure.prototype.handle_rubberband = function(fig, msg) {\n", + " var x0 = msg['x0'] / mpl.ratio;\n", + " var y0 = (fig.canvas.height - msg['y0']) / mpl.ratio;\n", + " var x1 = msg['x1'] / mpl.ratio;\n", + " var y1 = (fig.canvas.height - msg['y1']) / mpl.ratio;\n", + " x0 = Math.floor(x0) + 0.5;\n", + " y0 = Math.floor(y0) + 0.5;\n", + " x1 = Math.floor(x1) + 0.5;\n", + " y1 = Math.floor(y1) + 0.5;\n", + " var min_x = Math.min(x0, x1);\n", + " var min_y = Math.min(y0, y1);\n", + " var width = Math.abs(x1 - x0);\n", + " var height = Math.abs(y1 - y0);\n", + "\n", + " fig.rubberband_context.clearRect(\n", + " 0, 0, fig.canvas.width, fig.canvas.height);\n", + "\n", + " fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n", + "}\n", + "\n", + "mpl.figure.prototype.handle_figure_label = function(fig, msg) {\n", + " // Updates the figure title.\n", + " fig.header.textContent = msg['label'];\n", + "}\n", + "\n", + "mpl.figure.prototype.handle_cursor = function(fig, msg) {\n", + " var cursor = msg['cursor'];\n", + " switch(cursor)\n", + " {\n", + " case 0:\n", + " cursor = 'pointer';\n", + " break;\n", + " case 1:\n", + " cursor = 'default';\n", + " break;\n", + " case 2:\n", + " cursor = 'crosshair';\n", + " break;\n", + " case 3:\n", + " cursor = 'move';\n", + " break;\n", + " }\n", + " fig.rubberband_canvas.style.cursor = cursor;\n", + "}\n", + "\n", + "mpl.figure.prototype.handle_message = function(fig, msg) {\n", + " fig.message.textContent = msg['message'];\n", + "}\n", + "\n", + "mpl.figure.prototype.handle_draw = function(fig, msg) {\n", + " // Request the server to send over a new figure.\n", + " fig.send_draw_message();\n", + "}\n", + "\n", + "mpl.figure.prototype.handle_image_mode = function(fig, msg) {\n", + " fig.image_mode = msg['mode'];\n", + "}\n", + "\n", + "mpl.figure.prototype.updated_canvas_event = function() {\n", + " // Called whenever the canvas gets updated.\n", + " this.send_message(\"ack\", {});\n", + "}\n", + "\n", + "// A function to construct a web socket function for onmessage handling.\n", + "// Called in the figure constructor.\n", + "mpl.figure.prototype._make_on_message_function = function(fig) {\n", + " return function socket_on_message(evt) {\n", + " if (evt.data instanceof Blob) {\n", + " /* FIXME: We get \"Resource interpreted as Image but\n", + " * transferred with MIME type text/plain:\" errors on\n", + " * Chrome. But how to set the MIME type? It doesn't seem\n", + " * to be part of the websocket stream */\n", + " evt.data.type = \"image/png\";\n", + "\n", + " /* Free the memory for the previous frames */\n", + " if (fig.imageObj.src) {\n", + " (window.URL || window.webkitURL).revokeObjectURL(\n", + " fig.imageObj.src);\n", + " }\n", + "\n", + " fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n", + " evt.data);\n", + " fig.updated_canvas_event();\n", + " fig.waiting = false;\n", + " return;\n", + " }\n", + " else if (typeof evt.data === 'string' && evt.data.slice(0, 21) == \"data:image/png;base64\") {\n", + " fig.imageObj.src = evt.data;\n", + " fig.updated_canvas_event();\n", + " fig.waiting = false;\n", + " return;\n", + " }\n", + "\n", + " var msg = JSON.parse(evt.data);\n", + " var msg_type = msg['type'];\n", + "\n", + " // Call the \"handle_{type}\" callback, which takes\n", + " // the figure and JSON message as its only arguments.\n", + " try {\n", + " var callback = fig[\"handle_\" + msg_type];\n", + " } catch (e) {\n", + " console.log(\"No handler for the '\" + msg_type + \"' message type: \", msg);\n", + " return;\n", + " }\n", + "\n", + " if (callback) {\n", + " try {\n", + " // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n", + " callback(fig, msg);\n", + " } catch (e) {\n", + " console.log(\"Exception inside the 'handler_\" + msg_type + \"' callback:\", e, e.stack, msg);\n", + " }\n", + " }\n", + " };\n", + "}\n", + "\n", + "// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n", + "mpl.findpos = function(e) {\n", + " //this section is from http://www.quirksmode.org/js/events_properties.html\n", + " var targ;\n", + " if (!e)\n", + " e = window.event;\n", + " if (e.target)\n", + " targ = e.target;\n", + " else if (e.srcElement)\n", + " targ = e.srcElement;\n", + " if (targ.nodeType == 3) // defeat Safari bug\n", + " targ = targ.parentNode;\n", + "\n", + " // jQuery normalizes the pageX and pageY\n", + " // pageX,Y are the mouse positions relative to the document\n", + " // offset() returns the position of the element relative to the document\n", + " var x = e.pageX - $(targ).offset().left;\n", + " var y = e.pageY - $(targ).offset().top;\n", + "\n", + " return {\"x\": x, \"y\": y};\n", + "};\n", + "\n", + "/*\n", + " * return a copy of an object with only non-object keys\n", + " * we need this to avoid circular references\n", + " * http://stackoverflow.com/a/24161582/3208463\n", + " */\n", + "function simpleKeys (original) {\n", + " return Object.keys(original).reduce(function (obj, key) {\n", + " if (typeof original[key] !== 'object')\n", + " obj[key] = original[key]\n", + " return obj;\n", + " }, {});\n", + "}\n", + "\n", + "mpl.figure.prototype.mouse_event = function(event, name) {\n", + " var canvas_pos = mpl.findpos(event)\n", + "\n", + " if (name === 'button_press')\n", + " {\n", + " this.canvas.focus();\n", + " this.canvas_div.focus();\n", + " }\n", + "\n", + " var x = canvas_pos.x * mpl.ratio;\n", + " var y = canvas_pos.y * mpl.ratio;\n", + "\n", + " this.send_message(name, {x: x, y: y, button: event.button,\n", + " step: event.step,\n", + " guiEvent: simpleKeys(event)});\n", + "\n", + " /* This prevents the web browser from automatically changing to\n", + " * the text insertion cursor when the button is pressed. We want\n", + " * to control all of the cursor setting manually through the\n", + " * 'cursor' event from matplotlib */\n", + " event.preventDefault();\n", + " return false;\n", + "}\n", + "\n", + "mpl.figure.prototype._key_event_extra = function(event, name) {\n", + " // Handle any extra behaviour associated with a key event\n", + "}\n", + "\n", + "mpl.figure.prototype.key_event = function(event, name) {\n", + "\n", + " // Prevent repeat events\n", + " if (name == 'key_press')\n", + " {\n", + " if (event.which === this._key)\n", + " return;\n", + " else\n", + " this._key = event.which;\n", + " }\n", + " if (name == 'key_release')\n", + " this._key = null;\n", + "\n", + " var value = '';\n", + " if (event.ctrlKey && event.which != 17)\n", + " value += \"ctrl+\";\n", + " if (event.altKey && event.which != 18)\n", + " value += \"alt+\";\n", + " if (event.shiftKey && event.which != 16)\n", + " value += \"shift+\";\n", + "\n", + " value += 'k';\n", + " value += event.which.toString();\n", + "\n", + " this._key_event_extra(event, name);\n", + "\n", + " this.send_message(name, {key: value,\n", + " guiEvent: simpleKeys(event)});\n", + " return false;\n", + "}\n", + "\n", + "mpl.figure.prototype.toolbar_button_onclick = function(name) {\n", + " if (name == 'download') {\n", + " this.handle_save(this, null);\n", + " } else {\n", + " this.send_message(\"toolbar_button\", {name: name});\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.toolbar_button_onmouseover = function(tooltip) {\n", + " this.message.textContent = tooltip;\n", + "};\n", + "mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Pan axes with left mouse, zoom with right\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n", + "\n", + "mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n", + "\n", + "mpl.default_extension = \"png\";var comm_websocket_adapter = function(comm) {\n", + " // Create a \"websocket\"-like object which calls the given IPython comm\n", + " // object with the appropriate methods. Currently this is a non binary\n", + " // socket, so there is still some room for performance tuning.\n", + " var ws = {};\n", + "\n", + " ws.close = function() {\n", + " comm.close()\n", + " };\n", + " ws.send = function(m) {\n", + " //console.log('sending', m);\n", + " comm.send(m);\n", + " };\n", + " // Register the callback with on_msg.\n", + " comm.on_msg(function(msg) {\n", + " //console.log('receiving', msg['content']['data'], msg);\n", + " // Pass the mpl event to the overriden (by mpl) onmessage function.\n", + " ws.onmessage(msg['content']['data'])\n", + " });\n", + " return ws;\n", + "}\n", + "\n", + "mpl.mpl_figure_comm = function(comm, msg) {\n", + " // This is the function which gets called when the mpl process\n", + " // starts-up an IPython Comm through the \"matplotlib\" channel.\n", + "\n", + " var id = msg.content.data.id;\n", + " // Get hold of the div created by the display call when the Comm\n", + " // socket was opened in Python.\n", + " var element = $(\"#\" + id);\n", + " var ws_proxy = comm_websocket_adapter(comm)\n", + "\n", + " function ondownload(figure, format) {\n", + " window.open(figure.imageObj.src);\n", + " }\n", + "\n", + " var fig = new mpl.figure(id, ws_proxy,\n", + " ondownload,\n", + " element.get(0));\n", + "\n", + " // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n", + " // web socket which is closed, not our websocket->open comm proxy.\n", + " ws_proxy.onopen();\n", + "\n", + " fig.parent_element = element.get(0);\n", + " fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n", + " if (!fig.cell_info) {\n", + " console.error(\"Failed to find cell for figure\", id, fig);\n", + " return;\n", + " }\n", + "\n", + " var output_index = fig.cell_info[2]\n", + " var cell = fig.cell_info[0];\n", + "\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_close = function(fig, msg) {\n", + " var width = fig.canvas.width/mpl.ratio\n", + " fig.root.unbind('remove')\n", + "\n", + " // Update the output cell to use the data from the current canvas.\n", + " fig.push_to_output();\n", + " var dataURL = fig.canvas.toDataURL();\n", + " // Re-enable the keyboard manager in IPython - without this line, in FF,\n", + " // the notebook keyboard shortcuts fail.\n", + " IPython.keyboard_manager.enable()\n", + " $(fig.parent_element).html('<img src=\"' + dataURL + '\" width=\"' + width + '\">');\n", + " fig.close_ws(fig, msg);\n", + "}\n", + "\n", + "mpl.figure.prototype.close_ws = function(fig, msg){\n", + " fig.send_message('closing', msg);\n", + " // fig.ws.close()\n", + "}\n", + "\n", + "mpl.figure.prototype.push_to_output = function(remove_interactive) {\n", + " // Turn the data on the canvas into data in the output cell.\n", + " var width = this.canvas.width/mpl.ratio\n", + " var dataURL = this.canvas.toDataURL();\n", + " this.cell_info[1]['text/html'] = '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n", + "}\n", + "\n", + "mpl.figure.prototype.updated_canvas_event = function() {\n", + " // Tell IPython that the notebook contents must change.\n", + " IPython.notebook.set_dirty(true);\n", + " this.send_message(\"ack\", {});\n", + " var fig = this;\n", + " // Wait a second, then push the new image to the DOM so\n", + " // that it is saved nicely (might be nice to debounce this).\n", + " setTimeout(function () { fig.push_to_output() }, 1000);\n", + "}\n", + "\n", + "mpl.figure.prototype._init_toolbar = function() {\n", + " var fig = this;\n", + "\n", + " var nav_element = $('<div/>')\n", + " nav_element.attr('style', 'width: 100%');\n", + " this.root.append(nav_element);\n", + "\n", + " // Define a callback function for later on.\n", + " function toolbar_event(event) {\n", + " return fig.toolbar_button_onclick(event['data']);\n", + " }\n", + " function toolbar_mouse_event(event) {\n", + " return fig.toolbar_button_onmouseover(event['data']);\n", + " }\n", + "\n", + " for(var toolbar_ind in mpl.toolbar_items){\n", + " var name = mpl.toolbar_items[toolbar_ind][0];\n", + " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", + " var image = mpl.toolbar_items[toolbar_ind][2];\n", + " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", + "\n", + " if (!name) { continue; };\n", + "\n", + " var button = $('<button class=\"btn btn-default\" href=\"#\" title=\"' + name + '\"><i class=\"fa ' + image + ' fa-lg\"></i></button>');\n", + " button.click(method_name, toolbar_event);\n", + " button.mouseover(tooltip, toolbar_mouse_event);\n", + " nav_element.append(button);\n", + " }\n", + "\n", + " // Add the status bar.\n", + " var status_bar = $('<span class=\"mpl-message\" style=\"text-align:right; float: right;\"/>');\n", + " nav_element.append(status_bar);\n", + " this.message = status_bar[0];\n", + "\n", + " // Add the close button to the window.\n", + " var buttongrp = $('<div class=\"btn-group inline pull-right\"></div>');\n", + " var button = $('<button class=\"btn btn-mini btn-primary\" href=\"#\" title=\"Stop Interaction\"><i class=\"fa fa-power-off icon-remove icon-large\"></i></button>');\n", + " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", + " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", + " buttongrp.append(button);\n", + " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", + " titlebar.prepend(buttongrp);\n", + "}\n", + "\n", + "mpl.figure.prototype._root_extra_style = function(el){\n", + " var fig = this\n", + " el.on(\"remove\", function(){\n", + "\tfig.close_ws(fig, {});\n", + " });\n", + "}\n", + "\n", + "mpl.figure.prototype._canvas_extra_style = function(el){\n", + " // this is important to make the div 'focusable\n", + " el.attr('tabindex', 0)\n", + " // reach out to IPython and tell the keyboard manager to turn it's self\n", + " // off when our div gets focus\n", + "\n", + " // location in version 3\n", + " if (IPython.notebook.keyboard_manager) {\n", + " IPython.notebook.keyboard_manager.register_events(el);\n", + " }\n", + " else {\n", + " // location in version 2\n", + " IPython.keyboard_manager.register_events(el);\n", + " }\n", + "\n", + "}\n", + "\n", + "mpl.figure.prototype._key_event_extra = function(event, name) {\n", + " var manager = IPython.notebook.keyboard_manager;\n", + " if (!manager)\n", + " manager = IPython.keyboard_manager;\n", + "\n", + " // Check for shift+enter\n", + " if (event.shiftKey && event.which == 13) {\n", + " this.canvas_div.blur();\n", + " // select the cell after this one\n", + " var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n", + " IPython.notebook.select(index + 1);\n", + " }\n", + "}\n", + "\n", + "mpl.figure.prototype.handle_save = function(fig, msg) {\n", + " fig.ondownload(fig, null);\n", + "}\n", + "\n", + "\n", + "mpl.find_output_cell = function(html_output) {\n", + " // Return the cell and output element which can be found *uniquely* in the notebook.\n", + " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", + " // IPython event is triggered only after the cells have been serialised, which for\n", + " // our purposes (turning an active figure into a static one), is too late.\n", + " var cells = IPython.notebook.get_cells();\n", + " var ncells = cells.length;\n", + " for (var i=0; i<ncells; i++) {\n", + " var cell = cells[i];\n", + " if (cell.cell_type === 'code'){\n", + " for (var j=0; j<cell.output_area.outputs.length; j++) {\n", + " var data = cell.output_area.outputs[j];\n", + " if (data.data) {\n", + " // IPython >= 3 moved mimebundle to data attribute of output\n", + " data = data.data;\n", + " }\n", + " if (data['text/html'] == html_output) {\n", + " return [cell, data, j];\n", + " }\n", + " }\n", + " }\n", + " }\n", + "}\n", + "\n", + "// Register the function which deals with the matplotlib target/channel.\n", + "// The kernel may be null if the page has been refreshed.\n", + "if (IPython.notebook.kernel != null) {\n", + " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", + "}\n" + ], + "text/plain": [ + "<IPython.core.display.Javascript object>" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "<img src=\"data:image/png;base64,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\" width=\"640\">" + ], + "text/plain": [ + "<IPython.core.display.HTML object>" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "Probability 0.346285\n", + "dtype: float64" + ] + }, + "execution_count": 35, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df = mk.run_scenario(pool_size, rho, successprob, issuerweights, zero_recov)\n", + "mk.plot_prob_over(df)\n", + "mk.plot_scenarios(df, bins)\n", + "mk.prob_over(df, 50)" + ] } ], "metadata": { |
