1163 lines
154 KiB
Plaintext
1163 lines
154 KiB
Plaintext
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"# Rent or Buy?\n",
|
|
"\n",
|
|
"If you have a small pile of money that you are thinking of dropping on the downpayment of a house, should you? This document runs a small stochastic simulation that will help you decide whether it makes sense to buy a house or to rent. \n",
|
|
"\n",
|
|
"Conventional wisdom says that you will save money in the long term if you buy a house (the thinking being that you don't \"waste\" money on rent, and that you \"build equity\" in the value of the house). However, as this notebook will demonstrate, things are a little more complicated.\n",
|
|
"\n",
|
|
"The two cases this notebook contrasts are:\n",
|
|
"\n",
|
|
"* Putting a large lump sum down on the downpaymnet of a house, and then paying monthly payments to pay off the remainder of your debt. Once the house is paid off, those monthly payments will instead be invested in an index fund.\n",
|
|
"* Putting all the money that you would have put in a downpayment in an index fund, and then spending what you would have spent on monthly mortage payments on rent. \n",
|
|
"\n",
|
|
"Perhaps surprisngly, you will find that for many parameters, there is very little difference between the two scenarious, for the following simple reason:\n",
|
|
"\n",
|
|
"**Yes, the value of your house is going to go up. But the stock market is going to go up a lot faster**. \n",
|
|
"\n",
|
|
"This notebook allows you to play with the following parameters interactively:\n",
|
|
"\n",
|
|
"* **Starting Sum** This is the amount you have saved up. In the \"buying\" scenario, you put this all in your downpayment. In the \"renting\" scenario, you put this all in the stock market in an index fund. \n",
|
|
"* **Cost of the house** \n",
|
|
"* **Tax rate on the house**\n",
|
|
"* **Interest rate** On your mortage\n",
|
|
"* **Duration** Of your mortgage \n",
|
|
"* **Fraction of monthly payment you are willing to pay as rent** Assuming you are renting\n",
|
|
"* **Rent hike** Anticipated annual rent increase (percentage)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 6,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"application/vnd.jupyter.widget-view+json": {
|
|
"model_id": "6b9df1b3c69943fc8cea402cbe006b8e",
|
|
"version_major": 2,
|
|
"version_minor": 0
|
|
},
|
|
"text/plain": [
|
|
"HTML(value='<h3>Initial savings</h3>')"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
},
|
|
{
|
|
"data": {
|
|
"application/vnd.jupyter.widget-view+json": {
|
|
"model_id": "153507304345499da8be3f63f000f5d3",
|
|
"version_major": 2,
|
|
"version_minor": 0
|
|
},
|
|
"text/plain": [
|
|
"HTML(value=\"<p>This amount is the what you have saved up, that you're willing to put down as downpayment for a…"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
},
|
|
{
|
|
"data": {
|
|
"application/vnd.jupyter.widget-view+json": {
|
|
"model_id": "dd5977213799420d94deb10f9438051c",
|
|
"version_major": 2,
|
|
"version_minor": 0
|
|
},
|
|
"text/plain": [
|
|
"FloatText(value=100000.0, description='Starting $', layout=Layout(height='80px', width='20%'), step=10000.0)"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
},
|
|
{
|
|
"data": {
|
|
"application/vnd.jupyter.widget-view+json": {
|
|
"model_id": "2681ce938c5141f685584839f71fda17",
|
|
"version_major": 2,
|
|
"version_minor": 0
|
|
},
|
|
"text/plain": [
|
|
"HTML(value='<h3>Buying</h3>')"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
},
|
|
{
|
|
"data": {
|
|
"application/vnd.jupyter.widget-view+json": {
|
|
"model_id": "f18323dc3a77450da5a62d938f333dfa",
|
|
"version_major": 2,
|
|
"version_minor": 0
|
|
},
|
|
"text/plain": [
|
|
"VBox(children=(HBox(children=(IntText(value=600000, description='Cost ($)', step=10000), FloatSlider(value=1.0…"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
},
|
|
{
|
|
"data": {
|
|
"application/vnd.jupyter.widget-view+json": {
|
|
"model_id": "25f6e0346d9a44f19d2a4fce4c8ccf68",
|
|
"version_major": 2,
|
|
"version_minor": 0
|
|
},
|
|
"text/plain": [
|
|
"HTML(value='<h3>Renting and investing</h3>')"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
},
|
|
{
|
|
"data": {
|
|
"application/vnd.jupyter.widget-view+json": {
|
|
"model_id": "6caca31c5fac48e3bde49508c0123d0e",
|
|
"version_major": 2,
|
|
"version_minor": 0
|
|
},
|
|
"text/plain": [
|
|
"HBox(children=(IntSlider(value=50, description='Rent frac (%)', step=5), IntSlider(value=1, description='Rent …"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
},
|
|
{
|
|
"data": {
|
|
"application/javascript": [
|
|
"/* Put everything inside the global mpl namespace */\n",
|
|
"window.mpl = {};\n",
|
|
"\n",
|
|
"\n",
|
|
"mpl.get_websocket_type = function() {\n",
|
|
" if (typeof(WebSocket) !== 'undefined') {\n",
|
|
" return WebSocket;\n",
|
|
" } else if (typeof(MozWebSocket) !== 'undefined') {\n",
|
|
" return MozWebSocket;\n",
|
|
" } else {\n",
|
|
" alert('Your browser does not have WebSocket support.' +\n",
|
|
" 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n",
|
|
" 'Firefox 4 and 5 are also supported but you ' +\n",
|
|
" 'have to enable WebSockets in about:config.');\n",
|
|
" };\n",
|
|
"}\n",
|
|
"\n",
|
|
"mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n",
|
|
" this.id = figure_id;\n",
|
|
"\n",
|
|
" this.ws = websocket;\n",
|
|
"\n",
|
|
" this.supports_binary = (this.ws.binaryType != undefined);\n",
|
|
"\n",
|
|
" if (!this.supports_binary) {\n",
|
|
" var warnings = document.getElementById(\"mpl-warnings\");\n",
|
|
" if (warnings) {\n",
|
|
" warnings.style.display = 'block';\n",
|
|
" warnings.textContent = (\n",
|
|
" \"This browser does not support binary websocket messages. \" +\n",
|
|
" \"Performance may be slow.\");\n",
|
|
" }\n",
|
|
" }\n",
|
|
"\n",
|
|
" this.imageObj = new Image();\n",
|
|
"\n",
|
|
" this.context = undefined;\n",
|
|
" this.message = undefined;\n",
|
|
" this.canvas = undefined;\n",
|
|
" this.rubberband_canvas = undefined;\n",
|
|
" this.rubberband_context = undefined;\n",
|
|
" this.format_dropdown = undefined;\n",
|
|
"\n",
|
|
" this.image_mode = 'full';\n",
|
|
"\n",
|
|
" this.root = $('<div/>');\n",
|
|
" this._root_extra_style(this.root)\n",
|
|
" this.root.attr('style', 'display: inline-block');\n",
|
|
"\n",
|
|
" $(parent_element).append(this.root);\n",
|
|
"\n",
|
|
" this._init_header(this);\n",
|
|
" this._init_canvas(this);\n",
|
|
" this._init_toolbar(this);\n",
|
|
"\n",
|
|
" var fig = this;\n",
|
|
"\n",
|
|
" this.waiting = false;\n",
|
|
"\n",
|
|
" this.ws.onopen = function () {\n",
|
|
" fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n",
|
|
" fig.send_message(\"send_image_mode\", {});\n",
|
|
" if (mpl.ratio != 1) {\n",
|
|
" fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n",
|
|
" }\n",
|
|
" fig.send_message(\"refresh\", {});\n",
|
|
" }\n",
|
|
"\n",
|
|
" this.imageObj.onload = function() {\n",
|
|
" if (fig.image_mode == 'full') {\n",
|
|
" // Full images could contain transparency (where diff images\n",
|
|
" // almost always do), so we need to clear the canvas so that\n",
|
|
" // there is no ghosting.\n",
|
|
" fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n",
|
|
" }\n",
|
|
" fig.context.drawImage(fig.imageObj, 0, 0);\n",
|
|
" };\n",
|
|
"\n",
|
|
" this.imageObj.onunload = function() {\n",
|
|
" fig.ws.close();\n",
|
|
" }\n",
|
|
"\n",
|
|
" this.ws.onmessage = this._make_on_message_function(this);\n",
|
|
"\n",
|
|
" this.ondownload = ondownload;\n",
|
|
"}\n",
|
|
"\n",
|
|
"mpl.figure.prototype._init_header = function() {\n",
|
|
" var titlebar = $(\n",
|
|
" '<div class=\"ui-dialog-titlebar ui-widget-header ui-corner-all ' +\n",
|
|
" 'ui-helper-clearfix\"/>');\n",
|
|
" var titletext = $(\n",
|
|
" '<div class=\"ui-dialog-title\" style=\"width: 100%; ' +\n",
|
|
" 'text-align: center; padding: 3px;\"/>');\n",
|
|
" titlebar.append(titletext)\n",
|
|
" this.root.append(titlebar);\n",
|
|
" this.header = titletext[0];\n",
|
|
"}\n",
|
|
"\n",
|
|
"\n",
|
|
"\n",
|
|
"mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n",
|
|
"\n",
|
|
"}\n",
|
|
"\n",
|
|
"\n",
|
|
"mpl.figure.prototype._root_extra_style = function(canvas_div) {\n",
|
|
"\n",
|
|
"}\n",
|
|
"\n",
|
|
"mpl.figure.prototype._init_canvas = function() {\n",
|
|
" var fig = this;\n",
|
|
"\n",
|
|
" var canvas_div = $('<div/>');\n",
|
|
"\n",
|
|
" canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n",
|
|
"\n",
|
|
" function canvas_keyboard_event(event) {\n",
|
|
" return fig.key_event(event, event['data']);\n",
|
|
" }\n",
|
|
"\n",
|
|
" canvas_div.keydown('key_press', canvas_keyboard_event);\n",
|
|
" canvas_div.keyup('key_release', canvas_keyboard_event);\n",
|
|
" this.canvas_div = canvas_div\n",
|
|
" this._canvas_extra_style(canvas_div)\n",
|
|
" this.root.append(canvas_div);\n",
|
|
"\n",
|
|
" var canvas = $('<canvas/>');\n",
|
|
" canvas.addClass('mpl-canvas');\n",
|
|
" canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n",
|
|
"\n",
|
|
" this.canvas = canvas[0];\n",
|
|
" this.context = canvas[0].getContext(\"2d\");\n",
|
|
"\n",
|
|
" var backingStore = this.context.backingStorePixelRatio ||\n",
|
|
"\tthis.context.webkitBackingStorePixelRatio ||\n",
|
|
"\tthis.context.mozBackingStorePixelRatio ||\n",
|
|
"\tthis.context.msBackingStorePixelRatio ||\n",
|
|
"\tthis.context.oBackingStorePixelRatio ||\n",
|
|
"\tthis.context.backingStorePixelRatio || 1;\n",
|
|
"\n",
|
|
" mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n",
|
|
"\n",
|
|
" var rubberband = $('<canvas/>');\n",
|
|
" rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n",
|
|
"\n",
|
|
" var pass_mouse_events = true;\n",
|
|
"\n",
|
|
" canvas_div.resizable({\n",
|
|
" start: function(event, ui) {\n",
|
|
" pass_mouse_events = false;\n",
|
|
" },\n",
|
|
" resize: function(event, ui) {\n",
|
|
" fig.request_resize(ui.size.width, ui.size.height);\n",
|
|
" },\n",
|
|
" stop: function(event, ui) {\n",
|
|
" pass_mouse_events = true;\n",
|
|
" fig.request_resize(ui.size.width, ui.size.height);\n",
|
|
" },\n",
|
|
" });\n",
|
|
"\n",
|
|
" function mouse_event_fn(event) {\n",
|
|
" if (pass_mouse_events)\n",
|
|
" return fig.mouse_event(event, event['data']);\n",
|
|
" }\n",
|
|
"\n",
|
|
" rubberband.mousedown('button_press', mouse_event_fn);\n",
|
|
" rubberband.mouseup('button_release', mouse_event_fn);\n",
|
|
" // Throttle sequential mouse events to 1 every 20ms.\n",
|
|
" rubberband.mousemove('motion_notify', mouse_event_fn);\n",
|
|
"\n",
|
|
" rubberband.mouseenter('figure_enter', mouse_event_fn);\n",
|
|
" rubberband.mouseleave('figure_leave', mouse_event_fn);\n",
|
|
"\n",
|
|
" canvas_div.on(\"wheel\", function (event) {\n",
|
|
" event = event.originalEvent;\n",
|
|
" event['data'] = 'scroll'\n",
|
|
" if (event.deltaY < 0) {\n",
|
|
" event.step = 1;\n",
|
|
" } else {\n",
|
|
" event.step = -1;\n",
|
|
" }\n",
|
|
" mouse_event_fn(event);\n",
|
|
" });\n",
|
|
"\n",
|
|
" canvas_div.append(canvas);\n",
|
|
" canvas_div.append(rubberband);\n",
|
|
"\n",
|
|
" this.rubberband = rubberband;\n",
|
|
" this.rubberband_canvas = rubberband[0];\n",
|
|
" this.rubberband_context = rubberband[0].getContext(\"2d\");\n",
|
|
" this.rubberband_context.strokeStyle = \"#000000\";\n",
|
|
"\n",
|
|
" this._resize_canvas = function(width, height) {\n",
|
|
" // Keep the size of the canvas, canvas container, and rubber band\n",
|
|
" // canvas in synch.\n",
|
|
" canvas_div.css('width', width)\n",
|
|
" canvas_div.css('height', height)\n",
|
|
"\n",
|
|
" canvas.attr('width', width * mpl.ratio);\n",
|
|
" canvas.attr('height', height * mpl.ratio);\n",
|
|
" canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n",
|
|
"\n",
|
|
" rubberband.attr('width', width);\n",
|
|
" rubberband.attr('height', height);\n",
|
|
" }\n",
|
|
"\n",
|
|
" // Set the figure to an initial 600x600px, this will subsequently be updated\n",
|
|
" // upon first draw.\n",
|
|
" this._resize_canvas(600, 600);\n",
|
|
"\n",
|
|
" // Disable right mouse context menu.\n",
|
|
" $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n",
|
|
" return false;\n",
|
|
" });\n",
|
|
"\n",
|
|
" function set_focus () {\n",
|
|
" canvas.focus();\n",
|
|
" canvas_div.focus();\n",
|
|
" }\n",
|
|
"\n",
|
|
" window.setTimeout(set_focus, 100);\n",
|
|
"}\n",
|
|
"\n",
|
|
"mpl.figure.prototype._init_toolbar = function() {\n",
|
|
" var fig = this;\n",
|
|
"\n",
|
|
" var nav_element = $('<div/>')\n",
|
|
" nav_element.attr('style', 'width: 100%');\n",
|
|
" this.root.append(nav_element);\n",
|
|
"\n",
|
|
" // Define a callback function for later on.\n",
|
|
" function toolbar_event(event) {\n",
|
|
" return fig.toolbar_button_onclick(event['data']);\n",
|
|
" }\n",
|
|
" function toolbar_mouse_event(event) {\n",
|
|
" return fig.toolbar_button_onmouseover(event['data']);\n",
|
|
" }\n",
|
|
"\n",
|
|
" for(var toolbar_ind in mpl.toolbar_items) {\n",
|
|
" var name = mpl.toolbar_items[toolbar_ind][0];\n",
|
|
" var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
|
|
" var image = mpl.toolbar_items[toolbar_ind][2];\n",
|
|
" var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
|
|
"\n",
|
|
" if (!name) {\n",
|
|
" // put a spacer in here.\n",
|
|
" continue;\n",
|
|
" }\n",
|
|
" var button = $('<button/>');\n",
|
|
" button.addClass('ui-button ui-widget ui-state-default ui-corner-all ' +\n",
|
|
" 'ui-button-icon-only');\n",
|
|
" button.attr('role', 'button');\n",
|
|
" button.attr('aria-disabled', 'false');\n",
|
|
" button.click(method_name, toolbar_event);\n",
|
|
" button.mouseover(tooltip, toolbar_mouse_event);\n",
|
|
"\n",
|
|
" var icon_img = $('<span/>');\n",
|
|
" icon_img.addClass('ui-button-icon-primary ui-icon');\n",
|
|
" icon_img.addClass(image);\n",
|
|
" icon_img.addClass('ui-corner-all');\n",
|
|
"\n",
|
|
" var tooltip_span = $('<span/>');\n",
|
|
" tooltip_span.addClass('ui-button-text');\n",
|
|
" tooltip_span.html(tooltip);\n",
|
|
"\n",
|
|
" button.append(icon_img);\n",
|
|
" button.append(tooltip_span);\n",
|
|
"\n",
|
|
" nav_element.append(button);\n",
|
|
" }\n",
|
|
"\n",
|
|
" var fmt_picker_span = $('<span/>');\n",
|
|
"\n",
|
|
" var fmt_picker = $('<select/>');\n",
|
|
" fmt_picker.addClass('mpl-toolbar-option ui-widget ui-widget-content');\n",
|
|
" fmt_picker_span.append(fmt_picker);\n",
|
|
" nav_element.append(fmt_picker_span);\n",
|
|
" this.format_dropdown = fmt_picker[0];\n",
|
|
"\n",
|
|
" for (var ind in mpl.extensions) {\n",
|
|
" var fmt = mpl.extensions[ind];\n",
|
|
" var option = $(\n",
|
|
" '<option/>', {selected: fmt === mpl.default_extension}).html(fmt);\n",
|
|
" fmt_picker.append(option)\n",
|
|
" }\n",
|
|
"\n",
|
|
" // Add hover states to the ui-buttons\n",
|
|
" $( \".ui-button\" ).hover(\n",
|
|
" function() { $(this).addClass(\"ui-state-hover\");},\n",
|
|
" function() { $(this).removeClass(\"ui-state-hover\");}\n",
|
|
" );\n",
|
|
"\n",
|
|
" var status_bar = $('<span class=\"mpl-message\"/>');\n",
|
|
" nav_element.append(status_bar);\n",
|
|
" this.message = status_bar[0];\n",
|
|
"}\n",
|
|
"\n",
|
|
"mpl.figure.prototype.request_resize = function(x_pixels, y_pixels) {\n",
|
|
" // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n",
|
|
" // which will in turn request a refresh of the image.\n",
|
|
" this.send_message('resize', {'width': x_pixels, 'height': y_pixels});\n",
|
|
"}\n",
|
|
"\n",
|
|
"mpl.figure.prototype.send_message = function(type, properties) {\n",
|
|
" properties['type'] = type;\n",
|
|
" properties['figure_id'] = this.id;\n",
|
|
" this.ws.send(JSON.stringify(properties));\n",
|
|
"}\n",
|
|
"\n",
|
|
"mpl.figure.prototype.send_draw_message = function() {\n",
|
|
" if (!this.waiting) {\n",
|
|
" this.waiting = true;\n",
|
|
" this.ws.send(JSON.stringify({type: \"draw\", figure_id: this.id}));\n",
|
|
" }\n",
|
|
"}\n",
|
|
"\n",
|
|
"\n",
|
|
"mpl.figure.prototype.handle_save = function(fig, msg) {\n",
|
|
" var format_dropdown = fig.format_dropdown;\n",
|
|
" var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n",
|
|
" fig.ondownload(fig, format);\n",
|
|
"}\n",
|
|
"\n",
|
|
"\n",
|
|
"mpl.figure.prototype.handle_resize = function(fig, msg) {\n",
|
|
" var size = msg['size'];\n",
|
|
" if (size[0] != fig.canvas.width || size[1] != fig.canvas.height) {\n",
|
|
" fig._resize_canvas(size[0], size[1]);\n",
|
|
" fig.send_message(\"refresh\", {});\n",
|
|
" };\n",
|
|
"}\n",
|
|
"\n",
|
|
"mpl.figure.prototype.handle_rubberband = function(fig, msg) {\n",
|
|
" var x0 = msg['x0'] / mpl.ratio;\n",
|
|
" var y0 = (fig.canvas.height - msg['y0']) / mpl.ratio;\n",
|
|
" var x1 = msg['x1'] / mpl.ratio;\n",
|
|
" var y1 = (fig.canvas.height - msg['y1']) / mpl.ratio;\n",
|
|
" x0 = Math.floor(x0) + 0.5;\n",
|
|
" y0 = Math.floor(y0) + 0.5;\n",
|
|
" x1 = Math.floor(x1) + 0.5;\n",
|
|
" y1 = Math.floor(y1) + 0.5;\n",
|
|
" var min_x = Math.min(x0, x1);\n",
|
|
" var min_y = Math.min(y0, y1);\n",
|
|
" var width = Math.abs(x1 - x0);\n",
|
|
" var height = Math.abs(y1 - y0);\n",
|
|
"\n",
|
|
" fig.rubberband_context.clearRect(\n",
|
|
" 0, 0, fig.canvas.width, fig.canvas.height);\n",
|
|
"\n",
|
|
" fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n",
|
|
"}\n",
|
|
"\n",
|
|
"mpl.figure.prototype.handle_figure_label = function(fig, msg) {\n",
|
|
" // Updates the figure title.\n",
|
|
" fig.header.textContent = msg['label'];\n",
|
|
"}\n",
|
|
"\n",
|
|
"mpl.figure.prototype.handle_cursor = function(fig, msg) {\n",
|
|
" var cursor = msg['cursor'];\n",
|
|
" switch(cursor)\n",
|
|
" {\n",
|
|
" case 0:\n",
|
|
" cursor = 'pointer';\n",
|
|
" break;\n",
|
|
" case 1:\n",
|
|
" cursor = 'default';\n",
|
|
" break;\n",
|
|
" case 2:\n",
|
|
" cursor = 'crosshair';\n",
|
|
" break;\n",
|
|
" case 3:\n",
|
|
" cursor = 'move';\n",
|
|
" break;\n",
|
|
" }\n",
|
|
" fig.rubberband_canvas.style.cursor = cursor;\n",
|
|
"}\n",
|
|
"\n",
|
|
"mpl.figure.prototype.handle_message = function(fig, msg) {\n",
|
|
" fig.message.textContent = msg['message'];\n",
|
|
"}\n",
|
|
"\n",
|
|
"mpl.figure.prototype.handle_draw = function(fig, msg) {\n",
|
|
" // Request the server to send over a new figure.\n",
|
|
" fig.send_draw_message();\n",
|
|
"}\n",
|
|
"\n",
|
|
"mpl.figure.prototype.handle_image_mode = function(fig, msg) {\n",
|
|
" fig.image_mode = msg['mode'];\n",
|
|
"}\n",
|
|
"\n",
|
|
"mpl.figure.prototype.updated_canvas_event = function() {\n",
|
|
" // Called whenever the canvas gets updated.\n",
|
|
" this.send_message(\"ack\", {});\n",
|
|
"}\n",
|
|
"\n",
|
|
"// A function to construct a web socket function for onmessage handling.\n",
|
|
"// Called in the figure constructor.\n",
|
|
"mpl.figure.prototype._make_on_message_function = function(fig) {\n",
|
|
" return function socket_on_message(evt) {\n",
|
|
" if (evt.data instanceof Blob) {\n",
|
|
" /* FIXME: We get \"Resource interpreted as Image but\n",
|
|
" * transferred with MIME type text/plain:\" errors on\n",
|
|
" * Chrome. But how to set the MIME type? It doesn't seem\n",
|
|
" * to be part of the websocket stream */\n",
|
|
" evt.data.type = \"image/png\";\n",
|
|
"\n",
|
|
" /* Free the memory for the previous frames */\n",
|
|
" if (fig.imageObj.src) {\n",
|
|
" (window.URL || window.webkitURL).revokeObjectURL(\n",
|
|
" fig.imageObj.src);\n",
|
|
" }\n",
|
|
"\n",
|
|
" fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n",
|
|
" evt.data);\n",
|
|
" fig.updated_canvas_event();\n",
|
|
" fig.waiting = false;\n",
|
|
" return;\n",
|
|
" }\n",
|
|
" else if (typeof evt.data === 'string' && evt.data.slice(0, 21) == \"data:image/png;base64\") {\n",
|
|
" fig.imageObj.src = evt.data;\n",
|
|
" fig.updated_canvas_event();\n",
|
|
" fig.waiting = false;\n",
|
|
" return;\n",
|
|
" }\n",
|
|
"\n",
|
|
" var msg = JSON.parse(evt.data);\n",
|
|
" var msg_type = msg['type'];\n",
|
|
"\n",
|
|
" // Call the \"handle_{type}\" callback, which takes\n",
|
|
" // the figure and JSON message as its only arguments.\n",
|
|
" try {\n",
|
|
" var callback = fig[\"handle_\" + msg_type];\n",
|
|
" } catch (e) {\n",
|
|
" console.log(\"No handler for the '\" + msg_type + \"' message type: \", msg);\n",
|
|
" return;\n",
|
|
" }\n",
|
|
"\n",
|
|
" if (callback) {\n",
|
|
" try {\n",
|
|
" // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n",
|
|
" callback(fig, msg);\n",
|
|
" } catch (e) {\n",
|
|
" console.log(\"Exception inside the 'handler_\" + msg_type + \"' callback:\", e, e.stack, msg);\n",
|
|
" }\n",
|
|
" }\n",
|
|
" };\n",
|
|
"}\n",
|
|
"\n",
|
|
"// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n",
|
|
"mpl.findpos = function(e) {\n",
|
|
" //this section is from http://www.quirksmode.org/js/events_properties.html\n",
|
|
" var targ;\n",
|
|
" if (!e)\n",
|
|
" e = window.event;\n",
|
|
" if (e.target)\n",
|
|
" targ = e.target;\n",
|
|
" else if (e.srcElement)\n",
|
|
" targ = e.srcElement;\n",
|
|
" if (targ.nodeType == 3) // defeat Safari bug\n",
|
|
" targ = targ.parentNode;\n",
|
|
"\n",
|
|
" // jQuery normalizes the pageX and pageY\n",
|
|
" // pageX,Y are the mouse positions relative to the document\n",
|
|
" // offset() returns the position of the element relative to the document\n",
|
|
" var x = e.pageX - $(targ).offset().left;\n",
|
|
" var y = e.pageY - $(targ).offset().top;\n",
|
|
"\n",
|
|
" return {\"x\": x, \"y\": y};\n",
|
|
"};\n",
|
|
"\n",
|
|
"/*\n",
|
|
" * return a copy of an object with only non-object keys\n",
|
|
" * we need this to avoid circular references\n",
|
|
" * http://stackoverflow.com/a/24161582/3208463\n",
|
|
" */\n",
|
|
"function simpleKeys (original) {\n",
|
|
" return Object.keys(original).reduce(function (obj, key) {\n",
|
|
" if (typeof original[key] !== 'object')\n",
|
|
" obj[key] = original[key]\n",
|
|
" return obj;\n",
|
|
" }, {});\n",
|
|
"}\n",
|
|
"\n",
|
|
"mpl.figure.prototype.mouse_event = function(event, name) {\n",
|
|
" var canvas_pos = mpl.findpos(event)\n",
|
|
"\n",
|
|
" if (name === 'button_press')\n",
|
|
" {\n",
|
|
" this.canvas.focus();\n",
|
|
" this.canvas_div.focus();\n",
|
|
" }\n",
|
|
"\n",
|
|
" var x = canvas_pos.x * mpl.ratio;\n",
|
|
" var y = canvas_pos.y * mpl.ratio;\n",
|
|
"\n",
|
|
" this.send_message(name, {x: x, y: y, button: event.button,\n",
|
|
" step: event.step,\n",
|
|
" guiEvent: simpleKeys(event)});\n",
|
|
"\n",
|
|
" /* This prevents the web browser from automatically changing to\n",
|
|
" * the text insertion cursor when the button is pressed. We want\n",
|
|
" * to control all of the cursor setting manually through the\n",
|
|
" * 'cursor' event from matplotlib */\n",
|
|
" event.preventDefault();\n",
|
|
" return false;\n",
|
|
"}\n",
|
|
"\n",
|
|
"mpl.figure.prototype._key_event_extra = function(event, name) {\n",
|
|
" // Handle any extra behaviour associated with a key event\n",
|
|
"}\n",
|
|
"\n",
|
|
"mpl.figure.prototype.key_event = function(event, name) {\n",
|
|
"\n",
|
|
" // Prevent repeat events\n",
|
|
" if (name == 'key_press')\n",
|
|
" {\n",
|
|
" if (event.which === this._key)\n",
|
|
" return;\n",
|
|
" else\n",
|
|
" this._key = event.which;\n",
|
|
" }\n",
|
|
" if (name == 'key_release')\n",
|
|
" this._key = null;\n",
|
|
"\n",
|
|
" var value = '';\n",
|
|
" if (event.ctrlKey && event.which != 17)\n",
|
|
" value += \"ctrl+\";\n",
|
|
" if (event.altKey && event.which != 18)\n",
|
|
" value += \"alt+\";\n",
|
|
" if (event.shiftKey && event.which != 16)\n",
|
|
" value += \"shift+\";\n",
|
|
"\n",
|
|
" value += 'k';\n",
|
|
" value += event.which.toString();\n",
|
|
"\n",
|
|
" this._key_event_extra(event, name);\n",
|
|
"\n",
|
|
" this.send_message(name, {key: value,\n",
|
|
" guiEvent: simpleKeys(event)});\n",
|
|
" return false;\n",
|
|
"}\n",
|
|
"\n",
|
|
"mpl.figure.prototype.toolbar_button_onclick = function(name) {\n",
|
|
" if (name == 'download') {\n",
|
|
" this.handle_save(this, null);\n",
|
|
" } else {\n",
|
|
" this.send_message(\"toolbar_button\", {name: name});\n",
|
|
" }\n",
|
|
"};\n",
|
|
"\n",
|
|
"mpl.figure.prototype.toolbar_button_onmouseover = function(tooltip) {\n",
|
|
" this.message.textContent = tooltip;\n",
|
|
"};\n",
|
|
"mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Pan axes with left mouse, zoom with right\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n",
|
|
"\n",
|
|
"mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n",
|
|
"\n",
|
|
"mpl.default_extension = \"png\";var comm_websocket_adapter = function(comm) {\n",
|
|
" // Create a \"websocket\"-like object which calls the given IPython comm\n",
|
|
" // object with the appropriate methods. Currently this is a non binary\n",
|
|
" // socket, so there is still some room for performance tuning.\n",
|
|
" var ws = {};\n",
|
|
"\n",
|
|
" ws.close = function() {\n",
|
|
" comm.close()\n",
|
|
" };\n",
|
|
" ws.send = function(m) {\n",
|
|
" //console.log('sending', m);\n",
|
|
" comm.send(m);\n",
|
|
" };\n",
|
|
" // Register the callback with on_msg.\n",
|
|
" comm.on_msg(function(msg) {\n",
|
|
" //console.log('receiving', msg['content']['data'], msg);\n",
|
|
" // Pass the mpl event to the overridden (by mpl) onmessage function.\n",
|
|
" ws.onmessage(msg['content']['data'])\n",
|
|
" });\n",
|
|
" return ws;\n",
|
|
"}\n",
|
|
"\n",
|
|
"mpl.mpl_figure_comm = function(comm, msg) {\n",
|
|
" // This is the function which gets called when the mpl process\n",
|
|
" // starts-up an IPython Comm through the \"matplotlib\" channel.\n",
|
|
"\n",
|
|
" var id = msg.content.data.id;\n",
|
|
" // Get hold of the div created by the display call when the Comm\n",
|
|
" // socket was opened in Python.\n",
|
|
" var element = $(\"#\" + id);\n",
|
|
" var ws_proxy = comm_websocket_adapter(comm)\n",
|
|
"\n",
|
|
" function ondownload(figure, format) {\n",
|
|
" window.open(figure.imageObj.src);\n",
|
|
" }\n",
|
|
"\n",
|
|
" var fig = new mpl.figure(id, ws_proxy,\n",
|
|
" ondownload,\n",
|
|
" element.get(0));\n",
|
|
"\n",
|
|
" // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n",
|
|
" // web socket which is closed, not our websocket->open comm proxy.\n",
|
|
" ws_proxy.onopen();\n",
|
|
"\n",
|
|
" fig.parent_element = element.get(0);\n",
|
|
" fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n",
|
|
" if (!fig.cell_info) {\n",
|
|
" console.error(\"Failed to find cell for figure\", id, fig);\n",
|
|
" return;\n",
|
|
" }\n",
|
|
"\n",
|
|
" var output_index = fig.cell_info[2]\n",
|
|
" var cell = fig.cell_info[0];\n",
|
|
"\n",
|
|
"};\n",
|
|
"\n",
|
|
"mpl.figure.prototype.handle_close = function(fig, msg) {\n",
|
|
" var width = fig.canvas.width/mpl.ratio\n",
|
|
" fig.root.unbind('remove')\n",
|
|
"\n",
|
|
" // Update the output cell to use the data from the current canvas.\n",
|
|
" fig.push_to_output();\n",
|
|
" var dataURL = fig.canvas.toDataURL();\n",
|
|
" // Re-enable the keyboard manager in IPython - without this line, in FF,\n",
|
|
" // the notebook keyboard shortcuts fail.\n",
|
|
" IPython.keyboard_manager.enable()\n",
|
|
" $(fig.parent_element).html('<img src=\"' + dataURL + '\" width=\"' + width + '\">');\n",
|
|
" fig.close_ws(fig, msg);\n",
|
|
"}\n",
|
|
"\n",
|
|
"mpl.figure.prototype.close_ws = function(fig, msg){\n",
|
|
" fig.send_message('closing', msg);\n",
|
|
" // fig.ws.close()\n",
|
|
"}\n",
|
|
"\n",
|
|
"mpl.figure.prototype.push_to_output = function(remove_interactive) {\n",
|
|
" // Turn the data on the canvas into data in the output cell.\n",
|
|
" var width = this.canvas.width/mpl.ratio\n",
|
|
" var dataURL = this.canvas.toDataURL();\n",
|
|
" this.cell_info[1]['text/html'] = '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n",
|
|
"}\n",
|
|
"\n",
|
|
"mpl.figure.prototype.updated_canvas_event = function() {\n",
|
|
" // Tell IPython that the notebook contents must change.\n",
|
|
" IPython.notebook.set_dirty(true);\n",
|
|
" this.send_message(\"ack\", {});\n",
|
|
" var fig = this;\n",
|
|
" // Wait a second, then push the new image to the DOM so\n",
|
|
" // that it is saved nicely (might be nice to debounce this).\n",
|
|
" setTimeout(function () { fig.push_to_output() }, 1000);\n",
|
|
"}\n",
|
|
"\n",
|
|
"mpl.figure.prototype._init_toolbar = function() {\n",
|
|
" var fig = this;\n",
|
|
"\n",
|
|
" var nav_element = $('<div/>')\n",
|
|
" nav_element.attr('style', 'width: 100%');\n",
|
|
" this.root.append(nav_element);\n",
|
|
"\n",
|
|
" // Define a callback function for later on.\n",
|
|
" function toolbar_event(event) {\n",
|
|
" return fig.toolbar_button_onclick(event['data']);\n",
|
|
" }\n",
|
|
" function toolbar_mouse_event(event) {\n",
|
|
" return fig.toolbar_button_onmouseover(event['data']);\n",
|
|
" }\n",
|
|
"\n",
|
|
" for(var toolbar_ind in mpl.toolbar_items){\n",
|
|
" var name = mpl.toolbar_items[toolbar_ind][0];\n",
|
|
" var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
|
|
" var image = mpl.toolbar_items[toolbar_ind][2];\n",
|
|
" var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
|
|
"\n",
|
|
" if (!name) { continue; };\n",
|
|
"\n",
|
|
" var button = $('<button class=\"btn btn-default\" href=\"#\" title=\"' + name + '\"><i class=\"fa ' + image + ' fa-lg\"></i></button>');\n",
|
|
" button.click(method_name, toolbar_event);\n",
|
|
" button.mouseover(tooltip, toolbar_mouse_event);\n",
|
|
" nav_element.append(button);\n",
|
|
" }\n",
|
|
"\n",
|
|
" // Add the status bar.\n",
|
|
" var status_bar = $('<span class=\"mpl-message\" style=\"text-align:right; float: right;\"/>');\n",
|
|
" nav_element.append(status_bar);\n",
|
|
" this.message = status_bar[0];\n",
|
|
"\n",
|
|
" // Add the close button to the window.\n",
|
|
" var buttongrp = $('<div class=\"btn-group inline pull-right\"></div>');\n",
|
|
" var button = $('<button class=\"btn btn-mini btn-primary\" href=\"#\" title=\"Stop Interaction\"><i class=\"fa fa-power-off icon-remove icon-large\"></i></button>');\n",
|
|
" button.click(function (evt) { fig.handle_close(fig, {}); } );\n",
|
|
" button.mouseover('Stop Interaction', toolbar_mouse_event);\n",
|
|
" buttongrp.append(button);\n",
|
|
" var titlebar = this.root.find($('.ui-dialog-titlebar'));\n",
|
|
" titlebar.prepend(buttongrp);\n",
|
|
"}\n",
|
|
"\n",
|
|
"mpl.figure.prototype._root_extra_style = function(el){\n",
|
|
" var fig = this\n",
|
|
" el.on(\"remove\", function(){\n",
|
|
"\tfig.close_ws(fig, {});\n",
|
|
" });\n",
|
|
"}\n",
|
|
"\n",
|
|
"mpl.figure.prototype._canvas_extra_style = function(el){\n",
|
|
" // this is important to make the div 'focusable\n",
|
|
" el.attr('tabindex', 0)\n",
|
|
" // reach out to IPython and tell the keyboard manager to turn it's self\n",
|
|
" // off when our div gets focus\n",
|
|
"\n",
|
|
" // location in version 3\n",
|
|
" if (IPython.notebook.keyboard_manager) {\n",
|
|
" IPython.notebook.keyboard_manager.register_events(el);\n",
|
|
" }\n",
|
|
" else {\n",
|
|
" // location in version 2\n",
|
|
" IPython.keyboard_manager.register_events(el);\n",
|
|
" }\n",
|
|
"\n",
|
|
"}\n",
|
|
"\n",
|
|
"mpl.figure.prototype._key_event_extra = function(event, name) {\n",
|
|
" var manager = IPython.notebook.keyboard_manager;\n",
|
|
" if (!manager)\n",
|
|
" manager = IPython.keyboard_manager;\n",
|
|
"\n",
|
|
" // Check for shift+enter\n",
|
|
" if (event.shiftKey && event.which == 13) {\n",
|
|
" this.canvas_div.blur();\n",
|
|
" event.shiftKey = false;\n",
|
|
" // Send a \"J\" for go to next cell\n",
|
|
" event.which = 74;\n",
|
|
" event.keyCode = 74;\n",
|
|
" manager.command_mode();\n",
|
|
" manager.handle_keydown(event);\n",
|
|
" }\n",
|
|
"}\n",
|
|
"\n",
|
|
"mpl.figure.prototype.handle_save = function(fig, msg) {\n",
|
|
" fig.ondownload(fig, null);\n",
|
|
"}\n",
|
|
"\n",
|
|
"\n",
|
|
"mpl.find_output_cell = function(html_output) {\n",
|
|
" // Return the cell and output element which can be found *uniquely* in the notebook.\n",
|
|
" // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n",
|
|
" // IPython event is triggered only after the cells have been serialised, which for\n",
|
|
" // our purposes (turning an active figure into a static one), is too late.\n",
|
|
" var cells = IPython.notebook.get_cells();\n",
|
|
" var ncells = cells.length;\n",
|
|
" for (var i=0; i<ncells; i++) {\n",
|
|
" var cell = cells[i];\n",
|
|
" if (cell.cell_type === 'code'){\n",
|
|
" for (var j=0; j<cell.output_area.outputs.length; j++) {\n",
|
|
" var data = cell.output_area.outputs[j];\n",
|
|
" if (data.data) {\n",
|
|
" // IPython >= 3 moved mimebundle to data attribute of output\n",
|
|
" data = data.data;\n",
|
|
" }\n",
|
|
" if (data['text/html'] == html_output) {\n",
|
|
" return [cell, data, j];\n",
|
|
" }\n",
|
|
" }\n",
|
|
" }\n",
|
|
" }\n",
|
|
"}\n",
|
|
"\n",
|
|
"// Register the function which deals with the matplotlib target/channel.\n",
|
|
"// The kernel may be null if the page has been refreshed.\n",
|
|
"if (IPython.notebook.kernel != null) {\n",
|
|
" IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n",
|
|
"}\n"
|
|
],
|
|
"text/plain": [
|
|
"<IPython.core.display.Javascript object>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
},
|
|
{
|
|
"data": {
|
|
"text/html": [
|
|
"<img src=\"data:image/png;base64,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naeffrqCT1/bDG0AAACWmY57UjqO92pqWvR4L0WK1FhaW1oyu6EhLzz9dO65/fZcecklOeG44/LlL34xn9h226y++upVL0beKyuXStm+VMpXS6WcscIK+dXOO+ehH/0or/z974vfOunsI7s6M0oVqBilSjdSLpfziU98Irfeemvmzp37vn6PCRMmZNSoUVlxxRVzxhlndPITdl2GNgAAAJ2q456UjuO9mpvby5Np0xzvJTWTtpaWNE2alCf+/Of89rrrct5ZZ+Xb3/xmPvfZz2bQxhund+/eVS9G3is9SqUMKpUyrFTKqFIpV5VK+WOplEmlUuauuWbe/vd/T/NvfpOGCRPe2Thpnu+4rkW2TjrzyK7OjFIFKkap0o2MGTOm036vN954I48++min/X5dnaENAABAp5g7t/14ryXdk9LUVP2Xs7JcpbW5ORP/+c/88e678/MrrsgpJ56Ygw84IDt+8pNZa+DAqpciRTOwVMqnSqWMKJVyXqmU35VKebZUyqxSKZkvrR/+cGZ+61t587bbMmPKlAU3TuY7rqsmi5N3i1IFKkapAgUY2gAAALxvra3tx3t13JPS1OSeFKlo5jY15YWnnsodN9+ci847L0d95zvZa+jQbPaxj2WFGr4UfuH0LZWyRamU/UulnFIq5RelUv5SKqVhoeJk4bSuv35mH3lkZt5zT2bW12d2Y2Nl7jmpZJQqUDFKFSjA0AYAAGCpdBzv1XFPSnOze1JkmaatpSUT//nP3Hfnnbni4otz3FFHZdgee+RjH/1olzima/6sWyplSKmUkaVSLimVcneplJdLpbS+R3kyf9oGDUrr8cen9YEH0rY8HKWnVIGKUapAAYY2AAAA76mtrf14r457UjqO93JPinRS2lpaMvXll/PQ2LEZfeWVOWnUqHxpv/2y5eabZ8UVV6x6GVI0K/Tsmc369cs+dXU55l/FyR2lUv5RKuXtpShOFsnHP55873vJo48uf6WlUgUqRqmynJo6dWq+//3vZ5999smBBx6Yq6++OnPmzKn2Y9UsQxsAAIAlam1tvyel43iv+e9JcbyXvI80vf56HnvggVz/X/+V0085JQcfcEC23267rLrKKlUvRIpmrYEDs8P22+fAPfbIyUOG5Odbb50/rbRSXi+V0vZBipOFs/XWyemnJ088UfU/t6pGqQIVo1Tppm655Zbstttu+dGPfrTIr02YMCHrrLNO6urqUi6XUy6XU1dXl1122SWzZ8+uwtPWPkMbAACABbS1LfmeFMd7SYG8NXVqxv3lL7npuuvyozPOyKFf/3oG77RTl7kcvnfv3tl4o43y2c98Jt889NCcffrpuW706Dx8222Zcvnlmfnv/57WDTbovPJk/nzyk8nZZydPP131P8eaiVIFKkap0k199atfTV1dXW6//fZFfu3LX/5yyuVytt5669xwww35+c9/nvXWWy91dXU599xzq/C0tc/QBgAA4J17UjqO92pudryXvGtm1dfn2ccfz5jf/CYX/OhHOXzEiHzm05/OOh/5SNVLkSJZfcCAbLfNNvnifvtl1DHH5LKf/CS333xznnn88TRMmpTmN97IjNdey1u/+11mHXdcWrfdNm11dZ1fopTLyeDByXnnJc89V/U/15qMUgUqRqnSTW266abp379/WltbF/j69OnT07Nnz6y00kqZNGnSO19/5pln0rNnz2yzzTaVftQuwdAGAABYjs2d23681/z3pHQc76VIkRkzMruhIeP+8pf88ppr8t1jjsken/tcNtpgg/To0aPqxci7pWfPntlg/fWz26c/nUOHD88Pf/CD/PfPf54H7703E8ePT8sbb2TG1KmZMW1a3pw2LW9Nn563p0/P7AcfzNyzz07rkCFp69dv2Wyj9OiR7LprctFFyQsvVP3PuOajVIGKUap0U6uuuupiC5Jbbrkl5XI5+++//yK/ttNOO6V///6VeLwux9AGAABYzrS2Lvl4L/ekLNeZ8uKLuWfMmJx/zjkZfvDB2WqLLdKrV6+qFyTvVpxstOGG+fyQITni8MNz4bnn5tb/+Z889dhjaZw0aV5hMm1a3p4+PTPr6zOroSGzGxszt6kprc3NaXvuueSqq5KvfCVZa61lU6KUSsnqqydf+lJy+eXJyy9X/c+6S0WpAhWjVOlGNt544wwaNCiDBg1KuVxOv3793vnnjgwcODB1dXVZffXVF/m1lVZaKXV1dQt87dJLL632x6oJhjYAAMByoON4r7ffbn9J2dzcvoninpTlMgtvn3xu992z9lprVb0kWVzK5XLWXWed7PbpT+ewQw/Nf555Zn57ww158pFH0jh58rwtk/r6zPxXYTKnqSlzm5vT2tKStoV/ridNSn7zm+Q730k+9rFlV6L07Zt85jPJmWcmDz1k6+uDRKkCFaNU6UbGjh2bsWPH5p577kmvXr2y8cYbv/O1jq9vtdVWqaury+WXX77Ar40dOzZDhw7NCiussMDXXnzxxWp/rJpgaAMAAHRTbW3tx3t13JPScbyXe1KWq3SV7ZO111org3faKcO/+tWc+YMf5Ppf/CL/9+CDmTZxYvumSX19ZtbXL1KavOf3oLExGTs2OeWUZKedkp49l02JUi4nW2+dHHdcMmZMMnVq1f/su02UKlAxSpVuar311kufPn0yZcqUd77W2NiY/v37p3///pk1a9Yi/82ee+6ZjTbaqJKPWbMmT56ccePGvZM11lgjAwcOrPZjAQAA0FlaW9vvSek43mv+e1Ic79Vt0xW2TwYMGJDtt9suBx1wQL5/0kn5xdVX56H77svkl15a4HiuOfMfz7W0P6stLcnjjyfnn58MG5asvPKy20ZZd93kkEOSX/zCkV7LMkoVqBilSjd12GGHpVwuZ5dddsmjjz6aJ598MnvvvXfq6uoyfPjwRf79uXPnZsCAAfnsZz9bhaetPaeddtoi/0+N+2YAAAC6uLa29ntSOo73ampyvFc3Ti1vn/RfccVsveWW+dJ+++XEUaNy9eWX5493352J48cv/k6TD/pz2diY/PnPyaWXJl/7WvKRjyy7EmWVVZK9905+8pPkySf9napUlCpQMUqVbmrixIlZa621Ui6XU1dXl7q6upTL5QwYMCAvv/zyIv/+TTfdlHK5nIsuuqgKT1t7bKoAAAB0Ex33pHQc79Xc7HivbpZa3T7p06dPNtt00+y911457uijc/lFF+UPY8bkpX/8Y4EjujqlNJk/LS3JM8+0b4YcfXT7cV4rrLDsSpRevZKdd06+//3kf/+3/e9XDfxcLHdRqkDFKFW6sQkTJuRb3/pWNttsswwaNCgHH3xwnn322cX+u0OHDs0666yT1157rcJP2TUY2gAAAF1Mx1bK/PekdBzv1dDQ/gKy2i9BZakyq74+//jrX3PrjTfm3DPPrKntk3XXWSd7DR2aE0eNynWjR+epRx/N29Onv3OvSaeWJgvn1VeTW29NTj012WOPZM01l12B0pHNNkuOPDK56aZk8uSq/2zIDKUKVJBSBQowtAEAALqI+S+db26ed7yXe1K6RNpaWvL6+PH54+9/n6suuSTHHXVU9ho6NIM23jg9evSoennSr1+/fGLbbXPo17+eC889N2PvuCNvvPzyO8d0LfPv0bRpyX33Jeedlxx4YLLxxsu+QCmVkrXXTg4+OLnmmmT8+Kr/nMhiolSBilGqQAGGNgAAQA3rOOKr466UhbdSHO9Vc5kxZUqeePjh3HjttTnjlFPy1QMPzCe23TYrr7xy1YuTxW2fXD96dJ5+7LHMrDJpkEMAACAASURBVK/v/OO6lpTm5uSvf02uuio57LBk223bj9qqRInSv3/71su55yb/93/KyK4QpQpUjFIFCjC0AQAAalBbWzJr1oJHfLl0vmYyt6kpLz79dH5/yy25+LzzcsRhh2X3XXfNRz784aoXJgtvn2y/3XY5dPjwXHTeebnvzjsz7dVXK1eedGT8+OTGG5Pjj0923TVZeeXKFCilUtKjR7LDDslJJyV3392+2VUDP0OyFFGqQMUoVbqR559/vtN+r7lz5+all17qtN+vqzO0AQAAasjCR3zV18874stWSsUz/dVX8+f77su1V12Vk48/Pl/cZ59svtlm6dOnT9ULkyVtn5w0alRu+MUv8vfHH8/shobKliczZiSTJiV33pmceWay777Jhz9cuQKlI4MGJd/6VnLDDclrr1X950g+YJQqUDFKlW6kZ8+eGT58eJ577rn3/XvMnj0711xzTTbccMOcccYZnfh0XZuhDQAAUGUdR3y99Vb7C8SFj/iylbJMM6u+Pn9/7LHccsMNOffMM/ON4cMzeKedssbqq1e9KHm37ZNvDB+ei3/84/zv73+f+gkTKl+ezJjR/vP50EPJxRcnw4e3X/JeLle2QFllleQzn0m++93kf/4neeGFqv9MSSdHqQIVo1TpRr72ta+lrq4udXV1GTx4cC6//PK88sor7/nfvfXWW7n33ntz2GGHZcCAAamrq8t6662XP/3pTxV46q7B0AYAAKiS1tYlH/Hl4vlOz9vTpuWvDz6Y0VdemeOOOip7fv7z2XijjWrikvh32z4ZtsceOfn443PjL36RZx9/PHMaG6v3fXz++WT06OTII5OddkpWWKGyBUrv3sknPpEcfnhy9dXJE0/Y4FoeolSBilGqdDOPP/54hgwZknK5/E7BstZaa2XPPffMiBEj8t3vfjennnpqRo4cmYMOOihbbbVVevXqlbq6upTL5ay55pr58Y9/nFmzZlX7o9QUQxsAAKDCOo746nhZ6IivTk1bS0teffbZ3P7b3+ac00/PV/bfP5t97GM1W5707t07m26ySfYdNizfPfbY/Pzyy/PAPfekYeLEqn8v09jYfg/JqFHJFltU5xivgw5Kzj8/+eMf21+sV/t7IpWPUgUqRqnSTT377LM59thj82//9m8pl8vvpKNomf9rvXr1ym677Zbrr79embIEhjYAAEAFtLUls2cv/ogvF8+/77z5xht55I9/zNWXXZajvv3tfHrnnbPaaqtVvShZXD78oQ9l1112yeEjRuSCH/0ot990U8aPG5e5TU1V/z4ukPHjkyuuSL7whfajtSpVoAwcmOy1V/KDHyS33ZZMmFD974XURpQqUDFKleXA888/n9GjR+f000/PyJEjM2LEiJxwwgk5//zzc++99+bNbjxsO4uhDQAAsAwtfMRXQ4Mjvt5H2lpa8tIzz+R3v/51fnjqqdl/v/3y0UGDUi6Xq16WzJ/+/ftn2623zlf23z8/OPnkXD96dB5/6KG0TJ5c9e/hEtPYmNxzT3L88clWW1WmQOnXLxk8ODnmmOSXv0z+8Q9/F2TJUapAxShVoABDGwAAYBmYOzd5++15LwQ7jvhqaHDE13ukedKkPHzvvbny4ovznW9+M4N32ikrr7xy1QuTjtTV1WWjDTbIHp/7XI4ZOTJXXHxx7rvjjrz2/PPVuSz+/eSFF5Krrkq++MVk1VWXbYFSV9d+dNghhyQ//Wnyl7+0FznV/h5I14lSBSpGqQIFGNoAAACdZHFHfE2b5oivJaS1uTnPP/lkbrruupx28snZb9iwbLjBBlUvTTqyxuqr5//tuGMO/frX86MzzsgtN9yQvz/2WGbV11f9e/e+XkqPHZuccEKyzTbLtkRZb732suacc5I//CGZMqX6n1+6dpQqUDFKFSjA0AYAAPiA5j/iq7l53hFf9fWO+PpXGiZOzJ/uvjuXXXBBvnXoodlh++2z4oorVr046dOnTz6+6ab5wj775KRRo3LtVVflz/fdl+mvvlr179kHzosvJldfney/fzJgwLIpUFZbLfnsZ5MTT0x+85v2/53V/tzS/aJUgYpRqkABhjYAAMD70NaWzJnjiK+FMrepKc8+/nh+/Ytf5JTvfjd777ln1lt33aqXJ+VyOYM22ihf2nff/PDUU3PrjTfmhaeeqr1L4j/oi+f77ktOOinZdtukXO78EmXAgOTLX24/Ouxvf1MYSmWiVIGKUapAAYY2AADAUpj/iK+WlnlHfE2fvtwd8dUwcWLuv+uuXHr++fnmIYdk++22yworrFD1AmXVVVfNLoMH58jDD8/PLr00j/zxj5nRXY+gevnl5Oc/Tw44YNlto2y7bfsmyn33tb/crvZnluUvShWoGKUKFGBoAwAAFNDamsycueQjvqr90nEZZm5TU5574on85pe/zKknnFAz2yd1dXXZdJNNcuCXvpSzTzstY37zm7z67LNd57L495Pm5uSPf0y+973kE59YNtsoq63WfmTYz37WfqF9tT+ziFIFKkapAgUY2gAAAIvR1tZepMyeveARX9Ond+sjvhpfey0P/OEPueyCC3LYIYdkh+23T79+/apeoAxYbbXstssuOWbkyPzXFVfksQceyFtTp1b9+1WRvPJK8l//lXzlK8kaayybbZStt26/xH7s2PaNq2p/ZpH5o1SBilGqQAGGNgAAQNpLlLlz55Uob77Z/jKvublbHvHV2tyc5598Mr/91a/y/RNPzL7DhmX99darennSs2fPbL7ZZjn4gANy7pln5ve33JLXnn++e2+fLJzm5uRPf0pOOSX55CeTurrOL1FWXTX54hfb70axjSK1HqUKVIxSBQowtAEAgOVSR4kya9aCJUpTU3tx0rGR0g2O+Gp6/fU8eM89+emFF+bwb3wjO37yk1lxxRWrXqCsNXBghnzmMxl19NH576uvzt/+/OfMnD696t+vquTVV5PRo5ODD07WXHPZbKNstVVy/PHJPffYRpGuFaUKVIxSZTlUX1+f1157rdqP0aUY2gAAwHKhrS2ZM6e9RHnrrfYXdS0t7S/rGhrmlSjTp7f/c1NTlzveq7W5OePHjctN112X004+OfsNG5YN1l+/6uVJ7969s/WWW2b4wQfn/HPOyR9uuy2Tl/ftiI5tlFNPTXbYYdlso6yySvKFLyRXXJGMH1/9zyzyfqNUgYpRqiwn7rvvvuy1117p379/6urq0qNHjwV+/ZxzzsnXv/71TJ06tUpPWNsMbQAAoFtqbW0vUWbOXLBEaWycd8n8wiVKFzliqq2lJa+PH58H/vCHXHHRRfn2iBHZaYcd0r9//6oXKB9ae+18/rOfzQnHHptf/fznGfeXv2R2Q0PVv2c1kUpso2yxRTJqVHL33e0/19X+zCKdEaUKVIxSZTlw+umnp66uLuVyOT179kzv3r1TV1e3wL9z9dVXp66uLldffXWVnrK2GdoAAECXN/99KDNnLnofSn39gkd5dYESZeb06Xn28cdzx0035dLzz88xI0dmn732ysc33TQrrLBC1cuTXr16Zasttnhn++SeMWMy5cUXq/59q6k0NycPPLBst1FWXjnZd9/kpz9N/vnP6n9mkWURpQpUjFKlm7v99ttTLpfzoQ99KDfffHNmz56dnXfeeZFSZdq0aSmXy9l7772r9KS1zdAGAAC6nPe6VH7hEqWxsf3XaqhEaWtpybRXXsmj99+fG0aPztmnnZZvDB+eXT/1qazzkY+kXC5XvTjpyFoDB+Zzu++e7x5zTH55zTUZ95e/ZFZ9fdW/hzWZSmyjbL55ctxxye9/bxtFlo8oVaBilCrd3Oc+97nU1dXl/vvvf+driytVkmSDDTbIJptsUsnH6zIMbQAAoObNfx9KkUvlO0qUKr8InNPYmBeffjr3jBmTqy65JCcce2z232+/bLPVVllllVWqXpYsbvtky803z9cPOig/Pvtsd58UScc2yve/n+y447LZRllppWTvvZPLLkuee676n1mk0lGqQMUoVbq51VZbLeuss84CX1tSqbLDv86WZVGGNgAAUHOWdB/Ku10qX6UtlOZJk/K3P/85N113XX589tn59ogRGfKZz2SjDTdMz549q16ULClrrrFGPrvbbhl19NH576uvzt/+/GfbJ0VTiW2UzTZLjjkmufPO9qKw2p9ZpJpRqkDFKFW6ub59+2abbbZZ4GtLKlW23nrrrLTSSpV6tC7F0AYAAKqutXXefSg1dql8a3NzJv7zn7n/rrsy+sorc+oJJ+TgAw7IDttvnzXXWKPq5ch7pWfPntni4x/PVw88MOeddVbuuvXWTLJ9snSpxDZK//7JsGHJpZcmzz5b/c8sUktRqkDFKFW6uQ022CArr7xy2tra3vna4kqVN998M3379s3mm29e6UfsEgxtAACgKlpb24/z6ihR3u0+lGVcorQ2N+eVf/wjY8eMyZUXX5xRRx+dfYcNy2Yf+1j69u1b9WKkaNZYffXsvuuuOe6oo/KLn/0sTzz8cGZOn179F6JdMa++mlx7bfs2ysCBy2YbZdNN27dR7rjDNorIu0WpAhWjVOnmRowYkbq6ulx55ZXvfG1xpcpZZ52Vcrmc448/vtKP2CUY2gAAQMUsXKR0HOdVgUvlW5ub8/Lf/56xY8bkiosuyqijj84+e+2VzT72sfTp06fqhcjSbJ5stOGG+dzuu+fbI0bkx2efnd/fckteHz8+bVU6Aq1bpJLbKJdckvzjH9X/zCJdJUoVqBilSjf33HPPpU+fPunbt29+8pOfpLGxcYFSZdq0afn+97+fHj16ZKWVVsrEiROr/MS1ydAGAACWqXcrUjqO8+qkS+XnNjXlpWeeyT3/Kk6OO+qo7LPXXtl0k026VHGyyiqrZNutt87+++2XE487LlddcknGjhmTF59+OnMaG6v/grO7ZMKE9m2Ur3512W6j/Md/JLffbhtF5P1GqQIVo1RZDvz6179Onz59UldXl549e77zP3/oQx9Kjx49UldXl759+2bMmDHVftSaZWgDAACdbhkWKR3FyR9uuy2X/+QnOfbII7P3nnvmYx/9aHr37l31QqRIyuVy1l1nnez6qU9lxL//e84+7bTceO21efT++zP91VdtnCzL/PWvyRlnLPttlIsvto0i0llRqkDFKFWWE08++WT23Xff9OnTJ+Vy+Z306tUre+21V/72t79V+xFrmqENAAB0irlzO61ImdvUlBeffjp/uO22/PTCC3PskUdm2B57dKnipF+/ftl8s82y77BhOfbII3PZBRfkzptvznNPPOGek0qmuTn53/9NRo1KBg1aNtsoH/uYbRSRZRmlClSMUmU5M3PmzDz55JO5//7789e//jUtLS3VfqQuwdAGAADetw9QpMyqr88///a33HXrrfnphRfmmJEjM2yPPbLJoEHp1atX1UuRIll7rbXy/3bcMV8/6KCcdvLJ+e+rr86D99yTSS+8YNukmqmvT269NRkxIll77c4vUVZccd42yt//Xv3PK9Ldo1SBilGqQAGGNgAAsFQKFiltLS15ffz4PDR2bH55zTX54amn5pCvfS27DB6cdT7ykZTL5aqXIu+Vnj17ZtDGG2fokCEZ+a1v5cL//M/ceuONeeqRRzJjypTqv2iUeXn99fb7UfbfP1l55WWzjXL00cmYMe0/59X+vCLLU5QqUDFKFSjA0AYAAN5TR5Hy5pvzXnDV16f5pZfy5J/+lFuvuy4XnnNOjvr2t7PX0KHZdJNNssIKK1S9FFma4mTPz38+R3/nO7n0/PPz+1tuyfhx4zK7oaH6LxNlyXnhheSSS5LPfS7p3bvzt1H22iu56CLbKCLVjlIFKkap0s2dffbZSx0WZWgDAACLaGtL5s7NnDffzIvPPJOxY8bk6ksuycnHHpuvfOEL+eS222aN1VeveiGyNMXJRwcNyp6f/3z+44gjcun55+euW2/N+HHjMqexsfovDKV4nngiOfPMZIcdknK5c4uUTTZJjjrKNopIrUWpAhWjVOnmyuVy6urqCqXj32VRhjYAACy/2traMnXq1DzyyCO54frrc85ZZ+Wb3/hGdt9112yw/vrp0aNH1QuRounVq1c+OmhQ9ho6NP9xxBG57IILctett+aFp55SnHTlNDcn99+fHH98+xFcnVmi9OuX7Lln+zbKM89U/7OKyOKjVIGKUap0c6ecckpOPfXUxebYY4/N3nvvnb59+6ZPnz75j//4j5x66qnVfuSaZGgDAED31dramqlTp+bpp5/O7bffnksvvTTHHnts9t1332y55Zbp379/1cuQpS1ONvlXcXLMyJG57IILcvfvfqc46W6pr09uuy057LDk3/6tc4uU1VdPhg9P/ud/kqlTq/9ZReS9o1SBilGqkBdffDE77rhjttpqq8yYMaPaj1OTDG0AAOhaZs6cmVdffTWPPfZY7rjjjowePTr/+Z//meOOOy5f/epXM2TIkGy55ZZZe+21u9SmycLFybA99sgxI0fmpxdemLt/97u8+PTTipPunEmTkl/+MjnggGSVVTq3SFl//eTII5O77mp/OVvtzyoiSxelClSMUoUkyauvvpqePXvm+OOPr/aj1CRDGwAAqqutrS2NjY355z//mQceeCA33XRTLr/88px++un5zne+ky996UvZeeed89GPfjSrrLJK1UuPzsiqq66abbfeOl/ad99895hjcvlPfpI/3HZbXnz66cz10nv5yQsvJJddlgwdmvTp07lFylZbJaeckvzlL0lLS/U/q4i8/yhVoGKUKrxjq622yvrrr1/tx6hJhjYAAHS+OXPmZPLkyXnyySdzzz335Fe/+lUuvPDCnHjiiTn00EOz55575hOf+ETWWWed9OnTp+olR2end+/eGbTxxvn8Zz+bb48YkfPOOiu//dWv8tcHH0z9hAnVf0En1cuTTyZnn53stFPnXjTfo0eyyy7Jeeclf/979T+niHRelCpQMUoV3rHJJpukT58+1X6MmmRoAwDA0mlra8u0adPyyCOP5Prrr8+ZZ56ZQw45JLvttls+/vGPZ4011ki5XK56sbGs86G1187gnXbK177ylfzgpJMy+sorc/9dd+XVZ5+1bSLz0tKSPPBAcsIJyWabde42ygorJMOGJVddlbzySvU/q4gsmyhVoGKUKiRJHnnkkfTo0SPrrbdetR+lJhnaAACwqLlz5+all17K2LFjc9VVV+XEE0/M/vvvn2222SYrr7xy1QuNSqR///7ZcvPNs9+wYTn2yCNz6fnn5/bf/jZ/f+yxvOWCb3m3NDQkY8Ykhx+efOQjnVukDBiQfO1ryY03Jm+8Uf3PKiLLPkoVqBilSjf30EMPLTEPPvhgbr755px00kkZMGBA6urqcsIJJ1T7kWuSoQ0AwPJqxowZGTduXG699dZccMEFOeKII/L5z38+gwYNSq9evapeaizr9OjRIxtusEF233XXHHbIITnn9NNz47XX5pE//jFTX345be6hkKVJx0XzBx6YrLpq5xYp666bHHFE8vvfJ42N1f+sIlLZKFWgYpQq3Vy5XE5dXd27plwup1wuZ8iQIXnrrbeq/cg1ydAGAKC7amtry5QpU/Lwww/nl7/8ZU4//fQMHz48gwcPztprr131UmNZpk+fPll3nXXyiW23zV5Dh+bQr3893zv++Fx92WW59/bb89Izz2SOl9PyQfPCC8kllySf/3zSu3fnFilbbJGcfHLy8MMumhdZ3qNUgYpRqnRzgwcPzs4777zYfOpTn8rQoUMzcuTI3HHHHdV+1JpmaAMA0JXNnj0748ePz913350rrrgixx9/fL7whS9kyy23TP/+/atebnRmVl1llWyy8cb51E47Zf99980Rhx2WM045JVdcdFFuvv76PHjPPXn+ySfT9Prrtkxk2eWvf01++MPkk5/s3Ivm6+qSnXdOzj03efrp6n9OEamdKFWgYpQqUIChDQBArWtsbMwTTzyRm266Keedd14OP/zwDBkyJBtuuGF69OhR9bLj/aZHjx750Ic+lK223DKf2333fO0rX8moo47KuWeckWt/+tPceeON+eu992bCU09l5pQpSXNz9V9syfKX5uZk7Njk2GOTQYM6dxulb9/2i+avvDJ5+eXqf1YRqc0oVaBilCpQgKENAEC1zZo1K88//3zuvvvuXHnllTnhhBPy5S9/Odttt10GDBhQ9fJjabLiiitmgw02yI477ph99tknhx12WE455ZRccsklufH66/O/Y8fmmSeeyLQJE9La3Nz+wrqxMamvT6ZNa099ffvXlChSrUyblvz2t8khhyQDB3ZukbLaasnBByfXX59MmVL9zyoitR+lClSMUgUKMLQBAFjW2traMmnSpDz88MP51a9+lTPPPDOHHnpodt1116y77rqpq6urehlSNOVyOeuuu2523XXXjBgxIuecc05+/etf57HHHkt9ff2CH7y1NZkzJ5k5M3nrrfYXQ0oUqdVMmJBcc02y777Jiit2bpGyzjrJd76T3HGHi+ZFZOmjVIGKUap0Iw899FCnhEUZ2gAAdIaWlpaMGzcuv/vd7/KTn/wkRx99dIYNG5aPf/zj6devX9XLkKVJ3759s9lmm2XvvffOMccck0suuSR33HFHnn322cycOXPJ34S2tkVLlJYWJYrUbv7+9+S885JPfzrp0aNzi5TNN09OOil58EEXzYvIB4tSBSpGqdKNlMvl1NXVfaD06NGj2h+jJhnaAAAUMWfOnLz00ku59957c8011+R73/teDjrooOywww5Zc801q16ELG1WX331fPKTn8xBBx2UU089NaNHj86f/vSnTJw4Ma2trcW/Ma2tyezZydtvt7/46ShRGhoWX6J4uSzVTEtL8vDDyfe+l2y5ZeeWKD16JJ/6lIvmRaTzo1SBilGqdCODBw/Ozjvv/IHDogxtAACSZPbs2ZkwYcL/Z+/M42wsGz4+9z1jZgwGY4y17GSXnSiUolCyRqFBPcgSxVMUD+NBrxaKsoVCSESW7AkPUsmebCkxGmNWZsxyvu8f53OGsdTIOec+c+b3/Xy+n/ed49Rc95zT9bjPd67rYs+ePSxevJgJEybQt29fHn74YcqWLYufn5/lIeRONE2T0qVL8/DDD9O3b18mTpzI559/zo8//khsbOzd/bBuDCmOLb2ioxVRpOcZEwOrV9u337r3XueGlKAgaNcOZs6EM2esv1YppXeqqCKE21BUESILaNIWQgghhPBuLl++zIkTJ9i+fTtLly5lypQp/Pvf/6ZXr1489thj1KhRg8KFC2MYhuUh5E4NCgqiWrVqPPnkkwwdOpRp06axbt06fvnlF65evercH6QjpFx/NsqNq1Hi4hRRpGcYGQkLFkDXrvaD4Z0ZUgoXhp494fPPISrK+muVUnq/iipCuA1FFSGygCZtIYQQQojsh81m49KlSxw+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9KHH1q1bb/nPf/3117Rs2ZICBQoQGBhIlSpVGD9+PMnJyU4Z352iSVsIIYQncuXKFY4cOcKaNWt4//33GTp0KE899RQ1a9YkX758lscNV1ioUCGqVatGy5Ytee655xg+fDjvvvsuS5Ys4bvvviM6Otrql0V4A+npf33IvFajSCs8exZWrYLRo6FNGyhWzP0BJU8eeOABGDwY5s+HQ4f034GUUnqKiipCuA1FlRzE7t27GTBgAKGhoRkhxTAMKlasSEREBGfOnLF6iB6LJm0hhBBWkJ6ezu+//862bduYN28eb775Js899xwPPPAAxYsXtzxwOEtfX1+KFy9OnTp1aNOmDX379uXNN9/kww8/ZMWKFezevZszZ85w9epVq18S4a3c6nwUHTIvrfbSJfj6a3j1VahbF0zTvQElVy64/37o0wc+/BD27NF2XlJK6ckqqgjhNhRVvJxTp04xduxYKlasiGmaGTElJCSEfv36sWvXLquH6JFERkZy4MCBDENDQwkLC7N6WEIIIbyM+Ph4fvnlF7Zt28bixYv5v//7P/r160erVq2oWLEi/v7+lgePuzEwMJAyZcrQuHFjOnTowEsvvcT48eP5+OOPWbduHT/99BORkZHakktYw63OR9G2XtJKExLghx/grbegdWv7qhB3BRTDgIoVoVs3mDwZtm7VNl5SSpndVFQRwm0oqnghMTExzJgxgyZNmmQKKbly5aJdu3YsW7ZMv+n5N4wePfqmD4by5s1r9bCEEEJkAxxnmRw4cID169czf/58Jk6cyODBg+ncuTNNmzalfPny5MmTx/Lo8U8tUKAAlStXpkWLFnTr1o1hw4YxefJkFi5cyJYtWzh69CixsbHYbDarXw4hMnP9+SiJidfOR3Fs6xUdbf86Pt76D0ZkzvDXX2HuXPvB7iVKuC+ilCwJTz4JY8fC6tXwxx/W/yyklFLenYoqQrgNRRUvo0OHDpnOSTEMgzp16jBlyhSioqKsHl62QStVhBBC3Ehqaipnz55l7969rFq1ihkzZjBmzBhefPFFnnzySerXr88999xDrly5LI8ed2vRokVp1KgR3bt3Z9SoUXz88cds3bqVU6dOceXKFatfCiGyzq229brV+ShajSLdZXS0PWIMGwa1atlXiLg6oISEQMuWMGIELF0KJ09a/3OQUkrpfBVVhHAbiipehiOklChR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ysaNGxUIBBQIBOK+Z/PmzRo6dKiMMbriiis69kQASCkvxhb7tUl7MbYAmcGLcWXXrl2R8uTaa69VeXl53Nc//fRTbdy4sdn9GFcAZyhVAMQpLy+PKzcSzZ8/X8YYHXPMMXG3259kGDFihBobG+O+VlZWpl69eskYo6effjrua/v372/1WPr379/iRcxRo0bJGKPFixc3+9pjjz0mY4z69evX7HgAuMvtcaUt06dPlzFGZ599drOvMa4AmcPrseXMM89UMBjUO++8o8GDB7daqsyYMSPyKdREb7zxhowxys/P1549e1p9TADp58XY0tFShbEFyAxejCvnnnuujDFauHBhu46VcQVwhlIFQLs89dRTMsaosLAw7vbjjz9exhjdfPPNSe83b948GWN03nnntevxTj/99MinMmJ9+umnkTcfyWax1NfXR6bEvvLKK+16TADucntcufLKK2WM0YwZM+JuZ1wBsks6xxb7Z1922WWS1GqpUlFRofz8fBljtGHDhqQ/b/jw4TLG6IEHHnB4dgC8ko6xpSOlCmMLkD1SPa7s2LFDOTk5KioqajZDpTWMK4BzlCoA2uXxxx+XMdY+BbbGxsbIH9633nor6f1WrFghY4yOOuqodj3etGnTZIzRlVdeGXe7/Ynx1n7eySefLGOMlixZ0q7HBOAuN8eVcDgceXNy4403xn2NcQXILukaW8rLy3XwwQdr0KBBkQsVrZUq9qc6CwoKWpzlNmfOHBljNHfu3HaeJQC3pWNssUuVyy+/XFOnTtW0adM0b948/elPf2pxLzfGFiB7pHpceeCBB2SM0Wmnnab6+nrdd999mj17tqZMmaKLLrpIq1evTrpkGOMK4BylCoB2mTVrlowxmjVrVuS2zz//PPJGYOfOnUnvt379ehljFAwGW532Gmv37t0qKCiQMUZr1qyJ+9p1110nY4ymTZvW4v1/+MMfyhijCy64wNHjAfCGG+NKdXW1Nm3apO9///uRNx4lJSVx38O4AmSXdI0tCxYskDFGq1atitzWWqliX9gYPnx4i8e6dOlSGWM0efLkdpwhAC+kY2yx75ssY8eObbZPnMTYAmSTVI8r9nJic+fO1fjx45OOLSeccIJKS0vjfh7jCuAcpQoAx55//vnIH+D169dHbv/rX/8aub22tjbpfT/66KPI97S2j0qss88+W8YYjRw5Uk1N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gysIVYAI0LQBAAAAAAAAe5jPwRWEKkAEaNoAAAAAAACAPczn4ApCFSACNG0AAAAAAADAHuZzcAWhChABmjYAAAAAAABgD/M5uIJQBYgATRsAAAAAAACwh/kcXEGoAkSApg0AAAAAAADYw3wOriBUASJA0wYAAAAAAADsYT4HVxCqoEQPPvigjDEyxujkk08u9n27d+/W5ZdfrqZNmyouLk4NGjTQxRdfrE8++aTEz8/Ly9PMmTPVvXt31ahRQ7Vq1VKfPn301FNPHbG2jRs36uyzz1bdunUVFxenY489VjfccIP2799/tF/ziGjaAAAAAAAAgD3M5+AKQhUUa/fu3UpKSjpiqLJ582alpqbKGKPExER169ZNKSkpMsaoevXqev3114u8Li8vT0OHDpUxRp7nqWPHjmrdunXw8/7yl78UW9tTTz2l6OhoGWPUoEEDde3aVfHx8TLG6Nhjj9U333xTGr+CAE0bAAAAAAAAsIf5HFxBqIJinXvuufJ9X2eeeWaxoUpeXp46deokY4zOOussZWZmSpKysrI0evToIPQ4dOhQoWunTp0qY4zq1Kmjt956K9hfvny5EhISZIzRCy+8UOi6L774Inh94sSJysvLkyTt2bNHPXv2lDFGQ4YMKaXfQghNGwAAAAAAALCH+RxcQaiCIi1evFjGGF199dUaN25csaHKc889J2OMkpOTtW/fvrDXcnJygjtP7r777rDXsrOzVbt2bRljtGDBgkKfO378eBljlJaWVui1q666SsYYnXLKKYVe+/TTTxUVFSVjjN59992j/NbFo2kDAAAAAAAA9jCfgysIVVBIZmamGjVqpIYNG2r//v0lhip//OMfZYzR6NGji/ysyZMnyxij3r17h+2vXLkyeFxYdnZ2oet27doVPAbs5+ey5Ofnq2HDhjLG6MknnyzyZw4YMEDGGN18881H8a1LRtMGAAAAAAAA7GE+B1cQqqCQK6+8UsYYPfPMM5JUYqjSvHlzGWP02GOPFflZGRkZMsYoNjZWubm5wX7BnSi/+93viq2jRYsWhT77888/D8KWHTt2FHndhAkTjvjZR4umDQAAAAAAANjDfA6uIFRBmA0bNsj3fZ122mnBXnGhSnZ2tnzflzFG69evL/Lzdu7cGYQgn376abA/bNgwGWN02WWXFVtL//79ZYzRLbfcEuytWrVKxhjFxcUp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vHnz1vuev//97+OQQw6JzTffPGpqamK77baL0047LZYtW5b7a85D0QYAADqjRx55pKivyt13313qKQHQSVmfo1wIVShy8sknF/3C3DjWF6o8+eST0b9//0gpRc+ePWPXXXeNvn37RkopevToEQ899FCz99XX18fBBx8cKaWoqKiIkSNHxrBhwwrv+9nPfrbF95w3b15UVVVFSikGDhwYY8aMidra2kgpxXbbbRcvv/zyu/perE3RBgAAOqO33347unfvXvgb7dxzzy31lADopKzPUS6EKhS54IIL4oADDohZs2bFHXfcEYceeuh6Q5X6+vrYaaedIqUUBx54YGE7+MqVK2PGjBmF0GPFihVN7v3yl78cKaXYbLPN4pFHHilcv+OOO6Jbt26RUopbb721yX3PPvts4fELL7ww6uvrIyJi6dKlMXbs2EgpxUEHHfRuvx0FijYAANBZTZw4sRCq7L333qWeDgCdlPU5yoVQhVZNmTJlvaHKLbfcEiml2HTTTeP1118veqyurq6w8+TKK68semzVqlXRr1+/SCnFnDlzmrzu+eefHymlGDVqVJPHTjrppEgpxcSJE5s8tmjRosKxZY8++mjeL7VVijYAANBZnX322YVQpUePHlFXV1fqKQHQCVmfo1wIVWhVnlDlqKOOipRSzJgxo9nHZ8+eHSmlGD9+fNH1u+66q3Bc2KpVq5rct2TJksIv7mv3ZWloaIgtt9wyUkoxd+7cZt9z3333zd0LJg9FGwAA6Kwa/3ZrHH/84x9LPSUAOiHrc5QLoQqtyhOqbLvttpFSiu9///vNPn7//fdHSimqq6tj9erVheuNO1H22muvFl978ODBTV77n//8Z+GX+eeee67Z+2bNmrXe134nFG0AAKCzWrZsWVRWVhb+Dvva175W6ikB0AlZn6NcCFVo1fpClVWrVhV+uX744Yebfc4LL7xQ+OV70aJFhevHHHNMpJRi+vTpLb7/PvvsEymlOPvsswvX7r777kgpRU1NTTQ0NDR73w9/+MNIKcV73/vePF/meinaAABAZzZq1KjC33VHHHFEqacDQCdkfY5yIVShVesLVV566aXCL9ZPPPFEs8958803C8/5wx/+ULi+3377RUopTjvttBbf/4gjjoiUUpx00kmFaz/+8Y8jpRRbbLFFi/f96le/ipRSbLLJJuv7EgsaC3Nzo7Ky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+g36/QHeufauK48++mjhdfv27RsjR46MnXfeuXBfSik++clPtjhfdQU6hvauLc255pprihY+WwtVLr/88sLzBg0aFKNGjYqqqqpIKcW4cePizTff/G+/FcAGVIra0vi648ePb3ZMnz69xfmqLVD+SvU7y5///Od4z3veEyml6Nq1a+y0004xevTo2GyzzSKlFJ///OebvU9dgfUTqgBF7r777hg8eHB84xvfiJdffrlwffXq1XHFFVcUFhavuuqqovv+85//xBZbbBEppTj++ONj5cqVEZF9KmLy5MmRUorRo0c3+SXh2GOPjcmTJ8edd94Zb7/9duH6kiVLYtKkSZFSip49ezb7CYybb745UkrRrVu3uOOOOwrXH3nkkejfv3+klOKKK67YIN8X4L/X3nXl+eefj2uuuSYWL15cdH3lypVx2WWXFf5AmDt3bpO5qivQcbR3bVnXCy+8EL17944xY8bEVltt1WqosmDBgqioqIiKioqi5zz99NMxdOjQSCnFySef/N99I4ANqhS1pfF3k3dKbYGOoRR15cUXXyyEJ6effnosW7as6PGnnnoqFixY0OQ+dQXyEaoARZYtW1YUbqxrxowZkVKKXXbZpeh64ycZhg8fHnV1dUWPvf7667HppptGSil+9rOfFT3273//u9W5bL755i0uYo4cOTJSSjFr1qwmj914442RUorNNtusyXyA9tXedWV99t9//0gpxRFHHNHkMXUFOo5S15aPfvSjUVlZGY888kgMGjSo1VDlgAMOKHwKdV333XdfpJSiuro6li5d2up7Am2vFLXlvw1V1BboGEpRV4466qhIKcVpp532juaqrkA+QhXgHfnpT38aKaWora0tuj5u3LhIKcXFF1/c7H3Tp0+PlFIcc8wx7+j9DjzwwMKnMtb21FNPFf74aG4Xy6pVqwpbYu++++539J5A+2rvunLKKadESikOOOCAouvqCmxc2rK2NL72SSedFBHRaqiyfPnyqK6ujpRSzJ8/v9nXGzZsWKSU4rrrrsv51QGl0ha15b8JVdQW2Hhs6LrywgsvRJcuXaJHjx5Ndqi0Rl2B/IQqwDty0003RUpZn4JGdXV1hX94H3jggWbvmzNnTqSUYsiQIe/o/fbdd99IKcUpp5xSdL3xE+Otvd7EiRMjpRQXXHDBO3pPoH21Z11paGgo/HFyzjnnFD2mrsDGpa1qy7Jly2LLLbeMgQMHFhYqWgtVGj/VWVNT0+Iut6lTp0ZKKaZNm/YOv0qgvbVFbWkMVWbOnBn77LNP7LvvvjF9+vT4yU9+0mIvN7UFNh4buq5cd911kVKKD3/4w7Fq1ar49re/HYccckjstddeMWXKlLj55pubPTJMXYH8hCrAO3LQQQdFSikOOuigwrW///3vhT8ElixZ0ux9Dz30UKSUorKystVtr2v717/+FTU1NZFSiltvvbXosTPPPDNSSrHvvvu2eP///u//RkopjjvuuFzvB5RGe9SVFStWxGOPPRZHH3104Q+PV199teg56gpsXNqqthx//PGRUop58+YVrrUWqjQubAwbNqzFuV500UWRUooJEya8g68QKIW2qC2N9zY3Ro0a1aRPXITaAhuTDV1XGo8TmzZtWowZM6bZ2vLBD34wXnvttaLXU1cgP6EKkNvtt99e+Af4oYceKlz//e9/X7j+1ltvNXvv448/XnhOa31U1nbEEUdESilGjBgRq1evLnrshBNOiJRSfOxjH2vx/lNPPbXZI36A8tHWdWXIkCFFfzxUV1fHKaec0uzz1RXYeLRVbXnwwQejoqIiJk2aVHS9tVDlsssui5RSjB07tsX5Xn311ZFSipEjR76DrxJob21VWz784Q/HvHnz4umnn46VK1fGv/71r/je974XAwYMiJRSDB06tMkRPmoLbBzaoq40HqPetWvXqKysjIsvvjheeumlWLFiRdx8883Rr1+/SCnFoYceWvR66grkJ1QBcnn66aejb9++kVKKz3zmM0WP3X///YV/yFvanr5o0aLCc5577rn1vt9Xv/rVSClFVVVVLFiwoMnjjVtOW/u0+Nlnnx0ppdhrr73W+35A+2uPuvKxj30sxo8fHyNHjowePXpESim23XbbmDt3bpPnqiuwcWir2rJq1aoYMWJE1NbWxtNPP110T2uhyqxZs9b7ic7vfve7zR7fAZSP9v57qPGe3r17R0pNjx5VW6Dja6u6stdeexWur3uUekTEbbfdVnj8z3/+c+G6ugL5CVWA9XrxxRdj6NChhWNx1t2uvqF3qvzoRz+KysrKqKioaHZxIsInyqGja++6EpEtiH79618vHCu4brCirkDH15a15bzzzmt2YTPCThXY2JXi95ZGp59+eqSUYvTo0UXX1Rbo2Nqyruy///7rDXEbd/R/+ctfLlxTVyA/oQrQqldeeSV22mmnSCnF+PHjY8WKFU2esyF7H9x+++3RtWvXSCnFlVde2eLz9D6Ajqu968q6LrnkkkgpxeDBg4uuqyvQsbVlbVm4cGFUV1fH9ttvH6tWrWpyj54qsPEq9e8tP//5zyOlFJtssknRdbUFOq62rivHHntss3VjbY3BywknnFC4pq5AfkIVoEXLli2L3XffPVJKMWbMmHj99debfV5dXV1UV1dHSikeeOCBZp8zZ86c9W4Rveeee6K2trbFT4Gu7cYbb1zv602cODHXawHtp73rSnP+8pe/FP5AWfv91RXouNq6ttx6662RUooePXrEFlts0WRUVlZGSil69eoVW2yxRXziE58o3HvfffdFSilqamqirq6u2fdsPH5w2rRp7+K7AGxo5fB7yx133BEppaitrS26rrZAx9QedeWCCy6IlFL07du3xXkccsghkVKKGTNmFK6pK5CfUAVo1ooVK2LChAmRUtYo/uWXX271+XvssUeklOLiiy9u9vHp06dHSimOPvroZh9/+OGHY5NNNomUUnzxi19c7/yefPLJwqLoiy++2OTxVatWRc+ePSOlFL/+9a/X+3pA22vvutKSRx99tFA/XnnllcJ1dQU6pvaoLY2hSt5x0EEHFe5dvnx5YVFk/vz5zb7nsGHDIqUU11577X/xHQDaQrn83nL55ZdHSlmz+rWpLdDxtFdd+c1vftPsh8jWNmrUqCYfFlNXID+hCtDEqlWrYt999y184uGFF15Y7z1f/vKXI6UUw4cPb/KJhtdffz023XTTSCnFrbfe2uTeRx99NPr06RMppfj0pz+de5477rhjpJRi1qxZTR5r/MR5//7939H2eqBttHddac0555wTKaXYeuutmzymrkDHUi61pbXjvyLWHLExderUJo81fiq0uro6li5dmvs9gbZTLrXljTfeKPQ9aO7vJLUFOo72rCt1dXWx+eabR0rNH6v+6KOPRkVFRaSU4qGHHip6TF2BfIQqQJHVq1fHoYceGiml2GqrreKZZ57Jdd/y5csL/2gff/zxhfPGly9fHpMnT46UUuy8885RX19fdN9TTz1VuO/jH/94NDQ05J7rvHnzIqUU3bp1izvuuKNw/ZFHHon+/ftHSim+8pWv5H49oG20d1258MIL45Zbbok333yz6Prrr78eF1xwQXTp0qXF+qCuQMfR3rWlNesLVebPnx8VFRVRUVERN9xwQ+H6008/XWhSO3PmzNzvB7Sd9q4tp59+esyZMyfeeOONousLFy4sfKK9R48esWjRoibvqbZAx1CK31m+8Y1vREopNt1006Ljw5577rkYPXp0pJTigx/8YJP71BXIR6gCFLnpppsK20QHDx4c48ePb3Gs63e/+11069YtUkrRr1+/2HXXXQtH5fTv3z+efPLJJvc0flIjpRR77LFHi+910UUXNTvfE044oXD/sGHDYuTIkYVPXBx88MHvaEEEaBvtXVcOOuigSClFVVVVDB8+PMaOHRuDBw8ubGVv/LRnSyGuugIdQ3vXltasL1SJiLj00ksL8x00aFCMGjUqqqqqIqUUY8eObbZJLdD+SvV7S5cuXQq/t2y33XaFOfTq1St+9atftThftQXKXyl+Z2loaCg0rE8pxfbbbx+jR4+Orl27Fo4UfO6555q9V12B9ROqAEWuv/76Fs8HX3c058knn4xjjjkmBgwYENXV1fHe9743jj/++FiyZEmzz99zzz1zvdeUKVNanPNNN90U48ePj549e0aPHj1izJgxcdVVV1n4hDLR3nVl/vz58cUvfjH22GOP2HLLLaNr167RvXv3GDZsWEyZMqXFRo9rU1eg/LV3bWlNnlAlIuLOO++MffbZJ/r06RO1tbWxww47xEUXXRQrV658x+8JtI32ri133nlnzJgxI8aMGRNbbLFFdO3aNXr27BmjRo2K0047rcVFz3VfQ22B8lXK31nmzJkTH/jAB6J3795RW1sbI0aMiLPOOqvFXiuN1BVonVAFAAAAAAAgB6EKAAAAAABADkIVAAAAAACAHIQqAAAAAAAAOQhVAAAAAAAAchCqAAAAAAAA5CBUAQAAAAAAyEGoAgAAAAAAkINQBQAAAAAAIAehCgAAAAAAQA5CFQAAAAAAgByEKgAAAAAAADkIVQAAAAAAAHIQqgAAAAAAAOQgVAEAAAAAAMhBqAIAAJSFvffeO1JKceSRR7b6vBUrVsTgwYMjpRQXXnhhO80OAABAqAIAAJSJxYsXR48ePSKlFLfddluLz/vc5z4XKaXYZZddoq6urh1nCAAAdHZCFQAAoGx87Wtfi5RSbLnllvH66683eXzBggXRpUuXqKqqij/+8Y8lmCEAANCZCVUAAICyUV9fH+9///sjpRTTpk0reuztt9+OkSNHRkopzjjjjBLNEAAA6MyEKgAAQFl54oknoqamJlJKcffddxeun3vuuZFSiuHDh8fKlSub3Pfvf/87zjjjjNhxxx2je/fu0aNHj9h9993jqquuavaYsLfffjtuueWWmDJlSuywww7Rq1evqK2tjWHDhsVnP/vZePHFF5ud36GHHhoppbj55ptj4cKFceyxx8aWW24ZXbp0iTPPPHPDfSMAAICyI1QBAADKzuzZsyOlFNtss0288cYb8de//jWqq6ujsrIyHnzwwSbPf/TRR2PAgAGRUorq6urYfvvtY7vttovKyspIKcV+++3XJFh54oknIqUUlZWVMXDgwBgzZkyMGDEiunXrFimlGDhwYDzzzDNN3qsxVDnrrLNik002iZqamhgzZkxsv/32cdZZZ7XVtwQAACgDQhUAAKDs1NXVxejRoyOlFCeccEKMHTs2Ukrxmc98pslzly1bFltvvXXh8WXLlhUe+/vf/x677rprpJTiwgsvLLrvpZdeiu9///vx6quvFl1fvnx5nHHGGZFSigMPPLDJ+zWGKl26dIlDDz206P4333zz3X7pAABAGROqAAAAZenRRx+NqqqqSCkV7VpZ18UXXxwppTjssMOafZ1FixZFTU1N9O/fP1avXp37/UeNGhWVlZXx2muvFV1vDFUGDRoUb7311jv7ogAAgA5NqAIAAJStM888sxCqrN1fZW277757pJTizjvvbPF1Gp/z2GOPNXnst7/9bXzuc5+L/fffPyZMmBDjx4+P8ePHR79+/SKlFPfff3/R8xtDldNOO+3dfXEAAECHI1QBAADK1r333lsIVVpSW1sbKaXYbbfdCoHIuqNv376RUopf/vKXhfveeuutmDx5cuH1Wxo/+9nPit6vMVS54YYb2uzrBgAAypNQBQAAKFvrC1VWrly53lBk7XHzzTcX7j399NMjpRRbbbVV/OAHP4h//OMfsXLlysLjH/3oR5vcE7EmVFn3OgAAsPETqgAAAGUrz06Vrl27RkopnnnmmXf02u95z3uaPd6r0Z577ilUAQAAighVAACAspUnVNlll10ipRS/+MUvcr/u22+/HSml6NKlS9TV1TV5fNWqVdG7d2+hCgAAUESoAgAAlK08ocqsWbMipRT77LNPNDQ05HrdhoaGwg6XJUuWNHn8mmuuafbIsAihCgAAdGZCFQAAoGzlCVVee+212HrrrSOlFMcee2yTkOTNN9+MW2+9NWbMmFF0/UMf+lCklOLwww+PN954o3D9xz/+cXTr1i1qa2uFKgAAQBGhCgAAULbyhCoREX/9619jm222iZRSVFZWxvbbbx977LFHDB8+PKqqqiKlFEOGDCm656GHHirsVunVq1fsuuuuhT4r+++/fxxyyCFCFQAAoIhQBQAAKFt5Q5WIiOXLl8ell14aY8eOjd69e0dNTU0MGjQo9txzz5g9e3YsXLiwyT0PP/xw7L333rHJJptE9+7dY6eddopLL7006urqWgxPhCoAANB5CVUAAAAAAAByEKoAAAAAAADkIFQBAAAAAADIQagCAAAAAACQg1AFAAAAAAAgB6EKAAAAAABADkIVAAAAAACAHIQqAAAAAAAAOQhVAAAAAAAAchCqAAAAAAAA5CBUAQAAAAAAyEGoAgAAAAAAkINQBQAAAAAAIAehCgAAAAAAQA5CFQAAAAAAgByEKgAAAAAAADkIVQAAAAAAAHIQqgAAAAAAAOQgVAEAAAAAAMhBqAIAAAAAAJCDUAUAAAAAACAHoQoAAAAAAEAOQhUAAAAAAIAchCoAAAAAAAA5CFUAAAAAAAByEKoAAAAAAADkIFQBAAAAAADIQagCAAAAAACQg1AFAAAAAAAgB6EKAAAAAABADkIVAAAAAACAHIQqAAAAAAAAOQhVAAAAAAAAchCqAAAAAAAA5CBUAQAAAAAAyEGoAgAAAAAAkINQBQAAAAAAIAehCgAAAAAAQA5CFQAAAAAAgByEKgAAAAAAADkIVQAAAAAAAHIQqgAAAAAAAOQgVAEAAAAAAMhBqAIAAAAAAJCDUAUAAAAAACAHoQoAAAAAAEAOQhUAAAAAAIAchCoAAAAAAAA5CFUAAAAAAAByEKoAAAAAAADkIFQBAAAAAADIQagCAAAAAACQg1AFAAAAAAAgB6EKAAAAAABADkIVAAAAAACAHIQqAAAAAAAAOQhVAAAAAAAAchCqAAAAAAAA5CBUAQAAAAAAyOH/A36PH4S5kxtvAAAAAElFTkSuQmCC\" width=\"999.6166666666666\">"
|
|
],
|
|
"text/plain": [
|
|
"<IPython.core.display.HTML object>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"\n",
|
|
"from ipywidgets import *\n",
|
|
"import numpy as np\n",
|
|
"import matplotlib.pyplot as plt\n",
|
|
"import time\n",
|
|
"%matplotlib notebook\n",
|
|
"import math\n",
|
|
"import random\n",
|
|
"\n",
|
|
"time = np.linspace(2019, 2060,30)\n",
|
|
"\n",
|
|
"\n",
|
|
"# annual return of stock market\n",
|
|
"historical_yearly_return = [18.5,5.2,16.8,31.5,-3.1,\n",
|
|
" 30.5,7.6,10.1,1.3,37.6,\n",
|
|
" 23.1,33.4,28.6,21.0,-9.1,\n",
|
|
" -11.9,-22.1,28.7,10.9,4.9,\n",
|
|
" 15.8,5.5,-37.0,26.5,15.1,2.1,16.0,32.4,13.7,1.4,11.9];\n",
|
|
"\n",
|
|
"\n",
|
|
"house_appreciation = [5.5, 3.52, 5.3, 3.9]\n",
|
|
"\n",
|
|
"# income and initial condition parameters\n",
|
|
"starting_sum = widgets.FloatText(value=100000,min = 0, step = 10000, description = \"Starting $\",\n",
|
|
" layout = current_income.layout)\n",
|
|
"\n",
|
|
"\n",
|
|
"display(widgets.HTML(value=\"<h3>Initial savings</h3>\"))\n",
|
|
"display(widgets.HTML(value=\"<p>This amount is the what you have saved up, that you're willing to put down as downpayment for a house</p>\"))\n",
|
|
"display(starting_sum)\n",
|
|
"\n",
|
|
"\n",
|
|
"\n",
|
|
"# buying \n",
|
|
"house_cost = widgets.IntText(value = 600000, min = 400000, step = 10000, description = \"Cost ($)\")\n",
|
|
"tax_rate = widgets.FloatSlider(value = 1, min = 1, step = .1,max=4, description = \"Tax (%)\")\n",
|
|
"interest_rate = widgets.FloatSlider(value = 3, min = 1, step = .5, description = \"Interest (%)\")\n",
|
|
"duration = widgets.IntSlider(value = 20, min = 5, max=30, step= 1, description = \"Duration (y)\")\n",
|
|
"\n",
|
|
"display(widgets.HTML(value=\"<h3>Buying</h3>\"))\n",
|
|
"box1 = widgets.HBox([house_cost, tax_rate])\n",
|
|
"box2 = widgets.HBox([interest_rate, duration])\n",
|
|
"display(widgets.VBox([box1,box2]))\n",
|
|
"\n",
|
|
"\n",
|
|
"\n",
|
|
"\n",
|
|
"\n",
|
|
"# assuming renting and investing\n",
|
|
"display(widgets.HTML(value=\"<h3>Renting and investing</h3>\"))\n",
|
|
"\n",
|
|
"\n",
|
|
"rent_fraction = widgets.IntSlider(value = 50, min = 0, max = 100, step = 5, description = \"Rent frac (%)\")\n",
|
|
"rent_growth = widgets.IntSlider(value = 1, min = 1, max = 30, step = 1, description = \"Rent hike (%)\")\n",
|
|
"rent_box = widgets.HBox([rent_fraction, rent_growth])\n",
|
|
"\n",
|
|
"\n",
|
|
"display(rent_box)\n",
|
|
"\n",
|
|
"\n",
|
|
"fig = plt.figure(figsize=(10, 7),num=None)\n",
|
|
"\n",
|
|
"# first plot shows mean asset value in the two cases. \n",
|
|
"ax_value = fig.add_subplot(2, 1, 1)\n",
|
|
"ax_value.set_ylabel('Mean Asset Value ($)')\n",
|
|
"rent_asset_mean, = ax_value.plot(time,time*0+current_income.value,'r-',linewidth=3)\n",
|
|
"\n",
|
|
"\n",
|
|
"buy_asset_mean, = ax_value.plot(time,time*0+current_income.value,'k-',linewidth=3)\n",
|
|
"\n",
|
|
"\n",
|
|
"# second plot shows anticipated housing costs for both renting and buying\n",
|
|
"# this does not include utilies, etc. which are common to both scenarios\n",
|
|
"ax_costs = fig.add_subplot(2,1,2)\n",
|
|
"ax_costs.set_xlabel('Year')\n",
|
|
"ax_costs.set_ylabel('Housing cost ($)')\n",
|
|
"\n",
|
|
"rent_cost, = ax_costs.plot(time, time*0 + 1, 'r-')\n",
|
|
"buy_cost, = ax_costs.plot(time, time*0 + 1, 'k-')\n",
|
|
"\n",
|
|
"\n",
|
|
"\n",
|
|
"fig.canvas.draw()\n",
|
|
"fig.canvas.draw()\n",
|
|
"fig.canvas.flush_events()\n",
|
|
"\n",
|
|
"\n",
|
|
"def income(growth_rate,starting_income):\n",
|
|
" predicted_income = 0*time + starting_income\n",
|
|
" for i in range(time.size):\n",
|
|
" predicted_income[i] = starting_income*math.pow(1 + growth_rate, i)\n",
|
|
" return predicted_income\n",
|
|
" \n",
|
|
"\n",
|
|
" \n",
|
|
"def estimateStockGrowth(annual_contrib,initial_contrib):\n",
|
|
" # how many samples to randomize across? \n",
|
|
" N = 100\n",
|
|
" \n",
|
|
" ensemble_returns = np.zeros((N,time.size))\n",
|
|
" \n",
|
|
" # initialize\n",
|
|
" ensemble_returns[:,0] = initial_contrib\n",
|
|
" \n",
|
|
" \n",
|
|
" for ti in np.arange(1,time.size):\n",
|
|
" for i in np.arange(0,N):\n",
|
|
" # pick a random yield rate\n",
|
|
" r = random.choice(historical_yearly_return)/100\n",
|
|
" ensemble_returns[i,ti] = ensemble_returns[i,ti-1]*(1+r) + annual_contrib[ti]\n",
|
|
" \n",
|
|
" return ensemble_returns\n",
|
|
" \n",
|
|
"\n",
|
|
"def updateAll(change):\n",
|
|
" # compute annual payments assuming buying a house\n",
|
|
" r = interest_rate.value/100\n",
|
|
" n = duration.value\n",
|
|
" annual_payment = (house_cost.value - starting_sum.value)*(r)*math.pow((1+r),n)/(math.pow(1+r,n) - 1)\n",
|
|
" temp = 0*time + (tax_rate.value/100)*house_cost.value\n",
|
|
" for i in range(0,n):\n",
|
|
" temp[i] = annual_payment\n",
|
|
" \n",
|
|
" # plot monthly housing cost\n",
|
|
" buy_cost.set_ydata(temp/12)\n",
|
|
" to_invest = temp[0] - temp\n",
|
|
" ax_costs.set_ylim([0, annual_payment*.15])\n",
|
|
" \n",
|
|
" # now compute how much rent we can afford\n",
|
|
" temp = 0*time + annual_payment/12*rent_fraction.value/100\n",
|
|
" \n",
|
|
" for i in range(1,time.size):\n",
|
|
" temp[i] = temp[i-1]*(1+rent_growth.value/100)\n",
|
|
" \n",
|
|
" \n",
|
|
" rent_cost.set_ydata(temp)\n",
|
|
" \n",
|
|
" # so now calculate the amount we expect to be able to invest if we rent\n",
|
|
" rent_invest_contrib = annual_payment/12 - temp\n",
|
|
" \n",
|
|
" ensemble_returns = estimateStockGrowth(rent_invest_contrib,starting_sum.value)\n",
|
|
" mean_stock = np.mean(ensemble_returns,axis=0)\n",
|
|
" std_stock = np.std(ensemble_returns,axis=0)\n",
|
|
" \n",
|
|
" \n",
|
|
" rent_asset_mean.set_ydata(mean_stock)\n",
|
|
" ax_value.collections.clear()\n",
|
|
" shade = ax_value.fill_between(time, mean_stock-std_stock, mean_stock + std_stock,color=[1,0.8,0.8],alpha=.2)\n",
|
|
" \n",
|
|
" ax_value.set_ylim([starting_sum.value, max(mean_stock+std_stock)])\n",
|
|
" \n",
|
|
" ax_value.set_yscale('log')\n",
|
|
" \n",
|
|
" \n",
|
|
" # now compute house appreciation over time\n",
|
|
" house_value = 0*time + house_cost.value\n",
|
|
" for i in range(1,time.size):\n",
|
|
" r = random.choice(house_appreciation)/100\n",
|
|
" house_value[i] = house_value[i-1]*(1+r)\n",
|
|
" \n",
|
|
" \n",
|
|
" # after the house is paid off, annual payments are diverted to investments\n",
|
|
" ensemble_returns = estimateStockGrowth(to_invest,0)\n",
|
|
" mean_stock = np.mean(ensemble_returns,axis=0) + house_value\n",
|
|
" std_stock = np.std(ensemble_returns,axis=0)\n",
|
|
" \n",
|
|
"\n",
|
|
" buy_asset_mean.set_ydata(mean_stock)\n",
|
|
"\n",
|
|
" shade = ax_value.fill_between(time, mean_stock-std_stock, mean_stock + std_stock,color=[.8,0.8,0.8],alpha=.2)\n",
|
|
" \n",
|
|
" \n",
|
|
" fig.canvas.draw()\n",
|
|
" fig.canvas.flush_events()\n",
|
|
" \n",
|
|
"\n",
|
|
"\n",
|
|
" \n",
|
|
" \n",
|
|
" \n",
|
|
"# listeners\n",
|
|
"house_cost.observe(updateAll)\n",
|
|
"tax_rate.observe(updateAll)\n",
|
|
"interest_rate.observe(updateAll)\n",
|
|
"duration.observe(updateAll)\n",
|
|
"rent_fraction.observe(updateAll)\n",
|
|
"rent_growth.observe(updateAll)\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": []
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": []
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": []
|
|
}
|
|
],
|
|
"metadata": {
|
|
"kernelspec": {
|
|
"display_name": "Python 3",
|
|
"language": "python",
|
|
"name": "python3"
|
|
},
|
|
"language_info": {
|
|
"codemirror_mode": {
|
|
"name": "ipython",
|
|
"version": 3
|
|
},
|
|
"file_extension": ".py",
|
|
"mimetype": "text/x-python",
|
|
"name": "python",
|
|
"nbconvert_exporter": "python",
|
|
"pygments_lexer": "ipython3",
|
|
"version": "3.6.5"
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 2
|
|
}
|