{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "<img src=\"https://swan.web.cern.ch/sites/swan.web.cern.ch/files/pictures/logo_swan_letters.png\" alt=\"SWAN\" style=\"float: left; width: 20%; margin-right: 15%; margin-left: 15%; margin-bottom: 2.0em;\">\n", "<img src=\"https://spark.apache.org/images/spark-logo-trademark.png\" alt=\"EP-SFT\" style=\"float: left; width: 25%; margin-right: 15%; margin-bottom: 2.0em;\">\n", "<p style=\"clear: both;\">\n", "<div style=\"text-align:center\"><h1>Demonstration of ML Training using Apache Spark MLlib </h1></div>\n", "<div style=\"text-align:center\"><h2><i>Random forest and Gradient-boosted trees</i></h2></div>\n", "<div style=\"text-align:center\"><h3><i>Author: Matteo Migliorini</i></h3></div>\n", "<hr style=\"border-top-width: 4px; border-top-color: #34609b;\">" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## This notebook is part of the Spark training delivered by CERN IT\n", "### Classification with spark.ml\n", "\n", "This notebook implements a system that performs classification of signal vs. background for high energy physics events using PySpark APIs, in particular `spark.ml`\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "scrolled": true }, "outputs": [], "source": [ "#\n", "# Local mode: run this when using CERN SWAN not connected to a cluster \n", "# or run it on a private Jupyter notebook instance\n", "# Dependency: PySpark (use SWAN or pip install pyspark)\n", "#\n", "# For CERN users: when using CERN SWAN connected to a cluster (analytix or cloud resources)\n", "# do not run this but rather click on the (star) button\n", "\n", "\n", "from pyspark.sql import SparkSession\n", "spark = SparkSession.builder \\\n", " .master(\"local[*]\") \\\n", " .appName(\"ML HandsOn 1\") \\\n", " .config(\"spark.driver.memory\",\"4g\") \\\n", " .config(\"spark.ui.showConsoleProgress\", \"false\") \\\n", " .getOrCreate()" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " <div>\n", " <p><b>SparkSession - in-memory</b></p>\n", " \n", " <div>\n", " <p><b>SparkContext</b></p>\n", "\n", " <p><a href=\"http://jupyter-canali:4040\">Spark UI</a></p>\n", "\n", " <dl>\n", " <dt>Version</dt>\n", " <dd><code>v3.3.1</code></dd>\n", " <dt>Master</dt>\n", " <dd><code>local[*]</code></dd>\n", " <dt>AppName</dt>\n", " <dd><code>ML HandsOn 1</code></dd>\n", " </dl>\n", " </div>\n", " \n", " </div>\n", " " ], "text/plain": [ "<pyspark.sql.session.SparkSession at 0x7f186fc48100>" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "spark" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Table of contents\n", "\n", "* [Dataset description](#description)\n", "* [Load the dataset](#load)\n", "* [Feature preparation](#preparation)\n", "* [Random Forest](#rf)\n", " * [Grid Search](#gridSearch)\n", "* [Gradient-Boosting Trees](#gbt)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "<a id=description></a><br>\n", "\n", "## Dataset description" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The dataset used in this example is the same used in [this paper](https://arxiv.org/pdf/1402.4735.pdf) and it has been produced using Monte Carlo simulations. It is a binary classification problem where the goal is to train a classifier able to distinguish between a *signal* process, the production of new theoretical Higgs bosons, and a *background* process with identical decay products but distinct kinematic features. <br>\n", "\n", "Each row of this dataset contains 28 features plus the label:\n", "* 21 *low-level features* which represent the basic measure made by the particle detector\n", " * Momentum of the observed paricles\n", " * Missing transverse momentum \n", " * Jets and b-tagging information\n", "* 7 *high-level features* computed from the low-level features that encode the knowledge of the different intermediate states of the two processes\n", " * Reconstructed invariant mass of the \n", "\n", "The dataset can be downloaded [here](https://archive.ics.uci.edu/ml/datasets/HIGGS) (This version doesn't have the header) or found here `hdfs://analytix/Training/Spark/HiggsClassifier/Higgs10M.csv` . " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "<a id=load></a><br>\n", "\n", "## Load the dataset\n", "\n", "As first a step we will load the sample dataset into a Spark dataframe infering the schema" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "There are 10000 events\n" ] } ], "source": [ "# Local mode: read the data locally from the cloned repo\n", "# there are only 10000 events in this sample dataset\n", "\n", "data = \"../data/Higgs10k.csv.gz\"\n", "\n", "# CERN users\n", "# if you are connected to the Analytix cluster, you have access to the complete dataset\n", "# the complete dataset has 10 milion data points.\n", "# Uncomment this to read data from the anayltix cluster\n", "# data = \"hdfs://analytix/Training/Spark/HiggsClassifier/Higgs10M.csv\"\n", "\n", "df = (spark.read\n", " .format('csv')\n", " .option('header', 'true')\n", " .option('inferschema', 'true')\n", " .load(data)\n", " )\n", "\n", "\n", "total_events = df.count()\n", "print('There are',total_events,'events')" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "scrolled": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "root\n", " |-- label: double (nullable = true)\n", " |-- lepton_pT: double (nullable = true)\n", " |-- lepton_eta: double (nullable = true)\n", " |-- lepton_phi: double (nullable = true)\n", " |-- missing_energy_magnitude: double (nullable = true)\n", " |-- missing_energy_phi: double (nullable = true)\n", " |-- jet1_pt: double (nullable = true)\n", " |-- jet1_eta: double (nullable = true)\n", " |-- jet1_phi: double (nullable = true)\n", " |-- jet1_b-tag: double (nullable = true)\n", " |-- jet2_pt: double (nullable = true)\n", " |-- jet2_eta: double (nullable = true)\n", " |-- jet2_phi: double (nullable = true)\n", " |-- jet2_b-tag: double (nullable = true)\n", " |-- jet3_pt: double (nullable = true)\n", " |-- jet3_eta: double (nullable = true)\n", " |-- jet3_phi: double (nullable = true)\n", " |-- jet3_b-tag: double (nullable = true)\n", " |-- jet4_pt: double (nullable = true)\n", " |-- je4_eta: double (nullable = true)\n", " |-- jet4_phi: double (nullable = true)\n", " |-- jet4_b-tag: double (nullable = true)\n", " |-- m_jj: double (nullable = true)\n", " |-- m_jjj: double (nullable = true)\n", " |-- m_lv: double (nullable = true)\n", " |-- m_jlv: double (nullable = true)\n", " |-- m_bb: double (nullable = true)\n", " |-- m_wbb: double (nullable = true)\n", " |-- m_wwbb: double (nullable = true)\n", "\n" ] } ], "source": [ "df.printSchema()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can count how many events there are foreach class to see if the dataset is unbalanced" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "+-----+-----+\n", "|label|count|\n", "+-----+-----+\n", "| 0.0| 4705|\n", "| 1.0| 5295|\n", "+-----+-----+\n", "\n" ] } ], "source": [ "df.groupBy('label').count().show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As we can see the dataset seems to be balanced, hence we can split it into `train` and `test` dataframes.<br>\n", "The fraction of events used for the training stage is $0.9$ and the remainig $0.1$ will be used to test our classifier. In this way we will have approximately $1000$ events for the testing phase." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "train, test = df.randomSplit([0.9,0.1])" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "scrolled": false }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "2022-09-29 21:04:16,677 WARN util.package: Truncated the string representation of a plan since it was too large. This behavior can be adjusted by setting 'spark.sql.debug.maxToStringFields'.\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Events for the training 9029\n", "Events for the validation 971\n" ] } ], "source": [ "print('Events for the training {}'.format(train.count()))\n", "print('Events for the validation {}'.format(test.count()))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "<a id=visualization></a><br>\n", "\n", "## Data visualization\n", "\n", "We can plot some features to see how data are distributed with respect the two classes" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "import matplotlib.pyplot as plt \n", "from pyspark.sql.functions import col\n", "%matplotlib notebook\n", "\n", "def compute_hist(data, feature, target='label', n_bins=100, x_lim=[0,3]):\n", " \n", " ## Fix the range\n", " data = data.where((col(feature)<=x_lim[1]) &\n", " (col(feature)>=x_lim[0]))\n", " \n", " sgn = data.where(col(target)==1.0) \n", " bkg = data.where(col(target)==0.0)\n", "\n", " ## Compute the histograms\n", " bins_sgn, counts_sgn = sgn.select(feature).rdd.flatMap(lambda x: x).histogram(n_bins)\n", " bins_bkg, counts_bkg = bkg.select(feature).rdd.flatMap(lambda x: x).histogram(n_bins)\n", " \n", " return (bins_sgn, counts_sgn), (bins_bkg, counts_bkg)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", "/* global mpl */\n", "window.mpl = {};\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(\n", " '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", "\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 = document.createElement('div');\n", " this.root.setAttribute('style', 'display: inline-block');\n", " this._root_extra_style(this.root);\n", "\n", " parent_element.appendChild(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 (fig.ratio !== 1) {\n", " fig.send_message('set_dpi_ratio', { dpi_ratio: fig.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 = document.createElement('div');\n", " titlebar.classList =\n", " 'ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix';\n", " var titletext = document.createElement('div');\n", " titletext.classList = 'ui-dialog-title';\n", " titletext.setAttribute(\n", " 'style',\n", " 'width: 100%; text-align: center; padding: 3px;'\n", " );\n", " titlebar.appendChild(titletext);\n", " this.root.appendChild(titlebar);\n", " this.header = titletext;\n", "};\n", "\n", "mpl.figure.prototype._canvas_extra_style = function (_canvas_div) {};\n", "\n", "mpl.figure.prototype._root_extra_style = function (_canvas_div) {};\n", "\n", "mpl.figure.prototype._init_canvas = function () {\n", " var fig = this;\n", "\n", " var canvas_div = (this.canvas_div = document.createElement('div'));\n", " canvas_div.setAttribute(\n", " 'style',\n", " 'border: 1px solid #ddd;' +\n", " 'box-sizing: content-box;' +\n", " 'clear: both;' +\n", " 'min-height: 1px;' +\n", " 'min-width: 1px;' +\n", " 'outline: 0;' +\n", " 'overflow: hidden;' +\n", " 'position: relative;' +\n", " 'resize: both;'\n", " );\n", "\n", " function on_keyboard_event_closure(name) {\n", " return function (event) {\n", " return fig.key_event(event, name);\n", " };\n", " }\n", "\n", " canvas_div.addEventListener(\n", " 'keydown',\n", " on_keyboard_event_closure('key_press')\n", " );\n", " canvas_div.addEventListener(\n", " 'keyup',\n", " on_keyboard_event_closure('key_release')\n", " );\n", "\n", " this._canvas_extra_style(canvas_div);\n", " this.root.appendChild(canvas_div);\n", "\n", " var canvas = (this.canvas = document.createElement('canvas'));\n", " canvas.classList.add('mpl-canvas');\n", " canvas.setAttribute('style', 'box-sizing: content-box;');\n", "\n", " this.context = canvas.getContext('2d');\n", "\n", " var backingStore =\n", " this.context.backingStorePixelRatio ||\n", " this.context.webkitBackingStorePixelRatio ||\n", " this.context.mozBackingStorePixelRatio ||\n", " this.context.msBackingStorePixelRatio ||\n", " this.context.oBackingStorePixelRatio ||\n", " this.context.backingStorePixelRatio ||\n", " 1;\n", "\n", " this.ratio = (window.devicePixelRatio || 1) / backingStore;\n", "\n", " var rubberband_canvas = (this.rubberband_canvas = document.createElement(\n", " 'canvas'\n", " ));\n", " rubberband_canvas.setAttribute(\n", " 'style',\n", " 'box-sizing: content-box; position: absolute; left: 0; top: 0; z-index: 1;'\n", " );\n", "\n", " // Apply a ponyfill if ResizeObserver is not implemented by browser.\n", " if (this.ResizeObserver === undefined) {\n", " if (window.ResizeObserver !== undefined) {\n", " this.ResizeObserver = window.ResizeObserver;\n", " } else {\n", " var obs = _JSXTOOLS_RESIZE_OBSERVER({});\n", " this.ResizeObserver = obs.ResizeObserver;\n", " }\n", " }\n", "\n", " this.resizeObserverInstance = new this.ResizeObserver(function (entries) {\n", " var nentries = entries.length;\n", " for (var i = 0; i < nentries; i++) {\n", " var entry = entries[i];\n", " var width, height;\n", " if (entry.contentBoxSize) {\n", " if (entry.contentBoxSize instanceof Array) {\n", " // Chrome 84 implements new version of spec.\n", " width = entry.contentBoxSize[0].inlineSize;\n", " height = entry.contentBoxSize[0].blockSize;\n", " } else {\n", " // Firefox implements old version of spec.\n", " width = entry.contentBoxSize.inlineSize;\n", " height = entry.contentBoxSize.blockSize;\n", " }\n", " } else {\n", " // Chrome <84 implements even older version of spec.\n", " width = entry.contentRect.width;\n", " height = entry.contentRect.height;\n", " }\n", "\n", " // Keep the size of the canvas and rubber band canvas in sync with\n", " // the canvas container.\n", " if (entry.devicePixelContentBoxSize) {\n", " // Chrome 84 implements new version of spec.\n", " canvas.setAttribute(\n", " 'width',\n", " entry.devicePixelContentBoxSize[0].inlineSize\n", " );\n", " canvas.setAttribute(\n", " 'height',\n", " entry.devicePixelContentBoxSize[0].blockSize\n", " );\n", " } else {\n", " canvas.setAttribute('width', width * fig.ratio);\n", " canvas.setAttribute('height', height * fig.ratio);\n", " }\n", " canvas.setAttribute(\n", " 'style',\n", " 'width: ' + width + 'px; height: ' + height + 'px;'\n", " );\n", "\n", " rubberband_canvas.setAttribute('width', width);\n", " rubberband_canvas.setAttribute('height', height);\n", "\n", " // And update the size in Python. We ignore the initial 0/0 size\n", " // that occurs as the element is placed into the DOM, which should\n", " // otherwise not happen due to the minimum size styling.\n", " if (fig.ws.readyState == 1 && width != 0 && height != 0) {\n", " fig.request_resize(width, height);\n", " }\n", " }\n", " });\n", " this.resizeObserverInstance.observe(canvas_div);\n", "\n", " function on_mouse_event_closure(name) {\n", " return function (event) {\n", " return fig.mouse_event(event, name);\n", " };\n", " }\n", "\n", " rubberband_canvas.addEventListener(\n", " 'mousedown',\n", " on_mouse_event_closure('button_press')\n", " );\n", " rubberband_canvas.addEventListener(\n", " 'mouseup',\n", " on_mouse_event_closure('button_release')\n", " );\n", " rubberband_canvas.addEventListener(\n", " 'dblclick',\n", " on_mouse_event_closure('dblclick')\n", " );\n", " // Throttle sequential mouse events to 1 every 20ms.\n", " rubberband_canvas.addEventListener(\n", " 'mousemove',\n", " on_mouse_event_closure('motion_notify')\n", " );\n", "\n", " rubberband_canvas.addEventListener(\n", " 'mouseenter',\n", " on_mouse_event_closure('figure_enter')\n", " );\n", " rubberband_canvas.addEventListener(\n", " 'mouseleave',\n", " on_mouse_event_closure('figure_leave')\n", " );\n", "\n", " canvas_div.addEventListener('wheel', function (event) {\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", " on_mouse_event_closure('scroll')(event);\n", " });\n", "\n", " canvas_div.appendChild(canvas);\n", " canvas_div.appendChild(rubberband_canvas);\n", "\n", " this.rubberband_context = rubberband_canvas.getContext('2d');\n", " this.rubberband_context.strokeStyle = '#000000';\n", "\n", " this._resize_canvas = function (width, height, forward) {\n", " if (forward) {\n", " canvas_div.style.width = width + 'px';\n", " canvas_div.style.height = height + 'px';\n", " }\n", " };\n", "\n", " // Disable right mouse context menu.\n", " this.rubberband_canvas.addEventListener('contextmenu', function (_e) {\n", " event.preventDefault();\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 toolbar = document.createElement('div');\n", " toolbar.classList = 'mpl-toolbar';\n", " this.root.appendChild(toolbar);\n", "\n", " function on_click_closure(name) {\n", " return function (_event) {\n", " return fig.toolbar_button_onclick(name);\n", " };\n", " }\n", "\n", " function on_mouseover_closure(tooltip) {\n", " return function (event) {\n", " if (!event.currentTarget.disabled) {\n", " return fig.toolbar_button_onmouseover(tooltip);\n", " }\n", " };\n", " }\n", "\n", " fig.buttons = {};\n", " var buttonGroup = document.createElement('div');\n", " buttonGroup.classList = 'mpl-button-group';\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", " /* Instead of a spacer, we start a new button group. */\n", " if (buttonGroup.hasChildNodes()) {\n", " toolbar.appendChild(buttonGroup);\n", " }\n", " buttonGroup = document.createElement('div');\n", " buttonGroup.classList = 'mpl-button-group';\n", " continue;\n", " }\n", "\n", " var button = (fig.buttons[name] = document.createElement('button'));\n", " button.classList = 'mpl-widget';\n", " button.setAttribute('role', 'button');\n", " button.setAttribute('aria-disabled', 'false');\n", " button.addEventListener('click', on_click_closure(method_name));\n", " button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n", "\n", " var icon_img = document.createElement('img');\n", " icon_img.src = '_images/' + image + '.png';\n", " icon_img.srcset = '_images/' + image + '_large.png 2x';\n", " icon_img.alt = tooltip;\n", " button.appendChild(icon_img);\n", "\n", " buttonGroup.appendChild(button);\n", " }\n", "\n", " if (buttonGroup.hasChildNodes()) {\n", " toolbar.appendChild(buttonGroup);\n", " }\n", "\n", " var fmt_picker = document.createElement('select');\n", " fmt_picker.classList = 'mpl-widget';\n", " toolbar.appendChild(fmt_picker);\n", " this.format_dropdown = fmt_picker;\n", "\n", " for (var ind in mpl.extensions) {\n", " var fmt = mpl.extensions[ind];\n", " var option = document.createElement('option');\n", " option.selected = fmt === mpl.default_extension;\n", " option.innerHTML = fmt;\n", " fmt_picker.appendChild(option);\n", " }\n", "\n", " var status_bar = document.createElement('span');\n", " status_bar.classList = 'mpl-message';\n", " toolbar.appendChild(status_bar);\n", " this.message = status_bar;\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", "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", "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], msg['forward']);\n", " fig.send_message('refresh', {});\n", " }\n", "};\n", "\n", "mpl.figure.prototype.handle_rubberband = function (fig, msg) {\n", " var x0 = msg['x0'] / fig.ratio;\n", " var y0 = (fig.canvas.height - msg['y0']) / fig.ratio;\n", " var x1 = msg['x1'] / fig.ratio;\n", " var y1 = (fig.canvas.height - msg['y1']) / fig.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,\n", " 0,\n", " fig.canvas.width / fig.ratio,\n", " fig.canvas.height / fig.ratio\n", " );\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", " 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.handle_history_buttons = function (fig, msg) {\n", " for (var key in msg) {\n", " if (!(key in fig.buttons)) {\n", " continue;\n", " }\n", " fig.buttons[key].disabled = !msg[key];\n", " fig.buttons[key].setAttribute('aria-disabled', !msg[key]);\n", " }\n", "};\n", "\n", "mpl.figure.prototype.handle_navigate_mode = function (fig, msg) {\n", " if (msg['mode'] === 'PAN') {\n", " fig.buttons['Pan'].classList.add('active');\n", " fig.buttons['Zoom'].classList.remove('active');\n", " } else if (msg['mode'] === 'ZOOM') {\n", " fig.buttons['Pan'].classList.remove('active');\n", " fig.buttons['Zoom'].classList.add('active');\n", " } else {\n", " fig.buttons['Pan'].classList.remove('active');\n", " fig.buttons['Zoom'].classList.remove('active');\n", " }\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", " var img = evt.data;\n", " if (img.type !== 'image/png') {\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", " img.type = 'image/png';\n", " }\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", "\n", " fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n", " img\n", " );\n", " fig.updated_canvas_event();\n", " fig.waiting = false;\n", " return;\n", " } else if (\n", " typeof evt.data === 'string' &&\n", " evt.data.slice(0, 21) === 'data:image/png;base64'\n", " ) {\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(\n", " \"No handler for the '\" + msg_type + \"' message type: \",\n", " msg\n", " );\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(\n", " \"Exception inside the 'handler_\" + msg_type + \"' callback:\",\n", " e,\n", " e.stack,\n", " msg\n", " );\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", " }\n", " if (e.target) {\n", " targ = e.target;\n", " } else if (e.srcElement) {\n", " targ = e.srcElement;\n", " }\n", " if (targ.nodeType === 3) {\n", " // defeat Safari bug\n", " targ = targ.parentNode;\n", " }\n", "\n", " // pageX,Y are the mouse positions relative to the document\n", " var boundingRect = targ.getBoundingClientRect();\n", " var x = e.pageX - (boundingRect.left + document.body.scrollLeft);\n", " var y = e.pageY - (boundingRect.top + document.body.scrollTop);\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", " }\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", " this.canvas.focus();\n", " this.canvas_div.focus();\n", " }\n", "\n", " var x = canvas_pos.x * this.ratio;\n", " var y = canvas_pos.y * this.ratio;\n", "\n", " this.send_message(name, {\n", " x: x,\n", " y: y,\n", " button: event.button,\n", " step: event.step,\n", " guiEvent: simpleKeys(event),\n", " });\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", " // Prevent repeat events\n", " if (name === 'key_press') {\n", " if (event.key === this._key) {\n", " return;\n", " } else {\n", " this._key = event.key;\n", " }\n", " }\n", " if (name === 'key_release') {\n", " this._key = null;\n", " }\n", "\n", " var value = '';\n", " if (event.ctrlKey && event.key !== 'Control') {\n", " value += 'ctrl+';\n", " }\n", " else if (event.altKey && event.key !== 'Alt') {\n", " value += 'alt+';\n", " }\n", " else if (event.shiftKey && event.key !== 'Shift') {\n", " value += 'shift+';\n", " }\n", "\n", " value += 'k' + event.key;\n", "\n", " this._key_event_extra(event, name);\n", "\n", " this.send_message(name, { key: value, 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", "\n", "///////////////// REMAINING CONTENT GENERATED BY embed_js.py /////////////////\n", "// prettier-ignore\n", "var _JSXTOOLS_RESIZE_OBSERVER=function(A){var t,i=new WeakMap,n=new WeakMap,a=new WeakMap,r=new WeakMap,o=new Set;function s(e){if(!(this instanceof s))throw new TypeError(\"Constructor requires 'new' operator\");i.set(this,e)}function h(){throw new TypeError(\"Function is not a constructor\")}function c(e,t,i,n){e=0 in arguments?Number(arguments[0]):0,t=1 in arguments?Number(arguments[1]):0,i=2 in arguments?Number(arguments[2]):0,n=3 in arguments?Number(arguments[3]):0,this.right=(this.x=this.left=e)+(this.width=i),this.bottom=(this.y=this.top=t)+(this.height=n),Object.freeze(this)}function d(){t=requestAnimationFrame(d);var s=new WeakMap,p=new Set;o.forEach((function(t){r.get(t).forEach((function(i){var r=t instanceof window.SVGElement,o=a.get(t),d=r?0:parseFloat(o.paddingTop),f=r?0:parseFloat(o.paddingRight),l=r?0:parseFloat(o.paddingBottom),u=r?0:parseFloat(o.paddingLeft),g=r?0:parseFloat(o.borderTopWidth),m=r?0:parseFloat(o.borderRightWidth),w=r?0:parseFloat(o.borderBottomWidth),b=u+f,F=d+l,v=(r?0:parseFloat(o.borderLeftWidth))+m,W=g+w,y=r?0:t.offsetHeight-W-t.clientHeight,E=r?0:t.offsetWidth-v-t.clientWidth,R=b+v,z=F+W,M=r?t.width:parseFloat(o.width)-R-E,O=r?t.height:parseFloat(o.height)-z-y;if(n.has(t)){var k=n.get(t);if(k[0]===M&&k[1]===O)return}n.set(t,[M,O]);var S=Object.create(h.prototype);S.target=t,S.contentRect=new c(u,d,M,O),s.has(i)||(s.set(i,[]),p.add(i)),s.get(i).push(S)}))})),p.forEach((function(e){i.get(e).call(e,s.get(e),e)}))}return s.prototype.observe=function(i){if(i instanceof window.Element){r.has(i)||(r.set(i,new Set),o.add(i),a.set(i,window.getComputedStyle(i)));var n=r.get(i);n.has(this)||n.add(this),cancelAnimationFrame(t),t=requestAnimationFrame(d)}},s.prototype.unobserve=function(i){if(i instanceof window.Element&&r.has(i)){var n=r.get(i);n.has(this)&&(n.delete(this),n.size||(r.delete(i),o.delete(i))),n.size||r.delete(i),o.size||cancelAnimationFrame(t)}},A.DOMRectReadOnly=c,A.ResizeObserver=s,A.ResizeObserverEntry=h,A}; // eslint-disable-line\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\", \"Left button pans, Right button zooms\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n", "\n", "mpl.extensions = [\"eps\", \"jpeg\", \"pgf\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n", "\n", "mpl.default_extension = \"png\";/* global mpl */\n", "\n", "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.binaryType = comm.kernel.ws.binaryType;\n", " ws.readyState = comm.kernel.ws.readyState;\n", " function updateReadyState(_event) {\n", " if (comm.kernel.ws) {\n", " ws.readyState = comm.kernel.ws.readyState;\n", " } else {\n", " ws.readyState = 3; // Closed state.\n", " }\n", " }\n", " comm.kernel.ws.addEventListener('open', updateReadyState);\n", " comm.kernel.ws.addEventListener('close', updateReadyState);\n", " comm.kernel.ws.addEventListener('error', updateReadyState);\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", " var data = msg['content']['data'];\n", " if (data['blob'] !== undefined) {\n", " data = {\n", " data: new Blob(msg['buffers'], { type: data['blob'] }),\n", " };\n", " }\n", " // Pass the mpl event to the overridden (by mpl) onmessage function.\n", " ws.onmessage(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 = document.getElementById(id);\n", " var ws_proxy = comm_websocket_adapter(comm);\n", "\n", " function ondownload(figure, _format) {\n", " window.open(figure.canvas.toDataURL());\n", " }\n", "\n", " var fig = new mpl.figure(id, ws_proxy, ondownload, element);\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;\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", " fig.cell_info[0].output_area.element.on(\n", " 'cleared',\n", " { fig: fig },\n", " fig._remove_fig_handler\n", " );\n", "};\n", "\n", "mpl.figure.prototype.handle_close = function (fig, msg) {\n", " var width = fig.canvas.width / fig.ratio;\n", " fig.cell_info[0].output_area.element.off(\n", " 'cleared',\n", " fig._remove_fig_handler\n", " );\n", " fig.resizeObserverInstance.unobserve(fig.canvas_div);\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.innerHTML =\n", " '<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 / this.ratio;\n", " var dataURL = this.canvas.toDataURL();\n", " this.cell_info[1]['text/html'] =\n", " '<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 () {\n", " fig.push_to_output();\n", " }, 1000);\n", "};\n", "\n", "mpl.figure.prototype._init_toolbar = function () {\n", " var fig = this;\n", "\n", " var toolbar = document.createElement('div');\n", " toolbar.classList = 'btn-toolbar';\n", " this.root.appendChild(toolbar);\n", "\n", " function on_click_closure(name) {\n", " return function (_event) {\n", " return fig.toolbar_button_onclick(name);\n", " };\n", " }\n", "\n", " function on_mouseover_closure(tooltip) {\n", " return function (event) {\n", " if (!event.currentTarget.disabled) {\n", " return fig.toolbar_button_onmouseover(tooltip);\n", " }\n", " };\n", " }\n", "\n", " fig.buttons = {};\n", " var buttonGroup = document.createElement('div');\n", " buttonGroup.classList = 'btn-group';\n", " var button;\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", " /* Instead of a spacer, we start a new button group. */\n", " if (buttonGroup.hasChildNodes()) {\n", " toolbar.appendChild(buttonGroup);\n", " }\n", " buttonGroup = document.createElement('div');\n", " buttonGroup.classList = 'btn-group';\n", " continue;\n", " }\n", "\n", " button = fig.buttons[name] = document.createElement('button');\n", " button.classList = 'btn btn-default';\n", " button.href = '#';\n", " button.title = name;\n", " button.innerHTML = '<i class=\"fa ' + image + ' fa-lg\"></i>';\n", " button.addEventListener('click', on_click_closure(method_name));\n", " button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n", " buttonGroup.appendChild(button);\n", " }\n", "\n", " if (buttonGroup.hasChildNodes()) {\n", " toolbar.appendChild(buttonGroup);\n", " }\n", "\n", " // Add the status bar.\n", " var status_bar = document.createElement('span');\n", " status_bar.classList = 'mpl-message pull-right';\n", " toolbar.appendChild(status_bar);\n", " this.message = status_bar;\n", "\n", " // Add the close button to the window.\n", " var buttongrp = document.createElement('div');\n", " buttongrp.classList = 'btn-group inline pull-right';\n", " button = document.createElement('button');\n", " button.classList = 'btn btn-mini btn-primary';\n", " button.href = '#';\n", " button.title = 'Stop Interaction';\n", " button.innerHTML = '<i class=\"fa fa-power-off icon-remove icon-large\"></i>';\n", " button.addEventListener('click', function (_evt) {\n", " fig.handle_close(fig, {});\n", " });\n", " button.addEventListener(\n", " 'mouseover',\n", " on_mouseover_closure('Stop Interaction')\n", " );\n", " buttongrp.appendChild(button);\n", " var titlebar = this.root.querySelector('.ui-dialog-titlebar');\n", " titlebar.insertBefore(buttongrp, titlebar.firstChild);\n", "};\n", "\n", "mpl.figure.prototype._remove_fig_handler = function (event) {\n", " var fig = event.data.fig;\n", " if (event.target !== this) {\n", " // Ignore bubbled events from children.\n", " return;\n", " }\n", " fig.close_ws(fig, {});\n", "};\n", "\n", "mpl.figure.prototype._root_extra_style = function (el) {\n", " el.style.boxSizing = 'content-box'; // override notebook setting of border-box.\n", "};\n", "\n", "mpl.figure.prototype._canvas_extra_style = function (el) {\n", " // this is important to make the div 'focusable\n", " el.setAttribute('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", " } else {\n", " // location in version 2\n", " IPython.keyboard_manager.register_events(el);\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", "\n", " // Check for shift+enter\n", " if (event.shiftKey && event.which === 13) {\n", " this.canvas_div.blur();\n", " // select the cell after this one\n", " var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n", " IPython.notebook.select(index + 1);\n", " }\n", "};\n", "\n", "mpl.figure.prototype.handle_save = function (fig, _msg) {\n", " fig.ondownload(fig, null);\n", "};\n", "\n", "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(\n", " 'matplotlib',\n", " mpl.mpl_figure_comm\n", " );\n", "}\n" ], "text/plain": [ "<IPython.core.display.Javascript object>" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "<img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAvoAAAI7CAYAAACdqz/EAAAgAElEQVR4XuzdC9xNZfr/8euHaDqQqAml5FgTlUMhEoZMocNMatC5MU3pJB0Nw4R0MBWlUkoHRQclxjQ0vw6OhQ4zEyGqJ0OFckgn5N91/2bv/3PyPOva+157r732Z71e85oZz7rvtdb7utR3r+dea//Prp82YUMAAQQQQAABBBBAAIHYCPyPbgT92NSTC0EAAQQQQAABBBBAwAkQ9GkEBBBAAAEEEEAAAQRiKEDQj2FRuSQEEEAAAQQQQAABBAj69AACCCCAAAIIIIAAAjEUIOjHsKhcEgIIIIAAAggggAACBH16AAEEEEAAAQQQQACBGAoQ9GNYVC4JAQQQQAABBBBAAAGCPj2AAAIIIIAAAggggEAMBQj6MSwql4QAAggggAACCCCAAEGfHkAAAQQQQAABBBBAIIYCBP0YFpVLQgABBBBAAAEEEECAoE8PIIAAAggggAACCCAQQwGCfgyLyiUhgAACCCCAAAIIIEDQpwcQQAABBBBAAAEEEIihAEE/hkXlkhBAAAEEEEAAAQQQIOjTAwgggAACCCCAAAIIxFCAoB/DonJJCCCAAAIIIIAAAggQ9OkBBBBAAAEEEEAAAQRiKEDQj2FRuSQEEEAAAQQQQAABBAj69AACCCCAAAIIIIAAAjEUIOjHsKhcEgIIIIAAAggggAACBH16AAEEEEAAAQQQQACBGAoQ9GNYVC4JAQQQQAABBBBAAAGCPj2AAAIIIIAAAggggEAMBQj6MSwql4QAAggggAACCCCAAEGfHkAAAQQQQAABBBBAIIYCBP0YFpVLQgABBBBAAAEEEECAoE8PIIAAAggggAACCCAQQwGCfgyLyiUhgAACCCCAAAIIIEDQpwcQQAABBBBAAAEEEIihAEE/hkXlkhBAAAEEEEAAAQQQIOjTAwgggAACCCCAAAIIxFCAoB/DonJJCCCAAAIIIIAAAggQ9OkBBBBAAAEEEEAAAQRiKEDQj2FRuSQEEEAAAQQQQAABBAj69AACCCCAAAIIIIAAAjEUIOjHsKhcEgIIIIAAAggggAACBH16AAEEEEAAAQQQQACBGAoQ9GNYVC4JAQQQQAABBBBAAAGCPj2AAAIIIIAAAggggEAMBQj6MSwql4QAAggggAACCCCAAEGfHkAAAQQQQAABBBBAIIYCBP0YFpVLQgABBBBAAAEEEECAoE8PIIAAAggggAACCCAQQwGCfgyLyiUhgEBwgddee006duwojz76qFxwwQXBB6a5Z2nHnThxolx44YXy6quvykknnZTmEYIPz5ZB8DMsueeGDRvkmmuukVdeeUU+++wzOe200+TFF19MZ0rGIoAAArETIOjHrqRcEAL5K5AIrAmBChUqyL777iu1atWSY489Vn7zm9+4QFixYsUkUjoh9+OPPxYN56effrocc8wxJvhMB/2yzjUdA9NFe9z5vPPOk2eeeUb++Mc/ymGHHSaHHHKIdOjQweMRmAoBBBDIfQGCfu7XkCtAAIH/CiQC69lnny3du3eXXbt2yddffy0rV66UGTNmuP9u1aqVTJ06VQ4++GA36scff5QffvhB9thjjyIfAIKgphOQSztumHf0yzrXdAyCOIWxj354O+6442TatGlhTM+cCCCAQCwECPqxKCMXgQACKpAIs7feeqvceOONRVA09N9+++3uz5s1ayZLliyRSpUqpQVnDfp6Dt9++63stddepR43W0E/LYQsDdbf1uhdfTVjQwABBBAoXYCgT2cggEBsBMoK+omL/O1vfyuTJ0+WJ598Uvr06ZP8cFB8jf53330no0aNcvsWFBS4DwW1a9eWrl27ypgxY2To0KEybNiwEna6fETPIxHaZ8+eLW+++aZ7BuCTTz6RO+64Q66++upSj1t4zNy5c92Yzz//XBo0aCA33HCDnHvuucnjJY7/0UcfuaUrhTdd369LdfQ/upV3rrv7wPLll1+6sXrXfN26dVKzZk3p1q2b/PnPf07+RkTnT5z3P/7xD3n77bflwQcfdGZ16tSRK664wq2lD7IFOZ4+R/HYY4+VmC7Icw2DBg2SkSNHynvvvSePP/64W/qja/1btGghDz30kDRp0sRdq34gfPfdd6VGjRrug+Fll10W5PTZBwEEEIicAEE/ciXhhBBAIFWBIEFfA2GnTp3knHPOkaeffnq3Qf/iiy+WRx55xIXrtm3buiU+H374oXv485///Kf7z5QpU1xw7Nevn7Rv396d9s9//nPp0qVLMvzq2n390KDz7L///tK4cWP38G9Za/SbN28u27Ztcw8H651rDdLLli2T+++/Xy699NIi4T1I0C/vXEs7ly1btsjxxx8vH3zwgbtz3rp1a1m6dKkL8Rr4Fy1a5IJ84aCv+2/dulX69u0r++yzjwvTixcvds7qXdYW9HgLFiyQVatWOU81V3vd1Fzty9p+9atfiX4YOfLII6VRo0bugWe9vrFjx7plQLrcS60vuugiqVq1qvzlL39xH870w4v1GYxUe5hxCCCAgE8Bgr5PTeZCAIGsCgQJ+nrXWO/UapjW5Tu7u5utoVzD7cyZM3d7TWUt3Unc5dZAqUFx7733LjJPWUG/bt267oNEtWrV3BgNwRo0169fL//5z39cCLXc0dc5yjrX0n6mD7mOGDFCRo8eLQMGDEie+/PPP+8eatagrUG+cNDXJVFvvfWWVKlSxf25flg59NBDXaieP39+mb1hOZ5O9NO/vOT88883Ld056KCD3G9IJkyY4MJ8YvvlL3/pPgC0adPGfZBLLK3S5zp69OhR5ANWVhucgyOAAAJGAYK+EYzdEUAgugJBgv6OHTvcg7e6HEYfzt1dAD788MNl586d7iHepk2blnrRQYL+XXfd5ZbqFN/KCvqlPWOgd5evvfZaefbZZ13QDjvo/+IXv3CvrdQlO5UrVy5y+kcddZR8+umn8tVXXyV/46CvBR0/frz87ne/K7KvBmW9C69LZMraLMdLJeivXbvW/QZCl179/e9/L3Iqv/71r90D2vpbE12+k9jeeOMN9yafwtel/19/Y1H8OhNjyvt5dP/2cGYIIBBHAYJ+HKvKNSGQpwJBgn7QO/rTp093gU7vpterV88tt9GlHfp6Tl1Oo1uQoP/Xv/5VTjnlFFPQ1/fB63EKby+//LLo0hN9bkDX64cd9H/2s5/J0UcfLQsXLixx7roMR5ct6d3xAw88MLlMSe+Gd+7cucj+iTX1+iByWZvleKkE/cTd+eJ383UuXcqjz2Dob1EKb+PGjZPLL79c5syZI+3atXM/2m+//URrob/tKW0r7+d5+leTy0YAgSwJEPSzBM9hEUDAv0CQoP+///u/Loz27t1bJk2aVGZY1zvWunTn9ddfd0s6dD28rkPXdf4aTIME/d09JFrWHX19ILRnz56lBv3bbrtNrr/+evcgsIb90tboayhds2ZN8mHc8j6UlHYuen26XEjvxhff9PWl+iBr8aBf2rVagn7Q46US9G+55RYZMmSIe87giCOOSF6SLi/SpVCXXHKJe/6g8KZ/pg9Eb9682T1zoNb169d3/1+/n6H4Vt7P/Xc8MyKAAAJlCxD06RAEEIiNQJCgn7gb/dRTT4m+gaessF4cZvDgwTJ8+HD3kK4uVdEPAPpAZ2nfqlveqzLTXbqjD5BeeeWV7jkDfd6g8KZvB9LlNom37ujPyjrX0s4lsZRGl+/oUqfCmy5l0rfqFF+6k07QtxwvlaB/xhlniL4BSX9Dk/iNjM4zb948d7deQ37iwd7Etaqrvg5Vl/Topst7dPmUftDSh7D1Q4I+HK3/O8jPY/MXjQtBAIGcESDo50ypOFEEEChPoKygr0tH9NWWuuxF7xzr22D0G3JLC7m6Nl/fHqPLMApvL7zwgpx55ply5513usCnIbtly5YlHljVMekE/eIP4+q56DIafRhX79TrQ7qzZs2Sk08+WRJ3+BPnqa8N1Qdl9SHYwkG/rHMt62Hc4s8Y6LIiDc36Jp7Eay7Lutagd/QTD+MGOV4qQT/x7bm6DKfwpq9Kveqqq1w/6Gs2E5t+iZretdfnIfQ3P7rpbwT01Zv6DIUG/H//+9/uzT9aixNPPLHcn5fXv/wcAQQQ8C1A0PctynwIIJA1gURgTXwzrp6IfjOuvhZT19yvWLHCvUZR78wmXg1ZWsjdtGmT6Dev6vIZ/VCgr23U1yzq6y31Dq+u5dZ1+/q/9We6Tn3gwIHug4H+b319ZzpBP/F6Tf2tgb5dJvF6zXvvvdetGddNX/epd9b12vRd9Q0bNnRh9aWXXnJLUbZv314k6Jd1rqUZ6J1vtVIzfbuN/m+9s/3AAw/s9vWa6dzRtxzPGvQTz2VooL/77ruL9Kd+ENHXf+qHqcIPHeubkjT4Jz7U6SB9sFjDv/42KLHpsxv6YUDrUt7Ps/YXgwMjgEDeChD087b0XDgC8RNIBNbElWlI1rXVupRFw7MGMn3IVe/kJ7bSQq7ezf3Tn/4kup5fg7R+WNBXM+obVW666aYia7x1Db/ejda1399//73bR+dMJ+jrEhO986xz6NIZfUOQLhfRwF140/fJ6/IdXZaj16p3lfV1mHq3ufAXZiXG7O5cd7d8aePGje5ZAL2Lr+ehryXVB4J394VZ6QR9Pcegx7MGfX11pr5CU18HWvhLx3Qe/bCkAV9/41F404d2dY2+9oCGed0OOeQQ0Qd0NdAnNl1ypM9KnHXWWeX+PH5/47giBBCIugBBP+oV4vwQQAABBLIuoB9C9IvC9FuO9bcbuuk37Or6fn1eQX/DUtbPq1evnvVr4AQQQCD/BAj6+VdzrhgBBBBAwCigb13S32b8/ve/l3vuucd9B4PexdffsuiyrfJ+bjwcuyOAAAJeBAj6XhiZBAEEEEAgzgK6Vl/f0KMPSusSIP3mZP3G4MQzE+X9PM42XBsCCERXgKAf3dpwZggggAACCCCAAAIIpCxA0E+ZjoEIIIAAAggggAACCERXgKAf3dpwZggggAACCCCAAAIIpCxA0E+ZjoEIIIAAAggggAACCERXgKAf3dpwZggggAACCCCAAAIIpCxA0E+ZLv2B+qU8+g2b+k2ahb/AJ/2ZmQEBBBBAAAEEEIiXwM6dO+WLL76QZs2aFfkm63hdpd+rIej79TTNpl9X36pVK9MYdkYAAQQQQAABBPJZYNGiRdKyZct8Jgh87QT9wFT+d9RvUzz00ENFG7ZWrVr+D8CMCCCAAAIIIIBATATWrVvnbpB+8skn7jst2MoXIOiXbxTaHv/5z3/k4IMPljVr1kidOnVCOw4TI4AAAggggAACuS5AbrJXkKBvN/M2gob1RslECCCAAAIIIBBzAXKTvcAEfbuZtxE0rDdKJkIAAQQQQACBmAuQm+wFJujbzbyNoGG9UTIRAggggAACCMRcgNxkLzBB327mbQQN642SiRBAAAEEIiLw448/yubNm2Xr1q2ya9euiJwVpxF1gZ8Cqey7775SrVo1qVChQqmnS26yV5GgbzfzNoKG9UbJRAgggAACERHQF0xoyK9cubJUqlQpImfFaURdYMeOHaLfL6RhX19UUtpGbrJXkaBvN/M2gob1RslECCCAAAIRENi2bZvoq6Nr1KghBxxwgOhdWjYEggjob3/Wr18vGzdudK/O3HvvvUsMIzcFkSy6D0HfbuZtBA3rjZKJEEAAAQQiIKDvOd+yZYs0bNhwt8svInCanEJEBXTZ18qVK6Vq1aqlfr8QucleOIK+3czbCBrWGyUTIYAAAghEQEDv5usSjMMPPzwCZ8Mp5KLA6tWr3ZKv0r4Qi9xkryhB327mbQQN642SiRBAAAEEIiCg31iqSzAOO+ywCJwNp5CLAh9//LFb8nXooYeWOH1yk72iBH27mbcRNKw3SiZCAAEEEIiAgAZ93UoLaRE4PU4hBwTK6iFyk72ABH27mbcRNKw3SiZCAAEEEIiAAEE/AkXI8VMg6PstIEHfr6dpNoK+iYudEUAAAQQiLpAvQf+kk06S/fbbT1588cWsVUSXR51++uly9913Z+0cwjgwQd+vKkHfr6dpNoK+iYudEUAAAQQiLlBWSLtr9oqsnf01XRp5PfbSpUvdA6ONGvmd13KSBP06Fq683Zegn8XSE/SziM+hEUAAAQS8C+RL0PcOl8KEBH2CfpC2IegHUQppH4J+SLBMiwACCCCQFYE4Bf33339frrvuOnnzzTfl22+/lUMOOUQuvvhiuf7666W0pTvPPvus3HzzzaLfDNyiRQt58MEH5aijjpK77rpLrr76alePRDhv0KCB3HHHHbJp0yZp3769jB8/XmrXrp2s2Q033CAzZ84UfdXk/vvvL506dZLRo0dLzZo1k/sQ9An6Qf6SE/SDKIW0D0E/JFimRQABBBDIikCcgn79+vXlwAMPlBtvvNF9gZN+kZP+e3vYsGElgv7ixYvl+OOPlzPOOMN9GNB9x40bJ8uXLy8R9PX1o40bN5YrrrhCtm7dKtdcc420bNlS/vrXvyZrpnN06dLFfWnUZ599JqNGjZKKFSuKHiexEfQJ+kH+khP0gyiFtA9BPyRYpkUAAQQQyIpAXIL+hg0b5IADDpCXXnpJevToUcKy+B39s846S/71r3/JsmXL3Dvgdbv33ntdmC9+R1+Dvn4QqFy5sttPH6bVsP/111/L3nvvXeJYO3fulA8++MD9dmDJkiXSvHlztw9Bn6Af5C85QT+IUkj7EPRDgmVaBBBAAIGsCMQl6GsYr1evnuyzzz5u+U7nzp3l4IMPTpoWD/oaujXs63KcxPbpp5+6b3ctHvQ7dOggjz32WHK/WbNmycknn+w+JDRp0sT9+YwZM2T48OHuz7Zs2ZLc9+mnn5ZzzjmHoP/T8qg6dQj6Qf6SE/SDKIW0D0E/JFimTUkg6BsxfL+9IqWTZRACCERSIC5BX3F12c0f//hH+dvf/ibbtm1z6+717nu7du1KLN3Zc8895c9//rNbv5/Yvv/+e9E/L22NfuFXYr722mvSsWNHeeedd+SYY46Rt956S9q2bStnnnmm9O3b1y0f0rv9upTn0UcflQsuuICgT9AP/PefoB+Yyv+OBH3/psyYugBBP3U7RiKAwP8JxCnoJ2q6fft2mT9/vnvQVl+rqf/uPuWUU4q8R99yR7/4u++LB309zoQJE2TdunVSoUIFdxrvvfee+xBA0P+P+82KPvDMHf1g/9Qh6AdzCmUvgn4orEyaogBBP0U4hiGAQFIgjkE/cXHTp0+Xnj17yqpVq+Siiy4qEvRLW6M/duxYufLKK8139HW9vr7BR8NsYrvpppvcA7kEfYK+9R83BH2rmMf9CfoeMZkqbQGCftqETIBA3gvEJej/85//lGuvvVbOPvts0bfvbN68WW699VbRh3T1QVp93WXhb8Yt/NadSy65xO2jD+OuWLFC7rnnHhf4dSvtAdrid/R1fb4+AKxj9IPFG2+8IU899ZR8+OGHBP2ffpvCHX3bP2YI+jYvr3sT9L1yMlmaAgT9NAEZjgACsVm688UXX7igr0t21q5d616veeKJJ7qwr+/AL+09+s8880zyPfq6zOb2228XffB24sSJcv755wcO+rqjHkc/KOh79nUO/f8s3RG3bIqgb/sHDUHf5uV1bxrWKyeTpSlA0E8TkOEIIFBm0M83nhdffNG9V//dd9+Vo48+Ot8uP+XrLeu3QuQmOytB327mbQQN642SiTwIEPQ9IDIFAnkuUFZIizvNpZde6t6Mo99kq0t/brnlFvfue12awxZcgKAf3CrIngT9IEoh7UPQDwmWaVMSIOinxMYgBBAoJJDPQb9Xr14yZ84c2bhxo1SvXl26d+8ud955p/vfbMEFCPrBrYLsSdAPohTSPgT9kGCZNiUBgn5KbAxCAAGCPj3gUYCg7xHzp6kI+n49TbMR9E1c7ByyAEE/ZGCmRyAPBPL5jn4elDcjl0jQ98tM0PfraZqNoG/iYueQBQj6IQMzPQJ5IEDQz4Mih3yJBH2/wAR9v56m2Qj6Ji52DlmAoB8yMNMjkAcCBP08KHLIl0jQ9wtM0PfraZqNoG/iYueQBQj6IQMzPQJ5IEDQz4Mih3yJBH2/wAR9v56m2Qj6Ji52DlmAoB8yMNMjkAcCBP08KHLIl0jQ9wtM0PfraZqNoG/iYueQBQj6IQMzPQJ5IEDQz4Mih3yJBH2/wAR9v56m2Qj6Ji52DlmAoB8yMNMjkAcCcQr6F1xwgftWW/1PmNvEiRPlwgsvlK+++kr222+/MA+V9blPOukkd436rcG72wj6fstE0PfraZqNoG/iYueQBQj6IQMzPQJ5IEDQtxeZoF/UjKBv76GyRhD0/XqaZiPom7jYOWQBgn7IwEyPQB4IlBn0X701ewIdbzIfOw539L/77jupUqWKfmmS+frDGMAd/TBUy56ToJ958+QRCfpZxOfQJQQI+jQFAgikKxDHoH/LLbfI9ddfLx999JEcffTRcv/990vz5s0d1ejRo+Xpp5+WFStWyF577SVt2rSRu+++Ww499NAilNOnT5eRI0fKe++9J3vuuae0aNFCxo4dK02aNJHS7ug/8MADctVVV8mjjz4qvXv3dnM9++yzcvPNN8uaNWvc+AcffFCOOuooueuuu+Tqq692+xx22GFy+umny0EHHST33XefaM7Ytm2bC/o6dvLkyfLll1+64/7pT3+SM844I3mepYXwjz/+WOrVqycvvPCCm1c3nUuve/Pmze4ctm/fLr/61a9k3LhxUrVq1eR8S5culd///veyaNEiqVu3rgwfPtztw9KddP+W2cYT9G1eXvcm6HvlZLI0BQj6aQIyHAEEJG5Bf8aMGS68Dhs2TPbdd1/R0K/XuGrVKqlWrZoMGDBAjjnmGBdkN23aJPfcc498+OGHLvj/7Gc/cx3x1FNPSd++feXMM8+Uc889VypWrChvvPGGnHLKKaLhunjQ1xA9aNAg9wEiEcQXL14sxx9/vPv/F198saxcudKF5uXLl5cI+t9//700btxYrrnmGtm1a5eceuqpcs4558jLL78sI0aMcCH/8ccfd6Ff18r37NnTnacl6Ov1nnDCCe561GPgwIFy/vnnuw8XuulvEho2bJg00w8DgwcPlq1bt0rr1q1Zo5/Bf1YQ9DOIXfxQBP0s4nPoEgIEfZoCAQTSFYhb0H/sscfk9ddflxNPPNHRfPHFFy7UDx06VG688cYiXDt37nRB9oADDpApU6a4YP/jjz+6/fU3AX/9619L5S0c9MeMGSOjRo2SqVOnSrdu3ZL7n3XWWfKvf/1Lli1bllyGc++998oVV1xRIuh/8803LnwnPmj885//dMfXu+/9+vVLztm2bVvRDwVLliwxB3390LFw4cLkXPobhUmTJsn69evdn+lvJPr37+8+8Bx++OHuz/S3Gfqh6LTTTiPop/sXzTCeoG/A8r0rQd+3KPOlI0DQT0ePsQggoAJxC/q65Gbjxo1Fitu5c2d3N1/D+Pz5892d6nfeece9NSex3Xrrre6DgAbzI488Up5//nkX/EvbEkFfQ7je/ddj6t31wpsuydGwf8cddyT/+NNPP3UfIoov3dE75nq3PrHpXXYN3fobBz3vxKa/fdC7/vrhZO+99zbd0R8yZIj7LUdiGz9+vFumox8y9AOGvkVIP2AkPkQk9qtfv740bdqUoJ/Bf1wQ9DOIXfxQBP0s4nPoEgIEfZoCAQTSFYhb0H/zzTddWC+8/fa3vxVdu65hWtfI693tP/zhD1KrVi2pXLmyu/uva/r1rv/cuXOlffv2smDBArdkpaygv//++7sPBf/4xz/cPIU3Xdf/5z//2c2b2PRuvP558aCvd8w1xCc2XRuvS3a+/fbbInPq+eu16Jr/OnXqmIJ+4WPqpMWXH+lvI3Qt/9/+9rcix9RnGH7+858T9NP9i2YYT9A3YPnelaDvW5T50hEg6Kejx1gEEFCBuAV9XaO/YcOGIsVN3NHXMKsBX++U6/p93bZs2eLumuuDrhr0LXf0582b55a1tGvXzj14W6lSpeRxLXf09aFZfSA4sela/ssvv9w9PFv4Ydnid/T1eipUqCAzZ85Mjn377bfdg7/FH8YtL+hzRz86/zwg6GexFgT9LOJz6BICBH2aAgEE0hWIW9Ava42+LlG59tpr3dKXxHp4XQd/6aWXJoN+Yo3+scce65bklLYVvhuub/bp1KmTe4vNk08+6YK3bqWt0de39lx55ZWlvnWncNBPrNGfMGGCXHTRRclT0A8Uepc/sbzmkksucb9NWL16dfI5AF2CpG/rsQZ9fTORPj+gDw3rW3t0Y41+un+7UhtP0E/Nzcsogr4XRibxJEDQ9wTJNAjksUDcgn7irTu6bGafffZxb93RZTv61p2CggLRAN+rVy/RkKxBVh+QXbdundxwww3ujr5uuu6+T58+Lqzr23f22GMPmTNnjnTt2rXUt+7oQ65dunRxb8rRte+6BKbwW3f0WBqg9Vj6sKvemdfAr1vi9ZqFg77++a9//WuZNWuWW8LTqFEj9yFCz2vatGnSo0cPN1bfyqMfMC677DL3dh99LaZ+CNFjWIO+foBo0KCBe5Wm2u3YsUP++Mc/8tadLPyzgaCfBfTEIQn6WcTn0CUECPo0BQIIpCsQt6D/7rvvuodONbgn3qOvS2FatmzpqPQ99xr+NdzrEhd98LVDhw7uvfaJoK/76WssNWTrm3P0ffutWrUSfcOOvgaztPfov/baa+71m/qAbiK0P/PMM8n36Ovba26//XZ3LB2vr7YsK+hr8C7tPfrFHxC+88473QcIfXuOLlG66aabRN/OYw36ei7//ve/3W839EPKwQcf7N6jr2/j4T366f4ts40n6Nu8vO5N0PfKyWRpCgQN+kEPc02XRkF3ZT8EEIiJQJlBPybXGJXL0A8PeuddP4zo6zPjspXVQ+Qme5UJ+nYzbyNoWG+UTORBgKDvAZEpEMhzAYJ+eA2gdwxnf+MAACAASURBVMd1SY++nUfX3etvEvStP3r3P04bQd9vNQn6fj1NsxH0TVzsHLIAQT9kYKZHIA8ECPrhFVmfBdC1/fpe/+rVq0v37t1Fl9ro/47TRtD3W02Cvl9P02wEfRMXO4csQNAPGZjpEcgDAYJ+HhQ55Esk6PsFJuj79TTNRtA3cbFzyAIE/ZCBmR6BPBAg6OdBkUO+RIK+X2CCvl9P02wEfRMXO4csQNAPGZjpEcgDAQ1pu3btcq95ZEMgFQF9fam+UvTQQw8tMZzcZBcl6NvNvI2gYb1RMpEHAYK+B0SmQCDPBT799FP54YcfpH79+nkuweWnKqDfUVC5cmU55JBDCPqpIhYaR9D3gJjqFAT9VOUYF4YAQT8MVeZEIL8E9P3rGzZskAMPPFBq1KiRXxfP1aYtoA8af/HFF1KzZk054IADCPppi4r+duR//uenX7Pt8jAXUxgFCPpGMHYPVYCgHyovkyOQFwIaJ/TfbVu3bnV3ZStWrOiWYbAhUJaA9s3OnTvdb4P23XdfqVOnTql9Q26y9xFB327mbQQN642SiTwIEPQ9IDIFAgi4Nfp6V/+7776TH3/8EREEAglUqFBB9txzT3c3f3cfDslNgSiL7ETQt5t5G0HDeqNkIg8CBH0PiEyBAAIIIBCaALnJTkvQt5t5G0HDeqNkIg8CBH0PiEyBAAIIIBCaALnJTkvQt5t5G0HDeqNkIg8CBH0PiEyBAAIIIBCaALnJTkvQt5t5G0HDeqNkIg8CBH0PiEyBAAIIIBCaALnJTkvQt5t5G0HDeqNkIg8CBH0PiEyBAAIIIBCaALnJTkvQt5t5G0HDeqNkIg8CBH0PiEyBAAIIIBCaALnJTps3QX/ixIly4YUXlhC69dZb5cYbb0z++YQJE+S2226TgoICady4sYwYMUK6d+9eZNzmzZtlwIAB8sILL8j27dvl5JNPlrFjx0qtWrVMFaBhTVzsHLIAQT9kYKZHAAEEEEhLgNxk58u7oD979mzZZ599klJ169aV2rVru/8/efJk6d27twwaNEg6deokU6ZMEQ3+c+bMkdatWyfHdOvWTd5//30ZPXq0e+er7q9fCrJ48WKpVKlS4CrQsIGp2DEDAgT9DCBzCAQQQACBlAXITXa6vAv6X331ley3336lSukd/JYtW8qkSZOSPz/hhBOkWrVqMnPmTPdnCxYskLZt28qsWbOkS5cu7s+WL18uRxxxhPug0KtXr8BVoGEDU7FjBgQI+hlA5hAIIIAAAikLkJvsdAT9/5qtXr1a6tevL9OmTZOePXsmJceMGSPXXXedbNmyRapUqSJDhgyR++67z33rX+FvbmvevLk0a9ZMdIlQ0I2GDSrFfpkQIOhnQpljIIAAAgikKkBussvlXdA/8MADZePGjVKvXj25/PLL5aqrrnKBXe/Yn3rqqbJy5Upp0KBBUlKX+nTt2lWWLVsmTZo0cXfs165dK3Pnzi2i3adPH1m1apUsXLgwcBVo2MBU7JgBAYJ+BpA5BAIIIIBAygLkJjtd3gT9v//97/LWW2/J8ccfL7t27ZKpU6fKQw895NbX33LLLW65Tt++fWX9+vVSs2bNpKSuu2/VqpXMmzfPLdnR5Tp6Z3/GjBlFtPv37++W86xYsWK3VdDfCmzdujX583Xr1rm516xZI3Xq1LFXjxEIeBQg6HvEZCoEEEAAAe8CBH07ad4E/dJofv/738vjjz/uluG8+OKLLujr/65Ro0Zy90WLFslxxx0n8+fPlzZt2rigrw/gTp8+vciU+tuBV155xa3X3902dOhQGTZsWIkfE/TtjcsI/wIEff+mzIgAAggg4E+AoG+3zOugn1iW8+abb7qAH/bSHe7o2xuUEZkTIOhnzpojIYAAAgjYBQj6djOC/k/r73VJj97F14dxX3rpJenRo0dSUt+PP3DgQLfkpnLlyu5h3HHjxrkPBoW3Fi1aSNOmTXkY196DjIiIAEE/IoXgNBBAAAEEShUg6NsbI6+Dfr9+/eSJJ55woX3vvfd2X5Cly3T0zxJbu3btpGrVqiVer6nLdDp37ux203X5+qAur9e0NyAjoiNA0I9OLTgTBBBAAIGSAgR9e1fkTdA/88wz3YOvRx99tFPSh3H1y7D0Dn1i3XziC7MGDx4sHTt2dF+Y9fDDD5f6hVlLly4t8oVZFSpUkCVLlrgvzgq60bBBpdgvEwIE/UwocwwEEEAAgVQFyE12ubwJ+vp2neeff14+/fRT2blzp7sDf+mll7r/FN40/I8aNUoKCgrcHf6RI0dK9+7di+yzefNmGTBggPuwsGPHDvf6TV3ik/iG3aBloGGDSrFfJgQI+plQ5hgIIIAAAqkKkJvscnkT9O004Y+gYcM35gjBBQj6wa3YEwEEEEAg8wLkJrs5Qd9u5m0EDeuNkok8CBD0PSAyBQIIIIBAaALkJjstQd9u5m0EDeuNkok8CBD0PSAyBQIIIIBAaALkJjstQd9u5m0EDeuNkok8CBD0PSAyBQIIIIBAaALkJjstQd9u5m0EDeuNkok8CBD0PSAyBQIIIIBAaALkJjstQd9u5m0EDeuNkok8CBD0PSAyBQIIIIBAaALkJjstQd9u5m0EDeuNkol2I+A7vFugr+nSyLI7+yKAAAIIIFCmALnJ3iAEfbuZtxE0rDdKJiLo0wMIIIAAAjEXIDfZC0zQt5t5G0HDeqNkIoI+PYAAAgggEHMBcpO9wAR9u5m3ETSsN0omIujTAwgggAACMRcgN9kLTNC3m3kbQcN6o2Qigj49gAACCCAQcwFyk73ABH27mbcRNKw3SiYi6NMDCCCAAAIxFyA32QtM0LebeRtBw3qjZCKCPj2AAAIIIBBzAXKTvcAEfbuZtxE0rDdKJiLo0wMIIIAAAjEXIDfZC0zQt5t5G0HDeqNkIoI+PYAAAgggEHMBcpO9wAR9u5m3ETSsN0omIujTAwgggAACMRcgN9kLTNC3m3kbQcN6o2Qigj49gAACCCAQcwFyk73ABH27mbcRNKw3SiYi6NMDCCCAAAIxFyA32QtM0LebeRtBw3qjZCKCPj2AAAIIIBBzAXKTvcAEfbuZtxE0rDdKJiLo0wMIIIAAAjEXIDfZC0zQt5t5G0HDeqNkIoI+PYAAAgggEHMBcpO9wAR9u5m3ETSsN0omIujTAwgggAACMRcgN9kLTNC3m3kbQcN6o2Qigj49gAACCCAQcwFyk73ABH27mbcRNKw3SiYi6NMDCCCAAAIxFyA32QtM0LebeRtBw3qjZCKCPj2AAAIIIBBzAXKTvcAEfbuZtxE0rDdKJiLo0wMIIIAAAjEXIDfZC0zQt5t5G0HDeqNkIoI+PYAAAgggEHMBcpO9wAR9u5m3ETSsN0omIujTAwgggAACMRcgN9kLTNC3m3kbQcN6o2Qigj49gAACCCAQcwFyk73ABH27mbcRNKw3SiYi6NMDCCCAAAIxFyA32QtM0LebeRtBw3qjZCKCPj2AAAIIIBBzAXKTvcAEfbuZtxE0rDdKJiLo0wMIIIAAAjEXIDfZC0zQt5t5G0HDeqNkIoI+PYAAAgggEHMBcpO9wAR9u5m3ETSsN0omIujTAwgggAACMRcgN9kLTNC3m3kbQcN6o2Qigj49gAACCCAQcwFyk73ABH27mbcRNKw3SiYi6NMDCCCAAAIxFyA32QtM0LebeRtBw3qjZCKCPj2AAAIIIBBzAXKTvcAEfbuZtxE0rDdKJiLo0wMIIIAAAjEXIDfZC0zQt5t5G0HDeqNkIoI+PYAAAgggEHMBcpO9wAR9u5m3ETSsN0omIujTAwgggAACMRcgN9kLTNC3m3kbQcN6o2Qigj49gAACCCAQcwFyk73ABH27mbcRNKw3SiYi6NMDCCCAAAIxFyA32QtM0LebeRtBw3qjZCKCPj2AAAIIIBBzAXKTvcAEfbuZtxE0rDdKJiLo0wMIIIAAAjEXIDfZC0zQt5t5G0HDeqNkIoI+PYAAAgggEHMBcpO9wAR9u5m3ETSsN0omIujTAwgggAACMRcgN9kLTNC3m3kbQcN6o2Qigj49gAACCCAQcwFyk73ABH27mbcRNKw3SiYi6NMDCCCAAAIxFyA32QtM0LebeRtBw3qjZCKCPj2AAAIIIBBzAXKTvcAEfbuZtxE0rDdKJiLo0wMIIIAAAjEXIDfZC0zQt5t5G0HDeqNkIoI+PYAAAgggEHMBcpO9wAR9u5m3ETSsN0omIujTAwgggAACMRcgN9kLTNC3m3kbQcN6o2Qigj49gAACCCAQcwFyk73ABH27mbcRNKw3SiYi6NMDCCCAAAIxFyA32QtM0LebeRtBw3qjZCKCPj2AAAIIIBBzAXKTvcAEfbuZtxE0rDdKJiLo0wMIIIAAAjEXIDfZC0zQt5t5G0HDeqNkIoI+PYAAAgggEHMBcpO9wAR9u5m3ETSsN0omIujTAwgggAACMRcgN9kLTNC3m3kbQcN6o2Qigj49gAACCCAQcwFyk73ABH27mbcRNKw3SiYi6NMDCCCAAAIxFyA32QtM0LebeRtBw3qjZCKCPj2AAAIIIBBzAXKTvcAEfbuZtxE0rDdKJiLo0wMIIIAAAjEXIDfZC5yXQf/rr7+WJk2aiDbMO++8I8ccc0xSbsKECXLbbbdJQUGBNG7cWEaMGCHdu3cvIrt582YZMGCAvPDCC7J9+3Y5+eSTZezYsVKrVi1TBWhYExc7pyBw1+wVKYzK/JBrujTK/EE5IgIIIIBATgmQm+zlysugf8MNN8hjjz0mn3/+eZGgP3nyZOndu7cMGjRIOnXqJFOmTBEN/nPmzJHWrVsndbt16ybvv/++jB49Wvbcc0+3f8WKFWXx4sVSqVKlwFWgYQNTsWOKAgT9FOEYhgACCCAQOQFyk70keRf0P/jgA2nZsqUL6ZdeemmRoK938PVnkyZNSkqecMIJUq1aNZk5c6b7swULFkjbtm1l1qxZ0qVLF/dny5cvlyOOOEL0g0KvXr0CV4GGDUzFjikKEPRThGMYAggggEDkBMhN9pLkXdDv2rWrNGvWzC3H6dixYzLor169WurXry/Tpk2Tnj17JiXHjBkj1113nWzZskWqVKkiQ4YMkfvuu082bNggP+El92vevLmbd+LEiYGrQMMGpmLHFAUI+inCMQwBBBBAIHIC5CZ7SfIq6D/33HNy+eWXy8qVK+Xtt98uEvT1jv2pp57qftagQYOk5OzZs0U/HCxbtsyt69c79mvXrpW5c+cW0e7Tp4+sWrVKFi5cGLgKNGxgKnZMUYCgnyIcwxBAAAEEIidAbrKXJG+C/jfffOOC+tChQ+Wiiy6S1157rUjQ1+U6ffv2lfXr10vNmjWTkrruvlWrVjJv3jy3ZEeX6+id/RkzZhTR7t+/v1vOs2LF7h9+1N8KbN26NTlu3bp1bu41a9ZInTp17NVjBALlCBD0aREEEEAAgbgIEPTtlcyboH/zzTeL3p1/8803pUKFCrsN+rokp0aNGknJRYsWyXHHHSfz58+XNm3auKCvD+BOnz69iLb+puCVV15x6/V3t+mHjGHDhpX4MUHf3riMCCZA0A/mxF4IIIAAAtEXIOjba5QXQf+TTz6RRo0auddh6l153XTpTY8ePeSNN96QY4891v132Et3uKNvb1BGpCdA0E/Pj9EIIIAAAtERIOjba5EXQT+xTGd3PPpmnccff9w9jPvSSy+5DwCJTd+PP3DgQLfkpnLlyu5h3HHjxrmHcQtvLVq0kKZNm/Iwrr0HGRGiAEE/RFymRgABBBDIqABB386dF0F/06ZN8u677xbR0f9/zTXXyEMPPSQa0vWuvr5eU5fpPPHEE8l927VrJ1WrVi3xek1dptO5c2e3n67L1/X/vF7T3oCMCFeAoB+uL7MjgAACCGROgKBvt86LoF8aS/GHcXWfxBdmDR482D2oq1+Y9fDDD5f6hVlLly4t8oVZuu5/yZIl7ouzgm40bFAp9ktVgKCfqhzjEEAAAQSiJkBusleEoP/OO3LMMcck5fSbcEeNGiUFBQXuDv/IkSPdO/cLb5s3b5YBAwbI1KlTZceOHe71m7rEp3bt2qYK0LAmLnZOQYCgnwIaQxBAAAEEIilAbrKXJW+Dvp3K/wga1r8pMxYVIOjTEQgggAACcREgN9krSdC3m3kbQcN6o2Si3QgQ9GkNBBBAAIG4CJCb7JUk6NvNvI2gYb1RMhFBnx5AAAEEEIi5ALnJXmCCvt3M2wga1hslExH06QEEEEAAgZgLkJvsBSbo2828jaBhvVEyEUGfHkAAAQQQiLkAucleYIK+3czbCBrWGyUTEfTpAQQQQACBmAuQm+wFJujbzbyNoGG9UTIRQZ8eQAABBBCIuQC5yV5ggr7dzNsIGtYbJRMR9OkBBBBAAIGYC5Cb7AUm6NvNvI2gYb1RMhFBnx5AAAEEEIi5ALnJXmCCvt3M2wga1hslExH06QEEEEAAgZgLkJvsBSbo2828jaBhvVEyEUGfHkAAAQQQiLkAucleYIK+3czbCBrWGyUTEfTpAQQQQACBmAuQm+wFJujbzbyNoGG9UTIRQZ8eQAABBBCIuQC5yV5ggr7dzNsIGtYbJRMR9OkBBBBAAIGYC5Cb7AUm6NvNvI2gYb1RMhFBnx5AAAEEEIi5ALnJXmCCvt3M2wga1hslExH06QEEEEAAgZgLkJvsBSbo2828jaBhvVEyEUGfHkAAAQQQiLkAucleYIK+3czbCBrWGyUTEfTpAQQQQACBmAuQm+wFJujbzbyNoGG9UTIRQZ8eQAABBBCIuQC5yV5ggr7dzNsIGtYbJRMR9OkBBBBAAIGYC5Cb7AUm6NvNvI2gYb1RMhFBnx5AAAEEEIi5ALnJXmCCvt3M2wga1hslExH06QEEEEAAgZgLkJvsBSbo2828jaBhvVEyEUGfHkAAAQQQiLkAucleYIK+3czbCBrWGyUTEfTpAQQQQACBmAuQm+wFJujbzbyNoGG9UTIRQZ8eQAABBBCIuQC5yV5ggr7dzNsIGtYbJRMR9OkBBBBAAIGYC5Cb7AUm6NvNvI2gYb1RMhFBnx5AAAEEEIi5ALnJXmCCvt3M2wga1hslExH06QEEEEAAgZgLkJvsBSbo2828jaBhvVHm3UR3zV4Rq2u+pkujWF0PF4MAAggg4F+A3GQ3JejbzbyNoGG9UebdRAT9vCs5F4wAAgjkvQC5yd4CBH27mbcRNKw3yrybiKCfdyXnghFAAIG8FyA32VuAoG838zaChvVGmXcTEfTzruRcMAIIIJD3AuQmewsQ9O1m3kbQsN4o824ign7elZwLRgABBPJegNxkbwGCvt3M2wga1htl3k1E0M+7knPBCCCAQN4LkJvsLUDQt5t5G0HDeqPMu4kI+nlXci4YAQQQyHsBcpO9BQj6djNvI2hYb5R5NxFBP+9KzgUjgAACeS9AbrK3AEHfbuZtBA3rjTLvJiLo513JuWAEEEAg7wXITfYWIOjbzbyNoGG9UebdRAT9vCs5F4wAAgjkvQC5yd4CBH27mbcRNKw3yrybiKCfdyXnghFAAIG8FyA32VuAoG838zaChvVGmXcTEfTzruRcMAIIIJD3AuQmewsQ9O1m3kbQsN4o824ign7elZwLRgABBPJegNxkbwGCvt3M2wga1htl3k1E0M+7knPBCCCAQN4LkJvsLUDQt5t5G0HDeqPMu4kI+nlXci4YAQQQyHsBcpO9BQj6djNvI2hYb5R5NxFBP+9KzgUjgAACeS9AbrK3AEHfbuZtBA3rjTLvJiLo513JuWAEEEAg7wXITfYWIOjbzbyNoGG9UebdRAT9vCs5F4wAAgjkvQC5yd4CORf0v/vuO/nss8/ksMMOs19txEbQsBErSA6dDkE/h4rFqSKAAAIIeBEgN9kZIx3077zzTtm2bZv86U9/clc2b9486dmzp2zatEnq168vL7/8shx++OH2q47ICBo2IoXIwdMg6Odg0ThlBBBAAIG0BMhNdr5IB/0mTZrIwIED5ZJLLnFX1qpVK6lSpYrceOONMnz4cHdXf/LkyfarjsgIGjYihcjB0yDo52DROGUEEEAAgbQEyE12vkgH/b333ltmzpwpHTp0EC3uIYccIq+//rq0b99eXnzxRfnDH/4g69ats191REbQsBEpRA6eBkE/B4vGKSOAAAIIpCVAbrLzRTro16xZUyZOnCjdu3eXxx9/XPr37y9fffWVVKxYUV577TU59dRT3dKeXN1o2FytXPbPm6Cf/RpwBggggAACmRUgN9m9Ix30TznlFNm8ebPcfPPNbrnOkUceKVOmTHFXOWHCBBk1apSsXLnSftURGUHDRqQQOXgaBP0cLBqnjAACCCCQlgC5yc4X6aD//vvvu4dvP/roIzn00ENl1qxZ0rBhQ3eVXbt2lVq1asljjz1mv+qIjKBhI1KIHDwNgn4OFo1TRgABBBBIS4DcZOeLdNBPXM7GjRulRo0aRa7uX//6lwv6urwnVzcaNlcrl/3zJuhnvwacAQIIIIBAZgXITXbvSAf9iy66SAYPHiz16tUrcWWffPKJDBs2TB555BH7VUdkBA0bkULk4GkQ9HOwaJwyAggggEBaAuQmO1+kg36FChVk4cKFctxxx5W4siVLlrg/37lzp/2qIzKCho1IIXLwNAj6OVg0ThkBBBBAIC0BcpOdL/JB/80333Tvzy++6dr866+/Xj7//HP7VUdkBA0bkULk4GkQ9HOwaJwyAggggEBaAuQmO1/kgv4999wj+h/ddHnOQQcd5L4kq/D23XffuYB/3nnnyaOPPmq/6oiMoGEjUogcPA2Cfg4WjVNGAAEEEEhLgNxk54tc0P/73/8uL7/8srsSDfxnn322C/uFt8qVK4t+a+5vf/tb2XPPPe1XHZERNGxECpGDp0HQz8GiccoIIIAAAmkJkJvsfJEL+oUvQR+2veSSS6ROnTr2K8uBETRsDhQpoqdI0I9oYTgtBBBAAIHQBMhNdtpIB3375eTWCBo2t+oVpbMl6EepGpwLAggggEAmBMhNduXIB/3nn39ennnmGfn0009F1+YX3n46edG37wTZnnvuOfnLX/4iy5cvl23btrkv4Orbt697oLfwMwD6jbu33XabFBQUSOPGjWXEiBHSvXv3IofQb+sdMGCAvPDCC7J9+3Y5+eSTZezYse69/paNhrVosW9hAYI+/YAAAgggkG8C5CZ7xSMd9IcPHy5DhgyRo48+Wo488kjRtfnFt6AP4z744IOyZs0aad68uey3337y1ltvydChQ+X888+XBx54wE07efJk6d27twwaNEg6deokU6ZMEQ3+c+bMkdatWycP3a1bN9Fv7R09erR7RkD3r1ixoixevFgqVaoUuAo0bGAqdiwmQNCnJRBAAAEE8k2A3GSveKSDvt511wduR40aZb+yACM0oI8ZM0b0Dr2+s1/v4Lds2VImTZqUHH3CCSdItWrVZObMme7PFixYIG3btpVZs2ZJly5d3J/pbwmOOOII90GhV69eAY78f7vQsIGp2JGgTw8ggAACCOS5ALnJ3gCRDvpVq1aVF1980d1dD2PTpTw333yzW8qjr/KsX7++TJs2TXr27Jk8nH4QuO6662TLli1uiY/+huG+++6TDRs2iC4dSmz6m4JmzZrJxIkTA58qDRuYih0J+vQAAggggECeC5Cb7A0Q6aDfp08fadiwoVti42vTb9L9/vvv5e2333Zr9M8880y3dl/v2J966qmycuVKadCgQfJws2fPlq5du8qyZcvcKz31jv3atWtl7ty5RU5Jz3XVqlXum3yDbjRsUCn2Ky7A0h16AgEEEEAg3wTITfaKRzrov/rqq9KvXz8XrjVsV69evcQV6l10y6Zr6jXo66br8x955BG3bEeX62jwX79+vdSsWTM5pa6712/mnTdvnluyo8t19M7+jBkzihy2f//+bjnPihUrdns6+luBrVu3Jn++bt06N7c+OxDXV4haasO+wQUI+sGt2BMBBBBAIB4CBH17HSMd9DWAJ7bCy2T0z3bt2uWWzugdesumd/K/+eYbeeedd+SWW25xb9TRsJ8I+rokp0aNGskpFy1aJMcdd5zMnz9f2rRp44K+fliYPn16kcNefvnl8sorr7j1+rvb9DcT+t0AxTeCvqWC7KsCBH36AAEEEEAg3wQI+vaKRzrov/766+VeUYcOHcrdZ3c7vPTSS3Laaae5t+V8/vnnoS/d4Y5+yqViYDEBgj4tgQACCCCQbwIEfXvFIx307ZdjG6F30g855BB5+umn3V17fRhXw3+PHj2SE+n78QcOHOiW3OjrPfVh3HHjxrmHcQtvLVq0kKZNm/Iwrq0E7F1IIG7h3VLca7o0suzOvggggAACeShA0LcXPdJBX++Al7fpm3lS3fQ9+eecc457gPb44493r9fUwP/EE08kp2zXrp3oMYq/XlOX6XTu3Nntp+vy9UFdXq+ZaiUYpwIEffoAAQQQQACB3QsQ9O3dEemgr2v0i6/NL36JQdfo65dc/fKXv5Rf/OIX7kut9Auz7rjjDhfs9SFa3RJfmDV48GDp2LGj+8Kshx9+uNQvzFq6dGmRL8zSc9Vv6dUvzgq60bBBpfJjP4J+ftSZq0QAAQQQSE2A3GR3i3TQ13fSFw/6X375pbz88svuoVcN5BdffHGgq9Z99Z38H330kQvj9erVc2/Z0bfl6MO1iU2/CVe/oKugoMDd4R85cqR7YLfwpl+wNWDAAJk6dars2LHDvRFIl/jUrl070LkkdqJhTVyx35mgH/sSc4EIIIAAAmkIkJvseJEO+mVdzu9+9zv3jbV33nmn/aojMoKGjUghInIaBP2IFILTQAABBBCIpAC5yV6WnA36+kVWvXv3du+9z9WNhs3VyoVz3gT9cFyZFQEEEEAgHgLkJnsdczbo61KZ4cOHu9di5upGw+Zq5cI5b4J+OK7MigACCCAQDwFyk72OkQ76WMY7TgAAIABJREFUY8aMKXFFP/zwg+iDsPrgrK6xHz9+vP2qIzKCho1IISJyGgT9iBSC00AAAQQQiKQAuclelkgH/cLfjJu4tCpVqsjBBx8sv/nNb9zDuHvttZf9qiMygoaNSCEichoE/YgUgtNAAAEEEIikALnJXpZIB3375eTWCBo2t+oV9tkS9MMWZn4EEEAAgVwWIDfZq0fQt5t5G0HDeqOMxUQE/ViUkYtAAAEEEAhJgNxkh4180Nei3n333TJ37lzRd+jvv//+0r59e7nqqqukTp069iuO0AgaNkLFiMCpEPQjUAROAQEEEEAgsgLkJntpIh30//3vf8uJJ54o27dvly5dusjPf/5z95adV155RfbYYw9544033Dfd5upGw+Zq5cI5b4J+OK7MigACCCAQDwFyk72OkQ763bp1k40bN8qsWbOkevXqyav76quv3LfR1qxZU/72t7/ZrzoiI2jYiBQiIqdB0I9IITgNBBBAAIFICpCb7GWJdNDfZ599ZNKkSXLaaaeVuLIXX3xRzj33XNm6dav9qiMygoaNSCEichoE/YgUgtNAAAEEEIikALnJXpZIB/399tvPvSe/V69eJa7smWeekX79+smmTZvsVx2RETRsRAoRkdMg6EekEJwGAggggEAkBchN9rJEOujru/Lfe+89mTlzpjRs2DB5datXr5ZTTjlFmjZtKs8++6z9qiMygoaNSCEichoE/YgUgtNAAAEEEIikALnJXpZIB/2CggLp0KGDrFmzRpo1ayYHHXSQfPHFF/Luu+/KIYccIq+//rr771zdaNhcrVw4503QD8eVWRFAAAEE4iFAbrLXMdJBXy/n66+/lkceecS9XlMfwtXXa7Zr104uvPBC0TX8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\" width=\"698.5\">" ], "text/plain": [ "<IPython.core.display.HTML object>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%matplotlib notebook\n", "\n", "## hist is a touple containing bins and counts foreach bin\n", "hist_signal, hist_bkg = compute_hist(data=train, feature='m_bb', target='label', n_bins=50, x_lim=[0,3])\n", "\n", "f, ax = plt.subplots()\n", "ax.hist(hist_signal[0][:-1], bins=hist_signal[0], weights=hist_signal[1], alpha=0.5, label='signal')\n", "ax.hist(hist_bkg[0][:-1], bins=hist_bkg[0], weights=hist_bkg[1], alpha=0.5, label='background')\n", "ax.set_xlabel('$m_{bb}$')\n", "ax.set_ylabel('counts')\n", "ax.set_title(\"Distribution of $m_{bb}$\")\n", "ax.legend()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "<a id=preparation></a><br>\n", "\n", "## Feature preparation\n", "\n", "In this section we will prepare the input for the classifier. <br>\n", "For the random forest we don't need to scale the features and encode the labels, we need only to create a `Dense Vector` containing the features.\n" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "from pyspark.ml.feature import VectorAssembler\n", "\n", "feature = train.columns\n", "feature.remove('label')\n", "\n", "assembler = VectorAssembler(inputCols=feature, outputCol='features')\n", "train = assembler.transform(train)\n", "test = assembler.transform(test)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This is how a single row of the features column looks like" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[Row(features=DenseVector([0.2758, -2.1077, 1.6889, 1.9085, 0.5887, 1.2632, 1.3635, -1.1625, 0.0, 0.5701, 0.6752, -0.7686, 0.0, 1.007, 1.5239, 1.5276, 0.0, 2.206, -0.4685, 0.2762, 3.102, 0.8865, 0.7056, 0.9947, 0.7695, 0.5959, 1.1519, 1.4402]))]" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "train.select('features').take(1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can now plot the correlation matrix for the features " ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "2022-09-29 21:04:52,271 WARN netlib.InstanceBuilder$NativeBLAS: Failed to load implementation from:dev.ludovic.netlib.blas.JNIBLAS\n", "2022-09-29 21:04:52,280 WARN netlib.InstanceBuilder$NativeBLAS: Failed to load implementation from:dev.ludovic.netlib.blas.ForeignLinkerBLAS\n", "/cvmfs/sft.cern.ch/lcg/views/LCG_102swan/x86_64-centos7-gcc11-opt/python/pyspark/sql/context.py:125: FutureWarning: Deprecated in 3.0.0. Use SparkSession.builder.getOrCreate() instead.\n", " warnings.warn(\n" ] } ], "source": [ "from pyspark.ml.stat import Correlation\n", "\n", "matrix = Correlation.corr(train.select('features'), 'features')\n", "matrix_np = matrix.collect()[0][\"pearson({})\".format('features')].values" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", "/* global mpl */\n", "window.mpl = {};\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(\n", " '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", "\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 = document.createElement('div');\n", " this.root.setAttribute('style', 'display: inline-block');\n", " this._root_extra_style(this.root);\n", "\n", " parent_element.appendChild(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 (fig.ratio !== 1) {\n", " fig.send_message('set_dpi_ratio', { dpi_ratio: fig.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 = document.createElement('div');\n", " titlebar.classList =\n", " 'ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix';\n", " var titletext = document.createElement('div');\n", " titletext.classList = 'ui-dialog-title';\n", " titletext.setAttribute(\n", " 'style',\n", " 'width: 100%; text-align: center; padding: 3px;'\n", " );\n", " titlebar.appendChild(titletext);\n", " this.root.appendChild(titlebar);\n", " this.header = titletext;\n", "};\n", "\n", "mpl.figure.prototype._canvas_extra_style = function (_canvas_div) {};\n", "\n", "mpl.figure.prototype._root_extra_style = function (_canvas_div) {};\n", "\n", "mpl.figure.prototype._init_canvas = function () {\n", " var fig = this;\n", "\n", " var canvas_div = (this.canvas_div = document.createElement('div'));\n", " canvas_div.setAttribute(\n", " 'style',\n", " 'border: 1px solid #ddd;' +\n", " 'box-sizing: content-box;' +\n", " 'clear: both;' +\n", " 'min-height: 1px;' +\n", " 'min-width: 1px;' +\n", " 'outline: 0;' +\n", " 'overflow: hidden;' +\n", " 'position: relative;' +\n", " 'resize: both;'\n", " );\n", "\n", " function on_keyboard_event_closure(name) {\n", " return function (event) {\n", " return fig.key_event(event, name);\n", " };\n", " }\n", "\n", " canvas_div.addEventListener(\n", " 'keydown',\n", " on_keyboard_event_closure('key_press')\n", " );\n", " canvas_div.addEventListener(\n", " 'keyup',\n", " on_keyboard_event_closure('key_release')\n", " );\n", "\n", " this._canvas_extra_style(canvas_div);\n", " this.root.appendChild(canvas_div);\n", "\n", " var canvas = (this.canvas = document.createElement('canvas'));\n", " canvas.classList.add('mpl-canvas');\n", " canvas.setAttribute('style', 'box-sizing: content-box;');\n", "\n", " this.context = canvas.getContext('2d');\n", "\n", " var backingStore =\n", " this.context.backingStorePixelRatio ||\n", " this.context.webkitBackingStorePixelRatio ||\n", " this.context.mozBackingStorePixelRatio ||\n", " this.context.msBackingStorePixelRatio ||\n", " this.context.oBackingStorePixelRatio ||\n", " this.context.backingStorePixelRatio ||\n", " 1;\n", "\n", " this.ratio = (window.devicePixelRatio || 1) / backingStore;\n", "\n", " var rubberband_canvas = (this.rubberband_canvas = document.createElement(\n", " 'canvas'\n", " ));\n", " rubberband_canvas.setAttribute(\n", " 'style',\n", " 'box-sizing: content-box; position: absolute; left: 0; top: 0; z-index: 1;'\n", " );\n", "\n", " // Apply a ponyfill if ResizeObserver is not implemented by browser.\n", " if (this.ResizeObserver === undefined) {\n", " if (window.ResizeObserver !== undefined) {\n", " this.ResizeObserver = window.ResizeObserver;\n", " } else {\n", " var obs = _JSXTOOLS_RESIZE_OBSERVER({});\n", " this.ResizeObserver = obs.ResizeObserver;\n", " }\n", " }\n", "\n", " this.resizeObserverInstance = new this.ResizeObserver(function (entries) {\n", " var nentries = entries.length;\n", " for (var i = 0; i < nentries; i++) {\n", " var entry = entries[i];\n", " var width, height;\n", " if (entry.contentBoxSize) {\n", " if (entry.contentBoxSize instanceof Array) {\n", " // Chrome 84 implements new version of spec.\n", " width = entry.contentBoxSize[0].inlineSize;\n", " height = entry.contentBoxSize[0].blockSize;\n", " } else {\n", " // Firefox implements old version of spec.\n", " width = entry.contentBoxSize.inlineSize;\n", " height = entry.contentBoxSize.blockSize;\n", " }\n", " } else {\n", " // Chrome <84 implements even older version of spec.\n", " width = entry.contentRect.width;\n", " height = entry.contentRect.height;\n", " }\n", "\n", " // Keep the size of the canvas and rubber band canvas in sync with\n", " // the canvas container.\n", " if (entry.devicePixelContentBoxSize) {\n", " // Chrome 84 implements new version of spec.\n", " canvas.setAttribute(\n", " 'width',\n", " entry.devicePixelContentBoxSize[0].inlineSize\n", " );\n", " canvas.setAttribute(\n", " 'height',\n", " entry.devicePixelContentBoxSize[0].blockSize\n", " );\n", " } else {\n", " canvas.setAttribute('width', width * fig.ratio);\n", " canvas.setAttribute('height', height * fig.ratio);\n", " }\n", " canvas.setAttribute(\n", " 'style',\n", " 'width: ' + width + 'px; height: ' + height + 'px;'\n", " );\n", "\n", " rubberband_canvas.setAttribute('width', width);\n", " rubberband_canvas.setAttribute('height', height);\n", "\n", " // And update the size in Python. We ignore the initial 0/0 size\n", " // that occurs as the element is placed into the DOM, which should\n", " // otherwise not happen due to the minimum size styling.\n", " if (fig.ws.readyState == 1 && width != 0 && height != 0) {\n", " fig.request_resize(width, height);\n", " }\n", " }\n", " });\n", " this.resizeObserverInstance.observe(canvas_div);\n", "\n", " function on_mouse_event_closure(name) {\n", " return function (event) {\n", " return fig.mouse_event(event, name);\n", " };\n", " }\n", "\n", " rubberband_canvas.addEventListener(\n", " 'mousedown',\n", " on_mouse_event_closure('button_press')\n", " );\n", " rubberband_canvas.addEventListener(\n", " 'mouseup',\n", " on_mouse_event_closure('button_release')\n", " );\n", " rubberband_canvas.addEventListener(\n", " 'dblclick',\n", " on_mouse_event_closure('dblclick')\n", " );\n", " // Throttle sequential mouse events to 1 every 20ms.\n", " rubberband_canvas.addEventListener(\n", " 'mousemove',\n", " on_mouse_event_closure('motion_notify')\n", " );\n", "\n", " rubberband_canvas.addEventListener(\n", " 'mouseenter',\n", " on_mouse_event_closure('figure_enter')\n", " );\n", " rubberband_canvas.addEventListener(\n", " 'mouseleave',\n", " on_mouse_event_closure('figure_leave')\n", " );\n", "\n", " canvas_div.addEventListener('wheel', function (event) {\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", " on_mouse_event_closure('scroll')(event);\n", " });\n", "\n", " canvas_div.appendChild(canvas);\n", " canvas_div.appendChild(rubberband_canvas);\n", "\n", " this.rubberband_context = rubberband_canvas.getContext('2d');\n", " this.rubberband_context.strokeStyle = '#000000';\n", "\n", " this._resize_canvas = function (width, height, forward) {\n", " if (forward) {\n", " canvas_div.style.width = width + 'px';\n", " canvas_div.style.height = height + 'px';\n", " }\n", " };\n", "\n", " // Disable right mouse context menu.\n", " this.rubberband_canvas.addEventListener('contextmenu', function (_e) {\n", " event.preventDefault();\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 toolbar = document.createElement('div');\n", " toolbar.classList = 'mpl-toolbar';\n", " this.root.appendChild(toolbar);\n", "\n", " function on_click_closure(name) {\n", " return function (_event) {\n", " return fig.toolbar_button_onclick(name);\n", " };\n", " }\n", "\n", " function on_mouseover_closure(tooltip) {\n", " return function (event) {\n", " if (!event.currentTarget.disabled) {\n", " return fig.toolbar_button_onmouseover(tooltip);\n", " }\n", " };\n", " }\n", "\n", " fig.buttons = {};\n", " var buttonGroup = document.createElement('div');\n", " buttonGroup.classList = 'mpl-button-group';\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", " /* Instead of a spacer, we start a new button group. */\n", " if (buttonGroup.hasChildNodes()) {\n", " toolbar.appendChild(buttonGroup);\n", " }\n", " buttonGroup = document.createElement('div');\n", " buttonGroup.classList = 'mpl-button-group';\n", " continue;\n", " }\n", "\n", " var button = (fig.buttons[name] = document.createElement('button'));\n", " button.classList = 'mpl-widget';\n", " button.setAttribute('role', 'button');\n", " button.setAttribute('aria-disabled', 'false');\n", " button.addEventListener('click', on_click_closure(method_name));\n", " button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n", "\n", " var icon_img = document.createElement('img');\n", " icon_img.src = '_images/' + image + '.png';\n", " icon_img.srcset = '_images/' + image + '_large.png 2x';\n", " icon_img.alt = tooltip;\n", " button.appendChild(icon_img);\n", "\n", " buttonGroup.appendChild(button);\n", " }\n", "\n", " if (buttonGroup.hasChildNodes()) {\n", " toolbar.appendChild(buttonGroup);\n", " }\n", "\n", " var fmt_picker = document.createElement('select');\n", " fmt_picker.classList = 'mpl-widget';\n", " toolbar.appendChild(fmt_picker);\n", " this.format_dropdown = fmt_picker;\n", "\n", " for (var ind in mpl.extensions) {\n", " var fmt = mpl.extensions[ind];\n", " var option = document.createElement('option');\n", " option.selected = fmt === mpl.default_extension;\n", " option.innerHTML = fmt;\n", " fmt_picker.appendChild(option);\n", " }\n", "\n", " var status_bar = document.createElement('span');\n", " status_bar.classList = 'mpl-message';\n", " toolbar.appendChild(status_bar);\n", " this.message = status_bar;\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", "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", "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], msg['forward']);\n", " fig.send_message('refresh', {});\n", " }\n", "};\n", "\n", "mpl.figure.prototype.handle_rubberband = function (fig, msg) {\n", " var x0 = msg['x0'] / fig.ratio;\n", " var y0 = (fig.canvas.height - msg['y0']) / fig.ratio;\n", " var x1 = msg['x1'] / fig.ratio;\n", " var y1 = (fig.canvas.height - msg['y1']) / fig.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,\n", " 0,\n", " fig.canvas.width / fig.ratio,\n", " fig.canvas.height / fig.ratio\n", " );\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", " 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.handle_history_buttons = function (fig, msg) {\n", " for (var key in msg) {\n", " if (!(key in fig.buttons)) {\n", " continue;\n", " }\n", " fig.buttons[key].disabled = !msg[key];\n", " fig.buttons[key].setAttribute('aria-disabled', !msg[key]);\n", " }\n", "};\n", "\n", "mpl.figure.prototype.handle_navigate_mode = function (fig, msg) {\n", " if (msg['mode'] === 'PAN') {\n", " fig.buttons['Pan'].classList.add('active');\n", " fig.buttons['Zoom'].classList.remove('active');\n", " } else if (msg['mode'] === 'ZOOM') {\n", " fig.buttons['Pan'].classList.remove('active');\n", " fig.buttons['Zoom'].classList.add('active');\n", " } else {\n", " fig.buttons['Pan'].classList.remove('active');\n", " fig.buttons['Zoom'].classList.remove('active');\n", " }\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", " var img = evt.data;\n", " if (img.type !== 'image/png') {\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", " img.type = 'image/png';\n", " }\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", "\n", " fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n", " img\n", " );\n", " fig.updated_canvas_event();\n", " fig.waiting = false;\n", " return;\n", " } else if (\n", " typeof evt.data === 'string' &&\n", " evt.data.slice(0, 21) === 'data:image/png;base64'\n", " ) {\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(\n", " \"No handler for the '\" + msg_type + \"' message type: \",\n", " msg\n", " );\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(\n", " \"Exception inside the 'handler_\" + msg_type + \"' callback:\",\n", " e,\n", " e.stack,\n", " msg\n", " );\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", " }\n", " if (e.target) {\n", " targ = e.target;\n", " } else if (e.srcElement) {\n", " targ = e.srcElement;\n", " }\n", " if (targ.nodeType === 3) {\n", " // defeat Safari bug\n", " targ = targ.parentNode;\n", " }\n", "\n", " // pageX,Y are the mouse positions relative to the document\n", " var boundingRect = targ.getBoundingClientRect();\n", " var x = e.pageX - (boundingRect.left + document.body.scrollLeft);\n", " var y = e.pageY - (boundingRect.top + document.body.scrollTop);\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", " }\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", " this.canvas.focus();\n", " this.canvas_div.focus();\n", " }\n", "\n", " var x = canvas_pos.x * this.ratio;\n", " var y = canvas_pos.y * this.ratio;\n", "\n", " this.send_message(name, {\n", " x: x,\n", " y: y,\n", " button: event.button,\n", " step: event.step,\n", " guiEvent: simpleKeys(event),\n", " });\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", " // Prevent repeat events\n", " if (name === 'key_press') {\n", " if (event.key === this._key) {\n", " return;\n", " } else {\n", " this._key = event.key;\n", " }\n", " }\n", " if (name === 'key_release') {\n", " this._key = null;\n", " }\n", "\n", " var value = '';\n", " if (event.ctrlKey && event.key !== 'Control') {\n", " value += 'ctrl+';\n", " }\n", " else if (event.altKey && event.key !== 'Alt') {\n", " value += 'alt+';\n", " }\n", " else if (event.shiftKey && event.key !== 'Shift') {\n", " value += 'shift+';\n", " }\n", "\n", " value += 'k' + event.key;\n", "\n", " this._key_event_extra(event, name);\n", "\n", " this.send_message(name, { key: value, 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", "\n", "///////////////// REMAINING CONTENT GENERATED BY embed_js.py /////////////////\n", "// prettier-ignore\n", "var _JSXTOOLS_RESIZE_OBSERVER=function(A){var t,i=new WeakMap,n=new WeakMap,a=new WeakMap,r=new WeakMap,o=new Set;function s(e){if(!(this instanceof s))throw new TypeError(\"Constructor requires 'new' operator\");i.set(this,e)}function h(){throw new TypeError(\"Function is not a constructor\")}function c(e,t,i,n){e=0 in arguments?Number(arguments[0]):0,t=1 in arguments?Number(arguments[1]):0,i=2 in arguments?Number(arguments[2]):0,n=3 in arguments?Number(arguments[3]):0,this.right=(this.x=this.left=e)+(this.width=i),this.bottom=(this.y=this.top=t)+(this.height=n),Object.freeze(this)}function d(){t=requestAnimationFrame(d);var s=new WeakMap,p=new Set;o.forEach((function(t){r.get(t).forEach((function(i){var r=t instanceof window.SVGElement,o=a.get(t),d=r?0:parseFloat(o.paddingTop),f=r?0:parseFloat(o.paddingRight),l=r?0:parseFloat(o.paddingBottom),u=r?0:parseFloat(o.paddingLeft),g=r?0:parseFloat(o.borderTopWidth),m=r?0:parseFloat(o.borderRightWidth),w=r?0:parseFloat(o.borderBottomWidth),b=u+f,F=d+l,v=(r?0:parseFloat(o.borderLeftWidth))+m,W=g+w,y=r?0:t.offsetHeight-W-t.clientHeight,E=r?0:t.offsetWidth-v-t.clientWidth,R=b+v,z=F+W,M=r?t.width:parseFloat(o.width)-R-E,O=r?t.height:parseFloat(o.height)-z-y;if(n.has(t)){var k=n.get(t);if(k[0]===M&&k[1]===O)return}n.set(t,[M,O]);var S=Object.create(h.prototype);S.target=t,S.contentRect=new c(u,d,M,O),s.has(i)||(s.set(i,[]),p.add(i)),s.get(i).push(S)}))})),p.forEach((function(e){i.get(e).call(e,s.get(e),e)}))}return s.prototype.observe=function(i){if(i instanceof window.Element){r.has(i)||(r.set(i,new Set),o.add(i),a.set(i,window.getComputedStyle(i)));var n=r.get(i);n.has(this)||n.add(this),cancelAnimationFrame(t),t=requestAnimationFrame(d)}},s.prototype.unobserve=function(i){if(i instanceof window.Element&&r.has(i)){var n=r.get(i);n.has(this)&&(n.delete(this),n.size||(r.delete(i),o.delete(i))),n.size||r.delete(i),o.size||cancelAnimationFrame(t)}},A.DOMRectReadOnly=c,A.ResizeObserver=s,A.ResizeObserverEntry=h,A}; // eslint-disable-line\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\", \"Left button pans, Right button zooms\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n", "\n", "mpl.extensions = [\"eps\", \"jpeg\", \"pgf\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n", "\n", "mpl.default_extension = \"png\";/* global mpl */\n", "\n", "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.binaryType = comm.kernel.ws.binaryType;\n", " ws.readyState = comm.kernel.ws.readyState;\n", " function updateReadyState(_event) {\n", " if (comm.kernel.ws) {\n", " ws.readyState = comm.kernel.ws.readyState;\n", " } else {\n", " ws.readyState = 3; // Closed state.\n", " }\n", " }\n", " comm.kernel.ws.addEventListener('open', updateReadyState);\n", " comm.kernel.ws.addEventListener('close', updateReadyState);\n", " comm.kernel.ws.addEventListener('error', updateReadyState);\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", " var data = msg['content']['data'];\n", " if (data['blob'] !== undefined) {\n", " data = {\n", " data: new Blob(msg['buffers'], { type: data['blob'] }),\n", " };\n", " }\n", " // Pass the mpl event to the overridden (by mpl) onmessage function.\n", " ws.onmessage(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 = document.getElementById(id);\n", " var ws_proxy = comm_websocket_adapter(comm);\n", "\n", " function ondownload(figure, _format) {\n", " window.open(figure.canvas.toDataURL());\n", " }\n", "\n", " var fig = new mpl.figure(id, ws_proxy, ondownload, element);\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;\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", " fig.cell_info[0].output_area.element.on(\n", " 'cleared',\n", " { fig: fig },\n", " fig._remove_fig_handler\n", " );\n", "};\n", "\n", "mpl.figure.prototype.handle_close = function (fig, msg) {\n", " var width = fig.canvas.width / fig.ratio;\n", " fig.cell_info[0].output_area.element.off(\n", " 'cleared',\n", " fig._remove_fig_handler\n", " );\n", " fig.resizeObserverInstance.unobserve(fig.canvas_div);\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.innerHTML =\n", " '<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 / this.ratio;\n", " var dataURL = this.canvas.toDataURL();\n", " this.cell_info[1]['text/html'] =\n", " '<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 () {\n", " fig.push_to_output();\n", " }, 1000);\n", "};\n", "\n", "mpl.figure.prototype._init_toolbar = function () {\n", " var fig = this;\n", "\n", " var toolbar = document.createElement('div');\n", " toolbar.classList = 'btn-toolbar';\n", " this.root.appendChild(toolbar);\n", "\n", " function on_click_closure(name) {\n", " return function (_event) {\n", " return fig.toolbar_button_onclick(name);\n", " };\n", " }\n", "\n", " function on_mouseover_closure(tooltip) {\n", " return function (event) {\n", " if (!event.currentTarget.disabled) {\n", " return fig.toolbar_button_onmouseover(tooltip);\n", " }\n", " };\n", " }\n", "\n", " fig.buttons = {};\n", " var buttonGroup = document.createElement('div');\n", " buttonGroup.classList = 'btn-group';\n", " var button;\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", " /* Instead of a spacer, we start a new button group. */\n", " if (buttonGroup.hasChildNodes()) {\n", " toolbar.appendChild(buttonGroup);\n", " }\n", " buttonGroup = document.createElement('div');\n", " buttonGroup.classList = 'btn-group';\n", " continue;\n", " }\n", "\n", " button = fig.buttons[name] = document.createElement('button');\n", " button.classList = 'btn btn-default';\n", " button.href = '#';\n", " button.title = name;\n", " button.innerHTML = '<i class=\"fa ' + image + ' fa-lg\"></i>';\n", " button.addEventListener('click', on_click_closure(method_name));\n", " button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n", " buttonGroup.appendChild(button);\n", " }\n", "\n", " if (buttonGroup.hasChildNodes()) {\n", " toolbar.appendChild(buttonGroup);\n", " }\n", "\n", " // Add the status bar.\n", " var status_bar = document.createElement('span');\n", " status_bar.classList = 'mpl-message pull-right';\n", " toolbar.appendChild(status_bar);\n", " this.message = status_bar;\n", "\n", " // Add the close button to the window.\n", " var buttongrp = document.createElement('div');\n", " buttongrp.classList = 'btn-group inline pull-right';\n", " button = document.createElement('button');\n", " button.classList = 'btn btn-mini btn-primary';\n", " button.href = '#';\n", " button.title = 'Stop Interaction';\n", " button.innerHTML = '<i class=\"fa fa-power-off icon-remove icon-large\"></i>';\n", " button.addEventListener('click', function (_evt) {\n", " fig.handle_close(fig, {});\n", " });\n", " button.addEventListener(\n", " 'mouseover',\n", " on_mouseover_closure('Stop Interaction')\n", " );\n", " buttongrp.appendChild(button);\n", " var titlebar = this.root.querySelector('.ui-dialog-titlebar');\n", " titlebar.insertBefore(buttongrp, titlebar.firstChild);\n", "};\n", "\n", "mpl.figure.prototype._remove_fig_handler = function (event) {\n", " var fig = event.data.fig;\n", " if (event.target !== this) {\n", " // Ignore bubbled events from children.\n", " return;\n", " }\n", " fig.close_ws(fig, {});\n", "};\n", "\n", "mpl.figure.prototype._root_extra_style = function (el) {\n", " el.style.boxSizing = 'content-box'; // override notebook setting of border-box.\n", "};\n", "\n", "mpl.figure.prototype._canvas_extra_style = function (el) {\n", " // this is important to make the div 'focusable\n", " el.setAttribute('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", " } else {\n", " // location in version 2\n", " IPython.keyboard_manager.register_events(el);\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", "\n", " // Check for shift+enter\n", " if (event.shiftKey && event.which === 13) {\n", " this.canvas_div.blur();\n", " // select the cell after this one\n", " var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n", " IPython.notebook.select(index + 1);\n", " }\n", "};\n", "\n", "mpl.figure.prototype.handle_save = function (fig, _msg) {\n", " fig.ondownload(fig, null);\n", "};\n", "\n", "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(\n", " 'matplotlib',\n", " mpl.mpl_figure_comm\n", " );\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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Vbnzzjtl1qxZUq5cOenQoYPcc889UqJEiVzH+e2337pyHdr/6tWrpVatWtK1a1e54YYbku066ziEsqFAKBsHhLJxQCgbB34hNA4I5Z33B4SyA4FQtvWAUDYOCGXj4IHDJEPZQkGG8k4OUT+yKHlhgciUkhcVD+++c+VF9+W/3w2PrnN6zlgCCOWMDb3/E48VyipOGzVqJPvtt5/06dNHypYtK/fff7/Mnj1bFixY4ISsNhXKVapUkaZNm8p1110n8+bNc8d37NhRHn30UVm5cqXcddddouUkPvvsM3eOnluvXj2ZPn26k9StWrWSbt26yYoVK5xcVmE7ZcoUKVKkSJZQrlatmpPN+m/GjBnSr18/ufvuu+WWW25JCuyLL74oF198sVx77bXSrl07+fHHH11fF154oYwZMybXcb7//vvyySefSOPGjWWfffaRadOmyR133OFktI47Pw2hbLQQysYBoWwcEMrGAaFsHBDKO+8PUf92vmMYlLywWFDywjhQ8sI4UPLCOJChbBwoeWEcon5kIZQtDghl4xBGQyiHQZk+4gkglFkT3hKIFcq33XabjBo1ygniihUrujFv2LDBZQt3795d+vbt676nQrl27dqiWbwqgLVpFnPPnj1l0aJFcsghhziZnFMNZRW7KpVVUBcrVsyd++6778qpp54qmk189tlnZwnliy66SMaPH5/Frm3btrJ06VL54osv8uSptZtr1Kghmhn99NNPZx2vklnF9/fffy8qrJOpoazX2r59u5u/bjT49ddf59l/7AEIZaOBUDYOCGXjgFA2Dghl44BQ3nl/iPq38x3DQChbLBDKxgGhbBwQysYBoWwcEMrGIepHFkLZ4oBQNg5hNIRyGJTpI54AQpk14S2BWKHcvHlzJ4O11ERsUwms4njChAnu2yqUe/To4bKXg6alMlTQvvLKKy6jOJGorVSpklx66aUybNiwbH1oVnTnzp1dBnBQ8mLs2LHZSmeo0NXvLV++PE+e3333ndStW1dee+01Oe2007KOX7t2regYJk6cKOeee27CcW7atEkGDx7sym389NNPsnXrVncNLZWxefPmPPuPPQChbDQQysYBoWwcEMrGAaFsHBDKO+8PUf92vmMYCGWLBULZOCCUjQNC2TgglI0DQtk4RP3IQihbHDJFKFc6/CabcIRt5XfZHUaEQ6HrDCKAUM6g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QIAAAQIECBAgQIAAAYGyPUCAAAECBAgQIECAAAECBAgQIECAAAECbRPwhHLbnNxFgAABAgQIECBAgAABAgQIECBAgACBmhcQKNf8FgBAgEARBP70pz/FmDFj4oEHHoiVK1fGLrvsEscdd1w0NjbGvvvuW5YW81BDWRo1CQECBAgQIECAAAECBAgQqGEBgXINL77WCRAohsCzzz4bhx12WBxwwAFx4IEHxsSJE+OLX/xiTJ06NZYtWxYPP/xwfOhDH8q02TzUkGmDBidAgAABAgQIECBAgAABAgRSAYGyjUCAAIEqFzj99NNj9erVcd9998Vjjz0WyQvy1q1bl76or3///tGpU6eYPn16pl3moYZMGzQ4AQIECBAgQIAAAQIECBAgIFC2BwgQIFAEgV133TWuv/76OPXUU2P+/PnRs2fPNFCur69Pg+Thw4fHmjVrMm01DzVk2qDBCRAgQIAAAQIECBAgQIAAAYGyPUCAAIEiCOy4447p08n/8R//0SpQvuuuu9JAee3atZm2mocaMm3Q4AQIECBAgAABAgQIECBAgIBA2R4gQIBAEQTe//73x9ixY+OMM87YECg3NTXF0qVLY+DAgfHe97437rzzzkxbzUMNmTZocAIECBAgQIAAAQIECBAgQECgbA8QIECgCALnnXdeel7yhAkT0kC5V69e0aNHj3jqqaciCXpnzJgRe+65Z6at5qGGTBs0OAECBAgQIECAAAECBAgQICBQtgcIECBQBIHnnnsuDY9POOGEWLx4cXz5y1+O7t27p8Hyxz/+8airq8u8zTzUkHmTJiBAgAABAgQIECBAgAABAgSi7v+eamvhQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEtiQgUN6SkN8nQIBAzgWWLFmyxQr33nvvLd7TkRvyUENH6vdZAgQIECBAgAABAgQIECBAoG0CAuW2ObmLAAECuRWor69Pz1De3NXc3Jxp/XmoIdMGDU6AAAECBAgQIECAAAECBAikAgJlG4EAAQJVLjBt2rQ3dZCEy8uWLYt777035s2bF1dddVUMHz480y7zUEOmDRqcAAECBAgQIECAAAECBAgQECjbAwQIECi6wAUXXBBNTU1xww03VKzVPNRQseZNTIAAAQIECBAgQIAAAQIECibgCeWCLah2CBAgsLHArFmzYtiwYfHyyy9XDCYPNVSseRMTIECAAAECBAgQIECAAIGCCQiUC7ag2iFAgMDGAg888EBcfvnlMXv27GhoaKgITh5qqEjjJiVAgAABAgQIECBAgAABAgUUECgXcFG1RIBAbQqsPzN56dKlsfvuu0fPnj3jxBNPLCtGHmooa8MmI0CAAAECBAgQIECAAAECNSYgUK6xBdcuAQLFEPjpT38ar7/+epx//vnx17/+NU466aRYuHBh7LLLLrHrrrvGSy+9FCtWrIgePXrE9OnTo3v37iVvPA81lLwpAxIgQIAAAQIECBAgQIAAAQKbFRAo2yAECBCoQoEPfehDcfHFF8d5550XAwYMiD/84Q/x85//PPr06bOhm7lz58Zpp50WH/zgB2PGjBkl7zIPNZS8KQMSIECAAAECBAgQIECAAAECAmV7gAABAkUT2GmnneLuu++Oo48+Ojp16hQTJkyIM888s1Wbt956a5x99tnx97//veQEeaih5E0ZkAABAgQIECBAgAABAgQIEBAo2wMECBAomkAS5k6aNClOPfXU2GuvveK6666LwYMHt2pz2rRp6ZPMixcvLjlBHmooeVMGJECAAAECBAgQIECAAAECBATK9gABAgSKJtC3b99oaWmJ+++/PyZOnBg333xz3HPPPen5yeuv5Azl5DiMc845Jz1rudRXHmoodU/GI0CAAAECBAgQIECAAAECBDYv4AxlO4QAAQJVKPDwww9Hv379okuXLum5yfPmzUtfwveRj3wkunXrFsuXL49HHnkkfUnfcccdFzfddFPJu8xDDSVvw7jhpQAAG39JREFUyoAECBAgQIAAAQIECBAgQIDAZgUEyjYIAQIEqlTg6aefjvHjx8djjz0Wa9asiebm5k12kjzJnNyTxZWHGrLoy5gECBAgQIAAAQIECBAgQIDApgUEynYGAQIECBAgQIAAAQIECBAgQIAAAQIECLRJQKDcJiY3ESBAoHoFFi1aFD169KhoA3mooaIAJidAgAABAgQIECBAgAABAgURECgXZCG1QYBAbQmMGDEiGhsbY++9995k46+99lpMmTIlfWHf3Llz3/I4jI6o5aGGjtTvswQIECBAgAABAgQIECBAgMDWCwiUt97MJwgQIFBxgYaGhpg2bVr079//TbUk4XESIt96661piHzyySdHEvwee+yxJa85DzWUvCkDEiBAgAABAgQIECBAgAABApsVECjbIAQIEKhCgeOPPz6eeeaZuOyyy2LAgAFx5513pkHyE088EYcddlgaIp9++umx8847Z9ZdHmrIrDkDEyBAgAABAgQIECBAgAABApsUECjbGAQIEKhCgZdffjm++tWvxs033xyvv/562sFRRx0VP/7xj+MDH/hAWTrKQw1ladQkBAgQIECAAAECBAgQIECAwAYBgbLNQIAAgSoWWL16dUyePDluvPHGePzxx2O//faLs846K/3aY489ytJZHmooS6MmIUCAAAECBAgQIECAAAECBEKgbBMQIECgIAJJoHzTTTelAfOaNWviox/9aHr0xeDBg2PbbbctS5d5qKEsjZqEAAECBAgQIECAAAECBAjUqIBAuUYXXtsECBRXYN26dTF16tS44YYbYtasWdGlS5dYvnx5WRvOQw1lbdhkBAgQIECAAAECBAgQIECgRgQEyjWy0NokQKA2Bf72t7+lTy2PHj26YgB5qKFizZuYAAECBAgQIECAAAECBAgUTECgXLAF1Q4BAsUWmD9/fvTs2TOSJ4Dr6+sr0mweaqhI4yYlQIAAAQIECBAgQIAAAQIEnKFsDxAgQKCaBJIwt1evXtHU1FTRQLnSNVTTmqmVAAECBAgQIECAAAECBAgUScATykVaTb0QIFB4gTw8HZyHGgq/0BokQIAAAQIECBAgQIAAAQI5FRAo53RhlEWAAIFNCeQhzM1DDXYHAQIECBAgQIAAAQIECBAgUBkBgXJl3M1KgACBdgnkIczNQw3twvMhAgQIECBAgAABAgQIECBAoMMCAuUOExqAAAEC5RPIQ5ibhxrKJ24mAgQIECBAgAABAgQIECBAYGMBgbL9QIAAgSoSyEOYm4caqmjJlEqAAAECBAgQIECAAAECBAolIFAu1HJqhgCBogv84Q9/iEGDBsWzzz4b22yzTUXazUMNFWncpAQIECBAgAABAgQIECBAgEAIlG0CAgQIECBAgAABAgQIECBAgAABAgQIEGiTgEC5TUxuIkCAQH4F9tlnn2hpadlsgYsXLy55A22Zd+NJs6ih5E0ZkAABAgQIECBAgAABAgQIENisgEDZBiFAgECVC1xyySWtAuXVq1fHnDlzoqmpKU499dT4/ve/X/Iu/33eX/ziF/Haa6/FcccdF926dYvly5fHrFmzYscdd4zTTjstkxpK3pQBCRAgQIAAAQIECBAgQIAAAYGyPUCAAIFaFGhubo6hQ4fGEUccEV/84hczJfjGN74RM2fOjHvvvTc6deq0Ya4kYB4wYECccMIJ8ZWvfCXTGgxOgAABAgQIECBAgAABAgQIZC/gCeXsjc1AgACBigncf//9cc4558Tzzz+faQ177LFHTJgwIQYOHNhqnnvuuSfOPffceOGFFzKtweAECBAgQIAAAQIECBAgQIBA9gIC5eyNzUCAAIGKCSRHXTQ2NsaaNWsyrWGnnXaKa6+9Ns4+++xW80yaNClGjhwZr776aqY1GJwAAQIECBAgQIAAAQIECBDIXkCgnL2xGQgQIJCpwBe+8IVW4ydnJz/77LPpGcbJ08HXX399pjUMGzYsfv3rX8fEiRPjpJNOirq6uvRc5+nTp6dPSB9zzDFx2223ZVqDwQkQIECAAAECBAgQIECAAIHsBQTK2RubgQABApkK7Lvvvpt8KV/yVPJnP/vZGDduXNTX12daw4oVK+LMM89MA+xtt9023vnOd8bLL78c69ati379+sUtt9ySfs9FgAABAgQIECBAgAABAgQIVLeAQLm610/1BAgQeEuBxx57LEaMGBE/+MEP4sgjjyyL1G9/+9uYN29evPjii5Gcq9y7d+/0y0WAAAECBAgQIECAAAECBAgUQ0CgXIx11AUBAgQ2KZAcM/Htb387fve73xEiQIAAAQIECBAgQIAAAQIECHRYQKDcYUIDECBAIL8C06ZNi0984hOxdu3aTIucM2fOVo3ft2/frbrfzQQIECBAgAABAgQIECBAgEA+BATK+VgHVRAgQKDdAg8//HCrzyYv5Xv66afjm9/8ZiRnLM+ePbvd47flg8kZzclL+JKX8W18Jd9Lro2/n3yvubm5LcO6hwABAgQIECBAgAABAgQIEMiZgEA5ZwuiHAIECGytwFuFuck4/fv3j4kTJ8a73/3urR12q+5fuHBhq/tXrVoVM2fOjOTYjfHjx7/ppXwHHXTQVo3vZgIECBAgQIAAAQIECBAgQCAfAgLlfKyDKggQINBugU2FuQ0NDWmI3KlTp3aPW6oPNjY2xjPPPBOTJ08u1ZDGIUCAAAECBAgQIECAAAECBCokIFCuELxpCRAgUCsCyXEbQ4YMiVdeeaVWWtYnAQIECBAgQIAAAQIECBAorIBAubBLqzECBGpJ4J577olZs2bFDjvsEIMHD47evXvnpv1Ro0bFlClTYsmSJbmpSSEECBAgQIAAAQIECBAgQIBA+wQEyu1z8ykCBAjkRuCqq66Kr371q+kRF+vWrYsVK1bEnXfeGQMHDoxzzz03Pbv4yiuvzLTeESNGtBo/eTHgk08+GQsWLIixY8fG6NGjM63B4AQIECBAgAABAgQIECBAgED2AgLl7I3NQIAAgUwFunfvHkOHDo1x48al85xxxhnx3HPPxaOPPhq/+MUv4mtf+1ps6pzlUhZ1yCGHtBouOcc5qW3YsGFpfS4CBAgQIECAAAECBAgQIECg+gUEytW/hjogQKDGBXbeeee466674thjj00l7r777hg+fHisXr06HnzwwfjYxz4Wr776ao0raZ8AAQIECBAgQIAAAQIECBAohYBAuRSKxiBAgEAFBQYNGhSHHnpoNDY2plXMnTs3+vTpE2+88Ubcfvvtcckll8Rf/vKXClZoagIECBAgQIAAAQIECBAgQKAoAgLloqykPggQqFmBRYsWpUdKJF/JcRfJGcrHH398PPHEE/HJT34yevToEZMmTcrU54orrtjs+C0tLWng/cILL8SECRNizJgxmdZjcAIECBAgQIAAAQIECBAgQCAbAYFyNq5GJUCAQNkE6uvrN8yVBLfJVVdXF8mve/bsGTNmzEhfzJfl1bVr1y0GyqtWrYr58+enYffKlSuzLMfYBAgQIECAAAECBAgQIECAQEYCAuWMYA1LgACBcgn87Gc/azVV8kK8/fbbLw4++OBylWEeAgQIECBAgAABAgQIECBAoAYEBMo1sMhaJECAAAECBAgQIECAAAECBAgQIECAQCkEBMqlUDQGAQIEciCQHCORnKe8dOnS2H333dOzk7d0FEUOylYCAQIECBAgQIAAAQIECBAgUEUCAuUqWiylEiBAYL3A7373u3j11Vfj6KOPjqamprj00kvTl9394x//2IC0/fbbx7nnnhtXX311bLfddvAIECBAgAABAgQIECBAgAABAh0WECh3mNAABAgQKL/ARz7ykTjppJNi1KhRceGFF8aNN94YY8aMicGDB8euu+4aL730UkyfPj0aGxvj05/+dPzoRz8qf5FmJECAAAECBAgQIECAAAECBAonIFAu3JJqiACBWhDo0qVL3HbbbdGvX79Ifj169Oi45JJLWrX+/e9/P8aOHRurVq2qBRY9EiBAgAABAgQIECBAgAABAhkLCJQzBjY8AQIEshBoaGiIO+64IwYMGJCek3zrrbdG//79W031q1/9Ks4444xYsWJFFmUYkwABAgQIECBAgAABAgQIEKgxAYFyjS24dgkQKIbAgQceGIcffnh6bvIFF1yQnqd88803t2ruU5/6VPoE8zXXXFOMxnVBgAABAgQIECBAgAABAgQIVFRAoFxRfpMTIECgfQI33HBDnHfeeTFo0KBIzlP+wQ9+EN26dUvPUN5tt91i+fLlcdddd8WyZcvisssui/PPP799E/kUAQIECBAgQIAAAQIECBAgQGAjAYGy7UCAAIEqFUieSB43blwsWrQo/vnPf75lFy0tLdHc3FylXSqbAAECBAgQIECAAAECBAgQyJOAQDlPq6EWAgQItFMgOfJic6Fx586d2zmyjxEgQIAAAQIECBAgQIAAAQIE/l9AoGw3ECBAgAABAgQIECBAgAABAgQIECBAgECbBATKbWJyEwECBPIrMGfOnC0W17dv3y3e4wYCBAgQIECAAAECBAgQIECAwJYEBMpbEvL7BAgQyLlAfX19JOck19XVvanS5HvrL2co53wRlUeAAAECBAgQIECAAAECBKpEQKBcJQulTAIECLyVwMKFC1v91qpVq2LmzJlx2223xfjx4+OYY44BSIAAAQIECBAgQIAAAQIECBDosIBAucOEBiBAgEB+BRobG+OZZ56JyZMn57dIlREgQIAAAQIECBAgQIAAAQJVIyBQrpqlUigBAgS2XmD27NkxZMiQeOWVV7b+wz5BgAABAgQIECBAgAABAgQIEPg3AYGyLUGAAIECC4waNSqmTJkSS5YsKXCXWiNAgAABAgQIECBAgAABAgTKJSBQLpe0eQgQIJCRwIgRI1qN3NTUFE8++WQsWLAgxo4dG6NHj85odsMSIECAAAECBAgQIECAAAECtSQgUK6l1dYrAQKFFDjkkENa9dXQ0BDdu3ePYcOGxdChQwvZt6YIECBAgAABAgQIECBAgACB8gsIlMtvbkYCBAgQIECAAAECBAgQIECAAAECBAhUpYBAuSqXTdEECBAgQIAAAQIECBAgQIAAAQIECBAov4BAufzmZiRAgEBJBa644orNjtfS0hKNjY3xwgsvxIQJE2LMmDElnd9gBAgQIECAAAECBAgQIECAQO0ICJRrZ611SoBAQQW6du26xUB51apVMX/+/Dj++ONj5cqVBZXQFgECBAgQIECAAAECBAgQIJC1gEA5a2HjEyBAgAABAgQIECBAgAABAgQIECBAoCACAuWCLKQ2CBAgsCmBtWvXpk8m9+3bFxABAgQIECBAgAABAgQIECBAoMMCAuUOExqAAAEClRdYvHhxPPXUU9HU1PSmYp5++un48pe/HHfccUfU1dXFAQccEPvvv3/lC1YBAQIECBAgQIAAAQIECBAgUJUCAuWqXDZFEyBA4P8FvvOd78SXvvSlNDDe3JW8nC95IZ+X8tk9BAgQIECAAAECBAgQIECAQHsFBMrtlfM5AgQI5ETgPe95T5xyyinxmc98JhoaGt5U1eOPPx5DhgyJ5557Lv3+O97xjujcuXNOKlcGAQIECBAgQIAAAQIECBAgUG0CAuVqWzH1EiBA4N8Etttuu3jooYeid+/erWzmzp0bffr0iebmZm4ECBAgQIAAAQIECBAgQIAAgQ4LCJQ7TGgAAgQIVFZgn332iWnTpsWBBx7YqpAFCxbEySefHH/+858rW6TZCRAgQIAAAQIECBAgQIAAgUIICJQLsYyaIECAAAECBAgQIECAAAECBAgQIECAQPYCAuXsjc1AgACBzAVWrlwZM2bMiOeffz5ef/31N82XvIyvsbEx8xpMQIAAAQIECBAgQIAAAQIECBRfQKBc/DXWIQECBReYNWtW+uK9v//977HDDjtEcqbyxlcSKK9atargCtojQIAAAQIECBAgQIAAAQIEyiEgUC6HsjkIECCQocDBBx8cXbt2jUmTJsVee+2V4UyGJkCAAAECBAgQIECAAAECBGpdQKBc6ztA/wQIVL1Ap06d4s4774z+/ftXfS8aIECAAAECBAgQIECAAAECBPItIFDO9/qojgABAlsU6NWrV4wcOTLOOuusLd7rBgIECBAgQIAAAQIECBAgQIBARwQEyh3R81kCBAjkQOC3v/1t/Od//meMHz8+Dj/88BxUpAQCBAgQIECAAAECBAgQIECgqAIC5aKurL4IEKgZgX322Sd96d6aNWuic+fO0aVLl1a9L168uGY8NEqAAAECBAgQIECAAAECBAhkJyBQzs7WyAQIECiLwH/9139tcZ7vfe97W7zHDQQIECBAgAABAgQIECBAgACBLQkIlLck5PcJECBAgAABAgQIECBAgAABAgQIECBAIBUQKNsIBAgQKIhAc3NzPP/88/Hiiy/GHnvsEXvuuWdss802BelOGwQIECBAgAABAgQIECBAgEAeBATKeVgFNRAgQKCDAtddd11ceeWVaZhcV1cXLS0t8a53vStGjRoVI0eO7ODoPk6AAAECBAgQIECAAAECBAgQ+JeAQNlOIECAQJULjB07Nq644ooYMWJEnHzyydGtW7dYvnx5TJ06NW688cYYM2ZMXH755VXepfIJECBAgAABAgQIECBAgACBPAgIlPOwCmogQIBABwR23333NEz+1re+1WqUyy67LG644YZYunRpB2bwUQIECBAgQIAAAQIECBAgQIDAvwQEynYCAQIEqlygc+fOcfvtt0e/fv1adfKrX/0qTjnllFi7dm2Vd6l8AgQIECBAgAABAgQIECBAIA8CAuU8rIIaCBAg0AGBYcOGpS/hu+aaa1qN8vnPfz49/uKWW27pwAw+SoAAAQIECBAgQIAAAQIECBD4l4BA2U4gQIBAlQskZyVfdNFF0bNnzxg6dOiGM5TvuOOOmDdvXlx77bXRtWvXDV327du3yjtWPgECBAgQIECAAAECBAgQIFApAYFypeTNS4AAgRIJ1NfXt3mklpaWaG5ubvP9biRAgAABAgQIECBAgAABAgQIbCwgULYfCBAgUOUCCxcu3KoODjrooK26380ECBAgQIAAAQIECBAgQIAAgfUCAmV7gQABAgQIECBAgAABAgQIECBAgAABAgTaJCBQbhOTmwgQIJB/gQceeCCSr5UrV8Yuu+wSxx13XPrlIkCAAAECBAgQIECAAAECBAiUSkCgXCpJ4xAgQKBCAm+88Ub6Mr577rkndtttt3jxxRc3vJhvwIABcfvtt8f2229foepMS4AAAQIECBAgQIAAAQIECBRJQKBcpNXUCwECNSnwta99LcaPHx8zZ86M119/PQ499NBYt25dPPTQQ3HaaafFiBEj4qqrrqpJG00TIECAAAECBAgQIECAAAECpRUQKJfW02gECBAou8D+++8fI0eOjIsuuijmz58fPXv2TAPl+vr6uP766+PKK6+MJUuWlL0uExIgQIAAAQIECBAgQIAAAQLFExAoF29NdUSAQI0JNDQ0xH333RdHH310q0B51qxZceKJJ6ZPLrsIECBAgAABAgQIECBAgAABAh0VECh3VNDnCRAgUGGBPfbYIz3yYtCgQRsC5aampth2223TJ5fnzJkTixYtqnCVpidAgAABAgQIECBAgAABAgSKICBQLsIq6oEAgZoWOOGEE+Koo46Kyy67bEOgfPXVV8fs2bPj/vvvj1/+8pcxZMiQmjbSPAECBAgQIECAAAECBAgQIFAaAYFyaRyNQoAAgYoJTJ06NR588MH47ne/mwbKvXv3jre//e3Rq1evaGxsjD59+lSsNhMTIECAAAECBAgQIECAAAECxRIQKBdrPXVDgECNC7S0tMT//M//xI477ljjEtonQIAAAQIECBAgQIAAAQIEshAQKGehakwCBAgQIECAAAECBAgQIECAAAECBAgUUECgXMBF1RIBAgQIECBAgAABAgQIECBAgAABAgSyEBAoZ6FqTAIECBAgQIAAAQIECBAgQIAAAQIECBRQQKBcwEXVEgECBAgQIECAAAECBAgQIECAAAECBLIQEChnoWpMAgQIECBAgAABAgQIECBAgAABAgQIFFBAoFzARdUSAQIECBAgQIAAAQIECBAgQIAAAQIEshAQKGehakwCBAgQIECAAAECBAgQIECAAAECBAgUUECgXMBF1RIBAgQIECBAgAABAgQIECBAgAABAgSyEBAoZ6FqTAIECBAgQIAAAQIECBAgQIAAAQIECBRQQKBcwEXVEgECBAgQIECAAAECBAgQIECAAAECBLIQEChnoWpMAgQIECBAgAABAgQIECBAgAABAgQIFFBAoFzARdUSAQIECBAgQIAAAQIECBAgQIAAAQIEshAQKGehakwCBAgQIECAAAECBAgQIECAAAECBAgUUECgXMBF1RIBAgQIECBAgAABAgQIECBAgAABAgSyEBAoZ6FqTAIECBAgQIAAAQIECBAgQIAAAQIECBRQQKBcwEXVEgECBAgQIECAAAECBAgQIECAAAECBLIQEChnoWpMAgQIECBAgAABAgQIECBAgAABAgQIFFBAoFzARdUSAQIECBAgQIAAAQIECBAgQIAAAQIEshAQKGehakwCBAgQIECAAAECBAgQIECAAAECBAgUUECgXMBF1RIBAgQIECBAgAABAgQIECBAgAABAgSyEBAoZ6FqTAIECBAgQIAAAQIECBAgQIAAAQIECBRQQKBcwEXVEgECBAgQIECAAAECBAgQIECAAAECBLIQEChnoWpMAgQIECBAgAABAgQIECBAgAABAgQIFFBAoFzARdUSAQIECBAgQIAAAQIECBAgQIAAAQIEshAQKGehakwCBAgQIECAAAECBAgQIECAAAECBAgUUECgXMBF1RIBAgQIECBAgAABAgQIECBAgAABAgSyEBAoZ6FqTAIECBAgQIAAAQIECBAgQIAAAQIECBRQQKBcwEXVEgECBAgQIECAAAECBAgQIECAAAECBLIQEChnoWpMAgQIECBAgAABAgQIECBAgAABAgQIFFBAoFzARdUSAQIECBAgQIAAAQIECBAgQIAAAQIEshAQKGehakwCBAgQIECAAAECBAgQIECAAAECBAgUUECgXMBF1RIBAgQIECBAgAABAgQIECBAgAABAgSyEBAoZ6FqTAIECBAgQIAAAQIECBAgQIAAAQIECBRQQKBcwEXVEgECBAgQIECAAAECBAgQIECAAAECBLIQEChnoWpMAgQIECBAgAABAgQIECBAgAABAgQIFFBAoFzARdUSAQIECBAgQIAAAQIECBAgQIAAAQIEshAQKGehakwCBAgQIECAAAECBAgQIECAAAECBAgUUECgXMBF1RIBAgQIECBAgAABAgQIECBAgAABAgSyEPhfPPFJ6ruYDuUAAAAASUVORK5CYII=\" width=\"1309\">" ], "text/plain": [ "<IPython.core.display.HTML object>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import seaborn as sns\n", "\n", "matrix_np = matrix_np.reshape(len(feature),len(feature))\n", "\n", "fig, ax = plt.subplots(figsize=(12,8))\n", "ax = sns.heatmap(matrix_np, cmap=\"YlGnBu\")\n", "ax.xaxis.set_ticklabels(feature, rotation=270)\n", "ax.yaxis.set_ticklabels(feature, rotation=0)\n", "ax.set_title(\"Correlation Matrix\")\n", "plt.tight_layout()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "<a id=rf></a><br>\n", "\n", "## Random Forest\n", "\n", "**Random forest** are *ensemble learning* methos for classification and regression problems. In a Random forest we are combining a large number of independent trees trained over random and equally distributed subsets of the data obtained by sampling with replacement the original dataset.\n", "\n", "As a starting point we will train a simple random forest with $50$ trees, without tuning the hyperparameters. We need to specify the columns containing the features vector and the label." ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "from pyspark.ml.classification import RandomForestClassifier\n", "\n", "rf = RandomForestClassifier(labelCol='label', featuresCol='features', numTrees=50)" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "rf = rf.fit(train)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can now use our trained model to predict the test instances" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "pred = rf.transform(test)" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "+-----+----------+--------------------+\n", "|label|prediction| probability|\n", "+-----+----------+--------------------+\n", "| 0.0| 0.0|[0.51219251921637...|\n", "| 0.0| 1.0|[0.48525381949314...|\n", "| 0.0| 0.0|[0.59682131025326...|\n", "| 0.0| 0.0|[0.60709154528778...|\n", "| 0.0| 0.0|[0.51579712022307...|\n", "+-----+----------+--------------------+\n", "only showing top 5 rows\n", "\n" ] } ], "source": [ "pred.select('label', 'prediction', 'probability').show(5)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Since the test dataset is small we can convert it into a pandas dataframe. This allows us to use `sklearn` and `matplotlib`." ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [], "source": [ "pred_pd = pred.select(['label', 'prediction', 'probability']).toPandas()" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/html": [ "<div>\n", "<style scoped>\n", " .dataframe tbody tr th:only-of-type {\n", " vertical-align: middle;\n", " }\n", "\n", " .dataframe tbody tr th {\n", " vertical-align: top;\n", " }\n", "\n", " .dataframe thead th {\n", " text-align: right;\n", " }\n", "</style>\n", "<table border=\"1\" class=\"dataframe\">\n", " <thead>\n", " <tr style=\"text-align: right;\">\n", " <th></th>\n", " <th>label</th>\n", " <th>prediction</th>\n", " <th>probability</th>\n", " </tr>\n", " </thead>\n", " <tbody>\n", " <tr>\n", " <th>0</th>\n", " <td>0.0</td>\n", " <td>0.0</td>\n", " <td>[0.5121925192163791, 0.48780748078362096]</td>\n", " </tr>\n", " <tr>\n", " <th>1</th>\n", " <td>0.0</td>\n", " <td>1.0</td>\n", " <td>[0.4852538194931418, 0.5147461805068582]</td>\n", " </tr>\n", " <tr>\n", " <th>2</th>\n", " <td>0.0</td>\n", " <td>0.0</td>\n", " <td>[0.5968213102532699, 0.40317868974673005]</td>\n", " </tr>\n", " <tr>\n", " <th>3</th>\n", " <td>0.0</td>\n", " <td>0.0</td>\n", " <td>[0.6070915452877843, 0.3929084547122156]</td>\n", " </tr>\n", " <tr>\n", " <th>4</th>\n", " <td>0.0</td>\n", " <td>0.0</td>\n", " <td>[0.5157971202230772, 0.48420287977692283]</td>\n", " </tr>\n", " </tbody>\n", "</table>\n", "</div>" ], "text/plain": [ " label prediction probability\n", "0 0.0 0.0 [0.5121925192163791, 0.48780748078362096]\n", "1 0.0 1.0 [0.4852538194931418, 0.5147461805068582]\n", "2 0.0 0.0 [0.5968213102532699, 0.40317868974673005]\n", "3 0.0 0.0 [0.6070915452877843, 0.3929084547122156]\n", "4 0.0 0.0 [0.5157971202230772, 0.48420287977692283]" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pred_pd.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We need to convert the column `prediction` into a list, because now it is of type `VectorDense`. We will create a new column `encoded_label` that we will use to plot the `roc curve`." ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "pred_pd['probability'] = pred_pd['probability'].map(lambda x: list(x))\n", "pred_pd['encoded_label'] = pred_pd['label'].map(lambda x: np.eye(2)[int(x)])" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [], "source": [ "y_pred = np.array(pred_pd['probability'].tolist())\n", "y_true = np.array(pred_pd['encoded_label'].tolist())" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "AUC: 0.745\n" ] } ], "source": [ "from sklearn.metrics import auc, roc_curve\n", "\n", "fpr, tpr, threshold = roc_curve(y_score=y_pred[:,0], y_true=y_true[:,0])\n", "auc = auc(fpr, tpr)\n", "\n", "print('AUC: {:.3f}'.format(auc))" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", "/* global mpl */\n", "window.mpl = {};\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(\n", " '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", "\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 = document.createElement('div');\n", " this.root.setAttribute('style', 'display: inline-block');\n", " this._root_extra_style(this.root);\n", "\n", " parent_element.appendChild(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 (fig.ratio !== 1) {\n", " fig.send_message('set_dpi_ratio', { dpi_ratio: fig.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 = document.createElement('div');\n", " titlebar.classList =\n", " 'ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix';\n", " var titletext = document.createElement('div');\n", " titletext.classList = 'ui-dialog-title';\n", " titletext.setAttribute(\n", " 'style',\n", " 'width: 100%; text-align: center; padding: 3px;'\n", " );\n", " titlebar.appendChild(titletext);\n", " this.root.appendChild(titlebar);\n", " this.header = titletext;\n", "};\n", "\n", "mpl.figure.prototype._canvas_extra_style = function (_canvas_div) {};\n", "\n", "mpl.figure.prototype._root_extra_style = function (_canvas_div) {};\n", "\n", "mpl.figure.prototype._init_canvas = function () {\n", " var fig = this;\n", "\n", " var canvas_div = (this.canvas_div = document.createElement('div'));\n", " canvas_div.setAttribute(\n", " 'style',\n", " 'border: 1px solid #ddd;' +\n", " 'box-sizing: content-box;' +\n", " 'clear: both;' +\n", " 'min-height: 1px;' +\n", " 'min-width: 1px;' +\n", " 'outline: 0;' +\n", " 'overflow: hidden;' +\n", " 'position: relative;' +\n", " 'resize: both;'\n", " );\n", "\n", " function on_keyboard_event_closure(name) {\n", " return function (event) {\n", " return fig.key_event(event, name);\n", " };\n", " }\n", "\n", " canvas_div.addEventListener(\n", " 'keydown',\n", " on_keyboard_event_closure('key_press')\n", " );\n", " canvas_div.addEventListener(\n", " 'keyup',\n", " on_keyboard_event_closure('key_release')\n", " );\n", "\n", " this._canvas_extra_style(canvas_div);\n", " this.root.appendChild(canvas_div);\n", "\n", " var canvas = (this.canvas = document.createElement('canvas'));\n", " canvas.classList.add('mpl-canvas');\n", " canvas.setAttribute('style', 'box-sizing: content-box;');\n", "\n", " this.context = canvas.getContext('2d');\n", "\n", " var backingStore =\n", " this.context.backingStorePixelRatio ||\n", " this.context.webkitBackingStorePixelRatio ||\n", " this.context.mozBackingStorePixelRatio ||\n", " this.context.msBackingStorePixelRatio ||\n", " this.context.oBackingStorePixelRatio ||\n", " this.context.backingStorePixelRatio ||\n", " 1;\n", "\n", " this.ratio = (window.devicePixelRatio || 1) / backingStore;\n", "\n", " var rubberband_canvas = (this.rubberband_canvas = document.createElement(\n", " 'canvas'\n", " ));\n", " rubberband_canvas.setAttribute(\n", " 'style',\n", " 'box-sizing: content-box; position: absolute; left: 0; top: 0; z-index: 1;'\n", " );\n", "\n", " // Apply a ponyfill if ResizeObserver is not implemented by browser.\n", " if (this.ResizeObserver === undefined) {\n", " if (window.ResizeObserver !== undefined) {\n", " this.ResizeObserver = window.ResizeObserver;\n", " } else {\n", " var obs = _JSXTOOLS_RESIZE_OBSERVER({});\n", " this.ResizeObserver = obs.ResizeObserver;\n", " }\n", " }\n", "\n", " this.resizeObserverInstance = new this.ResizeObserver(function (entries) {\n", " var nentries = entries.length;\n", " for (var i = 0; i < nentries; i++) {\n", " var entry = entries[i];\n", " var width, height;\n", " if (entry.contentBoxSize) {\n", " if (entry.contentBoxSize instanceof Array) {\n", " // Chrome 84 implements new version of spec.\n", " width = entry.contentBoxSize[0].inlineSize;\n", " height = entry.contentBoxSize[0].blockSize;\n", " } else {\n", " // Firefox implements old version of spec.\n", " width = entry.contentBoxSize.inlineSize;\n", " height = entry.contentBoxSize.blockSize;\n", " }\n", " } else {\n", " // Chrome <84 implements even older version of spec.\n", " width = entry.contentRect.width;\n", " height = entry.contentRect.height;\n", " }\n", "\n", " // Keep the size of the canvas and rubber band canvas in sync with\n", " // the canvas container.\n", " if (entry.devicePixelContentBoxSize) {\n", " // Chrome 84 implements new version of spec.\n", " canvas.setAttribute(\n", " 'width',\n", " entry.devicePixelContentBoxSize[0].inlineSize\n", " );\n", " canvas.setAttribute(\n", " 'height',\n", " entry.devicePixelContentBoxSize[0].blockSize\n", " );\n", " } else {\n", " canvas.setAttribute('width', width * fig.ratio);\n", " canvas.setAttribute('height', height * fig.ratio);\n", " }\n", " canvas.setAttribute(\n", " 'style',\n", " 'width: ' + width + 'px; height: ' + height + 'px;'\n", " );\n", "\n", " rubberband_canvas.setAttribute('width', width);\n", " rubberband_canvas.setAttribute('height', height);\n", "\n", " // And update the size in Python. We ignore the initial 0/0 size\n", " // that occurs as the element is placed into the DOM, which should\n", " // otherwise not happen due to the minimum size styling.\n", " if (fig.ws.readyState == 1 && width != 0 && height != 0) {\n", " fig.request_resize(width, height);\n", " }\n", " }\n", " });\n", " this.resizeObserverInstance.observe(canvas_div);\n", "\n", " function on_mouse_event_closure(name) {\n", " return function (event) {\n", " return fig.mouse_event(event, name);\n", " };\n", " }\n", "\n", " rubberband_canvas.addEventListener(\n", " 'mousedown',\n", " on_mouse_event_closure('button_press')\n", " );\n", " rubberband_canvas.addEventListener(\n", " 'mouseup',\n", " on_mouse_event_closure('button_release')\n", " );\n", " rubberband_canvas.addEventListener(\n", " 'dblclick',\n", " on_mouse_event_closure('dblclick')\n", " );\n", " // Throttle sequential mouse events to 1 every 20ms.\n", " rubberband_canvas.addEventListener(\n", " 'mousemove',\n", " on_mouse_event_closure('motion_notify')\n", " );\n", "\n", " rubberband_canvas.addEventListener(\n", " 'mouseenter',\n", " on_mouse_event_closure('figure_enter')\n", " );\n", " rubberband_canvas.addEventListener(\n", " 'mouseleave',\n", " on_mouse_event_closure('figure_leave')\n", " );\n", "\n", " canvas_div.addEventListener('wheel', function (event) {\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", " on_mouse_event_closure('scroll')(event);\n", " });\n", "\n", " canvas_div.appendChild(canvas);\n", " canvas_div.appendChild(rubberband_canvas);\n", "\n", " this.rubberband_context = rubberband_canvas.getContext('2d');\n", " this.rubberband_context.strokeStyle = '#000000';\n", "\n", " this._resize_canvas = function (width, height, forward) {\n", " if (forward) {\n", " canvas_div.style.width = width + 'px';\n", " canvas_div.style.height = height + 'px';\n", " }\n", " };\n", "\n", " // Disable right mouse context menu.\n", " this.rubberband_canvas.addEventListener('contextmenu', function (_e) {\n", " event.preventDefault();\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 toolbar = document.createElement('div');\n", " toolbar.classList = 'mpl-toolbar';\n", " this.root.appendChild(toolbar);\n", "\n", " function on_click_closure(name) {\n", " return function (_event) {\n", " return fig.toolbar_button_onclick(name);\n", " };\n", " }\n", "\n", " function on_mouseover_closure(tooltip) {\n", " return function (event) {\n", " if (!event.currentTarget.disabled) {\n", " return fig.toolbar_button_onmouseover(tooltip);\n", " }\n", " };\n", " }\n", "\n", " fig.buttons = {};\n", " var buttonGroup = document.createElement('div');\n", " buttonGroup.classList = 'mpl-button-group';\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", " /* Instead of a spacer, we start a new button group. */\n", " if (buttonGroup.hasChildNodes()) {\n", " toolbar.appendChild(buttonGroup);\n", " }\n", " buttonGroup = document.createElement('div');\n", " buttonGroup.classList = 'mpl-button-group';\n", " continue;\n", " }\n", "\n", " var button = (fig.buttons[name] = document.createElement('button'));\n", " button.classList = 'mpl-widget';\n", " button.setAttribute('role', 'button');\n", " button.setAttribute('aria-disabled', 'false');\n", " button.addEventListener('click', on_click_closure(method_name));\n", " button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n", "\n", " var icon_img = document.createElement('img');\n", " icon_img.src = '_images/' + image + '.png';\n", " icon_img.srcset = '_images/' + image + '_large.png 2x';\n", " icon_img.alt = tooltip;\n", " button.appendChild(icon_img);\n", "\n", " buttonGroup.appendChild(button);\n", " }\n", "\n", " if (buttonGroup.hasChildNodes()) {\n", " toolbar.appendChild(buttonGroup);\n", " }\n", "\n", " var fmt_picker = document.createElement('select');\n", " fmt_picker.classList = 'mpl-widget';\n", " toolbar.appendChild(fmt_picker);\n", " this.format_dropdown = fmt_picker;\n", "\n", " for (var ind in mpl.extensions) {\n", " var fmt = mpl.extensions[ind];\n", " var option = document.createElement('option');\n", " option.selected = fmt === mpl.default_extension;\n", " option.innerHTML = fmt;\n", " fmt_picker.appendChild(option);\n", " }\n", "\n", " var status_bar = document.createElement('span');\n", " status_bar.classList = 'mpl-message';\n", " toolbar.appendChild(status_bar);\n", " this.message = status_bar;\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", "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", "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], msg['forward']);\n", " fig.send_message('refresh', {});\n", " }\n", "};\n", "\n", "mpl.figure.prototype.handle_rubberband = function (fig, msg) {\n", " var x0 = msg['x0'] / fig.ratio;\n", " var y0 = (fig.canvas.height - msg['y0']) / fig.ratio;\n", " var x1 = msg['x1'] / fig.ratio;\n", " var y1 = (fig.canvas.height - msg['y1']) / fig.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,\n", " 0,\n", " fig.canvas.width / fig.ratio,\n", " fig.canvas.height / fig.ratio\n", " );\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", " 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.handle_history_buttons = function (fig, msg) {\n", " for (var key in msg) {\n", " if (!(key in fig.buttons)) {\n", " continue;\n", " }\n", " fig.buttons[key].disabled = !msg[key];\n", " fig.buttons[key].setAttribute('aria-disabled', !msg[key]);\n", " }\n", "};\n", "\n", "mpl.figure.prototype.handle_navigate_mode = function (fig, msg) {\n", " if (msg['mode'] === 'PAN') {\n", " fig.buttons['Pan'].classList.add('active');\n", " fig.buttons['Zoom'].classList.remove('active');\n", " } else if (msg['mode'] === 'ZOOM') {\n", " fig.buttons['Pan'].classList.remove('active');\n", " fig.buttons['Zoom'].classList.add('active');\n", " } else {\n", " fig.buttons['Pan'].classList.remove('active');\n", " fig.buttons['Zoom'].classList.remove('active');\n", " }\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", " var img = evt.data;\n", " if (img.type !== 'image/png') {\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", " img.type = 'image/png';\n", " }\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", "\n", " fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n", " img\n", " );\n", " fig.updated_canvas_event();\n", " fig.waiting = false;\n", " return;\n", " } else if (\n", " typeof evt.data === 'string' &&\n", " evt.data.slice(0, 21) === 'data:image/png;base64'\n", " ) {\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(\n", " \"No handler for the '\" + msg_type + \"' message type: \",\n", " msg\n", " );\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(\n", " \"Exception inside the 'handler_\" + msg_type + \"' callback:\",\n", " e,\n", " e.stack,\n", " msg\n", " );\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", " }\n", " if (e.target) {\n", " targ = e.target;\n", " } else if (e.srcElement) {\n", " targ = e.srcElement;\n", " }\n", " if (targ.nodeType === 3) {\n", " // defeat Safari bug\n", " targ = targ.parentNode;\n", " }\n", "\n", " // pageX,Y are the mouse positions relative to the document\n", " var boundingRect = targ.getBoundingClientRect();\n", " var x = e.pageX - (boundingRect.left + document.body.scrollLeft);\n", " var y = e.pageY - (boundingRect.top + document.body.scrollTop);\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", " }\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", " this.canvas.focus();\n", " this.canvas_div.focus();\n", " }\n", "\n", " var x = canvas_pos.x * this.ratio;\n", " var y = canvas_pos.y * this.ratio;\n", "\n", " this.send_message(name, {\n", " x: x,\n", " y: y,\n", " button: event.button,\n", " step: event.step,\n", " guiEvent: simpleKeys(event),\n", " });\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", " // Prevent repeat events\n", " if (name === 'key_press') {\n", " if (event.key === this._key) {\n", " return;\n", " } else {\n", " this._key = event.key;\n", " }\n", " }\n", " if (name === 'key_release') {\n", " this._key = null;\n", " }\n", "\n", " var value = '';\n", " if (event.ctrlKey && event.key !== 'Control') {\n", " value += 'ctrl+';\n", " }\n", " else if (event.altKey && event.key !== 'Alt') {\n", " value += 'alt+';\n", " }\n", " else if (event.shiftKey && event.key !== 'Shift') {\n", " value += 'shift+';\n", " }\n", "\n", " value += 'k' + event.key;\n", "\n", " this._key_event_extra(event, name);\n", "\n", " this.send_message(name, { key: value, 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", "\n", "///////////////// REMAINING CONTENT GENERATED BY embed_js.py /////////////////\n", "// prettier-ignore\n", "var _JSXTOOLS_RESIZE_OBSERVER=function(A){var t,i=new WeakMap,n=new WeakMap,a=new WeakMap,r=new WeakMap,o=new Set;function s(e){if(!(this instanceof s))throw new TypeError(\"Constructor requires 'new' operator\");i.set(this,e)}function h(){throw new TypeError(\"Function is not a constructor\")}function c(e,t,i,n){e=0 in arguments?Number(arguments[0]):0,t=1 in arguments?Number(arguments[1]):0,i=2 in arguments?Number(arguments[2]):0,n=3 in arguments?Number(arguments[3]):0,this.right=(this.x=this.left=e)+(this.width=i),this.bottom=(this.y=this.top=t)+(this.height=n),Object.freeze(this)}function d(){t=requestAnimationFrame(d);var s=new WeakMap,p=new Set;o.forEach((function(t){r.get(t).forEach((function(i){var r=t instanceof window.SVGElement,o=a.get(t),d=r?0:parseFloat(o.paddingTop),f=r?0:parseFloat(o.paddingRight),l=r?0:parseFloat(o.paddingBottom),u=r?0:parseFloat(o.paddingLeft),g=r?0:parseFloat(o.borderTopWidth),m=r?0:parseFloat(o.borderRightWidth),w=r?0:parseFloat(o.borderBottomWidth),b=u+f,F=d+l,v=(r?0:parseFloat(o.borderLeftWidth))+m,W=g+w,y=r?0:t.offsetHeight-W-t.clientHeight,E=r?0:t.offsetWidth-v-t.clientWidth,R=b+v,z=F+W,M=r?t.width:parseFloat(o.width)-R-E,O=r?t.height:parseFloat(o.height)-z-y;if(n.has(t)){var k=n.get(t);if(k[0]===M&&k[1]===O)return}n.set(t,[M,O]);var S=Object.create(h.prototype);S.target=t,S.contentRect=new c(u,d,M,O),s.has(i)||(s.set(i,[]),p.add(i)),s.get(i).push(S)}))})),p.forEach((function(e){i.get(e).call(e,s.get(e),e)}))}return s.prototype.observe=function(i){if(i instanceof window.Element){r.has(i)||(r.set(i,new Set),o.add(i),a.set(i,window.getComputedStyle(i)));var n=r.get(i);n.has(this)||n.add(this),cancelAnimationFrame(t),t=requestAnimationFrame(d)}},s.prototype.unobserve=function(i){if(i instanceof window.Element&&r.has(i)){var n=r.get(i);n.has(this)&&(n.delete(this),n.size||(r.delete(i),o.delete(i))),n.size||r.delete(i),o.size||cancelAnimationFrame(t)}},A.DOMRectReadOnly=c,A.ResizeObserver=s,A.ResizeObserverEntry=h,A}; // eslint-disable-line\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\", \"Left button pans, Right button zooms\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n", "\n", "mpl.extensions = [\"eps\", \"jpeg\", \"pgf\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n", "\n", "mpl.default_extension = \"png\";/* global mpl */\n", "\n", "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.binaryType = comm.kernel.ws.binaryType;\n", " ws.readyState = comm.kernel.ws.readyState;\n", " function updateReadyState(_event) {\n", " if (comm.kernel.ws) {\n", " ws.readyState = comm.kernel.ws.readyState;\n", " } else {\n", " ws.readyState = 3; // Closed state.\n", " }\n", " }\n", " comm.kernel.ws.addEventListener('open', updateReadyState);\n", " comm.kernel.ws.addEventListener('close', updateReadyState);\n", " comm.kernel.ws.addEventListener('error', updateReadyState);\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", " var data = msg['content']['data'];\n", " if (data['blob'] !== undefined) {\n", " data = {\n", " data: new Blob(msg['buffers'], { type: data['blob'] }),\n", " };\n", " }\n", " // Pass the mpl event to the overridden (by mpl) onmessage function.\n", " ws.onmessage(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 = document.getElementById(id);\n", " var ws_proxy = comm_websocket_adapter(comm);\n", "\n", " function ondownload(figure, _format) {\n", " window.open(figure.canvas.toDataURL());\n", " }\n", "\n", " var fig = new mpl.figure(id, ws_proxy, ondownload, element);\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;\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", " fig.cell_info[0].output_area.element.on(\n", " 'cleared',\n", " { fig: fig },\n", " fig._remove_fig_handler\n", " );\n", "};\n", "\n", "mpl.figure.prototype.handle_close = function (fig, msg) {\n", " var width = fig.canvas.width / fig.ratio;\n", " fig.cell_info[0].output_area.element.off(\n", " 'cleared',\n", " fig._remove_fig_handler\n", " );\n", " fig.resizeObserverInstance.unobserve(fig.canvas_div);\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.innerHTML =\n", " '<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 / this.ratio;\n", " var dataURL = this.canvas.toDataURL();\n", " this.cell_info[1]['text/html'] =\n", " '<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 () {\n", " fig.push_to_output();\n", " }, 1000);\n", "};\n", "\n", "mpl.figure.prototype._init_toolbar = function () {\n", " var fig = this;\n", "\n", " var toolbar = document.createElement('div');\n", " toolbar.classList = 'btn-toolbar';\n", " this.root.appendChild(toolbar);\n", "\n", " function on_click_closure(name) {\n", " return function (_event) {\n", " return fig.toolbar_button_onclick(name);\n", " };\n", " }\n", "\n", " function on_mouseover_closure(tooltip) {\n", " return function (event) {\n", " if (!event.currentTarget.disabled) {\n", " return fig.toolbar_button_onmouseover(tooltip);\n", " }\n", " };\n", " }\n", "\n", " fig.buttons = {};\n", " var buttonGroup = document.createElement('div');\n", " buttonGroup.classList = 'btn-group';\n", " var button;\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", " /* Instead of a spacer, we start a new button group. */\n", " if (buttonGroup.hasChildNodes()) {\n", " toolbar.appendChild(buttonGroup);\n", " }\n", " buttonGroup = document.createElement('div');\n", " buttonGroup.classList = 'btn-group';\n", " continue;\n", " }\n", "\n", " button = fig.buttons[name] = document.createElement('button');\n", " button.classList = 'btn btn-default';\n", " button.href = '#';\n", " button.title = name;\n", " button.innerHTML = '<i class=\"fa ' + image + ' fa-lg\"></i>';\n", " button.addEventListener('click', on_click_closure(method_name));\n", " button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n", " buttonGroup.appendChild(button);\n", " }\n", "\n", " if (buttonGroup.hasChildNodes()) {\n", " toolbar.appendChild(buttonGroup);\n", " }\n", "\n", " // Add the status bar.\n", " var status_bar = document.createElement('span');\n", " status_bar.classList = 'mpl-message pull-right';\n", " toolbar.appendChild(status_bar);\n", " this.message = status_bar;\n", "\n", " // Add the close button to the window.\n", " var buttongrp = document.createElement('div');\n", " buttongrp.classList = 'btn-group inline pull-right';\n", " button = document.createElement('button');\n", " button.classList = 'btn btn-mini btn-primary';\n", " button.href = '#';\n", " button.title = 'Stop Interaction';\n", " button.innerHTML = '<i class=\"fa fa-power-off icon-remove icon-large\"></i>';\n", " button.addEventListener('click', function (_evt) {\n", " fig.handle_close(fig, {});\n", " });\n", " button.addEventListener(\n", " 'mouseover',\n", " on_mouseover_closure('Stop Interaction')\n", " );\n", " buttongrp.appendChild(button);\n", " var titlebar = this.root.querySelector('.ui-dialog-titlebar');\n", " titlebar.insertBefore(buttongrp, titlebar.firstChild);\n", "};\n", "\n", "mpl.figure.prototype._remove_fig_handler = function (event) {\n", " var fig = event.data.fig;\n", " if (event.target !== this) {\n", " // Ignore bubbled events from children.\n", " return;\n", " }\n", " fig.close_ws(fig, {});\n", "};\n", "\n", "mpl.figure.prototype._root_extra_style = function (el) {\n", " el.style.boxSizing = 'content-box'; // override notebook setting of border-box.\n", "};\n", "\n", "mpl.figure.prototype._canvas_extra_style = function (el) {\n", " // this is important to make the div 'focusable\n", " el.setAttribute('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", " } else {\n", " // location in version 2\n", " IPython.keyboard_manager.register_events(el);\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", "\n", " // Check for shift+enter\n", " if (event.shiftKey && event.which === 13) {\n", " this.canvas_div.blur();\n", " // select the cell after this one\n", " var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n", " IPython.notebook.select(index + 1);\n", " }\n", "};\n", "\n", "mpl.figure.prototype.handle_save = function (fig, _msg) {\n", " fig.ondownload(fig, null);\n", "};\n", "\n", "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(\n", " 'matplotlib',\n", " mpl.mpl_figure_comm\n", " );\n", "}\n" ], "text/plain": [ "<IPython.core.display.Javascript object>" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "<img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAvoAAAI6CAYAAABW9+xhAAAgAElEQVR4XuydB5wURfr+H1h2YUXSIihBggJyYkAURUDYU0Q9wxnuDJjPiD8978RweirgYT7x/sbTM2DOnp4RTIiAIKAiogioRFGUnBY2/at6nGV2mdA90/12Vc/Tnw8fle2ueuv5vrU+U/N2Vb1qdYEXFaACVIAKUAEqQAWoABWgApFRoJ6+aPQjw5MDoQJUgApQASpABagAFaACjgI0+kwEKkAFqAAVoAJUgApQASoQQQVo9CMIlUOiAlSAClABKkAFqAAVoAI0+swBKkAFqAAVoAJUgApQASoQQQVo9CMIlUOiAlSAClABKkAFqAAVoAI0+swBKkAFqAAVoAJUgApQASoQQQVo9CMIlUOiAlSAClABKkAFqAAVoAI0+swBKkAFqAAVoAJUgApQASoQQQVo9CMIlUOiAlSAClABKkAFqAAVoAI0+swBKkAFqAAVoAJUgApQASoQQQVo9CMIlUOiAlSAClABKkAFqAAVoAI0+swBKkAFqAAVoAJUgApQASoQQQVo9CMIlUOiAlSAClABKkAFqAAVoAI0+swBKkAFqAAVoAJUgApQASoQQQVo9CMIlUOiAlSAClABKkAFqAAVoAI0+swBKkAFqAAVoAJUgApQASoQQQVo9CMIlUOiAlSAClABKkAFqAAVoAI0+swBKkAFqAAVoAJUgApQASoQQQVo9CMIlUOiAlSAClABKkAFqAAVoAI0+swBKkAFqAAVoAJUgApQASoQQQVo9CMIlUOiAlSAClABKkAFqAAVoAI0+swBKkAFqAAVoAJUgApQASoQQQVo9CMIlUOiAlSAClABKkAFqAAVoAI0+swBKkAFqAAVoAJUgApQASoQQQVo9CMIlUOiAlSAClABKkAFqAAVoAI0+swBKkAFqAAVoAJUgApQASoQQQVo9CMIlUOiAlSAClABKkAFqAAVoAI0+swBKkAFqAAVoAJUgApQASoQQQVo9CMIlUOiAlSAClABKkAFqAAVoAI0+swBKkAFqAAVoAJUgApQASoQQQVo9CMIlUOiAlSAClABKkAFqAAVoAI0+swBKkAFqAAVoAJUgApQASoQQQVo9CMIlUOiAlSAClABKkAFqAAVoAI0+swBKkAFqAAVoAJUgApQASoQQQVo9CMIlUOiAlSAClABKkAFqAAVoAI0+swBKkAFqAAVoAJUgApQASoQQQVo9CMIlUOiAlSAClABKkAFqAAVoAI0+swBKkAFqAAVoAJUgApQASoQQQVo9CMIlUOiAlSAClABKkAFqAAVoAI0+swBKkAFqAAVoAJUgApQASoQQQVo9CMIlUOiAlSAClABKkAFqAAVoAI0+swBKkAFqAAVoAJUgApQASoQQQVo9CMIlUOiAlSAClABKkAFqAAVoAI0+swBKkAFqAAVoAJUgApQASoQQQVo9CMIlUOiAlSAClABKkAFqAAVoAI0+swBKkAFqEBACowfPx6//e1va7XeuHFjdOvWDaeffjouueQSNGjQIGnvkydPxl133YWJEydi+fLlaNKkCfbZZx+ceeaZOPXUU1G/fv2kz+l79XNvvvkmvv32W2zatAk77rgj+vTp4zz3+9//HuoXf0AjZrNUgApQASpgkgI0+ibRYCxUgApESoG40T/ppJNw1FFHobq6Gj/++CMef/xxfPnllzj//PPxwAMPbDPm4cOH44YbbkD79u2dDwRdunTBL7/8ghdffBHTpk3DEUcc4fz7dtttV+vZ999/H3/4wx+wfv16nHDCCTjwwAOx/fbbY/HixXjjjTecZ++9915cdNFFkdKZg6ECVIAKUIHkCtDoMzOoABWgAgEpEDf6N998M/72t7/V9LJhwwb85je/wZIlS/DTTz+hVatWNT8bM2YMzj77bOebgP/973+OUY9f+oOCbue2227DWWedhUcffbTmZ9988w32228/Z+V/7Nix2HPPPbcZlV7lX7t2LU4++eSARuytWf1tQ8OGDVN+O+GtNd5NBagAFaACdRWg0WdOUAEqQAUCUiCV0dfd/fGPf3RW5T/++GOnrEZfW7ZsQefOnbFmzRqn7EaX3NS9tNnff//9MWPGDHzxxRfYY489nFtOPPFEvPDCC87K/e9+97ucRqT7ePjhh50/+puHqqoqdOzY0fkm4Y477nDajn8g+eCDD1BaWlqrP/0h5LHHHnO+wYhf+p4FCxZA33/VVVfhvffew8qVK/HJJ58449FlTLrkqO518cUXO99CzJs3z/lmQ1/r1q3DLbfc4uin29TlUAMGDHC+Bdlrr71yGjsfpgJUgApESQEa/SjR5FioABUwSoF0Rr9Xr1747LPPoFfidc2+vuL3DxkyBE899VTKsTz44IO44IIL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gAAQCAECEPohIAEuAAEgAASAABAAAkAACAAB3QhA6OtGFPaAABAAAkAACAABIAAEgEAIEIDQDwEJubowa9Ys6tu3L02YMIEqV65Mffr0ocGDB2e9NY5v5r311lvppZdeorVr11LHjh3pscceo3322SdXl9A+DQJ+uJo9ezYNHTqUxowZQ/Pnz6fddtuNjjrqKBo0aBDVqlULWBtEwA9fye5cffXV9OijjxL/78MPP2zQ22ibzoWrL774ggYMGECTJ09Wt5S3bNmSnnvuOWrWrFm0QTU0er9cLViwgG666SYaO3YsrVu3jvbdd1+65ZZb6KSTTjLkKczOmzePhgwZQhMnTqQZM2ZQly5dFP7ZCvRFNoTkPofQl8PaSE8rV66kFi1a0N57762+8DifLafQPPvss5Voz1Quu+wyeu2111Tazfr169Odd95JP//8s1rMVatWNeJvlI365Yp5fOaZZ+iCCy6g1q1bE//YsSgpKiqi6dOnZ32gizLmuYzdL1+JfX7//ffqAbp06dJ0/vnnQ+jnQkiGtrlw9cknn9Cxxx5LF198MZ144om0efNmtWly+umnq/WGohcBv1wxLwcccIBy5o477qDq1aurTaqXX36ZmMPu3bvrdRTWFALvvPMOXXnlldShQwf69ttvqW7duq6EPvRFeCYQhH54uPDlyd1330133XWXEn81atRQNp5++mm64ooraOHChVSvXr2UdhcvXkx77LEHPfnkk+oHjsuKFSuoUaNGSkTecMMNvvxBo/QI+OVq+fLliltnsRYbZyHSqVMnevvtt+mEE04A7AYQ8MtXoiuHHnoodevWjV544QUlIrGjb4Aox6RfrrZt20ZNmjShs846S32PophHwC9XkyZNUmLzs88+U2uKy44dOxR/Rx55JD311FPmnY9gD4wxb1Rw4e+wVatWZRX60BfhmigQ+uHiw7M3Xbt2VeEbb731VnFbXogsDPnV83nnnZfSJn920UUXKXFfrVq14jonn3yy+jc3r+Y8OxvxBn65SgXbxo0bqWLFivTEE0/Q5ZdfHnFkzQw/V75eeeUVuvnmm4nDFJo3bw6hb4YmZdUvVyNHjqSjjz5avQlNtyli0O1ImvbL1eeff654/vrrr+nAAw8sxq5Vq1bUvn17tcGFYhYBt0If+sIsD16tQ+h7RSxk9evUqUOXXHKJislPLByKc845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\" width=\"698.5\">" ], "text/plain": [ "<IPython.core.display.HTML object>" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stderr", "output_type": "stream", "text": [ "/tmp/ipykernel_983/2994592142.py:2: UserWarning: color is redundantly defined by the 'color' keyword argument and the fmt string \"k--\" (-> color='k'). The keyword argument will take precedence.\n", " plt.plot([0,1], [0,1], 'k--', color='orange')\n" ] } ], "source": [ "plt.figure()\n", "plt.plot([0,1], [0,1], 'k--', color='orange')\n", "plt.plot(fpr, tpr, label='auc = {:.3f}'.format(auc))\n", "plt.xlabel('False positive rate')\n", "plt.ylabel('True positive rate')\n", "plt.title('ROC curve')\n", "plt.legend(loc='lower right')\n", "plt.grid()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "<a id=gridSearch></a><br>\n", "### Grid Search\n", "\n", "We can try to improve the performance of the classifier by tuning the hyperparameter such as the number of trees in the forest and the depth of each tree. <br>\n", "\n", "First of all we will create a smaller sample of $\\sim 80k$ for the grid search and cache it, because we will use it for different iterations." ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "We will use 4563 events for the grid search.\n" ] } ], "source": [ "subSample = train.sample(fraction=1.0/2, withReplacement=False).cache()\n", "print('We will use',subSample.count(),' events for the grid search.')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In this example we will perform a small grid search: in a real case a larger grid and more folds for the cross-validation should be used. We will now perform a search on a small grid, ideally you want to test more parameters and use more folds for the cross-validation." ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [], "source": [ "from pyspark.ml.tuning import ParamGridBuilder, CrossValidator\n", "from pyspark.ml.evaluation import BinaryClassificationEvaluator\n", "\n", "rf = RandomForestClassifier(labelCol='label', featuresCol='features', \n", " maxBins=20, subsamplingRate=0.7,\n", " minInfoGain= 1e-05,\n", " featureSubsetStrategy='all',\n", " minInstancesPerNode=2)\n", "\n", "evaluator=BinaryClassificationEvaluator(metricName='areaUnderROC')\n", "\n", "paramGrid = ParamGridBuilder()\\\n", " .addGrid(rf.maxDepth, [10,20])\\\n", " .addGrid(rf.numTrees, [50])\\\n", " .build()\n", "\n", "cv = CrossValidator(estimator=rf, \n", " evaluator=evaluator,\n", " estimatorParamMaps=paramGrid,\n", " numFolds=2, parallelism=2)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "bestModel = cv.fit(subSample)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "It is possile to see the score obtained (in this case the AUC) for each set of parameters" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "<zip object at 0x7efeaf198100>\n" ] } ], "source": [ "print(zip(bestModel.avgMetrics, paramGrid))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can get the parameter we are interested in and use them to train a random forest on the full dataset" ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "BestModel:\n", "\t-maxDepth = 10\n", "\t-numTrees = 50\n" ] } ], "source": [ "print('BestModel:\\n\\t-maxDepth =',bestModel.bestModel._java_obj.getMaxDepth())\n", "print('\\t-numTrees =',bestModel.bestModel._java_obj.getNumTrees())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "A benefit of using ensemble methods (like Random Forest and Gradient Boosting) is that it is really easy to extract the importance scores of each attribute. As the name suggests, the importance of a feature indicates how usefull a feature was during the construction of the trees. The more an attribute is used to make decision within a tree, the higher its importance is." ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", "/* global mpl */\n", "window.mpl = {};\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(\n", " '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", "\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 = document.createElement('div');\n", " this.root.setAttribute('style', 'display: inline-block');\n", " this._root_extra_style(this.root);\n", "\n", " parent_element.appendChild(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 (fig.ratio !== 1) {\n", " fig.send_message('set_dpi_ratio', { dpi_ratio: fig.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 = document.createElement('div');\n", " titlebar.classList =\n", " 'ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix';\n", " var titletext = document.createElement('div');\n", " titletext.classList = 'ui-dialog-title';\n", " titletext.setAttribute(\n", " 'style',\n", " 'width: 100%; text-align: center; padding: 3px;'\n", " );\n", " titlebar.appendChild(titletext);\n", " this.root.appendChild(titlebar);\n", " this.header = titletext;\n", "};\n", "\n", "mpl.figure.prototype._canvas_extra_style = function (_canvas_div) {};\n", "\n", "mpl.figure.prototype._root_extra_style = function (_canvas_div) {};\n", "\n", "mpl.figure.prototype._init_canvas = function () {\n", " var fig = this;\n", "\n", " var canvas_div = (this.canvas_div = document.createElement('div'));\n", " canvas_div.setAttribute(\n", " 'style',\n", " 'border: 1px solid #ddd;' +\n", " 'box-sizing: content-box;' +\n", " 'clear: both;' +\n", " 'min-height: 1px;' +\n", " 'min-width: 1px;' +\n", " 'outline: 0;' +\n", " 'overflow: hidden;' +\n", " 'position: relative;' +\n", " 'resize: both;'\n", " );\n", "\n", " function on_keyboard_event_closure(name) {\n", " return function (event) {\n", " return fig.key_event(event, name);\n", " };\n", " }\n", "\n", " canvas_div.addEventListener(\n", " 'keydown',\n", " on_keyboard_event_closure('key_press')\n", " );\n", " canvas_div.addEventListener(\n", " 'keyup',\n", " on_keyboard_event_closure('key_release')\n", " );\n", "\n", " this._canvas_extra_style(canvas_div);\n", " this.root.appendChild(canvas_div);\n", "\n", " var canvas = (this.canvas = document.createElement('canvas'));\n", " canvas.classList.add('mpl-canvas');\n", " canvas.setAttribute('style', 'box-sizing: content-box;');\n", "\n", " this.context = canvas.getContext('2d');\n", "\n", " var backingStore =\n", " this.context.backingStorePixelRatio ||\n", " this.context.webkitBackingStorePixelRatio ||\n", " this.context.mozBackingStorePixelRatio ||\n", " this.context.msBackingStorePixelRatio ||\n", " this.context.oBackingStorePixelRatio ||\n", " this.context.backingStorePixelRatio ||\n", " 1;\n", "\n", " this.ratio = (window.devicePixelRatio || 1) / backingStore;\n", "\n", " var rubberband_canvas = (this.rubberband_canvas = document.createElement(\n", " 'canvas'\n", " ));\n", " rubberband_canvas.setAttribute(\n", " 'style',\n", " 'box-sizing: content-box; position: absolute; left: 0; top: 0; z-index: 1;'\n", " );\n", "\n", " // Apply a ponyfill if ResizeObserver is not implemented by browser.\n", " if (this.ResizeObserver === undefined) {\n", " if (window.ResizeObserver !== undefined) {\n", " this.ResizeObserver = window.ResizeObserver;\n", " } else {\n", " var obs = _JSXTOOLS_RESIZE_OBSERVER({});\n", " this.ResizeObserver = obs.ResizeObserver;\n", " }\n", " }\n", "\n", " this.resizeObserverInstance = new this.ResizeObserver(function (entries) {\n", " var nentries = entries.length;\n", " for (var i = 0; i < nentries; i++) {\n", " var entry = entries[i];\n", " var width, height;\n", " if (entry.contentBoxSize) {\n", " if (entry.contentBoxSize instanceof Array) {\n", " // Chrome 84 implements new version of spec.\n", " width = entry.contentBoxSize[0].inlineSize;\n", " height = entry.contentBoxSize[0].blockSize;\n", " } else {\n", " // Firefox implements old version of spec.\n", " width = entry.contentBoxSize.inlineSize;\n", " height = entry.contentBoxSize.blockSize;\n", " }\n", " } else {\n", " // Chrome <84 implements even older version of spec.\n", " width = entry.contentRect.width;\n", " height = entry.contentRect.height;\n", " }\n", "\n", " // Keep the size of the canvas and rubber band canvas in sync with\n", " // the canvas container.\n", " if (entry.devicePixelContentBoxSize) {\n", " // Chrome 84 implements new version of spec.\n", " canvas.setAttribute(\n", " 'width',\n", " entry.devicePixelContentBoxSize[0].inlineSize\n", " );\n", " canvas.setAttribute(\n", " 'height',\n", " entry.devicePixelContentBoxSize[0].blockSize\n", " );\n", " } else {\n", " canvas.setAttribute('width', width * fig.ratio);\n", " canvas.setAttribute('height', height * fig.ratio);\n", " }\n", " canvas.setAttribute(\n", " 'style',\n", " 'width: ' + width + 'px; height: ' + height + 'px;'\n", " );\n", "\n", " rubberband_canvas.setAttribute('width', width);\n", " rubberband_canvas.setAttribute('height', height);\n", "\n", " // And update the size in Python. We ignore the initial 0/0 size\n", " // that occurs as the element is placed into the DOM, which should\n", " // otherwise not happen due to the minimum size styling.\n", " if (fig.ws.readyState == 1 && width != 0 && height != 0) {\n", " fig.request_resize(width, height);\n", " }\n", " }\n", " });\n", " this.resizeObserverInstance.observe(canvas_div);\n", "\n", " function on_mouse_event_closure(name) {\n", " return function (event) {\n", " return fig.mouse_event(event, name);\n", " };\n", " }\n", "\n", " rubberband_canvas.addEventListener(\n", " 'mousedown',\n", " on_mouse_event_closure('button_press')\n", " );\n", " rubberband_canvas.addEventListener(\n", " 'mouseup',\n", " on_mouse_event_closure('button_release')\n", " );\n", " rubberband_canvas.addEventListener(\n", " 'dblclick',\n", " on_mouse_event_closure('dblclick')\n", " );\n", " // Throttle sequential mouse events to 1 every 20ms.\n", " rubberband_canvas.addEventListener(\n", " 'mousemove',\n", " on_mouse_event_closure('motion_notify')\n", " );\n", "\n", " rubberband_canvas.addEventListener(\n", " 'mouseenter',\n", " on_mouse_event_closure('figure_enter')\n", " );\n", " rubberband_canvas.addEventListener(\n", " 'mouseleave',\n", " on_mouse_event_closure('figure_leave')\n", " );\n", "\n", " canvas_div.addEventListener('wheel', function (event) {\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", " on_mouse_event_closure('scroll')(event);\n", " });\n", "\n", " canvas_div.appendChild(canvas);\n", " canvas_div.appendChild(rubberband_canvas);\n", "\n", " this.rubberband_context = rubberband_canvas.getContext('2d');\n", " this.rubberband_context.strokeStyle = '#000000';\n", "\n", " this._resize_canvas = function (width, height, forward) {\n", " if (forward) {\n", " canvas_div.style.width = width + 'px';\n", " canvas_div.style.height = height + 'px';\n", " }\n", " };\n", "\n", " // Disable right mouse context menu.\n", " this.rubberband_canvas.addEventListener('contextmenu', function (_e) {\n", " event.preventDefault();\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 toolbar = document.createElement('div');\n", " toolbar.classList = 'mpl-toolbar';\n", " this.root.appendChild(toolbar);\n", "\n", " function on_click_closure(name) {\n", " return function (_event) {\n", " return fig.toolbar_button_onclick(name);\n", " };\n", " }\n", "\n", " function on_mouseover_closure(tooltip) {\n", " return function (event) {\n", " if (!event.currentTarget.disabled) {\n", " return fig.toolbar_button_onmouseover(tooltip);\n", " }\n", " };\n", " }\n", "\n", " fig.buttons = {};\n", " var buttonGroup = document.createElement('div');\n", " buttonGroup.classList = 'mpl-button-group';\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", " /* Instead of a spacer, we start a new button group. */\n", " if (buttonGroup.hasChildNodes()) {\n", " toolbar.appendChild(buttonGroup);\n", " }\n", " buttonGroup = document.createElement('div');\n", " buttonGroup.classList = 'mpl-button-group';\n", " continue;\n", " }\n", "\n", " var button = (fig.buttons[name] = document.createElement('button'));\n", " button.classList = 'mpl-widget';\n", " button.setAttribute('role', 'button');\n", " button.setAttribute('aria-disabled', 'false');\n", " button.addEventListener('click', on_click_closure(method_name));\n", " button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n", "\n", " var icon_img = document.createElement('img');\n", " icon_img.src = '_images/' + image + '.png';\n", " icon_img.srcset = '_images/' + image + '_large.png 2x';\n", " icon_img.alt = tooltip;\n", " button.appendChild(icon_img);\n", "\n", " buttonGroup.appendChild(button);\n", " }\n", "\n", " if (buttonGroup.hasChildNodes()) {\n", " toolbar.appendChild(buttonGroup);\n", " }\n", "\n", " var fmt_picker = document.createElement('select');\n", " fmt_picker.classList = 'mpl-widget';\n", " toolbar.appendChild(fmt_picker);\n", " this.format_dropdown = fmt_picker;\n", "\n", " for (var ind in mpl.extensions) {\n", " var fmt = mpl.extensions[ind];\n", " var option = document.createElement('option');\n", " option.selected = fmt === mpl.default_extension;\n", " option.innerHTML = fmt;\n", " fmt_picker.appendChild(option);\n", " }\n", "\n", " var status_bar = document.createElement('span');\n", " status_bar.classList = 'mpl-message';\n", " toolbar.appendChild(status_bar);\n", " this.message = status_bar;\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", "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", "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], msg['forward']);\n", " fig.send_message('refresh', {});\n", " }\n", "};\n", "\n", "mpl.figure.prototype.handle_rubberband = function (fig, msg) {\n", " var x0 = msg['x0'] / fig.ratio;\n", " var y0 = (fig.canvas.height - msg['y0']) / fig.ratio;\n", " var x1 = msg['x1'] / fig.ratio;\n", " var y1 = (fig.canvas.height - msg['y1']) / fig.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,\n", " 0,\n", " fig.canvas.width / fig.ratio,\n", " fig.canvas.height / fig.ratio\n", " );\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", " 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.handle_history_buttons = function (fig, msg) {\n", " for (var key in msg) {\n", " if (!(key in fig.buttons)) {\n", " continue;\n", " }\n", " fig.buttons[key].disabled = !msg[key];\n", " fig.buttons[key].setAttribute('aria-disabled', !msg[key]);\n", " }\n", "};\n", "\n", "mpl.figure.prototype.handle_navigate_mode = function (fig, msg) {\n", " if (msg['mode'] === 'PAN') {\n", " fig.buttons['Pan'].classList.add('active');\n", " fig.buttons['Zoom'].classList.remove('active');\n", " } else if (msg['mode'] === 'ZOOM') {\n", " fig.buttons['Pan'].classList.remove('active');\n", " fig.buttons['Zoom'].classList.add('active');\n", " } else {\n", " fig.buttons['Pan'].classList.remove('active');\n", " fig.buttons['Zoom'].classList.remove('active');\n", " }\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", " var img = evt.data;\n", " if (img.type !== 'image/png') {\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", " img.type = 'image/png';\n", " }\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", "\n", " fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n", " img\n", " );\n", " fig.updated_canvas_event();\n", " fig.waiting = false;\n", " return;\n", " } else if (\n", " typeof evt.data === 'string' &&\n", " evt.data.slice(0, 21) === 'data:image/png;base64'\n", " ) {\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(\n", " \"No handler for the '\" + msg_type + \"' message type: \",\n", " msg\n", " );\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(\n", " \"Exception inside the 'handler_\" + msg_type + \"' callback:\",\n", " e,\n", " e.stack,\n", " msg\n", " );\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", " }\n", " if (e.target) {\n", " targ = e.target;\n", " } else if (e.srcElement) {\n", " targ = e.srcElement;\n", " }\n", " if (targ.nodeType === 3) {\n", " // defeat Safari bug\n", " targ = targ.parentNode;\n", " }\n", "\n", " // pageX,Y are the mouse positions relative to the document\n", " var boundingRect = targ.getBoundingClientRect();\n", " var x = e.pageX - (boundingRect.left + document.body.scrollLeft);\n", " var y = e.pageY - (boundingRect.top + document.body.scrollTop);\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", " }\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", " this.canvas.focus();\n", " this.canvas_div.focus();\n", " }\n", "\n", " var x = canvas_pos.x * this.ratio;\n", " var y = canvas_pos.y * this.ratio;\n", "\n", " this.send_message(name, {\n", " x: x,\n", " y: y,\n", " button: event.button,\n", " step: event.step,\n", " guiEvent: simpleKeys(event),\n", " });\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", " // Prevent repeat events\n", " if (name === 'key_press') {\n", " if (event.key === this._key) {\n", " return;\n", " } else {\n", " this._key = event.key;\n", " }\n", " }\n", " if (name === 'key_release') {\n", " this._key = null;\n", " }\n", "\n", " var value = '';\n", " if (event.ctrlKey && event.key !== 'Control') {\n", " value += 'ctrl+';\n", " }\n", " else if (event.altKey && event.key !== 'Alt') {\n", " value += 'alt+';\n", " }\n", " else if (event.shiftKey && event.key !== 'Shift') {\n", " value += 'shift+';\n", " }\n", "\n", " value += 'k' + event.key;\n", "\n", " this._key_event_extra(event, name);\n", "\n", " this.send_message(name, { key: value, 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", "\n", "///////////////// REMAINING CONTENT GENERATED BY embed_js.py /////////////////\n", "// prettier-ignore\n", "var _JSXTOOLS_RESIZE_OBSERVER=function(A){var t,i=new WeakMap,n=new WeakMap,a=new WeakMap,r=new WeakMap,o=new Set;function s(e){if(!(this instanceof s))throw new TypeError(\"Constructor requires 'new' operator\");i.set(this,e)}function h(){throw new TypeError(\"Function is not a constructor\")}function c(e,t,i,n){e=0 in arguments?Number(arguments[0]):0,t=1 in arguments?Number(arguments[1]):0,i=2 in arguments?Number(arguments[2]):0,n=3 in arguments?Number(arguments[3]):0,this.right=(this.x=this.left=e)+(this.width=i),this.bottom=(this.y=this.top=t)+(this.height=n),Object.freeze(this)}function d(){t=requestAnimationFrame(d);var s=new WeakMap,p=new Set;o.forEach((function(t){r.get(t).forEach((function(i){var r=t instanceof window.SVGElement,o=a.get(t),d=r?0:parseFloat(o.paddingTop),f=r?0:parseFloat(o.paddingRight),l=r?0:parseFloat(o.paddingBottom),u=r?0:parseFloat(o.paddingLeft),g=r?0:parseFloat(o.borderTopWidth),m=r?0:parseFloat(o.borderRightWidth),w=r?0:parseFloat(o.borderBottomWidth),b=u+f,F=d+l,v=(r?0:parseFloat(o.borderLeftWidth))+m,W=g+w,y=r?0:t.offsetHeight-W-t.clientHeight,E=r?0:t.offsetWidth-v-t.clientWidth,R=b+v,z=F+W,M=r?t.width:parseFloat(o.width)-R-E,O=r?t.height:parseFloat(o.height)-z-y;if(n.has(t)){var k=n.get(t);if(k[0]===M&&k[1]===O)return}n.set(t,[M,O]);var S=Object.create(h.prototype);S.target=t,S.contentRect=new c(u,d,M,O),s.has(i)||(s.set(i,[]),p.add(i)),s.get(i).push(S)}))})),p.forEach((function(e){i.get(e).call(e,s.get(e),e)}))}return s.prototype.observe=function(i){if(i instanceof window.Element){r.has(i)||(r.set(i,new Set),o.add(i),a.set(i,window.getComputedStyle(i)));var n=r.get(i);n.has(this)||n.add(this),cancelAnimationFrame(t),t=requestAnimationFrame(d)}},s.prototype.unobserve=function(i){if(i instanceof window.Element&&r.has(i)){var n=r.get(i);n.has(this)&&(n.delete(this),n.size||(r.delete(i),o.delete(i))),n.size||r.delete(i),o.size||cancelAnimationFrame(t)}},A.DOMRectReadOnly=c,A.ResizeObserver=s,A.ResizeObserverEntry=h,A}; // eslint-disable-line\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\", \"Left button pans, Right button zooms\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n", "\n", "mpl.extensions = [\"eps\", \"jpeg\", \"pgf\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n", "\n", "mpl.default_extension = \"png\";/* global mpl */\n", "\n", "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.binaryType = comm.kernel.ws.binaryType;\n", " ws.readyState = comm.kernel.ws.readyState;\n", " function updateReadyState(_event) {\n", " if (comm.kernel.ws) {\n", " ws.readyState = comm.kernel.ws.readyState;\n", " } else {\n", " ws.readyState = 3; // Closed state.\n", " }\n", " }\n", " comm.kernel.ws.addEventListener('open', updateReadyState);\n", " comm.kernel.ws.addEventListener('close', updateReadyState);\n", " comm.kernel.ws.addEventListener('error', updateReadyState);\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", " var data = msg['content']['data'];\n", " if (data['blob'] !== undefined) {\n", " data = {\n", " data: new Blob(msg['buffers'], { type: data['blob'] }),\n", " };\n", " }\n", " // Pass the mpl event to the overridden (by mpl) onmessage function.\n", " ws.onmessage(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 = document.getElementById(id);\n", " var ws_proxy = comm_websocket_adapter(comm);\n", "\n", " function ondownload(figure, _format) {\n", " window.open(figure.canvas.toDataURL());\n", " }\n", "\n", " var fig = new mpl.figure(id, ws_proxy, ondownload, element);\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;\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", " fig.cell_info[0].output_area.element.on(\n", " 'cleared',\n", " { fig: fig },\n", " fig._remove_fig_handler\n", " );\n", "};\n", "\n", "mpl.figure.prototype.handle_close = function (fig, msg) {\n", " var width = fig.canvas.width / fig.ratio;\n", " fig.cell_info[0].output_area.element.off(\n", " 'cleared',\n", " fig._remove_fig_handler\n", " );\n", " fig.resizeObserverInstance.unobserve(fig.canvas_div);\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.innerHTML =\n", " '<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 / this.ratio;\n", " var dataURL = this.canvas.toDataURL();\n", " this.cell_info[1]['text/html'] =\n", " '<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 () {\n", " fig.push_to_output();\n", " }, 1000);\n", "};\n", "\n", "mpl.figure.prototype._init_toolbar = function () {\n", " var fig = this;\n", "\n", " var toolbar = document.createElement('div');\n", " toolbar.classList = 'btn-toolbar';\n", " this.root.appendChild(toolbar);\n", "\n", " function on_click_closure(name) {\n", " return function (_event) {\n", " return fig.toolbar_button_onclick(name);\n", " };\n", " }\n", "\n", " function on_mouseover_closure(tooltip) {\n", " return function (event) {\n", " if (!event.currentTarget.disabled) {\n", " return fig.toolbar_button_onmouseover(tooltip);\n", " }\n", " };\n", " }\n", "\n", " fig.buttons = {};\n", " var buttonGroup = document.createElement('div');\n", " buttonGroup.classList = 'btn-group';\n", " var button;\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", " /* Instead of a spacer, we start a new button group. */\n", " if (buttonGroup.hasChildNodes()) {\n", " toolbar.appendChild(buttonGroup);\n", " }\n", " buttonGroup = document.createElement('div');\n", " buttonGroup.classList = 'btn-group';\n", " continue;\n", " }\n", "\n", " button = fig.buttons[name] = document.createElement('button');\n", " button.classList = 'btn btn-default';\n", " button.href = '#';\n", " button.title = name;\n", " button.innerHTML = '<i class=\"fa ' + image + ' fa-lg\"></i>';\n", " button.addEventListener('click', on_click_closure(method_name));\n", " button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n", " buttonGroup.appendChild(button);\n", " }\n", "\n", " if (buttonGroup.hasChildNodes()) {\n", " toolbar.appendChild(buttonGroup);\n", " }\n", "\n", " // Add the status bar.\n", " var status_bar = document.createElement('span');\n", " status_bar.classList = 'mpl-message pull-right';\n", " toolbar.appendChild(status_bar);\n", " this.message = status_bar;\n", "\n", " // Add the close button to the window.\n", " var buttongrp = document.createElement('div');\n", " buttongrp.classList = 'btn-group inline pull-right';\n", " button = document.createElement('button');\n", " button.classList = 'btn btn-mini btn-primary';\n", " button.href = '#';\n", " button.title = 'Stop Interaction';\n", " button.innerHTML = '<i class=\"fa fa-power-off icon-remove icon-large\"></i>';\n", " button.addEventListener('click', function (_evt) {\n", " fig.handle_close(fig, {});\n", " });\n", " button.addEventListener(\n", " 'mouseover',\n", " on_mouseover_closure('Stop Interaction')\n", " );\n", " buttongrp.appendChild(button);\n", " var titlebar = this.root.querySelector('.ui-dialog-titlebar');\n", " titlebar.insertBefore(buttongrp, titlebar.firstChild);\n", "};\n", "\n", "mpl.figure.prototype._remove_fig_handler = function (event) {\n", " var fig = event.data.fig;\n", " if (event.target !== this) {\n", " // Ignore bubbled events from children.\n", " return;\n", " }\n", " fig.close_ws(fig, {});\n", "};\n", "\n", "mpl.figure.prototype._root_extra_style = function (el) {\n", " el.style.boxSizing = 'content-box'; // override notebook setting of border-box.\n", "};\n", "\n", "mpl.figure.prototype._canvas_extra_style = function (el) {\n", " // this is important to make the div 'focusable\n", " el.setAttribute('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", " } else {\n", " // location in version 2\n", " IPython.keyboard_manager.register_events(el);\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", "\n", " // Check for shift+enter\n", " if (event.shiftKey && event.which === 13) {\n", " this.canvas_div.blur();\n", " // select the cell after this one\n", " var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n", " IPython.notebook.select(index + 1);\n", " }\n", "};\n", "\n", "mpl.figure.prototype.handle_save = function (fig, _msg) {\n", " fig.ondownload(fig, null);\n", "};\n", "\n", "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(\n", " 'matplotlib',\n", " mpl.mpl_figure_comm\n", " );\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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bTn//PPlo48+kv79+6cdcOvXry8zZsyQ3bt3m/Zmz54t9erVizvGM888U5YvX17q95FZ5ieffFJ+//vfy7p16+Swww6Tk08+WR588EFp3759qfUfeeQReeCBB+Trr7+Wn//853LHHXfI6aefLgsXLkz6tmdmcNM6DNkIAQQQQAABBBBAwKIAAdciJk35SyA24Gqw01t89Rbk22+/XWrVqmWC4Icffigff/yx1K5dW1577TU555xz5M4775QLLvjPLGLHjh2lWrVqUlxcLJ06dTLBVkOyhs50ZnB//PFHOe644+TWW2+VL7/80vxT9/Hqq6/GxdXwqs/etmzZUu666y6z3k9+8hM55phj5J577pFGjRqZf9dniJ944gl55ZVXZMOGDdK4cWOzrobYSy65RK677jrzz7/+9a9mvS1bthBw/XVI01sEEEAAAQQQQCD0AgTc0B8C4QWIDbgaDGfOnCkbN26MzpZ+99130qJFCxk+fLiZ0azoFmWdcdXZXg2b+vxtugFX97Ft2zYTqHV5/vnnTXh955135LTTTotbrGSewdUQrn90xnnUqFHmRVi6dO7cWY466igzcx1Z9Pca8CuawdUZ5j179kS32bFjh2mryfX5kl0r/oxzZY84blGurCDbI4AAAggggAACwRUg4Aa3towsgUBswNUXQjVt2lSeeeaZUlvpjGaVKlVM0IsXcL/44gtp3bq1zJ07Vy688EKzfboBV2eBn3vuuWgfDhw4INWrV5epU6fKTTfdZAJqSUlJ9PfZ2dnmf8cLuGvXrjXhXAOyzghHFp2t1Tcva3vavr65+YYbboj+/q233pIzzjijwoCbl5cn48ePP0SZgMt/eggggAACCCCAAAKZEiDgZkqe/WZcIDbg6u29eityeYuGztWrV8cNuEOHDjUzty+88EJ08169esmRRx4pTz31lBxxxBESCaIVDVpnVnv27GmeuY1d9BZj7evEiRPN7Ku+wCqyRJ4BLi/g6gzriSeeaD4fpLO1zZs3N2G2X79+5vlafeOyvvVZ2//Tn/4kv/rVr6Lt6nPEJ5xwAjO4GT9K6QACCCCAAAIIIIBAKgIE3FS0WDdQArEBt0uXLuaZVZ2VLLvUqFHDBMV4M7jlveQptg19frZHjx4J7TS8JprB/eCDD+SHH36ItqUvi9JbossLuPqs7bnnnmueI27btm10G70d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/gMlMGjQICksLDR/0lkWLlwol1xyiXTo0CHtNuLtd9WqVfLyyy9LXl5eOl1LuA0BNyERK1RSgIBbSUA2RwABBBBAIAQCBNwQFJkhuifwySefyL59+6Rdu3Yp7/T777+XE088UfSfDRs2tB5wp0+fLrfccouUlJSk3LdkNiDgJqPEOpURIOBWRo9tEUAAAQQQCIcAATccdWaUPhC4++67Zfny5dKiRYtKzQLHGyoB1wcHAV2sUICAywGCAAIIIIAAAokECLiJhPg9AikIlL1Fefv27TJmzBhZsmSJmdnt1q2bPPzww3LSSSeValVnftu3by8rV66UadOmpRVwX3jhBbnvvvvkgw8+kNq1a0v//v3lgQcekGrVqkl+fr4MHjy41D5//vOfy7Jly2TDhg3mtuW3335bvv76aznuuOPkhhtukN/85jcpjFyEGdyUuFg5DQECbhpobIIAAggggEDIBAi4ISs4w3VWIDbgaljMzc2VunXryu233y61atWSBx98UD788EP5+OOPTQiNLL169ZJmzZrJ7NmzJZ3neBcsWCCXXXaZXHvtteYZ3m3btsltt90ml156qTz66KPy5ZdfyoQJE0Rncd955x2zW92/3hK9dOlSeeutt6RTp05yxBFHyOrVq2XcuHEmHA8bNixpMAJu0lSsmKYAATdNODZDAAEEEEAgRAIE3BAVm6E6LxAbTu+66y6ZOXOmbNy4UerVq2d2/t1335lbkIcPHy533HGH+dmiRYvkyiuvjK6XasDVZ2pzcnJEZ2Tnzp0bHaSG3ssvv1x0drh58+Ym3CZ6BlfbKi4uNn3TF1K9//77cdF2794te/bsif5+x44d0rlzZ2lyfb5k1/rPeFkQsClAwLWpSVsIIIAAAggEU4CAG8y6MqoMCcSG065du0rTpk3lmWeeKdUbnWGtUqWK6BuT9+/fL23btjWBNzJbmmrA/eijj+SEE04wQfm8886L7mvXrl1yzDHHSEFBgfTu3TtuwNWXWt1///3y9NNPy6effio//vijaUNvbdb+xVv0tubx48cf8msCboYOvhDsloAbgiIzRAQQQAABBCopQMCtJCCbIxArEBtOW7ZsaW5FLm/R24H1VuBJkybJ448/bm4bzs7ONqtef/315jlavW24Ro0acvjhh1eIvGLFCvnZz34Wd50ZM2bIjTfeGDfgarB+4oknzG3J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dAhEScDnh0mU2kVdEEAAAQQQQAABBOIj4POelIAbn36npgh4F/D5YeK9chwQAQQQQAABBBBAoCgEfN6TEnCL4pKhkQikFgg+TBpcMMaq1KgNEwKREFg09NBI1INKIIAAAggggEBuBAi4uXHmLAgUvAABt+C7OJYNJODGstuoNAIIIIAAAmkLEHDTpmNHBBBIFiDgcj1EUYCAG8VeoU4IIIAAAghkT4CAmz1bjoxAUQkQcIuqu2PTWAJubLqKiiKAAAIIIOBFgIDrhZGDIIAAAZdrIIoCBNwo9gp1QgABBBBAIHsCBNzs2XJkBIpKgIBbVN0dm8YScGPTVVQUAQQQQAABLwIEXC+MHAQBBAi4XANRFCDgRrFXqBMCCCCAAALZEyDgZs+WIyNQVAIE3KLq7tg0loAbm66ioggggAACCHgRIOB6YSyMgzRp0sSOOuooGzlypJcG+T6el0oV+UEmTZpk++23n82cOdN22223MjUGDBjgroPly5eHFiPghqZiwxwKEHBziM2pEEAAAQQQiIAAATcCnRCVKij0bLnllta4cWMvVfJ9PC+VKvKDhA24X375pX399de2xx57hBYj4IamYsMcChBwc4jNqRBAAAEEEIiAAAE3Ap1AFQpTYPXq1bbppptGqnFhA246lSbgpqPGPtkWIOBmW5jjI4AAAgggEC0BAm60+sNLbc444wybNWuWDRkyxHr16mULFiyw9u3b20MPPWTr1q2z7t27m4JOo0aNbPTo0W7KqkrpKcVz5851+7/99tumsLbtttvaWWedZZdffrnbfurUqda7d2+bPXu2/fbbb27/yy67zE4//fSUxwvqdeONN1rPnj3t448/tpYtW9rNN9/s6heUNWvW2CWXXGJjx461jTbayE499VTbeeed7bzzzrNly5ZZrVq1Qjm98cYb1r9/f/vPf/5jVatWtSOPPNJ07i222MLtH4S9V155xe6++2575pln3O/OOecc69evn1WqVClxHllceeWVNnnyZNfWv/71r67eMlFZtGiRNW3a1B544AF77bXXbPz48bbDDjvYW2+9ZZ9//rmde+657nx169Z1Zvq5+kh/3nvvPdt1113t5ZdfdscNyi+//GLbbLON9ejRw6666qpy2xz0n86huq1YscIOOeQQu+2226x27doVajNTlMvlZoOYCBBwY9JRVBMBBBBAAAFPAgRcT5BROoyC5MSJE61hw4bWt29fF8gUknbffXf773//a8cee6wLjMOGDXPPYiqAbbbZZusF3O22284FMgW7mjVr2rx580wXzDXXXOPCkwLy3nvvbRdeeKFtvPHG9sEHH7gA/Y9//KPMgKt61a9f3x1T06EVpBYuXOgCYvXq1d1+2v+OO+6wgQMH2i677GIPPvigC5aaNhs24Cp8d+7c2Q477DDr1q2b/fDDD9anTx9r0aKFvfDCCyXCXrNmzeyUU06xfffd11566SW7/vrr7bHHHrO//e1vbrv58+dbmzZtnN/FF1/s2qh6//rrry6cVq5cORFw1bYjjjjCjjvuOLfd/vvv7/ZbunSpDR061DkPGjTITf/daqutXMBVadeunTVv3twefvjhxKX05JNP2vHHH+98ZF1eUcBVKFZ79CXEt99+6/6r8ys8qwShvrw2E3DL0+b3cREg4Malp6gnAggggAACfgQIuH4cI3UUBVyFwg8//NCNIqoMHjzYhV2FN42yqnz00Ue20047uZFLBcHkEdzvvvvO6tSpYxMmTLDDDz98vfbNmDHD2rZt6wKeQmiqUnpEWPXSCOf777/vRm5VFPAUwJ599lk79NBDXRBUMNeIpUY6g6JnQd95553QAXefffZxo78KxkHRSK6CpMJvhw4dEmHviiuucOEzKFp8afvtt7fHH3/c/ahr165uxFX1rlatmvvZF1984QLpfffdZyeffHIi4MpRnkFRoNfP3nzzzcQotYKnAuuOO+6YCLh33XWXC/aLFy+2P/3pT253eSiwKnSHKfLWolD6wkJfSKg8/fTTbuGwadOm2Z577hm6zWECrr7kWLlyZaJqqruuiQYXjLEqNf4YMaYgkG8BAm6+e4DzI4AAAgggkFsBAm5uvXNyNgVJjdRpVDQoGpE84YQTSqyeu3btWjfyeuutt7rpv8mBVKOPmnK7+eabu2nKXbp0ccEzKBpJ1fYKtxdddJGb5qxAnFxSBVxN3/3ss88Sm8blGpwAACAASURBVP38888uNGoareoQjDAqTGqUOSj//Oc/XegNM4L7448/uoCnVYB1zOSiUdNrr73WhcngXK+++mpimra2VWDVtG6FWpWtt97aTZPWlO/kolFdjRJr2nMwRTloR7CdgqKmgSvUJhd5KswHI7gaWdd5hg8f7qYzKyxq+rOmlZ944omhrht5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CkSAgFsgHRnjZhBwY9x5VB0BBBBAAAFPAgRcT5AcBoFiFyDgFvsVkP/2E3Dz3wfUAAEEEEAAgXwLEHDz3QOcH4ECESDgFkhHxrgZBNwYdx5VRwABBBBAwJMAAdcTJIdBoNgFCLjFfgXkv/0E3Pz3ATVAAAEEEEAg3wIE3Hz3AOdHoEAECLgF0pExbgYBN8adR9URQAABBBDwJEDA9QTJYRAodgECbrFfAflvPwE3/31ADRBAAAEEEMi3AAG3nB5o0qSJHXXUUTZy5EgvfeX7eF4qxUEiITBgwAB3nS1fvtzV56OPPrJHH33ULr74YqtVq5aXOk6aNMn2228/mzlzpu22225ejhkchIDrlZODpSFAwE0DjV0QQAABBBAoMAECbjkdqiCw5ZZbWuPGjb10ve/jeakUB4mEwJdffmlff/217bHHHq4+48ePt6OPPtoWLlxo+mLERyHg+lDkGFEVIOBGtWeoFwIIIIAAArkTIODmzpoz/S6wevVq23TTTbEIIUDADYHEJggkCRBwuRwQQAABBBBAoGgC7hlnnGGzZs2yIUOGWK9evWzBggXWvn17e+ihh2zdunXWvXt30+hWo0aNbPTo0W4ap0rpKcVz5851+7/99tsurG277bZ21lln2eWXX+62nzp1qvXu3dtmz55tv/32m9v/sssus9NPPz3l8YJ63XjjjdazZ0/7+OOPrWXLlnbzzTe7+gVlzZo1dskll9jYsWNto402slNPPdV23nlnO++882zZsmWhp7C+8cYb1r9/f/vPf/5jVatWtSOPPNJ07i222MKdKhjhe+WVV+zuu++2Z555xv3unHPOsX79+lmlSpUSdZLFlVdeaZMnT3Zt/etf/+rqLROVRYsWWdOmTe2BBx6w1157zY1I7rDDDvbWW2/Z559/bueee647X926dZ2Zfq4+0p/33nvPdt11V3v55ZfdcYPyyy+/2DbbbGM9evSwq666qty/wUH/NWjQwE3/XblypZ188sl2yy23uPP94x//cOZt27Z19QzqrgNfccUV9txzz7lrRaP4nTt3thEjRljt2rUr1C9hTZOnKAf7JDdQswhkWnoqc7BNqunv1157rbueV61aZYcddpgdf/zxduyxx5aYovzTTz/Z1VdfbY888oh98803tv3229s///lPN3pckcIU5YposW02BAi42VDlmAgggAACCMRLoKgC7sSJE61hw4bWt29fF8gUknbffXf773//6276FRiHDRvmbv4VwDbbbLP1Au52223nApmCXc2aNW3evHkmxGuuucZWrFjhAvLee+9tF154oW288cb2wQcfuACtIKVSOoQo4Kpe9evXd8dUkFKA0bRUhZnq1au7/bT/HXfcYQMHDrRddtnFHnzwQRcsNa01bMBV+FZIU9Dp1q2b/fDDD9anTx9r0aKFvfDCC+48QbBq1qyZnXLKKbbvvvvaSy+9ZNdff7099thj9re//c1tN3/+fGvTpo3z0zOiaqPq/euvv7pwWrly5UTAVduOOOIIO+6449x2+++/v9tv6dKlNnToUOc8aNAgNz13q622cgFXpV27dta8eXN7+OGHE3+rnnzySRfS5CPr8oq8VSfVVV8GqD/0ZcT5559vU6ZMccFaI8oXXXSR7bTTTvbiiy8mDqkvLlTXrbfe2tVNdVW7ZsyYkdgmTL+ENU0OrrqWbr/9dheyn3rqKVeHatWqObewAVchXu1Se/WFja4zHUvXa/IzuLoeFPZ13B133NHGjRvnrrXXX3/dOnToUB5x4vcE3NBUbJglAQJulmA5LAIIIIAAAjESKKqAq1D44YcfulFElcGDB7uwq/CmUVYVLeyjoKORS934JwfS7777zurUqWMTJkywww8/fL1uVvDRSKACnkJoqpIq4Grk8P3333cjtyoKeAoyzz77rB166KEuCCqYa8RSgSwoelbznXfeCR1w99lnHzf6q2AcFI3kKkgq/CrMBGFMwUqBLihakEgje48//rj7UdeuXV0oUr0VvFS++OILF0jvu+8+N0oajODKUZ5BUdDSz958883EKPW3337rAqsCVhBw77rrLhfsFy9ebH/605/c7vLQKK5Cd5gib40664uIKlWquF0OOOAANzI8ffr0xPOuCpMKvQqWNWrUWO/Qa9eudddGq1atnPmf//zn0P0S1rR0cC1rinKYgKv6yvPAAw+0e++9N9EejcrquEHA1Ui9Rsj1X335EZRDDjnEfTGwIWdZaUQ8KOonXf8NLhhjVWr8b5Q7TD+xDQI+BAi4PhQ5BgIIIIAAAvEWKKqAq6Ch0BUUjUiecMIJJUazFAw08nrrrbe6Eb/kQKrRR0253Xzzzd005S5durjgGRSNpGp7hVuNnGnUTIE4uaQKuJq++9lnnyU2+/nnn11ovO22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PNHOOeccO+aYY+zzzz935/rb3/5mt99++wbr+corr9jrr79ubdq0sc0339xmzJhhV199tQvHqndZZcWKFbZy5crEr/UlgJwaXDDGqtSoHarebIRA1AUIuFHvIeqHAAIIIIBASQECLldE0QgkB9z+/fvb6NGjXWCtXfuPMLZq1So3mnrxxRdbnz59EgG3efPmplFOBVIVjfJedtlltnDhQmvYsKELt6mewVXQVMhVYN54443dvi+99JIdeOCBptHWww8/PBFwTzjhBHv00UcTfXHUUUe5EdHp06eX2z969rdJkyamkeMHHnggsb1Cr4L4p59+agrQYZ7B1bHWrl3r2q+Fs957770yz69R32uuuWa93xNwy+0yNoiRAAE3Rp1FVRFAAAEEEPhdgIDLZVA0AskBt3379i6campwclEoVZAdN25cIuD27NnTje4GRVObFRiffvppN+JaVnCsU6eOnXrqqXbjjTeWOIdGjbt37+5GSIMpyvfee2+Jqc4KmPrZ119/XW7/fPzxx9aiRQt75pln7KCDDkpsv3z5clMdxo8fb0ceeWSZ9Vy9erUNGjTITY/+8ssv7ZdffnHH0NTmn376qczzM4JbbtewQQEIEHALoBNpAgIIIIBAUQkQcIuqu4u7sckBd/vtt3cjq6mKpupqmq6KpigPHTrUPasblDVr1tgmm2zipv5q2nJZAbdKlSouOCbvq2MojO6zzz5uinMQcBWoNWobFI2O6rgKqeWVqVOn2t57713mZjfffLP9/e9/L7OemoasMK1pyX/+85+tVq1a9tBDD7mR6oqsDM0zuOX1FL+PowABN469Rp0RQAABBIpZgIBbzL1fZG1PDrjt2rVzo5up3l1bvXp19wxtEHDTHcGtW7eude3atcTor46ZagQ3k4D74Ycfuvredttttscee6zXqxptVl3KCuJ6xlhTma+//vrEvppyre0JuEX2l4TmridAwOWiQAABBBBAIF4CBNx49Re1zUAgOeBqESdNyZ07d64p0JZVNIKrZ3A1DXijjTZymwXP4C5YsMC23XZbu/XWW92qw5rqq5HdoGi686xZs2zevHmJ53dffvllO+CAA9Z7BjeTgKsQqhB78sknu2nPZZWy6qnAfcEFF7jRZhVNUVabtVAVATeDC45dC0KAgFsQ3UgjEEAAAQSKSICAW0SdXexNTQ64S5cudasG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k+NHUyw7tcrEKUw/tG/f3t3cHHXUUVanTh17+eWXbdiwYTZgwADr379/dhoVw6Nmux+SSa644gq7//777ZtvviHgJsHkog/OOOMMe+mll9y137JlS/e59+6779rw4cNjeNVmp8rZ7odJkyZZly5d3Beqp5xyii1dutSuuuoq15jZs2fbJptskp2GxeiomfRBw4YN3b/r+tL6mWeeSRlwMzl+jBgzrmomTmH6gX+fM+4i7wcg4Hon5YAI5FZgyJAhNnjwYPvss89syy23dCe/88477YILLrDPP//cttlmm5QV+vLLL11guu222+ycc85x23z//ffWqFEjd5Ny+eWXu5+le/zcKuT/bOk6he2H7777zo1SJZfu3bvbE0884fqN8odAtvshcNZowB577GEjRowwfUHBCO7/rsBs94GC7aGHHupClMItJbVAtvtB17364tNPP03MInnttdesc+fObjaRbvqLvaTbB3L77bffbKONNrLx48fb0UcfnTLgZnL8YuqbTJzC9AP/PkfvaiLgRq9PqBECFRLQlDAFn6eeeiqxn6awKuzee++9ppGOVEW/O/vss104qlWrVmKTY445xv1M386rpHv8CjWiADZO1ylsP6Qi0pcT+iLjxx9/tE033bQAFDNvQq764YADDrDWrVvbYYcdZvvttx8BN6nrst0HJ5xwgpum/+KLL2Z+wRTwEbLdD2eddZbNmDHDfdEQFI2it2nTxqZOneoeeSn2km4fJLttKOD6OH4x9JEPpw31A/8+R+8qIuBGr0+oEQIVEqhbt65pJE/P3CYXTTnu2rWrex4qVdEI7dixY00jiMlFz+Tec8899vXXX7sfp3v8CjWiADZO1ylsP6QiOvnkk91IiZ5BpPwhkIt+0Kj5hRdeaPPmzXPTYgm4Ja++bPdB48aN7YgjjnCjW2PGjDE9w66psjfffDPPfiZ1Rbb74fXXX3ejtaNGjUpMUdYXbpqq/NZbb1nlypWL/mMp3T4IG3B9HL8YOsmHU0UDLv8+5/fKIuDm15+zI5CxwMYbb+ymZV522WUljtWqVSv3DbqmK6cqmpY8bdo0e//990v8Ws+w6Vle3TSqpHv8jBsWswOk6xS2H0pzvPHGG9axY0cbOXKkW2CM8odAtvtBo+VaWErPPnfr1s3NdCDglrz6st0H1apVcwvo6TNOz+CuWrXKevfu7X72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rg2ff/65bbvtttarV68SbVD79bO3337bVq9e7bY566yz7PLLL/fehxwQAQQQyKcAATef+pwbAQQQQAABBEoIpAq4CnTnnHOOtWnTxm6++WYX9BRaFSTPOOMMmzFjhvXr18+FxJNOOikRcK+77jrbeuutXYhToBs1apRNmTLFhd3tttvObXfppZe6n2v/Dh062LPPPuvOoT9///vfE8caOnSoNWzY0G3fokUL22qrrdwI7hVXXGFPPfWUO0+1atVs9913tzlz5tgDDzxge++9t3s2V+e7+uqr7bTTTrMRI0aUCLgKv0cccYT78+6777pgrKCuMKry7bffumMqGPfv399Nhf74449tyZIlLsSryGLMmDGuDW3btrXJkye7Yzz00EN24oknum3UXn05cOWVV1rNmjVt3rx59n//9392zTXXcAUigAACBSVAwC2o7qQxCCCAAAIIxFsgVcBV6Bs4cKBr2FdffWUNGjSwXXbZxWbPnm2/38i4n++5554ugD7xxBOJUKrwdv/997tgqbJmzRoXEI888kg3Ivzdd9/ZNttsY5dddpkbxQ3KySefbP/+979dgK5cubILkjqWjn3ssccmtgvzDO66devcCPOdd97pRmGXLVvm6hyM4J5wwgluoaqgaGRawXP69OnuR9pHo86ffPKJC+mly/z5822HHXZwo7fdunVL/Fqjy2qD9lM769SpYxMmTLDDDz883hcItUcAAQTKESDgcokggAACCCCAQGQEUgVcTfXt1KlToo7Vq1e37t27u2nCQVGIVZh766233I+CULpixQqrUaNGYjtNy505c6YbLZ04caIddthhbsrxrrvumtjm6aefdlOgP/jgA9tpp50Sx/rxxx9t0003LTfgasqwQuldd93lgqyCdVAUmuvXr58IuPfee6+bXh0UBVr9TFObVdq1a2f16tVz4TRVueOOO9xU6aVLl9rmm29eog3HHXecW41aI7aaDq3fa2S4S5cu7ssACgIIIFCIAgTcQuxV2oQAAggggEBMBVIFXAXS3XbbLdEiTfvVq3mCKbr6hZ5H1VRlhVUV/U5TlPW8aXLp3bu3m86roKkpvF27dnVhUiEyKArJ7du3d8/G7rXXXu5YCqw//PBDiWOVNYKraciaFq1zdezY0U1TfvXVV9304GDF5WAEd9y4cS5MB6X0Ilt6bvivf/2rG3FOVfQcsqYml1U0XbpVq1ZuWrO2e/75523VqlVuure+INA0agoCCCBQSAIE3ELqTdqCAAIIIIBAzAV8BlxNK97QCO5zzz1nhx56qL333ntuynNQUo3gpno3b1kBV8/yahr1448/njimnvNVKK9owC1vBPe2225zzwpPnTo1sYBV8iWw8847lxh1/uWXX+zNN990U581Qq3p0BoRpyCAAAKFIkDALZSepB0IIIAAAggUgIDvgBvmGVyNrF577bUJPa14rOdX9bxv8AxuqoAbBOQPP/zQLTwVFC0K1bJlS3v44YcTP1PonTZtWoUDbvAMrhaFSjWtWNOydW5Ntz744INDXwHPPPOMW9jq008/dasyUxBAAIFCESDgFkpP0g4EEEAAAQQKQMBnwNUUZT3vqpWOg1WUtcJw8MogcWlV5JtuusmtcvyXv/zFFFo12lp6FeVUAXfBggVudWKNzGq1Yo2EaiRYi1bdcsst7nVG+v19993nXs+jackVHcENVlHWa4OCVZQVdjXFWnVW6dGjhwvTer5Wqyj//PPPptCt6doPPvigG6FWO7WgleqjqdZaZVmLT+lYwauVCuDyoQkIIICAFvKrVOn3Ff7WYYEAAggggAACCORbwGfAVSjVyKam8Go6rp5nVeg88MADE83UglB6jjV4D65WWe7Zs6edd955iW1KPxebbDRs2DAXZjXaqxFWhVi9q1bn1MJQCo8Klvvss49pdeaKBlyd67PPPnPP7+r1SD/99JMbcVUdg1WTdRunOmjBKQVWLaqlxbG08JZer6RXCingamqy6qlFp/bdd18XcmVCQQABBApJgIBbSL1JWxBAAAEEEEDACWwolEKEAAIIIFC4AgTcwu1bWoYAAggggEDRChBwi7braTgCCBS5AAG3yC8Amo8AAggggEAhChBwC7FXaRMCCCBQvgABt3wjtkAAAQQQQAABBBBAAAEEEIiBAAE3Bp1EFRFAAAEEEEAAAQQQQAABBMoXIOCWb8QWCCCAAAIIIIAAAggggAACMRAg4Magk6giAggggAACCCCAAAIIIIBA+QIE3PKN2AIBBBBAAAEEEEAAAQQQQCAGAgTcGHQSVUQAAQQQQAABBBBAAAEEEChfgIBbvhFbIIAAAggggAACCCCAAAIIxECAgBuDTqKKCCCAAAIIIIAAAggggAAC5QsQcMs3YgsEEEAAAQQQQAABBBBAAIEYCBBwY9BJVBEBBBBAAAEEEEAAAQQQQKB8AQJu+UZsgQACCCCAAAIIIIAAAgggEAMBAm4MOokqIoAAAggggAACCCCAAAIIlC9AwC3fiC0QQAABBBBAAAEEEEAAAQRiIEDAjUEnUUUEEEAAAQQQQAABBBBAAIHyBQi45RuxBQIIIIAAAggggAACCCCAQAwECLgx6CSqiAACCCCAAAIIIIAAAgggUL4AAbd8I7ZAAAEEEEAAAQQQQAABBBCIgQABNwadRBURQAABBBBAAAEEEEAAAQTKFyDglm/EFggggAACCCCAAAIIIIAAAjEQIODGoJOoIgIIIIAAAggggAACCCCAQPkCBNzyjdgCAQQQQAABBBBAAAEEEEAgBgIE3Bh0ElVEAAEEEEAAAQQQQAABBBAoX4CAW74RWyCAAAIIIIAAAggggAACCMRAQAH3/wEaL9Fg064iFAAAAABJRU5ErkJggg==\" width=\"872.6666666666667\">" ], "text/plain": [ "<IPython.core.display.HTML object>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots(figsize=(8,10))\n", "ax.barh(range(28), bestModel.bestModel.featureImportances.toArray())\n", "ax.set_yticks(range(28))\n", "ax.set_yticklabels(feature)\n", "ax.set_xlabel('Importances')\n", "ax.set_title('Feature importance')\n", "plt.tight_layout()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As one would expect the most important features are the *high-level* ones (because we are putting information inside them) and momentum of lepton, missing energy and leading jet. <br>" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [], "source": [ "important_features = ['lepton_pT', 'missing_energy_magnitude',\n", " 'jet1_pt', 'jet2_pt',\n", " 'm_jlv', 'm_jj', 'm_jjj',\n", " 'm_bb', 'm_wbb', 'm_wwbb']" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [], "source": [ "assembler = VectorAssembler(inputCols=important_features, outputCol='important_features')\n", "train = assembler.transform(train)\n", "test = assembler.transform(test)" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [], "source": [ "rf_all = RandomForestClassifier(labelCol='label', featuresCol='important_features', \n", " numTrees=100, maxDepth=15,\n", " maxBins=20, subsamplingRate=0.6,\n", " minInfoGain= 1e-05,\n", " featureSubsetStrategy='all',\n", " minInstancesPerNode=2)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "%%time\n", "model = rf_all.fit(train)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can now save the model. It will be saved as a **parquet** file" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "2022-09-30 09:37:12,912 WARN scheduler.TaskSetManager: Stage 297 contains a task of very large size (4724 KiB). The maximum recommended task size is 1000 KiB.\n" ] } ], "source": [ "model.write().overwrite().save(path='/tmp/rf_model')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "and it is possible to reload it in the following way" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [], "source": [ "from pyspark.ml.classification import RandomForestClassificationModel\n", "loaded_rf = RandomForestClassificationModel\\\n", " .load('/tmp/rf_model')" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [], "source": [ "pred_full = loaded_rf.transform(test)" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "2022-09-30 09:37:46,023 WARN scheduler.DAGScheduler: Broadcasting large task binary with size 10.0 MiB\n" ] } ], "source": [ "pred_pd_full = pred_full.select(['label', 'prediction', 'probability']).toPandas()" ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [], "source": [ "pred_pd_full['probability'] = pred_pd_full['probability'].map(lambda x: list(x))\n", "pred_pd_full['encoded_label'] = pred_pd_full['label'].map(lambda x: np.eye(2)[int(x)])\n", "\n", "y_pred = np.array(pred_pd_full['probability'].tolist())\n", "y_true = np.array(pred_pd_full['encoded_label'].tolist())" ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [ { "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", "/* global mpl */\n", "window.mpl = {};\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(\n", " '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", "\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 = document.createElement('div');\n", " this.root.setAttribute('style', 'display: inline-block');\n", " this._root_extra_style(this.root);\n", "\n", " parent_element.appendChild(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 (fig.ratio !== 1) {\n", " fig.send_message('set_dpi_ratio', { dpi_ratio: fig.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 = document.createElement('div');\n", " titlebar.classList =\n", " 'ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix';\n", " var titletext = document.createElement('div');\n", " titletext.classList = 'ui-dialog-title';\n", " titletext.setAttribute(\n", " 'style',\n", " 'width: 100%; text-align: center; padding: 3px;'\n", " );\n", " titlebar.appendChild(titletext);\n", " this.root.appendChild(titlebar);\n", " this.header = titletext;\n", "};\n", "\n", "mpl.figure.prototype._canvas_extra_style = function (_canvas_div) {};\n", "\n", "mpl.figure.prototype._root_extra_style = function (_canvas_div) {};\n", "\n", "mpl.figure.prototype._init_canvas = function () {\n", " var fig = this;\n", "\n", " var canvas_div = (this.canvas_div = document.createElement('div'));\n", " canvas_div.setAttribute(\n", " 'style',\n", " 'border: 1px solid #ddd;' +\n", " 'box-sizing: content-box;' +\n", " 'clear: both;' +\n", " 'min-height: 1px;' +\n", " 'min-width: 1px;' +\n", " 'outline: 0;' +\n", " 'overflow: hidden;' +\n", " 'position: relative;' +\n", " 'resize: both;'\n", " );\n", "\n", " function on_keyboard_event_closure(name) {\n", " return function (event) {\n", " return fig.key_event(event, name);\n", " };\n", " }\n", "\n", " canvas_div.addEventListener(\n", " 'keydown',\n", " on_keyboard_event_closure('key_press')\n", " );\n", " canvas_div.addEventListener(\n", " 'keyup',\n", " on_keyboard_event_closure('key_release')\n", " );\n", "\n", " this._canvas_extra_style(canvas_div);\n", " this.root.appendChild(canvas_div);\n", "\n", " var canvas = (this.canvas = document.createElement('canvas'));\n", " canvas.classList.add('mpl-canvas');\n", " canvas.setAttribute('style', 'box-sizing: content-box;');\n", "\n", " this.context = canvas.getContext('2d');\n", "\n", " var backingStore =\n", " this.context.backingStorePixelRatio ||\n", " this.context.webkitBackingStorePixelRatio ||\n", " this.context.mozBackingStorePixelRatio ||\n", " this.context.msBackingStorePixelRatio ||\n", " this.context.oBackingStorePixelRatio ||\n", " this.context.backingStorePixelRatio ||\n", " 1;\n", "\n", " this.ratio = (window.devicePixelRatio || 1) / backingStore;\n", "\n", " var rubberband_canvas = (this.rubberband_canvas = document.createElement(\n", " 'canvas'\n", " ));\n", " rubberband_canvas.setAttribute(\n", " 'style',\n", " 'box-sizing: content-box; position: absolute; left: 0; top: 0; z-index: 1;'\n", " );\n", "\n", " // Apply a ponyfill if ResizeObserver is not implemented by browser.\n", " if (this.ResizeObserver === undefined) {\n", " if (window.ResizeObserver !== undefined) {\n", " this.ResizeObserver = window.ResizeObserver;\n", " } else {\n", " var obs = _JSXTOOLS_RESIZE_OBSERVER({});\n", " this.ResizeObserver = obs.ResizeObserver;\n", " }\n", " }\n", "\n", " this.resizeObserverInstance = new this.ResizeObserver(function (entries) {\n", " var nentries = entries.length;\n", " for (var i = 0; i < nentries; i++) {\n", " var entry = entries[i];\n", " var width, height;\n", " if (entry.contentBoxSize) {\n", " if (entry.contentBoxSize instanceof Array) {\n", " // Chrome 84 implements new version of spec.\n", " width = entry.contentBoxSize[0].inlineSize;\n", " height = entry.contentBoxSize[0].blockSize;\n", " } else {\n", " // Firefox implements old version of spec.\n", " width = entry.contentBoxSize.inlineSize;\n", " height = entry.contentBoxSize.blockSize;\n", " }\n", " } else {\n", " // Chrome <84 implements even older version of spec.\n", " width = entry.contentRect.width;\n", " height = entry.contentRect.height;\n", " }\n", "\n", " // Keep the size of the canvas and rubber band canvas in sync with\n", " // the canvas container.\n", " if (entry.devicePixelContentBoxSize) {\n", " // Chrome 84 implements new version of spec.\n", " canvas.setAttribute(\n", " 'width',\n", " entry.devicePixelContentBoxSize[0].inlineSize\n", " );\n", " canvas.setAttribute(\n", " 'height',\n", " entry.devicePixelContentBoxSize[0].blockSize\n", " );\n", " } else {\n", " canvas.setAttribute('width', width * fig.ratio);\n", " canvas.setAttribute('height', height * fig.ratio);\n", " }\n", " canvas.setAttribute(\n", " 'style',\n", " 'width: ' + width + 'px; height: ' + height + 'px;'\n", " );\n", "\n", " rubberband_canvas.setAttribute('width', width);\n", " rubberband_canvas.setAttribute('height', height);\n", "\n", " // And update the size in Python. We ignore the initial 0/0 size\n", " // that occurs as the element is placed into the DOM, which should\n", " // otherwise not happen due to the minimum size styling.\n", " if (fig.ws.readyState == 1 && width != 0 && height != 0) {\n", " fig.request_resize(width, height);\n", " }\n", " }\n", " });\n", " this.resizeObserverInstance.observe(canvas_div);\n", "\n", " function on_mouse_event_closure(name) {\n", " return function (event) {\n", " return fig.mouse_event(event, name);\n", " };\n", " }\n", "\n", " rubberband_canvas.addEventListener(\n", " 'mousedown',\n", " on_mouse_event_closure('button_press')\n", " );\n", " rubberband_canvas.addEventListener(\n", " 'mouseup',\n", " on_mouse_event_closure('button_release')\n", " );\n", " rubberband_canvas.addEventListener(\n", " 'dblclick',\n", " on_mouse_event_closure('dblclick')\n", " );\n", " // Throttle sequential mouse events to 1 every 20ms.\n", " rubberband_canvas.addEventListener(\n", " 'mousemove',\n", " on_mouse_event_closure('motion_notify')\n", " );\n", "\n", " rubberband_canvas.addEventListener(\n", " 'mouseenter',\n", " on_mouse_event_closure('figure_enter')\n", " );\n", " rubberband_canvas.addEventListener(\n", " 'mouseleave',\n", " on_mouse_event_closure('figure_leave')\n", " );\n", "\n", " canvas_div.addEventListener('wheel', function (event) {\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", " on_mouse_event_closure('scroll')(event);\n", " });\n", "\n", " canvas_div.appendChild(canvas);\n", " canvas_div.appendChild(rubberband_canvas);\n", "\n", " this.rubberband_context = rubberband_canvas.getContext('2d');\n", " this.rubberband_context.strokeStyle = '#000000';\n", "\n", " this._resize_canvas = function (width, height, forward) {\n", " if (forward) {\n", " canvas_div.style.width = width + 'px';\n", " canvas_div.style.height = height + 'px';\n", " }\n", " };\n", "\n", " // Disable right mouse context menu.\n", " this.rubberband_canvas.addEventListener('contextmenu', function (_e) {\n", " event.preventDefault();\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 toolbar = document.createElement('div');\n", " toolbar.classList = 'mpl-toolbar';\n", " this.root.appendChild(toolbar);\n", "\n", " function on_click_closure(name) {\n", " return function (_event) {\n", " return fig.toolbar_button_onclick(name);\n", " };\n", " }\n", "\n", " function on_mouseover_closure(tooltip) {\n", " return function (event) {\n", " if (!event.currentTarget.disabled) {\n", " return fig.toolbar_button_onmouseover(tooltip);\n", " }\n", " };\n", " }\n", "\n", " fig.buttons = {};\n", " var buttonGroup = document.createElement('div');\n", " buttonGroup.classList = 'mpl-button-group';\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", " /* Instead of a spacer, we start a new button group. */\n", " if (buttonGroup.hasChildNodes()) {\n", " toolbar.appendChild(buttonGroup);\n", " }\n", " buttonGroup = document.createElement('div');\n", " buttonGroup.classList = 'mpl-button-group';\n", " continue;\n", " }\n", "\n", " var button = (fig.buttons[name] = document.createElement('button'));\n", " button.classList = 'mpl-widget';\n", " button.setAttribute('role', 'button');\n", " button.setAttribute('aria-disabled', 'false');\n", " button.addEventListener('click', on_click_closure(method_name));\n", " button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n", "\n", " var icon_img = document.createElement('img');\n", " icon_img.src = '_images/' + image + '.png';\n", " icon_img.srcset = '_images/' + image + '_large.png 2x';\n", " icon_img.alt = tooltip;\n", " button.appendChild(icon_img);\n", "\n", " buttonGroup.appendChild(button);\n", " }\n", "\n", " if (buttonGroup.hasChildNodes()) {\n", " toolbar.appendChild(buttonGroup);\n", " }\n", "\n", " var fmt_picker = document.createElement('select');\n", " fmt_picker.classList = 'mpl-widget';\n", " toolbar.appendChild(fmt_picker);\n", " this.format_dropdown = fmt_picker;\n", "\n", " for (var ind in mpl.extensions) {\n", " var fmt = mpl.extensions[ind];\n", " var option = document.createElement('option');\n", " option.selected = fmt === mpl.default_extension;\n", " option.innerHTML = fmt;\n", " fmt_picker.appendChild(option);\n", " }\n", "\n", " var status_bar = document.createElement('span');\n", " status_bar.classList = 'mpl-message';\n", " toolbar.appendChild(status_bar);\n", " this.message = status_bar;\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", "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", "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], msg['forward']);\n", " fig.send_message('refresh', {});\n", " }\n", "};\n", "\n", "mpl.figure.prototype.handle_rubberband = function (fig, msg) {\n", " var x0 = msg['x0'] / fig.ratio;\n", " var y0 = (fig.canvas.height - msg['y0']) / fig.ratio;\n", " var x1 = msg['x1'] / fig.ratio;\n", " var y1 = (fig.canvas.height - msg['y1']) / fig.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,\n", " 0,\n", " fig.canvas.width / fig.ratio,\n", " fig.canvas.height / fig.ratio\n", " );\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", " 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.handle_history_buttons = function (fig, msg) {\n", " for (var key in msg) {\n", " if (!(key in fig.buttons)) {\n", " continue;\n", " }\n", " fig.buttons[key].disabled = !msg[key];\n", " fig.buttons[key].setAttribute('aria-disabled', !msg[key]);\n", " }\n", "};\n", "\n", "mpl.figure.prototype.handle_navigate_mode = function (fig, msg) {\n", " if (msg['mode'] === 'PAN') {\n", " fig.buttons['Pan'].classList.add('active');\n", " fig.buttons['Zoom'].classList.remove('active');\n", " } else if (msg['mode'] === 'ZOOM') {\n", " fig.buttons['Pan'].classList.remove('active');\n", " fig.buttons['Zoom'].classList.add('active');\n", " } else {\n", " fig.buttons['Pan'].classList.remove('active');\n", " fig.buttons['Zoom'].classList.remove('active');\n", " }\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", " var img = evt.data;\n", " if (img.type !== 'image/png') {\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", " img.type = 'image/png';\n", " }\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", "\n", " fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n", " img\n", " );\n", " fig.updated_canvas_event();\n", " fig.waiting = false;\n", " return;\n", " } else if (\n", " typeof evt.data === 'string' &&\n", " evt.data.slice(0, 21) === 'data:image/png;base64'\n", " ) {\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(\n", " \"No handler for the '\" + msg_type + \"' message type: \",\n", " msg\n", " );\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(\n", " \"Exception inside the 'handler_\" + msg_type + \"' callback:\",\n", " e,\n", " e.stack,\n", " msg\n", " );\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", " }\n", " if (e.target) {\n", " targ = e.target;\n", " } else if (e.srcElement) {\n", " targ = e.srcElement;\n", " }\n", " if (targ.nodeType === 3) {\n", " // defeat Safari bug\n", " targ = targ.parentNode;\n", " }\n", "\n", " // pageX,Y are the mouse positions relative to the document\n", " var boundingRect = targ.getBoundingClientRect();\n", " var x = e.pageX - (boundingRect.left + document.body.scrollLeft);\n", " var y = e.pageY - (boundingRect.top + document.body.scrollTop);\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", " }\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", " this.canvas.focus();\n", " this.canvas_div.focus();\n", " }\n", "\n", " var x = canvas_pos.x * this.ratio;\n", " var y = canvas_pos.y * this.ratio;\n", "\n", " this.send_message(name, {\n", " x: x,\n", " y: y,\n", " button: event.button,\n", " step: event.step,\n", " guiEvent: simpleKeys(event),\n", " });\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", " // Prevent repeat events\n", " if (name === 'key_press') {\n", " if (event.key === this._key) {\n", " return;\n", " } else {\n", " this._key = event.key;\n", " }\n", " }\n", " if (name === 'key_release') {\n", " this._key = null;\n", " }\n", "\n", " var value = '';\n", " if (event.ctrlKey && event.key !== 'Control') {\n", " value += 'ctrl+';\n", " }\n", " else if (event.altKey && event.key !== 'Alt') {\n", " value += 'alt+';\n", " }\n", " else if (event.shiftKey && event.key !== 'Shift') {\n", " value += 'shift+';\n", " }\n", "\n", " value += 'k' + event.key;\n", "\n", " this._key_event_extra(event, name);\n", "\n", " this.send_message(name, { key: value, 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", "\n", "///////////////// REMAINING CONTENT GENERATED BY embed_js.py /////////////////\n", "// prettier-ignore\n", "var _JSXTOOLS_RESIZE_OBSERVER=function(A){var t,i=new WeakMap,n=new WeakMap,a=new WeakMap,r=new WeakMap,o=new Set;function s(e){if(!(this instanceof s))throw new TypeError(\"Constructor requires 'new' operator\");i.set(this,e)}function h(){throw new TypeError(\"Function is not a constructor\")}function c(e,t,i,n){e=0 in arguments?Number(arguments[0]):0,t=1 in arguments?Number(arguments[1]):0,i=2 in arguments?Number(arguments[2]):0,n=3 in arguments?Number(arguments[3]):0,this.right=(this.x=this.left=e)+(this.width=i),this.bottom=(this.y=this.top=t)+(this.height=n),Object.freeze(this)}function d(){t=requestAnimationFrame(d);var s=new WeakMap,p=new Set;o.forEach((function(t){r.get(t).forEach((function(i){var r=t instanceof window.SVGElement,o=a.get(t),d=r?0:parseFloat(o.paddingTop),f=r?0:parseFloat(o.paddingRight),l=r?0:parseFloat(o.paddingBottom),u=r?0:parseFloat(o.paddingLeft),g=r?0:parseFloat(o.borderTopWidth),m=r?0:parseFloat(o.borderRightWidth),w=r?0:parseFloat(o.borderBottomWidth),b=u+f,F=d+l,v=(r?0:parseFloat(o.borderLeftWidth))+m,W=g+w,y=r?0:t.offsetHeight-W-t.clientHeight,E=r?0:t.offsetWidth-v-t.clientWidth,R=b+v,z=F+W,M=r?t.width:parseFloat(o.width)-R-E,O=r?t.height:parseFloat(o.height)-z-y;if(n.has(t)){var k=n.get(t);if(k[0]===M&&k[1]===O)return}n.set(t,[M,O]);var S=Object.create(h.prototype);S.target=t,S.contentRect=new c(u,d,M,O),s.has(i)||(s.set(i,[]),p.add(i)),s.get(i).push(S)}))})),p.forEach((function(e){i.get(e).call(e,s.get(e),e)}))}return s.prototype.observe=function(i){if(i instanceof window.Element){r.has(i)||(r.set(i,new Set),o.add(i),a.set(i,window.getComputedStyle(i)));var n=r.get(i);n.has(this)||n.add(this),cancelAnimationFrame(t),t=requestAnimationFrame(d)}},s.prototype.unobserve=function(i){if(i instanceof window.Element&&r.has(i)){var n=r.get(i);n.has(this)&&(n.delete(this),n.size||(r.delete(i),o.delete(i))),n.size||r.delete(i),o.size||cancelAnimationFrame(t)}},A.DOMRectReadOnly=c,A.ResizeObserver=s,A.ResizeObserverEntry=h,A}; // eslint-disable-line\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\", \"Left button pans, Right button zooms\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n", "\n", "mpl.extensions = [\"eps\", \"jpeg\", \"pgf\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n", "\n", "mpl.default_extension = \"png\";/* global mpl */\n", "\n", "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.binaryType = comm.kernel.ws.binaryType;\n", " ws.readyState = comm.kernel.ws.readyState;\n", " function updateReadyState(_event) {\n", " if (comm.kernel.ws) {\n", " ws.readyState = comm.kernel.ws.readyState;\n", " } else {\n", " ws.readyState = 3; // Closed state.\n", " }\n", " }\n", " comm.kernel.ws.addEventListener('open', updateReadyState);\n", " comm.kernel.ws.addEventListener('close', updateReadyState);\n", " comm.kernel.ws.addEventListener('error', updateReadyState);\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", " var data = msg['content']['data'];\n", " if (data['blob'] !== undefined) {\n", " data = {\n", " data: new Blob(msg['buffers'], { type: data['blob'] }),\n", " };\n", " }\n", " // Pass the mpl event to the overridden (by mpl) onmessage function.\n", " ws.onmessage(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 = document.getElementById(id);\n", " var ws_proxy = comm_websocket_adapter(comm);\n", "\n", " function ondownload(figure, _format) {\n", " window.open(figure.canvas.toDataURL());\n", " }\n", "\n", " var fig = new mpl.figure(id, ws_proxy, ondownload, element);\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;\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", " fig.cell_info[0].output_area.element.on(\n", " 'cleared',\n", " { fig: fig },\n", " fig._remove_fig_handler\n", " );\n", "};\n", "\n", "mpl.figure.prototype.handle_close = function (fig, msg) {\n", " var width = fig.canvas.width / fig.ratio;\n", " fig.cell_info[0].output_area.element.off(\n", " 'cleared',\n", " fig._remove_fig_handler\n", " );\n", " fig.resizeObserverInstance.unobserve(fig.canvas_div);\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.innerHTML =\n", " '<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 / this.ratio;\n", " var dataURL = this.canvas.toDataURL();\n", " this.cell_info[1]['text/html'] =\n", " '<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 () {\n", " fig.push_to_output();\n", " }, 1000);\n", "};\n", "\n", "mpl.figure.prototype._init_toolbar = function () {\n", " var fig = this;\n", "\n", " var toolbar = document.createElement('div');\n", " toolbar.classList = 'btn-toolbar';\n", " this.root.appendChild(toolbar);\n", "\n", " function on_click_closure(name) {\n", " return function (_event) {\n", " return fig.toolbar_button_onclick(name);\n", " };\n", " }\n", "\n", " function on_mouseover_closure(tooltip) {\n", " return function (event) {\n", " if (!event.currentTarget.disabled) {\n", " return fig.toolbar_button_onmouseover(tooltip);\n", " }\n", " };\n", " }\n", "\n", " fig.buttons = {};\n", " var buttonGroup = document.createElement('div');\n", " buttonGroup.classList = 'btn-group';\n", " var button;\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", " /* Instead of a spacer, we start a new button group. */\n", " if (buttonGroup.hasChildNodes()) {\n", " toolbar.appendChild(buttonGroup);\n", " }\n", " buttonGroup = document.createElement('div');\n", " buttonGroup.classList = 'btn-group';\n", " continue;\n", " }\n", "\n", " button = fig.buttons[name] = document.createElement('button');\n", " button.classList = 'btn btn-default';\n", " button.href = '#';\n", " button.title = name;\n", " button.innerHTML = '<i class=\"fa ' + image + ' fa-lg\"></i>';\n", " button.addEventListener('click', on_click_closure(method_name));\n", " button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n", " buttonGroup.appendChild(button);\n", " }\n", "\n", " if (buttonGroup.hasChildNodes()) {\n", " toolbar.appendChild(buttonGroup);\n", " }\n", "\n", " // Add the status bar.\n", " var status_bar = document.createElement('span');\n", " status_bar.classList = 'mpl-message pull-right';\n", " toolbar.appendChild(status_bar);\n", " this.message = status_bar;\n", "\n", " // Add the close button to the window.\n", " var buttongrp = document.createElement('div');\n", " buttongrp.classList = 'btn-group inline pull-right';\n", " button = document.createElement('button');\n", " button.classList = 'btn btn-mini btn-primary';\n", " button.href = '#';\n", " button.title = 'Stop Interaction';\n", " button.innerHTML = '<i class=\"fa fa-power-off icon-remove icon-large\"></i>';\n", " button.addEventListener('click', function (_evt) {\n", " fig.handle_close(fig, {});\n", " });\n", " button.addEventListener(\n", " 'mouseover',\n", " on_mouseover_closure('Stop Interaction')\n", " );\n", " buttongrp.appendChild(button);\n", " var titlebar = this.root.querySelector('.ui-dialog-titlebar');\n", " titlebar.insertBefore(buttongrp, titlebar.firstChild);\n", "};\n", "\n", "mpl.figure.prototype._remove_fig_handler = function (event) {\n", " var fig = event.data.fig;\n", " if (event.target !== this) {\n", " // Ignore bubbled events from children.\n", " return;\n", " }\n", " fig.close_ws(fig, {});\n", "};\n", "\n", "mpl.figure.prototype._root_extra_style = function (el) {\n", " el.style.boxSizing = 'content-box'; // override notebook setting of border-box.\n", "};\n", "\n", "mpl.figure.prototype._canvas_extra_style = function (el) {\n", " // this is important to make the div 'focusable\n", " el.setAttribute('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", " } else {\n", " // location in version 2\n", " IPython.keyboard_manager.register_events(el);\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", "\n", " // Check for shift+enter\n", " if (event.shiftKey && event.which === 13) {\n", " this.canvas_div.blur();\n", " // select the cell after this one\n", " var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n", " IPython.notebook.select(index + 1);\n", " }\n", "};\n", "\n", "mpl.figure.prototype.handle_save = function (fig, _msg) {\n", " fig.ondownload(fig, null);\n", "};\n", "\n", "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(\n", " 'matplotlib',\n", " mpl.mpl_figure_comm\n", " );\n", "}\n" ], "text/plain": [ "<IPython.core.display.Javascript object>" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "<img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAvoAAAI6CAYAAABW9+xhAAAgAElEQVR4XuydB5wURfr+H1h2YUXSIihBggKiGBBFEBA4RMye4UyYT0Tx5LwDw+kZwB/mE/0bT0XFLGbPCCZEQKKKiCIgEkVRcoYN/6oeZ5ndndAz0/12Vc/Tnw8fle2ueuv5vrU+U/N2VbUydYEXFaACVIAKUAEqQAWoABWgAqFRoJq+aPRDw5MDoQJUgApQASpABagAFaACjgI0+kwEKkAFqAAVoAJUgApQASoQQgVo9EMIlUOiAlSAClABKkAFqAAVoAI0+swBKkAFqAAVoAJUgApQASoQQgVo9EMIlUOiAlSAClABKkAFqAAVoAI0+swBKkAFqAAVoAJUgApQASoQQgVo9EMIlUOiAlSAClABKkAFqAAVoAI0+swBKkAFqAAVoAJUgApQASoQQgVo9EMIlUOiAlSAClABKkAFqAAVoAI0+swBKkAFqAAVoAJUgApQASoQQgVo9EMIlUOiAlSAClABKkAFqAAVoAI0+swBKkAFqAAVoAJUgApQASoQQgVo9EMIlUOiAlSAClABKkAFqAAVoAI0+swBKkAFqAAVoAJUgApQASoQQgVo9EMIlUOiAlSAClABKkAFqAAVoAI0+swBKkAFqAAVoAJUgApQASoQQgVo9EMIlUOiAlSAClABKkAFqAAVoAI0+swBKkAFqAAVoAJUgApQASoQQgVo9EMIlUOiAlSAClABKkAFqAAVoAI0+swBKkAFqAAVoAJUgApQASoQQgVo9EMIlUOiAlSAClABKkAFqAAVoAI0+swBKkAFqAAVoAJUgApQASoQQgVo9EMIlUOiAlSAClABKkAFqAAVoAI0+swBKkAFqAAVoAJUgApQASoQQgVo9EMIlUOiAlSAClABKkAFqAAVoAI0+swBKkAFqAAVoAJUgApQASoQQgVo9EMIlUOiAlSAClABKkAFqAAVoAI0+swBKkAFqAAVoAJUgApQASoQQgVo9EMIlUOiAlSAClABKkAFqAAVoAI0+swBKkAFqAAVoAJUgApQASoQQgVo9EMIlUOiAlSAClABKkAFqAAVoAI0+swBKkAFqAAVoAJUgApQASoQQgVo9EMIlUOiAlSAClABKkAFqAAVoAI0+swBKkAFqAAVoAJUgApQASoQQgVo9EMIlUOiAlSAClABKkAFqAAVoAI0+swBKkAFqAAVoAJUgApQASoQQgVo9EMIlUOiAlSAClABKkAFqAAVoAI0+swBKkAFqAAVoAJUgApQASoQQgVo9EMIlUOiAlSAClABKkAFqAAVoAI0+swBKkAFqAAVoAJUgApQASoQQgVo9EMIlUOiAlSAClABKkAFqAAVoAI0+swBKkAFqAAVoAJUgApQASoQQgVo9EMIlUOiAlSAClABKkAFqAAVoAI0+swBKkAFqAAVoAJUgApQASoQQgVo9EMIlUOiAlSAClABKkAFqAAVoAI0+swBKkAFqIBPCowfPx5/+tOfKrReu3ZttGvXDueddx4GDx6MGjVqxO198uTJuP/++zFx4kSsXLkSderUwcEHH4wLLrgA55xzDqpXrx73OX2vfu69997Djz/+iC1btmD33XdH165dnef+/Oc/Q/3i92nEbJYKUAEqQAVMUoBG3yQajIUKUIFQKRA1+meeeSZOOOEElJWV4ZdffsEzzzyDb7/9FgMHDsSjjz5aZcw333wzbrnlFjRv3tz5QNCmTRv8/vvvePXVVzF9+nQce+yxzr/vsssuFZ795JNP8Je//AUbN27EaaedhsMPPxy77rorli5dinfffdd59qGHHsLll18eKp05GCpABagAFYivAI0+M4MKUAEq4JMCUaN/++2341//+ld5L5s2bcK+++6LZcuW4ddff0WjRo3KfzZ69GhcdNFFzjcB//vf/xyjHr30BwXdzl133YULL7wQTz31VPnPfvjhBxx66KHOyv/YsWNxwAEHVBmVXuVfv349zjrrLJ9GnF6z+tuGmjVrJvx2Ir3WeDcVoAJUgApUVoBGnzlBBagAFfBJgURGX3d3+umnO6vyX3zxhVNWo6/t27ejdevWWLdunVN2o0tuKl/a7B922GGYOXMmvvnmG+y///7OLWeccQZeeeUVZ+X+uOOOy2pEuo8nnnjC+aO/eSgtLUXLli2dbxLuuecep+3oB5JPP/0UvXv3rtCf/hDy9NNPO99gRC99z6JFi6Dvv/baa/Hxxx9j9erVmDZtmjMeXcakS44qX1dccYXzLcT8+fOdbzb0tWHDBtxxxx2OfrpNXQ7Vs2dP51uQAw88MKux82EqQAWoQJgUoNEPE02OhQpQAaMUSGb0O3XqhK+++gp6JV7X7Osren///v3x/PPPJxzLY489hksvvRTDhg2D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wREoTugvXbqUbr31Vvr8889p2bJl1LhxYzr77LPplltuUbvYXNIJ/XfffZfuvPNOmj17tqrXpEkT9f9HH320arNz504aNmwYjRgxghYtWkSNGjWiAQMG0GWXXVbsgJJhMscddxwNHTpU+dS1a1d66qmnaJ999ilou2rVKrr++uuJ/di4cSMdfPDBdO+991K3bt0K6nz11Vd0880303fffaf84VAdbnPeeeepOqmhOxyu88ILLxTybfDgwcTYpYbu8G7/4YcfTjNmzKDWrVsX1OeQn9q1a9PAgQPpxhtvVL+fOXMm3XTTTTR+/HjVf8+ePWn48OEKi0wlaf/DDz+kZ555Rr2FYUxff/119Vbm1Vdfpblz51KFChWoU6dO6gEu+UaC/eS+Usvzzz9fEIr03HPP0UMPPUTz5s2jOnXq0KWXXqr8df5YBp9ksAAEgAAQEEYAQl8YcHQHBIBANBFICv0VK1YUcrBUqVL0448/0osvvqjENMehszhlgdunTx8lLLkUFfo///wzHXjggXTWWWephwIWsRwGwwKW/5/L//3f/6nwERaS7dq1UwL0nnvuoZdffpnOPPPMjECxWGUhW716dfXgsG3bNvXQUaZMGeUb+7xjxw7q3Lkz/fLLL0rc161blx599FHVx8SJE6lNmza0bt069dDC42JfSpcuTRyCs2vXLrr66qt3E/o8pgsvvJDWr19PTzzxhPq8YcOG6idV6PNYeZyMD48nWd5880069dRT6ddff1UPEPPnz1d+8APINddco/plHrZv307ff/+9Gke6khT6DRo0UH306NFD+c4PMP3791dhOTwufjvzr3/9S/XDePGOP4+P30rst99+dNtttynz++67r3oA4YcuxvG6665TNtkHrjNo0CD1MIICBIAAELANAQh92xiDv0AACBhBINNh3KKHa1mMsoh++umnlShcvXq12u0tKvTfeOMNOu2005SY5jj/ooXFJ8ez824+i+dk6du3L3322WdKmGYqLKq//PJLVSe5g8878ixweTebHxJ4F/+EE06g0aNH05FHHqlM8QMBv1Vo27Ytsej+5ptv1AMGC9qWLVum7a7oYdxMoTtFD+Nee+219M4776gHjWRhPH777Tf1oMHl3HPPVQed+UGqbNmy6neLFy9WPvIuOz8kpStJoX/llVeq3f9MhXnihxIW8bzbf/LJJ6uq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\" width=\"698.5\">" ], "text/plain": [ "<IPython.core.display.HTML object>" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stderr", "output_type": "stream", "text": [ "/tmp/ipykernel_983/1969845959.py:6: UserWarning: color is redundantly defined by the 'color' keyword argument and the fmt string \"k--\" (-> color='k'). The keyword argument will take precedence.\n", " plt.plot([0,1], [0,1], 'k--', color='orange')\n" ] } ], "source": [ "from sklearn.metrics import auc, roc_curve\n", "fpr, tpr, threshold = roc_curve(y_score=y_pred[:,0], y_true=y_true[:,0])\n", "auc = auc(fpr, tpr)\n", "\n", "plt.figure()\n", "plt.plot([0,1], [0,1], 'k--', color='orange')\n", "plt.plot(fpr, tpr, label='auc = {:.3f}'.format(auc))\n", "plt.xlabel('False positive rate')\n", "plt.ylabel('True positive rate')\n", "plt.title('ROC curve')\n", "plt.legend(loc='lower right')\n", "plt.grid()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "<a id=gbt></a><br>\n", "## Gradient-Boosting Trees\n", "\n", "Like Random Forest, Gradient Boosting Trees is a machine learning technique which produces a prediction model in the form of an ensemble of of weak prediction trees. Unlike random forest, GBT optimize a cost function over a function space by iteratively choosing a function that points in the negative gradient direction.\n", "\n", "The pipeline in spark is the same of the random forest, it is sufficient to substitute `RandomForestClassifier` with `GBTClassifier`. " ] }, { "cell_type": "code", "execution_count": 40, "metadata": {}, "outputs": [], "source": [ "from pyspark.ml.classification import GBTClassifier\n", "\n", "gbt = GBTClassifier(labelCol='label', featuresCol='features', maxIter=50, maxDepth=10)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "%%time\n", "gbt_model = gbt.fit(train)" ] }, { "cell_type": "code", "execution_count": 46, "metadata": {}, "outputs": [], "source": [ "pred_gbt = gbt_model.transform(test)" ] }, { "cell_type": "code", "execution_count": 47, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "2022-09-30 09:41:15,733 WARN scheduler.DAGScheduler: Broadcasting large task binary with size 5.5 MiB\n" ] } ], "source": [ "pred_pd_gbt = pred_gbt.select(['label', 'prediction', 'probability']).toPandas()" ] }, { "cell_type": "code", "execution_count": 48, "metadata": {}, "outputs": [], "source": [ "pred_pd_gbt['probability'] = pred_pd_gbt['probability'].map(lambda x: list(x))\n", "pred_pd_gbt['encoded_label'] = pred_pd_gbt['label'].map(lambda x: np.eye(2)[int(x)])\n", "\n", "y_pred_gbt = np.array(pred_pd_gbt['probability'].tolist())\n", "y_true_gbt = np.array(pred_pd_gbt['encoded_label'].tolist())" ] }, { "cell_type": "code", "execution_count": 49, "metadata": {}, "outputs": [ { "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", "/* global mpl */\n", "window.mpl = {};\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(\n", " '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", "\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 = document.createElement('div');\n", " this.root.setAttribute('style', 'display: inline-block');\n", " this._root_extra_style(this.root);\n", "\n", " parent_element.appendChild(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 (fig.ratio !== 1) {\n", " fig.send_message('set_dpi_ratio', { dpi_ratio: fig.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 = document.createElement('div');\n", " titlebar.classList =\n", " 'ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix';\n", " var titletext = document.createElement('div');\n", " titletext.classList = 'ui-dialog-title';\n", " titletext.setAttribute(\n", " 'style',\n", " 'width: 100%; text-align: center; padding: 3px;'\n", " );\n", " titlebar.appendChild(titletext);\n", " this.root.appendChild(titlebar);\n", " this.header = titletext;\n", "};\n", "\n", "mpl.figure.prototype._canvas_extra_style = function (_canvas_div) {};\n", "\n", "mpl.figure.prototype._root_extra_style = function (_canvas_div) {};\n", "\n", "mpl.figure.prototype._init_canvas = function () {\n", " var fig = this;\n", "\n", " var canvas_div = (this.canvas_div = document.createElement('div'));\n", " canvas_div.setAttribute(\n", " 'style',\n", " 'border: 1px solid #ddd;' +\n", " 'box-sizing: content-box;' +\n", " 'clear: both;' +\n", " 'min-height: 1px;' +\n", " 'min-width: 1px;' +\n", " 'outline: 0;' +\n", " 'overflow: hidden;' +\n", " 'position: relative;' +\n", " 'resize: both;'\n", " );\n", "\n", " function on_keyboard_event_closure(name) {\n", " return function (event) {\n", " return fig.key_event(event, name);\n", " };\n", " }\n", "\n", " canvas_div.addEventListener(\n", " 'keydown',\n", " on_keyboard_event_closure('key_press')\n", " );\n", " canvas_div.addEventListener(\n", " 'keyup',\n", " on_keyboard_event_closure('key_release')\n", " );\n", "\n", " this._canvas_extra_style(canvas_div);\n", " this.root.appendChild(canvas_div);\n", "\n", " var canvas = (this.canvas = document.createElement('canvas'));\n", " canvas.classList.add('mpl-canvas');\n", " canvas.setAttribute('style', 'box-sizing: content-box;');\n", "\n", " this.context = canvas.getContext('2d');\n", "\n", " var backingStore =\n", " this.context.backingStorePixelRatio ||\n", " this.context.webkitBackingStorePixelRatio ||\n", " this.context.mozBackingStorePixelRatio ||\n", " this.context.msBackingStorePixelRatio ||\n", " this.context.oBackingStorePixelRatio ||\n", " this.context.backingStorePixelRatio ||\n", " 1;\n", "\n", " this.ratio = (window.devicePixelRatio || 1) / backingStore;\n", "\n", " var rubberband_canvas = (this.rubberband_canvas = document.createElement(\n", " 'canvas'\n", " ));\n", " rubberband_canvas.setAttribute(\n", " 'style',\n", " 'box-sizing: content-box; position: absolute; left: 0; top: 0; z-index: 1;'\n", " );\n", "\n", " // Apply a ponyfill if ResizeObserver is not implemented by browser.\n", " if (this.ResizeObserver === undefined) {\n", " if (window.ResizeObserver !== undefined) {\n", " this.ResizeObserver = window.ResizeObserver;\n", " } else {\n", " var obs = _JSXTOOLS_RESIZE_OBSERVER({});\n", " this.ResizeObserver = obs.ResizeObserver;\n", " }\n", " }\n", "\n", " this.resizeObserverInstance = new this.ResizeObserver(function (entries) {\n", " var nentries = entries.length;\n", " for (var i = 0; i < nentries; i++) {\n", " var entry = entries[i];\n", " var width, height;\n", " if (entry.contentBoxSize) {\n", " if (entry.contentBoxSize instanceof Array) {\n", " // Chrome 84 implements new version of spec.\n", " width = entry.contentBoxSize[0].inlineSize;\n", " height = entry.contentBoxSize[0].blockSize;\n", " } else {\n", " // Firefox implements old version of spec.\n", " width = entry.contentBoxSize.inlineSize;\n", " height = entry.contentBoxSize.blockSize;\n", " }\n", " } else {\n", " // Chrome <84 implements even older version of spec.\n", " width = entry.contentRect.width;\n", " height = entry.contentRect.height;\n", " }\n", "\n", " // Keep the size of the canvas and rubber band canvas in sync with\n", " // the canvas container.\n", " if (entry.devicePixelContentBoxSize) {\n", " // Chrome 84 implements new version of spec.\n", " canvas.setAttribute(\n", " 'width',\n", " entry.devicePixelContentBoxSize[0].inlineSize\n", " );\n", " canvas.setAttribute(\n", " 'height',\n", " entry.devicePixelContentBoxSize[0].blockSize\n", " );\n", " } else {\n", " canvas.setAttribute('width', width * fig.ratio);\n", " canvas.setAttribute('height', height * fig.ratio);\n", " }\n", " canvas.setAttribute(\n", " 'style',\n", " 'width: ' + width + 'px; height: ' + height + 'px;'\n", " );\n", "\n", " rubberband_canvas.setAttribute('width', width);\n", " rubberband_canvas.setAttribute('height', height);\n", "\n", " // And update the size in Python. We ignore the initial 0/0 size\n", " // that occurs as the element is placed into the DOM, which should\n", " // otherwise not happen due to the minimum size styling.\n", " if (fig.ws.readyState == 1 && width != 0 && height != 0) {\n", " fig.request_resize(width, height);\n", " }\n", " }\n", " });\n", " this.resizeObserverInstance.observe(canvas_div);\n", "\n", " function on_mouse_event_closure(name) {\n", " return function (event) {\n", " return fig.mouse_event(event, name);\n", " };\n", " }\n", "\n", " rubberband_canvas.addEventListener(\n", " 'mousedown',\n", " on_mouse_event_closure('button_press')\n", " );\n", " rubberband_canvas.addEventListener(\n", " 'mouseup',\n", " on_mouse_event_closure('button_release')\n", " );\n", " rubberband_canvas.addEventListener(\n", " 'dblclick',\n", " on_mouse_event_closure('dblclick')\n", " );\n", " // Throttle sequential mouse events to 1 every 20ms.\n", " rubberband_canvas.addEventListener(\n", " 'mousemove',\n", " on_mouse_event_closure('motion_notify')\n", " );\n", "\n", " rubberband_canvas.addEventListener(\n", " 'mouseenter',\n", " on_mouse_event_closure('figure_enter')\n", " );\n", " rubberband_canvas.addEventListener(\n", " 'mouseleave',\n", " on_mouse_event_closure('figure_leave')\n", " );\n", "\n", " canvas_div.addEventListener('wheel', function (event) {\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", " on_mouse_event_closure('scroll')(event);\n", " });\n", "\n", " canvas_div.appendChild(canvas);\n", " canvas_div.appendChild(rubberband_canvas);\n", "\n", " this.rubberband_context = rubberband_canvas.getContext('2d');\n", " this.rubberband_context.strokeStyle = '#000000';\n", "\n", " this._resize_canvas = function (width, height, forward) {\n", " if (forward) {\n", " canvas_div.style.width = width + 'px';\n", " canvas_div.style.height = height + 'px';\n", " }\n", " };\n", "\n", " // Disable right mouse context menu.\n", " this.rubberband_canvas.addEventListener('contextmenu', function (_e) {\n", " event.preventDefault();\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 toolbar = document.createElement('div');\n", " toolbar.classList = 'mpl-toolbar';\n", " this.root.appendChild(toolbar);\n", "\n", " function on_click_closure(name) {\n", " return function (_event) {\n", " return fig.toolbar_button_onclick(name);\n", " };\n", " }\n", "\n", " function on_mouseover_closure(tooltip) {\n", " return function (event) {\n", " if (!event.currentTarget.disabled) {\n", " return fig.toolbar_button_onmouseover(tooltip);\n", " }\n", " };\n", " }\n", "\n", " fig.buttons = {};\n", " var buttonGroup = document.createElement('div');\n", " buttonGroup.classList = 'mpl-button-group';\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", " /* Instead of a spacer, we start a new button group. */\n", " if (buttonGroup.hasChildNodes()) {\n", " toolbar.appendChild(buttonGroup);\n", " }\n", " buttonGroup = document.createElement('div');\n", " buttonGroup.classList = 'mpl-button-group';\n", " continue;\n", " }\n", "\n", " var button = (fig.buttons[name] = document.createElement('button'));\n", " button.classList = 'mpl-widget';\n", " button.setAttribute('role', 'button');\n", " button.setAttribute('aria-disabled', 'false');\n", " button.addEventListener('click', on_click_closure(method_name));\n", " button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n", "\n", " var icon_img = document.createElement('img');\n", " icon_img.src = '_images/' + image + '.png';\n", " icon_img.srcset = '_images/' + image + '_large.png 2x';\n", " icon_img.alt = tooltip;\n", " button.appendChild(icon_img);\n", "\n", " buttonGroup.appendChild(button);\n", " }\n", "\n", " if (buttonGroup.hasChildNodes()) {\n", " toolbar.appendChild(buttonGroup);\n", " }\n", "\n", " var fmt_picker = document.createElement('select');\n", " fmt_picker.classList = 'mpl-widget';\n", " toolbar.appendChild(fmt_picker);\n", " this.format_dropdown = fmt_picker;\n", "\n", " for (var ind in mpl.extensions) {\n", " var fmt = mpl.extensions[ind];\n", " var option = document.createElement('option');\n", " option.selected = fmt === mpl.default_extension;\n", " option.innerHTML = fmt;\n", " fmt_picker.appendChild(option);\n", " }\n", "\n", " var status_bar = document.createElement('span');\n", " status_bar.classList = 'mpl-message';\n", " toolbar.appendChild(status_bar);\n", " this.message = status_bar;\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", "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", "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], msg['forward']);\n", " fig.send_message('refresh', {});\n", " }\n", "};\n", "\n", "mpl.figure.prototype.handle_rubberband = function (fig, msg) {\n", " var x0 = msg['x0'] / fig.ratio;\n", " var y0 = (fig.canvas.height - msg['y0']) / fig.ratio;\n", " var x1 = msg['x1'] / fig.ratio;\n", " var y1 = (fig.canvas.height - msg['y1']) / fig.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,\n", " 0,\n", " fig.canvas.width / fig.ratio,\n", " fig.canvas.height / fig.ratio\n", " );\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", " 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.handle_history_buttons = function (fig, msg) {\n", " for (var key in msg) {\n", " if (!(key in fig.buttons)) {\n", " continue;\n", " }\n", " fig.buttons[key].disabled = !msg[key];\n", " fig.buttons[key].setAttribute('aria-disabled', !msg[key]);\n", " }\n", "};\n", "\n", "mpl.figure.prototype.handle_navigate_mode = function (fig, msg) {\n", " if (msg['mode'] === 'PAN') {\n", " fig.buttons['Pan'].classList.add('active');\n", " fig.buttons['Zoom'].classList.remove('active');\n", " } else if (msg['mode'] === 'ZOOM') {\n", " fig.buttons['Pan'].classList.remove('active');\n", " fig.buttons['Zoom'].classList.add('active');\n", " } else {\n", " fig.buttons['Pan'].classList.remove('active');\n", " fig.buttons['Zoom'].classList.remove('active');\n", " }\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", " var img = evt.data;\n", " if (img.type !== 'image/png') {\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", " img.type = 'image/png';\n", " }\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", "\n", " fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n", " img\n", " );\n", " fig.updated_canvas_event();\n", " fig.waiting = false;\n", " return;\n", " } else if (\n", " typeof evt.data === 'string' &&\n", " evt.data.slice(0, 21) === 'data:image/png;base64'\n", " ) {\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(\n", " \"No handler for the '\" + msg_type + \"' message type: \",\n", " msg\n", " );\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(\n", " \"Exception inside the 'handler_\" + msg_type + \"' callback:\",\n", " e,\n", " e.stack,\n", " msg\n", " );\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", " }\n", " if (e.target) {\n", " targ = e.target;\n", " } else if (e.srcElement) {\n", " targ = e.srcElement;\n", " }\n", " if (targ.nodeType === 3) {\n", " // defeat Safari bug\n", " targ = targ.parentNode;\n", " }\n", "\n", " // pageX,Y are the mouse positions relative to the document\n", " var boundingRect = targ.getBoundingClientRect();\n", " var x = e.pageX - (boundingRect.left + document.body.scrollLeft);\n", " var y = e.pageY - (boundingRect.top + document.body.scrollTop);\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", " }\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", " this.canvas.focus();\n", " this.canvas_div.focus();\n", " }\n", "\n", " var x = canvas_pos.x * this.ratio;\n", " var y = canvas_pos.y * this.ratio;\n", "\n", " this.send_message(name, {\n", " x: x,\n", " y: y,\n", " button: event.button,\n", " step: event.step,\n", " guiEvent: simpleKeys(event),\n", " });\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", " // Prevent repeat events\n", " if (name === 'key_press') {\n", " if (event.key === this._key) {\n", " return;\n", " } else {\n", " this._key = event.key;\n", " }\n", " }\n", " if (name === 'key_release') {\n", " this._key = null;\n", " }\n", "\n", " var value = '';\n", " if (event.ctrlKey && event.key !== 'Control') {\n", " value += 'ctrl+';\n", " }\n", " else if (event.altKey && event.key !== 'Alt') {\n", " value += 'alt+';\n", " }\n", " else if (event.shiftKey && event.key !== 'Shift') {\n", " value += 'shift+';\n", " }\n", "\n", " value += 'k' + event.key;\n", "\n", " this._key_event_extra(event, name);\n", "\n", " this.send_message(name, { key: value, 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", "\n", "///////////////// REMAINING CONTENT GENERATED BY embed_js.py /////////////////\n", "// prettier-ignore\n", "var _JSXTOOLS_RESIZE_OBSERVER=function(A){var t,i=new WeakMap,n=new WeakMap,a=new WeakMap,r=new WeakMap,o=new Set;function s(e){if(!(this instanceof s))throw new TypeError(\"Constructor requires 'new' operator\");i.set(this,e)}function h(){throw new TypeError(\"Function is not a constructor\")}function c(e,t,i,n){e=0 in arguments?Number(arguments[0]):0,t=1 in arguments?Number(arguments[1]):0,i=2 in arguments?Number(arguments[2]):0,n=3 in arguments?Number(arguments[3]):0,this.right=(this.x=this.left=e)+(this.width=i),this.bottom=(this.y=this.top=t)+(this.height=n),Object.freeze(this)}function d(){t=requestAnimationFrame(d);var s=new WeakMap,p=new Set;o.forEach((function(t){r.get(t).forEach((function(i){var r=t instanceof window.SVGElement,o=a.get(t),d=r?0:parseFloat(o.paddingTop),f=r?0:parseFloat(o.paddingRight),l=r?0:parseFloat(o.paddingBottom),u=r?0:parseFloat(o.paddingLeft),g=r?0:parseFloat(o.borderTopWidth),m=r?0:parseFloat(o.borderRightWidth),w=r?0:parseFloat(o.borderBottomWidth),b=u+f,F=d+l,v=(r?0:parseFloat(o.borderLeftWidth))+m,W=g+w,y=r?0:t.offsetHeight-W-t.clientHeight,E=r?0:t.offsetWidth-v-t.clientWidth,R=b+v,z=F+W,M=r?t.width:parseFloat(o.width)-R-E,O=r?t.height:parseFloat(o.height)-z-y;if(n.has(t)){var k=n.get(t);if(k[0]===M&&k[1]===O)return}n.set(t,[M,O]);var S=Object.create(h.prototype);S.target=t,S.contentRect=new c(u,d,M,O),s.has(i)||(s.set(i,[]),p.add(i)),s.get(i).push(S)}))})),p.forEach((function(e){i.get(e).call(e,s.get(e),e)}))}return s.prototype.observe=function(i){if(i instanceof window.Element){r.has(i)||(r.set(i,new Set),o.add(i),a.set(i,window.getComputedStyle(i)));var n=r.get(i);n.has(this)||n.add(this),cancelAnimationFrame(t),t=requestAnimationFrame(d)}},s.prototype.unobserve=function(i){if(i instanceof window.Element&&r.has(i)){var n=r.get(i);n.has(this)&&(n.delete(this),n.size||(r.delete(i),o.delete(i))),n.size||r.delete(i),o.size||cancelAnimationFrame(t)}},A.DOMRectReadOnly=c,A.ResizeObserver=s,A.ResizeObserverEntry=h,A}; // eslint-disable-line\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\", \"Left button pans, Right button zooms\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n", "\n", "mpl.extensions = [\"eps\", \"jpeg\", \"pgf\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n", "\n", "mpl.default_extension = \"png\";/* global mpl */\n", "\n", "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.binaryType = comm.kernel.ws.binaryType;\n", " ws.readyState = comm.kernel.ws.readyState;\n", " function updateReadyState(_event) {\n", " if (comm.kernel.ws) {\n", " ws.readyState = comm.kernel.ws.readyState;\n", " } else {\n", " ws.readyState = 3; // Closed state.\n", " }\n", " }\n", " comm.kernel.ws.addEventListener('open', updateReadyState);\n", " comm.kernel.ws.addEventListener('close', updateReadyState);\n", " comm.kernel.ws.addEventListener('error', updateReadyState);\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", " var data = msg['content']['data'];\n", " if (data['blob'] !== undefined) {\n", " data = {\n", " data: new Blob(msg['buffers'], { type: data['blob'] }),\n", " };\n", " }\n", " // Pass the mpl event to the overridden (by mpl) onmessage function.\n", " ws.onmessage(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 = document.getElementById(id);\n", " var ws_proxy = comm_websocket_adapter(comm);\n", "\n", " function ondownload(figure, _format) {\n", " window.open(figure.canvas.toDataURL());\n", " }\n", "\n", " var fig = new mpl.figure(id, ws_proxy, ondownload, element);\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;\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", " fig.cell_info[0].output_area.element.on(\n", " 'cleared',\n", " { fig: fig },\n", " fig._remove_fig_handler\n", " );\n", "};\n", "\n", "mpl.figure.prototype.handle_close = function (fig, msg) {\n", " var width = fig.canvas.width / fig.ratio;\n", " fig.cell_info[0].output_area.element.off(\n", " 'cleared',\n", " fig._remove_fig_handler\n", " );\n", " fig.resizeObserverInstance.unobserve(fig.canvas_div);\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.innerHTML =\n", " '<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 / this.ratio;\n", " var dataURL = this.canvas.toDataURL();\n", " this.cell_info[1]['text/html'] =\n", " '<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 () {\n", " fig.push_to_output();\n", " }, 1000);\n", "};\n", "\n", "mpl.figure.prototype._init_toolbar = function () {\n", " var fig = this;\n", "\n", " var toolbar = document.createElement('div');\n", " toolbar.classList = 'btn-toolbar';\n", " this.root.appendChild(toolbar);\n", "\n", " function on_click_closure(name) {\n", " return function (_event) {\n", " return fig.toolbar_button_onclick(name);\n", " };\n", " }\n", "\n", " function on_mouseover_closure(tooltip) {\n", " return function (event) {\n", " if (!event.currentTarget.disabled) {\n", " return fig.toolbar_button_onmouseover(tooltip);\n", " }\n", " };\n", " }\n", "\n", " fig.buttons = {};\n", " var buttonGroup = document.createElement('div');\n", " buttonGroup.classList = 'btn-group';\n", " var button;\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", " /* Instead of a spacer, we start a new button group. */\n", " if (buttonGroup.hasChildNodes()) {\n", " toolbar.appendChild(buttonGroup);\n", " }\n", " buttonGroup = document.createElement('div');\n", " buttonGroup.classList = 'btn-group';\n", " continue;\n", " }\n", "\n", " button = fig.buttons[name] = document.createElement('button');\n", " button.classList = 'btn btn-default';\n", " button.href = '#';\n", " button.title = name;\n", " button.innerHTML = '<i class=\"fa ' + image + ' fa-lg\"></i>';\n", " button.addEventListener('click', on_click_closure(method_name));\n", " button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n", " buttonGroup.appendChild(button);\n", " }\n", "\n", " if (buttonGroup.hasChildNodes()) {\n", " toolbar.appendChild(buttonGroup);\n", " }\n", "\n", " // Add the status bar.\n", " var status_bar = document.createElement('span');\n", " status_bar.classList = 'mpl-message pull-right';\n", " toolbar.appendChild(status_bar);\n", " this.message = status_bar;\n", "\n", " // Add the close button to the window.\n", " var buttongrp = document.createElement('div');\n", " buttongrp.classList = 'btn-group inline pull-right';\n", " button = document.createElement('button');\n", " button.classList = 'btn btn-mini btn-primary';\n", " button.href = '#';\n", " button.title = 'Stop Interaction';\n", " button.innerHTML = '<i class=\"fa fa-power-off icon-remove icon-large\"></i>';\n", " button.addEventListener('click', function (_evt) {\n", " fig.handle_close(fig, {});\n", " });\n", " button.addEventListener(\n", " 'mouseover',\n", " on_mouseover_closure('Stop Interaction')\n", " );\n", " buttongrp.appendChild(button);\n", " var titlebar = this.root.querySelector('.ui-dialog-titlebar');\n", " titlebar.insertBefore(buttongrp, titlebar.firstChild);\n", "};\n", "\n", "mpl.figure.prototype._remove_fig_handler = function (event) {\n", " var fig = event.data.fig;\n", " if (event.target !== this) {\n", " // Ignore bubbled events from children.\n", " return;\n", " }\n", " fig.close_ws(fig, {});\n", "};\n", "\n", "mpl.figure.prototype._root_extra_style = function (el) {\n", " el.style.boxSizing = 'content-box'; // override notebook setting of border-box.\n", "};\n", "\n", "mpl.figure.prototype._canvas_extra_style = function (el) {\n", " // this is important to make the div 'focusable\n", " el.setAttribute('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", " } else {\n", " // location in version 2\n", " IPython.keyboard_manager.register_events(el);\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", "\n", " // Check for shift+enter\n", " if (event.shiftKey && event.which === 13) {\n", " this.canvas_div.blur();\n", " // select the cell after this one\n", " var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n", " IPython.notebook.select(index + 1);\n", " }\n", "};\n", "\n", "mpl.figure.prototype.handle_save = function (fig, _msg) {\n", " fig.ondownload(fig, null);\n", "};\n", "\n", "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(\n", " 'matplotlib',\n", " mpl.mpl_figure_comm\n", " );\n", "}\n" ], "text/plain": [ "<IPython.core.display.Javascript object>" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "<img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAvoAAAI6CAYAAABW9+xhAAAgAElEQVR4XuydB5xVxfn+H1h2AZG2CEqRooAoVhRFQNgoosQSS6IGeywJRmIClmhUwB9WIuZvjR17Nxor2BABUUCDiCKiUkVROkvb9p85l7ve3b3lnHvPec/Muc/5fPgksufMvPN831meO/c9M/Wq1AVeVIAKUAEqQAWoABWgAlSACkRGgXr6otGPDE8OhApQASpABagAFaACVIAKOArQ6DMRqAAVoAJUgApQASpABahABBWg0Y8gVA6JClABKkAFqAAVoAJUgArQ6DMHqAAVoAJUgApQASpABahABBWg0Y8gVA6JClABKkAFqAAVoAJUgArQ6DMHqAAVoAJUgApQASpABahABBWg0Y8gVA6JClABKkAFqAAVoAJUgArQ6DMHqAAVoAJUgApQASpABahABBWg0Y8gVA6JClABKkAFqAAVoAJUgArQ6DMHqAAVoAJUgApQASpABahABBWg0Y8gVA6JClABKkAFqAAVoAJUgArQ6DMHqAAVoAJUgApQASpABahABBWg0Y8gVA6JClABKkAFqAAVoAJUgArQ6DMHqAAVoAJUgApQASpABahABBWg0Y8gVA6JClABKkAFqAAVoAJUgArQ6DMHqAAVoAJUgApQASpABahABBWg0Y8gVA6JClABKkAFqAAVoAJUgArQ6DMHqAAVoAJUgApQASpABahABBWg0Y8gVA6JClABKkAFqAAVoAJUgArQ6DMHqAAVoAJUgApQASpABahABBWg0Y8gVA6JClABKkAFqAAVoAJUgArQ6DMHqAAVoAJUgApQASpABahABBWg0Y8gVA6JClABKkAFqAAVoAJUgArQ6DMHqAAVoAJUgApQASpABahABBWg0Y8gVA6JClABKkAFqAAVoAJUgArQ6DMHqAAVoAJUgApQASpABahABBWg0Y8gVA6JClABKkAFqAAVoAJUgArQ6DMHqAAVoAJUgApQASpABahABBWg0Y8gVA6JClABKkAFqAAVoAJUgArQ6DMHqAAVoAJUgApQASpABahABBWg0Y8gVA6JClABKkAFqAAVoAJUgArQ6DMHqAAVoAJUgApQASpABahABBWg0Y8gVA6JClABKkAFqAAVoAJUgArQ6DMHqAAVoAJUgApQASpABahABBWg0Y8gVA6JClABKkAFqAAVoAJUgArQ6DMHqAAVoAJUgApQASpABahABBWg0Y8gVA6JClABKkAFqAAVoAJUgArQ6DMHqAAVoAJUgApQASpABahABBWg0Y8gVA6JClABKkAFqAAVoAJUgArQ6DMHqAAVoAJUgApQASpABahABBWg0Y8gVA6JClABKkAFqAAVoAJUgArQ6DMHqAAVoAJUgApQASpABahABBWg0Y8gVA6JClABKkAFqAAVoAJUgArQ6DMHqAAVoAJUgApQASpABahABBWg0Y8gVA6JClABKkAFqAAVoAJUgArQ6DMHqAAVoAIBKTB58mT86le/qtF6kyZN0L17d5x55pkYPnw4GjRokLT36dOn4/bbb8fUqVOxcuVKNG3aFAcccADOPvtsnH766ahfv37S5/S9+rnXX38d33zzDTZv3oydd94Zffr0cZ77zW9+A/WLP6ARs1kqQAWoABUwSQEafZNoMBYqQAUipUDc6J966qk49thjUVVVhR9++AGPPvooPv/8c1x44YW4995764x51KhRuO6669ChQwfnA0HXrl3x888/4/nnn8fMmTMxZMgQ5//vsMMONZ5999138dvf/hYbN27EySefjEMPPRQ77rgjli5ditdee8159q677sJFF10UKZ05GCpABagAFUiuAI0+M4MKUAEqEJACcaN/44034u9//3t1L6Wlpdhzzz2xbNky/Pjjj2jdunX1zyZMmIBzzz3X+Sbgv//9r2PU45f+oKDbueWWW3DOOefg4Ycfrv7ZV199hYMOOshZ+Z84cSL22WefOqPSq/zr16/HaaedFtCIvTWrv21o2LBhym8nvLXGu6kAFaACVKC2AjT6zAkqQAWoQEAKpDL6urvf/e53zqr8hx9+6JTV6Gvbtm3o0qUL1q1b55Td6JKb2pc2+wcffDBmz56Nzz77DHvvvbdzyymnnILnnnvOWbn/9a9/ndOIdB8PPvig80d/81BZWYlOnTo53yTceuutTtvxDyTvvfceSkpKavSnP4Q88sgjzjcY8Uvfs2jRIuj7r7jiCrzzzjtYvXo1Pv74Y2c8uoxJlxzVvi6++GLnW4ivv/7a+WZDXxs2bMBNN93k6Kfb1OVQAwYMcL4F2XfffXMaOx+mAlSACkRJARr9KNHkWKgAFTBKgXRGv1evXvj000+hV+J1zb6+4vcPHToUTzzxRMqx3HffffjjH/+I0aNHQ5f5bN26FS1atHC+GViyZEnOGpxxxhlO/9qA65r+4uJix2hrY7148eKsjb7+0NC4cWOnpEgbf230R4wYgSOPPNLRYcWKFSgsLKyOX3/wadeuHXr06OG8q6Av/Y1E//79nQ9C+gOFNva6Ha2Jfj/hgw8+gNaWFxWgAlSACkC/k1Wvnlp1+WXZhapQASpABaiALwrEjfs111yDv/zlL9U1+v/+979x9913o3fv3s6Kdvy64447nPv0qrk2wKkuvZqvy3R0Hb4233PnznUM73HHHeeU++RyPfvss9DvFOgPG4899liNshq9sh9/CTibFf33338f//jHPzB27NgaIcY/uPznP//BCSecUP0z/d8nnXSSY+IvuOAC5+//9re/4Z577nGMv9Ygfq1du9YpV9Kr/vpbA15UgApQASpAo88coAJUgAoEpkCyXXfinZ144omO2d9ll12q+7/++utx9dVX44EHHsB5552XMq6FCxeiW7duGDRoEN566y1MmzbNWeXWu+o8/vjjOY1Hr+DrDwvLly93VtNTXdka/TVr1jjfPiReulRJ63D00UdDm/v4pU2/ft9Av8DcvHlz54NSmzZtHEOvP5DUvnRJkC4Z0qU9+psDXlSAClCBfFeAK/r5ngEcPxWgAoEpEDf62rTrF2DLy8udmnddX67LUfTLsc2aNavu34QV/b322svZ4UeXwaS7sjH6X3zxRcp2tT4vvvgivv/+e+y0005ODPqDhv7W4qmnnnJC+emnnxyjn+nS5Uu77rprptv4cypABahA5BWg0Y88Yg6QClCBsBRIVaM/Y8YM9OvXr7o8Jh6fLjk5/PDDnb9PV6N///33O1tzxmv0t2zZgpYtW/pSo693A9I173o3oHSXXjnXNfLJXsaN1/gnexlXvzyb7HrjjTecl4j1C7nxF3MvueQSvPnmmzjqqKOcR3RMeuVf70h01VVXpQxPf7vRqFGjsLCzXypABaiAMQrQ6BuDgoFQASoQNQXSvYyrD77S++nX3nVH726jS0++/fbbpKvX2jzrXXp0bb/edSe+jWZ8Fx9tmHUJTLaXLpd5+eWXM5buvPLKKzj++OPxwgsvOHX0iVffvn2dcXkx+hUVFc4qvF7FnzVrFg488ECnZEevzhcUFDjN63cEWrVq5exM9Mknn2Q7RD5HBagAFcgbBWj08wY1B0oFqIC0AumMvq6z1+U7eveZt99+uzo0XZ+vXzw94ogjHMOtt45MvPTLrDfccINzQq4un4lfX375pfNyr65/nzRpEnQJTu1Lr47rl1bT7aOvX+7VHxqSvYyrjXv8VN0FCxZgjz32wLBhw5x3DeKX3vVm4MCBjsn3YvT185dffjnGjRuHZ555xnkhWP/3zTffXGMYerX/zjvvdN5F0O8k1L70qn+ybUml2bM/KkAFqIAJCtDom0CBMVABKhBJBdIZfT3geImLvk+b4/gVN/N6hfuss87CbrvthlWrVjk77OiVfL1ir1fSa5+Mq1/M1SZdH0SVeDKuPphLvw+gS4b0jjV/+tOf0uqduL2mXuHXq+h6O0v9Aux3331X/ayOQ3+o0B9M9Aq8/rChP3zobyXmzJnj2ejPmzfPORdAv7egt9HU/137A4v+e126o1f09TcJugRK66BX/vXe/Pr/c9edSE4nDooKUIEsFKDRz0I0PkIFqAAVcKNAJqOvjbE2ttqsTpkypUaTevtIXa+ud9TRL6HqE3L3339/59RcvZId3+aydhy63EU/p429Lv/R9ft6hVvvXX/mmWc6W3BmuvRKvN7SUn+7oM22Lp2JH5ilV9zjl35hV9fR63KhsrIyZ7tL/aLxvffem/LArFQ1+vE2dRvx7UNnzpyZNFT9QeZf//qXs/Kvv1nQ3zLokp9DDjnE+WA0ePDgTEPkz6kAFaACeaEAjX5eYOYgqQAVoAJUgApQASpABfJNARr9fCPO8VIBKkAFqAAVoAJUgArkhQI0+nmBmYOkAlSAClABKkAFqAAVyDcFaPTzjTjHSwWoABWgAlSAClABKpAXCtDo5wVmDpIKUAEqQAWoABWgAlQg3xSg0c834hwvFaACVIAKUAEqQAWoQF4oQKOfF5g5SCpABagAFaACVIAKUIF8U4BGP9+Ic7xUgApQASpABagAFaACeaEAjX6ImLdt24bPPvsMbdq0cQ6k4UUFqAAVoAJUgApQASqQXIGKigrog/r23XdfFBUVUSYXCtDouxApqFtmzZqF3r17B9U826UCVIAKUAEqQAWoQOQU0Kdm61O0eWVWgEY/s0aB3bFkyRLnWHmdsG3btg2sH92wPjJ+ypQpGDBgABo3bhxoX2w8NwXIKjf9pJ8mL2nFs++PrLLXTvpJspJWPPv+JFmtWLHCWSBdvHgxOnbsmH3QefQkjX6IsJcvX44OHTpg2bJlaN++faCR6Ik4adIkDB48mEY/UKVzb5ysctdQsgXyklQ7t77IKjf9JJ8mK0m1c+tLkpWkb8pNFXOeptEPkYVkwkpOxBAljUTXZGUXRvKyhxdZkZU9CtgTqeS8kvRN9hBIHymNfogkJRNWciKGKGkkuiYruzCSlz28yIqs7FHAnkgl55Wkb7KHAI2+sawkE1ZyIhoruCWBkZUloLaHSV728CIrsrJHAXsilZxXkr7JHgI0+saykkxYyYlorOCWBEZWloCi0bcLlIqWc8seZGRFVskUkPRN9hCg0TeWlWTC8pemsWlQJzCysoeVjpS87OFFVmRljwL2RCo5ryR9kz0EaPSNZSWZsJIT0VjBLQmMrCwBxRV9u0DxQ5lVvPh70B5ckqwkfZM9BGj0jWUlmbCSE9FYwS0JjKwsAUWjbxcoGn2rePH3oD24JFlJ+iZ7CNDoG8tKMmElJ6KxglsSGFlZAopG3y5QNPpW8eLvQXtwSbKS9E32EKDRN5aVZMJKTkRjBbckMLKyBBSNvl2gaPSt4sXfg/bgkmQl6ZvsIUCjbywryYSVnIjGCm5JYGRlCSgafbtA0ehbxYu/B+3BJclK0jfZQ4BG31hWkgkrORGNFdySwMjKElA0+naBotG3ihd/D9qDS5KVpG+yhwCNfkoFFi5ciHHjxuHDDz/EvHnzcNhhh2Hy5MkZ2W7btg3/+Mc/8Nhjj2HDhg3o27cv7rzzTuyxxx4Zn028QTJhJSeiJxF4cx0FyMqupCAve3iRFVnZo4A9kUrOK0nfZA8BGv2UCrz88su4+OKLceihh2LOnDlo27atK6P/pz/9CU8//TTGjx+P9u3b4/rrr8e3337rfFho3ry569yQTFjJiehaAN6YVAGysisxyMseXmRFVvYoYE+kkvNK0jfZQ4BGP6UClZWVqF+/vvPzE044AWvXrs1o9JctW4bOnTvjnnvuwQUXXOA8u3r1anTs2BHXXnstLr/8cte5IZmwkhPRtQC8kUY/AjnAuWUPRLIiK3sUsCdSyXkl6ZvsIUCj74qVW6P/0EMP4fzzz3fMfYsWLarbPumkk5y/c1P6E39IMmElJ6IrwXlTSgXIyq7kIC97eJEVWdmjgD2RSs4rSd9kDwEafVes3Bp9vWL/5JNPQq/sJ166Zv/BBx/EDz/84Ko/fZNkwkpORNcC8Eau6EcgBzi37IFIVmRljwLmR7qtvBIr1m3Gls1bMHXaVPzumEFotmOTQAOX9E2BDkSw8Xr6qlKXYJ9GduXW6OtyHf3y7ueff15jHP/85z9x1VVXQb+om+pav3698/Ju/FqxYgV69+6Nr7/+2qn1D/LasmULpkyZggEDBqBRo0ZBdsW2c1SArHIUUPhx8hIWPIfuyCoH8YQfJSthwbd3t62iEj+s25Kx87KKKhx790c17vvvhb3Qre0vlQ4ZG8niBm30u3Xr5iy2Bu2bsgjPyEdo9Ldj8WL0Z8yYgblz59YAqnfvufrqq7F169aUoEePHo0xY8bU+bn+JqBVq1ZGJgiDogJUgApQASpABexWQC2+Y23qdUhncPqeG+c0yHqg1+6/Ga0aF2b9vJsHV61ahfPOO49G341Y2++h0fdo9HMp3eGKvofMzONbuZJlF3zysocXWZGVPQp4izTdSnyy1Xdvrae/e9JeV+CLglPQ96g/o2mTHfxsuk5bXNH3Li+NvkejH38Zd82aNTW20jz55JOhP2nyZVzvScgnairAOmK7MoK87OFFVmRljwLuI9W18offOhnL1mx2/1CGO98eMQCFBbFdCWtc29YBM85WXw/Eypfbtu2Kyt4PYeLULzB48GA0btzYtxiSNcQafe/y0uh7NPrx7TXvvfde5+sjfWnTr7fXvOaaa7i9pvcc5BO1FKAZsSslyMseXmRFVvYo4D7SxatKMXDcZFcPpDTwCU+3bd4YRQ2SmHx9T5Wq73n/eOD714C9/g7sex02by3HpEmTaPRdEZC/Ka+N/qZNm/D66687qt9yyy0oLS2trqEfOHAgWrdujSOOOML5+TvvvFNNRx+Y9cwzz1QfmHXDDTdAn7LLA7PkEziKPdKM2EWVvOzhRVZkZY8C7iLVq/mzFq3G0AdiL8Y+ef4haN8y+ap6WgOfrjtt7uslGP+tq9QBQrPVcv5g5ynJecUVfXd5kXhXXhv9RYsWoUuXLklVe++991BSUuL80VdiSY5+4VZvp/nYY485u+j069cPd9xxB3r06OGJgGTCSk5ETyLw5joKkJVdSUFe9vAiK7KyR4Gakca3skz82zK1Q86g8VNq3Pj+ZSXo1MrHLS7XLwCm/R444GZgl0FJ5ZOcV5K+ydZcqR13Xhv9sCFKJqzkRAxbV9v7Jyu7CJKXPbzIiqzCViCZYc8UUzJDn+yZDmol/92RJanLbjJ1VPvni54EPv6j2o5nI9C4LXDcN0CDut8WSM4rSd/kVS5T76fRD5GMZMJKTsQQJY1E12RlF0bysocXWZGVXwoEadiziVHX3ncsbuKPyS/fBMz+C/DNg7FQGu0C9H1CregfzhX9bOCE/AyNfogAaPRDFN/grmlGDIaTJDTysocXWZFVrgpog79kdWmdkplc23X7fLKXabOuvU/W6bovgKmnAOvmxX6qy3UOfVyt6O+cMkTJeSXpm9wyMf0+Gv0QCUkmrOREDFHSSHRNVnZhJC97eJEVWcUVCHtF3s3uN7Vp+Wrok6XCtxOAmRcBFWqbTv3y7T7XAT2vrPkibsiLHZK+yZ7Zkj5SGv0QSUomLP+BCxG0x67JyqNgId9OXiED8NA9WXkQK+Rb/WCVysy7rXl3I4GRht1N4Mnu+exa4PP/U6v37YB+TwFtBrhqyQ9WrjpSN0n6JrcxmX4fjX6IhCQTVnIihihpJLomK7swkpc9vMgqmqzc7kjj5+h9rYn3M7Bc2qosB+aOAvb4q6rLb+26Jcl5JembXAtg+I00+iECkkxYyYkYoqSR6Jqs7MJIXvbwIqtosfKjXj5SK/Je8FZVqZdt71dlOluVsR/u5ck690rOK0nflJMoBj1Mox8iDMmElZyIIUoaia7Jyi6M5GUPL7Kyn1V89d5L+U0qMx94zbupcpetj22bufhpVX/fADhyKrDTIVlHKzmvJH1T1oIY9iCNfohAJBNWciKGKGkkuiYruzCSlz28yMo+ViVHDMJateisr0zmPvAdaeyRL3Wkqz9Ru+qcCmxcGLun/fFAn4eBhsVZj05yXkn6pqwFMexBGv0QgUgmrOREDFHSSHRNVnZhJC97eJGV2awSa+23bNmCyVOm4sY5asU5wxXJevlMg/b6c12qs+Au4NORQOU2oH4hsP8tqmznErWqX89razXul5xXkr4pJ1EMephGP0QYkgkrORFDlDQSXZOVXRjJyx5eZGUuq9Kt5eg5aqLrAOOr93lbfuNaKXXjtrXAR+cBS1+MPdWkC9D/GaBVby+tpLxXcl5J+iZfxDGgERr9ECFIJqzkRAxR0kh0TVZ2YSQve3iRlZms3Jj8xLIcmnuPHJe/Crx/XOyhXU8GDnkAKGrhsZHUt0vOK0nf5JtAITdEox8iAMmElZyIIUoaia7Jyi6M5GUPL7Iyj1Uyk69NfUXZNkydOhX9+/dHl51boqiBOsCJV/YKfHpZbCW/27CcS3VqByE5ryR9U/Zim/UkjX6IPCQTVnIihihpJLomK7swkpc9vMgqPFZu97qfN+YoNGnYAGSVA6utq4HvHlP193/x3dQni0qSlaRvyoGAUY/S6IeIQzJhJSdiiJJGomuysgsjednDi6zkWXnZ6z5u8nWUZJUlq5+mA9NOAzYtjZXo7K5q8wO+JFlJ+qaAZRNrnkZfTOq6HUkmrOREDFHSSHRNVnZhJC97eJGVHCsvBl9HlWjyafSz4FRVCXz5T2DOVUBVBVDQCOh9D7DbOVk05u0RyXkl6Zu8qWDu3TT6IbKRTFjJiRiipJHomqzswkhe9vAiKxlW6V6udbvXPVl5YLXlJ+DDs4AVb8YeatZD7arzLNBiHw+NZH+rJCtJ35S9ImY9SaMfIg/JhJWciCFKGomuycoujORlDy+yCpZVulV8r3vdk5VLVj++D0wfqmqdvo890OVstZKv9stv0MRlA7nfJslK0jflrowZLdDoh8hBMmElJ2KIkkaia7KyCyN52cOLrPxjVfvl2lSn1no1+PEIycoFq21rgJc6AeUbVKnODsrg361KdZTRF74kWUn6JmEZA+uORj8waTM3LJmwkhMx88h5RzoFyMqu/CAve3iRlT+s3Ox7r3uqXXfvpXeycqnWNw8D88fHDsBqvpfLh/y9TZKVpG/yV6XwWqPRD097SCas5EQMUdJIdE1WdmEkL3t4kVXurNyY/GxX8ROjI6sUrFZOVSfaHhR72VZfVVVA5Tb13w1zh5tlC5KsJH1TlnIY9xiNfohIJBNWciKGKGkkuiYruzCSlz28yCp7Vqnq72u/XOvXqbVkVYtVZTkwd4z6muT62KFXug7fkEuSlaRvMkTenMOg0c9ZwuwbkExYyYmYvSJ8UitAVnblAXnZw4ussmOlTf7ht07GsjWbazSQS2lOpkjIKkGhTctjL9yunBL7yxb7AYOnib5wm46XJCtJ35QpR235OY1+iKQkE1ZyIoYoaSS6Jiu7MJKXPbzIKjtWi1eVYuC4yWImnwseCVJ//0Zs68ytP8f+sttFQK9bfyndyQ6pr09JzitJ3+SrSCE2RqMfoviSCSs5EUOUNBJdk5VdGMnLHl5k5Z5V4q46y9VK/tAHPnIefvL8Q3BQ52IUNajvvrEs7sx7VpVl6vCrq9UhWLfE1CtsFjvptuPvslAz2EckWUn6pmBVk2udRl9O6zo9SSas5EQMUdJIdE1WdmEkL3t4kdUvrGpvj5lIMdVWmfqe9y8rQadWwe/Rnvespp0OLH4yhqVYvXyrd9XZcTcjJ5skK0nfZKTYWQRFo5+FaH49IpmwkhPRL33ytR2ysos8ednDi6xirFLV3Gci2aFlY7w7siTw1XwdR96zWjUTeKt/rFRn/5tC3VUnU15IspL0TZnGbcvPafRDJCWZsJITMURJI9E1WdmFkbzs4ZXvrOKr+ImlOJnoJe6q49eOOpn6zEujX6G2yCxbDzTa6Rd5Ni5Sq/id3cgV6j2S80rSN4Uqqo+d0+j7KKbXpiQTVnIietWB99dUgKzsygjysodXvrJKtTWmJqdr7turlfpkl6Sxr91/XrHa+B0w9dTYqv0R7wH1G9gzqYS/fZH0TVZBSBMsjX6IJCUTNq9+aYbI1I+uycoPFeXaIC85rXPtKSqs0tXX19YoXb29ZCmOV3ZRYZVx3EtfBGb8Qa3mr4vdWqJ22Wl3dMbHTLpBkpWkbzJJ41xiodHPRb0cn5VMWMmJmKMsef84WdmVAuRlDy/bWCUz9OmMu1sS8XKcMFfsM8VqG6tM46nz84otwKeXAQvujP2oYSugz6NA+197birsByRZSfqmsHX1q38afb+UzKIdyYSVnIhZSMFHEhQgK7vSgbzs4WUDq7i598PQ1yajDX7H4iYiL9PmmhU2sMp6jBsWqlKdU4A1n8aaaH0Y0E/tsLNDh6ybDPNBSVaSvilMTf3sm0bfTzU9tiWZsJIT0aMMvL2WAmRlV0qQlz28TGdVurUcPUdNdC1o4ouymR4yefU+Weyms8qkd8qf//AuMOUEoHyDuqUe0PMqYJ/R1tXlJ45PkpWkb8qasWEP0uiHCEQyYSUnYoiSRqJrsrILI3nZw8skVrXLctKt4Ccz9LYZd69ZYhIrr7GnvX/zj8Ab+6tbKoFDHwfaHulr82E0JslK0jeFoWUQfdLoB6GqyzYlE1ZyIrocPm9LoQBZ2ZUa5GUPL1NYudnH3oY6+iDJm8LKlzFWltdcsdd75OsyncZtfWk+7EYkWUn6prB19at/Gn2/lMyiHcmElZyIWUjBRxIUICu70oG87OFlCquFKzdg0PgpKYWbN+YoNGlo1xaLfmeBKaxyHtd3jwHzrgcGTa25R37ODZvTgCQrSd9kjsK5RUKjn5t+OT0tmbCSEzEnUfgwT4S0LAc4t+wBZgIrvZrf/Wq1heL2q/Y+9lEvyXGbLSawchtr0vvKS4FZFwPfToj9uMtZqlTnkZyaNPVhSVaSvslUvb3GRaPvVTEf75dMWMmJ6KNEedkUWdmFnWoFMmgAACAASURBVLzs4RUWq8R6/Nqn0i4YO8SKXXCkKYfFypdxrv08tqvO+i9jze0yGOirVvYbtfGledMakWQl6ZtM0znbeGj0s1XOh+ckE1ZyIvogTV43QVZ24Scve3iFwSpdPb6uw+/apqk9AgpGGgarnIdXVQV88yAwezig98mvVwDsOxbY63L1/+vn3LypDUiykvRNpurtNS4afa+K+Xi/ZMJKTkQfJcrLpsjKLuzkZQ+vMFilqsc3+VRaE4iGwSqncetSnY8uBBar/fD1pV+27fsU0KZ/Ts3a8LAkK0nfZIP2bmKk0XejUkD3SCas5EQMSK68aZas7EJNXvbwkmZVe1/8xHp81uKnzxtpVjlncWUZ8NYAYNUMoN0xsXp8fdptHlySrCR9U1TQ0eiHSFIyYSUnYoiSRqJrsrILI3nZw0uKlS7XWbK6tM7OOqzHd58rUqzcR+TiztLFwNL/AHv8JdKlOrWVkGQl6ZtcELfiFhr9EDFJJqzkRAxR0kh0TVZ2YSQve3gFxSrxZdtUB19xy0xveRIUK29RpLl72zq1q86fgR4jgOJevjVrY0OSrCR9k40sksVMox8iScmElZyIIUoaia7Jyi6M5GUPryBYuTn8iibfe44Ewcp7FCmeWDULmHYqsPFbYMfdgV/PARo08a152xqSZCXpm2zjkCpeGv0QSUomrOREDFHSSHRNVnZhJC97ePnNSpv8WYtWY+gDHyUVQe+q07G4CbfPzCJF/GaVRQh1H9G76iy4A/j0UkDX5NcvAg74J9Bd7Zdfr54vXdjYiCQrSd9kIwuu6BtGTTJhJSeiYTJbFw5Z2YWMvOzh5SerZCv5fNnWv1zwk5UvUW1bA8z4A7DspVhzO+4G9H9Wle0c6EvzNjciyUrSN9nMJDF2ruiHSFIyYSUnYoiSRqJrsrILI3nZw8tPVotXlWLguMnVg+d2mf7mgZ+sco7sZ7WTzrTTAP2yrb46qsOwDr4PKGqec9NRaECSlaRvigIbPQYa/RBJSias5EQMUdJIdE1WdmEkL3t4+ckq0ejrlfyDOhezRMfHVPCTVc5hfTwMWPhvVarTEDjw/wFd1X75eVyqU1tPSVaSvinnvDGkARr9EEFIJqzkRAxR0kh0TVZ2YSQve3j5xap2bf77l5WgU6v8fRkziAzwi5UvsZVvBj48E9j7GqDlfr40GaVGJFlJ+qaoMKLRD5GkZMJKTsQQJY1E12RlF0bysoeXH6yS1ebT6PufA36wyjqqlR8AW1aqEp2Ts24inx6UZCXpm6LCkEY/RJKSCSs5EUOUNBJdk5VdGMnLHl5+sGJtvgxvP1h5jrSqEph3IzD3WqCgMXCU2kazeQ/PzeTbA5KsJH1TVDjS6IdIUjJhJSdiiJJGomuysgsjednDKxOrxIOvUo1q+ZrN1dtpsjY/OPaZWPne8+YfY+U5P7wVa7r5XmpXnefV/+7pe1dRa1CSlaRvigonGv0QSUomrOREDFHSSHRNVnZhJC97eKVj5ebgq9ojZclOcOxF59UP7wLTT1flOj/EBrTbucBBar/8PD4EywtZSVaSvsmLBibfS6MfIh3JhJWciCFKGomuycoujORlD69UrDIdfJVshNxOM1juIvOqsgL4/P/Un+vUYNRhWNrY974H6KJW9nm5VkCE1fZoJH2TawEMv5FGP0RAkgkrORFDlDQSXZOVXRjJyx5emtXrb07C3gf3R6NGjZzAyyoqMWj8lBqDSDz4KtXo2jZvzO00A0QvMq+W/gf44KTYKFrsA/RTB2CxJt8zVRFWNPqeucQfoNHPWrrcH6TRz13DKLYg+UszivpJj4m8pBX31l9i3f2G0s049u6P0jbAlXpv+gZ1t8i8qlKr+NNOVQdfFQO9blMr+uoFXF6eFRBhRaPvmQuNftaS+fcgjb5/WkapJclfmlHSLayxkFdYyqfuN27uk63Wp4v27RED0LG4CVfqDUAayLyqLAdWTALa//qXEeq/q9/AgBHbG0IgrFLIIemb7CVSM3Ku6IdIUjJhJSdiiJJGomuysgsjeZnDSxv8JatL65TiJItQm/rCgvrVP2IpjjkcdSS+z6tNy9Tq/e+Bn6YCA/4LdDjOrAFbHI3vrNJoIembLEZSI3Qa/RBJSias5EQMUdJIdE1WdmEkLzN4Zdo1Rxv7irJtmDp1Kn57zCA035En2ZpBLnkUvs6r5a8BM84Gtq6KddbzH8B+Y00evlWx+coqw8glfZNVENIES6MfIknJhJWciCFKGomuycoujOQVLq94mU7i/vbxiOKr9vHVerIKl5WX3n1hVVkGzLkK+PKfsa4LmwN9HgJ23f4CrpeAeG9KBXxh5VJfSd/kMiTjb6PRDxGRZMJKTsQQJY1E12RlF0byCo9XqlX8VAdZkVV4rLz2nDOrjYtUqc5pwKrtL1+3OljtqvM0sGMXr6Hw/gwK5MzKg8KSvslDWEbfSqMfIh7JhJWciCFKGomuycoujOQVDq9Ue9+n2zWHrMJhlU2vObEq2wD8d3dVqvNTrOseI1Wpzg1AQVE2ofAZGn2rc4BGP0R8NPohim9w1zn9A2fwuKIaGnnJk022kh/f+z7dS7VkJc8q2x5zZvXFzcAXt6hSnQl88TZbCC6fy5mVy370bZK+yUNYRt9Kox8iHsmElZyIIUoaia7Jyi6M5CXDK3E//Nr1+G73vicrGVZ+9OKZVekSoHF7tVVmQaz7qkpgy0r1d7v4EQ7bSKOAZ1Y5qCnpm3II06hHafRDxCGZsJITMURJI9E1WdmFkbyC51W6tRw9R01M2lGqevxkN5NV8Kz86sETqyXPAR+dHyvR2edav0JgOy4V8MTKZZupbpP0TTmGaszjNPohopBMWMmJGKKkkeiarOzCSF7B8tIr+d2vfiNpJ25X8uMPk1WwrPxs3RWrii3AJyOAr++Jdd1oZ+C4BWp3nWZ+hsK2MijgipVPKkr6Jp9CDr0ZGv0QEUgmrOREDFHSSHRNVnZhJK9geS1eVYqB4yZXd5J40JXXQ67IKlhWfraekdV6ZeinngKsnRPrts1AoO+TwA7t/AyDbblQICMrF224vUXSN7mNyfT7aPRDJCSZsJITMURJI9E1WdmFkbyC4ZVsf3xt8ru2aZp1h2SVtXTiD6ZltUgZ+o//CJRvVHHVA/a+JvanfgPxONlhAKcYpxFV0jdFhW3eG/358+dj+PDhmD59Opo2bYqzzjoLY8eORVFR+m24Fi9ejL///e+YPHkyNm7ciB49euCqq67CiSee6Do3JBOW/8C5xhL6jWQVOgJPAZCXJ7ky3qwN/pLVpRg0fkqde9+/rASdWmV/oi1ZZZTfmBtSsvr0CnUAltpNR1+6VKfvE8AuRxgTdz4GIjmvJH1TVFjmtdFfs2YNevbsiW7dujkmXSfQiBEjcMYZZ+DOO+9MyXjr1q3Yf//9nZ+PGTMGLVu2xGOPPYbHH38cb731Fo44wt0vHcmElZyIUZkcYY2DrMJSPrt+ySs73ZI9le6lW6/1+MnaJyv/WAXdUkpW36uXsicfrcz9IODQx9WuOsrs8wpVAcl5JembQhXVx87z2ujfeOONuOGGG6BX54uLix1Z77vvPlx00UVYsmQJ2rVLXus3Y8YMHHrooXjvvfdQUlLiPFdZWYndd98dgwcPxr333usKkWTCSk5EV4PnTSkVICu7koO8cuMVL9Epq6hMuoofr8n3Wo9Po58bl7CfrjGvitSWmYmHXf34HtB6wC9baYYdbJ73L/k7UNI3RQVrXhv9AQMGYKeddsKLL75YzXPt2rWO6X/ooYdwzjnnJOX8wQcfQD/7ySef4IADDqi+Z99990WfPn2cDwtuLsmElZyIbsbOe1IrQFZ2ZQd5ZeaVuAd+4t2pzL2+Rxv8jsVNUNSgfuYOXN5BVi6FMuA2zeqdiS/j6FavokFVKXCY+ne6nqrH52WcApLzStI3GSd0lgHltdFv06YNLrzwQqcmP/Fq3749zjzzTNx0001JZS0vL3dKdzp27Ii77rqrunTnsssuw5QpU3DwwQe7wiGZsJIT0dXgeVNKBcjKruQgr/S8kp1im4nwvDFHoUlD/1+sJKtMypvz8y0/fIyy905G06plsaAOewHY9SRzAmQk1QpIzitJ3xQVxHlt9AsLC6HLdy699NIaPPfee2/07ds37cr8ypUrceyxx2LmzJnOs40bN8bTTz+N448/PmVurF+/Hhs2bKj++YoVK9C7d298/fXX0B8ugry2bNnifAjR30Q0atQoyK7Ydo4KkFWOAgo/Tl7pBV+yehOOumNGRiqvXnQICgvqYZfmjVBU4N8qfmLHZJURQ/g3VFWhYNFDKPzsMtSr3IKqegUo3+s6lHe7RK3oB5MX4Q/a7ggk55U2+vq9ymXLlgXum+ym8kv0eW/09ar9yJHqNL2ES7+g279//5S19vrT61FHHQX9Uu6VV16JZs2a4bnnnsOjjz6KiRMnOs8mu0aPHu28vFv7evDBB9GqVauo5BTHQQWoABWoVuBndabR/30aW53/814VKG5YVUedFmqTMx8rdKi+pQo0qNqE/bbegw4VHzgj2FSvNWY1HIk1BT0sHRHD9luBVatW4bzzzqPR9yBsXhv9bEt39I48ukxHf6JMNOhHHnmkY/71ynmyiyv6HjIzj2+VXB3JY5l9Gzp5pZfym59KcezdHzk3TRzeR9Xd7+Cb9l4bIiuvisndX2/d5yj66PeoX/qN0+m2NkPw9sahOHTgMfwWWg5DVj1Jziuu6HtHlNdGX5extG7dGi+8oGr/tl/r1q1zau7TvYyrd+V5++23sWCBOpkv4br88svxxBNPONt0urkka80ka+jcjJ33pFaArOzKDvJSpkztfb9i3eY64Gq/bJvrPvi5ZgZZ5apggM9vUAb/DbW5hSrXwf63YHPHCzFJbVetd7LTpbG8zFVAcl5J+iZzFfcWWV4bfV2fr//orTRbtGjhKPfAAw9g2LBhzpabqbbXvPnmmzFq1ChnRV/v2hO/9P75+pPttGnTXFGQTFjJiehq8LwppQJkZVdy5DsvLy/bLhg7xNdddLxmSr6z8qqX+P3LXlEvvO0CtOoNshJXP+sOJVlJ+qasBTHswbw2+vEDs7p3717jwKzTTz+9xoFZ8QOw3nnnHQff0qVLoV/Y1c/p03H1ibq6Rl9/SHjqqadw2mmnucIsmbCSE9HV4HkTjX5EciAf51biCv7yNZsx9IFYaU66K6iddDL1m/jzfGTlRR/Re3/+GJg7Wu2m85x6QaPuacdkJUojp84kWUn6ppxEMejhvDb6msOXX36J4cOHY/r06Y5hP+uss3D99dejqEi9Hbb9ih+KNXny5Oq/03voX3311Zg9e7az8qBNvz5Vd+jQoa7xSias5ER0LQBvTKoAWdmVGPnGK90K/pPnH4L2LeuWWfhx2JUfWZFvrPzQzPc21K46+OpfwP+uUGU6ZcDu5wOH3F+nG7LyXfnAGpRkJembAhNMuOG8N/rCetfoTjJhJSdimJpGoW+ysotivvFavKoUA8f9sugRp9VBGfx3R5aEWpqTKXPyjVUmPcR/vnU1MOMcYLkq0dHXjl2B/s8Cxb8cPBmPiazE6WTdoSQrSd+UtSCGPUijHyIQyYSVnIghShqJrsnKLoz5xivR6Ceu4Juyap8ue/KNlVEz6afpwDRV1rppaSysTur/H3wvUNgsaZhkZRS9tMFIspL0TfYQSB8pjX6IJCUTVnIihihpJLomK7sw5hMvXbYza9Hq6pr8sHfR8Zop+cTKqzaB3V9VqWpk/wnMuQqoqgAK1IGNB94eK9mpVy9lt2QVGBHfG5ZkJembfBcqpAZp9EMSXncrmbCSEzFESSPRNVnZhTFfeJVuLUfPURNrwKHRtytXQ4m2fBPw5oHA+vlAM3XwlS7VabFPxlDyZV5lFMKCGyRZSfomC6R3FSKNviuZgrlJMmElJ2IwauVPq2RlF+t84KVX8rtf/UYNMDbU5NfOpHxgZeTsWTtXvYCrVvF73aZKdXZ0FSJZuZLJiJskWUn6JiPE9SEIGn0fRMy2CcmElZyI2erB52IKkJVdmZAPvGq/gPv2iAHqhNsmRr94myyL8oFV6LOnUpXnfHkL0PEUoOnuWYdDVllLJ/6gJCtJ3yQuZEAd0ugHJKybZiUTVnIiuhk770mtAFnZlR1R51W7Ll+b/K5tmtoFaXu0UWcVOpTNPwDTzwB+VGfOFKtynSPV4ZEFDbMKi6yyki2UhyRZSfqmUMQMoFMa/QBEddukZMJKTkS34+d9yRUgK7syI2q8Eg/DKquoxKDxU2oAsa0uPzH4qLEyaqb8oMz99NOBLT/GwtIv2+qXbhvUPVfBTdxk5UYlM+6RZCXpm8xQN/coaPRz1zDrFiQTVnIiZi0IH3QUICu7EsF2XpmMfSING+vyafQDnk+V5cDn16k/Y1VH6jCsBqoGX2+b2dn94ZHJIrR9XgWsulHNS7KS9E1GiZxDMDT6OYiX66OSCSs5EXPVJd+fJyu7MsBmXsl20kmlvq11+TT6Ac6nTcvVKr4y9Cu3f+vTcn+g3zNqd53uOXdq87zKefCWNSDJStI3WYYhZbg0+iGSlExYyYkYoqSR6Jqs7MJoG6/4Cn6yspxE5bWxLyyo7/yVDYdhucka21i5GVOo98w4F/h2QiyEbhepXXVuje2T78NFVj6IKNSEJCtJ3yQkX+Dd0OgHLnHqDiQTVnIihihpJLomK7sw2sDLjbmPorGvnUk2sLIq+7euBt4pAfa+Vu2y81tfQycrX+UMtDFJVpK+KVDRBBun0RcUu3ZXkgkrORFDlDQSXZOVXRhN4pVYbx9XMdPKvb5v3pij0KRhA7uEzyJak1hlEX74j5QuATYtBVr3+yUWffJtvdg3P35eZOWnmsG2JclK0jcFq5pc6zT6clrX6UkyYSUnYoiSRqJrsrILoym8vNTba4XjK/hRKctxkzWmsHITq3H3LHsFmHG2MvXqA+GQ/wE7tAs0RLIKVF5fG5dkJembfBUpxMZo9EMUXzJhJSdiiJJGomuysgtj2Lz0Kv6S1aV1tsFMpmI+mvtEHcJmZVdmb4+2Yhsw50pg/vjYXxS2AAa8BOw8MNDhkFWg8vrauCQrSd/kq0ghNkajH6L4kgkrORFDlDQSXZOVXRjD5KVN/uG3TsayNZtriJZYbx//QT6t3KfKoDBZ2ZXV26Pd+B0w7TRg1cexv2jVB+j/NNCkU+DDIavAJfatA0lWkr7JN4FCbohGP0QAkgkrORFDlDQSXZOVXRjD5LV4VSkGjptcQ7B8qbfPJkvCZJVNvKE+s/RFVarzB6BsXSyMPS8H9lN75dcvFAmLrERk9qUTSVaSvskXcQxohEY/RAiSCSs5EUOUNBJdk5VdGKV5Jb5wu1yt5A994CNHsCfPPwQHdS5GUQP/X4y0i0jqaKVZWavb928Ak38dC79hK6DPo0D77f8tNCiyEhLah24kWUn6Jh+kMaIJGv0QMUgmrOREDFHSSHRNVnZhlOSVqlRHK/b+ZSXo1KqJXeIJRyvJSnho/nZXWQG8dyRQWaYOwHpKvXjbwd/2XbRGVi5EMuQWSVaSvskQeXMOg0Y/Zwmzb0AyYSUnYvaK8EmtAFnZlQeSvBau3JD0pdsOLRvj3ZElXM3PkDqSrOzKYhXt+q/UibZ7/BL2tjVAg6aqVCecbVfJyp4MkmQl6ZvsIZA+Uhr9EElKJqzkRAxR0kh0TVZ2YZTiVXv7TF2q014ZfH3xRVt3OSPFyl00htxVrl7k/uSvwDcPAoOmqD3y+xoRGFkZgcFVEJKsJH2Tq8FbcBONfoiQJBNWciKGKGkkuiYruzBK8NIlO92vVnXTCdeCsUO4gu8xVSRYeQwp3NvXzVe76pwCrJ0bi6PzmUBfVY9vwEVWBkBwGYIkK0nf5HL4xt9Gox8iIsmElZyIIUoaia7Jyi6MErxq767DnXWyyxEJVtlFFsJT3z0GzBwGlJfGTrbdexTQ8x+qVKcghGDqdklWRmBwFYQkK0nf5GrwFtxEox8iJMmElZyIIUoaia7Jyi6MErwSa/P1Hvld26jaaV6eFZBg5Tko6Qe0sZ91MfDthFjPjduqVfwn1QFYJdKRpO2PrIzCYQwrSd9kD4H0kdLoh0hSMmH5SzNE0B67JiuPgoV8e1C84ttollVU1ngBl7vrZA88KFbZRyT8ZPkmYGJvYN0XsY53GaxMvlrZb9RGOJDM3eU9q8wSGXOHJCtJ32SMwDkGQqOfo4C5PC6ZsJITMRdN+Cx33bEtB/yeW9rgL1ldmnR3Ha0Na/OzzxC/WWUfSYhPzh6hkuh2YF91+NVe6hAsXbZj4EVWBkJJEZIkK0nfZA+B9JHS6IdIUjJhJSdiiJJGomuysgujH7xSrd7XVoK1+bnlhh+scosghKf1rjoFjZShrxfrvGKbevl2DtBKrewbfOUlK4N5pAtNkpWkb7IUR52wafRDJCmZsJITMURJI9E1WdmFMVtebs29rskvLKjPLTR9SItsWfnQdThNrFGGfqraVaeHWsXv9sdwYsiy17xjlaVOJjwmyUrSN5mgrR8x0Oj7oWKWbUgmrOREzFIOPrZdAbKyKxWy4VV7T/xkI9YGv2NxE26h6WM6ZMPKx+7lmqqqAhbeC8xW++NXbo0dfHXCYqCopVwMOfaUN6xy1MmExyVZSfomE7T1IwYafT9UzLINyYSVnIhZysHHaPStzAEvcytT/T1X74NNAS+sgo0kwNa3rQM+vhBY8myskyadgH5PAzv1CbBT/5vOC1b+yxZKi5KsJH1TKGIG0CmNfgCium1SMmElJ6Lb8fO+5AqQlV2Z4ZZXqlV8mns53m5ZyUXkc0+rZqkDsE4FNn4ba7jDCUCfh6xayY8rEnlWPqMPszlJVpK+KUxN/eybRt9PNT22JZmwkhPRowy8vZYCZGVXSmTilW4Vny/XyrLOxEo2Gp97+1qX6gxXpTpl6tCrIuCAfwLd1X758Zdwfe4u6OYizSpo8YTbl2Ql6ZuEZQysOxr9wKTN3LBkwkpOxMwj5x3pFCAru/IjHa90q/isv5fnHOm59d3jwIdnAjvuBvRXZTvFB8oL7GOPkWblo04mNCXJStI3maCtHzHQ6PuhYpZtSCas5ETMUg4+tl0BsrIrFTSv19+chL0P7o9GjdQ2htuv2gddxf+eq/jh8Y383Fp4H9BRle4UNQ9PZJ96jjwrn3QyoRlJVpK+yQRt/YiBRt8PFbNsQzJhJSdilnLwMRp9K3Ng3cZS/Grce1i9dfs+5SlGwV10wscbmd+DVZXA/PFAqdpJ56A7whc2gAgiwyoAbUxrUpKVpG8yTeds46HRz1Y5H56TTFjJieiDNHndBFnZhf+r5atw1B0z0gbNVXwzmEZibm35GZhxDvD9azFRD/sPsKt66TZiVyRYRYxJquFIspL0TVHBR6MfIknJhJWciCFKGomuycoejPpF22kLVuDcR//nBP3k+YegfcvGNQbQtnlj7oVvCFLr59bKD9SuOr8HNi+PKdr5dKD3PUCh2ic/Ypf1rCLGI91wJFlJ+qaoIKTRD5GkZMJKTsQQJY1E12RlB8ZkL9q+f1kJOrVqYscA8jBKa+eWLtX54ibgs2uBqgqgQH2YPOhOYLdzrd1VJ1P6Wcsq08Ai+HNJVpK+KSqoaPRDJCmZsJITMURJI9E1WZmPUa/kd7/6jRqBtm/RCO9d+iuu3huMz8q5tfnH2G46P7wVU7b5XuoALLWrToueBiude2hWssp92Fa2IMlK0jdZCSNJ0DT6IZKUTFjJiRiipJHomqzMx7hw5QYMGj+lOtAr9yvHaccNQvMduZpvMj0r59bqT4BJh6r98bfFVvD1y7cNop9nVrIyOfkDjE2SlaRvClAy0aZp9EXlrtmZZMJKTsQQJY1E12RlJka9ir9i3WbU3jbz1YsOwTefTsPgwYPRuHHN+nwzR5K/UVk7t/S2mbpcp4ta2c+Ty1pWecIncZiSrCR9U1RQ0uiHSFIyYSUnYoiSRqJrsjIPozb5h986GcvWbK4T3JyrSzD5nbdp9M3DViciK+bWpu+BL8epk21vUSfcFlqgajAhWsEqmKFb16okK0nfZB2IFAHT6IdIUjJhJSdiiJJGomuyMg9j7VKdeIR628z6lWWYNGkSjb552Owz+ismAdPPALb+BOx5uTL7N1ugajAh8vdgMLoG0aokK0nfFIRWYbRJox+G6tv7lExYyYkYoqSR6JqszMJY+8Xb+Baa8W0zycssXumiMZZVZTkwdxQw70YVfpWqwVfbZR5yP9BJnXKbp5exrPKUhynzStI3RQU1jX6IJCUTlr80QwTtsWuy8iiYT7fHa/BrN7dclesMfeCj6r9eMHZIjZ11yMsnAALNGMlq07LY3vg/TY0p0LIX0P8ZoGlXAUXM7cJIVubKFWpkkqwkfVOoovrYOY2+j2J6bUoyYSUnolcdeH9NBchKLiNSvWCbKoK3RwxA1zY1DyciLzleufZkHKvlr6tTbs9SpTqrYkPrPlyV66j6/IKGuQ7V+ueNY2W9osENQJKVpG8KTjHZlmn0ZfWu0ZtkwkpOxBAljUTXZCWDMd0Ltski6KBOvH13ZEmdffLJS4aXH70Yxapcvdj9andAr+gXNgf6PATsepIfw4xEG0axioSiwQ1CkpWkbwpOMdmWafRl9abRD1FvW7qW/KVpiyZBxJnqBVu9al9YUL9Ol/Ga/No/IK8g6ATTpnGsVqqzGP73d6DvE8COXYIZtKWtGsfKUh0lwpZkRaPvnSiNvnfNfHtCMmElJ6JvAuVpQ2QVPPhML9h6iYC8vKgV7r2hs1r2CrDTIUCjNr8IUaVevq1XL1xhDOw9dFYGamJqSJKsJH2TqXp7jcs6o1+lfik+88wzmDlzJpYuXYqbb74ZXbp0wZtvvokePXqgc+fOXjUI7X7JhJWciKEJGpGOySp4kItXlWLguMnVqHMJEAAAIABJREFUHdV+wdZLBOTlRa1w7w2NVcVWtXJ/BfDV/wN2GQz86g1l7ut+axSuOmb1Hhors2SwIhpJVpK+yQrxXQRpldFftmwZhgwZgq+//tox9XPnznUMf69evXDBBReoRZF6uO8+dYKgJZdkwkpOREvkNzZMsgoWjV7Nn7VodfVOOslesPUSAXl5USvce0NhteEbtauO2iZz9ezY4Fv3Awaqlf2iluGKYXjvobAyXBNTw5NkJembTNXba1xWGf0TTzwR3333HV599VXssssuKCoqwqxZsxyj/9RTT+Haa691PgTYckkmrOREtEV/U+Mkq+zJpNoiM95iWUUlBo1XddEJ1/uXlaBTqyZZd0peWUsn/qA4qyXPAR+dD5Stj411ryuBfcfk9Ym3bqGLs3IbGO+ro4AkK0nfFBXUVhn9pk2b4vHHH8dvfvMbVFRUoLCwsNroT5kyBUcffTQ2bdpkDRvJhJWciNYAMDRQssoOjNdddHQvqXbS8RIBeXlRK9x7xVhVbAE+GQF8fU9swA13Ag59HGh3VLgCWNS7GCuLNDE1VElWkr7JVL29xmWV0W/evLlj9I877rg6Rv/555/HsGHD8NNP6uhwSy7JhJWciJbIb2yYZOUdTe1yHDct6JKdjsVN6myX6ebZxHvIy6ti4d0vxuqjC4Fv1Mm2+mozUO2q8ySwQ7vwBm5hz2KsLNTGtJAlWUn6JtN0zjYeq4y+NvilpaWYNGmSU4+vV/Rnz56NAw44wFnNb9GiBZ5++ulstRB/TjJhJSeiuJAR65Cs3AFNd9jVk+cfgvZq3/tUV6qtMt31XPMu8spGtXCeEWNVuhR480Cg2zBg72tUqU6DcAZsca9irCzWyJTQJVlJ+iZT9M01DquM/rx589CvXz/svPPOOOGEE/DPf/4T559/Pj7//HPMnz8fH330Ebp2tefYcMmElZyIuSZlvj9PVukzQBv8JatL69Tax5/yoxzHSw6Slxe1wr03MFblqmR003KgWbdfBrhtrXrhtkW4A7a498BYWayJqaFLspL0Tabq7TUuq4y+Htw333yD0aNH45133sHPP/+M4uJiDBo0CGPGjMHuu+/udfyh3i+ZsJITMVRRI9A5WaWGmKkO369yHC9pRF5e1Ar33kBYrfsCmHoKUKFOuj36E2Xu1Sm3vHJWIBBWOUfFBpIpIMlK0jdFhbZ1Rj8qwutxSCas5ESMEqMwxkJWqVWvvf+9vjN+kq2f5TheuJOXF7XCvdd3Vt9OAGb+WZl8taKv98Xvr3bZ2fWkcAcZkd59ZxURXUwchiQrSd9kotbZxGSV0T/88MNx9913O3vo174WLFiAP/3pT3j33Xez0SGUZyQTVnIihiJmhDolK3dGX9fhH9S5OOeXaXNNHfLKVUG5531jVbYRmKUM/nePxoJvrF601S/c7qxevOXliwK+sfIlGjaSTgFJVpK+KSrUrTL69evXx4wZM3DwwQfX0V/vp9+nTx+Ul5dbw0YyYSUnojUADA2UrOqCib94u3zN5uqDrnLd/94v/OTll5LBt+MLq7VzY6U66+fHAm47RG2d+QjQqHXwA8ijHnxhlUd6hTlUSVaSvilMTf3s2zqjr1+47d27dw0Ntm3bhn/961+4/fbboU/PteWSTFjJiWiL/qbGSVYxMul21dE/p9E3NYPNjSvnubVyKvDekapUR+2TX68A2O9GYM+RsbIdXr4qkDMrX6NhY+kUkGQl6ZuiQt14o69fsr3uuutc6T1ixAiMGzfO1b0m3CSZsJIT0QRtbY6BrIDSreXoOWpiSozSO+uY8o+czXltQuw5zy1t8CcdCmxdDfRTWzm3Vv+fVyAK5MwqkKjYaDIFJFlJ+qao0Dbe6OsVfF2uU1VVBW3k//rXv6JTp0419C8qKnLq9n/1q19ZxUUyYSUnolUQDAw2n1ll2joz7Bdvw/5HzsB0tSqkrOZW2XqgsNkv49y4KPbfDYutGrttwWbFyrZBRiReSVaSvikiePS5U/XqKRNdZcOAHnnkERxzzDHYaSd1nHgELsmElZyIEUAT6hDykVU6g2+iuU9MkHzkFeoEyaFzT6z0P4sL7gLmXgscqUp2mu+VQ8981KsCnlh5bZz3+6qAJCtJ3+SrSCE2ZpXRD1GnQLqWTFjJiRiIWHnUaL6wylSDr5HPG3MUmjQ0+1TRfOEVhSnompU+7Oqj84ClL8aG3e5YoOSVKEhgzRhcs7JmRNENVJKVpG+KCjHrjP5rr72G+++/H3o7zS1bVL1krevbb7+1ho1kwkpORGsAGBpoPrAy8eCrbNMhH3hlq41pz7li9fPHwLRT1Ysii2Lh73oycMgDPOVWGKYrVsIxsbvkCkiykvRNUeFtldF/8cUXceqpp+Lkk0/Gs88+i9/97ncoKyvD22+/jdatW+M3v/kNxo8fbw0byYSVnIjWADA00HxgtXDlBgwaP6UOgTBOts01DfKBV64amfJ8Wla6VOerfwH/uwKoLAPqFwG9bgO6DVO76tQzZQh5EwfnlT2oJVlJ+iZ7CKSP1Cqjf+CBBzo1+qNGjUJhYSH03vm9evXCqlWrMHjwYJx77rm4+OKLrWEjmbCSE9EaAIYGGkVW8TIdLXlZRWUNk68PvmrfsjHCOtk21zSIIq9cNTH1+ZSs9G46em/85dvLc3bsqk65fRYoPsDUoUQ+Ls4rexBLspL0TfYQiJDRb9q0Kf773/+ipKQEeqcdvZI/cGDsJEK92n/ppZfCa+nO/PnzMXz4cEyfPh26/bPOOgtjx4512s90TZ06Fddeey0+/vhjFBQUYJ999sFDDz2E7t27Z3rU+blkwkpORFeD500pFYgaq0xbZS4YOyT0021zSceo8cpFC9OfTclKr+ZPPwNYrE637XQacPC9NXfaMX1gEYyP88oeqJKsJH2TPQQiZPTbtWuHCRMmOKv3eovNK6+8En/605+qjf7ZZ5+NDRs2uGazZs0a9OzZE926dcNVV13lGG+9hecZZ5yBO++8M207b731Fo499lhccMEFOOGEE7B161bnw8Ipp5yC/fbbz1UMkgkrORFdDZ435YXR1yv53a9+I+VYbXjZNlOqcm5lUsicn9dg1ahRzZKcMvVvx7KXgc6ns1THAGScVwZAcBmCJCtJ3+Ry+MbfZlXpzvHHH48BAwY4K/e6ROeFF16oLuO54YYb0LlzZ7zzzjuuRb/xxhuhn1u8eDGKi2N7It9333246KKLsGTJEugPFsmu8vJy7L777jj99NOd57O9JBNWciJmqwefiykQJVaLV5Vi4LjJ1WjjW2Xqv7C1VKd2nkaJV9TnYDWrgQeg8adqkajrhepl2xOiPmwrx8d5ZQ82SVaSvskeAukjtcro64OztCnXL+Tq1XhdZvPGG2+gsrISun7/qaeeQteuqrbS5aU/NOg9+XXZT/xau3atY/p1Cc4555yTtCXd569//WvnG4BUHwbchCCZsJIT0c3YeU9qBaLEKtHoa5PftU3TyKGPEq/Iwak1IM1q9hvj0Q93od6WFao8pwVw3AKgUeuoD9268XFe2YNMkpWkb7KHQISMvi6PadCggVMPH7/03+k/zZolnFzokk6bNm1w4YUXOjX5iVf79u1x5pln4qabbkrakn4Z+K677sIDDzyAyy+/3HkvQJf/jB492vkQ4vaSTFjJieh2/LwvuQJRYpVo9N+/rASdWjWJHPYo8YocnMQBVVagbM4YNPjyetRDJVCwA9BbHYi1W/IFnUhrYcHgOK8sgLQ9RElWkr7JHgIRMfrazDdp0sRZfdclPH5ceuceXb6jS4ESr7333ht9+/Z1yniSXX/84x/x6KOPYocddnA+JOiXb/W7A48//jj0C7r9+vVL+tz69etrvEOwYsUK9O7dG19//TX0h4sgL33mwJQpU5zSp0a6NpWXsQpEidWS1Ztw1B0zHK0nDu+DjsXKXEXsihKviKH5ZThbfkDRrPNQ8NN7zt9V7NgDZYc8gapme0Z2yLYPjPPKHoKSrLTR1wury5YtC9w32UMgIkZfD6Njx47OSvpxxx3ni/7a6OtV+5EjR9ZoT7+g279/f9x7r9p5IcmlX8DVq/k6Fl3Pr68qtWvD/vvv78T4yivJT1DUK/5jxoyp0+KDDz6IVq1a+TImNkIFTFBAvYOLtduA1Vvr4a4vYt/AXXNAOXbiZ0wT8ORVDDtVzMGBW29Doyp12q26FjU4Ep8XnY+Keg3zSgcOlgpEQQG9nfp5551Ho+8BplU1+jfffDMmTpyIN99809X2l5l0yLZ054orrsAtt9yCL7/8Ej169Kju5q9//atj8r/55pukXXNFPxMR/lwrILk64qfi29T++D+s26L2ya/CsXd/VKdpruj7qTbbcqtAg6//Hwo/vxJVDXZEac/xeGdhG36z6Va8EO+z9fdgiJKF1rUkK67oe8dsldH/29/+hmeeecZ5+fbwww/HzjvvrA4s/OXEQv3/b731Vtcq6DIWfaKu3r0nfq1btw4tW7ZM+zKuLtPRh3PVNvqXXHIJXn/9dacUx80lWWsmWUPnZuy8J7UCNrGKH4RV+xCs2qProA7EenekOv+iQf3IobeJV+TEdzOgKvX10qeXOzvsbC7cFZMmTXK2aG7cuLGbp3lPSApwXoUkfBbdSrKS9E1ZSGHkI1YZ/S5duqQVURt9Lwdm6fp8/Udvpdmihdp9QV26JGfYsGHO7j6pdtTRtfW6ROe2226rPolXl+7o/fN1vf7zzz/vCrZkwkpORFeD500pFbCFlTb5h986GcvWbE45lvh2mlHZSjPZQG3hlTdT7vs3gXWfA3vWfPdKj5+s7MkCsiKrZApI+iZ7CKSP1Cqj77fo8QOztDlPPDBL74+feGDWEUcc4XSduEe/LtPRtfV6H/34y7jPPfccZs+ezQOz/AaVZ+3Z8g9c7T3y45jywdwnpqQtvCI/jSrLgM+uAb64WQ1VfdN7+FvALrHf3fGLrOzJArIiKxp9f3Igr42+llCX3wwfPtw51bZp06bO3vzXX399jXcASkpKHLUnT55crbo+NEu/WKvNvn45ZJ999nGeO+qoo1yTkfxkyl+arrGEfqPprOLlOsvVSv7QB2K1+E+efwjaq/KcKK/cp0oM03mFntASAZQuAab9Hvh5eqy34oOA/s8AO+5Goy+hfwB9cF4FIGpATUqykvRNAckl3mzeG31xxRM6lExYyYkYpqZR6NtkVqnKdaK6R76bfDKZl5v4rb9nmdrlbMY5wLbVsaHs8Vdgf3UGSkHdXXXIyh7aZEVWyRSQ9E32EEgfKY1+iCQlE5a/NEME7bFrk1klK9eJ8ou2btCZzMtN/NbeU6H2b51zJTB/fGwI+pTbQycAHX6TckhkZQ9tsiIrGn1/coBG3x8ds2qFRj8r2SL/kMn/wC1cuQGDxk9xGORzuU5iEprMK9KT5adpwFuHqSFWAa36qFKdp4EmndIOmazsyQiyIisafX9ygEbfHx2zaoVGPyvZIv+Qqf/A6bKd7le/Ua1/Ppfr0OgbMg0/u1Ydc7sV2G8sUL8wY1Cmzq2MgefhDWRlD3RJVpK+yR4C6SO12uhv2rTJ2Qs5cS99m8BIJqzkRLSJgYmxmshKm/xZi1ZXv3yrdVswdkgk98X3mhMm8vI6Bivu14b+2wnOfvjql34sZLWtcfX/dzEIsnIhkiG3kJUhIFyEIclK0je5GLoVt1hn9GfMmIHRo0dj5syZ0Idbffzxx+jVqxdGjhyJww47DCeccIIVwusgJRNWciJaA8DQQE1jlewFXL2FZtc2TQ1VUDYs03jJjl6otw0LgamnAms+AQ5QhyLuOSKrjskqK9lCeYisQpE9q04lWUn6pqzEMPAhq4z+Sy+9hN/+9rfOFpb6ZNzLLrsMs2bNcoy+3trygw8+wJtvqsNSLLkkE1ZyIloiv7FhmsQq2Up+vr98WztxTOJlbFLnEthitU3mRxcA5RtUK2olf59RsT9ZXGSVhWghPUJWIQmfRbeSrCR9UxZSGPmIVUZf71U/cOBA5zArvY99UVFRtdF/5ZVXcOGFF0KfWmvLJZmwkhPRFv1NjVOSVXxP/GRalFVUVr94G/+5fgH3oM7FLNlJEEySl6k5G0hc5erE5U/UVpkL74s136iN2lXncaDtkVl3R1ZZSyf+IFmJS551h5KsJH1T1oIY9qBVRr9Ro0Z47bXXoE+qraioQGFhYbXR14dZHX300diyZYthEqcORzJhJSeiNQAMDVSClTb4S1aX1jHy6SThSn5ydSR4GZqqwYW1br46AOsUYO3cWB87/wro+wTQuG1OfZJVTvKJPkxWonLn1JkkK0nflJMoBj1sldHv1KkT/v73v2PYsGF1jP4dd9zhrPR/9dVXBsmbPhTJhJWciNYAMDTQoFmVbi1Hz1ETPY1e1+R3LG7ClfwkqgXNyxOoKNys98d/ZXdg0zJVqVMf2FuV6fT8h9pVpyDn0ZFVzhKKNUBWYlLn3JEkK0nflLMwhjRgldG/4oor8PDDD+O5555D//79nRX92bNnQ6/0Dx482CndueaaawyRNnMYkgkrOREzj5x3pFMgSFa1t8iMx6GNfGGBMlVJrrbNG9PgpwEWJK+8nSlLXwRmXaxW8Z9Uq/klvslAVr5JGXhDZBW4xL51IMlK0jf5JlDIDVll9Ldu3YqTTz4Zr7/+Otq0aYOVK1eibdu2+PHHH3HMMcfghRdeQIMGDUKW1H33kgkrORHdK8A7kykQFKtkL9ZypT73HAyKV+6RWdTCui+AHXZVp9sm7ORUXgo0aOLrIMjKVzkDbYysApXX18YlWUn6Jl9FCrExq4x+XKd33nkH+s/PP/+M4uJiDBo0yPlj2yWZsJIT0TYOpsUbBKtk5TrcItMf8kHw8icyC1rR++B/+5BavR8O7HqSetn2MU/74nsdIVl5VSy8+8kqPO299izJStI3edXB1PutNPqmiuk1LsmElZyIXnXg/TUV8JtVsnIdvljrX9b5zcu/yAxvqUxtlzlzGLBIvWSrr8btgaNnq//dObDAySowaX1vmKx8lzSwBiVZSfqmwAQTbtgqo9+zZ0/8/ve/x6mnnopu3boJS+V/d5IJKzkR/Vcqv1r0m9XClRtq7K7Dch1/88lvXv5GZ2hra/4XOwBrw4JYgO2OAfpMUFto7hRowGQVqLy+Nk5WvsoZaGOSrCR9U6CiCTZuldE///zzoQ/NWrNmDQ444AAMHToUp5xyCjp06CAomX9dSSas5ET0T6H8bMlPVrVX81mu439O+cnL/+gMa1GX6iz8NzD7b0DlVlWmo96p2v8moIf6b73DTsAXWQUssI/Nk5WPYgbclCQrSd8UsGxizVtl9LUq+qCsiRMn4tlnn8XLL7+MjRs3om/fvjjttNPwu9/9Dq1btxYTL9eOJBNWciLmqku+P+8nq8WrSjFw3ORqSReMHcIddHxOMD95+Ryaec3970rgC2Xs9dWkE9DvaWCnPmJxkpWY1Dl3RFY5SyjWgCQrSd8kJmDAHVln9BP10Lvw6B14nnnmGbz66qsoKyuD/jtbLsmElZyItuhvapx+sIqfeLt8zWYMfeAjZ6hczQ+GuB+8gonMwFbXzgMm9lan2x6lSnXUS7hFLUWDJCtRuXPqjKxykk/0YUlWkr5JVMQAO7Pa6FdWVjq77zz11FP4z3/+g/Xr1zsHadlySSas5ES0RX9T48yVlTb5h986GcuUyU+83r+sBJ1a+btdoakaSsaVKy/JWMX70qU629YADYt/6Vpvpdlsz0B310k1TrISz4CsOySrrKUTf1CSlaRvEhcyoA6tNPoffPABnn76aTz//PPOFpu6Xl+X7ug/NtXrSyas5EQMKFfzptlsWMVX8LVIiav4cdG4y05w6ZMNr+CiMahlbfBn/AEoXQQM/hAoaBR6cGQVOgLXAZCVa6lCv1GSlaRvCl1YnwKwyuiPHDnSqc3//vvv0aNHD8fY6114unbt6pMcss1IJqzkRJRVMXq9eWWVagVfK/Pk+YegfcvG4Om2weWJV17BRWJQyz/PAKadpkz+4lhQhzwI7K5Mf8gXWYUMwEP3ZOVBrJBvlWQl6ZtCltW37q0y+rvttpuztaY29/vuu69vIoTVkGTCSk7EsPSMSr9eWdV+4TauA1fxZTLCKy+ZqELqpaoSmD8e0C/dVpUD9RsCB/4L6PrHUEp1aqtAViHlRRbdklUWooX0iCQrSd8Ukpy+d2uV0fd99CE3KJmwkhMxZFmt794rq0SjH1/B1yJwFV8mFbzykokqhF62rgI+PBv4/rVY5027A/2fBVruF0IwybskK2NQZAyErDJKZMwNkqwkfZMxAucYiPFGX79g27RpU6hAnZdtM13NmjXLdIsxP5dMWMmJaIzAlgbilVWi0ecLt/LQvfKSj1Cgx7Vzgcm/BjYti3XW+XSg9z1AYVOBzt13QVbutQr7TrIKm4D7/iVZSfom9wqYfafxRr+goAAffvghDj74YNSvX98x/Oku7rrDlSyzp1zm6Lz+0qTRz6xpkHd45RVkLKG1vW0t8MYBwJYfgYPuBHY714hSndp6kFVoGeK5Y7LyLFloD0iyotH3jtl4o//II4/g2GOPRatWrTBhwoSMRv/ss9VXx5ZckgkrOREtkd/YML2yotEPF6VXXuFG62Pvuh4/8TTb1Z/EavJb9PSxE3+byltW/soo0hpZicjsSyeSrCR9ky/iGNCI8UbfAI0CC0EyYSUnYmCC5UnDXljpHXdmLVpdfSgWS3fkk8QLL/noAurxx/eA2ZcAJa8DO3QIqBP/m81LVv7LKNIiWYnI7EsnkqwkfZMv4hjQiFVGX++6ow/G2m+/ui93ff755zj++OPx7bffGiCruxAkE1ZyIrobPe9KpYBbVsm21aTRl88rt7zkIwugx0p1IOG8scDn16ldddSKftujgV+9EUBHwTSZV6yCkVCsVbISkzrnjiRZSfqmnIUxpAGrjL6u0Z8xY4ZTr1/7+vjjj9G/f39s27bNEGkzhyGZsJITMfPIeUc6Bdyyqr2tJrfTDCev3PIKJzofe928ApiuXrLVq/n6aqG2OO73DNC8h4+dBNtU3rAKVkaR1slKRGZfOpFkJembfBHHgEaMN/p6p521a9WLXurq3LkzXnrpJey///41pNuyZQv+/e9/48UXX8SiRYsMkNVdCJIJKzkR3Y2ed6VSIBOr+Cm4iSfg6m01D+pcjKIG9SmssAKZeAmHE0x3KyYpk38GsPWnWPt6X/xetwENGgfTX0Ct5gWrgLSTbpaspBXPvj9JVpK+KXtFzHrSeKM/ZswY6D+ZdtupqqrCLbfcgksvvdQshdNEI5mwkhPRGgCGBlqbVdzY63DLKioxaPyUOpGzZCc8mJGeW5Xq0Ku5o1S5zo1K4Cpl7NV2mQffp1Zd1Km3Fl6RZmUhj3Qhk5U9QCVZSfomewikj9R4o//VV19h/vz50Eb+pJNOws0334zu3dVBLAlXUVERevTogS5duljFRTJhJSeiVRAMDDaRVUFhQxx+62QsW7M5ZaQs2QkXYqTnlq7Df0/V4f/wljr4qpc6AEuV6jTtGq7gOfQeaVY56GLio2RlIpXkMUmykvRN9hCw3Ognhv/++++jV69ezgFaUbgkE1ZyIkaBTVhj0Kv33/24BlOnTnXeOVm1uap6R53aMb09YgAKC+rzBNywYG3vN/Jza7PaG/+r/wfso1b2C9T2mRZfkWdlMZvaoZOVPTAlWUn6JnsIRMjoR0X0+DgkE1ZyIkaNk9R4ku2ik9i3rsNv3zJWE922eWPW40uBydBPpOZWZRkw5x9A+2OBNgMMUdi/MCLFyj9ZjGyJrIzEkjQoSVaSvskeApYb/eLiYrz99tvOSn7Lli0z1uqvXr3aGjaSCSs5Ea0BYFigtXfRSQyP5TmGwUoIJzJzq3QxMFXV3q+aATRuDwz5H9BoJ3OFzyKyyLDKYuy2PUJW9hCTZCXpm+whYLnR1y/iXnDBBWjXrh1Gjx6d0eiPGqW+XrbkkkxYyYloifyhh5n4kq0OJnEXnT/vVYHjj+iHRo0aOXFyBT90XCkDiMTcWvoSMONc9bZ3bIcz9BgJ7HeDKtUpMlf4LCKLBKssxm3jI2RlDzVJVpK+yR4Clhv9qAidbBySCSs5EaPMLJexudk9J97+NQeUY+jxg9G4sV3bF+aij63PWj23KtS5I/+7PFaDr6+iYqDPBKDDcbbiSBu31awiSST1oMjKHuCSrCR9kz0EIm709QFaeleefv36oVu3blZxkUxYyYloFQShYDPV3yeG0b5FI4zYYyN+fTSNvhCenLqxdm5tVKeITz0VWD0rNv7W/YC+TwFNds1JD5MftpaVyaIGFBtZBSRsAM1KspL0TQFIFUqTxm+vmajK0KFDobfSnDBBrTip6/7778cf/6gOblGXLnF4/fXXUVJSEoqQ2XQqmbCSEzEbLaL+TLr6+/juOXENWqiNTSa/8zYGD6bRtyEvrJ1bc65W++NfH5N4ryuBfccA9QttkDzrGK1llfWI7X2QrOxhJ8lK0jfZQyB9pFYZ/Y4dO2LcuHE49VS1CqUufVKuNkPjx4/HsGHDsHTpUkyePNkaNpIJKzkRrQEgEGiqU2zT7Z5DVgJgfOzCWl56h50Pfgt0uwhod5SPipjblLWszJU0sMjIKjBpfW9YkpWkb/JdqJAatMro63rlSZMm4bDDDsO8efOwzz77YO7cuejZs6ezM88pp5wC7rqTPJMkJ2JIuWxct6Vby9Fz1MQ6cWU6xZasjEOZNiBreK1fAKxRO+l0OsUugX2M1hpWPo7Z1qbIyh5ykqxo9L3nhVVGv0OHDrjppptwxhln4NZbb3VW8jV0fU2cONEx+uvWrfOuQkhPSCas5EQMSU6jutUr+d2vfqNOTG62ySQro1BmDMYKXoueBD5WZY6V6uXbwR8CxeqU2zy8rGCVh1ySDZms7EkESVaSvskeAukjtcq6G2B9AAAgAElEQVTo6202dR2+rtXXdfpnnnmmY/b1pY3/Y489hv/9T61YWXJJJqzkRLRE/kDDrF2T7+UUW7IKFI3vjRvNq3wTMPsvwDcPxsbdaGeg/7ORPAzLDVijWbkZQB7dQ1b2wJZkJemb7CEQIaOvV+v/9re/YebMmc4BWnfccQeaNWvmjLB///7OH73ib8slmbCSE9EW/YOMM9Hoa5PftU1T192RlWupjLjRWF7rvlC76qgynXXzYjrtfITaVedxdRjWLkboFkYQxrIKQwzD+yQrwwElhCfJStI32UMgQkY/KqLHxyGZsJITMWqcshlPotHPVJNfu32yykbx8J4xkte3E4CZfwYq1Ip+vfrAPmpHHb2zTv2C8IQyoGcjWRmgi4khkJWJVJLHJMlK0jfZQyCCRl+/cKtX9fX/FhcX4+CDD0bLli2tYyKZsJIT0ToQAQRMox+AqIY2adzc+knV4L/VN6ZW43ZqFV/V5+880FD1ZMMyjpXs8K3qjazswSXJStI32UMgQka/qqoKV1xxBW6//XZs26ZeKtt+NWzYEH/5y19w8803W8VFMmElJ6JVEAIKlkY/IGENbNbIufXRhcCmpcChj6q6/NYGqhZOSEayCkcK43slK+MRVQcoyUrSN9lDIEJG//rrr8fo0aNx+eWXO3vp77zzzvjxxx/xzDPPOPvrjxkzBldeqb6etuSSTFjJiWiJ/IGGSaMfqLxGNR763FILIFg5peaqfcXW2OFXumyHVyiGhLLnpkDo8yq38PPqaUlWkr4pKhCt2nWnS5cuOPfcc3HttdfW0f+6667Dww8/jO+++84aNpIJKzkRrQEQYKALV27AoPHKfKmLNfoBCm1A06HOrbL1sW0zFz+tVu8fA7qcYYAi5oYQKitzZTEyMrIyEkvSoCRZSfomewikj9Qqo9+oUSO8+uqrGDRoUJ1R6QOzjj32WGzZssUaNpIJKzkRrQEQUKC199Cn0Q9IaEOaDW1urf40tqvOxoUxJToNBfo9YYgqZoYRGisz5TA6KrIyGk+N4CRZSfomewhEyOj36NEDQ4YMwW233VZnVCNHjsRrr72G+fPnW8NGMmElJ6I1AAIKNHE1X3exYOwQFDVwX0JBVgGBCahZcV66VOfru4FPRsQOwNIlOvvfAuxxiSrVqRfQKKPRrDiraMgWyijIKhTZs+pUkpWkb8pKDAMfsmpF/95778WwYcNw+umnO6fg7rLLLli5ciWee+4557Cse+65BxdeqF5Cs+SSTFjJiWiJ/IGEWXs13+se+joosgoETWCNivLathb46Hxg6Qux8TTpog4ReQZo1Tuw8UWpYVFWURIuhLGQVQiiZ9mlJCtJ35SlHMY9ZpXR1+rpQ7L+7//+Dz///LNavKoHvRNP69atcc011+Diiy82TuB0AUkmrOREtAqCj8Fqkz9r0WoMfeCj6la9rubT6PsIRKgpsblVWQ68vi+w/svYyHY9GTjkAaCohdBI7e9GjJX9UoU+ArIKHYHrACRZSfom1wIYfqN1Rl/rWVlZiS+//BJr16519tHfY489UL+++9IIU5hIJqzkRDRFX8k4SreWo+eoiTW6zGY1n0Zfkpo/fYnOra//DcxWJTq9VPlit2Es1fGIUJSVx9h4e00FyMqejJBkJemb7CGQPlIrjX58SGVlZSgsVPWpll6SCSs5ES3FkXXYyUx+h5aN8e7IEk+1+fEAyCprFKE8GCivrauBBjsCBUWxsen6/I3fAk13D2WstncaKCvbxTEsfrIyDEiacCRZSfomewhEzOhPmzYNej/9jz/+GGvWrHFOxNUn41511VXo37+/VVwkE1ZyIloFIctgdZnOinWbUVZRWb2NZrwpvZLfsbhJViZft0FWWUIJ6bHAeP00HZh2GtDxd2oF/9aQRhetbgNjFS2ZjBgNWRmBwVUQkqwkfZOrwVtwk1Ur+k8++STOOuss7LfffjjxxBPRpk0b52Xc//znP5gzZw4effRRDB2qtpiz5JJMWMmJaIn8WYWpDf6S1aV1zH28sXljjkKThg2yajv+EFnlJJ/4w77zqqoEvhwHzPmHWsGvUKv5jYHjFgA7dBAfW9Q69J1V1AQyaDxkZRCMDKFIspL0TfYQSB+pVUa/a9eu6NOnDx5//PE6o9IGX6/yL1y4fU9pCwhJJqzkRLRA+qxC1Cb/8FsnY9mazUmf98Pk64bJKis8oT3kK68tPwEfngWseDM2nmY91K46zwIt9gltfFHq2FdWURLGwLGQlYFQUoQkyUrSN9lDIEJGf4cddsBLL72EwYMH1xnVpEmTcMIJJ2DTpk3WsJFMWMmJaA0AF4HGS3T0rcuVwU/cUUf/nS7TKSyoj7bNG2ddqlM7DLJyAcagW3zjtVKdpDzt9+qT3vex0XVRhv+gu4BCVaPPyxcFfGPlSzRsJJ0CZGVPfkiykvRN9hCIkNEvKSnBMcccg8suu6zOqG655Rbn1NwpU9Q/lpZckgkrOREtkT9jmOlW8J88/xAc1LnYN3OfGAxZZURj1A2+8FqgDP3sv6hSHVW2U7AD0FsdiLXb2UaNMwrB+MIqCkJYMAaysgDS9hAlWUn6JnsIRMjo69Kc3//+9/jDH/7grN4n1ug//PDDeOqpp6BPz41fzZo1M5qTZMJKTkSjRfcQ3OJVpRg4bnKdJ3LZUcdN92TlRiVz7vGF10/T1NdDA1Wpzp6xA7Ca72XOACMUiS+sIqSHyUMhK5Pp1IxNkpWkb7KHQISMfuJe+fqwrPilD83SV+Lf6f+uqFAvshl8SSas5EQ0WHJXocXLdRJLdfQKfnu1Zaa+/CzTSRYQWbnCZMxNWfOqVL+f6hf8Mo7vVV1+mwFqO021os8rEAWyZhVINGw0nQJkZU9+SLKS9E32EIiQ0Z8wYUIdM59ueGefbfZX35IJKzkRbZsciXX4ybbL1ON5/7ISdGrVRGRoZCUis2+deOalDf7n1wE/fwiUvFHT7PsWFRvih2i7c8DzvLJ7uFZHL8lK0jdZDSUheKt23YmK6PFxSCas5ES0iVOmnXT0WIIu1amtF1nZlEEed0napF60na62AF75fmyQuhZfn3DLS0QBzi0RmX3phKx8kVGkEUlWkr5JRDyBTmj0BURO1YVkwkpOxBAl9dx1qjp83VAQO+q4CZCs3Khkzj2ueenSnA/PBLb+HAu+20Wxg7AKGpkzmIhH4ppVxHWwYXhkZQOlWIySrCR9kz0E0kdKox8iScmElZyIIUrquetEoy9Zh58uULLyjDHUBzLyqiwDPrsW+OKmWJyFapOAQx5UJ97+NtS487HzjKzyURRDx0xWhoJJEpYkK0nfZA8BGn1jWUkmrORENFbwJIEtXLmh+pRbyTp8Gn2bsiR9rGnn1qZlwNRTVT3+9FgjxQfFdtXZcbfoCGDRSPh70B5YZEVWyRSQ9E32EKDRN5aVZMLyl2bdNND1+d2vVi9Dbr9o9I2dKkYHlt7oLwfe2D9WrrPHX4H91ap+QUOjxxPl4Ph70B66ZEVWNPr+5EDel+7Mnz8fw4cPx/Tp09G0aVOcddZZGDt2LIqKilwrfMkll+D222+H/t9//etfrp+j0XctVSA31q7PXzB2SCAHYHkNnv/AeVUs3Psz8loxSe31u1m91f2bcANl76K1xJQ7NwUyzqvcmufTPiogyUrSN/koUahNWWn0Z8yYgZkzZ2Lp0qWOuW7fvj0+++wzdOjQAcXFxa4FXbNmDXr27Ilu3brhqquugk6gESNG4IwzzsCdd97pqp25c+eib9++0Hv8n3vuuTT6rlQL/ya9mj9r0WoMfeAjJxj94m3XNk3DD0xFIPlL04gBWx5EDV4VPwCfXq5q8O8DilpaPrLohc+5ZQ9TsiKrZArQ6HvPC6uM/tq1azF06FC8+eab0KfebtiwwTH8vXr1cv5en5TrZUX9xhtvxA033IDFixdXf0C47777cNFFF2HJkiVo165dRkUHDhyIkpISPPLII85pvV76l0xY/tL8BWWyLTVNKdvRUZJVxmln1A1xXkf33ISGn6qtMsvWqdX7E4EBLxoVJ4Ph3LIpB/h70B5akqwkfZM9BNJHapXR1yvmkydPxrPPPosDDjjAKa+ZNWuWY/QfffRR3HTTTfjiiy9csxkwYAB22mknvPjiL/8g6w8T+luBhx56COecc07atp544glceeWV0OU/e+21F42+a+XDvTHxBVwdifQ++ZlGL/lLM1Ms/HlmBTZvXIMVr5+B3cpfj93csBXQ5xGg/TGZH+YdogpwbonKnVNnZJWTfKIPS7Ki0feO1iqjrw343XffjdNOOw0VFRUoLCysNvr6A8Cxxx6LjRs3ulZBfwNw4YUXOjX5iZcuBTrzzDOdDw6pLv1twh577IHbbrsNp556Kjp37kyj71r58G6s/QKu3lLzoM7FRtTmx1WR/KUZHomI9LxhISqn/Bb1182JDah1f6DfU8AOHSIywGgNg3PLHp5kRVbJFKDR954XVhn9HXfcEc899xyGDBlSx+i//PLLzgq8rrt3e+kPCrp859JLL63xyN577+3U3esynlTXyJEjnbKhKVOmOLe4Mfrr1693yo3i14oVK9C7d298/fXXznsGQV5btmxxYtXfYjRqlL8H9CxZvQlH3TGjWuo5V5egqKB+kNJ7bpusPEsWygMFy55H4ad/Rr3yDahCPWzZfQSw9yigfoNQ4mGnmRXg3MqskSl3kJUpJDLHIclKG339XuWyZcv+f3vXAS5VkXSLzCNnJaMgKlkBQUBEYUXMWRcUc1xRV8QsYcGIacWwKCgm1F31NysqCIhkBFQkqiQFkRwfSPhv9TiPecOEG+t2zz39fe9zl+lQfU71zLl9q6sD103ZZ25GDaOE/oknnqhCbTh0J3lHv1evXrRp0yb66KOPbCPPQp937Vm0JxY+oNupUycaPnx4yr44PIjDhfhQcKtWVuo8m0J/4MCBNGjQoAP6HDlyJFWtar3uRwkcgdXbiR6cGxNid7XcTQeXCXxIDJCDCBTZt4c65/ejSnt/pnyqSN+W/if9USz2XYACBIAAEAACwSCwbt06uvLKKyH0HcBrlNCfNGkSdevWTe22n3feeSotZv/+/VWMPO/of/3119S6dWvb03cbunPyySdT9erVadiwYQVjtWjRgk499VT1hoAPCnMWnuSCHX3b1ARScdeevdRyyPiCvsf0aU/1quin9CV3RwIBOiKdFtn6M5X44U7acsQjNGH6osi/LTOBdqwtE1iK2QiuwFUqBLCj79wvjBL6PL1vvvmG7rzzTrWbzrv61gTo2GOPpaFDh6r/OikcxsKC/Z133iloxm8FKleunPEwLofpcKaedIVDcRo1apTVFMlYM8Q7EumaNz/ZUcBV1qUTToVfXiWqbO3aV2peaHzwFQ4dbkYFV25QC6cNuAoHdzejSnIlqZvcYKFjG+OEfhxEdiyOx69UqRKVKeNuV5Z33/mPU2lyP1xGjBhB119/vRLy6dJr8kMG7zYkFj4gzOE+N954I7Vr147y8vKy8i3psJILMevEQ6qQKPR1ypsPoR+SQ9gddvc2opk3Ev08iqjCkUQnzyAqXragNdaWXSDDrweuwufArgXgyi5S4deT5EpSN4WPrD8WGCv0/Zh+/MKsxo0bF7owi+P9Ey/M6tq1qxpu7NixaYe1cxg3ubGkw0ouRD+4CaKPRKGvU958CP0g2Papz43zrNeIFxBt+itt78EnWVl1RsdSaP5VsLZ8wlqgG3AlALJPQ4Arn4AU6EaSK0ndJACdyBBGCf1zzjknKyiJOfGzVrYqzJ8/X8X6T548mcqXL0+9e/em+++/X+Xojxe+EIsLp/BMVyD07aAdTh1Oqblq0w76dcOOgptwIfTD4cKYUffts3bwX7R28vsQ7dlBVKQYUYvBRE3usP534fM3kj9yxuCnqaHgSlNiUpgFrsBVKgQg9J37hVFC/4QTTjhghuvXr6eFCxeqrDWc137cuHHOUQiphaTDRvVLM9UtuEw3hH5ITm/CsH9aKXBnWDfcLn09Zm2elfq245tENawc+RAkJjCY1saofg+aSBq4Moc1Sa4kdZM5DGS21Cihn24qHE9/9tln0+DBg1XmG1OKpMNKLkSd8E++BZdt0+0m3GS8osqVNn4z506iHx+OmVPL+j5pP4qodDWIR20Icm8I1pZ77KRbgitpxN2PJ8mVpG5yj4heLXNC6DOknFufc9TPm2fF1BpSJB1WciHqAn+qW3BrV86jmhXztLoJF0JfF4/5y44/rdu1v+hAdMilREf884BQHfClGV8OzIni96ADeLSqCq60oiOjMZJcSeomcxjIbGnOCP2PP/6YLrzwQtq61fqRNqRIOqzkQtQF/uTd/EVDemgt8OO4RZGrUH1m1ybrsO0PRNU77jdj75/WDbclbJkFvmzBpEUlcKUFDbaMAFe2YNKikiRXkrpJC3B9MMIooc8XTiWXXbt2Ed9Ue9NNN6k0m3yo1pQi6bCSC1EH/Lft3E1NB4wpMEXndJrYIQ7RY9bNtLLqXEi0cy1Rj9lE5Q51bEzU1pZjgDRqAK40IiOLKeAKXKVCQFI3mcNAZkuNEvp82yxfkJVc9lkZMurWratux23Vypxr6CUdNkpfmskhO+wvpuzms61R4iq0L1LOqrPIutl69m1E8d37Y60Lsepbot9hAV8OAQuxOrgKEXyHQ4Mrh4CFWF2SK0ndFCKkvg5tlNB/+eWXD5h86dKlqU6dOuqSquLFi/sKTtCdSTqs5EIMGrdM/bPIn7l0fUEaTa47b1B3KlvKHN+ICleh+cmuDURTryBa+V7MBN7F7/gWUdU2rkwCX65gC6URuAoFdleDgitXsIXSSJIrSd0UCpgBDGqM0N+5cyeNGjWKjjvuOGrSpEkAUMh3KemwkgtRHsnYiMnhOvxvJoXsxHGLAldh+QitnWqF6lxkOcuymAn1zic65gWikhVdmwS+XEMn3hBciUPuekBw5Ro68YaSXEnqJnEgAxrQGKHP88/Ly6PPPvuMjj/++IDgkO1W0mElF6IsirHRUoXr6J5GMx1Ouc5VGP6hxlz/LdGYdkT7dlsHbUsRtX6SqNG1VladA8MBndgIvpygFW5dcBUu/k5GB1dO0Aq3riRXkropXFT9G90ood++fXu6/PLL6dprrR/nHCiSDiu5ECWoid92Gx8r8dZb/jfeya9XpawRWXaS8co1riT8wdYYHJf/9dlWhp35RJ3+S1S5pa1m2SqBr2wI6fM5uNKHi2yWgKtsCOnzuSRXkrpJH4S9WWKU0J82bRpdcskl9Mgjj1CPHj2oVClrV87gIumwkgsxaErS3XYbH9fEcJ1EzHKJq6B9IWv/21YQla27v9qujdYOfjGiEuWzNrVbAXzZRSr8euAqfA7sWgCu7CIVfj1JriR1U/jI+mOB9kL/lVdeUbfdVq1alSpXrkz5+fnEKTW5VKhQ4YAsPOvXr/cHGYFeJB1WciEGDd2yddvo+KHjUw5jargOhL7PXrNvb+x22+8HEHX+0LrhtrvPA+zvLpfWVmAgadIxuNKECBtmgCsbIGlSRZIrSd2kCbyezdBe6BcrVoymTJlCxxxzDA0cODBles1EFAYMsH7YDSmSDiu5EIOGP1Hoj76qHfFtt/Gi+623drDJJa7szNf3OvlriCZfQrT681jXNboQdR3nORY/nZ3gy3cGA+sQXAUGre8dgyvfIQ2sQ0muJHVTYIAJd6y90Ofc+VOnTlVCP9eKpMNKLsSgeUq88XZCvy5Uv2rZoIcU7T+XuBIFjgf7/Ssrq05PovzVsaEPvZyojZUvv3hwPgK+xFl2PSC4cg2deENwJQ656wEluZLUTa4B0awhhH6IhEg6rORCDBLS5Ow6EPpBom1Q33v3WBcmDCH64V9WVh0rbIeFfdvniA6xdvYDLrmytgKGSYvuwZUWNNgyAlzZgkmLSpJcSeomLcD1wQgjhH7//v3p0EPtXU3fu3dvH2CR6ULSYSUXYpDoJe7m8zgm3XhrF5dc4crufD3XY5E/vocVqvNFrKtKLWIXYFU8wnPXdjoAX3ZQ0qMOuNKDBztWgCs7KOlRR5IrSd2kB7rerTBC6NudpjUZ2rPH+tE3pEg6rORCDAr+5N1807PrpMMpF7gKygfS9vv9IOvg7cBYXvyjn7B29Pef2wjaFvAVNML+9Q+u/MMy6J7AVdAI+9e/JFeSusk/hMLtyQih/+WXX1Lr1q1tIVWxovsbLm0N4GMlSYeVXIg+QlSoq+RsO7m4m88TzgWugvKBgn73WpdeFSka++PCu/q/Wwdua/4t8KGTBwBf4pC7HhBcuYZOvCG4Eofc9YCSXEnqJteAaNbQCKGPw7jevUZyIXq3NnUPiUI/V3fzIfRteM/2lbEDt7VPI2pyu40GwVbJhbUVLEL69A6u9OEimyXgKhtC+nwuyRWEvnPeIfSdY+ZbC0mHlVyIvgGU1FGuZ9uJTzcXuArKB+jXT4imWudwdq6zdvOLE52+mKhcg8CGs9Mx+LKDkh51wJUePNixAlzZQUmPOpJcSeomPdD1bgWEvncMXfcg6bCSC9E1IBkaRiHbDoR+BgfY+yfR3HuI5g+NVSphhei1f5Go7jlBuJujPk1fW44ma3hlcGUOgeAKXKVCQFI3mcNAZku1F/q5AnTYDmv6l2ZU4vPZT0znyvc1u20Z0aSLiNZNjXVd1bpTo+Ob1k7+Ib4P5aZD8OUGtXDagKtwcHczKrhyg1o4bSS5gtB3zjGEvnPMfGsh6bCSC9E3gBI6SgzbyeX4fAj9JO/59aPYLbd/box9cMStRC0fJCpWMgg3c9Wn6WvL1aQNbQSuzCEOXIGrVAhI6iZzGMhsKYR+iExKOqzJX5pRCtuB0E9akCvfJ5p4FlHJylaozstEdU4PccWmHtrktaUdmAEbBK4CBtjH7sGVj2AG3JUkV5K6KWDYxLqH0BeD+sCBJB1WciH6DWmUwnYg9FN4z6JnYxl2ytbz27V86c/kteULAAZ1Aq7MIQtcgSvs6PvjAxD6/uDoqhcIfXuwRSlsJ/JCf/nbRKs+JzpmuJVVp4g9Bwm5FgRJyAQ4GB5cOQAr5KrgKmQCHAwvyZWkbnIAgdZVIfRDpEfSYSUXol+QcsjO8vXbqNvjEwu6nNCvC9WvWtavIbTsx0SuPAO5J5/oWyv+fvFzsa7ajSBqeKXnbiU6iCRfEsAGMAa4CgDUgLoEVwEBG0C3klxJ6qYAoAqlSwj9UGCPDSrpsJIL0SukqQR+vM9cvQ03ETOTuPLKtWq/eZGVVecCoo1zY93VOJ6ow2iiMrV86T7oTiLHV9CABtg/uAoQXJ+7Blc+Axpgd5JcSeqmACET7RpCXxTuwoNJOqzkQvQCKYv8Ex8bTys37Digm3mDulPZUtYlSTleTOHKFxp+eZ1oxrVEu7dZ3VmhOs3ui/0VNYfnSPHlC+nhdQKuwsPe6cjgyili4dWX5EpSN4WHqL8jQ+j7i6ej3iQdVnIhOgIhqXLywVv+mNNp1qtSlkoWL+qla2PamsKVJ0B3byeadRPRTyNj3ZQ+yNrFt0T/wV09dRtG40jwFQawAYwJrgIANaAuwVVAwAbQrSRXkropAKhC6RJCPxTYY4NKOqzkQvQCaaLQH31VO2rToEpkBH4cN1O48sKzCtf57OjYTv7B3YiOfY0ozxL7BpZI8GUgL6lMBlfmEAmuwFUqBCR1kzkMZLYUQj9EJiUd1pQvzUShH4WDt5EWI79Y4n7bUqImd1mhOsVCXInehjZlbXmbZW60Blfm8AiuwBWEvj8+AKHvD46ueoHQPxA2CH2inPyB+3Mr0Y8PEzW9m6h4nqv1omujnORLV7A92gWuPAIo2BxcCYLtcShJriR1k0dYtGkOoR8iFZIOK7kQvUAKoZ+DQn/Dd0TfXGhl11lA1Mg6eHvMf7y4iHZtTVlb2gEXgkHgKgTQXQ4JrlwCF0IzSa4kdVMIUAYyJIR+ILDa61TSYSUXor3Zp64FoZ9DQn/fPuuw7QvWodubiThPfhErPKflA0RH9jPmMiw7vmzK2rIzl1yvA67MYRhcgatUCEjqJnMYyGwphH6ITEo6rM5fmpxSc9WmWDrNX620mj1HTFP/GzH6J1FenqFhLn9uJppu7d4vezO2wsrUJepo/e/qHUJcccEMrfPaCmbG5vYKrszhDlyBKwh9f3wAQt8fHF31EmWhHxf3f+7ZW+jm20QgIfQNFfrrZ8cuwNq6JEZn7dOJ2o8iKlXF1TrRvREEie4M7bcPXIErcxAwx1LJdSWpm8xhILOlEPohMinpsJILMRukmS7FiretUzmPxvXtErnUmjx/nbjKxuUBn+/bS/RJc6JNP1qZdEoQtbIO4B5+S06F6iTP2Wi+HBNsdgNwZQ5/4ApcYUffHx+A0PcHR1e9RFXop7oUiwHki7FKFItdilWzYl4kRb7xQp8nsH4W0eRe1i7+K0TVjnG1NkxqBEFiDlvgClyZg4A5lkquK0ndZA4D2NHXlitJh5VciNkAT74Uq7a1ex9lYW/8DvG6GbGbbcvW2z+VvXuMzo2fzYcTP9dpbTmxO4p1wZU5rIMrcIUdfX98ADv6/uDoqhcI/egeuM3kMMb8wHFWnYX/JppzO1GVNkTdJsTCdSJWjOErYrykmi64MscJwBW4gtD3xwcg9P3B0VUvEPoQ+saKkZ3riaZebqVJ+iA2hXKNiLqOLbyr72pVmNcIgsQczsAVuDIHAXMslVxXkrrJHAYyWwqhHyKTkg4ruRCzQYpc+ZkR0omrlJb+Mdm6AOsiou0rYh/X/7t1CdZwohLls1Gfk59rz1dOou5uUuDKHW5htAJXYaDubkxJriR1kzs09GsFoR8iJ5IOK7kQs0G6ZM2WgpSaUU2hmQkjnbgqZCdn1Jk/lGjuPUT7rBj8YqWJWg8janhlTmfVyebP2vKVzfAIfg6uzCEdXIGrVAhI6iZzGMCOvpu6zAEAACAASURBVLZcSTqsLl+anFqz8b2fFnACoX+ge+rC1QGWfT+I6PuBsX+ucARRp/8SVbJSaUa8aMtXxHlJNX1wZY5TgCtwBaHvjw9gR98fHF31EkWhn5xac9GQHpFNo5nOabT9gcv/g+jTVkQHdyNq84wVqlPOld/nWiNt+co1oH2YD7jyAUShLsCVENA+DCPJlaRu8gEaLbqA0A+RBkmHlVyImSBNFPqcN79RjWjGdWfCSBeuiFNkbl9mHbQ9dL+5O34nyrNSaaIUIKANX+AkKwLgKitE2lQAV9pQkdUQSa4kdVPWiRtSAUI/RKIkHVZyIdoV+gjbSY2UFlztWG1denUx0Wbrhtsec6w8+TVCXCl6D60FX3pDpI114EobKrIaAq6yQqRNBUmuJHWTNgB7NARC3yOAXppLOqzkQoTQ9+IVRKFztdpKk8k32+Zbu/dcWj9FdHgfb5PK4dah85XD2Po9NXDlN6LB9QeugsPW754luZLUTX7jFFZ/EPphIW+NK+mwkgsRQt+bU4XGFYfq/PAv62+wNQHrMqziVgw+p81s0NPbhHK8dWh85TiuQUwPXAWBajB9gqtgcA2iV0muJHVTEFiF0SeEfhio/zWmpMNKLkQIfW9OFQpX23+zdvEtQb/Gut2WS6WWsaw6FRp7m0wEWofCVwRwDWKK4CoIVIPpE1wFg2sQvUpyJambgsAqjD4h9MNAHUJfIYAY/dTOJ/mlqSzYtIDoy+OIdq6NGXTYDURHPxbLk4+SFQFxvrJahArpEABX5vgGuAJXqRCA0HfuFxD6zjHzrYWkw+rypYlbcbO7jzhXe3cTje1CtPF7onYjiOqdn91I1ChAQJwvYO8aAXDlGjrxhuBKHHLXA0pyJambXAOiWUMI/RAJkXRYyYWYCVLcipvd4US42pNfeMd++0qiPTuJyjfMbiBqFEJAhC9g7gsC4MoXGEU6AVciMPsyiCRXkrrJF3A06ARCP0QSJB1WciGmgxS34tpztsC5+vUjounXEHX+gKhqG3tGoVZaBALnC9j7hgC48g3KwDsCV4FD7NsAklxJ6ibfAAq5Iwj9EAmQdFjJhZgKUhb5M5eup54jphV8jFtxUztfYFzt2UU09y6iBY/HBq7Smqj7DKIiRUJcBeYPHRhf5kOj3QzAlXaU4AHaHEq04EpSN+UANWoKEPohMinpsGH+wLHIP/Gx8bRyw44CtHErbnrHC4Srrb8QfXMR0brpsYGrtrey6rxJVLZ+iCsgN4YOhK/cgEa7WYAr7SjRQjyag4qelkquK0ndpCfazq2C0HeOmW8tJB1WciEmA5R4AJc/q1M5j8b17UIlixf1Dctc6sh3rla8SzT1CqI/N8VgOvJ2opZDiIqWyCXYQpuL73yFNpPcHxhcmcMxuAJXqRCQ1E3mMJDZUgj9EJmUdNgwvzQTD+COvqodtWlQBSI/g9/5xtW+vUSzbiZa9HRstFJVidq/QlT7lBC9PveG9o2v3INGuxmBK+0oSWsQuAJXEPr++ACEvj84uuolCkIfB3Cdu4avP3AzrJz4i58jqt6JqOMbRGXqODcILTIi4CtfwDpQBMBVoPD62jm48hXOQDuT5EpSNwUKmmDnEPqCYCcPJemwkgsxcZ7JYTs4gJvd4XzlitNoLh5O1PgfVqhO8eyDo4ZjBHzly/HoaOAEAXDlBK1w64KrcPF3MrokV5K6yQkGOteF0A+RHUmHlVyIiZAmhu3gAK49Z3PN1W7rsPO3txBV60B06KX2BkMtzwi45svzyOjAKQLgyili4dUHV+Fh73RkSa4kdZNTHHStD6EfIjOSDiu5EBlSDtlZvn4bdXt8YgHCE/p1ofpVy4aIuBlDu+Jq0wIrq84Fsdtti5UhOuU7XH4lRLcrvoRswzCFEQBX5ngEuAJXqRCQ1E3mMJDZUgj9EJmUdFjJL81U6TQZZoTt2HM2x1z98irRjOuJdm+zBrBy4jcfQNT0XitUp5i9AVHLEwKO+fI0Ghp7QQBceUFPti24ksXby2iSXEnqJi+Y6NQWQj9ENiQdVnIhJsflM8TzBnWnsqUQI27H3WxzxcJ+5o1EP4+KdVv6YOvA7Wiig06wMwzq+ISAbb58Gg/duEcAXLnHTroluJJG3P14klxJ6ib3iOjVEkI/RD4kHVZyISYKfaTTdO5gtrjaOC8WqrPpx9gAB59E1MHa2S9dw/mAaOEJAVt8eRoBjf1CAFz5hWTw/YCr4DH2awRJriR1k1/4hN0PhH6IDEg6rORCTDyAi7h85w5mi6ufRhJNu8qK1LHCc1oMJmpyh/W/cQGZc7S9t7DFl/dh0IMPCIArH0AU6gJcCQHtwzCSXEnqJh+g0aKLyAv9BQsWUJ8+fWjy5MlUvnx56t27Nw0ZMoRKliyZlqCFCxfSsGHDaNy4cbR06VI66KCD6OSTT6bBgwdTtWrVbBMr6bBSCxF5823Tn7aiLa727SOafZt1zfDZRDWsHPkooSFgi6/QrMPAiQiAK3P8AVyBq1QISOomcxjIbGmkhf6GDRuoadOmdNhhh9Hdd99N7EC33norXXzxxfT003/dJpoCP/7shRdeoCuuuIJatmxJy5Yto/79+1PZsmVpzpw5GR8SEruTdFipL83E3XyeKw7gOv+qSMnVhrlEqz6L7dyjaIWA1NrSatKGGgOuzCEOXIErCH1/fCDSQv/BBx+kBx54QAn1KlWqKESff/55uuGGG2j58uVUq1atlCivW7dO1bfAK/ic3wh07NiR3nvvPTrzzDNtsZNrQj95Nx958225wQGVCv3AlS5NtMS68GqWlR9/706i4/6PqO5Z7jpGq0AQgCAJBNZAOgVXgcAaSKfgKhBYA+lUkitJ3RQIWCF0Gmmh37lzZxVq8+677xZAv3HjRiXiX3zxRbrssstsU8KOXqZMGXr22Wfp+uutVIc2iqTDSixE3IJrg3QbVQq4OqEd5X13M9Hy/8Zala1vZdV5y7oQq52NXlBFCgGJtSU1l1wfB1yZwzC4AlepEJDUTeYwkNnSSAv9GjVq0DXXXKNi8hNL7dq16ZJLLqGHHnrINs+ff/45de/enb766ivq0qWLrXaSDivxpYlbcG3RnrUSczX902fpuGLPUNFtv8Tq17F28du/SFSyctb2qCCLgMTakp1R7o4GrszhFlyBKwh9f3wg0kK/RIkSxOE7t91mHWpMKM2aNaMOHTqoMB47JT8/n9q1a0fc34wZMwqF9CS237x5M23ZsqXgn1atWkVt27alxYsXEz9cBFnYxokTJxK/xSjN4SA+l1179lLLIeMLeh3Tpz3Vq2Ld0IriDAHrkO2+hU9R6fn3UVHaTfuKlqQ/mz1Iew69zsqqsz9UzFmnqB0kAkGvrSBtj1rf4MocxsEVuEon9Plc5cqVKwPXTeYwkNnSyAt93rXv27dvIZT4gG6nTp1o+HArNtpG4RAfDv+ZMmWKOtybrgwcOJAGDRp0wMcjR46kqlWr2hhJ3ypr84kGz95/IdZj7XZTcWR7dExYub0r6IQdt1gifw9tK3IQzSjVjzYVa+S4HzQAAkAACAABIJBrCPAZySuvvBJC3wGxkRb6foTu3HvvvfTwww/TRx99pEJ3MpVc3tH/6Y9tdNqz09T0P7qhHTWsXtaBG6JqIgL7fhxKG5aMoTInjKbS5XEBlu7egZ1H3Rnabx+4AlfmIGCOpZLrikOesaPvzDciLfQ5jKV69er0zjvvFKC2adMmqly5sq3DuJxL/+abb6aXXnqJLr30UmfIW7VzJUYfufMdU7+/wb69RMveJKp3IVFR6/Irq+zYvp34zMdJ1oNjXl6eh87RVAIBxBJLoOzPGODKHxwlegFXEij7M4YkV5K6yR90wu8l0kKf4/P5j1NpVqpUSbExYsQIlTWHU26mS6/J9d544w3q1auXan/HHe5ym0s6bJALEbnzXS7kneuIplgPiL99TNSsv3XDbSysK0iuXFqKZhkQAF/muAe4AlfmIGCOpZLrSlI3mcNAZksjLfTjF2Y1bty40IVZLOATL8zq2rWrQnHs2LHqvxMmTKC//e1vdNxxx9H9999fCOE6deoQ/9kpkg4b1EJE7nw7TKeos2YS0eS/E21fGfvwkN5WVp1R6sBtUFy5tBTNsiAAvsxxEXAFrsxBwBxLJdeVpG4yhwEI/YwIzJ8/n/r06UN84VX58uWpd+/eSryXLFmyoF08Xeb48ePVv6U7VMufDRgwQH1up0g6bFALEbnz7TCdUIdDdX58mOi7+4j27SEqZoXmtLFuYT708oKsOkFx5dBSVLeJAPiyCZQG1cCVBiTYNAFc2QRKg2qSXEnqJg2g9cWESO/o+4Kgh04kHTaohZgo9HETbhZnyF9j7eJfQrT681jFik2sC7Csy7AqFc7UFBRXHlwVTTMgAL7McQ9wBa7MQcAcSyXXlaRuMoeBzJZC6IfIpKTDBrUQE+PzJ/TrQvWrIttOSpey8uPTZ62JNsyOfcw7+G2GERU/EK+guArR1XN6aPBlDr3gClyZg4A5lkquK0ndZA4DEPraciXpsEEsxG07d1PTAWMK8IXQz+Jqq78kmngOUdtnrJh8a2c/TQmCK20XQQ4YBr7MIRFcgStzEDDHUsl1JambzGEAQl9briQd1s+FyAdwl6/fRt0en1gI20VDelBJ3JK1H5Mdq6yUmdZZj1IJl6HtXG/9/yoZfdJPrrR1/hwyDHyZQya4AlfmIGCOpZLrSlI3mcMAhL62XEk6rF8LkUX+iY+Np5UbdhTCdd6g7lS21P6bcbUFXcqwVV9YqTMvJqrajqjz+wUHbe0M7xdXdsZCHe8IgC/vGEr1AK6kkPY+DrjyjqFUD5JcSeomKfyCHgcx+kEjnKF/SYf1ayEm58zn6UHkJ5C8dzfR9wMtUB6w/tGKyy9enqj7dOvg7RG2Pc0vrmwPiIqeEABfnuATbQyuROH2NBi48gSfaGNJriR1kyiIAQ4GoR8guNm6lnRYPxZics780Ve1ozYNqiBcJ04058T/pifRH1/H/qXy0USd3iIq3yibKxT63A+uHA2Iyp4QAF+e4BNtDK5E4fY0GLjyBJ9oY0muJHWTKIgBDgahHyC42bqWdFg/FiJuwM3A6K+fEE21Lr3i2265NO5DdNRQK09+qWxucMDnfnDleFA0cI0A+HINnXhDcCUOuesBwZVr6MQbSnIlqZvEgQxoQAj9gIC1062kw3pdiMkZdpAzP4Hhxc8Rzbgh9g8lKlo33L5IVNfKruOyeOXK5bBo5hIB8OUSuBCagasQQHc5JLhyCVwIzSS5ktRNIUAZyJAQ+oHAaq9TSYf1shCTQ3Z4dsiwk8Dx1l+IPj3KCtFpHAvVKXeIPQdIU8sLV54GRmNXCIAvV7CF0ghchQK7q0HBlSvYQmkkyZWkbgoFzAAGhdAPAFS7XUo6rNOFyOJ+1aZYZp1frQw7PUdMK5gWDt9aUPy51dq9L7ef6g1ziCpYN90Ws9JpeixOufI4HJp7RAB8eQRQsDm4EgTb41DgyiOAgs0luZLUTYIQBjoUhH6g8GbuXNJhnSzEdCk0eTaRD9nZs5No9u1Eq62LwrrPsMS+lVXH5+KEK5+HRncuEABfLkALqQm4Cgl4F8OCKxeghdREkitJ3RQSnL4PC6HvO6T2O5R0WCcLcdm6bXT80PEHTKRO5Twa17dLdLPsbPnJyqpzIdH6WTFsmv/L+rvPPuE2azrhymaXqBYgAuArQHB97hpc+QxogN2BqwDB9blrSa4kdZPPMIXWHYR+aNBbITG//kp16tShlStXUu3atQO1xMlCTBT6nEKztiXwudSsmBddkb/8f0TTrrJCdjbHeGpyJ1ELS+gXLeE7b0648n1wdOgYAfDlGLLQGoCr0KB3PDC4cgxZaA0kuZLUTaEB6vPAEPo+A+qkO0mHdbIQE4X+hH5dqH7Vsk6mlVt19+QTfXsrEWfW4VKqGtGxrxLVOjmweTrhKjAj0LFtBMCXbahCrwiuQqfAtgHgyjZUoVeU5EpSN4UOrE8GQOj7BKSbbiQd1slChND/i81tK4gmnkHEB2251OhM1GE0URl93r648Tu08RcBJ2vL35HRm1MEwJVTxMKrD67Cw97pyJJcSeompzjoWh9CP0RmJB3WyUKE0P/LKXZvIxpzDNGm+UTN7rX++luhOsUD9xgnXAVuDAbIigD4ygqRNhXAlTZUZDUEXGWFSJsKklxJ6iZtAPZoCIS+RwC9NJd0WCcLMdJCf98+oiJF9tO6cR5R/iqig7t5odpRWydcOeoYlQNBAHwFAmsgnYKrQGANpFNwFQisgXQqyZWkbgoErBA6hdAPAfT4kJIO62QhLlmzhbo9PlGZGakY/U0/xg7ctn/Zyol/WGie4YSr0IzEwAUIgC9znAFcgStzEDDHUsl1JambzGEgs6UQ+iEyKemwdhdi8i24kRH6P48imvEPoj3biaq0tXLkT7V29ouG4h12uQrFOAx6AALgyxynAFfgyhwEzLFUcl1J6iZzGIDQ15YrSYe1uxCTc+gvGtIjt1Nq8g23My2B/8srMT/JqxU7cHvQ8aH5jV2uQjMQAxdCAHyZ4xDgClyZg4A5lkquK0ndZA4DEPraciXpsHYXYqLQz/lbcDd8F7sAa/OCmI/UtFJmHmsJ/tLVQ/UZu1yFaiQGL0AAfJnjDOAKXJmDgDmWSq4rSd1kDgMQ+tpyJemwdhdiJOLz+cDtTy8QzbrZCtWx8uQXKUbU8gGiI28LLVwn0UntcqWtY0fMMPBlDuHgClyZg4A5lkquK0ndZA4DEPraciXpsHYW4radu6npgDEFeOVsfD4L/UnnE614x8qJX5eo45tE1Tto4yd2uNLGWBhC4MscJwBX4MocBMyxVHJdSeomcxiA0NeWK0mHzbYQkw/hMmg5HZ+/ayPRnDutnfz7rdtuq2rlI9m40spYGAOhb5APYG2ZQxa4AlepEJDUTeYwAKGvLVeSDpvpS5NF/syl66nniGkFWM0b1J3Klgr+cigRcngHf/GzROUOJarVQ2RIL4PgB84LevJtwZc85m5HBFdukZNvB67kMXc7oiRXkrrJLR66tUN6zRAZkXTYdAuRRf6Jj42nlRt2FCCRU4dweeeec+NzmA7v3PeYY4Xr1AmR9exDS35pZrcGNbIhAL6yIaTP5+BKHy6yWQKusiGkz+eSXEnqJn0Q9mYJhL43/Dy1lnTYdAsxOZ1mncp5NK5vl9xIqbl2eiyrzralMZ7qnkPUbiRRyUqeeAu6seSXZtBziUL/4MsclsEVuDIHAXMslVxXkrrJHAYyWwqhHyKTkg5rR+iPvqodtWlQxXyRz6E6C5+0YvDvINr7J1HRkkRHP0502A1WVp0iITJub2jJL017FqFWJgTAlzn+Aa7AlTkImGOp5LqS1E3mMAChry1Xkg5rR+jnRJadneuJpl5O9OsHMd7LNSLq9F/rttujtPWDZMMkvzSNAUVjQ8GXxuQkmQauwJU5CJhjqeS6ktRN5jAAoa8tV5IOGxmhv8Dayf/2nzHO619EdMxwohIVtPWBVIZJfmkaBYymxoIvTYlJYRa4AlfmIGCOpZLrSlI3mcMAhL62XEk6bGSE/t49RF9bsfi1TyNqaB3CNSBUBzv62i5RW4ZJ/sjZMgiV0iIArsxxDnAFrlIhIKmbzGEAQl9briQdNmeFfv4fRGvGE9WzLsCKF47RN1Dgx83HD5y2SzalYeDLHL7AFbgyBwFzLJVcV5K6yRwGIPS15UrSYdMtxCVrtlC3xycqjIyL0V9j2f3N34nyVxN1tcR+jeO05dqJYZJfmk7sQt3UCIAvczwDXIErcxAwx1LJdSWpm8xhAEJfW64kHTbVQky+DdcYoc/hOT8+SPT9AKJ9e4mKlSE6dlThXX1tWc9umOSXZnZrUCMbAuArG0L6fA6u9OEimyXgKhtC+nwuyZWkbtIHYW+WIL2mN/w8tZZ02FQLMTmH/qIhPfRPrbnD2r2ffDHR72Nj2FdsZmXVecv6bxNPXOjUWPJLU6d5m2oL+DKHOXAFrsxBwBxLJdeVpG4yhwHs6GvLlaTDZhP6RtyGu9oS95N7WaE6v8c45cO2rf9NVNza0c+hIvmlmUOwhTYV8BUa9I4HBleOIQutAbgKDXrHA0tyJambHAOhaQPs6IdIjKTDZhP62oftbFlC9NHhsVCd4uViaTMb9AyRveCGlvzSDG4W0ekZfJnDNbgCV+YgYI6lkutKUjeZwwB29LXlStJhjRf6zOLsfkSrvohdgFWhsba8ejVM8kvTq61oTwS+zPECcAWuzEHAHEsl15WkbjKHAQh9bbmSdFgjhf76WUSVj96fKnPvn9aOvnUQt1hpbTn1wzDJL00/7I16H+DLHA8AV+DKHATMsVRyXUnqJnMYgNDXlitJhzVK6LOg/+4+K7POw0RtniFqfIO2HAZhmOSXZhD2R61P8GUO4+AKXJmDgDmWSq4rSd1kDgMQ+tpyJemwqRailjn0t62wcuNfRLR2coy36h2Juln58osU1ZZHvw2T/NL02/Yo9ge+zGEdXIErcxAwx1LJdSWpm8xhAEJfW64kHTZ5IWqZQ3/lh0RTLyPatT7G2eE3E7WydvWLldKWwyAMk/zSDML+qPUJvsxhHFyBK3MQMMdSyXUlqZvMYQBCX1uuJB02eSFqlUN/zy6iuXcRLXg8xlWJSkTtXyKqe5a23AVpmOSXZpDziErf4MscpsEVuDIHAXMslVxXkrrJHAYg9LXlStJhMwn9UHPo79tH9NVJRKu/jPFUtb2VVedNorL1teUtaMMkvzSDnksU+gdf5rAMrsCVOQiYY6nkupLUTeYwAKGvLVeSDptJ6IeeQ3/pG9ZFWFZO/COt9Jkt7ycqWkJbziQMk/zSlJhPro8BvsxhGFyBK3MQMMdSyXUlqZvMYQBCX1uuJB1WK6G/Z+dfF1/l7edmw3dWKs0W2nIlaZjkl6bkvHJ1LPBlDrPgClyZg4A5lkquK0ndZA4DEPraciXpsNoIfb7hdtIFRFWs/PjtRmjLTZiGSX5phjnPXBkbfJnDJLgCV+YgYI6lkutKUjeZwwCEvrZcSTqsFkJ/qRV7P/0aot1bLE6KEPWYg138FN4p+aWp7eIwyDDwZQ5Z4ApcmYOAOZZKritJ3WQOAxD62nIl6bChCv3dO4i+vYVoyfMxLkrXIDr2NaKaf9OWmzANk/zSDHOeuTI2+DKHSXAFrsxBwBxLJdeVpG4yhwEIfW25knTY0IT+pgXWBVhWqM7G72M8HHQCUYfXifJqastL2IZJfmmGPddcGB98mcMiuAJX5iBgjqWS60pSN5nDAIS+tlxJOmwoQn/Fe0RTLrZCdbZZHFihOs0HEDW918qqU0xbTnQwTPJLU4f5mm4D+DKHQXAFrsxBwBxLJdeVpG4yhwEIfW25knTYUIT+BisGf4yVF79kZaKOo2O7+ShZEZD80sxqDCpkRQB8ZYVImwrgShsqshoCrrJCpE0FSa4kdZM2AHs0pAiXfVbx2A+au0BA0mETF2KxEqVo5tL11HPENGW1r3n02ZWKWLv38fLrR1aGnbZWqM5BLhCKZhPJL81oIuzvrMGXv3gG2Ru4ChJdf/sGV/7iGWRvklxJ6qYgMZPsG0JfEu2ksSQdNr4Qu3TtRqc+M41WbrAOyP5VfBH6LPB/foloqXXItstnRMVKhois2UNLfmmajZQe1oMvPXiwYwW4soOSHnXAlR482LFCkitJ3WRn7ibUgdAPkSVJh40vxCPadKLuw6YWzLpO5Twa17cLlSxe1D0Sf1rpMmdcb4l865Atl+YDY/H4KK4QkPzSdGUgGhVCAHyZ4xDgClyZg4A5lkquK0ndZA4DmS2F0A+RSUmHTSX0R1/Vjto0qOJN5G+YG7sAa8uiGJK1TiVqP8pKoVktRGTNHlryS9NspPSwHnzpwYMdK8CVHZT0qAOu9ODBjhWSXEnqJjtzN6EOhH6ILEk6bCqh7ylkh0N1lgwnmmXlx9+704rLL07U6iGiI/5p/W8PbwdC5EOXoSW/NHWZs8l2gC9z2ANX4MocBMyxVHJdSeomcxjAjr62XEk6rK9Cf9em2A23y/8bw7ZsfSurjnXrbTUrww6KZwQkvzQ9G4sOCHyZ4wTgClyZg4A5lkquK0ndZA4DEPraciXpsL4K/Z3riD5tRbR9JVGds6xQnRdjKTRRfEFA8kvTF4Mj3gn4MscBwFVwXHHyvrVr11J+fj7t3bvX80C7d++mlStXUp06dah4ceuNMYq2CPjFVdGiRal06dJUrVo1K3lfQva+hJlL6iZtAXdoGEJ3HALmZ3VJh/VV6DMIf3xDtH4WUeM+hdNp+glQRPuCGDGLePBlDl/gKhiuWOTz79mWLVuoZMmSVKxYsbRCza4F3OeuXbtUf+lEn92+UC9YBPzgivvYs2eP4rx8+fJUu3btlLxL6qZgUZPrHUJfDusDRpJ02PgPXMOjOtJpzzrMn79rA9HsfkQthlj58A8OEbFoDA0xYhbP4MscvsBVMFz98ccfaje/Ro0aVLVqVV8G4bcCmzdvpgoVKhDv9KLoi4CfXK1bt47WrFmjdvWrV68eqm7SF3FnlkHoO8PL19rSQv+Tzz6nvtP2vwK1dRh3rfVQ8M2FRNuWWTfbdiU68XMctvXVCw7sDGIkYIB97h58+QxogN2Bq2DAXbFihdqJbdiwoW8D+CkefTMKHaVEwG+ufvrpJ/Ump27duhD6PvgchL4PILrtQlroj/7gcxo8e7/QXzSkR/rUmvusGMsFTxDNuZNo326ioqWIWj9J1OhahOq4JdxmO4gRm0BpUg18aUKEDTPAlQ2QXFRZtmwZcehFgwYNXLRO3cRv8eibYejoAAT85mrp0qUqbKd+fSvRR1KR1E25QjWEfohMSjos/8C98t7n9ODcmND/8tbO1KhG+dSz58O2Uy4l+u3j2OflGxN1sjLsVG4ZIlrRGRpixCyuJR5fowAAIABJREFUwZc5fIGrYLhioc8llTBzO6Lf4tGtHWiXHQG/ucrkT5K6KfvMzagBoR8iT5IOu2nrNmo5ZHzBbNOG7ayZRDT577GMOlwa9CJq+xxRiTQPBSHil6tDQ4yYxSz4MocvcBUMVxD6weBqSq8Q+nozBaEfIj+SQn/hr+uo+7CpBbNNGbbDl2CN60b0+ziiYnlEbZ4mOvRyhOoI+wjEiDDgHocDXx4BFGwOroIBG0I/GFy99vrhhx/SvffeSwsXLqR69erRXXfdRZdfbv2mZyiXXXYZvfzyyylrPPjgg3TnnVY4r1W++OILevHFF2nKlCnE/N9xxx30wAMPZDw4ffPNN9NTTz1F/N8nn7RCgdMU7Oh7Zb5wewh9f/F01FtYQj9j2M7236wd/Z6WyH+GqFJTR/NBZX8QgBjxB0epXsCXFNLexwFX3jFM1QOEfjC4eul10qRJ1KVLF7rqqqvowgsvpHHjxtH9999P//3vf+m8885L2zUfhOUsSonlrbfeUsJ8zpw51LJlLIS3b9++NGbMGGrfvj29/vrrSrxnEvrff/89dejQQT0I8MMGhL4Xdp21jbzQX7BgAfXp04cmT56scrf27t2bhgwZok58ZyqcYeCee+6hV199VeUOZgd++umn6fDDD7fNQFhCv1DYzu/jrd37MtattsfYthsVg0UAYiRYfP3uHXz5jWhw/YGrYLCF0A8GVy+9du/enbZu3UrffGPdefNX6dmzpxLrP/74o6Ou+YGBxf+8efMK2nG4TjztaaVKlei6667LKPSPP/549eDBbwvOOussCH1HDHirHGmhv2HDBmratCkddthhdPfdd6sLP2699Va6+OKLlWjPVNip33zzTXr88cfVxQ78pPzzzz+rhVCxYkVbrIQq9CuXJppn5cX/4V9EZawUVj1m43ZbW6wFXwliJHiM/RwBfPmJZrB9gatg8M0loc+hKLwzPXPmTLWJ17hxY7Wpd+655xaAN3DgQCVUN27cWAhQzjqULGI5fIb7mzt3rrr1tXXr1jRs2DA64ogjgiHD6nXnzp1q4/LRRx+lm266qWCcDz74gM4880z65ZdfbGdIYp3CYT+DBw9WOilVySb0ecefw4Z4Y7VJkyYQ+oExn7rjSAt9jjfjBchfUlWqVFEIPf/883TDDTfQ8uXLqVatWilR42u5eUE/99xzdPXVV6s669evV4uhf//+dPvtt9uiUVLo/7B87f6Lsvo0pfoLrozF4nOp1Jyo8/tE5Q6xZTcqBYsAxEiw+PrdO/jyG9Hg+gNXwWCbSuj/uWcv/bZxh+sBeceYd6TLlSvn6cKsWpXyqEQx+xdu8QYe//43b95cvdn/6quviLXCe++9R6effrqaj12hP3r0aLVxeM4559All1yibgyeOHEinXLKKWp3O1WJ3xCbDbhMtw/zjj1vYnIcfbdu1rm7v8rixYvVg8unn35KJ598crYh1Of8sNCvXz+1kXnIIak1Qiahzw9LHOnwxBNPqBCiVA9DyYYgRt8WNbYrRVrod+7cWd2+9u677xYAxk/oLPr5kAkfSklV+DOOe2Nxzw4eL7yY+d/Gjx9viwApob9r915qfO+nBTZNaHEH1ae/XsFxXvyjrXz5xa3DtyhaIAAxogUNto0AX7ahCr0iuAqGglTCbNm6bXT8UHu/hcFYFevV1sWQaQzghw3+69WrF7Hv8I44FztCn9vx5h/HtH/88V+pqm1MlPXDCSeckLUmP4Cke1jgcJ1OnTrRjBkzqE2bNgV98e3FfNss77BzGI+dcvTRR6s3ERzenK5kEvocy8928AMOFwh9O6j7WyfSQp+v677mmmtUTH5i4VAcfvp+6KGHUqLNO/b8pM47+4mFX++NHDmSVq9ebYslKaGf/IW7qNlZ1k6FJeyPed5adRfZshWV5BCAGJHD2o+RwJcfKMr0Aa6CwTmXhD5v1vGbeRb1v/32G+3Zs0eBxrvSHHpiV+jPnz9fham88847akffbuEdcM6Sk62wPRyek6rEhT6HH3GoULxwnD3rHtYvf/+7lUY7S+H5HnnkkSrU6MYbb0xbO53Q5zcL/KAwdepUatWqlWoPoZ8Ndf8/j7TQL1GihHold9tttxVCtlmzZupwLYfxpCocrsNxfD/88EOhj/kVF8ew8UHdVGXz5s0q5i9eVq1aRW3btiV+ncYPF0GV5eu3F6TW/LLxdXTowdVoV9tXaV85/64rD8r2KPabn5+vdj/4jRPvpKDojQD40pufROvAVTBcsSDmUBLewY4X76E7+2j79m1UpkxZK3SniGvDnYbunHHGGWoH+r777lMil8X00KFD1b9x+AqXQYMG0b///W/1Bj+xHHrooSoGnsNUOOsNH0Bl0c2ZaewWv0J3OPSIs+Ikh+7w2QB+w2AndIcfeB5++GFasWKFekBIVzgKgs8t8qZp/IAu1+3Ro4d6g8ApNeOFBT+HLnHYdIUKFVKGZXHoFD9gpQqf5g1SPlfJG61B6ia7fJlQL/JCn3ft+dVSYuHYNn7tNXz48JQcstDnJ1ROF5VY+MuAc9byQZhUhV/38RdEcuG3AFWrVg3MX9bmEw2eHbsR99Wmr9HG8ufS3iIlAhsPHQMBIAAEgEB0EOAd3Zo1a2YUgyagwQ+CLB5ZF8TP37HdHGf/3XffqT8uLOT5954fcBILP+hwmA9vIPKuPAv8V155pSC23w4G/IAQPwuQqT4f8mWdkqqwBqlbt64S3hy1EC8cm88hO3wwOPGhLN04vBvPDy9vv/12RtP5RuTrr7++IMd+vHKLFi3UQ0K6MmvWLNV/clmzZg3xRmjyYWeut27dOrryyish9O040191Ii30pUN3wtrR552VpWs208zpk+i0bidS+bJWOk0UbRHArqO21KQ0DHyZwxe4CoarVDv6Xkfy6zCuEzs2bdqkzuj95z//KRD6LCxZjPJmXHxH/7XXXqNLL72UOOc8h6Jw4bf8LLw5yw0/CLD9/BnvYMdj++3Y4kfoDo/DO/YcqjZhwoSCYTkkefbs2QdEI6Sya9q0aSqyYdSoUSqUOVNJt6PPG6K85hILP2h07NiR/vGPf1C7du0oL+/A84HY0bfjKfbrRFroc2gEv1biGLp44YVeuXJlW4dxOT1nYipNTr/FXwq6HcbluSE21f6iCLsmuAqbAWfjgy9neIVZG1wFg34updfkw6v8O86huJZAUrvi/FvPITVLly5VAPLnvIvNobd8Uyyfy+Mdft69TrwMimPheYf//PPPV28FOFz466+/ppNOOintQVq/GIpfmMU7+hdccIHKHsQpMpMvzCpevLg6k8B/iYUvwHrhhReId9c581FyYc45nIkLP/TwnDjun0N3Ml3IhRh9vxi230+khT6/XuM/fnqMZ88ZMWKEegXFTpwtvSaH9vArJC78RcCvwjiuT8f0mviBs78owq4JrsJmwNn44MsZXmHWBlfBoJ9LQn/RokV07bXX0vTp09VGIN+twzv5nF4zLvQZRU5dyWG/fMaOD93y3TssdJPz6HM7vmeHQ33LlCmjHg44Zt3J5ZpuWeM3CRxOzGFErE84l/0VV1xRqDt+mBkwYIDKJBQvHB9fp04ddU6Mb8VNVXinnx9qUhV+KEpXIPTdsum+XaSFfvzCLM4rm3hhFj+BJ16Y1bVrV4Xw2LFjC5Dmgye8AOIXZvHBkiVLlmh7YRZ+4NwvEumW4EoacW/jgS9v+Em2BlfBoJ1LQj8YhHK7Vw5T4tDkdIdrnc4eefSdIpa5fqSFPkPDKbD69OmjcsTy6frevXurp2++KCNe4rlqE0Ny+LALp9N89dVXVSYdjjlzetudVHpNngd+4PxdOEH2Bq6CRNf/vsGX/5gG1SO4CgZZCP1gcDWlVwh9vZmKvNAPkx4I/TDR13dsiBF9uUllGfgyhy9wFQxXEPrB4GpKrxD6ejMFoR8iPxD6IYKv8dAQIxqTk8I08GUOX+AqGK4g9IPB1ZReIfT1ZgpCP0R+IPRDBF/joSFGNCYHQt8scpKsxdoKhj4I/WBwNaVXCH29mYLQD5EfCP0Qwdd4aIgRjcmB0DeLHAh9Eb5Y6HOmlXhOeT8G9Vs8+mET+kiNgN9ccXYjzgbEKUyTi6RuyhW+IfRDZFLSYSEeQyTa4dDgyiFgIVcHXyET4GB4cOUALAdVOX/8rl27qGHDhg5aZa7qt3j0zTB0dAACfnPFF5FxQhS+3RdC37vDQeh7x9B1DxD6rqHL6YYQI2bRC77M4QtcBcPVH3/8QWvXriW+bZ5vkPWj+C0e/bAJfQS/o8+XkfElXdWqVVP3GEDoe/c6CH3vGLruAULfNXQ53RBixCx6wZc5fIGrYLjisB3+PeNU07wTW6xYMRV64aVwn/yWgPvz2pcXO9A2OwJ+cMV98EVdzDmnOq9du3ZK3iV1U/aZm1EDQj9EniQdFj9wIRLtcGhw5RCwkKuDr5AJcDA8uHIAlsOqLNR4Vz8/P594N95r2b17N61cuVLd0Fq8eHGv3aF9gAj4xVXRokWpdOnSajc/3cOdpG4KEDLRriH0ReEuPJikw+IHLkSiHQ4NrhwCFnJ18BUyAQ6GB1cOwAq5KrgKmQAHw0tyJambHECgdVUI/RDpkXRYyYUYIqQ5MTS4MotG8GUOX+AKXJmDgDmWSq4rSd1kDgOZLYXQD5FJSYeVXIghQpoTQ4Mrs2gEX+bwBa7AlTkImGOp5LqS1E3mMAChry1Xkg4ruRC1BdwQw8CVIUT9ZSb4MocvcAWuzEHAHEsl15WkbjKHAQh9bbmSdFjJhagt4IYYBq4MIQpC3yyiLGuxtsyhDFyBq1QISOomcxiA0NeWq+XLl6ub32bMmEE1a9YM1E7+0pw4cSJ17tyZ8vLyAh0LnXtDAFx5w0+6NfiSRtz9eODKPXbSLcGVNOLux5PkatWqVdS2bVvi25jr1avn3ugItUSMfohkz5w5UzksChAAAkAACAABIAAEgIA9BHiDtE2bNvYqR7wWhH6IDsAXQ3z33XfqNkG+YCTIEn8Klnh7EOQ8otA3uDKLZfBlDl/gClyZg4A5lkquK75Ui2/ObdGihbpMDSU7AhD62THKiRqIazOHRnBlDldsKfgyhy9wBa7MQcAcS7Gu9OYKQl9vfnyzDgvRNygD7whcBQ6xrwOAL1/hDLQzcBUovL52Dq58hTPQzsBVoPB67hxC3zOEZnSAhWgGT9ghNoenuKVYW+ZwBq7AlTkImGMp1pXeXEHo682Pb9Zt3ryZHn/8cbr11lupQoUKvvWLjvxHAFz5j2mQPYKvINH1t29w5S+eQfYGroJE19++wZW/ePrdG4S+34iiPyAABIAAEAACQAAIAAEgoAECEPoakAATgAAQAAJAAAgAASAABICA3whA6PuNKPoDAkAACAABIAAEgAAQAAIaIAChrwEJMAEIAAEgAASAABAAAkAACPiNAIS+34iiPyAABIAAEAACQAAIAAEgoAECEPoakODVhAULFlCfPn1o8uTJVL58eerduzcNGTIk661xfDPvPffcQ6+++ipt2bKFOnToQE8//TQdfvjhXk1C+zQIuOFq4cKFNGzYMBo3bhwtXbqUDjroIDr55JNp8ODBVK1aNWAdIAJu+Eo25+abb6annnqK+L9PPvlkgNZGu2svXE2aNIn69+9P06dPV7eUN2/enF588UVq3LhxtEENaPZuuVq2bBndeeedNH78eNq6dSsdccQRdPfdd9PZZ58dkKXodsmSJTR06FCaMmUKzZs3j4477jiFf7YCfZENIbnPIfTlsA5kpA0bNlDTpk3psMMOU194nM+WU2hefPHFSrRnKtdddx29+eabKu1m7dq16f7776eff/5ZLeaKFSsGYm+UO3XLFfP4wgsv0BVXXEEtW7Yk/rFjUVK2bFmaM2dO1ge6KGPuZe5u+Uoc8/vvv1cP0EWLFqXLL78cQt8LIRnaeuHqiy++oNNOO42uvvpqOuuss2jnzp1q0+SCCy5Q6w3FXwTccsW8tGrVShkzaNAgqly5stqkeu2114g57Nq1q7+GojeFwPvvv0833ngjHXvssTR37lyqWbOmLaEPfaGPA0Ho68OFK0sefPBBeuCBB5T4q1Kliurj+eefpxtuuIGWL19OtWrVStnvypUrqUGDBvTcc8+pHzgu69evp3r16ikRefvtt7uyB43SI+CWq3Xr1ilurcVa0DkLkY4dO9J7771HZ555JmAPAAG3fCWacvzxx1OXLl3o5ZdfViISO/oBEGV16Zar3bt3U8OGDalXr17qexQleATccjV16lQlNr/66iu1prjs3btX8XfSSSfR8OHDgzc+giMwxrxRwYW/wzZu3JhV6ENf6OUoEPp68eHYms6dO6vwjXfffbegLS9EFob86vmyyy5L2Sd/dtVVVylxX6lSpYI655xzjvo3O6/mHBsb8QZuuUoF244dO6hMmTL07LPP0vXXXx9xZIOZvle+Xn/9dbrrrruIwxSa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\" width=\"698.5\">" ], "text/plain": [ "<IPython.core.display.HTML object>" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stderr", "output_type": "stream", "text": [ "/tmp/ipykernel_983/75780641.py:6: UserWarning: color is redundantly defined by the 'color' keyword argument and the fmt string \"k--\" (-> color='k'). The keyword argument will take precedence.\n", " plt.plot([0,1], [0,1], 'k--', color='orange')\n" ] } ], "source": [ "from sklearn.metrics import auc, roc_curve\n", "fpr_gbt, tpr_gbt, threshold_gbt = roc_curve(y_score=y_pred_gbt[:,0], y_true=y_true_gbt[:,0])\n", "auc_gbt = auc(fpr_gbt, tpr_gbt)\n", "\n", "plt.figure()\n", "plt.plot([0,1], [0,1], 'k--', color='orange')\n", "plt.plot(fpr_gbt, tpr_gbt, label='auc = {:.3f}'.format(auc_gbt))\n", "plt.xlabel('False positive rate')\n", "plt.ylabel('True positive rate')\n", "plt.title('ROC curve')\n", "plt.legend(loc='lower right')\n", "plt.grid()\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 50, "metadata": {}, "outputs": [], "source": [ "spark.stop()" ] }, { "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.9.12" }, "sparkconnect": { "bundled_options": [], "list_of_options": [ { "name": "spark.executor.instances", "value": "15" }, { "name": "spark.executor.cores", "value": "2" }, { "name": "spark.executor.memory", "value": "6G" }, { "name": "spark.dynamicAllocation.enabled", "value": "false" }, { "name": "spark.driver.memory", "value": "8g" }, { "name": "spark.driver.maxResultSize", "value": "7g" }, { "name": "spark.driver.cores", "value": "4" }, { "name": "spark.app.name", "value": "RandomForest" } ] } }, "nbformat": 4, "nbformat_minor": 2 }