Skip to content

Instantly share code, notes, and snippets.

@calum-chamberlain
Created April 20, 2020 04:37
Show Gist options
  • Save calum-chamberlain/aa5bcab29b08907eeb955158ca7a57be to your computer and use it in GitHub Desktop.
Save calum-chamberlain/aa5bcab29b08907eeb955158ca7a57be to your computer and use it in GitHub Desktop.
Response_plotting.ipynb
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"metadata": {},
"cell_type": "markdown",
"source": "# Instrument response comparison for Accelerometer vs Seismometer\n\nAccelerometers are sensitive to acceleration, whereas seismometers are sensitive to velocity. Both relationships\nare usually non-linear though. To help explain these reponses it can be handy to visualise the response functions.\n\nTo exemplify this, lets look at the response functions of a strong-motion accelerometer and a seismometer at\nthe same station, INZ."
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "%matplotlib notebook\n\nfrom obspy import UTCDateTime\nfrom obspy.clients.fdsn import Client",
"execution_count": 1,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "client = Client(\"GEONET\")\n\ninv = client.get_stations(\n network=\"NZ\", station=\"INZ\", location=\"*\", channel=\"HHZ\",\n level=\"response\", starttime=UTCDateTime(2020, 1, 1))\ninv += client.get_stations(\n network=\"NZ\", station=\"INZ\", location=\"*\", channel=\"BNZ\",\n level=\"response\", starttime=UTCDateTime(2020, 1, 1))\n\nprint(inv)",
"execution_count": 2,
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": "Inventory created at 2020-04-20T04:28:17.419110Z\n\tCreated by: ObsPy 1.2.1\n\t\t https://www.obspy.org\n\tSending institution: GeoNet (WEL(GNS_Test))\n\tContains:\n\t\tNetworks (2):\n\t\t\tNZ (2x)\n\t\tStations (2):\n\t\t\tNZ.INZ (Inchbonnie) (2x)\n\t\tChannels (2):\n\t\t\tNZ.INZ.10.HHZ, NZ.INZ.20.BNZ\n"
},
{
"name": "stderr",
"output_type": "stream",
"text": "/home/chambeca/miniconda3/envs/eqcorrscan/lib/python3.7/site-packages/obspy/io/stationxml/core.py:98: UserWarning: The StationXML file has version 1, ObsPy can read versions (1.0, 1.1). Proceed with caution.\n version, \", \".join(READABLE_VERSIONS)))\n/home/chambeca/miniconda3/envs/eqcorrscan/lib/python3.7/site-packages/obspy/io/stationxml/core.py:98: UserWarning: The StationXML file has version 1, ObsPy can read versions (1.0, 1.1). Proceed with caution.\n version, \", \".join(READABLE_VERSIONS)))\n"
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "## Acceleration response\n\nWe have an inventory with two channels from the INZ station. Obspy has a handy plot-response function. Lets use it to first look at the response of the two instruments to acceleration:"
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "fig = inv.plot_response(min_freq=0.001, output=\"ACC\")",
"execution_count": 3,
"outputs": [
{
"data": {
"application/javascript": "/* Put everything inside the global mpl namespace */\nwindow.mpl = {};\n\n\nmpl.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\nmpl.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\nmpl.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\nmpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n\n}\n\n\nmpl.figure.prototype._root_extra_style = function(canvas_div) {\n\n}\n\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.figure.prototype.handle_figure_label = function(fig, msg) {\n // Updates the figure title.\n fig.header.textContent = msg['label'];\n}\n\nmpl.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\nmpl.figure.prototype.handle_message = function(fig, msg) {\n fig.message.textContent = msg['message'];\n}\n\nmpl.figure.prototype.handle_draw = function(fig, msg) {\n // Request the server to send over a new figure.\n fig.send_draw_message();\n}\n\nmpl.figure.prototype.handle_image_mode = function(fig, msg) {\n fig.image_mode = msg['mode'];\n}\n\nmpl.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.\nmpl.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\nmpl.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 */\nfunction 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\nmpl.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\nmpl.figure.prototype._key_event_extra = function(event, name) {\n // Handle any extra behaviour associated with a key event\n}\n\nmpl.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\nmpl.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\nmpl.figure.prototype.toolbar_button_onmouseover = function(tooltip) {\n this.message.textContent = tooltip;\n};\nmpl.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\nmpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n\nmpl.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\nmpl.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\nmpl.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\nmpl.figure.prototype.close_ws = function(fig, msg){\n fig.send_message('closing', msg);\n // fig.ws.close()\n}\n\nmpl.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\nmpl.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\nmpl.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\nmpl.figure.prototype._root_extra_style = function(el){\n var fig = this\n el.on(\"remove\", function(){\n\tfig.close_ws(fig, {});\n });\n}\n\nmpl.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\nmpl.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\nmpl.figure.prototype.handle_save = function(fig, msg) {\n fig.ondownload(fig, null);\n}\n\n\nmpl.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.\nif (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,iVBORw0KGgoAAAANSUhEUgAAAoAAAAHgCAYAAAA10dzkAAAgAElEQVR4nOzdeVhU9f4H8AMKiLhnKpqClftOXivLrfK2XLNu3XvNW17vrVtq9VNboYuF+5qmFqYSpqbkEoKK5hogghuKCoKYIogoCsg6LAPM+/fHxOjIAANzvsw5w/v1PJ/niVnOGd5NzLuZ+Z4jgYiIiIgaFMnaD4CIiIiI6hcLIBEREVEDwwJIRERE1MCwABIRERE1MCyARERERA0MCyARERFRA8MCSERERNTAsAASERERNTAsgEREREQNDAsgERERUQPDAkhERETUwLAAEhERETUwLIBEREREDQwLIBEREVEDwwJIRERE1MCwABIRERE1MCyARERERA0MCyARERFRA8MCSERERNTAsAASERERNTAsgEREREQNDAsgERERUQPDAkhERETUwLAAEhERETUwLIBERFZw8+ZNTJ06FSNHjsTQoUNrnOeeew6LFy9GUVGRtR86EdkAFkAiono2depU2NvbQ5IktG3bFg899FC106lTJ7Ro0QKSJMHR0RHBwcHW/hWISOVYAImI6tHq1athZ2eHcePGISkpyez76XQ6nDx5En379oWDgwNSUlIEPkoisnUsgERE9ahHjx7o0qULysrK6nT/5ORkSJKESZMmyfzIiKghYQEkIqpHzs7OmDZtmkXb6NevH7p16ybTIyKihogFkIioHjk4OGDevHkWbePPf/4zXF1dZXpERNQQsQASEdUjBwcHLFiwwOR14eHhGDNmDFxdXSFJEoKCgkze7oUXXmABJCKLsAASEdWj6grg3r174e3tjcDAQBZAIhKKBZCIqB5VVwDvxQJIRCKxABIR1SMWQCJSAhZAIqJ6xAJIRErAAkhEVI9YAIlICVgAiYjqEQsgESkBCyARUT1iASQiJWABJCKqR9UVwPz8fMTExCAmJgaSJGHZsmWIiYmpdN5fFkAishQLIBFRPaquAIaGhkKSpEozceJEo9uxABKRpVgAiYjqkbkfAVeHBZCILMUCSERUj1gAiUgJWACJiOoRCyARKQELIBFRPXJ0dMScOXMs2sYzzzyDTp06yfSIiKghYgEkIqpHzZo1w5tvvlnn++t0OnTs2BEDBw6U8VERUUPDAkhEVI9GjBgBFxcXpKam1un+ISEhkCQJS5culfmREVFDwgJIRFSPTp06BScnJzz00EP4+uuvERUVZTj2X1Vz5swZ/Pbbb/D09ISTkxPatm2LkpISa/8qRKRiLIBERPUsIiICrq6usLe3N3ncv6rGwcEBffv2RVZWlrV/BSJSORZAIiIrSUtLwy+//IINGzbUOLt374ZGo7H2QyYiG8ECSERERNTAsAASEdWDoqIiuDRtAodGdrJNr549rf1rEZFKsQASEdWDixcvQpIkvN6rMeY942TxeLjao2kTR2v/WkSkUiyARET1oLy8HC7OTTDSvRHg08KiyfVqjhZOEvr372/tX4uIVIoFkIionnz22WeQJAkrXnCC7qvmdSp/Rd7NMb5vY9jbSTh16pS1fyUiUikWQCKielJeXg4PDw9IkoT/DHRAsXftSmDax83wWMdGsLeT8OGHH1r71yEiFWMBJCKqZ++++y7s7SQ82sYeW153RnkN7wbmf9Eci55zQssmdnBsbI8NGzZY+1cgIpVjASQisoKtW7ei3YMPQJIk9Ghrj21/q1wEC75ojsXPOaF1EzvYSRJ69+6FuLg4az90IrIBLIBERFbk5+eHB9vqi6BbS3vMf8YJkW83xdQhjmjhJMFOktCzZ08cPXrU2g+ViGwICyARkQL4+fnh4Ycfhr3dH6d9a2SHIUOGICIiwtoPjYhsEAsgEZGCJCcnY+XKlTztGxEJxQJogfLycqSmpiInJwe5ubkcDofD4djs5OTkIDU1FeXl5dZ++SUZsABaIDU1FZIkcTgcDofTYCY1NdXaL78kAxZAC+Tk5Bj+Y5Dj/64yMzMREBCAzMxMq/+fni0Nc2WuahrmauO5ZtxArldz/WTcELafmxlZ6Dx9GzpP34abGVmybLPiTY+cnBxrv/ySDFgALZCbmwtJkpCbmyvL9rRaLYKDg6HVamXZHukxVzGYqxjMVQzF5FpScPdQPyUFwnajKSmFm2cI3DxDoCkplWWbcr/mkXWxAFqABVAdmKsYzFUM5iqGYnJlASSFYAG0AAugOjBXMZirGMxVDMXkWlYKxO3QT5k8xcyU0rJyhJy7gZBzN1BaJs+iDRZA28ICaAEWQHVgrmIwVzGYqxjM1XIsgLaFBdACLIDqwFzFYK5iMFcxmKvlWABtCwugBVgA1YG5isFcxWCuYigmV34ETArBAmgBFkB1YK5iMFcxmKsYismVi0BIIVgALcACqA7MVQzmKgZzFUMxubIAkkKwAFqABVAdmKsYzFUM5iqGYnJlASSFYAG0AAugOjBXMZirGMxVDMXkygJICsECaAEWQHVgrmIwVzGYqxiKyZUFkBSCBdACLIDqwFzFYK5iMFcxFJMrCyApBAugBVgAxSsv1yGvSIu07EIkpuchOjkLEZcy8FvCLeyLu4ldZ9MQeDoVgadTERxzHXvO38D+uJs4nJCO8MTbiLycgchLt7BiUzAu3cxGZn4xSkrlOSRCQ8fnqxjMVQzF5MoCSArBAmgBFsC60ZSU4vLtfBz9PQOBp1OxNvwK5u+Nx6fbzuI/P57E2O+O4qmFh9H3q31w9wox/BGTc3rO+BVD5h3Ec0vD8LfvIzFlUzS+DI7FikOXEHAiBQcupCPmWjZS72hQpC2zdmSK1FCer/WNuYqhmFzLtMCZTfopE/dYtGXl2HbqGradugatgo8DWFRUhISEBMTExDSoiYuLs3qRZgG0AAtgZQXFpfj9Vj4iLmVg66lrWHHoErwCz+Pf607g+W/C0X/m/joVtkf/tweDZh/AsEW/4flvwjFmZQReWxWJcWui8NYPxzHB/wTGrz2Gv38fhVd9j+LlbyPwwvIjeG5pGEYu/g0DvtyNPl/tq3NhHDT7AF5acQTvrD+FL4Nj4Rv6O4LOXMfxK5m4lqVpkO8q2sLzVYmYqxjM1XJyvuZlZGRgwoQJaN68OSRJapDj4OCAl156CefPn5fh307tsQBaoKEVwCJtGS7fzseRS7ex9eQ1LD94CV6B5/Av/xP487Jw9PMxv2D1+Wofnlsahrd+OI5pP5/B7N0X8N1vv+PnP959i06+gyu383E7rxhF2jLodLo6P+57cy0r1yFHo8W1LA1ir+cg8nIGdp9Lw49Hk7Bk30V8vv0c3v7xJF7+NgJPzj+ER/+3x6zfx90rBIPnHsTL30bgvY2n4LMzDmvCL2P3uTScSbmD23nFFv0OSqT056taMVcxmKvlavOaV1BQgO3bt+ONN8ZjkMdgPDd6NK5duwYAyMnJwYABA9C2bVvMnDkToaGhOHnyJE6dOtVg5ujRo1i5ciV69OiBtm3bIiEhQfS/vkoafAFcsmQJevfujT59+uCnn36q1X1trQAWlpTh91t5+O3iLWw8lowFexPwwebTeOW7o3hszkGzy13fr/Zh9LIwTPA/gc+3n8M3BxOx5WQKwhJv41J6HvKK6vf3syRXnU6HOwUluJCWi0Px6fjpWDIW70vAR1tiMG5NFEYs/g3dvPealUt3770YtSQUb/1wHJ6/nMO3hy9hx5lUnEjKwvXsQpSVq6sgWvv5aquYqxiKybWsFEjcpx/Bp4I7nJCOwwnp9XoquNLSUnz++edwauIMSZLg3OFhNO01ApIkISQkBACwZs0a2NvbIzY2VpbHpWZZWVno3Lkz3nvvvXrfd4MugOfPn8egQYNQVFSEoqIiDB06FNnZ2WbfX20FML+4FBdv5uFQfDo2RF3FvD3xmLIpGmO/jYDH7ANmlZjeX/6K0cvC8C//E/D8RV/utp68hnArlTtziM5Vp9MhM78YsddzcOCCPtsFexMw9ecz+Nv3kXhi/iF0NeO7jI98sQdPLTyMf6yOwkdbY7B0/0VsPXkNR3/PwNWMAhSXKuu7iIp5QbUxzFUMxeRqw4tAMjMzMWrUM7Czb4SWQ8ej43tr4eYZgk4fbDQqgC+99BJGjRoly2OyBZ999hnat29f7/tt0AVw69at+OCDDww/v//++/j555/Nvr/SCmBukRbxN3Jx4EI61h1NwpzdFzBpYzT+svIIBs4y77t3fb/ah+e/Ccc76/UfY/oduYJfY28g9noO7hSUqPJjTCX84deWleNalgZRlzOx7dQ1fHMwEZ9uO4vxa49h2KLfzPqo2d0rBH+aexB/9T2KDwPOYMHeBGw8lozfLt7CpfQ82f7Im/07KSBXW8RcxVBMrjZaAOPi4tDFzR0OLi3R/o35Rn+77i+AAwcOxJQpU2R5TLbA398fkiShtLR+/4arugCGh4djzJgxcHV1hSRJCAoKqnQbX19fuLu7w8nJCR4eHjhy5IjhugsXLqB3797Izs5GdnY2evbsia+//trs/ddnAdTp9N9di72eg31xN/FDRBJm7orDfzecwovLj5j9/bv+M/fjxeVH8O6GU5i16wL8I5KwL+4m4tJykFNomy84ivnDX42ych1u5hQhOjkLwTHX8d1vv+OLHefxL/8TeHZpGHrMMO9j5oGz9uMvK49g0sZozN59999v7PUc5Gi0shZ4NeSqRsxVDMXkaoMFMCMjA50e6owm7dzRabJ/pb9L9xfAfv36YerUqbI8JluwcaM+n+Li4nrdr6oL4N69e+Ht7Y3AwECTBXDLli1wcHCAn58f4uPjMW3aNLi4uCAlJcVwm9WrV2PQoEEYOXIkJkyYgOXLl5u9fzkLoE6nQ3p2Ab7dFIxdMfpDo/jsjMM760/i+W/C0dfMFawDZ+3HmJURmPxTNObsvoAfjybh4IV0xN/IRa4CP56tD4r5w2+Bio+Zz6VmY+/5G/A7UvH8OIUXavE/AH2+2oc/LwvH2z+exJfBsVgddhkh524g5lp2rReq2EKuSsRcxVBMrjZWAMvKyvDc6NFwcGmJTlN+NPl3x9wC6OPjU2mlbE0fjYaFhcHDwwNOTk7o2rUrvv/+e1l+1+qcP38ew4cPR5MmTdCxY0fMmjWr0t/OTZs2oX///nB2dkaHDh3w73//G5mZmSa3xwJoIVMFcMiQIZg8ebLRZT179oSXl5fJbbzzzjuGJ6g5alMAdTodMvKLEXMtG7vPpWF12GXMCIrFv9edwOhlYej15a9mvYA/NucAxn4bgfc3ncb8PfHYGHUVhxPSkZieh4Li+n37WC0U84dfsIqvABy8kI71kcbf8Xxsjnnf8ewxYy9Gfa1fqOIVeB7f/aY/3M2pq1m4kWO8UKWh5FrfmKsYisnVxgqgj48PJDs7tPvHnCr/rtSmAPbp0wc3b940zO3bt6t8PElJSWjatCmmTZuG+Ph4+Pn5wcHBAb/88kudf8erV69CkqquRrm5uWjfvj3eeOMNxMbGIjAwEM2bNzf69DAiIgL29vZYsWIFkpKSEBERgT59+uDVV181uU0WQAvdXwBLSkrQqFEj7Nixw+h2U6dOxfDhww0/37p1CwBw8eJF9OvXr9rP4IuLi5Gbm2uY1NRUSJKEzMxMFBeX4HpWPk5cuY0d0Sn49lAivH45iwk/HMOoJaFmf4TXb8ZujF15BO9visa8kDisP3oFhy7cQPz1O8gtKIJWq+XUcjQaDYKDg6HRaKz+WKw5uQVFSEjLxuELN7AxMgkL9lzAh5uj8ZrvUQyZd9Csg24/+r89eHrhYYxbHYlpAdGY9O1ObIq8jCMX03HlVg40RcVW/z3VPny+2niuBdmGAqgtyBa2n5yCQsN/tzkFhbJsMzMz06gA7tu3D3Z2dmj59JvV/t2oTQEcMGCA2a/7n3/+OXr27Gl02aRJk/DEE08YXbZu3Tr07NkTTk5O6NGjB3x9favcZk0FcNWqVWjZsqVRWVuwYAE6duxoeBdwyZIlePjhh43ut3LlSjz00EMmt8kCaKH7C2BaWhokSUJkZKTR7ebNm4fu3bsbfn7yySfRq1cvDB48GNHR0dXuw9Tb05IkwcNrKx7x2l3zl/g9d6P/l7sxcu5uvLZkF/67chc+X7MTC9fvxNqfg7F9RzCCgzkc68wvO4Lxw5ZgLN6wE15rd2LSt7vw96934dl5u+Dx1W50NfM5PuDL3Rhl4jm+5udgbAu0/u/J4VhzdgduNRTA3YFbhe1na2Cw4b/LrTL9dxcQEGAogAUFBXDt2AlNuw5Cl893yVYAmzZtCldXV7i7u2PcuHG4cuVKla/Jw4YNq7SdHTt2oHHjxtBq9e/0rl27Fq6urggMDERSUhICAwPRpk0brF+/3uQ2ayqAEyZMwNixY40uO3PmDCRJQlJSEgAgMjISjo6O2LNnj/7rXenpGD58OCZNmmRymyyAFqqqAEZFRRndbu7cuejRo0ed9lHVO4Cdp2+Dm2cIunqF4In5h/D6qqOYGnAai/bGY/OxJIQl3MTvN3OQX1j9uyOK+T9UGxvmKs8UFZcgJSMPUb/fwvaTyVi67wLeWLoL49dEYmQtjof42JwDePnbI5jy0ynM2R2HdRGXsT82DXGpWbiTL887FWoePl9tPNciDcqivkdZ1PfQFol7LJqiYqyLuIx1EZdle2f+3ncAvby8YN/YER0n/VDjf/PmFsC9e/fil19+wfnz53Hw4EGMGDEC7du3r/K7c926dcO8efOMLouMjIQkSbhx4wYAoHPnzggICDC6zZw5c/Dkk0+a3GZNBXD06NF49913jS4z1Te2b9+OZs2aoXHjxpAkCWPHjoVWa/rrByyAFqrrR8CWqPg+xIGYJFzL0lh8vkWtViHfUbExzFWM+3MtL9fhVl4RzqTcwe5zafj+j++5/ufHkxi9LAy9zfye64BZ+/HSirsr1X+ISMKvsfqVzNkadR6KqDb4fBWDuVqu4jXvzp07aOzggOaPjTXrv+m6rgIuKChA+/btsXTpUpPXd+vWDfPnzze67OjRo5AkyfD9QUmS4OzsDBcXF8M4OTmhXbt2hvv07t3bcF3Tpk0hSZLR7Xv37m247ejRoysdtPn69euQJAnHjh0DoD/CiKurKxYvXoxz585h37596NevH95++22TvwcLoIWqWgRy/7GGevXqVeUikNpS2nEAyTTmKkZtc9XpdMjWlCD2eg5+jb17KKN3N5zCSyuOmH2e6N5f/oo/LwvHf348iRlB+pXMtnTKPT5fxWCulqt4zcvJycHIkaPg1KYjunyyQ1gBBIDnnnuu0mLOCjV9BJyeng5JkrBp0yb8/vvvRlPxcS0AJCcnGy4PCwuDJElGt01OTjbc1pyPgN966y387W9/M7pNRESE0TuT92IBrIP8/HzExMQgJiYGkiRh2bJliImJMRzmpeIwMP7+/oiPj8f06dPh4uJi9C/TEiyA6sBcxRCR6/1nq5m/Jx7vbzqNsbU4HeG9p9zzCtSfci/ozHWcvJqFNBWcco/PVzEUk2t5GZB0RD/l4s7uU1auQ9TlTERdzpTtOX/va158fDwaNW6Mlk/9U1gBLC4uRqdOnTBr1iyT13/++efo1auX0WWTJ082WgTSqVMnzJ492+zf0ZxFIK1atUJJSYnhsoULFxotAnnttdfwj3/8w+h+UVFRkCQJaWlplbbJAlgHoaGhJhdlTJw40XAbX19fuLm5wdHRER4eHggPD5dt/yyA6sBcxbBGrkXaMly+nY/wxNvYfDwFi/clYNrPZ/D6Kv0p98xZyfzIF3vw9KLDGLcmCp9sO4tlBxKx9dQ1RF7OQEqm5V/lsBSfr2IoJlcbOgyMt7c37Owbof0/F8pSAD/55BOEhYUhKSkJx48fx5gxY9C8eXPDmzZeXl6YMGGC4fYVh4H56KOPEB8fD39//0qHgfHz84OzszOWL1+OxMREnD9/HuvWravyY+WaCmBOTg7at2+P8ePHIzY2Fjt27ECLFi2MDgPz448/onHjxli1ahWuXLmCo0ePYvDgwRgyZIjJbbIAqhALoDowVzGUmGtJaTlSMjWIvJyBbaeuYdmBRHyy7SzeWHMMTy86jEe+MO+Ue/rFXJGY+vMZLN6XgM3HUxCWeBuXb+ejSCv2nMxKzNUWKCZXGyqApaWleOrpYXBs8QAe+uAniwvguHHj4OrqCgcHB3Ts2BGvvfYaLly4YLh+4sSJGDFihNF9wsLCMGjQIDg6OsLd3d3kgaA3b96MgQMHwtHREa1bt8bw4cMrrQ+oUFMBBPQHgh42bBicnJzQoUMHzJw5s9JXT1auXInevXvD2dkZrq6uePPNN3H9+nWT22MBVCEWQHVgrmKoMdeych1u5BTi5NUsBJ3Rn3LPK/Ac3vrhOEZ9HYrutVjJPPa7o3h/02nM2xOPDVFXcSg+HQk3c5Fv4QHZ1ZirGigmVxsqgABw48YNPNiuPZq69UOXz3bK/h3AhoAFUIVYANWBuYphi7nqdDrczjM+Y8+XwfqVzH9eFo4+Zp6S8d5zbs/cFVerlcy2mKsSKCZXGyuAABAeHg77Ro3Q3GOMyWMCsgBWjwVQhVgA1YG5itEQc713JfO+OP1K5lm7LuC9jfqVzANmmb+SefSyMMNK5u/vWcmclpWPoKCGlWt9UMzz1QYLIKBfHGFnZweXbk8Yjo1bXQH88MMPZXlMtmD9+vUsgGrDAqgOzFUM5mpaxUrmwwnp2FixknnzabxSi5XMj3jtxsjFvxmtZN5xJlU1K5mVSDHPVxstgAAQEhICl+bN0eTBLnB9Z1WVBfCpp57CuHHjZHlMtmDJkiVwcnKq90NYsQBagAVQHZirGMy1boq0Zbjyx0rmgBMpWLLvIqb9fAZ/+z4ST84/hK61XMn88dZ7VjL/rl/JXFJq3ZXMSqSY56sNF0AASEhIwCOPdtMfgLljd7QaMRFtX/EyKoDe3t5o1aoVioqKZHlcaqbT6TBs2DC88MIL9b5vFkALsACqA3MVg7mKoSkqhv+WYEQkpmPbqWv45mAiPv1jJfOwRb/h0f+Zt5L58Xl3VzIv+vXuSubfb4lfyaxEinm+lpYAR5frp7Sk5tvXUUlpOVaHXcbqsMuy/Q+Bua95BQUF2Lx5M1577TU4NXE2HKLt+PHjAID4+Hg4OTnhpZdeQmJioiyPTY3S09Mxbdo0SJKE7du31/v+WQAtwAKoDsxVDOYqRk25VqxkPnU1C8ExFSuZz2OC/4nar2T+NsKwknl95N2VzHlFtvfvlM9Xy9XlNU+j0eDy5cuVzue7f/9+NGvWDJIkwdXVFY8++ii6devWYKZLly6wt7dHo0aNsGzZMrn/VZmFBdACLIDqwFzFYK5iWJqrTqdDRr5+JXPIuRtYE65fyfz2jyfx/De1X8n83z9WMvsduYJfY28g9noO7hSo75zMfL5aTu7XPI1Gg8DAQPj4+ODzzz9vUOPt7Q1/f39kZGTIkmVdsABagAVQHZirGMxVDNG56nQ65Gi0iEvTr2T2j0jC7N36lcx/WXkEA81cydzrj5XM/153At5B5/F92GXsOpuG0yl3cCuvSHEFUTHP1/Iy4Hq0fgSfCu7stWycvZYt5FRwpH4sgBZgAVQH5ioGcxVDCbkWFJciMT0PvyXc0q9k3huPD/5YyTx4rnkrmbt578XIP87J7PnLOaw8pF/JfCIpC9etsJJZCbkCsPlFIKQeLIAWYAFUB+YqBnMVQw25VqxkPnLpNn7+YyXz9C0x+Pv3UbVayfzUwsP4x2r9SualBxKx9aR+JXNyZoHsK5kVkysLICkEC6AFWADVgbmKwVzFsIVctWXluJalQdTlTGyPTsXyg5fw6bazGL/2GIYvrt1K5tdWReL/AvQrmTcdT0boxVv4/VY+Cktq9/GpYnJlASSFYAG0AAugOjBXMZirGA0h17JyHW7mFCE6+e5K5i926FcyP/N1KHrMMG8ls8ds/UrmKZuiMTfkAtZHXsXBC+mIv1F5JbNicmUBJIVgAbQAC6A6MFcxmKsYzPXuSuaz17Kx57x+JfNXwbF4Z71+JXNfM1cy9/PZhxf+WMn8ZdB5TFu1E7tjUnE+NQdZ1lrJzAJICsECaAEWQHVgrmIwVzGYq3lyCvUrmffH3cS6o/qVzJM2RmPMyoharWR+bmkYJv6xknlV6GXsrFjJnFuEchELVVgASSFYAC3AAqgOzFUM5ioGc5VHQXEpLlWsZD6WjHkhcXh18S688l0E/lTLlcxv+h3H59vP4ZuD+lPuRVzKwJXbdTyjCgsgKQQLoAVYANWBuYrBXMVgrmLcn2uRtgxJGQWIuJSBn0+k4Ov9F/HRHyuZhy44bNZKZjfPEAyctR8vrTiCd9afwpfBsfg+7DKCY67j1FX94W5Ky+5bzVxaAvw2Xz+CTwW37EAilh1IrPdTwZkrKSkJixYtwptvvonXX3+9Qc0bb7yB//3vfzh9+rTVjpnJAmgBFkB1YK5iMFcxmKsYtc21YiXzsSuZ+CU6FSsOXYJX4DlM8D+B55aGofeXv5pVELt6heCJ+YfwV9+jeH+z/rR7644m4dfYmzifmoOM/GLFHTS7KnV5zbty5Qr279+PkydPGv2e/v7+sLOzQ5MmTfD000/j+eefxwsvvNBgZtSoUXjggQcgSRI++OADqzwHGnwBTEpKwsiRI9GrVy/07dsXBQXmvyXPAqgOzFUM5ioGcxVD7lx1Oh1yCrVIuJmLwwnp+OlYMhbvS8D0LTH4x+ooPL3osFmHu3HzDEF3770Ysfg3vLHmGD7aGoPF+xLw07FkHE7Qr2jO1ijj1HvmvuZdv34ds2fPxoB+fSBJkmFCQ0MBACdPnoSdnR0mTZqE/Pz8enjkyqTVarFy5UpIkoTVq1fX+/4bfAEcPnw4jhw5AgDIyspCaan535VgAVQH5ioGcxWDuYphjVzLy3W4lVeEmGvZ2Hv+BvyOXMHsXbGY7b8dHyzfjCFz9sPdzI+ae874FaO+1n8f8dNtZ7E67DLuFFT9EXJ5uQ6J6XlITM+TbTGLOa95oaGheKB1K58DGrQAACAASURBVDRzaoQ3+jpg+9+dceK/LpAkCSEhIQCA6dOnw9XVFWVl4k6FpyYvvfQSnn766Xrfb4MugHFxcXj22WfrfH8WQHVgrmIwVzGYqxiKyfW+RSAlpXc/ag46cx2+ob9jRpD+kDcvrTiCQbMPVFkKB80+gNMpd0zupr4Xgeh0OqxcuRKNGtnj2YcdkflZM8PveePjZkYF8PHHH8eECRNkeUy2YMWKFWjcuHG9v8ur6gIYHh6OMWPGwNXVFZIkISgoqNJtfH194e7uDicnJ3h4eBje7QOAoKAgvPLKK3j55ZcxaNAgzJs3r1b7ZwFUB+YqBnMVg7mKoZhc67AKuGLBSuTlDPwSnYqVhy5h9LIwQwm8kVNY6T71XQA9PT0hSRI+esIRpV82v/s7miiA/fr1w//93//J8phswYYNGyBJEoqLi+t1v6ougHv37oW3tzcCAwNNFsAtW7bAwcEBfn5+iI+Px7Rp0+Di4oKUlBQAwLZt29CmTRtcu3YNxcXFGDlyJA4cOGD2/lkA1YG5isFcxWCuYigmV5kOA6MpKcVLK47AzTME034+Y/L6+iqA27ZtgyRJ+Hq0k1Hxq64ATp06tcb9zZ8/H5IkYdq0aVXeJiIiAkOHDkWbNm3QpEkT9OjRA8uWLbPsFzXD+fPnMXz4cDRp0gQdO3bErFmzjN7BCw0NNfr+Y8UkJCRU2tbGjRtZAC1hqgAOGTIEkydPNrqsZ8+e8PLyAgBERUXh+eefN1y3ePFiLF68uMp9FBcXIzc31zCpqamQJAmZmZnQarUWj0ajQXBwMDQajSzb4zBX5qq+Ya42nmtBtqEYaQuyLdpWTHKm4bzJiTeMt5VTUGgogDkFhbI89szMzEoFMCEhAc1cnPFGX0fovmouWwE8efIk3N3d0b9//2oL4JkzZxAQEIC4uDhcvXoVP/30E5o2bYo1a9ZUu/3qXL16FZJUdT3Kzc1F+/bt8cYbbyA2NhaBgYFo3rw5vv76a8NtKgpgYmIibt68aRhT33tkAbTQ/QWwpKQEjRo1wo4dO4xuN3XqVAwfPhwAUFpaioEDB+LOnTsoLy/HmDFjsHv37ir34ePjY7LRBwQEIDg4mMPhcDicamd34FZDMdoduNXi7b24YBfcPEPw9opdRpdvDQw2FMCtgfI89oCAAKMCmJ+fj949u6NXO0fkf2G6/NWlAObn56Nbt244ePAgRowYUW0BNOWvf/0r3nrrLaPL1q1bh549e8LJyQk9evSAr69vlfevqQCuWrUKLVu2NCpsCxYsQMeOHQ3vAlYUwOzs7Bofr80UwOzsbPj5+cHLywtZWVkAgNOnT+P69ety78rI/QUwLS0NkiQhMjLS6Hbz5s1D9+7dDT/v3bsXffv2RZ8+ffDRRx9Vuw++A6jOYa7MVU3DXG08VxnfAdRqtdhz9jrcPEPwp7kHUVJSYri8Pt4B/O8778DFqRHi33epsvzVpQD+61//wvTp0wGg1gXwzJkzaN++Pfz8/AyXrV27Fq6urggMDERSUhICAwPRpk0brF+/3uQ2aiqAEyZMwNixYyvtV5IkJCUlAbhbAN3d3dGhQwc888wz+O2330xuzyYK4Llz5/Dggw/i0UcfRePGjXHlyhUAwIwZM4Sv+KmqAEZFRRndbu7cuejRo4cs++R3ANWBuYrBXMVgrmIoJleZTwVXXFqGXn8clDr2eo7hctHfAYyMjIQkSVj1UpNqy19tC+DPP/+Mvn37oqioCID5BbBTp05wdHSEvb09Zs+ebXRd586dERAQYHTZnDlz8OSTT5rcVk0FcPTo0Xj33XeNLru/c1y8eBFr167F6dOnERUVhSlTpsDOzg7h4eGVtmcTBfDZZ5/FZ599BgBo1qyZoQBGRkbCzc1Nzl1VUpePgC1l+I9hsQfw7Z/qPt8NAb4bAt23f0Lugl7Q3XOZefO4ZeP7hAzzpGWzaqiF81SVo/MdipyFfaHzrf52+N7SedqyWT1Mhhlu2awZYfaUrx6OO4sGoNzofiMtm7WjZJhnLBu/Zy2c5yya8rXPInPxYyj3ew74YXQd58+Wjf/zMswLls26Fy2cl4ym3P8FZCwZgnL/FypdV+X8+Je6T8B4INn4EygA+tO/7ffWj0yngntv4ym4eYZg+cFLhstKSssxb0885u2Jl/1UcDk5ORjYvx8GP+SIsi+r/ui3tgXw2rVraNeuHc6ePWu4zNwCmJSUhPPnz2Pt2rVo06aNofDdvn0bkiTB2dkZLi4uhnFyckK7du0M9+/du7fhuqZNm0KSJKPb9+7d23Db0aNH47333jPa//Xr1yFJEo4dO1blYxwzZgxefvnlSpfbRAFs0aIFLl++DMC4ACYnJ8PJyUnOXVVS1SKQKVOmGF3Wq1cvwyIQSxkKoFfN/wFwOBwOp4HNrAeAlOOyvN5UZ/PxFLh5huCNNVWXDzlUvObduXMHzVya4l0PB7NyMLcABgUFQZIkNGrUyDCSJMHOzg6NGjUy+8DRc+bMMXzVKz09HZIkYdOmTfj999+NpuLjWkDfUyouDwsLgyRJRrdNTk423Nacj4BNmTt3Lnr27FnpcpsogO3atcOZM2cAGBfA/fv346GHHpJzVwD0XxSNiYlBTEwMJEnCsmXLEBMTYzjMS8VhYPz9/REfH4/p06fDxcXF6F+kJQwF8NyvQNIRCyYcSApH6aXDOPrTfJReOmy4zOy5EibDhFo+l3+TYQ5bPr8fMkzpxf2I3DgHpRf3G11e8xy0fC7JMQcsn8T9Msw+oym9EIJjG2ai9EJIpeuqnIu/yjB7LZ+EPTJMiOUTv7vSlMYG4/j6L1EaG2zy+sqzy/K5sFOGCbZ84oJkmB0mp/Tcdpz88X8oPbe9ytsYJjbQwvkF+Ol1fQFaM0KW15vqJKbnGc4WUlomz7t9ptz7EfDSpUthb2+H0+9V//2/2hTAvLw8xMbGGs3gwYPx1ltvITY21uzHOXv2bKNPHTt16lTpY+HqmLMIpFWrVigpufsO7sKFC40WgZjy+uuvY9SoUZUut4kC+O677+LVV1+FVqtFs2bNkJSUhJSUFAwaNKjWq3jMUdVxdiZOnGi4ja+vL9zc3ODo6AgPDw+Tn7/XFb8DqA7MVQzmKgZzFaPecy3IAGY/qC9BN+5+pInycuBOsn7K5Slr5eU69PXZZ/Q9wPJyHa5laXAtSyPkVHBarRZ9evWERydHFHlX/ylYXY8DCFT+CNjLy8toTcF3332HXbt24dKlS7h06RLWrVuHFi1awNvb23AbPz8/ODs7Y/ny5UhMTMT58+exbt06LF261OQ+ayqAOTk5aN++PcaPH4/Y2Fjs2LEDLVq0MDoMzDfffIOgoCBcunQJcXFx8PLygiRJCAwMrLQ9myiAubm5eOqpp9CqVSs0atQInTt3hoODA4YPH46CAsu/7Ko0LIDqwFzFYK5iMFcxrJLr1n/pS9DhOXcvk3kRSIUJ/ifg5hmCjVFXAdTPgaCjo6Ph6OCASY851lsBnDhxIkaMGGH4eeXKlejTpw+aNm2KFi1aYNCgQVi1ahXK7yvXmzdvxsCBA+Ho6IjWrVtj+PDhldYIVKipAAL6A0EPGzYMTk5O6NChA2bOnGn07t+iRYvwyCOPoEmTJmjdujWefvpp7Nmzx+S2bKIAVjh8+DCWLFmCRYsW4eDBgyJ2oQgsgOrAXMVgrmIwVzGskuvpjfoS5Pfc3csEFcCFvybAzTME/9txHkD9nQlk7dq1kCQJG16tejWwJQWwIbCpAthQsACqA3MVg7mKwVzFsEqud67qS9DM1oBWf1gTUQUwOEZ/PMC/fa9feVxfBVCn0+HfEyfC2bERzk02/X1AFsDqqbYArlixwuyxNSyA6sBcxWCuYjBXMaySq04HLHTXF6E0/QJJUQUw/kYu3DxD0M9nH3Q6Xb2eC1ij0WBAv75wbeGA4+80ZQGsJdUWQHd3d6NxcXGBnZ0dWrdujdatW8POzg4uLi7o2rWrHI9XUVgA1YG5isFcxWCuYlgt1/Uv64vQ6Q36nwUVwOLSMjz8xR64eYbgRk5hvRZAALhx4waeGPInODa2x4+vNKm2AHp4eGDy5MmyPCZb4OfnB0mSzD7MjVxk/Qh48+bNeOqpp3Dx4kXDZRcvXsSwYcOwadMmOXelCCyA6sBcxWCuYjBXMayW635vfRHa86n+Z0EFEABGfR0KN88QRFzKqPcCCOhPl/rO229DkiT8s19j7HuzKbQzmlcqgK+99hoef/xxWR6TLXj//feFnyzDFFkL4MMPP2w4DuC9oqOj4e7uLueuFIEFUB2YqxjMVQzmKobVcj29QV/2Nv5V/7PAAvjvdfqVwAEnUqxSAAH9dwLXrFmDh927QJIktGraGE92djAqgJs3b4YkSTh06JAsj0vNrly5ggceeAAff/xxve9b1gLo7OyMEydOVLr8xIkTcHZ2lnNXisACqA7MVQzmKgZzFcNquSYd0Ze9FQP1P5cWAyEf66dU3u98+eyMg5tnCBb+moDi0jLMCIrFjKBYFJfK89FibV7zdDodzp49iy+//BLjx4/H+++/j8zMTABAUVERnn/+eTRp0gQTJkzADz/8gJ9//hlbtmxpMLNhwwZMnToVbdu2Rbdu3ZCWlibLv6PakLUAjhkzBv3798epU6cMx8M5deoUBg4caPL8d2rHAqgOzFUM5ioGcxXDarnmpP5xWrg2QJk878RV5YeIJLh5huD9zaeFbF/O17yioiLMnDkTvXv3NnlCh4YwHTt2xNSpU61S/gCZC+Dt27fx4osvws7ODo6OjnB0dIS9vT1efPFF3Lp1S85dKQILoDowVzGYqxjMVQyr5VpefveMIHeuCt3VgQvpcPMMwZiVEUK2L/drXgWtVou8vLwGNUVFRbJmWBdCjgOYmJiInTt3Ijg4GImJiSJ2oQgsgOrAXMVgrmIwVzGsmuu3g/UF8Eqo/tAwBRn6qea8sXVx8Wae0aFgMvOLkZlfXO35aWtDVAEk6+CBoC3AAqgOzFUM5ioGcxXDqrluGKsvgDEBQheB5BffXfhxO6/IKotASD1kLYD/+c9/qh1bwwKoDsxVDOYqBnMVw6q57pisL3xHlgotgADQ56t9cPMMwYW0XBZAqpasBfDVV181mr/85S9wc3NDy5Yt8de//lXOXSkCC6A6MFcxmKsYzFUMq+Z6cOYfxwL8THgBrDgWYOjFWyyAVC3hHwGXl5dj0qRJWLRokehd1TsWQHVgrmIwVzGYqxhWzfX4Gn3h2/KW8AL4xppjcPMMwdZTKSyAVK16+Q7gxYsX0aFDh/rYVb1iAVQH5ioGcxWDuYph1Vwv7NQXPr/nhBfAaT+fgZtnCL47/DsLIFWrXgrgnj170LZt2/rYVb1iAVQH5ioGcxWDuYph1VyvndQXvmV9hRfA+Xvi4eYZgq+CY1kAqVqyFsCPPvrIaKZPn45x48ahWbNm+OCDD+TclSKwAKoDcxWDuYrBXMWwaq7ZKfrCN7stUJwvtABWHAx60k+nWACpWrIWwJEjRxrNM888g3HjxmHNmjUoLRV7BHRrYAFUB+YqBnMVg7mKYdVc733XryBTvyp4x2TZTwUHADvPpsHNMwR/+z4SH289i4+3nrXKqeBI+Rr0cQDz8vIwePBgDBgwAH379sXatWtrdX8WQHVgrmIwVzGYqxhWzVWnu3s2kOwUobuKuJQBN88Q/HlZuOzbZgG0LbIWwFGjRiE7O7vS5bm5uRg1apScu5JFWVkZNBoNAECj0aBr166Gk1WbgwVQHZirGMxVDOYqhtVz/bqnvgCmnRG6m7i0HLh5hmDw3IOyb5sF0LbIWgDt7OxMnvP31q1baNy4sZy7kl1WVha6dOmCjIwMs+/DAqgOzFUM5ioGcxXD6rmuGqovgJcO6j8SLimQ/VRwAJCWXQg3zxA88kUICoq10JSU8lRwZJIsBfDcuXM4d+4c7OzsEBoaavj53LlzOHPmDObPnw83Nzc5dmUkPDwcY8aMgaurKyRJQlBQUKXb+Pr6wt3dHU5OTvDw8MCRI0eMrs/Ozkb//v3h7OyM7777rlb7ZwFUB+YqBnMVg7mKYfVcf/yLvgCe/knoIpDCkjLD4g8uAqHqyFIA7ezsYG9vD3t7e9jZ2VWapk2bwt/fX45dGdm7dy+8vb0RGBhosgBu2bIFDg4O8PPzQ3x8PKZNmwYXFxekpFT+DkZ6ejqGDh2K9PR0s/fPAqgOzFUM5ioGcxXD6rlu/Ze+9B1dKbQAAkCPGXtZAKlGshTA5ORkXL16FXZ2djh16hSSk5MNc+PGDZSVybMCqTqmCuCQIUMwefJko8t69uwJLy8vk9uYPHkytm3bVuU+iouLkZuba5jU1FRIkoTMzExotVqLR6PRIDg4GBqNRpbtcZgrc1XfMFfbzLVs51TApwXK9n9pKIDagmwh+3p83kGjAphTUCjLdjMzM1kAbYjNrAK+vwCWlJSgUaNG2LFjh9Htpk6diuHDhwPQv+tX8UTOzc1F7969ce7cuSr34ePjA0mSKk1AQACCg4M5HA6HwzE5F1e9Bfi0QNLKVwwFcHfgViH7Gjprt1EB3Booz3YDAgJYAG2IxQVw586d0Gq1hn+ubkS6vwCmpaVBkiRERkYa3W7evHno3r07ACA6OhoDBgxA//790a9fP6xataraffAdQHUOc2Wuahrmapu5lkWsAHxaoHzLW8LfARy/JorvAFKNLC6A9678NfX9v4qxt7e3+MFWp6oCGBUVZXS7uXPnokePHrLsk98BVAfmKgZzFYO5imH1XE9v1Be/ja8K/w7g+5tO8zuAVKMG/RGwpVgA1YG5isFcxWCuYlg917ggfenze054Afxs+1kWQKqRzRZAQL8IZMqUKUaX9erVq8pFILXFAqgOzFUM5ioGcxXD6rlePqwvfb5PAFsn6EdbJGRXs3ZdgJtnCEZ9HYopm6JRpOWp4KgyiwvgihUrzB655efnIyYmBjExMZAkCcuWLUNMTIzhMC8Vh4Hx9/dHfHw8pk+fDhcXFyQnJ8uyfxZAdWCuYjBXMZirGFbPNfWUvgAu6yt8V0sPJMLNMwQzgmJl3S4LoG2xuAC6u7ubNV27dpXj8RoJDQ01uSp34sSJhtv4+vrCzc0Njo6O8PDwQHi4fOdHZAFUB+YqBnMVg7mKYfVcb1/UF8AFXYTvak34Zbh5hmD6lhhZt8sCaFts5iNga2ABVAfmKgZzFYO5imH1XHNv6AvgzNZCTgF3r83HU+DmGYL/bjgl63ZZAG2LsAKo0+lkO/+gUrEAqgNzFYO5isFcxbB6rsX5dxd/CF4EsvNsGheBUI1kL4A//PAD+vTpA0dHRzg6OqJPnz7w8/OTezeKwAKoDsxVDOYqBnMVw+q56nTAzFb1UgAPJ6SzAFKNZC2AM2bMgIuLC7y8vAwHf/by8kKzZs3g7e0t564UgQVQHZirGMxVDOYqhiJyXdC5XgrgiaQsFkCqkawF8IEHHkBAQEClywMCAvDAAw/IuStFYAFUB+YqBnMVg7mKoYhcl/WplwJ4IS2XBZBqJGsBbNWqFS5dulTp8sTERLRs2VLOXSkCC6A6MFcxmKsYzFUMReTq+0S9FMCUTA0LINVI1gL44Ycf4qOPPqp0+SeffIL3339fzl0pAgugOjBXMZirGMxVDEXkeu9ZQAQWwFu5RSyAVCPZC2CLFi3Qp08fvPPOO3jnnXfQp08ftGjRwlAOK8YWsACqA3MVg7mKwVzFUESuG8bWSwHMKdSyAFKNZC2AI0eONGtGjRol526thgVQHZirGMxVDOYqhiJyDXjj7ungNv1N2KngirRlhvL31g/HeSo4MokHgrYAC6A6MFcxmKsYzFUMReS6/T/6AnhsldDd6HQ6uHvpC+CtPPlKJgugbWEBtAALoDowVzGYqxjMVQxF5Br8gb4Ahi8RvqseM/bCzTME17I0sm2TBdC2yFoAi4qKsHjxYrz44ot47LHHMGjQIKOxNSyA6sBcxWCuYjBXMRSR657P9AXw0Gzhu+o/cz/cPEPw+6082bbJAmhbZC2A48ePR9u2bTF58mT4+Phg5syZRmNrWADVgbmKwVzFYK5iKCLXA1/pC+CsNsDcDsIWgQDAn+YegJtnCLp77+UiEDJJ1gLYokULHD16VM5NKhoLoDowVzGYqxjMVQxF5Bq6sF5WAQPA04sOcxUwVUvWAtirVy+cO3dOzk0qGgugOjBXMZirGMxVDEXkGrmy3grgs0tDWQCpWrIWwL179+KFF15AcnKynJtVLBZAdWCuYjBXMZirGIrI9aRfvRXAv6w4wgJI1ZK1AN6+fRsjR46Evb09mjVrhtatWxuNrWEBVAfmKgZzFYO5iqGIXGM211sBfM03kgWQqiVrAXz22WfRrVs3LFy4ED/++CPWr19vNLaGBVAdmKsYzFUM5iqGInKNC6q3AjhuTRQLIFVL1gLo7OyMs2fPyrlJRWMBVAfmKgZzFYO5iqGIXBP311sB/KffcRZAqpasBXDQoEE4duyYnJsUbvfu3ejevTseffRR+Pn51eq+LIDqwFzFYK5iMFcxFJFr0hF98ZvTHlj3EqAtFLarif4n4OYZglFLQnkqODJJ1gK4f/9+DB06FKGhocjMzERubq7RKE1paSm6deuG69evIy8vD48++iiysrLMvj8LoDowVzGYqxjMVQxF5JoarS+Ay/oI39W7G07BzTMEm47LtyiTBdC2yFoA7ezsYGdnB3t7e6OpuExpIiMj8eqrrxp+njp1KgICAsy+PwugOjBXMZirGMxVDEXkejNWXwAXPyp8V1M2RcPNMwQbo67Ktk0WQNsiawEMCwurcr755hs5dwUACA8Px5gxY+Dq6gpJkhAUFFTpNr6+vnB3d4eTkxM8PDxw5MgRw3Xbt2/HBx98YPh58eLFWLLE/HM0sgCqA3MVg7mKwVzFUESutxP1BXBBZ+G7+jDgDNw8Q7DuaJJs22QBtC2yFsD75eTkwNfXF4MGDRLyDuDevXvh7e2NwMBAkwVwy5YtcHBwgJ+fH+Lj4zFt2jS4uLggJSUFALBt27ZKBfDrr782e/8sgOrAXMVgrmIwVzEUkeudq3cXgCzqKnQRyIebT8PNMwS9vvyVi0DIJCEF8PDhw3jzzTfh7OyMnj17wtvbG2fOnBGxKwNTBXDIkCGYPHmy0WU9e/aEl5cXANMfAW/evLnKfRQXFxt9pzE1NRWSJCEzMxNardbi0Wg0CA4OhkajkWV7HObKXNU3zNWGc81KMVoFrC3IFrav/9scbVgFnFNQKMs2MzMzWQBtiGwFMDU1FXPmzEHXrl3Rrl07fPjhh2jcuDEuXLgg1y6qdX8BLCkpQaNGjbBjxw6j202dOhXDhw8HoF8E8uijjxotAsnMzKxyHz4+PpAkqdIEBAQgODiYw+FwOJwqZ88vPxkVwN2BW4Xt6+9f7zIUwK2B8mwzICCABdCGyFIAX3zxRTRv3hzjx49HSEgIysr0S86tWQDT0tIgSRIiIyONbjdv3jx0797d8PPOnTvRrVs3PPLII1izZk21++A7gOoc5spc1TTM1YZzLbhTb+8Afrr1DN8BpGrJUgAbNWqEjz76CJcuXTK6XAkFMCoqyuh2c+fORY8ePWTZJ78DqA7MVQzmKgZzFUMRuZZp6+1A0F8EnuOBoKlashTAqKgo/Pe//0WLFi0wZMgQfPvtt7h9+7biPwK2FAugOjBXMZirGMxVDEXkqtPVWwGcERTLAkjVknURiEajgb+/P5566ik4ODjA3t4ey5cvR15enpy7MamqRSBTpkwxuqxXr16GRSCWYgFUB+YqBnMVg7mKoZhcZz9YLwXQZycLIFVP2GFgLl68iM8++wwdOnRAkyZN8PLLL8u+j/z8fMTExCAmJgaSJGHZsmWIiYkxHOal4jAw/v7+iI+Px/Tp0+Hi4oLkZHmOjM4CqA7MVQzmKgZzFUMxuc57SF/+fJ8Qeiq42bvj4OYZgsfmHOCp4MgkoccBBICysjIEBQUJKYChoaEmV+VOnDjRcBtfX1+4ubnB0dERHh4eCA8Pl23/LIDqwFzFYK5iMFcxFJProof1BTA9Tuxufk2Am2cIZu2S72tYLIC2RXgBtGUsgOrAXMVgrmIwVzEUk+vSXvoCeP200N0s2XcRbp4h8NkpX9FkAbQtLIAWYAFUB+YqBnMVg7mKoZhclw/QF8CUY0J38/qqSLh5hqCvzz7ZtskCaFtYAC3AAqgOzFUM5ioGcxVDMbl+O1hfABc/CpRohO1m5JLfDItACkv4HUCqjAXQAiyA6sBcxWCuYjBXMRSTq+/QelkFfDr5DlcBU7VYAC3AAqgOzFUM5ioGcxVDMbmuGVkvBVBTUsoCSNViAbQAC6A6MFcxmKsYzFUMxeT6w/MsgKQILIAWYAFUB+YqBnMVg7mKoZhcf/wLCyApAgugBVgA1YG5isFcxWCuYigm1/VjWQBJEVgALcACqA7MVQzmKgZzFUMxuW78KwsgKQILoAVYANWBuYrBXMVgrmIoJtdN/9CXvyXdhR4GprCkDM8tDcNzS8N4GBgyiQXQAiyA6sBcxWCuYjBXMRST65a39AXwpJ91H0cdsADaFhZAC7AAqgNzFYO5isFcxVBMrtsm6gvg8dXWfRx1wAJoW1gALcACqA7MVQzmKgZzFUMxuf7yjr4ARn1n3cdRByyAtoUF0AIsgOrAXMVgrmIwVzEUk2tFAVz8CL8DSFbFAmgBFkB1YK5iMFcxmKsYisk18D2uAiZFYAG0AAugOjBXMZirGMxVDMXkGjSFBZAUgQXQAiyA6sBcxWCuYjBXMRSTa/CHLICkCCyAFmABVAfmKgZzFYO5iqGYXHdNZwEkRWjQBTAvLw+DBw/GgAED0LdvX6xdu7ZW92cBVAfmKgZzFYO5iqGYXEM+ZQEkRWjQBbCsrAwajX4VlkajQdeuXZGZmWn2/VkA1YG5isFcxWCuYigm172e/t7YUgAAIABJREFULICkCA26AN4rKysLXbp0QUZGhtn3YQFUB+YqBnMVg7mKoZhc93nry9+8TsIPAzN0wWEMXXCYh4EhkxRdAMPDwzFmzBi4urpCkiQEBQVVuo2vry/c3d3h5OQEDw8PHDlypFb7yM7ORv/+/eHs7IzvvqvdgTlZANWBuYrBXMVgrmIoJtfDc/QFcM+n1n0cdcACaFsUXQD37t0Lb29vBAYGmiyAW7ZsgYODA/z8/BAfH49p06bBxcUFKSkphtt4eHigT58+lSYtLc1oW+np6Rg6dCjS09PNfnwsgOrAXMVgrmIwVzEUk2voAn0B3P2RdR9HHbAA2hZFF8B7mSqAQ4YMweTJk40u69mzJ7y8vOq0j8mTJ2Pbtm1m354FUB2YqxjMVQzmKoZicg1frC+AOz+07uOoAxZA26LaAlhSUoJGjRphx44dRrebOnUqhg8fbtY209PTDU/k3Nxc9O7dG+fOnavy9sXFxcjNzTVMamoqJElCZmYmtFqtxaPRaBAcHAyNRiPL9jjMlbmqb5irbedadmgu4NMCuoXu0Gpyhe0nT1OEMSuPYMzKI8jTFMmyzczMTBZAG6LaApiWlgZJkhAZGWl0u3nz5qF79+5mbTM6OhoDBgxA//790a9fP6xatara2/v4+ECSpEoTEBCA4OBgjoDZuXMnQkJCOBwOx6zZuXOn1f9uVTeXfMcZVgHvDtwqbD9bA4MNq4C3BsqzzYCAABZAG6L6AhgVFWV0u7lz56JHjx5CHgPfAazfyc7ORnx8PC5cuGDRxMXFITo6GnFxcRZvi8NcmauyJz4+HtnZ2Yr9+6pb6WEogNqCyo9TrskpKDQUwJyCQlm2yXcAbYtqC6AcHwFbit8BFKesrAwJCQlISUlBYWEhioqK6jwajQa3bt2CRqOxaDsc5spclT2FhYVISUlBQkICysqMD32imL+v3w7mcQBJEVRbAAH9IpApU6YYXdarV686LwKpLRZAcYqKihAfH4/CwkKLt1VeXo7s7GyUl5fL8MioAnMVg7laprCwEPHx8SgqKjK6XDF/X1kASSEUXQDz8/MRExODmJgYSJKEZcuWISYmxnCYl4rDwPj7+yM+Ph7Tp0+Hi4sLkpOT6+XxsQCKU1EA7/8jXhd8QRWDuYrBXC1T1d8Oxfx9XfkYCyApgqILYGhoqMlFFxMnTjTcxtfXF25ubnB0dISHhwfCw8Pr7fGxAIrDAqh8zFUM5moZFkA9FkCqiaILoNKxAIrDAqh8zFUM5moZFkA9TUkpBs0+gEGzD7AAkkksgBZgARRHyQXQzc0NXbp0QUlJieGySZMmwcfHBy+88AJcXFyMxsHBAV27djW5rYkTJ2LBggUA7r7jff93WJ2cnHD16lWkpKRU2raLiwskScKsWbNMbv+9997Dww8/DEmScOzYMaPrysvLMW3aNLRs2RLt2rXDsmXLqvydfXx8MGnSJKPLIiMj0blzZ0Oubm5ulfZRkQuAWmdji9Ty3Ll16xb+/ve/o127dmjdujXGjBljdIal2j53GjduDBcXFzRr1gweHh6IiIgwul6SJOzbt89w2bFjx+Dm5gYA2LRpU6XH7ezsDEmSTH7io/gC+O2f7hZAlWEBtC0sgBZgARRH6QWwdevWWLNmjeGye4vOve7cuYMuXboY3fZe97+It2jRAi1btkRmZqbhNhUv4qZs374dDz74IK5fv27y+u+//x5hYWF46KGHKpUzX19fDBo0CLdu3cLFixfRoUMHHD582OR25CiA96spG1tkznOn4vmamZlptedOUlISVqxYgYyMDJSUlGD69Ol45plnDNfX9bmj0+ng5+cHV1dXo+tbt26NJ5980nDZvQXQlA8++ADDhg2rtNIXUEEB/G4ICyApAgugBVgAxVF6AZw9ezbc3NwM/66qKjqvvPIKxo0bV+W27n8R79GjB/75z3/iiy++MNymqhfxpKQktG7dGnv27DHrMd9fzp544gls2bLF8POXX36J//znPybvL6IA1pSNLTLnuVPxfB07dqwinjsAcOnSJTRr1szwsyXPHY1GA0mSkJOTY7j+7bffhru7O/bv3w+g+gIYGBiItm3bIjU11eT1ii+AfAeQFIIF0AIsgOLc+0dcp9NBU1Ja58kvKsGNW5nILyqp9nY6nc6sx1ZRdIYOHYq1a9cCMF10vvnmGzzyyCPVPj9MvYgnJCSgZcuWyMrKAmD6RVyr1WLIkCH47LPPavWY79WiRQtcuHDB8PMvv/yCIUOGmLy/3AXQnGxkodPpv2clemR87pSXl2P+/PmKee4AwPr16/H4448bfq7rc6esrAxr1641Olh/xfVr167F0KFDAVRdAK9evYrWrVsjJCSkyseq+AJ473cAtZYf5qoqRdoy/GN1FP6xOgpF2srvlNYFC6BtYQG0AAugOPf+Eb93NZvIMfeL0hUv4vv374e7uzu0Wm2lF/Ho6Gg0b94c0dHR1W7L1Is4AIwfPx7/+9//AJh+Ef/444/x+OOPm/1cMVXO7O3tjd5FOXDgAHr37m3y/j4+PnB0dETLli0N06xZs0oFsFmzZka3cXR0rFQAzc1GFiUFd19sRY6ZX+Y357lz8uRJNG/eHCdPnqx2W/X13Ll27Ro6dOiAgwcPGi6r63OnSZMmcHJyQmBgoNH1kyZNglarhZubGw4cOGCyAGq1Wjz++OP45JNPqn28qiqAXAVMVsQCaAEWQHHUUAAB4Mknn4Sfn5/Ri3hubi4eeeQRLF++vMZtVfUinpCQgFatWiErK6vSi/ju3bvRunXrKr/bVdNjrmCNdwBrk40sFFoAgeqfOwsWLKjxKwv18dzJyspC7969sXLlSqPL6/rc0el0iIqKQsuWLXHmzJlK169ZswZPPfWUyQL46aefYsiQITX+fWQB1GMBpJqwAFqABVAcNXwEDAD79u1D165d8fbbbxtexMeNG4dXXnnFrG1V9SIOAG+88Qa8vb2NXsRTU1PRtm1bo3dQavuYK1jjO4C1yUYWCv0IGKj6uTN27FizvrMq+rmTn5+Pxx9/3Og7hRUsfe4MHjwYS5YsqXS9VqtFly5dMGfOHKMCuGfPHrRu3RpJSUk1Pm4WQD0WQKoJC6AFWADFUfoikHuLzhNPPIE2bdrAx8cHq1evRpcuXXDnzh2ztlXdi3h8fDxatWqFRo0a4erVqygrK8OwYcPw4Ycfmv1YS0pKUFRUhC5duiA8PNxQqAHgu+++w2OPPYbbt28jMTERrq6uOHTokMntyFEAa5uNLTLnuZOZmWlxAbT0uVNSUoLRo0fj7bffNnm9Jc+dkydPomnTpobv8d1//erVq9GmTRtDAbx+/Tratm2L7du3m/XYWQD1WACpJiyAFmABFEdNBfDXX3+FJEnw8fFB165d4eDgYPKYawBw5MgRwz8D1b+IA/p3hCRJwtWrVxEeHg5JkuDs7Fxp2xUvoJMmTTJ6MR0xYkSlM+lUvCN077HcHnzwQSxdutRwv4rjxlUc+02OAlhTNg2BWp47YWFhkCQJTZs2NbptxfOhts+diuMANm3aFG5ubli4cKHh9vc/t0pKStClSxdDAZw1axYkSTKZy6ZNmyplzAKoxwJINWEBtAALoDhKLoCkx1zFYK6WUX4B9GABJEVgAbQAC6A4LIDKx1zFYK6WUXwBXDGo3gpgzxm/oueMX1kAySQWQAuwAIrDAqh8zFUM5moZxRfAe98BVBkWQNvCAmgBFkBxWACVj7mKwVwto/gCeO87gCrDAmhbWAAtwAIoDgug8jFXMZirZVgAxWEBtC0sgBZgARSn4o94YaHlp0riC6oYzFUM5mqZwsJCZRfAuB368vdNX0Br+f/gVqVIW4Z/rzuBf687wVPBkUksgBZgARSnrKwMCQkJSElJQWFhIYqKiuo8Go0Gt27dgkajsWg7HObKXJU9hYWFSElJQUJCAsrKjEuPYv6+3nt2Gq4CJitiAbQAC6BY+fn5SEhIQHx8vEVz4cIFREdH48KFCxZvi8NcmauyJyEhAfn5+ZX+nijm7ysLICkEC6AFWADFKysrs/hdgby8PISEhCAvL8/q71DY0jBX5qrEuf+dvwqK+fvKAkgKwQJoARZAdWCuYjBXMZirGIrJlQWQFIIF0AIsgOrAXMVgrmIwVzEUkysLICkEC6AFWADVgbmKwVzFYK5iKCZXFkBSCBZAC+Tk5ECSJKSmpiI3N9fiyczMREBAADIzM2XZHoe5Mlf1DXO18VwzbiDXq7l+Mm4I28/NjCx0nr4Nnadvw82MLFm2mZqaCkmSkJOTY+2XX5IBC6AFKv5j4HA4HA6noUxqaqq1X35JBiyAFigvL0dqaiq6detm8v+WunfvXuNl9/5cUSjlekexujH12ETct6bbVnd9VdcxV+bKXG0r19rmx1ytk2tOTg5SU1N5kHIbwQIog169epl9+f2X3ftzbm79fb+iqscs931rum111zPXut+WudbtvsxVzH3NuW1t8qvqcuZq/m0syZVsAwugBSreAVy8eLHJ/5NasmRJjZfd+3N9/h+qqccm4r413ba666u6jrkyV+ZqW7nWNj/map1c+Q6gbWEBtAC/A8jhcDichjb8DqBtYAG0AFcBq2OYK3NV0zBXG8+Vq4BJIVgALZCby+MAqgFzFYO5isFcxVBMrjwOICkEC6AFWADV4f/ZO/P4Jsr8jxdPFN1VV197+NoNNxREFJV1UWA9FlfXa2V13VXX/S3erqDrkcpVRO77Klc5K5QbeoS2tLSlJ0dLL6ClLYWe9KZneqTJfH5/TGeaNEkzOZ4kk3zfr9fzkk5mJk8+psm7z8zzfShXNlCubKBc2eA2uWq7gItH+aZ1jJiZokurgyr7OlTZ19Gldcw9eySAngUJoB2QAMoDypUNlCsbKFc2UK72QwLoWZAA2gEJoDygXNlAubKBcmUD5Wo/JICeBQmgHZAAygPKlQ2UKxvkmCvHcahoaHN1N/rEkbmWN7RBq+NsO9jEJeCKhjboJJyvpaML9a2dBtt0Og6Vje3izzdaO9Gu0dIlYMIiJIBW0NHRYXJGVF1dHTQajd1NrVYjJCQEarXaIeejRrlSrvJrcsx1e+IVKJQqfHsw0+V9YZ1rRHa5fa+1tUGcBKJpbUBk9/k+35Nu8dihM49DoVShrqnnNXwSlAaFUoXInHJUN7ZCoVRhjH8U4nKvi5NAGlvbHJJhXV0dCaAHQQJoBf7+/iZrIgUHByMkJIQaNWrUvLK9sTxMlI2vNoW6vD8s29Pzw8XXasvx4UcOiAIYfuQA/rhA+vmE/ZbtDjXaNvnHcCzcGSr+PFDZc94DRxzz2oODg0kAPQgSQCugEUB5NsqVcpVTk2Ous49m94iHnwqR2eUu7xOrXL/cnyG+1s7OTuvP0WsE8INd58TzWTpW2C8yp9xo20trExCrN+qn32gEkDAFCaAd0D2A8oByZQPlygY55jo35IKBcIycHYkL5e5VLNhRuW6IKxRfZ1VTu+UDetOrDqDfkR55toQ4UphZbrRtyqoEpFypNSmAVAeQMAUJoB2QAMoDypUNlCsb5JirIIBLIvPw7rYzUChVGL8wBjXNHa7umoijcg1MLBLFKqmg1voT9BLAZVF54vk4ru+JIMJ++8+VGG17Znk8zl2rJwEkJEMCaAckgPKAcmUD5coGOeYqCODKE5fR1K7BsyvioVCq8NbmVGgcNAPVXlgI4Pakq9afoJcA6p+vsa3vvgn77Uy+arRtwuJYZJTcIAEkJEMCaAckgPKAcmUD5coGOeaqL4AAUFjdgtFzo6BQqjA//JKLe8fDQgD9jmRbf4Ly8wYCGHS6WDzf1dq+l4YT9guILzTaNn5hDC6UN5IAEpIhAbQDEkB5QLmygXJlgxxz7S2AABB5odLkPWuugoUATt2YYv0JUgN6BFCrMRDA9OL6Pg8V9tPPWdj26Pxo5FU2mRRAR43CkgB6FiSAdkACKA8oVzZQrmyQY66mBBAAlkbmiZNCCqubXdQ7HhYCOMY/yuJ9e0ac2czL39ZnAMBAAKMvVfV5qLDfj3qjqsK2h+ZGobC62aQAOgoSQM+CBNAOSADlAeXKBsqVDXLM1ZwAanUc3gnkJ4X8eU0i2jVaF/WQjQAqlCpUWzsTWBDAg/8GYCiA+pM7TCHsN/NojtG24bMicKWmhQSQkAwJoB2QAMoDypUNlCsb5JirOQEEgOqmdjw6PxoKpQrzwi66oHc8rATQ6pnAwiXg7S8A2i4DAdS/t88Uwn5f7c802jbIT2VWAGkpOMIUJIB2QAIoDyhXNlCubJBjrn0JIADE5lWJMhKXV+3k3vGwEsAdyVbOBE5eZ3YSyI8WJswI+33yU7rRNoXSvADSJBDCFCSAdkACKA8oVzZQrmyQY66WBBAA/EMvQqFUYdz8aFQ321BA2U5YCaDfkRzLB+nThwDqj+yZQtjvX9vPGm0jASSshQTQDkgA5QHlygbKlQ1yzFWKALZrtPjzmkQolCp8sDvN+skTduJoARzkx8vV3zZZORO4DwF8f8fZPg8V9ntzc6rRNhJAwlpIAO2ABFAeUK5soFzZIMdcpQggAOReb8LQmcddUhrG0QI4ZVUCFEoVHp53wjqZ7UMAX1mf1Oehwn4vr0sy2kYCSFgLCaAdkADKA8qVDZQrG+SYq1QBBIC1JwugUKow9ocTTl0qztEC+OmedHEU0KpL2n0I4ITFsX0eKuz33MpTRttIAAlrIQG0AxJAeUC5soFyZYMcc7VGADVaHV7svhT8UZDzLgU7WgC/3J+JPy7nl7xLLrRiJnAfAjhydmSfh5oSRRJAwlZIAO2ABFAeUK5soFzZIMdcrRFAALhU0YQh3/OXgsOzKxj3joeFAH6wO836mcB9CKBCqUJbp/laicI+j86PNtpGAkhYCwmgHZAAygPKlQ2UKxvkmKu1AggAq6LzoVCq8MSCGDS3s3+tLARwcQS/0snsYxekn0CoA7hpotFScAqlCuUNbWYPFfYZMTvCaFtfAkhLwRGmIAG0AxJAeUC5soFyZYMcc7VFANs1WkxeFgeF0jkFolkI4IG0UiiUKvwz8LT0E/SxEohCqUJOWaPZQ/X3ExAm1fQlgI6CBNCzIAG0AxJAeUC5soFyZYMcc7VFAAEgIb9GLKlyscK8+DgCFgKYXnwDCqUKTy46Kf0EFgQw/rL5QtmmpM53TiQJIGETJIB2QAIoDyhXNlCubJBjrrYKIAB8tvc8FEoVXg9Ihk7HbkIICwFsUHeKktXaIfE+u9MbeQHc+RdApzUSwKMZZWYPNSV1D887YVEAtQ7KlQTQsyABtAMSQHlAubKBcmWDHHO1RwCrmtoxem4UFEoV9p0tYdA7HhYCCEBc5/hCucQRTAuTQAITi8weqr+fsL7vYz9G0yQQwiZIAO2ABFAeUK5soFzZIMdc7RFAoEeqHvsxGi1SR9KshJUATt2YAoXSisLWFgRwaWSe2UP19xMmzjy56CQJIGETJIB2QAIoDyhXNlCubJBjrvYKYGeXTqyptyzKvADZAysB/O5QNhRKFVZF50s7gQUBVB7ONnuo/oQPofj0xKVxJICETZAA2gEJoDygXNlAubJBjrnaK4AAcOJiJRRKFYbNikDZDbUDe8fDSgA3n7oChVKF/wZnSDuBBQH8YHea2UOHzYwQ9yuuawUAPLsingSQsAkSQDsgAZQHlCsbKFc2yDFXRwggx3F4e8tpKJQqfCFVpqyAlQBGX6qCQqnCi2sSpZ3AggBO3Zhi9lB9Acyr5L93XlidQAJI2AQJoB2QAMoDypUNlCsb5JirIwQQAC6UN2Jg9/q650tuOKh3PKwEUJCukbMjpc1iNiOAj/zAz+Z9Znm82UP1BVDI55X1SeK2wmoSQEI6JIB2QAIoDyhXNlCubJBjro4SQAD45mAWFEoV3tqc6tB1glkJoEarE5e1q+hjFQ8RMwIoXMp9eN4Js4fqC2BK9/rDfw1IFrddrmwmASQkQwJoBySA8oByZQPlygY55upIAaxoaBNFJ6mg1gG942ElgADwTLe8Sepv6gZe/jZOALo6RQEUZhMP9DNft09fAGMuVQEA3tqcKm67UN5oUgA7u2gpOMIYEkA7IAGUB5QrGyhXNsgxV0cKIAD4h16EQqnCaxuSHTYKyFIAp+1Kg0Kpwq6Ua5ZPYGYlkP/sPCcK243WTpOH6gtgWFYFAODdbWfEbRklN0wKoKMgAfQsSADtgARQHlCubKBc2SDHXB0tgNXN7Rg5O9JgpMteWArgouO5UChVmBtywfIJzAjgx0HpYkHsopoWk4fqC+CBc6UAgH/vOCtuO3u1ngSQkAwJoB2QAMoDypUNlCsb5JirowUQABZH5EGhVOHPaxIdskQcSwHcf64ECqUK7247Y/kEwlJwu181WAru46B0PLUkts8JMPoCKIw2/p/eyGFyYa1JAaSl4AhTkADaAQmgPKBc2UC5skGOubIQwButnXioe0QsPLvC7vOxFMC0a/zI24TFsZZPYGYSyMdB6fjLukQolCrE5pke9dQXwI3xVwAYCmDc5WqaBEJIhgTQDkgA5QHlygbKlQ1yzJWFAALAquh8KJQqvLA6we57AVkKYH1rp3TZ6kMAhfv5DqeXmTxUXwBXdq88oi+AQjFtEkBCCiSAdkACKA8oVzZQrmyQY66sBLBB3YlRc/h7AU/m2ncvIEsBBICx3XX8LlVY+D7oQwD/G5wBhVKFbUlXTR6qL4ALVJcAGArg8ZzrJICEZLxaAHNzc3Hvvfdi8ODBGDt2LAYMGIDJkydLPp4EUB5QrmygXNkgx1xZCSDQM8Hi9QD7ZgSzFsBXN/D1+CIvXO/7BH0I4OxjfI4rzOSoL4Czj/ETTvQFMCSznASQkIxXCyAATJkyBTk5OQCAIUOGoL29XfKxJIDygHJlA+XKBjnmylIAq5vbMWwWLz6pV+psPg9rAZy+jx+923TqSt8n6EMAV564DIVShVnHckweqi+A3xzMAmAogAfTSkkACcl4vQAOHDgQnZ2daG5uxvDhw606lgRQHlCubKBc2SDHXFkKIABxZEzSLFszsBbAld33K/odye77BH0I4Pakq1AoVfh873mTh+oL4H+710vWF8C9Z0pIAAnJeLUANjU1wdfXFwCQmpqK119/3erjSQDdH8qVDZQrG+SYK2sBLK1XY3D3cmtZpQ02nYO1AB45XwaFUoW3t5zu+wR9CKBwjncCTYuuvgB+sDsNgKEA7kq5RgJISMarBTA1NRVTp04FAGzfvh3fffedVceTAMoDypUNlCsb5JgrawEEgK/2Z/Y5OmYJ1gKYXsyvwvGHRSf7PoGwFNyG8QZLwX0clI64PL6My0trE00eqi+A720/C8BQAIW+9W60FBxhCq8WwG3btmHu3LkAgP3792PMmDGor683u39HRweamprEVlZWBh8fH9TV1UGj0djd1Go1QkJCoFarHXI+apQr5Sq/JsdcZx/NhkKpwrLIXGbPkV3C19ob/P1xFNc0uSzXzfEFUChVmB583mB7ZUOrKFzN6nazx2tTAgD/n0F34F/QaDTYmcxL24e7z+FcUU13PcGTJo8dOvO4+Bx/25QCjUaD97f3LAW3/mS+SQF01P+Duro6EkAPwqsF0Fr8/f3h4+Nj1IKDgxESEkKNGjVqXtneXR0GhVKFj9aFMX2e5xfyz/OftWyfp682Y2MoFEoVpi437MOxYyEYMTMcCqUKm4PNH58d+Bng/zOUrf4TQkJC8M1m/nyvLA3D1n0hUChVGP59uMljB/uFi1I3cT6/z4uLw8Rtn24INSmAjnrtwcHBJIAeBAmgFdAIoDwb5Uq5yqnJMVdnjABqNBpE5vBlTsb4R6Ghpc0luZobAdRoNHhpbQJfCia73Ozx2uT1/Ajg7teh6ewwGAGsaVSL0tba1mF0rP4I4J9WnoJGozEYAVwakWtSADs6Oh2SP40AehZeLYCmRvP0myXoHkB5QLmygXJlgxxzdcY9gACg03GYvCwOCqUKQanXrDrWUbmauwcQAD7be168F88sfUwC0ek4DPTjpa262bgkmf49gJOWxQEwvAdwkRkBpEkghCmcLoD33nuvVe2+++5DcXExk76UlpZi8uTJ8PX1xZgxY3Dw4EGrjhd+Gd7eEIt/bT/bZ3tPQns38DReWRqGpRG5UGVfR2F1C7q0jrl515uR4xeqHKBc2SDHXJ0lgADEma5/XB4PnU56YWhnCOCyqLw+6/gB6FMAgZ4VRfKrmo0O1RfA8QtjABgK4A9hl0gACck4XQD79euHtWvXYteuXRbbzp07cccdd6CoqI+/puzg+vXryMzkf4mrq6vx4IMPorW1VfLxwi/Db788aPKXzhFt2KwI/GVdIv53IAtbE4qQWFCD6uZ2u9fF9Cbk+IUqByhXNsgxV2cKYGtHFx7yj4JCqUJsnvTl4ZwhgAe6CzH3Wa/QggD+cXk8FEoVzhQZF73WF8CH550AYCiAc7r/P5AAElJwiQBWV1dL3v+uu+5iJoC9GTNmDEpLSyXvL/wyBJ3KxeH0MovtyPm+28FzxfhyUyi+PZiJVzckY+TsSLNi+Oj8aPxj62nMC7uIA+dKkVXagLZOLcN05Iscv1DlAOXKBjnm6kwBBIAfw/mRrv/beU7yMc4QwLNX+ZnKTy+NNX8CCwL4egC/pFzUxUqjQ/UFcMTsCACGAuh3JJsEkJCMV98DqE9aWhpGjx5t1TGs7wHU6TgU17Ui8kIl1sQU4NM96XhmeTwG+ZmWwoF+/GWRj4PSsSo6H5EXruNqbSu0Vlwm8UTk+IUqByhXNsgxV2cLYFFNi/iZV3ZDLekYZwhgdVM7FEoVBvn1UXvPggAKQrf/XInRofoCqFCqwHGcgQD+70AWCSAhGRJAAHV1dfD19UVKSopVx7lqEkhbpxbZZQ04kFaK+eGX8M/A03jsx2izo4UjZkfg1fVJ+PZQFrYlXUVKYS0a1fL5crHoW8teAAAgAElEQVQXOX6hygHKlQ1yzNXZAggA/ww8DYVShRUSn9MZAshxnHjlpqimxfQJLAigUPDa1JrCvQWwXaM1EMAvgjNIAAnJOF0AQ0NDJTdn0NHRgYkTJyIoKMjqY91tFnBNcweSCmoRmFiEbw5m4eV1SRg+K8LkB8IgPxX+viUVO5KvoqKhzSH9d1fk+IUqByhXNsgxV1cI4PGc61AoVXh8QQw0EibLOUMAAeCF1XwpmLg8M7c6WRBAYSLH4og8o0N7C2CjWmMggJ/8lE4CSEjGJfcA6rebbrrJ6GehsYbjOLz99tvw9/e36Xh3E0BTaHUcimpacDznOlZG5+OjoDRMXBpn9AHxyvokbIgrRGG1mb9aZYwcv1DlAOXKBjnm6goB1Gh1eOzHGCiUKkTkXLe8v5ME8OMgXsJ2JF81fQJhKbh1jxktBQcA607ydQaVh7ONDu0tgFVN7QYCOG3XOZMCSEvBEaZw6SXgmJgYjBs3DlFRUWhqakJzczOioqLw+OOPIzo6mvnzJyUloV+/fhg7dqzYcnL6mL7fCzkIoDlK69UITCzC3zaliHWnhPbcylNYFpWH7LIGj5htLMcvVDlAubJBjrm6QgCBnrIr7wT2Meu2G2cJoFCLzz/0oukTnNnMC+DBfwOAkQAGpfJlbj4KSjM6tLcAFte1Ggjgv7afNSmAjoIE0LNwqQCOHj0aSUlJRtsTExMxcuRIF/TIOuQsgPrUNHdg75kS/Gv7WYNK8wqlChMWx8I/9CJOF9XJdjKJHL9Q5QDlygY55uoqASytV4t/wF6t7buEl7MEcO+ZEiiUKry/46zpE1gQwLCsCiiUKry1OdXo0N4CeLmy2UAA/7H1NAkgIRmXCmD//v1NjrhlZ2ejf//+LuiRdXiKAOrT1K5BSGY5Pt2TblSG5tH50fj2UBbiLldbVYDV1bhDrp4I5coGOeY6x0UCCADv7+BHvZZFGd8zp4+zBDCxoAYKpQrProg3fYLTG3kB3PMmoNMZCWBSQS0UShWmrEowOrS3AGaVNhgI4N82pZgUQEd9XpMAehYuFcCJEyfi2WefxfXrPfdvVFZW4vnnn8ekSZNc2DNpeKIA6tOu0SL6UhW+PpglVqcX2rMr4nEovUzSzdeuxt1y9RQoVzbIMVdXCqAqm58M8uSik31epXCWAF6rbYVCqcLwWRGmb6GxMAnkQnkjFEoVnlgQY3SoIIAjZvP/PXu13kAAX92QTJNACMm4VAALCwvx0EMP4dZbb8WQIUMwZMgQ3HrrrRg9ejQKCwtd2TVJeLoA6tOl1SGlsBZzQi6IVfiFS8Q7k6+6dRFqd85VzlCubJBjrq4UwHaNFg/P4/9ATSyoMbufswSws0vXs55vk/F6vpYEsOyGGgqlCsNmGgukIIDCH+QJ+TUGAvjimkQSQEIyLq8DyHEcTpw4gbVr12LNmjWIjo6WzcQDbxJAfZrbNdgYf0WcgadQqjBufjTWxxagsc39+i6XXOUG5coGOebqSgEEgNnH+Oefvi/D7D7OEkAA+MOik1AoVUgvrjd+0IIANrdrxM/V3n9YCwL4+4X8+U9crDQQwOdXniIBJCTjcgGUM94qgALtGi2CThfjqSWx4gfN6LlRWByRh5rmDld3T0RuucoFypUNcszV1QKYWdogXhptajedmzMF8M3NqVAoVTiWUW78oAUB5DgOg78/LpZ50UcQwMnL+FJeoVkVBgIorCNMAkhIweUC2NraiuPHj2PTpk1Yu3atQXN3vF0ABbq0OhzLKMeUVQniB86wWRGYdSwHpfXSlmliiVxzdXcoVzbIMVdXCyDHcXiue/Rr31njJdQA5wrg1wf5JdnWxxYYP2hBAAHgke5LvPlVzQaHCgIofNYeSCs1EMAJi2NJAAnJuFQAMzIy8Ktf/Qo/+9nPcPPNN+OBBx5Av379MGDAAAwaNMiVXZMECaAhOh2H6EtV4mLmggiujy1wWCFSW5B7ru4K5coGOebqagEEgE2nrkChVGHqRtNLejpTANfE8MWcvztkXMxZigAKI3znrhleQhYE8NX1SVAoVQhKvWYggE8siCEBJCTjUgGcPHkyPvzwQ2i1Wtx1110oKipCaWkpJk2ahCNHjriya5IgATQNx3FIvVKHt7f01KR6YXUCMkpuuKQ/npKru0G5skGOubqDAFY1tWNQ9+SLayZqAjpTAI+cL4NCydflM0KCAAqCF3OpyuBQQQCFS8xbE4oMBPCRXtUaSACJvnCpAP785z/H5cuXxX/n5uYCAM6cOYMRI0a4smuSIAHsG47jcDSjDI/Oj4ZCqcJAP746fkuHYz6MpOJpuboLlCsb5JirOwggALzXvRLGmhjjS6/OFMBz1+qhUKrw9NJY4wdTupeCW/MI0NVhUgDf3XYGCqUKh9PLDA4VBFB4netjCwwEcPTcKCP5e2F1Ajq6HFOlgQTQs3CpAN5///3Iz88HAAwfPhxRUVEAgLy8PNxxxx2u7JokSAClUd/aia/2Z4ofSH9YdBKxeVWWD3QQnpqrq6Fc2SDHXN1FAA+l8yNvz66IN6om4UwBrGxsh0KpwuDvj6Ord61UCyuBAMBne89DoTReT1gQwA93p0GhVGF51GUDARw+K8JIAM0uSWcDJICehUsF8E9/+hP27t0LAPj4448xfvx47NmzBy+88ALGjx/vyq5JggTQOhLyawxmDP83OMMps4U9PVdXQbmyQY65uosANrVrMKxbgnKvG34uO1MAdTpO7IfRRDgJAvj90RwolCqsjsk3OFQQwC+CM6BQqvBj+CUDARzkZ3z5lwSQMIdLBTAtLQ1xcXEAgJqaGrz44ou4++678eijjyIrK8uVXZMECaD1qDu7sEB1SfygenjeCURfYjsa6A25ugLKlQ1yzNVdBBAAPgriR8eWRBouDedMAQSAZ7pLsqRcqTV84PQmXgCD/wFwnEkBXBKZB4VShXlhhvImCOC3h/hZxrOO5RgIoKmmPJztsNq6JICehcsEkOM4FBcXo62tzVVdsBsSQNvJKWs0qFq/Mjqf2frC3pSrM6Fc2SDHXN1JAMOzK6BQqvDUklgD8XG2AAr36R04V2r4gIRJIMKM5q8OGD6HIIBC4euvD2ZZFECaBEKYw2UCqNPpcOutt6KgwESdJJlAAmgfnV06zO3+4lAoVfj3jrNoVDv+tXtbrs6CcmWDHHN1JwFs69TCd04kFEoVzutVHnC2AM7svoy7oncmEgRw75kSKJQqTNuVZnCoIIALVJegUKrw+d7zJICEzbj0EvCoUaNw+rSJafIygQTQMRxOLxNvXp60LA55lY79cPHWXFlDubJBjrm6kwACwPR9GUaXUJ0tgMIo3ozey9NJEEBV9nW+3MumVINDBQFcceKyKIgkgIStuFQAVSoVnn76aVy4cMGV3bAZEkDHcaG8UaxiP3J2JMKyKhx2bm/OlSWUKxvkmKu7CeDJ3CoolCo8viAG2u5bS5wtgILEvdG7MLUEAUwqqIVCya/4oY8ggBviCqFQqvDutjMkgITNuFQA77nnHtx222246aab0L9/f9x7770Gzd0hAXQsN1o78U7gGfFDa4HqkvjhbQ/enisrKFc2yDFXdxPAzi4dHp7HF0VOvVIHwPkCmF3Gr0/8xIIYwwckCGBOWSMUShV+v/CkwaGCAAp9eHNTKgkgYTMuFcBdu3b12dwdEkDHo9VxWByRJ35wfbon3e4ippQrGyhXNsgxV3cTQKBnPV6hDIqzBfBGa6f4Odau0fsMkyCAJXVq8WqIPoIA/tR9zCvrk0gACZtxqQDKHRJAdoRmVWDozONQKPnllJrbbc+EcmUD5coGOebqjgIYc4m/DPzkopPgOM7pAshxnLgyR2F1S88DEgSwQd0jj/rrqAsCeDCtFAqlCn9adYoEkLAZpwugtW+c5uZmRj2xHxJAtiQX1mJU92y+v6xLRG2LbUWjKVc2UK5skGOu7iiA7Zqe2cBZpQ1OF0AAmLIqAQqlCgn5NT0bhaXgVj9kdik4rY4T5U3/c08QwNAsvtTN5GVxFgXw2RXxtBQcYRKnC+BNN92E6upqyfvffffdKCoqYtgj2yEBZE9OWSPGda8lPHlZnHFVfQlQrmygXNkgx1zdUQAB4LM9/JJqSyLzXCKA/97B1wLcd7akZ6OElUAA4CF/fvTwSk3P6KEggJEXKqFQ8stqWhJAWgmEMIfTBbBfv35YuHAh1q5dK6n179+fBNDLuVrbKi4h9/iCGKMlnixBubKBcmWDHHN1VwEURsqeWR6Pzs5OpwugUAvQIBeJAih85unXMhQEMO5yNRRKFcbNjyYBJGzG6QKoUCgwcOBAq1ppaanlE7sAEkDnUdXUjhdW85dTxvhHIau0QfKxlCsbKFc2yDFXdxXA5naNKE2Xym84XQCFci0GK3oIS8Htf9fsUnAA8NLaRFH2BITXknKFLxPz0NwoiwI482gOLQVHmIQmgdgBCaBzaWzTYOrGFPGDT/8v476gXNlAubJBjrm6qwACEAVpdfRlpwtgSGY5FEoV/r5Fr6CzhEkgAPD2ltNQKFUIySwXtwkCmF5cD4VShWEzI2gSCGEzXi2AAQEBGDhwIG6//XaMGzcOiYmJVh1PAuh8Wju68ObmVCiUKoyeG4W0a/UWj6Fc2UC5skGOubqzAB44x8+YfXFNgtMF8Nw1XtQmLo3r2ShRAD8OSodCqUJQ6jVxmyCAF8obRbl7v/s+QxJAwlq8VgD379+PW2+9FYGBgcjNzcWMGTMwYMAAlJSUWD64GxJA16Du7MI/tvJ/HfvOicSZoro+96dc2UC5skGOubqzANa3dmKQHy9COw44VwDLG9qgUKowdOZx6ISi9hIF8LtD2VAoVVgfWyBuEwQwv6pZlLt/Bp4mASRswmsFcPz48fjkk08Mto0cORJ+fn6Sz0EC6DraOrV4dxu/asjI2ZFIKaw1uy/lygbKlQ1yzNWdBRAA/raJv3Xk682hThXALq0Og7/n65lWNbXzGyUK4MLjuVAo+RWRBAQBLK5rFeVOuC2GBJCwFq8UwM7OTtx88804evSowfbp06dj0qRJks8j/jKU5gGN5dJaU4XZpqkrQdTBHdDUlehtv25da660slVZ11qqrWg11rXWWqtae2M1Pg+MxiPKYPx+1n6k5lwGWuuMmqaxEhGHf4KmsQpQ17NrbTesaA3WtfZGK1uTda2j2crWAk3rDYQf2Q9N6w2go8V862y1sqmta5o2K1u79NbVAXR1AloNoNMCOh3goBvqzUEC6Hg2xl+BQqnCnxeHOVUAAYhrnIv3LEsUQGECybeHssRtggAKI4sKJb8aCAkgYQteKYAVFRXw8fFBSorhIt0LFy7E8OHDzR7X0dGBpqYmsZWVlfG/DH539/xCU6NGzSsaN+8ecPPuBffDfeDm3w9u/gPgfvwluAW/Arfw1+AW/gbcogfBLf4tuMW/A7dkILilg8AtGwJu2VC+LR8ObsUIcCt9wa0cBW7VQ9CtegitC4dCt3osuLWPgFs3Dty6x8CtfwLchvHgNvweXMAfwAVMALfxKXCbnoZu00TotvwRuq3PQbdtCnQ7XoRu1yvQ7X4dup+mQrfnLeiC/wnd/vegO/hv6A5Ng+7Ix9Ad/RTakC+gDfsSWtU30B7/DtrImdCemANt9A/QnvwR2rjF0MYvgzZhJbRJa6BNCYD2zFZ0pe1CV8ZedGUfxk87A/Cv7xdi3/6f0FWUhK7iM9CUZUJz/RI01QXQ1BVD03AdmuY6aNRN0HR2QKPROK1dKrsBhVKFIX7hqG1otutcm+MLoFCqMD34vKT9p25M5idznC+FRqOBNmG1+B7StDZgZzIvlB/uPmdw3M6kK0bbhdWRSmqbMXwWL4N/WnnKogA2trY5JMe6ujoSQA/C5QKYmJiId955B08++STKy/nZTkFBQUhKSmL2nIIApqamGmxfsGABRowYYfY4f39/+Pj4GLUbfvdCO+8+i003717rmr+17R6rGuf/c2bN1V/O1KhRc++m878HXfPuR8f830C9YCCaF41Aw5IxqFv2GKpXTMD1VX9E2ZopKF73Coo2TEVBwD+Qu+nfuLDlI2QF/hfnt3+Ns7tmISVoAU7tXYWT+zch8tAuhB89gJBjxxASEiK2Y8dC8OjccP6S6o5Qg8esbTM2hvKXXpeHSdr/jeVhUChV+CKAf96cLR+JGYQfOYBvNvPne2Wp4fnmbOO3P7+wZ/tgP/417DwQgpEz+X8/7h9uUQAPHLH99eq34OBgEkAPwqUCePjwYdxxxx344IMPcPvtt4sFnwMCAvDiiy8ye15bLwGbGwGsq6tzyF9XarUaISEhUKvVTv3rWJats9Ogqdva8fHuc1AowzF0pgrHM8t6HmttRcixo1C3tvAjD1JaR7uVrU16a1db2Vqta20tVrZm65q6CRp1E9SNdQg7ehDqxjpxm3FrtK61NljZbljXWuqta8110DTXQtNUA01TNTSNlfxI1o1yaG6UQVNfAk1dCT/CVXsVmtoiaGoK+VGvqsvQVOVBU5nLj4RdvwhNRQ405dn86FhZBjSl56EpSYOm5By6is+g69oZtBcmImHvcrQXnEJXUSK6riSgqzAeXYVx6Co4ia78k+jKj0HX5RPoyotCV24Eui6p0HUxDF0XQtCVfRhdWQf40bn0n9B1bie6zm6D9vRmaFM2Qpu8DtrE1dCeWgFt/FJoYxdCGzMf2uh50EbNhjbye2iPfwtt+NfQhs6ANuS/0B39FLojH0F36D/8KGLwP6ALeoMfZdz+AkqXPokLcx5G7ZJHwK0Zy49mLhvKj3wu+DW4H37hVLnkfrgP3BIFuFUPgQv4A3TbpiBvxQs4OvtFJK79P35U8/RmdGUfQldBLP//o76E/32w8Nlj7Qjg4uOXoFCqMPtoNjQaDbSJa/g+rhgJTVuz2RHAk5eu85etVyeI2/RHAB/7kV8h6clFJ/uUv0lLY9GibnfI5y6NAHoWLhXARx55BLt37wYA3HXXXaIAZmZm4pe//CXT5x4/fjw+/fRTg22+vr40CUTGdGl1+G9wBn+p5/vjOJ5zHQDlygrKlQ1yzFW8BzA63/xOHMffU9nRzN8z23QduHENqM4Dys8D15KBghjgUiiQtR9I2wGkBgAJy4GT84HI74GwGcCRj/giyj+9AWz7ExDwJLBqNLDot4Ajrj4s/A2/Tm/gc8C+fwKqr/k+ZPwEFMbgcEQUHlEG48t9GZKy+an7Hr9pu9L4DRJXAsko4S9bT1gcK24T7gGsaGgT7y0URNBco5VACHO4VADvuOMOXLt2DYChABYVFeH2229n+txCGZjt27cjNzcXX375JQYMGIDi4mLJ5yABdD+6tDp8uT8TCqUKg78/jrCsCsqVEZQrG+SYqyQBdAYcx088aqoAai4DZWlA4Ung4jG0n96OxbM+QcCsd3Fj38e83G3/M7D+CWDZEGDevVaJYte8XwCrxwA7/wKEfAacWsqLa3EqP+FPpwMAxOXxy7b9eU13nVmJAlhU0wKFki96L6AvgM8sjxcfJwEkbMGlAjh48GDExMQAMBTA3bt3w9fXl/nzBwQEQKFQ4LbbbsO4ceOQkJBg1fEkgO6JVsfh64NZUChVGOSnwqG0EsqVAfR+ZYMcc3UbAewDjUaDvywJM6qtJ6LT8TP0664ApWeB3DDg7FZ+9PHYZ/yI48YJaFvwO2mSOP9+YO2jaNnxBjbP+gf8/b/j5TB+iSQBrGnugEKpwkA/lVhDUF8AhaUxh3VPBiEBJKzFpQK4dOlSjBo1CmfOnMHdd9+NpKQk7NmzBw888ADWr1/vyq5JggTQfdHpOCgPZ4sfoDO32l//izCE3q9skGOuchHA77bwEyteD0i2+TyBiUUYqgzBDz9F8kKXtY8f/Tv2GT8auPoh6aOJfZSBaddoRYlrauffC/oC+KqE8i9UBoboC5fPAp45cybuuOMO9OvXD/369UP//v0xe/ZsV3dLEiSA7o1Ox2HWsRxeApXh2Jl0xdVd8ijo/coGOeYqFwHcdSBEvDLQoO606TyS6gBqu4AbxUBRPHB2K/b4v4WE2U9Bs9xXsgAChnX/9H+uaGjDm5tSSQAJu3C5AAKAWq1GWloazp49i5aWFld3RzIkgO4Px3GY0y2BCqUKq2PywTEu5Ost0PuVDXLMVS4CGBISgudW8PfOCZPErMXaQtAAxMu1cZergZZayQI4bj4/wSOvkv+O0RfAdwLPkAASduEWAijQ1NSEY8eOITc319VdkQQJoDzo7OzEx+tDxQ/DuSEXetblJGyG3q9skGOuchLAuSH8H4R+R3JsOo8tAjht1zkolCrsOVPMr3YjUQAnL4uDQqnCuWv1AAwF8D87z5EAEnbhUgF88803xXv92traMHz4cNx666245ZZbcPjwYVd2TRIkgPJAyHV74hXxA/HzvefRrtG6umuyht6vbJBjrnISwOiLFWJ5FVuuBtgigEI+y6LyrBLAl9fx9/nF5lUBMBTAT35KJwEk7MKlAvjLX/4SWVn8Ood79+7F0KFDoVarsXHjRjzyyCOu7JokSADlgX6uIZnlGNK9OPvUjSmob7XtPiCC3q+skGOuchLAxtY2saDy1dpWq89jiwBuOsX/8TljX4ZVAvj2ltNQKFUIyeRXydIXwBn7MkgACbtwqQD2798fpaWlAID33nsPSqUSAFBSUoIBAwa4smuSIAGUB71zTS6sxUP+fO2sycviUFQjn/tO3Ql6v7JBjrnKSQA1Gg3+voWfQBGUes3q89gigCGZ5VAoVXhrc6pVAvjh7jQolCr8dJqvT6svgN8eyjKQPEFqSQAJqbhUAIcNG4YDBw6gtbUVDzzwAGJj+YrnWVlZ+MUvfuHKrkmCBFAemMq1oKoZTy3hK+k/PO8EEgtqXNhDeULvVzbIMVe5CeCGuEIolCp8sDvN6vPYIoBnr9ZDoVRh0rI4QNMO7Pkb3zTtfQrg/w7wkrcxnq9goC+As49dMJC8kbMjTcrfU4tjHXa7CwmgZ+FSAQwICMAtt9yCe+65B2PHjoWuu3L6unXr8Mc//tGVXZMECaA8MJdrTXMHXtuQLJaF2HTqCs0QtgJ6v7JBjrnKTQBzyhqhUKowem4UNFqdVeexRQBL69VQKPmizb0/Y/oSQP/Qi1AoVVgamQfAUADnh18yED3hqkbvRoWgCXO4fBZweno6jh49alD+RaVSITnZ9kKdzoIEUB70lWu7RmtwKeWzPefR3E75S4Her2yQY65yE0CdjsMjP5yAQqlCWvcMW6nYIoAdXT1FnW/0uu+4LwFceeIyFEoVZh+7AMBQAJdG5hmInlAyhgSQkIrLBVDOkADKA0u5chyHoNRr4uSQScvikFPW6OReyg96v7JBjrnKTQAB4PO9523qsy0CCPTU9LtUYfh90ZcAbk0o6pk8AkMBXB2TbyB64xfGkAASVuFyASwrK0NAQACUSiW++uorg+bukADKA6m5phfXY8LiWPGG6q0JRdBSvUCz0PuVDXLMVY4CuP9cCRRKFd7YmGLVeWwVwJfWJkKhVCH+wlVgwa/4ZmESyL6zfB//s/McAEMB3Bh/xUD0hM+u3m3I98dpEghhEpcK4MmTJ3HnnXdi9OjRuOWWW/DII4/gnnvuwc9//nM888wzruyaJEgA5YE1uTaoO8WZd8KXwxWaJWwSer+yQY65ylEAS+rU4h971giSrQIoFIPen5wneRawKvs6FEoV3tyUCsBQALcnXTUQPaFoNM0CJqTiUgF84oknMGfOHADAXXfdhaKiIrS0tODVV1/Fxo0bXdk1SZAAygNrc+U4DnvPlGD0XP6m6uGzIrD51BUaDewFvV/ZIMdc5SiAHMfhD4tOQqFUIamgVvJ5bBXAmUf5FUjWRmRKFsCE/BoolCq8sDoBgKEA/tR9nNCeX3mKBJCwCpcK4F133YUrV/jp7ffccw8uXuTvVcjKyoJCoXBhz6RBAigPbM21vKEN727rWW/z1Q3JuFzZzKiX8oPer2yQY65yFEAA+Gp/JhTK7hU6JGKrAK6PLYBCqcL3+09LFsCMkhvi5V3AUAAPppUaSN6f1ySSABJW4fKVQC5dugQAGDVqFEJDQwHwAkiFoAlHYU+uHMfhwLlSscTC4O+PY27IBaOZfN4IvV/ZIMdc5SqAB7olypr7AG0VwEPpZVAoVZi2NV6yABZWN0OhVGGMfxQAQwEUiksL7ZX1SSSAhFW4VABfe+01bN26FQDw7bffYujQoViwYAHGjRuH5557zpVdkwQJoDxwRK6Vje34KKjn3sCH553AjuSrVtcQ8yTo/coGOeYqVwEU6vNZM1HCVgFMKqiFQqnCyyuiJAtgVVM7FEq+TinHcQYCGHmh0kDy/hqQTAJIWIVLBbCoqAjZ2dkAALVajU8//RRjxozBX//6VxQXF7uya5IgAZQHjsw1pbAWL6xOED9Yn1kRj9CsCq+8P5Der2yQY65yFUCO48TZs1JXA7JVAAurW6BQqvDE3BDJAqju7BI/a1o6ugwEMC6v2kDy3tqcSgJIWIXLy8DIGRJAeeDoXLU6DsFnSwwKrz6/8hTCsyug8yIRpPcrG+SYq1wFEAC+OsDfByistmEJWwWwpYOXueHKo9BufxHY8RKgaetTADmOw+Du+qSVje0GAphSWGsgee8EnjEpf+MXxtBScIRJ3EIAOzs7UVZWhpKSEoPm7pAAygNWuTa3a7D2ZAHG6C3B9PzKU9h3tsRhH7juDL1f2SDHXOUsgMJkir8GSFt9ylYBBICHuisLFFb3lJbqSwABYGz3iiUFVc0GAph2rd5A9N7fcdakAFIhaMIcLhXA/Px8PP3007jpppsMWr9+/XDTTTe5smuSIAGUB6xzbWzTYE1MgcFanI/8cALLovJQ2djO5DndAXq/skGOuc4+Jl8B1L8PsLXD8qVSewRQKNWiX3bGkgA+vZS/RJ1efMNAAIX1jIU2bU4eav8AACAASURBVFcaCSBhFS4VwAkTJmDSpEmIiIhAZmYmsrKyDJq7QwIoD5yVa1O7BoGJRQYV+Yd8fxz/Dc5ASmGtx10epvcrG+SYq5wFEID4O5uQb/k+QHsEUCgrdSi9TNxmSQBf7C7vEn+52kAAL1c2G4jeJz+lkwASVuFSAbzzzjuRlye9/pK7QQIoD5yda5dWh8gL1/Fmr5uyJyyOxcrofJTUqZ3SD9bQ+5UNcsxV7gIo3AcopR6gPQL47aEsjFQeRtuC3wFLB1mcBAJAnNwRllVhIIDXalsNPl++CM4wKYDDZ0XQJBDCJC4VwMcffxxJSUmu7IJdkADKA1fmeqG8EX5HssV7f4T2t00p2J50FRUNbU7vk6Og9ysb5Jir3AVQWHP3rc2pFs9jjwCuPHEZI5WHJc8CBiBe2t17psRAAK83thl8pggSS7OACak4XQCbmprEFhsbiz/84Q+Ij49HXV2dwWNyeIORAMoDd8i1XaNFSGY53t12BgP9DD+cX9uQjM2nrshuZNAdcvVE5Jir3AVQKLg8YnYEOrv6ru1pjwDuPVNitQAKq5VsPnXFQADrWjoMPke+O5RNAkhYhdMFUJjg0XvCB00CkecHvxxwt1yvN/ILub+5KdVIBp9ZHg//0IuIzaty2Ic2K9wtV09BjrnKXQB1Ok6cbZtRcqPP89gjgHF51VYLoDDDennUZQMBFMrKCE1Ya5gEkJCK0wXw1KlTkpu7QwIoD9w51+rmdgSdLsY/A0+L9b6ENmxmBP4ZeBob468gvbje4siEs3HnXOWMHHOVuwACwLRd56BQqhCYWNTneewRwEsVTVYL4LKoPCiUKswNuWAggJ1dOqPJHsK/h848TgJIWMQt6gDKFRJAeSCXXJvaNYi8UInvj+YYzCTWv5n7rc2pWHHiMhLya9Dc7trXI5dc5YYcc/UEAdwYf6VPEROwRwBvtHZaLYCbTvH9+mp/poEAchxncAVhgeqS+O+RsyNJAAmLuEQA1Wo1PvvsM/zmN7/BAw88gH/84x+ora21fKCbQQIoD+SYK8dxuFLTgh3JV/Hh7jQ8qrfqiNAG+qnw7Ip4zNiXgW1JV3HuWr1TLxvLMVc5IMdcPUEAz3UXVn7sxxhwnPmSTfYIIMdxeHjWUasEcM8Z/vFpu9IMBBAAhs+KED8PlkTmif/uPemMBJAwhUsE8JtvvsGdd96JDz/8EF988QXuv/9+/O1vf3NFV+yCBFAeeEKuHMehsLoFwWdL8NX+TDy1xHiEUKHkF43/06pTmL4vAxviChFzqQql9WomNQg9IVd3RI65eoIAtmu0omBdq201ex57BBAAnlkcgaw5j6B1/dMWl4IDgNCsCiiUKvx9S6qRAOoXn1954rL4b/3ViR6ed4KWgiNM4hIBHDx4MPbt2yf+fPbsWdxyyy3Qap23fFZubi7uvfdeDB48GGPHjsWAAQMwefJkq85BAigPPDXX2pYOxF2uxtqTBZi2Kw3jF8aYvQncd04kXt2QjG8PZSEwsQgxl6pQWN1i132Fnpqrq5Fjrp4ggADwxsYUKJSGhZp7Y68A/jUgGQqlCpEXrgOwXAg6Nq8KCqUKL69LMhLAx37suTKw7mSBSQH8cHeaTf00BQmgZ+ESAbz11ltRXl5usK1///4oLS11aj+mTJmCnJwcAMCQIUPQ3m7dsl0kgPLAm3KtampHzKUqbIgrxPR9GXhhdYL4pWFuxPDppbF4b/tZzA25gB3JVxF3uRpFNS0WRw28KVdnIsdcPUUAFx3PhUKpgt+RbLP72CuAHwfxK3bsSrkGwLIAnimqEysE9BbAPyw6Kf4uC/cwKpQqg5HB/9t5zqZ+moIE0LNwiQDedNNNqKkxXHLnrrvuwtWrV53aj4EDB6KzsxPNzc0YPny41ceTAMoDb89Vo9WhsLoZquzrWBWdj8/2nMeLaxLhOyfSrBgK7fEFMXg9IBmf7z2PxRF5CDpdjLjL1SioakZja5tX58oKOb5fPUUAoy/xo23PrzRfhcJeAZzbXdZFWHXEkgBeKOfX/H1iQYyRAE5aFif+rgr96j0J5N1tZ2zqpylIAD0Llwhgv3798NJLL+Gvf/2r2G655RZMmTLFYBtLmpqa4OvrCwBITU3F66+/btM5SADdH8rVNBzHobqpHWeK6rDvbAkWReTio6A0TFmVYDSL0FwbNSscL61NwLRd5zDrWA7WxxbgYFopkgpqUVjd7PKZynJEju9XTxHA+tZO8b3doO40uY+9Arg5JgdlcwejfsFwoFNtUQCFJd9850QaCeDzK0+J/d2ZfFX8t34ZmOGzItDWSfcAEsa4RAD//e9/S2osSU1NxdSpUwEA27dvx3fffWf1OUgA5QHlaj0cx6G+tRPZZQ2IyLmOwMQi+IdexLRdaXhhdYLBJSZLbfTcKDy7Ih7/DDyN/x3IwrKoPASlXkP0pSrklDWiprmDySQVuSLH96unCCAAPLMiHgqlCrF5VSYft1cAD5++bNUs4JrmnhU/hnTXChUE8KW1ieJjwmxhU41mAROm8No6gNu2bcPcuXMBAPv378eYMWNQX1/f5zEdHR0GS9WVlZXBx8cHdXV10Gg0dje1Wo2QkBCo1WqHnI8a5cqyVdY3ImBvCI5nlmB3ShGWRuTifwcy8E7gaTy3It4qSRw68zgmLD6JNwKS8dlP6ZgfdgFbThUiNKMUZ6/UoKS2GW3tHS5/zc5ocny/zjzCL0O2PDLX5X2xN9cv92fwl2jNvJbN8fxki+nB523qR1z2FVEANa0N2Jlc1D1Z45zJ/ZvV7Ua/LyW1zdBoNHh1fZK4be/pa2Z/vxpb2xySYV1dHQmgB+G1AmgL/v7+8PHxMWrBwcEICQmhRo1ar3bgSAi27AvBst2hmBUYis8DQvHuqjC8vCQME+eHY8zscAxUhkuSxIHKcDw8OxyTfgzHK0vD8N7qMHwREIrZgaFYERSCbftDcOio61+zN7Z3VoVBoVTho/VhLu+Lve2bzaFQKFV4YZHp1zJjI//41OW2vdYtPx0QBTD8yAHx+V5Zavp8x46FYFCv35GdB/jHnl3Qs91va6jZ350DRxyTTXBwMAmgB+FxAmhO0vRbWppt0+JpBFCejXJ171zV7R0oqW3G2Ss1CM0oxZZThZgfdgGf/ZSONwKSMWHxSaOlrfpqj/xwAi+uScBHu89hftgF7Ey6gpiLFciraECLut3luTkrV2c2TxoBzCzmZ90+PC8KnZ2dRo/bOwJYVVMjCqC6qd7iCKBGozEo66I/AvjPrafFbcFnaASQsA6PE8Da2lrk5eX12drb2y1KohToHkB5QLmywZm56nQcapo7kFPWiBMXK7E79RqWRObhq/2ZeHvLafxxeTxGzDZf7ka/jV8Yg6kbU/Dl/kysPHEZR86XIau0wW0mrMjx/epJ9wBqtDpxhY2imhajx+29B1DX3iIKYGVtrcV7AAHDci/69wD+385zPaN8aaV0DyBhFR4ngFIpLS3F5MmT4evrizFjxuDgwYNWn4MEUB5Qrmxwt1w5jkODuhN5lU2IuVSFHclX8UPYJXywm5+4MkpC2ZsnFsTg7S2nMetYDnYkX8Wp/BqU3VD3uTSYo3G3XKXgSQII9BSEPnLeuCC0vQKIzlZRAHOKKiQJoP5sX30BFGoKkgAStuC1Anj9+nVkZvK/wNXV1XjwwQfR2mp++R9TkADKA8qVDXLLVZjZnFXagPDsCgTEF8LvSDb+viUVTywwv4qKQsnPZJ66MQWzj13A3jMlyCxtcFhpjd7ILVfA8wRwfvglKJQqzAm5YPSY/QKoRsn8h5A/xxcxWVclCeBrG5JNCuB/gzMsCuCQmcepDAxhEq8VwN6MGTPG6pVISADlAeXKBk/Ltaldg8zSBhxOL8OyqDx8HJSO51eeMnv/4SA/FZ5ZEY/P955HYGIR0otvOGTNVTnm6mkCGNa9/u4r65OMHrNbAAFM25UGhVKFn04XSxLAd7edMSmA/zuQZVEAJyyOtbmfvSEB9CxIAAGkpaVh9OjRVh9HAigPKFc2eEuuGq0OlyubcSyjHIuO5+LdbWcM1mDVb0NnHser65PgH3oRxzLKUVqvtv75ZJirpwlgab1a/P/ZW+odIYAzj+aIeUkRQP1LvfoC6Hckx6IA/n7hSZv72RsSQM/C6wWwrq4Ovr6+SElJsfpYEkB5QLmywdtzrW5ux6n8GmyIK8S0XWlmpXDC4lh8fTALh9PLUN79xd0XcszV0wSQ4ziMm8///zxfcsPgMUcI4JoYfiax35FsSQKoP9KnL4DCsnKCAA70M37/Pb4gxuZ+9oYE0LPwagHs6OjAxIkTERQUZNPxJIDygHJlA+VqCMdxKK1XIzSrAvPCLuK1Dcniyg36beLSOPgdyUbUxUq0dhjfnC/HXD1NAAHgP90zbLcnGa5R74h7ABuXP4r8Ob74eHuiJAHUFz19AVygumQggMJScfptsB/dA0iYxmsFkOM4vP322/D397f5HCSA8oByZQPlapnWji6cyq/B4og8vLohGYN7CeGwmRF4d9sZ7Ei+iuI6fhKaHHP1RAFcd5IfpfsiOMNguyNnAb+xNlqSAC6NzDMpgMui8gwE0NfMTHeaBUyYwmsFMCkpCf369cPYsWPFlpOTY9U5SADlAeXKBsrVeprbNYjNq4J/6EVMXBpn9EU9ZVUCVp3Iw5Z98srVEwUwsaBGHLHVx5ECOPHHcEkCuCGu0KQAro7JNxDA3gWjSQCJvvBaAXQEJIDygHJlA+VqHxzHobC6BVsTivD3LalGl4tfWJ2ADXGF4sigO+OJAtjYphH/X9S3dorbHSmAo/wOY1fKNYsCuDv1mkkBDIgvNBBAc/ehkgASpiABtAMSQHlAubKBcnUsjWoNDqaV4l/bzmCQn+Har29uTsXh9DKHfZE7Gk8UQAD44/J4KJQqJOTXiNscKYAjlYexMjrfogAeTi8zKYBCXwQB/P3CkySAhGRIAO2ABFAeUK5soFzZoNFosPdQCPaevop3t53BIL2ZnaPnRsHvSDayShtc3U0DPFUAhULLG+IKxW2OFkDl4WyLAhh5odKkAOqPDB5IK8VTS2JJAAnJkADaAQmgPKBc2UC5sqF3rtcb27A+tsDonsHXA5IRllUBjVbn4h57rgBuPnUFCqUKn+7pkTNHC6Cwnm9fAphUUGtSAPedLTEQQGHEkgSQkAIJoB2QAMoDypUNlCsbzOWq03FIvVKHGfsyDMp9PLnoJALiC9Godt3/B08VwJRCXryeXtqzmoYjysBg1UOonT8MI5RH8Jd1iRYFMKPkhkkB1L80fCCtFH9adcqkAFIZGMIUJIB2QAIoDyhXNlCubJCSa3VzO1ZF5xvc9D96bhSWReUZTFhwFp4qgI3qnokgDWo+V0cUggaAbw/xxZ2F+/b6EsCCqmaTAigsWScI4ItrEk0KoKMgAfQsSADtgARQHlCubKBc2WBNrh1dWhxKL8MLqxPEL3vfOZFYdDwXNc0dTugtj6cKIADx0ntyYS0AxwmgUNtPWGu6LwG83thmUgCjLlYaCOCr65NIAAnJkADaAQmgPKBc2UC5ssGWXHU6DlEXK8XLiYIIrorON7naiKPxZAH8bM95KJQqbDp1BYDjBHB70lUDSetLAJvaNSYFMC6v2kAA39iYQgJISIYE0A5IAOUB5coGypUN9uTKcRxi86oMRoIeXxCDvWdK0MVwsognC6BQa++zvecBOEAANW3Alsm4sXoChiuPShJArY4zKYDJhbUGAvj3LakmBbBdQ/cAEsaQANoBCaA8oFzZQLmywRG5chwHVfZ1TFrWM3P4uZWnkNJ9GdPReLIACiuCTF7Grwji6FnAUgQQAEbOjjQSwLNX6w0E8N1tZ2gWMCEZEkA7IAGUB5QrGyhXNjgy184uHbYnXcXYH06IMjBjXwaqm9sd0NMePFkAb7R2itk1tWtcJoCP/RhjJICZpQ0GAvjvHWdJAAnJkADaAQmgPKBc2UC5soFFro1tGsw+dgEDu4tKP+QfhaDUa9DpOIec35MFEAAmLOYLLKdeqXOZAE7WG80VBPBSRZOBAH6wO40EkJAMCaAdkADKA8qVDZQrG1jmmlXagJfX9dwf+NbmVJTWq+0+r6cL4MdB6VAoVdiaUORQARz9/RHJAvjS2kQjASysbjYQwE/3pJMAEpIhAbQDEkB5QLmygXJlA+tctToOu1KuwXcOf0/ZqDmRCD5bAo6zfTTQ0wVwfWwBFEoVvgjOcKgATvwxXLIAvrU51UgAS+rUBgI4fV8GCSAhGRJAOyABlAeUKxsoVzY4K9fiulb8bVNP2ZD3d5xFXYtttQM9XQDjL/PlVp5ZEe9QAXx9dbRkAfxP95Jx+gJY2dhuIID/O5BFAkhIhgTQDkgA5QHlygbKlQ3OzFWr47A1oQjDZvFLy41fGIOzV+utPo+nC2B1Ey9ag/xUWHeywH4BXDoIWDoI0wJPSRbAL4IzjASwrqVD3Lb/XAmUh7NJAAnJkADaAQmgPKBc2UC5ssEVueZVNuHZFfFQKFUY/P1xBMQXWjVBxNMFkOM4jJvPj9b9t1vE7C0EDQBfHciULIB+R7KNBLBZr0B00OlizDqWY1IAHQUJoGdBAmgHJIDygHJlA+XKBlfl2trRhRl695BN23UOze3S+uDpAggA7wTyNfaeX3nKYQK46HiuZAGcH37JSADbNVpx2/akq5gXdpEEkJAMCaAdkADKA8qVDZQrG1yZK8dx2H+uBMO7LwlPWZUgaZawNwjgj3oC5igB3JpQJFkAV564bCSAOr0VQjaduoKFekJJAkhYggTQDkgA5QHlygbKlQ3ukGtmaQOeWMAXHn50frTF+wK9QQAPp5c5RgA1bcCOl4AdLyEkrVCyAG46dcVIAAGI29aeLMDSyDyTAkhLwRGmIAG0AxJAeUC5soFyZYO75FrZ2C7WDBw68ziOZZSb3dcbBPBiRaNjBFBvFnBybrFkAQxKvdanAK44cRkro/NpEgghGRJAOyABlAeUKxsoVza4U65tnVp8tve8KBLbkq6a3M8bBLCjS4sh3x93qADmlVRKFkD9EUhTArjoeK5Yr5AEkJACCaAdkADKA8qVDZQrG9wtV52OM5hcsCQyz6hotDcIIAC8sDrBoQJYU18vWQAjL1zvUwD9Qy8aXCYmASQsQQJoBySA8oByZQPlygZ3zJXjOGyI67lfTXk426BMjLcIoP4saUcIoLa9BYP8pAlgQn5NnwI482iOWKSaBJCQAgmgHZAAygPKlQ2UKxvcOdd9Z0tEYfn2UJYogd4igJv1RtgcIYDobMVjP0ZLEsD04vo+BfCbg1nYlXKNBJCQDAmgHZAAygPKlQ2UKxvcPdfQrAojCfQWATylNwrnKAEULitbEsDc6019CuCMfRnYe6aEBJCQDAmgHZAAygPKlQ2UKxvkkGtvCZx5NMcrBLC6uWftXUvCZpbOVmDBr/jW2SoWmLZ0vuK61j4F8NM96TiQVkoCSEjGKwVwxIgR8PHxMdnWrl0r+TwkgPKAcmUD5coGueSqL4Gj5kR6hQByXE/h5WdWxDukX8J9hZYEsKa5Z93fshs9xbmFbdN2ncPRjDKTAugoSAA9C68UwNzcXPj4+CA2NhaVlZUoLS3FLbfcgkOHDqGjo0PyeUgA5QHlygbKlQ1yyvVYRjkG+vWIhqcLIACHi5WwwoglAVR3donPW1jdYtSf97afRVhWBQkgIRmvFMC4uDjccsstouxlZmbCx8cHVVVVfR7X0dGBpqYmsZWVlcHHxwd1dXXQaDR2N7VajZCQEKjVaoecjxrlSrnKr8kt1x1JPRMjlkfmurw/rHMdrFcL0BH92hDLF2/+cPe5Pvfr6OgUnzezuOc7R9j2z62ncTyrXPx5wuKT4uisozKsq6sjAfQgPEYA/f39zV7WFVpaWhoAYO3atRg1apR47M6dO/HAAw/Y/BzBwcEICQmhRo0aNa9sXwSEYtSscCzbHeryvrBuq4JCMHJmOPy22vZaw44eROXKiahcORFhRw9i/Z4QjJoVjm82Wz7fq0vD8PT8cBw51rPtf5tC8fDscGzZF4LDR0Pw+3nhmLo8DBv3hmDM7HA8syAMh4465rUHBweTAHoQHiOAtbW1yMvL67O1t7cDAKZNm4a///3v4rEzZszAc889Z/E5aARQno1ypVzl1OSaa2dnp8v74Kxc7XqtrQ3iLGBNa4PV5zO1r/424d+NrW3iaGBja5tDMqQRQM/CYwTQGp544gksXLhQ/Hny5Mn46quvrD4P3QMoDyhXNlCubKBc2eA2ufYqA8MK/XsGaRYwYQqvE0CdToc777wT4eHh4rbf/va3WLNmjdXnIgGUB5QrGyhXNlCubHCbXEkACTfB6wSwoKAAPj4+KCkpEbe9/PLLuOeee5CQkGDVuUgA5QHlygbKlQ2UKxvcJlcSQMJN8DoBdCQkgPKAcmUD5coGypUNbpMrCSDhJpAA2gEJoDygXNlAubKBcmWD2+RKAki4CSSAdtDY2AgfHx+UlZUZzA62tdXV1SE4OBh1dXUOOR81ypVylV+jXD0819rraPK7m2+115k9T2VtPX775UH89suDqKytd8g5hcoXjY2Nrv76JRwACaAdCL8M1KhRo0aNmre0srIyV3/9Eg6ABNAOdDodysrKMGzYMJN/LQ0fPtziNv2fBaF01IhiX81U31gca2nfvh439xjlSrlSrp6Vq7X5Ua6uybWxsRFlZWXQ6XSu/volHAAJoAPw9fWVvL33Nv2fm5qcd3+FuT47+lhL+/b1OOVq+76Uq23HUq5sjpWyrzX5mdtOuUrfx55cCc+ABNABbNiwQfL23tv0f3bmB5S5Pjv6WEv79vU45Wr7vpSrbcdSrmyOlbKvNfmZ2065St/HnlwJz4AE0I1w5geUN0G5soFyZQPlygbKlSAMIQF0Izo6OuDv74+Ojg5Xd8WjoFzZQLmygXJlA+VKEIaQABIEQRAEQXgZJIAEQRAEQRBeBgkgQRAEQRCEl0ECSBAEQRAE4WWQABIEQRAEQXgZJIAEQRAEQRBeBgmgTGlubsbjjz+OsWPH4qGHHsLWrVtd3SWPoLS0FJMnT4avry/GjBmDgwcPurpLHsPrr7+Oe+65B1OnTnV1V2RNeHg4hg8fjqFDhyIwMNDV3fEY6P1JeBskgDJFq9VCrVYDANRqNQYNGoS6ujoX90r+XL9+HZmZmQCA6upqPPjgg2htbXVxrzyDuLg4hIWF0ResHXR1dWHYsGEoLy9Hc3Mzhg4divr6eld3yyOg9yfhbZAAegD19fX43e9+h9raWld3xeMYM2YMSktLXd0NjyE+Pp6+YO0gJSUFr7/+uvjz9OnTERwc7MIeeRb0/iS8CRJARiQkJODll1/Gr3/9a/j4+ODYsWNG+wQEBGDgwIG4/fbbMW7cOCQmJlr1HA0NDXj44Ydxxx13eM1ajc7IVSAtLQ2jR4+2t8uywFm5evsXrL05Hzp0CJ9//rn487Jly7B8+XKn9N2dcdT719vfn4R3QQLIiIiICMyaNQtHjhwx+YG0f/9+3HrrrQgMDERubi5mzJiBAQMGoKSkRNxn3LhxGD16tFGrqKgwOFdVVRUmTJiAqqoqp7w2V+KsXOvq6uDr64uUlBSnvTZX4qxcvf0L1t6cDx48aCSAK1ascOprcEcc8f4F6P1JeBckgE7A1AfS+PHj8cknnxhsGzlyJPz8/Gx6jk8++cTrJiywyrWjowMTJ05EUFCQQ/opN1i+X+kLtgdbcjZ1CXjv3r3sOysj7Hn/0vuT8CZIAJ1A7w+kzs5O3HzzzTh69KjBftOnT8ekSZMknbOqqgpNTU0AgKamJowaNQrZ2dmO67QMYJErx3F4++234e/v78iuygoWuQrQF2wPtuTc1dWFoUOHGkwCoclfhtjz/qX3J+FNkAA6gd4fSBUVFfDx8TG6vLhw4UIMHz5c0jnT09MxduxYPPzwwxgzZgw2btzo0D7LARa5JiUloV+/fhg7dqzYcnJyHNpvd4dFrgAwZcoU3H///bjjjjvw4IMP4ty5cw7rsxyxNefQ0FAMGzYMQ4YMwZYtW5zWX7lga670/iS8DRJAJ2DuAyk1NdVgvwULFmDEiBHO7p5soVzZQLk6B8qZDZQrQUiDBNAJsLyk5s1QrmygXJ0D5cwGypUgpEEC6ATM3ZT86aefGmzz9fW1eRKIN0K5soFydQ6UMxsoV4KQBgkgI1paWpCZmYnMzEz4+Phg1apVyMzMFMsOCGUJtm/fjtzcXHz55ZcYMGAAiouLXdxz94ZyZQPl6hwoZzZQrgRhPSSAjIiPj4ePj49Re//998V9AgICoFAocNttt2HcuHFISEhwXYdlAuXKBsrVOVDObKBcCcJ6SAAJgiAIgiC8DBJAgiAIgiAIL4MEkCAIgiAIwssgASQIgiAIgvAySAAJgiAIgiC8DBJAgiAIgiAIL4MEkCAIgiAIwssgASQIgiAIgvAySAAJgiAIgiC8DBJAgiAIEwQGBoorSnz99dcOPXdXV5d47l/84hcOPTdBEIQUSAAJwgt4//33TS6VVVhY6OquuS2BgYG47777UFlZiebmZnH7U089ZVIIAwMDrZK5yspKrFy5kgSQIAiXQAJIEF7A+++/jz//+c+orKw0aFqt1uT+nZ2dTu6h+2FO6BwlgLYeQxAE4QhIAAnCC3j//ffx2muvmX38qaeewvTp0zF9+nTcd999ePbZZwEADQ0NmDZtGu6//3787Gc/w3PPPYecnByDYxcsWIAHHngAd999Nz744AN88803eOyxxwzO3VuY/vKXv2DatGnizx0dHfj666/xm9/8BnfeeSd+//vfIyEhQXxcEKWIiAiMGDECAwYMwIsvvoiqqiqD827duhW+vr647bbb8Otf/xrTp08HALz33ntGr1+j0eD+++/H7t27TWZirwA++OCDRiOuN998s6TnIAiCbY/o/wAABPlJREFUYA0JIEF4AVIE8K677oKfnx/y8/Nx+fJl6HQ6PPnkk3jttdeQnp6O/Px8zJgxAw888AAaGhoAAHv37sXtt9+O7du34/Lly/Dz88Pdd99ttQC+9dZbePrpp5GUlIQrV65gyZIl6N+/P4qK/r+9ewmFrw3gOD6NcwbNUJMilyazMFE2cilJUpqVLKREIpFcIzu3lDSFLNx2ZIMFEQuEhSiKsCGaOb3INZISFmL83oWc93+MYdzev5rfp2YxznPmmZ7Vt3PmOf4B8BRKGo0GZrMZa2trWFtbg8lkQm5urvwZnZ2d8Pb2RmdnJ2w2G1ZWVtDR0QEAWFhYgCAIODs7k8ePjo7Cx8cHt7e3r67JVwPw/PxcvtJ6eHiIuLg4JCcnuzQHEdFPYwASuYG8vDx4eHhAq9XKr4yMDPl4QkICYmJiFOfMzMxAr9crbgc/Pj4iNDQUfX19AIDY2FiUl5crzouOjv5QAFqtVqjVaoereUlJSWhoaADw34aM/f19+XhHRweCg4Pl7xUQEIDGxkana2AymdDe3i6/T01NRWFhodPxbwWgKIqKtdRqtfD09HQac6WlpTAajbi4uHBpDiKin8YAJHIDeXl5SElJgSRJ8uvk5EQ+npCQgOLiYsU5FosFarXaIXTUajVqa2sBADqdDoODg4rzysvLPxSAQ0NDUKlUDvMIgoDs7GwAT6Hk6+ur+Izh4WGIoggAOD4+hkqlwuLiotM1aG1tRWRkJICnDRiCIGB5ednp+LcCsKCgQLGWkiTBYrG8Or6npwc6nQ6bm5suz0FE9NMYgERuwJVbwC8jrbm5GQaDwSF0JEmSr2S5EoCJiYmorq5WjDGbzXIADgwMQBRF2Gw2h3lOT08BvB5KIyMj8m/qLi8v3w3As7MziKKI1dVVtLS0IDw83OlYZ3M6Wytn4+fm5qDRaDA+Pv6hOYiIfhoDkMgNfCYAp6amIAgCDg4OnJ4XGxuLiooKxd9iYmIUAZieno6srCz5/f39PYKDg+UA3N7ehkql+vDVuD8DEABCQkLevAX8/F1KSkoQERGB1tbWN8d+NQCtViv0ej2am5s/PAcR0U9jABK5gc8EoN1uR3x8PKKiojA7O4u9vT0sLS2hpqYGGxsbAJ6u3nl5eaG/vx9WqxW1tbUOm0C6u7uh1WoxOTmJnZ0dFBQUwNfXV7EJJDMzE0ajEWNjY9jd3cXKygosFgump6cBuBaAvb298Pb2RldXF2w2G9bX19HV1aU4Z2pqChqNBoIgOPzm8KWvBODNzQ3CwsJgNpsVj915OScDkIj+FgYgkRv4TAACwNXVFcrKyhAYGAhRFGEwGJCTk4OjoyN5TFNTE/z8/KDT6ZCfn+/wGJi7uzsUFRVBr9fD398fbW1tDruA7+7uUF9fj9DQUIiiiKCgIKSnp2NrawuAawEIPP3ezmQyQRRFBAYGoqqqSnHcbrcjJCQEaWlp767ZVwJQkqRXH7zNx8AQ0W/BACSib1VXV6cIwN/k+voaPj4+mJiYeHfs/xFnDEAi+lsYgET0rX5jANrtdhwfH6OyshJGo9Hpf0D50/OjZ7Rarbzr+bs8PDy8++gYIqKfxAAkom/1GwPw+ZaswWDA/Py8S+dcXV057Hr+7u8kSRJ2d3e//bOJiN7DACQiIiJyMwxAIiIiIjfDACQiIiJyMwxAIiIiIjfDACQiIiJyM/8Ci0TP+duVDj8AAAAASUVORK5CYII=\" width=\"640\">",
"text/plain": "<IPython.core.display.HTML object>"
},
"metadata": {},
"output_type": "display_data"
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "## What is plotted?\n\nThe top panel shows the amplitude response across a range of frequencies, for the two instruments. The bottom panel shows the phase response of the same instruments. The dashed lines show the nyquist frequency.\n\nSome things to note:\n- There is a roll-off in amplitude response near the nyquist. This is the effect of the FIR (Finite Impluse Response) filters applied by the digitizer to stabalise the analogue to digital conversion.\n- The accelerometer has a flat amplitude response from the end of the FIR filter all the way to DC (0-frequency)\n- The seismometer is more sensitive to amplitudes than the accelerometers, this can mainly be thought of as a gain effect. However, the seismometer's amplitude response is not flat, some frequencies are amplified more than others.\n- The phase response of the accelerometer is mostly flat\n- The phase response of the seismometer is not flat - the sharp steps occur when wrapping from +/- pi. Remember that our signals are pi periodic, so these apparent steps are not really steps, but smooth continuations wrapped for plotting. This is an effect of the non-inertial reference-frame employed by the seismometer. The accelerometer does not suffer from this affect."
},
{
"metadata": {},
"cell_type": "markdown",
"source": "## Velocity response"
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "fig = inv.plot_response(min_freq=0.001, output=\"VEL\")",
"execution_count": 4,
"outputs": [
{
"data": {
"application/javascript": "/* Put everything inside the global mpl namespace */\nwindow.mpl = {};\n\n\nmpl.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\nmpl.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\nmpl.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\nmpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n\n}\n\n\nmpl.figure.prototype._root_extra_style = function(canvas_div) {\n\n}\n\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.figure.prototype.handle_figure_label = function(fig, msg) {\n // Updates the figure title.\n fig.header.textContent = msg['label'];\n}\n\nmpl.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\nmpl.figure.prototype.handle_message = function(fig, msg) {\n fig.message.textContent = msg['message'];\n}\n\nmpl.figure.prototype.handle_draw = function(fig, msg) {\n // Request the server to send over a new figure.\n fig.send_draw_message();\n}\n\nmpl.figure.prototype.handle_image_mode = function(fig, msg) {\n fig.image_mode = msg['mode'];\n}\n\nmpl.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.\nmpl.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\nmpl.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 */\nfunction 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\nmpl.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\nmpl.figure.prototype._key_event_extra = function(event, name) {\n // Handle any extra behaviour associated with a key event\n}\n\nmpl.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\nmpl.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\nmpl.figure.prototype.toolbar_button_onmouseover = function(tooltip) {\n this.message.textContent = tooltip;\n};\nmpl.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\nmpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n\nmpl.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\nmpl.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\nmpl.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\nmpl.figure.prototype.close_ws = function(fig, msg){\n fig.send_message('closing', msg);\n // fig.ws.close()\n}\n\nmpl.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\nmpl.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\nmpl.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\nmpl.figure.prototype._root_extra_style = function(el){\n var fig = this\n el.on(\"remove\", function(){\n\tfig.close_ws(fig, {});\n });\n}\n\nmpl.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\nmpl.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\nmpl.figure.prototype.handle_save = function(fig, msg) {\n fig.ondownload(fig, null);\n}\n\n\nmpl.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.\nif (IPython.notebook.kernel != null) {\n IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n}\n",
"text/plain": "<IPython.core.display.Javascript object>"
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": "<img src=\"data:image/png;base64,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\" width=\"640\">",
"text/plain": "<IPython.core.display.HTML object>"
},
"metadata": {},
"output_type": "display_data"
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "Here the seismometer's amplitude response is flat across a broad range of frequencies, wheras the accelerometer is progressively less sensitive to low-frequencies. To understand why this is, you should read \"Of poles and zeros\" by Frank Scherbaum."
},
{
"metadata": {},
"cell_type": "markdown",
"source": "## Displacement response"
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "fig = inv.plot_response(min_freq=0.001, output=\"DISP\")",
"execution_count": 5,
"outputs": [
{
"data": {
"application/javascript": "/* Put everything inside the global mpl namespace */\nwindow.mpl = {};\n\n\nmpl.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\nmpl.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\nmpl.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\nmpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n\n}\n\n\nmpl.figure.prototype._root_extra_style = function(canvas_div) {\n\n}\n\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.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\nmpl.figure.prototype.handle_figure_label = function(fig, msg) {\n // Updates the figure title.\n fig.header.textContent = msg['label'];\n}\n\nmpl.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\nmpl.figure.prototype.handle_message = function(fig, msg) {\n fig.message.textContent = msg['message'];\n}\n\nmpl.figure.prototype.handle_draw = function(fig, msg) {\n // Request the server to send over a new figure.\n fig.send_draw_message();\n}\n\nmpl.figure.prototype.handle_image_mode = function(fig, msg) {\n fig.image_mode = msg['mode'];\n}\n\nmpl.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.\nmpl.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\nmpl.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 */\nfunction 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\nmpl.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\nmpl.figure.prototype._key_event_extra = function(event, name) {\n // Handle any extra behaviour associated with a key event\n}\n\nmpl.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\nmpl.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\nmpl.figure.prototype.toolbar_button_onmouseover = function(tooltip) {\n this.message.textContent = tooltip;\n};\nmpl.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\nmpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n\nmpl.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\nmpl.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\nmpl.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\nmpl.figure.prototype.close_ws = function(fig, msg){\n fig.send_message('closing', msg);\n // fig.ws.close()\n}\n\nmpl.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\nmpl.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\nmpl.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\nmpl.figure.prototype._root_extra_style = function(el){\n var fig = this\n el.on(\"remove\", function(){\n\tfig.close_ws(fig, {});\n });\n}\n\nmpl.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\nmpl.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\nmpl.figure.prototype.handle_save = function(fig, msg) {\n fig.ondownload(fig, null);\n}\n\n\nmpl.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.\nif (IPython.notebook.kernel != null) {\n IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n}\n",
"text/plain": "<IPython.core.display.Javascript object>"
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": "<img src=\"data:image/png;base64,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\" width=\"640\">",
"text/plain": "<IPython.core.display.HTML object>"
},
"metadata": {},
"output_type": "display_data"
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "Both instruments have decreasing sensitivity to low-frequency displacements, however the accelerometer is considerably (~10^3 times) less sensitive to low frequencies than the seismometer.\n\nWhen we correct for instrument responses we should ideally get back the same waveform on different instruments. There are two main reasons that we do not:\n1. If the amplitude falls below the resolution of the numbers used internally by the digitzer then this will never be recorded: correcting 0 by some amplification factor also equals 0. \n - For example, if a displacement of 0.0005m occurs at 0.01Hz the accelerometer amplified this by $~10^3$ to 0.5, less than the level of precision of integer numbers, and so would be recorded as 0. In contract the seismometer amplfies this by $~10^7$ to 5000.\n2. When we correct for instrument response we usually apply either a filter or a water-level to stabalise the correction, to avoid over-correcting instrument noise.\n - water-level stops correction for any amplitudes below this level (in the frequency domain);\n - filtering suppresses frequencies to levels that will not be amplified."
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "",
"execution_count": null,
"outputs": []
}
],
"metadata": {
"kernelspec": {
"name": "python3",
"display_name": "Python 3",
"language": "python"
},
"language_info": {
"name": "python",
"version": "3.7.3",
"mimetype": "text/x-python",
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"pygments_lexer": "ipython3",
"nbconvert_exporter": "python",
"file_extension": ".py"
},
"gist": {
"id": "",
"data": {
"description": "Response_plotting.ipynb",
"public": true
}
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment