{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "<p style=\"text-align:center\">\n", " <a href=\"https://nbviewer.jupyter.org/github/twMr7/Python-Machine-Learning/blob/master/12-Matplotlib_Data_Visualization.ipynb\">\n", " Open In Jupyter nbviewer\n", " <img style=\"float: center;\" src=\"https://nbviewer.jupyter.org/static/img/nav_logo.svg\" width=\"120\" />\n", " </a>\n", "</p>" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "[](https://colab.research.google.com/github/twMr7/Python-Machine-Learning/blob/master/12-Matplotlib_Data_Visualization.ipynb)\n", "\n", "# 12. Matplotlib 資料視覺化\n", "\n", "**Matplotlib** 建構在 Numpy 陣列的基礎上,廣泛與 SciPy 家族的模組運作良好,是 Python 程式平台上最常使用的資料視覺化套件。 讓她如此受歡迎的最重要特點是,Matplotlib 可跨不同作業系統平台運作,而且和許多建構圖形的底層工具互通性良好。\n", "\n", "以下教材內容節錄自 [Matplotlib 官方文件](https://matplotlib.org/stable/contents.html)。\n", "\n", "+ [**12.1 基本概念**](#general-concepts)\n", "+ [**12.2 使用 Axes**](#axes-tutorial)\n" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "# 起始 inline 互動環境,另一種選項是 notebook\n", "%matplotlib inline\n", "\n", "# 載入必要的模組\n", "import numpy as np\n", "import matplotlib.pyplot as plt" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "<a id=\"general-concepts\"></a>\n", "\n", "## 12.1 基本概念\n", "\n", "Matplotlib 套件包含相當多的類別模組,[`matplotlib.pyplot`](https://matplotlib.org/api/_as_gen/matplotlib.pyplot.html) 是其中最主要提供高階介面的模組,最上層的繪圖狀態機環境(state-machine environment)就是由 `pyplot` 模組所提供,在這一個層次的繪圖環境下,可以使用簡單的函式把繪圖元素(如: 點、線、文字標籤)加到目前 **figure** 作用中的 **axes** 裡。\n", "\n", "往下一個階層是 Matplotlib 的物件導向介面(object-oriented interface),這裡的 `pyplot` 功能只會用來明確建立及維護 **figure** 和 **axes** 物件。 在這一個層介面裡,使用者要先明確使用 `pyplot` 產生 figure,再透過所產生的 figure 物件建立一個或多個 axes 物件,再使用 axes 物件來執行大多數的繪圖任務。\n", "\n", "要注意的是:\n", "+ 這兩種介面形成了兩種不同的程式風格,兩種各有不同的適用場合,但要避免兩種風格混合使用(就像這個教材)。\n", "+ 絕大多數接受資料繪製圖形物件的函式,都要求接受 `numpy.ndarray` 或 `numpy.ma.masked_array` 或相容類型(如:List)的輸入參數。" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### § 認識 Figure、Axes 及其他組成部件\n", "\n", "+ **Figure** - 可使用 [`pyplot.figure()`](https://matplotlib.org/api/_as_gen/matplotlib.pyplot.figure.html) 建立,一個 figure 可以包含很多的 axes。\n", "+ **Axes** - 可使用 [`pyplot.subplot`](https://matplotlib.org/api/_as_gen/matplotlib.pyplot.subplot.html) 建立,axes 是實際匯出圖形或影像的區域,一個 axes 物件只能屬於一個 figure,axes 區域裡通常使用兩個垂直座標軸 x axis 與 y axis 來繪製二維資料圖形。\n", "+ **Line2D** 及 **Markers** - 可使用 [`pyplot.plot()`](https://matplotlib.org/api/_as_gen/matplotlib.pyplot.plot.html) 或 [`axes.plot()`](https://matplotlib.org/api/_as_gen/matplotlib.axes.Axes.plot.html) 建立。\n", "\n", "" ] }, { "cell_type": "code", "execution_count": 2, "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", " fig.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 overridden (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", " event.shiftKey = false;\n", " // Send a \"J\" for go to next cell\n", " event.which = 74;\n", " event.keyCode = 74;\n", " manager.command_mode();\n", " manager.handle_keydown(event);\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,iVBORw0KGgoAAAANSUhEUgAAA+gAAALuCAYAAAA9jTxNAAAgAElEQVR4Xu3dBdBtBbkG4OW1E7swsbsFExMVFBELA1TsQMFWbBRREAtbRLGxsLvA7u6WEMUeO7jzrpl1Zp/NXyd+zv99Pmvmzug959//9z3vPnfuu1fsU5100kknDQ4CBAgQIECAAAECBAgQIEBgiwqcSkHfov5+OQECBAgQIECAAAECBAgQGAUUdG8EAgQIECBAgAABAgQIECCwBgQU9DUQghEIECBAgAABAgQIECBAgICC7j1AgAABAgQIECBAgAABAgTWgICCvgZCMAIBAgQIECBAgAABAgQIEFDQvQcIECBAgAABAgQIECBAgMAaEFDQ10AIRiBAgAABAgQIECBAgAABAgq69wABAgQIECBAgAABAgQIEFgDAgr6GgjBCAQIECBAgAABAgQIECBAQEH3HiBAgAABAgQIECBAgAABAmtAQEFfAyEYgQABAgQIECBAgAABAgQIKOjeAwQIECBAgAABAgQIECBAYA0IKOhrIAQjECBAgAABAgQIECBAgAABBd17gAABAgQIECBAgAABAgQIrAEBBX0NhGAEAgQIECBAYOMFTjjhhOGRj3zk8NnPfnY47rjjhotd7GLDk5/85OHOd77zxr+onyRAgAABAltAQEHfAuh+JQECBAgQWOsCn/zkJ4cb3ehG45gnnnjicK5znWuDRn7Zy1427LfffsNlL3vZ4c1vfvMG//xKf9kf//jH4XKXu9xw/PHHr/cjb3rTm8aC/oAHPGB4xzveMey6667DS17ykpW+rL9HgAABAgS2iICCvkXY/VICBAhsfoHXvOY1wz3vec/xhQ8//PBh9913X/KXnOpUpxr//BOf+MSw/fbbb/6BvGJpgU0t6Ne85jWHL3/5y6PBe97znmGnnXZaFY+nPe1p49nyU5/61MOhhx467LDDDsO3vvWt4drXvvaQ9/g5znGO4b///e/wf//3f8Mf/vCH4axnPeuqzOFFCRAgQIDA5hBQ0DeHotcgQIDAGhCYLegXvvCFhx/84AfDGc5whkUnU9DXQGhbaIQf/vCHw6UvfenxUvCf/vSnC06xqQX9iCOOGC87v8IVrjAceeSRw+lPf/pV2fYWt7jF8KEPfWjYeeedh3e+850n+x2Pfexjh1e/+tXDve51r+GZz3zmqszgRQkQ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AQIECBAgQIAAAQLVBBT0aomZlwABAgQIECBAgAABAgRaCijoLWO1FAECBAgQIECAAAECBAhUE1DQqyVmXgIECBAgQIAAAQIECBBoKaCgt4zVUgQIECBAgAABAgQIECBQTUBBr5aYeQkQIECAAAECBAgQIECgpYCC3jJWSxEgQIAAAQIECBAgQIBANQEFvVpi5iVAgAABAgQIECBAgACBlgIKestYLUWAAAECBAgQIECAAAEC1QQU9GqJmZcAAQIECBAgQIAAAQIEWgoo6C1jtRQBAgQIECBAgAABAgQIVBNQ0KslZl4CBAgQIECAAAECBAgQaCmgoLeM1VIECBAgQIAAAQIECBAgUE1AQa+WmHkJECBAgAABAgQIECBAoKWAgt4yVksRIECAAAECBAgQIECAQDUBBb1aYuYlQIAAAQIECBAgQIAAgZYCCnrLWC1FgAABAgQIECBAgAABAtUEFPRqiZmXAAECBAgQIECAAAECBFoKKOgtY7UUAQIECBAgQIAAAQIECFQTUNCrJWZeAgQIECBAgAABAgQIEGgpoKC3jNVSBAgQIECAAAECBAgQIFBNQEGvlph5CRAgQIAAAQIECBAgQKClgILeMlZLESBAgAABAgQIECBAgEA1AQW9WmLmJUCAAAECBAgQIECAAIGWAgp6y1gtRYAAAQIECBAgQIAAAQLVBBT0aomZlwABAgQIECBAgAABAgRaCijoLWO1FAECBAgQIECAAAECBAhUE1DQqyVmXgIECBAgQIAAAQIECBBoKaCgt4zVUgQIECBAgAABAgQIECBQTUBBr5aYeQkQIECAAAECBAgQIECgpYCC3jJWSxEgQIAAAQIECBAgQIBANQEFvVpi5iVAgAABAgQIECBAgACBlgIKestYLUWAAAECBAgQIECAAAEC1QQU9GqJmZcAAQIECBAgQIAAAQIEWgoo6C1jtRQBAgQIECBAgAABAgQIVBNQ0KslZl4CBAgQIECAAAECBAgQaCmgoLeM1VIECBAgQIAAAQIECBAgUE1AQa+WmHkJECBAgAABAgQIECBAoKWAgt4yVksRIECAAAECBAgQIECAQDUBBb1aYuYlQIAAAQIECBAgQIAAgZYCCnrLWC1FgAABAgQIECBAgAABAtUEFPRqiZmXAAECBAgQIECAAAECBFoKKOgtY7UUAQIECBAgQIAAAQIECFQTUNCrJWZeAgQIECBAgAABAgQIEGgpoKC3jNVSBAgQIECAAAECBAgQIFBNQEGvlph5CRAgQIAAAQIECBAgQKClgILeMlZLESBAgAABAgQIECBAgEA1AQW9WmLmJUCAAAECBAgQIECAAIGWAgp6y1gtRYAAAQIECBAgQIAAAQLVBBT0aomZlwABAgQIECBAgAABAgRaCijoLWO1FAECBAgQIECAAAECBAhUE1DQqyVmXgIECBAgQIAAAQIECBBoKaCgt4zVUgQIECBAgAABAgQIECBQTUBBr5aYeQkQIECAAAECBAgQIECgpYCC3jJWSxEgQIAAAQIECBAgQIBANQEFvVpi5iVAgAABAgQIECBAgACBlgIKestYLUWAAAECBAgQIECAAAEC1QQU9GqJmZcAAQIECBAgQIAAAQIEWgoo6C1jtRQBAgQIECBAgAABAgQIVBNQ0KslZl4CBAgQIECAAAECBAgQaCmgoLeM1VIECBAgQIAAAQIECBAgUE1AQa+WmHkJECBAgAABAgQIECBAoKWAgt4yVksRIECAAAECBAgQIECAQDUBBb1aYuYlQIAAAQIECBAgQIAAgZYCCnrLWC1FgAABAgQIECBAgAABAtUEFPRqiZmXAAECBAgQIECAAAECBFoKKOgtY7UUAQIECBAgQIAAAQIECFQTUNCrJWZeAgQIECBAgAABAgQIEGgpoKC3jNVSBAgQIECAAAECBAgQIFBNQEGvlph5CRAgQIAAAQIECBAgQKClgILeMlZLESBAgAABAgQIECBAgEA1AQW9WmLmJUCAAAECBAgQIECAAIGWAgp6y1gtRYAAAQIECBAgQIAAAQLVBBT0aomZlwABAgQIECBAgAABAgRaCijoLWO1FAECBAgQIECAAAECBAhUE1DQqyVmXgIECBAgQIAAAQIECBBoKaCgt4zVUgQIECBAgAABAgQIECBQTUBBr5aYeQkQIECAAAECBAgQIECgpYCC3jJWSxEgQIAAAQIECBAgQIBANQEFvVpi5iVAgAABAgQIECBAgACBlgIKestYLUWAAAECBAgQIECAAAEC1QQU9GqJmZcAAQIECBAgQIAAAQIEWgoo6C1jtRQBAgQIECBAgAABAgQIVBNQ0KslZl4CBAgQIECAAAECBAgQaCmgoLeM1VIECBAgQIAAAQIECBAgUE1AQa+WmHkJECBAgAABAgQIECBAoKWAgt4yVksRIECAAAECBAgQIECAQDUBBb1aYuYlQIAAAQIECBAgQIAAgZYCCnrLWC1FgAABAgQIECBAgAABAtUEFPRqiZmXAAECBAgQIECAAAECBFoKKOgtY7UUAQIECBAgQIAAAQIECFQTUNCrJWZeAgQIECBAgAABAgQIED/wrZYAACAASURBVGgpoKC3jNVSBAgQIECAAAECBAgQIFBNQEGvlph5CRAgQIAAAQIECBAgQKClgILeMlZLESBAgAABAgQIECBAgEA1AQW9WmLmJUCAAAECBAgQIECAAIGWAgp6y1gtRYAAAQIECBAgQIAAAQLVBBT0aomZlwABAgQIECBAgAABAgRaCijoLWO1FAECBAgQIECAAAECBAhUE1DQqyVmXgIECBAgQIAAAQIECBBoKaCgt4zVUgQIECBAgAABAgQIECBQTUBBr5aYeQkQIECAAAECBAgQIECgpYCC3jJWSxEgQIAAAQIECBAgQIBANQEFvVpi5iVAgAABAgQIECBAgACBlgIKestYLUWAAAECBAgQIECAAAEC1QQU9GqJmZcAAQIECBAgQIAAAQIEWgoo6C1jtRQBAgQIECBAgAABAgQIVBNQ0KslZl4CBAgQIECAAAECBAgQaCmgoLeM1VIECBAgQIAAAQIECBAgUE1AQa+WmHkJECBAgAABAgQIECBAoKWAgt4yVksRIECAAAECBAgQIECAQDUBBb1aYuYlQIAAAQIECBAgQIAAgZYCCnrLWC1FgAABAgQIECBAgAABAtUEFPRqiZmXAAECBAgQIECAAAECBFoKKOgtY7UUAQIECBAgQIAAAQIECFQTUNCrJWZeAgQIECBAgAABAgQIEGgpoKC3jNVSBAgQIECAAAECBAgQIFBNQEGvlph5CRAgQIAAAQIECBAgQKClgILeMlZLESBAgAABAgQIECBAgEA1AQW9WmLmJUCAAAECBAgQIECAAIGWAgp6y1gtRYAAAQIECBAgQIAAAQLVBBT0aomZlwABAgQIECBAgAABAgRaCijoLWO1FAECBAgQIECAAAECBAhUE1DQqyVmXgIECBAgQIAAAQIECBBoKaCgt4zVUgQIECBAgAABAgQIECBQTUBBr5aYeQkQIECAAAECBAgQIECgpYCC3jJWSxEgQIAAAQIECBAgQIBANQEFvVpi5iVAgAABAgQI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IFBNQEGvlph5CRAgQIAAAQIECBAgQKClgILeMlZLESBAgAABAgQIECBAgEA1AQW9WmLmJUCAAAECBAgQIECAAIGWAgp6y1gtRYAAAQIECBAgQIAAAQLVBBT0aomZlwABAgQIECBAgAABAgRaCijoLWO1FAECBAgQIECAAAECBAhUE1DQqyVmXgIECBAgQIAAAQIECBBoKaCgt4zVUgQIECBAgAABAgQIECBQTUBBr5aYeQkQIECAAAECBAgQIECgpYCC3jJWSxEgQIAAAQIECBAgQIBANQEFvVpi5iVAgAABAgQIECBAgACBlgIKestYLUWAAAECBAgQIECAAAEC1QQU9GqJmZcAAQIECBAgQIAAAQIEWgoo6C1jtRQBAgQIECBAgAABAgQIVBNQ0KslZl4CBAgQIECAAAECBAgQaCmgoLeM1VIECBAgQIAAAQIECBAgUE1AQa+WmHkJECBAgAABAgQIECBAoKWAgt4yVksRIECAAAECBAgQIECAQDUBBb1aYuYlQIAAAQIECBAgQIAAgZYCCnrLWC1FgAABAgQIECBAgAABAtUEFPRqiZmXAAECBAgQIECAAAECBFoKKOgtY7UUAQIECBAgQIAAAQIECFQTUNCrJWZeAgQIECBAgAABAgQIEGgpoKC3jNVSBAgQIECAAAECBAgQIFBNQEGvlph5CRAgQIAAAQIECBAgQKClgILeMlZLESBAgAABAgQIECBAgEA1AQW9WmLmJUCAAAECBAgQIECAAIGWAgp6y1gtRYAAAQIECBAgQIAAAQLVBBT0aomZlwABAgQIECBAgAABAgRaCijoLWO1FAECBAgQIECAAAECBAhUE1DQqyVmXgIECBAgQIAAAQIECBBoKaCgt4zVUgQIECBAgAABAgQIECBQTUBBr5aYeQkQIECAAAECBAgQIECgpYCC3jJWSxEgQIAAAQIECBAgQIBANQEFvVpi5iVAgAABAgQIECBAgACBlgIKestYLUWAAAECBAgQIECAAAEC1QQU9GqJmZcAAQIECBAgQIAAAQIEWgoo6C1jtRQBAgQIECBAgAABAgQIVBNQ0KslZl4CBAgQIECAAAECBAgQaCmgoLeM1VIECBAgQIAAAQIECBAgUE1AQa+WmHkJECBAgAABAgQIECBAoKWAgt4yVksRIECAAAECBAgQIECAQDUBBb1aYuYlQIAAAQIECBAgQIAAgZYCCnrLWC1FgAABAgQIECBAgAABAtUEFPRqiZmXAAECBAgQIECAAAECBFoKKOgtY7UUAQIECBAgQIAAAQIECFQTUNCrJWZeAgQIECBAgAABAgQIEGgpoKC3jNVSBAgQIECAAAECBAgQIFBNQEGvlph5CRAgQIAAAQIECBAgQKClgILeMlZLESBAgAABAgQIECBAgEA1AQW9WmLmJUCAAAECBAgQIECAAIGWAgp6y1gtRYAAAQIECBAgQIAAAQLVBBT0aomZlwABAgQIECBAgAABAgRaCijoLWO1FAECBAgQIECAAAECBAhUE1DQqyVmXgIECBAgQIAAAQIECBBoKaCgt4zVUgQIECBAgAABAgQIECBQTUBBr5aYeQkQIECAAAECBAgQIECgpYCC3jJWSxEgQIAAAQIECBAgQIBANQEFvVpi5iVAgAABAgQIECBAgACBlgIKestYLUWAAAECBAgQIECAAAEC1QQU9GqJmZcAAQIECBAgQIAAAQIEWgoo6C1jtRQBAgQIECBAgAABAgQIVBNQ0KslZl4CBAgQIECAAAECBAgQaCmgoLeM1VIECBAgQIAAAQIECBAgUE1AQa+WmHkJECBAgAABAgQIECBAoKWAgt4yVksRIECAAAECBAgQIECAQDUBBb1aYuYlQIAAAQIECBAgQIAAgZYCCnrLWC1FgAABAgQIECBAgAABAtUEFPRqiZmXAAECBAgQIECAAAECBFoKKOgtY7UUAQIECBAgQIAAAQIECFQTUNCrJWZeAgQIECBAgAABAgQIEGgpoKC3jNVSBAgQIECAAAECBAgQIFBNQEGvlph5CRAgQIAAAQIECBAgQKClgILeMlZLESBAgAABAgQIECBAgEA1AQW9WmLmJUCAAAECBAgQIECAAIGWAgp6y1gtRYAAAQIECBAgQIAAAQLVBBT0aomZlwABAgQIECBAgAABAgRaCijoLWO1FAECBAgQIECAAAECBAhUE1DQqyVmXgIECBAgQIAAAQIECBBoKaCgt4zVUgQIECBAgAABAgQIECBQTUBBr5aYeQkQIECAAAECBAgQIECgpYCC3jJWSxEgQIAAAQIECBAgQIBANQEFvVpi5iVAgAABAgQIECBAgACBlgIKestYLUWAAAECBAgQIECAAAEC1QQU9GqJmZcAAQIECBAgQIAAAQIEWgoo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JUCAAAECBAgQIECAAIGWAgp6y1gtRYAAAQIECBAgQIAAAQLVBBT0aomZlwABAgQIECBAgAABAgRaCijoLWO1FAECBAgQIECAAAECBAhUE1DQqyVmXgIECBAgQIAAAQIECBBoKaCgt4zVUgQIECBAgAABAgQIECBQTUBBr5aYeQkQIECAAAECBAgQIECgpYCC3jJWSxEgQIAAAQIECBAgQIBANQEFvVpi5iVAgAABAgQIECBAgACBlgIKestYLUWAAAECBAgQIECAAAEC1QQU9GqJmZcAAQIECBAgQIAAAQIEWgoo6C1jtRQBAgQIECBAgAABAgQIVBNQ0KslZl4CBAgQIECAAAECBAgQaCmgoLeM1VIECBAgQIAAAQIECBAgUE1AQa+WmHkJECBAgAABAgQIECBAoKWAgt4yVksRIECAAAECBAgQIECAQDUBBb1aYuYlQIAAAQIECBAgQIAAgZYCCnrLWC1FgAABAgQIECBAgAABAtUEFPRqiZmXAAECBAgQIECAAAECBFoKKOgtY7UUAQIECBAgQIAAAQIECFQTUNCrJWZeAgQIECBAgAABAgQIEGgpoKC3jNVSBAgQIECAAAECBAgQIFBNQEGvlph5CRAgQIAAAQIECBAgQKClgILeMlZLESBAgAABAgQIECBAgEA1AQW9WmLmJUCAAAECBAgQIECAAIGWAgp6y1gtRYAAAQIECBAgQIAAAQLVBBT0aomZlwABAgQIECBAgAABAgRaCijoLWO1FAECBAgQIECAAAECBAhUE1DQqyVmXgIECBAgQIAAAQIECBBoKaCgt4zVUgQIECBAgAABAgQIECBQTUBBr5aYeQkQIECAAAECBAgQIECgpYCC3jJWSxEgQIAAAQIECBAgQIBANQEFvVpi5iVAgAABAgQIECBAgACBlgIKestYLUWAAAECBAgQIECAAAEC1QQU9GqJmZcAAQIECBAgQIAAAQIEWgoo6C1jtRQBAgQIECBAgAABAgQIVBNQ0KslZl4CBAgQIECAAAECBAgQaCmgoLeM1VIECBAgQIAAAQIECBAgUE1AQa+WmHkJECBAgAABAgQIECBAoKWAgt4yVksRIECAAAECBAgQIECAQDUBBb1aYuYlQIAAAQIECBAgQIAAgZYCCnrLWC1FgAABAgQIECBAgAABAtUEFPRqiZmXAAECBAgQIECAAAEC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aomZlwABAgQIECBAgAABAgRaCijoLWO1FAECBAgQIECAAAECBAhUE1DQqyVmXgIECBAgQIAAAQIECBBoKaCgt4zVUgQIECBAgAABAgQIECBQTUBBr5aYeQkQIECAAAECBAgQIECgpYCC3jJWSxEgQIAAAQIECBAgQIBANQEFvVpi5iVAgAABAgQIECBAgACBlgIKestYLUWAAAECBAgQIECAAAEC1QQU9GqJmZcAAQIECBAgQIAAAQIEWgoo6C1jtRQBAgQIECBAgAABAgQIVBNQ0KslZl4CBAgQIECAAAECBAgQaCmgoLeM1VIECBAgQIAAAQIECBAgUE1AQa+WmHkJECBAgAABAgQIECBAoKWAgt4yVksRIECAAAECBAgQIECAQDUBBb1aYuYlQIAAAQIECBAgQIAAgZYCCnrLWC1FgAABAgQIECBAgAABAtUEFPRqiZmXAAECBAgQIECAAAECBFoKKOgtY7UUAQIECBAgQIAAAQIECFQTUNCrJWZeAgQIECBAgAABAgQIEGgpoKC3jNVSBAgQIECAAAECBAgQIFBNQEGvlph5CRAgQIAAAQIECBAgQKClgILeMlZLESBAgAABAgQIECBAgEA1AQW9WmLmJUCAAAECBAgQIECAAIGWAgp6y1gtRYAAAQIECBAgQIAAAQLVBBT0aomZlwABAgQIECBAgAABAgRaCijoLWO1FAECBAgQIECAAAECBAhUE1DQqyVmXgIECBAgQIAAAQIECBBoKaCgt4zVUgQIECBAgAABAgQIECBQTUBBr5aYeQkQIECAAAECBAgQIECgpYCC3jJWSxEgQIAAAQIECBAgQIBANQEFvVpi5iVAgAABAgQIECBAgACBlgIKestYLUWAAAECBAgQIECAAAEC1QQU9GqJmZcAAQIECBAgQIAAAQIEWgoo6C1jtRQBAgQIECBAgAABAgQIVBNQ0KslZl4CBAgQIECAAAECBAgQaCmgoLeM1VIECBAgQIAAAQIECBAgUE1AQa+WmHkJECBAgAABAgQIECBAoKWAgt4yVksRIECAAAECBAgQIECAQDUBBb1aYuYlQIAAAQIECBAgQIAAgZYCCnrLWC1FgAABAgQIECBAgAABAtUEFPRqiZmXAAECBAgQIECAAAECBFoKKOgtY7UUAQIECBAgQIAAAQIECFQTUNCrJWZeAgQIECBAgAABAgQIEGgpoKC3jNVSBAgQIECAAAECBAgQIFBNQEGvlph5CRAgQIAAAQIECBAgQKClgILeMlZLESBAgAABAgQIECBAgEA1AQW9WmLmJUCAAAECBAgQIECAAIGWAgp6y1gtRYAAAQIECBAgQIAAAQLVBBT0aomZlwABAgQIECBAgAABAgRaCijoLWO1FAECBAgQIECAAAECBAhUE1DQqyVmXgIECBAgQIAAAQIECBBoKaCgt4zVUgQIECBAgAABAgQIECBQTUBBr5aYeQkQIECAAAECBAgQIECgpYCC3jJWSxEgQIAAAQIECBAgQIBANQEFvVpi5iVAgAABAgQIECBAgACBlgIKestYLUWAAAECBAgQIECAAAEC1QQU9GqJmZcAAQIECBAgQIAAAQIEWgoo6C1jtRQBAgQIECBAgAABAgQIVBNQ0KslZl4CBAgQIECAAAECBAgQaCmgoLeM1VIECBAgQIAAAQIECBAgUE1AQa+WmHkJECBAgAABAgQIECBAoKWAgt4yVksRIECAAAECBAgQIECAQDUBBb1aYuYlQIAAAQIECBAgQIAAgZYCCnrLWC1FgAABAgQIECBAgAABAtUEFPRqiZmXAAECBAgQIECAAAECBFoKKOgtY7UUAQIECBAgQIAAAQIECFQTUNCrJWZeAgQIECBAgAABAgQIEGgpoKC3jNVSBAgQIECAAAECBAgQIFBNQEGvlph5CRAgQIAAAQIECBAgQKClgILeMlZLESBAgAABAgQIECBAgEA1AQW9WmLmJUCAAAECBAgQIECAAIGWAgp6y1gtRYAAAQIECBAgQIAAAQLVBBT0aomZlwABAgQIECBAgAABAgRaCijoLWO1FAECBAgQIECAAAECBAhUE1DQqyVmXgIECBAgQIAAAQIECBBoKaCgt4zVUgQIECBAgAABAgQIECBQTUBBr5aYeQkQIECAAAECBAgQIECgpYCC3jJWSxEgQIAAAQIECBAgQIBANQEFvVpi5iVAgAABAgQIECBAgACBlgIKestYLUWAAAECBAgQIECAAAEC1QQU9GqJmZcAAQIECBAgQIAAAQIEWgoo6C1jtRQBAgQIECBAgAABAgQIVBNQ0KslZl4CBAgQIECAAAECBAgQaCmgoLeM1VIECBAgQIAAAQIECBAgUE1AQa+WmHkJECBAgAABAgQIECBAoKWAgt4yVksRIECAAAECBAgQIECAQDUBBb1aYuYlQIAAAQIECBAgQIAAgZYCCnrLWC1FgAABAgQIECBAgAABAtUEFPRqiZmXAAECBAgQIECAAAECBFoKKOgtY7UUAQIECBAgQIAAAQIECFQTUNCrJWZeAgQIECBAgAABAgQIEGgpoKC3jNVSBAgQIECAAAECBAgQIFBNQEGvlph5CRAgQIAAAQIECBAgQKClgILeMlZLESBAgAABAgQIECBAgEA1AQW9WmLmJUCAAAECBAgQIECAAIGWAgp6y1gtRYAAAQIECBAgQIAAAQLVBBT0aomZlwABAgQIECBAgAABAgRaCijoLWO1FAECBAgQIECAAAECBAhUE1DQqyVmXgIECBAgQIAAAQIECBBoKaCgt4zVUgQIECBAgAABAgQIECBQTUBBr5aYeQkQIECAAAECBAgQIECgpYCC3jJWSxEgQIAAAQIECBAgQIBANQEFvVpi5iVAgAABAgQIECBAgACBlgIKestYLUWAAAECBAgQIECAAAEC1QQU9GqJmZcAAQIECBAgQIAAAQIEWgoo6C1jtRQBAgQIECBAgAABAgQIVBNQ0KslZl4CBAgQIECAAAECBAgQaCmgoLeM1VIECBAgQIAAAQIECBAgUE1AQa+WmHkJECBAgAABAgQIECBAoKWAgt4yVksRIECAAAECBAgQIECAQDUBBb1aYuYlQIAAAQIECBAgQIAAgZYCCnrLWC1FgAABAgQIECBAgAABAtUEFPRqiZmXAAECBAgQIECAAAECBFoKKOgtY7UUAQIECBAgQIAAAQIECFQTUNCrJWZeAgQIECBAgAABAgQIEGgpoKC3jNVSBAgQIECAAAECBAgQIFBNQEGvlph5CRAgQIAAAQIECBAgQKClgILeMlZLESBAgAABAgQIECBAgEA1AQW9WmLmJUCAAAECBAgQIECAAIGWAgp6y1gtRYAAAQIECBAgQIAAAQLVBBT0aomZlwABAgQIECBAgAABAgRaCijoLWO1FAECBAgQIECAAAECBAhUE1DQqyVmXgIECBAgQIAAAQIECBBoKaCgt4zVUgQIECBAgAABAgQIECBQTUBBr5aYeQkQIECAAAECBAgQIECgpYCC3jJWSxEgQIAAAQIECBAgQIBANQEFvVpi5iVAgAABAgQIECBAgACBlgIKestYLUWAAAECBAgQIECAAAEC1QQU9GqJmZcAAQIECBAgQIAAAQIEWgoo6C1jtRQBAgQIECBAgAABAgQIVBNQ0KslZl4CBAgQIECAAAECBAgQaCmgoLeM1VIECBAgQIAAAQIECBAgUE1AQa+WmHkJECBAgAABAgQIECBAoKWAgt4yVksRIECAAAECBAgQIECAQDUBBb1aYuYlQIAAAQIECBAgQIAAgZYCCnrLWC1FgAABAgQIECBAgAABAtUEFPRqiZmXAAECBAgQIECAAAECBFoKKOgtY7UUAQIECBAgQIAAAQIECFQTUNCrJWZeAgQIECBAgAABAgQIEGgpoKC3jNVSBAgQIECAAAECBAgQIFBNQEGvlph5CRAgQIAAAQIECBAgQKClgILeMlZLESBAgAABAgQIECBAgEA1AQW9WmLmJUCAAAECBAgQIECAAIGWAgp6y1gtRYAAAQIECBAgQIAAAQLVBBT0aomZlwABAgQIECBAgAABAgRaCijoLWO1FAECBAgQIECAAAECBAhUE1DQqyVmXgIECBAgQIAAAQIECBBoKaCgt4zVUgQIECBAgAABAgQIECBQTUBBr5aYeQkQIECAAAECBAgQIECgpYCC3jJWSxEgQIAAAQIECBAgQIBANYH/B9gBRp9YiMqCAAAAAElFTkSuQmCC\" 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", " fig.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 overridden (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", " event.shiftKey = false;\n", " // Send a \"J\" for go to next cell\n", " event.which = 74;\n", " event.keyCode = 74;\n", " manager.command_mode();\n", " manager.handle_keydown(event);\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,iVBORw0KGgoAAAANSUhEUgAAA+gAAALuCAYAAAA9jTxNAAAgAElEQVR4Xuy9CdgVxZm3/xDwQ0EddYyaQUEDigioqAGiQZCwCOLuZHGiQMQlLsxozCQuoLgnmsREI0EEDCYz0YkmARQFlC2AzCiIuCBxQTBRJ1FiMCBK4Lt+/f8333kP5z1LdfV5q/u967q4UE7X09X3U0v/6qmqbrFt27ZtRoIABCAAAQhAAAIQgAAEIAABCECgSQm0QKA3KX9uDgEIQAACEIAABCAAAQhAAAIQiAgg0KkIEIAABCAAAQhAAAIQgAAEIACBAAgg0ANwAkWAAAQgAAEIQAACEIAABCAAAQgg0KkDEIAABCAAAQhAAAIQgAAEIACBAAgg0ANwAkWAAAQgAAEIQAACEIAABCAAAQgg0KkDEIAABCAAAQhAAAIQgAAEIACBAAgg0ANwAkWAAAQgAAEIQAACEIAABCAAAQgg0KkDEIAABCAAAQhAAAIQgAAEIACBAAgg0ANwAkWAAAQgAAEIQAACEIAABCAAAQgg0KkDEIAABCAAAQhAAAIQgAAEIACBAAgg0ANwAkWAAAQgAAEIQAACEIAABCAAAQgg0KkDEIAABCAAAQhAAAIQgAAEIACBAAgg0ANwAkWAAAQgAAEIQAACEIAABCAAAQgg0KkDEIAABCAAAQhAoAyBTz75xHbaaScYQQACEIAABFIngEBPHTE3gAAEKhH4+9//bk888YS1bdvW+vbtW+lye/jhh+0Xv/iF3Xjjjda1a9eK1zd2waOPPmrdu3e39u3bO9sgYzYIPPPMM/b973/fTj/9dPvSl77krdDPP/+83XzzzXbooYfauHHjvNnFUH0ILFu2zPr372/HH3+8TZs2reRNP/roI/vMZz5jRx55pD311FPWokWLmgqnPLfffrt97Wtfs3/5l38pmfdXv/pV1AdeeumldsQRR9Rkv9TF1113nenZJk2aZPvss88Ol8ybN89+8pOfROU57bTTEt8PAxCAAAQg4I8AAt0fSyxBAAKOBNauXWudOnWyz372s/biiy9ay5Yty1rSy+6///u/2+GHH27//d//ba1bt675zn/84x8jYX7QQQfZ6tWra37prvmGCTL85je/sW9+85vRi/bUqVPt4IMPTmAt+1nfeOMN+/jjj0s+iBjtueeeO/z229/+NhIi1157bTSx4yu99NJL0SRRu3btbN26dUHXI1/PnCc7P/zhD+2KK66wr3/965GYLZUk3E899VQbNmyYTZ8+vebH12SixPn1119vEs7FSROUXbp0sddee81WrVpVU/v+85//bJdffrkde+yx9o1vfGO76SFDhtjjjz9ua9assQ4dOuxwz5/97Gc2YsQIu+2226L84qB+cOLEifapT32q5mckAwQgAAEI+COAQPfHEksQgEACAnpBnjJliunF8dxzzy1raevWrdanTx9bvHhxJFzvuOOOmu9866232tVXX20/+MEP7OKLL7add965Zhtxhnfeecf23XffivkVYdVLejWp8GX+rLPOilYNKN199912ySWXVGMit9dIzEjIFCdN7Egwb9myxR544IEGP0t8PPLII5GQUbS0OP3bv/1bVT4sBVUTS5o0WLRoUWS/1iSBduCBB9aareT1mzdvti984QuR2Cw1UdHYTST0fvrTn0b1TEJx9913jybAzjjjDBs1apSXsrka+fDDD6Pn+Y//+A979dVXowk8lW3w4MGRuGzVqpWr6WjSRpM3Tz75ZBRJL5UkZNUvic+FF15Y870qCXRNug0fPjzy23333VfSvuq0JhPbtGnT4Pc333wzqjuaACis87UI9G9/+9v21a9+1X75y1/at771Lfve975X8zPGGf7whz/YAQccYNu2bYtWHbz11lsIfmeaZIQABJorAQR6c/U8zw2BwAi88sordthhh0Uvm/pvvXQr0vn++++XLKkE0ezZs6MX7FJLOJXpxBNPjF7ii5ME0SGHHGIS1nqB1EuvBPouu+xSMtrUGCpF/jdu3BjZSVOgaznq+eefHz2nRGY19wrMvV6Lo8mV//3f/91uU8vMtYz4nHPOiVYYxNHyWm76wgsvOG+XGD16tN11112RWNSET61J9TGJyCy+3z/8wz/YnDlz7JhjjqmqKLNmzYomxd59992S1w8YMMB+/etf26677lqVPZ8XPfvss/blL385mjQolY466qgoqv1P//RPNd9WInLvvfeO2r5WP5SKHEsYq72pH9I1+++/f833KSfQ4+j573//+4p2NRG0cuXKBiLdl0BXP3bcccfZc889F7UhtSWXpHag9hCn3/3ud5FdEgQgAAEIVE8AgV49K66EAARSJqAX8QULFkR7MRUhU8RISzRdU2NLSn/+859HL6CKDGpJp6KOeklX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337bvvzlL9svf/nLqm0VX0gjdEZHRghAAAKJCNS7/83KuIRAT1StyAwBCEAgEYF6j02JCttMMiPQPTh627Zt1rFjR1u7dq3NmDHDTjzxxMjqpEmTbNSoUdavXz+bO3duVXdS5FyR93333demTZtmxxxzTJTv73//u91666126qmnWvfu3auyVeoiGqEzOjJCAAIQSESgnv1vlsYlBHqiakVmCEAAAokI1HNsSlTQZpQZge7B2bNmzbLBgwdHYnzixIkNLA4cONDmzJljq1evtoMPPrji3STm58+fHwl6/bfvRCP0TRR7EIAABKojKOKSDQAAIABJREFUUM/+N0vjEgK9uvrDVRCAAATSIFDPsSmN8ufRJgLdg1eHDx9uU6dONS0njKPnsVntI7/44ott3LhxNnbs2LJ3e/PNN+3AAw+MlsNrSXsaiUaYBlVsQgACEKhMoJ79b5bGJQR65brDFRCAAATSIlDPsSmtZ8ibXQS6B48ef/zx0T7z9evX2x577NHAovah64C3ESNG2JQpU8reTXvLv/rVr9o111xjN910k4eS7WiCRpgKVoxCAAIQqEignv1vlsYlBHrFqsMFEIAABFIjUM+xKbWHyJlhBLoHh2rp+po1a+yTTz7Zwdq6deusffv2NmjQIHviiSfK3m3MmDGRML/nnnui67/73e/aY489Fp3aLpF/8803V3UifNzQSt1M5TnggAPs9ddf9/DkmIAABCAAgWoJ1PMlKLRxqVCEMzZVW2O4DgIQgED6BOo5NqX/NPm4AwLdgx933XVX05933nlnB2ubNm2KTnLXaewrV64se7fLLrvMdIL7tddea/fee290bc+ePe3VV1+1VatWWevWraP96TolvlxCoHtwKiYgAAEIeCZQz5eg0MYlBLrnyoQ5CEAAAp4I1HNs8lTk3JtBoHtw8W677RaJcH2vvDht3LjR2rZta4cffritWLGi7N0uvPDCSJjvvPPONmHCBDvnnHOsRYsWUR59T11L34899ljTd21dE43QlRz5IAABCCQjUM/+N0vjUqF4Z3VXsjpGbghAAAK1Eqjn2FRr2Zrr9Qh0D54/5JBDoiXjWuIeC+rYrD691qFDh+iU98cff7zs3W688cboIDkdLHfRRRc1uHbr1q3Rp9y0lP7DDz+MRL9LohG6UCMPBCAAgeQE6tn/ZmlcQqAnr1tYgAAE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AAIQgAAEIAABCHgmgED3DBRzEIAABCAAAQhAAAIQgAAEIAABFwIIdBdq5IEABCAAAQhAAAIQgAAEIAABCHgmgED3DBRzEIAABCAAAQhAAAIQgAAEIAABFwIIdBdq5IEABCAAAQhAAAIQgAAEIAABCHgmgED3DBRzEIAABCAAAQhAAAIQgAAEIAABFwIIdBdqgeVZtGiRXX/99bZ06VJr1aqV9enTx2655Rbr2rVrTSV96aWX7Oqrr7YFCxbYli1brGfPnjZu3Dg77rjjarITysU+uGzcuNFuv/12e+ihh2zNmjW233772dFHH2033nijde7cOZRHrbkcPtgU31T1pl+/frZt2zabN2+e9e3bt+ZyNXUGn1wWL15s48ePt2eeecbeffddO+qoo2zYsGE2evRo+9SnPtXUj1rz/X2xWb16tV133XX29NNP23vvvWddunSxs88+2y699FJr2bJlzeUKIcNbb71ljz32mP3oRz8y9aN33323XXLJJTUVLW/9rx7eV53JGxsfXBibqm9ejE0NWeVpbPLRlkQnj+OSnouxqfp+IrQrEeiheaTG8sycOdNOPvnkKFevXr3so48+suXLl1ubNm1s4cKF1qNHj6osKo+EvQb9I488MsqvF2il6dOn25AhQ6qyE8pFPri8+eabdtppp9lzzz1nhx56aCQkXn31VVu5cqW1bt06eiHv379/KI9cdTl8sCm+merdEUccEQ1ySlkU6D65SKBJiEtwduvWzdq1a2fLli2zt99+27785S/bL3/5y6r9FcKFvthosuILX/iCffzxx3bsscfa7rvvbnpZ/OCDD+z000+3Rx55JITHrakM9913n51//vkN8tQq0PPW/wqGrzqTNzY+uDA2Vd9EGZsassrT2OSjLYlOHsclPRdjU/X9RIhXItBD9EqVZVKksmPHjrZ27VqbMWOGnXjiiVHOSZMm2ahRo6Jo5ty5c6uypmvnz59vEydOjPIqzZo1y0466SRr3759JExbtGhRla2mvsgXl7POOiviKibnnHPO9seaOnWqDR8+3Dp16hRFy3baaaemfuSq7++LTfENr7nmmmjVhsToCy+8kDmB7pOLBKcmu/bdd1+bNm2aHXPMMRGuv//973brrbfaqaeeat27d6/aZ019oU82YqGJCnHRagIlrS4YOHBgNPGlF664H2vq5672/uoDlixZ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SyTomYYVhRFAAIFMAsWMTZkaWkaFSdANOnvEiBEyY8aMOne3J0+eLNddd51MmDBBxo8f3+C3ffnll3LIIYfIBRdc4Hbiax6vv/66nHbaafLzn/9cfve733m3mknoTUdBBBBAIJNAMdffmOISCXqmYUVhBBBAIJNAMWNTpoaWUWESdIPOPvfcc9195lu3bpXDDjusVo16H/oZZ5whI0eOlOnTpzf6bbp7/sYbb8i6devkmGOO2fv5adOmydVXXy3PP/+8DBkypNF66vsAk9CbjoIIIIBAJoFirr8xxSUS9EzDisIIIIBAJoFixqZMDS2jwiToBp2tl65v3LhRvvnmm/1q27x5s3To0EEGDRokL7zwQqPfpon5eeedJ0cffbQ88sgjcs4558iOHTvc/z3uuONEL3XPcjAJs+hRFgEEEPAXKOb6G1NcIkH3H1OURAABBLIKFDM2ZW1ruZQnQTfo6YMPPlj0P5988sl+tWlyrU9y79atm3vIW1OOBQsWuIReD90tP+CAA0Qvf9fd85YtWzZaRfVEq+uD+geD9u3by4YNGxqthw8ggAACCNgJFPNHUGhxqWYSTmyyG1PUhAACCGQVKGZsytrWcilPgm7Q03rfuCbh+rT1fY/t27dL69at5dRTT5XXXnut0W978cUX5dJLL5UBAwa4p7//8Y9/lPfee08OP/xweeihh9z70Bs7SNAbE+LfEUAAgeILFPNHUGhxiQS9+OONb0QAAQSaIlDM2NSU9vAZERJ0g1HQqVMntyOtl7g3a9asVo366jW9NF2f8j5v3rwGv+399993O+36PvWnnnpKmjdvLrt373aXtd98882iu99PPPGEXHHFFd6tZhJ601EQAQQQyCRQzPU3prhUM3nn6q5MQ4zCCCCAQMECxYxNBTeuTAuQoBt0fN++fWXx4sWyZcsWt9Nd81i1apXou81HjRol+qC3ho5rr71WpkyZIv/617/k2GOPrfVRTd67du3qLqX/6KOP3GXvPgeT0EeNMggggEB2gWKuvzHFJRL07GOLGhBAAAFfgWLGJt82lls5EnSDHtenq2vyPWvWLBk2bFitGidNmiRjx46Ve++9V26//fYGv02f9q675P/+97/r/Jzuwuu7bd9880055ZRTvFrOJPRioxACCCCQWaCY629McYkEPfPQogIEEEDAW6CYscm7kWVWkATdoMOr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\" width=\"640\">" ], "text/plain": [ "<IPython.core.display.HTML object>" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "Text(0.5, 0.98, '這個 Figure 建立了 2 x 2 的格狀 Axes')" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 建立一個空的 figure,沒有任何 axes\n", "fig = plt.figure()\n", "fig.suptitle('No axes on this figure') \n", "\n", "# 如果系統有適合的字型的話,設定字體以支援中文字顯示\n", "#plt.rcParams['font.sans-serif'] = 'Noto Sans CJK TC'\n", "\n", "# 建立一個用 2 x 2 排列 axes 的 figure\n", "fig, ax = plt.subplots(2, 2)\n", "# 如果有中文支援的話,Figure上才能顯示中文\n", "#fig.suptitle('這個 Figure 建立了 2 x 2 的格狀 Axes') \n", "fig.suptitle('This figure has a 2x2 grid of Axes') " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### § 高階簡潔的 MATLAB 風格\n", "\n", "這個模式的風格建構在物件導向的介面之上,刻意模仿 MATLAB 實驗環境的 plot 形式。 由 Pyplot 提供的繪圖狀態機會在暗中自動建立 figure 及 axes 物件,以支持繪圖函式要建構的繪圖元素,並持續追蹤目前繪圖區域物件以及後續的指令。 如下範例:\n" ] }, { "cell_type": "code", "execution_count": 3, "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", " fig.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 overridden (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", " event.shiftKey = false;\n", " // Send a \"J\" for go to next cell\n", " event.which = 74;\n", " event.keyCode = 74;\n", " manager.command_mode();\n", " manager.handle_keydown(event);\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,iVBORw0KGgoAAAANSUhEUgAAA+gAAALuCAYAAAA9jTxNAAAgAElEQVR4XuzdB3QV1b7H8X9CCL1LVZogRQR7Qa+AKL0GEBULCiKiKIgIIiKoiIgoYgVRbKgo0juiomJFEEGkikgTUHoPJHnrv305BkjI5JwzJ3vmfGetu67XzOz578+e/db7nZnZE5OSkpIibAgggAACCCCAAAIIIIAAAgggkK0CMQT0bPXn5AgggAACCCCAAAIIIIAAAggYAQI6FwICCCCAAAIIIIAAAggggAACFggQ0C0YBEpAAAEEEEAAAQQQQAABBBBAgIDONYAAAggggAACCCCAAAIIIICABQIEdAsGgRIQQAABBBBAAAEEEEAAAQQQIKBzDSCAAAIIIIAAAggggAACCCBggQAB3YJBoAQEEEAAAQQQQAABBBBAAAEECOhcAwgggAACCCCAAAIIIIAAAghYIEBAt2AQKAEBBBBAAAEEEEAAAQQQQAABAjrXAAIIIIAAAggggAACCCCAAAIWCBDQLRgESkAAAQQQQAABBBBAAAEEEECAgM41gAACCCCAAAIIIIAAAggggIAFAgR0CwaBEhBAAAEEEEAAAQQQQAABBBAgoHMNIIAAAggggAACCCCAAAIIIGCBAAHdgkGgBAQQQAABBBBAAAEEEEAAAQQI6FwDCCCAAAIIIIAAAggggAACCFggQEC3YBAoAQEEEEAAAQQQQAABBBBAAAECOtcAAggggAACCCCAAAIIIIAAAhYIENAtGARKQAABBBBAAAEEEEAAAQQQQICAzjWAAAIIIIAAAggggAACCCCAgAUCBHQLBoESEEAAAQQQQAABBBBAAAEEECCgcw0ggAACCCCAAAIIIIAAAgggYIEAAd2CQaAEBBBAAAEEEEAAAQQQQAABBAjoXAMIIIAAAggggAACCCCAAAIIWCBAQLdgECgBAQQQQAABBBBAAAEEEEAAAQI61wACCCCAAAIIIIAAAggggAACFggQ0C0YBEpAAAEEEEAAAQQQQAABBBBAgIDONYAAAggggAACCCCAAAIIIICABQIEdAsGgRIQQAABBBBAAAEEEEAAAQQQIKBzDSCAAAIIIIAAAggggAACCCBggQAB3YJBoAQEEEAAAQQQQAABBBBAAAEECOhcAwgggAACCCCAAAIIIIAAAghYIEBAt2AQKAEBBBBAAAEEEEAAAQQQQAABAjrXAAIIIIAAAggggAACCCCAAAIWCBDQLRgESkAAAQQQQAABBBBAAAEEEECAgM41gAACCCCAAAIIIIAAAggggIAFAgR0CwaBEhBAAAEEEEAAAQQQQAABBBAgoHMNIIAAAggggAACCCCAAAIIIGCBAAHdgkGgBAQQQAABBBBAAAEEEEAAAQQI6FwDCCCAAAIIIIAAAggggAACCFggQEC3YBAoAQEEEEAAAQQQQAABBBBAAAECOtcAAggggAACCCCAAAIIIIAAAhYIENAtGARKQAABBBBAAAEEEEAAAQQQQICAzjWAAAIIIIAAAggggAACCCCAgAUCBHQLBoESEEAAAQQQQAABBBBAAAEEECCgcw0ggAACCCCAAAIIIIAAAgggYIEAAd2CQaAEBBBAAAEEEEAAAQQQQAABBAjoXAMIIIAAAggggAACCCCAAAIIWCBAQLdgECgBAQQQQAABBBBAAAEEEEAAAQI61wACCCCAAAIIIIAAAggggAACFggQ0C0YBEpAAAEEEEAAAQQQQAABBBBAgIDONYAAAggggAACCCCAAAIIIICABQIEdAsGgRIQQAABBBBAAAEEEEAAAQQQIKBzDSCAAAIIIIAAAggggAACCCBggQAB3YJBoAQEEEAAAQQQQAABBBBAAAEECOhcAwgggAACCGQisGbNGrntttvk77//lhEjRkjLli09ZVaxYkXZsGGDDBo0SAYOHGh97XfccYe8/fbbUq9ePfniiy+sr5cCEUAAAQQQCJcAAT1ckrSDAAIIIOAJgcOHD8uLL74o8+fPl99++0327NkjZ555plxzzTUmhF911VWn9OPll1+W++67z/z7du3ayYQJEzzR19QiIx3QU8+XFik2NlZKliwpZcqUkcqVK0uXLl3k2muvTdeRgO6py4tiEUAAAQTCKEBADyMmTSGAAAII2C3www8/yPXXXy+bNm3KsNC2bdvK2LFjpWDBgoF9tm/fLm3atJEdO3bIG2+8IXXr1rW7oydVZ0NATw/s/PPPlylTpkiFChVO+LPbAb1///4yZMgQzzxR4KmLjWIRQAABBEISIKCHxMfBCCCAAAJeEdDH0y+66CLZvHmzuYOrj3pfeeWVkj9/flm7dq18+OGHMmrUKElKSvJdcMuugH7XXXfJ888/by6Ro0ePmlcE1q9fL++++655CkGtq1evLkuX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0ksDddke0PVJgNR31/X76o0aNco0oOuK7QMGDDCPuOtiapl9hkwXWzv5/fn0Bs7JInHBBPRff/1VatasaQ7Vxfj08fyMtmbNmpnv3evn9HQFfwK6FVOMIhBAAAEEMhEgoHOJIIAAAggg8P8CaRdrOzkA2h7Q33rrrcBn0E5eCT6jO+i6InzqnXa9A5/ZSvZOLxS3AvqBAwekSJEicvz48XRXcE9bn9451/HU/ukTBQR0p6PHfggggAAC2SlAQM9Ofc6NAAIIIBAxAV2BXD9Flt6q36lFpH2EWt93Tn2nW/9ue0DXb7zrN9U1HOvdcCeBVD/9Vrp0adFF8/R75/oofjg2twK61qafY9PH23URPB2j9L5brp9tq1evnumK/nBx++23n9AtfQdev5Wuaw/op9rYEEAAAQQQsEWAgG7LSFAHAggggIBrAvqIswY2/T72G2+8YT4tdvKm30bXR6YnT56c7qrmNgR0fa9aF4o7+TFzvUN88803my4NGzbMrBqfXkAfOHCgWawu7abfTddVzuPj40WD7cnfWNd99Y619v90P26kdz795Jx+ei6rW+o76HXr1pUFCxaccPjEiROlXbt25t8999xz0qtXrxP+vn//frnuuuvMN91LlixpVnJP+8k53Vn//tlnn5nx1icl2BBAAAEEELBFgIBuy0hQBwIIIICAawL6bvk999wjycnJUrBgQbnzzjslISFBKleubL4BvmLFChP2Pv/8c1ODflJMv8+ddrMhoGs9+g62vjeu71bv2rVLNLDqXWDtm94ZXrx4seTOnfuE2vXJgaVLl0rLli1l3Lhxoqupp276ebWLLrrIfKNcg7+urq5910fEN2/ebN7fVhv9dvy9997raIxCvYOu53rhhRekTJky5tvrepc/ddMfUnTspk6dav6V1tShQwezQJ6Gcv0RQt9V101/bGnduvUpNevTAvqZNv1RQj9r16RJE7OQnJ6nRIkSjvrITggggAACCLghQEB3Q5U2EUAAAQSsE9CF0/T75vpeckZbvnz5RD89lt5K5TYEdA2bepd79+7dp3RBf2yYP3++lC9f/pS/6cJ3+iOFbnqHXB+FT7vp494ayn///fd0abTv2sarr77qaFxDDehp343XR9j1rnjaFeD1u/EayvWHlPQ2Dd6vvfZa4J38k/fRHyNq1KhxiqP+KNCjRw9HfWQnBBBAAAEE3BAgoLuhSpsIIIAAAlYKHDt2zDzSrHdW9U6z3j3Wu8n6rrneZe7du7e5a5veZkNA18+46ersuvq6BnUN1BqGb7zxRvOot/7AkN6m/ezYsaP51nulSpXkl19+OWW3I0eOmBA/YcIE80SBvpeuIbZWrVqin0u7+OKLHY9pqAFdH6nXH0k0qOvTAPpkQ7Vq1U45/6RJk0T/o2O5detWU6uuvK931bWfp9v0PX19WkDv0Gvf9Zvs+q76DTfc4Lif7IgAAggggEC4BQjo4RalPQQQQAABBMIscLofB8J8KppDAAEEEEAAgWwUIKBnIz6nRgABBBBAwIkAAd2JEvsggAACCCDgfQECuvfHkB4ggAACCPhcgIDu8wGmewgggAACCPy/AAGdSwEBBBBAAAHLBQjolg8Q5SGAAAIIIBAmAQJ6mCBpBgEEEEAAAbcECOhuydIuAggggAACdgkQ0O0aD6pBAAEEEEDgFAECOhcFAggggAAC0SFAQI+OcaaXCCCAAAIIIIAAAggggAAClgsQ0C0fIMpDAAEEEEAAAQQQQAABBBCIDgECenSMM71EAAEEEEAAAQQQQAABBBCwXICAbvkAUR4CCCCAAAIIIIAAAggggEB0CBDQo2Oc6SUCCCCAAAIIIIAAAggggIDlAgR0yweI8hBAAAEEEEAAAQQQQAABBKJDgIAeHeMc6GXhwoXl6NGjUrp06SjrOd1FAAEEEEAAAQQQQACBtAJ//fWX5MqVS/bs2QOMJQIEdEsGIlJl5MmTR44fPy5ly5aN1Ck5DwIIIIAAAggggAACCFgosGnTJomLi5PDhw9bWF10lkRAj7JxP/vss02P169fH2U9p7sIIIAAAggggAACCCCQVoBsYN/1QEC3b0xcrYhJ6CovjSOAAAIIIIAAAggg4BkBsoF9Q0VAt29MXK2ISegqL40jgAACCCCAAAIIIOAZAbKBfUNFQLdvTFytiEnoKi+NI4AAAggggAACCCDgGQGygX1DRUC3b0xcrYhJ6CovjSOAAAIIIIAAAggg4BkBsoF9Q0VAt29MXK2ISegqL40jgAACCCCAAAIIIOAZAbKBfUNFQLdvTFytiEnoKi+NI4AAAggggAACCCDgGQGygX1DRUC3b0xcrYhJ6CovjSOAAAIIIIAAAggg4BkBsoF9Q0VAt29MXK0o2EmYkpIiycnJov/NhoCtAjExMRIbGyv632wIIIAAAggggAACpxcINhvg6p4AAd09WytbzuokPH78uOzcuVP27dsn+s9sCNguEBcXJwULFpRixYqJ/jMbAggggAACCCCAQPoCWc0GOLovQEB339iqM2RlEmog37hxoxw9etSqPlAMAk4EcuXKJeXKlSOkO8FiHwQQQAABBBCISoGsZIOoBMqGThPQswE9O0+ZlUm4fft22bVrl3lkuESJEpIvXz7zz2wI2Cqgr2EcPHhQduzYYV7JKFq0qJQsWdLWcqkLAQQQQAABBBDIVoGsZINsLTSKTk5Aj6LB1q46nYT6rvm6devMY+2lSpWSIkWKRJkU3fWywO7du2Xbtm3m7nnlypV5J93Lg0ntCCCAAAIIIOCagNNs4FoBNHyKAAE9yi4Kp5MwKSlJ1qxZY3QqVaok8fHxUSZFd70skJiYKL///rvpQpUqVSRHjhxe7g61I4AAAggggAACrgg4zQaunJxG0xUgoEfZheF0Euqd87Vr1xqdc845h/d4o+w68Xp3uX69PoLUjwACCCCAAAKREHCaDSJRC+f4V4CAHmVXgtNJSMCJsgvDZ93l+vXZgNIdBBBAAAEEEHBFwGk2cOXkNJquAAE9yi4Mp5OQgBNlF4bPusv167MBpTsIIIAAAggg4IqA02zgyslplIDONeB8kTgCDleLlwW4fr08etSOAAIIIIAAApESIKBHStr5ebiD7twqYnsuWrRInnzySVmyZIkcOnRIzj33XOnWrZvcfPPNIdfgdBIScEKmpoFsFOD6zUZ8To0AAggggAACnhFwmg080yEfFEpAt2wQp02bJq1btzaLsl199dXmu+PffvutCeo9e/aUESNGhFSx00lIwMmcOSYmxux04MAB84341K1jx47y5Zdfyocffii1a9fOvCH2CLsA12/YSWkQAQQQQAABBHwo4DQb+LDr1naJgG7R0CQnJ5tvju/fv18WLlwoF198salOv0det25d+euvv+TXX381d9SD3ZxOQgJO5sLpBXT9IaVgwYKin6nr16+fDBkyJPOG2CPsAly/YSelQQQQQAABBBDwoYDTbODDrlvbJQK6RUOzatUqqV69utx2223yzjvvnFCZ3jnv1auXvPHGG9K5c+egq3Y6CQk4mRNndAd96NCh5g76yJEjzTe42SIvwPUbeXPOiAACCCCAAALeE3CaDbzX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QPfw4AVTutNJSMAJRtf+YyIZ0Pv06SPPPvssAd3+y4IKEUAAAQQQQCALAskpydJ2WltZt2edOeqiEhfJO03eyUIL9uzqNBvYU7H/KyGg+3+MT+ih00lIQHd2YezYsUMee+wx+frrr2Xr1q3mXesuXbrIOeecI5dffvkJ4fSaa64xi7PNmDFDmjVrdsIJ9DHvu+++W26//XZ56623TvibnuOVV14xx61bt05y584tF154oQwePFguueSSdAvV/QYOHCjfffedHDx4UC699FJ59NFHzePk6S0Sp7XpvkeOHJHvv/9eevXqJT/99JO0bNlSPvnk3+967t+/X0aNGiVTpkyRVatWSUpKilxwwQWiQbxx48aBOt555x3Tj/S2QYMGmbp0K126tGzbtk02bNgg5cuXP2F3bVtrnTRpkvz888+SP39+ueyyy8y5Lr744kwHh+s3UyJ2QAABBBBAAIEgBb7c9KV0/7x74OiX678sdctm3+K7QXbDHOY0G4RyDo7NmgABPWtent/b6SQk4GQ+1IsWLZJWrVrJX3/9JWXKlDHB8c8//5Tly5dLhQoV5I8//gg5oH/88cfSqVMnE7J17M477zwTaJctWya5cuWSL774QmrXrn1Csboq+k033WQCdcWKFaVmzZqii7KtXbtWzjjjDNHAf/Iq7qk/HnzzzTfStGlTKVu2rDm2efPmZgG3r776ShISEmTXrl1y5plnmmD+999/ixrExMTIRx99JO3atTN16I8V+v65/rd6aH2pq7S3adPGtHO6gL5z506zsNzChQslX7585scFXfX9hx9+MD8KrFmz5pRAf/Jocf1mfv2yBwIIIIAAAghkXUD/f5HbZt8mS/9eag6uVKiSTGo1SWJjYrPemAVHOM0GFpQaNSUQ0KNmqP/tqNNJSMA5/YWhPnq3/LfffpP7779fnn/+ecmRI4c5SEOu3kHWu9hpF0gL5g66LqKmd771P1WqVAkUpXftn3zySXPnevbs2YF/v2fPHrOfhudhw4bJQw89FPjbtGnTTNjevn17hgG9UKFC8sADD5inAjR4p24a9vUOv95ZT3sHe+zYsdK5c2epXr26sUi76Y8E48ePz/AR94zuoN98883ywQcfyHXXXScffvih+VFBt/Xr15u7/Pr3zDau38yE+DsCCCCAAAIIBCOwePtiuX3Of08KDvnfEGlRqUUw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EiCBqCJAbaCfOynQNfJJV1cXJk2apNahv/baazj//POVdU888QRuueUWLFiwAO+9996QLOZNOCR8PJgESIAESIAESIAESIAEooYAtYF+rqRA18wnS5cuxXnnnQePx4NTTjkF7e3tWLdunYrgvmLFChx77LFDspg34ZDw8WASIAESIAESIAESIAESiBoC1Ab6uZICXT+fYOXKlbj77ruxevVqxMXFQYLHPfjgg5gyZcqQreVNOGSEbIAESIAESIAESIAESIAEooIAtYF+bqRA188nllrEm9BSvGycBEiABEiABEiABEiABCKGALWBfq6iQNfPJ5ZaxJvQUrxsnARIgARIgARIgARIgAQihgC1gX6uokDXzyeWWsSb0FK8bJwESIAESIAESIAESIAEIoYAtYF+rqJA188nllrEm9BSvGycBEiABEiABEiABEiABCKGALWBfq6iQNfPJ5ZaxJvQUrxsnARIgARIgARIgARIgAQihgC1gX6uokDXzyeWWsSb0FK8bJwESIAESIAESIAESIAEIoYAtYF+rqJA188nllrEm9BSvGycBEiABEiABEiABEiABCKGALWBfq6iQNfPJ5ZaxJvQUrxsnARIgARIgARIgARIgAQihgC1gX6uokDXzyeWWsSb0FK8bJwESIAESIAESIAESIAEIoYAtYF+rqJA188nllrEm9BSvGycBEiABEiABEiABEiABCKGALWBfq6iQNfPJ5ZaxJvQUrxsnARIgARIgARIgARIgAQihgC1gX6uokDXzyeWWsSb0FK8bJwESIAESIAESIAESIAEIoYAtYF+rqJA188nllrEm9BSvGycBEiABEiABEiABEiABCKGALWBfq6iQNfPJ5ZaxJvQUrxsnARIgARIgARIgARIgAQihgC1gX6uokDXzyeWWsSb0FK8bJwESIAESIAESIAESIAEIoYAtYF+rqJA188nllrEm9BSvGycBEiABEiABEiABEiABCKGALWBfq6iQNfPJ5ZaxJvQUrxsnARIgARIgARIgARIgAQihgC1gX6uokDXzyeWWpScnIzOzk6MHDnS0vOwcRIgARIgARIgARIgARIgAb0JlJWVweFwoLW1VW9DY8g6CvQYcrZ0NTMzE+3t7SgoKDjqPZcHghS+LLDGFeRrDVdvq+RLvtYSsL51XsPWMiZf8rWWgLWt8/qNHb4HDx5E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gAJdZ+9obJsI6bvvvhurV69Wo38yFf3BBx/sk0JK0qhJBGAZQZeUUyJkfIvkhZaH1kcffaTEo6SbkvWO3vzRvRGYra8xwgFNGypfGdXdvXv3oN2XOjISLEWmDf7P//wP3nnnHSXOZS2ViHURRvPmzRu0rUiqMFS+0lcZ/X7sscfUEg0Z/Zbp6yeccIK6L3xnIfhy8eZNl5kiErxM6onQ7x3PIZJYBrI1HHy97UqMit///vfqBZHknO+vhOKPSOQsmQEGC9ToXYLE5695D4eDL5+//XMPB18+f63ny+dv/4yDCQInR8vLJNlkiZbkkpcRdBmMGsp3glj5DmH+yR19R1CgR59P2SMSIAESIAESIAESIAESIAESIIEIJECBHoFOo8kkQAIkQAIkQAIkQAIkQAIkQALRR4ACPfp8yh6RAAmQAAmQAAmQAAmQAAmQAAlEIAEK9Ah0Gk0mARIgARIgARIgARIgARIgARKIPgIU6NHnU/aIBEiABEiABEiABEiABEiABEggAglQoEeg02gyCZAACZAACZAACZAACZAACZBA9BGgQI8+n7JHJEACJEACJEACJEACJEACJEACEUiAAj0CnUaTSYAESIAESIAESIAESIAESIAEoo8ABXr0+ZQ9IgESIAESIAESIAESIAESIAESiEACFOgR6DSaTAIkQAIkQAIkQAIkQAIkQAIkEH0EKNCjz6fsEQmQAAmQAAmQAAmQAAmQAAmQQAQSoECPQKfRZBIgARIgARIgARIgARIgARIggegjQIEefT5lj0iABEiABEiABEiABEiABEiABCKQAAV6BDqNJpMACZAACZCAEPjzn/+MxYsX47LLLsM//vGPIUEZM2YMdu/eja6uriG1M9DB9957L+655x7ccccdeOihhyw7DxsmARIgARIggUglQIEeqZ6j3SRAAiRAAjFPgAI95i8BAiABEiABEogyAhToUeZQdocESIAESCB2CFCgx46v2VMSIAESIIHYIECBHht+Zi9JgARIgASikAAFehQ6lV0iARIgARKIaQIU6DHtfnaeBEiABEggkglQoEey92g7CZAACZAACfQlQIHOq4IESIAESIAEjgKBsrIyTJ06FTabDdu2bUNBQUGPFZs3b8b06dMxfvx4fPHFsENFiQAACIhJREFUF0hISAho4UACvb29Hc8884wKHrdx40a0tbWpNr/5zW/i2muv7dOeb5C4l156Cc8//zxWrFih7Dr11FNx//33Izc3N6Ad77//Ph599FGsXr0a8fHxmDlzJn7yk59g1qxZfvUZJO4oXGg8JQmQAAmQQEQRoECPKHfRWBIgARIggWgi8Lvf/Q633347rrrqKvz1r3/t6doFF1yAN954A++99x4WLFjQb5f7E+hbt27F2WefjX379ilRPWPGDLS2tmLVqlVwuVx4+OGH8YMf/MCvXa9A/+pXv4pXX31VvTwoLi7GmjVrcOjQIYwaNQoixOWlgW8RIf7AAw8gLS0Ns2fPRmdnpzqP7F944QVceumlPdUp0KPp6mVfSIAESIAErCBAgW4FVbZJAiRAAiRAAkEQcLvdOOmkk7Bu3Tp8+OGHmDdvntrPnz8fV1xxBV588cUBW+lPoEu7N998M6655hqcddZZPW2IwBbBn52djb179yIlJaXnb16BPnnyZPzlL3/BCSecoP4mI/HSzj//+U98/etfV6LbW958800sWrQIc+bMUSP1w4cPV3/atWsXzjzzTIgdJSUlSExMVL+nQA/iomAVEiABEiCBmCZAgR7T7mfnSYAESIAEjjaBtWvX4uSTT1Yj1vJZppPLCPiWLVtQVFQUkkAf6CA512effaamo8vLAW/xCvSqqiol4H1LZWWlskVGxffv34/8/Hz153HjxqG8vFyJcN8p+vK3J554Arfccgtkuvzll19OgX60LzSenwRIgARIICIIUKBHhJtoJAmQAAmQQDQT+P73v49HHnkE5557Lt555x089NBDuOOOOwbtcrBB4lpaWpTo//LLL/HLX/4SssbdVzjLibwCvampCampqX3OLaPkn3zyCZYtW4a5c+cqoS6i/bzzzoOMpPcun3/+uVqLft999+Guu+6iQB/Um6xAAiRAAiRAAgAFOq8CEiABEiABEjjKBBobG9V675qaGkyZMgUbNmxQwdYGKwMJ9I6ODrz88st4+umn1drxrq4uJcJFgMua8meffRbXX399zykGE+hXXnmlEvXe495++20lzgcrEpTuj3/8IwX6YKD4dxIgARIgARIABTovAhIgARIgARI46gRkVFrWbEspLCxU09vT09MHtas/gS4iXIK9ffDBB/ja176GG264AaeddpoaGZd15H//+99NC3QR4yLKX3nlFdW2BLGTYHYjRozosT2QwQsXLsTVV19NgT6oN1mBBEiABEiABCjQeQ2QAAmQAAmQwFElICPdkv6soaEBt912G370ox/h1ltvxeOPPz6oXf0J9B/+8If49a9/rVKfffe73/VrJ1SBLtHbd+7cie3bt2PChAkqyNzo0aNx7LHHqlRwwRQGiQuGEuuQAAmQAAnEMgFOcY9l77PvJEACJEACR53Az3/+c/zsZz9TU9Gvu+46tW5b8pbLqPoZZ5wxoH39CfQTTzxRpUerq6tDRkaGXxsSHV4irpuZ4i4j8RINXqK0y9rzuLg41aaMnldUVEDWm4tQH6xQoA9GiH8nARIgARKIdQIU6LF+BbD/JEACJEACR43Ajh07lLCV1GaSas1ut6tAbCLMZZRaRqa9KcoCGSm50yUFmkw1X7JkSU8VSaUm685fe+01XHjhher3bW1tkJzlv/3tb+HxePoV6N/73vfwi1/8Ak6nUx23bds21b5EapeXCDJd3ltkjbvkOZd18zJtXmYCeIsIdxltl+By3nL//fcrG2RUX0b3WUiABEiABEiABPwJUKDziiABEiABEiCBo0TAK6RlhNq7Bl1MkRzmTz31lIp+LlHQ+yurVq3C7NmzkZycjLvvvltNj5fiFe4Oh0PlVJd85JJWTdKjzZo1q9816BLtPSkpSU23lxRsra2tKiWb5EKXdeTPP/88bDabnzl33nmnijovo+rHHXecmvYuo+zr169HZmYmdu/erdqUIiJepthnZWWpY2688cajRJ6nJQESIAESIAE9CVCg6+kXWkUCJEACJBDlBP7yl7/g2muvVQHXJPCab6murlaj6vX19Wqquu/IdG8s3/rWt5QgF3G8fPnynj8/88wzePjhh1FaWqpylIsw/vGPf4xXX30VV111VcARdBkJl0jtMoIuQeBEaMuUe7Fz8eLF/XpERv1lZF6iz0uEeGlH8rlLqjiZBu8tst5e7JBUchdddBGEAQsJkAAJkAAJkMBhAhTovBpIgARIgARIgARIgARIgARIgARIQAMCFOgaOIEmkAAJkAAJkAAJkAAJkAAJkAAJkAAFOq8BEiABEiABEiABEiABEiABEiABEtCAAAW6Bk6gCSRAAiRAAiRAAiRAAiRAAiRAAiRAgc5rgARIgARIgARIgARIgARIgARIgAQ0IECBroETaAIJkAAJkAAJkAAJkAAJkAAJkAAJUKDzGiABEiABEiABEiABEiABEiABEiABDQhQoGvgBJpAAiRAAiRAAiRAAiRAAiRAAiRAAhTovAZIgARIgARIgARIgARIgARIgARIQAMCFOgaOIEmkAAJkAAJkAAJkAAJkAAJkAAJkAAFOq8BEiABEiABEiABEiABEiABEiABEtCAAAW6Bk6gCSRAAiRAAiRAAiRAAiRAAiRAAiRAgc5rgARIgARIgARIgARIgARIgARIgAQ0IECBroETaAIJkAAJkAAJkAAJkAAJkAAJkAAJUKDzGiABEiABEiABEiABEiABEiABEiABDQhQoGvgBJpAAiRAAiRAAiRAAiRAAiRAAiRAAhTovAZIgARIgARIgARIgARIgARIgARIQAMCFOgaOIEmkAAJkAAJkAAJkAAJkAAJkAAJkAAFOq8BEiABEiABEiABEiABEiABEiABEtCAAAW6Bk6gCSRAAiRAAiRAAiRAAiRAAiRAAiTw/wGmRwb03YtmDAAAAABJRU5ErkJggg==\" width=\"640\">" ], "text/plain": [ "<IPython.core.display.HTML object>" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "<matplotlib.legend.Legend at 0x14722700198>" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 產生資料點\n", "x = np.linspace(0, 2, 100)\n", "\n", "# 全程使用 pyplot 方法\n", "plt.plot(x, x, label='linear')\n", "plt.plot(x, x**2, label='quadratic')\n", "plt.plot(x, x**3, label='cubic')\n", "\n", "plt.xlabel('x label')\n", "plt.ylabel('y label')\n", "\n", "plt.title(\"Simple Plot\")\n", "plt.legend()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "在第一個呼叫 `plt.plot()` 繪製一條直線時,狀態機就自動建立一個必要的 figure 及 axes 物件,並記住目前使用的繪圖區域是剛剛建立的 axes 物件,然後將線段畫上作用中的繪圖區域,接下來連續的 `plt.plot()` 呼叫也重複使用現階段作用中的 axes 來繪製其他曲線。 因為沒有新建立或切換至其他作用中 axes,所以之後所有進行軸標籤、標題、和圖例的設定,也都是自動套用至目前作用中 axes 的繪圖區域上。\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### § 物件導向風格\n", "\n", "使用物件導向介面的程式風格,通常流程都是這樣:\n", "1. 取得 numpy 陣列資料。\n", "2. 呼叫 `figure = plt.figure()` 建立 figure 物件。\n", "3. 呼叫 `axes = plt.subplot()` 建立/新增 axes 物件。\n", "4. 使用 axes 物件參考來建構其他繪圖物件。\n", "\n", "或是\n", "\n", "1. 取得 numpy 陣列資料。\n", "2. 呼叫 `figure, axes = plt.subplots()` 同時建立 figure 及 axes 物件。\n", "3. 使用 axes 物件的方法來建構其他繪圖物件。\n", "\n", "由於每次建構繪圖物件都指定物件參考,語法比較羅嗦,但是比較明確清楚繪製的目標物件。 當繪圖部分的程式變得複雜後,這樣的明確風格會開始顯現他的價值,物件導向式的介面會使得程式比較容易維護,可讀性也較高。\n" ] }, { "cell_type": "code", "execution_count": 4, "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", " fig.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 overridden (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", " event.shiftKey = false;\n", " // Send a \"J\" for go to next cell\n", " event.which = 74;\n", " event.keyCode = 74;\n", " manager.command_mode();\n", " manager.handle_keydown(event);\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,iVBORw0KGgoAAAANSUhEUgAAA+gAAALuCAYAAAA9jTxNAAAgAElEQVR4XuzdB3gU1RbA8UNI6L230HvvHUIJiAgo9k4RFQGxIAooNqSICCpVkaKoDxuigLRACL136b33Fko677s3sCQQILvZ2b27+5/ve9/T7My95/7OjMnZuXMn1fXr168LGwIIIIAAAggggAACCCCAAAIIuFUgFQW6W/3pHAEEEEAAAQQQQAABBBBAAAEtQIHOiYAAAggggAACCCCAAAIIIICAAQIU6AYkgRAQQAABBBBAAAEEEEAAAQQQoEDnHEAAAQQQQAABBBBAAAEEEEDAAAEKdAOSQAgIIIAAAggggAACCCCAAAIIUKBzDiCAAAIIIIAAAggggAACCCBggAAFugFJIAQEEEAAAQQQQAABBBBAAAEEKNA5BxBAAAEEEEAAAQQQQAABBBAwQIAC3YAkEAICCCCAAAIIIIAAAggggAACFOicAwgggAACCCCAAAIIIIAAAggYIECBbkASCAEBBBBAAAEEEEAAAQQQQAABCnTOAQQQQAABBBBAAAEEEEAAAQQMEKBANyAJhIAAAggggAACCCCAAAIIIIAABTrnAAIIIIAAAggggAACCCCAAAIGCFCgG5AEQkAAAQQQQAABBBBAAAEEEECAAp1zAAEEEEAAAQQQQAABBBBAAAEDBCjQDUgCISCAAAIIIIAAAggggAACCCBAgc45gAACCCCAAAIIIIAAAggggIABAhToBiSBEBBAAAEEEEAAAQQQQAABBBCgQOccQAABBBBAAAEEEEAAAQQQQMAAAQp0A5JACAgggAACCCCAAAIIIIAAAghQoHMOIIAAAggggAACCCCAAAIIIGCAAAW6AUkgBAQQQAABBBBAAAEEEEAAAQQo0DkHEEAAAQQQQAABBBBAAAEEEDBAgALdgCQQAgIIIIAAAggggAACCCCAAAIU6JwDCCCAAAIIIIAAAggggAACCBggQIFuQBIIAQEEEEAAAQQQQAABBBBAAAEKdM4BBBBAAAEEEEAAAQQQQAABBAwQoEA3IAmEgAACCCCAAAIIIIAAAggggAAFOucAAggggAACCCCAAAIIIIAAAgYIUKAbkARCQAABBBBAAAEEEEAAAQQQQIACnXMAAQQQQAABBBBAAAEEEEAAAQMEKNANSAIhIIAAAggggAACCCCAAAIIIECB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\" width=\"640\">" ], "text/plain": [ "<IPython.core.display.HTML object>" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "[<matplotlib.lines.Line2D at 0x14722d36400>]" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 產生資料點並套用 sin 函數\n", "x = np.arange(0, 10, 0.2)\n", "y = np.sin(x)\n", "\n", "# 產生 figure 及 axes 物件\n", "fig, ax = plt.subplots()\n", "# 使用 axes 物件繪圖\n", "ax.plot(x, y)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### § `interactive` 模式\n", "\n", "不管使用那一種風格,都需注意 matplotlib 的 ***interactive*** 模式,目前是開或關可以用 `matplotlib.is_interactive()` 檢驗。 開啟或關閉的控制方式:\n", "\n", "+ `matplotlib.pyplot.ion()` 開啟 interactive 模式\n", "+ `matplotlib.pyplot.ioff()` 關閉 interactive 模式\n", " \n", "在 *interactive* 模式開啟時,任何會更新繪圖元素的函式都會馬上顯示,所以當下如果還沒有 figure 視窗的話就會產生一個新的 figure,這樣的模式就適合在 iPython 這種互動式的實驗環境中使用。 試著在 `ipython` 或 `jupyter qtconsole` 中一行一行執行一下程式,你應該可以觀察到每次畫面的立即更新。\n", "\n", "```\n", "plt.ion()\n", "\n", "fig, ax = plt.subplots()\n", "ax.plot([1.6, 2.7])\n", "ax.set_title('interactive test')\n", "ax.set_xlabel('index')\n", "ax.plot([3.1, 2.2])\n", "```\n", "\n", "若是執行 script 檔時開啟互動模式,繪圖的結果就會是閃一下馬上就關閉了,因為 script 程式已經結束執行了。 所以除非是刻意只要繪圖後存成圖檔就好,執行 script 檔通常不開啟互動模式,但這樣的模式下每次呼叫更新繪圖元素的函式都“不會”馬上顯示,最後必須加上 `pyplot.show()` 指令才會有 figure 畫面顯示出來。 試著建立一個 script 檔案包含以下程式碼,然後在 console 下執行 `python pltshow.py`,在顯示出 figure 視窗後,你會發現 console 是 block 住不接受任何輸入反應的,一直到關閉 figure 視窗為止。\n", "\n", "```\n", "%%writefile pltshow.py\n", "import matplotlib.pyplot as plt\n", "plt.ioff()\n", "\n", "fig, ax = plt.subplots()\n", "ax.plot([1.6, 2.7])\n", "\n", "# 沒有 show() 就沒有顯示\n", "plt.show()\n", "```\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "<a id=\"axes-tutorial\"></a>\n", "\n", "## 12.2 使用 `Axes`\n", "\n", "Axes 繪圖區域裡包含了大多數圖示元素: 座標軸、刻度、線段、文字、多邊形、...等,以下範例簡介各項圖示元素的建立及設定。\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### § `axes.plot( y )`\n", "\n", "[`axes.plot()`](https://matplotlib.org/api/_as_gen/matplotlib.axes.Axes.plot.html) 是用來畫線段及點資料的標記。 假如只提供單一參數的數值陣列,matplotlib 會假定那是 y 軸的數據列,然後會自動產生 x 軸的值,預設是從 0 開始生成與 y 長度相同的點資料。\n" ] }, { "cell_type": "code", "execution_count": 5, "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", " fig.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 overridden (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", " event.shiftKey = false;\n", " // Send a \"J\" for go to next cell\n", " event.which = 74;\n", " event.keyCode = 74;\n", " manager.command_mode();\n", " manager.handle_keydown(event);\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,iVBORw0KGgoAAAANSUhEUgAAA+gAAALuCAYAAAA9jTxNAAAgAElEQVR4Xuzdd5gUVd73/8/kgSHnnCSnYQbEiKKiCKhgBrxdV1fY/QnCYljTqjfqsnorKoLu4+quzxpAREFERFERTCACQ8455zSByfO7qu6HHlrChO4zc7r6XdflHytVp77n9a1zuR/6dHVEQUFBgTgQQAABBBBAAAEEEEAAAQQQQKBcBSII6OXqz80RQAABBBBAAAEEEEAAAQQQcAUI6DwICCCAAAIIIIAAAggggAACCFggQEC3oAmUgAACCCCAAAIIIIAAAggggAABnWcAAQQQQAABBBBAAAEEEEAAAQsECOgWNIESEEAAAQQQQAABBBBAAAEEECCg8wwggAACCCCAAAIIIIAAAgggYIEAAd2CJlACAggggAACCCCAAAIIIIAAAgR0ngEEEEAAAQQQQAABBBBAAAEELBAgoFvQBEpAAAEEEEAAAQQQQAABBBBAgIDOM4AAAggggAACCCCAAAIIIICABQIEdAuaQAkIIIAAAggggAACCCCAAAIIENB5BhBAAAEEEEAAAQQQQAABBBCwQICAbkETKAEBBBBAAAEEEEAAAQQQQAABAjrPAAIIIIAAAggggAACCCCAAAIWCBDQLWgCJSCAAAIIIIAAAggggAACCCBAQOcZQAABBBBAAAEEEEAAAQQQQMACAQK6BU2gBAQQQAABBBBAAAEEEEAAAQQI6DwDCCCAAAIIIIAAAggggAACCFggQEC3oAmUgAACCCCAAAIIIIAAAggggAABnWcAAQQQQAABBBBAAAEEEEAAAQsECOgWNIESEEAAAQQQQAABBBBAAAEEECCg8wwggAACCCCAAAIIIIAAAgggYIEAAd2CJlACAggggAACCCCAAAIIIIAAAgR0ngEEEEAAAQQQQAABBBBAAAEELBAgoFvQBEpAAAEEEEAAAQQQQAABBBBAgIDOM4AAAggggAACCCCAAAIIIICABQIEdAuaQAkIIIAAAggggAACCCCAAAIIENB5BhBAAAEEEEAAAQQQQAABBBCwQICAbkETKAEBBBBAAAEEEEAAAQQQQAABAjrPAAIIIIAAAggggAACCCCAAAIWCBDQLWgCJSCAAAIIIIAAAggggAACCCBAQOcZQAABBBBAAAEEEEAAAQQQQMACAQK6BU2gBAQQQAABBBBAAAEEEEAAAQQI6DwDCCCAAAIIIIAAAggggAACCFggQEC3oAmUgAACCCCAAAIIIIAAAggggAABnWcAAQQQQAABBBBAAAEEEEAAAQsECOgWNIESEEAAAQQQQAABBBBAAAEEECCg8wwggAACCCCAAAIIIIAAAgggYIEAAd2CJlACAggggAACCCCAAAIIIIAAAgR0ngEEEEAAAQQQQAABBBBAAAEELBAgoFvQBEpAAAEEEEAAAQQQQAABBBBAgIDOM4AAAggggAACCCCAAAIIIICABQIEdAuaQAkIIIAAAggggAACCCCAAAIIENB5BhBAAAEEEEAAAQQQQAABBBCwQICAbkETKAEBBBBAAAEEEEAAAQQQQAABAjrPAAIIIIAAAggggAACCCCAAAIWCBDQLWgCJSCAAAIIIIAAAggggAACCCBAQOcZQAABBBBAAAEEEEAAAQQQQMACAQK6BU2gBAQQQAABBBBAAAEEEEAAAQQI6DwDCCCAAAIIIIAAAggggAACCFggQEC3oAmUgAACCCCAAAIIIIAAAggggAABnWcAAQQQQAABBBBAAAEEEEAAAQsECOgWNIESEEAAAQQQQAABBBBAAAEEECCg8wwggAACCCCAAAIIIIAAAgggYIEAAd2CJlACAggggAACCCCAAAIIIIAAAgR0ngEEEEAAAQQQQAABBBBAAAEELBAgoFvQBEpAAAEEEEAAAQQQQAABBBBAgIDOM4AAAggggAACCCCAAAIIIICABQIEdAuaQAkIIIAAAggggAACCCCAAAIIENB5BhBAAAEEEEAAAQQQQAABBBCwQICAbkETKAEBBBBAAAEEEEAAAQQQQAABAjrPAAIIIIAAAggggAACCCCAAAIWCBDQLWgCJSCAAAIIIIAAAggggAACCCBAQOcZQAABBBBAAAEEEEAAAQQQQMACAQK6BU2gBAQQQAABBBBAAAEEEEAAAQQI6DwDCCCAAAIIIIAAAggggAACCFggQEC3oAmUgAACCCCAAAIIIIAAAggggAABnWcAAQQQQAABBBBAAAEEEEAAAQsECOgWNIESEEAAAQQQQAABBBBAAAEEECCg8wwggAACCCCAAAIIIIAAAgggYIEAAd2CJlACAggggAACCCCAAAIIIIAAAgR0ngEEEEAAAQQQQAABBBBAAAEELBAgoFvQBEpAAAEEEEAAAQQQQAABBBBA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PfDAA2XlHfHzMAkjXgISQAABBLwvjl/+foWemLRAufn7AiLNa1fyntLeoQFL2vmYIIAAAgjYF6A3sG9c2jPEZIPev39/jR8/Xj/99JM6d+7smZhXrxVu0M2fHX300apUqZK+/vrr0rpF7f5MwqgtHYkjgECMCGzfk6Pb3/lVXy7YGDSiC7s00GMXd1Ll8skxMlKGgQACCCDgugC9gXsViskG3VwZb9iwoaZOnRoQP1SD3rt3b02ZMkVbtmxxrzKWMmISWoIlLAIIIFACgRkrt+mmsRlau/3AkvbyyYl6+MIOuuzoxixpL4EhuyCAAAII+CdAb+CfpV+RYrJBr1Onjo477jhNnDixyAa9e/fuWrduncxy93jZmITxUmnGiQACLgkUFOzTi98u15OfLVJewYEl7a3qVvae0t72iCoupUsuCCCAAAJxIkBv4F6hY7JBP/vss2We3m7uRa9cubKnfvAV9FWrVqldu3Y644wzNGHCBPcqYykjJqElWMIigAAChxHYmpmj28bN0pRFvwft0fuoRt6V84opLGnnw4MAAgggEBkBeoPIuBd11phs0MeNG6fLL79cffr08R4Kl5qaGtSgb9y4UWZ5+7Rp0/TBBx/o/PPPd68yljJiElqCJSwCCCBwCIGfftvqLWnfsDMr8LcVyiXp0Ys66tKjGmGGAAIIIIBARAXoDSLKf8iTx2SDbkZ61VVX6fXXX1eTJk103nnnafTo0Wrbtq333zfffKPt27drwIABeuONN9yrisWMmIQWcQmNAAII/FfALGkfPXWpnv5isQqtaFfbelX03IB0tarLknY+LAgggAACkRegN4h8DQ7OIGYbdPMKm+eff1733HOPduzYETTuihUr6pFHHtHgwYO9K+vxtDEJ46najBUBBCIh8PuubN06bpa+XbI56PT9ujXWA+d3UGq5pEikxTkRQAABBBD4gwC9gXsfipht0PdTZ2Zmavbs2ZozZ47y8/PVqVMn79Vr1arF5ztmmYTuTUIyQgCB2BGYtmyzBr81S6ZJ379VSknSsEs66cIuDWNnoIwEAQQQQCAmBOgN3CtjTDboOTk5SklJcU/bgYyYhA4UgRQQQCDmBPIL9mnk5CV69qslQUva29evquf6p6tFnf88sJQNAQQQQAABlwToDVyqxn9yickGvXr16rrkkkvUr18/nX766XG3jL2ojxmT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AQIECBAgQKC3gILeO3+zJ0CAAAECBAgQIECAAIEiAgp6kSAMgwABAgQIECBAgAABAgR6CyjovfM3ewIECBAgQIAAAQIECBAoIqCgFwnCMAgQIECAAAECBAgQIECgt4CC3jt/sydAgAABAgQIECBAgACBIgIKepEgDIMAAQIECBAgQIAAAQIEegso6L3zN3sCBAgQIECAAAECBAgQKCKgoBcJwjAIECBAgAABAgQIECBAoLeAgt47f7MnQIAAAQIECBAgQIAAgSICCnqRIAyDAAECBAgQIECAAAECBHoLKOi98zd7AgQIECBAgAABAgQIECgioKAXCcIwCBAgQIAAAQIECBAgQKC3gILeO3+zJ0CAAAECBAgQIECAAIEiAgp6kSAMgwABAgQIECBAgAABAgR6CyjovfM3ewIECBAgQIAAAQIECBAoIqCgFwnCMAgQIECAAAECBAgQIECgt4CC3jt/sydAgAABAgQIECBAgACBIgIKepEgDIMAAQIECBAgQIAAAQIEegso6L3zN3sCBAgQIECAAAECBAgQKCKgoBcJwjAIECBAgAABAgQIECBAoLeAgt47f7MnQIAAAQIECBAgQIAAgSICCnqRIAyDAAECBAgQIECAAAECBHoLKOi98zd7AgQIECBAgAABAgQIECgioKAXCcIwCBAgQIAAAQIECBAgQKC3gILeO3+zJ0CAAAECBAgQIECAAIEiAgp6kSAMgwABAgQIECBAgAABAgR6CyjovfM3ewIECBAgQIAAAQIECBAoIqCgFwnCMAgQIECAAAECBAgQIECgt4CC3jt/sydAgAABAgQIECBAgACBIgIKepEgDIMAAQIECBAgQIAAAQIEegso6L3zN3ug+9ajAAAAaklEQVQCBAgQIECAAAECBAgQKCKgoBcJwjAIECBAgAABAgQIECBAoLeAgt47f7MnQIAAAQIECBAgQIAAgSICCnqRIAyDAAECBAgQIECAAAECBHoLKOi98zd7AgQIECBAgAABAgQIECgi8AsIHwBCkhV9oQAAAABJRU5ErkJggg==\" width=\"640\">" ], "text/plain": [ "<IPython.core.display.HTML object>" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "Text(0, 0.5, 'given y only')" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "fig, ax = plt.subplots()\n", "\n", "# 只有給一個輸入,視為 y\n", "ax.plot([1, 2, 3, 4])\n", "# x 軸資料自動產生預設的 [0, 1, 2, 3]\n", "\n", "# 設定 y 軸標籤\n", "ax.set_ylabel('given y only')\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### § `axes.plot( x, y )`\n", "\n", "一般會同時明確指定 x, y 的數據陣列。" ] }, { "cell_type": "code", "execution_count": 6, "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", " fig.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 overridden (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", " event.shiftKey = false;\n", " // Send a \"J\" for go to next cell\n", " event.which = 74;\n", " event.keyCode = 74;\n", " manager.command_mode();\n", " manager.handle_keydown(event);\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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gIAeFBtvQgABBBBAAAEEEEAAAQQQQCC0AgT00HoyGgIIIIAAAkEL5OTkqHfv3oqLi9PSpUu9e70rjkWLFumwww5T165dNW/ePCUnJ+/3PJs2bdI//vEPffjhh1qxYoVSU1OVmZnpPdjt8MMPr3zfTz/9pKOOOkrt27fX4sWLVb9+/cr/9umnn+qUU07Rcccdp6+++sr782effVa/+93vdPnll+uFF16ofG15eblee+0175xLlixRWlqaBg4c6L32pJNOCtqDNyKAAAIIIBBrAgT0WOs480UAAQQQcFrg73//u2688UaNHj3aC70Vx+mnn66PPvpIn3/+uU444YT9zuGtt97SlVdeqT179qhLly469NBDlZ2d7YX6lJQUff311xo8eHDl+2+44QY98cQTuuOOO/TAAw94f15WVuYFehPa586dq169eh0woN97772655571LhxYw0fPly5ubky4X/37t3eHMxcOBBAAAEEEEDg4AIE9IMb8QoEEEAAAQTCJlBaWqojjzxSs2bN8sL0scce6/2/v/rVrzRq1Ci9+eabB6xl9erV3oPczP+6d+9e+dq77rpLf/nLX7yr4pMmTar8cxOizVV7c9V9/vz53nvGjx+vMWPG6I9//KMeeeSRytdWdwXd1GuCubmib67yt2nTxnv9rl279OKLL+rqq69WYmJi2Pw4EQIIIIAAAn4WIKD7uXvUjgACCCAQlQIVW89NcDb//yFDhnhbx80V7Q4dOgQ1Z3NV2wRpcxU9Ly+vyhjvv/++zj77bI0YMULvvvuuunXr5v13c76GDRseMKCbgN+0aVNv672pkQMBBBBAAAEEghcgoAdvxzsRQAABBBCwJlCx9fzkk0+WuR/80Ucf1c0331zr823btk0LFy7UggULdNNNN6mgoMC7Wt6yZcsqY5111lmaOHGiKs739ttva+TIkVVes7970E24NyH/0ksv1Z/+9KcqV+5rXTBvQAABBBBAIIYFCOgx3HymjgACCCDgroC5Mt25c2eZgG3uATf3giclJdWo4K1bt+rll1/2tqqbYG62n/fo0cN78FxRUZF3T3p6enqVscwD6jIyMmS2rB9//PH64osvAs61v4Bu7nc3W+j/9a9/efe+m5BvtsebB8xxIIAAAggggEDNBQjoNbfilQgggAACCIRN4JtvvqkMuO3atfO2m5unox/sMCH8xBNP1Pbt2/Wb3/xGF110kff0d3MfuHkq/IYNG6oN6C+99JL3dHZz9O/fXzNmzAi4d3x/Ab2iJvPLhGeeeUZPP/20Nm7c6D0h3lyVb9269cHK5r8jgAACCCCAgCQCOh8DBBBAAAEEHBMwV7lNqDYPWrvuuut0++23e19Z9s9//vOglR5xxBGaM2eOF7BN0N732F9AN1fce/bs6X3dmrnqbZ4k//DDD+vWW2+t8v6DBfSKFxcWFnoPpDNPhf/1r3/thXQOBBBAAAEEEDi4AAH94Ea8AgEEEEAAgbAK3Hfffbr77ru9Lermvu4BAwZ4T1g3V9WPPvro/dZitsU3adLEC/ezZ88OeF2rVq20efPmgCvo5mvZzPeaf/nllzIB32yHN1fgzVezVTwwzgxW04BuXmu+G93UEh8f743FgQACCCCAAAIHFyCgH9yIVyCAAAIIIBA2geXLl6tv377eFW3zVWsm4E6ZMsUL5iYsV3yfeXUFlZSUeE9dN/ecmyeqm63x5li7dq3Gjh2rTz75xPu/970H/bvvvvO+ys18z/p//vMf779PmDDB2xpv/vyrr75SXFyc9+fVBfRly5bpt7/9rXe13DxtvuKYOnWqhg4d6l3Fr+6XBWED5UQIIIAAAgj4SICA7qNmUSoCCCCAQPQLnHDCCd6VbBOM933ImgnYzz//vPeU9Pvvv3+/EFdddZXGjRvnffXZMccc44VzE5DN96jv2LFD06dPrwzoZiu9CdArVqzwHia37/emV9Tx3HPPeeF+fwH9vffek7kCb8bu1KmTd/XefI2bCf7mgXMffvihTj311OhvHDNEAAEEEEAgBAIE9BAgMgQCCCCAAAKhEHj11Vd1ySWX6Mwzz/S+tmzfo+I+8Z07d2rmzJleEK7uyM/P17333qs33njD+zo18wT4a665xgvR5kq3edJ6xRV0E/TvvPNOXX/99d595/se5sq4OUe9evW0aNEi7wFz+9vibs7z+OOPa9q0ad797+Zhdib433HHHRo8eHAoaBgDAQQQQACBmBAgoMdEm5kkAggggAACCCCAAAIIIICA6wIEdNc7RH0IIIAAAggggAACCCCAAAIxIUBAj4k2M0kEEEAAAQQQQAABBBBAAAHXBQjorneI+hBAAAEEEEAAAQQQQAABBGJCgIAeE21mkggggAACCCCAAAIIIIAAAq4LENBd7xD1IYAAAggggAACCCCAAAIIxIQAAT0m2swkEUAAAQQQQAABBBBAAAEEXBcgoLveIepDAAEEEEAAAQQQQAABBBCICQECeky0mUkigAACCCCAAAIIIIAAAgi4LkBAd71D1IcAAggggAACCCCAAAIIIBATAgT0mGgzk0QAAQQQQAABBBBAAAEEEHBdgIDueoeoDwEEEEAAAQQQQAABBBBAICYECOgx0WYmiQACCCCAAAIIIIAAAggg4LoAAd31DlEfAggggAACCCCAAAIIIIBATAgQ0GOizUwSAQQQQAABBBBAAAEEEEDAdQECuusdoj4EEEAAAQQQQAABBBBAAIGYECCgx0SbmSQCCCCAAAIIIIAAAggggIDrAgR01ztEfQgggAACCCCAAAIIIIAAAjEhQECPiTYzSQQQQAABBBBAAAEEEEAAAdcFCOiud4j6EEAAAQQQQAABBBBAAAEEYkLg/wPUimIVt2t8DQAAAABJRU5ErkJggg==\" width=\"640\">" ], "text/plain": [ "<IPython.core.display.HTML object>" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "Text(0, 0.5, 'f( x )')" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "fig, ax = plt.subplots()\n", "\n", "# 給一個輸入 x 及對應 y 函數的值\n", "ax.plot([1, 2, 3, 4], [1, 4, 9, 16])\n", "\n", "# 設定 x 軸標籤\n", "ax.set_xlabel('x axis')\n", "# 設定 y 軸標籤\n", "ax.set_ylabel('f( x )')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### § 使用格式字串設定2D點、線形式\n", "\n", "每一對 x, y 參數都可以提供一個圖示格式化字串的選項,用來指定顏色、線段樣式、以及點標記種類。 使用字母及符號來表示的格式化字串模仿自 **MATLAB** ,字串通常由代表顏色的字母接著代表點標記或線段樣式的符號,但顏色、線段樣式、點標記三種都為選用(optional)。 預設的格式化字串是 `'b-'`,代表藍色的實線段。 若不指定顏色,則 matplotlib 會按照內定的幾種顏色交替使用。\n", "\n", "+ **顏色 Colors** - 用來代表顏色格式的字母。\n", "\n", "| 字母 | 顏色 |\n", "|----------|----------------|\n", "| **'b'** | blue 藍色 |\n", "| **'g'** | green 綠色 |\n", "| **'r'** | red 紅色 |\n", "| **'c'** | cyan 藍綠色 |\n", "| **'m'** | magenta 洋紅色 |\n", "| **'y'** | yellow 黃色 |\n", "| **'k'** | black 黑色 |\n", "| **'w'** | white 白色 |\n", "\n", "Note: 如果格式化字串裡只用來指定顏色,另外還可以使用 **RGB 值的 hex 字串**,如 '#7F7F7F'。\n", "\n", "+ **點標記 Markers** - 用來代表點標記的格式符號。\n", "\n", "| 字母 | 標記描述 |\n", "|----------|-----------------------|\n", "| **'.'** | point marker |\n", "| **','** | pixel marker |\n", "| **'o'** | circle marker |\n", "| **'v'** | triangle_down marker |\n", "| **'^'** | triangle_up marker |\n", "| **'<'** | triangle_left marker |\n", "| **'>'** | triangle_right marker |\n", "| **'s'** | square marker |\n", "| **'p'** | pentagon marker |\n", "| **'\\*'** | star marker |\n", "| **'h'** | hexagon1 marker |\n", "| **'H'** | hexagon2 marker |\n", "| **'+'** | plus marker |\n", "| **'x'** | x marker |\n", "| **'D'** | diamond marker |\n", "| **'d'** | thin_diamond marker |\n", "| **'\\|'** | vertical line marker |\n", "| **'\\_'** | horizontal line marker|\n", "\n", "+ **線段樣式 Line Styles** - 用來代表線段樣式的格式符號。\n", "\n", "| 字母 | 線段樣式描述 |\n", "|----------|-----------------------|\n", "| **'-'** | solid line style |\n", "| **'--'** | dashed line style |\n", "| **'-.'** | dash-dot line style |\n", "| **':'** | dotted line style |\n", "\n", "參閱 [axes.plot: format strings](https://matplotlib.org/api/_as_gen/matplotlib.axes.Axes.plot.html)" ] }, { "cell_type": "code", "execution_count": 7, "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", " fig.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 overridden (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", " event.shiftKey = false;\n", " // Send a \"J\" for go to next cell\n", " event.which = 74;\n", " event.keyCode = 74;\n", " manager.command_mode();\n", " manager.handle_keydown(event);\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,iVBORw0KGgoAAAANSUhEUgAAA+gAAALuCAYAAAA9jTxNAAAgAElEQVR4XuzdB5RV5bn/8d80ZmDoIL2I9CpNyigKCipEjTeU2AKKiIhEc2NJ+4tiTGLNvcYoKMWALVEg1xLBEgHL0CE0lSpVQKlSps/5r70NJ4wgDHPOe85zzvnOWnet/5Wzn/d5P89+1/r/7j4lKRAIBMQfAggggAACCCCAAAIIIIAAAghEVSCJgB5VfxZHAAEEEEAAAQQQQAABBBBAwBcgoHMjIIAAAggggAACCCCAAAIIIGBAgIBuYAi0gAACCCCAAAIIIIAAAggggAABnXsAAQQQQAABBBBAAAEEEEAAAQMCBHQDQ6AFBBBAAAEEEEAAAQQQQAABBAjo3AMIIIAAAggggAACCCCAAAIIGBAgoBsYAi0ggAACCCCAAAIIIIAAAgggQEDnHkAAAQQQQAABBBBAAAEEEEDAgAAB3cAQaAEBBBBAAAEEEEAAAQQQQAABAjr3AAIIIIAAAggggAACCCCAAAIGBAjoBoZACwgggAACCCCAAAIIIIAAAggQ0LkHEEAAAQQQQAABBBBAAAEEEDAgQEA3MARaQAABBBBAAAEEEEAAAQQQQICAzj2AAAIIIIAAAggggAACCCCAgAEBArqBIdACAggggAACCCCAAAIIIIAAAgR07gEEEEAAAQQQQAABBBBAAAEEDAgQ0A0MgRYQQAABBBBAAAEEEEAAAQQQIKBzDyCAAAIIIIAAAggggAACCCBgQICAbmAItIAAAggggAACCCCAAAIIIIAAAZ17AAEEEEAAAQQQQAABBBBAAAEDAgR0A0OgBQQQQAABBBBAAAEEEEAAAQQI6NwDCCCAAAIIIIAAAggggAACCBgQIKAbGAItIIAAAggggAACCCCAAAIIIEBA5x5AAAEEEEAAAQQQQAABBBBAwIAAAd3AEGgBAQQQQAABBBBAAAEEEEAAAQI69wACCCCAAAIIIIAAAggggAACBgQI6AaGQAsIIIAAAggggAACCCCAAAIIENC5BxBAAAEEEEAAAQQQQAABBBAwIEBANzAEWkAAAQQQQAABBBBAAAEEEECAgM49gAACCCCAAAIIIIAAAggggIABAQK6gSHQAgIIIIAAAggggAACCCCAAAIEdO4BBBBAAAEEEEAAAQQQQAABBAwIENANDIEWEEAAAQQQQAABBBBAAAEEECCgcw8ggAACCCCAAAIIIIAAAgggYECAgG5gCLSAAAIIIIAAAggggAACCCCAAAGdewABBBBAAAEEEEAAAQQQQAABAwIEdANDoAUEEEAAAQQQQAABBBBAAAEECOjcAwgggAACCCCAAAIIIIAAAggYECCgGxgCLSCAAAIIIIAAAggggAACCCBAQOceQAABBBBAAAEEEEAAAQQQQMCAAAHdwBBoAQEEEEAAAQQQQAABBBBAAAECOvcAAggggAACCCCAAAIIIIAAAgYECOgGhkALCCCAAAIIIIAAAggggAACCBDQuQcQQAABBBBAAAEEEEAAAQQQMCBAQDcwBFpAAAEEEEAAAQQQQAABBBBAgIDOPYAAAggggAACCCCAAAIIIICAAQECuoEh0AICCCCAAAIIIIAAAggggAACBHTuAQQQQAABBBBAAAEEEEAAAQQMCBDQDQyBFhBAAAEEEEAAAQQQQAABBBAgoHMPIIAAAggggAACCCCAAAIIIGBAgIBuYAi0gAACCCCAAAIIIIAAAggggAABnXsAAQQQQAABBBBAAAEEEEAAAQMCBHQDQ6AFBBBAAAEEEEAAAQQQQAABBAjo3AMIIIAAAggggAACCCCAAAIIGBAgoBsYAi0ggAACCCCAAAIIIIAAAgggQEDnHkAAAQQQQAABBBBAAAEEEEDAgAAB3cAQaAEBBBBAAAEEEEAAAQQQQAABAjr3AAIIIIAAAggggAACCCCAAAIGBAjoBoZACwgggAACCCCAAAIIIIAAAggQ0LkHEEAAAQQQQAABBBBAAAEEEDAgQEA3MARaQAABBBBAAAEEEEAAAQQQQICAzj2AAAIIIIAAAggggAACCCCAgAEBArqBIdACAggggAACCCCAAAIIIIAAAgR07gEEEEAAAQQQQAABBBBAAAEEDAgQ0A0MgRYQQAABBBBAAAEEEEAAAQQQIKBzDyCAAAIIIIAAAggggAACCCBgQICAbmAItIAAAggggAACCCCAAAIIIIAAAZ17AAEEEEAAAQQQQAABBBBAAAEDAgR0A0OgBQQQQAABBBBAAAEEEEAAAQQI6NwDCCCAAAIIIIAAAggggAACCBgQIKAbGAItIIAAAggggAACCCCAAAIIIEBA5x5AAAEEEEAAAQQQQAABBBBAwIAAAd3AEGgBAQQQQAABBBBAAAEEEEAAAQI69wACCCCAAAIIIIAAAggggAACBgQI6AaGQAsIIIAAAggggAACCCCAAAIIENC5BxBAAAEEEEAAAQQQQAABBBAwIEBANzAEWkAAAQQQQAABBBBAAAEEEECAgM49gAACCCCAAAIIIIAAAggggIABAQK6gSHQAgIIIIAAAggggAACCCCAAAIEdO4BBBBAAAEEEEAAAQQQQAABBAwIENANDIEWEEAAAQQQQAABBBBAAAEEECCgcw8ggAACCCCAAAIIIIAAAgggYECAgG5gCLSAAAIIIIAAAggggAACCCCAAAGdewABBBBAAAEEEEAAAQQQQAABAwIEdANDoAUEEEAAAQQQQAABBBBAAAEECOjcAwgggAACCCCAAAIIIIAAAggYECCgGxgCLSCAAAIIIIAAAggggAACCCBAQOceQAABBBBAAAEEEEAAAQQQQMCAAAHdwBAi2ULVqlWVl5enunXrRnJZ1kIAAQQQQAABBBBAAAFjAjt37lR6eroOHDhgrLPEbYeAnmCzL1++vAoLC9WwYcME2znbRQABBBBAAAEEEEAAgeMFtm3bptTUVOXk5ABjRICAbmQQkWrjnHPO8ZfatGlTpJZkHQQQQAABBBBAAAEEEDAoQDawNxQCur2ZOO2IQ+iUl+IIIIAAAggggAACCMSMANnA3qgI6PZm4rQjDqFTXoojgAACCCCAAAIIIBAzAmQDe6MioNubidOOOIROeSmOAAIIIIAAAggggEDMCJAN7I2KgG5vJk474hA65aU4AggggAACCCCAAAIxI0A2sDcqArq9mTjtiEPolJfiCCCAAAIIIIAAAgjEjADZwN6oCOj2ZuK0Iw6hU16KI4AAAggggAACCCAQMwJkA3ujIqA7nsnAgQM1c+bM711lw4YNatq0afDfP/30U/3617/Whx9+6P9eebdu3TRu3Didf/75YemUQxgWRooggAACCCCAAAIIIBDzAmQDeyMkoDueycUXX6w5c+bIC+rly5c/YbXHH39ctWvX9v/78uXL1atXLx09elQdO3ZUhQoVtGDBAv/f3nzzTfXv3z/kbjmEIRNSAAEEEEAAAQQQQACBuBAgG9gbIwHd8Uw6deqkf/3rX8rJyVFGRsYpV+vdu7fmzZuniRMnasSIEf5r3333Xf3gBz9Qo0aN5D1tT0pKCqljDmFIfFyMAAIIIIAAAggggEDcCJAN7I2SgO54Jmeffbb279+vgwcPnnKltWvXqlWrVurbt6/ee++9Eq+95ZZbNGnSJP+/e/8eyh+HMBQ9rkUAAQQQQAABBBBAIH4EyAb2ZklAdzyTKlWq+G9hX7du3SlXuv/++/Xggw9q/PjxGjVqVInXzpo1SwMGDNBNN92kKVOmhNQxhzAkPi5GAAEEEEAAAQQQQCBuBMgG9kZJQHc4k6KiIqWlpalnz5669957/beve1/81rp1aw0ePFg1a9YMrj506FC98MIL/ufQvc+fH//nPYGvXr26vLfAe59nD+WPQxiKHtcigAACCCCAAAIIIBA/AmQDe7MkoDucyd69e0uE8OOXqlatmiZMmKAhQ4b4/7lfv356//33tX37dtWvX79EV4FAwA/63re9e2+FP93fsYN2stdt27ZNDRs21KZNm05Xhn9HAAEEEEAAAQQQQACBOBYgoNsbLgHd4Uy8L4YbNmyY/23sd955p1q0aKHNmzfrkUce8Z+We/991apV8g5Gu3bttGbNmu/9MjnvbfLet7sfOnTotB0T0E9LxAsQQAABBBBAAAEEEEh4AQK6vVuAgB6lmXjfzP72229r9OjRevrpp9W+fXutXr3aD+En+zm2WrVqKS8v77RfNne67XAITyfEvyOAAAIIIIAAAgggkBgCZAN7cyagR2km3u+aX3XVVbrwwgv9z6Zfeuml/re0b9261X8L+vF/x97i3qxZM33++echdcwhDImPixFAAAEEEEAAAQQQiBsBsoG9URLQozQT7+3s3tvaGzdu7L/t3Xsr/LRp07Rs2TJ5v51+/N+xz7L36dNHH3zwQUgdcwhD4uNiBBBAAAEEEEAAAQTKLHAkr1BTPv7Cv374BU2UmZ5a5lrhuJBsEA7F8NYgoIfXs9TV3nnnHV1++eX+k3Pv//3b3/5WY8eO1VNPPaUxY8aUqHPsafuIESM0ceLEUq9xshdyCEPi42IEEEAAAQQQQAABBMosMGHeRj0869t3xP6yfyuNuqhpmWuF40KyQTgUw1uDgB5ezxLVvG9cb9my5UlXGDlypB+2f/GLX+jhhx/2v1Xdewv7RRdddMJPqQ0fPlzPP/+85s6d6/97KH8cwlD0uBYBBBBAAAEEEEAAgbIJeE/Pez06R/uO5PsFqmeW00f39onqU3SyQdlm6fIqAroj3S+++ML/PXPvbeleED/rrLOCK02ePFleQK9SpYr/ze1169b1/+3YT609++yz/r97f7Nnz9YVV1zhf9P7unXrQu6WQxgyIQUQQAABBBBAAAEEEDhjgWNPz4t00L82RVWi/hSdbHDGY3R+AQHdEXF+fr5+/etf649//KNSU1PVo0cPP6R7gdx7su79xNqLL76o//qv/wp24P3kWlZWlg4fPux/Dj0zM1Pz589XUlKSZs2apb59+4bcLYcwZEIKIIAAAggggAACCCBwRgLHPz3fn/q8f221wpui/hSdbHBGY4zIiwnojpm9b2ifMGGCH7R3796tRo0aqXv37ho3bpyaNGlywuqfffaZfvWrX/nf7F5YWKhu3br5n0/3gns4/jiE4VCkBgIIIIAAAggggAACpRc4/un5joyb/Qvr506O+lN0skHpZxipVxLQIyVtZB0OoZFB0AYCCCCAAAIIIIBAQgh89+n5N2kz/H1XLhgY9afoZAN7tyAB3d5MnHbEIXTKS3EEEEAAAQQQQAABBEoIfPfpeSAp1//3pEBG1J+ikw3s3awEdHszcdoRh9ApL8URQAABBBBAAAEEEAgKfN/T82MviPZTdLKBvZuVgG5vJk474hA65aU4AggggAACCCCAAAJBge97en7sBdF+ik42sHezEtDtzcRpRxxCp7wURwABBBBAAAEEEEDAFzjd0/NjTNF8ik42sHezEtDtzcRpRxxCp7wURwABBBBAAAEEEEDAFzjd0/NjTNF8ik42sHezEtDtzcRpRxxCp7wURwABBBBAAAEEEEDAf3re4w//1KHcQnm/e37sm9u/jyZaT9HJBvZuVgK6vZk47YhD6JSX4ggggAACCCCAAAII6LdvrdHkjzerWEe0M/0OFf/7m9u/jyY5kKG6eX9SsjL1y/6tNOqiphFRJBtEhPmMFiGgnxFX7L+YQxj7M2QHCCCAAAIIIIAAAnYFNnx1SP3+50MFAmXrsXpmOX10bx9lpqeWrcAZXEU2OAOsCL2UgB4haCvLcAitTII+EEAAAQQQQAABBOJN4MDRfF3yxDztPZIf0tYi9RSdbBDSmJxcTEB3wmq3KIfQ7mzoDAEEEEAAAQQQQCB2BXILinTDpIVasmV/cBODuzbQvZe1VFJS0hltLC05WVUqpJ3RNWV5MdmgLGpuryGgu/U1V51DaG4kNIQAAggggAACCCAQ4wJFxQHd9uJSvfvp7uBO+reroz9f11kpyWcWziNJQTaIpHbp1iKgl84pbl7FIYybUbIRBBBAAAEEEEAAASMC9/3far2wYEuwm25nV9e0m7spIy3FSIcnb4NsYG88BHR7M3HaEYfQKS/FEUAAAQQQQAABBBJQYGr2Zj3w5hr/i+Fa1K6o127Nishb1EOlJhuEKhj+6wno4Tc1XZFDaHo8NIcAAggggAACCCAQowJvr9qpR2d/rpdv6aF6VcvHxC7IBvbGREC3NxOnHXEInfJSHAEEEEAAAQQQQCCBBfILi1UuNTlmBMgG9kZFQLc3E6cdcQid8lIcAQQQQAABBBBAIAEEYi2If99IyAb2blYCur2ZOO2IQ+iUl+IIIIAAAggggAACcS7wxZ4j/s+pPfjDtrqkde2Y3i3ZwN74COj2ZuK0Iw6hU16KI4AAAggggAACCMSxwNeH8vSj8Z9o274c/+fTfnd1O13TrVHM7phsYG90BHR7M3HaEYfQKS/FEUAAAQQQQAABBOJU4HBeoa55br5W7/gmuMPRvZvq3stbxeyOyQb2RkdAtzcTpx1xCJ3yUhwBBBBAAAEEEEAgDgW8z5zfPHWxPlq/J7i7gZ0b6PHBHZSUlBSzOyYb2BsdAd3eTJx2xCF0yktxBBBAAAEEEEAAgTgTCAQCuuvVFZq5fEdwZxe1OEuThnVVWkrsfGP7ycZCNrB3sxLQ7c3EaUccQqe8FEcAAQQQQAABBBCIM4GHZ32uCfM2BnfVoUEVvXJLD2Wmp8b8TskG9kZIQLc3E6cdcQid8lIcAQQQQAABBBBAII4E/vLJF3rgzU+DO2pco4Jm3JalmhXT42KXZAN7YySg25uJ0444hE55KY4AAggggAACCCAQJwL/WLlTY15ZpkDg2w3VyCynmaOz1LhGZpzsUCIb2BslAd3eTJx2xCF0yktxBBBAAAEEEEAAgTgQWL51v3787ALlFxX7u6lQLkV/HdlDHRpUjYPd/WcLZAN74ySg25uJ0444hE55KY4AAggggAACCCAQBwJH8gp1+8vLNHft10pNTvK/EK53y1pxsLOSWyAb2BspAd3eTJx2xCF0yktxBBBAAAEEEEAAgTgRKCgq1m/+vkrdmtTQoC4N4mRXBHTrgySgW59QmPsjoIcZlHIIIIAAAggggAACCMSoANnA3uAI6PZm4rQjDqFTXoojgAACCCCAAAIIxKBAbkGRvCfmlTLSYrD7srdMNii7nasrCeiuZI3W5RAaHQxtIYAAAggggAACCERFoKg4oNteXKpt+3M09abzVKtyRlT6iMaiZINoqJ96TQK6vZk47YhD6JSX4ggggAACCCCAAAIxJBAIBHTf66v14oKtftf1q5bXSyO66+ya8fNTaqcaB9nA3s1KQLc3E6cdcQid8lIcAQQQQAABBBBAIIYE/vzBej3+7rpgxy1qV9Rrt2apSoXEeKs72cDezUpAtzcTpx1xCJ3yUhwBBBBAAAEEEEAgRgReXbJN905fGey2TuUMzRydpXpVy8fIDkJvk2wQumG4KxDQwy1qvB6H0PiAaA8BBBBAAAEEEEDAucCcz7/SiGlL5H3+3PurnJGq10ZlqWWdSs7XtrQA2cDSNL7thYBubyZOO+IQOuWlOAIIIIAAAggggIBxgX9tO6Brn1ugnIIiv9Nyqcl6YXg3dT+nhvHOw98e2SD8pqFWJKCHKhhj13MIY2xgtIsAAggggAACCCAQNoEv9hzRwPHZ2nck36+ZlCQ9c11n9W9fN2xrxFIhsoG9aRHQ7c3EaUccQqe8FEcAAQQQQAABBBAwKvD1oTz9aPwn2rYvJ9jhuKvaaljW2UY7dt8W2cC98ZmuQEA/U7EYfz2HMMYHSPsIIIAAAggggAACZyzg/ZzatRMXaMGmfcFrR/duqnsvb3XGteLpArKBvWkS0O3NxGlHHEKnvBRHAAEEEEAAAQQQMCqwesdB3fj8Yu05nKeBnRvo8cEdlOS9xz2B/8gG9oZPQLc3E6cdcQid8lIcAQQQQAABBBBAwLDA1r1H9eyHG/XAVW2VlpJsuNPItEY2iIzzmaxCQD8TrTh4LYcwDobIFhBAAAEEEEAAAQQQCIMA2SAMiGEuQUAPM6j1chxC6xOiPwQQQAABBBBAAIFwCHhvaW9Xv0o4SsVtDbKBvdES0O3NxGlHHEKnvBRHAAEEEEAAAQQQMCDwj5U7NeaVZRp+fhP9ZkBrJScn9mfNv28kZAMDN+t3WiCg25uJ0444hE55KY4AAggggAACCCAQZYEFm/Zq6ORFyi8q9jv5cdeGemRQhyh3ZXN5soG9uRDQ7c3EaUccQqe8FEcAAQQQQAABBBCIosDnu77R4AnzdSi30O8iNTlJk4Z1Ve+WtaLYld2lyQb2ZkNAtzcTpx1xCJ3yUhwBBBBAAAEEEEAgSgJfHsjRj57J1q5vcoMdPD74XA3q0iBKHdlflmxgb0YEdHszcdoRh9ApL8URQAABBBBAAAEEoiBw4Gi+/+R8/VeHg6vfc1lL3d6nWRS6iZ0lyQb2ZkVAtzcTpx1xCJ3yUhwBBBBAAAEEEEAgwgK5BUX6yeSFWrx5f3DloT0ba9xVbZWUxJfDnWocZIMI36ylWI6AXgqkeHoJhzCepsleEEAAAQQQQACBxBYoKg5o9EtL9c6a3UGI/u3q6M/XdVYK39x+2puDbHBaooi/gIAecfLoLsghjK4/qyOAAAIIIIAAAgiERyAQCGjs62v0woItwYLdzq6uaTd3U0ZaSngWifMqZAN7Ayag25uJ0444hE55KY4AAggggAACCCAQIYGP1+/RDZMXBldrUbuiXrs1S1UqpEWog9hfhmxgb4YEdHszcdoRh9ApL8URQAABBBBAAAEEIigw8cNN+t3bn6lulQzNuC1L9aqWj+Dqsb8U2cDeDAno9mbitCMOoVNeiiOAAAIIIIAAAghEWOCNFV+qVZ1KalG7UoRXjv3lyAb2ZkhAtzcTpx1xCJ3yUhwBBBBAAAEEEEAAgZgRIBvYGxUB3d5MnHbEIXTKS3EEEEAAAQQQQAABRwJf7DmiI3mFale/iqMVEq8s2cDezAno9mbitCMOoVNeiiOAAAIIIIAAAgg4EPj6UJ5+NP4T7Tucr/E3dNGFLc5ysErilSQb2Js5Ad3eTJx2xCF0yktxBBBAAAEEEEAAgTALHM4r1DXPzdfqHd/4lVOTk/R/t5/Pk/QwOJMNwoAY5hIE9DCDWi/HIbQ+IfpDAAEEEEAAAQQQOCaQX1ism6cu1kfr9wRRBnZuoMcHd1BSUhJQIQqQDUIEdHA5Ad0BquWSHELL06E3BBBAAAEEEEAAgWMCgUBAd726QjOX7wiiXNTiLE0a1lVpKclAhUGAbBAGxDCXIKCHGdR6OQ6h9QnRHwIIIIAAAggggIAn8PCszzVh3sYgRocGVfTKLT2UmZ4KUJgEyAZhggxjGQJ6GDFjoRSHMBamRI8IIIAAAggggEBiC/zlky/0wJufBhEa16igGbdlqWbF9MSGCfPuyQZhBg1DOQJ6GBBjqQSHMJamRa8IIIAAAggggEDiCfxj5U6NeWWZAoFv914js5xmjs5S4xqZiYfheMdkA8fAZShPQC8DWixfwiGM5enROwIIIIAAAgggEN8CCzbt1dDJi5RfVOxvtEK5FP11ZA91aFA1vjcepd2RDaIEf4plCej2ZuK0Iw6hU16KI4AAAggggAACCJRRwPtSuOsmLtT8TXv9Ct7PqXlfCNe7Za0yVuSy0wmQDU4nFPl/J6BH3jyqK3IIo8rP4ggggAACCCCAAAKnEDiUW6BRLy7VJxv26vHB52pQlwZ4ORQgGzjELWNpAnoZ4WL1Mg5hrE6OvhFAAAEEEEAAgcQQ8H77fN66r9WvTe3E2HAUd0k2iCL+9yxNQLc3E6cdcQid8lIcAQQQQAABBBBAAIGYESAb2BsVAd3eTJx2xCF0yktxBBBAAAEEEEAAgVIKFBUH9OyHGzWs59n8tnkpzcL9MrJBuEVDr0dAD90wpipwCGNqXDSLAAIIIIAAAgjEpYD3hXBjX1+jFxZsUYcGVTTlxvP4jfMoTJpsEAX00yxJQLc3E6cdcQid8lIcAQQQQAABBBBAoBQCT8/ZoMfeWRt8Zd/Wtf1vbOcvsgJkg8h6l2Y1AnpplOLoNRzCOBomW0EAAQQQQAABBGJQ4LUl23TP9JXBzutUztDM0VmqV7V8DO4mtlsmG9ibHwHd3kycdsQhdMpLcQQQQAABBBBAAIFTCMxZ+5VGTF0i7/Pn3l/ljFS9NipLLetUwi0KAmSDKKCfZkkCur2ZOO2IQ+iUl+IIIIAAAggggAAC3yOwYtsBXfPcAuUUFPmvKJeSrBdu7qbu59TALEoCZIMowZ9iWQK6vZk47YhD6JSX4ggggAACCCCAAAInEdi854gGjs/W3iP5/r8mJUlPX9dZA9rXxSuKAmSDKOJ/z9IEdHszcdoRh9ApL8URQAABBBBAAAEEviPw9aE8P5xv3Xc0+C8PXNlGN57fBKsoC5ANojyAkyxPQLc3E6cdcQid8lIcAQQQQAABBBBA4DiBI3mF/tvaV+04GPyvoy5qql/2b4WTAQGygYEhfKcFArq9mTjtiEPolJfiCCCAAAIIIIAAAscJLN2yT9dPWqjcgmL/v/6oU309MeRcJXnvcecv6gJkg6iP4IQGCOj2ZuK0Iw6hU16KI4AAAggggAACCHxHYPnW/Rr+l8VqV7+Kptx4ntJSkjEyIkA2MDKI49ogoNubidOOOIROeSmOAAIIIIAAAgggcBIB70vialZKV8X0VHwMCZANDA3j360Q0O3NxGlHHEKnvBRHAAEEEEAAAQQQQCBmBMgG9kZFQLc3E6cdcQid8lIcAQQQQAABBBBIaIG3V+2U963tw7LOTmiHWNk82cDepAjo9mbitCMOoVNeiiOAAAIIIIAAAgkrsHDTXv1kyiLlFxbrtt5Nde9lLfkyOON3A9nA3oAI6PZm4rQjDqFTXoojgAACCCCAAAIJKYd087oAACAASURBVLB21yENmpCtQ7mF/v5Tk5P0+pjz1bZelYT0iJVNkw3sTYqAbm8mTjviEDrlpTgCCCCAAAIIIJBwAl8eyNGPnsnWrm9yg3t/fPC5GtSlQcJZxNqGyQb2JkZAtzcTpx1xCJ3yUhwBBBBAAAEEEEgogYNHC/wn5+u/Ohzc9z2XtdTtfZollEOsbpZsYG9yBHR7M3HaEYfQKS/FEUAAAQQQQACBhBHILSjS0MmLtGjzvuCeh/ZsrHFXteWz5zFyF5AN7A2KgG5vJk474hA65aU4AggggAACCCCQEAJFxQHd/tIyzV6zK7jf/u3q6M/XdVZKclJCGMTDJskG9qZIQLc3E6cdcQid8lIcAQQQQAABBBCIe4FAIKD731ijafO3BPfa7ezqmnZzN2WkpcT9/uNpg2QDe9MkoNubidOOOIROeSmOAAIIIIAAAgjEvcDTczbosXfWBvfZvFZFTR+VpSoV0uJ+7/G2QbKBvYkS0O3NxGlHHEKnvBRHAAEEEEAAAQTiWuC7T8/rVM7QzNFZqle1fFzvO143RzawN1kCur2ZOO2IQ+iUl+IIIIAAAggggEDcC3gh/Zm5G/XsvI16bVSWWtapFPd7jtcNkg3sTZaAbm8mTjviEDrlpTgCCCCAAAIIIJAwAnsP56lGxfSE2W88bpRsYG+qBPQIz2TatGkaNmyYv+rmzZvVuHHjEh188skneuCBB7Rw4UKlpqaqV69e+v3vf6+2bduGpVMOYVgYKYIAAggggAACCCSMgPfEPCmJb2aPx4GTDexNlYAewZl8/fXXat26tfbu3XvSgD5r1ixdeeWV/r91795dubm5Wr58uSpUqKCPPvpInTp1CrlbDmHIhBRAAAEEEEAAAQQSRmDP4TyNfmmZ/9vmretWTph9J8pGyQb2Jk1Aj+BMrr/+es2cOVMNGzbU+vXrSzxB9/4vk02bNtXWrVv11ltv6fLLL/c7mzx5skaMGKHevXtrzpw5IXfLIQyZkAIIIIAAAggggEBCCBzJK9S1Exdo5faDqpSequeGdlXPpjUSYu+Jskmygb1JE9AjNBPv6fiAAQN09913a8mSJZo7d26JgP7uu+/qsssu88P4xIkTS3TVr18/vf/++1q3bp2aN28eUsccwpD4uBgBBBBAAAEEEEgIgYKiYt08dYk+XPd1cL8/7tpQjwzqkBD7T5RNkg3sTZqAHoGZHD582P8M+ZEjR/yQPXDgwBMCuve5dO/z6V6QP/b0/Fhr48eP1+jRozVu3DiNHTs2pI45hCHxcTECCCCAAAIIIBD3At47O+96bYVmLtsR3Guv5jU15cbzlJaSHPf7T6QNkg3sTZuAHoGZ/OxnP9OTTz6pF198Ud7b3Pv06XNCQL/wwgv9z5nv379fVatWLdGV9zn0zp0768Ybb9Tzzz8fUsccwpD4uBgBBBBAAAEEEIh7gUdmf67xczcG99m+fhW9MrKHKqanxv3eE22DZAN7EyegO56J923sWVlZ6t+/v//Zcu/vZAHde+u6963uBQUFJ3S0bds2NWrUSJdeeqneeeedkDrmEIbEx8UIIIAAAggggEBcC0zN3qz731gT3GOj6hU047YsnVWJn1OLx8GTDexNlYDucCZe2PaefHtf/LZmzRo1aNDgewN6xYoV5f3Prl27TugoJyfH/yb3du3aadWqVaft+NhBO9kLvbDvfUndpk2bTluHFyCAAAIIIIAAAggkjsDbq3bq9peXKRD4ds/VM8v54bxJzczEQUiwnRLQ7Q2cgO5wJg899JDuu+8+Pfvssxo5cmRwpZM9Qa9UqZIfwnfv3n1CR0ePHlVmZqY6dOigFStWnLZjAvppiXgBAggggAACCCCAwHECCzft1U+mLFJ+YbH/X8unpfhva+/YsORHL0GLLwECur15EtAdzWTt2rU699xz/be3//Of/1RSUtIpA3qLFi38p9reU/fjX+td5D2Bb9y4sf8t77Nnzw6pYw5hSHxcjAACCCCAAAIIxJ3A2l2HNGhCtg7lFvp7S0lO0qRhXdWnZa242ysbKilANrB3RxDQHc3k1ltv1XPPPVeq6t5Prnnfzv7hhx9q3759qlatWonrli5dqq5du+qmm27SlClTSlXz+17EIQyJj4sRQAABBBBAAIG4E/jyQI5ufH6R1u0+7O/tsUEdNLhrw7jbJxs6UYBsYO+uIKA7mon3je3eF8Sd7O/vf/+7duzYoaFDh6py5cq688479Yc//MEP32+++aauuOKKEpc99dRTuuOOO+S9Zf43v/lNSB1zCEPi42IEEEAAAQQQQCAuBQ4eLdAt05bowhY1Nebi5nG5RzZFQI+Fe4CAHoUpnewz6HPmzNHFF1980p9S8/6795R948aNatKkSUgdE9BD4uNiBBBAAAEEEEAgbgW8z5+npSSd8HHLuN0wGxPZwN5NQECPwkxOFtADgYBatmzpfw79jTfe0IABA/zOJk6c6H/BXN++ffXee++F3C2HMGRCCiCAAAIIIIAAAjEtUFQckPf/90xNSY7pfdB86AJkg9ANw12BgB5u0VLUO1lA9y57//33/d9LLy4uVo8ePZSXl6dly5b53+CenZ2t9u3bl6L6qV/CIQyZkAIIIIAAAggggEDMCnjB3Pud8y8P5OqpazupfLmUmN0LjYcuQDYI3TDcFQjo4RYtRb3vC+jepfPnz/d/ms37/HpKSoouuugiPfzww2rdunUpKp/+JRzC0xvxCgQQQAABBBBAIF4Fnp6zQY+9s9bfXudGVTV52HmqllkuXrfLvk4jQDawd4sQ0O3NxGlHHEKnvBRHAAEEEEAAAQTMCkxful13v7Yi2F+dyhmaMTpL9auWN9szjbkVIBu49S1LdQJ6WdRi+BoOYQwPj9YRQAABBBBAAIEyCsxd+5VunrpE3ufPvb9KGal6bVRPtapTuYwVuSweBMgG9qZIQLc3E6cdcQid8lIcAQQQQAABBBAwJ7Bi2wFdO3GBjuYX+b2VS0nWtJu7qcc5Ncz1SkORFSAbRNa7NKsR0EujFEev4RDG0TDZCgIIIIAAAgggcBqBzXuOaOD4bO09ku+/MilJevq6zhrQvi52CPAzawbvAQK6waG4bImA7lKX2ggggAACCCCAgB2BPYfz/HC+Ze/RYFMPXNlGN57fxE6TdBJVAbJBVPlPujgB3d5MnHbEIXTKS3EEEEAAAQQQQMCEwJG8Qv9t7Su3Hwz2M+qipvpl/1Ym+qMJGwJkAxtzOL4LArq9mTjtiEPolJfiCCCAAAIIIIBA1AW83zr3vhDug8+/Cvbyo0719cSQc5XkvcedPwT+LUA2sHcrENDtzcRpRxxCp7wURwABBBBAAAEETAjMXr1Ld/x1ufILi9WreU1NufE8paUkm+iNJuwIkA3szOJYJwR0ezNx2hGH0CkvxRFAAAEEEEAAATMCizfv05/+uV7jb+iiiumpZvqiETsCZAM7syCg25tFRDriEEaEmUUQQAABBBBAAAEEEDAvQDawNyKeoNubidOOOIROeSmOAAIIIIAAAghERWDv4TzVqJgelbVZNHYFyAb2ZkdAtzcTpx1xCJ3yUhwBBBBAAAEEEIi4wKIv9unG5xfpviva6NpujSK+PgvGrgDZwN7sCOj2ZuK0Iw6hU16KI4AAAggggAACERVYt/uQBo3P1je5hf66P+/XQndc0jyiPbBY7AqQDezNjoBubyZOO+IQOuWlOAIIIIAAAgggEDGBLw/kaOD4bO08mBtc87FBHTS4a8OI9cBCsS1ANrA3PwK6vZk47YhD6JSX4ggggAACCCCAQEQEDh4t0OBns7Vu9+Hgendf2kJjLubpeUQGECeLkA3sDZKAbm8mTjviEDrlpTgCCCCAAAIIIOBcILegSEMnL9KizfuCa/2kR2M9+MO2SkpKcr4+C8SPANnA3iwJ6PZm4rQjDqFTXoojgAACCCCAAAJOBYqKA7r9pWWavWZXcJ3L29bR09d3Vkoy4dwpfhwWJxvYGyoB3d5MnHbEIXTKS3EEEEAAAQQQQMCZQCAQ0P1vrNG0+VuCa5x3djW9cHN3ZaSlOFuXwvErQDawN1sCur2ZOO2IQ+iUl+IIIIAAAggggIAzgafnbNBj76wN1m9eq6Kmj8pSlQppztakcHwLkA3szZeAbm8mTjviEDrlpTgCCCCAAAIIIOBE4MN1X2volEXB2nUqZ2jm6CzVq1reyXoUTQwBsoG9ORPQ7c3EaUccQqe8FEcAAQQQQAABBJwIFBYV69d/X6VXl2xXpYxU/8l5yzqVnKxF0cQRIBvYmzUB3d5MnHbEIXTKS3EEEEAAAQQQQMCZgPcZ9Cf/uV49zqnh/w9/CIQqQDYIVTD81xPQw29quiKH0PR4aA4BBBBAAAEEEEAAgYgJkA0iRl3qhQjopaaKjxdyCONjjuwCAQQQQAABBOJbYM/hPHk/qVa7ckZ8b5TdRVWAbBBV/pMuTkC3NxOnHXEInfJSHAEEEEAAAQQQCFngSF6hrp24QHsP52vq8PPUrBafNQ8ZlQInFSAb2LsxCOj2ZuK0Iw6hU16KI4AAAggggAACIQkUFBXr5qlL5H1ru/dXtUKapo/qSUgPSZWLv0+AbGDv3iCg25uJ0444hE55KY4AAggggAACCJRZwPsSuLteW6GZy3YEa/RqXlNTbjxPaSnJZa7LhQgQ0GPnHiCgx86swtIpAT0sjBRBAAEEEEAAAQTCLvDo7M/1zNyNwbrt61fRKyN7qGJ6atjXoiACngDZwN59QEC3NxOnHXEInfJSHAEEEEAAAQQQKJPA1OzNuv+NNcFrG1WvoBm3ZemsSullqsdFCJRGgGxQGqXIvoaAHlnvqK/GIYz6CGgAAQQQQAABBBAoITBr1U6NfnmZAoFv/3P1zHJ+OG9SMxMpBJwKkA2c8papOAG9TGyxexGHMHZnR+cIIIAAAgggEH8Ci77YpxsmL1R+YbG/ufJpKf7b2js2rBp/m2VH5gTIBuZGIgK6vZk47YhD6JSX4ggggAACCCCAQKkF1u0+pEHjs/VNbqF/TUpykiYN66o+LWuVugYvRCAUAbJBKHpuriWgu3E1W5VDaHY0NIYAAggggAACCSTgfWP71U9/ohXbDwZ3/digDhrctWECKbDVaAuQDaI9gRPXJ6Dbm4nTjjiETnkpjgACCCCAAAIIlFpg276jGjZlkTbtOaK7L22hMRc3L/W1vBCBcAiQDcKhGN4aBPTwepqvxiE0PyIaRAABBBBAAIEEEth3JF8zl23XzRc0UVJSUgLtnK1aECAbWJhCyR4I6PZm4rQjDqFTXoojgAACCCCAAAIIIBAzAmQDe6MioNubidOOOIROeSmOAAIIIIAAAgicVMD7zPns1bt0Wds6Sk7mSTm3iQ0BsoGNORzfBQHd3kycdsQhdMpLcQQQQAABBBBA4KQCz8zdoEdnr9UP2tfVE0POVUZaClIIRF2AbBD1EZzQAAHd3kycdsQhdMpLcQQQQAABBBBA4ASBGUu3667XVgT/+w871tOT13RCCoGoC5ANoj4CArq9EUS2Iw5hZL1ZDQEEEEAAAQQSW2Du2q80YuoSFRYHfIhKGamaPipLLetUSmwYdm9CgGxgYgwlmuAJur2ZOO2IQ+iUl+IIIIAAAggggEBQYOX2A7rmuQU6ml/k/7dyKcmadnM39TinBkoImBAgG5gYAwHd3hgi1xGHMHLWrIQAAggggAACiSuwZe8RDRyfrT2H830E7xfUnr6uswa0r5u4KOzcnADZwNxIxBN0ezNx2hGH0CkvxRFAAAEEEEAAAe05nOeH8y17jwY1HriyjW48vwk6CJgSIBuYGse3/8e8gPebD/wljACHMGFGzUYRQAABBBBAIAoCR/IKde3EBVq5/WBw9VEXNdUv+7eKQjcsicCpBcgG9u4QArq9mTjtiEPolJfiCCCAAAIIIJDAAgVFxf4Xws1b93VQ4Ued6vs/q5bkvcedPwSMCZANjA2EJ+j2BuK6Iw6ha2HqI4AAAggggECiCnjBfNiURcHt92peU1NuPE9pKcmJSsK+jQuQDewNiCfo9mbitCMOoVNeiiOAAAIIIIBAggu8seJL3fXqv9SqTmW9MrKHKqanJrgI27csQDawNx0Cur2ZOO2IQ+iUl+IIIIAAAggggIAWbNqrpmdV1FmV0tFAwLQA2cDeeAjo9mbitCMOoVNeiiOAAAIIIIAAAgggEDMCZAN7oyKg25uJ0444hE55KY4AAggggAACCSSw6It9OppfqN4tayXQrtlqPAmQDexNk4BubyZOO+IQOuWlOAIIIIAAAggkiMC63Yc0aHy2juYX6ZGBHTSwS4ME2TnbjCcBsoG9aRLQ7c3EaUccQqe8FEcAAQQQQACBBBD48kCOBo7P1s6DucHdvvOzC9WyTqUE2D1bjCcBsoG9aRLQ7c3EaUccQqe8FEcAAQQQQACBOBc4eLRAg5/N1rrdh4M7vfvSFhpzcfM43znbi0cBsoG9qRLQ7c3EaUccQqe8FEcAAQQQQACBOBbILSjS0CmL5H32/NjfT3o01oM/bKukpKQ43jlbi1cBsoG9yRLQ7c3EaUccQqe8FEcAAQQQQACBOBUoKg5ozMvLNGv1ruAOL2tbW89c30UpyYTzOB173G+LbGBvxAR0ezNx2hGH0CkvxRFAAAEEEEAgDgUCgYAeeGONps7fEtxd18bV9OKI7spIS4nDHbOlRBEgG9ibNAHd3kycdsQhdMpLcQQQQAABBBCIQ4Fn5m7Qo7PXBnfWrFZFTR/VU1UrlIvD3bKlRBIgG9ibNgHd3kycdsQhdMpLcQQQQAABBBCIM4HpS7fr7tdWBHdVp3KGZozOUv2q5eNsp2wnEQXIBvamTkC3NxOnHXEInfJSHAEEEEAAAQTiSMB7a/vwvyzWnLVf+7uqlJGq10b1VKs6leNol2wlkQXIBvamT0C3NxOnHXEInfJSHAEEEEAAAQTiTCC/sFj3Tl+ht1ft0tTh3dSzaY042yHbSWQBsoG96RPQ7c3EaUccQqe8FEcAAQQQQACBOBQoLg7os13fqG29KnG4O7aUyAJkA3vTJ6Dbm4nTjjiETnkpjgACCCCAAAIIIIBAzAiQDeyNioBubyZOO+IQOuWlOAIIIIAAAgjEsMCRvEI9+OanuvuyljqrUnoM74TWESidANmgdE6RfBUBPZLaBtbiEBoYAi0ggAACCCCAgDmBgqJijZi6RPPWfa3GNSpo6k3ddHbNTHN90hAC4RQgG4RTMzy1COjhcYyZKhzCmBkVjSKAAAIIIIBAhAS8b2u/+7WVmrFse3DFH3aspyev6RShDlgGgegIkA2i436qVQno9mbitCMOoVNeiiOAAAIIIIBADAo8OvtzPTN3Y7DzdvUr668je6piemoM7oaWESi9ANmg9FaReiUBPVLSRtbhEBoZBG0ggAACCCCAgAmBqdmbdf8ba4K9NKxeXjNuy1KtShkm+qMJBFwKkA1c6patNgG9bG4xexWHMGZHR+MIIIAAAgggEGaBWat2avTLyxQIfFu4emY5P5w34bPnYZamnFUBsoG9yRDQ7c3EaUccQqe8FEcAAQQQQACBGBFY9MU+3TB5ofILi/2Oy6el6JWRPdSxYdUY2QFtIhC6ANkgdMNwVyCgh1vUeD0OofEB0R4CCCCAAAIIOBdYt/uQBo3P1je5hf5aKclJmjS0q/q0quV8bRZAwJIA2cDSNL7thYBubyZOO+IQOuWlOAIIIIAAAggYF/jyQI4Gjs/WzoO5wU4fHdRBQ7o2NN457SEQfgGyQfhNQ61IQA9VMMau5xDG2MBoFwEEEEAAAQTCKrB6x0ENnbJI+47k+3Xv6tdCP72keVjXoBgCsSJANrA3KQK6vZk47YhD6JSX4ggggAACCCAQAwKb9xzxQ3qv5jX10NXtlJSUFANd0yIC4RcgG4TfNNSKBPRQBWPseg5hjA2MdhFAAAEEEEDAicD+I/mqXD7N//w5fwgkqgDZwN7kCej2ZuK0Iw6hU16KI4AAAggggAACCCAQMwJkA3ujIqDbm4nTjjiETnkpjgACCCCAAALGBMbP3agDOfn6xWWtlMzTcmPToZ1oC5ANoj2BE9cnoNubidOOOIROeSmOAAIIIIAAAoYEZizdrrteW+F39F+d6uuRgR1ULjXZUIe0gkB0BcgG0fU/2eoEdHszcdoRh9ApL8URQAABBBBAwIjA3LVfacTUJSosDvgdVUpP1etjztc5Z1U00iFtIBB9AbJB9Gfw3Q4I6PZm4rQjDqFTXoojgAACCCCAgAGBldsP6JrnFuhofpHfTbmUZE0d3k09m9Yw0B0tIGBHgGxgZxbHOiGg25uJ0444hE55KY4AAggggAACURbYsveIBo7P1p7D3/7OufcLak9d20lXdKgX5c5YHgF7AmQDezMhoNubidOOOIROeSmOAAIIIIAAAlEU2HM4zw/nW/YeDXYx9oo2Gn5Bkyh2xdII2BUgG9ibDQHd3kycdsQhdMpLcQQQQAABBBCIksCRvEJdO3GBVm4/GOzg1gvP0a8GtI5SRyyLgH0BsoG9GRHQ7c3EaUccQqe8FEcAAQQQQACBKAgUFBX7Xwg3b93XwdWv7lhPfxzSkZ9Wi8I8WDJ2BMgG9mZFQLc3E6cdcQid8lIcAQQQQAABBCIsEAgEdM/0lZq+dHtw5V7Na2rysPP4SbUIz4LlYk+AbGBvZgR0ezNx2hGH0CkvxRFAAAEEEEAgwgJeQB8/b6Menb3WX7ltvcr62609VTE9NcKdsBwCsSdANrA3MwK6vZk47YhD6JSX4ggggAACCCAQJYEZS7fr6Tkb9Ndbe6hWpYwodcGyCMSWANnA3rwI6PZm4rQjDqFTXoojgAACCCCAQBQF8guLeVt7FP1ZOvYEyAb2ZkZAtzcTpx1xCJ3yUhwBBBBAAAEEIiBAEI8AMkskhADZwN6YCej2ZuK0Iw6hU16KI4AAAggggIBjgXW7D+mm5xfrsUEdlNWspuPVKI9AfAuQDezNl4BubyZOO+IQOuWlOAIIIIAAAgg4FNh5MEc/eiZbOw/mKi0lSU8M6airzq3ncEVKIxDfAmQDe/MloNubidOOOIROeSmOAAIIIIAAAo4EDuYUaMiE+Vq7+1BwhZ/3a6E7LmnuaEXKIhD/AmQDezMmoNubidOOOIROeSmOAAIIIIAAAg4EcguKNHTKIi36Yl+w+nXdG+l3V7dTUlKSgxUpiUBiCJAN7M2ZgG5vJk474hA65aU4AggggAACCIRZoKg4oJ++skxvr9oVrNyvTW1NuKGLUpIJ52HmplyCCZAN7A2cgG5vJk474hA65aU4AggggAACCIRRIBAIaNybn+ov2ZuDVbs0rqaXRnRXRlpKGFeiFAKJKUA2sDd3Arrjmezfv1+///3v9frrr2vbtm2qVauWzj33XP3iF7/Q+eeff8Lqn3zyiR544AEtXLhQqamp6tWrl39927Ztw9IphzAsjBRBAAEEEEAAgQgIjJ+7UY/M/jy4UrNaFTV9VE9VrVAuAquzBALxL0A2sDdjArrDmcydO1c/+clPtH37dtWvX19dunTxQ/ry5cv9VV988UVdf/31wQ5mzZqlK6+80v/fu3fvrtzcXP+1FSpU0EcffaROnTqF3C2HMGRCCiCAAAIIIIBABARmLtuun7+6IrhS7crpmjn6fNWvWj4Cq7MEAokhQDawN2cCusOZeIF75MiRmjhxoi6//PLgSs8//7yGDx+uzMxM7du3T+XKlZP3Fq6mTZtq69ateuutt4Kvnzx5skaMGKHevXtrzpw5IXfLIQyZkAIIIIAAAggg4Fhgwaa9umHSQhUWB/yVKqWn6rXbeqpVncqOV6Y8AoklQDawN28CuuOZFBQUKC0t7YRVmjVrpo0bN2rx4sXq2rWr3n33XV122WV+GPcC/fF//fr10/vvv69169apefPQfkqEQ+h44JRHAAEEEEAAgZAFvJ9Uu2XaEv9b28ulJGvq8G7q2bRGyHUpgAACJQXIBvbuCAJ6lGbSpk0bffbZZ1qyZIn/1vdhw4Zp2rRp8p66H/+03Wtv/PjxGj16tMaNG6exY8eG1DGHMCQ+LkYAAQQQQACBCAl4P61212sr1L9dHV3RoV6EVmUZBBJLgGxgb94E9CjMZP78+brgggtUp04dbdq0Senp6brwwgv9z5l7XypXtWrVEl15n0Pv3LmzbrzxRnlvjw/lj0MYih7XIoAAAggggEAkBbyPAPI755EUZ61EEyAb2Js4AT1CMzlw4ID/BXFvvPGG/vjHP+ro0aOaOXOm+vfv73fgvXV98+bN8t4S/90/77pGjRrp0ksv1TvvvHPajo8dtJO90KvVsGFD//8wwB8CCCCAAAIIIGBB4Gh+oZKUpPLl+Ok0C/Ogh8QRIKDbmzUBPQIz2bJli84+++zgSh07dvS/wf34n06rWLGivP/ZtWvXCR3l5OT43+Terl07rVq16rQdE9BPS8QLEEAAAQQQQMCIQEFRsf95c+9z55OHnafqmfyEmpHR0EYCCBDQ7Q2ZgB6BmezZs0c33XSTdu7cqbVr1+rw4cP+F8N539DeoUMHv4NKlSr5IXz37t0ndOQ9bfe+8d177YoV//m5kbK0ziEsixrXIIAAAggggIALAe8t7PdMX6npS7f75c+pmakXR3RXPX5KzQU3NRE4QYBsYO+mIKBHeCZeOPe+pf3uu+/2Q/eaNWv8t5y3aNHCf9u59xb3737WyvvptcaNG/vf8j579uyQOuYQhsTHxQgggAACCCAQRoHH31mrP8/ZEKzYtl5l/e3WnqqYnhrGVSiFAALfJ0A2sHdvENCjNJN77rlHjz/+uO644w49+eSTuuiii/Thhx/6v4terVq1El0tXbrUf+LuPYWfMmVKSB1zCEPi42IEEEAAAQQQCJPACwu26L7/Wx2s1rB6ec24LUu1KmWEaQXKIIDA6QTIBqcTivy/YlbR4QAAIABJREFUE9Ajb+6v6H1Z3A9/+EP16dNHH3zwgW6++WY/fL/55pu64oorSnT11FNP+UH+oYce0m9+85uQOuYQhsTHxQgggAACCCAQBoHZq3fptpeWKhD4tpj3uXMvnDepmRmG6pRAAIHSCpANSisVudcR0B1ae18O5337+sl+HuSJJ57w3+Y+YsQI/y3vc+bM0cUXX3zSn1Lz/vvcuXO1ceNGNWnSJKSOOYQh8XExAggggAACCIQosHjzPl0/aaHyC4v9SuXTUvTKyB7q2LDkz8yGuAyXI4BAKQTIBqVAivBLCOiOwL2fM+vUqZO6d++uSZMmqW7dusGVvLesez+Z5r2d/e9//7uuvvpqeV+S0rJlS/9z6N7T9QEDBviv98L7yJEj1bdvX7333nshd8shDJmQAggggAACCCBQRoH1uw9p4PhsfZNb6FdISU7SpKFd1adVrTJW5DIEEAhFgGwQip6bawnoblyVn5+vW265RdOmTVNqaqof1L2Q7gX3RYsW+YF8zJgx8t6+fuzv/fff938Xvbi4WD169FBeXp6WLVvmf5lcdna22rdvH3K3HMKQCSmAAAIIIIAAAmUQ2HkwRwOfydaXB3ODVz86qIOGdG1YhmpcggAC4RAgG4RDMbw1COjh9Tyhmvf5cu8p+Pz58/3fOK9Vq5batGmj//7v//a/lf27f97r7rvvPi1cuFApKSn+l8c9/PDDat26dVg65RCGhZEiCCCAAAIIIHAGAt6DiaufydaKbQeCV93Vr4V+eknzM6jCSxFAINwCZINwi4Zej4AeumFMVeAQxtS4aBYBBBBAAIG4EViyeZ9unrpEB3MKdH33Rnro6nYn/Z6euNkwG0EgBgTIBvaGREC3NxOnHXEInfJSHAEEEEAAAQROIbDhq0Oamr1FD1zV1v/8OX8IIBBdAbJBdP1PtjoB3d5MnHbEIXTKS3EEEEAAAQQQQAABBGJGgGxgb1QEdHszcdoRh9ApL8URQAABBBBA4N8Cn375jdrUq4wHAggYFiAb2BsOAd3eTJx2xCF0yktxBBBAAAEEEJA0c9l2/fzVFbrj4mb6734t+Kw5dwUCRgXIBvYGQ0C3NxOnHXEInfJSHAEEEEAAgYQXmLfua938l8UqLA74FsPPb6KxV7ZJeBcAELAoQDawNxUCur2ZOO2IQ+iUl+IIIIAAAggktMCq7Qf14+fm62h+ke9QLiVZU4d3U8+mNRLahc0jYFWAbGBvMgR0ezNx2hGH0CkvxRFAAAEEEEhYgS17j2jg+GztOZzvGyQlSU9d20lXdKiXsCZsHAHrAmQDexMioNubidOOOIROeSmOAAIIIIBAQgrsOZynQeOztXnv0eD+x17RRsMvaJKQHmwagVgRIBvYmxQB3d5MnHbEIXTKS3EEEEAAAQQSTuBIXqGum7hAK7YfDO791gvP0a8GtE44CzaMQKwJkA3sTYyAbm8mTjviEDrlpTgCCCCAAAIJJVBQVKxbpi3R3LVfB/d9dcd6+uOQjkpOTkooCzaLQCwKkA3sTY2Abm8mTjviEDrlpTgCCCCAAAIJIxAIBHTP9JWavnR7cM+9mtfU5GHnqVxqcsI4sFEEYlmAbGBvegR0ezNx2hGH0CkvxRFAAAEEEEgYgXfW7NKtLywN7rdtvcr62609VTE9NWEM2CgCsS5ANrA3QQK6vZk47YhD6JSX4ggggAACCCSMgPcE/X/fX68n/7leDauX14zbslSrUkbC7J+NIhAPAmQDe1MkoNubidOOOIROeSmOAAIIIIBAwgm8umSbujaupnPOqphwe2fDCMS6ANnA3gQJ6PZm4rQjDqFTXoojgAACCCCAAAIIIBAzAmQDe6MioNubidOOOIROeSmOAAIIIIBA3Aqs333I31vz2pXido9sDIFEEyAb2Js4Ad3eTJx2xCF0yktxBBBAAAEE4lJg58EcDXwmW0fyizR5WFd1Pbt6XO6TTSGQaAJkA3sTJ6Dbm4nTjjiETnkpjgACCCCAQNwJHMwp0JAJ87X230/Q01OT9Y87eqlZLT5zHnfDZkMJJ0A2sDdyArq9mTjtiEPolJfiCCCAAAIIxJVAbkGRhk1ZpIVf7Avu67rujfS7q9spKSkprvbKZhBIRAGygb2pE9DtzcRpRxxCp7wURwABBBBAIG4EiosD+ukry/WPVTuDe+rXprYm3NBFKcmE87gZNBtJaAGygb3xE9DtzcRpRxxCp7wURwABBBBAIC4EvN84H/fmp/pL9ubgfro0rqaXRnRXRlpKXOyRTSCAgEQ2sHcXENDtzcRpRxxCp7wURwABBBBAIC4EJszbqIdnfR7cS9OzMjXjtixVrVAuLvbHJhBA4FsBsoG9O4GAbm8mTjviEDrlpTgCCCCAAAIxLzBz2Xb9/NUVwX3Urpzuh/MG1SrE/N7YAAIIlBQgG9i7Iwjo9mbitCMOoVNeiiOAAAIIIBDTAvPWfa2b/7JYhcUBfx+V0lP16qieal23ckzvi+YRQODkAmQDe3cGAd3eTJx2xCF0yktxBBBAAAEEYlbA+1K4q5/5RCu3H/T3UC4lWX8Zfp6ymtaM2T3ROAIInFqAbGDvDiGg25uJ0444hE55KY4AAggggEBMC+w/kq/hUxdr+dYDeuraTrry3HoxvR+aRwABAnqs3QME9FibWIj9EtBDBORyBBBAAAEE4lwgJ79IH2/YI+8n1fhDAIH4FiAb2JsvAd3eTJx2xCF0yktxBBBAAAEEEEAAAQRiRoBsYG9UBHR7M3HaEYfQKS/FEUAAAQQQiBmBgqJiTf74C92YdTa/bR4zU6NRBMIrQDYIr2c4qhHQw6EYQzU4hDE0LFpFAAEEEEDAkUAgENA901dq+tLt6takuiYO7aoq5dMcrUZZBBCwKkA2sDcZArq9mTjtiEPolJfiCCCAAAIIxITA4++s1Z/nbAj2enXHevrfazrFRO80iQAC4RMgG4TPMlyVCOjhkoyROhzCGBkUbSKAAAIIIOBI4IUFW3Tf/60OVm9Yvbxm3JalWpUyHK1IWQQQsCpANrA3GQK6vZk47YhD6JSX4ggggAACCJgWmL16l257aakCgW/brJ5ZTtNH9dQ5Z1U03TfNIYCAGwGygRvXUKoS0EPRi8FrOYQxODRaRgABBBBAIAwCizfv0/WTFiq/sNivVj4tRS/f0l2dGlULQ3VKIIBALAqQDexNjYBubyZOO+IQOuWlOAIIIIAAAiYF1u8+pIHjs/VNbqHfX0pykiYO7aKLW/Fb5yYHRlMIREiAbBAh6DNYhoB+Bljx8FIOYTxMkT0ggAACCCBQeoGdB3M08JlsfXkwN3jRowM7aMh5DUtfhFcigEBcCpAN7I2VgG5vJk474hA65aU4AggggAACpgQO5hRoyIT5Wrv7ULCvn/droTsuaW6qT5pBAIHoCJANouN+qlUJ6PZm4rQjDqFTXoojgAACCCAQFYEjeYWa8vEX/trDL2iizPRU///98fo9Gv6Xxcov+vZz59d1b6TfXd1OSUlJUemTRRFAwJYA2cDWPLxuCOj2ZuK0Iw6hU16KI4AAAgggEBWBCfM26uFZn/tr/7J/K426qGmwj+yNe3TrtKXq0bSGJtzQxf/8OX8IIICAJ0A2sHcfENDtzcRpRxxCp7wURwABBBBAIOIC3tPzXo/O0b4j+f7a3k+nfXRvn+BTdO+/bfjqkBpUq6CMtJSI98eCCCBgV4BsYG82BHR7M3HaEYfQKS/FEUAAAQQQiLjAsafnRTror52iKic8RY94UyyIAAIxIUA2sDcmArq9mTjtiEPolJfiCCCAAAIIRFTg+Kfn+1Of99euVnjTSZ+iR7QxFkMAgZgQIBvYGxMB3d5MnHbEIXTKS3EEEEAAAQQiKnD80/MdGTf7a9fPnew/Rf/F5S11W+9mEe2HxRBAILYEyAb25kVAtzcTpx1xCJ3yUhwBBBBAAIGICXz36fk3aTP8tSsXDPSfolcpn6bsX15c4rPoEWuOhRBAICYEyAb2xkRAtzcTpx1xCJ3yUhwBBBBAAIGICXz36XkgKddfOymQEXyK/t1vdI9YcyyEAAIxIUA2sDcmArq9mTjtiEPolJfiCCCAAAIIRETAe3p+/iMf6MDRAnmfPT/29PzY4seeop/sG90j0iCLIIBATAiQDeyNiYBubyZOO+IQOuWlOAIIIIAAAhER+NXMlXpl0TZ539zuffb82NPzY4vzFD0iY2ARBGJegGxgb4QEdHszcdoRh9ApL8URQAABBBBwKlBUHNAT767VM3M3+uuc7On5sQZ4iu50FBRHIC4EyAb2xkhAtzcTpx1xCJ3yUhwBBBBAAAGnArdMW6L3Pt3tr/F9T8+PNcBTdKejoDgCcSFANrA3RgK6vZk47YhD6JSX4ggggAACCDgVeHXxVt07Y5W/xqmenh9rgqfoTsdBcQRiXoBsYG+EBHR7M3HaEYfQKS/FEUAAAQQQcCpw7Jvbi3VEO9PvUPG/v7n9+xZNDmSobt6flKxM8Y3uTkdDcQRiUoBsYG9sBHR7M3HaEYfQKS/FEUAAAQQQCJvA/iP5qlohTUlJSX7N43/3vCyL8I3uZVHjGgTiW4BsYG++BHR7M3HaEYfQKS/FEUAAAQQQCIvAnLVf6a5XV+jey1rqmm6N/JrHnp6HsgBP0UPR41oE4k+AbGBvpgR0ezNx2hGH0CkvxRFAAAEEEAhJoKCoWI+/u1bPztvk10lPTdbrY85XqzqVdfBogQqKi0Oqn5acrCoV0kKqwcUIIBA/AmQDe7MkoNubidOOOIROeSmOAAIIIIBAmQV2HMjRT19epmVbD5So8f9+0Fojep1T5rpciAACCHyfANnA3r1BQLc3E6cdcQid8lIcAQQQQACBMgl4P51292srdDCnIHi99/nzJwafq0ta1y5TTS5CAAEETidANjidUOT/nYAeefOorsghjCo/iyOAAAIIIFBCIL+wWI/M/lyTP/6ixH/v2ria/nRtJ9WrWh4xBBBAwJkA2cAZbZkLE9DLTBebF3IIY3NudI0AAgggEH8C2/Yd1ZhXlmvFtpJvab+td1P9vF8LpaUkx9+m2RECCJgSIBuYGoffDAHd3kycdsQhdMpLcQQQQAABBEolMHv1Lt0zfYUO5RYGX+/9DNofh5yr3i1rlaoGL0IAAQRCFSAbhCoY/usJ6OE3NV2RQ2h6PDSHAAIIIJAgAi/M36z7Xl8T3G23JtX1p2s6qU6VjAQRYJsIIGBBgGxgYQoleyCg25uJ0444hE55KY4AAggggECpBAKBgG5/eZlmrd6ln/Zppjsuaa5U3tJeKjtehAAC4RMgG4TPMlyVCOjhkoyROhzCGBkUbSKAAAIIxL3AN7kFWr3joLKa1oz7vbJBBBCwKUA2sDcXArq9mTjtiEPolJfiCCCAAAIIlBDILSjSg299qgua1dSA9nXRQQABBEwJkA1MjcNvhoBubyZOO+IQOuWlOAIIIIAAAkGBjV8f1u0vLdPnuw6pUnqq/nFHLzWqUQEhBBBAwIwA2cDMKIKNENDtzcRpRxxCp7wURwABBBBAwBf4+/Lt+s3fV+toflFQpG/rWpo07DyEEEAAATMCZAMzoyCg2xtFZDriEEbGmVUQQAABBBJTICe/SPe/sVqvLtleAuDCFmfpf4acqxoV0xMThl0jgIBJAbKBvbHwBN3eTJx2xCF0yktxBBBAAIEEFli/+5BGv7RM6786HFRISU7SXZe20KgLmyo5OSmBddg6AghYFCAb2JsKAd3eTJx2xCF0yktxBBBAAIEEFPB+Mu21pds19vXVyi0oDgrUrZKhp67tpK5nV09AFbaMAAKxIEA2sDclArq9mTjtiEPolJfiCCCAAAIJJnAkr1D3/d9qzVy+o8TOL2lVS48PPlfVMsslmAjbRQCBWBIgG9ibFgHd3kycdsQhdMpLcQQQQACBBBOYNn+zxr6+Jrjr1OQk/eLyVhrRq4mSknhLe4LdDmwXgZgTIBvYGxkB3d5MnHbEIXTKS3EEEEAAgQQTKC4OaNjzi/TR+j2qX7W8nrqukzo3qpZgCmwXAQRiVYBsYG9yBHR7M3HaEYfQKS/FEUAAAQQSUODrQ3l64t21+lX/1qpSIS0BBdgyAgjEqgDZwN7kCOj2ZuK0Iw6hU16KI4AAAgjEscDqHQd1KLdQPZvWiONdsjUEEEgkAbKBvWkT0O3NxGlHHEKnvBRHAAEEEIhDAe9b2l9csEW/feszVcpI1aw7e6lW5Yw43ClbQgCBRBMgG9ibOAHd3kycdsQhdMpLcQQQQACBOBP4JrdAv5yxUm+v2hXcWY9zquulET3k/cY5fwgggEAsC5AN7E2PgG5vJk474hA65aU4AggggEAcCazYdkBjXlmmbftygrsql5qs+65ooxu6N+Jb2uNo1mwFgUQVIBvYmzwB3d5MnHbEIXTKS3EEEEAAgTgQ8N7S/vwnm/WHWZ+poCgQ3FGTmpn683Wd1LZelTjYJVtAAAEEJLKBvbuAgG5vJk474hA65aU4AggggECMCxw4mq97pq/Ue5/uLrGTH3asp9/9V3tVTE+N8R3SPgIIIPAfAbKBvbuBgG5vJk474hA65aU4AggggEAMCyzbul8/fXm5dhz4z1va01OTNe6qtvrxeQ15S3sMz5bWEUDg5AJkA3t3BgHd3kycdsQhdMpLcQQQQACBGBVYsGmvbpi0UIXF/3lLe9OzMvX09Z3Vqk7lGN0VbSOAAAKnFiAb2LtDCOj2ZuK0Iw6hU16KI4AAAgjEqEBBUbGGPDtfy7ce8HcwsHMD/fbqtqpQjre0x+hIaRsBBEohQDYoBVKEX0JAjzB4tJfjEEZ7AqyPAAIIIGBVYPv+oxo8Yb7uurSlBnVpYLVN+kIAAQTCJkA2CBtl2AoR0MNGGRuFOISxMSe6RAABBBBwJ1BcHNCub3JVr2r5ExbJKyxSemqKu8WpjAACCBgSIBsYGsa/WyGg25uJ0444hE55KY4AAgggYFxgz+E8/fff/qVNXx/R23f0UpUKacY7pj0EEEDAnQDZwJ1tWSsT0MsqF6PXcQhjdHC0jQACCCAQssD8jXt151+X66tDeX6tfm1q67mfdOHb2UOWpQACCMSqANnA3uQI6PZm4rQjDqFTXoojgAACCBgUKCoO6KkP1utP/1yv476kXa3rVtYrt3RX1QrlDHZNSwgggIB7AbKBe+MzXYGAfqZiMf56DmGMD5D2EUAAAQTOSOCrQ7n62V//peyNe0tcd0OPRvp/P2ijjDQ+b35GoLwYAQTiSoBsYG+cBHR7M3HaEYfQKS/FEUAAAQQMCXy8fo9+9rfl2nM4P9hVxfRUPTywva7oUM9Qp7SCAAIIREeAbBAd91OtSkC3NxOnHXEInfJSHAEEEEDAgEBhUbH+9/31enruBgUC/2moff0q+vN1ndS4RqaBLmkBAQQQiL4A2SD6M/huBwR0ezNx2hGH0CkvxRFAAAEEoizgfUv76JeWadEX+0p0cmPW2frVgFb8hFqU58PyCCBgS4BsYGseXjcEdHszcdoRh9ApL8URQAABBKIskJNfpKuf/kRrdx/yO6mckapHB52ry9vViXJnLI8AAgjYEyAb2JsJAd3eTJx2xCF0yktxBBBAAAEDAhu+OqQrn/pELepU0p+v7aSG1SsY6IoWEEAAAXsCZAN7MyGgR2Ame/bs0cMPP6zXX39dO3bsUOPGjdWzZ0899NBDqlfvxC+p+fTTT/XrX/9aH374oQoLC9WtWzeNGzdO559/fsjdcghDJqQAAggggIAhgUAgcNLfMf/XtgNqU7eyyqUmG+qWVhBAAAFbAmQDW/PwuiGgO57JihUrdPXVV2vz5s3q1KmTH85Xr16tDRs2qEqVKsrOzlabNm2CXSxfvly9evXS0aNH1bFjR1WoUEELFizw//3NN99U//79Q+qYQxgSHxcjgAACCBgSeP/T3Zowb6OmDu+mzPRUQ53RCgIIIBAbAmQDe3MioDucSXFxsXr06KH169frb3/7my699FJ/Ne//2u89PR87dqwuvPBCzZs3L9hF7969/f994sSJGjFihP/f3333Xf3gBz9Qo0aN/GCflJRU5q45hGWm40IEEEAAASMC+YXFenT255r08Rd+RwM7N9ATQ8410h1tIIAAArEjQDawNysCuuOZeG9v9/6nVatWJVbywnvLli39wH3w4EFVrlxZa9eu9V/Xt29fvffeeyVef8stt2jSpEn+f/f+vax/HMKyynEdAggggIAFgW37jmrMK8u1YtuBEu289dML1K5+FQst0gMCCCAQMwJkA3ujIqBHcSaDBg3SjBkztGTJEnXp0kX333+/HnzwQY0fP16jRo0q0dmsWbM0YMAA3XTTTZoyZUqZu+YQlpmOCxFAAAEEoiwwe/VO3TN9pQ7lFgY7qZ5ZTn8ccq56t6wV5e5YHgEEEIg9AbKBvZkR0KM4E+/t7wsXLtTu3btVq1YtDR06VC+88IK8z6F7nz8//m///v2qXr26vLfAz5kzp8xdcwjLTMeFCCCAAAJREsgrLNLv//GZps7fUqKDbk2q60/XdFKdKhlR6oxlEUAAgdgWIBvYmx8BPUozyc/P99/WXqNGDf+b3b2/fv366f3339f27dtVv379Ep15n1tPS0tT06ZN/bfCn+rv2EE72Wu2bdumhg0batOmTVHaOcsigAACCCBQeoHNe45ozCvLtHrHN8GLvK9iGdOnme68pLlSU/iW9tJr8koEEECgpAAB3d4dQUCP0kyefPJJ/exnP9PPf/5zPfHEE34X7dq105o1a5STk6OMjBOfBtSuXdv/dvdDhw4R0KM0N5ZFAAEEEIicwFsrv9QvZ6zS4bz/vKW9ZsV0/e+PO+qC5jUj1wgrIYAAAnEqQEC3N1gCehRm4n1pXPPmzVVUVOQ/ya5Z89v/T0b79u39n2DzQnj58uVP6Mx7G3xeXp7/pXJl/eMQllWO6xBAAAEEIimQW1Ckfv8zT9v25QSXzWpaQ/97TUfVqsRb2iM5C9ZCAIH4FSAb2JstAT3CM/Heqj548GD/y+EeeeQR3XvvvcEOvJ9h876lfevWrf7b0I//O/YW92bNmunzzz8vc9ccwjLTcSECCCCAQIQFvG9qHzQhW0XFAf2sbwvd3qeZUpLL/lOjEW6f5RBAAAHzAmQDeyMioEd4Jl4gf+yxx3TllVfq9ddfL/Gb5sOGDdO0adO0bNkyderUqURne/fu9Z+09+nTRx988EGZu+YQlpmOCxFAAAEEoiDwt8Vb1ah6pno2rRGF1VkSAQQQiG8BsoG9+RLQIzgT7+fTRo8e7b+9ffHixapSpeTvtf72t7/V2LFj9dRTT2nMmDElOnvzzTd11VVXacSIEZo4cWKZu+YQlpmOCxFAAAEEHAnk5Bdp8sebdMuF5yg9NcXRKpRFAAEEEPiuANnA3j1BQI/QTLzQfeedd/pvXZ87d66aNGlywsre59G9t7BfdNFFJ/yU2vDhw/X888/713r/XtY/DmFZ5bgOAQQQQMCFwPrdh3T7y8u0bvdh3XT+2br/yrYulqEmAggggMBJBMgG9m4LAnoEZvLAAw9o3LhxwXB+qp9BO/ZTa88++6xGjhzpdzd79mxdccUV8q5bt25dSB1zCEPi42IEEEAAgTAKvLZkm8a+vkY5BUXBqpOGdlXfNrXDuAqlEEAAAQS+T4BsYO/eIKA7nsntt9+uZ555xl9lyJAh8r6J/ZtvvlFxcXGJlV944QX/f1+1apWysrJ0+PBh/3PomZmZmj9/vv9Z9VmzZqlv374hdcwhDImPixFAAAEEwiBwJK9Q972+WjOX7ShR7eJWtf5/e/cBZkV1/nH8t41ddum9F5HeF7tgBQVjBROD+ScW1NiC0SQaNRpNDGqKiSWSKJYYI2gEu4KiqCCIygKigiggvXe2t/9zxixy2WX37t177j135jvP45Mn7Mw57/m8c/bue2fmjP78/YFqllUvCr3QBAIIIIBATQLUBjUJxf7nFOiWzU1hHc5mVmmv2JYuXaqbb75Z7733nkpKSnTUUUfJPJ9uCve6bkzCugpyPAIIIIBAXQSWbdqja/6ToxVbc/c3k5qcpBtH9tRlQw9TMqu014WXYxFAAIFaCVAb1IorJjtToMeE2Z1OmITu5IJIEEAAgSAJmC+ip3y8Vne8/LkKS767i6x9k/p68MLByu7UNEgcjBUBBBBwQoDawIk0hARBge5eTqxGxCS0ykvjCCCAAAJVCOwrLNEt05bo5cUbQn46ok9r/fn8gWqcmYYbAggggEAcBKgN4oBeQ5cU6O7lxGpETEKrvDSOAAIIIHCQgLlyfsEjH+qjVTv2/yQtJUk3j+rtrdoe7qNgwCKAAAIIRF+A2iD6pnVtkQK9roIJdjyTMMESRrgIIICADwTmfr1NP3psvsxyKx2b1ddDY7M1sGMTH4yMISCAAAKJLUBt4F7+KNDdy4nViJiEVnlpHAEEEEDgEAJ/fWu5vtqyV/eMGaBGGdzSzomCAAIIuCBAbeBCFkJjoEB3LydWI2ISWuWlcQQQQCDwAss371W3lg2UctBq7GVl5TIvNuGW9sCfIgAggIBDAtQGDiXjf6FQoLuXE6sRMQmt8tI4AgggEFgB86z5k3O/0YTXl+rqkw7X9SN6BNaCgSOAAAKJIkBt4F6mKNDdy4nViJiEVnlpHAEEEAikwO68Yv3q+cV684vN3vjNlfL/jDtaxx3eIpAeDBoBBBBIFAFqA/cyRYHuXk6sRsQktMpL4wgggEDgBHLW7NTPnlmo9bvy9489PTVZ944ZoHMHtw+cBwNGAAEEEkmA2sC9bFGgu5cTqxExCa3y0jgCCCAQGAHzTPmkOSv1x+lfqqSsfP+4D2uZpb9fmK3ebRsFxoKBIoAAAokqQG3gXuYo0N3LidWImIRWeWkcAQQQCITAztwi/eK/i/XOsi0h4x09uL1+f24/ZaWnBsKBQSKAAAKqxNgQAAAgAElEQVSJLkBt4F4GKdDdy4nViJiEVnlpHAEEEPC9wMff7ND4yQu1cXfB/rHWT0vR787pq+8f0dH342eACCCAgJ8EqA3cyyYFuns5sRoRk9AqL40jgAACvhZ44oNVuuu1pSo94Jb2Hq0beLe0d2/d0NdjZ3AIIICAHwWoDdzLKgW6ezmxGhGT0CovjSOAAAK+Fpjx+Sb99N8L9o/xgiM66o6z+6p+vRRfj5vBIYAAAn4VoDZwL7MU6O7lxGpETEKrvDSOAAII+F7gjpc/13OfrNWE8/qzSrvvs80AEUDA7wLUBu5lmALdvZxYjYhJaJWXxhFAAAHfCJjb2JOTzDvNk0LGVFhSqo27CtSlRZZvxspAEEAAgaAKUBu4l3kKdPdyYjUiJqFVXhpHAAEEfCGwZW+Brn92kU7t1VqXDu3qizExCAQQQACBygLUBu6dFRTo7uXEakRMQqu8NI4AAggkvMCcr7bp588u0rZ9hUpLSdLzVx6ngR2bJPy4GAACCCCAAAV6IpwDFOiJkKUoxkiBHkVMmkIAAQR8JFBSWqb73/5KD836WuXl3w1sVL82mvh/Q3w0UoaCAAIIIFAhQG3g3rlAge5eTqxGxCS0ykvjCCCAQEIKbNpdoPFTFuqjVTtC4r/4uC66+YxeSk9llfaETCxBI4AAAjUIUBu4d4pQoLuXE6sRMQmt8tI4AgggkHAC7365RTc8t1g7cov2x94wI1V/On+ARvZrm3DjIWAEEEAAgfAFqA3Ct4rVnhTosZJ2pB8moSOJIAwEEEAgzgLFpWW6763lmvjuipBIBnZorIcuzFbHZplxjpDuEUAAAQRsC1Ab2BauffsU6LU3S+gjmIQJnT6CRwABBKIisGFXvn42eaEWrN4Z0t5lQ7vqxpG9VC81OSr90AgCCCCAgNsC1Abu5YcC3b2cWI2ISWiVl8YRQACBhBCYlrPOu629YmtcP01/+f5ADe/TOiHiJ0gEEEAAgegIUBtExzGarVCgR1MzAdpiEiZAkggRAQQQiIHADc8t0rSc9cru1EQPXpit9k3qx6BXukAAAQQQcEmA2sClbHwbCwW6ezmxGhGT0CovjSOAAAIJI5BXVKJ/z1utS4d2VVoKt7QnTOIIFAEEEIiiALVBFDGj1BQFepQgE6UZJmGiZIo4EUAAgegIzPh8kwqKS3XOoPbRaZBWEEAAAQR8I0Bt4F4qKdDdy4nViJiEVnlpHAEEEHBGoLCkVHe/vkxPzv1G9dNS9PK1x6t764bOxEcgCCCAQGAF8vOlffukBg2k+vF9vIjawL2zkALdvZxYjYhJaJWXxhFAAAEnBFZvz9W1zyzUkvW798fTq01DvTZ+mFKSk5yIkSAQQACBQAnk5kqTJ0sTJ0o5Od8NPTtbuuoqaexYKSsr5iTUBjEnr7FDCvQaify1A5PQX/lkNAgggMDBAq99ulG/nvqp9haW7P9Riwb19NcLBmlY95aAIYAAAgjEWmDOHGn0aGnr1kP33LKlNG2aNHRoTKOjNogpd1idUaCHxeSfnZiE/sklI0EAAQQOFDDPmd/12hd6+sM1ITDHHtZc9/9wkFo1ygAMAQQQQCDWAqY4Hz5cKiysuef0dGnmzJgW6dQGNacl1ntQoMdaPM79MQnjnAC6RwABBCwIrNy6T9c8s1BLN+7Z37q5k/26U3vo2lMO57Z2C+Y0iQACCNQoYG5r79q1+ivnBzdirqSvWhWz292pDWrMYsx3oECPOXl8O2QSxtef3hFAAIFoC7y4cL1ueWGJ8opK9zfdsmG6HvjhYB3brXm0u6M9BBBAAIFwBSZNki6/PNy9v9vPHDduXO2Pi+AIaoMI0CwfQoFuGdi15pmErmWEeBBAAIHIBWZ/tVU/fuyjkAaGdW/hPW/eokF65A1zJAIIIIBA3QWGDAldEC7cFs3CcQsWhLt3nfajNqgTn5WDKdCtsLrbKJPQ3dwQGQIIIFBbgfLycl3+1ALNXLrZu439hhE9dNWJ3ZTMSu21pWR/BBBAILoC5lVqmZmRt2mOz7C/dgi1QeQpsnUkBbotWUfbZRI6mhjCQgABBCIU2JVXpMv+9YluGtVLR3ZpFmErHIYAAgggEFUBs2J7q1aRN7lli2SeR7e8URtYBo6geQr0CNAS+RAmYSJnj9gRQCDIAnlFJfpq8z4N7NikEoO5kp6UxPvNg3x+MHYEEHBMgCvojiUkccKhQE+cXEUlUgr0qDDSCAIIIBBTgS837dXV/1mgrXsL9fp1w9ShaR1um4xp5HSGAAIIBFiAZ9ADnPzIh06BHrldQh5JgZ6QaSNoBBAIqIC5Mv7sx2v125c/V2FJmacwuFMTPffTY5WWkhxQFYaNAAIIJIgAq7gnSKLcCpMC3a18WI+GAt06MR0ggAACURHYV1iiW19YopcWbQhpb3jv1vrrBQPVMCMtKv3QCAIIIICAJYFI3oNunls370GvywJztRgOtUEtsGK0KwV6jKBd6YZJ6EomiAMBBBA4tMDnG3br2mcWatW23P07paUk6eZRvXXJ8V143pyTBwEEEEgUgTlzpOHDpcLCmiM2q7bPnCkdf3zN+0ZpD2qDKEFGsRkK9ChiJkJTTMJEyBIxIoBAUAXMLe1Pz1+j37/6hYr+d0u7sejYrL4eGptd5QJxQbVi3AgggEDCCJgiffRoyazsfqjNXDmfNi2mxbkJhdrAvbOIAt29nFiNiElolZfGEUAAgYgF9hQU6+apS/Tako0hbYzq10b3jBmgxvW5pT1iXA5EAAEE4i1gbnefMkV6+GEpJ+e7aLKzpauvlsaOjdlt7QdSUBvE+8So3D8Funs5sRoRk9AqL40jgAACEQls2JWvHz7yodbsyNt/fL2UZP3mzN768TGduaU9IlUOQgABBBwVKCiQ9u6VGjaUzG3tcdyoDeKIf4iuKdDdy4nViJiEVnlpHAEEEIhIoLSsXP83ab7mrdzuHd+leaYeujBb/do3jqg9DkIAAQQQQCAcAWqDcJRiuw8Femy9494bkzDuKSAABBBAoEqBLXsKNOr+2Tru8BaacF4/VmnnPEEAAQQQsC5AbWCduNYdUKDXmiyxD2ASJnb+iB4BBPwhUFBcqoy0lEqD2bg7X20aZXBLuz/SzCgQQAAB5wWoDdxLEQW6ezmxGhGT0CovjSOAAALVCphV2ifNXqUn536jF685Xi0bpiOGAAIIIIBA3ASoDeJGf8iOKdDdy4nViJiEVnlpHAEEEDikwM7cIv3yv4v19rIt3j7DurfQvy45SsnJSaghgAACCCAQFwFqg7iwV9spBbp7ObEaEZPQKi+NI4AAAlUKfPLNDo2fvFAbdhfs/3lGWrKmXnWc+rZjIThOGwQQQACB+AhQG8THvbpeKdDdy4nViJiEVnlpHAEEEAgRKCsr1z/eX6G/vLlcZqX2iq17qwb6+4+y1aN1Q8QQQAABBBCImwC1QdzoD9kxBbp7ObEaEZPQKi+NI4AAAvsFtu8r1A3PLdZ7y7eGqPzgiA668+x+ql+v8iJx8CGAAAIIIBBLAWqDWGqH1xcFenhOvtmLSeibVDIQBBBwWODDldt13ZSF2ryncH+UmfVS9Ifz+um8wR0cjpzQEEAAAQSCJEBt4F62KdDdy4nViJiEVnlpHAEEAi5gbmP/+6yv9beZy3XAHe3q1aahHrowW4e3ahBwIYaPAAIIIOCSALWBS9n4NhYKdPdyYjUiJqFVXhpHAIGACxSWlOr8ifO0ZP3u/RIXHt1Jt5/Zp8r3ngeci+EjgAACCMRZgNogzgmoonsKdPdyYjUiJqFVXhpHAAEEtHp7rs58YI7MknB3j+6vswa2QwUBBBBAAAEnBagN3EsLBbp7ObEaEZPQKi+NI4AAAp6AWRiuc7NMdWmRhQgCCCCAAALOClAbuJcaCnT3cmI1IiahVV4aRwCBAAls3lOge6cv0x1n91WjjLQAjZyhIoAAAgj4RYDawL1MUqC7lxOrETEJrfLSOAIIBETAXCG/4dlF2p5bpDP6t9HfL8xWUlJSQEbPMBFAAAEE/CJAbeBeJinQ3cuJ1YiYhFZ5aRwBBHwuUFJapr+8tVwT310RMtIHxg7W2Txr7vPsMzwEEEDAfwLUBu7llALdvZxYjYhJaJWXxhFAwMcCG3bla/zkhfpk9c6QUY4b2lU3jeyleqnJPh49Q0MAAQQQ8KMAtYF7WaVAdy8nViNiElrlpXEEEPCpwDvLNuuG5xZrV17x/hE2rp+mP39/oEb0ae3TUTMsBBBAAAG/C1AbuJdhCnT3cmI1IiahVV4aRwABnwkUl5bpj9OX6dHZq0JGlt2picxt7R2aZvpsxAwHAQQQQCBIAtQG7mWbAt29nFiNiElolZfGEUDARwJrd+TpZ5MXatHaXSGj+umJh+mXp/VUWgq3tPso3QwFAQQQCKQAtYF7aadAdy8nViNiElrlpXEEEPCJQHl5uc7/xzwtOOB586aZabrvB4N0cq9WPhklw0AAAQQQCLoAtYF7ZwAFuns5sRoRk9AqL40jgICPBJZt2qNzHvpAhSVlOrJLU++W9raN6/tohAwFAQQQQCDoAtQG7p0BFOju5cRqRExCq7w0jgACPhN49uM1WrMjT9cP76FUbmn3WXYZDgIIIIAAtYF75wAFuns5sRoRk9AqL40jgECCCphV2o/r1kIZaSkJOgLCRgABBBBAoPYC1Aa1N7N9BAW6bWHH2mcSOpYQwkEAgbgKFBSX6q7XvtDTH67R2KM66u7RA+IaD50jgAACCCAQSwFqg1hqh9cXBXp4Tr7Zi0nom1QyEAQQqKPAyq37dM0zC7V04579Ld3/w0E6Z1D7OrbM4QgggAACCCSGALWBe3miQHcvJ1YjYhJa5aVxBBBIEIGXFq3XLdOWKLeodH/ELRumyxTo5lZ3NgQQQAABBIIgQG3gXpYp0N3LidWImIRWeWkcAQQcF8gvKtWdr3yuKR+vDYl0WPcW+usFg9SiQbrjIyA8BBBAAAEEoidAbRA9y2i1RIEeLckEaYdJmCCJIkwEEIi6wNdb9uqa/yzUl5v37m87OUn6xWk9ddWJ3ZRs/g8bAggggAACARKgNnAv2RTo7uXEakRMQqu8NI4AAo4KPL9gnW578TPlF393S3ubRhneu82P6trM0agJCwEEEEAAAbsC1AZ2fSNpnQI9ErUEPoZJmMDJI3QEEIhI4N7pyzTx3RUhx57Us6Xu+8EgNcuqF1GbHIQAAggggIAfBKgN3MsiBbp7ObEaEZPQKi+NI4CAgwILVu/UBf+cp5KycqUkJ+nG03vq8mGHcUu7g7kiJAQQQACB2ApQG8TWO5zeKNDDUfLRPkxCHyWToSCAQNgC/3xvhZ6at9q7pX1I56ZhH8eOCCCAAAII+FmA2sC97FKgu5cTqxExCa3y0jgCCMRZILewRPVSk5WWkhwSSVlZufYVlahRRlqcI6R7BBBAAAEE3BGgNnAnFxWRUKC7lxOrETEJrfLSOAIIxFHgiw17dO0zORrRp7VuPqN3HCOhawQQQAABBBJDgNrAvTxRoLuXE6sRMQmt8tI4AgjEQaC8vFz/mb9Gv3v1CxWVlHkRPH7xETqlV+s4REOXCCCAAAIIJI4AtYF7uaJAdy8nViNiElrlpXEEEIixwJ6CYt08bYle+3RjSM9jj+qou0cPiHE0dIcAAggggEBiCVAbuJcvCnT3cmI1IiahVV4aRwCBGAosWbdb107O0erteft7rZeSrN+c2Vs/PqazkpKSYhgNXSGAAAIIIJB4AtQG7uWMAt29nFiNiElolZfGEUAgBgLmlvZ/zf1GE15fpqLSb29pN1vn5pn6+4XZ6te+cQyioAsEEEAAAQQSX4DawL0cUqC7lxOrETEJrfLSOAIIWBbYnVesG6cu1ozPN4f0dOaAtrp7dH81ZJV2yxmgeQQQQAABPwlQG7iXTQp093JiNSImoVVeGkcAAYsCi9bu8lZpX7czf38v5pVqd5zVV+aZc25pt4hP0wgggAACvhSgNnAvrRTo7uXEakRMQqu8NI4AAhYF3l++VT95/KP9PRzWMsu7pb1320YWe6VpBBBAAAEE/CtAbeBebinQ3cuJ1YiYhFZ5aRwBBCwL/HH6Mj387gqNHtxevz+3n7LSUy33SPMIIIAAAgj4V4DawL3cUqC7lxOrETEJrfLSOAIIWBYoKS3TO8u2aESf1tzSbtma5hFAAAEE/C9AbeBejinQ3cuJ1YiYhFZ5aRwBBKIgUFZWrn++v1LmLWlXntgtCi3SBAIIIIAAAghUJUBt4N55QYHuXk6sRsQktMpL4wggUEeB7fsKdcNzi/Xe8q1KSU7SlCuO0ZFdmtWxVQ5HAAEEEEAAAQr0xDgHKNATI09Ri5ICPWqUNIQAAlEWmL9yu8ZPWajNewr3t2wWgnvr+hO9Yp0NAQQQQAABBKIrQG0QXc9otEaBHg3FBGqDSZhAySJUBAIiUFpWrodnfa2/zlyusvLvBt2rTUM9dGG2Dm/VICASDBMBBBBAAIHYClAbxNY7nN4o0MNR8tE+TEIfJZOhIOADga17C/XzZxfqg6+3h4zmwqM76fYz+ygjLcUHo2QICCCAAAIIuClAbeBeXijQY5STdevW6fXXX9f999+vL774Qg899JCuueaaKnv/4IMPdMcdd2j+/PlKTU3VsGHDNGHCBPXt27fO0TIJ60xIAwggECWBD77epuumLNK2fd/d0t4gPVUTRvfX2QPbRakXmkEAAQQQQACBQwlQG7h3blCgxyAnkyZN0uWXXx7S06EK9DfeeENnnXWWt+/RRx+tgoICLVy4UJmZmZo9e7YGDx5cp4iZhHXi42AEEIiCgLml/f63v9KD73yl8gNuae/brpF3S3vXFllR6IUmEEAAAQQQQKAmAWqDmoRi/3MK9BiYmyvm8+bN83p6/PHHNXfu3CqvoJeXl6tbt25as2aNXn31VY0cOdI75rHHHtNll12mk046SbNmzapTxEzCOvFxMAIIREFgzlfb9H+PzQ9p6SfHdtYtZ/TmlvYo+NIEAggggAAC4QpQG4QrFbv9KNBjZ+31dMkll+jJJ5+sskB/8803dfrpp3vF+KOPPhoS2YgRIzRz5kwtX75c3bt3jzhqJmHEdByIAAJRFPjNi0v09Idr1DAjVX8cM0Cj+reNYus0hQACCCCAAALhCFAbhKMU230o0GPrXW2BftFFF+mpp56Suc294up5RXgTJ07U1VdfrTvvvFO33357xFEzCSOm40AEEIiiQEFxqW578TP97JTu6tQ8M4ot0xQCCCCAAAIIhCtAbRCuVOz2o0CPnbXXU3VX0E844QTvOfOdO3eqSZMmIZGZ59Czs7N18cUX64knnog4aiZhxHQciAACEQhs3J2vT9ft1ul920RwNIcggAACCCCAgE0BagObupG1TYEemVvER1VXoJtb17/55hsVFxdXan/t2rXq1KmTTjvtNM2YMSPi/pmEEdNxIAII1FLgnWWb9YvnFiu3qFQvXH2c+rZrXMsW2B0BBBBAAAEEbApQG9jUjaxtCvTI3CI+qroCvUGDBjL/bdq0qVL7+fn53kru/fr105IlS6rtv2KiVbWTKfQ7duyolStXRjwGDkQAAQSqEyguLdOfZnypR97/7veMWZn9lZ8NlXmNGhsCCCCAAAIIuCFAge5GHg6MggI9xjmprkBv2LChV4Rv3ry5UlR5eXnKysrSgAEDtHjxYgr0GOeN7hBAIDyBdTvz9LPJC7Vwza6QA356wmH65ek9lZaSHF5D7IUAAggggAAC1gUo0K0T17oDCvRak9XtgOoK9B49enhXts0t7klJSSEdmVevde7c2Vvlffr06REHwSSMmI4DEUCgBoEZn2/Sr/67WHsKSvbv2TQzTX/5wUCd0qs1fggggAACCCDgmAC1gWMJkUSBHuOcVFegn3jiiXr//fe1Y8cONW3aNCSyBQsW6IgjjvAWmTPvUo90YxJGKsdxCCBwKIGikjLd/cZSPfHBNyG7HNmlqR4YO1htG9cHDwEEEEAAAQQcFKA2cC8pFOgxzkl1Bfq4ceO84vuVV17RmWeeGRLZgw8+qPHjx+uuu+7SrbfeGnHUTMKI6TgQgUAK5BaW6PE5q7yxXzq0q7IOeoZ8zfY8XTs5x1upvWIzNwBdfVI3XT+8h1K5pT2Q5w2DjpNAfr60b5/UoIFUny/G4pQFukUgoQSoDdxLFwV6jHNSXYE+a9YsnXLKKVW+Ss38+7vvvqsVK1aoa9euEUfNJIyYjgMRCKTAP95boXveWOaN/dejeunKE7vtd1i7I09n3D9bewu/u6W9eVY9/fWCQTqhR8tAejFoBGIukJsrTZ4sTZwo5eR81312tnTVVdLYsVJWVszDokMEEEgMAWoD9/JEgR7jnFRXoJeXl6tnz57ec+gvv/yyzjjjDC+6Rx99VFdccYWGDx+ut956q04RMwnrxMfBCARKwFw9H/bHWdqRW+SNu1lWPc2+8eT9V9HN76zxUxbplcUbvJ8fe1hz3f/DQWrVKCNQTgwWgbgJzJkjjR4tbd166BBatpSmTZOGDo1bmHSMAALuClAbuJcbCnTLOdm2bZuuv/76/b3MnTvXK8CPPPJIrxg327Bhw7wC3GwzZ87UqFGjVFZWpmOOOUaFhYXKycnxVnA3x/bv379OETMJ68THwQgESqDi6nmpvr19PUWNK11F31tQrHP+/oHOGtBO40/trpTk0AUuAwXGYBGIpYApzocPlwoLa+41Pd38gUGRXrMUeyAQOAFqA/dSToFuOSerV69Wly5dqu3l4osv1hNPPLF/n3nz5um2227T/PnzlZKSIrN43D333KPevXvXOVomYZ0JaQCBQAgcePV8Z+q3v5+allxS6Sq6+feC4lJlpKUEwoVBIuCEgLmt3TzuVt2V84MDNVfSV63idncnEkgQCLgjQG3gTi4qIqFAdy8nViNiElrlpXEEfCNw4NXz9RnjvHG1L3isyqvovhk0A0EgUQQmTZIuv7z20Zrjxn07n9kQQAABI0Bt4N55QIHuXk6sRsQktMpL4wj4QuDgq+d70qZ642pUPMa7im7ebT7nplMqrejui8EzCAQSQWDIkNAF4cKN2Swct2BBuHuzHwIIBECA2sC9JFOgu5cTqxExCa3y0jgCCS9QUlqmm19Yov9+sk7m2XNz9bw8qcAbV1J5BlfREz7DDCDhBcyr1DIzIx+GOT6DhRwjB+RIBPwlQG3gXj4p0N3LidWImIRWeWkcgYQV+HLTXk3NWadpOeu0bd+3q7abZ88rrp5XDKziKvrBK7on7MAJHIFEEzDPnbdqFXnUW7ZI5nl0NgQQQIBb3J08ByjQnUyLvaAo0O3Z0jICiShgXpX248c+0pyvt4WEf/DV84ofchU9EbNMzL4S4Aq6r9LJYBCItwC1QbwzULl/CnT3cmI1IiahVV4aRyAhBW55YYmemb8mJPaqrp5X7MBV9IRMM0H7SYBn0P2UTcaCQFwFqA3iyl9l5xTo7uXEakRMQqu8NI6AswKfb9itqQvW69zB7TSgQ5OQOBes3qkxE+eqflqK8otLKz17fvCguIrubJoJLCgCrOIelEwzTgSsC1AbWCeudQcU6LUmS+wDmISJnT+iR6A2Alv3FuqlRes1NWe9lm7c4x164dGdNOG8/iHNmNvcZ3y+STdPW6KdecVVPnt+cL9cRa9NJtgXgSgLRPIedPPcunkPel0WmIvyMGgOAQTiL0BtEP8cVL4QYv4yYwuMAJMwMKlmoAEVKCwp1TtLt+j5Bev07vKtKi0L/RXfMCNVH986XBlpKSFCFe89L1OuNqaPV9n/Vm4/FGNyeYbaFj6gZGXp16N66coTuwVUnGEjECeBOXOk4cOlwsKaAzCrts+cKR1/fM37sgcCCARKgNrAvXRzBd29nFiNiElolZfGEYiLgPme9dN1u72i/OXFG7Q7v7jKOFo0SNd5g9vp2pO7q3Fm2v59DnzveSQDYEX3SNQ4BoEoCJgiffRoyazsfqjNXDmfNo3iPArcNIGAHwWoDdzLKgW6ezmxGhGT0CovjSMQcwFTXJ/79w/01ZZ9VfZdLyVZI/q01vlDOmhY9xZKTUmutF/F1fO6BM9V9LrocSwCdRAwt7tPmSI9/LCUk/NdQ9nZ0tVXS2PHclt7HXg5FAG/C1AbuJdhCnT3cmI1IiahVV4aRyAuAqMf/kA5a3aF9D24UxONye6gswa0C7laXlWAu/OKVVxWVqfY05KTa+ynTh1wMAII1CxQUCDt3Ss1bCiZ29rZEEAAgRoEqA3cO0Uo0N3LidWImIRWeWkcASsC5hb2nDU7vcXefnVaTzXNqhfSj3lFmnlVWtvGGTpvcHuNGdJB3Vo2sBILjSKAAAIIIICAfwSoDdzLJQW6ezmxGhGT0CovjSMQVYH1u/L1Qs46rzBftS3Xa/t35/TVT47tEtLPnoJiLV67S8d1a6GU5KSoxkBjCCCAAAIIIOBfAWoD93JLge5eTqxGxCS0ykvjCNRZIK+oRNM/26SpOes0d8V2HfyejQEdGuvla4fWuR8aQAABBBBAAAEEqA3cOwco0N3LidWImIRWeWkcgYgEysrK9dE3OzR1wTq9vmSjcotKq2ynfZP6GpPdXtcN78GV8oikOQgBBBBAAAEEDhSgNnDvfKBAdy8nViNiElrlpXEEai2wYus+XfT4R1q3M7/KYzPrpWhUv7beKuxHd22mZG5hr7UxByCAAAIIIIBA1QLUBu6dGRTo7uXEakRMQqu8NI5ArQWKSsp09ISZ2pkX+u7y47o191ZhH9mvjbLSU2vdLgcggAACCCCAAAI1CVAb1CQU+59ToMfePK49Mgnjyk/nARUoLSvXvBXb9fayzbrte30qXQX/7Uuf6V/zVqtL80yvKD8vu706NM0MqBbDRgABBBBAAIFYCVAbxEo6/H4o0MO38sWeTEJfpJFBJIjAyq37vMXeXshZr00v4aQAACAASURBVA27C7yon73iGB19WPOQEXyzLVfb9hVqSOemSkpiFfYESS9hIoAAAgggkPAC1AbupZAC3b2cWI2ISWiVl8YR0O78Yr366QZvwbecNbsqifzgiA764/kDkUIAAQQQQAABBOIuQG0Q9xRUCoAC3b2cWI2ISWiVl8YDKlBSWqbZX2/zivI3v9gs81x5VVu3lln68TGddfHxXQMqxbARQAABBBBAwCUBagOXsvFtLBTo7uXEakRMQqu8NB5AgTlfbdP1zy3S1r2FVY6+cf00nTXQrMLeUQM7NOYW9gCeIwwZAQQQQAABVwWoDdzLDAW6ezmxGhGT0CovjQdQYO2OPA3746yQkackJ+nEHi29V6Od2ruV0lNTAijDkBFAAAEEEEDAdQFqA/cyRIHuXk6sRsQktMpL4z4VKC4t07tfbtXXW/bpqpO6VRrlBf+cp/mrdqhXm4ZeUX72oHZq1TDDpxoMCwEEEEAAAQT8IkBt4F4mKdDdy4nViJiEVnlp3GcCn2/YrakL1uulReu1PbdIqclJ+vCWU9WiQXrISBeu2am0lGT1bdeIW9h9dg4wHAQQQAABBPwsQG3gXnYp0N3LidWImIRWeWncBwLmWXJTkE/NWa+lG/dUGtFtZ/bRuKEs8uaDVDMEBBBAAAEEAi9AbeDeKUCB7l5OrEbEJLTKS+MJKlBYUqp3lm7R8wvW6d3lW1VaVl7lSPq1b6QrT+ymMwe0S9CREjYCCCCAAAIIIPCdALWBe2cDBbp7ObEaEZPQKi+NJ6DAcx+v1YQ3lmpXXnGV0Zvb2c8b3E5jhnRQrzaNEnCEhIwAAggggAACCFQtQG3g3plBge5eTqxGxCS0ykvjCSjw9tLNGvevT0Iir5eSrBF9WnsLvg3r3kKpKckJODJCRgABBBBAAAEEqhegNnDvDKFAdy8nViNiElrlpXFHBQqKS/XmF5tVUlqm0dkdQqI0K7Qfe/fb2ravSIM6NvGK8rMGtFPjzDRHR0NYCCCAAAIIIIBAdASoDaLjGM1WKNCjqZkAbTEJEyBJhBgVgfLycuWs2eU9V/7qpxu0t6BEbRtnaM5Np8i8p/zAbdayLerYLFOHt2oQlb5pBAEEEEAAAQQQSAQBagP3skSB7l5OrEbEJLTKS+MOCKzfla8XctZ5q7Cv2pZbKaKnxx2tod1bOBApISCAAAIIIIAAAvEVoDaIr39VvVOgu5cTqxExCa3y0nicBPKKSjT9s02amrNOc1dsV3nVi7DryC5NdcOInjq2W/M4RUq3CCCAAAIIIICAOwLUBu7koiISCnT3cmI1IiahVV4aj4PAX99arkmzVyq3qLTK3ts3qa8x2e29Z8+7tMiKQ4R0iQACCCCAAAIIuClAbeBeXijQ3cuJ1YiYhFZ5aTwOAn+f9bX+NOPLkJ4z66VoVL+23oJvR3dtpuSDnjmPQ5h0iQACCCCAAAIIOCdAbeBcSkSB7l5OrEbEJLTKS+OWBPYVluj1TzeqQ9P6Ou7w0OfHN+zK1/H3vuPd1n7sYc29onxkvzbKSk+1FA3NIoAAAggggAAC/hCgNnAvjxTo7uXEakRMQqu8NB5FgbKycu95cvNcuXm+PL+4VCf2aKl/XXpUpV6m5azTUV2bqUPTzChGQFMIIIAAAggggIC/BagN3MsvBbp7ObEaEZPQKi+NR0Fg5dZ9XlH+Qs56bdhdENKiuVN93s2nqnWjjCj0RBMIIIAAAggggECwBagN3Ms/Bbp7ObEaEZPQKi+NRyiwO7/Ye1f51AXrvHeXV7UlJUlDD2+h287sox6tG0bYE4chgAACCCCAAAIIVAhQG7h3LlCgu5cTqxExCa3y0ngtBcrLy3Xj85/qpcUbVFRSVuXR3VpmacyQDjpvcHu1bVy/lj2wOwIIIIAAAggggMChBKgN3Ds3KNDdy4nViJiEVnlpPAKB8ZMX6uXFG0KObJSRqrMHtdOY7A4a1LGJkszlczYEEEAAAQQQQACBqApQG0SVMyqNUaBHhTFxGmESJk6u/BTpztwirwgf1r2FDmvZIGRo7y/fqp88/pFSkpO8ReBMUX5q71bKSEvxEwFjQQABBBBAAAEEnBOgNnAuJbxmzb2U2I2ISWjXl9a/EyguLdO7X271nit/e9lmFZeW66cnHKabz+gdwlRaVq6nP1ytUf3bqFVDFn/jHEIAAQQQQAABBGIlQG0QK+nw++EKevhWvtiTSeiLNDo9iC827NHzC9bppUXrtT23KCTWVg3TNffXpyg1JdnpMRAcAggggAACCCAQBAFqA/eyTIHuXk6sRsQktMob2Ma37SvUiwvXa2rOei3duKdKh9TkJJ3Sq5XuHt1fzRukB9aKgSOAAAIIIIAAAq4IUBu4konv4qBAdy8nViNiElrlDVzjuYUlum7KQs36cqvMrepVbf3aN/KeKz97YDsK88CdIQwYAQQQQAABBFwWoDZwLzsU6O7lxGpETEKrvIFr3LwmbeTfZuvLzXtDxt6iQbrOG9zOez1arzaNAufCgBFAAAEEEEAAgUQQoDZwL0sU6O7lxGpETEKrvL5tfMueAr24aL3+75jOyqyXGjLOR95foQmvL1O9lGSN6NNaY4a01wndW/KcuW/PBgaGAAIIIIAAAn4RoDZwL5MU6O7lxGpETEKrvL5qvKC4VG9+sdlbhX32V1tl7mC/7wcDNTq7Q8g4t+wt0IzPN+usAW3VJLOerwwYzP8E8vOlffukBg2k+vVhQQABBBBAAAGfCFAbuJdICnT3cmI1IiahVd6Eb9zcsp6zZpe3Cvurn27Q3oKSkDEdf3hz/eeyYxJ+nAwgDIHcXGnyZGniRCkn57sDsrOlq66Sxo6VsrLCaIhdEEAAAQQQQMBVAWoD9zJDge5eTqxGxCS0ypuwja/fla8XctZ5q7Cv2pZb5TjSU5N1Rv+2+vP3ByolOSlhx0rgYQjMmSONHi1t3XronVu2lKZNk4YODaNBdkEAAQQQQAABFwWoDdzLCgW6ezmxGhGT0CpvwjW+Znuebn7hU81dsV3lVS/CriO7NPVWYT9jQFs1ykhLuDEScC0FTHE+fLhUWFjzgenp0syZFOk1S7EHAggggAACTgpQG7iXFgp093JiNSImoVXehGvcvCbtyD/MVF5RaUjs7ZvU15js9t7z5l1acBtzwiU20oDNbe1du1Z/5fzgts2V9FWruN09UnOOQwABBBBAII4C1AZxxD9E1xTo7uXEakRMQqu8zja+dkee3lm2RT85trOSkkJvT7/huUWalrNemfVSNKpfW28V9mO6Nlcyt7E7m09rgU2aJF1+ee2bN8eNG1f74zgCAQQQQAABBOIqQG0QV/4qO6dAdy8nViNiElrldarxfYUlen3JRm8V9vmrdnixvfqzoerXvnFInEvW7fbeYz6qXxtlpYe+Qs2pARGMfYEhQ0IXhAu3R7Nw3IIF4e7NfggggAACCCDgiAC1gSOJOCAMCnT3cmI1IiahVd64N15WVq55K7d7q7BP/2yT8otDb12/5Pgu+u1ZfeMeJwE4KGBepZaZGXlg5viMjMiP50gEEEAAAQQQiLkAtUHMyWvskAK9RiJ/7cAk9Fc+K0azcus+Tc1Zpxdy1mvD7oIqB9kgPVU/OqaTbh7V258IjKpuAmbF9latIm9jyxbJPI/OhgACCCCAAAIJI0Bt4F6qKNDdy4nViJiEVnlj3viC1Tv1h9e+8N5dXtVmHjcfengLnT+kg07r00b166XEPEY6TBABrqAnSKIIEwEEEEAAgegJUBtEzzJaLVGgR0syQdphEiZIosIMc+nGPRp1/+xKe3drmaUxQzrovMHt1bZx/TBbY7fAC/AMeuBPAQAQQAABBIIlQG3gXr4p0N3LidWImIRWea01/tXmvVq6aa/OHtiuUh/fe2C2Pt+wR40yUnX2oHbeO8sHdWxSabV2a8HRsH8EWMXdP7lkJAgggAACCIQhQG0QBlKMd6FAjzF4vLtjEsY7A+H3vzO3SK98usFbhX3xut3KSEvWx7cOV8OMtJBGZn6xWYUlZTq1dytlpHELe/jC7FlJIJL3oJvn1s170OuywBypQAABBBBAAIG4CFAbxIW92k4p0N3LidWImIRWeevceHFpmd5fvtVbhX3m0s0qLi0PafPeMf11wZGd6twPDSBwSIE5c6Thw6XCwpqRzKrtM2dKxx9f877sgQACCCCAAALOCVAbOJcSUaC7lxOrETEJrfJG3Lh5ltwU5S8tWq9t+4qqbKdpZpp+PryHLjquS8T9cCACYQmYIn30aMms7H6ozVw5nzaN4jwsUHZCAAEEEEDATQFqA/fyQoHuXk6sRsQktMpb68bf/HyT/jbzK32xcU+Vx6YmJ+nkXq28VdhP7tlK9VKTa90HByAQkYC53X3KFOnhh6WcnO+ayM6Wrr5aGjuW29ojguUgBBBAAAEE3BGgNnAnFxWRUKC7lxOrETEJrfLWunFzxfy6KYsqHdevfSNvsTezKFzzBum1bpcDEIiqQEGBtHev1LChZG5rZ0MAAQQQQAABXwhQG7iXRgp093JiNSImoVXeKhsvLy/XkvW7tSe/REO7twjZJ7+oVEf9Yab2FpaoRYN0nTe4nfd6tF5tGsU+UHpEAAEEEEAAAQQQCJQAtYF76aZAdy8nViNiElrlDWl8y54CvbBwvabmrNPyzft0eKsGeuv6Eyq9/uyZ+WvUpnG6TujeUqkp3MIeuwzREwIIIIAAAgggEGwBagP38k+B7l5OrEbEJLTKq4LiUr31xWavKDersZeFLsKul645XgM7NrEbBK0jgAACCCCAAAIIIBCGALVBGEgx3oUCPcbg8e6OSRj9DJhb2Beu3eWtwv7q4g3aU1BSZSetG6Xr9+f002l920Q/CFpEAAEEEEAAAQQQQKCWAtQGtQSLwe4U6DFAdqkLJmF0s/Gf+av12OxVWrktt8qG01OTNbJfG2/Bt+MPb6GU5KToBkBrCCCAAAIIIIAAAghEKEBtECGcxcMo0C3iutg0kzC6Wbl3+jJNfHdFpUaP7NLUK8rPGNBWjTLSotsprSGAAAIIIIAAAgggEAUBaoMoIEa5CQr0KIO63hyTsPYZMrewf7RqhxpkpKpvu8YhDXy9ZZ+G3/ee92/tm9TXmOz2Gp3dQV1aZNW+I45AAAEEEEAAAQQQQCCGAtQGMcQOsysK9DCh/LIbkzD8TK7dkect9jYtZ73W7MjT9wa01d8vzK7UwN9mLtdRXZvpmK7Nlcwt7OEDsycCCCCAAAIIIIBAXAWoDeLKX2XnFOju5cRqREzC6nn3FZbo9SUbNXXBOs1ftSNk53qpyfr4luFqnMkt61ZPUhpHAAEEEEAAAQQQiIkAtUFMmGvVCQV6rbgSf2cmYeUclpWV68OV271V2N/4bJPyi0urTHSnZpneFfT+HUJvc0/8s4IRIIAAAggggAACCARRgNrAvaxToLuXE6sRMQm/4zXPlt//9lf67yfrtH5XfpXuDdJT9b3+bXX+ER10ROemSkpiFXarJyiNI4AAAggggAACCMRMgNogZtRhd0SBHjaVP3ZkEobm8dInP9Y7y7aE/KOpwYce3kLnD+mg0/q0Uf16Kf5IPqNAAAEEEEAAAQQQQOAAAWoD904HCnT3cmI1oiBOwtKycs3+aqt6tWmkNo0zQnxf+3Sjrnkmx/u3w1pmeUX5eYPbq23j+lbzQOMIIIAAAggggAACCMRbIIi1QbzNa+qfAr0mIZ/9PEiT8KvNe/V8zjq9uHC9Nu8p1A0jemj8qd1DMlpQXCrzLvOzB7bToI5NuIXdZ+c7w0EAAQQQQAABBBA4tECQaoNEOQ8o0BMlU1GK0++TcFdekV5evMFbhX3xut0hal2aZ2rWL0+iCI/SuUQzCCCAAAIIIIAAAokt4PfaIBGzQ4GeiFmrQ8x+nITFpWV6f/lWbxX2t5duUVFpWZVCPVs31L8vO0qtGobe5l4HTg5FAAEEEEAAAQQQQCBhBfxYGyRsMv4XOAV6omewlvG7MglzC0v0+LvLpaIiXXpCN2U1bljLkUh5RSW6783lenHRem3bV1Tl8U0z03TOoPbes+V92zXi6nmtlTkAAQQQQAABBBBAwK8CrtQGfvWNZFwU6JGoJfAxcZ+EubnS5Mn6x+tLdE+P0zzJX896QleWrJKuukoaO1bKygpL2Ly/fNgfZ1V6RVpqcpJO7tXKK8pP7tlK9VKTw2qPnRBAAAEEEEAAAQQQCJJA3GuDIGGHOVYK9DCh/LJbXCfhnDnS6NHK3bVXw658TDsyG3uszfJ2a/Y/ximruEBq2VKaNk0aOnQ/eVFJmWZ9uaXKYvu+N7/UA+987e1rrpCbotws+Na8QbpfUsY4EEAAAQQQQAABBBCwIhDX2sDKiBK/UQr0xM9hrUYQt0loivPhw6XCQv3jqDG65+RLVKpvF3FLUeNvr6J/NPXbsaSnq/ytt/RZ1wF6fsFab9G3nXnFeuTHQ3Ra3zYh4129PVdPf7haY4Z08F6jxoYAAggggAACCCCAAALhCcStNggvvEDuRYEesLTHZRKa29q7dpW2blVuWsb+q+c7U5/w9JuWXLL/Knpuvfp6se9Jen7Q6VretENIdk7r01qP/OSIgGWM4SKAAAIIIIAAAgggYEcgLrWBnaH4plUKdN+kMryBxGUSTpokXX65F+CBV8/XZ4zz/q19wWPeVfTDtq/TN03bqiw5pcrBHNmlqaZccaxSkpPCGyx7IYAAAggggAACCCCAwCEF4lIbkI9qBSjQA3aCxGUSDhki5eRUunq+J+3bW9obFY/xrqJXtbVulK7zBnfQ+UPa6/BWtV/pPWDpZbgIIIAAAggggAACCIQtEJfaIOzogrkjBXrA8h7zSZifL2VmesoHXz0vTyrw/j2pPGP/VXTz/9OLC3X6V/M05rN3NPSzOUrJrB+wLDFcBBBAAAEEEEAAAQTsC8S8NrA/pITvgQI94VNYuwHEfBJu3Sq1anXIq+cV0VdcRc8qytfbj1yhNrk7v/3Rli3fruzOhgACCCCAAAIIIIAAAlEViHltENXo/dkYBbo/83rIUcV8Ev7vCvqhrp5XBHrgVfSQFd3N8RkZAcsSw0UAAQQQQAABBBBAwL5AzGsD+0NK+B4o0BM+hbUbQDwmYe5Rx2rYMT/z3ntuVm6vePb84MgrrqLvfy96/z7SggW1GyB7I4AAAggggAACCCCAQFgC8agNwgoswDtRoAcs+fGYhP/402Tds72R995zs3J7xbPnB9NXuop+xShp3LcrvbMhgAACCCCAAAIIIIBAdAXiURtEdwT+a40C3cGcfvDBB7rjjjs0f/58paamatiwYZowYYL69u1b52hjPQlzC0s07N53tCOvuNqr5xUD238VvWCvZt9xhrKaNKrzmGkAAQQQQAABBBBAAAEEKgvEujYgBzULUKDXbBTTPd544w2dddZZXp9HH320CgoKtHDhQmVmZmr27NkaPHhwneKJ9ST8x3srdM8by1SmXG1MH6+y/63cfqhBJJdnqG3hA0pWln49qpeuPLFbncbLwQgggAACCCCAAAIIIFC1QKxrA/JQswAFes1GMdujvLxc3bp105o1a/Tqq69q5MiRXt+PPfaYLrvsMp100kmaNWtWneKJ5ST0rp7/cZZ25BZFFHOzrHqafePJykpPjeh4DkIAAQQQQAABBBBAAIFDC8SyNiAP4QlQoIfnFJO93nzzTZ1++uleMf7oo4+G9DlixAjNnDlTy5cvV/fu3SOOJ5aTsOLqecTBSlxFrwsexyKAAAIIIIAAAgggUI1ALGsDEhGeAAV6eE4x2euiiy7SU089JXObe8XV84qOJ06cqKuvvlp33nmnbr/99ojjieUk3J1XrOKyskPHWlAo5e6TshpIGelV7peWnKzGmWkRj5cDEUAAAQQQQAABBBBAoGqBWNYG5CA8AQr08JxistcJJ5zgPWe+c+dONWnSJKRP8xx6dna2Lr74Yj3xxBMRx8MkjJiOAxFAAAEEEEAAAQQQ8JUAtYF76aRAdygn5tb1b775RsXFxZWiWrt2rTp16qTTTjtNM2bMqDbqiolW1U6mnY4dO2rlypUOjZxQEEAAAQQQQAABBBBAINYCFOixFq+5Pwr0mo1itkeDBg1k/tu0aVOlPvPz872V3Pv166clS5ZQoMcsK3SEAAIIIIAAAggggIA/BSjQ3csrBbpDOWnYsKFXhG/evLlSVHl5ecrKytKAAQO0ePHiiKNmEkZMx4EIIIAAAggggAACCPhKgNrAvXRSoDuUkx49eni3nptb3JOSkkIiM69e69y5s7fK+/Tp0yOOmkkYMR0HIoAAAggggAACCCDgKwFqA/fSSYHuUE5OPPFEvf/++9qxY4eaNm0aEtmCBQt0xBFH6JJLLtHjjz8ecdRMwojpOBABBBBAAAEEEEAAAV8JUBu4l04KdIdyMm7cOK/4fuWVV3TmmWeGRPbggw9q/Pjxuuuuu3TrrbdGHDWTMGI6DkQAAQQQQAABBBBAwFcC1AbupZMC3aGczJo1S6ecckqVr1Iz//7uu+9qxYoV6tq1a8RRMwkjpuNABBBAAAEEEEAAAQR8JUBt4F46KdAdykl5ebl69uzpPYf+8ssv64wzzvCie/TRR3XFFVdo+PDheuutt+oUMZOwTnwcjAACCCCAAAIIIICAbwSoDdxLJQW6YzmZOXOmRo0apbKyMh1zzDEqLCxUTk6Ot4L73Llz1b9//zpFzCSsEx8HI4AAAggggAACCCDgGwFqA/dSSYHuXk40b9483XbbbZo/f75SUlJkFo+755571Lt37zpHyySsMyENIIAAAggggAACCCDgCwFqA/fSSIHuXk6sRsQktMpL4wgggAACCCCAAAIIJIwAtYF7qaJAdy8nViNiElrlpXEEEEAAAQQQQAABBBJGgNrAvVRRoLuXE6sRMQmt8tI4AggggAACCCCAAAIJI0Bt4F6qKNDdy4nViJiEVnlpHAEEEEAAAQQQQACBhBGgNnAvVRTo7uXEakRMQqu8NI4AAggggAACCCCAQMIIUBu4lyoKdPdyYjUiJqFVXhpHAAEEEEAAAQQQQCBhBKgN3EsVBbp7ObEaUf369VVSUqKOHTta7YfGEUAAAQQQQAABBBBAwG2BtWvXKjU1Vfn5+W4HGqDoKNADlGwz1CZNmqiwsFBt27aN+8jNLwSz8WVB3FMR1QDIa1Q5nWiMnDqRhqgHQV6jThr3Bslp3FMQ9QDIadRJnWjQpbxu3LhR6enp2rVrlxM2BCFRoHMWxE2AW2riRm+1Y/JqlTcujZPTuLBb75S8WieOeQfkNObk1jskp9aJ49IBeY0Le8J0SoGeMKnyX6D8cvJfTs2IyKv/8kpO/ZdT5io59aeA/0bF71//5ZTfv/7MaTRHRYEeTU3aqpUAHzq14kqYnclrwqQq7EDJadhUCbUjeU2odIUVLDkNiymhdiKnCZWusIMlr2FTBXJHCvRApt2NQfPLyY08RDsK8hpt0fi3R07jnwMbEZBXG6rxbZOcxtffRu/k1IZq/Nskr/HPgcsRUKC7nB2fx8YvJ38mmLz6L6/k1H85NSMir/7LKzklp/4T8OeImKv+zGu0RkWBHi1J2qm1AL+cak2WEAeQ14RIU62CJKe14kqYnclrwqQq7EDJadhUCbMjOU2YVNUqUPJaK67A7UyBHriUuzNgfjm5k4toRkJeo6npRlvk1I08RDsK8hpt0fi3R07jn4NoR0BOoy3qRnvk1Y08uBoFBbqrmSEuBBBAAAEEEEAAAQQQQACBQAlQoAcq3QwWAQQQQAABBBBAAAEEEEDAVQEKdFczQ1wIIIAAAggggAACCCCAAAKBEqBAD1S6GSwCCCCAAAIIIIAAAggggICrAhTormaGuBBAAAEEEEAAAQQQQAABBAIlQIEeqHQzWAQQQAABBBBAAAEEEEAAAVcFKNBdzQxxIYAAAggggAACCCCAAAIIBEqAAj1Q6WawCCCAAAIIIIAAAggggAACrgpQoLuamQSOa926dXr99dd1//3364svvtBDDz2ka665plYjMsfdcsstev/991VSUqKjjjpKd955p44//vhatcPO0RGoa05/8Ytf6L777jtkMDNnztSpp54anWBpJSyBbdu26Z577tFLL72k9evXq3Pnzjr22GN11113qV27dmG1YXYy54aZq9OnT1dubq4GDhyoX//61zr77LPDboMdoyMQjZw++OCDGj9+/CEDmjRpksaNGxedgGklLIGdO3dqwoQJ3lxdu3atWrVq5c2zm266qVafiXyuhsUdk52ikVM+V2OSqog7eeqpp3TRRRd5x3/zzTfeZ2w4G/M0HCX/70OB7v8cx3SE5o+3yy+/PKTP2hboCxcu1LBhw5SXl6dBgwYpMzNTH374odfmK6+8olGjRsV0TEHvLBo5vfTSS/XEE09o5MiRatGiRSVSU9D17ds36NQxG//ixYt17rnnen80DB482PvD4bPPPtPXX3+txo0ba+7cuerTp0+N8ZhiwXx5tmnTJvXq1csr7OfMmaOioiL985//1BVXXFFjG+wQHYFo5fR3v/udfvvb32ro0KHq0qVLpeBMcX7SSSdFJ2haqVHg3Xff1Y9//GPvi7D27dtryJAhXpFuPifN9vTTT+tHP/pRje3wuVojUcx2iFZO+VyNWcpq3dHWrVvVu3dvbd++vVYFOvO01tS+PYAC3bepjc/AzDd/8+bN8zp//PHHvT/0a1ugmz/+3nvvPT366KO67LLLvLbefPNNfe9731OnTp28IiIpKSk+Awxgr9HI6XnnnacXX3xRy5YtU8+ePQOo6M6Qy8rKdMwxx+irr77Ss88+q9NOO80Lrry83Lt6fvvtt+uEE07w5mBN28UXX6x//etf+s1vfqPf//733u6mUDTFndk2btyoBg0a1NQMP6+jQDRzev311+tvf/ubd0fE6aefXsfIOLyuKsA2uQAAD3pJREFUAm+88Yb3RZf5PDRfcFZs5gtPU6BlZWVpx44dqlevXrVd8bla10xE7/ho5ZTP1ejlJNotmS/Npk2bpo4dO3qfteFeQWeeRjsTidseBXri5s75yC+55BI9+eSTtSrQv/zyS+9K3PDhw/XWW2+FjNFcmTdXc82/m5+zxV4gkpyaKCs+dMwfkk2bNo194PQYImBuhTb/mbl24GYKPfMFivkSbPfu3WrUqNEh5Xbt2uVdMe/QoYPMvD3wS7M//OEPXtF+4JdspMCuQDRyaiKs+NIlJyfHu7uCLf4CxcXFSktLqxTI4YcfrhUrVujjjz/WEUcccchA+VyNfw4PjqCuOeVz1b2cVkRkvoA544wz9Mtf/lKffPKJzB0T4RTozFN3cxqPyCjQ46EekD4jKebMrZXmFsuJEyfqyiuvDJGq+KVn2jVX59liLxBJTk2U5nlJc/W8sLAw9kHTY60Ezj//fE2dOtX7w8LcTnuoreIKnnkO1jzLfuC2dOlS7xb5k08+We+8806t+mfn6AuEm1PT8znnnKOXX37ZW5egNmsRRD9qWqxJwMwxM9dqmqt8rtYk6c7Pw80pn6vu5OzASPbt2+c9rmfWY1m+fLnGjBkTdoHOPHUzp/GKigI9XvIB6DeSYu4nP/mJ/v3vf3vP15nnzw/czKIqzZo1867Gzpo1KwCC7g0xkpyaUZhHE8zVWbNoyowZM7R3717v+SyzkFi4C6e4p+HPiMzt7/Pnz9fmzZu9xagOtZlb4c1t7S+88IL3PPvBm3mW3czXVatW+RMqgUYVbk7NkMzjDWYdgQ8++ECvvvqq9wxljx49vNvdWSfCnaSbR8nMoyRt2rTRypUrlZ6efsjg+Fx1J2/VRVKbnPK56mZOf/7zn3sLJFesDWG+pA73Cjrz1M2cxisqCvR4yQeg30iKuREjRsis6F2xIM6BTOYZWXObX7du3bxbatliLxBJTk2UDRs2lPlm+eCtfv363tXX6laNjv0og9ujWdzN3NbevHlz7wpqdVvFIyemmKvq7Qpmnpp5zF0T8T2fapNTE2n//v29BQMP3lJTU2VWjT74bon4ji5YvZvHSswCceYOB/NWDLOQqnnOtaaFU/lcdfc8iTSnfK66l1PzxfZxxx3nzUfz5abZalOgM0/dy2k8I6JAj6e+z/uOpJjr16+fPv/8c+Xn5ysjI6OSUOvWrb0/SswVWLbYC0SSUxPl1Vdf7RV8ZrV2k2OzeJhZ5dssRmW22bNnex9sbPEVMN/8mysAN9xwg/7yl79UG8yZZ56p1157zbvF9uBn2c2BRx99tD766CPvWXdT8LPFR6A2OTURmvUD3n77be/Veea5ZlNATJ482XvNpfmyZcqUKbrgggviM5gA97p69eqQVfXNHWbmKl04dzXwuermiVOXnPK56lZOzZoC2dnZWrNmjfc3rFmbpbYFOvPUrZzGOxoK9HhnwMf9R1LMVVy9MUW4ubp68GZuuTV/JJoFrNhiLxBJTquL8pprrtHDDz/sLahiij22+AmYQrp79+4qLS31bpmt6nV4B0Z31llneVcJzCr/5nGFgzfz+jWzeBULAyZOTquL9E9/+pNuvPFGb20B8wcoW2wFzPw0v3/Nl5vmDjJzR5L5AuWxxx7TgAEDqg2Gz9XY5irc3uqSUz5Xw1WOzX7mDSi33XZbpdeL1uYKOvM0NrlKlF4o0BMlUwkYZyTFnHnlk1ml3XwLaV5PceBWcYu7WbnWLDjGFnuBSHJaXZRLlizx/rg0z6ibqwls8REwc+v73/++tzjcvffe6xViNW0Vr356//33NWzYsEq7H3bYYdqwYYMKCgpqaoqfWxCIJKfVhWHuWjKPP5hb3c0CSDW91svCkGjyfwKmODdvSDCrRJvXrJkvTA7+vDwQi89V90+d2uaUz1V3cmq+MDML4Zq7AM3dRwe+0aQ2BTrz1J2cuhAJBboLWfBpDJEUcxdddJG3kFhVr/gxixWZq3qsDB2/EyaSnFYXrflD37wnOzk5WeZZ2ZSUlPgNLsA9m4LcXCE1V8VfeumlkD8wDsVSseKseQbWvI/34M0Uc2a+mqvxbLEXiCSnNUXZsmVL75EFs/Bfly5datqdn1sW+NWvfqU///nP3hoe5lGGQ218rlpORBSbDzenfK5GEb2OTf30pz/VI488ElYrZsG4E088scp9madhEQZmJwr0wKQ69gONpJgzq0Kb1aEffPBBXXvttSFBv/LKK96q35dddpl39YAt9gKR5LS6KCve+2lWiWbhv9jn0/RoXmlo1ggwt7ebW9LN6uvhbOZtC2bVWbNwmCkSDtwq7owYPny4d0cMW2wFIs1pdVGadUHMl2lmtXBzNZ0v02Kb06p6M4vFmdfi1fSlNZ+r8c9VuBGEm1M+V8MVtb+fWQvCLBBX1WbecmLW3zGfleZL6+uuu07mLtCqNuap/VwlUg8U6ImUrQSLNZJizlxtM7+8zDeMB79K7dJLL5V593J130AmGFHChRtJTlesWOG9Ss3cGnvwNmHCBN16663eolNm8Sm22AqYL8LMHwzm9lgzr7p27Rp2AKZIa9u2rczCjV9//XXIVfff/e53MlfYn3zySZmrAmyxE6hLTs2q+02bNvVumz54e+aZZ/SjH/3IW/zvww8/jN2AAt6TefTHPAJ04G2zFSRmIUdzm3tNX1rzuerWSRSNnPK56lZODxVNbW5xZ54mRk5jFSUFeqykA9hPdcWcuRpj3qtr/sg3C021b99+v1DFqybMKt/mOVezTZ8+XWbVaPNc6/LlywOo6caQa5tTswK0WfjEFOjmiuuBBaDJuynMS0pKvCu3NS105IaAf6K44447vJW5K4pzM7cOtZ1//vkyV8Wfe+4571m7iq3iVWs333yzzJctZlu0aJH3fmZzhdUsaJWZmekfNMdHUpecmlWITfFtFuE0xfiBeTbvZzaPMWzevFlvvPGGRo4c6biEP8Izr1QbPHiwl5dJkyZ5X4hVbAsWLJB5ZtUswmiu0p177rne20/4XHU799HIKZ+rbuf4wOiqKtCZp4mTv3hGSoEeT32f9W2eTbz++uv3j2ru3Lne86dHHnmkevbs6f27WUzKFN1vvvmm94eE2Q4sxM3/N4WAWWzDLJpi/jgxV3PMH4jmCoL549DcNssWG4G65tQsVGVufzZXyc3q4OZcMK8fMVdcFy9e7F1VN69aM6u5s8VOoGL1fNPjD37wA5m3I+zZs0dlZWUhQZgvVcwXYhXz98BC3OxoFoEzOTX/a1611q5dO5n3opv1BB5//HFv1Wm22AhEI6dm/Q/Tjvnda17jZb60MVfVTTFozo2bbrpJd999d2wGRC/ePDJfgpm8mN+VplA3Rbop8swrDM3vV/MomLlrwmx8rrp/0kQjp3yuup/nigirKtCZp4mTv3hGSoEeT32f9X3wOz2rGt7FF1/s3aZuXqNmvv03V9DN67Uq3hlZcYx5t7IpBt577z3vCqt5ZZN5Pod3Zcf2pIlWTs1V1Yceesh7bMFcVTW3RQ8ZMsR7LcmBV+piO7rg9lbV7bJVaZg/BM1/o0eP1meffeZdQTdfmh24Vbzf3tzlYhb9M/k0X8iYO17YYicQrZyaW2cfeOABzZgxwyvOzZoEplg3i1eddNJJsRsQPe0XeOedd7x1V8wX1Zs2bfK+UDOvuzNfiFd80W125nM1cU6aaOSUz1X3811Vgc48dT9vLkRIge5CFogBAQQQQAABBBBAAAEEEEAg8AIU6IE/BQBAAAEEEEAAAQQQQAABBBBwQYAC3YUsEAMCCCCAAAIIIIAAAggggEDgBSjQA38KAIAAAggggAACCCCAAAIIIOCCAAW6C1kgBgQQQAABBBBAAAEEEEAAgcALUKAH/hQAAAEEEEAAAQQQQAABBBBAwAUBCnQXskAMCCCAAAIIIIAAAggggAACgRegQA/8KQAAAggggAACCCCAAAIIIICACwIU6C5kgRgQQAABBBBAAAEEEEAAAQQCL0CBHvhTAAAEEEAAAQQQQAABBBBAAAEXBCjQXcgCMSCAAAIIIIAAAggggAACCARegAI98KcAAAgggAACCCCAAAIIIIAAAi4IUKC7kAViQAABBBBAAAEEEEAAAQQQCLwABXrgTwEAEEAAAQQQQAABBBBAAAEEXBCgQHchC8SAAAIIIIAAAggggAACCCAQeAEK9MCfAgAggAACCCCAAAIIIIAAAgi4IECB7kIWiAEBBBBAAAEEEEAAAQQQQCDwAhTogT8FAEAAAQQQQAABBBBAAAEEEHBBgALdhSwQAwIIIIAAAggggAACCCCAQOAFKNADfwoAgAACCCCAAAIIIIAAAggg4IIABboLWSAGBBBAAAEEEEAAAQQQQACBwAtQoAf+FAAAAQQQQAABBBBAAAEEEEDABQEKdBeyQAwIIIAAAggggAACCCCAAAKBF6BAD/wpAAACCCCAAAIIIIAAAggggIALAhToLmSBGBBAAAEEEEAAAQQQQAABBAIvQIEe+FMAAAQQQAABBBBAAAEEEEAAARcEKNBdyAIxIIAAAggggAACCCCAAAIIBF6AAj3wpwAACCCAAAIIIIAAAggggAACLghQoLuQBWJAAAEEEEAAAQQQQAABBBAIvAAFeuBPAQAQQAABBBBAAAEEEEAAAQRcEKBAdyELxIAAAggggAACCCCAAAIIIBB4AQr0wJ8CACCAAAIIIIAAAggggAACCLggQIHuQhaIAQEEEEAAAQQQQAABBBBAIPACFOiBPwUAQAABBBBAAAEEEEAAAQQQcEGAAt2FLBADAggggAACCCCAAAIIIIBA4AUo0AN/CgCAAAIIIIAAAggggAACCCDgggAFugtZIAYEEEAAAQQQQAABBBBAAIHAC1CgB/4UAAABBBBAAAEEEEAAAQQQQMAFAQp0F7JADAgggAACCCCAAAIIIIAAAoEXoEAP/CkAAAIIIIAAAggggAACCCCAgAsCFOguZIEYEEAAAQQQQAABBBBAAAEEAi9AgR74UwAABBBAAAEEEEAAAQQQQAABFwQo0F3IAjEggAACCCCAAAIIIIAAAggEXoACPfCnAAAIIIAAAggggAACCCCAAAIuCFCgu5AFYkAAAQQQQAABBBBAAAEEEAi8AAV64E8BABBAAAEEEEAAAQQQQAABBFwQoEB3IQvEgAACCCCAAAIIIIAAAgggEHgBCvTAnwIAIIAAAggggAACCCCAAAIIuCBAge5CFogBAQQQQAABBBBAAAEEEEAg8AIU6IE/BQBAAAEEEEAAAQQQQAABBBBwQeD/AeeVHeiQqt1OAAAAAElFTkSuQmCC\" width=\"640\">" ], "text/plain": [ "<IPython.core.display.HTML object>" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "[<matplotlib.lines.Line2D at 0x14724017a58>]" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "fig, ax = plt.subplots()\n", "\n", "# 給 x 及 y,並指定資料點格式: 'ro' 同 keywords { color='r', marker='o', linestyle=''}\n", "ax.plot([1, 2, 3, 4], [1, 4, 9, 16], 'ro')\n", "\n", "# 也可用 keyword 參數作細部設定\n", "ax.plot([1, 2, 3, 4], [1, 9, 25, 49], markerfacecolor='g', marker='^', linestyle='--')\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### § x, y 軸的 `xlim` 及 `ylim` 設定\n", "\n", "The axis() command in the example takes a list of [xmin, xmax, ymin, ymax] and specifies the viewport of the axes.\n", "\n", "+ [`axes.axis()`](https://matplotlib.org/api/_as_gen/matplotlib.axes.Axes.axis.html)\n", "+ [`axes.set_xlim()`](https://matplotlib.org/api/_as_gen/matplotlib.axes.Axes.set_xlim.html)\n", "+ [`axes.set_ylim()`](https://matplotlib.org/api/_as_gen/matplotlib.axes.Axes.set_ylim.html)\n", "+ `axes.set()`\n" ] }, { "cell_type": "code", "execution_count": 8, "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", " fig.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 overridden (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", " event.shiftKey = false;\n", " // Send a \"J\" for go to next cell\n", " event.which = 74;\n", " event.keyCode = 74;\n", " manager.command_mode();\n", " manager.handle_keydown(event);\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,iVBORw0KGgoAAAANSUhEUgAAA+gAAALuCAYAAAA9jTxNAAAgAElEQVR4XuzdB5xU9dX/8TPbWFhg6b33jogC0kFQQGyxxL9GEURENKBGEfWRiDGKvRAFA4jBEo0RoxgBQZZepItIkw4CSu9b5/+614d5QNruzpyZc2c++3rl9US49/zO733m93r85s7O+Px+v1/4QQABBBBAAAEEEEAAAQQQQACBiAr4COgR9WdxBBBAAAEEEEAAAQQQQAABBFwBAjovBAQQQAABBBBAAAEEEEAAAQQMCBDQDQyBFhBAAAEEEEAAAQQQQAABBBAgoPMaQAABBBBAAAEEEEAAAQQQQMCAAAHdwBBoAQEEEEAAAQQQQAABBBBAAAECOq8BBBBAAAEEEEAAAQQQQAABBAwIENANDIEWEEAAAQQQQAABBBBAAAEEECCg8xpAAAEEEEAAAQQQQAABBBBAwIAAAd3AEGgBAQQQQAABBBBAAAEEEEAAAQI6rwEEEEAAAQQQQAABBBBAAAEEDAgQ0A0MgRYQQAABBBBAAAEEEEAAAQQQIKDzGkAAAQQQQAABBBBAAAEEEEDAgAAB3cAQaAEBBBBAAAEEEEAAAQQQQAABAjqvAQQQQAABBBBAAAEEEEAAAQQMCBDQDQyBFhBAAAEEEEAAAQQQQAABBBAgoPMaQAABBBBAAAEEEEAAAQQQQMCAAAHdwBBoAQEEEEAAAQQQQAABBBBAAAECOq8BBBBAAAEEEEAAAQQQQAABBAwIENANDIEWEEAAAQQQQAABBBBAAAEEECCg8xpAAAEEEEAAAQQQQAABBBBAwIAAAd3AEGgBAQQQQAABBBBAAAEEEEAAAQI6rwEEEEAAAQQQQAABBBBAAAEEDAgQ0A0MgRYQQAABBBBAAAEEEEAAAQQQIKDzGkAAAQQQQAABBBBAAAEEEEDAgAAB3cAQaAEBBBBAAAEEEEAAAQQQQAABAjqvAQQQQAABBBBAAAEEEEAAAQQMCBDQDQyBFhBAAAEEEEAAAQQQQAABBBAgoPMaQAABBBBAAAEEEEAAAQQQQMCAAAHdwBBoAQEEEEAAAQQQQAABBBBAAAECOq8BBBBAAAEEEEAAAQQQQAABBAwIENANDIEWEEAAAQQQQAABBBBAAAEEECCg8xpAAAEEEEAAAQQQQAABBBBAwIAAAd3AEGgBAQQQQAABBBBAAAEEEEAAAQI6rwEEEEAAAQQQQAABBBBAAAEEDAgQ0A0MgRYQQAABBBBAAAEEEEAAAQQQIKDzGkAAAQQQQAABBBBAAAEEEEDAgAAB3cAQaAEBBBBAAAEEEEAAAQQQQAABAjqvAQQQQAABBBBAAAEEEEAAAQQMCBDQDQyBFhBAAAEEEEAAAQQQQAABBBAgoPMaQAABBBBAAAEEEEAAAQQQQMCAAAHdwBBoAQEEEEAAAQQQQAABBBBAAAECOq8BBBBAAAEEEEAAAQQQQAABBAwIENANDIEWEEAAAQQQQAABBBBAAAEEECCg8xpAAAEEEEAAAQQQQAABBBBAwIAAAd3AEGgBAQQQQAABBBBAAAEEEEAAAQI6rwEEEEAAAQQQQAABBBBAAAEEDAgQ0A0MgRYQQAABBBBAAAEEEEAAAQQQIKDzGkAAAQQQQAABBBBAAAEEEEDAgAAB3cAQaAEBBBBAAAEEEEAAAQQQQAABAjqvAQQQQAABBBBAAAEEEEAAAQQMCBDQDQyBFhBAAAEEEEAAAQQQQAABBBAgoPMaQAABBBBAAAEEEEAAAQQQQMCAAAHdwBBoAQEEEEAAAQQQQAABBBBAAAECOq8BBBBAAAEEEEAAAQQQQAABBAwIENANDIEWEEAAAQQQQAABBBBAAAEEECCg8xpAAAEEEEAAAQQQQAABBBBAwIAAAd3AEGgBAQQQQAABBBBAAAEEEEAAAQI6rwEEEEAAAQQQQAABBBBAAAEEDAgQ0A0MgRYQQAABBBBAAAEEEEAAAQQQIKDzGkAAAQQQQAABBBBAAAEEEEDAgAAB3cAQaAEBBBBAAAEEEEAAAQQQQAABAjqvAQQQQAABBBBAAAEEEEAAAQQMCBDQDQyBFhBAAAEEEEAAAQQQQAABBBAgoPMaQAABBBBAAAEEEEAAAQQQQMCAAAHdwBBoAQEEEEAAAQQQQAABBBBAAAECOq8BBBBAAAEEEEAAAQQQQAABBAwIENANDIEWEEAAAQQQQAABBBBAAAEEECCg8xpAAAEEEEAAAQQQQAABBBBAwIAAAd3AEGgBAQQQQAABBBBAAAEEEEAAAQI6rwEEEEAAAQQQQAABBBBAAAEEDAgQ0A0MgRYQQAABBBBAAAEEEEAAAQQQIKDzGkAAAQQQQAABBBBAAAEEEEDAgAAB3cAQaAEBBBBAAAEEEEAAAQQQQAABAjqvAQQQ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s7OGQiHvr6Bbt271/krWp08f79yTJ0/WHXfcoW7dunk/pHn5X8DcMV+yZIk30SlTpniBjIDu/76bGRYWFqpTp05av369XnnlFfXq1cubuPn5YO6eP/zww+ratas++OCDYIAEdJbmj7XDhw/XxIkTi/9bYCimTp2qH/7wh8rMzNT+/ftVrly5gAoFb9rmDzLmTmqdOnW8nw/cQQ/GNWD+SLty5Url5OQoPT09GJNmliUEZsyYoUGDBunyyy/38kHRExPmmnjkkUd05513qnbt2qjFSYCAHif4WJ32nXfeUe/evb0wbn4pO/l17bXXKjs7W+vWrVPjxo1jVRLncUBgyJAhevnllwnoDvQiViWYx9vN/8x/jE9+mfDetGlT7076wYMHVbly5ViVxHniIJCfn6+0tLTTztyoUSNt3LjRu3ty5ZVXxqEyThlrAfMHm379+unee+/Vv//9b5knLAjose5CfM5Xv359mY+7mJ/5vIInUHTz7osvvvAyAB9ncO8aIKC715OoVmQ+V2Y+X2b+Q1x097zoBBMmTNDIkSO9v5SZO2i8giNAQA9Or0sz0+985zt67bXXvF/SzWPPvIInYD7e8Omnn3INBKT15rOmZg+ao0ePer+gm0edCegBab7kfazJPMJues8reALz58/XNddcowEDBnj/7eflngAB3b2eRLUi89iq+Zy5+Utp1apVS4xtPnfYrl07DR482HvEkVdwBAjowel1aWZqHn83G0ju2rXL2zSMV7AEzEdfunTpoosvvlibNm3yPo/Iy98CY8eO9TYLLdp3oHv37gR0f7e8eHYnTpzwnqIxG4Tef//93kebCgoKvL0Ibr75Zl144YUBkQjuNM1ny3/2s595T9aaJ2x5uSdAQHevJ1GtyDy6bh5ZM481nvoymwPVrVvX+zzq22+/HdXzMpjbAgR0t/sTy+qOHz/uPdZ+wQUXeDu78wqGwNdff+1tEPfGG2/oySef1LFjx7zPIvft2zcYAAGepflj3NVXX+312nz21LwI6MG5IMwGYGcL4WaTsBdffNHbxZuXfwXMZqHmj3PmW33MkxRPPfWUlwMqVark7VdjArzZl4JX/AQI6PGzj8mZK1asKPO/nTt3nnY+sxGE2cm9RYsWWr16dUzq4SRuCBDQ3eiDC1WYu2jmbto999yj3//+9y6URA2WBcznDs1nUIteZvde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IIAAAggggAACCCDggAAB3YEmUAICCCCAAAIIIIAAAggggAACBHSuAQQQQAABBBBAAAEEEEAAAQQcECCgO9AESkAAAQQQQAABBBBAAAEEEECAgM41gAACCCCAAAIIIIAAAggggIADAgR0B5pACQgggAACCCCAAAIIIIAAAggQ0LkGEEAAAQQQQAABBBBAAAEEEHBAgIDuQBMoAQEEEEAAAQQQQAABBBBAAAECOtcAAggggAACCCCAAAIIIIAAAg4IENAdaAIlIIAAAggggAACCCCAAAIIIEBA5xpAAAEEEEAAAQQQQAABBBBAwAEBAroDTaAEBBBAAAEEEEAAAQQQQAABBAjoXAMIIIAAAggggAACCCCAAAIIOCBAQHegCZSAAAIIIIAAAggggAACCCCAAAGdawABBBBAAAEEEEAAAQQQQAABBwQI6A40gRIQQAABBBBAAAEEEEAAAQQQIKBzDSCAAAIIIIAAAggggAACCCDggAAB3YEmUAICCCCAAAIIIIAAAggggAACBHSuAQQQQAABBBBAAAEEEEAAAQQcECCgO9AESkAAAQQQQAABBBBAAAEEEECAgM41gAACCCCAAAIIIIAAAggggIADAgR0B5pACQgggAACCCCAAAIIIIAAAggQ0LkGEEAAAQQQQAABBBBAAAEEEHBAgIDuQBMoAQEEEEAAAQQQQAABBBBAAAECOtcAAggggAACCCCAAAIIIIAAAg4IENAdaAIlIIAAAggggAACCCCAAAIIIEBA5xpAAAEEEEAAAQQQQAABBBBAwAEBAroDTaAEBBBAAAEEEEAAAQQQQAABBAjoXAMIIIAAAggggAACCCCAAAIIOCBAQHegCZSAAAIIIIAAAggggAACCCCAAAGdawABBBBAAAEEEEAAAQQQQAABBwQI6A40gRIQQAABBBBAAAEEEEAAAQQQIKBzDSCAAAIIIIAAAggggAACCCDggAAB3YEmUAICCCCAAAIIIIAAAggggAACBHSuAQQQQAABBBBAAAEEEEAAAQQcEPj/01GuYRSAu2oAAAAASUVORK5CYII=\" width=\"640\">" ], "text/plain": [ "<IPython.core.display.HTML object>" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "[0, 6, 0, 50]" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "fig, ax = plt.subplots()\n", "ax.plot([1, 2, 3, 4], [1, 4, 9, 16], 'ro')\n", "ax.plot([1, 2, 3, 4], [1, 9, 25, 49], markerfacecolor='g', marker='^', linestyle='--')\n", "# 指定 x, y 軸顯示區間\n", "ax.axis([0, 6, 0, 50])\n", "\n", "# 使用 set_xlim() 及 set_ylim() 的方法\n", "#ax.set_xlim(0, 6)\n", "#ax.set_ylim(0, 50)\n", "\n", "# 使用通用屬性設定 set() 方法\n", "#ax.set(xlim=[0, 6], ylim=[0, 50])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### § 指定多組 x, y 資料及樣式設定\n", "\n", "除了上述的 `axes.plot([x], y, [format])` 用法外,還可以同時指定多組的 x, y 資料 `axes.plot([x1], y1, [format1], [x2], y2, [format2], ...)`。" ] }, { "cell_type": "code", "execution_count": 9, "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", " fig.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 overridden (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", " event.shiftKey = false;\n", " // Send a \"J\" for go to next cell\n", " event.which = 74;\n", " event.keyCode = 74;\n", " manager.command_mode();\n", " manager.handle_keydown(event);\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,iVBORw0KGgoAAAANSUhEUgAAA+gAAALuCAYAAAA9jTxNAAAgAElEQVR4XuzdC9BdZX0v/odA0ISoxGawXoCmeBesWMUoBwEnoCBap1pPW1sQRWrVMaltk6OOKMJYE+sYilNqUWhBZ9rOsR3FkVsqFwuEQaGKV1SioFOpwVSNiRCanFnLbk7e8ObN3nvt316/tffnnemcf8lez/qtz3c9/5lvn/eyz86dO3cWXwQIECBAgAABAgQIECBAgECrAvso6K36uzkBAgQIECBAgAABAgQIEKgFFHQvAgECBAgQIECAAAECBAgQSCCgoCcIwQgECBAgQIAAAQIECBAgQEBB9w4QIECAAAECBAgQIECAAIEEAgp6ghCMQIAAAQIECBAgQIAAAQIEFHTvAAECBAgQIECAAAECBAgQSCCgoCcIwQgECBAgQIAAAQIECBAgQEBB9w4QIECAAAECBAgQIECAAIEEAgp6ghCMQIAAAQIECBAgQIAAAQIEFHTvAAECBAgQIECAAAECBAgQSCCgoCcIwQgECBAgQIAAAQIECBAgQEBB9w4QIECAAAECBAgQIECAAIEEAgp6ghCMQIAAAQIECBAgQIAAAQIEFHTvAAECBAgQIECAAAECBAgQSCCgoCcIwQgECBAgQIAAAQIECBAgQEBB9w4QIECAAAECBAgQIECAAIEEAgp6ghCMQIAAAQIECBAgQIAAAQIEFHTvAAECBAgQIECAAAECBAgQSCCgoCcIwQgECBAgQIAAAQIECBAgQEBB9w4QIECAAAECBAgQIECAAIEEAgp6ghCMQIAAAQIECBAgQIAAAQIEFHTvAAECBAgQIECAAAECBAgQSCCgoCcIwQgECBAgQIAAAQIECBAgQEBB9w4QIECAAAECBAgQIECAAIEEAgp6ghCMQIAAAQIECBAgQIAAAQIEFHTvAAECBAgQIECAAAECBAgQSCCgoCcIwQgECBAgQIAAAQIECBAgQEBB9w4QIECAAAECBAgQIECAAIEEAgp6ghCMQIAAAQIECBAgQIAAAQIEFHTvAAECBAgQIECAAAECBAgQSCCgoCcIwQgECBAgQIAAAQIECBAgQEBB9w4QIECAAAECBAgQIECAAIEEAgp6ghCMQIAAAQIECBAgQIAAAQIEFHTvAAECBAgQIECAAAECBAgQSCCgoCcIwQgECBAgQIAAAQIECBAgQEBB9w4QIECAAAECBAgQIECAAIEEAgp6ghCMQIAAAQIECBAgQIAAAQIEFHTvAAECBAgQIECAAAECBAgQSCCgoCcIwQgECBAgQIAAAQIECBAgQEBB9w4QIECAAAECBAgQIECAAIEEAgp6ghCMQIAAAQIECBAgQIAAAQIEFHTvAAECBAgQIECAAAECBAgQSCCgoCcIwQgECBAgQIAAAQIECBAgQEBB9w4QIECAAAECBAgQIECAAIEEAgp6ghCMQIAAAQIECBAgQIAAAQIEFHTvAAECBAgQIECAAAECBAgQSCCgoCcIwQgECBAgQIAAAQIECBAgQEBB9w4QIECAAAECBAgQIECAAIEEAgp6ghCMQIAAAQIECBAgQIAAAQIEFHTvAAECBAgQIECAAAECBAgQSCCgoCcIwQgECBAgQIAAAQIECBAgQEBB9w4QIECAAAECBAgQIECAAIEEAgp6ghCMQIAAAQIECBAgQIAAAQIEFHTvAAECBAgQIECAAAECBAgQSCCgoCcIwQgECBAgQIAAAQIECBAgQEBB9w4QIECAAAECBAgQIECAAIEEAgp6ghCMQIAAAQIECBAgQIAAAQIEFHTvAAECBAgQIECAAAECBAgQSCCgoCcIwQgECBAgQIAAAQIECBAgQEBB9w4QIECAAAECBAgQIECAAIEEAgp6ghCMQIAAAQIECBAgQIAAAQIEFHTvAAECBAgQIECAAAECBAgQSCCgoCcIwQgECBAgQIAAAQIECBAgQEBB9w4QIECAAAECBAgQIECAAIEEAgp6ghCMQIAAAQIECBAgQIAAAQIEFHTvAAECBAgQIECAAAECBAgQSCCgoCcIwQgECBAgQIAAAQIECBAgQEBB9w4QIECAAAECBAgQIECAAIEEAgp6ghCMQIAAAQIECBAgQIAAAQIEFHTvAAECBAgQIECAAAECBAgQSCCgoCcIwQgECBAgQIAAAQIECBAgQEBB9w4QIECAAAECBAgQIECAAIEEAgp6ghCMQIAAAQIECBAgQIAAAQIEFHTvAAECBAgQIECAAAECBAgQSCCgoCcIwQgECBAgQIAAAQIECBAgQEBB9w4QIECAAAECBAgQIECAAIEEAgp6ghCMQIAAAQIECBAgQIAAAQIEFHTvAAECBAgQIECAAAECBAgQSCCgoCcIwQgECBAgQIAAAQIECBAgQEBB9w4QIECA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3tKyaeum+rGWLFxSNq7YOJWn6LpBvjdbQR8wk+9973vl137t1+a86rWvfW25+OKLH/zMTTfdVN71rneVm2++uey77771L4N7//vfX572tKfNus6gnx/kEWzCQbR8lgABAgQIECBAYNIEdj097z3btJ6i6wb53m4FPV8moRPZhKG8FidAgAABAgQIEEgssPvpeW/UaT1F1w3yvawKer5MQieyCUN5LU6AAAECBAgQIJBYYLbT82k+RdcN8r2sCnq+TEInsglDeS1OgAABAgQIECCQVGBPp+fTfIquG+R7WRX0fJmETmQThvJanAABAgQIECBAIKnAXKfn03qKrhvke1kV9HyZhE5kE4byWpwAAQIECBAgQCChwN5Oz6f1FF03yPeyKuj5MgmdyCYM5bU4AQIECBAgQIBAQoF+Ts+n8RRdN8j3siro+TIJncgmDOW1OAECBAgQIECAQDKBfk/Pp/EUXTdI9rKWUhT0fJmETmQThvJanAABAgQIECBAIJnAIKfn03aKrhske1kV9HyBRE9kE0YLW58AAQIECBAgQCCLwKCn59N2iq4bZHlT//8cTtDzZRI6kU0YymtxAgQIECBAgACBRALDnJ5P0ym6bpDoZf2fURT0fJmETmQThvJanAABAgQIECBAIInAsKfn03SKrhskeVl3GUNBz5dJ6EQ2YSivxQkQIECAAAECBJIINDk9n5ZTdN0gycuqoOcLYlwT2YTjknYfAgQIECBAgACBNgU2b9tctu/Y3miE+fPml8ULFjdaI/PFukG+dJyg58skdCKbMJTX4gQIECBAgAABAgQ6I6Ab5ItKQc+XSehENmEor8UJECBAgAABAgQIdEZAN8gXlYKeL5PQiWzCUF6LEyBAgAABAgQIEOiMgG6QLyoFPV8moRPZhKG8FidAgAABAgQIECDQGQHdIF9UCnq+TEInsglDeS1OgAABAgQIECBAoDMCukG+qBT0fJmETmQThvJanAABAgQIECBAgEBnBHSDfFEp6PkyCZ3IJgzltTgBAgQIECBAgACBzgjoBvmiUtDzZRI6kU0YymtxAgQIECBAgAABAp0R0A3yRaWg58skdCKbMJTX4gQIECBAgAABAgQ6I6Ab5ItKQc+XSehENmEor8UJECBAgAABAgQIdEZAN8gXlYKeL5PQiWzCUF6LEyBAgAABAgQIEOiMgG6QLyoF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v//+8olPfKL+De4///nPy5VXXlmOP/74+t9OPPHE+re0Vyfs1beh7/rV+xb36mfaq98OP+yXTTisnOsIECBAgAABAgQITJaAbpAvTwU9MJOXvOQl5eabb67/3vnu37K+YcOG8vznP7/+ZXDVL4Wrvk477bT6295vvfXWcuSRR86Y7N577y1Lliypy/znPve5oae2CYemcyEBAgQIECBAgACBiRLQDfLFqaAHZlL91vXql7rdcssts97lKU95SvnWt75VfvrTn5ZFixaVc845p1S/3X3XP73Wu/Cyyy4rL3/5y+tvl69+pn3YL5twWDnXESBAgAABAgQIEJgsAd0gX54KemAm1bejV7+xvfqZ891/prz6lvXqN7VXJ+PVz5RXJ+zVb1avrjn22GMf8qfUXve615WLL764XHvttfW/D/tlEw4r5zoCBAgQIECAAAECkyWgG+TLU0EPzGTFihXlr/7qr8qrXvWq+tT7wAMPrO9W/X30d77znWXt2rX1z51XP4fe++r9qbWPfOQj9W9+r76uuOKKcsopp5RqA91xxx2NJrYJG/G5mAABAgQIECBAgMDECOgG+aJU0AMzqf5cWvUz49XPoT/qUY8qz33uc+uT9Opnzqu/df64xz2u/rfqN7r3vm6//fbyghe8oGzZsqX+OfQDDjig3HTTTfWfY7v88svL8uXLG01sEzbiczEBAgQIECBAgACBiRHQDfJFqaAHZ1Kdllffmn7ppZfWp9+/+MUvypOf/ORy0kknlT/90z8tj3zkIx8ywde//vXy9re/vVx33XX1aftRRx1V/3x6VdybftmETQVdT4AAAQIECBAgQGAyBHSDfDkq6PkyCZ3IJgzltTgBAgQIECBAgACBzgjoBvmiUtDzZRI6kU0YymtxAgQIECBAgAABAp0R0A3yRaWg58skdCKbMJTX4gQIECBAgAABAgQ6I6Ab5ItKQc+XSehENmEor8UJECBAgAABAgQIdEZAN8gXlYKeL5PQiWzCUF6LEyBAgAABAgQIEOiMgG6QLyoFPV8moRPZhKG8FidAgAABAgQIECDQGQHdIF9UCnq+TEInsglDeS1OgAABAgQIECBAoDMCukG+qBT0fJmETmQThvJanAABAgQIECBAgEBnBHSDfFEp6PkyCZ3IJgzltTgBAgQIECBAgACBzgjoBvmiUtDzZRI6kU0Yymtx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CU+o/9txxx1XrrvuunLhhReWM844o/5vV111VXnpS19aDjnkkPLtb3+77LPPPo0mtgkb8bmYAAECBAgQIECAwMQI6Ab5olTQAzPZuXNnXci/973vlTvuuOPBcj7bLb/5zW/WJX758uXl6quvnvGRN7zhDeWjH/1o/d+rf2/yZRM20XMtAQIECBAgQIAAgckR0A3yZamgB2ZS/Rz5scceW377t3+7fPKTn5zzTu9+97vLe9/73nLBBReUN77xjTM+e/nll5eTTz65nH766eWiiy5qNLFN2IjPxQQIECBAgAABAgQmRkA3yBelgh6YSfWz5W9/+9tnfMv6nm536qmn1r9Ervo59Ornz3f92rx5c3n0ox9dfwv8Nddc02him7ARn4sJECBAgAABAgQITIyAbpAvSgU9MJM//MM/LB//+MfLZz/72fKYxzymfOhDHypXXnllecQjHlGWLVtW/3K4gw8+uJ7ghBNOKOvXry/f//73y+Mf//gZU1XfKj9//vz6W+Srb4Xf21dvo832ubvvvru+55133rm3Zfw7AQIECBAgQIAAAQITLKCg5wtXQQ/M5GUve1n9i+H+4i/+opx77rn1KXh1On777beX7373u+WRj3xk+fKXv1wOPfTQcvjhh5evfvWr9S+Pe/jDH/6QqaqCX/1295/97Gd7nVhB3yuRDxAgQIAAAQIECBCYegEFPd8roKAHZvLiF7+4/i3sVTGvTtJ7fybtv//7v+vf3v43f/M35fd///fLJz7xiXLEEUeUr3zlK3UJX7BgwUOmOuigg8p9991XfvKTnzSa2CZsxOdiAgQIECBAgAABAhMjoBvki1JBD8zk9a9/ff1L3apf8vaSl7xkxp2qk/DHPvax9d86/8///M9y4okn1r+l/a677nrw2957F/S+xf2JT3xi+cY3vtFoYpuwEZ+LCRAgQIAAAQIECEyMgG6QL0oFPTCT6u+cv+c975m1oFe3PfLII8u///u/l+qXwK1YsaJccskl5dZbb63/+65f9957b1myZEk5/vjjy+c+97lGE9uEjfhcTIAAAQIECBAgQGBiBHSDfFEq6IGZVN/WXv2iuPe97331b3Pf/esZz3hG/UvftmzZUj7wgQ+Us846q5x//vn1t7/v+nXZZZeVl7/85eWMM86ofyN8ky+bsImeawkQIECAAAECBAhMjoBukC9LBT0wk6p4H3LIIeXAAw8s3/rWt8q+++774N2qb2uvfpv60qVL629br36revUt7NXfTd/9T6m97nWvKxdffHG59tpr639v8mUTNtFzLQECBAgQIECAAIHJEdAN8mWpoAdn8q53vav+De5//Md/XD784Q+XefPmle3bt5c/+IM/KP/0T/9UPvjBD5a3ve1t9RS9P7X2kY98pJx55pn1f7viiivKKaecUqrNc8cddzSe1iZsTGgBAgQIECBAgAABAhMhoBvki1FBD86k+mVwxx13XP2z5dWJ+a5/Zq06Da/+9vl+++1XT1H9+bUXvOAF9be8Vz+HfsABB5Sbbrqp7LPPPvXPsS9fvrzxtDZhY0ILECBAgAABAgQIEJgIAd0gX4wK+hgyqf50WvUz5lUZr/7u+WGHHVZe+cpXltWrVz9YzntjfP3rX69/Xv26664rDzzwQDnqqKPKOeecUxf3UXzZhKNQtAYBAgQIECBAgACB7gvoBvkyVNDzZRI6kU0YymtxAgQIECBAgAABAp0R0A3yRaWg58skdCKbMJTX4gQIECBAgAABAgQ6I6Ab5ItKQc+XSehENmEor8UJECBAgAABAgQIdEZAN8gXlYKeL5PQiWzCUF6LEyBAgAABAgQIEOiMgG6QLyoFPV8moRPZhKG8FidAgAABAgQIECDQGQHdIF9UCnq+TEInsglDeS1OgAABAgQIECBAoDMCukG+qBT0fJmETmQThvJanAABAgQIECBAgEBnBHSDfFEp6PkyCZ3IJgzltTgBAgQIECBAgACBzgjoBvmiUtDzZRI6kU0YymtxAgQIECBAYAIFtty/pazbsK5+spXLVpZF+y+awKf0SNMooBvkS11Bz5dJ6EQ2YSivxQkQIECAAIEJFFh7w9qyev3q+snWLF9TVh29agKf0iNNo4BukC91BT1fJqET2YShvBYnQIAAAQIEJkygOj1fet7SsmnrpvrJlixcUjau2OgUfcJyntbH0Q3yJa+g58skdCKbMJTX4gQIECBAgMCECex6et57NKfoExbyFD+ObpAvfAU9XyahE9mEobwWJ0CAAAECBCZIYPfT896jOUWfoJCn/FF0g3wvgIKeL5PQiWzCUF6LEyBAgAABAhMkMNvpuVP0CQrYoxTdIN9LoKDnyyR0IpswlNfiBAgQIECAwIQI7On03Cn6hATsMWoB3SDfi6Cg58skdCKbMJTX4gQIECBAgMCECMx1eu4UfUJC9hgKesJ3QEFPGErkSAp6pK61CRAgQIAAgUkQ2NvpuVP0SUjZMzhBz/kOKOg5cwmbSkEPo7UwAQIECBAgMCEC/ZyeO0WfkLCn/DF0g3wvgIKeL5PQiWzCUF6LEyBAgAABAh0X6Pf03Cl6x4M2fi2gG+R7ERT0fJmETmQThvJanAABAgQIEOi4wCCn507ROx628RX0hO+Agp4wlMiRFPRIXWsTIECAAAECXRYY9PTcKXqX0za7E/Sc74CCnjOXsKkU9DBaCxMgQIAAAQIdFxjm9NwpesdDn/LxdYN8L4CCni+T0IlswlBeixMgQIAAAQIdFRj29NwpekcDN3YtoBvkexEU9HyZhE5kE4byWpwAAQIECBDoqECT03On6B0N3dgKesJ3QEFPGErkSAp6pK61CRAgQIAAga4KbN62uWzfsb3R+PPnzS+LFyxutIaLCYxTQDcYp3Z/91LQ+3OamE/ZhBMTpQchQIAAAQIECBAg0EhAN2jEF3Kxgh7CmndRmzBvNiYjQIAAAQIECBAgME4B3WCc2v3dS0Hvz2liPmUTTkyUHoQAAQIECBAgQIBAIwHdoBFfyMUKeghr3kVtwrzZmIwAAQIECBAgQIDAOAV0g3Fq93cvBb0/p4n5lE04MVF6EAIECBAgQIAAAQKNBHSDRnwhFyvoIax5F7UJ82ZjMgIECBAgQIAAAQLjFNANxqnd370U9P6cJuZTNuHEROlBCBAgQIAAAQIECDQS0A0a8YVcrKCHsOZd1CbMm43JCBAgQIAAAQIECIxTQDcYp3Z/91LQ+3OamE/ZhBMTpQchQIAAAQIECBAg0EhAN2jEF3Kxgh7CmndRmzBvNiYjQIAAAQIECBAgME4B3WCc2v3dS0Hvz2liPmUTTkyUHoQAAQIECBAgQIBAIwHdoBFfyMUKeghr3kVtwrzZmIwAAQIECBAgQIDAOAV0g3Fq93cvBb0/p4n5lE04MVF6EAIECBAgQIAAAQKNBHSDRnwhFyvoIax5F7UJ82ZjMgIECBAgQIAAAQLjFNANxqnd370U9P6cJuZTNuHEROlBCBAgQIAAAQIECDQS0A0a8YVcrKCHsOZd1CbMm43JCBAgQIAAAQIECIxTQDcYp3Z/91LQ+3OamE/ZhBMTpQchQIAAAQIECBAg0EhAN2jEF3Kxgh7CmndRmzBvNiYjQIAAAQIECBAgME4B3WCc2v3dS0Hvz2liPmUTTkyUHoQAAQIECBAgQIBAIwHdoBFfyMUKeghr3kVtwrzZmIwAAQIECBAgQIDAOAV0g3Fq93cvBb0/p4n5lE04MVF6EAIECBAgQIAAAQKNBHSDRnwhFyvoIax5F7UJ82ZjMgIECBAgQIAAAQLjFNANxqnd370U9P6cJuZTNuHEROlBCBAgQIDAVApsuX9LWbdhXf3sK5etLIv2XzSVDh6awCgEdINRKI52DQV9tJ7pV7MJ00dkQAIECBAgQGAOgbU3rC2r16+uP7Fm+Zqy6uhVvAgQGFJANxgSLvAyBT0QN+PSNmHGVMxEgAABAgQI9CNQnZ4vPW9p2bR1U/3xJQuXlI0rNjpF7wfPZwjMIqAb5HstFPR8mYROZBOG8lqcAAECBAgQCBTY9fS8dxun6IHglp54Ad0gX8QKer5MQieyCUN5LU6AAAECBAgECex+et67jVP0IHDLToWAbpAvZgU9XyahE9mEobwWJ0CAAAECBIIEZjs9d4oehG3ZqRHQDfJFraDnyyR0IpswlNfiBAgQIECAQIDAnk7PnaIHYFtyqgR0g3xxK+j5MgmdyCYM5bU4AQIECBAgECAw1+m5U/QAcEtOjYBukC9qBT1fJqET2YShvBYnQIAAAQIERiywt9Nzp+gjBrfcVAnoBvniVtDzZRI6kU0YymtxAgQIECBAYMQC/ZyeO0UfMbrlpkZAN8gXtYKeL5PQiWzCUF6LEyBAgAABAiMU6Pf03Cn6CNEtNVUCukG+uBX0fJmETmQThvJanAABAgQIEBihwCCn507RRwhvqakR0A3yRa2g58skdCKbMJTX4gQIECBAgMCIBAY9PXeKPiJ4y0yVgG6QL24FPV8moRPZhKG8FidAgAABAgRGJDDM6blT9BHhW2ZqBHSDfFEr6PkyCZ3IJgzltTgBAgQIECAwAoFhT8+doo8A3xJTJaAb5ItbQc+XSehENmEor8UJECBAgACBEQg0OT13ij6CACwxNQK6Qb6oFfR8mYROZBOG8lqcAAECBAgQGIHA5m2by/Yd2xutNH/e/LJ4weJGa7iYwKQL6Ab5ElbQ82USOpFNGMprcQIECBAgQIAAAQKdEdAN8kWloOfLJHQimzCU1+IECBAgQIAAAQIEOiOgG+SLSkHPl0noRDZhKK/FCRAgQIAAAQIECHRGQDfIF5WCni+T0IlswlBeixMgQIAAAQIECBDojIBukC8qBT1fJqET2YShvBYnQIAAAQIECBAg0BkB3SBfVAp6vkxCJ7IJQ3ktToAAAQIECBAgQKAzArpBvqgU9HyZhE5kE4byWpwAAQIECBAgQIBAZwR0g3xRKej5MgmdyCYM5bU4AQIECBAgQIAAgc4I6Ab5olLQ82USOpFNGMprcQIECBAgQIAAAQKdEdAN8kWloOfLJHQimzCU1+IECBAgQIAAAQIEOiOgG+SLSkHPl0noRDZhKK/FCRAgQIAAAQIECHRGNaMeRAAAIABJREFUQDfIF5WCni+T0IlswlBeixMgQIAAAQIECBDojIBukC8qBT1fJqET2YShvBYnQIAAAQIECBAg0BkB3SBfVAp6vkxCJ7IJQ3ktToAAAQIECBAgQKAzArpBvqgU9HyZhE5kE4byWpwAAQIECBAgQIBAZwR0g3xRKehjzuSSSy4pp512Wn3X7373u+XQQw+dMcENN9xQ3vOe95Sbb7657LfffuWYY44p73vf+8oznvGMkUxqE46E0SIECBAgQIAAAQIEOi+gG+SLUEEfYyY/+tGPytOe9rRy7733zlrQL7/88vKyl72s/rfnPe955Re/+EW57bbbysKFC8vnP//5cuSRRzae1iZsTGgBAgQIECBAgAABAhMhoBvki1FBH2Mmr3nNa8o///M/l4MPPrh861vfmnGCvnPnznLYYYeVu+66q3zmM58pL3nJS+rJPvaxj5UzzjijHHfcceWaa65pPK1N2JjQAgQIECBAgAABAgQmQkA3yBejgj6mTKrT8ZNPPrn82Z/9WfnCF75Qrr322hkF/aqrriovfvGL6zJ+4YUXzpjqhBNOKOvXry933HFHedKTntRoYpuwEZ+LCRAgQIAAgf8R2HL/lrJuw7r6f1u5bGVZtP8iNgQIdExAN8gXmII+hky2bNlS/wz5z3/+87pkv/KVr3xIQa9+Lr36+fSqyPdOz3ujXXDBBeVNb3pTOfvss8tZZ53VaGKbsBGfiwkQIECAAIH/EVh7w9qyev3q+n9bs3xNWXX0KjYECHRMQDfIF5iCPoZMVq5cWc4777zy8Y9/vFTf5n788cc/pKC/8IUvrH/OfPPmzeXAAw+cMVX1c+jPfvazy2tf+9py8cUXN5rYJmzE52ICBAgQIECglFKdni89b2nZtHVT7bFk4ZKyccVGp+jeDgIdE9AN8gWmoAdnUv029he84AXlpJNOqn+2vPqaraBX37pe/Vb37du3P2Siu+++uxxyyCHlxBNPLFdeeeVeJ+5ttNk+WK1V/Qz8nXfeudd1fIAAAQIECBAgMJvArqfnvX93iu5dIdA9AQU9X2YKemAmVdmuTr6rX/z21a9+tTzhCU/YY0FftGhRqf7nhz/84UMm2rZtW/2b3A8//PBy++2373ViBX2vRD5AgAABAgQIDCmw++l5bxmn6EOCuoxAiwIKeov4e7i1gh6Yybnnnlve9a53lY985CPlzDPPfPBOs52gP+IRj6hL+D333POQibZu3VoOOOCA8sxnPrN86UtfajSxTdiIz8UECBAgQGDqBWY7Pe+hOEWf+tcDQMcEdIN8gSnoQZl885vfLL/xG79Rf3v7v/7rv5Z99tlnzoL+5Cc/uf628+rUfdfPVhdVJ/CHHnpo/Vver7jiikYT24SN+FxMgAABAgSmWmBPp+c9FKfoU/16ePgOCugG+UJT0IMy+aM/+qPyt3/7t32tXv3Jteq3s19//fXlxz/+cVm8ePGM6774xS+W5zznOeX0008vF110UV9r7ulDNmEjPhcTIECAAIGpFpjr9LwH4xR9ql8RD98xAd0gX2AKelAm1W9sr35B3Gxf//Iv/1J+8IMflFNPPbU88pGPLCtWrCh/8Rd/UZfvyy67rJxyyikzLjv//PPLW9/61lJ9y/w73/nORhPbhI34XEyAAAECBKZWYG+n5z0Yp+hT+4p48A4K6Ab5QlPQW8hktp9Bv+aaa8qLXvSiWf+UWvXfq1P273znO2Xp0qWNJrYJG/G5mAABAgQITK1AP6fnPRyn6FP7mnjwjgnoBvkCU9BbyGS2gr5z587ylKc8pf459E9/+tPl5JNPrie78MIL618wt3z58nL11Vc3ntYmbExoAQIECBAgMHUC/Z6eO0WfulfDA3dcQDfIF6CC3kImsxX0aoz169fXfy99x44dZdmyZeW+++4rt956a/0b3G+88cZyxBFHNJ7WJmxMaAECBAgQIDB1AoOcnvdwnKJP3WvigTsooBvkC01BbyGTPRX0apSbbrqp/tNs1c+v77vvvuXYY48t73//+8vTnva0kUxqE46E0SIECBAgQGBqBAY9PXeKPjWvhgedAAHdIF+ICnq+TEInsglDeS1OgAABAgQmTmCY03On6BP3GnigCRXQDfIFq6DnyyR0IpswlNfiBAgQIEBgogSGPT13ij5Rr4GHmWAB3SBfuAp6vkxCJ7IJQ3ktToAAAQIEJkqgyem5U/SJehU8zIQK6Ab5glXQ82USOpFNGMprcQIECBAgMFECm7dtLtt3bG/0TPPnzS+LFyxutIaLCRCIEdANYlybrKqgN9Hr4LU2YQdDMzIBAgQIECBAgACBAAHdIAC14ZIKekPArl1uE3YtMfMSIECAAAECBAgQiBHQDWJcm6yqoDfR6+C1NmEHQzMyAQIECBAgQIAAgQAB3SAAteGSCnpDwK5dbhN2LTHzEiBAgAABAgQIEIgR0A1iXJusqqA30evgtTZhB0MzMgECBAgQIECAAIEAAd0gALXhkgp6Q8CuXW4Tdi0x8xIgQIAAAQIECBCIEdANYlybrKqgN9Hr4LU2YQdDMzIBAgQIECBAgACBAAHdIAC14ZIKekPArl1uE3YtMfMSIECAAAECBAgQiBHQDWJcm6yqoDfR6+C1NmEHQzMyAQIECBAgQIAAgQAB3SAAteGSCnpDwK5dbhN2LTHzEiBAgAABAgQIEIgR0A1iXJusqqA30evgtTZhB0MzMgECBAgQIECAAIEAAd0gALXhkgp6Q8CuXW4Tdi0x8xIgQIAAAQIECBCIEdANYlybrKqgN9Hr4LU2YQdDMzIBAgQIECBAgACBAAHdIAC14ZIKekPArl1uE3YtMfMSIECAAAECBAgQiBHQDWJcm6yqoDfR6+C1NmEHQzMyAQIECBDYi8CW+7eUdRvW1Z9auWxlWbT/ImYECBDYq4BusFeisX9AQR87ebs3tAnb9Xd3AgQIECAQIbD2hrVl9frV9dJrlq8pq45eFXEbaxIgMGECukG+QBX0fJmETmQThvJanAABAgQIjF2gOj1fet7SsmnrpvreSxYuKRtXbHSKPvYk3JBA9wR0g3yZKej5MgmdyCYM5bU4AQIECBAYu8Cup+e9mztFH3sMbkigkwK6Qb7YFPR8mYROZBOG8lqcAAECBAiMVWD30/PezZ2ijzUGNyPQWQHdIF90Cnq+TEInsglDeS1OgAABAgTGKjDb6blT9LFG4GYEOi2gG+SLT0HPl0noRDZhKK/FCRAgQIDA2AT2dHruFH1sEbgRgc4L6Ab5IlTQ82USOpFNGMprcQIECBAgMDaBuU7PnaKPLQY3ItBpAd0gX3wKer5MQieyCUN5LU6AAAECBMYisLfTc6foY4nBTQh0XkA3yBehgp4vk9CJbMJQXosTIECAAIGxCPRzeu4UfSxRuAmBTgvoBvniU9DzZRI6kU0YymtxAgQIECAQLtDv6blT9PAo3IBA5wV0g3wRKuj5MgmdyCYM5bU4AQIECBAIFxjk9NwpengcbkCg0wK6Qb74FPR8mYROZBOG8lqcAAECBAiECgx6eu4UPTQOixPovIBukC9CBT1fJqET2YShvBYnQIAAAQKhAsOcnjtFD43E4gQ6LaAb5ItPQc+XSehENmEor8UJECBAgECYwLCn507RwyKxMIHOC+gG+SJU0PNlEjqRTRjKa3ECBAgQIBAm0OT03Cl6WCwWJtBpAd0gX3wKer5MQieyCUN5LU6AAAECBMIENm/bXLbv2N5o/fnz5pfFCxY3WsPFBAhMjoBukC9LBT1fJqET2YShvBYnQIAAAQIECBAg0BkB3SBfVAp6vkxCJ7IJQ3ktToAAAQIECBAgQKAzArpBvqgU9HyZhE5kE4byWpwAAQIECBAgQIBAZwR0g3xRKej5MgmdyCYM5bU4AQIECBAgQIAAgc4I6Ab5olLQ82USOpFNGMprcQIECBAgQIAAAQKdEdAN8kWloOfLJHQimzCU1+IECBAgQIAAAQIEOiOgG+SLSkHPl0noRDZhKK/FCRAgQIAAAQIECHRGQDfIF5WCni+T0IlswlBeixMgQIAAAQIECBDojIBukC8qBT1fJqET2YShvBYnQIAAAQIECBAg0BkB3SBfVAp6vkxCJ7IJQ3ktToAAAQIECBAgQKAzArpBvqgU9HyZhE5kE4byWpwAAQIECJQt928p6zasqyVWLltZFu2/iAoBAgRSCugG+WJR0PNlEjqRTRjKa3ECBAgQIFDW3rC2rF6/upZYs3xNWXX0KioECBBIKaAb5ItFQc+XSehENmEor8UJECBAYMoFqtPzpectLZu2bqollixcUjau2OgUfcrfC49PIKuAbpAvGQU9XyahE9mEobwWJ0CAAIEpF9j19LxH4RR9yl8Kj08gsYBukC8cBT1fJqET2YShvBYnQIAAgSkW2P30vEfhFH2KXwqPTiC5gG6QLyAFPV8moRPZhKG8FidAgACBKRaY7fTcKfoUvxAenUAHBHSDfCEp6PkyCZ3IJgzltTgBAgQITKnAnk7PnaJP6QvhsQl0REA3yBeUgp4vk9CJbMJQXosTIECAwJQKzHV67hR9Sl8Kj02gAwK6Qb6QFPR8mYROZBOG8lqcAAECBKZQYG+n507Rp/Cl8MgEOiKgG+QLSkHPl0noRDZhKK/FCRAgQGAKBfo5PXeKPoUvhkcm0AEB3SBfSAp6vkxCJ7IJQ3ktToAAAQJTJtDv6blT9Cl7MTwugY4I6Ab5glLQ82USOpFNGMprcQIECBCYMoFBTs+dok/Zy+FxCXRAQDfIF5KCni+T0IlswlBeixMgQIDAFAkMenruFH2KXg6PSqAjArpBvqAU9HyZhE5kE4byWpwAAQIEpkhgmNNzp+hT9IJ4VAIdENAN8oWkoOfLJHQimzCU1+IECBAgMCUCw56eO0WfkhfEYxLoiIBukC8oBT1fJqET2YShvBYnQIAAgSkRaHJ67hR9Sl4Sj0mgAwK6Qb6QFPR8mYROZBOG8lqcAAECBKZEYPO2zWX7ju2Nnnb+vPll8YLFjdZwMQECBJoI6AZN9GKuVdBjXNOuahOmjcZgBAgQIECAAAECBMYqoBuMlbuvmynofTFNzodswsnJ0pMQIECAAAECBAjkE9ixo5RNm5rNtWRJKfPmNVujn6t1g36UxvsZBX283q3fzSZsPQIDECBAgAABAgQITLDAf/5nKY95TLMHvOeeUg46qNka/VytG/SjNN7PKOjj9W79bjZh6xEYgAABAgQIECBAYIIFFPQJDncMj6agjwE50y0U9ExpmIUAAQIECBAgQGDSBBT0SUt0vM+joI/Xu/W7KeitR2AAAgQIECBAgACBCRZQ0Cc43DE8moI+BuRMt1DQM6VhFgIECBAgQIAAgUkTUNAnLdHxPo+CPl7v1u+moLcegQEIECBAYEwCW+7fUtZtWFffbeWylWXR/ovGdGe3IUBgmgUU9GlOv/mzK+jNDTu1goLeqbgMS4AAAQINBNbesLasXr+6XmHN8jVl1dGrGqzmUgIECPQnoKD35+RTswso6FP2ZijoUxa4xyVAgMCUClSn50vPW1o2bf3lHyNesnBJ2bhio1P0KX0fPDaBcQoo6OPUnrx7KeiTl+mcT6SgT1ngHpcAAQJTKrDr6XmPwCn6lL4MHntqBXbsKGXTL/9vdEN/LVlSyrx5g12uoA/m5dMzBRT0KXsjFPQpC9zjEiBAYAoFdj897xE4RZ/Cl8EjT7VAW0W5rfsOE7ZuMIxa7DUKeqxvutVtwnSRGIgAAQIERiww2+l57xZO0UeMbTkCiQXaKspt3XeYKHSDYdRir1HQY33TrW4TpovEQAQIECAwQoE9nZ73buEUfYTYliKQXKCtotzWfYeJQzcYRi32GgU91jfd6jZhukgMRIAAAQIjFJjr9Lx3G6foIwS3FIHEAm0V5bbuO0wUusEwarHXKOixvulWtwnTRWIgAgQIEBiRwN5Oz3u3cYo+InDLEEgu0FZRbuu+w8ShGwyjFnuNgh7rm251mzBdJAYiQIAAgREJ9HN63ruVU/QRoVuGQGKBtopyW/cdJgrdYBi12GsU9FjfevVNmzaV97///eVTn/pU+cEPflAOPfTQ8vznP7+ce+655XGPe9xDJvja175W3vGOd5Trr7++PPDAA+Woo44qZ599djn66KMbT2sTNia0AAECBAgkFOj39Lw3ulP0hCEaicCIBdoqym3ddxg+3WAYtdhrFPRY3/KlL32pvOIVryjf/e53y5FHHlmX86985Svl29/+dnnUox5VbrzxxvL0pz/9wSluu+22cswxx5StW7eWZz3rWWXhwoVlw4YN9b9fdtll5aSTTmo0sU3YiM/FBAgQIJBUYJDT894jOEVPGqaxJlKgjb9J3lZRbuNZh31pdINh5eKuU9DjbMuOHTvKsmXLyre+9a3yj//4j+XEE0+s77Zz58769Pyss84qL3zhC8t111334BTHHXdc/b9feOGF5Ywzzqj/+1VXXVVe+tKXlkMOOaQu9vvss8/QU9uEQ9O5kAABAgSSCgx6et57DKfoSQM11kQKtFGW27hn18LTDfIlpqAHZ1J9e3v1P0996lNn3Kkq7095ylPqwv2Tn/ykPPKRjyzf/OY3688tX768XH311TM+/4Y3vKF89KMfrf979e/DftmEw8q5jgABAgSyCgxzet57FqfoWVM116QJtFGW27hn13LTDfIlpqC3mMmrXvWq8slPfrJ84QtfKL/5m79Z3v3ud5f3vve95YILLihvfOMbZ0x2+eWXl5NPPrmcfvrp5aKLLhp6aptwaDoXEiBAgEBCgWFPz3uP4hQ9YahGmkiBNspyG/fsWni6Qb7EFPQWM6m+/f3mm28u99xzTznooIPKqaeeWi699NJS/Rx69fPnu35t3ry5PPrRjy7Vt8Bfc801Q09tEw5N50ICBAgQSCjQ5PS89zhO0RMGa6SJE2ijLLdxz64FpxvkS0xBbymT+++/v/629l/5lV+pf7N79XXCCSeU9evXl+9///vl8Y9//IzJqp9bnz9/fjnssMPqb4Wf66u30Wb7zN13310OPvjgcuedd7b05G5LgAABAgRGJ7B52+ayfcf2RgvOnze/LF6wuNEaLiZAYG6BNspyG/fs2nugoOdLTEFvKZPzzjuvrFy5srztbW8rH/zgB+spDj/88PLVr361bNu2rTz84Q9/yGSPecxj6t/u/rOf/UxBbyk3tyVAgAABAgQIEBhcoI2y3MY9B5dp9woFvV3/2e6uoLeQSfVL4570pCeV//7v/65PspcsWVJPccQRR9R/gq0q4QsWLHjIZNW3wd933331L5Ub9ssmHFbOdQQIECBAgAABAsMKtFGW27jnsD5tXacbtCW/5/sq6GPOpPpW9d/5nd+pfzncmjVryqpVqx6coPozbNVvab/rrrvqb0Pf9av3Le5PfOITyze+8Y2hp7YJh6ZzIQECBAgQIECAwJACbZTlNu45JE9rl+kGrdHv8cYK+pgzqQr5Bz7wgfKyl72sfOpTn5rxN81PO+20cskll5Rbb721HHnkkTMmu/fee+uT9uOPP7587nOfG3pqm3BoOhcSIECAAAECBCZCYMeOUjZtavYo1TeAzpvX/xptlOU2nrN/kRyf1A1y5LDrFAr6GDOp/nzam970pvrb22+55ZbyqEc9asbdzznnnHLWWWeV888/v7zlLW+Z8W+XXXZZefnLX17OOOOMcuGFFw49tU04NJ0LCRAgQKCBQPXn0NZtWFevsHLZyrJo/0UNVnMpAQJNBNooy23cs4nRtFyrG+RLWkEfUyZV6V6xYkX9revXXnttWbp06UPuXP08evUt7Mcee+xD/pTa6173unLxxRfX11b/PuyXTTisnOsIECBAoInArn8OzZ81ayLpWgLNBdooy23cs7nU5K+gG+TLWEEfQybvec97ytlnn/1gOZ/rz6D1/tTaRz7ykXLmmWfW011xxRXllFNOKdV1d9xxR6OJbcJGfC4mQIAAgSEEqtPzpectLZu2/vJ7apcsXFI2rtjoFH0IS5cQGIVAG2W5jXuOwmrS19AN8iWsoAdn8uY3v7n89V//dX2XV7/61aX6Tew//elPy47qh2J2+br00kvr/+32228vL3jBC8qWLVvqn0M/4IADyk033VT/rPrll19eli9f3mhim7ARn4sJECBAYAiBXU/Pe5c7RR8C0iUERiTQRllu454j4proZXSDfPEq6MGZVMW6n6/qt7T3vr7+9a+Xt7/97eW6664rDzzwQDnqqKNK9fPpVXFv+mUTNhV0PQECBAgMIrD76XnvWqfogyj6LIHRCrRRltu452jVJnM13SBfrgp6vkxCJ7IJQ3ktToAAAQK7Ccx2et77iFN0rwuBdgTaKMtt3LMd3W7dVTfIl5eCni+T0IlswlBeixMgQIDALgJ7Oj3vfcQputdl2gXa+jNgbZTlNu457e9XP8+vG/SjNN7PKOjj9W79bjZh6xEYgAABAlMjMNfpuVP0qXkNPOgcAm2V1jbu29b/McILOLeAbpDvDVHQ82USOpFNGMprcQIECBD4H4G9nZ47RfeqECiljaJcubd1X5nnE9AN8mWioOfLJHQimzCU1+IECBAg8D8C/ZyeO0X3uky7QFtFua37TnveGZ9fN8iXioKeL5PQiWzCUF6LEyBAgEAppd/Tc6foXpdpF2irKLd132nPO+Pz6wb5UlHQ82USOpFNGMprcQIECBAopQxyeu4U3SszzQJtFeW27jvNWWd9dt0gXzIKer5MQieyCUN5LU6AAIGpFxj09Nwp+tS/MlMN0FZRbuu+Ux120ofXDfIFo6DnyyR0IpswlNfiBAgQmHqBYU7PnaJP/WsztQBtFeW27ju1QSd+cN0gXzgKer5MQieyCUN5LU6AAIGpFhj29Nwp+lS/Nmkevo0/A9ZWUW7rvmnCNsiDArpBvpdBQc+XSehENmEor8UJECAw1QJNTs+dok/1q5Pi4dsorW3cs8Ju674pgjbEDAHdIN8LoaDnyyR0IpswlNfiBAgQmGqBzds2l+07tjcymD9vflm8YHGjNVxMYBiBNkprG/esbNr4boFhMnFNvIBuEG886B0U9EHFOv55m7DjARqfAAECBAgQCBFooyy3cc8QPIt2VkA3yBedgp4vk9CJbMJQXosTIECgEwLVz4qv27CunnXlspVl0f6LOjG3IQlECrRRltu4Z6ShtbsnoBvky0xBz5dJ6EQ2YSivxQkQINAJgV1/VnzN8jVl1dGrOjG3IQlECrRRltu4Z6ShtbsnoBvky0xBz5dJ6EQ2YSivxQkQIJBeYPfftL5k4ZKyccVGp+jpkzNgtEAbZbmNe0Y7Wr9bArpBvrwU9HyZhE5kE4byWpwAAQLpBWb7TetO0dPHNnUDtvFLzNooy23cc+peJg88p4BukO8FUdDzZRI6kU0YymtxAgQIpBbY098pd4qeOrapHK6N4jot95zKF8pD71FAN8j3cijo+TIJncgmDOW1OAECBFILzPV3yp2ip45u6oablrLcxncKTN3L5IGdoHfsHVDQOxZY03EV9KaCridAgEA3BfZ0et57Gqfo3cx1UqeeloI+qfl5ru4I6Ab5slLQ82USOpFNGMprcQIECKQVmOv0vDe0U/S08U3dYAr61EXugVsS0A1agp/jtgp6vkxCJ7IJQ3ktToAAgZQCezs9d4qeMrapHkpBn+r4PfwYBXSDMWL3eSsFvU+oSfmYTTgpSXoOAgQI9C/Qz+m5U/T+Pafpk239jLSCPk1vmWdtU0A3aFN/9nsr6PkyCZ3IJgzltTgBAgTSCfR7eu4UPV10KQZqoyhXD97Gfdu4Z4qQDTHVArpBvvgV9HyZhE5kE4byWpwAAQLpBAY5PXeKni6+1gdqq7S2cd827tl6wAaYegHdIN8roKDnyyR0IpswlNfiBAgQSCUw6Om5U/RU8aUYpq3S2sZ927hnipANMdUCukG++BX0fJmETmQThvJanAABAqkEhjk9d4qeKsLWh2mrtLZx37Z+3r71kA0w1QK6Qb74FfR8mYROZBOG8lqcAAECaQSGPT13ip4mwhSDtFGUqwdv674p0A1BYIwCusEYsfu8lYLeJ9SkfMwmnJQkPQcBApMgUJXodRvW1Y+yctnKsmj/RSN7rCan570h/F30kcXR2YXaKspt3bezQRmcwJACusGQcIGXKeiBuBmXtgkzpmImAgSmVWDXEj3qMrx52+ayfcf2RrTz580vixcsbrSGi0cn0Ma3YLdVlNu67+jSshKBbgjoBvlyUtDzZRI6kU0YymtxAgQI9C2w+7egL1m4pGxcsXGkp+h9D+ODnRBoo7S2cc8qjLbu24kXwZAERiigG4wQc0RLKegjguzKMjZhV5IyJwECky4w27egj/oUfdINp+352iitbdxTQZ+2N9vztimgG7SpP/u9FfR8mYROZBOG8lqcAAECfQns6Re4OUXvi29qP9RGWW7jngr61L7iHrwFAd2gBfS93FJBz5dJ6EQ2YSivxQkQINCXwFy/wM0pel+EU/mhNspyG/eswm3j5+2n8qXy0FMvoBvkewUU9HyZhE5kE4byWpwAAQJ7Fdjbnz9zir5Xwqn9QBtluY17Tm3AHpxACwK6QQvoTtDzobc5kU3Ypr57EyBAoJR+/vyZU/T8b0obJ7xtlOU27pk/fRMSmBwB3SBflk7Q82USOpFNGMprcQIECMwpsLfT897FTtHzv0htFNdpuWf+9E1IYHIEdIN8WSro+TIJncgmDOW1OAECBOYU6Of0vLeAU/TcL9O0lOU2njN38qYjMFkCukG+PBX0fJmETmQThvJanAABAnsU6Pf03Cl6N16iNorrtNyzG2+AKQlMhoBukC9HBT1fJqET2YShvBYnQIDAHgUGOT13ip7/RZqWstzGz9rnT9+EBCZHQDfIl6WCni+T0IlswlBeixMg0GGB6oR73YZ19RM6F9NnAAAgAElEQVSsXLayLNp/0cieZtDTc6fo/dO3VSCnpaD3n4RPEiDQRQHdIF9qCnq+TEInsglDeS1OgECHBXY94R71z38Pc3ruFL2/l6mNolxN1sZ927hnfyn4FAECXRXQDfIlp6DnyyR0IpswlNfiBAh0VGD3E+5R/hb1YU/PnaL39zK1VVrbuG8b9+wvBZ8iQKCrArpBvuQU9HyZhE5kE4byWpwAgY4KzHbCPapT9Can507R9/5CtVVa27hvG/fcewI+QYBAlwV0g3zpKej5MgmdyCYM5bU4AQIdFNjTCfeoTtE3b9tctu/Y3khm/rz5ZfGCxY3WmNSL2yqtbdy3jXtO6nvjuQgQ+KWAbpDvTVDQ82USOpFNGMprcQIEOigw1wn3qE7RO8gy1Mht/MK2tkprG/dt455DvQguIkCgMwK6Qb6oFPR8mYROZBOG8lqcAIGOCezt58NHdYreMZahx22jQLZxzwqojfu28X8AGfplcCEBAp0Q0A3yxaSg58skdCKbMJTX4gQIdEygn58Pd4ref6htlNY27tlWQe8/CZ8kQIBAfwK6QX9O4/yUgj5O7QT3sgkThGAEAgRSCOzt9Lw3pFP0/uNqoyy3cU8Fvf93wicJEMgtoBvky0dBz5dJ6EQ2YSivxQkQ6JBAP6fnvcdxit5fsG2U5TbuqaD39z74FAEC+QV0g3wZKej5MgmdyCYM5bU4AQIdEej39LzLp+ht/LxyG2W5jXsq6B3Z6MYkQGCvArrBXonG/gEFfezk7d7QJmzX390JENi7QFWe121YV39w5bKVZdH+i/Z+0YCfGOT0vLd0107R2yiu03JPBX3ADefjBAikFdAN8kWjoOfLJHQimzCU1+IECIxAYNfyHFGKBz097z1S134WfVrKchvPWb0TbXyHwgi2lyUIECAwQ0A3yPdCKOj5MgmdyCYM5bU4AQINBXYvzxGleJjT8y6eordRXKflng1fc5cTIEAgjYBukCaKBwdR0PNlEjqRTRjKa3ECBBoKzFaeR3mKPuzpeZNT9LZOWqelLLfxnA1fc5cTIEAgjYBukCYKBT1fFOOZyCYcj7O7ECAwuMCeyvMoT9GbnJ4Pe4reVoFs477Tcs/B325XECBAIKeAbpAvFyfo+TIJncgmDOW1OAECDQTmKs+jOkXfvG1z2b5je4MpS5k/b35ZvGBx32u0UVqr4dq477Tcs+/wfZAAAQLJBXSDfAEp6PkyCZ3IJgzltTgBAkMK7O1bz0d5ij7kiENf1kZpnaaC3taPEAz9QriQAAECiQR0g0Rh/M8oCnq+TEInsglDeS1OgMCQAv186/koTtHbKHMK+mAvxT33lHLQQYNd49MECBAgMJyAbjCcW+RVCnqkbsK1bcKEoRiJQGKBcfxN8r2dnvd4RnGK3kZZbuOelVkb923jnom3j9EIECCQXkA3yBeRgp4vk9CJbMJQXosTmDiB6L9JXoH1c3reg216it5GgWzjngr6xG1FD0SAAIEQAd0ghLXRogp6I77uXWwTdi8zExNoS2Acf5O839PzUZ2it1GW27ingt7WrnFfAgQI7Cawc2cp9933y/951KPS8egG6SIpCnq+TEInsglDeS1OYKIEIv8mee9nwT9829pyzobVA7m9a9ma8pYjV5UlS0qZN2+gS6fq277b+D8MtPEz/oO9AT5NgACBUsrPf17K3XeX8otflLJt2y//397/zPa/H3xwKaeeOpPuZz8r5fd+b+b1u1676/93deX++/+ypCf70g2SBVKKgp4vktiJbMJYX6sTmBSB6L9JXpfHg7eUsmJpKQdsGozt50tKOW9juefuRQP/MrE2Smsb96xA27rvYGH6NAECUyVw//1zF+LdC+7JJ5fyq786k+j//t9Srrxy78W6V77/z/8pZdWqmWt8+tOl/NZv9U9//PGlfO5zMz+/ZUspj3hE/2tUn3zggVL23Xewa4I/rRsEAw+xvBP0IdC6fIlN2OX0zE5gfALRf5O8Lo+/vbaUEwY7PX9Q4Oo15Z5/XqWgz/FKKOjj2y/uRKAzAtW3W1clca5T4wMOKOU5z5n5SFWx/uAH+y/X1Unxl79cyj77zFynWveLX+yfqyrFVTne9asq2x/4QP9rvPOdpZx77szPX3VVKS9+cf9rPP/5pdx448zPV47z5/e/RvXJ6uR+4cLBrgn+tG4QDDzE8gr6EGhdvsQm7HJ6Zp92gajfqL77tyX/fPuW8tyPLy33/mL2k+1fefiScssfbCwHzF/0YCSDfrv5xh9sKb9+3hCn5707/nxJuXPFxrL08f9/hn7ejzZKaxv3rCzaum8/OfgMgakW2FNJfvzjS6nK8a5ft91Wype+NPe3X+/67dmvetVDvxX7X/+1lP/9v/9/ua7+f/pzff2v/1XK5z8/8xNV4X74wweLrbqm+rbuXb+qtW+4of91PvvZUk46aebn3/3uUt773v7X+NM/LeUv/3Lm56+/vpRjj53536pZq2dcsOCX/2/vf6r//fD/196dAEtR3Xsc/xtARFCh1HtFBURZBFkENeACIrIoimv0pSQJIOACBpdSSeKDgDEE1JgQVBBkCZJEU08MgiyCAiIgLqhxCxhAQcO+aJBdePXve+cy3TNzb/fM9PTp7m9XWS8Pe06f8zndI785SzcTGT8+9Zr33y9Star9XOdnk8tp2ZIRdPc9F9szCegx63oCesw6nOZGSsCvHdVTgtzFLka2540UWXJkyqDXd1cPmet97bmzM3Ut+sNdHdMWK+jxIEJrENckoEfq0acxfgnoCOiBAyWBLPnQAPvmm5nXFqdbt/z006nB69ZbRd55J3056UKyjup27myvi47+Dh/uXkBHl0eOtJ+vo9CXX+6+DB3l1nonH/qjgk7N1v/r9vjmG5Hjj7ef3amTiP5gkOnQEenkgKyhuEsX+9kvviii09ydQTpTuG7cWKR5c3sZ+uPBtm32IO51UxO3DoafRzYwr4MI6Ob1ia814iH0lZfCEfBNwM8d1W0B8miX68JL14HL/pIRbK8BfdX6HdK4yYGcvFZ+VkUa1anlqYwgwnIQ11QUNmzzdGtwsgkCO3eKbNnibuMuDckXXCDSsaO95jqtevDg1DLSbd71/fcibdqIvPWWvQz988qVvYnoemTn6LdOzV640H0506eLXHON/Xydmq3tcXsMHCgyapT9bJ2affHFbksQ0VHeDz5IPb99+5Ip68nBONP/1rDcr1/qjx+ffFLyg0W6z+lItGHrs92jhfdMsoF5fUdAN69PfK0RD6GvvBSOQM4CmUJVut3OE7uZOy/qdbq5LUC6GT1PXDBpFN1rQA8qtAZx3SCumfONSAHxEtBAmm4H60w7Ut9yS2qAHT1aRMNXeTthJ0/Fnjo1dWTU69Tl++4rWRedfOjUbA2Sbo9MYVSnO+vouttj61aRE0+0n61Ts+fMcVuCyAsviNx8s/18HZn/3e8yh2LnqLG2/YYb7GXoSLGOWjvPzRSSvf444b6FnGmgANnAvE4hoJvXJ77WiIfQV14KRyBngbRhLtOotmMUO3HxrMOy29HzxIWSrp/1NXMQ83pNvVQQYTmIa+bAykeDEtBf58oLycXFIg0b2mv31Vcif/2r+3B95pkif/ubvQydsqyBrKJ1ycmf0pFu5/ucdWr2/Pnu9XSK8o032s8fMULkl790X0b//iJPPWU/X6dm//CH7svQ6c//+lfq+To1e/fu1GCso7wabJ3Tq8eOFanlmNEzbVrJq7zcBGM9R39d9brO231LOROBtAJkA/NuDAK6eX3ia414CH3lpfAICZQ3PVg3UXvmn3+0Wnt7i3tsm6UlE3gdyc4YIMsb1XasBdcyvAbXsgDpZfQ80dDS62d9zRzuGa/XJKDngB2Xj6YLyWeckTrtdtEikXXryn93cvI65UGDRNq2tSvqiLNOX06cV9Fo7c9/LvKnP9nLWLZM5KKL3PdO06Ylo9zOQ6dmaxh1e2zcKKI/GCQf3buLzJzptgQRHUHv0cN+/h//KHLvvfY/03XBiTCcHIo1KGvAdwb6r78WefTRzJt9JW/Ypf9bg/i556bWW9enM5Lsvj85M7QCZAPzuo6Abl6f+FojHkJfeSk8QgLljnomB9k0ATnBkJcAWdGodppRdK/XDeKd5EGNKgdxXdaCe/xiUDD9xxmOdI2v292sdWq2TjfWDbach04B/vbb9Ouc9VVSzkPXROuvbcmHvpt59mz3DXv++ZJdtJMPnZqtO0C7PXQ977hx9rN1h+/Wrd2WIKIj6KtXp56vVtu3Zy4nse44EZB1zfbpp9vP143J9PVZmTbqcgZj/cGiXj17GbqpmPZN8rmEZPf9y5kIZCFANsgCzeePENB9BjateB5C03qE+pgqkDHIOQNzhmnm2i6vQVk/E8SO6kG8kzyIoJzWN4sbMJt+zeIy5nxE169qcEpeP5xuF+vEeuWrrhJp0sRe/xkzRCZNqngqtparuyvfeaeIrr1NPt59t2RTMLeHTgdftSr1bJ2arSHQ7aFTlJ1hVNf4vvSS2xJEJk8W6dnTfr5Ozb7rLvdl/OQnIs89Zz9/zZqSNcvlvdYpOezqDw0a9J2HjsTrSHWmqdgakp3vs3Zfc85EAAGDBcgG5nUOAd28PvG1RjyEvvJSuE8CQYxAZgyQ6aaBZxhFzybIBbGjehDvJCegu3hYdG2whlU3m3fphlY6xdh56AiyrhdODteZNv7SP9edm085xV6K7iqtAdvtoSFSw2TyoVOz777bbQkivXuLTJxoP//jj1NflVReiXXqlExDdx46NVtvQLeHhnzn2u/bby+Zzp0pGDtHi3VTtQsvtF9Ry12xwn0Z+vopQrLbXuM8BBBwKUA2cAlVwNMI6AXENuFSPIQm9EK462BUWFZKHdFuW7IeXN66RxKv/XIqew3LQWzWpnUOYkf1IN5JHuqA/ubnUlT9u5JXBemUYedaXA25+t7h8oJwcujWnZ6dr1HSV0Xp7tJuj/r1RXQ01XnoiKmOgLs9tAwtK/nQqdl//7vbEkT0vcV9+9rP16nZGmrdHj/+cepmZjo1u0GDkhKcATjdyG9RUWrI188++aSITmV3U4aec+qpIhqOORBAAIEICpANzOtUArp5feJrjXgIfeWNReFBBKsg1oOnvabPm7XpDVR23YrWnjvvthx2VA/ineS+3Ec6ovnf/9qDsWP0+dCefbL1myol5+hGUs61xQ8+WLK2ODHVet/e1MwrW+UHcrjkz3Xadq9e9nN0avaAAe6/D9JNXV65UuTss92XUbu2yH/+k3q+Ts3WTbPcHrqBmG4klnzo1OwpU1JLSB49Tg67umnXTTfZz9f3MOtu45l2wHa+7knb42y//jqowVrLYCTZbY9yHgIIIFCuANnAvBuEgG5en/haIx5Cf3iDGFUO4pq2AJmOspCj2Xp9H9eDpwTIigJzHjZrs/mGbUf1aUukqNp/K56OraPCPXr487oznZqtUyXcHhqCGzWyn61h+S9/cVuCyJgxInfcYT9fp2b36eO+DN2JWl85lXx8+aWI7h5e0aFhVcOxtj3dq6K0Hjt2pL4SSgNxurCs68dr1rRfdcOGkn517qBNSK6od/j3CCCAgPECZAPzuoiAbl6f+FqjQj6EQQXIIK7ry2hgBXdCudf0KShXGNB92t08iPXgQWzWVuZbZ5fI3fVFqm/19n1Q+iPBpnGLpaiqY1MvHQV1vqNXN6latEg27zxaiudN9XYtx9mbpEiKZEvFZeh06eef9yega6DVYOv20B3BW7Swn61TsydMcFuCyB/+IHLPPfbzX3mlZPdw56hwpvXK55wjopuOJR8aiJcsKb8MDdi6sRcHAggggAACWQoUMhtkWcXYfYyAHrMuL+RDaGSA9Cm4BtHWIKZ9lxvQCzmarRXJNKKdYVf1nNagVzR6nvgecVx70yvvSlG38+3fMroeWKdWO3fBLl2vvPnbY6S4SjuRzoOy+3aaN1I2LXk8NSzrBlsaBJMPnZr95z/LZjlZisXDpllpauY6oF97rcg//uFPQNcdvnVTMLfB+Be/EKlb194anYqt67CTy0i3Vjmx5pmQnN19yqcQQAABBIwQKGQ2MKLBIagEAd3ATlqyZIkMHTpUli9fLpUrV5Z27drJ8OHD5RznX66zqHshH0LjAqR6FXqEN4hr+hiUyw3oPu5unpf14P+3WIq+WpExGDsD8+aeD0hx39Jdsb1MN0/a0X1Tt95S9Mok+5Oqr2xyhsKkM9YefZKcqZtdex09T/qRYM0okfr7HaPv+oqq886z10WnZj/zTP4CepWdFW+8pTtZ//rX1muutyaquHt3ySu1EkE4MW07+f8mpmQn/uyMM6zl4wwgZ/EfAj6CAAIIIIBAqUAhswHo7gQI6O6cCnbW7NmzpXvpq3LatGkje/fulffff1+OPfZYWbx4sbRq1SqnuhTyITTmPdIJMR+DaxBtDWLad8aA7nU0+39HS1GlbanrlfVdu2mmF2++5AYpXjLtyL1f0Yh2uvXgPe6Tor/8wfXzs3no01I89M7MI/WZSkrerO3yW6Ro/l/tZ27ZIqK7S2c4hlxcXX7T+TvX9Ux34uCFteThTyrbX9+kr75y7gqum3YtXiybD50kxeN+k9M1N/3neymqXSmnMvgwAggggAACCBRWoJDZoLAtC+/VCOgG9d3hw4flrLPOknXr1snMmTPliiuusGo3YcIE6du3r3To0EEWLFiQU40L+RAaFSBVrdAjvEFc02tQvv8xKaq8XURf89S+vf3eeu01kYcfTgnRm3fXkOJtn9rP9bq7eab1ytWri+zalXKPb250iRR//uaRP3czou14N/mmW38pRRNHuH5+Nv/iCSkecW/6+6aiUkqvvenKXlI0a7L9bB0tvv76jCPNqw4eI43H3FnRFcr99ys/qyKN6tRyXUYQeyi4rhwnIoAAAggggIBvAoXMBr41ImIFE9AN6tBXX31VunbtaoXx8foe2aSjc+fOMn/+fFm1apU0bNgw61oX8iE04j3SCSmvwXVTuYOcqQFyc+qrkLNeI62vKFq79kgwdq5VLv3/raD8neO9x9kG5ZEjRfT1UsmH7irtfFWSvgbMuV45m9HsTAFd5ysfPJjyCqXNLTpJ8UfzS2pX0fUSbXCuB9dR+3+Mq3gKduna482tukrxzc1z26xtfY3yBsvTPsdBhOUgNlbM+kuMDyKAAAIIIIBA3gQKmQ3yVumIF0RAN6iDe/bsKVOmTBGd5p4YPU9Ub8yYMdK/f38ZNmyYDBkyJOtaF/IhzMu6YS9BWVPGvn2yed1eKT7bMXroNbj+z0ApOmpL5ldG6TrayUdGRvPaVp2G/M9/VtjHeQ3KQ4da64Jth+5EffXVqT9GOAN6NqPZLbtI0XF70m/mpWuRK9mnSm+ePEuKe3crqYub6yVqnbwe3Mu9lHgf+Q2P5rZZ27QHQxHQK7zZOAEBBBBAAAEEIilQyGwQSUAfGkVA9wE12yLbt29vrTPfsWOH1HS8h1bXobdu3Vp69eolkyY5Np3ycMFCPoR5eY/09XdIke4unRhFHj1apFkze4t15HfUKJH9+60/z2twzWR72WUir79e9m/z0tZEgGzTRuTttyvs1ZR2ugmuzmnfP+wuRcfvFdF3P+truJKPzz8XmTo1ZcR5874TpPiO60vOzHY0O5uwXOzheol2JK8H93jNtV/vkjNHZfGqs6Rrr7l7rdQ/rUaFfZl8QhAj6J4qyMkIIIAAAgggEBmBQmaDyKD53BACus/AXorXqetffPGFHDhwIOVj69evl7p160qXLl1k7ty55RabeNDSnaTl1KlTR9boa4R8PvLyHmnnVGhdg9+hg73mGtAfe+xIWM7HCG9F73TWEXR9HVPpkZe2JgLkb39b8i7nTO9MLv1zKygnRpULFJS1uba2uvlRIIGU62i2BnQv13Nc1+tr1obMfVR+81aWrzorvfbgtiPl4a6OpQMVPHdMN/f5i4niEUAAAQQQQKBMgIBu3s1AQDeoT2rUqCH6z8aNG1NqtWfPHmsn92bNmslHH30UvoCebYB0BuXZs0VKN88rQ9Cp2bqZWSIsJwf0bK97Y38pqnUg83rlU08V0fc5pwvo2V7T4whvEEHZFtDdtjOBlMNottXWOrsKuh581fod0rhJ6o9lXr4yvG7W5qVszkUAAQQQQAABBHIVIKDnKpj/zxPQ82+adYnHHXecFcI36VCf49i9e7dUr15dWrRoIR9++GHW1yjkQ5iXAHnLvUeCsm7epVOxGze2t3/lSpHVq8vWM1ubp3VqXnKOlxHXfIzwBnHNAgZlW0D3YpvoscTu5tn8GFHg9eCMZGf9NcMHEUAAAQQQQCAkAoXMBiEhCbyaBPTAu+BIBRo1amRNPdcp7kcddZStZvrqtXr16lm7vM+ZMyfrWhfyISwL6EEFyAJeN4i2ll2zgEG5LKAXeDQ7qPXgWT9ofBABBBBAAAEEEAiBQCGzQQg4jKgiAd2IbiipxKWXXipvvPGGbN++XWrVsu9C/t5778n5558vvXv3lokTJ2Zd60I+hIEGyAKvVw6irUFM+y4L6AUezQ5qPXjWDxofRAABBBBAAAEEQiBQyGwQAg4jqkhAN6IbSirRp08fK3zPmDFDrna83mr06NEycOBAeeSRR+Shhx7KutaFfAgDDZAFHuENoq3WNQsclPXGC2I0e9t3O2TjltzWg59ychU5sbrj9XtZP0l8EAEEEEAAAQQQCL9AIbNB+LUK0wICemGcXV1lwYIF0rFjx7SvUtM/X7hwoaxevVrq16/vqrx0JxXyIQwqQAZx3SCuGURQ1ntq5JuPyi9ey2138xGXj5RBl3jb3Tzrm54PIoAAAggggAACCKQVKGQ2oAvcCRDQ3TkV5KzDhw9L48aNrXXoL7/8snTr1s267vjx4+W2226TTp06ybx583KqSyEfwqACZBDXDeKaQU373rFnhxw4lNtodpUfVJFa1RjNzulh5sMIIIAAAggggECOAoXMBjlWNTYfJ6Ab1tXz58+XK6+8Ug4dOiRt27aVffv2yYoVK6wd3JcuXSrNm5fuTp5lvQv5EAYVIIO4bhCjykz7zvIh4GMIIIAAAggggAAClkAhswHk7gQI6O6cCnrWsmXLZPDgwbJ8+XKpVKmStXnciBEjpEmTJjnXo5APYVABMojrMqqc861JAQgggAACCCCAAAIFFihkNihw00J7OQJ6aLsuu4rzEGbnxqcQQAABBBBAAAEEEIiaANnAvB4loJvXJ77WiIfQV14KRwABBBBAAAEEEEAgNAJkA/O6ioBuXp/4WiMeQl95KRwBBBBAAAEEEEAAgdAIkA3M6yoCunl94muNeAh95aVwBBBAAAEEEEAAAQRCI0A2MK+rCOjm9YmvNeIh9JWXwhFAAAEEEEAAAQQQCI0A2cC8riKgm9cnvtaIh9BXXgpHAAEEEEAAAQQQQCA0AmQD87qKgG5en/haIx5CX3kpHAEEEEAAAQQQQACB0AiQDczrKgK6eX3ia414CH3lpXAEEEAAAQQQQAABBEIjQDYwr6sI6Ob1ia814iH0lZfCEUAAAQQQQAABBBAIjQDZwLyuIqCb1ye+1oiH0FdeCkcAAQQQQAABBBBAIDQCZAPzuoqAbl6f+FojHkJfeSkcAQQQQAABBBBAAIHQCJANzOsqArp5feJrjXgIfeWlcAQQQAABBBBAAAEEQiNANjCvqwjo5vWJrzXiIfSVl8IRQAABBBBAAAEEEAiNANnAvK4ioJvXJ77WiIfQV14KRwABBBBAAAEEEEAgNAJkA/O6ioBuXp/4WiMeQl95KRwBBBBAAAEEEEAAgdAIkA3M6yoCunl94muNeAh95aVwBBBAAAEEEEAAAQRCI0A2MK+rCOjm9YmvNeIh9JWXwhFAAAEEEEAAAQQQCI0A2cC8riKgm9cnvtaoWrVqcvDgQalTp46v16FwBBBAAAEEEEAAAQQQMFtg/fr1UrlyZdmzZ4/ZFY1R7QjoMepsbWrNmjVl3759Urt27cBbrl8IevBjQeBdEfoKcC+FvguNaQD3kjFdEfqKcC+FvguNaAD3kRHdEIlKZLqXNmzYIFWrVpWdO3dGop1RaAQBPQq9GNI2MKUmpB1nYLW5lwzslJBWiXsppB1nYLW5lwzslBBWifsohJ1maJW5lwztmDTVIqCHp68iV1O+KCLXpYE1iHspMPrIXZh7KXJdGliDuJcCo4/UhbmPItWdgTaGeylQfk8XJ6B74uLkfArwRZFPzXiXxb0U7/7PZ+u5l/KpGe+yuJfi3f/5aj33Ub4kKYd7KTz3AAE9PH0VuZryRRG5Lg2sQdxLgdFH7sLcS5Hr0sAaxL0UGH2kLsx9FKnuDLQx3EuB8nu6OAHdExcn51OAL4p8asa7LO6lePd/PlvPvZRPzXiXxb0U7/7PV+u5j/IlSTncS+G5Bwjo4emryNWUL4rIdWlgDeJeCow+chfmXopclwbWIO6lwOgjdWHuo0h1Z6CN4V4KlN/TxQnonrg4OZ8CfFHkUzPeZXEvxbv/89l67qV8asa7LO6lePd/vlrPfZQvScrhXgrPPUBAD09fUVMEEEAAAQQQQAABBBBAAIEICxDQI9y5NA0BBBBAAAEEEEAAAQQQQCA8AgT08PQVNUUAAQQQQAABBBBAAAEEEIiwAAE9wp1L0xBAAAEEEEAAAQQQQAABBMIjQEAPT19RUwQQQAABBBBAAAEEEEAAgQgLENAj3Lk0DQEEEEAAAQQQQAABBBBAIDwCBPTw9BU1RQABBBBAAAEEEEAAAQQQiLAAAT3CnUvTEEAAAQQQQAABBBBAAAEEwiNAQA9PX0WmpkuWLJGhQ4fK8uXLpXLlytKuXTsZPny4nHPOOZFpIw0pnMBXX30ls2bNklGjRsmnn34qTz75pAwYMKBwFeBKkRDYunWrjBgxQqZPny5ff/211KtXTy688EJ55JFH5C+64WwAAA18SURBVNRTT41EG2mE/wI7duyw/num99H69eulqKhIWrZsKYMGDZKLL77Y/wpwhcgKTJkyRXr27Gm174svvrC+ozgQcCNw4403yrRp0zKe+u9//1vOOussN0VxToEECOgFguYyJQKzZ8+W7t27W/+7TZs2snfvXnn//ffl2GOPlcWLF0urVq2gQsC1wLPPPiv9+vWznU9Ad83HiaUCH374oVx33XXWX3r1O0j/4vvxxx+L/qXlhBNOkKVLl0rTpk3xQqBcgYULF8pPf/pT0R8NTzvtNDnvvPOskK7/jdNj6tSp0qNHDxQR8CywZcsWadKkiWzbto2A7lmPD3Ts2FEWLFggGtSrVauWAvL4449LcXExUAYJENAN6oyoV+Xw4cPWL3Tr1q2TmTNnyhVXXGE1ecKECdK3b1/p0KGD9QXCgYBbAR0xX7ZsmXX6xIkTrSBFQHerx3kqcOjQIWnbtq18/vnn8sILL0iXLl0sGP2+0tHzIUOGSPv27WXRokWAIVCugP4Afdttt8n48ePL/vumH5g0aZLceuutUr16ddm+fbscffTRSCLgSUB/2NER0Dp16ljfVYyge+KL/cn6w/MHH3wge/bskWOOOSb2HmEAIKCHoZciUsdXX31VunbtaoVx/QtM8tG5c2eZP3++rFq1Sho2bBiRFtOMQgr07t1bJk+eTEAvJHpErqXT2/Wfs88+29YiDe+NGze2RtK/+eYbOf744yPSYprhl8CBAwekSpUqKcU3aNBAVq9eLe+8846cf/75fl2eciMooD/8dOvWTe6//3559913RWdqENAj2NE+NumMM84QXX6j/x3jCIcAAT0c/RSJWuraKV1Dpf+xSYyeJxo2ZswY6d+/vwwbNswaseJAwKsAAd2rGOe7EfjRj34kL774ovUXY52yzIFANgK6ROKzzz7jPsoGL8af2bVrl7U/z3fffWcNYOgUZQJ6jG+ILJuuS7V0CrveQxzhECCgh6OfIlFLnSaq68z1V7yaNWva2qRr9Fq3bi29evWypgNyIOBVgIDuVYzz3Qjo9Hfd0HLTpk3Whl8cCHgV0GU4l1xyiZxyyimyZs0aqVq1qtciOD+mAvfcc4+1AWpi/4LLLruMgB7TeyHbZn///ffWrB7d9PTBBx+0lmsdPHjQ2tPgpptukpNOOinbovmcjwIEdB9xKdouoFPXdVqWTgF0HrqRTt26da31n3PnzoUOAc8CBHTPZHygAoH9+/db09pPPPFEa2d3DgTcCuzcudPaIO7ll1+WJ554Qnbv3m2tIb7yyivdFsF5MRfQHwYvuugi657RfXv0IKDH/KbIovm6sWCmEF6rVi0ZO3as3HzzzVmUzEf8FCCg+6lL2TaBGjVqiP6zcePGFBnduEJ3cm/WrJl89NFHyCHgWYCA7pmMD1QgoCNXOoJ13333ye9//3u8EHAl8OWXX4qu+Uwc5557rjUCyqtEXfFxkog1kKGzCnVT3U8++UROP/10Ajp3RlYC+vdrXWKqf8e+++67pVGjRtZg2ciRI+W5556z/lz/3n3mmWdmVT4f8keAgO6PK6WmETjuuOOsLwKdKuo8dHRBd7ht0aKF6CuPOBDwKkBA9yrG+eUJ6KZxOutHpwfqtGSmAXK/uBXQe0e/jzZs2CArV64UXUesG8PpG0v0v3EcCFQkoG+QGDx4sDzzzDPWmwESByPoFcnx770IXHXVVTJr1ixrD6innnrKy0c512cBArrPwBR/REB/tdO/6Oovw0cddZSNRn8l1ncP6y7vc+bMgQ0BzwIEdM9kfCCDgL5iTdfm6eZwOsqg6/Y4EMhGQMO5vrVEd+DWH6F1NFRflcWBQCYB/VGnZcuW1vT21157zfb3JQI6900+BWbMmCHXXHMNrxLNJ2qeyiKg5wmSYioWuPTSS+WNN96w3gOr616Sj/fee88aYdCQpe+z5kDAqwAB3asY52cS0ED+2GOPSffu3WX69OkpPygih4BXgQceeEAef/xxGThwoLXpFwcCmQRuv/12GTdunCsg3dFd/27FgUA2AvqDoS4t1QEynfbOYY4AAd2cvoh8Tfr06WOFb/3F7uqrr7a1d/To0dZfXHRa10MPPRR5CxqYfwECev5N41hi4pWPOr1d31mtr6fhQCBXAd0s7tprr7U2+Xr99ddzLY7PR1hA9yvQDeLSHS+99JK1YeXPfvYzawNLXVPcoEGDCGvQND8FdFNmfe0xGzT7qZxd2QT07Nz4VBYCCxYskI4dO6Z9lZr+uf4SvHr1aqlfv34WpfORuAsQ0ON+B+Tefv2hUP/Cq1OQ9fuI76LcTeNUgm4Op28jcS7hUgPdZFCnufft29ea8s6BQDYCTHHPRi3en9ElE40bN06LoPsb6PfRoEGDZMSIEfGGMqz1BHTDOiTK1dF1nfoloevQdTShW7duVnP1y0G/JDp16iTz5s2LMgFt81GAgO4jbgyKHjp0qAwbNqwsnLOjbQw6PY9N1FeqtWrVStq0aSPPPvus1K5du6x0XcKlI1S6vEtHQK+77ro8Xpmi4iRAQI9Tb+fe1rVr14q+RULvG/279sknn1xWqG5aqX/31lliOtU9+Tsr9ytTQq4CBPRcBfm8J4H58+db7/Q8dOiQtG3bVvbt2ycrVqywNs9ZunSpNG/e3FN5nBxfAd0p+d577y0D0PtHf/y54IILyn4tbteunW0H3Phq0fLyBAYMGCBPP/20dYq+D7aoqEi+/fZb63sq+dBX0nAgkE5g//790q9fP5kyZYpUrlzZCur6F14N7m+//bboD9R33XWX6CwNDgSyFSCgZysXz8/p99KvfvUreeKJJ6zvJf17t4Z0DeQ6sq5vVtIlFddff308gQxuNQHd4M6JatWWLVtmvT5E11hVqlTJ2uBEp9Y0adIkqk2mXT4ION81nO4SvXr1kkmTJvlwdYqMkkC6Kcnp2qchiwOB8gR0fbmOVOl/5zZu3Gj92NO0aVPrx0R9SwkHArkIENBz0YvvZxctWiRjx461vpf0Vce6FEd/RNRZYyzlMvO+IKCb2S/UCgEEEEAAAQQQQAABBBBAIGYCBPSYdTjNRQABBBBAAAEEEEAAAQQQMFOAgG5mv1ArBBBAAAEEEEAAAQQQQACBmAkQ0GPW4TQXAQQQQAABBBBAAAEEEEDATAECupn9Qq0QQAABBBBAAAEEEEAAAQRiJkBAj1mH01wEEEAAAQQQQAABBBBAAAEzBQjoZvYLtUIAAQQQQAABBBBAAAEEEIiZAAE9Zh1OcxFAAAEEEEAAAQQQQAABBMwUIKCb2S/UCgEEEEAAAQQQQAABBBBAIGYCBPSYdTjNRQABBBBAAAEEEEAAAQQQMFOAgG5mv1ArBBBAAAEEEEAAAQQQQACBmAkQ0GPW4TQXAQQQQAABBBBAAAEEEEDATAECupn9Qq0QQAABBBBAAAEEEEAAAQRiJkBAj1mH01wEEEAAAQQQQAABBBBAAAEzBQjoZvYLtUIAAQQQQAABBBBAAAEEEIiZAAE9Zh1OcxFAAAEEEEAAAQQQQAABBMwUIKCb2S/UCgEEEEAAAQQQQAABBBBAIGYCBPSYdTjNRQABBBBAAAEEEEAAAQQQMFOAgG5mv1ArBBBAAAEEEEAAAQQQQACBmAkQ0GPW4TQXAQQQQAABBBBAAAEEEEDATAECupn9Qq0QQAABBBBAAAEEEEAAAQRiJkBAj1mH01wEEEAAAQQQQAABBBBAAAEzBQjoZvYLtUIAAQQQQAABBBBAAAEEEIiZAAE9Zh1OcxFAAAEEEEAAAQQQQAABBMwUIKCb2S/UCgEEEEAAAQQQQAABBBBAIGYCBPSYdTjNRQABBBBAAAEEEEAAAQQQMFOAgG5mv1ArBBBAAAEEEEAAAQQQQACBmAkQ0GPW4TQXAQQQQAABBBBAAAEEEEDATAECupn9Qq0QQAABBBBAAAEEEEAAAQRiJkBAj1mH01wEEEAAAQQQQAABBBBAAAEzBQjoZvYLtUIAAQQQQAABBBBAAAEEEIiZAAE9Zh1OcxFAAAEEEEAAAQQQQAABBMwUIKCb2S/UCgEEEEAAAQQQQAABBBBAIGYCBPSYdTjNRQABBBBAAAEEEEAAAQQQMFOAgG5mv1ArBBBAAAEEEEAAAQQQQACBmAkQ0GPW4TQXAQQQQAABBBBAAAEEEEDATAECupn9Qq0QQAABBBBAAAEEEEAAAQRiJkBAj1mH01wEEEAAAQQQQAABBBBAAAEzBQjoZvYLtUIAAQQQQAABBBBAAAEEEIiZAAE9Zh1OcxFAAAEEEEAAAQQQQAABBMwUIKCb2S/UCgEEEEAAAQQQQAABBBBAIGYCBPSYdTjNRQABBBBAAAEEEEAAAQQQMFOAgG5mv1ArBBBAAAEEEEAAAQQQQACBmAkQ0GPW4TQXAQQQQAABBBBAAAEEEEDATAECupn9Qq0QQAABBBBAAAEEEEAAAQRiJkBAj1mH01wEEEAAAQQQQAABBBBAAAEzBQjoZvYLtUIAAQQQQAABBBBAAAEEEIiZAAE9Zh1OcxFAAAEEEEAAAQQQQAABBMwUIKCb2S/UCgEEEEAAAQQQQAABBBBAIGYCBPSYdTjNRQABBBBAAAEEEEAAAQQQMFPg/wFK1uas+Ep4xQAAAABJRU5ErkJggg==\" width=\"640\">" ], "text/plain": [ "<IPython.core.display.HTML object>" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "[<matplotlib.lines.Line2D at 0x1472466a198>,\n", " <matplotlib.lines.Line2D at 0x14724c7ad68>,\n", " <matplotlib.lines.Line2D at 0x14724c5ca90>]" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# evenly sampled time at 200ms intervals\n", "t = np.arange(0., 5., 0.2)\n", "\n", "fig, ax = plt.subplots()\n", "# red dashes, blue squares and green triangles\n", "ax.plot(t, t, 'r--', t, t**2, 'bs', t, t**3, 'g^')\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### § 使用 keyword 指定輸入資料\n", "\n", "若用來儲存資料的容器,是要使用字串 keyword 的方式來存取數據,例如: `dict`, `numpy.recarray` 或 `pandas.DataFrame`。 matplotlib 的函式裡保留了使用這種資料容器的相容性,只要把資料物件用 `data` 關鍵字參數傳遞,原本的 x, y 及其他參數則用字串關鍵字對應容器裡的 key。\n", "\n", "+ `axes.plot([x], y, [format], data=None)`\n", "+ `axes.scatter(x, y, s=None, c=None, ..., data=None)`, s: (size) 點標記尺寸, c: (color) 點標記顏色。" ] }, { "cell_type": "code", "execution_count": 10, "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", " fig.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 overridden (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", " event.shiftKey = false;\n", " // Send a \"J\" for go to next cell\n", " event.which = 74;\n", " event.keyCode = 74;\n", " manager.command_mode();\n", " manager.handle_keydown(event);\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,iVBORw0KGgoAAAANSUhEUgAAA+gAAALuCAYAAAA9jTxNAAAgAElEQVR4XuzdB5RUVbr28adzJGeQJkuOoiiKIhIExQAzKkoQRTFnRcccRnRM43UMGDCAWUQFlKQIkkWQjOQcGmigaZrOddcpRwekoSucXb2r+99rzZrvjme/+z2/t/b97jNVdSrC4/F4xB8CCCCAAAIIIIAAAggggAACCBSrQAQBvVj92RwBBBBAAAEEEEAAAQQQQAABrwABnRcCAggggAACCCCAAAIIIIAAAhYIENAtGAItIIAAAggggAACCCCAAAIIIEBA5zWAAAIIIIAAAggggAACCCCAgAUCBHQLhkALCCCAAAIIIIAAAggggAACCBDQeQ0ggAACCCCAAAIIIIAAAgggYIEAAd2CIdACAggggAACCCCAAAIIIIAAAgR0XgMIIIAAAggggAACCCCAAAIIWCBAQLdgCLSAAAIIIIAAAggggAACCCCAAAGd1wACCCCAAAIIIIAAAggggAACFggQ0C0YAi0ggAACCCCAAAIIIIAAAgggQEDnNYAAAggggAACCCCAAAIIIICABQIEdAuGQAsIIIAAAggggAACCCCAAAIIENB5DSCAAAIIIIAAAggggAACCCBggQAB3YIh0AICCCCAAAIIIIAAAggggAACBHReAwgggAACCCCAAAIIIIAAAghYIEBAt2AItIAAAggggAACCCCAAAIIIIAAAZ3XAAIIIIAAAggggAACCCCAAAIWCBDQLRgCLSCAAAIIIIAAAggggAACCCBAQOc1gAACCCCAAAIIIIAAAggggIAFAgR0C4ZACwgggAACCCCAAAIIIIAAAggQ0HkNIIAAAggggAACCCCAAAIIIGCBAAHdgiHQAgIIIIAAAggggAACCCCAAAIEdF4DCCCAAAIIIIAAAggggAACCFggQEC3YAi0gAACCCCAAAIIIIAAAggggAABndcAAggggAACCCCAAAIIIIAAAhYIENAtGAItIIAAAggggAACCCCAAAIIIEBA5zWAAAIIIIAAAggggAACCCCAgAUCBHQLhkALCCCAAAIIIIAAAggggAACCBDQeQ0ggAACCCCAAAIIIIAAAgggYIEAAd2CIdACAggggAACCCCAAAIIIIAAAgR0XgMIIIAAAggggAACCCCAAAIIWCBAQLdgCLSAAAIIIIAAAggggAACCCCAAAGd1wACCCCAAAIIIIAAAggggAACFggQ0C0YAi0ggAACCCCAAAIIIIAAAgggQEDnNYAAAggggAACCCCAAAIIIICABQIEdAuGQAsIIIAAAggggAACCCCAAAIIENB5DSCAAAIIIIAAAggggAACCCBggQAB3YIh0AICCCCAAAIIIIAAAggggAACBHReAwgggAACCCCAAAIIIIAAAghYIEBAt2AItIAAAggggAACCCCAAAIIIIAAAZ3XAAIIIIAAAggggAACCCCAAAIWCBDQLRgCLSCAAAIIIIAAAggggAACCCBAQOc1gAACCCCAAAIIIIAAAggggIAFAgR0C4ZACwgggAACCCCAAAIIIIAAAggQ0HkNIIAAAggggAACCCCAAAIIIGCBAAHdgiHQAgIIIIAAAggggAACCCCAAAIEdF4DCCCAAAIIIIAAAggggAACCFggQEC3YAi0gAACCCCAAAIIIIAAAggggAABndcAAggggAACCCCAAAIIIIAAAhYIENAtGAItIIAAAggggAACCCCAAAIIIEBA5zWAAAIIIIAAAggggAACCCCAgAUCBHQLhkALCCCAAAIIIIAAAggggAACCBDQeQ0ggAACCCCAAAIIIIAAAgggYIEAAd2CIdACAggggAACCCCAAAIIIIAAAgR0XgMIIIAAAggggAACCCCAAAIIWCBAQLdgCLSAAAIIIIAAAggggAACCCCAAAGd1wACCCCAAAIIIIAAAggggAACFggQ0C0YAi0ggAACCCCAAAIIIIAAAgggQEDnNYAAAggggAACCCCAAAIIIICABQIEdAuGQAsIIIAAAggggAACCCCAAAIIENB5DSCAAAIIIIAAAggggAACCCBggQAB3YIh0AICCCCAAAIIIIAAAggggAACBHReAwgggAACCCCAAAIIIIAAAghYIEBAt2AItIAAAggggAACCCCAAAIIIIAAAZ3XAAIIIIAAAggggAACCCCAAAIWCBDQLRgCLSCAAAIIIIAAAggggAACCCBAQOc1gAACCCCAAAIIIIAAAggggIAFAgR0C4ZACwgggAACCCCAAAIIIIAAAggQ0HkNIIAAAggggAACCCCAAAIIIGCBAAHdgiHQAgIIIIAAAggggAACCCCAAAIEdF4DCCCAAAIIIIAAAggggAACCFggQEC3YAi0gAACCCCAAAIIIIAAAggggAAB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1+8b7yQ6IlLrBt9jfB82QMAfAbKBP1qhuZaAHhpna3bhEFozChpBAAEEEEAAAQsEVu/bo25jRxrvJD4qWr8Nusv4PmyAgD8CZAN/tEJzLQE9NM5/7vLBBx9o0KBB3v9548aNqlOnzlEdzJo1S4899pjmzZun6OhoderUSU8//bSaN2/uSqccQlcYKYIAAggggAACJUQgIzdbLUa9LDO/gP4/pJPLV9aUPteUEDVuo6QIkA3smyQBPYQz2b17t5o2baq9e/cWGtC/++479e7d2/vPOnTooKysLC1atEiJiYn66aef1LZt26C75RAGTUgBBBBAAAEEEPiLwMGcbE3YtEob0tOUmZcr5/vWLStVV9eTGik2Ksp6ry5j3ta6A2lG++zbsLlePPsCo3tQHAF/BcgG/oqZv56Abt74zx2uuuoqffnll6pdu7bWrFlz1DvoHo9HDRo00ObNmzV+/Hidf/753nXvvPOOhgwZos6dO2vatGlBd8shDJqQAggggAACCCDwXwEnkL+98meNXb/MG8z/+lclIUn9GrbW1U3aq2J8orVuw2ZO1Cerlxjt75kze6hf49ZG96A4Av4KkA38FTN/PQHdvLF3B+fd8V69eumee+7RggUL9OOPPx4V0CdPnqwePXp4w/hbb711VFfdunXT1KlTtXr1ajVq1CiojjmEQfGxGAEEEEAAAQT+KzB9+3rdNP0rHcrLKdLkpKRyeu+8y9SwXKUiry2OC37dvUMXjxtlbOuk6BjN73eTkmPijO1BYQQCESAbBKJmdg0B3ayvt3pGRob3O+SHDh3yhuy+ffseE9Cd76U73093gvwf757/0drrr7+um266SY8//rgeeeSRoDrmEAbFx2IEEEAAAQQQkDR312YNmPqpcgvyffaompCssT0HqFZSOZ/XhOpC55OMTkBfvGenkS0HNGmrpzp2M1KboggEI0A2CEbPzFoCuhnXo6recccdevnllzV69Gg5H3M/99xzjwnoZ599tvd75vv27VP58uWPWu98D71du3a6+uqr9e677wbVMYcwKD4WI4AAAgggUOoFMnNzdNbY15WWfdhvi1OrnqTPe/T3e10oFixM3a6+Ez5Ugcfdx8VVik/UlEuvUaUEez/iHwpf9rBTgGxg31wI6IZn4jyNvWPHjurZs6f3u+XOX2EB3fnouvNU99zcY7+/tWXLFqWkpKh79+6aNGlSUB1zCIPiYzECCCCAAAKlXuDjNb/qgbkTA3YY3+tqtahUPeD1Jhc+/fOPGrF0vqtbvHbuxbqgXuOAa/62cINmjF2gA3vSFZ8YpzbnNNXpPVsrOiY64JosROAPAbKBfa8FArrBmThh23nn23nw2/Lly3XSSScdN6AnJyfL+dfOncd+tOrw4cPeJ7m3aNFCS5cuLbLjPw5aYRc6Yd95SN369euLrMMFCCCAAAIIIIDAkQLOR8EvmPCuVuxLDRjm8oat9OwZvQJeb3Kh85H9G77/SlO3rHNlm9vbdNRd7c4KqNaW1Tv0HyZn4gAAIABJREFUws3vatWCY/9vtko1yuuG4Veo08XtA6rNIgQI6Pa+BgjoBmfz1FNP6eGHH9aIESN0/fXX/7lTYe+glylTxhvCd+3adUxHmZmZSkpKUqtWrbR48eIiOyagF0nEBQgggAACCCAQgMDG9H3q/PWIAFb+b0mZmDgtveLOoGqYXJydn6e7Z3yrcRtWBbXNvad00s2tTldERITfdZxwfnfPZ5WelnHCtfe8fo26XtHR7/osQICAbu9rgIBuaDa//fabWrdu7f14+/fff3/U/3IuLKCffPLJ3ne1nXfd//q/yJ134OvUqeN9yvvEiYF/pMy5VT7GYmjglEUAAQQQQKAUCCxI3aq/TRod9J2uuvIexUfZ+xFt55MCX6xdpifm/aD0nGy/7jelTHk936mnOlSv7de6Py529r7tvH9qzaKNRa6Pjo3We4uGq3LNCkVeywUIFCZANrDvdUFANzSToUOH6s033/SpuvOTa87T2WfMmKG0tDRVqHD0/5L95Zdf1L59ew0ePFgjR470qebxLuIQBsXHYgQQQAABBEq1wPxdW3TZ5A+DNljZ724lRMcEXcd0gdTMDH2wcpH3N9J3Hz50wu0alq+k/k3a6PJGLZUYExtwayt/Xqc7uw/3ef1Vw3prwP0X+3w9FyJwpADZwL7XAwHd0EycJ7Y7D4gr7G/s2LHatm2bBg4cqLJly+r222/X8OHDveF73LhxuvDCC49a9sorr+i2226T85H5Bx98MKiOOYRB8bEYAQQQQACBUi2w9sAedf3m7aAMnHfOnYAeyEe/g9o4iMU5+fn6JXWblu7ZqRVpqTqYk63IiAhVjE9Uy8rV1LpyDbWoVM2Ve3rjgU/01RtTfe62VsNqeufnf/p8PRciQEC3+zVAQC+G+RT2Efdp06apS5cuhf6UmvOfO++yr1u3TvXq1QuqYwJ6UHwsRgABBBBAoFQLOD9Bdu7XI7Tp4P6AHS6o00Svnn1JwOtL+sLh176p6V/6/iT5pLIJGrPplZLOwv0ZEiAbGIINoiwBPQi8QJcWFtCd7xs1btzY+z30b775Rr16/f5007feesv7gLmuXbtqypQpgW755zoOYdCEFEAAAQQQsEBgR8ZBLd+TqvScLMVERqlyYqJOqVZLsVFRFnRXslt4c/k8Pb1wWsA3+XG3fjqjep2A15f0hS/d9p4mjZrp8206T3T/cMXzPl/PhQgcKUA2sO/1QEAvhpkUFtCdNqZOner9vfSCggKdfvrpys7O1sKFC71PcJ89e7ZatmwZdLccwqAJKYAAAgggUEwCzru3M7du0gfLF+mHzevl/M9H/lVJTFK/Ji3Vr2lr1UguU0xdlvxt92UfVscxr+lwfq7fN3tyucqa1PtaVz4K7vfmYbLgh8/m6l9Dff8awbl/76Bhb14XJndHm7YJkA1sm4hEQC+GmRwvoDutzJkzx/vTbM7316OionTOOefomWeeUdOmTV3plEPoCiNFEEAAAQRCLJB6KEPXTf5Ki1N3FrlzVESE7j71LN3Y5jSCYJFagV3wzYYVum3mN34tToqO1Wc9rlLzitX8WlfaLs7JztWAFvfpwJ6DPt36ixPvV7MODX26losQ+KsA2cC+1wQB3b6ZGO2IQ2iUl+IIIIAAAgYEtmek6+9ff6JtGel+Vb+m5Sl6+IzOhHS/1Hy/+JM1i/XgvInK/8snGQqrUDY2Tm917qsO1VJ836AUX/n9p3P03A3vFCngvHt+34ghvMaLlOKC4wmQDex7bRDQ7ZuJ0Y44hEZ5KY4AAggg4LLAodwcXTr2Q63etzegyg+d0VlDWrUPaC2LihaYt2uz/rN0jn7asaHQi2Mjo9SrThPd1upM1S9bseiCXPGnwISRP+rV+z5SQX5BoSqd+56mu14drNg4+3+ujrHaK0A2sG82BHT7ZmK0Iw6hUV6KI4CADwL5ngKtP7hHy/bt0KoDqTqYmyXnQZnJMXE6uWxVNa9QQ43KVvE++Is/BN5a/LP+OXd6wBAJ0dGa2/8GlYuLD7gGC4sWWJ+eps/WLtGmg/t0KC9HZWLi1KJidf29QUtVTkgqugBXFCqwc9NuffvudE0fu0D796QrPjFObc5uqt7XdlbzMxrxzjmvm6AFyAZBE7pegIDuOqndBTmEds+H7hAoyQI7M9P16caF+nzDIqVmZZzwVsvHJqhPnda6sv4pSknmXbeS/Lo40b15f9Lrk3e0KT3wn/Ry6j/asYsGt2xXWhm5bwQQQOC4AmQD+14cBHT7ZmK0Iw6hUV6KI4BAIQLZ+Xn6vxU/auSauT59V/XIEhGSLqvXTsNadvW+w85f6RKYvmWDBn07Juibrl++or6/bDDvNgYtSQEEEChpAmQD+yZKQLdvJkY74hAa5aU4Agj8RWDF/h26a/5YrT8Y2PeH/yhXM7Gcnm1/kTpUqYtxKRJ4bNYPem/ZQlfuePoVQ1SnXHlXalEEAQQQKCkCZAP7JklAt28mRjviEBrlpTgCCBwhMG/3Rg2d/aky83JccYmOiNRLHfqoRy13fnbSlaYoYlTg9u8n6Ou1K13Z46tLr1KbqjVcqUURBBBAoKQIkA3smyQB3b6ZGO2IQ2iUl+IIIPBfgcVp2zRoxihl5ue6auKE9Dc6Xq6zq/Obv67CWlrslqnjNH7db650N+biK3VK9Zqu1KIIAgggUFIEyAb2TZKAbt9MjHbEITTKS3EEEJC8T3DuPWWEtmYG92Cv42E6D5D7ttsNqhyfjHcJF3j4p6kateJXV+5y6mWD1bBCJVdqUQQBBBAoKQJkA/smSUC3byZGO+IQGuWlOAIISHp80Xf6cP0CoxbdazbRK6f/jYd+GVUu/uLj1q7Srd+PD7qRaonJmnXV9YqOjAy6FgUQQACBkiRANrBvmgR0+2ZitCMOoVFeiiNQ6gXWpKfqgikjQuLwfqf+OqNqvZDsxSbFI5CTn6+OH47QnsOZQTVwxykddUf7jkHVYDECCCBQEgXIBvZNlYBu30yMdsQhNMpLcQRKvcBji77TR4bfPf8DuVvNxnr1jMtKvXlJB3h+/kz9Z9HcgG8zKiJCs68aqmpJfCUiYEQWIoBAiRUgG9g3WgK6fTMx2hGH0CgvxREo1QLOd8/PmvCS9zvoofiLVIR+7HmbqieWDcV27FFMArszD6nXmA/k/Hsgf4NbtNOjZ3YJZClrEEAAgRIvQDawb8QEdPtmYrQjDqFRXoojUKoFftq5TtfO+iikBs+0v0h96rQO6Z5sFnqBZbt36Ypxnyoj17//8ue8lPoa0eMSvnse+pGxIwIIhIkA2cC+QRHQ7ZuJ0Y44hEZ5KY5AqRZ4fdVMvbR8WkgNBjQ4VQ+3OT+ke7JZ8Qis2Juqa777UjsPZfjUQN+Tm2v42d0VGxXl0/VchAACCJRGAbKBfVMnoNs3E6MdcQiN8lIcgVItcNvcLzRx28qQGrSrVFufdL46pHuyWfEJpGdna8zq5d6fXlu/P+2YRqIjItWjXkP1b95Gp9eoXaqf8p/vKdC0nSu0PmOXKsQmq1uNliofm1h8w2NnBBCwUoBsYN9YCOj2zcRoRxxCo7wUR6BUCwycMUpzd28MqUH9MpU0sftNId2TzYpfwOPxaM72LVq6e6cOZGd73yWvlJCo7nUb8jA4SbkFebp74YeatXv1n8OqGldWb3S4VnWSKhf/AOkAAQSsESAbWDOKPxshoNs3E6MdcQiN8lIcgVItcNX09/Xzns0hNaibXFGTe9wc0j3ZDAHbBUaum65XV08+ps0W5Wrr/Y432N4+/SGAQAgFyAYhxPZxKwK6j1Al5TIOYUmZJPeBgH0CQ2Z+rBm71oa0sablqunrrteHdE82Q8B2gZt/fldz9xR+Fmd1f0zxUTG23wL9IYBAiATIBiGC9mMbArofWCXhUg5hSZgi94CAnQLDl0zRu2sC/73qQO6qd+0WeuG0SwNZyhoESqzAnb+M0ozUVcfcn/PThLN7PK6YSB6cV2KHz40h4KcA2cBPsBBcTkAPAbJNW3AIbZoGvSBQsgTGbV6qu3/+KqQ3dX/Lbrrm5NNDuiebIWC7wIRti/TIki+OafO8as31r3ZX2t4+/SGAQAgFyAYhxPZxKwK6j1Al5TIOYUmZJPeBgH0CWw/tV5eJr4S0sc86D1abSieFdE82Q8B2Aecheq+vmap31v34Z6vtKtTVC6f0V9mYBNvbpz8EEAihANkghNg+bkVA9xGqpFzGISwpk+Q+ELBTYNCM0Zqze0NImmtYprImdLuhVP+UVkig2SRsBbZmpmljxm5ViE1S03I1FRkRGbb3QuMIIGBGgGxgxjWYqgT0YPTCcC2HMAyHRssIhJHApG0rdevcYz9aa+IWHmlzvvo3ONVEaWoigAACCCBQKgTIBvaNmYBu30yMdsQhNMpLcQRKvUBeQYH+Nu0drdi/06hFrcRyGt/tBiVFxxrdh+IIIIAAAgiUZAGygX3TJaDbNxOjHXEIjfJSHAEEJK06sEt9vn9beZ4CYx7vdeqvjlXrGatPYQQQQAABBEqDANnAvikT0O2bidGOOIRGeSmOAAL/FXjzt1l6ftkPRjwGNTxND7buYaQ2RRFAAAEEEChNAmQD+6ZNQLdvJkY74hAa5aU4Agj8V8B5ivQ/F0/WB+vmu2rS66Rm3t89j+JhV666UgwBBBBAoHQKkA3smzsB3b6ZGO2IQ2iU11s8NWuXNhxaq82ZG7Uza7tyCrK9T85NjEpW7cQUpSTWU/2khkqMTjLfDDsgUIwCTkj/vxXT9eqqn1zpol+9U/RI2/MJ565oUgQBBBBAAAGJbGDfq4CAbt9MjHbEITTDm1uQq4X75mv67qlaf2htkZvERMSofcXTdU6VrqqbVL/I67kAgXAW+Hn3Jt3/yzhtObQvoNuoGp+sJ9peoC41Tw5oPYsQQAABBBBAoHABsoF9rwwCun0zMdoRh9B93lXpy/XBpreVlrMnoOJtyrfXlSlXq2xMuYDWswiBcBDIzMvRR+sW6OMNC30O6lXjy+iyem3lfOe8XGxCONwmPSKAAAIIIBBWAmQD+8ZFQLdvJkY74hC6x5tbkKPPt36kGbu/D7poUlSyrqpzjdpV4Dedi8LMzc9XanqGsnLz5PFIcTFRqlY2WbHR0UUt5Z9bIFDg8WjWrvWau3uDlu3b6X3ie0ZuljyS9yfTTi5XVc3L19CplVPUuUYjxURGWdA1LSCAAAIIIFAyBcgG9s2VgG7fTIx2xCF0hzc7P0uvr/u3Vh1c7k7B/1a5ovYgda7a1dWa4V4sOzdP369Yp182btPy7bv0247dys7LP+q2oiMj1ah6ZTWvWVWtU2qoR4tGSo6PC/dbp38EEEAAAQQQQMCoANnAKG9AxQnoAbGF7yIOYfCzy/fk6dW1L2pF+tLgixVSYWCd69Sx8tlGaodT0a1pB/Tp/CUas2CZ9mdm+dV6YmyMLmrbVP06tPYGd/4QQAABBBBAAAEEjhUgG9j3qiCg2zcTox1xCIPnHbd9jCbs+Cr4QsepEB0RrX80fVI1E04ytofNhZ13zF/9fo5G/vSLnI9DB/vX55TmGnbBOSrDO+rBUrIeAQQQQAABBEqYANnAvoES0O2bidGOOITB8To/nfbMysdUoKM/Yh1c1WNX10msp/uaPKqoiNL1/dvFW3bowS8ma/3uNFdJq5dL1uOXdlOnk+u6WpdiCCCAAAIIIIBAOAuQDeybHgHdvpkY7YhDGDiv85vO//rtcW04tC7wIn6sLG3fR/9q4XI9/OUU5RcE/6758Zhv736mrj/nVEVERPgxCS5FAAEEEEAAAQRKpgDZwL65EtDtm4nRjjiEgfM6wfzZVY8FXsDPldXiauix5s+WijD52fwleuyr4J+G7wvxDed20G3dOvpyKdcggAACCCCAAAIlWoBsYN94Cej2zcRoRxzCwHnf2zhCc/fODLxAACvvaHS/mpRtHsDK8Fkycelq3f3xBO/PbIXqb1ivczTorHah2o59EEAAAQQQQAABKwXIBvaNhYBu30yMdsQhDIy3wFOgu34dqqwC/54mHthu/1t1dpXzdGXK1cGWsXb99v3puvjlUTqUnRPSHqMiI/Tpjf3UrFa1kO7LZggggAACCCCAgE0CZAObpvF7LwR0+2ZitCMOYWC8O7N26LHl9wW2OIhVdRPr6/6mjwdRwd6lznf6h743VjPXbCqWJhtXr6xPb7pSsdGl60F8xYLNpggggAACCCBgpQDZwL6xENDtm4nRjjiEgfHOT5utkRteD2xxEKuiI2L0cts3FRURHUQVO5d++ctyPTRmcrE2d1OX03VL1zOKtQc2RwABBBBAAAEEikuAbFBc8sff18qAvn37dtWsWdM+rRLQEYcwsCFO3PGNvtr+eWCLg1w1vOXLqhBbMcgqdi0vKPCo54vvakvagWJtLDkuVtPuv05JcbHF2gebI4AAAggggEDoBXZuTdPunQcUGRWpWnUqq3zFpNA3Ucw7kg2KeQCFbG9lQI+OjlanTp3Ur18/9e3bV5UqVbJPLkw74hAGNrhx27/UhB1jA1sc5KonW7ygKnFVg6xi1/IZv23QDe9/ZUVTj158ni7v0MqKXmgCAQQQQAABBMwKOF+xmzFpmb75eK6WL/rf1+yioiPVsUszXdq/o5q1STHbhEXVyQYWDeO/rVgZ0Fu3bq2lS5d6f14qKipK3bp10xVXXKFLLrlEZcqUsU8xjDriEAY2rO92fKOveQc9MLxCVt30wVf6cdUG1+oFU8j5LvqXt/YvFT9nF4wTaxHwRSA9I0vO//FbrkyCL5dzDQIIIBBSgfy8fD3/8JeaNmHxcfeNiJCG3ttLl/QvHT/JSjYI6UvQp82sDOhO5xs2bNCYMWM0duxYzZ0713szcXFx6tWrl/ed9QsuuEDx8fE+3SQX/U+AQxjYq2H2nhn6YNNbgS0OYlWkorzfQY+JLDkfwXae2N7hiddU4AnlD6udeAgT7hykelVK1tcIgnjZsRQBvwWWrN6mVz+aoSWrt3vXNq5bVTf166TTWtb1uxYLEEAAAVMC/3nqG43/bL5P5e8b/jd1uaCNT9eG80VkA/umZ21AP5Jq165d3qDu/Gv69OnKyclRcnKyLr74Yu876z169JDzsXj+ihbgEBZtVNgVWzM366mVDwa2OIhVJyWk6KFm/wyign1LF2zYqoFvFc/3+Y+n8exl56t3m6b2YdERAmEgsHL9Tt3w+CfKyc0/qtvIyAi9NKyvTmtZJwzughYRQKCkC2zbtEfX9v63z7dZuWpZvT/xbkWV8F97IRv4/JII2YVhEdCP1MjIyNCkSZP0+eefe//l/FWoUEHXXHONbr31VtWuXTtkeOG4EYcwsKnle/J1x6LrlOvJDaxAgKs6VjpbA+teF+BqO5d9MGuhnpkw3armBp3ZTsMuOMeqnmgGgXARuPu5sZq9aH2h7bZoWENvPXFluNwKfRaTQF5evg7sy1ROdp6c7wEnJMaqTFm+JlFM4yix24547luNHTXbr/t76MV+Oqtrc7/WhNvFZAP7JhZWAT0/P19TpkzRp59+6n03PT09XbVq1VJBQYF27NihxMREvfTSS7ruupIVaNx82XAIA9ccse5lLdq/IPACAay8ocEdalP+lABW2rvk/s8n6ptFK61qsH3dWvrg+sus6olmEAgXgbMH/lu5eUe/e35k71PfuVVJCSXnazrhMheb+3SC+KwfV2rZos1as2qH1q/Zqdyco19DlaqUUaMmNdSoaQ117NxU9RtVs/mW6C0MBK6/5GVtXr/br07P73OK7njsUr/WhNvFZAP7JhYWAX3evHkaNWqUN5inpaUpMjLS+13066+/Xj179vQ+3Mn55w899JC2bdumL7/80vvxd/6OFeAQBv6qWJW+XP9e80zgBfxcWSGmkp5q+YKiIqL8XGn35UPfG6ufVm+0qsmGVSvpmzsGWtUTzSAQLgJdBv+fDmcX/uki52FLP4y8TfFxMeFyO/RpUGDntn0aP2aBJn2zSOkHDvu1U/PWtXXh305Vp/OaKSamZP3/i35BcHHAAlee96zSdh/0a32n7i304PNX+LUm3C4mG9g3MWsDuvOQuNGjR3uD97p167xPhU1JSdGQIUO8H2cv7HfS9+zZo+bNm6tBgwaaPdu/j7DYNxozHXEIA3d1XoOPr7hfO7N+fwiS6b+La/5dPWtcZHqbkNcf/PYXmrd+S8j3PdGGtSuW06R7rrGqJ5pBIFwEHv3PBE2evarQdju0rKN/P/C3cLkV+jQk4HyE/ZN3Z+qjd2YoP78gqF1S6lXRPY9erMbNawVVh8WlT2DIRf/W1o17/Lrx7pe2012P9/FrTbhdTDawb2JWBnTnN9CdgO0EIufhb7179/Z+bN15GJzzbvmJ/i6//HJ999133o+/83esAIcwuFdFqN5FrxpXXQ81e0qxkXHBNWzh6uvf/VIz1/zvd0dtaLF+lYoaf+cgG1qhBwTCTmDLzn267pGPdCAj66jeE+Jj9MYjV+jkulXD7p5o2D2BDWt36fnHvtLa33a6VjQyKkJ/H3CmBlzfmXfTXVMt+YVefXqcxn0yz68bHfbM33Vur9Z+rQm3i8kG9k3MyoDufIS9Xr163nfLBw8erOrVq/ss9/jjj2vmzJne76rzR0A38Rr4aPN7mrH7exOlvTUjFKG7Gz+khsknG9ujOAvf8dF4TV62pjhbOGbvlidV06c38SArq4ZCM2ElsHXXfr07dq5mLlynggKPOrSqo2v6nKH6J1UOq/ugWXcFfv15gx69+2NlHTbzgNX2ZzTUw/+6TPHxfIXC3cmVzGob1+7SDX1e8fnmyldM0qgp9yompmT/UhQB3eeXRMgutDKgT506VV27dg0ZQmnaiEMY/LSz8rP0/+zdB3hUxdoH8P+W9B5CgNAJEkB6l957ERCk9yYqICiiImLXix3FAoIUKSIdpKkgHaT33ksSQnrPZvd7zt6LH0hItpyzO2f3v8/jc703M++885sdLm/OOXM+PfcebmQocxW4a0RPdCz2tP2JChph1h/78PUfe4XKrmedKni3RxuhcmIyFKAABdQscPTgFUwd//Mjh7/JPacadcri3S/6wdPLtYsoud3cNd6M13/FH+uPWjT9cdO6oeMzdS1qq+ZGrA3EWz0hC/QHmaTnyi9cuIAbN26gQoUKqFGjhniKKsqIm1CexUrJSTYfGHcrQ95nqdsW6YTuxZ8t8FEOeWbhnCh/nbuC5+avds7gjxl1WreW6FPftW9hEwqcyVCAAi4tcONqHF4cPBsZ6dkOmWfzdlXw2ns9HTIWB1G3QHa2Ae9PWor9f+V9bsb92Q0c2xL9x7RU92QtzJ61gYVQDmwmbIF+8eJFvPHGG1ixYoX5WXTpM2DAAMyfP9/87+fPn8eUKVOwePFieHt7O5BM3UNxE8q3fmmGNMy9Mgunko/bHVSv0ePp4r3RKry9SxfnElRcShqafviD3WZyBlg2ti+qlrD8URo5x2YsClCAAq4kIB0CN2nkPJw5cdOh03rjw2fQ1MXfV+1QUBceTPqObl51CGuX7MPVCzEPzbRWw/LoMaAh6jR2zccM81pW1gbifdmFLNDv3r1rvlIeGxsL6dC32rVrY9KkSRg4cOA/BfrJkydRrVo1fPrpp3jppZfEkxU0I25CeRdG+uXR3ns78cuNRcg0WvfKmPuZlPYti8FlRiHCp4S8yQkcrefXP+PM7VghMizk74s/Xx0BDx1f2yPEgjAJClBA1QLLF+7GnK9+d/gcgoJ98cOysZCeG+aHApYISH+Hu3wuGrF3EqHTayG9IaBoiVBLurpUG9YG4i2nkAW6dGL7vHnzsGnTpn+eRZcOjnuwQJcopQI9PDwc0jPr/FgmwE1omZO1rZJzkrArbht23t2GhJx4i7pX8K+EpoVboWZIHZd713lBAL/+fQLTVomxb59rUR8vtmlYUMr8OQUoQAEKFCCQcC8Vg7p9iewsg1OsOjxdCxPe6OKUsTkoBdQqwNpAvJUTskCX3mUeFBT00LvM8yrQe/ToYW4THS3fqzvEWyJ5M+ImlNfz39FyTbk4l3IaV9Mu43r6VfM707ON2dBCC1+9H0r6lEIpvzKICqiMot4RyiYjcPT07By0+Gg2UjKznJqlTqvB1leGo2hQgFPz4OAUoAAFXEFgybyd+GnWn06bipeXHj//NhEBgT5Oy4EDU0BtAqwNxFsxIQv0kJAQNGvWDKtX//9BUnkV6M2bNzc/i3779m3xZAXNiJtQ0IVxw7Q+27QTc3YcdOrMO1WLwow+HZ2aAwenAAUo4AoC0nO9g7t9ibsxyU6dzuiX2qFHvwZOzYGDU0BNAqwNxFstIQv0Vq1amQvvK1euQK//72sz/l2g37t3D9IXqmHDhti4caN4soJmxE0o6MK4YVrSVfTuXy3Ejfgkp8w+yMcbaycMQuEAPq/olAXgoBSggEsJHNx7EW+M+9npcyoTGY7vlz7n9DyYAAXUIsDaQLyVErJA/+677zB27FiMGzcOX3zxxSMFemZmJvr164c1a9bgxx9/xJAhQ8STFTQjbkJBF8ZN0zp45SYGz16O/76nwbGfGc92QKfqFR07KEejAAVULZCacxMZhrswGNOg1/rCWxcGf4+SLv/2DUsWbcH32/DznB2WNFW8zcptU+Dn76X4OByAAq4gwNpAvFUUskCXmNq3b48tW7agbt266NWrFyZPnmw+zb1Ro0ZYt26d+ep6mzZtsHnzZvFUBc6Im1DgxXHT1D7ZuANzdx5y6Ow7VK2AT/p05F+qHarOwSigToFcYyZupG7FpeTliM869cgkgj2jEBn0DEr5d4Be677PPr/50mIc2HVBiEWe8d1gVKtdRohcmAQFRBdgbSDeCglboGdkZOCtt94yX0E3GB4+DVS63f3555/HBx98AD8/3p5qzdeKm9AaLbZ1hIDRaMJrv27CuqNnHTEcGkSWxLeDnoaXx3+EtxF+AAAgAElEQVQfn+GHAhSgQF4C0iuYLiYtwemEOcg2FvwojofWH1HBg1AxeJhb/vKvb4dPER+XKsSXadSEtujZ/ykhcmESFBBdgLWBeCskbIF+n0q6Ur53716cOHECubm5qFq1KurVq4eoqCjxNFWQETehChbJDVM05BoxbdVWrD58WtHZN6lQBl/06wwfTw9Fx2FwClBA3QImkxFH4j7GpeRfrZ6IdCW9bvhb0Grc588Z6ZcZ7eu9Y7WVUh2k4lwq0vmhAAUKFmBtULCRo1sIX6A7GsTVx+MmdPUVVu/8pCvp83Ydwszf9yDbkCvrRLQaDYY0roVxbRrBU6+TNTaDUYACridwLO4znE+y/cCzMgHdUKfwm25zJT0724Aujd4X5ovQpVddvDCZb+gQZkGYiNACrA3EWx4hC/Rjx46hevXqBWqdOXMGzz33HLZv315gWzb4rwA3Ib8Jogtcir2HN1ZswfEb0bKkWq5wKN7v2RbVSxWTJR6DUIACri1wI3UL9sW8Zvcka4W9jsignnbHUUOAXIMRHZ96V5hUu/etjzET2wuTDxOhgMgCrA3EWx0hC/SAgADMnz8fPXr0yFMsKysL7733HmbMmIGcnBzzre/8WCbATWiZE1s5VyDXaMTaI2eweN9RnLoVa1MyZcNC0KdBdfSuW5XPm9skyE5yCmTm5iA+Kx3Bnj7w1XvKGZqxZBb4/eZAJGTZ/7iNv0cptC+5AhqNVuYMxQzXrekHyMzIESK5ASObYeCo5kLkwiQoILoAawPxVkjIAr1IkSKQ3nM+bdo08z8PfrZu3Wp+BdulS5dQtGhRc5Hev39/8WQFzYibUNCFYVqPFThxMxrLD5zA4Wu3cSUuHqZ83slWMjTIfKW8R+0nUb8cX33Er5XzBWIyUvDFqW1Yf+MUsowGeGi0aFO8IiY+2QKl/EMVTdBgNCIr1wBfvYfb3GptL2h85in8cWuQvWH+6d+02Dco4ttAtngiB3pp+FycPn5DiBSn/ac3GrWoJEQuTIICoguwNhBvhYQs0G/evInu3bvj8OHD5qvoCxYsQEpKCiZMmIBly5ZBp9OZ35E+ffp0+Pv7i6cqcEbchAIvDlMrUCAtKxtnbsfi2r1EZOUYYDSZ4O2hR0RIICpHFEGwr3eBMdiAAo4SiM5IRp/tP+F2+qMngId4+mJp8yEoG1BI9nROxcVi1pF92HL1InKMRkT4B6BvpWoYUbUOfDzc5+AyW2D/jp2OqynrbOmaZ58I32ZoVOwz2eKJHGjWJxuxZtkBIVJcuG4CwosGCZELk6CA6AKsDcRbISELdIlJuo199OjR5uK8YsWKiI6ORmJiIlq2bImZM2eiUiX+ZtSWrxM3oS1q7EMBClDAeoEpB9di5bVjj+3YrGh5zG7U1/rA+fTYdfMahm1aiew8Hv2qVSQCizo9A18P3mL/OMJ1V9shMzdOtjXRabzQo9we2eKJHGjrhmP4ZPpqp6cYHOqHpZsm8a4Rp68EE1CLAGsD8VZK2AL9PpVUjE+aNMn8nPn48ePx2Wfu8Ztopb4q3IRKyTIuBShAgf8XyDDkoN66T8y3tT/uowGws+MEhPsEyEIn3c7eePFs3E1Pe2y8cbUaYGLdxrKM52pBpFeFrbz8FIyQ9znqHmV3Q6d1/bt7kpMy0L/TZ8jOevx33hHfGZ7g7ghljuFKAqwNxFtN4Qt0iWzHjh3o3bu3+Qr6rFmzMGzYMPEkVZIRN6FKFoppUoACqhaQbmtvvvGrAufwa4vhqBYaUWA7SxpsuHQOz/+e/+3ZYT6+2D9gDHRa9zi4zBK3+22kd5//ermuNV0satutzDZ46gItaqv2Rp++swZb1h116jS+X/ocykSGOzUHDk4BNQmwNhBvtZxeoG/cuNEilWvXrmHy5MlIS0szP4veuXPnf/q1aNHCohhsxNes8TtAAQpQwBECaYZs1F07AwaTMd/htncYhwhfeZ6V/ezv3fjq8N4Cp3do0FgU8vEtsJ07Nlh1pSkMxsffgWCLyTPlDkCj0dnSVXV9zp++jRcHz3Za3lVrlsYnPwxx2vgcmAJqFGCBLt6qOb1A12q1Fj8nJN1+Jn00GunGwP9+pH83GJx7O5V4y/r4jLgJ1bRazJUCFFCzwPh9v2LjrTOPnUK9sNJY1Ey+E8O/P3oAH+7fUSDZqWHj4Mfn0PN02nqjPxKzzxZoaGkDP31xdCy91tLmLtHunVeWYfd2+QwtRZH+avjJD0NRpUYpS7uwHQUoAF68E/FL4PQCXbr6/WDBbQvSn3/+aUs3t+zDAt0tl52TpgAFnCBwNeUeem+fh8TsjEdG99F54Odmg1ElpJhsmV1OjEfLZXPzjdekRBks7PSMbGO6WqCLSb/gSNzHsk2rSuhYVAoZLls8NQSKj0vFqD6zkJL06Pdeyfy7962PMRPbKzkEY1PAJQVYG4i3rE4v0MUjce2MuAlde305OwpQQCyBS8lx+OD4FuyMufRPYnXDSmFKtTaoGiLPs+cPznj8Hxuw5mLeV+11Gg0Wd+6N+hElxUISKJscYyrWXW2PXJP9xaUGenQuvQHe+jCBZuiYVLZtPoGPpq50zGAAIkqG4tvFY+DtzdcIOgydA7mMAGsD8ZaSBbp4a6JoRtyEivIyOAUoQIE8BaR3osdkpCDMyw/F/YIVU8o05ODl7Zuw/tK5h8YI8PTEx83aoWO5KMXGdpXAh+5+gMvJK+yeTkn/dmhQ5AO746g1wJyvtmL5QuVfMRcY5GO+tb10ucJqpWLeFHCqAGsDp/LnObiQBXpUVBT69euHZ5991vwOdH7kE+AmlM+SkShAAQqIKnA+Pg4br5xHanY2yocUQqdyUfD35PvPLVmvDMNd/HFzEDJyYy1pnmcbT20wWpX4Cf4e7nu3gnRu0HefbsLqZQdsdiyoY1CwL96fOQBPVJTvUZGCxuTPKeBqAqwNxFtRIQt0vV4Po9Fofja9evXq6Nu3r/k1a6VLlxZPUGUZcROqbMGYLgUoQAEKOFwgMesCtt8eiRxjitVj6zQ+aBYxC4W8q1nd19U6SEW6dBX9p1l/Ijc3/zcaWDv3UmUL483/9EapMu73CIG1VmxPgfwEWBuI9/0QskC/d+8e1qxZg5UrV+KPP/5AVlaWuVh/6qmn0KdPH/Tq1QtFihQRT1MFGXETqmCRmCIFKEABCjhdIDn7MnbeGYd0wx2Lc/HSFUKTYl8ixKuSxX3coeGl89H49O01kP7T3o9Wq0GvgQ0xYGRzeHrp7Q3H/hRwewHWBuJ9BYQs0B9kSk1NxYYNG7Bq1SpI70xPSUmBTqdDs2bNzFfWe/TogZCQEPFkBc2Im1DQhWFaFKAABSggnEB2bjKuJK/GpeRfkWa49dj8fHRFUC6oByIDe8JLx7+T5AVlMORizbIDWPvLAUTfTrR6raXCvH6TCug7tAminixudX92oAAF8hZgbSDeN0P4Av1BsuzsbGzbtg3r1683/3P9+nV4eHigXbt2GD16NDp27CiesGAZcRMKtiBMhwIUoAAFhBcwmXIRnb4X11M3QXpG3WBKh17jYz6hvaR/GxTzbQKthldzLVlI6Vb3Q/su4bdVh3Dq6HUk5/M6NqkoL1E6DA2bR6FTjzoILxpkyRBsQwEKWCHA2sAKLAc1VVWBLpkkJSVh9erVWLx4MbZu3foPk3QLfNWqVbFw4ULzf/LD35LxO0ABClCAAhSggLgC0jPqsdFJuHDmDmKjE5GdZYBOr4WPrxfKlg9HZIWi8Pbh4YbiriAzcwUBFujiraIqCnTpyvnatWvNxffmzZuRk5ODQoUKYfDgwRg5ciSkP+A//vhjLFiwAD4+Pjhw4AAqVeLzX3l93bgJxduEzIgCFKAABShAAQpQgALOEGBt4Az1/McUukDfuXOnuShfvnw5kpOTzTNp0aKFuSiXnj2Xbm9/8LN3717zz1u1amV+bp2fRwW4CfmtoAAFKEABClCAAhSgAAUkAdYG4n0PhCzQ33zzTSxatMj8jLl0dTw8PBxDhgwxF+aRkZH5Knbr1g27d+9GXFyceNoCZMRNKMAiMAUKUIACFKAABShAAQoIIMDaQIBF+FcKQhboWq3W/Fq11q1bY9SoUZCKbund6JZ8pPel79+/H9euXbOkudu14SZ0uyXnhClAAQpQgAIUoAAFKJCnAGsD8b4YQhboU6dOxYgRI1CmTBmbxO7evYvChQvb1NfVO3ETuvoKc34UoAAFKEABClCAAhSwTIC1gWVOjmwlZIHuSAB3G4ub0N1WnPOlAAUoQAEKUIACFKBA3gKsDcT7ZrBAF29NFM2Im1BRXganAAUoQAFBBaQzbY5dvYO9Z6/h9M0YRCekwGgyIcjXGxWLh6N62WJoXiUSXh6WPVIn6DSZFgUoQAGrBFgbWMXlkMYs0B3CLM4g3ITirAUzoQAFKEABxwhsPXoeP2zZj/O38z9ANsTPB70aVcPw1vXg7clC3TGrw1EoQAFnCrA2cKZ+3mOzQBdvTRTNiJtQUV4GpwAFKEABgQSS0zPxzrLfsfXYBauyKhMegvcHtEeVUkWt6sfGFKAABdQmwNpAvBVjgS7emiiaETehorwMTgEKUIACggjEp6Zj1DcrcOGOba9d9fbQ46uR3VC/QilBZsQ0KEABCsgvwNpAflN7IwpZoLdv3x59+/ZF9+7dERgYaO8c2f8BAW5Cfh0oQAEKUMDVBXJyczH0q19w4lq0XVP18fTA4ol9Ua5oIbvisDMFKEABUQVYG4i3MkIW6Pffg+7p6YkOHTqYi/XOnTvDx8dHPEGVZcRNqLIFY7oUoAAFKGC1wOwt+/H1b3us7pdXB+k29/njn4Vep5UlHoNQgAIUEEmAtYFIq/HfXIQs0I8ePYqVK1ea/zl9+jQ0Gg18fX3RrVs39OnTB+3atYOHh4d4mirIiJtQBYvEFClAAQpQwGaBuOQ0tH/7R0hX0eX6TO/TBt0bVJErHONQgAIUEEaAtYEwS/FPIkIW6A8yXbx4EStWrMCqVavw999/m38UFBSEnj17mov1li1bmgt4fiwT4Ca0zImtKEABClBAnQLSae3fyHT1/L5AxRLhWDqpH/++oc6vBLOmAAXyEWBtIN7XQ/gC/UGyO3fuYO3atVi/fj3+/PNPZGZmIjw8HL1798bIkSNRpQp/u13QV4ybsCAh/pwCFKAABdQs8PQH83ElNl72Kax+bTDKFgmVPS4DUoACFHCmAGsDZ+rnPbaqCvT7U9i+fTvmzp2LRYsW/TMr6Sp6p06d8N133yEiIkI8aUEy4iYUZCGYBgUoQAEKyC6QkpGFxq/Nkj2uFPC9/u3QpW5lRWIzKAUoQAFnCbA2cJb848dVTYF+8OBBLFy4EMuXL0dMTAz0ej26du1qvnJuMpnw8ccfQyrcpSvqhw4dQvHixcXTFiAjbkIBFoEpUIACFKCAIgLHrtzGoC+XKRJ7SMvaeKlrU0ViMygFKEABZwmwNnCWvEoL9GvXruHnn382F+bnz583F+KRkZEYMWIEhg4dai7GH/wsW7YM/fv3Nz+fLv07P48KcBPyW0EBClCAAq4qsO/cNYz+dqUi03u2cXW8/kxLRWIzKAUoQAFnCbA2cJa8ygr0H3/80VyU79q1C0ajEdLr1p5++mmMGjXKfChcfh/pHerHjh2D9Lw6PyzQ+R2gAAUoQAH3ETh06SaGzVyuyIQHNKuFV7o3UyQ2g1KAAhRwlgALdGfJq6xAl96DLn0qVKhgvoV98ODBCAsLs0hPel/64cOHcfv2bYvau1sjbkJ3W3HOlwIUoID7CNxLSUPLN39QZMJTe7VCr0bVFInNoBSgAAWcJcDawFnyKivQBwwYgNGjR6NJkyZWi2VkZJhvh69evbrVfd2hAzehO6wy50gBClDAfQXaTp+NmMRU2QGWTOqHyiWLyB6XASlAAQo4U4C1gTP18x5byEPi6tati27dumHq1Kniiak8I25ClS8g06cABShAgXwF/rNyO37ecURWpYjQQKyfOhS6/93hJ2twBqMABSjgRAHWBk7Ef8zQQhbovr6+kJ4lX7lSmYNexFsGx2XETeg4a45EAQpQgAKOF7gaE49uH86XdeDxnRtjWOu6ssZkMApQgAIiCLA2EGEVHs5ByAK9bdu2uHLlCs6dO4f7z6OLR6fOjLgJ1bluzJoCFKAABSwXmL50K1btO2l5h3xaRoQE4tdXB8LP21OWeAxCAQpQQCQB1gYircZ/cxGyQD979iykIr1jx46YNWsWi3QZvzfchDJiMhQFKEABCggpkJKRhV7/WYg7CSl25afRAN8/1xP1K5SyKw47U4ACFBBVgLWBeCsjZIEeGxuLI0eOoE+fPihatKj5JHcfH5/H6j333HPiyQqaETehoAvDtChAAQpQQFaBi3fiMPzr5UhMy7Q57hvPtETvxjx01mZAdqQABYQXYG0g3hIJWaBLt7VrNBqYTCazmPTveX2kn0s/y83NFU/2gYzi4uLw0UcfYc2aNbh16xZKly6Np556Cu+99x4iIiIeyf306dN4/fXXsWPHDhgMBtSrVw9vv/02GjVqZPc8uQntJmQAClCAAhRQicDl6HuY9NN6XI6OtypjXy8PvNGrFTrXqWRVPzamAAUooDYB1gbirZiQBfrQoUMfW5TnRTh37lzxZP+X0bFjx/D000/j6tWrqFmzprk4P3nyJC5evIigoCDs2bMHlStX/id/6c4B6fVy6enpqFGjBqQD8/bt22f++bp169ChQwe75spNaBcfO1OAAhSggMoEsg0G/LB5v/lk9/SsnAKzb/ZkOUzp2QLSye38UIACFHB1AdYG4q2wkAW6eEy2ZWQ0GtGgQQNcuHABy5YtMz9XL32kK//S1fNp06ahadOm+Ouvv/4ZoHnz5ub/Pnv2bIwYMcL8v2/ZsgWdOnVCqVKlzIX94+4osCRLbkJLlNiGAhSgAAVcTSA1MwsbDp7F3rPXcPpmzD/vSvfz8kSlEuGoXrYYnq5fBaUKB7va1DkfClCAAo8VYG0g3pdD9QV6Tk4OPDw8xJP9X0bS7e3SPxUrVnwoR6l4j4qKMhfcSUlJCAwMNJ9aL7Vr3bo1tm7d+lB76Tn8OXPmmP936ee2frgJbZVjPwpQgAIUcCUBo9EEo8kEvU7rStPiXChAAQpYJcDawCouhzQWskBv1aoV2rRpgylTpuSL0K1bN+j1eqxYscIhWHIP8swzz5hzP3jwIGrXro233noL77zzDr799luMGTPmoeE2btxoPtVeuv3fnlv6uQnlXkXGowAFKEABClCAAhSggDoFWBuIt25CFujSIXEDBw7E/Pnz8xUbMGCA+SC169eviydrQUbS7e/79+9HTEwMwsPDMWjQICxcuNB8gr30/PmDn4SEBISGhkK6BX7btm0WRM+7CTehzXTsSAEKUIACFKAABShAAZcSYG0g3nKqtkCXTm6XilipuJVey6a2T3Z2tvm29kKFCplPdpc+0l0Dv//+O27evInixYs/NCXpuXXpVv7IyEjzrfC2frgJbZVjPwpQgAIUoAAFKEABCriWAGsD8dZTiAJ97dq15leQ3f/MmzfPXIhKB6jl9cnIyDBfeZZORpdONV+/fr14sgVk9OWXX2LChAmYOHEiPv30U3PrKlWq4NSpU5Dm5+3t/UiEIkWKmE93T0lJyTf6/Y2WV6MbN26gZMmSuHz5surMmDAFKEABClCAAhSgAAUoIJ8AC3T5LOWKJESBLj13PX36dKvnVL58efOhadKry9T0kQ6Ne+KJJ8zvb5cK5bCwMHP6VatWNb+CTSrCfXx8HpmSdBt8VlaW+VC5/D4s0NX0bWCuFKAABfIWkO6cup6QhNjUVOg0WkQEBaJooD+5KEABClCAArIJsECXjVK2QEIU6Glpabh9+zbi4+Nx7949dO7cGfXr1zcfiJbXR3o3uFSUN2rUCNLz6mr6SH/h6tWrl/lwuI8//hiTJ0/+J33pNWzSLxykZ+qlq9wPfu7f4i79UuLs2bM2T5mb0GY6dqQABSjgEIEsgwHrTp7F4kPHcPLOw49wNSpbCn1rV0erCuWgU9n//zkEj4NQgAIUoIBVAqwNrOJySGMhCvR/z9TSQ+IcIiTzIFJBPmPGDHTp0sV8W/+D7zQfPHgwFixYgMOHD6NmzZoPjSz94kK60t6iRQv8+eefNmfFTWgzHTtSgAIUUFwgOjkFI5euxrnYuHzHalKuNL7s2Rn+Xp6K58QBKEABClDAdQVYG4i3tkIW6NIVZD8/P/MBaq70kV6fNnbsWPPt7X///TeCgoIemt67776LadOmYebMmXjhhRce+tm6devQtWtXjBgxArNnz7aZhZvQZjp2pAAFKKCoQHx6Bp6dtxTXEhItGqd+6RL4sW93eOr1FrVnIwpQgAIUoMC/BVgbiPedELJAF4/J/oykonv8+PHmW9e3b9+OsmXLPhJUeh5duoW9WbNmj7xKbdiwYZAOz5P6Sj+39cNNaKsc+1GAAhRQVmDymk1YfeKMVYO80rIxRjasa1UfNqYABShAAQrcF2BtIN53QegCXXqFmvRKMen59JycnMfqSe9MF/kjHYD39ttv/1Oc53eI2/1XrX3//fcYNWqUeVqbNm0yP5cv9Tt//rxdU+UmtIuPnSlAAQooIhCflo4mX81BTm6uVfGLBwXi9+eH8nl0q9TYmAIUoAAFWKCL+x0QskCXTiofPnw4fvnlF/NJ5wV9LGlTUAylfv78889j1qxZ5vC9e/eGdBJ7cnIyjEbjQ0MuXLjQ/N9PnDiBhg0bIjU11fwcunSr/969e83Pqm/cuBGtW7e2K1UW6HbxsTMFKEABRQR+3HsQH/+x06bYP/R5Gs3LP3pXlk3B2IkCFKAABdxKgLWBeMstZIH+4osv4ptvvjEXpbVr10aJEiXyfC/4fc7FixeLJ/u/jB48BC6/JKVT2u9/zpw5g9deew1//fUXDAYD6tWrB+n5dKlwt/fDTWivIPtTgAIUkF/g5dUbsfakbW/omNiiEcY0qid/UoxIAQpQgAIuL8DaQLwlFrJAj4yMxN27d80F6r9PMxePUF0ZcROqa72YLQXUIGDMjYMx9zpgTAE03tDowqDVlXvoLRVqmIczc3zh13XYcvaiTSmMbVwfE5rb/wtcmwZnJwpQgAIUULUAawPxlk/IAj0wMNB8EJp0cjk/8gpwE8rryWgUcFcBk8mI3KxdyE5fCEPmVgAPP7aj1UfB028gPHy6Q6MNcFcmi+f9+rot+PXYKYvbP9hwSuumGNagtk192YkCFKAABdxbgLWBeOsvZIHevHlzSO/9lp7H5kdeAW5CeT0ZzT0EsnINuJ2ejJTsTHhodQj28kFRnwC3vUKcm30MGYkTYDRcKvgLoPGDV8BL8PQb6bZeBSMBG06dw0urfrOk6SNt1o0aiKjwMJv6shMFKEABCri3AGsD8dZfyAJ9y5Yt6NChg/lwNOn5a37kE+AmlM+SkVxf4FxiLBZfPIxVV08izZD90ITLBxZC//K10b1MFQR4eiuCkZ1lQEZaJrx9PeHl7anIGNYGzcnchoyEMYApw6quHr4D4R30LjQarVX93KVxdm4umn81B3Fp6VZNuU7J4lg8uLdVfdiYAhSgAAUocF+AtYF43wUhC3SJ6fXXXze/93vHjh3mQ+Ly+/j4+IgnK2hG3ISCLgzTEkrgcvI9TP17I/bfvV5gXr56D/QrXwsvV2tuvrpu7ycuOhGbluzD5l/2I+5O4j/hggr5o1WPOujUvyEiyhS2dxib+huyjyA97lkAmTb19/R/Ht6Br9rU1x06/bDnb3zy5y6rpvpd765oWSHSqj5sTAEKUIACFGCBLu53QMgCvX379rh58yZOnz5d4C2R0inp0knn/FgmwALdMie2cl+Bg3dvYNTO5UjKtq4IbVK0LL5p1BN+HrZd6U5JTMM3b67Azt+OwZj78PPc/16Nui0q4cX3e6FwRIjDFspkMiA1thlMuTfsGtO30K/Qe/HOqLwQjSYTJq3aiA2nz1lkPK7pU3ihaQOL2orWSHpzybEdZ3Bo6wmcP3wFty9Gw5BjgJePF0pVikCFWmXxVJfaiKxWWrTUmQ8FKEABlxJgbSDecgpZoGu11t0C+e93iovHLE5G3ITirAUzEU9AuqW99x8LkZqTZVNyTYuVw+wmvaG38s+w2FsJeGPgd7h5OdbicQsVCcJ7C0ajTFQxi/vY0zAnYwsyEkbYE8LcV+/dBb6h39gdx1UD5BqN+M8fO7Hw76MwGPP+RY2Phx4vt2yCgXVrqI5BKsx//3kXln2yHjfO3S4w/yefqoABU7ujVssqBbZlAwpQgAIUsF6AtYH1Zkr3ELJAV3rS7hyfm9CdV59zz09Aega4zW/f4WZakl1QLzzZCC9VbWZxjJSkdEzq+RVuXIyxuM/9hlKR/vmq8Q65kp52rz9ys3ZaneOjHfTwL7IXWl0RGWK5boiYlFQsP3IS60+dQ1xaGrQaDYoHBaJH9SfxdNVKCPD2Ut3k427F47Pn5pivmlv76TCsOUZ/3B8+/sqc92BtPmxPAQpQwFUEWBuIt5Is0MVbE0Uz4iZUlJfBVSyw7topTNi7xu4ZBHv6YHfXF+Ct97Ao1pevLTM/c27rp07zSnj3p1G2dreon9FwHamxjS1qa0kjr4DJ8Ap4wZKmbOMiArcuRmNy+w8hFem2fqLqlMP7aycjIMTP1hDsRwEKUIAC/xJgbSDeV0I1BXpsbCyCgoLg5aW+qwYiLTs3oUirwVxEEujzx0L8fde+56vvz+c/9TujZ9lqBU5Puno+oN5bkE5rt+fz4/bXFT04znxye/xge1J8qK+HTw/4hHwhWzwGElsgISYJ45q8hdgb9+xOtHKDJ/Cfza/Dw1NvdywGoAAFKEABgLWBeN8CYQt06eC32bNnY9asWbh48SKys7MxcOBA/PTTT2bFjIwM88/HjRsnnqrAGXETCrw4TM1pAtKz50jubakAACAASURBVB03zZFt/OqhEVjZdkiB8VbN2Y4f3rP/qn2Pkc3Rb3INxKRtQlLWKaRkn0WOUbpVXwNPXSgCPSsjyKsaivl1gJfe+hPgc9JXIyNRvj9r9V6t4FtoXoE+bKB+AemZ83f7fIXdaw/KNpmBU7tjwBs9ZIvHQBSgAAXcWYC1gXirL2SBLhXnLVq0wJ49e1CyZEnUqFEDa9euNRfo8+fPNytu3rwZHTt2xPLly9GjB/+P2tKvFjehpVJs504CC84fxNuHt8g65ZPPvAKfAm5zf77DDFw+U/BBWfklVrRSIhqPvIISNQs+YE4DPYr4tUH5kBfh51HG4vnmZGxERsJoi9sX1FDv3RG+od8V1Iw/dwGBPWsP4u1nv5R1Jjq9Dt8d/ACloiJkjctgFKAABdxRgLWBeKsuZIH+9ttvQ/rnrbfewptvvgnpVHfpnwcLdImyTJkyqF69Otassf8KlHhLo0xG3ITKuDKqugVmntyJL07KcQDa/zvs7voiivoG5AvTq9rrSE3OsAlP55GLp4ZdRK1eV2Ht69e1Gi88ETIBpQMHQqMp+K0Zhqz9SL/Xy6Y88+rk4TsQPsHvyxaPgcQVmNjqXZzac172BLuMboUXvij4LhXZB2ZAClCAAi4mwNpAvAUVskBv0KABkpKScObMmX/E8irQO3XqhLNnz+LSpUviyQqaETehoAvDtJwq8MWJHZh5apesOezo8jyK+wXlG7PLEy/DkJNr9bievgZ0/eAwSlRPsLrvgx2K+nVC1cIfQqvJ/3lekykbqTENYDLG2TXe/c6+oQuh97b8pHtZBmUQhwtcPX0To2u/psi40mnuS6/OhLcfT3VXBJhBKUABtxFgbSDeUgtZoEuHwbVu3RorVqzIt0CXbnHfu3cvEhLs+0uqeMuiXEbchMrZMrJ6BeaeO4D3j/wu6wSO9pyEAI/8D7XsXeMNpCSmWzWuzsOI7jMOmotzkwnQaKzq/kjjCP+uqBL2ITQFBMpMnoHs1Jn2DSY9Fa8rDf/wvyy6cm/3YAzgVIE1s7Zg1qSFiuUwY8vrqNakkmLxGZgCFKCAOwiwNhBvlYUs0OvWrYvMzEycOPH/70r99xV06Tn1UqVKITIyEjt3yntrqnjLJF9G3ITyWTKS6wjsjbmKAdsWyzahkn7B2Nb5uQKL3gndPse5Y9etGrfh8AuoN+CyLMX5/YGrhL2P4gHd883DaLiF1NhGAIxW5fvvxl6BU+Hlr+xr4exKkJ1lE/hk5PfYukjeO1MeTG7UR/3Qc3wH2fJlIApQgALuKMDaQLxVF7JAnzJlCmbMmIGFCxeiX79+ZrV/F+jvvPOO+Tn1qVOnmv+TH8sEuAktc2Ir9xIwmkxo+9v3uJJi+zuaHxSbXL0FRld6qkDE3xbvwczXlxfY7n6D8ApJ6DNrP7Q6k8V9LGmo1wagUfF18NaH59s8I/FN5KT/96BOWz4aXUn4F94IjTbQlu7sozKBV9q+j+M7zyqWddcxbfD854MUi8/AFKAABdxBgLWBeKssZIGenp5uPrn9ypUrGD9+PPr06YN69eqZT20fMWIEli5daj69Xbp6fvz4cXh78xk0S79a3ISWSrGduwnMO3cA78lwm7unVofd3V5EqJdvgYQZaVkY0GA60lMyC2wrNej8zhGUb1Lwae0WBftXozJBwxAV+nK+XU2mHGTEj4Aha5vVQ2g0wfAtvAo6faTVfdlBnQITW76LU3vlPyDuvkankS0x7quh6sRh1hSgAAUEEWBtIMhCPJCGkAW6lN/58+cxaNAgHDhwwHybqPQu1fvPSEr/XrNmTfMV9sqVK4unKnBG3IQCLw5Tc6pAcnYmGq/9GmmGbLvy6FGmKmY06GJxjNnvrcHKOdsLbO9fOAPDluyw+sT2AgP/r4GHNhjNSm6DTpv/c/MmUyYyEibBkLnO0tCQrpz7hv4EnccTFvdhQ/ULvNFtBg5uOa7YRHq91BEjPuirWHwGpgAFKOAOAqwNxFtlYQt0iUoqxKUifNeuXebn0XNzc1G1alVIp7wPGzYMOp1OPFHBM+ImFHyBmJ5TBTbfOIvnd6+ErTeQlwkIxa+tByHEgqvn9yealZmNKX1n4eyRa/nOvUaPa2j+onK3C0uD1yryLQr7Fny6uslkhCFzPbLT5iM3++/H5q3RFoGnX394+A2GVhvi1LXl4I4XmPP6Eiz//DfFBp48dwxa9ZXOReCHAhSgAAVsFWBtYKuccv2ELtCVm7b7RuYmdN+158wtE1h88TCmHdxkdZFewi8IC1v0Qyl/6wvR5IQ0vDVsdr5FervXjqNS2zuWTcLGVuWDX0RkyHNW9c7NOYuc9CUwGq7CZEwGNN7Q6MLg4d0Reu820BTwCjerBmNjVQnsWLEf7w/4WrGcZx/9GKWiIhSLz8AUoAAF3EGAtYF4q8wCXbw1UTQjbkJFeRncRQS23jyPVw+sR1K2Zc+G1wkrgW8a90CYt7/NAtKV9PkzfsPmX/bn+Ux6/zm7UTgy1eb4lnQM922DmkW+tKQp21CgQIH0lAz0jxxn8RkLBQZ8oEG5aqUwa997Bb4pwZqYbEsBClDAHQVYG4i36izQxVsTRTPiJlSUl8FdSCDDkIN1105h0cVDOJUQ88jMPLQ6dCxZEf2fqI1ahYrLVihIB8dtW3MIW5btx+1rcUhPzYSPrxf6zd0K30JpigqHetdH3WLzFB2Dwd1L4OsJ87Hu+99ln/S4mUPRaURL2eMyIAUoQAF3E2BtIN6Ks0AXb00UzYibUFFeBndBAeksjJMJ0biUfA9J2Rnw1OoR7OWNuoVLIczbz2Ez3nGjDTIMtxQdr5B3Q9QpNkfRMRjcvQTu3ozHqNpTkJ6cIdvES0ZFYNa+d+Hp7SlbTAaiAAUo4K4CrA3EW3kW6OKtiaIZcRMqyuvU4LmmXMRm3kJ05g1kGTPhofVEEa/iKOpdEnqth1Nz4+D2C+y73QdJWcqdiC1lWMyvC6qFf2x/soxAgQcENs//C5+NkecXP1qtBp9vm4aK9crTmAIUoAAFZBBgbSADoswhWKDLDCp6OG5C0VfI+vyiM29id9wmHE7YhSzjo1ep9BoPVAtugEaF2qG0H19zZb2wGD1Ox72LGylLFE0mKnQKygQNUnQMBnc/AekulFkTF2Ltd1vtnjxvbbebkAEoQAEKPCTA2kC8LwQLdPHWRNGMuAkV5XVocIMxB1tilmNb7FqYLDxzvF5oC3SJGAQfna9Dc+Vg9gvcSlmDk3Gv2R8onwj1iy1GsHcNRcdgcPcUMBqN+PGNZfj1C9teu6b30OGFL4egw9Dm7gnIWVOAAhRQSIC1gUKwdoRlgW4Hnhq7chOqcdUezTndkIofr3yEa+kXrJ5QmGcxjIp8A6Geha3uyw7OEzAY07D9enPkmpQ5KM7PoywaFV8v22F3zpPiyCILHNx6HJ8/9yPibsVbnGb5GqUx6YdRKFe1lMV92JACFKAABSwTYG1gmZMjW7FAd6S2AGNxEwqwCHamIF05//bSO7iWft7mSGGeRTHuiffhq7f9tWA2D86ONgucjnsPN1IW29w/v44VQ19D6aCBisRmUAo8KJCZlok/l+3F+h/+wKVj1x6LU6N5ZXQZ3RpPda4FnV5HRApQgAIUUECAtYECqHaGZIFuJ6DaunMTqm3FHs13452l+CN2ld0TqRXcGP1Kv2h3HAZwnECW4S523+qKHGOSrIP6eZTDUxEroNN6yRqXwShQkEBCTBIuHr2KWxejkZNlgJevJ0pXLoHy1UvDL4iP4hTkx59TgAIUsFeAtYG9gvL3Z4Euv6nQEbkJhV6eApO7m3UHM85OhBHGAtta0mB0uTfxREAVS5qyjSACt1PX48TdyTJmo0X9Yj8j2Lu6jDEZigIUoAAFKEABNQiwNhBvlVigi7cmimbETagor+LB19yaj51xth2ylFdyTwbWwdCyryieNweQT0A6Eft8/AxcTf5JlqCVC01DycA+ssRyZJCrMfFY+tcx3E1KRanCwejfohbCghz3XnpHzpVjUYACFKAABZQSYG2glKztcVmg226nyp7chKpcNnPSRpMR00+NRHpuqmyT0ECD6U/Ohp8+wKaYUrG4bdMJrF95CInxqYiqXBzPDmmMMpHhNsVjJ8sEJPcLCZ/jSpLt75bWQIdKhaaiZOCzuJuRhhNx0Th5Lwb3MtNhMBrhrdOjTGAIqoYVRcWQwvDW6y1LzgGtjl+5gzFfrUBGds4/oxUO8sNPk/ogolCgAzLgEBSgAAUoQAHXEGBtIN46skAXb00UzYibUFFeRYNLt7d/fHaC7GOMLPc6ogJsu715wffb8POcHQ/l5OPriU9nD0VkhaKy58qADwvcTf8Lp+KmIys3xioaf4/yKBf8DrbdBBaePYrT8bH59vfU6tC+TAUMqlgTdYoUd/pJ7z3enY8r0Y+eAt6yenl8OqqLVRZsTAEKUIACFHBnAdYG4q0+C3Tx1kTRjLgJFeVVNPiJpAOYf/VT2cfoEjEQzQp3tjpuwr1UDOj8OQyGR5+Hf6pZFKZ/or7bpq1GEKBDjjEFN5N/wY2UZcgw3Mw3I3/PKJTwfxbbbkXi08N7kJydZfUMaoQVw8eN26NiqHNe0yddNW/40td55l00JAAb3xth9ZzYgQIUoAAFKOCuAqwNxFt5FujirYmiGXETKsqraPDDCTux+HrehYk9A7cr2httivS0OsS+Hefw1qSlefYLCPLBr7/LeZCZ1em5XQeTKRdJWSeRlH0SKVlnkGNMBqCBly4UAZ6VEeRVFUnZRfHyzo3YF33DLh8PrRbjajTE89UaQKfV2hXL2s65RiMaTJgJQ+6jvxgqVzQUK94cbG1ItqcABShAAQq4rQBrA/GWngW6eGuiaEbchIryKhr8ROJ+zL/2mexjdC42AM3Drb8t+OTR65g0cl6e+USUDMW8lXyFm+yLZUfAs/F3MWDzL+bnzeX6dC4bhc+bdoanzrHvqH5r4Was3Xf6kWmM69YYQ9vWlWt6jEMBClCAAhRweQHWBuItMQt08dZE0Yy4CRXlVTR4bOYt/OfcRNnHGF52CioF1rQ6rtFowsje3+DmtXuP9B0ytiX6Dm1idUx2UEbgUtI99NqwxHwAnNwfqUj/qlkXh15Jz8jKwWvzfsNfJy7/M51nm9XA5GeaQ6vVyD1FxqMABShAAQq4rABrA/GWlgW6eGuiaEbchIryKhpcOsV92snhyDTKW2RJp7j76207+frqpVhMm7gEMbcT/5l7i3ZV8fL0btDrHXtVVVF8FQfPNBjQee18XEh89Bcpck1rSp1meK5afbnCWRRHOsn+Skw87iamoWThIEQUCrKoHxtRgAIUoAAFKPD/AqwNxPs2sEAXb00UzYibUFFexYOvuDkHe+9tlW2cqIAaGFnuNbviGQy5OLz/MqRD46TXrJUpz1es2QUqc+ePD/6FWcf3yxz14XDSKe8bug1GhZAwRcdhcApQgAIUoAAF5BVgbSCvpxzRWKDLoaiiGNyEKlqsPFKNzryBT8+9AhNMskzE1tvbZRmcQRQXOJdwF+1X/wSjSZ7vS34J1y1SAr926qf4nDgABShAAQpQgALyCbA2kM9Srkgs0OWSVEkcbkKVLFQ+aa69tQA74jbYPZEqQXUxuPQkp7/T2u6JMMBjBabs2oQl5487TGhd14GoFlbMYeNxIPkEsg0xSM0+irSs48g0XIXRlAkN9PDQhcPPqyr8PavCx6Mi/7yQj5yRKEABCgghwNpAiGV4KAkW6OKtiaIZcRMqyuuQ4NnGLHx9YRpuZ161ebxgj0IY/8QHCPAItjkGO4otkJSVifrLvkWGIcdhifZ+oipmNOngsPE4kH0CJpMRiRnbEZOyEEmZfwEF3JnjrS+HIgEDEObfE3qtbedW2Jcxe1OAAhSggNwCrA3kFrU/Hgt0+w1VFYGbUFXL9dhkU3KSMPvy+7idec3qCUnF+ejIqSjsFWF1X3ZQj8DKi6fw0g7777SwZsa+eg+cHDDeoSe6W5Mf2/6/QEbOJVyKexlp2UetZtFrQ1Am9G2E+nbmFXWr9diBAhSggFgCrA3EWg8pGxbo4q2JohlxEyrK69DgWbmZ2HDnZ+y5t8XicasF1Uf34sMR4METry1GU2nD6fv+wLzThxye/dbuw3hYnMPVrRswOmUBrse/DxOyrev4r9Yhvu0RWegT6LR+dsVhZwpQgAIUcJ4AawPn2T9uZBbo4q2JohlxEyrK65Tg19MvYtfdjTiWtA+5JsMjOWigQeXA2mgU1g4VAqo5JUcO6niBnut/xsHYWw4f+LMmHdHziSoOH5cDWiZwM/EL3Er60rLGFrTy96yJqCLzodcGWNCaTShAAQpQQDQB1gairQivoIu3IgpnxE2oMLATw0tX1O9kXsOdzOuQ/t1D64ki3sVR3KccfHS+TsyMQztDoM6Sb3A3I83hQ4+v0RATazV2+LgcsGCB6OSfcC3h7YIbWtki0OspVCyyABqN3sqebE4BClCAAs4WYG3g7BV4dHxeQRdvTRTNiJtQUV4Gp4AwAlUXfYnk7CyH5zOmaj28Vre5w8flgPkLpGefx8k7nWGCMocGlgx+FRFBY7gMFKAABSigMgHWBuItGAt08dZE0Yy4CRXlZXAKCCNQa/HXuJeZ7vB8Xqz+FF6u3cTh43LAxwuYTAaciu6JtGzlXrmngSeqRmyAj0d5LgUFKEABCqhIgLWBeIvFAl28NVE0I25CRXkZnALCCLRdNRfnEuIcns/bDVpjSOVaDh+XAz5eID5tIy7EjVWcqJBvF5Qv/JXi43AAClCAAhSQT4C1gXyWckVigS6XpEricBOqZKGYJgXsFJi04zf8evGknVGs776iU3/UKVLc+o7soZjAmZj+SM7co1j8+4E18EDNErvhoSus+FgcgAIUoAAF5BFgbSCPo5xRWKDLqamCWNyEKlgkpkgBGQSkV6xJr1pz5Eer0eDUgPHw9fB05LAcKx+BzJwbOHa7qcOMSgW/hmJBoxw2HgeiAAUoQAH7BFgb2OenRG8W6EqoChyTm1DgxWFqFJBR4GpyApr9OlvGiAWHalSsNBZ3eLbghmzhMIG4tDW4FDfBYeOF+LRDhfDvHDYeB6IABShAAfsEWBvY56dEbxboSqgKHJObUODFYWoUkFlg4OZfsOPWVZmjPj7cty27oWOZKIeNx4EKFrgW/x6iU34suKFMLTx1Eebb3PmhAAUoQAF1CLA2EG+dWKCLtyaKZsRNqCgvg1NAKIGt1y9gxO+rHJJTUV9/7Oo9Gh5anUPG4yCWCZyLHYbEjG2WNZapVd2SZ6DVessUjWEoQAEKUEBJAdYGSuraFpsFum1uqu3FTajapWPiFLBawGQyYdCW5Q65ij6rRTd0Ksur51YvksIdzkT3Q3LWXoVHeTh87RJHoNcFO3RMDkYBClCAArYJsDawzU3JXizQldQVMDY3oYCLwpQooKDArdRkSK9cS83JVmyUzmWj8E2LborFZ2DbBc7EDERy5i7bA9jQs07JE9Bp/W3oyS4UoAAFKOBoAdYGjhYveDwW6AUbuVQLbkKXWk5OhgIWCay/fBYvbF8Lk0WtrWtUJjAYqzoPQKi3r3Ud2dohApfiJiIuzTGPOUgT0mp8UKfkSWg0WofMj4NQgAIUoIB9AqwN7PNTojcLdCVUBY7JTSjw4jA1CigosOTcMby2e7OsRXqpgGAs6fAsSvgHKZg5Q9sjcCd5Lq4nvGtPCKv6+nvVwZNFl1vVh40pQAEKUMB5AqwNnGf/uJFZoIu3JopmxE2oKC+DU0BogQ1XzmHK7k1Izs6yO8864cUxq2VXFPENsDsWAygnkJL5N07H9FZugH9FLhowFKVDpzlsPA5EAQpQgAL2CbA2sM9Pid4s0JVQFTgmN6HAi8PUKOAAgei0FEzZvRnbbl62aTQvnR6TazfB0Mq1odPyNmabEB3YyWjKwdFbTZCTG+OQUSsVWYZA73oOGYuDUIACFKCA/QKsDew3lDsCC3S5RQWPx00o+AIxPQo4QEA63X3n7atYcOYI/rhxCUZTwU+nF/L2RZ8K1dC/Yg0U9w90QJYcQi6Bm4lf4lbSF3KFe2wcH48oVC22ERqNRvGxOAAFKEABCsgjwNpAHkc5o7BAl1NTBbG4CVWwSEyRAg4UkE553337Go7HRePkvRjEZ6bDYDTCS6dDmaAQVCtUFNUKF0PjiNKQrp7zoz6BbEMsjt1uAaMpXdHkyxX6Dwr791J0DAanAAUoQAF5BVgbyOspRzQW6HIoqigGN6GKFoupUoACFJBJIDplAa7FvyVTtEfDBHo3RMXwhTy9XTFhBqYABSigjABrA2Vc7YnKAt0ePRX25SZU4aIxZdUJJKZlYN/F6zh9MxZnbsUiMT0TuUYjfD09EFmkECqXCEetssXxRNEw1c2NCatTwGQy4mzMACRn7ZV9AlqNH6pFbIKXvoTssRmQAhSgAAWUFWBtoKyvLdFZoNuipuI+3IQqXjymLrzAyRvRWLL7GDYeO4dsQ26B+VYvVQzPNqyGDtWj4KHXFdieDShgj0BObjzOxPRBRs4Fe8I81FcDD0SFz0WQT2PZYjIQBShAAQo4ToC1geOsLR2JBbqlUi7SjpvQRRaS0xBKIDUzC5+u34nl+0/YlJd0Jf39Z9uicokiNvVnJwpYKpCTG4ezsUOQnn3K0i6PbafV+KJC4e8Q5NPE7lgMQAEKUIACzhFgbeAc9/xGZYEu3poomhE3oaK8DO6GAtJV85cWrMedxBS7Zq/TajC+fSMMbV6Hp2DbJalc5xxDLpbtOoZ7Kel4pmFVFC8UpNxgCkY2GjNxM+kz3En+EYDRppECvOpBOhTO26O0Tf3ZiQIUoAAFxBBgbSDGOjyYBQt08dZE0Yy4CRXlZXA3Ezhy9TbGzFmFtKxs2WY+vEUdTOjQmEW6bKLyBfpk9V9YuP2wOWBESCDWTh0CD516H01IyTqCW4lfISnzLwAFv2pPmre3vhyKBQ5HYf8+PBBOvq8WI1GAAhRwmgBrA6fRP3ZgFujirYmiGXETKsrL4G4kcCU2Hv1mLkFKpnzF+X2+lzs3xZBmtd1IUx1THfzlMhy9cvufZLdMH4kiwf7qSD6fLDNzruFu2q9IzTqCtOwTyDUm/9Naesbc17Mi/DyrINS3E6TT2vmec9UvOSdAAQpQ4B8B1gbifRlYoIu3JopmxE2oKC+Du4mAdCL7wG+W4fj1aEVmrNdpsWxcP0RFFFYkPoPaJrBi7wm8s+x3c+cGFUrhu+d6uFyxajKZYDDGw2jKhFSc63XB0Go8bQNjLwpQgAIUEF6AtYF4S8QCXbw1UTQjbkJFeRncTQTmbT+ITzfsVHS2lYuHY/GLfSEV6/yII3DmRoz5GfT6FUrx5H1xloWZUIACFKCAjQKsDWyEU7AbC3QFcUUMzU0o4qowJzUJZGTnoNV7s5GckaV42p8O6IR21SsoPg4HoAAFKEABClDAPQVYG4i37izQxVsTRTPiJlSUl8HdQGDlgZOYtnyrQ2ZaL7Ik5o55xiFjcRAKUEAZgVxjLq6lx+Bi6k2k5KRDAw1CvQLxhH8JRPiEudxjEsooMioFKKCUAGsDpWRtj8sC3XY7VfbkJlTlsjFpgQT6f70Ux67dcVhGv706FKXCgh02HgeiAAXkEbiSegfrbu/GHzEHkZ6b9x03oZ6B6FCsATpHPIUwL+5zeeQZhQIUsEaAtYE1Wo5pywLdMc7CjMJNKMxSMBEVCmQbDKg39RsYcm17d7QtU/6gTzt0rV3Zlq7sQwEKOEEgIzcLP15ejzW3dlk8uqdWjyFlO6JHiWbQaXjuhMVwbEgBCtgtwNrAbkLZA7BAl51U7IDchGKvjzOyk05tvpWSgtNxsUjKzIRGA4R6+6JKeDjC/dT/Cik5TU/eiEafr5bIGbLAWAMa18SUbs0LbMcGFKCA8wXuZMThteM/4FbGXZuSqRFcHtOrDIef3tum/uxEAQpQwFoB1gbWiinfngW68sZCjcBNKNRyODWZi/H3sOjEMay/cBb3MjLyzCXCPwBPV6yMflWqoXhAoFPzFWHwdYfO4LWlmxyaSsMKpfHDyB4OHZODUYAC1gvEZMbjpSMzcTcr0frOD/SoFFgaH1d/Dj46L7visDMFKEABSwRYG1ii5Ng2LNAd6+300bgJnb4ETk8gMTMDb+/YhtXnzlici1ajwZDqNfFyg8bw8fCwuJ+rNVy+7zjeXvGHQ6dVq2wEFox91qFjusNghpxc6PRaHtDlDovtgDlKB8FNOPIVzqZcl2U06bn0iVHc97JgMggFKJCvAGsD8b4gLNDFWxNFM+ImVJRX+OD7bt7Ai5vXIy493aZcywQF49uOXVExrLBN/dXeacWBk3jLQSe437eqG1kC88b0UjudMPlfO3cHn01YiAvHrsPT2wMdBjTC8De7Q++hEyZHJqI+gWXX/8Ccy+tlTfzDaqNRJ7SirDEZjAIUoMC/BVgbiPedYIEu3poomhE3oaK8Qgf/69pVjNqwGtm5uXblGeTljZ+7P4MnCxexK44aO287dQkv/rTWoam3q/YEPh3Y2aFjuupgiXEpGNvqAyTEJj80xS7DmmHs+71dddqcl8IC0qFwffdMR1pupqwjVQwohZm1X5I1JoNRgAIUYIEu/neABbr4ayRrhizQZeVUTbAL8ffQddkiZBoMsuRcyMcXG/sNQmFfP1niqSVIdGIKWr8/x6HpTujQCCNa1nPomK462G8LdmLmq0sfmZ509XzVpc95Fd1VF17heW28sw+fnVumyCjf1J6ICgElFYnNoBSgAAUkAdYG4n0PWKCLtyaKZsRNqCivkMENRiN6Ll+C47HRsubXrlx58+3uGunYdxV8pNPqc7MPwGi4CJMpAxqNH3QeVaDzrGpx9lKMZu/8gPhU2x4RsHigBxpKB8RJB8XxY7/AL19vwbz31+QZ6Ndzn8Av0Mf+QRjB8IHfeAAAIABJREFU7QReP/4D/o63/EwPa4D6lGqN4eU6WdOFbSlAAQpYJcDawCouhzRmge4QZnEG4SYUZy0clcmC40fw1l9/KjLcnM5Po1XZSEViyxXUZExBdvovyElfBKPh0iNhtR7V4Ok3CB4+3aDRFHxqsvQMuvQsuiM+gT5e+GPqSPh4uu/BfHI6H9t9HlOe+fKRkMUjwzFn11tyDsVYbiIg/dKu955pSMxJVWTGtUOi8FH1MYrEZlAKUIACkgBrA/G+ByzQxVsTRTNS6yY0Gk24eSse5y/G4Nr1OGRlGaDTaRFWyB8VniiK8pHh8PH2VNROjcGNJhNaLZqHq4kJiqTfuGRpLHz6GUViyxE013AZ6fcGwZRb8MnKWo8a8A2dC60uLN+hT9+MQe8vF8uRXoExBjethVe6NCuwHRtYLvDDWyuw6of//4WVdNX8/aUvIKpmGcuDsCUF/ieQlJ2KZ/a8qZhHmGcQljScrlh8BqYABSig1trAlVeOBborr24ec1PbJrx3LxUbNh3Duo3HcDcu5bGrpddr0bRRFJ7uUhNVnyyhmtuulf767b15Hf1WLVd0mO2DhqN0ULCiY9gS3Gi4jrS47jAZ71rcXasvD7+wldBo85/PoFnLcPjKbYvj2tJQp9Vg3StDUCpMPFtb5iNSn0PbTuP0wcvwDfBG0y61Ubh4iEjpMRcVCcRmJqD/vncUyzhA74uVjd9XLD4DU4ACFFBbbeAOK8YC3R1W+YE5qmUTGnKNWLZ8P35atBs5ButOHa9TqwxeHt8eRYsEudnqPjrdz/btxsy/9ynq8HGrtuhd2fLnuBVN5n/BpdtO0+I6wZhj/a3oeu8O8A39Pt80z9+JQ+8vf4b0PVXqM6Z1fbzQrqFS4RmXAhSQQSAhO8V8i7tSn1DPACxrqNwvAJTKm3EpQAH1CKilNlCPqP2ZskC331BVEdSwCWPvJmPau6tx9vwdm219fTwxcVw7tG5R2eYYrtBx2NqV2HbtiqJTGVC1Ot5t3lrRMawNbsjajfR7fa3t9r/2GviH/wWtPv9bnr//Yz9mbtpj4xj5d6tQLAzLxvWDh57v5lYEmEEpIJOA0WRE911vIF3mV6zdT69qUCQ+q/mCTNkyDAUoQIFHBdRQG7jburFAd7MVF30T3olOxITJSxDzr/cU27pML73YFt061bS1u+r7tVo4F5cVev78Pk7TUmUwv1tPoazS40fDkLnR5pw8/UbDO+iNfPvnGo14edEGbD1x0eZx8uoYFuCLBWOf5a3tsqoyGAWUE3jl6Dc4mijvnwP3s+1ZohnGlH9aueQZmQIUcHsB0WsDd1wgFuhutuoib8LUtCyMeuEn3L6TKOuqvDutO5o0rCBrTLUEazp/Dm4kJymaboPiJbGkR29Fx7AmuMmYgZRo6c4J6x6NeHAMjbYoAooeKHBY6fGLV5dsxJbjFwpsa0mDIkH+kF6rFlmkkCXN2YYCFBBAYPn1bfjh8lpFMvm4+nOoFeKe//+lCCiDUoACjwiIXBu463KxQHezlRd5E874YiM2bDou+4oEBflg/vcjEBzsK3ts0QO2/fknXIi/p2iaLUqXxdyuPRQdw5rgRsNNpMba++y2DgHFLlt02KB0JX3+X4fw9Za9yLbyvIQH59W0UllM79ka4UH+1kyXbSlAAScLJOekoc+e6cgxGWTNpKRPOH6sN8WiP4dkHZjBKEABtxIQuTZwq4V4YLIs0N1s5UXdhIePXsPEKUsVW41WzSvhzSldFYsvauDnfluLTZfkubr7uDkOr1EbU5s0F4bAaLiK1NimducTUOwKNBrLnwG/FHMPH67Zjn0XCn6l24PJFQ0OwIvtnkLX2pX5F3G7V40BKOAcge8ursaKm3/JOvjkiv3QpmhdWWMyGAUoQIF/C4haG7jzSrFAd7PVF3UTvvz6Mhw8fFWx1dBogMXzRqNYUfd6ZdU3f+/HJ/t2KeYqBf6ibUd0i6qk6BjWBDcZE5ESXc2aLo+21QQisJj1J8BLgaRCfdne49hx5gpuxuf9eEGgjxdqlonAM/WrQrpyrtNq7cuXvSlAAacKZOZmY/TBGbidESdLHvVDK+PdqiP4SztZNBmEAhTIT0DU2sCdV40Fuputvoib8MbNeAwcMVvxlejbuz5GDxPnSq/iEwZwIjYGXZctUmwovVaLPUNGobCfn2Jj2BI49W5XGHOO2tLV3Efv3QW+od/Y3P9+x6T0TJy9HYvEtEzkmkzw9dSjXHghlCwUxL94263LABQQS+BCyg28fPQbpOdm2ZVYMe9C+KLmOIR6BdoVh50pQAEKWCIgYm1gSd6u3IYFuiuvbh5zE3ET/rx0L2b/tEPxlShWNAhLfhqj+DiiDfD0Lz/jWEy0Iml1Kl8BX3fookhse4Jmpy9HZuIkm0P4FloOvVd9m/uzIwUo4J4Cp5OuYuqJH5BiyLAJoIRPYUgHw4V7h9jUn50oQAEKWCsgYm1g7RxcrT0LdFdb0QLmI+ImnPbuKuzYfd4hK7F2+TgEBvg4ZCxRBll/4Rxe3LRekXRW9uqLmkUjFIltT1CTKROpMfVhMiZYHUarrwi/wpt5hdtqOXagAAUkgdjMBHx+7hccTDhrFUjniIYYWa4LfPXeVvVjYwpQgAL2CIhYG9gzH1foywLdFVbRijmIuAn7DvkOd6KVfRXYfaJPP3wWtWuWsUJM/U1NJhNGrF+NP69elnUyg6rVwNvNWskaU85gOZl/IiN+uHWvW9P4wS9sOXQeVeRMhbEoQAE3E5D+3N0TdxJrb+/C4YTH/wJap9GiSeHq6F68KSoHudf/N7nZV4LTpYCwAiLWBsJiOSgxFugOghZlGBE3YccenyM9PdshRNNe64qWzcQ50MwhkwYQk5qKLssW4W56mixDlg8JxZpnB8DXw0OWeEoFyclYi4yElwDkFDyEJhC+oXOg92pQcFu2oAAFKGChgHRF/VzKdVxMuYVkQxo00CDUMxAVAkqiYmApBHqIdYaHhdNiMwpQwEUERKwNXITW5mmwQLeZTp0dRdyEHbp/jowMxxTob77aBa1aVFbn4tmZ9dm4uxiwejnuZdj2bOT94UsHBWNJj94o5h9gZ0aO6W7IPoLslC9hyNoGwJTHoB7Q+3SAV8BL0OkjHZMUR6EABShAAQpQgAICCIhYGwjA4tQUWKA7ld/xg4u4CZ/p/w3i7qU6BOOjd55Bg3ruW4RdTojH+M0bcPJurE3ejUqWwudtOgp3arslkzEariE7fRmMhkswmdKh0fhD5/EkPHx7Q6sLtyQE21CAAhSgAAUoQAGXEhCxNnApYBsmwwLdBjQ1dxFxE06e+gsOHLziENbli8aicJg6rvwqBZKTm4vvD/+N7w4dQFqOBbd+Awj19sGkpxqj75NVeXiaUgvDuBSgAAUoQAEKUMDBAiLWBg4mEG44FujCLYmyCYm4Cef8tAOLlu5VduIAQkL8sHLx8yww/yedmp2N1edOY+35szh1Nxbp/yrWA728UC28KHpUrIyO5SvAS69XfI04AAUoQAEKUIACFKCA4wRErA0cN3sxR2KBLua6KJaViJvw1OlbeH7iIsXmfD9wh7ZV8erEjoqPo8YBco1GXE1KRFJmpvkXGIV8fFAyMIi/zFDjYjJnClCAAhSgAAUoYKGAiLWBham7bDMW6C67tHlPTMRNKL2OZuQLP+HiJduei7Z0Cb/7ahAqVihmaXO2owAFKEABClCAAhSggEsLiFgbuDS4BZNjgW4Bkis1EXUTbv79JD78ZINi1FUqF8fXnw1QLD4DU4ACFKAABShAAQpQQG0CotYGanOUM18W6HJqqiCWqJvQaDTh5deX4fDRa7Ireuh1mP3NEJQpHSZ7bAakAAUoQAEKUIACFKCAWgVErQ3U6ilH3izQ5VBUUQyRN+Gd6CSMGDsXaenyvhN9zPDm6NOrvopWialSgAIUoAAFKEABClBAeQGRawPlZy/mCCzQxVwXxbISfRMePX4dr765HFlZBlkMunSsgYkvtuVhZ7JoMggFKEABClCAAhSggCsJiF4buJK1pXNhgW6plIu0U8MmPH7yJqa+sxLJyRl2qffuWRdjhreAVquxKw47U4ACFKAABShAAQpQwBUF1FAbuKJ7fnNige5mK66WTRifkIYvvt6CHbvPW71C4YUD8MqEDqhbu6zVfdmBAhSgAAUoQAEKUIAC7iKgltrAXdZDmicLdHdabQBq2oTS69cOHbmKVeuOYO/+i5AOksvvU6J4CLp1romObavBz8/LzVaW06UABShAAQpQgAIUoIB1AmqqDaybmXpbs0AXcO12796N6dOnY//+/dDr9WjSpAk++OADPPnkk3Znq9ZNGHs3GdKt7+cvROPq9TjzM+o6nRaFwwJQoXwRVIwqhkpREbyd3e5vCANQgAIUoAAFKEABCriLgFprA1deHxbogq3uxo0b0aVLF3NW9evXR2ZmJo4cOQJfX1/s3LkTNWvWtCtjbkK7+NiZAhSgAAUoQAEKUIACLiPA2kC8pWSBLtCaSLd0R0ZG4vr161i/fj3at29vzu7HH3/EiBEj0Lx5c2zbts2ujLkJ7eJjZwpQgAIUoAAFKEABCriMAGsD8ZaSBbpAa7Jlyxa0a9fOXIzPnj37oczatGmD33//HefPn8cTTzxhc9bchDbTsSMFKEABClCAAhSgAAVcSoC1gXjLyQJdoDUZPHgwFixYAOk29/tXz++n9+2332Ls2LF4++23MW3aNJuz5ia0mY4dKUABClCAAhSgAAUo4FICrA3EW04W6AKtSdOmTc3PmSckJCA4OPihzKTn0GvVqoUhQ4Zg3rx5NmfNTWgzHTtSgAIUoAAFKEABClDApQRYG4i3nCzQBVoT6db1q1evIicn55Gsbty4gVKlSqFt27bYvHlzvlnf32h5NZLilCxZEpcvXxZo5kyFAhSgAAUoQAEKUIACFHC0AAt0R4sXPB4L9IKNHNbC398f0j/R0dGPjJmRkWE+yb1KlSo4ceIEC3SHrQoHogAFKEABClCAAhSggGsKsEAXb11ZoAu0JgEBAeYiPCYm5pGs0tPT4efnh2rVquHYsWM2Z81NaDMdO1KAAhSgAAUoQAEKUMClBFgbiLecLNAFWpMKFSqYbz2XbnHXaDQPZSa9eq106dLmU943bdpkc9bchDbTsSMFKEABClCAAhSgAAVcSoC1gXjLyQJdoDVp1qwZduzYgfj4eISEhDyU2aFDh1CnTh0MHToUc+fOtTlrbkKb6diRAhSgAAUoQAEKUIACLiXA2kC85WSBLtCaDB8+3Fx8r1u3Dp07d34os5kzZ2LcuHF477338MYbb9icNTehzXTsSAEKUIACFKAABShAAZcSYG0g3nKyQBdoTbZt24aWLVvm+So16X/fvn07Ll26hLJly9qcNTehzXTsSAEKUIACFKAABShAAZcSYG0g3nKyQBdoTUwmE6KioszPoa9duxYdO3Y0Zzd79myMGjUKrVu3xtatW+3KmJvQLj52pgAFKEABClCAAhSggMsIsDYQbylZoAu2Jr///js6dOgAo9GIBg0aICsrC4cPHzaf4L5nzx5UrVrVroy5Ce3iY2cKUIACFKAABShAAQq4jABrA/GWkgW6eGuCvXv34s0338T+/fuh0+kgHR730UcfoVKlSnZny01oNyEDUIACFKAABShAAQpQwCUEWBuIt4ws0MVbE0Uz4iZUlJfBKUABClCAAhSgAAUooBoB1gbiLRULdPHWRNGMuAkV5WVwClCAAhSgAAUoQAEKqEaAtYF4S8UCXbw1UTQjbkJFeRmcAhSgAAUoQAEKUIACqhFgbSDeUrFAF29NFM2Im1BR3v9r7z6gpKjSv48/TZohCQgoUTGQMyogCCiSg4oruIgIIqgrrmtmhb8Cwiqs4uprAkVRBAFXFlEBRSS6RFEEBSWISJYgOU16z3N3e3aYaWZ6urt6blV965w9q07VrVuf51bP/LqqbtE4AggggAACCCCAAAKuESAb2FcqArp9NXG0R5yEjvLSOAIIIIAAAggggAACrhEgG9hXKgK6fTVxtEechI7y0jgCCCCAAAIIIIAAAq4RIBvYVyoCun01cbRHnISO8tI4AggggAACCCCAAAKuESAb2FcqArp9NXG0R5yEjvLSOAIIIIAAAggggAACrhEgG9hXKgK6fTVxtEechI7y0jgCCCCAAAIIIIAAAq4RIBvYVyoCun01cbRHnISO8tI4AggggAACCCCAAAKuESAb2FcqArp9NXG0R5yEjvLSOAIIIIAAAggggAACrhEgG9hXKgK6fTVxtEechLnjPXnslHz1yWrZueU3OX3itBQulihValaUpp0aSKGEgrlrjLURQAABBBBAAAEEELBIgGxgUTH+2xUCun01cbRHnITh8e7a+pvMHPelfPH+Ujlx9GSWjUqUKS4dereQGwa0ltLlS4bXKGshgAACCCCAAAIIIGCRANnAomIQ0O0r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\" width=\"640\">" ], "text/plain": [ "<IPython.core.display.HTML object>" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "Text(0, 0.5, 'entry ykey')" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data = {'xkey': np.arange(50),\n", " 'color': np.random.randint(0, 50, 50),\n", " 'size': np.abs(np.random.randn(50)) * 100 }\n", "data['ykey'] = data['xkey'] + 10 * np.random.randn(50)\n", "\n", "fig, ax = plt.subplots()\n", "# 使用字串 key 指定\n", "ax.scatter('xkey', 'ykey', c='color', s='size', data=data)\n", "\n", "ax.set_xlabel('entry xkey')\n", "ax.set_ylabel('entry ykey')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### § 類別資料呈現\n" ] }, { "cell_type": "code", "execution_count": 17, "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", " fig.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 overridden (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", " event.shiftKey = false;\n", " // Send a \"J\" for go to next cell\n", " event.which = 74;\n", " event.keyCode = 74;\n", " manager.command_mode();\n", " manager.handle_keydown(event);\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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cSEKBqZAAAIQgAAEIAABCEAAAhCAAAQgAAEIxJcAQlx8Y4tnEIAABCAAAQhAAAIQgAAEIAABCEAAAiEigBAXomBgCgQgAAEIQAACEIAABCAAAQhAAAIQgEB8CSDExTe2eAYBCEAAAhCAAAQgAAEIQAACEIAABCAQIgIIcSEKBqZAAAIQgAAEIAABCEAAAhCAAAQgAAEIxJcAQlx8Y4tnEIAABCAAAQhAAAIQgAAEIAABCEAAAiEigBAXomBgCgQgAAEIQAACEIAABCAAAQhAAAIQgEB8CSDExTe2eAYBCEAAAhCAAAQgAAEIQAACEIAABCAQIgIIcSEKBqZAAAIQgAAEIAABCEAAAhCAAAQgAAEIxJcAQlx8Y4tnEIAABCAAAQhAAAIQgAAEIAABCEAAAiEigBAXomBgCgQgAAEIQAACEIAABCAAAQhAAAIQgEB8CSDExTe2eAYBCEAAAhCAAAQgAAEIQAACEIAABCAQIgIIcSEKBqZAAAIQgAAEIAABCEAAAhCAAAQgAAEIxJcAQlx8Y4tnEIAABCAAAQhAAAIQgAAEIAABCEAAAiEigBAXomBgCgQgAAEIQAACEIAABCAAAQhAAAIQgEB8CSDExTe2eAYBCEAAAhCAAAQgAAEIQAACEIAABCAQIgIIcSEKBqZAAAIQgAAEIAABCEAAAhCAAAQgAAEIxJcAQlx8Y4tnEIAABCAAAQhAAAIQgAAEIAABCEAAAiEigBAXomBgCgQgAAEIQAACEIAABCAAAQhAAAIQgEB8CSDExTe2eAYBCEAAAhCAAAQgAAEIQAACEIAABCAQIgIIcSEKBqZAAAIQgAAEIAABCEAAAhCAAAQgAAEIxJcAQlx8Y4tnEIAABCAAAQhAAAIQgAAEIAABCEAAAiEigBAXomBgCgQgAAEIQAACEIAABCAAAQhAAAIQgEB8CSDExTe2eAYBCEAAAhCAAAQgAAEIQAACEIAABCAQIgIIcSEKBqZAAAIQgAAEIAABCEAAAhCAAAQgAAEIxJcAQlx8Y4tnEIAABCAAAQhAAAIQgAAEIAABCEAAAiEigBAXomBgCgQgAAEIQAACEIAABCAAAQhAAAIQgEB8CSDExTe2eAYBCEAAAhCAAAQgAAEIQAACEIAABCAQIgIIcSEKBqZAAAIQgAAEIAABCEAAAhCAAAQgAAEIxJcAQlx8Y4tnEIAABCAAAQhAAAIQgAAEIAABCEAAAiEigBAXomBgCgQgAAEIQAACEIAABCAAAQhAAAIQgEB8CSDExTe2ofOsWrVqsmnTJqlVq1bobMMgCEAgfgRWrlwp5cuXl9WrV8fPuf/3iLoa29DiGARCSYC6GsqwYBQEIBBhAj7U1QiHx5npCHHO0DLwrgQqVqwoW7dulQMOOAA4EIAABJwT+PbbbyUnJ0c2btzofK5sTUBdzRZ55oWAnwSoq37GHa8hAAF3BHyoq+7oRXdkhLjoxi5ylh900EHG5q+//jpytmMwBCAQPQI+1BwffIxe5mExBOJLwIea44OP8c1QPINA9AhQc6IXsyAsRogLgiJjWBGgyFhhohMEIBAQAR9qjg8+BpQODAMBCARAwIea44OPAaQCQ0AAAgERoOYEBDJiwyDERSxgUTaXIhPl6GE7BKJHwIea44OP0cs8LIZAfAn4UHN88DG+GYpnEIgeAWpO9GIWhMUIcUFQZAwrAhQZK0x0ggAEAiLgQ83xwceA0oFhIACBAAj4UHN88DGAVGAICEAgIALUnIBARmwYhLiIBSzK5lJkohw9bIdA9Aj4UHN88DF6mYfFEIgvAR9qjg8+xjdD8QwC0SNAzYlezIKwGCEuCIqMYUWAImOFiU4QgEBABHyoOT74GFA6MAwEIBAAAR9qjg8+BpAKDAEBCAREgJoTEMiIDYMQF7GARdlcikyUo4ftEIgeAR9qjg8+Ri/zsBgC8SXgQ83xwcf4ZiieQSB6BKg50YtZEBYjxAVBkTGsCFBkrDDRCQIQCIiADzXHBx8DSgeGgQAEAiDgQ83xwccAUoEhIACBgAhQcwICGbFhEOIiFrAom0uRiXL0sB0C0SPgQ83xwcfoZR4WQyC+BHyoOT74GN8MxTMIRI8ANSd6MQvCYoS4ICgyhhUBiowVJjpBAAIBEfCh5vjgY0DpwDAQgEAABHyoOT74GEAqMAQEIBAQAWpOQCAjNgxCXMQCFmVzKTJRjh62QyB6BHyoOT74GL3Mw2IIxJeADzXHBx/jm6F4BoHoEaDmRC9mQViMEBcERcawIkCRscJEJwhAICACPtQcH3wMKB0YBgIQCICADzXHBx8DSAWGgAAEAiJAzQkIZMSGQYiLWMCibC5FJsrRw3YIRI+ADzXHBx+jl3lYDIH4EvCh5vjgY3wzFM8gED0C1JzoxSwIixHigqDIGFYEKDJWmOgEAQgERCCZmrNixQoZPXq0PProo7Jw4UIZMmSIXHnllYVaMnXqVLnjjjtkxowZkpOTI23btpV7771XjjjiiED6J+N+Mj4mMy59IQCB+BP4fcs2Wb9pq1QunyMVypaxcjiZmkNdtUJKJwhAwHMCydRVz1HFyn2EuAiGk0vBuAoAACAASURBVIVNBIOGyRCAQMYJ2C5shg0bJpdddlkB+4oS4saMGSOnnXaa6duyZUv5/fff5ZNPPpFKlSrJlClT5JhjjikwTrL9k4Vk62Oy49IfAhCIJ4ENm7fKW59+J8/NWCYL/rs2z8nGtavKRS3ryelH7y+VyuUU6bxtzaGuxjN/8AoCEAiegG1dDX5mRswmAYS4bNJPYW4WNilA4xMIQMBLArYLG90BN23aNMNo+PDh8tFHHxW6I27Hjh3SoEEDWb58ubz99tvSuXNn881TTz0lvXv3lg4dOsiECRPyWCfbP5Ug2fqYyth8AwEIxIvArKW/SJ9nZ8uq9ZuLdKx65XLy+MVNpfmBexfax7bmUFfjlTt4AwEIuCNgW1fdWcDI2SCAEJcN6mnMycImDXh8CgEIeEUglYXNpZdeKk8//XShQtx7770nJ598shHdnnzyyQIsO3XqJOPHj5fFixfLIYccYn6XbP9UgpOKj6nMwzcQgEC0CagId+GwGbJ56/YSHSmXU1qe792yUDEulZpDXS0ROR0gAAGPCaRSVz3GFRvXEeIiHEoWNhEOHqZDAALOCaSysCmurvbo0UNGjhwpetw0sRsu4cTQoUPlz3/+s9x5551y2223mR8n2z8VIKn4mMo8fAMBCESXgB5HbXv/hGJ3wu3qne6Mm9LvhN2OqaZSc6ir0c0dLIcABNwTSKWuureKGVwTQIhzTdjh+CxsHMJlaAhAIPIEUlnYFFdX27VrZ+6B+/XXX6VatWoF+Og9cccee6xccsklMmLECPO7ZPunAjwVH1OZh28gAIHoEnhp5nLp/5/5STtwf7cm8sfmdQt8l0rNoa4mjZ4PIACBCBLYvn2HbNiyTaqUL/qezcLcSqWuRhAPJu9CACEuwinBwibCwcN0CEDAOYFUFjbF1VU9crp06VLZsmXLbrZ/++23UrduXTnppJPk3XffNb9Ptn8qQFLxMZV5+AYCEIguga6DpxR4mMHWE33A4e2/tHUqxCVbJ5Ptb+tr/n7U1VSo8Q0EIDBn+a9y3r+mS7tD9pUujfeTM47eX3LKlC4RDDWnRESx7IAQF+Gw8hfGCAcP0yEAAecEUlnYFFdXq1SpIvp/33///W62b9y40byc2rhxY5k/f+fOk2T7FwUk4Udhv1cB8IADDpCvv/7aOU8mgAAEokfg9y3b5LABY1M2fNHAzlKhbJm876mrKaPkQwhAIOYE7nlnoTw55RvjZe1qFeXDfidIqVKlSvQ6lbpa4qB0CD0BhLjQh6hoA/kLY4SDh+kQgIBzAqksbIqrq3vssYcR23744YfdbN+wYYNUrlxZjjzySJk7d675fbL9EeKcpwQTQMA7AqvWbZKmd49P2e/Zt+ZK9SrlnQlxydbJZPtTV1MOPR9CAAJJENixY4e0/dsEWfHrRvNVz+Pqy22nNbIaIZX1qtXAdAo1AYS4UIeneOP4C2OEg4fpEMhH4MD+78DDgsDSQada9Ppfl1QWNsXV1YYNG5qdZ3o0ddd/4Vy+fLnUq1fPvKo6duzO3SfJ9k/Kuf/vnIqPqczDNxCAQDQJhH1HXLJ1Mtn+qUSNupoKNb6BgN8EFvx3jXQd/GEehFf7tJZmB+5tBYWaY4Updp0Q4iIcUv7CGOHgYToEEOKSzoFsC3Ht27eXyZMnyy+//CJ77bVXAftnz54tzZo1E63Lw4cPN79Ltn/SQESExVsq1PgGAn4RCPMdccnWyWT7pxJp6moq1PgGAn4T+NvYRfLPiV8ZCDX2KC/TbzpRSpcu+Viq9qfm+Jk7CHERjntxQlyyC5Vk+6eCjSKTCjW+8YEAO+LsopxtIa5Xr15GZBs1apR07dq1gNGDBw+Wq6++Wu6++2655ZZbzO+S7W9HoWAv6moq1PgGAn4RCPOrqcnWyWT7pxJp6moq1PgGAv4S0GOpJz40Sb7+eb2BcHGrejLwzMbWQKg51qhi1REhLsLhLE6IS3ahkmz/VLBRZFKhxjc+EECIs4tytoW4CRMmSMeOHeWSSy6RESNGFDBafz5x4kT56quvpH79+uZ3yfa3o4AQlwonvoGAzwQ2bN4qbe+fIKvWb7bGsE+VcjLlrx2lYrn/PdSgH6eylituvZpsnUy2v7XD+Tqm4mMq8/ANBCAQDwJffP+bnPz3yXnOvHBZS2nTYB9r56g51qhi1REhLsLhZGET4eBhOgTyEUCIs0uHbAtx+i+ehx56qLkn7q233pJTTjnFGP7kk0/K5ZdfLrm5uTJu3Lg8Z5Ltb0cBIS4VTnwDAd8JzFr6i1w4bIZs3rq9RBTlc0rL871bFnq/USp/YSxuvZpsnUy2f4nOFtIhFR9TmYdvIACBeBB4ZNxiefT9JcaZvSuXk5k3nyg5ZUpbO0fNsUYVq44IcREOJwubCAcP0yGAEJd0DrgQ4n7++We57rrr8mz56KOPjNDWvHlzI7ppa9u2rRHatI0fP166dOki27dvl1atWsmmTZtkzpw55sVU/bZJkyYF/Eq2f7JQWLwlS4z+EPCXgIpxfZ6dXezOON0J9/hFTYu8ZNym5lBX/c0xPIeAjwROfmSyfPHDb8b185ofIIO6HZkUBpu6mtSAdI4EAYS4SIRpp5EsbCIULEyFQBIE2BFnB8uFELds2TI58MADizVg16Oo06ZNkwEDBsiMGTOkTJky5lGGQYMGyeGHH17oOMn2t6OxsxeLt2Ro0RcCENBjqqPmfifPTl8mC/67Ng9I49pVzb1Gpx9Ve7fjqPmp2dQc6ip5BgEI+ELgq5/WmfvhEu2Zni2kfcN9k3Lfpq4mNSCdI0EAIS4SYdppJAubCAULUyGQBAGEODtYLoQ4u5nD24vFW3hjg2UQCDuB37dsk/Wbtkrl8jlSoWzBu+CKst2HmuODj2HPTeyDQFQI/GPCl/LAu18Yc6tWyJGPb+0k5XLsj6Xqd9ScqEQ7WDsR4oLlyWjFEKDIkB4QKJwAQpxdZiDE7c6JumqXO/SCAASCIeBDzfHBx2CygVEgAIGug6fk7S4+69ja8vC5RycNhZqTNLJYfIAQF4swRsMJikw04oSVmSeAEGfHHCEOIc4uU+gFAQi4IuDDWs4HH13lB+NCwCcC3/6yQdr+bUKey8O6N5PcRjWTRkDNSRpZLD5AiItFGKPhBEUmGnHCyswTQIizY44QhxBnlyn0ggAEXBHwYS3ng4+u8oNxIeATgX9N/kruHb3IuFy5XBmZPaCT9TH//JyoOT5lzf98RYjzM+5Z8ZoikxXsTBoBAghxdkFCiEOIs8sUekEAAq4I+LCW88FHV/nBuBDwicAf/jlVPlm+2rh8+lH7y2PnH5OS+9SclLBF/iOEuMiHMDoOUGSiEysszSwBhDg73ghxCHF2mUIvCEDAFQEf1nI++OgqPxgXAr4QWLlmo7S+74M8d4deeKx0aVIrJfepOSlhi/xHCHGRD2F0HKDIRCdWWJpZAghxdrwR4hDi7DKFXhCAgCsCPqzlfPDRVX4wLgR8ITBi6jdy56iFxt0KZUvLnAGdpFK5nJTcp+akhC3yHyHERT6E0XGAIhOdWGFpZgkgxNnxRohDiLPLFHpBAAKuCPiwlvPBR1f5wbgQ8IXAuU9Mk5nf/GLc7dJ4Pxl6UdOUXafmpIwu0h8ixEU6fNEyniITrXhhbeYIIMTZsUaIQ4izyxR6QQACrgj4sJbzwUdX+cG4EPCBwI+//S4t731fduzY6e2j5x0tZxxdO2XXqTkpo4v0hwhxkQ5ftIynyEQrXlibOQIIcXasEeIQ4uwyhV4QgIArAj6s5Xzw0VV+MC4EfCDw3PRlcusbC4yr5cqUltkDcmWPCmVTdp2akzK6SH+IEBfp8EXLeIpMtOKFtZkjgBBnxxohDiHOLlPoBQEIuCLgw1rOBx9d5QfjQsAHAhcNmyEffvmzcTX38BoyrEfztNym5qSFL7IfI8RFNnTRM5wiE72YYXFmCCDE2XFGiEOIs8sUekEAAq4I+LCW88FHV/nBuBCIO4Ff12+WZveMl23bd55LffCco+TspnXScpuakxa+yH6MEBfZ0EXPcIpM9GKGxZkhgBBnxxkhDiHOLlPoBQEIuCLgw1rOBx9d5QfjQiDuBF6e9a389bV5xs2c0qVk9q2dZM9KqR9L1XGoOXHPmsL9Q4jzM+5Z8ZoikxXsTBoBAghxdkFCiEOIs8sUekEAAq4I+LCW88FHV/nBuBCIO4FLR8yUCV/8ZNxs13BfGdmzRdouU3PSRhjJARDiIhm2aBpNkYlm3LDaPQGEODvGCHEIcXaZQi8IQMAVAR/Wcj746Co/GBcCcSawZuMWaXb3ONmybeex1PvOaiLnt6ibtsvUnLQRRnIAhLhIhi2aRlNkohk3rHZPACHOjjFCHEKcXabQCwIQcEXAh7WcDz66yg/GhUCcCbz+yQq57t9zjYulS4nMuiVXqlcpn7bL1Jy0EUZyAIS4SIYtmkZTZKIZN6x2TwAhzo4xQhxCnF2m0AsCEHBFwIe1nA8+usoPxoVAnAlcNvJjGbfwB+Ni64Oqy4uXtwrEXWpOIBgjNwhCXORCFl2DKTLRjR2WuyWAEGfHFyEOIc4uU+gFAQi4IuDDWs4HH13lB+NCIK4E1m/aKscOHCebtm43Lt51xhHSvfWBgbhLzQkEY+QGQYiLXMiiazBFJrqxw3K3BBDi7PgixCHE2WUKvSAAAVcEfFjL+eCjq/xgXAjElcDb876Tq174xLhXqpTI9JtOlJpVKwTiLjUnEIyRGwQhLnIhi67BFJnoxg7L3RJAiLPjixCHEGeXKfSCAARcEfBhLeeDj67yg3EhEFcCVz4/R96Zv9K416zeXvLqFW0Cc5WaExjKSA2EEBepcEXbWIpMtOOH9e4IIMTZsUWIQ4izyxR6QQACrgj4sJbzwUdX+cG4EIgjgd+3bDPHUjds3mbcu/XUw6V324MCc5WaExjKSA2EEBepcEXbWIpMtOOH9e4IIMTZsUWIQ4izyxR6QQACrgj4sJbzwUdX+cG4EIgjgXc/+17+9OzsPNem9u8otatVDMxVak5gKCM1EEJcpMIVbWMpMtGOH9a7I4AQZ8cWIQ4hzi5T6AUBCLgi4MNazgcfXeUH40IgjgSufekTeePT74xrR9XZU9686vhA3aTmBIozMoMhxEUmVNE3lCIT/RjigRsCCHF2XBHiEOLsMoVeEICAKwI+rOV88NFVfjAuBOJGYNPWbdJs4Hj5bdNW41q/zofJFR0aBOomNSdQnJEZDCEuMqGKvqEUmejHEA/cEECIs+OKEIcQZ5cp9IIABFwR8GEt54OPrvKDcSEQNwITFv0olz49K8+tiTd0kAP3qRyom9ScQHFGZjCEuMiEKvqGUmSiH0M8cEMAIc6OK0IcQpxdptALAhBwRcCHtZwPPrrKD8aFQNwI3PjKXHll9grj1uG1qsqYa9oG7iI1J3CkkRgQIS4SYYqHkRSZeMQRL4IngBBnxxQhDiHOLlPoBQEIuCLgw1rOBx9d5QfjQiBOBLZs2y7N7xkvqzdsMW5d36mh/OXEQwJ3kZoTONJIDIgQF4kwxcNIikw84ogXwRNAiLNjihCHEGeXKfSCAARcEfBhLeeDj67yg3EhECcCU5b8JBc/NTPPpfF928nBNfYI3EVqTuBIIzEgQlwkwhQPIyky8YgjXgRPACHOjilCHEKcXabQCwIQcEXAh7WcDz66yg/GhUCcCNz8+nx5YcZy49LBNarI+L7tnbhHzXGCNfSDIsSFPkTxMZAiE59Y4kmwBBDi7HgixCHE2WUKvSAAAVcEfFjL+eCjq/xgXAjEhcC27Tuk5b3j5ed1m41LV3c8WPqedKgT96g5TrCGflCEuNCHKD4GUmTiE0s8CZYAQpwdT4Q4hDi7TKEXBCDgioAPazkffHSVH4wLgbgQmP71KjnvX9Pz3Bl9dVtptH9VJ+5Rc5xgDf2gCHGhD1F8DKTIxCeWeBIsAYQ4O54IcQhxdplCLwhAwBUBH9ZyPvjoKj8YFwJxIXDHW5/J0x8tNe7Uq15JJt7QQUqVKuXEPWqOE6yhHxQhLvQhio+BFJn4xBJPgiWAEGfHEyEOIc4uU+gFAQi4IuDDWs4HH13lB+NCIA4Etm/fIW0GfSDfr/3duNOnfQPp3+UwZ65Rc5yhDfXACHGhDk+8jKPIxCueeBMcAYQ4O5YIcQhxdplCLwhAwBUBH9ZyPvjoKj8YFwJxIDB72a/SbehHea68eeVxctQB1Zy5Rs1xhjbUAyPEhTo88TKOIhOveOJNcAQQ4uxYIsQhxNllCr0gAAFXBHxYy/ngo6v8YFwIxIHAPe8slCenfGNcqV2tonzY7wRnx1J1DmpOHLImeR8Q4pJnxhcpEqDIpAiOz2JPACHOLsQIcQhxdplCLwhAwBUBH9ZyPvjoKj8YFwJRJ7Bjxw5p+7cJsuLXjcaVXsfXlwFdGzl1i5rjFG9oB0eIC21o4mcYRSZ+McWjYAggxNlxRIhDiLPLFHpBAAKuCPiwlvPBR1f5wbgQiDqB+SvWyGlDPsxz49U+raXZgXs7dYua4xRvaAdHiAttaOJnGEUmfjHFo2AIIMTZcUSIQ4izyxR6QQACrgj4sJbzwUdX+cG4EIg6gb+NXST/nPiVcaPGHuVl+k0nSunSbl5LTbCi5kQ9a1KzHyEuNW58lQIBikwK0PjECwIIcXZhRohDiLPLFHpBAAKuCPiwlvPBR1f5wbgQiDIBPZba8aFJ8s3P640b3VvXk7vOaOzcJWqOc8ShnAAhLpRhiadRFJl4xhWv0ieAEGfHECEOIc4uU+gFAQi4IuDDWs4HH13lB+NCIMoEFn2/Vjr/fUqeCy9c1lLaNNjHuUvUHOeIQzkBQlwowxJPoygy8YwrXqVPACHOjiFCHEKcXabQCwIQcEXAh7WcDz66yg/GhUCUCTwybrE8+v4S40L1yuVkxs0nSk6Z0s5douY4RxzKCRDiQhmWeBpFkYlnXPEqfQIIcXYMEeIQ4uwyhV4QgIArAj6s5Xzw0VV+MC4EokzgpEcmyeIf1hkXzm9xgNx31pEZcYeakxHMoZsEIS50IYmvQRSZ+MYWz9IjgBBnxw8hDiHOLlPoBQEIuCLgw1rOBx9d5QfjQiCqBL76aZ2c+NCkPPOf6dlC2jfcNyPuUHMygjl0kyDEhS4k8TWIIhPf2OJZegQQ4uz4IcQhxNllCr0gAAFXBHxYy/ngo6v8YFwIRJXAPyZ8KQ+8+4Uxf8+KZeXjW3OlbAaOpep81JyoZk16diPEpcePr5MgQJFJAhZdvSKAEGcXboQ4hDi7TKEXBCDgioAPazkffHSVH4wLgagSOPWxKfLZd2uN+d2OrSMPnXtUxlyh5mQMdagmQogLVTjibQxFJt7xxbvUCSDE2bFDiEOIs8sUekEAAq4I+LCW88FHV/nBuBCIIoHlqzZIuwcm5Jk+rHszyW1UM2OuUHMyhjpUEyHEhSoc8TaGIhPv+OJd6gQQ4uzYIcQhxNllCr0gAAFXBHxYy/ngo6v8YFwIRJHAvyZ/JfeOXmRMr1I+xxxLrVC2TMZcoeZkDHWoJkKIC1U44m0MRSbe8cW71AkgxNmxQ4hDiLPLFHpBAAKuCPiwlvPBR1f5wbgQiCKBM/8xVT79drUx/fSj9pfHzj8mo25QczKKOzSTIcSFJhTxN4QiE/8Y42FqBBDi7LghxCHE2WUKvSAAAVcEfFjL+eCjq/xgXAhEjcDKNRul9X0f5Jk99MJjpUuTWhl1g5qTUdyhmQwhLjShiL8hFJn4xxgPUyOAEGfHDSEOIc4uU+gFAQi4IuDDWs4HH13lB+NCIGoERkz9Ru4ctdCYXbFsGZkzoJNULJe5Y6k6LzUnalkTjL0IccFwZBQLAhQZC0h08ZIAQpxd2BHiEOLsMoVeEICAKwI+rOV88NFVfjAuBKJG4NzHp8nMpb8Ys7s03k+GXtQ04y5QczKOPBQTIsSFIgx+GEGR8SPOeJk8AYQ4O2YIcQhxdplCLwhAwBUBH9ZyPvjoKj8YFwJRIvDjb79Ly3vflx07dlqtd8PpHXGZbtScTBMPx3wIceGIgxdWUGS8CDNOpkAAIc4OGkIcQpxdptALAhBwRcCHtZwPPrrKD8aFQJQIPDt9mQx4Y4ExuVxOaXMsVV9NzXSj5mSaeDjmQ4gLRxy8sIIi40WYcTIFAghxdtAQ4hDi7DKFXhCAgCsCPqzlfPDRVX4wLgSiRODCYdNl6perjMm5h9eQYT2aZ8V8ak5WsGd9UoS4rIfAHwMoMv7EGk+TI4AQZ8cLIQ4hzi5T6AUBCLgi4MNazgcfXeUH40IgKgR+Wb9Zmt8zXrZt33ku9aFzjpJuTetkxXxqTlawZ31ShLish8AfAygy/sQaT5MjgBBnxwshDiHOLlPoBQEIuCLgw1rOBx9d5QfjQiAqBP49a7n0e22+MTendCmZfWsn2bNS2ayYT83JCvasT4oQl/UQ+GMARcafWONpcgQQ4ux4IcQhxNllCr0gAAFXBHxYy/ngo6v8YFwIRIXAJSNmysQvfjLmtmu4r4zs2SJrplNzsoY+qxMjxGUVv1+TU2T8ijfe2hNAiLNjhRCHEGeXKfSCAARcEfBhLeeDj67yg3EhEAUCazZukWZ3j5Mt23YeSx10VhM5r0XdrJlOzcka+qxOjBCXVfx+TU6R8SveeGtPACHOjhVCHEKcXabQCwIQcEXAh7WcDz66yg/GhUAUCPxnzgrp+/JcY2rpUiKzbsmV6lXKZ810ak7W0Gd1YoS4rOL3a3KKjF/xxlt7AghxdqwQ4hDi7DKFXhCAgCsCPqzlfPDRVX4wLgSiQOCykR/LuIU/GFNbH1RdXry8VVbNpuZkFX/WJkeIyxp6/yamyPgXczy2I4AQZ8cJIQ4hzi5T6AUBCLgi4MNazgcfXeUH40Ig7ATWbdoqxw4cJ5u3bjemDjzjCLm49YFZNZuak1X8WZscIS5r6P2bmCLjX8zx2I4AQpwdJ4Q4hDi7TKEXBCDgioAPazkffHSVH4wLgbATGDX3O/nLi58YM0uVEplx04lSo2qFrJpNzckq/qxNjhCXNfT+TUyR8S/meGxHACHOjhNCHEKcXabQCwIQcEXAh7WcDz66yg/GhUDYCVz5/Bx5Z/5KY2bzA/eSV/q0ybrJ1JyshyArBiDEZQW7n5NSZPyMO16XTAAhrmRG2gMhDiHOLlPoBQEIuCLgw1rOBx9d5QfjQiDMBDZu3maOpW7css2YOaBrI+l1fP2sm0zNyXoIsmIAQlxWsPs5KUXGz7jjdckEEOJKZoQQVzgj6qpd7tALAhAIhoAPNccHH4PJBkaBQLQIjF3wvfR5bnae0VP7d5Ta1Spm3QlqTtZDkBUDEOKygt3PSSkyfsYdr0smgBBXMiOEOIQ4uyyhFwQg4JKAD2s5H3x0mSOMDYGwErj2pU/kjU+/M+YddUA1efPK40JhKjUnFGHIuBEIcRlH7u+EFBl/Y4/nxRNAiLPLEI6m7s6JumqXO/SCAASCIeBDzfHBx2CygVEgEB0Cm7Zuk2YDx8tvm7Yao/t3OUz6tG8QCgeoOaEIQ8aNQIjLOHJ/J6TI+Bt7PEeICyIHEOIQ4oLII8aAAARSJ+DDWs4HH1PPAL6EQDQJfLDoB+n59Md5xk+6sYPUq145FM5Qc0IRhowbgRCXceT+TkiR8Tf2eI4QF0QOIMQhxAWRR4wBAQikTsCHtZwPPqaeAXwJgWgSuPGVufLK7BXG+Ea1qsroa9qGxhFqTmhCkVFDEOIyitvvySgyfscf74smwNFUu+xAiEOIs8sUekEAAq4I+LCW88FHV/nBuBAII4Et27ZLs7vHy5qNW4x513dqKH858ZDQmErNCU0oMmoIQlxGcfs9GUXG7/jjPUJcujmAEIcQl24O8T0EIJAeAR/Wcj74mF4W8DUEokVgypKf5OKnZuYZPb5vOzm4xh6hcYKaE5pQZNQQhLiM4vZ7MoqM3/HHe4S4dHMAIQ4hLt0c4nsIQCA9Aj6s5XzwMb0s4GsIRIvAza/PlxdmLDdGH1Kjiozr2z5UDlBzQhWOjBmDEJcx1ExEkSEHIFA4AY6m2mUGQhxCnF2m0AsCEHBFwIe1nA8+usoPxoVA2Ahs275DWt47Xn5et9mYdnXHg6XvSYeGykxqTqjCkTFjEOIyhpqJKDLkAAQQ4tLJgbAIcbNmzZKBAwfKnDlzZMOGDdKoUSO54oor5MILLyzUvYULF8rNN98skydPlq1bt0qLFi3kzjvvlOOOOy4dHOZb6mraCBkAAhBIgoCrmkNdTSIIdIUABKwJTP96lZz3r+l5/Udf3VYa7V/V+vtMdHRVVzNhO3OkTgAhLnV2fJkkAYpMksDo7g0BdsTZhToMQtxbb70lZ555puTk5Ejbtm2ldOnS8tFHHxlB7tprr5VHHnmkgDOffPKJ6ae/P/roo6VSpUoyffrOBeGoUaOkS5cuds4X0Yu6mhY+PoYABJIk4KLmUFeTDALdIQABawK3v7lAnpm2zPQ/sHolmXBDBylVqpT195no6KKuZsJu5kiPAEJcevz4OgkCFJkkYNHVKwIIcXbhzrYQt337dtlvv/3kt99+kw8//FCaNm1qDP/yyy+lffv2snLlSlmwYIHZIZdoHTp0kEmTJsmTTz4pvXv3Nj9+77335NRTT5W6deuab9NZEFJX7XKHXhCAQDAEgq451NVg4sIoEIDA7gS2b98hrQe9Lz+s3WR+2ad9A+nf5bDQoQq6robOQQwqlABCHImRMQIUmYyhZqKIEUCIswtYtoW4RYsWyeGHHy7du3eXZ555poDRuhOub9++MmzYMOnVq5f53RdffCGHHXaY5Obmyrhx4wr0v+yyy0xf/bn+PtVGXU2VHN9BAAKpEAi65lBXU4kC30AAAjYEZi/7VboN/Siv61tXHSdH1qlm82lG+wRdVzNqPJOlTAAhLmV00fiQOzeiESes9JsAQpxd/LMtxH322WfSbZGs5gAAIABJREFUuHFjufLKK2XIkCEFjNajVWeccYYMHjxYrrrqKvO722+/Xe666y4ZOnSo9OnTp0D/MWPGyCmnnCKXXnqpDB8+3A5AIb1YvKWMjg8hAIEUCARdc6irKQSBTyAAASsCd7+9UIZ9+I3pW7taRfmw3wlpnUKwmjSFTkHX1RRM4JMsEECIywL0TE3JnRuZIs08EEiPAEKcHb9sC3H60MLBBx8sZcqUkXnz5knlypXzDL/tttvk7rvvLnA0VXfOPfvss6L3xOn9cPnbr7/+Knvvvbfo0dUJEybYAUCIS5kTH0IAAsEQCPovjNTVYOLCKBCAQEECO3bskOPvnyD/Xb3R/KLX8fVlQNf/XR0SJl5B19Uw+YYtRRNAiItpdnDnRkwDi1uxJIAQZxfWbAtxaqXeDacPLOj9cLorTnfI/fTTT+a/u3XrVuCxhk6dOsn48eNlxYoVUrt27QJO6gKxbNmy0qBBA3OEtbiWWKAV1ufbb7+VAw44QL7++ms7iPSCAAQgkAYBF39hpK6mERA+hQAECiUwf8UaOW3Ih3m/e+2K1tK03t6hpOWirobSUYwqQAAhLqYJwZ0bMQ0sbsWSAEKcXVjDIMSppfrwwuWXX25eTD3vvPNk+fLlcuCBB8rIkSMLHHlQkU6PXW3cuFEqVKiwm5M1a9Y0r6nq4w8IcXY5QC8IQCC7BFz9hZG6mt24MjsE4kbg/rGLZOjEr4xbNauWl2n9T5TSpcP1WmqCuau6GreYxs0fhLi4RfT//eHOjZgGFrdiSQAhzi6sYRDinnvuOfP6qT62UKtWLXMn3Pfffy916tQxd73pLrhEa9KkiTmqqmJbxYoVd3OyRo0asmnTJlmzZo0dgEJ6sXhLGR0fQgACKRBwUXOoqykEgk8gAIEiCeipg44PTZJvfl5v+nRvXU/uOqNxaIm5qKuhdRbD8gggxMU0GbhzI6aBxa1YEkCIswtrtoW4jz76SNq1ayfXXXedPPDAA8bozZs3y/PPP29eTF2/fr28++67csIJJ5jfnXTSSeZVVN0xp8dH87fE0VS9c053MKfaWLylSo7vIACBVAgEXXOoq6lEgW8gAIHiCCz6fq10/vuUvC4vXtZKWjeoHlpoQdfV0DqKYQUIIMTFOCGycedGcTgpMjFONlxLiwBCnB2+bAtxnTt3lhkzZsjKlSt3O2o6ffp0ad26tXmUQR9n0NajRw9zXHXOnDlyzDHHFHBy1apVss8++xjR7oMPPrADUEgv6mrK6PgQAhBIgUDQNYe6mkIQ+AQCECiWwMPjFstj7y8xfapXLiczb8mVMiE9lqo2Bl1XSY9oEECIi0acUraSOzdSRseHEMgYAYQ4O9TZFuL0lVN9XGHWrFmFGnzooYfKkiVLZO3atVKlShUZOHCg6Guqenz1qquuKvDNqFGj5PTTTzfHXLVOp9pYvKVKju8gAIFUCARdc6irqUSBbyAAgeIInPTIJFn8wzrT5fwWB8h9Zx0ZamBB19VQO4txeQQQ4mKcDNm4c4PX/WKcULjmjABCnB3abAtxeoxUX0jVO+F2vfNNj5rqy6i6003vfNPHGfQlU/2mffv2MmHChAJO9uzZU0aMGCETJ040v0+1sXhLlRzfQQACqRAIuuZQV1OJAt9AAAJFEfjyx3WS+/CkvF+P7NlC2jXcN9TAgq6roXYW4xDi4p4D3LkR9wjjX5wIIMTZRTPbQtw111wjjz32mJx99tlmF1u1atWM4Xon5y233CJ/+9vfzL1wek9counjDePHj5cnnnjCvLSqbezYsdK1a1dzFGHx4sV2zhfRi8VbWvj4GAIQSJJA0DWHuppkAOgOAQgUS2DIB0vkwfd2rq32rFhWPr41V8qWKR1qakHX1VA7i3EIcXHPAe7ciHuE8S9OBBDi7KKZbSFu48aN5k43vSduzz33lObNm5udcXon3IoVK2T//fc3v9MXVBNt/vz50qZNG1m3bp25J65y5coybdo0KVWqlIwZM0Zyc3PtnEeIS4sTH0MAAsEQCPovjNTVYOLCKBCAwE4Cpz42RT77bq3532c3rSMPnnNU6NEEXVdD7zAGGgIcTY1pInDnRkwDi1uxJIAQZxfWbAtxaqXuftMjpc8++6zZzfb7779Lw4YNpUuXLnL99ddL1apVd3Pm888/l5tuukkmTZpkvm/RooW5P04FunQbi7d0CfI9BCCQDAEXNYe6mkwE6AsBCBRFYPmqDdLugf9dBfJUj2Zy4uE1Qw/MRV0NvdMYiBAX1xzgzo24Rha/4kgAIc4uqmEQ4uwszVwvFm+ZY81MEICAH6/7UVfJdAhEk8ATk76S+8YsMsZXKZ8jswfkSvmcMqF3hpoT+hA5MZAdcU6wZn9Q7tzIfgywAAK2BBDi7EghxO3OicWbXe7QCwIQCIaADzXHBx+DyQZGgUC4CJz5j6ny6berjVFnHL2/PHreMeEysAhrqDmRCFPgRiLEBY40HANy50Y44oAVELAhgBBnQ0kEIQ4hzi5T6AUBCLgi4MNfGH3w0VV+MC4EskXgu9Ubpc2gD/Kmf/yiY6Vz41rZMiepeak5SeGKTWeEuNiEcndHuHMjxsHFtVgRQIizCydCHEKcXabQCwIQcEXAh78w+uCjq/xgXAhki8DwD7+Ru95eaKavWLaMzBnQSSqWC/+xVLWXmpOtrMnuvAhx2eXv1ewUGa/CjbNJEECIs4OFEIcQZ5cp9IIABFwR8GEt54OPrvKDcSGQLQLnPj5NZi79xUx/SpP95J8XNs2WKUnPS81JGlksPkCIi0UYo+EERSYaccLKzBNAiLNjjhCHEGeXKfSCAARcEfBhLeeDj67yg3EhkA0CP/72u7S8933ZsWPn7I+df4ycftT+2TAlpTmpOSlhi/xHCHGRD2F0HKDIRCdWWJpZAghxdrwR4hDi7DKFXhCAgCsCPqzlfPDRVX4wLgSyQeDZ6ctkwBsLzNTlckqbY6n6ampUGjUnKpEK1k6EuGB5MloxBCgypAcECieAEGeXGQhxCHF2mUIvCEDAFQEf1nI++OgqPxgXAtkgcOGw6TL1y1Vm6tzDa8qwHs2yYUbKc1JzUkYX6Q8R4iIdvmgZT5GJVrywNnMEEOLsWCPEIcTZZQq9IAABVwR8WMv54KOr/GBcCGSawC/rN0vze8bLtu07z6U+dM5R0q1pnUybkdZ81Jy08EX2Y4S4yIYueoZTZKIXMyzODAGEODvOCHEIcXaZQi8IQMAVAR/Wcj746Co/GBcCmSbw71nLpd9r8820ZcuUko9v6SR7ViqbaTPSmo+akxa+yH6MEBfZ0EXPcIpM9GKGxZkhgBBnxxkhDiHOLlPoBQEIuCLgw1rOBx9d5QfjQiDTBHoMnymTFv9kpm3fcF95pmeLTJuQ9nzUnLQRRnIAhLhIhi2aRlNkohk3rHZPACHOjjFCHEKcXabQCwIQcEXAh7WcDz66yg/GhUAmCazZuEWa3T1OtmzbeSx10FlN5LwWdTNpQiBzUXMCwRi5QRDiIhey6BpMkYlu7LDcLQGEODu+CHEIcXaZQi8IQMAVAR/Wcj746Co/GBcCmSTwnzkrpO/Lc82UZUqXklm35Mrelctl0oRA5qLmBIIxcoMgxEUuZNE1mCIT3dhhuVsCCHF2fBHiEOLsMoVeEICAKwI+rOV88NFVfjAuBDJJoPczH8v4z38wU7ZpUF1euKxVJqcPbC5qTmAoIzUQQlykwhVtYyky0Y4f1rsjgBBnxxYhDiHOLlPoBQEIuCLgw1rOBx9d5QfjQiBTBNZt2irHDhwnm7duN1MOPOMIubj1gZmaPtB5qDmB4ozMYAhxkQlV9A2lyEQ/hnjghgBCnB1XhDiEOLtMoRcEIOCKgA9rOR98dJUfjAuBTBEYNfc7+cuLn5jpSpUSmXHTiVKjaoVMTR/oPNScQHFGZjCEuMiEKvqGUmSiH0M8cEMAIc6OK0IcQpxdptALAhBwRcCHtZwPPrrKD8aFQKYI/Pn52TJ6/vdmuuYH7iWv9GmTqakDn4eaEzjSSAyIEBeJMMXDSIpMPOKIF8ETQIizY4oQhxBnlyn0ggAEXBHwYS3ng4+u8oNxIZAJAhs3bzPHUjdu2WamG9C1kfQ6vn4mpnYyBzXHCdbQD4oQF/oQxcdAikx8YoknwRJAiLPjiRCHEGeXKfSCAARcEfBhLeeDj67yg3EhkAkCYxd8L32em5031dT+HaV2tYqZmNrJHNQcJ1hDPyhCXOhDFB8DKTLxiSWeBEsAIc6OJ0IcQpxdptALAhBwRcCHtZwPPrrKD8aFQCYIXPPSJ/Lmp9+ZqY46oJq8eeVxmZjW2RzUHGdoQz0wQlyowxMv4ygy8Yon3gRHACHOjiVCHEKcXabQCwIQcEXAh7WcDz66yg/GhYBrApu2bpOmA8eLvpqq7aYuh8mf2jdwPa3T8ak5TvGGdnCEuNCGJn6GUWTiF1M8CoYAQpwdR4Q4hDi7TKEXBCDgioAPazkffHSVH4wLAdcE3v/8B+n1zMd500y+8QSpW72S62mdjk/NcYo3tIMjxIU2NPEzjCITv5jiUTAEEOLsOCLEIcTZZQq9IAABVwR8WMv54KOr/GBcCLgmcMMrc+XV2SvMNI1qVZXR17R1PaXz8ak5zhGHcgKEuFCGJZ5GUWTiGVe8Sp8AQpwdQ4Q4hDi7TKEXBCDgioAPazkffHSVH4wLAZcEtmzbLs3uHi9rNm4x09xwUkO5quMhLqfMyNjUnIxgDt0kCHGhC0l8DaLIxDe2eJYeAYQ4O34IcQhxdplCLwhAwBUBH9ZyPvjoKj8YFwIuCUxe/JN0Hz4zb4rxfdvLwTWquJwyI2NTczKCOXSTIMSFLiTxNYgiE9/Y4ll6BBDi7PghxCHE2WUKvSAAAVcEfFjL+eCjq/xgXAi4JHDTf+bLizOXmykOqVFFxvVt73K6jI1NzckY6lBNhBAXqnDE2xiKTLzji3epE0CIs2OHEIcQZ5cp9IIABFwR8GEt54OPrvKDcSHgisC27TukxT3jZdX6zWaKq088RPp2auhquoyOS83JKO7QTIYQF5pQxN8Qikz8Y4yHqRFAiLPjhhCHEGeXKfSCAARcEfBhLeeDj67yg3Eh4IrAtK9WyflPTs8bfsw1beXwWlVdTZfRcak5GcUdmskQ4kITivgbQpGJf4zxMDUCCHF23BDiEOLsMoVeEICAKwI+rOV88NFVfjAuBFwRuP3NBfLMtGVm+AOrV5IJN3SQUqVKuZouo+NSczKKOzSTIcSFJhTxN4QiE/8Y42FqBBDi7LghxCHE2WUKvSAAAVcEfFjL+eCjq/xgXAi4ILB9+w5pPeh9+WHtJjP8FR0aSL/Oh7mYKitjUnOygj3rkyLEZT0E/hhAkfEn1niaHAGEODteCHEIcXaZQi8IQMAVAR/Wcj746Co/GBcCLgjMXvaLdBs6LW/ot646To6sU83FVFkZk5qTFexZnxQhLush8McAiow/scbT5AggxNnxQohDiLPLFHpBAAKuCPiwlvPBR1f5wbgQcEHg7rcXyrAPvzFD165WUT7sd0JsjqWqT9QcF1kT/jER4sIfo9hYSJGJTShxJGACCHF2QBHiEOLsMoVeEICAKwI+rOV88NFVfjAuBIImsGPHDjn+/gny39UbzdC9j68vt3ZtFPQ0WR2PmpNV/FmbHCEua+j9m5gi41/M8diOAEKcHSeEOIQ4u0yhFwQg4IqAD2s5H3x0lR+MC4GgCcxbsVpOHzI1b9jXrmgtTevtHfQ0WR2PmpNV/FmbHCEua+j9m5gi41/M8diOAEKcHSeEOIQ4u0yhFwQg4IqAD2s5H3x0lR+MC4GgCdw/dpEMnfiVGbZm1fIyrf+JUrp0PF5LTbCi5gSdNdEYDyEuGnGKhZUUmViEESccEECIs4OKEIcQZ5cp9IIABFwR8GEt54OPrvKDcSEQJAE9lnrCgxNl6aoNZtgerevJnWc0DnKKUIxFzQlFGDJuBEJcxpH7OyFFxt/Y43nxBBDi7DIEIQ4hzi5T6AUBCLgi4MNazgcfXeUH40IgSAKfr1wrXR6dkjfki5e1ktYNqgc5RSjGouaEIgwZNwIhLuPI/Z2QIuNv7PEcIS6IHECIQ4gLIo8YAwIQSJ2AD2s5H3xMPQP4EgKZI/DwuMXy2PtLzITVK5eTmbfkSpmYHUtV36g5mcupMM2EEBemaMTcFopMzAOMeykTYEecHTqEOIQ4u0yhFwQg4IqAD2s5H3x0lR+MC4EgCXR6eJIs+XGdGfL8FnXlvrOaBDl8aMai5oQmFBk1BCEuo7j9nowi43f88b5oAghxdtmBEIcQZ5cp9IIABFwR8GEt54OPrvKDcSEQFIEvf1wnuQ9PyhtuZM8W0q7hvkENH6pxqDmhCkfGjEGIyxhqJqLIkAMQKJwAQpxdZiDEIcTZZQq9IAABVwR8WMv54KOr/GBcCARFYMgHS+TB9xab4fasWFY+vjVXypYpHdTwoRqHmhOqcGTMGIS4jKFmIooMOQABhLh0cgAhDiEunfzhWwhAIH0CPqzlfPAx/UxgBAi4JXDKo1Nk4cq1ZpKzm9aRB885yu2EWRydmpNF+FmcGiEui/B9m5oi41vE8deWADvi7EghxCHE2WUKvSAAAVcEfFjL+eCjq/xgXAgEQWDZqvXS/oGJeUM91aOZnHh4zSCGDuUY1JxQhsW5UQhxzhEzQYIARYZcgEDhBBDi7DIDIQ4hzi5T6AUBCLgi4MNazgcfXeUH40IgCAKPT/pKBo1ZZIaqUj5HZg/IlfI5ZYIYOpRjUHNCGRbnRiHEOUfMBAhx5AAEiieAEGeXIQhxCHF2mUIvCEDAFQEf/sLog4+u8oNxIRAEgTP+MVXmfrvaDHXG0fvLo+cdE8SwoR2DmhPa0Dg1DCHOKV4Gz0+AIkM+QKBwAghxdpmBEIcQZ5cp9IIABFwR8GEt54OPrvKDcSGQLoH/rt4oxw36IG+Yxy9qKp0b75fusKH+npoT6vA4Mw4hzhlaBt6VAEWGnIAAQlw6OYAQhxCXTv7wLQQgkD4BH9ZyPviYfiYwAgTcEHjqw29k4NsLzeAVy5aROQM6ScVy8T2Wqn5Sc9zkUthHRYgLe4RiZB9FJkbBxJVACbAjzg4nQhxCnF2m0AsCEHBFwIe1nA8+usoPxoVAugTOefwjmbX0VzPMKU32k39e2DTdIUP/PTUn9CFyYiBCnBOsDFoYAYoMeQGBwgkgxNllBkIcQpxdptALAhBwRcCHtZwPPrrKD8aFQDoEflz7u7S8733ZsWPnKIPPP0ZOO2r/dIaMxLfUnEiEKXAjEeICR8qARRGgyJAbEECISycHEOIQ4tLJH76FAATSJ+DDWs4HH9PPBEaAQPAEnp22VAa8+ZkZuFxOaXMsVV9NjXuj5sQ9woX7hxDnZ9yz4jVFJivYmTQCBNgRZxckhDiEOLtMoRcEIOCKgA9rOR98dJUfjAuBdAhc8OR0+eirVWaI3MNryrAezdIZLjLfUnMiE6pADUWICxQngxVHgCJDfkCgcAIIcXaZgRCHEGeXKfSCAARcEfBhLeeDj67yg3EhkCqBVes2SYt735dt23eeS3343KPkrGPrpDpcpL6j5kQqXIEZixAXGEoGKokARaYkQvzeVwIIcXaRR4hDiLPLFHpBAAKuCPiwlvPBR1f5wbgQSJXASzOXS///zDefly1TSj6+tZPsWbFsqsNF6jtqTqTCFZixCHGBoWSgkghQZEoixO99JYAQZxd5hDiEOLtMoRcEIOCKgA9rOR98dJUfjAuBVAn0GD5TJi3+yXzevuG+8kzPFqkOFbnvqDmRC1kgBiPEBYKRQWwIUGRsKNHHRwIIcXZRR4hDiLPLFHpBAAKuCPiwlvPBR1f5wbgQSIXAmg1bpNk942TLtp3HUu/v1kT+2LxuKkNF8htqTiTDlrbRCHFpI2QAWwIUGVtS9PONAEKcXcQR4hDi7DKFXhCAgCsCPqzlfPDRVX4wLgRSIfDa7BVy/StzzadlSpeSWbfkyt6Vy6UyVCS/oeZEMmxpG40QlzZCBrAlQJGxJUU/3wggxNlFHCEOIc4uU+gFAQi4IuDDWs4HH13lB+NCIBUCvZ/5WMZ//oP59LiDq8vzvVulMkxkv6HmRDZ0aRmOEJcWPj5OhgBFJhla9PWJAEKcXbQR4hDi7DKFXhCAgCsCPqzlfPDRVX4wLgSSJbBu01Y5duA42bx1u/l04JmN5eJW9ZIdJtL9qTmRDl/KxiPEpYyOD5MlQJFJlhj9fSGAEGcXaYQ4hDi7TKEXBCDgioAPazkffHSVH4wLgWQJvDX3O7n6xU/MZ6VKicy4+USpsUeFZIeJdH9qTqTDl7LxCHEpo+PDZAlQZJIlRn9fCCDE2UUaIQ4hzi5T6AUBCLgi4MNazgcfXeUH40IgWQJ/fn62jJ7/vfmsxYF7y8t9Wic7ROT7U3MiH8KUHECISwkbH6VCgCKTCjW+8YEAQpxdlBHiEOLsMoVeEICAKwI+rOV88NFVfjAuBJIhsHHzNnMsdeOWbeaz27o2kp7H109miFj0pebEIoxJO4EQlzQyPkiVAEUmVXJ8F3cCCHF2EUaIQ4izyxR6QQACrgj4sJbzwUdX+cG4EEiGwNgFK6XPc3PyPvmof0fZv1rFZIaIRV9qTizCmLQTCHFJI+ODVAlQZFIlx3dxJ4AQZxdhhDiEOLtMoRcEIOCKgA9rOR98dJUfjAuBZAhc89In8uan35lPjj6gmrxx5XHJfB6bvtSc2IQyKUcQ4pLCRed0CFBk0qHHt3EmgBBnF12EOIQ4u0yhFwQg4IqAD2s5H3x0lR+MCwFbApu2bpOmA8eLvpqq7aYuh8mf2jew/TxW/ag5sQqntTMIcdao6JguAYpMugT5Pq4EEOLsIosQhxBnlyn0ggAEXBHwYS3ng4+u8oNxIWBL4P3Pf5Bez3yc133yjSdI3eqVbD+PVT9qTqzCae0MQpw1KjqmS4Aiky5Bvo8rAYQ4u8gixCHE2WUKvSAAAVcEfFjL+eCjq/xgXAjYErjhlbny6uwVpvsR+1eVd65ua/tp7PpRc2IXUiuHEOKsMNEpCAIUmSAoMkYcCSDE2UUVIQ4hzi5T6AUBCLgi4MNazgcfXeUH40LAhsCWbdul2d3jZc3GLab7DSc1lKs6HmLzaSz7UHNiGdYSnUKIKxERHYIiQJEJiiTjxI0AQpxdRBHiEOLsMoVeEICAKwI+rOV88NFVfjAuBGwITF78k3QfPjOv6/i+7eXgGlVsPo1lH2pOLMNaolMIcSUiokNQBCgyQZFknLgRQIiziyhCHEKcXabQCwIQcEXAh7WcDz66yg/GhYANgZv+M09enPmt6dqwZhV577r2Np/Ftg81J7ahLdYxhDg/454VrykyWcHOpBEggBBnFySEOIQ4u0yhFwQg4IqAD2s5H3x0lR+MC4GSCGzbvkNa3DNeVq3fbLpefeIh0rdTw5I+i/XvqTmxDm+RziHE+Rn3rHhNkckKdiaNAAGEOLsgIcQhxNllCr0gAAFXBHxYy/ngo6v8YFwIlERg2ler5Pwnp+d1G3ttWzlsv6olfRbr31NzYh1ehDg/wxsuryky4YoH1oSHAEKcXSwQ4hDi7DKFXhCAgCsCPqzlfPDRVX4wLgRKInDbmwtk5LRlplv9fSrLB9e3l1KlSpX0Wax/T82JdXgR4vwMb7i8psiEKx5YEx4CCHF2sQiTEPf222/Ls88+K7NmzZJ169ZJ8+bN5dxzz5UePXoUcGbhwoVy8803y+TJk2Xr1q3SokULufPOO+W4446zc7qEXtTVQDAyCAQgYEnAZc2hrloGgW4QiCiB7dt3SKv73pcff9tkPLiiQwPp1/mwiHoTnNku62pwVjJS0AQ4mho0UcYrkgBFhuSAQOEEEOLsMiMsQtyNN94oDz74oJQvX16OPvpo2WuvvYwgt2rVKunXr58MGjTIOPTJJ59I27ZtZcOGDaZfpUqVZPr0nccxRo0aJV26dLFzvJhe1NW0ETIABCCQBAFXNYe6mkQQ6AqBiBKYvewX6TZ0Wp71o646XprU2TOi3gRntqu6GpyFjOSCAEKcC6qMWSgBigyJAQGEuHRyIAxC3EsvvSTnn3++HHbYYaK7Nxo0aGBc2rhxo9npdtVVV0mdOnXMzzp06CCTJk2SJ598Unr37m1+9t5778mpp54qdevWlS+//DLt4xjU1XQyim8hAIFkCbioOdTVZKNAfwhEk8DAtxfKUx9+Y4yvs1dFmfLXE9JeB0WTREGrXdTVOHCJuw8IcXGPcIj8o8iEKBiYEioC7IizC0e2hbgdO3YY4W3ZsmWyePHiPBGuMOu/+OILI9bl5ubKuHHjCnS57LLLZNiwYebn+vt0GnU1HXp8CwEIJEsg6JpDXU02AvSHQDQJ6J/14++fIP9dvdE40Pv4+nJr10bRdCZgq4OuqwGbx3COCCDEOQLLsLsToMiQFRAonABCnF1mZFuI03ve2rdvL2eddZa89tprxRp9++23y1133SVDhw6VPn36FOg7ZswYOeWUU+TSSy+V4cOH2zlfRC/qalr4+BgCEEiSQNA1h7qaZADoDoGIEpi3YrWcPmRqnvWvXdFGmtbbK6LeBGt20HU1WOsYzRUBhDhXZBl3NwIUGZICAghx6eRAtoU4vfvtpptuKnDUtCh/unfvbh5z0Hvi9H64/O3XX3+Vvffe2xxdnTBhQjpIhLqaFj4+hgAEkiQQdM2hriYZALpDIKIEBo1ZJI9P+spYX7NqeZnW/0QpXdrv11IToQy6rkY0RbwzGyHOu5Bnz2GKTPbYM3O4CbAjzi4+2RbiLr74Ynnuuedk9OjRUrNmTXnkkUfk3XfflT322ENatWplHmk44IADjDOdOnWS8ePHy4oVK6R27doFHNTjGWXLljVHW/UIazqNupoOPb6FAASSJRB0zaGuJhsB+kMgegR03XPCgxNl6aoNxvgereuIuuzYAAAgAElEQVTJnWc0jp4jjiwOuq46MpNhAyaAEBcwUIYrmgBFhuyAQOEEEOLsMiPbQtxpp51mHmi477775O677za72nS32/z582Xp0qVStWpVmTdvntSrV08aN24sn332mXnEoUKFCrs5qEKevqb622+/leh8onYW1vHbb7814t/XX39d4jh0gAAEIJAugaDXctTVdCPC9xAIP4GF362VUx6bkmfoS5e3klYHVQ+/4RmyMOi6miGzmSZNAghxaQKMwuf6F0c9IjVr1ixZt26dNG/eXM4991zp0aNHAfMXLlwoN998s+h9HVu3bpUWLVqYVwCPO+64QNykyASCkUFiSAAhzi6o2RbiTj75ZPPqqQpwujOuS5cuxvBt27aZ11Iff/xxueCCC+T555+XJk2ayIIFC4zYVrFixd0crFGjhmzatEnWrFlTovMIcSUiogMEIJAhAkGv5airGQoc00AgiwQefu8LeeyDL40F+1QpJzNuzpUyHEvNi0jQdTWLoWbqJAggxCUBK4pdb7zxRnnwwQelfPnyZufGXnvtZQS5VatWSb9+/cxRKm16j1Hbtm3NXxq1X6VKlWT69Onmd6NGjcr7C2c6DCgy6dDj2zgTQIizi262hbhevXqZxxX0sYXOnTsXMFp3ttWqVcvUzh9//FFOOukk8yrq8uXL846rJj5IHE09+OCDZdGiRXbOF9GLupoWPj6GAASSJBB0zaGuJhkAukMgggQ6PTxJlvy4zlh+Qcu6cu8fmkTQC3cmB11X3VnKyEESQIgLkmbIxnrppZfk/PPPl8MOO8wcp9L7iLTpUSnd6aY7OOrUqWN+ppeGT5o0qcAl5Lrz49RTT5W6devKl19+KaVKpXehJkUmZAmCOaEhgBBnF4psC3FaN++4445ChTj14JhjjpFPP/1U9DGGa665RkaOHClz5swxP8/f9B9C9tlnHznhhBPkgw8+sHMeIS4tTnwMAQgEQyDotRx1NZi4MAoEwkrgyx9/k9yHJ+eZ92yvFtL2kH3Dam5W7Aq6rmbFCSZNmgBCXNLIovGB7rhQ4W3ZsmWyePHiPBGuMOv1snAV63Jzc80Ojvztsssuk2HDhpmf6+/TaRSZdOjxbZwJIMTZRTfbQpweR9WLxe+9917zeuqu7YgjjjCPL+gVAA888IDcdtttMnjwYPOPHvmb7jI+/fTTpXfv3uYfP9Jp1NV06PEtBCCQLIGgaw51NdkI0B8C0SIw+P0l8tC4xcboPSuWlY9vzZWyZUpHywnH1gZdVx2by/ABEUCICwhk2IbRe97at28vZ511lrz22mvFmnf77bfLXXfdJUOHDpU+ffoU6KtHsE455RS59NJLzZGsdBpFJh16fBtnAghxdtHNthCnApvuEK5WrZosWbJEypQpk2e4HkfVRxPq169vjpvq4wl69FTr8IQJEwo42LNnTxkxYoRMnDjR/D6dRl1Nhx7fQgACyRIIuuZQV5ONAP0hEC0Cpzw6RRauXGuMPqdpHXngnKOi5UAGrA26rmbAZKYIgABCXAAQwziE3v2mOzZ0t4Xuuiiude/e3TzmoPfE6f1w+ZsesdKLyfXo6q5/mUzWb4pMssTo7wsBhDi7SGdbiFMrBwwYYF5MveKKK2TIkCFSunRp2bJli1x00UXy8ssvy0MPPSR9+/Y1DnXq1EnGjx8vTzzxhFx++eXmZ2PHjpWuXbuK1kPdrZxuo66mS5DvIQCBZAi4qDnU1WQiQF8IRIfAslXrpf0DE/MMHn5JM+l4WM3oOJAhS13U1QyZzjRpEECISwNemD/V41O63X/06NFSs2ZNeeSRR+Tdd9+VPfbYQ1q1amUeadDdG/n/srhixQqpXbt2AbcSl4rrMVc9clVS43W/kgjxewjsTgAhzi4rwiDE6aMM+g8Teveb1lD9x4v58+fL0qVLze42Fd5ycnKMQ/rzNm3amKOqek9c5cqVZdq0aea+Td1tnO5xf52DxZtd7tALAhAIhoCLmkNdDSY2jAKBsBF4fNJXMmjMzkep9iifIx8PyJXyOf87TRA2e7Nlj4u6mi1fmNeeAEKcPatI9TzttNPMAw333Xef2b2hu9ry/4WxatWqMm/ePKlXr540btxYPvvsM/OIQ4UKFXbzU4U8fU1VF0olNYS4kgjxewggxKWaA2EQ4tR2rYd6B5yKblpH9R8qunXrZl6iTohwCR8///xzsztZH8PZunWrtGjRQgYOHGgEuiAai7cgKDIGBCBgS8BVzaGu2kaAfhCIDoEz/jFV5n672hh85tH7y9/PK/h4VXQ8cWupq7rq1mpGT5cAQly6BEP6/cknnyz66qkKcLozrkuXLsbSbdu2mYvDH3/8cbngggvk+eeflyZNmsiCBQvMXy4rVqy4m0c1atSQTZs2yZo1a9LyliKTFj4+jjEBdsTZBTcsQpydtZnpRV3NDGdmgQAEdhLwoeb44CP5DAHXBP67eqMcN+h/L8M/flFT6dx4P9fTRnJ8ak4kw5a20QhxaSMM5wC9evUyjyvo8afOnTsXMFJ3ttWqVUsqVaokesH4SSedZF5FXb58ed5x1cQHiaOpeum4XkCeTqPIpEOPb+NMACHOLroIcbtzoq7a5Q69IACBYAj4UHN88DGYbGAUCBRN4KkPv5GBby80HSqWLSNzBnSSiuU4lloYMWqOn3+SEOJiGvc777xT7rjjjkKFOHVZ7yv69NNPRR9juOaaa2TkyJHmziP9ef62atUq2WeffeSEE06QDz74379qpIKNIpMKNb7xgQBCnF2UEeIQ4uwyhV4QgIArAj6s5Xzw0VV+MC4EEgTOefwjmbX0V/OfpzapJf+48FjgFEGAmuNnaiDExTTuehxVH2y49957zf1Eu7YjjjjCPL6gl4jrXUe33XabDB482Bxbzd9GjRolp59+unl5VV9gTadRZNKhx7dxJoAQZxddhDiEOLtMoRcEIOCKgA9rOR98dJUfjAsBJfDj2t+l5X3vy44dO3kMPv8YOe2o/YGDEEcO5COAEBfTdFCBrW7dulKtWjVZsmSJlCnzv63AehxVX/urX7++OW769ddfix491Rf/JkyYUIBIz549ZcSIETJx4kTz+3QaC5t06PFtnAkgxNlFFyEOIc4uU+gFAQi4IuDDWs4HH13lB+NCQAk8O22pDHjzMwOjfE5pmT2gk1Qpv/NFeRprOXJgJwGEuBhnwoABA8yLqVdccYUMGTJESpcuLVu2bJGLLrpIXn75ZXnooYekb9++hkCnTp3MC4BPPPGEXH755eZnY8eOla5du5qLeRcvXpw2KRY2aSNkgJgSQIizCyxCHIs3u0yhFwQg4IqAD2s5H3x0lR+MCwElcP6/psu0r1ft/Dtmo5ryZPdmgCmGADXHz/RAiItx3PVRhg4dOpi733QH3NFHHy3z58+XpUuXmt1tKrzl5Oz81wn9eZs2bcxRVb0nrnLlyjJt2jQpVaqUuWcuNzc3bVIUmbQRMkBMCSDE2QUWIQ4hzi5T6AUBCLgi4MNazgcfXeUH40Jg1bpN0vye8bL9/4+lPnzuUXLWsXUAgxBHDuxCACEu5imxYcMGcwecim7z5s2TBg0aSLdu3aRfv355IlwCweeff27uk5s0aZJs3bpVWrRoIQMHDjQCXRCNhU0QFBkjjgQQ4uyiihCHEGeXKfSCAARcEfBhLeeDj67yg3Eh8NLM5dL/P/MNiLJlSsnHt3aSPSuWBQxCHDmAEEcOZIsAC5tskWfesBNAiLOLEEIcQpxdptALAhBwRcCHtZwPPrrKD8aFQPfhM2Xy4p8MiA6H7itPX9oCKCUQoOb4mSLsiPMz7lnxmiKTFexMGgECCHF2QUKIQ4izyxR6QQACrgj4sJbzwUdX+cG4fhNYs2GLNL17nGz9/3Op93drIn9sXtdvKBbeU3MsIMWwC0JcDIMaVpcoMmGNDHZlmwBCnF0EEOIQ4uwyhV4QgIArAj6s5Xzw0VV+MK7fBF6bvUKuf2WugVCmdCmZdUuu7F25nN9QLLyn5lhAimGX/2PvTcCzqq79/xUS5hmZFAGReVQGDYKMJiAIXr1a/f21KlQciq1Sa22VolAQoba1FitVFFrRVjtoFXtBEghCAZFJZAZBBFHCKFNIQob/cw4SiRnY73vOPtP+vM/D01uyz9prfdbq9+58ec85GHERbGpQS0JkgtoZ8vKbAEacWgcw4jDi1CaFVRCAgC4CJpzlTKhR13wQ12wCo/6yUtI377ch9G51gbw+qqfZQBSrR3MUQUVsGUZcxBoa5HIQmSB3h9z8JIARp0YfIw4jTm1SWAUBCOgiYMJZzoQadc0Hcc0lcCInT7pNTJPcvAIbwsQbOskdPZubCySGytGcGGBFaClGXISaGfRSEJmgd4j8/CKAEadGHiMOI05tUlgFAQjoImDCWc6EGnXNB3HNJfDuui/lwb+ttQEkJIisePwaaVizirlAYqgczYkBVoSWYsRFqJlBLwWRCXqHyM8vAhhxauQx4jDi1CaFVRCAgC4CJpzlTKhR13wQ11wCP3xttczdsM8GcOUl9eTv919lLowYK0dzYgQWkeUYcRFpZBjKQGTC0CVy9IMARpwadYw4jDi1SWEVBCCgi4AJZzkTatQ1H8Q1k0BWbp50n5gup07n2wCeHN5BRvZuYSaMOKpGc+KAFoFLMOIi0MSwlIDIhKVT5Ok1AYw4NeIYcRhxapPCKghAQBcBE85yJtSoaz6IayaBueu/kh++vqao+OWPDZQLa1c1E0YcVaM5cUCLwCUYcRFoYlhKQGTC0iny9JoARpwacYw4jDi1SWEVBCCgi4AJZzkTatQ1H8Q1k4D1bDjrGXHW5/KmdeTfD/Q2E0ScVaM5cYIL+WUYcSFvYJjSR2TC1C1y9ZIARpwabYw4jDi1SWEVBCCgi4AJZzkTatQ1H8Q1j0D26XzpMSldrLemWp/Hh7aTe/u2NA+Eg4rRHAfwQnwpRlyImxe21BGZsHWMfL0igBGnRhojDiNObVJYBQEI6CJgwlnOhBp1zQdxzSOQvilTRr26qqjwJY8OkKb1qpkHwkHFaI4DeCG+FCMuxM0LW+qITNg6Rr5eEcCIUyONEYcRpzYprIIABHQRMOEsZ0KNuuaDuOYR+Onf18m/1nxhF97xolrynwf7mAfBYcVojkOAIb0cIy6kjQtj2ohMGLtGzl4QwIhTo4wRhxGnNimsggAEdBEw4SxnQo265oO4ZhHIzSuQHpPS5Fj2mdtSfza4rTwwoJVZEFyoFs1xAWIIQ2DEhbBpYU0ZkQlr58hbNwGMODXCGHEYcWqTwioIQEAXARPOcibUqGs+iGsWgQ+2HZC7Zn5UVPSCn/aTlg1qmAXBhWrRHBcghjAERlwImxbWlBGZsHaOvHUTwIhTI4wRhxGnNimsggAEdBEw4SxnQo265oO4ZhF47K1P5G8f7bGLbtOohsz/ST+zALhULZrjEsiQhcGIC1nDwpwuIhPm7pG7TgIYcWp0MeIw4tQmhVUQgIAuAiac5UyoUdd8ENccAnn5BZI8eYEcOplrF/3QNa3lJ6ltzAHgYqVojoswQxQKIy5EzQp7qohM2DtI/roIYMSpkcWIw4hTmxRWQQACugiYcJYzoUZd80Fccwgs23FQbpuxoqjgeWP6SLvGtcwB4GKlaI6LMEMUCiMuRM0Ke6qITNg7SP66CGDEqZHFiMOIU5sUVkEAAroImHCWM6FGXfNBXHMIPPHOBnl1+ed2wS3qV5eFP+0nCQkJ5gBwsVI0x0WYIQqFEReiZoU9VUQm7B0kf10EMOLUyGLEYcSpTQqrIAABXQRMOMuZUKOu+SCuGQQKCgql59MLZP/xHLvg0f1byqPXtjOjeA1VojkaoIYgJEZcCJoUlRQRmah0kjrcJoARp0YUIw4jTm1SWAUBCOgiYMJZzoQadc0Hcc0gsGrXYbn5T8uLip3zo6ul88W1zSheQ5VojgaoIQiJEReCJkUlRUQmKp2kDrcJYMSpEcWIw4hTmxRWQQACugiYcJYzoUZd80FcMwhMfG+TvPLfz+xiL65bVZY8OoDbUh20Hs1xAC/El2LEhbh5YUsdkQlbx8jXKwIYcWqkMeIw4tQmhVUQgIAuAiac5UyoUdd8EDf6BAoLC+XqqRmy9+tTdrH39GkhY6/rEP3CNVaI5miEG+DQGHEBbk7UUkNkotZR6nGLAEacGkmMOIw4tUlhFQQgoIuACWc5E2rUNR/EjT6BdXu+lv/549KiQv/1w17SvXnd6BeusUI0RyPcAIfGiAtwc6KWGiITtY5Sj1sEMOLUSGLEYcSpTQqrIAABXQRMOMuZUKOu+SBu9AlMmbtF/vTBDrvQxrWqyLJfDJQKFXhbqpPOozlO6IX3Woy48PYudJkjMqFrGQl7RAAjTg00RhxGnNqksAoCENBFwISznAk16poP4kabgHVbav/fLJLPD2XZhY7odYmMv75jtIv2oDo0xwPIAdwCIy6ATYlqSohMVDtLXU4JYMSpEcSIw4hTmxRWQQACugiYcJYzoUZd80HcaBPY9OUxGfqHJUVFvnFvT+l56QXRLtqD6tAcDyAHcAuMuAA2JaopITJR7Sx1OSWAEadGECMOI05tUlgFAQjoImDCWc6EGnXNB3GjTeB387fKHxZ+ahdZv0YlWfF4iiRyW6rjpqM5jhGGMgBGXCjbFs6kEZlw9o2s9RPAiFNjjBGHEac2KayCAAR0ETDhLGdCjbrmg7jRJpDyuw/k0/0n7CJvS24mk2/sHO2CPaoOzfEIdMC2wYgLWEOinA4iE+XuUpsTAhhxavQw4jDi1CaFVRCAgC4CJpzlTKhR13wQN7oEtmcel9RnFxcVOPvuK6VP6wbRLdjDytAcD2EHaCuMuAA1I+qpIDJR7zD1xUsAI06NHEYcRpzapLAKAhDQRcCEs5wJNeqaD+JGl8AfFmyX36VtswusU62irBybIhUTK0S3YA8rQ3M8hB2grTDiAtSMqKeCyES9w9QXLwGMODVyGHEYcWqTwioIQEAXARPOcibUqGs+iBtdAkOeWyKbvzpmF/i97hfLM9+7LLrFelwZmuMx8IBshxEXkEaYkAYiY0KXqTEeAhhxatQw4jDi1CaFVRCAgC4CJpzlTKhR13wQN5oEdh08Kf1/s6iouFkjrpAB7RpGs1gfqkJzfIAegC0x4gLQBFNSQGRM6TR1xkoAI06NGEYcRpzapLAKAhDQRcCEs5wJNeqaD+JGk8D0RTtk6rwtdnE1KyfJqnEpUjkpMZrF+lAVmuMD9ABsiREXgCaYkgIiY0qnqTNWAhhxasQw4jDi1CaFVRCAgC4CJpzlTKhR13wQN5oE/uf5/8q6L47axd1w+UXy+//XNZqF+lQVmuMTeJ+3xYjzuQEmbY/ImNRtao2FAEacGi2MOIw4tUlhFQQgoIuACWc5E2rUNR/EjR6BL45kydVTM4oKe/GO7jK4Y+PoFepjRWiOj/B93Bojzkf4pm2NyJjWcepVJYARp0YKIw4jTm1SWAUBCOgiYMJZzoQadc0HcaNH4OUlO2XSfzbbhVWrlChrxqVKlYrclupmp9EcN2mGJxZGXHh6FfpMEZnQt5ACNBHAiFMDixGHEac2KayCAAR0ETDhLGdCjbrmg7jRI3Dz9GWy6vMjdmHXdb5Q/nh7t+gV6XNFaI7PDfBpe4w4n8CbuC0iY2LXqVmFAEacCiURjDiMOLVJYRUEIKCLgAlnORNq1DUfxI0Wgcxj2dLz6QVSWHimrudv6yrDulwUrSIDUA2aE4Am+JACRpwP0E3dEpExtfPUfT4CGHHnI3Tm5xhxGHFqk8IqCEBAFwETznIm1KhrPogbLQKvLt8lT7yz0S6qclIF+7bU6pWTolVkAKpBcwLQBB9SwIjzAbqpWyIypnaeus9HACPufIQw4soihK6qzQ6rIAABdwiYoDkm1OjONBAl6gT+v5c+lOU7D9llpnZoJDPu7BH1kn2pD83xBbvvm2LE+d4CcxJAZMzpNZXGRgAjTo0X34gryQldVZsdVkEAAu4QMEFzTKjRnWkgSpQJHDqRI1c8lS4F39yW+uytl8mNXS+Ocsm+1Ybm+Ibe140x4nzFb9bmiIxZ/aZadQIYcWqsMOIw4tQmhVUQgIAuAiac5UyoUdd8EDc6BP720W557K31dkEVExNk1S9TpXbVitEpMECVoDkBaoaHqWDEeQjb9K0QGdMngPrLIoARpzYbGHEYcWqTwioIQEAXARPOcibUqGs+iBsdAnfO/EgWbztgFzSgbQOZNfLK6BQXsErQnIA1xKN0MOI8As02IogMUwCB0glgxKlNBkYcRpzapLAKAhDQRcCEs5wJNeqaD+JGg8DRrNPSfVKa5H1zX+qvb+oit1zRNBrFBbAKNCeATfEgJYw4DyCzxRkCiAyTAAGMOCczgBGHEedkfrgWAhBwTsCEs5wJNTqfBCJEmcA/V38hj/xjnV1iYoUEWTU2RepWrxTlkn2tDc3xFb9vm2PE+YbevI0RGfN6TsVqBPhGnBonjDiMOLVJYRUEIKCLgAlnORNq1DUfxI0GgVF/WSnpm/fbxVzdqr68Nio5GoUFtAo0J6CN0ZwWRpxmwIT/lgAiwzRAoHQCGHFqk4ERhxGnNimsggAEdBEw4SxnQo265oO44SdwPPu0dJ+YLrn5BXYxk27oJN/v2Tz8hQW4AjQnwM3RmBpGnEa4hC5OAJFhIiCAEedkBjDiMOKczA/XQgACzgmYcJYzoUbnk0CEqBJ45+O98tAbH9vlJSSIrHj8GmlYs0pUyw1EXWhOINrgeRIYcZ4jN3dDRMbc3lN5+QT4RpzahGDEYcSpTQqrIAABXQRMOMuZUKOu+SBu+An88LXVMnfDPruQK1vUk7/fd1X4iwp4BWhOwBukKT2MOE1gCcsvjMwABFQJYMSpkcKIQ1fVJoVVEICALgIm/MJoQo265oO44SaQlZsn3SamSfbpM7elPjm8g4zs3SLcRYUgezQnBE3SkCJGnAaohCydACLDZECgdAIYcWqTgRGHEac2KayCAAR0ETDhLGdCjbrmg7jhJjB3/Vfyw9fXFBWx/LGBcmHtquEuKgTZozkhaJKGFDHiNEAlJEYcMwCBWAhgxKnRwojDiFObFFZBAAK6CJjwC6MJNeqaD+KGm8CDf1sr76770i6ia7M68vbo3uEuKCTZozkhaZTLaWLEuQyUcGUTQGSYDgiUTgAjTm0yMOIw4tQmhVUQgIAuAiac5UyoUdd8EDe8BLJP50v3iWlyMjffLuLxoe3k3r4tw1tQiDJHc0LULBdTxYhzESahyieAyDAhEMCIczIDGHEYcU7mh2shAAHnBEw4y5lQo/NJIELUCKRvypRRr64qKmvJowOkab1qUSszkPWgOYFsi/akMOK0I2aDswQQGWYBAhhxTmYAIw4jzsn8cC0EIOCcgAlnORNqdD4JRIgagYf//rG8tWavXVanJrXkvR/3iVqJga0HzQlsa7QmhhGnFS/BzyWAyDAPEMCIczIDGHEYcU7mh2shAAHnBEw4y5lQo/NJIEKUCOTmFUiPSWlyLDvPLutng9vKAwNaRanEQNeC5gS6PdqSw4jThpbA3yWAyDATEMCIczIDGHEYcU7mh2shAAHnBEw4y5lQo/NJIEKUCHyw7YDcNfOjopIW/rSfXNqgRpRKDHQtaE6g26MtOYw4bWgJjBHHDEBAjQAva1DjhBGHEac2KayCAAR0ETDhF0YTatQ1H8QNJ4Ff/OsTeWPlHjv5to1qyvs/6RvOQkKaNZoT0sY5TBsjziFALlcngMios2KlWQQw4tT6jRGHEac2KayCAAR0ETDhLGdCjbrmg7jhI5CXXyBXTl4gh0/m2sk/dE1r+Ulqm/AVEuKM0ZwQN89B6hhxDuBxaWwEEJnYeLHaHAIYcWq9xojDiFObFFZBAAK6CJhwljOhRl3zQdzwEVi246DcNmNFUeLvj+krbRvXDF8hIc4YzQlx8xykjhHnAB6XxkYAkYmNF6vNIYARp9ZrjDiMOLVJYRUEIKCLgAlnORNq1DUfxA0fgXH/3iCzP/zcTvzS+tVlwU/7SUJCQvgKCXHGaE6Im+cgdYw4B/C4NDYCiExsvFhtDgGMOLVeY8RhxKlNCqsgAAFdBEw4y5lQo675IG64CBQUFErPpxfI/uM5duKj+7eUR69tF64iIpAtmhOBJsZRAkZcHNC4JD4CiEx83Lgq+gQw4tR6jBGHEac2KayCAAR0ETDhLGdCjbrmg7jhIrBq12G5+U/Li5J+78dXS6cmtcNVRASyRXMi0MQ4SsCIiwMal8RHAJGJjxtXRZ8ARpxajzHiMOLUJoVVEICALgImnOVMqFHXfBA3XAR+NWeTzFz6mZ30xXWrypJHB3Bbqg8tRHN8gB6ALTHiAtAEU1JAZEzpNHXGSgAjTo1YEI24V199Ve666y67gF27dknz5s2LFbN06VIZP368rFixQpKSkqRPnz4yefJk6dixo1rR51mFrrqCkSAQgIAiAS80B11VbAbLIOCAQGFhofSeslC+PJptR7mnTwsZe10HBxG5NF4CXuhqvLlxnT4CGHH62BL5OwQQGUYCAqUTwIhTm4ygGXEHDhyQ9u3by6FDh0o14ubOnSvDhw+3f5acnCzZ2dmydu1aqVatmixZskS6du2qVng5q9BVxwgJAAEIxEBAt+agqzE0g6UQcEDg4z1fyw1/XFoU4a3RvaRbs7oOInJpvAR062q8eXGdXgIYcXr5Ev0cAogM4wABjDgnMxA0I+7222+Xt956S5o2bSrbt28v9o0461+aW7ZsKbt375b33ntPrr32Wrv0V155RUaNGiX9+/eXjIwMJzjsa9FVxwgJAAEIxEBAt+agqzE0g6UQcEDg6bmb5cUPdtoRGteqIst+MVAqVOBtqQ6Qxn2pbl2NOzEu1EoAI04rXoKfSwCRYR4ggBHnZAaCZMRZ33YbOnSoPPLII7Jq1SpZtKODaDUAACAASURBVGhRMSNu/vz5MnjwYNt0mzFjRrGyU1NTJT09XbZt2yatW7d2ggQjzhE9LoYABGIloPMsh67G2g3WQyA+AtY/Fvb/zSL5/FCWHWBEr0tk/PXuPDIjvozMvkqnrppNNtjVY8QFuz+Ryg6RiVQ7KcZFAtyaqgYzKEbciRMn7Ge8nTx50jbTbrrpphJGnPXcOOs5R9Yvlme/DXe2yunTp8vo0aNlwoQJ8sQTT6gVX8YqdNURPi6GAARiJKBLc9DVGBvBcgg4ILDxy6Ny3R/+WxThzXt7SvKlFziIyKVOCOjSVSc5ca1+Ahhx+hmzwzcEEBlGAQKlE8CIU5uMoBhxY8aMkeeee05ee+01sW6jGjBgQAkjrm/fvvZz4I4cOSJ16tQpVqD1nLhu3brJiBEjZNasWWrFY8Q54sTFEICAOwR0neXQVXf6QxQIqBD47fytMm3hp/bS+jUqyYrHUySR21JV0GlZo0tXtSRLUNcIYMS5hpJA5yOAyJyPED83lQBGnFrng2DEWW8/7dWrlwwZMsR+9pv1Kc2Is245td6ievr06RLF7dmzR5o1ayaDBg2S999//7zFn9XO0hZasaxn1O3ceeY5L3wgAAEI6CSg4yyHrursGLEhUJJAyu8+kE/3n7B/cHtyM3nqxs5g8pGADl31sRy2ViSAEacIimXOCSAyzhkSIZoEMOLU+uq3EWeZatY32awXMGzcuFEuvvhiO/HSjLgaNWqI9Wffvn0lijt16pT95tROnTrJ+vXrz1s8Rtx5EbEAAhDwiIDbZzl01aPGsQ0EviGwPfO4pD67uIjHa3cny9Wt68PHRwJu66qPpbB1DAQw4mKAxVJnBBAZZ/y4OroEMOLUeuu3ETdp0iQZN26cvPjii3LvvfcWJV2aEVezZk3bbMvMzCxRXFZWllSvXl26dOki69atUyu+jFXoqiN8XAwBCMRIwG3NQVdjbADLIeCQwB8WbJffpW2zo9SpVlFWjk2RiokVHEblcicE3NZVJ7lwrXcEMOK8Y238ToiM8SMAgDIIYMSpjYafRtzWrVvlsssus29LXbBggSQkJJRrxLVp08a+XdT6tse5a62LrG/UNW/e3H6r6rx589SKx4hzxImLIQABdwi4eZZDV93pCVEgEAuBIc8tkc1fHbMvuaXHxfLrmy+L5XLWaiDgpq5qSI+QmghgxGkCG8Sw1hv8rDf5WR/r2UXWL4LnfpYuXSrjx48X61kdSUlJ0qdPH5k8ebL9dkA3PoiMGxSJEUUCGHFqXfXTiLvvvvvkpZdeUkp00aJF9ttQFy9eLIcPH5a6desWu2716tXSo0cPGTlypMycOVMpZlmL0FVH+LgYAhCIkYCbmoOuxgif5RBwSGDXwZPS/zeLiqLMGnGFDGjX0GFULndKwE1ddZoL13tHACPOO9a+7nTgwAFp3769HDp0qFQjbu7cuTJ8+HD7Z8nJyZKdnS3Wm/2sW6usN/917drVcf6IjGOEBIgoAYw4tcb6acRZb0i1/pGitM/bb78te/fulTvvvFNq1aolDz30kDz99NO2yTZnzhwZNmxYscumTZsmDz74oFi3ZI0dO1at+DJWoauO8HExBCAQIwE3NQddjRE+yyHgkMD0RTtk6rwtdpSalZNk1bgUqZyU6DAqlzsl4KauOs2F670jgBHnHWtfd7r99tvlrbfest+ut3379mLfiCssLJSWLVvat0tZbwG89tpr7VxfeeUVGTVqlPTv318yMjIc54/IOEZIgIgSwIhTa6yfRlx5GZb2jDhLMwcOHCgjRoyQWbNmFbvc+nvrW3M7duyQFi1aqBWPEeeIExdDAALuEPDqLIeuutMvokDgXALXP/9f+eSLo/Zf3di1iTx76+UACgABr3Q1AKWSwjkEMOIMGAfr225Dhw6VRx55RFatWmX/Anjuranz58+3n1VkmW4zZswoRiQ1NVXS09Nl27Zt0rp1a0e0EBlH+Lg4wgQw4tSaGyYjzvoHjrZt29rPiXv33XdtDbY+lsZaL3pISUmRtLQ0tcLLWYWuOkZIAAhAIAYCXmlOaUYcuhpDo1gKge8Q+OJIllw99dsvVrx4R3cZ3LExnAJAwCtdDUCppIARZ84MnDhxwn7G28mTJ20z7aabbiphxFnPjbOeH2cZdme/DXeW0PTp02X06NEyYcIE+5lHTj6IjBN6XBtlAhhxat0NkxFnVWT9I8aQIUOkoKBAevbsKTk5ObJmzRr7janLli2Tzp07qxWOEeeYEwEgAAF3CHh1livNiENX3ekhUcwk8PKSnTLpP5vt4qtVSpQ141KlSkVuSw3CNHilq0GolRy+JcA34iI+DWPGjJHnnntOrOdwWLenlnaw6du3r/0cuCNHjkidOnWKEbGeE9etW7dSb6+KFR0iEysx1ptCACNOrdNhM+KsqpYvXy7jxo2zny+XmJgo/fr1kylTptjP7HTjg666QZEYEICAKgGvNKcsIw5dVe0U6yBQnMBN05fJ6s+P2H95XZcL5Y+3dQNRQAh4pasBKZc0viGAERfhUbB+8evVq5f9jQzr2W/Wp7SDjXXLqXWr6unTp0vQ2LNnjzRr1kwGDRok77//viNaiIwjfFwcYQIYcWrNDaoRp5a9nlXoqh6uRIUABEonYILmmFAj820Wgcxj2ZI8eUFR0c/f1lWGdbnILAgBrhbNCXBzNKaGEacRrp+hLVPN+iab9QKGjRs3ysUXX1ymEVejRg2x/uzbt69EyqdOnbLfnNqpUydZv379eUs6KySlLbRMPetlEdYzk/hAAALfEsCIU5sGjLiSnDi8qc0OqyAAAXcImKA5JtTozjQQJSwEXl2+S554Z6OdbuWkCvZtqdUrJ4Ul/cjnieZEvsWlFogRF9G+T5o0yb4d6sUXX7QfDH72U9o34mrWrGmbbZmZmSVoZGVl2c8z6tKli6xbt+68tDDizouIBRAoQQAjTm0oMOIw4tQmhVUQgIAuAib8wmhCjbrmg7jBJPD/XlouH+48bCc3qEMjeenOHsFM1NCs0BwzG48RF8G+b926VS677DL7ttQFCxZIQkJCuUZcmzZt7G+pWd+iO3etdZH1jbrmzZvbb1WdN2+eI1qIjCN8XBxhAhhxas3FiMOIU5sUVkEAAroImHCWM6FGXfNB3OAROHQiR654Kl0KCs/k9uytl8mNXc/cKcUnGATQnGD0wessMOK8Ju7Bfvfdd5+89NJLSjstWrTIfhvq4sWL5fDhw1K3bt1i161evVp69OghI0eOlJkzZyrFLGsRIuMIHxdHmABGnFpzMeIw4tQmhVUQgIAuAiac5UyoUdd8EDd4BP720W557K0zjxeqmJggq8elSq0qFYOXqMEZoTlmNh8jLoJ9t96Qar2oobTP22+/LXv37pU777xTatWqJQ899JA8/fTTtsk2Z84cGTZsWLHLpk2bJg8++KBYt7qOHTvWES1ExhE+Lo4wAYw4teZixGHEqU0KqyAAAV0ETDjLmVCjrvkgbvAI3PHKClmy/aCd2IC2DWTWyCuDl6ThGaE5Zg4ARpxhfS/tGXEZGRkycOBAGTFihMyaNasYEevvrW/N7dixQ1q0aOGIFiLjCB8XR5gARpxaczHiMOLUJoVVEICALgImnOVMqFHXfBA3WASOZp2W7pPSJO+b+1J/fVMXueWKpsFKkmwEzTFzCDDiDOt7aUZcYWGhtG3b1n5O3LvvvitDhw61qcyYMcN+0UNKSoqkpaU5JoXIOEZIgIgSwIhTayxGHEac2qSwCgIQ0EXAhLOcCTXqmg/iBovAP1d/IY/848zL9hIrJMiqsSlSt3qlYCVJNhhxhs4ARpxhjS/NiLMQpKeny5AhQ6SgoEB69uwpOTk5smbNGvuNqcuWLZPOnTs7JsXBxjFCAkSUAEacWmMx4jDi1CaFVRCAgC4CJpzlTKhR13wQN1gE7v7zSlmwZb+d1NWt6stro5KDlSDZ2ATQHDMHASPOsL6XZcRZGJYvXy7jxo2zny+XmJgo/fr1kylTpkj79u1doYTIuIKRIBEkgBGn1lSMOIw4tUlhFQQgoIuACWc5E2rUNR/EDQ6B49mnpfvEdMnNL7CTeurGTnJ7cvPgJEgmRQTQHDOHASPOzL77UjUi4wt2Ng0BAYw4tSZhxGHEqU0KqyAAAV0ETDjLmVCjrvkgbnAIvPPxXnnojY/thBISRD56PEUa1KwcnATJBCPO8BnAiDN8ALwsn4ONl7TZK0wEMOLUuoURhxGnNimsggAEdBEw4SxnQo265oO4wSFw/+zVMm/jPjuhK1vUk7/fd1VwkiOTYgTQHDMHAiPOzL77UjUi4wt2Ng0BAYw4tSZhxGHEqU0KqyAAAV0ETDjLmVCjrvkgbjAIZOXmSbeJaZJ9+sxtqeOHd5ARvVsEIzmyKEEAzTFzKDDizOy7L1UjMr5gZ9MQEMCIU2sSRhxGnNqksAoCENBFwISznAk16poP4gaDwP+t/0pGv76mKJkPH7tGGteuEozkyAIjjhmwCWDEMQieEeBg4xlqNgoZAYw4tYZhxGHEqU0KqyAAAV0ETDjLmVCjrvkgbjAI/Phva2XOui/tZLo2qyNvj+4djMTIolQCaI6Zg4ERZ2bffakakfEFO5uGgABGnFqTMOIw4tQmhVUQgIAuAiac5UyoUdd8ENd/Atmn86X7xDQ5mZtvJzN2aHu5p++l/idGBmUSQHPMHA6MODP77kvViIwv2Nk0BAQw4tSahBGHEac2KayCAAR0ETDhLGdCjbrmg7j+E0jblCn3vLqqKJEljw6QpvWq+Z8YGWDEMQPFCGDEMRCeEeBg4xlqNgoZAYw4tYZhxGHEqU0KqyAAAV0ETDjLmVCjrvkgrv8EHv77x/LWmr12Ip2a1JL3ftzH/6TIoFwCaI6ZA4IRZ2bffakakfEFO5uGgABGnFqTMOIw4tQmhVUQgIAuAiac5UyoUdd8ENdfArl5BdJjUpocy86zE/nZ4LbywIBW/ibF7uclgOacF1EkF2DERbKtwSwKkQlmX8jKfwIYcWo9wIjDiFObFFZBAAK6CJhwljOhRl3zQVx/CSzaul9GzFpZlMTCn/aTSxvU8Dcpdj8vATTnvIgiuQAjLpJtDWZRiEww+0JW/hPAiFPrAUYcRpzapLAKAhDQRcCEs5wJNeqaD+L6S+AX//pE3li5x06ibaOa8v5P+vqbELsrEUBzlDBFbhFGXORaGtyCEJng9obM/CWAEafGHyMOI05tUlgFAQjoImDCWc6EGnXNB3H9I5CXXyBXPJUuR7JO20mMSWktY1La+JcQOysTQHOUUUVqIUZcpNoZ7GIQmWD3h+z8I4ARp8YeIw4jTm1SWAUBCOgiYMJZzoQadc0Hcf0jsOzTg3LbyyuKEnh/TF9p27imfwmxszIBNEcZVaQWYsRFqp3BLgaRCXZ/yM4/Ahhxauwx4jDi1CaFVRCAgC4CJpzlTKhR13wQ1z8C4/69QWZ/+LmdwKUNqsuCh/tJQkKCfwmxszIBNEcZVaQWYsRFqp3BLgaRCXZ/yM4/Ahhxauwx4jDi1CaFVRCAgC4CJpzlTKhR13wQ1x8CBQWFkvz0AjlwPMdO4IEBLeVng9v5kwy7xkwAzYkZWSQuwIiLRBvDUQQiE44+kaX3BDDi1JhjxGHEqU0KqyAAAV0ETDjLmVCjrvkgrj8EVu46LN/70/Kizd/78dXSqUltf5Jh15gJoDkxI4vEBRhxkWhjOIpAZMLRJ7L0ngBGnBpzjDiMOLVJYRUEIKCLgAlnORNq1DUfxPWHwK/mbJKZSz+zN29ar6os/tkAbkv1pxVx7YrmxIUt9BdhxIW+heEpAJEJT6/I1FsCGHFqvDHiMOLUJoVVEICALgImnOVMqFHXfBDXewKFhYXSe8pC+fJotr35vX0vlceHtvc+EXaMmwCaEze6UF+IERfq9oUreUQmXP0iW+8IYMSpscaIw4hTmxRWQQACugiYcJYzoUZd80Fc7wl8vOdrueGPS4s2fmt0L+nWrK73ibBj3ATQnLjRhfpCjLhQty9cySMy4eoX2XpHACNOjTVGHEac2qSwCgIQ0EXAhLOcCTXqmg/iek/g6bmb5cUPdtobX1i7iiz9+UCpUIG3pXrfifh3RHPiZxfmKzHiwty9kOWOyISsYaTrGQGMODXUGHEYcWqTwioIQEAXARPOcibUqGs+iOstAeu21H7PLJLdh7PsjUf0ukTGX9/R2yTYzTEBNMcxwlAGwIgLZdvCmTQiE86+kbV+Ahhxaowx4jDi1CaFVRCAgC4CJpzlTKhR13wQ11sCG788Ktf94b9Fm755b09JvvQCb5NgN8cE0BzHCEMZACMulG0LZ9KITDj7Rtb6CWDEqTHGiMOIU5sUVkEAAroImHCWM6FGXfNBXG8J/Ob9rfJ8xqf2pvVrVJYVj18jidyW6m0TXNgNzXEBYghDYMSFsGlhTRmRCWvnyFs3AYw4NcIYcRhxapPCKghAQBcBE85yJtSoaz6I6y2Ba367SHYcOGlventyM3nqxs7eJsBurhBAc1zBGLogGHGha1l4E0Zkwts7MtdLACNOjS9GHEac2qSwCgIQ0EXAhLOcCTXqmg/iekdge+ZxSX12cdGGr49Klt6t6nuXADu5RgDNcQ1lqAJhxIWqXeFOFpEJd//IXh8BjDg1thhxGHFqk8IqCEBAFwETznIm1KhrPojrHYHn0rfLs+nb7A3rVqsoK8emSFJiBe8SYCfXCKA5rqEMVSCMuFC1K9zJIjLh7h/Z6yOAEafGFiMOI05tUlgFAQjoImDCWc6EGnXNB3G9I3Dt7xfLln3H7Q1v6XGx/Prmy7zbnJ1cJYDmuIozNMEw4kLTqvAnisiEv4dUoIcARpwaV4w4jDi1SWEVBCCgi4AJZzkTatQ1H8T1hsBnB0/KgN8sKtps1sgrZEDbht5szi6uE0BzXEcaioAYcaFoUzSSRGSi0UeqcJ8ARpwaU4w4jDi1SWEVBCCgi4AJZzkTatQ1H8T1hsALiz6VX8/bam9Ws0qSrP5lqlRK4rZUb+i7vwua4z7TMETEiAtDlyKSIyITkUZShusEMOLUkGLEYcSpTQqrIAABXQRMOMuZUKOu+SCuNwSuf/6/8skXR+3NbuzaRJ699XJvNmYXLQTQHC1YAx8UIy7wLYpOgohMdHpJJe4SwIhT44kRhxGnNimsggAEdBEw4SxnQo265oO4+gl8cSRLrp6aUbTRS3d0l0EdG+vfmB20EUBztKENdGCMuEC3J1rJITLR6ifVuEcAI06NJUYcRpzapLAKAhDQRcCEs5wJNeqaD+LqJ/Dykp0y6T+b7Y2qVUqUNeNSpUrFRP0bs4M2AmiONrSBDowRF+j2RCs5RCZa/aQa9whgxKmxxIjDiFObFFZBAAK6CJhwljOhRl3zQVz9BG6avkxWf37E3ui6LhfKH2/rpn9TdtBKAM3RijewwTHiAtua6CWGyESvp1TkDgGMODWOGHEYcWqTwioIQEAXARPOcibUqGs+iKuXwL6j2dLz6QVFm1gmnGXG8Qk3ATQn3P2LN3uMuHjJcV3MBBCZmJFxgSEEMOLUGo0RhxGnNimsggAEdBEw4SxnQo265oO4egn8ZdkuefLdjfYmlZMq2LelVq+cpHdTomsngOZoRxzIDTDiAtmWaCaFyESzr1TlnABGnBpDjDiMOLVJYRUEIKCLgAlnORNq1DUfxNVL4P+9tFw+3HnY3mRwx0by4h099G5IdE8IoDmeYA7cJhhxgWtJdBNCZKLbWypzRgAjTo0fRhxGnNqksAoCENBFwISznAk16poP4uojcPBEjlz5VLoUFJ7Z4/e3Xi43dG2ib0Mie0YAzfEMdaA2wogLVDuinQwiE+3+Ul38BDDi1NhhxGHEqU0KqyAAAV0ETDjLmVCjrvkgrj4Cf12xWx5/e729QcXEBFk9LlVqVamob0Mie0YAzfEMdaA2wogLVDuinQwiE+3+Ul38BDDi1NhhxGHEqU0KqyAAAV0ETDjLmVCjrvkgrj4Cd7yyQpZsP2hvMLBdQ5k54gp9mxHZUwJojqe4A7MZRlxgWhH9RBCZ6PeYCuMjgBGnxg0jDiNObVJYBQEI6CJgwlnOhBp1zQdx9RD4OitXekxKl7xv7kv99c1d5JYeTfVsRlTPCaA5niMPxIYYcYFogxlJIDJm9JkqYyeAEafGDCMOI05tUlgFAQjoImDCWc6EGnXNB3H1EPjHqj3ys39+YgdPrJAgq8amSN3qlfRsRlTPCaA5niMPxIYYcYFogxlJIDJm9JkqYyeAEafGDCMOI05tUlgFAQjoImDCWc6EGnXNB3H1ELj7zytlwZb9dvA+revL7LuT9WxEVF8IoDm+YPd9U4w431tgTgKIjDm9ptLYCGDEqfHCiMOIU5sUVkEAAroImHCWM6FGXfNBXPcJHM8+Ld0npktufoEd/KkbO8ntyc3d34iIvhFAc3xD7+vGGHG+4jdrc0TGrH5TrToBjDg1VhhxGHFqk8IqCEBAFwETznIm1KhrPojrPoF3Pt4rD73xsR04IUHko8dTpEHNyu5vRETfCKA5vqH3dWOMOF/xm7U5ImNWv6lWnQBGnBorjDiMOLVJYRUEIKCLgAlnORNq1DUfxHWfwP2zV8u8jfvswMkt6smb913l/iZE9JUAmuMrft82x4jzDb15GyMy5vWcitUIYMSpccKIw4hTmxRWQQACugiYcJYzoUZd80Fcdwlk5eZJt4lpkn36zG2p44d3kBG9W7i7CdF8J4Dm+N4CXxLAiPMFu5mbIjJm9p2qz08AI+78jKwVGHEYcWqTwioIQEAXARPOcibUqGs+iOsugf9b/5WMfn1NUdAPH7tGGteu4u4mRPOdAJrjewt8SQAjzhfsZm6KyJjZd6o+PwGMuPMzwogrnRG6qjY7rIIABNwhYILmmFCjO9NAFN0EfvTXNfLeJ1/Z23RrVkfeGt1b95bE94EAmuMD9ABsiREXgCaYkgIiY0qnqTNWAhhxasT4RlxJTuiq2uywCgIQcIeACZpjQo3uTANRdBLIPp0v3SemycncfHubsUPbyz19L9W5JbF9IoDm+ATe520x4nxugEnbIzImdZtaYyGAEadGCyMOI05tUlgFAQjoImDCWc6EGnXNB3HdI5C2KVPueXVVUcAljw6QpvWqubcBkQJDAM0JTCs8TQQjzlPcZm+GyJjdf6ovmwBGnNp0YMRhxKlNCqsgAAFdBEw4y5lQo675IK57BB5+82N5a+1eO2DnJrVlzo+vdi84kQJFAM0JVDs8SwYjzjPUbITIMAMQKJ0ARpzaZGDEYcSpTQqrIAABXQRMOMuZUKOu+SCuOwRy8wqk+6Q0OZ6dZwf82eC28sCAVu4EJ0rgCKA5gWuJJwlhxHmCmU0sAogMcwABjDgnM4ARhxHnZH64FgIQcE7AhLOcCTU6nwQi6CSwaOt+GTFrZdEWC3/aTy5tUEPnlsT2kQCa4yN8H7fGiPMRvmlbIzKmdZx6VQnwjTg1UhhxGHFqk8IqCEBAFwETznIm1KhrPojrDoGf//MTeXPVHjtYu8Y1Zd6Yvu4EJkogCaA5gWyL9qQw4rQjZoOzBBAZZgECpRPAiFObDIw4jDi1SWEVBCCgi4AJZzkTatQ1H8R1TiAvv0CueCpdjmSdtoONSWktY1LaOA9MhMASQHMC2xqtiWHEacVL8HMJIDLMAwQw4pzMAEYcRpyT+eFaCEDAOQETznIm1Oh8Eoigi8CyTw/KbS+vKAo//yd9pU2jmrq2I24ACKA5AWiCDylgxPkA3dQtERlTO0/d5yPAN+LOR+jMzzHiMOLUJoVVEICALgImnOVMqFHXfBDXOYFf/nu9vPbhbjvQpQ2qy4KH+0lCQoLzwEQILAE0J7Ct0ZoYRpxWvAQ/lwAiwzxAoHQCGHFqk4ERhxGnNimsggAEdBEw4SxnQo265oO4zgjkFxRKz6cXyIHjOXagBwa0lJ8NbucsKFcHngCaE/gWaUkQI04LVoKWRgCRYS4ggBHnZAYw4jDinMwP10IAAs4JmHCWM6FG55NABB0EPvrssNzy4vKi0O/9+Grp1KS2jq2IGSACaE6AmuFhKhhxHsI2fStExvQJoP6yCPCNOLXZwIjDiFObFFZBAAK6CJhwljOhRl3zQVxnBCbM2Sizlu6ygzStV1UW/2wAt6U6QxqKq9GcULTJ9SQx4lxHSsCyCCAyzAYESieAEac2GRhxGHFqk8IqCEBAFwETznIm1KhrPogbP4GCgkLpPXWhfHU02w5yX99L5bGh7eMPyJWhIYDmhKZVriaKEecqToKVRwCRYT4ggBHnZAYw4jDinMwP10IAAs4JmHCWM6FG55NABLcJrN19RG58YVlR2LdH95Kuzeq6vQ3xAkgAzQlgUzxICSPOA8hscYYAIsMkQAAjzskMBMWIO3jwoEyZMkXeeecd2bt3rzRv3lyuuuoqmTRpklx00UUlSty0aZM8/vjjsnjxYsnLy5Mrr7xSJkyYIL1793aCA111TI8AEIBArAR0neXQ1Vg7wfqoEXj6/zbLi4t32mVdWLuKLP35QKlQgbelRq3PpdWjS1dNYBfmGjHiwty9kOWOyISsYaTrGQFuTVVDHQQjbt26dXLDDTfIrl27pGvXrrYJt2HDBvn000+ldu3asmzZMunQoUNRQWvXrpU+ffpIVlaWXH755VKtWjX58MMP7Z/PmTNHhgwZolZ8GavQVUf4uBgCEIiRgA7NQVdjbALLI0egsLBQ+j2zSHYfzrJrG9n7EnlyeMfI1UlBpRPQoauwDj4BjLjg9ygyGSIykWklhbhMACNODajfRlxBQYH07NlTtm/fLm+++aYMGjTITtw6QFvfhnviiSekb9++8sEHHxQV1L9/f/u/z5gxQ0aNGmX//fz58+W6666TZs2a2QZeQkL8/+KNrqrNDqsgAAF3CLitOeiqO30hSrgJbNh7VIZN+29RDD+2aAAAIABJREFUEX+/7yq5skW9cBdF9soE3NZV5Y1Z6CsBjDhf8Zu1OSJjVr+pVp0ARpwaK7+NOCtL6/Yp60+7du2KJW39Mtm2bVvbWDt69KjUqlVLtm7daq9LSUmRtLS0Yuvvueceefnll+2/t34e7wddjZcc10EAAvEQ0KE56Go8neCaKBH4zftb5fmMT+2S6teoLCsev0YSuS01Si0utxYdumoMvBAXihEX4uaFLXVEJmwdI1+vCGDEqZEOghFXXqY333yz/Otf/5JVq1ZJ9+7d5cknn5Rf/epXMn36dLn//vuLXTp37lwZOnSojBw5UmbOnKkGoJRV6Grc6LgQAhCIg4DXmoOuxtEkLgkVAetb9df87gPZeeCknff3ezaTSTd0DlUNJOuMgNe66ixbrnaLAEacWySJc14CiMx5EbHAUAIYcWqND7oRZ922umLFCsnMzJSGDRvKnXfeKbNnzxbrOXHW8+HO/Rw5ckTq1asn1q2rGRkZagAw4uLmxIUQgIA7BLw+y6Gr7vSNKMElsC3zuAx6dnFRgq+PSpbereoHN2Eyc52A17rqegEEjIsARlxc2LgoHgKITDzUuMYEAhhxal0OshGXm5tr3456wQUX2G9StT6pqamSnp4uX3zxhTRp0qRYkda/gFesWFFatmxp38Ja3uesdpa2Zs+ePdK0aVPZufPMm9b4QAACENBJwMuzHLqqs5PEDgqB59K3y7Pp2+x06larKCvHpkhSYoWgpEceHhDwUlc9KIctFAlgxCmCYplzAoiMc4ZEiCYBjDi1vgbZiHvuuedkzJgx8vDDD8tvf/tbu6BOnTrJxo0b5dSpU1KlSpUSRTZq1Mh+m+rx48fLBYARpzYfrIIABPQT8PIsh67q7yc7+E/g2t8vli37zpwDbu3RVKbe3MX/pMjAUwJe6qqnhbFZuQQw4hgQzwggMp6hZqOQEcCIU2tYUI0460HjrVu3lvz8fPubafXrn7mlpHPnzrJhwwbbbKtatWqJIq3bV3NycuyXO8T7QVfjJcd1EIBAPAS80hx0NZ7ucE3YCHx28KQM+M2iorRnjbxCBrRtGLYyyNchAa901WGaXO4yAYw4l4ESrmwCiAzTAYHSCWDEqU1GEI046xbT733ve/ZLGqZOnSqPPvpoUTGDBg2y34q6e/du+/bRcz9nb01t1aqVbNmyRQ1AKavQ1bjRcSEEIBAHAS80B12NozFcEkoCLyz6VH4978zjKWpWSZLVv0yVSknclhrKZjpI2gtddZAel2oigBGnCSxhSxJAZJgKCGDEOZmBIBpxlvH2zDPPyPDhw+Wdd96RhISEohLvuusuefXVV2XNmjXStWvXYqUfOnTI/ubcgAEDZOHChXFjQVfjRseFEIBAHAS80Bx0NY7GcEkoCQyf9l9Zv/fMt+L/t2sT+d2txV/sFMqiSDpmAl7oasxJcYF2Ahhx2hGzwVkCiAyzAAGMOCczEDQjbvr06TJ69Gj7ttSVK1dK7dq1i5U3ceJEeeKJJ2TatGnyox/9qNjP5syZI9dff72MGjVKZsyYETcWdDVudFwIAQjEQUC35qCrcTSFS0JJYM/hLOnz62/fmv7SHd1lUMfGoayFpJ0R0K2rzrLjal0EMOJ0kSVuCQKIDEMBAYw4JzMQJCPOMtceeugh+5bTRYsWSYsWLUqUZj0vzrr1tF+/fpKR8e1h21r4gx/8QGbNmmVfa/083g+6Gi85roMABOIhoFNz0NV4OsI1YSXw8pKdMuk/m+30q1dKlNXjUqVKxcSwlkPeDgjo1FUHaXGpZgIYcZoBE/5bAogM0wABjDgnMxAUI278+PEyYcKEIhOuvLeapqamSnp6urz44oty77332uXPmzdPhg0bJtZ127Ztc4LEjmF9LNOPDwQgAAHdBHRpDrqqu3PEDxqB/31hqazZ/bWd1rAuF8rzt3ULWork4xEBXbrqUfpsEycBjLg4wYXlMuutU1OmTLGfXbR3715p3ry5XHXVVTJp0iS56KKLSpSxadMmefzxx2Xx4sWSl5cnV155pf0LZ+/evR2XjMg4RkiAiBLgZQ1qjQ2CEffAAw/ICy+8YCd8yy23iPXm02PHjklBQUGxImbPnm3/9/Xr10uvXr3kxIkT9nPiqlevLsuXL7efJTd37lxJSUlRK76MVeiqI3xcDAEIxEhAh+agqzE2geWhJ7DvaLb0fHpBUR1/vK2bXNflwtDXRQHxEdChq/FlwlVeEsCI85K2x3utW7dObrjhBtm1a5f9C6Blwm3YsEE+/fRT+1lGy5Ytkw4dOhRltXbtWunTp49kZWXJ5ZdfLtWqVZMPP/zQ/rn1PKMhQ4Y4qgCRcYSPiyNMACNOrblBMOLOfRlDeVlbb/07+9m8ebM89thj8sEHHxT9A4f1/DjLoHP6QVedEuR6CEAgFgI6NAddjaUDrI0Cgb8s2yVPvrvRLqVKxQr221KrV06KQmnUEAcBHboaRxpc4jEBjDiPgXu1nfXtjJ49e8r27dvlzTfflEGDBtlbW78cWt+Gsx4g3rdvX/sXw7Of/v372//denC49QBx6zN//ny57rrrpFmzZraBp3pYKq1ORMar7rNP2AhgxKl1LAhGnFqm3q1CV71jzU4QgIAYcTs8usqk6yZw64vLZcVnh+1tBndsJC/e0UP3lsQPMAE0J8DN0ZgaRpxGuH6Htm5Ltf60a9euWCqWSde2bVvbWDt69KjUqlVLtm7daq+zbpNKS0srtv6ee+6Rl19+2f57J7dRITJ+TwT7B5UARpxaZzDiSnJCV9Vmh1UQgIA7BEzQHBNqdGcaiBIPgQPHcyR5croUfPPF+d/fernc0LVJPKG4JiIE0JyINDLGMjDiYgQWleU333yz/Otf/5JVq1ZJ9+7d5cknn5Rf/epXYr02/v777y9WpvUco6FDh8rIkSNl5syZcSNAZOJGx4URJ4ARp9ZgjDiMOLVJYRUEIKCLgAlnORNq1DUfxD0/gddXfC5j395gL6yUWEFWjUuRWlUqnv9CVkSWAJoT2daWWxhGnJl9t29bXbFihWRmZtoPG7/zzjvFeri49Zw46/lw536OHDki9erVE+vW1YyMjLiJITJxo+PCiBPAiFNrMEYcRpzapLAKAhDQRcCEs5wJNeqaD+Ken8Adr6yQJdsP2gsHtmsoM0dccf6LWBFpAmhOpNtbZnEYcQb2PTc3174d9YILLrDfpGp9UlNTJT09Xb744gtp0qT416Ot58pVrFhRWrZsad/CGu8HkYmXHNdFnQBGnFqHMeIw4tQmhVUQgIAuAiac5UyoUdd8ELd8AkdO5kqPp9Il/5v7Up+5uYt8r0dTsBlOAM0xcwAw4gzs+3PPPSdjxoyRhx9+WH7729/aBDp16iQbN26UU6dOSZUqVUpQadSokf021ePHj5dL7KyQlLZoz5490rRpU9m5c6eB1CkZAmUTwIhTmw6MOIw4tUlhFQQgoIuACb8wmlCjrvkgbvkE/r5qjzz6z0/sRUkVEmTVL1OkTrVKYDOcAJpj5gBgxBnWd+vlDa1bt5b8/HzbEKtfv75NoHPnzrJhwwbbbKtatWoJKtbtqzk5OfbLHcr7YMQZNlCU6woBjDg1jBhxGHFqk8IqCEBAFwETfmE0oUZd80Hc8gn84M8rZeGW/faiPq3ry+y7k0EGASPeRk2bSxLAiDNoKqxbTL/3ve/ZL2mYOnWqPProo0XVDxo0yH4r6u7du+1vrZ37OXtraqtWrWTLli1xE+NgEzc6Low4AYw4tQZjxGHEqU0KqyAAAV0ETDjLmVCjrvkgbtkEjmWflh4T0yU3v8BeNPnGznJbcjOQQQAjztAZwIgzqPGW8fbMM8/I8OHD5Z133pGEhISi6u+66y559dVXZc2aNdK1a9diVA4dOmR/c27AgAGycOHCuIlxsIkbHRdGnABGnFqDMeIw4tQmhVUQgIAuAiac5UyoUdd8ELdsAv9eu1fGvPmxvaBCgshHY1Okfo3KIIMARpyhM4ARZ0jjp0+fLqNHj7ZvS125cqXUrl27WOUTJ06UJ554QqZNmyY/+tGPiv1szpw5cv3118uoUaNkxowZcRPjYBM3Oi6MOAGMOLUGY8RhxKlNCqsgAAFdBEw4y5lQo675IG7ZBO6bvUre35hpL0huUU/evO8qcEHAJoDmmDkIGHEG9N0y1x566CH7ltNFixZJixYtSlRtPS/OuvW0X79+kpGRUeznP/jBD2TWrFn2tdbP4/0gMvGS47qoE8CIU+swRhxGnNqksAoCENBFwISznAk16poP4pZO4GROnnSbmCY5eWduS51wfUe5q9cl4IIARpzBM4ARF/Hmjx8/XiZMmFBkwpX3MoXU1FRJT0+XF198Ue69916bzLx582TYsGG2U79t2zZHtDjYOMLHxREmgBGn1lyMOIw4tUlhFQQgoIuACWc5E2rUNR/ELZ3Afz75Sh7465qiH3742DXSuHYVcEEAI87gGcCIi3DzH3jgAXnhhRfsCm+55Rax3nx67NgxKSg4868xZz+zZ8+2/8/169dLr1695MSJE/Zz4qpXry7Lly+3nyU3d+5cSUlJcUSLg40jfFwcYQIYcWrNxYjDiFObFFZBAAK6CJhwljOhRl3zQdzSCfzor2vkvU++sn/YrVkdeWt0b1BBoIgAmmPmMGDERbjv576Mobwyrbeinv1s3rxZHnvsMfnggw8kLy9PrrzySrGeH2cZdE4/iIxTglwfVQIYcWqdxYjDiFObFFZBAAK6CJhwljOhRl3zQdySBLJP50v3iWlyMjff/uEvr2svo/pcCioIYMQZPgMYcYYPgJflc7DxkjZ7hYkARpxatzDiMOLUJoVVEICALgImnOVMqFHXfBC3JIH5G/fJvbNXF/1gyaMDpGm9aqCCAEac4TOAEWf4AHhZPgcbL2mzV5gIYMSpdQsjDiNObVJYBQEI6CJgwlnOhBp1zQdxSxJ4+M2P5a21e+0fdG5SW+b8+GowQaAYATTHzIHAiDOz775Ujcj4gp1NQ0AAI06tSRhxGHFqk8IqCEBAFwETznIm1KhrPohbnEBuXoF0n5Qmx7Pz7B88em1bGd2/FZgggBHHDAhGHEPgGQEONp6hZqOQEcCIU2sYRhxGnNqksAoCENBFwISznAk16poP4hYnkLF1v4yctbLoLzMe6S8t6lcHEwQw4pgBjDhmwDsCHGy8Y81O4SKAEafWL4w4jDi1SWEVBCCgi4AJZzkTatQ1H8QtTuDn//xE3ly1x/7Ldo1ryrwxfUEEgRIE0Bwzh4JvxJnZd1+qRmR8wc6mISCAEafWJIw4jDi1SWEVBCCgi4AJZzkTatQ1H8T9lkBefoFc8VS6HMk6bf/lT1LayEMprUEEAYw4ZsAmgBHHIHhGgIONZ6jZKGQEMOLUGoYRhxGnNimsggAEdBEw4SxnQo265oO43xJY+ulBuf3lFUV/Mf8nfaVNo5ogggBGHDOAEccMeEuAg423vNktPAQw4tR6hRGHEac2KayCAAR0ETDhLGdCjbrmg7jfEvjlv9fLax/utv+iZYPqkv5wP0lISAARBDDimAGMOGbAWwIcbLzlzW7hIYARp9YrjDiMOLVJYRUEIKCLgAlnORNq1DUfxD1DIL+gUJInL5CDJ3Ls//6jAa3kkcFtwQOBUgmgOWYOBremmtl3X6pGZHzBzqYhIIARp9YkjDiMOLVJYRUEIKCLgAlnORNq1DUfxD1D4KPPDsstLy4vwvHej6+WTk1qgwcCGHHMQBEBjDiGwTMCHGw8Q81GISOAEafWMIw4jDi1SWEVBCCgi4AJZzkTatQ1H8Q9Q2DCnI0ya+ku+/9uVq+afPCz/tyWynCUSQDNMXM4MOLM7LsvVSMyvmBn0xAQwIhTaxJGHEac2qSwCgIQ0EXAhLOcCTXqmg/iihQUFErvqQvlq6PZNo77+l4qjw1tDxoIYMQxA8UIYMQxEJ4R4GDjGWo2ChkBjDi1hmHEYcSpTQqrIAABXQRMOMuZUKOu+SCuyNrdR+TGF5YVoXh7dC/p2qwuaCCAEccMYMQxA/4Q4GDjD3d2DT4BjDi1HmHEYcSpTQqrIAABXQRMOMuZUKOu+SCuyOT/2ywvLd5po7iodhVZ+ouB3JbKYJRLAM0xc0D4RpyZffelakTGF+xsGgICGHFqTcKIw4hTmxRWqRDIPp0vJ3PypHrlJKlSMVHlEtZAQEw4y5lQI6Osh0BhYaH0fSZD9hw+ZW8wsvcl8uTwjno2I2pkCKA5kWllTIVgxMWEi8VOCCAyTuhxbZQJYMSpdRcjDiNObVJYVRaBrNw8effjL+W1FZ/Lhr3HipZ1alJLvp/cXK6//CKpVikJgBAok4AJZzkTamTE9RDYsPeoDJv236Lg/7j/Krniknp6NiNqZAigOZFpZUyFYMTFhIvFTgggMk7ocW2UCWDEqXUXIw4jTm1SWFUagZW7Dsv9s1fLoZO5ZQK6oHol+dMd3fnFkRHCiBORnTvP3F7IBwKqBJ55f4v8MWOHvbxBzcqy4rFrpEKFBNXLWWcoAX5HNrPxGHFm9t2XqhEZX7CzaQgIYMSpNQkjDiNObVJY9V0Clgl3+8srJDev4LxwKiVVkNdHJWPGnZeUmQtMOMuZUKOZ06u3auu21Gt+94HsPHDS3uj7PZvJpBs6692U6JEggOZEoo0xF4ERFzMyLoiXACITLzmuizoBjDi1DmPEYcSpTQqrziVg3Y7aZ2pGud+E+y4x65txS34+gNtUGaUSBEw4y5lQI6PtPoFtmcdl0LOLiwL/dVSy9GpV3/2NiBg5AmhO5FqqVBBGnBImFrlBAJFxgyIxokgAI06tqxhxGHFqk8Kqcwm88dFu+cVb62OGMvWmznLrFc1ivo4Lok3AhLOcCTVGe0r9qe736dvk9+nb7c3rVqsoK8emSFJiBX+SYddQEUBzQtUu15LFiHMNJYHORwCROR8hfm4qAYw4tc5jxGHEqU0Kq84lMGzakmIvZlClY73A4b0f91FdzjpDCJhwljOhRkPGVXuZ1u2o2zJPSNqmffLnZZ/LwRM59p639mgqU2/uon1/NogGATQnGn2MtQqMuFiJsT5uAohM3Oi4MOIEMOLUGowRhxGnNimsOksg+3S+tBs3L24gWyZeK1UqJsZ9PRdGj4AJZzkTaozeZHpXUV5+gazcdUTSNmVK2uZ9sufwqRKb/3nkFdK/bUPvkmKnUBNAc0LdvriTx4iLGx0XxkoAkYmVGOtNIYARp9ZpjDiMOLVJYdVZAodO5Ej3SelxA1n9yxS5oEbluK/nwugRMOEsZ0KN0ZtMvRWdyMmTD7YekPTNmbJwy345eup0mRt2ubi2/OuHvaQit6XqbUqEoqM5EWpmDKVgxMUAi6XOCCAyzvhxdXQJYMSp9RYjDiNObVJYdZYA34hjFtwmYMJZzoQa3Z6LKMbbdzRb0jZnSvqmTFm+45Dk5pf91ul61SvJwHYNJbVDIxnQtqFYb5/mAwFVAmiOKqlorcOIi1Y/A10NIhPo9pCcjwQw4tTgY8RhxKlNCqvOJcAz4pgHNwmYcJYzoUY3ZyIqsaznvW3Zd/zMLaebMmX93qPlltaifnXbeLP+dGtWVxIrJEQFBXV4TADN8Rh4QLbDiAtII0xIA5ExocvUGA8BjDg1ahhxGHFqk8Kqcwnw1lTmwU0CJpzlTKjRzZkIc6zT1vPePjss8zdl2redfnGk5PPeztaXkCC24ZbS/oz51qphjTCXTu4BIoDmBKgZHqaCEechbNO3QmRMnwDqL4sARpzabGDEYcSpTQqrziWQlZsnfaZmyKGTucpg6teoJEseHShVK/GiBmVohiw04SxnQo2GjGupZR7PPi2LvnneW8aW/XIsO69MHFUqVpCrWzWQQdYtp+0aSoOaPDPT5NnRVTuao4tssONixAW7P5HKDpGJVDspxkUCGHFqMDHiMOLUJoVV3yWwctdhuf3lFZKbV/Yzjs5eUzmpgrw+Kll6XFIPkBAoQcCEs5wJNZo22l9+fcr+xpt1y+mHOw/J6fzCMhFcUL2SXNPeet5bY7m6VX3+QcK0YfGhXjTHB+gB2BIjLgBNMCUFRMaUTlNnrAQw4tSIYcRhxKlNCqtKI2CZcffPXl3uN+Osb8L96fvdMeEYoTIJmHCWM6HGqI+49by3TV8dK3re28Yvj5VbcssG1SWlQyP7m2+XN+V5b1Gfj6DVh+YErSPe5IMR5w1ndhERRIYxgEDpBDDi1CYDIw4jTm1SWFUWAes21TnrvpTZH34uG/Z++4tppya15I6ezeX6y5rw7Q/Gp1wCJpzlTKgximNufeP3o88OS9qmfZK+eb/s/br85731aP7t894ubcDz3qI4E2GpCc0JS6fczRMjzl2eRCuHACLDeEAAI87JDGDEYcQ5mR+uLU4g+3S+nMzJk+qVk6RKRZ4Fx3yoETDhLGdCjWrdDv6qo6es573tt4036z+Pl/O8t6oVE6VP6/r2ixYGtmsoF9TgeW/B77AZGaI5ZvT5u1VixJnZd1+qRmR8wc6mISDAN+LUmoQRhxGnNimsggAEdBEw4SxnQo265sOLuF8cyZJ0+y2n++3nveUVlP28t/o1KkuK/by3RtK7VX3+0cGLBrFHzATQnJiRReICjLhItDEcRSAy4egTWXpPACNOjTlGHEac2qSwCgIQ0EXAhLOcCTXqmg8dca3nvVnPeJtvmW+bMu1nv5X3ad2whv28N8t8u/ziOlKhQoKOtIgJAdcIoDmuoQxVIIy4ULUr3MkiMuHuH9nrI4ARp8YWIw4jTm1SWAUBCOgiYMJZzoQadc2HW3Gt571Z33az3nJqve30q6PZZYa2fDbrLc+p7RvZBlyL+tXdSoM4EPCEAJrjCebAbYIRF7iWRDchRCa6vaUyZwQw4tT4YcRhxKlNCqsgAAFdBEw4y5lQo675cBL3aNZpWbRtv/3Ntw+2HpATOXllhqtWKVH6tm5gG2/W897qVa/kZGuuhYCvBNAcX/H7tjlGnG/ozdsYkTGv51SsRgAjTo0TRhxGnNqksAoCENBFwISznAk16pqPWOPuOZxV9K03642n5T3vrUFN63lvjWRQh0ZyVcsLeN5brLBZH1gCaE5gW6M1MYw4rXgJfi4BRIZ5gEDpBDDi1CYDIw4jTm1SWAUBCOgiYMJZzoQadc3H+eJaz3tbv/eobb5Zf7bsO17uJW0a1bCf9ZbaobF0aVKb572dDzA/DyUBNCeUbXOcNEacY4QEUCWAyKiS8n8dxpBaD2I1hsqKCm89vE3QHBNqVJsOVkEAAl4QMEFzTKjRi1k5u0dOXr4s3/Ht894yj+WUuX1ihQS54pK69jffLAOu+QU8783LXrGXPwTQHH+4+70rRpzfHTBof0QmPM3GGFLrFUacGie3VsXK2wTNMaFGt+aHOBCAgHMCJmiOCTU6n4TyI3ydlSsZW/fb33qznvd2Mje/zAuqV0qUfm0b2ObbgLYNpS7Pe9PdHuIHjACaE7CGeJQORpxHoNlGBJEJzxRgxKn1KlZjqKyo8NbD2wTNMaFGtelgFQQg4AUBEzTHhBp1zMruQ1kyf9M++y2nK3cdkfyCwjK3aVTrzPPerJctXHUpz3vT0Q9ihocAmhOeXrmZKUacmzSJVS4BRCY8A4IxpNYrjDg1Tm6tipW3CZpjQo1uzQ9xIAAB5wRM0BwTanQ+CSIFBYXyif28t32Svmm/bM0s/3lv7RrX/OZ5b42k00U8782NHhAjGgTQnGj0MdYqMOJiJcb6uAkgMnGj8/xCjDg15LEaQ2VFhbce3iZojgk1qk0HqyAAAS8ImKA5JtQY76xknz7zvLf5mzJlweZM2X+8/Oe9JbeoV/S8t6b1qsW7LddBINIE0JxIt7fM4jDizOy7L1UjMr5gj2tTjCE1bBhxapzcWhUrbxM0x4Qa3Zof4kAAAs4JmKA5JtQYyyQcOZkrC7eced7b4u0HJKuc573VqJxkP+8t9ZvnvdWuVjGWrVgLASMJoDlGtl0w4szsuy9VIzK+YI9rU4w4NWyxGkNlRYW3Ht4maI4JNapNB6sgAAEvCJigOSbUeL5Z2XXwpP2sN+ubb6t2HZZyHvcmF9auUvS8t56X1pPKSYnnC8/PIQCBcwigOWaOA0acmX33pWpExhfscW2KMaSGDSNOjZNbq2LlbYLmmFCjW/NDHAhAwDkBEzTHhBq/OwnW894+/uJr+1tv6ZsyZfv+E+UOS/sLa9nPexvUoZF0vKiWJCQkOB8uIkDAUAImao6hrS5WNkYcU+AZAUTGM9SON8KIU0MYqzFUVlR46+FtguaYUKPadLAKAhDwgoAJmmNCjdasWM97W/rpwTPm2+b9cvBE2c97S6qQIMmX1rNvObXedHpxXZ735sX/3tjDDAKmaI4Z3VSvEiNOnRUrHRJAZBwC9PByjCE12BhxapzcWhUrbxM0x4Qa3Zof4kAAAs4JmKA5Ua7x0Imcoue9Ldl+UE6dzi9zKGpWTpL+7RpKSvuG0r9tQ6ldlee9Of9fEBEgUJJAlDWHfpdNACOO6fCMACLjGWrHG2HEqSGM1RgqKyq89fA2QXNMqFFtOlgFAQh4QcAEzYlajTsPnLCf92Z9823150fKfd7bRbWr2LecWt96S25xgVRKquDFWLEHBIwmEDXNMbqZMRSPERcDLJY6I4DIOOPn5dUYQ2q0MeLUOLm1KlbeJmiOCTW6NT/EgQAEnBMwQXPCXmO+9by3PUckbZP1ptN9suPAyXIbbz3jzTbf2vO8N+f/CyECBGInEHbNib1irrAIYMQxB54RQGQ8Q+14I4w4NYSxGkNlRYW3Ht4maI4JNapNB6sgAAEvCJigOWGs8VRuvvzXft7bPvvW04Mncssch4qJCdLz0guKzLeL6lT1YnTYAwIQKINAGDWHZjongBHnnCERFAkgMoqgArAMY0itCRhxapzcWhUrbxM0x4Qa3Zof4kAAAs4JmKBIv6gJAAAgAElEQVQ5YanRernCws37Zf6mTPnvpwck+3RBmQ2uWSVJBrRtaJtv/do2kFpVeN6b8/81EAEC7hAIi+a4Uy1RzhLAiGMWPCOAyHiG2vFGGHFqCGM1hsqKCm89vE3QHBNqVJsOVkEAAl4QMEFzglzjp/u/fd7bmt1HpLCw7K43qVPVNt6sP1e2qCcVE3nemxf/G2EPCMRKIMiaE2strFcngBGnzoqVDgkgMg4Beng5xpAabIw4NU5urYqVtwmaY0KNbs0PcSAAAecETNCcINVoPe/NMtzSN5152cLOg+U/761zk9pFt5y2v7CmJCQkOG86ESAAAa0EgqQ5WgsleDECGHEMhGcEEBnPUDveCCNODWGsxlBZUeGth7cJmhNPjdmn8+VkTp5Ur5wkVSomqsFnFQQgAAERiUdzwgbO7xqzcvNkyXbreW+Z9vPeDp8s/3lvV7Ws/4351lAurM3z3sI2b+QLAb81hw74QwAjzh/uRu6KyISn7RhDar3CiFPj5NaqWHmboDmqNVq/2L378Zfy2orPZcPeY0Ut6dSklnw/ublcf/lFUq1SklutIg4EIBBRAqqaE+by/ajxwPEcWbD5zLferJcu5OSV/by3WlWSZGA763lvjaVvm/pSk+e9hXncyB0CRvwDB20uSQAjjqnwjIAfBxvPiovYRhhxag2N1RgqKyq89fA2QXNUaly567DcP3u1HCrnWxUXVK8kf7qju1xxST21ZrAKAhAwkoCK5oQdjBc1FhYWivW8t7RvzLeP93xd7vPemtarKqntG0tKh4a2TvO8t7BPGflD4FsCXmgOvINHACMueD2JbEaITHhaizGk1iuMODVObq2KlbcJmnO+Gi0T7vaXV0huOd+uONufSkkV5PVRyZhxbg0scSAQQQLn05wolKyrxrz8Aln9+RFJ/8Z823Uoq1xcl138zfPeOjSSto143lsUZosaIFAaAV2aA+1gE8CIC3Z/IpUdIhOedmLEqfUqVmOorKjw1sPbBM0pr0brdtQ+UzPK/Sbcd8lb34xb8vMB3KaqNpKsgoBxBEzX1Vgbbj2Pc8n2A5K2ab8s3JIpR7JOlxmiUmIF6dXqAvt5b9e0aySNa1eJdTvWQwACISRggq6GsC3aU8aI046YDc4SQGTCMwsYQ2q9wohT4+TWqlh5B0Vzli5dKuPHj5cVK1ZIUlKS9OnTRyZPniwdO3Z0jKa8Gt/4aLf84q31Me8x9abOcusVzWK+jgsgAIHoEzBdV1U6vP9YtqRv3i9pm/bJ0h2Hyv1Gcp1qFWVgW+t5b42kT5sGUqMyz+pUYcwaCESJQFB0NUpMw1ALRlwYuhSRHBGZ8DQSI06tV7EaQ2VFhbce3kHQnLlz58rw4cPtApOTkyU7O1vWrl0r1apVkyVLlkjXrl3Vii9jVXk1Dpu2pNiLGVQ3sl7g8N6P+6guZx0EIGAQAdN1tbRWW8972249721TpszflCnr9nxd7kQ0q1fNNt6sPz2a15WkxAoGTRClQgAC3yUQBF2lK94TwIjznrmxOyIy4Wk9xpBarzDi1Di5tSpW3n5rjvXLWcuWLWX37t3y3nvvybXXXmujeOWVV2TUqFHSv39/ycjIcISnrBqzT+dLu3Hz4o69ZeK1UqViYtzXcyEEIBBNAibralkm3P/8cal88sXRcht+edM6ReZb64Y1JCEhIZoDQlUQgEDMBPzW1ZgT5gJXCGDEuYKRICoEEBkVSsFYgxGn1odYjaGyosJbD2+/NWf+/PkyePBg23SbMWNGsSJTU1MlPT1dtm3bJq1bt1YDUMqqsmo8dCJHuk9Kjzvu6l+myAU1Ksd9PRdCAALRJGCyrpbV0TFvrJV/f/xlsR9bL7+5ulX9b5731lAa1uJ5b9H8XwRVQcA5Ab911XkFRIiHAEZcPNS4Ji4CiExc2Hy5CGNIDTtGnBont1bFyttvzbnrrrvk1VdfFev21LPfhjvLYvr06TJ69GiZMGGCPPHEE3Ej4htxcaPjQghAIA4CJutqWbje++RL+dFf10pd63lv7c7cctqndX2pzvPe4pgwLoGAeQT81lXziAejYoy4YPTBiCwQmfC0GSNOrVexGkNlRYW3Ht5+a07fvn3t58AdOXJE6tSpU6xI6zlx3bp1kxEjRsisWbPUAJSyimfExY2OCyEAgTgImK6rpSE7kZMnm748Jt2b15XECtxyGsdYcQkEjCbgt64aDd/H4jHifIRv2taITHg6jjGk1iuMODVObq2KlbffmmPdcrpr1y45ffp0CQR79uyRZs2ayaBBg+T999+PGxFvTY0bHRdCAAJxEDBdV+NAxiUQgAAEyiXgt67SHn8IYMT5w93IXRGZ8LQdI06tV7EaQ2VFhbce3n5rTo0aNcT6s2/fvhIFnjp1yn5zaqdOnWT9+vVKB7TSFlmGXtOmTWXnzp0lfpyVmyd9pmbIoZO5aoBFpH6NSrLk0YFStRIvalCGxkIIGETAdF01qNWUCgEIeETAb131qEy2+Q4BjDhGwjMCiIxnqB1vhDGkhhAjTo2TW6ti5e235tSsWdM22zIzM0uaZFlZUr16denSpYusW7dOixFnBV2567Dc/vIKyc0rOG8bKidVkNdHJUuPS+qddy0LIAABMwmgq2b2naohAAF9BPzWVX2VEbk8AhhxzIdnBBAZz1A73ggjTg1hrMZQWVHhrYe335rTpk0b+5tq1q2pCQnFnxu0e/duad68uf1W1Xnz5qkBKGWVSo2WGXf/7NXlfjPO+ibcn77fHRMu7k5wIQTMIKCiOTpJBEVXddZIbAhAwCwCfuuqWbSDUy1GXHB6EflMEJnwtBhjSK1XGHFqnNxaFStvvzWnX79+snjxYjl8+LDUrVu3GIbVq1dLjx49ZOTIkTJz5sy4EanWaN2mOmfdlzL7w89lw95jRft1alJL7ujZXK6/rAm3o8bdBS6EgDkEVDVHF5Eg6aquGokLAQiYRcBvXTWLdnCqxYgLTi8inwkiE54WY8Sp9SpWY6isqPDWw9tvzbn77rttk23OnDkybNiwYkVOmzZNHnzwQZk0aZKMHTtWDUApq+KpMft0vpzMyZPqlZOkSkWeBRc3fC6EgIEE4tEcNzEFVVfdrJFYEICAWQT81lWzaAenWoy44PQi8pkgMuFpMcaQWq8w4tQ4ubUqVt5+a05GRoYMHDhQRowYIbNmzSqGwfr7RYsWyY4dO6RFixZxI/K7xrgT50IIQCCUBPzWHHQ1lGND0hCAQDkE/NZVmuMPAYw4f7gbuSsiE562Y8Sp9SpWY6isqPDWw9tvzSksLJS2bdvaz4l79913ZejQoXahM2bMkHvvvVdSUlIkLS1NrfgyVvldo6PkuRgCEAgdAb81B10N3ciQMAQgcB4CfusqDfKHAEacP9yN3BWRCU/bMYbUeoURp8bJrVWx8g6C5qSnp8uQIUOkoKBAevbsKTk5ObJmzRr7janLli2Tzp07O8IThBodFcDFEIBAqAgEQXPQ1VCNDMlCAAIYccxAKQQw4hgLzwgE4fDmWbEh3wgjTq2BsRpDZUWFtx7eQdGc5cuXy7hx42TFihWSmJgo1sPGp0yZIu3bt1crvJxVQanRcSEEgAAEQkEgKJqDroZiXEgSAhBQIBAUXVVIlSUuEsCIcxEmocongMiEZ0IwhtR6hRGnxsmtVbHyNkFzTKjRrfkhDgQg4JyACZpjQo3OJ4EIEICAWwTQHLdIhisORly4+hXqbBGZ8LQPI06tV7EaQ2VFhbce3iZojgk1qk0HqyAAAS8ImKA5JtToxaywBwQgoEYAzVHjFLVVGHFR66jDepYuXSrjx4+3b6FKSkqSPn36yOTJk6Vjx44OI4sgMo4RehYAY0gNNUacGie3VsXK2wTNMaFGt+aHOBCAgHMCJmiOCTU6nwQiQAACbhFAc9wiGa44GHHh6pfWbOfOnSvDhw+390hOTpbs7GxZu3atVKtWTZYsWSJdu3Z1tD8i4wifpxdjxKnhjtUYKisqvPXwNkFzTKhRbTpYBQEIeEHABM0xoUYvZoU9IAABNQJojhqnqK3CiItaR+Osx3odfMuWLWX37t3y3nvvybXXXmtHeuWVV2TUqFHSv39/ycjIiDP6mcsQGUf4PL0YY0gNN0acGie3VsXK2wTNMaFGt+aHOBCAgHMCJmiOCTU6nwQiQAACbhFAc9wiGa44GHHh6pe2bOfPny+DBw+2TbcZM2YU2yc1NVWsV8Vv27ZNWrduHXcO8YoMppAa8lhNivKiwtxb5vDWwztezVHLJhirTKgxGKTJAgIQMOUfVdFVZh0CEPCSAJrjJe3g7IURF5xe+JrJXXfdJa+++qpYt6ee/Tbc2YSmT58uo0ePlgkTJsgTTzwRd57xigwmhRpyjDg1Tm6ucos5M67WlVh5x6s5atkEY5UJNQaDNFlAAAIYccwABCAAAfcJcJZzn2kYImLEhaFLHuTYt29f+zlwR44ckTp16hTb0XpOXLdu3WTEiBEya9asuLOJV2QwKdSQx2pSlBcV5t4yh7ce3vFqjlo2wVhlQo3BIE0WEIAARhwzAAEIQMB9Apzl3GcahogYcWHokgc5Wrec7tq1S06fPl1itz179kizZs1k0KBB8v7775ebzVkhKW3RZ599Zr+JtWnTpjFVtOdwVkzrTV3ctF4110qHuRpKt5jDWw9vS7sszTl16pTaBiFcVbVqVcnLy4tZV0NYKilDAAIBIICuBqAJpAABCESKgAm6GqmGuVQMRpxLIMMepkaNGmL92bdvX4lSrF9irTendurUSdavXx+3EWcZfZUrV5YLL7ww1LgssbQ+sRqKoS7a5+Rh7m0DosL7q6++sjXn66+/9hagh7tZ32DOycmJSVej0l8PMUdyK+Ygkm2Nqah4ZgBdLR1xPCxjahaLQ0GAOQhFm7QmGc8MmKCrWqGHNDhGXEgb53baNWvWtM22zMzMEqGzsrKkevXq0qVLF1m3bp3bW4cuHl8f9r5lMPeWOby95e31bvTXa+LB3I85CGZfvMyKGXCPNizdYxnmSMxBmLvnTu7MgDscTYiCEWdClxVqbNOmjezcudO+NTUhIaHYFbt375bmzZvbb1WdN2+eQrRoL0Fgve8vzL1lDm9veXu9G/31mngw92MOgtkXL7NiBtyjDUv3WIY5EnMQ5u65kzsz4A5HE6JgxJnQZYUa+/XrJ4sXL5bDhw9L3bp1i12xevVq6dGjh4wcOVJmzpypEC3aSxBY7/sLc2+Zw9tb3l7vRn+9Jh7M/ZiDYPbFy6yYAfdow9I9lmGOxByEuXvu5M4MuMPRhCgYcSZ0WaHGu+++2zbZ5syZI8OGDSt2xbRp0+TBBx+USZMmydixYxWiRXsJAut9f2HuLXN4e8vb693or9fEg7kfcxDMvniZFTPgHm1YuscyzJGYgzB3z53cmQF3OJoQBSPOhC4r1JiRkSEDBw6UESNGyKxZs4pdYf39okWLZMeOHdKiRQuFaNFegsB631+Ye8sc3t7y9no3+us18WDuxxwEsy9eZsUMuEcblu6xDHMk5iDM3XMnd2bAHY4mRMGIM6HLCjUWFhZK27Zt7efEvfvuuzJ06FD7qhkzZsi9994rKSkpkpaWphAp+ksQWO97DHNvmcPbW95e70Z/vSYezP2Yg2D2xcusmAH3aMPSPZZhjsQchLl77uTODLjD0YQoGHEmdFmxxvT0dBkyZIgUFBRIz549JScnR9asWWO/MXXZsmXSuXNnxUjRXobAet9fmHvLHN7e8vZ6N/rrNfFg7sccBLMvXmbFDLhHG5busQxzJOYgzN1zJ3dmwB2OJkTBiDOhyzHUuHz5chk3bpysWLFCEhMTxXqJw5QpU6R9+/YxRGEpBCAAAQhAAAIQgAAEIAABCEAAAhCAwHcJYMQxExCAAAQgAAEIQAACEIAABCAAAQhAAAIQ8IAARpwHkNkCAhCAAAQgAAEIQAACEIAABCAAAQhAAAIYccwABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQ8IIAR5wFktoAABCAAAQhAAAIQgAAEIAABCEAAAhCAAEYcMwABCEAAAhCAAAQgAAEIQAACEIAABCAAAQ8IYMR5AJktIAABCEAAAhCAAAQgAAEIQAACEIAABCCAEccMQAACECiHwIQJE2T8+PHy5z//We666y5YQQACEICAQwLoqkOAXA4BCEDgOwTQVUYCAuEigBEXrn6RLQQg4DEBDjYeA2c7CEAg8gTQ1ci3mAIhAAGPCaCrHgNnOwg4JIAR5xAgl0MAAtEmwMEm2v2lOghAwHsC6Kr3zNkRAhCINgF0Ndr9pbroEcCIi15PqQgCEHCRAAcbF2ESCgIQgICIoKuMAQQgAAF3CaCr7vIkGgR0E8CI002Y+BCAQKgJcLAJdftIHgIQCCABdDWATSElCEAg1ATQ1VC3j+QNJIARZ2DTw1LywoULZcqUKbJu3TrZv39/ibRvuOEGefvtt6VFixZSuXJl2bJli/znP/+RsWPHyoYNG2TMmDHym9/8pui6Tz75RCZPniyrV6+WQ4cOSdeuXeV///d/ZfTo0ZKQkFAs/l/+8hcZMWKE3HzzzfKPf/yj2M9ycnKkSpUq9t8VFhYW+5kVZ/DgwTJ37lyZNWuWfe2HH34ozZs3l379+slTTz0lNWrUcNyCXbt2ybRp02T+/Pny2WefSb169aRHjx7y61//Wlq1ahVXfHiXju3cg03v3r1l6tSpsmjRIjl+/LhcccUV8uCDD0pqampczK2L4F4+urVr19pzbf3nvn37pHv37nLTTTfJ/fffLxUqVIibuxcX0tuyKevQMC96GusezIA/uhprn3SvZw7c03lYoqvMALrK+fn8/18rzOfn81cXjRUYcdHoY+SqmD59um2QWQabZWBZBpdlflgmmPWLePv27e3/tMw2y4izTJE33nhDhg4dahts9evXt39RHz58uM3GMq0eeeQRyc/Pl8suu0waNGggK1askK+//lr69u0r7777rtSuXbuIoxMj7uKLL5ZLLrlEli5dKl26dJHGjRvLRx99JEeOHJGOHTvadVj5xft59tln5ec//7ldS5s2bew/mzdvlu3bt9s1WMJrMYnlA++yaZ014iyzzepptWrVJDk5WT7//HPZuHGjbQY9//zz9rzF+oF7+cQs49p6Y6016x06dLDnetWqVbYh9/TTT8svfvGLWJF7tp7elo1ah4Z51tgYNmIG/NHVGFrkyVLmwD2dhyW6ygygqxYB5sA9XfXk/xGySakEMOIYjMARsL6tdtFFF9mGx/Lly6Vdu3Z2jlu3bpWePXvaJpr17bez34axfjnfvXu3/U2z3//+9zJy5MhiNa35/9u701Cbvj+O4ytThNCVknjgCQ8oUTJldt0iIvOcMUMUIWQI5ZHyxDwkIR4Q4Zbxulcpyc+V8ohHpkjKzUz691m1/Q/OOXufc/fea5+736t+/eqeffba+7W+Z52zv9bw33+mb9++pm3btubChQtm0KBB9nUl76ZNm2YqKyttEkWdulfqk4jTOXr06GFOnz5tevbsaU9ZV1dnxo0bZ6qrq23yQEmEYsv9+/fN8ePH7cg/Oan8+vXLzJ8/3+i6/74Xv3rwzi/kJeKUFNYIzVWrVv0eQXn27Fkzc+ZM06JFC6MRPmVlZX7cv1/HPT/V9evXTXl5uTVVkn3kyJH2DT9+/LCf1UWLFln3JBbaNn+rhN2HEQOl9z0WVb+atFigLwivn8eSfpUYcPN7lX61tJ4TS/n3c9JiLerrIREXtTDnL1hA0zo1sm3JkiXmwIEDf7xffzt06JBNymkkmIoScUqCKAF37Nixf+rTiLqamhp7Lr0/s2hEnEavKVGmqatKoKnUNxH38eNH07Jlyz/qevz4sR0h17p1azs6rnHjxgXb5HuDRsVp1JBGCz558iTwufEO9sNG05zXrFnzz8Ga3qwp0po+uXbtWtxDinNNsX727Jk5efKkTXaWUuEzVVxrFduHFVdbtO8iBtz0q9G2auFnJw7ymxXSz2NZePzpHfSr6Xk+8P6BI+zfq8VFXnTvoi8Ir1+NrpU4cxABEnFBlDgmVgFN49TUP414UdIts+hvR44cyZqI0ygLrZOWWTSlTQmxnz9/mk+fPtmprn+XxYsXm8OHD9u6dH6V+ibiVF+2RFvnzp3NixcvbOJQ68aFUd68eWPXxNPad5qyqpGEutegBe9gD4yafrp8+fJ/Dj569KhZuHChXVNQ6wIGLbjnlnr9+rUd7dmhQwc7DfXvNRyDGrs6jrYtTL6+fVhhtcVzNDHgpl+Np3WD10IchNfPYxk87nQk/er//6E+Lc8HXiIu7N+rhUVe9EfTF4TXr0bfWtSQT4BEHPGROAFNs9QoNY1W05pc3vROJZsGDBhgp6NlPpx7I+L0utZgyyyawqoRYl27drWja7KV3bt32/XjVqxYYdeSU4kqEacEo75AtE6cRuoVW5TMU9JH/2mzBpl069bN1NbW2lP+vYlEvnrwrt8Do/cvc0OHDjVVVVWBmxT33FRXr141FRUV9jOiz0qpFdrWv8XC7MP8a4v/CGLATb8af0vnr5E4CK+fx9I/uulX0/184JeIK/b3qn/kxXsEfUF4/Wq8LUdtfwuQiCMmEimghFL//v3t2meZmzVofajz588b7ZjqlXyJOC2mr+mmmv6gzQyyFS0cvnr1arN06VKzb9++SBNxmjqqaQK6P20aUUy5e/euGTNmjGnWrJldD07r3CkJJ5tcu7n61YN3biG/HzZaJ05t4O3i62ed+Tru2bUuX75sN1oZPny4uXnzZiGkiTmWts3dFFH0YYlp+IwLIQbc9KtJiwXiILx+Hkv6VWKAflUCxEF4/WrSvjPTdD0k4tLU2iV0r9p0QettzZ4929y5c8d8+PDB7oa6detWOyous+RLxGmKqKamaoSYpms2bdr0HwUl4LR+XOYacqdOnTKzZs2yyQDtqJpZtHNrroSXN4Uu29RU/U3rw33//t1oDbliFprXfWgXVk251e6RGjnolXzX5df0eBf/w2bnzp1m8+bNZuPGjUa7fBZScM+upVGeGsXaqVMnO5W7FAttm73VourDkhgjxICbfjVpsUAchNfPY0m/SgzQr0qAOAivX03ad2aarodEXJpau0TuVQkz7Yw6efJkO0XUr+RLxOm9AwcONBqBobW8tLNoZtHOqXq/dmJ6+PCh6dWrl31Zo3C0S6OSf9p1NbN4u9Hob39PAc2XiNNOp9pQonfv3nY9t2KKN8Iv2+irz58//94gopCpqXjnb4l8I+KUXNWmIUocXbp0yYwdOzZws+Kem8pL1rx9+9ZcvHjR7jhcSoW2zd1aUfRhSYwNYsBNv5q0WCAOwuvnsaRfJQboVyVAHITXrybtOzNt10MiLm0tXgL36z2ozZgxw2hkml/xS8RpTTZNcy0rK7Oj2/r162dPqVFpGvWmB30l6JSo88rLly/tZgoaeaZ16rxReJoyN2XKFDuqTa/lSsStW7fObNmy5XdiTAvFanSdFs+9du2aGTVqlN9tZX1do4O04YOuTWvitWrVyh6ntfDmzJljVE+2BGG+yvAO9sOmT58+dlMPJWdVNBVYU4O1U+/gwYNNdXV1QW2Ke36uEydOmLlz59pRcefOnbMbuHixrbUR9RkYMWJEQeZxHUzb5paOog+Lq10LqYcYcNOvFtJGcRxLHITXz2NJv0oM0K9KgDgIr1+N43uQOnILkIgjOhInoOSW1nV78uSJ3QVV67s1adLEXme7du1sImrSpEl2JJuKXyJOx2gdOCXHVJRIad++vbl37555//69TbIpwaZzZ5bp06ebM2fO2J1WdR3a6VSJNK0jt3fvXvPo0aOciTjt+Pj161fTt29fO61W00iVuFmzZo3RtuL1KUri3bhxw3Ts2NEmGJ8+fWqTcrpejfzT6KxCRsThHeyHjWJAoyM1olHTg9Wm2jRE8VdZWWm6d+9eULPi7s/l7WisHYi1pqI+Vxq5qkT51KlT7ecziYW2zd8qYfdhxEDpfY95I43D7leTFgv0Bf4tErSfx5J+lRhw83vV/1Mc7xHEgb930H7V/0wcEaUAibgodTl30QIaCaf14bQGmkZQKImVWfRgrk0bNGUtSCJO71USZdeuXfb/SsDpwX7ixIl2t9RGjRr9c61fvnyxu6leuXLFvHv3ziZgtm3bZheQ10icW7du5UzEKfm2Y8cOm+DT9Do9bGj01IQJE4o28d6oa9+wYYM9t7d2nq5z/PjxZvTo0XbEXSGJOJ0X79zN4j0wKulWU1Nj9u/fb2OoS5cuZtiwYWb79u2mTZs2RbUr7v5sSnLKXIlvTUfQ9HEl4RYtWmS8qeD+Z4n/CNo2t3kUfVj8LexfIzHgpl/1b5l4jyAO/L2D9vNY0q8SA/SrPLf496k6Imi/GuxsHBWFAIm4KFQ5Z70Erl69ahNsBw8eNPPmzft9Lk0F1WgvJeDWr19f1HTAel1YgDd7iYFCE2EBTh3ZIXhHRpv3xLi7cY+jVto2DuVk10EMJLt94ro64iA8aSzDsyzVMxEDpdpy4V43cRCuJ2dzJ0Aizp09NecQqKiosOuy1dXVZR3x8urVK7tu1NChQ01VVVWiHAtJxGldt0J22dy0aVPB0x+D4OCdXSkqb6823N24B/lM1PcY2rbhtm3Q2CAGiAEJEAfhxQGW4VkG7ceSdhwxQAzQr+b+VEb93JK0/qAhXA+JuIbQig3sHsrLy412JtXC+AsWLPgjGadpqtp5VGukaZ22ZcuWJeruC0nEaXF/JRODltu3b5shQ4YEPTzwcXhnp4rK26sNdzfugT8Y9TiQtm24bRs0LIgBYkACxEF4cYBleJZB+7GkHUcMEAP0q7k/lVE/tyStP2gI10MiriG0YgO7B61xpqmp3759s+tw9ezZ0zRv3tw8f/7cPHjwwO5WumrVKrNnz57E3XkhibikXDzebloCdxEaWykAAAQcSURBVDfucdRK28ahnOw6iIFkt09cV0cchCeNZXiWpXomYqBUWy7c6yYOwvXkbO4ESMS5s6fmPAK1tbV2xJsWx9dU1KZNm9pNGbRQ+8qVK+1GC0kspZiIkyPebqIJdzfucdRK28ahnOw6iIFkt09cV0cchCeNZXiWpXomYqBUWy7c6yYOwvXkbG4ESMS5cadWBBBAAAEEEEAAAQQQQAABBBBAAIGUCZCIS1mDc7sIIIAAAggggAACCCCAAAIIIIAAAm4ESMS5cadWBBBAAAEEEEAAAQQQQAABBBBAAIGUCZCIS1mDc7sIIIAAAggggAACCCCAAAIIIIAAAm4ESMS5cadWBBBAAAEEEEAAAQQQQAABBBBAAIGUCZCIS1mDc7sIIIAAAggggAACCCCAAAIIIIAAAm4ESMS5cadWBBBAAAEEEEAAAQQQQAABBBBAAIGUCZCIS1mDc7sIIIAAAggggAACCCCAAAIIIIAAAm4ESMS5cadWBBBAAAEEEEAAAQQQQAABBBBAAIGUCZCIS1mDc7sIIIAAAggggAACCCCAAAIIIIAAAm4ESMS5cadWBBBAAAEEEEAAAQQQQAABBBBAAIGUCZCIS1mDc7sIIIAAAggggAACCCCAAAIIIIAAAm4ESMS5cadWBBBAAAEEEEAAAQQQQAABBBBAAIGUCZCIS1mDc7sIIIAAAggggAACCCCAAAIIIIAAAm4ESMS5cadWBBBAAAEEEEAAAQQQQAABBBBAAIGUCZCIS1mDc7sIIIAAAggggAACCCCAAAIIIIAAAm4ESMS5cadWBBBAAAEEEEAAAQQQQAABBBBAAIGUCZCIS1mDc7sIIIAAAggggAACCCCAAAIIIIAAAm4ESMS5cadWBBBAAAEEEEAAAQQQQAABBBBAAIGUCZCIS1mDc7sIIIAAAggggAACCCCAAAIIIIAAAm4ESMS5cadWBBBAAAEEEEAAAQQQQAABBBBAAIGUCZCIS1mDc7sIIIAAAggggAACCCCAAAIIIIAAAm4ESMS5cadWBBBAAAEEEEAAAQQQQAABBBBAAIGUCZCIS1mDc7sIIIAAAggggAACCCCAAAIIIIAAAm4ESMS5cadWBBBAAAEEEEAAAQQQQAABBBBAAIGUCZCIS1mDc7sIIIAAAggggAACCCCAAAIIIIAAAm4ESMS5cadWBBBAAAEEEEAAAQQQQAABBBBAAIGUCZCIS1mDc7sIIIAAAggggAACCCCAAAIIIIAAAm4ESMS5cadWBBBAAAEEEEAAAQQQQAABBBBAAIGUCZCIS1mDc7sIIIAAAggggAACCCCAAAIIIIAAAm4ESMS5cadWBBBAAAEEEEAAAQQQQAABBBBAAIGUCZCIS1mDc7sIIIAAAggggAACCCCAAAIIIIAAAm4E/gc0RQmm9EKH/wAAAABJRU5ErkJggg==\" width=\"800\">" ], "text/plain": [ "<IPython.core.display.HTML object>" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "[<matplotlib.lines.Line2D at 0x1472bc098d0>]" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 三個類別及對應數據\n", "names = ['group_a', 'group_b', 'group_c']\n", "values = [1, 10, 100]\n", "\n", "# figure 與 1 x 3 排列的 axes\n", "fig, ax = plt.subplots(1, 3)\n", "# 可以用 figsize 指定預設 figure 顯示大小\n", "#fig, ax = plt.subplots(1, 3, figsize=(8,4))\n", "fig.suptitle('Categorical Plotting')\n", "# 第一個用條形圖\n", "ax[0].bar(names, values)\n", "# 第二個用散佈圖\n", "ax[1].scatter(names, values)\n", "# 第三個用點線圖\n", "ax[2].plot(names, values)\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### § 標註文字\n" ] }, { "cell_type": "code", "execution_count": 18, "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", " fig.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 overridden (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", " event.shiftKey = false;\n", " // Send a \"J\" for go to next cell\n", " event.which = 74;\n", " event.keyCode = 74;\n", " manager.command_mode();\n", " manager.handle_keydown(event);\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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AAMgAAEIQAACEIAABCAAAQhAwBSBVhj0XXfdtbjPXO7/Xm211foJIJehb7vttuHQQw8Nl1566aDiHHzwweHyyy8vLl2X+8/7HhJ79dVXL3W5vDwsTu55//vf/x4efvjhsNZaaxWhUsU3VWEkAwEIQAACEIAABCAAAQhAAAKlCLTCoMul63Kvt1xuvujx6KOPFveO77XXXuHqq68eFFrncvjHHnssrL322v3Gyv3kcim73Osul6overz88svh8ccfLy6BP/fcc8MTTzwRfvSjH4Ujjjhi4dA68UupzSAIQAACEIAABCAAAQhAAAIQMEugFQZ95ZVXDvK/p556ajEhXn/99eJJ7FtssUW46667BhVKxtxzzz1B5iy//PKLjZUz4fJ0dzHjix6dB8fJv6+//vrhJz/5Sdhpp536DasTv2+gD37wg0vch/yhYrnllgv/8A//YLYoSQwCEIAABCAAAQhAAAIQ0Cfw5JNPFt7gxRdf1F+MFUoRaIVBX2WVVQoT/vTTTy8GRQz1SiutFLbaaqtwxx13DAptyy23DHfffXdhwldYYYXFxq655prhzTffDC+99NJiPzvwwAODfAD+9Kc/FZfab7LJJuHCCy8sLonvHHXilzXof/7zn8PSSy8d3vve95YqEAY1j4Bc7SFH3z8aNW+X7GgwAtQA9SEEqAPqgBqgBqgBauCZZ54prgKWE5AcNgi0wqCLGZZ7veUS90VNibx6Tc5oy1Per7rqqkFVkcvg5RJ1mdP31WidX3SkuDfaaKNw//33LzGOGPgrrrgifP7znw9vvfVW8Q717bffvhifIn63spKz6/IBlD8WcLSTQOcNBHJLBUc7CVAD7dR90V1TB9QBNUANUAPUgFxVKycexStx2CDQCoO+2267hdmzZ4fnn38+DBkypB/5W265pTDIZZ6+3nka/K233lo85K3v8dxzz4WhQ4eG3XffPVxzzTVd1f3BD34Qjj322HDAAQeE3/72t8X4lPGXlAAGvas0jR9AM268xF03SA10RdSKAdRBK2QedJPUADVADVADGHR7NdAKgy4PYpNXn02ZMiXst99+/VSYMGFCOO6448I555wTTjnllEEVOvvss4tXsckcMdd9D4ktZnugd60PFPTOO+8MW2+9ddhggw0W/sUqZXwMur0Pm5WMaMZWlOhdHtRA79hbWpk6sKRGb3KhBnrD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lDQdxMKgOxBJOUWasTJgB+GpgfQiYdDTM9WIiEHHoGvUleeY9APP6qXJHYOehmPKKBj0lDQdxMKgOxBJOUWasTJgB+GpgfQiYdDTM9WIiEHHoGvUleeY9APP6qXJHYOehmPKKBj0lDQdxMKgOxBJOUWasTJgB+GpgfQiYdDTM9WIiEHHoGvUleeY9APP6qXJHYOehmPKKBj0lDQdxMKgOxBJOUWasTJgB+GpgfQiYdDTM9WIiEHHoGvUleeY9APP6qXJHYOehmPKKBj0lDQdxMKgOxBJOUWasTJgB+GpgfQiYdDTM9WIiEHHoGvUleeY9APP6qXJHYOehmPKKBj0lDQdxMKgOxBJOUWasTJgB+GpgfQiYdDTM9WIiEHHoGvUleeY9APP6qXJHYOehmPKKBj0lDQdxMKgOxBJOUWasTJgB+GpgfQiYdDTM9WIiEHHoGvUleeY9APP6qXJHYOehmPKKBj0lDQdxMKgOxBJOUWasTJgB+GpgfQiYdDTM9WIiEHHoGvUleeY9APP6qXJHYOehmPKKBj0lDQdxMKgOxBJOUWasTJgB+GpgfQiYdDTM9WIiEHHoGvUleeY9APP6qXJHYOehmPKKBj0lDQdxMKgOxBJOUWasTJgB+GpgfQiYdDTM9WIiEHHoGvUleeY9APP6qXJHYOehmPKKBj0lDQdxMKgOxBJOUWasTJgB+GpgfQiYdDTM9WIiEHHoGvUleeY9APP6qXJHYOehmPKKBj0lDQdxMKgOxBJOUWasTJgB+GpgfQiYdDTM9WIiEHHoGvUleeY9APP6qXJHYOehmPKKBj0lDQdxMKgOxBJOUWasTJgB+GpgfQiYdDTM9WIiEHHoGvUleeY9APP6qXJHYOehmPKKBj0lDQdxMKgOxBJOUWasTJgB+GpgfQiYdDTM9WIiEHHoGvUleeY9APP6qXJHYOehmPKKBj0lDQdxMKgOxBJOUWasTJgB+GpgfQiYdDTM9WIiEHHoGvUleeY9APP6qXJHYOehmPKKBj0lDQdxMKgOxBJOUWasTJgB+GpgfQiYdDTM9WIiEHHoGvUleeY9APP6qXJHYOehmPKKBj0lDQdxMKgOxBJOUWasTJgB+GpgfQiYdDTM9WIiEHHoGvUleeY9APP6qXJHYOehmPKKBj0lDQdxMKgOxBJOUWasTJgB+GpgfQiYdDTM9WIiEHHoGvU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Wxdnz998802VasGgq2B1FVTbnLmC0dJktWsAg+6jsDDoPnSSLDHofrTylql2P/DGo435YtDtqd4Kg77rrrsW95m/8MILYbXVVuungtxTvu2224ZDDz20uPd7sOPggw8Ol19+eXHvutx/3veQ2Kuvvvqgl8uXOYMul8m/8847xR8Urr766vDyyy+HYcOGhQMOOCCsv/76tSsIg14bofsANGP3EtbegHYNYNBrS5QlAAY9C+Yki2DQk2AkyAAEtPsB0O0TwKDb06gVBl0uXZ83b154++23F1NA7hEXU7zXXnsVhniwo3M5/GOPPRbWXnvtfkPlPvdll122uNddLoUf6Chj0FdZZZXwyiuvLDZ9hRVWCOPHjw/HHXdcrSrCoNfC14jJNONGyFhrE9o1gEGvJU+2yRj0bKhrL4RBr42QAEsgoN0PAG+fAAbdnkatMOgrr7xykP8+Jo8aAAAgAElEQVQ99dRTiynw+uuvF09i32KLLcJdd901qEIy5p577gkyZ/nll19s7FprrVU83V3OescadLnc/vHHHw/ytHZZ78knnwwXXnhh+O53v1uElCsBdtppp0HzFBO+pEP+ILHGGmsUVwJwtJOA1K8c8kcfjnYS0K6Bh194uJ1gne166Lv/900hz771rLPM25fuB4csua/XoaH9XVAnN+bmIUAN5OFseZXPfe5zhRd6+GF6txWdWmHQ5ay0FN7TTz+9GHcx1CuttFLYaqutwh133DGoLltuuWW4++67CxM+kLlZc801i3vHX3rppWiDvqQEvvjFL4Yf/vCHxX3uV155JQbdyifIYR40Y4eiJU5ZuwYw6IkFUwqHQVcCqxAWg64AlZAFAe1+AGb7BDDo9jRqhUHfZJNNir8KySXufV+BJnLIq9fk3m55yvtVV101qEJyGbxcCiRz1l133X5jO5e4b7TRRsVD3gY6ylzivqQE5Oy+/BFBLsf/y1/+El1JXOIeja4xE7mcrTFSRm9Euwa4xD1amqwTucQ9K+5ai3GJey18TB6EgHY/AL59Alzibk+jVhj03XbbLcyePTsM9OqyW265JWy//faDPn29I1vnafC33nprGD58eD81n3vuuTB06NCw++67h2uuuSa5QX/11VeLy/Tf9a53hbfeeissvfTSUdWEQY/C1qhJNONGyRm1Ge0awKBHyZJ9EgY9O/LoBTHo0eiY2IWA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z9155519FTrnnHPc3XffXd27LvefDz0k9g477DDscnnt9k3KqVSD3uZE24Rjzn0wZzmrFyd3aiAOx9yjUAe5K9g+f2qgPcPcI+RcA22Mcpt9Y5txLdYLBt2eKp0w6HLp+ksvveQ++uijEQq8+uqr1b3jp5xyirvvvvv6KtS7HP61115zu+yyy7C2cp/7lltuWd3rLpe2y6Hdvkk5YdCbUCurT86LcVlKDG421MDg2FsamTqwpMZgcqEGBsPd0qjUgCU1+uei9cUABt1eDXTCoG+77bZO/nv99ddHKPDee+9VT2I/8MAD3ZNPPtlXIWnz9NNPO+mz1VZbjWi78847V093f/vtt6u/abcfK1kx4WMd//Vf/+W22GIL9xM/8RMq1bh+w3qVuASNR2DzzTavgm34eEO8oETKigA1kJVcaslSB2poswlMDWQjlVqi1IAa2uiBx20+rlXMsfbo69auc5/Y8hOVv+GwQaATBn277barTPgbb7wxgroY6m222cYdfPDB7oknnuirykEHHeSeeuqpyoSPHz9+RNuddtrJffDBB+6tt96q/qbdvqlBl6fMf+Yzn7FRgWSRnIBcNSLHbrvtlnxsBrRBgBqwocOgs6AOBq3A4MenBgavwaAzoAYGrcDgx5erjOXYsIEfbgavxv/PoBMGfb/99nNr1qypLnEf+go0ASCvXttjjz2qp7zfe++9fXWRy+DlKe3SZ1Nz07vEfZ999nHPPfdcFUe7fZMi6v26Ljw4ukmAGuim7kNnTQ1QA0KAOqAOqAFqgBqgBqgBezXQCYN+wgknuOXLl7t169a5CRMmDFPhsccec0ccccSwp6+PJVPvafCrVq1yU6ZMGdZs7dq1buLEie7EE090999/f/U37fZNyokPYRNqZfWhBsrSs8lsqIEm1MrrQx2Up2nojKiBUGLltacGytM0dEbUQCgx/fadMOgXXHBB9eqzBQsWuDPOOGMY1ZtvvtldccUV7qabbnJXX311X+KzZ8+uXsUmfS6//PJhbSX2WWedNexd69rtm5QHH8Im1MrqQw2UpWeT2VADTaiV14c6KE/T0BlRA6HEymtPDZSnaeiMqIFQYvrtO2HQly5d6k466aRRX6Um//7AAw+4F1980e255559ictl4XIJu/wiLzGHHrNmzape0yax5O9yaLdvUh58CJtQK6sPNVCWnk1mQw00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\" width=\"640\">" ], "text/plain": [ "<IPython.core.display.HTML object>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# 產生常態分佈亂數資料\n", "mu, sigma = 100, 15\n", "x = mu + sigma * np.random.randn(10000)\n", "\n", "fig, ax = plt.subplots()\n", "# 資料的直方圖\n", "n, bins, patches = ax.hist(x, bins=50, density=1, facecolor='g')\n", "ax.text(60, .025, r'$\\mu=100,\\ \\sigma=15$')\n", "ax.axis([40, 160, 0, 0.03])\n", "ax.grid(True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Matplotlib 官網繪圖範例\n", "\n", "[**Matplotlib Gallery**](https://matplotlib.org/gallery/)" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5" } }, "nbformat": 4, "nbformat_minor": 2 }