{ "metadata": { "language_info": { "mimetype": "text/x-python", "file_extension": ".py", "name": "python", "version": "3.5.3", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "codemirror_mode": { "version": 3, "name": "ipython" } }, "celltoolbar": "Raw Cell Format", "kernelspec": { "language": "python", "display_name": "Python 3", "name": "python3" }, "anaconda-cloud": {} }, "cells": [ { "metadata": { "raw_mimetype": "text/restructuredtext" }, "cell_type": "raw", "source": [ ".. _cytoscape_intro:\n", "\n", "Importing Networks into Cytoscape\n", "---------------------------------\n", "\n", "Setting up\n", "==========\n", "\n", "In this notebook we will explore how to use Cytoscape's cyREST API to programmatically import, layout and style networks from CATMAID into Cytoscape.\n", "\n", "What you need:\n", "\n", "1. `Cytoscape `_ (> 3.5.0) with activated cyREST API (I think this is the default).\n", " In OSX: make sure to allow Cytoscape to make connections via http if prompted!\n", "2. `py2cytoscape `_::\n", "\n", " pip3 install py2cytoscape\n", "\n", "Further reading:\n", "\n", "- some Jupyter notebook examples: https://github.com/cytoscape/cytoscape-automation/tree/master/for-scripters/Python\n", "- this one was especially useful: https://github.com/cytoscape/cytoscape-automation/blob/master/for-scripters/Python/basic-fundamentals.ipynb" ] }, { "outputs": [ { "text": [ "INFO : Global CATMAID instance set. (pymaid)\n" ], "output_type": "stream", "name": "stderr" }, { "text": [ "pymaid version: 0.89\n" ], "output_type": "stream", "name": "stdout" } ], "execution_count": 1, "metadata": {}, "cell_type": "code", "source": [ "from py2cytoscape.data.cyrest_client import CyRestClient\n", "\n", "from IPython.display import Image\n", "\n", "import networkx as nx\n", "import pandas as pd\n", "\n", "import pymaid\n", "\n", "rm = pymaid.CatmaidInstance('server_url', 'api_token', 'http_user', 'http_password')\n", "\n", "print('pymaid version:', pymaid.__version__)" ] }, { "metadata": { "raw_mimetype": "text/restructuredtext" }, "cell_type": "raw", "source": [ ".. danger::\n", " Make sure that Cytoscape is running before you proceed!\n", " \n", "The hard way\n", "============\n", "The cyREST API lets you automate pretty much everything you can do by hand using the Cytoscape GUI. In order to illustrate the basic principles, we will demonstrate how to import a network from CATMAID *the hard way*. If you don't care about that, feel free to skip ahead and have a look at how pymaid facilitates basic imports." ] }, { "outputs": [], "execution_count": 2, "metadata": {}, "cell_type": "code", "source": [ "# Fire up the cytoscape interface - this will throw an error if no connection is found (e.g. if Cytoscape is not running)\n", "cy = CyRestClient()\n", "\n", "# Clear running session (= delete existing networks and views)\n", "cy.session.delete()" ] }, { "metadata": { "raw_mimetype": "text/restructuredtext" }, "cell_type": "raw", "source": [ "First, we will generate a network as NetworkX graph (see :func:`pymaid.network2nx` for more options). For illustration, we will use the connectivity between PD2a and MBON-a2sc published by `Dolan et al. (2017) `_." ] }, { "outputs": [ { "text": [ "INFO : Found 2 skeletons with matching annotation(s) (pymaid)\n", "INFO : Found 7 skeletons with matching annotation(s) (pymaid)\n", "INFO : Retrieving and filtering connectivity... (pymaid)\n", "INFO : Finished! (pymaid)\n" ], "output_type": "stream", "name": "stderr" } ], "execution_count": 3, "metadata": {}, "cell_type": "code", "source": [ "adj = pymaid.adjacency_matrix('annotation:MBON a2sc', 'annotation:PD2a1/b1')\n", "g = pymaid.network2nx(adj)" ] }, { "metadata": { "raw_mimetype": "text/restructuredtext" }, "cell_type": "raw", "source": [ "If you want, you can now manipulate the Graph before uploading: e.g. deleted edges, add metadata" ] }, { "outputs": [ { "text": [ "Example node: {'neuron_name': 346114}\n", "Example edge: {'weight': 18.0}\n" ], "output_type": "stream", "name": "stdout" } ], "execution_count": 4, "metadata": {}, "cell_type": "code", "source": [ "# By default, nodes use their skeleton ID as unique identifier and have their neuron name attached as custom attribute\n", "print('Example node:', g.node['346114'] )\n", "\n", "# Edges only have a 'weight' attribute\n", "print('Example edge:', g.edges['346114', '2205218'])" ] }, { "metadata": { "raw_mimetype": "text/restructuredtext" }, "cell_type": "raw", "source": [ "For now, let's just go with what we have. Just keep in mind that all metadata will be imported into Cytoscape and can be used to style the graph.\n", "\n", "To understand what's happening, I recommend running below commands one-by-one while watching the cytoscape window." ] }, { "outputs": [], "execution_count": 5, "metadata": {}, "cell_type": "code", "source": [ "# This generates the network in Cytoscape\n", "n = cy.network.create_from_networkx(g)" ] }, { "outputs": [ { "data": { "text/plain": [ "" ], "image/png": "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\n" }, "execution_count": 6, "output_type": "execute_result", "metadata": {} } ], "execution_count": 6, "metadata": {}, "cell_type": "code", "source": [ "# We can get an image from the current layout and show in this notebook:\n", "Image(n.get_png(height=400))" ] }, { "metadata": { "raw_mimetype": "text/restructuredtext" }, "cell_type": "raw", "source": [ "Because we haven't applied any layout yet, all neurons sit on top of each other. Let's fix that:" ] }, { "outputs": [ { "data": { "text/plain": [ "['attribute-circle',\n", " 'stacked-node-layout',\n", " 'degree-circle',\n", " 'circular',\n", " 'attributes-layout',\n", " 'kamada-kawai',\n", " 'force-directed',\n", " 'cose',\n", " 'grid',\n", " 'hierarchical',\n", " 'fruchterman-rheingold',\n", " 'isom',\n", " 'force-directed-cl']" ] }, "execution_count": 7, "output_type": "execute_result", "metadata": {} } ], "execution_count": 7, "metadata": {}, "cell_type": "code", "source": [ "# Get a list of available layouts:\n", "cy.layout.get_all()" ] }, { "outputs": [ { "data": { "text/plain": [ "" ], "image/png": "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\n" }, "execution_count": 8, "output_type": "execute_result", "metadata": {} } ], "execution_count": 8, "metadata": {}, "cell_type": "code", "source": [ "# Apply a layout\n", "cy.layout.apply(name='circular', network=n)\n", "\n", "# Plot again\n", "Image(n.get_png(height=400))" ] }, { "metadata": { "raw_mimetype": "text/restructuredtext" }, "cell_type": "raw", "source": [ "Next, let's generate a custom style and apply it to our network." ] }, { "outputs": [], "execution_count": 9, "metadata": {}, "cell_type": "code", "source": [ "# This will either retrieve the style \"my_style\" or generate one if it doesn't already exists\n", "# You can get a list of available styles using cy.style.get_all()\n", "s = cy.style.create('my_style')" ] }, { "outputs": [ { "data": { "text/plain": [ "COMPOUND_NODE_PADDING Padding (Compound Node)\n", "COMPOUND_NODE_SHAPE Shape (Compound Node)\n", "DING_RENDERING_ENGINE_ROOT Ding Rndering Engine Root Visual Property\n", "EDGE Edge Visual Property\n", "EDGE_BEND Edge Bend\n", "EDGE_CURVED Edge Curved\n", "EDGE_LABEL Edge Label\n", "EDGE_LABEL_COLOR Edge Label Color\n", "EDGE_LABEL_FONT_FACE Edge Label Font Face\n", "EDGE_LABEL_FONT_SIZE Edge Label Font Size\n", "EDGE_LABEL_TRANSPARENCY Edge Label Transparency\n", "EDGE_LABEL_WIDTH Edge Label Width\n", "EDGE_LINE_TYPE Edge Line Type\n", "EDGE_PAINT Edge Paint\n", "EDGE_SELECTED Edge Selected\n", "EDGE_SELECTED_PAINT Edge Color (Selected)\n", "EDGE_SOURCE_ARROW_SELECTED_PAINT Edge Source Arrow Selected Paint\n", "EDGE_SOURCE_ARROW_SHAPE Edge Source Arrow Shape\n", "EDGE_SOURCE_ARROW_UNSELECTED_PAINT Edge Source Arrow Unselected Paint\n", "EDGE_STROKE_SELECTED_PAINT Edge Stroke Color (Selected)\n", "EDGE_STROKE_UNSELECTED_PAINT Edge Stroke Color (Unselected)\n", "EDGE_TARGET_ARROW_SELECTED_PAINT Edge Target Arrow Selected Paint\n", "EDGE_TARGET_ARROW_SHAPE Edge Target Arrow Shape\n", "EDGE_TARGET_ARROW_UNSELECTED_PAINT Edge Target Arrow Unselected Paint\n", "EDGE_TOOLTIP Edge Tooltip\n", "EDGE_TRANSPARENCY Edge Transparency\n", "EDGE_UNSELECTED_PAINT Edge Color (Unselected)\n", "EDGE_VISIBLE Edge Visible\n", "EDGE_WIDTH Edge Width\n", "NETWORK Network Visual Property\n", " ... \n", "NODE_CUSTOMPAINT_3 Node Custom Paint 3\n", "NODE_CUSTOMPAINT_4 Node Custom Paint 4\n", "NODE_CUSTOMPAINT_5 Node Custom Paint 5\n", "NODE_CUSTOMPAINT_6 Node Custom Paint 6\n", "NODE_CUSTOMPAINT_7 Node Custom Paint 7\n", "NODE_CUSTOMPAINT_8 Node Custom Paint 8\n", "NODE_CUSTOMPAINT_9 Node Custom Paint 9\n", "NODE_DEPTH Node Depth\n", "NODE_FILL_COLOR Node Fill Color\n", "NODE_HEIGHT Node Height\n", "NODE_LABEL Node Label\n", "NODE_LABEL_COLOR Node Label Color\n", "NODE_LABEL_FONT_FACE Node Label Font Face\n", "NODE_LABEL_FONT_SIZE Node Label Font Size\n", "NODE_LABEL_POSITION Node Label Position\n", "NODE_LABEL_TRANSPARENCY Node Label Transparency\n", "NODE_LABEL_WIDTH Node Label Width\n", "NODE_NESTED_NETWORK_IMAGE_VISIBLE Nested Network Image Visible\n", "NODE_PAINT Node Paint\n", "NODE_SELECTED Node Selected\n", "NODE_SELECTED_PAINT Node Selected Paint\n", "NODE_SHAPE Node Shape\n", "NODE_SIZE Node Size\n", "NODE_TOOLTIP Node Tooltip\n", "NODE_TRANSPARENCY Node Transparency\n", "NODE_VISIBLE Node Visible\n", "NODE_WIDTH Node Width\n", "NODE_X_LOCATION Node X Location\n", "NODE_Y_LOCATION Node Y Location\n", "NODE_Z_LOCATION Node Z Location\n", "Length: 106, dtype: object" ] }, "execution_count": 10, "output_type": "execute_result", "metadata": {} } ], "execution_count": 10, "metadata": {}, "cell_type": "code", "source": [ "# To get a list of available parameters:\n", "pd.Series(cy.style.vps.get_all())" ] }, { "outputs": [], "execution_count": 11, "metadata": {}, "cell_type": "code", "source": [ "# Define our own settings\n", "custom_settings = dict( \n", "\n", " NODE_FILL_COLOR= '#FEC44F',\n", " NODE_SIZE= 18,\n", " NODE_BORDER_WIDTH= 7,\n", " NODE_BORDER_COLOR= '#999999',\n", " NODE_LABEL_COLOR= '#555555',\n", " NODE_LABEL_FONT_SIZE= 14,\n", " NODE_LABEL_POSITION= 'S,NW,c,0.00,3.00',\n", "\n", " EDGE_WIDTH= 2,\n", " EDGE_TRANSPARENCY= 100,\n", " EDGE_UNSELECTED_PAINT= '#CCCCCC',\n", " EDGE_STROKE_UNSELECTED_PAINT= '#333333',\n", " EDGE_TARGET_ARROW_SHAPE= 'DELTA',\n", "\n", " NETWORK_BACKGROUND_PAINT= '#FFFFFF',\n", " )\n", "\n", "# Apply settings to our style\n", "s.update_defaults(custom_settings)" ] }, { "metadata": { "raw_mimetype": "text/restructuredtext" }, "cell_type": "raw", "source": [ "Next, we need to set up some mappings for our style:" ] }, { "outputs": [], "execution_count": 12, "metadata": {}, "cell_type": "code", "source": [ "# Set the label to use the \"neuron_name\" column:\n", "s.create_passthrough_mapping(column='neuron_name', vp='NODE_LABEL', col_type='String')\n", "\n", "# Make edge width use the \"weight\" column and have it scale with 1/3 of the number of synapses\n", "max_edge_weight = n.get_edge_column('weight').max()\n", "s.create_continuous_mapping(column='weight', vp='EDGE_WIDTH', col_type='Double',\n", " points=[{'equal': '1.0', 'greater': '1.0', 'lesser': '1.0', 'value': 1.0},\n", " {'equal': max_edge_weight/3, 'greater': 1.0, 'lesser': max_edge_weight/3, 'value': max_edge_weight}]\n", " )" ] }, { "outputs": [ { "data": { "text/plain": [ "" ], "image/png": "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\n" }, "execution_count": 13, "output_type": "execute_result", "metadata": {} } ], "execution_count": 13, "metadata": {}, "cell_type": "code", "source": [ "# Apply style and render again\n", "cy.style.apply(s, n)\n", "\n", "# Plot again\n", "Image(n.get_png(height=400))" ] }, { "metadata": { "raw_mimetype": "text/restructuredtext" }, "cell_type": "raw", "source": [ "To wrap up, we will demonstrate how to use pymaid to *group neurons* in an adjacency matrix before generating a network and pushing it to Cytoscape." ] }, { "outputs": [ { "text": [ "INFO : Found 7 skeletons with matching annotation(s) (pymaid)\n", "INFO : Found 2 skeletons with matching annotation(s) (pymaid)\n" ], "output_type": "stream", "name": "stderr" }, { "data": { "text/plain": [ "{'PD2a': ['1454234',\n", " '2205218',\n", " '3345012',\n", " '1299700',\n", " '3516953',\n", " '1415893',\n", " '1606113'],\n", " 'a2sc': ['346114', '1420974']}" ] }, "execution_count": 14, "output_type": "execute_result", "metadata": {} } ], "execution_count": 14, "metadata": {}, "cell_type": "code", "source": [ "neuron_type = {'PD2a' : pymaid.get_skids_by_annotation('PD2a1/b1'),\n", " 'a2sc' : pymaid.get_skids_by_annotation('MBON a2sc')}\n", "neuron_type" ] }, { "metadata": { "raw_mimetype": "text/restructuredtext" }, "cell_type": "raw", "source": [ "Now we will group the original matrix by neuron type:" ] }, { "outputs": [ { "data": { "text/plain": [ "col_groups PD2a\n", "row_groups \n", "a2sc 110.0" ], "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
col_groupsPD2a
row_groups
a2sc110.0
\n", "
" ] }, "execution_count": 15, "output_type": "execute_result", "metadata": {} } ], "execution_count": 15, "metadata": {}, "cell_type": "code", "source": [ "adj_grp = pymaid.group_matrix(adj, col_groups=neuron_type, row_groups=neuron_type)\n", "adj_grp.head()" ] }, { "outputs": [], "execution_count": 16, "metadata": {}, "cell_type": "code", "source": [ "# Generate a NetworkX graph from the adjaceny matrix\n", "g = pymaid.network2nx(adj_grp)" ] }, { "outputs": [ { "data": { "text/plain": [ "{'n_neurons': 2}" ] }, "execution_count": 17, "output_type": "execute_result", "metadata": {} } ], "execution_count": 17, "metadata": {}, "cell_type": "code", "source": [ "# Let's add the number of neurons in each \"compound\" node \n", "attrs = { g : { 'n_neurons' : len(v) } for g,v in neuron_type.items()}\n", "\n", "# Add attributes\n", "nx.set_node_attributes(g, attrs)\n", "\n", "g.nodes['a2sc']" ] }, { "outputs": [], "execution_count": 18, "metadata": {}, "cell_type": "code", "source": [ "# Clear and Add network\n", "cy.session.delete()\n", "\n", "# This generates the network in Cytoscape\n", "n = cy.network.create_from_networkx(g)" ] }, { "outputs": [], "execution_count": 19, "metadata": {}, "cell_type": "code", "source": [ "# Apply a layout\n", "cy.layout.apply(name='force-directed-cl', network=n)" ] }, { "outputs": [], "execution_count": 20, "metadata": {}, "cell_type": "code", "source": [ "# Get our style again (remember we've deleted the session!)\n", "s = cy.style.create('my_style')\n", "s.update_defaults(custom_settings)\n", "\n", "# Set the label to use the \"name\" column:\n", "s.create_passthrough_mapping(column='name', vp='NODE_LABEL', col_type='String')\n", "\n", "# Make edge width use the \"weight\" column and have it scale with 1/3 of the number of synapses\n", "max_edge_weight = n.get_edge_column('weight').max()\n", "s.create_continuous_mapping(column='weight', vp='EDGE_WIDTH', col_type='Double',\n", " points=[{'equal': '1.0', 'greater': '1.0', 'lesser': '1.0', 'value': 1.0},\n", " {'equal': max_edge_weight/8, 'greater': 1.0, 'lesser': max_edge_weight/8, 'value': max_edge_weight}]\n", " )\n", "\n", "# Add node size mapping to our style\n", "max_neurons = n.get_node_column('n_neurons').max()\n", "min_size = 10\n", "max_size = 30\n", "s.create_continuous_mapping(column='n_neurons', vp='NODE_SIZE', col_type='Double',\n", " points=[{'equal': min_size, 'greater': min_size, 'lesser': '1.0', 'value': 1.0},\n", " {'equal': max_size, 'greater': 1.0, 'lesser': max_size, 'value': max_neurons}]\n", " )\n", "\n", "# Apply style\n", "cy.style.apply(s, n)" ] }, { "outputs": [ { "data": { "text/plain": [ "" ], "image/png": "iVBORw0KGgoAAAANSUhEUgAAA+QAAAGQCAIAAACoEz24AAAzAElEQVR42u3dfVRU54H4cZIQlyScxjY2a1q3oSnt4de41pxlG5uaRE9MSrKY9ZwaRUVlFV1i0KCgEg8BQQMKKviGwoAoKGI0EAVBxUAQBRVRBIoiSPAFiaKCgLwNkt/TzK47vbzdeWGYl+/nzB+NvXOZe+cOfuf63Oda/QAAAADAKFmxCwAAAABiHQAAAACxDgAAABDrAAAAAIh1AAAAgFgHAAAAQKwDAAAAINYBAAAAYh0AAAAAsQ4AAAAQ6wAAAACIdQAAAADEOgAAAECsAwAAACDWAQAAAGIdAAAAALEOAAAAEOsAAAAAiHUAAAAAxDoAAABArAMAAAAg1gEAAABiHQAAAACxDgAAAIBYBwAAAIh1AAAAAMQ6AAAAQKwDAAAAINYBAAAAYh0AAAAAsQ4AAACAWAcAAACIdQAAAADEOgAAAECsAwAAACDWAQAAABDrAAAAALEOAAAAgFgHAAAAiHUAAAAAxDoAAABArAMAAAAg1gEAAAAQ6wAAAACxDgAAAIBYBwAAAIh1AAAAAMQ6AAAAAGIdAAAAINYBAAAAEOsAAAAAsQ4AAACAWAcAAABArAMAAADEOgAAAABiHQAAACDWAQAAABDrAAAAALEOAAAAgFgHAAAAQKwDAAAAxDoAAAAAYh0AAAAg1gEAAAAQ6wAAAACIdQAAAIBYBwAAAECsAwAAAMQ6AAAAAGIdAAAAINYBAAAAEOsAAAAAiHUAAACAWAcAAABArAMAAADEOgAAAABiHQAAAACxDgAAABDrAAAAAIh1AAAAgFgHAAAAQKwDAAAAxDoAAAAAYh0AAAAAsQ4AAAAQ6wAAAACIdQAAAIBYBwAAAECsA6aqrq7uwoULGRkZcT9KSEjIzs6+dOlSfX09OwcAABDrgKFVVFSILp88efKIESOseufg4ODr65uamqpUKtlpAACAWAcGVkZGhpOTk7W1tZUmbG1tPTw8Ll26xA4EAADEOqB/cXFxDg4OVrqZNGkSyQ4AAIh1QG/y8/MdHR2t9MTGxsbLy6upqYkdCwAAiHVAJ9u2bRN5baVvDg4O2dnZ6j+otbX1zp07FRUVf/vb38TXg/Pnz5eXl1+/fp3x7gAAgFgHpEQ9T5o0yWrAWFtbh4WF5eXl7d27NyIiIjAw0L8n4s83bdp04sSJmpqa5uZm3hcAAIh1wNI1NTU5OztbDbw333zTXwYR9Ck/Sk9PLygouHbtWmNj46NHj3inAAAg1gHL0tra6uTkZGUob7/9dt+lHhwcnNKT1NTU/Pz8qqqqhoYGwh0AAGIdMH9KpXJAR7/06P333+8j1iMiIlL6c/DgwVOnTl2+fLm+vp5wBwCAWAfMU0BAgJXBPfnkk+7u7r3FelRUVIomRLir7qJ69+5dwh0AAGIdMBMlJSW2trZWg+FnP/uZr69vj7GemJiYooNvvvmmuLi4traWcAcAgFgHTJVSqRwzZozV4Bk/fnz3Ul+9enWK/hw9evT8+fM1NTXt7e284wAAEOuAydi8ebN2kW37jPXYUS+4ffAr8XCZ8MuRr/zE+qkntJvM0cvLSxLr69evTxkYjyeWefjwIe8+AADEOmC8lEqlnZ2dZvciHfKk+8SX09f/qSPnw66T/6n+uHP4/UifPzg6DNW011977TVJrEdHR6cMvKNHjxYWFopwv3fvHqNlAAAg1gHjsnfvXo2qeuyoF8r2vCNp9O4PkexDbZ/W6EpTT09PPQ5Y18LBgwdzc3MvXbpUV1dHuAMAQKwDg0+j0eoek+xasib2W+qqR3H8+JGv/ES7keuBgYHJyckpg4dwBwCAWAcGWUFBgfyY9plm333cS9+P68nv2Y94Tv60MI9jPSwsLMVoqMK9qKiIYe4AABDrgOGIJpY/+kXTUn98ft32GWu5Z+49PFSxHhkZmWKsHg9zJ9wBACDWgQEkcwyMzZAnRXNrUeqqh9/s38mM9XfffVcV63v27EkxBY/DvbGxkdEyAAAQ64DeKJVKGxsbOQ3tNeU3Wpe6eLRkTZR5sem//uu/ilIPCAgY3AHrDHMHAIBYBwZZSUmJzBPeZ2Pe1iXWxcPzr7+W84NefPFFEeuhoaEpJo5wBwCAWAd0kpGRISegR7z4jI6lLh5Zm/8s52c9++yzItY3b96cYkYIdwAAiHVAY3FxcXICetKbL+ke642Z/yHz5qZ+fn7x8fEpZkqE+/Hjx7k+FQAAYh3ox6pVq2TV8+zf6R7r4mH30rNyftynn35qigPWmVgGAABiHdCngIAAOfUcMMfBkLG+fPnyFItEuAMAQKwD/8c4z6wHBgamWDzCHQAAYh2WTuaYdec3hhtyzLpCoSDWuT4VAABiHZYuISHBCGeDOXDgAIFOuAMAQKzD0smfZz0v6i0dY9194styftA///M/U+QypaamnjhxoqysrLa2VqlUcjwDAIh1wKzIv4Op519/reMYGJl3MH399depcO1kZWVdvHixpqamra2NYxsAQKwD5mDs2LFyGtr6qSfOx43TOtZ9ptnLPIX/8ccfk926O3LkSGFhYXV1NeEOACDWARPm4+MjM6NH//b5jpwPtRutbvuMtcyfEhkZSWrr17Fjx86fPy/C/cGDBxzwAABiHTAlubm5VrK5ffArTXv9StKEYc8Pkbl+Ozs72npApaen5+fnV1ZW1tfXc30qAIBYB4ydUqm0t7eX3+uuf/mX+0c+kFnqZ2Peljm3uoqLiws9bciJZU6dOnXp0qXbt28T7gAAYh0wUuHh4VaacHjZNmvzn/vO9Jasib6uv7UZ8qT81T777LNbtmyhoQcx3FUTy3R0dPChAAAQ64CxaGpqGjp0qJWGJjj+PHr56FuHnCSZXhw/XmT6iBef0XSFb7/99r59++hmY3D8+PGLFy8az/1TGxsbxYvhowoAxDpgocLCwqy0ZffSs+NeGyYeY179qfwLSbufVvf19aWSjdDRo0cLCwsHN9wvX76suq/tjRs3+LQCALEOWJzW1lYHBwerwfPuu+9u2LCBMjaJcC8vLzfw/VOzs7MV/0u8hlu3bvGZBQBiHbAsBQUF1tbWg1LqI0aMWLFiRXR0NDVsWsPcc3NzL126ZIBwT0xMVPyjY8eOMRMlABDrgGXR9EpTvRgyZMiCBQv8/f1FkFHAhHt3IsoVPYmNjSXZAYBYByzLpEmTDBzrkydPFqUeFBRE8hLuPaqsrFT0TiT7qVOnSHYAINYBi6BUKp2dnQ1W6hMnTvT/0bp168hccw33oqIiXa5PPX36tKI/ItnFYq2trXyEAYBYB8ycKB7D9PrjUheioqJIWyaW6ZF4okKeHTt2nD17tr29nU8xABDrgJn3upub24COU58yZYq/mt27d9OylhbuZ86cqa6u7nsEiyjv2NhYhSZ27dolvhKQ7ABArANmTnSPra2t3kv9lVdeUV1R+tjKlSu/+uor+tVipaWlnT59uqKioqGhQTLM/dq1awqtiGQvKysz5PySAABiHTA00U9OTk76yvRnn332L3/5i5+fn/8/YsA61Ie5nzhxoqSkpLa2VqS2nAHrfdi3b195eTnJDgDEOmDOMjMzR44cqeO4l3/7t39bsmSJf0+2bdtGpKLHcA8KCgoMDAwPDyfZAYBYB9ArpVIp4snV1VXTGycNGzbsnXfeWbZsmX/vGLCOHu3fv9/T03PBj7y9vdesWRMVFaVLsldWVvJZBgBiHTBnTU1NCQkJIqHGjBljY2PTY6APHTp0woQJIrDmz5/v35+VK1cmJycTpuguOjp6wT9auHBhcHCw+HOtkz0tLe3WrVt8kAGAWAcsQn19/aVLl7J/lJubW1FRIWr+8f+bk5MTGBjYd6yHhoZSpejR2rVrF/TE29s7IiJCl4ExJDsAEOsA/u5vf/tbcHBwH7EeGRlJlaJHvr6+C3q3atUqXU6xq5K9traWDykAEOuARbt3797OnTt7i/Vdu3ZRpeguOTl50aJFC/q0YsWK7du3K3STk5PT91zvAABiHTB/Z86cCQ0NZcA6ZBLf4hbI4O3tvW3bNh17PTY2lmQHAGIdsHRKpTI/P3/z5s2PYz0kJIQqRY8iIiIWyKOXXifZAYBYB/A/rl69euDAgdDQUAasozcBAQELZPP19dVx/Lp6sp89e7a9vZ3PKQAQ64Cla2houHHjRmFh4ZEjR8hTaDRgXULEvUJ/du3aJQ5Lkh0AiHUA/0OEUW1tbVlZWXZ29sGDBwlWBqxrat26dQq9ItkBgFgH0IOOjo7bt29funQpNzeXcGfAukxeXl66Tw7TY7IXFRU9evSIDyYAEOsApEQk1dXVEe4MWJdj5cqVioGxb9++8vJykh0AiHUA/YR7VVVVYWHh0aNHiVoGrEt4enpGRkYqBoxI9oqKCpIdAIh1AP17+PDhtWvXCHcGrBvm5Ppj4utEdXU1H0AAINYBEO4WZ+PGjbrE+sKFCwdi5HqPyX7jxg0+egBArAMg3C3I6tWrF+gmJCREYSjp6el3797lQzfo6urqKioqcnNzs7OzExIS4tRkZmaKPxT/r1iGHQUQ6wCMLtyZWMa0eHt76xjry5cvVxhQbGzssWPHSHZDqq2tzcjICAsLc3V1HTly5PDhw63kEUs6ODhMnjx51apV4mDj30YAYh2AEWFiGeOXmJi4QGeenp76uqGpRrKyspqbm/mgDZCmpqbU1FTx5jo6OlpbW1vpib29vSj+hISE1tZWdjJArAMwrnAvKys7c+bM4cOHqWQjsXXr1gX6EB4erhgMO3bsyM/Pf/DgAR8xfblx44YoaWdnZ1tbW6uBZGNjM2HChLi4uNraWnY7QKwDMC4NDQ3V1dXnzp0j3E19wLrKF198oRg8sbGxp0+f5tanOsrIyJg0aZJoaCuDE98NxNGoVCp5FwBiHYDRaWtru3btmgj3rKws6tnkBqyrfP7554rBprr1Kcmuqbq6ulWrVtnb21sNthEjRohX0tTUxJsCEOsAjDfcb9y4UVZWJsKdYe4mMWBd5bPPPlMYB5HsxcXFnZ2dfJr6VV9f7+fnN2zYMCtjMnToUJIdINYBmIBHjx7dvn1bhHtubm5aWhptbbQD1g0/IUy/du/eza1P+9Da2hoWFiZ/UpdBSfa4uDgGxgDEOgBTCvfKyspTp05xxt3YBqwLS5YsURifpKSk8vJykl1i//79I0eOtDIFDg4O4rs6bxlArAMwsXB/8ODB1atX8/PzuQ2TMQxYF7y8vBTGSrQp03ur1NXVTZ482crUODs78w4CxDqA/rW3t9fU1Fy8ePH48eNJSUnx8fHHjh0rLS29d+9eV1fXYL2q5ubma9euFRUVEe6DNWBdWLp0qcK4JScn37x505I/v+JLi7ENT5fP1tZWvH5+CQPEOoAetLS0ZGVlBQUFTZky5aNeuLq6RkdHNzY2Du5LffjwoQj3wsJCwt2QA9aNcMx6b1JTU2/dumVpH+HW1lbxCbUyfe7u7txKCSDWAfyf4uLi9evXT58+/SN53Nzc0tLSjGQijsfhnpOTwzD37kJCQvQY635+fgrTkZ6efv/+fQv5FH/33XemMkJdjtGjR4st4pczQKwD+LugoKCPNLdkyRJju6Ok6v6ply5dys3NJdxVRF7rMdYH96ZI2jl69Gh9fb15f4RTU1MHbsqX4T/7J/sRz40d9YLzG8PdPvjV48cEx587Ogwd9vyQgfq5w4dnZ2fz+xkg1gFIY93Dw2PNmjWJiYknT56srKw8c+ZMcnLy2rVru/f68uXL29rajHOjCHfhq6++8vT01GOsh4eHK0xQbGxsTk6OsX231Je4uDhra2s9VvLIV37iPvHlSJ8/ZG3+861DTl0n/7PvR0vWxLyotxJXOnr+9dfiudZPPaGvV2JjY5OQkMCvaIBYB4j1/4n1L774oqSkpLfFSktLlyxZIun1pKQk499Aiw33HTt26LHURfdHRUUpTJYq2VtaWszpwxsSEqKXUrd9xtr5jeHRy0ffOfx+v3Xe90P0fXLIHyeP/8VQ26f1kuzbtm3jtzRArAMWLTg4eMuWLdeuXet3SRE6Hh4e6rE+Y8aMhoYGE9rYx+FeUFBg9tenrl+/Xo+x7uvrqzB9u3btKiwsbG9vp9RVxo56QTT6/SMf6Njo3R9inYkrHZ1ef1H3c+0BAQH8ogaIdcByaTSU5cKFC5KT68ePHzfdbTfviWX0O2B9zZo1CnNhBskuSl2nESZDnvT866/L9ryj90bv/iiOH+8xyU7HZBfby+9qgFgHIMvSpUvVY33dunXmsV1mFu76HbC+cOHC7du3K8yL6Sa7jufUXSb88nryewbIdPXHlaQJk8f/Qpdk5/w6QKwDkGXTpk3qsb5s2TLz20YzmBFSvwPWV65cqTBTu3fvLi8vf/TokakcnLpcUTp21At5UW8ZONPVH+Knj3n1p4xfB4h1wIIolcrbt29XVFTcvXvXMHcYTU5Olsweo916Hjx4UFlZWVVVJV6/vi77E3ugsbGxpqbmypUr33333Z07d3Rfs4len6rHAeuenp5btmxRmLV9+/aZRLKnpqZqV+q2z1hH+vyhI+fDQSz1x49Ni0eJ16PFVohtFx9Dfu0DxDpg7HVeVFQUHR3t6+s7b9489RuOTps2bdGiRevWrauurjZYrC9ZskT+c8U3ChFG3t7eM2fOlIx9nz9/vur0rehsTV/S999/L/J01apVrq6u3aeYnDVrlp+fn9hjWVlZlhPuehyw7u/vr7AMRp7s4vundvOpj3n1p4Yf99LvpDFjR72g3fzrtbW1/EUAEOuAMcrLy4uIiJg9e3a/dywSBR8ZGTlA87SINav/LJkXfj148CA2NlbOfVK/+uorjTJ9y5YtU6dOlXMjp//+7//W435QhXtVVZURDnPX44D1hQsXindcYUkOHDhw69YtY/v4t7a2jh49Wou69Zrym5asiUZV6qpHR86HfrN/p8UWjRs3TuwN/kYAiHXA6MhM0seCgoIG4mUsW7ZM/afExMT0+5SOjg5fX1+ZL1t+rJ8+fbrHU+mGiXUJo7o+VY8D1s1pEhiNpKWlGVWyu7m5aTxo5Kknvlz170aY6eqP5JA/ajEkRnwX5W8EgFgHjD3Wp0+fvnjx4tDQ0J07d0ZEREgaWuXEiRP6fQ1Xr16V/Ihz5871+6zo6GjJs7y8vMLDw8UrF/9XSEiIj4+Pi4uLRrF+6NAh9SFA6tzd3UViin3i7++/cOHCx2se0FjvMdyPHz8+KKNl9DVgfcWKFeINUlgwI0n2/fv3a5qzQ22fHtxrSTWa23HY80M03cDs7Gz+UgCIdcAYY33u3Ll79uypqanpfjlpcXGxCCxJtur3qtOtW7eqr9/T07Pf9V++fFkygryoqKj7Yq2treLPExMTT5061e/LOH/+fPdSd3V1zczMvHv3rmThtrY2sWeSkpLE1wPDv2uDMsxdLwPWly5dauGlrp7s9+/fH6wPvjh+NB2qPuLFZ64kTTCJUlc9rie/Zz/iOY220c7Orqmpib8XAGIdMCIBAQEi+JRKZR/LlJWVSSr2zp07+noB5eXlkrP76enp/T7r0KFD+j3ZL7Lpv/7rvySlLr42XL9+3cjfQcOEu14GrHt5eVnaUPW+xcbG5uTkPHjwwPCHzeTJkzUt9ar975pQqase4jVr2usMhgGIdcAk+fv7q1fsxYsX9bLatra2hQsXqq85MDBQzrwZERER6s/S/bLX+Ph4San7+Pg0Nzeb1ts0cOGu+4B1UepmP1ejqSR7dna2pqNfTOucuuT8uqbjYZjJESDWAdMTFRWlHrJHjhzRfZ1dXV0bN25UX61IusbGRjnPlQyml/ms3ogonzVrliTWexxXY1rhLnaLvq5PDQ8P16XUvb29t23bRpcbQ7IrlUoHBweNrig1lXHqfYxf1+h60zFjxvA7HyDWARNz4MAB9ZBNTEzUvdQlXwBcXV2rqqpkPj00NFT9ucnJyTqeaJSUur+/v5m9gzpOLLN69WqtS/3zzz8X7zU5LseOHTvEe9Te3j5wR4L4KRqdZj4U+rpJl7rqkb7+T+Jbh/ytTkhI4Nc+QKwDpkRy06Ldu3fruEIRJeordHNz0+i+RUlJSepPd3FxyczM1PrFSGZ5F8rKysz43dQi3L29vbUb+rJu3ToSXFO7du0aoGSvr68fNmyYRvOpm0Gpqx4azb9ub2/f95U8AIh1wGxjvbOzUxLH8+bNE+2o0Upu377d/V5IQUFBly9f1uIleXp6qq9nxowZ+p3uxtTDPTExUYvbHq1atYoT6saW7GFhYRrcJ+i1YR05H5pNrIvHBMefy9/8zZs385sfINYB43Xv3r3KysrS0tJz586p7nKql1hva2sLDg5WX9Unn3zy/fffa7GqvXv39jgh+mefffbtt9/KPysmulwy183ixYst803v7frUrVu3anQ2/Ysvvti+fTu1rRfis1ZeXi7nqut+tba2yp+ucajt07cOOZlTqasuNhXbJXcCnBEjmMYRINYBI9LZ2VlSUrJz505fX9+ZM2f2fdtO7WJd/M0nSlp9PcuWLdN6qmnxgrds2dLbK/z4448zMzPFMv2up7m5WfLcNWvWcDyoh7v4ftVvo4tvOAEBARs2bGAa9YGwb98+3ZM9Li5O/nnlSJ8/mFmpqx4bFo2UvxPEnudXAUCsA4Ovvb09NTXV3d39I9m0iPUHDx74+Pior2Tt2rVtbW06vvikpKTe7jmqOm3f7yxs33//veRZomk4KtTt2bMnPDxcJHtQUNDnalauXCn+MDQ0dPPmzfS0ARw4cKCqqkrrZLezs5MZqRMcf25mA2DUH85vDGdaGIBYB0yG+LtfcoNSlTlz5ixdujQkJGT79u0xMTG+vr66xHp9ff3ixYvV17B161a9/Mu+cOPGjbCwsD6+WojK6eMUe/dY132uG3PS2NhIJRvbrU/r6uo0fR/FF3L5Z5TPxrxtrqWumslR/swwFy5c4JcAQKwDg+bixYszZsxQ79SZM2eKOq+srJQsqcsFpg0NDYsWLZKcutb7FZxXr17duHGji4tLj72+cuXK3nq9+zCY8PBwjo3HysvL6WMjdPToUY2SfdKkSTLz1H3iy2Zc6qqHxyQ7bmgKEOuAsbt///6cOXMkdw99+PBhjwtrHettbW2Scerx8fEDt1H19fX79u2bPXt2915PS0vr8Snia4Mk8ZctW8bh8VhOTg5lbMzJfvfu3X7fxBs3blhby7orkM2QJ68nv2f2sS7/5Lqtra34rcLvAYBYBwaB5J5Ea9as6ejo6G1h7WJddPDatWsl49QNMCtic3Oz6BhJrM+aNau3uR2WLFkiWZLD47GkpCSa2MhvfXrixIm+b30q/9JSc5pYve+Hy4RfytwnXMQCEOvAIGhvbxdJql6ofZ+f0y7WxWLqz/L29m5tbTXYNqampkp6vaioqMclY2JiJEvevHmTg+SHHy8LpoZNJdlzcnIaGxt7fB+dnJxkhumVpAkWEusnIsfK3CfOzs78KgCIdcDQKisr1dvUy8ur7+W1iPXS0lL1eVrE/+4+FH6g+fn5qb/sw4cP97jY6dOnJbG+YcMGDhLVcUIHm5CdO3d2v49SU1OTjY2NnCodO+oFCyl11WP0b5+XORLGkGcZAGIdwN+dOXNGo5nFNY315uZmDw8P9ads377d8JuZlJSk/hrEf/a4WEdHx/z58yW9XlFRwXFy7tw5CtgUb3169uzZlpYW1Zsofx6Y6OWjLSrW5c+5npmZyW8DgFgHDKqwsFA9TBcsWND38omJierLR0dH9738jh071JefMmWK1jc/0oX4hqD+MkTB9Lbk119/LYl1f39/OfdUMm+i82hfEyU+g0VFReKLqKenp6zzx89Y3z/ygUXF+p3D78u8zNTHx4e/NQBiHTCoe/fuSdr0xIkTPS7Z3Nws0lxy46HQ0NA+Vn7nzp1p06ZJZk7U7+v/9ttvJf/W311LS8vHH3+s/jL6mNVBLNx9vnk/P79+v2M8evRIqVSa5UEi9nBsbCzV+7h9k+Q5ePBgmiaysrJy5Dl9+nRhf0pKSsrV3Lhxw9HRUdbI7DeGW1Spqx6T3nxJzs4ZOXIkf2sAxDpgaHPnzlUP09mzZ0tOPHd0dJw8eXLevHndp0GcNWtWH63c/XpNEfeZmjh37lwfr7yrq0us083NTfTT9evXe1ymtbU1JCREo3H5omy6T9MuNr+4uLjHGWzEj05ISJg/f35VVZVZHiF1dXU9xmVGRkaOJuQkprqysrJyTYgevSWD+KrW2Cez/IeU2tpamZM2WtoYGNVj0+JRcnaO2IcMWweIdcDQvvzyy+4V/vnnn+/atUtE8IoVK9TPjos6l9zYaOvWrb1N9bhu3bqPdBMYGNhvrD/m6+sbFRUlIvL8+fOi2y5evPj111+7u7urL+Pq6lpdXd3vPjl8+HCPr0ds/sqVK3fv3n3w4EHxVSQ4OFh9b5hrrMMMiG9WModl3zn8vgXGenH8eJn7p6CggMMJINYBg+rs7JTcrqg3Ikxv3ryZlZUl+XNR8x4eHt1T1cCxLkdeXp7M3ZKZmSkZ89MvYh1GKywsTNYwj1d+YoGlrnoMe36InF2UkJDA4QQQ64Ch1dbWfvrpp31kqMjWyMjI5ubmH3oaAt5bBxtVrM+fP//bb7/VaLecP3+++/h1Yh2myMXFRU6Jekyys9hYlzlsnWtMAWIdGBwdHR379u2TXA8qTJ06dfXq1VeuXFFfWPynZKS7cPToUQPH+g8/3j49PT19zZo1kls7qXNzc0tJSen3OtTedktycrKnp2cfX2PEX96xsbH5+fna/QjAAEaOlDU7YaTPHyw21kM/eVXOLpowYQKHE0CsA4OmoaGhqKjo0KFD0dHRiYmJ33zzTW8TpzQ3N4tKVt1+JS0tbdDv9NnZ2VlZWZmXlydeTHx8fFRUlAj006dPV1dX66Whr127Jr6NJCUlbd++fceOHaLgs7Ozxb5qamrisIHxGz58uJwSzdr8Z4uN9WMRb8jZRXZ2dhxOALEOAIDe1NXVybx68tYhJ4uN9bI978i8jylHFECsAwCgNxUVFXIydPjP/sliS108WrImyvxKw+yNALEOAIDe5ObmymlQ+xHPWXKsy58Q5rvvvuOgAoh1AAD0Izs7W06Djh31goXHuvi6ImdHVVRUcFABxDoAAPqRkJAgp0Gd3xhu4bE+7rVhcnaU+PLDQQUQ6wAA6EdcXJycBnX74FfEOrEOEOsAABDrxDpArAMAAGKdWAeIdQAAjJbMMeuuf/kXYp1YB4h1AAAMSuZsMCJVmQ2G2WAAYh0AAIOSOc+6o8NQ5llnnnWAWAcAwKBk3sFUpKoll3pj5n9wB1OAWAcAwNDq6+utra3lZGhL1kSLjfWyPe/I2UW2trYcUQCxDgCAPg0fPlxOieZFvWWxsZ6+/k+yBgs5OnI4AcQ6AAD6NHLkSDklumPFaxYb68Eev5ezi5ycnDicAGIdAAB9cnFxkVOi7hNftthYd35D1j8++Pj4cDgBxDoAAPoUFhYmp0TtRzxnmaXekfPhUNun5eyihIQEDieAWAcAQJ8yMjJkTnVyPfk9C4z1szFvy9w/BQUFHE4AsQ4AgD7V1dXJjNHElY4WGOubFo+Ss3NsbGyUSiWHE0CsAwCgZw4ODnJ6dNKbL1lgrIutlnWT13HjOJAAYh0AAP1zd3eXdfJ4yJO3DjlZVKmL7bV+6gk5O8fPz48DCSDWAQDQv71798ocCWNpEzjKnLRRyM7O5kACiHUAAPRPqVTa2trKGuzx2jCLinWHl2XtlqFDhzJgHSDWAQAYKE5OTjJPIZ+PG8eNSyWcnZ05hABiHQCAgSJ/JIzl3B3J6fUXZe6T/fv3cwgBxDoAAAOltrbW2tpaTphaP/XElaQJZl/qeVFvySx1W1vb1tZWDiGAWAcAYABNmjRJZp5awhyOk8f/Qube8PT05OABiHUAAAZWamqqlWx5UW+Z92l1mTM2ChcuXODgAYh1AAAGnJ2dncxCHfPqTztyPjTLUhfbNXbUC3L3w5gxHDYAsQ4AgCGEhITIP7ke+smrFj63uqBQKDhsAGIdAABDaG1tHT58uNwLK5+xvp78npmV+pWkCWK7ZO4BOzu7+vp6DhuAWAcAwEAUCoX888pmNhhGbMu414bJ3/yEhAQOGIBYBwDAcJqamoYN0yBYvab8xmxi3W/27+RvuJ2dHXctBYh1AAAMLSEhwUoTX676dzMo9eSQP8qfAUaIi4vjUAGIdQAABsHo0aPlZ6toXFOfybE4frz8oeqCo6Mjp9UBYh0AgMFx4cIFmTc0VRlq+7Tp3tb0evJ7w54fotE/JuTn53OQAMQ6AACDxsfHR6N+HfHiM1X73zW5Uhev2X7EcxptKbcsBYh1AAAGmVKptLe317TXTev8+vXk9zQtdaZrBIh1AACMQkFBgY2NjUYtO9T2aVMZv14cP17T0S/W1tYMgAGIdQAAjEVAQICVhqyfesL454dJDvmjRleUqvj6+nJIAMQ6AADGQqlUjh071kpzPtPsW7ImGuedj/xm/06jWRpVxH5obW3lkACIdQAAjEhtbe3w4cO16HVHh6HGNoRdvJ6xo17QYlvEHhD7gYMBINYBADA6Fy5csLW11aJxbZ+xDv3k1Y6cD43hhHqwx++1GPoi2NjYFBQUcBgAxDoAAEYqIyNDo5nX/2EAyagXzseNG8RSz4t6a8yrP7XSVkpKCgcAQKwDAGDU4uLitO51wWXCLw2f7CLTJ4//hRYj1B9TKBS89QCxDgCACQgJCbHSjfMbw7M2/9kAmZ6+/k9Or7+o46sV28ubDhDrAACYUq/rcn5dZfRvn9+waOSdw+/rvdFvHXIK9vi9w8u2Vjqj1AFiHQAAC+111Yzszm8MD/3k1bMxb+tyEap4rljDpsWjJr35ki4jXhj9AhDrAACYg7i4OE1vbtrvrU+dXn8xaN7/S1//p7I97/Q9R3tj5n+IZcSSwR6/F7kvnqvHVyK2KzU1lbcYINYBADBhubm52s2/LtOw54fYvfTs2FEvjHtt2OOH/YjnxJ8P3A8VW8QsjQCxDgCAOaitrR03bpyVuRg7dix3PgKIdQAAzEdra6uPj49ehrAPIvH6xVaIbeENBYh1AADMTX5+voODg4mWup2dnXj9vIkAsQ4AgNlSKpWmeIrd09OzqamJtw8g1gEAMH8FBQWmMord0dGRE+oAsQ4AgMXZu3evMY+KsbOzi4uLUyqVvFMAsQ4AgCUSKaxQKOzt7Y0t0xMSEsh0gFgHAAB/T/a4uLixY8caw6AX8eWhvr6eNwUg1gEAwD8oKSnx8vIaNmyYgRvd1tbWw8PjwoULvAUAsQ4AAPrS2tqakJDg4uIiGnpAG33o0KHOzs579+5l6nSAWAcAAJpRKpXZ2dl+fn6jR4+2sbHRS6CL9YwbN06sU6yZRgeIdQAAoJ9wLykp2bt3r6+vr7Ozs729vZzz7mIZR0dHJycnHx+fuLi4goICAh0g1gEAgIEK/rsf5ebmZqupqKgQf0iXA8Q6AAAAAGIdAAAAINYBAAAAEOsAAAAAiHUAAACAWAcAAABArAMAAADEOgAAAABiHQAAACDWAQAAABDrAAAAAIh1AAAAgFgHAAAAQKwDAAAAxDoAAAAAYh0AAAAAsQ4AAAAQ6wAAAACIdQAAAIBYBwAAAECsAwAAACDWAQAAAGIdAABA39rb22tqai5evHj8+PGkpKT4+Phjx46Vlpbeu3evq6uL/QNiHQAAGLWGhoaIPm3atCk6OlpkbnJy8pkzZ0T7ysncflf7eOUKhSIxMfHrr7/OzMw8e/ZsfX297hvV0tKSlZUVFBQ0ZcqUj3rh6uoqtquxsZFjAMQ6AAAwUt9///1HGpo/f35MTEx1dbV+V/uYp6fnli1bTp06pcXJ7+Li4vXr10+fPl3mz3Jzc0tLS+vs7ORIALEOAADMIdZVpk6dqlAoestcXWL9scWLF58+fVqjZA8KCtLiBy1ZsuTBgwccDCDWAQCAmcS6yu7duwcu1lX8/Pzkl7Qk1j08PNasWZOYmHjy5MnKysozZ84kJyevXbu2+09Zvnx5W1sbxwOIdQAAYNSxnpaWlvej3Nzc9PR0Ubrbtm0TETx16tTujTtlypSioiI5q01JScn7X6dOncrOzs7IyPj666+TkpJiYmL8/f1nzZrVW68vWrSorq5Oo1j/4osvSkpKelustLR0yZIlkp8iXgnHA4h1AABg1LF+69atHpe8e/ful19+OWfOHMny7u7uzc3N/a726tWrfb+Srq6u2traPXv29FjtHh4eNTU1/W5OcHDwli1brl271u+SLS0tYp3qP2LGjBkNDQ0cEiDWAQCA6cW6yuXLl11cXCRP6X5yXYtYf0ykv0Kh6HFkeUdHR9/P1Wgoy4ULFyQ/4vjx4xwSINYBAICpxrqQmprafeSMHmNdJSUlpXuvJyQk6Hfzly5dqr7+devWcUiAWAcAACYc63fv3pU8Zfv27XqPdeHQoUPdh8j3PWWkpjZt2qS+/mXLlnFIgFgHAAAmHOuCm5ubZMKWgYj1rq6uwMBAyXoiIyP1uPnJycmSkfHarUepVN6+fbuiokJ8k+HeqCDWAQDAYMb6ihUrJLO1DESsC3fu3JEMkZ8+fboebzsqifUlS5bIr/OioqLo6GhfX9958+ap3yp12rRpYoesW7dOv/8IABDrAAAQ67Jiff78+QY4s66yYcMGyaoyMjL0tfmRkZHqaw4JCen3KXl5eREREbNnz+53hnhR8GL9zDADYh0AABgu1hsbGyVPCQsLG7hYLy0tlawqPDxcX5u/bNky9TXHxMT0+5Qe55vvQ1BQEIcZiHUAAGCgWC8uLpY8Zf/+/QMX611dXZKZ17UeWS4hXpLkRZ47d07TWJ8+ffrixYtDQ0N37twZEREhqX+VEydOcKSBWAcAAIaIdckMKkJVVdXAxbrQ/TLT+/fv677tW7duVV+np6ennGtDVbE+d+7cPXv21NTUdH+K+DKzYMECyX2juOoUxDoAABjwWP/2228ly4vGlbNaXWJ99+7d/X490FR5ebnkHHl6erqcJwYEBOTm5iqVyj6WKSsrU7/kVLhz5w4HG4h1AAAwgLF+/fp1V1dXyfL5+fkDHeuHDx+WrK24uFiXrW5ra1u4cKH6CgMDAx89eqTHHevv76++/osXL3KwgVgHAAADEuv379+PiYmRzKLYx9WT+o317qfze/yGIFNXV9fGjRvV17ZgwQI9TgepEhUVpf4jjhw5wsEGYh0AAOga6zdv3hQ5297eLv7H+fPnRWVGR0fPmDGj+3WT3t7eTU1NBoj1s2fP6uuSTbFpkox2dXXVfVBNdwcOHFD/KYmJiRxsINYBAICusS7T0qVL+5hBXL+xnpeXp8W0LT3asWOH+nrc3NyuXLkyEDtWcrul3bt3c7CBWAcAAAMe6y4uLklJSZ2dnRqtVpdYP378uGRtly9f1nQl4gVLboE0b968a9euDdCOJdZBrAMAAIPGupub286dO+Xc4lS/sX7o0KHuY3U0WkNbW1twcLD6Gj755BPxIvW4J+/du1dZWVlaWnru3DnVXU6JdRDrAABgoGLdxcVl7ty5ixYtCgkJ2b9//4ULFzo6OrRerS6xLhm7Imh0PWhTU9Nnn32m/vRly5bpPlN7Z2dnSUmJ+Pbi6+s7c+bMvr/nEOsg1gEAgB5ivbq6uq2tTX6XGyDW/fz8tL6D6YMHD3x8fNSfvnbtWrGBumxde3t7amqqu7u7/H+UINZBrAMAAD1UtZxRLoaM9c7OTslcNBs3bpT53Pr6+sWLF6s/d+vWrTrOp15VVSW5QanKnDlzli5dGhISsn379piYGF9fX2IdxDoAADDzWC8tLZWs6tixY3Ke2NDQsGjRIvUnxsXFdXV16bJdFy9elHxzmDlzpqjzyspKyZJcYApiHQAAmH+sb9q0SbKqmpqafp/V1tYmGaceHx+v40bdv39/zpw5kvuePnz4sMeFiXUQ6wAAwMxjvbm5WXImu7d7pqrr6upau3atZJy6jufUf+h2U9I1a9b0MbKfWAexDgAAzDzWFQqFZD1FRUX9PkuUseROq62trTpuUXt7+6xZs9RXe/fu3T6WJ9ZBrAMAAHOO9fLy8ilTpqivxMfHp99nlZaWqj9L/O/uA8q1IFai/kq8vLz6Xp5YB7EOAADMNtZra2s9PDwk876LfO/7Wc3NzZJnbd++XS876syZM5IxMMQ6iHUAAGCJsV5dXT1//nzJGtLS0vp9ouT2SVOmTNH95kcqhYWF6mtesGBB38snJiaqLx8dHc3BBmIdAACYdqzfvXt327ZtU6dOlTx9/fr1/T73zp0706ZNU3/WypUr9bWj7t27J3lJJ06c6HHJ5uZmkeaSATyhoaEcbCDWAQCAKcV6R0fH/fv3r1+/XlRUlJSU5Ofn5+Li0v1+Q6J9Ozs7+/2hMTExkieKRM7UxLlz5/pY/9y5c9VXPnv27LNnz0o25+TJk/Pmzeu+CbNmzWpvb+d4A7EOAACMMdan9OSj/oh2z8jIkPlD161b95FuAgMD+1j/l19+2f0pn3/++a5du3bs2LFixQr18/qiziW3ZNq6dWsfUz0CxDoAABi0WNeUSPnQ0NDvvvtO/g8d6Fjv7OyU3GipNyLTb968mZWVJflzUfMeHh5VVVUceCDWAQCAScb67Nmzw8PDNcp0w8T6Dz/OUfPpp5/2/R0jMjKyublZLNzS0vLxxx93XyYvL48DD8Q6AAAw9lgXaTtnzhyRv35+fqGhoSkpKRUVFY8ePdLuhxog1n/4cWD6vn37JFeyClOnTl29evWVK1fUFxb/KRnpLhw9epQDD8Q6AADAQGloaCgqKjp06FB0dHRiYuI333xTX1/f45LNzc3p6ekKhWLnzp1paWk3b95k74FYBwAAAIh1AAAAAMQ6AAAAAGIdAAAAINYBAAAAEOsAAAAAsQ4AAACAWAcAAACIdQAAAADEOgAAAABiHQAAACDWAQAAABDrAAAAALEOAAAAgFgHAAAAQKwDAAAAxDoAAAAAYh0AAAAg1gEAAAAQ6wAAAACxzi4AAAAAiHUAAAAAxDoAAABArAMAAAAg1gEAAABiHQAAAACxDgAAAIBYBwAAAIh1AAAAAMQ6AAAAQKwDAAAAINYBAAAAEOsAAAAAsQ4AAACAWAcAAACIdQAAAADEOgAAAECsAwAAACDWAQAAABDrAAAAALEOAAAAgFgHAAAAiHUAAAAAxDoAAAAAYh0AAAAg1gEAAAAQ6wAAAACxDgAAAIBYBwAAAIh1AAAAAMQ6AAAAAGIdAAAAINYBAAAAEOsAAAAAsQ4AAACAWAcAAABArAMAAADEOgAAAABiHQAAACDWAQAAABDrAAAAALEOAAAAgFgHAAAAQKwDAAAAxDoAAAAAYh0AAAAg1gEAAAAQ6wAAAACIdQAAAIBYBwAAAECsAwAAAMQ6AAAAAGIdAAAAwN/9f9l9KEZ5HIieAAAAAElFTkSuQmCC\n" }, "execution_count": 21, "output_type": "execute_result", "metadata": {} } ], "execution_count": 21, "metadata": {}, "cell_type": "code", "source": [ "# Plot again\n", "Image(n.get_png(height=400))" ] }, { "metadata": { "raw_mimetype": "text/restructuredtext" }, "cell_type": "raw", "source": [ "The easy way\n", "============\n", "\n", "Now this has been a rather extensive excursion into the usage of the cyREST API. For simple imports, pymaid has a wrapper to quickly load data into Cytoscape:" ] }, { "outputs": [ { "data": { "text/plain": [ "" ], "image/png": "iVBORw0KGgoAAAANSUhEUgAAA+QAAAGQCAIAAACoEz24AACAAElEQVR42uy9C3BbZ3qm2Um8Pe4Z16R3xpNyst7EO9PZ8iaubGaqs+lkMhl3TU/WyXQSV61rqrfL5XSlnI3L47gdt6rTXZYl32JbluO2JV+lllq2bEuWbLFpghAA4dIkhAZpkDBIiDeDpEnABJsiKIIwCeEiWvuan/v4GABBXM45OAd8n1KpSBA4l/9c8Hz/+f7v/9xlQgghhBBCiCn5HJuAEEIIIYQQyjohhBBCCCGEsk4IIYQQQghlnRBCCCGEEEJZJ4QQQgghhLJOCCGEEEIIoawTQgghhBBCKOuEEEIIIYRQ1gkhxGpcvHjx6NGjd9xxx7e+9a3HHnsskUiwTVqC3+/fuXMnjsKOHTt8Ph8bhBBCKOuEkO3OmTNnrr322s+puPLKKx9++GG2jJEsLy9/7Wtf+9xnwSuLi4tsHEIIZZ0QQravqV911VUfC/rnf/HGf3/11//wmmt/5Qtiit/73vfYPoaZ+le+8hVp9hv+7b+85au/9uXrv3jFL/3Cx7/ecAN9nRBCWSeEkO3IxYsXpU/9K7/9P8dP/clHZ/8S/7LeP7/j5utEHEOhEFvJAHbs2CHx0omHf0+OAv69/cTvX/WFK/D6XXfdxSYihFDWCSFk23H06FFxxNHX/oviiPhX6PmLL1//Rfzp1ltvZSsZEDLJw41H7/gt9VHAv6fuvkGykj788EM2FCGEsk4IIduLO+644+PE6C//mxJHxL8n/sdv40/XX389W0lvgsGgPMdQHm4o/853/6n8Ce9hQxFCKOuEELK9uP322yGCN/3+r5TLuvTpXnfddWwlvfH7/WLkybdvKjkKFxx/Jn9iZRhCCGWdEEK2Hfv374cIXv3Ln8+c+W8lmnjzf/rVjz3+ppvYSnqzvLx8xRUf56arE9bl36nH/i+R9fn5eTYUIYSyTggh2wsooGRL3/7nv1Ho+QvFEV+5/z+II548eZKtZAC33HILWvvaX/nC9Mn/qhyF+Kk/ue5X/zle//rXv84mIoRQ1gkhZDuyd+9e8fIvX//Fh/7m/3jq7htu+eqvySs33XRTsVhkExnAyMjI1VdfjTa/6gtX3PX//G/P7/g/v3frb37xqv8Jr3zxi1+MRqNsIkIIZZ0QQrYpjz32mKRhqIGpswKJAayvr09MTAwMDMDIxdfV4BUOLSWEUNYJIWRbc+HChbNnz95+++3XX3/9ddddB00/efIk+9QN0PTx8fHjx4+jtfP5vFj7ww8//JWvfAVH4ctf/vLOnTuXl5fZUIQQyjohhGxfoIM2mw2mmEqlqIaGaTq8HJp+8ODBQ4cOzc/P4xWv18tRpIQQQlknhJBPyWQyUMZAIICfe3p6PvjgA7aJ3po+Pj5+8uTJgz8nEomIqR85cuTSpUtsIkIIoawTQsjHrK6uvvHGG/DFRCKRzWYPHz48MTHBZtGPyclJaXCFzs5OmHowGMTPLpeLTUQIIZR1Qgj5mHw+L/27hw4dunTp0uDgIH4eHR3FnxwOx6uvvtrX16e8+ezZs/YN3n//ffyaTqfxyrlz55Q35HI5m82GTw0PD8srH3744dtvvw0B/eijj8qXUHEtwoULF06cOOHxeOSD7cTCwsIPf/jDAwcOiKm//PLLy8vLaAH5FSpf8v7ydpaWRJRV8Q3ljZzJZNDOOBB4Z8XjstlRaO8DQQihrBNCiNlN/c033xRHhGRD1mFs+BnKjr++++6758+ff+KJJ5SKgTt37uzfQJKqIYUvvvjiW2+9pSxw79698L+f/exnYpzQuwceeADKeOzYMXlbyRIqrkXAB8Ph8CuvvIINa7NmhzEfOXLk/vvvV+xc+tQFiHXJ+8vbGe+/7bbb5ubmKr6hvJGfe+659957D039zDPPVDwumx2F9j4QhBDKOiGEmNrUOzo6FEeEpU1MTMjP6h7W/fv3K1kxu3fvLlmIz+dTHPHixYt4A0SwUCjIKxBESOTljR53+Wz5EsrXAlKpFMQRP2Sz2QcffLCdmh2G3bWB3W5HU3u9XqVPHZw6darip9TtDKtGUISGVWS95A3ljfzQQw+dO3cuFoshGKt4XCoehfY+EIQQyjohhJgap9OpTpteXl5WetlhfnjDwMDA3Xff/dprrykfOXLkyJ49e44fP65kRKgdMRwO33fffQgAHn/88d7eXjG873//+/h/dHT0m9/8Jj5VvoTytQC/36+8ctddd7XNgMtEItHZ2elwOKT7HPuOCMflch3YAC3/zjvvVJd1NAXs+cKFC3j/ZrJe3shQ8FtvvfU73/kO7Lzical4FNr4QBBCKOuEEGJ2CoVCKBR6/vnn4YgnT5784IMPFHFXEh6gkvv27fN6veoPPvvss5FIpNwRo9EoHFFcEF4oL0IHX3jhhR//+Mc7d+6suISKazl37hxk9PJGwsY999zTHg0+MjICU3e73WtrayV/Qhv+6Ec/QssvLCxUl3UcmgceeODYsWPf/e530UQVo6aSRoZh7969G+EBjvIjjzyy2XGpeKzb8kAQQijrhBBiDaDX77//PjzvnXfegURCFp955hkpTqK858yZM8ePHy8xS6fTWe6I+Xx+165dlzeSKxQpFMLh8IkTJyouQb0WGKEMmkQgIUkXyWQS0mn1dl5fX0dc1NHREQgE0Eolf4Wgo/Gl5vpmS1Da+cKFCzMbPProo1hm+RvKG/n8+fMPPfSQCPe3v/1trGiz46Ic63Y9EIQQyjohhFiGtbW1gYEB+VnSGxYXF1966SUYfDAYzGQye/bsOXz4MDwPtidvg8fjFbx+8eJF/Hr69On77rtvx44dJ0+elDccPXr0iSee2L9/v9Jx/vTTTx84cABvg2WWL6FkLdDW2267TT547Ngx+Oi9995bXh3FWsB3e3p6YOowY7UoKx4Ppd6sQ10ob2dpWCUNpuQNJY0MXnzxxeeffx62bbfby49L+bFuywNBCKGsE0KIlRgaGiopPLK8vOzxeJRf8/l8yVSmeL9SLnAz8B61kuZyOdH0zZZQvhb1m4vFoqUbGbvv8/lg6uPj4xXfMDMzI3NRaUjFw5TNZtWNWXJcqhyF9jgQhBDKOiGEWIl0Ol2uj4lEor+/n42joTTb7XaY+mb5LYVCAW+oYsmEEEIo64SQ7cjAwEB5X+noBmwcrcIhh8PR2dmJEGiz94yMjEhJe0IIIZR1Qgj5hIWFhZmZmfLX+/v7q5glqcvUu7u7bTbb4uLiZu/JZrNdXV3llWEIIYRQ1gkh25rBwcHykY7A4/GsrKywfZoklUqJqVfPb4lEIkNDQ2wuQgihrBNCyKfE43H1ZDoK0PfOzs6KEk9qZ3Fx0b5BdVNfW1tzOBzlZRwJIYRQ1gkh2xe4+Gbd6plMxuVysYmaYWFhAQEPTD2dTld/58DAwPDwMFuMEEIo64QQ8ilTU1MVu9UBXg8Gg2yihkkmkzB1p9O5ZXVLvMFms2WzWTYaIYRQ1gkh5BOKxWIgENgs0WViYiIajbKVmjF1t9tdy4DRgYGBsbExNhohhFDWCSHkU8bHx+fn56sYZMUSMWRLJPvF6XTmcrkt35zJZLq7uwuFAtuNEEIo64QQ8gnr6+vQ8SpvCAQC1Se9J5uZeldXV42mLkHRZnMkEUIIoawTQrYpU1NT1V2cdRsbYGlpqbOz0+Fw1FgufXV1FWbPIjCEEEJZJ4SQTykUClWy1S9v9LtDIlm3sS5SqZTNZoOpbzmiVCEUCo2MjLDpCCGEsk4IIZ8Si8WSyWSVN2SzWUgnG6p2ZI5Sp9NZ+xSkkq3OIjCEEEJZJ4SQT1lfX/f7/dV7zZeXl71eL9uqRlZWVmSOUvh37Z+KRCKsrU4IIZR1Qgj5DDMzM/F4vPp7EolEf38/26oW1tbWnE4nTL36HKUlFAqFeuWeEEIIZZ0Q0uasr6/39vYWi8Xqb5ueng6Hw2yuLclmsy6Xq7Ozc2lpqa4Pjo2NhUIhNiAhhFDWCSHkUxKJxNTU1JZvi0ajrCe4JYVCwev1dnR0VB8AUDFkcjgci4uLbENCCKGsE0LIpwQCgVrm3xkcHJydnWVzVaFYLPp8Ppj69PR0vZ+dmZnBZ1lshxBCKOuEEPIpi4uL0Wi0RqfnjEhVgGejiWDqsVisgY+73e56O+MJIYRQ1gkhbU4wGKyxUKDP56s3CXtbEYlEYOqjo6MNfDaVSjkcDnarE0IIZZ0QQj5ldXUVilnjmzmtZhUmJiZg6qFQqDHhHhwcbMzyCSGEUNYJIW1LOByuvVAgZJQtVpFkMtnZ2en1eresqFORbDaLQKj2iZMIIYRQ1gkh7U8+n+/r66tdKO12OxutnKWlJZi60+nM5XKNLWF4eLj25xuEEEIo64SQbUEsFpufn6/xzel0Gj7KRishk8l0d3c7HI7V1dXGlrC+vo4loHnZmIQQQlknhJBPHTEQCNSeYL24uOjz+dhuaorFotvt7urqaka14/F4T08PG5MQQijrhBDyGUecmZmp/f0LCwt+v5/tpqavr6+joyORSDSzELRqXQeCEEIIZZ0Q0v709/fXVbcEch8IBNhuCkNDQzD1ycnJZhaysrJis9lqmZGKEEIIZZ0Qsl2AIw4PD9f1kVgsNjAwwKYTpqenYerBYLDJyujRaBTSz/YkhBDKOiGEfMYR602zHhsbq3Gi07Znfn6+s7PT4/E0VqhRjdvt5tBSQgihrBNCyKdAMWuv2KgwMjICX2frZTIZ2wYNl39RWFpa4tBSQgihrBNCyGeIx+MNjIkMh8OxWGybN936+jr0uqOjY2FhofmlRSKR6elpnpCEEEJZJ4SQT+nv728gf2NwcHB2dnabNx0iFpj6+Ph484vCIbDb7fl8nickIYRQ1gkh5BMymUxjIxop6xMTEzD1vr6+JgeVCmhMVtchhBDKOiGEfIaRkZHGRjSGQqEmC4pbGjRaZ2en2+3WqswipJ9PKgghhLJOCCGfIRgMNvbBQCCgSaK2FYGgu1wuyLpWlVuKxaLD4dCkh54QQghlnRDSJsC2Gx4k6vf7FxcXt22E09HRkUwmtVrg1NRUKBTiCUkIIZR1Qgj5FAhiwyMat62sy/xH2taY9/l82/YxBSGEUNYJIaQCxWKxmSlIt6esS6q61+ttfv4jhWw2yxwYQgihrBNCyGdorLy6gsfjWVlZ2W7hjdvt7urqan7+IzWxWKyZqIkQQghlnRDShjRWXl3B6XSura1tqxYbHBzs6OhAkKPtYgOBwPz8PE9IQgihrBNCyCfk83moZzNL2G6yDkfv7OxsstHKyeVyNptNq/qPhBBCKOuEkHZgenq6yWIm20rWsadQauyy5lY9OzureQBACCGEsk4IsTb9/f1NjmjcVrLe09PT2dmZSqU0X3JfX992nluKEEIo64QQUkrzOTDbStbHxsY6OjpGR0c1X3KhULDZbKwDQwghlHVCCPmU5nNgto+sLy0tSa1GPZQaR6HhGWQJIYRQ1gkh7cnAwEDz6rkdZL1QKDgcDsh6JpPRY/mRSASBE09IQgihrBNCyCfk8/mhoaHml7MdZD0cDnd0dExNTem0fLvdrlMYQAghhLJOCLEk09PTmsxs3/ayjlbq7OwMBoM65ZSvrKy43W6ekIQQQlknhJBPCYVCmthne8t6sVh0OBzd3d3ZbFanVUxMTESjUZ6QhBBCWSeEkE+Apms1s73L5WrjFA5JgNG1qKLf79fkEQchhBDKOiGkTZibm5uZmdHKNRcXF9uyleDQMPW+vj79iioWi8XOzk4WbSSEEMo6IYR8yuDgYD6fp6xX12iXy2Wz2bRqqM2iJjQgT0hCCKGsE0LIJ6yvr4dCIa2W1q6yHo1GOzo6tHr+UGUt4+PjPCcJIYSyTgghn7C8vByLxbRaWiAQaL+Ua4QfnZ2d2DW9E1Q8Hk+7JhERQghlnRBCGmFkZGR1dVWrpQ0ODs7OzrZT+0DQ3W53V1eXfhVghEKhgLUwYZ0QQijrhBDyKZrMhdTGsj42NqbrFEgKiUQiEAjwhCSEEMo6IYR8QjabHR4e1nCB4XB4enq6bdpnbW2ts7Ozp6fHgA5vJqwTQghlnRBCPkMikdA2xXxsg7Zpn0Ag0NHRsby8bMC6fD4fK6wTQghlnRBCPiUSiWjbZwxTHx0dbY/GicfjMHVj5hMtFAo2m40J64QQQlknhJBPGRwc1HaBU1NTCADaoGWKxaJjA/xgwOoWFhZ6e3t5QhJCCGWdEEI+IZ1Oa1i0UZidne3v72+DxpFxpYlEwpjVjWzAc5IQQijrhJCmmJ+f37t3780333zjjTfefvvtZ86cMabnVScf1Twbe25urg16iBHGdHV1+Xw+w/JS0GhMWG85uBwOHjz4jW98A1f3rbfeevLkyQ8//JDNQghlnRBiGfbv33/VVVd97rPcdNNNFp3Ipr+/X3MZTaVSbrfb6gcamt7Z2ZnJZAxbI2KDfD7PS6y1B/3aa68tubpvuOEGzZ8+EUIo64QQXTh69Kh8f1/9y5//xtf+l3v++7+78d9fLa/ceOONltsdaHooFNJ8sRBcu91u6QM9NzfX0dFh5DDZ1dVVh8PBS6yF4Fq48sorcS1f+flfvOWrv7bj//3S1//wmit+6RfwynXXXWdMOSBCCGWdENI4xWLxmmuuwTf3H/3Ovz7f/acfnf1L+ff6A1+Wb3TonbX2aHFxUY+C6Pl83nJNURLDuN3u7u7uQqFg2EoTiUQwGORV1kIQb+Mqvv43rhp+5avK1f3Tl/74qi9cgdd3797NJiKEsk4IMTWnT5+WTvTpk/9V+S6Xf3fcfB1ev/nmm621R+Pj4ysrK3osubOz07oZHbFYDMGGwZOwhkKhdppJynKMjY3J1e3d/x9Lru5H7/itjx+mXX21dYemEEIo64RsCx577DHpeCv5Lse/Ew//Hv70pS99yVp7NDAwoNOS7Xb76uqqFY+yFDv3er0G1zv3eDxMtGghx44dwyV81ReuKPT8RcnV/c4P/7N4vGF1gQghlHVCSOOy/qVr/0V7yDpkVPMK6wput9uiI26HhoY6OjoM3vhisdjZ2cnpkFou61d+/hcp64RQ1gkhVuXMmTPynT362n8p+Tr/1p/9Ol6/5ZZbLLQ7qVRqampKp4UHg8FkMmm5Q7yysgJp9vl8Bq93eXnZ4/HwEmshY2NjV1zxcW66/Z/+oOTq3v3X1+P1a665hmkwhFDWCSFmRwaYXv8bVym+Xuj5i0fv+C0ZYNrV1WWhfYnFYjolrINwODwzM2O549vX19fR0WF8sfPp6Wn9UpKIwsWLFxEXzc7Ojo+Pv/POOz09PadPnz516tTx48fn5+dvuummj6X8X/0zddr6iYd/78rP/yIHmBJCWSeEWAN8tUv3G+z8j37nX9/y1V/70rX/QrrbrdWtfnkjYV2/vAvIkOUm44SuwdQDgYDxq0Zsw0reugJBP3To0MFKnD17FhKP95w7d+7qqz+pxPrl67+Iq/t3f/OX5dff/d3f5dRIhFDWCSHWAD4n/etqbr/9dvm+t5as6+pG+iXE60Rvb6/BsyApIELg3KW6cunSpZdeeunAgQNqTT969KjESKurqz6fb3R0NBqNfulLX2qbKc8IIZR1QrYp8PKTJ0/eeeed3/rWtx544IGxsTHL7UI+n4eX6Ld8qGdLuqgbBjaGMCwSibRk7S6XK51O88rS6VSHkbvd7scee2zPnj2KqXu9XlzIqVQKmn748GG73S4PmorF4pkzZ3bs2IGre+fOncFgkKnqhFDWCSHWY3l5eXJy8rLO/dP6MT8/r2sd8Ww2a635OGFsNputJbXhC4VCV1cXS8HoEYCFQqHOzs6ODXB8n3nmGelQHx0dPX/+PHxdcmNeffVVi1YaJYRQ1gkhlenr65Oc7OPHj1uxPHY0Gs3lcrquwkKTmM7NzWFrx8fHW7L2VCrFUjAasra2NjY25nQ6xdG7u7txtkt208mTJxEX4XArmi5YsXIRIYSyTgjZlIsXLx45ckT61A8fPmzFznUDEsohSXrHA1rR29trs9kKhUJL1j41NRUOh3lZNcn6+jqcOxgMKl3pfr8/kUioH1m89957DoejZKQpAm+2HiGUdUJIWxGNRqWIBH5+7rnnHn30USXX+dKlS9CFY8eOQb8++ugjvPLhhx++/fbbLpdLfi1/BTJhV5HP5y9cuHDixAmPx6N8pPyV6q9vSSgUMsCALTFoUorATExMtGoDRkdHrTjswTwUi8WZmRlcUOVd6SXA5hFdq0391KlTVYI0mP2rr76qtvnyVwTcDSSRBj/Ihfz+++9vdpGm02m87dy5cxXvGJpc4IQQyjoh2xd8ub7++usyQA1i/fDDD99zzz3PPvus/DWbzf7kJz/52c9+9tRTTw0MDOAr9oEHHsDXNr6M33rrLbyh/BXI+k82wALvvPPOXC6HN+Cb+5VXXrHZbLLY8leqv14deIwBKR+Dg4O6psVrAhrf7XbDwFo4iBCBUzwe55XVALgAEefg5N+sK738cL/55pv33nvviy++iEsY4p5Kpaos/9133z1//vwTTzyhjMYuf+XyxhRgt91229zcHH7euXNn/wYIAje7SGHq2AC5/EvuGCUb0NgFTgihrBOyrZmenpY+OXx9wnrxw4MPPrhr166S/jmXy3XixIn33nsP38r4FQouk6qUv6Jw+vRpWCPsASog3+JY8uWNnOaSV4TNXt+SuQ30bijYTAu7q2tkZmYGktfaGueIFvSbnapdwaUHtZWMF/y/WVd6idn39vbi/U8++eT+/ftx5dZ4fuLNJe9UvwJ337t3Ly5quaZKLurNLlKfzyeyXnLHqOWzhBDKOiGkGviyF1mXqS5F1r///e9LcRhhdXUV+o5vcXzL4k/4f3R09Jvf/OZHH31U/op85MKFC/iaX19f9/v9r732mrx41113Xbp0qfwV+Xmz17dkfHzcADuEB5s/Fdvr9drt9tbW5rNQcr8ZWF5eVhLTIbiQ5lpq+KytrUmeDP6H1judTsRIW34K8cDdd9+tXGXlr+Cig0/j4j1w4IDI+pEjR/bs2XP8+HG5tDe7SEtkXbljqNfe8AVOCKGsE7J9mZ2dVbJdX3/99Q8++ECRdaX4CcTrscceSyQS8iuk/IUXXvjxj3+8c+fOzV4B+/btw+uXN6ZRxBf/5Y2EmXvuuafiK8Jmr9eiIAYUCpQK1iY/mi0sAiMgbIOs88qqBdhwIBAQTUeUhcNX42mcTqcdDofkyUhclN+gls9evHgR1yZWV/EVm832wAMPHDt27Lvf/S4uRiX2fvbZZ2Ucy2YXqVrWS+4YzV/ghBDKOiHbF6fTqcj64cOHY7GYIutKAbinn366PFc7HA6XPONWvzIzM6N8GRcKBXnkjaVJKnz5K/jyXl1dLX+9RgwYXXp5oy/T5KXWcTRbWARGCWl6e3t5ZVVnYWHB4/FIYjqaCyd87dEmWrirqwsf7O/vbyxGPXPmzPHjxyu+cuHChZkNHn30UfVlBRHH2VXx4i2X9ZI7hlzdVT5LCKGsE0I2/dYvKfo2PDx8//33/83f/M1f//Vff+9734P5jY2N3Xrrrbs3OH36tHwTHzhw4L777sP3uvLdXPLK66+/rlb5Y8eO4bv/3nvvVVJrSl6Bu9x2220V37kl2WxW17lLFYrFopnn+oEAQeDkaUYLicfjkEheXJshNdFF09FQ9aZv4UqR4acw6XqTnTKZzJ49exCTP/TQQ5KgUv6KAi5qSYORMB5vu3jx4maXM+4MuPx37Nhx8uTJ8juGcnU3doETQijrhGxfent78U387LPPvvDCCyLrfr//4GcpnyApl8spUr7ZKxVFocQtyl+p/noVfTGs9ojL5TLt0Ekczc7OzpZMWapmZGSktXk4pmVxcdHn8ymaXr1sS0VmZ2clZwYhWWNBI06Pkiu6/JXy67F8MtR6L1KtPksIoawTso2QGn8vv/zyXXfddeeddz711FNQc7vdXiLrUnzdzMRiMcOmXA0GgwaUnWkAqa1uhvGvAwMD5i9wabymIwwWTQ8EAo3Fe4qpm78kESGEsk4I0Yx4PH7ixIkDBw44nc6enp6urq4SWT98+HB5v5qpgKEa1lFn2m5jKSeSzWZbviU4ixroM25XMpnM4OCgSDZ8Hdbe2HIUU5+enmarEkIo64RsI2Cf0uEnvX1ut/tgGYFAwMy7ABkyMrYxYUJ2Op2GyRnZDlVwOBxra2u8sgqFwtDQkBg2Lqv5+fmGRzsopj4zM8OGJYRQ1gnZXgSDQZmERUzCZrOJoP/gBz/Ys2fPvn378PORI0dMO6rSYFlfXl5W17wzCaFQSAm3Wo5yLm1bsPuxWEyGgSJ0mZqaaqZBJicnxdTNmX9FCKGsE0L0RUa8SVE28Oabb8LOd+/efecGd91115NPPln7zIjGk8/njSkFIxQKBUiYqWQ0k8lA5vr6+sywMSyyvrCwIMVecFCGh4ebTNBKJpOdG5TXLCeEEMo6IdsCKdisJLocP378hRdeuPPn3HvvvZD1gYGBDz74wLRuZFgpGMHhcJgqiR9GiCO4tLRkho3ZzkXWEaj09/dLUlk4HG7+JJmbm5M+dQ7YJYRQ1gnZpmQyGXELpXPaZrO5XK4f/OAHR44cOXHihPzVzHXWpqamDCsFIwSDwfn5eZPsfqFQQLhlnkEFiURiGxZZl7wXZRSpJuNrEYXKArFk3qkIIZR1QrYpi4uLouMlA9eku13BYBuui6GhIYNjCQQ25kkKGh8fxwGSiWZNEjvhiGyri0iZi7S7u7vJ9HT1hanUU+dtihBCWSdk+wJHFx0v6Sru6elRy7rBeSZ1MTAwYHyjGb/SzfB6vQ6Hwzw59GMbbJPLJ5/PK3kvg4ODhUJBk8VmMhkZnGrkYAxCCGWdEGJGhoaGRDVK6nOHw2G1rJu5r9T4eoUrKytut9sM+55MJnF0TFX3HX65TdI2Zmdn7XY72t/n82k4YADGj7MLi0VAuM2L6hBCKOuEkE9K/oGS16enp9WybhI3NYmsX97I7M/lci3f90Ag0NnZmc/nzXM4tsP0pZlMRh49ofHHxsY0VGqYulRnwpGlqRNCKOuEkMuSa+tyucp1RC3rpq2cvba21pKkXrjawsJCy5URxyUSiZjqiMAyW94y+qEeSBoMBrUtCoSFSwwAXzfzkG5CCGWdEGIc8hzf7/eXe4MYiYJJJtwpIZVKtWROx3A4PDU11dp9j0ajJhz729vbu7i42JYXi9Kh3tXVNTs7q3n4Ko+53G63qR6VEEIo64SQlgEnUGpCl/9VOt0VWu6mFZmbm2tJFcVYLNbaLm2Yos1mM2FFc5fLZaoi9Fq1No64lEgKBoMlAzw0YWJiQurJICTgrYkQQlknhHyMkutSsXxHyRhT89Q/UTM+Pt4SNVxYWOjp6Wnhjs/OzpYX3DQDMNo2S+FQOtQRHemUjp9KpWSaUk0KtBNCKOuEkDZhsyLrglLV0cxjTBFRtCSZXtKEWmilXq+3u7vbhFpcPljZ0iSTSaVDfW1tTY9VZLNZyUbbPiUvCSGUdUJITcTj8YpF1oWVlZWOz6LH0/8maWF/v8fj0bBgX13IIxETFuHO5/MIIdrj6kAgNDg4qF+GurIWxF1YS39/P8u/EEIo64SQzzA5OVl9glKIl1rW5+bmKOsKQ0NDreoKHR0dxeFoVahQhbW1NafT2QaXRjqdxo7IAyVdh1bLoFL4ulYTKhFCKOuEkPZhZGRELHyz5/t+v9/kUyO1UNbj8Xh/f7/x65WhpdA7E3bEIurz+XxWvy6mpqZkAtHBwUFdE43k0RZCYhM+syKEUNYJIa1HGUK6mfZJhQqF8gqP21nWM5mM3W433pgTiYQ5h5Ze3hgFYcKTpHYKhUIwGETzOhwOvasMraysSEhgwgdWhBDKOiHEFAQCAenY2+wNqVSqZGokU41ozGazrc3bhqwbX4umr68PB8KcWROWlvV0Ou12u2Usqd6VznH4JM1mZGSENyJCCGWdEFIZGdnm8Xg2e8P6+rqUwlBoSVHzKrFEazuYEe0kEgkj1wjJg6m3JP2mFuLxuDlLfG7J9PS0FE8cHx834GmJDF01Zy4TIYSyTggxC9K3V70rVLICFEzVEZjcoIUbYPzUSDIm2FQhk5rZ2VloqLWuAsQ/CH6kjLoxc68iMJDV6VQLkhBCWSeEtAmSMlu9KxQ+qpZ1Uw0fxLbpWqljS5aXlw0ufuJyudxut2m7Yy0n66urq/J8CSGrMeqMNcrTKp3mVyKEUNYJIe2D+Hd1u1paWipJW8/lcibZ/pGRkdaW0ZA0IcMaBLEBDsHo6KhpzyiETyas/r4Z8/PzUpw0EokYE/9gLQh3pao67z+EEMo6IaQahUJB/HtL+StJWzdP8YpWTV+qJhgMGpa2Pjw8jPbPZDKmPanGNrDE+T85OSlJ6kaOOpDnVE6nk1XVCSGUdULIFqytrYl8T01Nbemj5qy2boaMC+iXYZvhcDhMXsXcErKOAE+KltpsNiMnlkqn05J4ZtohB4QQyjohxERAHUS+t8ydLam2XqV6zDaUddie2+02YEVSRnNycpKy3gy5XE4SUXp6eowc34kIAReOOWcWI4RQ1gkhZmRxcbHGaoyrq6udnZ1qXzdJ2rpJxjJ2dXUZoH2SA2PyqS5NLusIUO12uwyqNjiBSsr4OJ1O1mokhFDWCSH1yXot5eqkyKPClpkz20rWg8Hg9PS0rquA4XV3d/f29pr8pDKzrCMoldEXsVjMYGNGuCsjWRcWFnjnIYRQ1gkhNSGz1tco69Ktq2CSWhYmkfWJiQm9ZwKC5KHZ9Q4J2ljWlTmPWjI8uqenZ8uyS4QQQlknhHyG2dlZMe/l5eUt3zw/P19SwLHl5SyKxaJJ0n8NqLYeDofR5vl8nrLeACMjI8YPJ1WYmZmRBBiTpzARQijrhBCTynot+dYyy73a142Z67EK2GyTeOH6+rrD4Uin0/otv7u7OxAImP+kMpusK4Vf4Mqrq6vGbwDiKybAEEIo64QQ3WX9clkBx+HhYcq6QiQSicViOi08mUyiwY0sB94esl4sFuWk7enpadVDicHBQWxAKBTiDYcQQlknhOgr6zKfi4Ldbm9tXYtUKjUzM2OSxozH4/r1fEP1zJB3VAvT09OIW8ywJUqJxr6+vladqEtLSzhwNpuNCTCEEMo6IaRupqam6pJ1CEdJJszKykoLt39xcXHLCvGGIWlCxWJR8yVDNGF7wWDQKhGgGYZR4lx1uVzy/KdVpo71er1e85ROIoRQ1gkhFmNsbKwuWb/886IWCqOjo5R1BZ/Pp8fMlJIDo1+OTfvJulJMvbWZWtPT09gGxAwsrE4IoawTQgySdamqYZKpTOPxuKkG7Y2Pj+tRwDEUCtV1jLa5rCOEkwGdOL1baMmFQkE2wxIjDQghlHVCSJvIejqd7vgsLSwmCC9seUUaNZlMpqurS3NBtNvt5p8LySSyvrS0JNMetXwww9DQEDbD7/ezW50QQlknhBgn60BSgc0wlanZZB14vV5tK3mnUik08sTEhIVkvVUTZi0sLMiYipZMe1QStskETPiB9xlCCGWdEGKorJdkwrSw03dmZgYua6omjcVi2ubxRyIRNHJLpvJpjPn5eb/fb/x6k8mk+LEewwbqRTKXwuEwbzKEEMo6IaQps2xA1jOZTEkmTKvSqcfHx1syzU0VYNVut1vDBWJpTqfTQqkUi4uLxsv63NycmLoZxjBIucauri6WaySEUNYJIU1Rb511BY/Ho5b1ViVpjI2NmXDYpd1u12oqU4mL9Bi0qh+pVErbcKVGU4ccLy8vm6EFpGKShTKXCCGUdUJIu8k6REQt6wbLmcllfWhoSKsyi1IIv+UZ2HWBI+J0Og1bnWS/wNTNkP1yeSNvHofM4XBwXCkhhLJOCGmZrOP9ZpgdyZyynk6ntcrj7+vrQzvncjlryTq22TAzluwXk/SpX96otW+hoviEEMo6IcQast5A2kbJ7EgtmX3GnLJ+eaNgTvP5yuvr69DQQCBgrZMqn8/jfDBgRfPz8+bJU1eCB+x7d3d3oVDg7YUQQlknhGgm6w0UQJycnFTLekue+5tW1gcHB9E+TS5EijZiHy13XhlQfR/hZVdXF0zdVLU7e3t7se/j4+O8txBCKOuEEA2Ym5trWNZzuVxJJozxHZymlfVkMunz+ZpciAwMaEl+UfOyrutxQZvI5KBoZ/PsNbvVCSGUdUKIxsDRm/HsQCCglnXj5600rayvr6/bbLYmy0r6/X6YnxXPK2y2fknk2WxWpuVq+RylJUi3uhWfhBBCKOuEELPL+uzsbAMfj8fjalmHnhaLRcq6EAqFmineh5bs7Ow0Pv7RBI/Ho1NtlkKh4Ha7TejEqVRKEuitNRqYEEJZJ4SYGmV6o8ZkHeZUkgljcBEMM8t6MpmEszYZR5mt87hGAoFAY2fUlgGM1FpBDGO2woh9fX2tGmZNCCGUdULaFpiuSHbDoyEHBgbUst6MnjYm62abwVQBNtnd3d3w7EgjIyNoT0RTVjyvINNTU1PaLhORod/vR5sgEjCbqeMkZLc6IYSyTgjRnmw2K5LdcFLB8vJyx2dJpVJGyvrS0pJpmzccDo+Ojjb22Z6eHiOnFtKWaDTa8I5vFvmIqeN/Ew7fHBoawrbhcPOWQgihrBNCNKb5Kuky2k+hv7/fSFk3VeW+8kgGjdNAN7BUWB8YGLDoSRWLxbTNtpcHOAhgTDgtKIIHm81m0bo9hBDKOiHEGrLejFqVFFyHZepdY9sqsn55o4O8gb5/KQKoeSaJYcTjcQ0jDckIcjqdhp1XDZz/fr+fNxNCCGWdEKI9XV1dUI2+vr6Gl1A+zNSwSWHML+swuaGhocb0VL/qh3qDg6KVvE5PT0uhIdOm78uTpbm5Od5MCCGUdUKIXqrR09PTzEJCoVBLZjOdmJgwuazncjm73V5vRUuYLvTUhCkfNQKxdrvdmki/DNw07cgEeQbSkul7CSGEsk7ItkDG7cE2mllI+TBTY2YznZ2dNbmsX96oY1hXBUapsG5k6r/m5PP55qdzymazOC1N3mkt84JxIiRCCGWdEKIX0ikOO2xyOV6vVy3rkBhjZN1UE85XBFtYV06I1RPWBbvd3kwdQ0QsMvlRw0VFDQDhBCs2EkIo64QQfZGqc6DJ0XszMzMlnesGTFcUj8f1mHxHcxwOR+0+Nz4+3galRTweT8O7sL6+LnMMNZDubyRjY2PYSIS7vI0QQijrhBC9EDVs3g4hWFLATsGA2RwXFxctIetoitp7iAOBQGdnp9VzoLEXDadCSQBpwsmPSk54p9NpWMYXIYRQ1gnZpkB2tcoyj0ajalnv6urSe/6aVCpl5jQJhUwmU/sYRLSbMUlEugLhbiyTJ5lMIlbxeDzmLNSoINlK8HUOLSWEUNYJIbo7B2i+i3ptba2khmMsFtNbgq0ytq/GnubV1VW0G8Ieq59X4+PjDUxiury8LFng5i9bKYk6ExMTvIcQQijrhBAdSafTGoq1zDSpoHe/Yz6ft4rXIhaqpb88Ho+3R2bF3NxcMBis6yOFQkEGlZp/0DBOPAkqDBiYQQghlHVCtjXZbFbEWhPrhfqXdK4nEgldt1/bae31A0GL3W7f0u0kXbsNqos0UGpdqohaIvqSqZo4aykhhLJOCDECGRiqVZ60VJ5W8Pl8lHVheIPq7+nt7dVkOqGWk8/n65rXSSqrBINBS6SAS6HSeDzOuwchhLJOCNEdmcRUK6tWkuAV5ufnKetgaWmpu7u7uoziDQMDA+1xXjkcjtXV1VreiTOks7OzydLshiFjM1henRBCWSeEGIQMlWtyElM1Ho/HsAmSLCTrlzc6zqsM5F1ZWWmnMYt+v7+W5Hu4LzQd7otgxhL7JQ8BcNXw1kEIoawTQowgHA6LVWtVaVFGSarRz8OsJesw9SpPMGRiKV0fRBjJwMAA9qj6e9bX1xHAYK/Hx8etsl+SA9M2h4kQQlknhJidqakpUeoakxZqoaRzvb+/n7J++efDTDfrb5ZC9W1TYAT+vWWO/sjIiIVS1S//vLZmXen4hBBCWSeENIWSZT43N6fVMqWTWE06naasg9HR0c3yguCs7TG6VEgkEqFQqMobcL5JfU+9J8/SPLINh8O8bxBCKOuEEIOQVGltUxHW19e7u7sN6FwfHh42+VSXJeRyuc3GJjocDv0eQRjP8vJyldgjm83iDLFQqrogSTt6FyQlhBDKOiHkM2ItxdGHhoY0XKySXSNgFZlMRvONR4Chx2J1ZXBwsLyaeKFQQBM1MOunyc+rzdJFpMSnVSagVQdazIEhhFDWCSFGI2Pment7NVxmsVgs6VzXoyzM7Ozs4uKitVo7nU6jZdA+6heXl5e1zUQyAx6Pp2LHuQRy/f391rLeRCKh6wAMQgihrBNCKiPdnBpWbxTGx8f1LguT3MCKDQ5hVb8iWf4rKyvtdF4NDAyU7ObljXrzUlXdWvlLIBQK4RhNT0/zjkEIoawTQgxF6pBUSVpojEKhoHfneiqV2rI+oAlZWFhwOp3q1h4ZGdG8/VtOLBaLRCLqV4rFotvtxplQSwl2U4Etl7mQLDQclhBCWSeEtAlKZXTNe7717lxfW1uzVt6zgs/nU4cZwWDQ4/G02XkFIy+pKz80NKT56AjD9kXvGb4IIYSyTgipjFIQRvNe6kKhYLPZ1LLu9/u1Xf6WxbzNyfz8vMvlUrrS8XP7JUPn8/muri5lHxcXFzs7O91ud0m+viWQp08WmryJEEJZJ4S0D0pBmJKkBU2IxWIlnevazv5ouVLrCh6PR7JBJMWiLUXQ4XBIIj72EQGJ5Wo1Kvh8Ppy6y8vLvF0QQijrhJAW0NPTAxcpSVrQKhJwOp1qWcdaNEzOtq6sz8zMSIO3ZSkYob+/Px6P4wfEgZar1aggRRu7u7tZtJEQQlknhLSGcDgMl1InLWjI5ORkSef67OwsZR1N7XK5UqmUjBlos1Iwwvj4eDQaXVhYgOx6vV6Lyq5MtsqijYQQyjohpGVMT0+LRuuhjGKlall3Op1aJS4jzLBufyeava+vb2RkBG3Slr228/Pzvb29DocDsm7daAQBIYs2EkIo64SQViKZGECSFjRH+ibVaKU+Y2Nja2trFm12yRFCJGOz2dryvMpms/v37z916tTExIR190LyuKx7mhFCKOuEEMsjYxxhJNFoVKdV9Pb2qmW9u7tbk2lxJicnLT3sb3Z29uDBg3qMFjADiUTiH//xHy393CCXy2H7EVDxLkEIoawTQlqJx+PRtZK0TF2p9nVN6m0vLCzo9DTAGGCxjz/+OCKZ9jujZFasZ555xtLZ3lJhPRgM8hZBCKGsE0JaicymbrPZ9OsEldxfBbj76upqk8vMZrOjo6PWbfZ8Pv/DH/7w+PHj7XdGSW3y06dPDwwMWH0vYrEYbxGEEMo6IaSVKAXRmxfozVhbW+vq6lL7uiYd+dYtCHN544HDqVOnjhw5sri42E6nkzxI6e7uPn/+vKUnZ/V6vaywTgihrBNCWo887te74Pf4+HjJSNNkMrmdZX1+fh6NMDAw0E5T2a+vr7vdbuzX1NSUDIcoFAoW3ZHODaw46yohhLJOCGkr8vm82LOuWSWwH4fDoW0ZR0vLujzQyGQyXq9XJjRtA6QSqN/vl5QqxCGJRMKKO7K0tCQ7wvsDIYSyTghpPaLRenfxyhxAapqc2HJoaMi6HZ8IjdAC2P6ZmRm3290G1dYR9dlsNvWABOyjflWGdGViYgJHJxKJ8OZACKGsE0Jaj4wxNeChf0kZx66urlwu1/DSpqenl5aWrNvmiJEu/3zqqPn5eaufRTIb7sjIiPIKdsqiST4yJNrS5YYIIZR1Qkj7MDMzI/acSqV0XRGWX9K53t/f33CnMpaGLbdom/v9fqVuYzKZ9Hq9lu5cX1lZQbCHqEMd70nmtxWffkjmPUeXEkIo64QQs5iWqPPU1JTe6yop4whmZ2cbW9Ta2lqTiTQtBF6rLkPe09Nj3cDj8kZ6esUxyohJLFfuRpkprA1ykwghlHVCSDsAKZHSin19fXqvK5/Pl5Rx7O7ubqzztVAoaDK/UkuADobDYeXXVCplt9stmoIPR99s/qDx8XHLHSMZXWrpupOEEMo6IaTd6O/v13tqJLXAlXSuDw8PN7aoUChkxdZGmFFefgf7YsVpnqRcI2KPlZWV8r8uLi5abpbWqakpSdDibYEQQlknhJgFZWokvdPWRe96enpK5jRtbL0Wrd64vLxcnnSUTqfRDtls1opnzmbd5zjWiACtVW0doSP2aHJykrcFQghlnRBiFjKZjHjzxMSEAauDmJZ0rjudzgY69aPRaDP1ZFqFTERVXmwkFAoNDAxYaEdg4XBxu92ez+c3e08gELBWIXm/34+j0zbF7wkhlHVCSJvQ3d0NR+np6TFmdUNDQ82XXZ+ZmbGiVEnJ+fK6k6urq52dnRYqQiIHsfrQ2KmpKXU9R/OD8AM7ZcUgkBBCWSeEtDNSbb2rq8uYIhjFYlEK5KmTYTKZTF0LgdcaUMFGcyR1ZG1trfxP8FqrJHnjYOGQeTye6icM3mahwZoyoa/dbucNgRBCWSeEmAsZV2dkAsDi4mJJ57rX661rCdBEdU0VqwAj36wyIF5EI1hiOh4p11jLdE6IyipGJiZESsEY9nyJEEIo64SQWlldXW04HaVhysuu19tTbsWCMAgwurq6NvsrgqXGMviNRNLue3t7a9lOHOVYLGaJQzM7O4v9stbIAUIIoawTsl2AIxpcYbpQKEiuvDoZpjyZuwpDQ0OWK08eDAbR1FXe0NfXZ/L5nnw+X8W0+4rMz88HAgFLHBp56GHFGpqEEMo6IaT9iUQiostGdutKX2ZJMkztGzA1NVWX3JsBv99fPdFidXW1q6vLtGUcZRak2iuRI5qySgFHmXCg4Vl1CSGEsk4I0ZH5+XnR5fJ54w0wJDXRaLTGzy4sLFSvRmJCEI1UnO9TzfDwsDmryEtWPY5ROp2u/VOBQKCW7PaWI08MFhcXeTcghFDWCSGmo1gsdnZ2QlYMHrWJ9drt9pJkmBpdsFAoWG5Ce6fTuaWIS5uY8KEBQqMGsrqnpqYsMbpAkrKsMhyWEEIo64SYnYsXL/r9/h/96EdadQdKiQ+Hw2HwAMe5uTmJExTcbneN22C54YDY01rCoUQi4XK5TDXSFBuDc6OBIpt4v81mM/moWQR+xqeBWYJYLHbs2LGjR4++++67bA1CKOuEkFp54YUXrr322s/9nCuvvHLHjh3Q92aWqRRwNH5qnvLKMDX2xULWrTXGtPYhjMFg0Jg5ZWsEG4ONb+xRhtfrTSaTZj4ua2trMpku7y1qTb/pppuuuOIK5T5z4403WrEEEyGUdUKI0dxxxx3K1+fVv/z5K37pF+Tnr33ta834ej6flx5u46uRYNUlyTA1Fn1HgGGheUxl2p0amzeTyXR3d5tkNs1CoSDd6o1tD3bZnFn4CqlUikXW1USj0auvvlpuLFd94Qr8U/oFqtQeJYRQ1gkhl48ePSrfmt/6s1+Pn/qTj87+Zdb754/e8VtXfv4X8eLOnTubWThkxeACjgrz8/MlyTBQVdht9U+trKyMj49b5dhJPfvp6enahckkHZnSrd5wU2PHTZ4JE4/Ha3+eY2kQBMZiserlhorF4vXXX4/7yXW/+s/t//QHuMPgPvPTl/74hn/7L/HiF7/4RQ7DJYSyTgjZlD/6oz/C9+XX//CaQs9f4BtU+bfv738Hr19zzTXNpIWMjY2JKNebl6wJcNOSzvUtC6fA/ywkWNJ9W3txQOyd2+1ueQKJbAZCqS1jpyogAjTzMxD4a8NJPtYCp9PBDU6dOhUIBGZmZsoP65kzZ6RD/b3jX1PfZJJv3yRd7Pv37+etmBDKOiGkAsvLy5JC+vYTv6/+EpX+dcmHaWYc2MrKilhyS7KlIYXSta9my+KMkHWrDApcXFyst5K3zGna2rz86enp5ssE4Ywyc1gFTcc+WmWy1c3I5XK4hHGazc/Pz26AZh/bIBKJDG6A0+mJJ544+FlOnjx59uxZpcd9x44duJPc8tVfK7nJ4N+t//f/ij/dfPPNvBsTQlknhFTg/ffflxyY8I9uLP8eveZf/TP8yefzNbMKt9stkxO1ZAczmUxXV1dJJcfV1dUqHxkZGTHtFELl5l1jLr6aYDBocD3N8lMCR6HJmoaQyO7ubtOGVQMDA1aZEQkHAjqOTR0fH0eMEQgEEOJCwUuyyDbj8OHD//AP/3BwE9544w0s9q/+6q9wJ7nnv/+78pvM9279TRlpyrsxIZR1QkgFLl68eOWVV+LL8pX7/0PJl+j57j+VnvUmewdl0vUWFpyWflw1Ho+nStdyIpEweCKnhpHE6HrzffP5PDTX+BI9SvPWNWVpFRABmjbXWeqWmjBRB5EqDsHo6GhfXx8asLqR4zxBZOX3+7E70o+Oy1l61nFZSV97KBTat2+fWtBfffXV3t7eyclJJflt9+7dHw9Y//K/KZf1m//Tr+JPt956K+/GhFDWCSGVufnmm2XgV+bMf1N/iX7rz34dr99www1Npkyk02n54je+JoyCdHOqwSubdcrCZa2SagxVaqwoPj5Ye+15bZHEpJWVleYXhTOqtY8IqiAPlOqamVUPcIgRJCP4HB4ehnNXVHO73Y6DAueGiCMyTyaTOKPg9DVe+JKz/sYbb0DoYfBSPwr/I1CRtJlIJHL27Fl5gmf/pz9Q32S8+/+j9AgcO3aMt2JCKOuEkMoEg0FJW7/+N656/YEvj772X1xP/+FNv/8r8uV69OjR5lfhdDrhBE2m0zRDoVCQae3VTE1NbfZ+q4wxbVjWQV9fn/Hhk+TtwOo0WRo0FKeWOTNh5JxvydMkePb8/DzMG+0ss6iWTBAmhx4nD86cZloPERdMHYuSrne5xI4fP37o0CGllx2vpFIpvPmmm27C/QRqvvOv/vefvvTH7/zwPz/xP35bRpfecMMNH374IW/FhFDWCSGbAiOXZJgSmqzbqNDamjCK2JUnr4tGlBOJRCwxNZJk+FRPwd+MbDbrcDiWlpaM3GBYHTYYKqnVAnt6esw5O5L0YRt2FuXz+bm5OZy3EiSoT3I00eDgIE4VnO3aBjanT58+WJWzZ89eunRJ3ry8vPyVr3yl/CZz3XXXWX0YLiGUdUKIEUSj0VtuuUVRdnytHjt2TPmibRJ8T4s6YC0t3Md4PF6SBmCz2Sr2fcJ7LDE10vj4eDPdt9jN6un72iKnAdxRQ2WcnJzcshxnS5ATTO+1pNPp0dFRn8+nPrERlAYCAbyOoKhQKOi39p/+9Kd79uw5cOBAuaYfP378gw8+KHk/zrSHH35YmSn56quv3r17d6vGThBCKOuEWJKLFy++//77+JqHTq2srLhcLq28SlJ4W560MDg4WJIV0NvbW75JuVzOElMjySOLZnIt0CCGRVCwamyttoN3ZZbcZuq16wHOHxmdqcfCcbqiDaVmovpMhrLjUDaZ2VILq6urQ0NDdrv9rbfeuvvuu++//361ph86dAihQvUgAVFEIpGwxMMrQijrhBAzIg/N8cPJkye1mi9dZqxseX0M+IGEDWoqTlw/MDCwHWQdDQLnM6CmCjYSVq1HsUW/379l7XyDwc5KaKrtqQvB7e/vt9lsyqmLcDocDuN1Y8KVVCoVCoXUvfiPPPLId77zHcXUT506tVlqGSGEsk4I0Yx33nmnq6vr8sYYREk8bV6wVlZW5Du+5YVWMpmMWneEeDxe8rbh4WGz9dfqIetiYNBKvXdWNnVkZETzJePYaRVSmlDWcemJo6sVWequGDl6dXl5WYpRlvDyyy8rMyLhKOiadUMIoawTQj4BX7r46l1cXFQmEoe+N79Yn88nuQEtL9+B/SpxDgQnJbmzlkhb10TWL2/Uwo9EIvptJxzO4XBAN/UYYYzTCSdVy4skqllaWpLs/GYWggsQB0UJLNF6fr9/dnY2l8sZHHggVCjXdFzOuEaKxeIbb7zx6quvWmL6J0IIZZ2QNgHq88gjjzz++OPhcPiVV145cOAAfn3qqafw60cffSTvuXDhwokTJzwej7xy9uxZ+wbvv/8+fr106VIwGDx27Jj6I4ODg08//fSLL74o3+vwNgjc22+/Xa5ZJQvXA2WqJvX8L2rrhV/q0Q1sTlmH73q9Xv2CExkIq188MDw8bKrS+PBs7C/cuoHP4rrAYVXno0OLJycnDXb0yxvjAaLRaHkNJRxHddCVSCSktnq94MLHfePcuXPKK9hHBCdQfxzQiveBkjeUL6R8mbjJ4P19fX3G32QIoawTQvQCX8kPPvjg/v379+zZc/DgwRdeeAG/7tu374EHHlAyufGzqDy+O/Hrzp07+zeQqnzZbPYnP/nJz372Myi+8hHo4Pe//314v8xe+dxzz7333nvvvvvuM888U7IBJQvXifLH+iWFSnTtbDaVrIsjulwunYxQ1FO/wp0rKys4VcyTg9GArOPESyaTCHGVdBeEvggXWzXvLyJqbEBJ6SRsDy5trVYBq0bo/tZbbymv7N27Fych7hsITireB0reUL6Q8mXiDnP+/PknnniiZCC1MTcZQijrhBBdOHnypGS/vPTSS1BqZfTY7t278crljSxnfPmJlMPjL29MJ15xUfhmPXHihPLroUOHIOtSvuOhhx46d+5cLBZ79dVX1R8pX7hOSG5Gia+rZ8TEt3urVMl4WQdTU1OIozRPUkL8JlV3dG0KUw0zrUvWcR7iKsCVonRdDw4OLiwstCpbDKdTSRwrm6RHIOfz+RSxvnjxIm4jH330kQRd5feBkjdUXEj5r8L+/fsnJiaMv8kQQlknhOjC8ePHpUP9b//2byFw+PnFF1/E1+S9994rE9DAQl577TV581133XXp0qUjR47s2bMHH1Q/U15dXd21a9f58+eVV3784x9D1vH1Pzk5ie/OW2+99Tvf+U6JBJQvXL89TafTJU/5gVK0EZZp8kxcbWX98kZ1RaXPUiv6+vqwkXq3pKmGmdYo68vLy5Bg5Qz0eDy43IxPd1EzPT1dckXg8On3SEQt1oiT77vvPqzx8ccfR2hXfh8oeUONsj4wMHD33XcrizL+JkMIZZ0Qoj2HDx+Gnd95550/+MEPhoeHT5065XQ6YerKLPHnzp07cOAAfoCa33PPPcoHn332WSV1BM7x2GOPJRKJku9mOD2+bs+cOQP7hwScPHkS+q5+z2YL14mFhYWSmZKUKTbX19crVnVsY1mXSo4aylk2m9WpYmMJphpmuqWs46xTMl7wP4TYgProWx76kg51nAl612FUi3U0GsXNQc4ZxPDl94GSN9Qo65c3uuT37dvn9XpbdZMhhLJOCNGSQqFw8ODBv/u7v4Op44fXX38dX3VPP/30wMCAzWaTAn94jzw7TiaTEHTls/iOVMrV4SPlnan4Hn3ppZfgAa+++ur9998vX5bf/va3oSn4YXV1tcrC9SMWi21WHCYUCrW8do2Rsi4e6Xa7tcr/lqGlo6OjBrQGAkuTDDPYTNalDqOURZIxzSZJtYKUl6SE4Xo3oHSpWqyxul27dkmcjwC+/D5Q8obaZR2cOXNGnvu16iZDCGWdEKIZmUxm79693/jGN/6/DaDUULdbb7119+7df//3fy856+DYsWOPPvrovffeK1kT0PrDhw/v2bNH6kJAIuUj4PTp0/IR/HDffffhI5IJg/+ff/55fFPa7XZxxNtuu63iwg2gfGZTbBW+16enp81cwFEPWRfrLa+e0bCN6bGFFcHxQpRlhur45bIumq7UeMEPOLdNEgciWFU/XMKZL0+W9EZuCDt27Dh58qS8cvTo0SeeeGL//v0SdJXfB0reUL6Qkl9xN8NNCbemhx566Pz58629yRBCWSeEaMOFCxcOfhZ8f8ufstmszWZTnozji1CZMBw/S5dVLUgSM/xgeXl5synH1Qs3AKxL6e9UQJSCnYUQm/ZgyTMBzVUYEol9bz7LXGbCCgaDhjVIIBAwg3upZR2NiZBPGT8q5clNounYjHA4rD7n0YCtjXZw4asbp/w+UPKGLcHulEyh0KqbDCGUdUKINigTIamRcaVgdHTU6/U2qRpSHgSYyoNzuZy6uLXQ29uryYRQOgGf1qnfGh7T3d29meXUyPDwMDZPOXmMOXs9Hk/LVVhkHSdPiaYnEgnzZFUVCoWenh51yZeZmRkzJ30RQijrhJCPmZychJ0fOHDg4Ycf/t73vvfUU0/hVwiH/FUGIMZisSbXIlqM/00lBzBUZcJIhTfeeKOxOV8sLeuXN+qr4AA13M8qIz4dDoeRhxjrwhrhyi2X9UOHDu3bt09OIZlwylSnOs4Zt9utnORmaDRCCGWdEFITExMTsHOY+p0b3HPPPcePH+/t7VWqm+FLvbOzs/akl4rIuENgtozw8uIwR44cUdeRMKGsr6ys6LT8aDQaCAQas0y4fkndesOiTWUerladQgj5du3atXfvXkgwjpHZuqtxwqgfIuHqbm29SEIIZZ0QUp+snz59+rXXXnv++edffvnlU6dOlecuDw4Olkz2WS+QA3FipRykqQxY7etvvvnm/v37m3+YoAeSUKRfnygOsc/nGxkZaeCzfr8f27a0tGRwm0iPvn4BTBUQwUr1w6NHjz7yyCMnT540YUp0Op1G+6jLqDP1hRBCWSfEksqufJ0PDw+X/LVQKNjt9unp6WZWoRRg0W/KlYYpKeb49NNPI2gpqRlvBiQ3WtcEhmw2C7erN+88n88j4GnVLEXRaNTgAvmQ8rGxMZlOCDsOZX/rrbdM+EAmlUqpE73QUDR1QghlnRBLIhaoFIgofwPsDWrSTLb06uqqdGAbnylRC6Ojo0oLHDp06MiRI9hasyXtGCDrl3+e11FXTDU5OYkNm5qaakmzIMBAMKlVqfgtQRSnFCmPRCI4sXFdyJAMU50t6XRaberGFL8nhFDWCSG6oKSpyAxBFd/T39+/5YTq1ZGcAazIDPPClKP0/b/11lvPPPOMbKrxeR3V9QtbNTc3p/eKxsfH65opSQYvtvCwIgKMRqN6r0XJe5FiL0pVU0QLMmrTPKfKysqKOvvFzAVJCSGUdUJITXg8HuWrvaJ15fN5u93eTO9pMpk0cyff+vq6omI/+MEPTp06JaGLefrXpQe3+YLoNTZFjfnNUFhslZHl1Su6KY6Ufp3r6rwXp9M5Pz+vbhn8LKeNeWJv9YhS9qkTQijrhLQD/f39yrf7ZunpiUSimWQYOI1UoTa4wF9dTiaTJR04cODVV19VKlKbpH8d8ZJh2SZoCrfbPT4+vuU7ZV7VJoc0NM/AwMDExIQeS4aaS94LzgSIb8VRpOaR9ZIJv2jqhBDKOiFtAhRQ+YIfGhqq4vTNVHSB7ssqWpXfvCW5XA6S+sYbbzz33HNKg9hstiYnDNIKI1MaZKakLR8sOJ1OWGxrJ8IEOEB2u13bIBDiGwqF5Bzw+/1V8vglO7zljYDdDwaDynmLjeedjRBCWSekTZBkBsHj8Wz2NugIBK7hblQptGfCCZJK9tHlcj311FOSCSNABJssNq+VrDdWWrExlpaWsOPpdHqzN6ysrJinIiciSQ1zhJLJpCSTQMTj8Xj101UeGbW80hHCbHU9ddZ+IYRQ1glpK9Tlxqv0Ec7NzXV1dTVsrnBNWYUBAyUbJpvNvrKBuqSjw+FoST1vNWh5g8sUxmIx7Phm54MU/TQgjb4WlpeXNQkCi8ViNBqVy6F6h7qClJlv7bSguKDU5ypnPiKEUNYJaTdEOITq2tHf39/b29vYFDCFQkFyBtxut5l7/s6fP//iiy92fJZ6axpqDmTU+KGckUhks5lNPR4PpNY8XojGicfjzSwhlUpJhjriopmZmRpPURny0cLa/AielUKN+KHKwxBCCKGsE2JV1FMjVS+EB+GGajecj6F0rputkHkJLpdLCoCogS63sEYhNqklcw/19fWFw+ESc5Xa+a2tA1NCM53r+JS6Q72uZ0eIZ1o4EgNbjrNCOUVNflkRQijrhJDGRUf5vt9yOsalpSVoTWPP/WXCSylWbebO9enp6ffee6+ir7eqfx0S2ZLJd0QHJycn1S/KzK8lL7ac/v5+bFi9n4Ka9/b2SskXRK31npZSEqdVpVfUqepVRocTQghlnRBro4z+FLLZ7JaC4nA4GutmHh4eNn/mOoKKwcFBmdGzPB+mJfVh+vr6Npu1Sm9yuZzL5VJneojdtrwESgnpdLre2qAzMzNKDfXGEkikmJLBwwkEnJ/KaJPNspUIIYSyTkiboK62XkvubzAYbGxaUxie6NGWXfitJRQKFQqFkpnbBQQ2xvevh8NhrLpVQob9tdvt8jhFplNtSU5OLSFNjZ3raElpUlHtxoZhiDFLARbj40klwMYFtWWATQghlHVCrM3MzExdRZpzuRwUoYGsAxCNRmVFyWTStA2CiEX6klOplPqxQ6v61yXdooVJ87BSKeYoIxxqmTWpJUEFDtaWE5qurq4iVhTNbfIkxBqlY74lwZuAi5d3MEIIZZ2QNkddbb3GKWbgso0lr0P0zV8Wplgs9vf3y88w1Iq+buT8ppOTk1hpa2doQgADKz1z5kzLt6S6xVYfAA07xxmOXXC5XM3XTsHJLCeDkfso40aYAEMIoawTsr2QiWCEGlUsGo3Cexqo36dkrjdZbk9XIpGIkpZd0dchTPPz84aJshnKfYyOjj7++ONoCtMKYjabhTpvlhYyPj4umhsKhRpOfSlBFmhYBj9a3uPxMAGGEEJZJ2TbAY9RNBQyXaM3+Hy+BpLXlc51M09ourKyoi54gl+lDneJrxsTb0hudMsnIUJwsm/fvldeeWXLVJMWEt2g/JQLBAJy1BByaHjWiTob9qhBEqKExvLQCCGEsk6IJZGBg0qNwho/lc1mu7u7Gyhdh4/Iuqanp03bJiXl8NbW1mR6+RImJib03hIpr2nAiqozODiIzYCeIkIzbZSFQMJut6sHASPQkgdHCBE1n8AoGAwaVt0Il5tSUdTk9U8JIZR1Qoj2qDM94Dc1fmp+fr6BhBAxKgkMtEpI0BzIcUliOmxJSUJQA63X1ZzQRGjkcDjc8jMEsog97evrC4VCppVFHDhlyEEymZTHODhweozQlWLnxsRREiwJqVSKtyxCCGWdkO2FWgXq6izHmxuY6lyZObXlHcabATUvn2sGYYbP5yv3dfirrvLqcDgUAW0JMgpZJi7Fnvb29uKEMaevI7ZBEIhAKxaLSU45jo5OqTsy9jcSiei9U4iflXGlrT0TCCGUdUJIa1hcXFTU0+Vy1fXZQCAAPaprmB08T7LAaym31yrC4XB5xz9eURKg1eBF/Z4SeDwe4+t5q5EJgJSijThkbre7eumVFjI3N/f666/LccFG6hdUJJNJrKKxaQfqvcSUcaUNjOomhBDKOiGWB0KjngOorql/oG6wyWAwWO8UkrKu8hGBJmFhYQGSWrGtJFm5BK/Xq5NIhUIhxDYtbApsQMlIyrW1Nfi6CSe6x9EZHh7eu3fvoUOH9B4UsbKyIgVPdV3L0tKSco6ZNkAihFDWCSG6MzAwoDhBvQINuYfr11hJRpEq2J6UVTFtETpJ/Ki48X19feW+DqXWY4pTGZLbqvx+CeTKizbm83mXy9XACGP9UJ57HD9+/NixYwa0mGSn6Pp0SIkMcRTMXIqHEEJZJ4Toi5QIFBoop42P11vNULIIapw5tSWMjY1VGW4r4wsNmDIpFothyaurqy1pBOk/rpgqjSgLvo5WMsPBUkYUIGRKp9PhcLiu6LExent7da3eKLWATP4MihBCWSeEGIS6mngDE5TOzs52dXXVJS5+v9/MBS7y+fzg4GCVN0xMTCgj/9Ql2LWtEihxVKvmRZJQYbOUkrW1NafT2XJfz+VyXq9XnYyE/+12u94RTiQS0bUIKWIkJQg0bPYlQghlnRBiUqLRqGKcjfV2j46O1mVI6XRaZNfn85mzTWBL1bMp4vF4ua9rm14sxVgqJtAb0wLV+/XF11uYD5PNZqWYem9vrzpRBA4dCAR0rVojQ291KqypLgKjjO4lhBDKOiHbF/VQNlhCAz15ECPokcfjqf2zStXIlk/SWZGFhYUtZ4tEu6kL1asDHk2SjNGY9ZbU1AocUJwJLperuvJKPkxLtjCTych8VSWmfvnn4yLqnQegLqSMUk9Pjx4Ll257uRhZBIYQQlknhHyMet6fxoqgF4tFn8/n9XprHN4Hz5NCNA6Hw5xzJNVS6AbKKONlS3A6nbVPMlUFu90+MDBg/L5LznQtPcfSvW1wPkw6nZYwabMHIKlUClul37hMnBgi05r332N3lClLDSjlTgihrBNCrIEkKCui2ZiCwI1cLlftxRyVlZqwFODljWyKZDJZy15XLOmIUKSWj1ent7e3JZlCMu9PjRk4kg8zPDxszHxJiqlXn5QqFApVH3igSXyreRUgSbAR9Jh+lRBCWSeEWBJogToDe25uruHlQKRqnOcS75HRgUCTfmhtKRaL0MEa3wxV7ajElrk01UEY0NXVZfykoRJ+1D5DbS6XQ1BhQNClmPqW51g+n7fb7ZqX6FGQokAzMzPaLlZ5UBMIBHhfIoRQ1gkhn6KuIN6MKECP4P01jrNU0uV7enpMOI899qJ221Mmui8BWtlwng82oCXVG6G5cOK6PgI5hmiGw2H9jmPtpi4kEglEgzptz+zsLLZE2zKR6hmFm38sQwghlHVC2gp1wfXGhpmqF4Ul1Jj7rszKpPfEkw2Qy+XqSqXAjqtnhFWAxTaWLxGPx/FxXcdKVtTuxgK2QqGAoCsUCukxCGFtbQ0hRO2mLvj9fp0KqkgdegQDGi5TGXXdcCoaIYRQ1glpZ9TDTJtUHKlsWEuSANRQukuhYiYsKR0Oh+vq2IbDKbk9arq6uhpwbhnoaXD9vkQi0XAVGpnkFaKvra8j1BFTRyRQl8Xi2OHsqj2fpy4kMNPKqtVDS001QSwhhLJOCDEL0o8rwI2atJDJyUn4ei1z+sDpTTunKeS73lQHtFvFIadShb2uVoXAoQ0rTiOqa3yCTW1mgqdIJOLz+bTy9UKhIJncWxa/r8js7Cw2Ro+OapnHVKuJvdRXnwmHcBBCKOuEkNYDoZFZZoTmB8/B12uZ3BTrlRnjWzhhZxUac0RJNy8He5rNZmtfjsvl8ng8Ru6vHIsmE+UR4fT09DT/qCSXy4mp+/3+hoW7r68vGo1q3lCjo6MaPvdQBo3oVL6dEEIo64S0A+oajpCk5vsjoTI2m21LX89kMjI6Eys1W9n1WiZIqkgymaw4a1JdKTHBYFCPet5VAiesDoes+TWOjY3haDZTfxDbAHOV1PBmvB+fdTgcmifDyDAPRBHNLwrnvDLagbOWEkIo64SQalqjHiIZj8ebXyakrRZfn5iYMG3Z9dqLx5cAVa04axKocSIh6aE3LC9Cxk1qVTdwdnYWlrzlod/MXyXPpK6ZcTcjkUho3mMtgQ3QpKGUE0OnDHtCCKGsE9ImqPM3tKp8F4lEtvR1pRtVwzxgrZiZmWk4boF0KhVvSsD+btnxLKnMDVe+b2BPsToNk0YWFhbsdnsD2U2S9+90OrWaG6i/v1/zTmsZTNx8KKXUgWnJHFiEEMo6IcRKlEyQpFUS+djYGKStuq9nMhkpiGG2suvYmCY7m+HcSq2PkpSY2dnZ6m1iZGqEzPWjyRMVhXQ67XA4qu9mCYgWpHE0fKRQKBQa7uav3lyTk5NNLgcbVtfzFkIIoawTsq2JRCKaTJBUwsjIyJb962I/JrQWCFkzBVIub2SYqMfvqgmFQlDJKiZnWEEYyTzRPOsGEaDL5QqHw7UMSIDWS3qJ5gXmsUBshoaDIpLJJJorGAw2s5DV1VXlTDDbMyVCCGWdEGJGstmsuhtYQ2faMn8dIiVGC1fTb674Bmi+c/3yRufuZikxMPLFxcWKn4ILGlYQpmsDPR5rYN/RgH6/v0pYAmCr8mBnampKjx1ENIhDoOFOYWubbDHsqZwDmozrJYQQyjoh2wJ157om9S4UpD7MZmJ6WTXputkqw0xOTmqSO55IJCpOdCrT15frWjQaNaYgjKTc6Jo2PTo6imBss7qQa2trkhAyMjKi0wbgjMJ5pWEkgKsDG5xMJhteQn9/vxz9JnvoCSGEsk7INiKbzeqRuS6MjY1VT3KQlGUQDofN0yaadK4rzSuSV47X6y15pCCDPg0oCINQBCtCnKbrWuLxOIy83G6h0TKHbr3TlNYLmhfBEiITTZYmR2dwcLDhk0qp78mEdUIIZZ0QUgfDw8PqqXy09afx8XH4+mbzLmFdSsVDU02ThM3WsDBLLBZTR0QKeBErUhp8eXm5ySlFa987TSbD2pJUKgVDnZiYUL8o5V80nPq0erioVaWjtbW1Zmb8lYNr2hnBCCGUdUKIeSnJXNe2Qsjln48jnJ6ervjXpaUlEVloUPNltrVCOtc1jFsymYyU/ysH4YqU3MbqbDZbw323tSOje41RRuw4dhA7JY0pz1JwrOua3rUZEBto9QxBRlk0Vh99cnJSqQvEhHVCCGWdEFIf0tWq4YSmJSAAgJGPjIxUXLJM5w4Mq4VSo11pW6UE+y5Z6RW72NEIeENvb68BFbilzv1mCeWaUywW+/r6sFJ5zGJw17JUcqyroGT1IAdHqoHPKhXWNZ+ziRBCKOuEtD8QGvVQyJK8BU2An0HUlB7WEosNBAJmm4Nd8851YXFx0eVyVexi93g8kHUDel5xIIwvSAJff+SRR1577bVYLGbwoUyn03a7vfngZGlpCYcJh6+BzyrpXiacuJcQQlknhFgAKJR6Bh+tppMscZ3u7u5gMFierJzP52X4nakqOcbjcT0Su2HJ6iI8ag4dOvT888/r2vGMxseKEBUYHA3CVo8cOfLcc8/pEQpuydTUFCS7ejXJWpCztN4cHhxx5YmKAUMFCCGUdUJIGwKfkBodgk6lQmTCIK/Xm8vlSv40Pz+vVCI3T/K6Hp3rSuhSPnfS8ePHd+3a9fLLLzdTIrA6qVTK+Iyjvr4+ybDCCQBpHhwcbN6b6wUrxV43eTSlfH69U5lKrUyhsZR3QgihrBNCPq4LrhZHnXq4s9msz+eDkZenJSh5vQYMsqyReDyuX9pGsVhUilcqPPjgg//0T/8kc8rq8XwDe2RwutHs7KzMBCRVFLHXUF4EKtXnuNUjHO3p6WmysruElPWOK1CurM7OTlNNKUAIoawTQiyGkjuuRxlHtaRiRXa7vWTKJGVaUz2K0jRMMBjUtacfjaAkNIMnn3wSvn7q1CkRXM2zJmQwsSYDLmtBmam05IBOTk5i7wzOX5fBps1kGUlCC6grjlKGUONA8yZDCKGsE0IaZ2VlRV2uRKep4EV6wuEw1lVSVjydTksdSZicHv3Kjemm3oMCEaVEIhFp+RdeeGHXrl2vvfaachR6eno07ISWeTSNGRiAoyzR18DAQPlfcawhr319fUZmPSE0anKwKc7begdhK3OXajXZFiGEUNYJ2b6oEzNgzLrWw5ZafiXeI1NFSjekSXIG4JoGFDrEKuDlr7zyCmT9pZdeKkmPGRwc1ORY9Pb2YmnGNKzkNblcrs10XFJiYM/aVsmsDk4whBANRwgLCwv11oTx+XwsBUMIoawTQrRBnYsic8Lrurp4PN7V1RWJRNQpNzIe0TzJ69BobJIBK0IjIHR5+OGHn3rqqfJaMWgo/LXJ3KTu7m4sx4B9mZubkyztLYdU4p3YqrGxMcOqSY6MjDQzdBjRBXatJImrepvLETS+bCUhhLJOCGlDRLMU9O71hMwhPIA8KT3HsCilM9IkfgO9M2wqH+z7c889J2nr5bhcrpLcobqCAWPm5cnlcmKoNWZS4dDjBMCGGTZVE6LQhvu5EVfUXjFJamUKhg0VIIRQ1gkhbY56pKndbtc7q7hQKEDUHA6HkpwNaTNV5XUZFGtM16+4oJQG79gEv9+/srJS75LhxPhsMBjUexfk2Ui9Y5Sxy3qMqd3sgGLz6i3CKKytrUmSWC17J28WjJy6lRBCWSeEtDMwDBnoaVg6CrwnGo1ipXNzc/LK4uKiManzNTI9Pd2Y29WL7DjMFW0iaf2bKTucWOoh1ojkW4fDYb0bSl2rsS7wEY/Hg3DCgELsuVwO4ZByvtUFgqUae8pl3lPBsOcGhBDKOiGk/VHPaQpSqZQBK4X9wNdh7dJnKXUGJXPDsITmKgQCAQOGZmJP0QjKvEUInJQK9OVA5UdGRmpUWyl5rmtmEcIqCfOg7M2EbXa73YB+6JWVFYfD0cCjG0kVq+XRgTLbFzB+KihCCGWdENK2qBPHJVXamBIi8Ce32w0tltwbZbCpwZNuVgRWB480JiqArapFEKtWH47ysafYsC0PkAQ/utawlzKFfr+/yeAKwaHT6QyFQnoL7uLiYsUpura8OmSY6ZaiLwGShFW8qxBCKOuEEC3J5XI2m00xworVsvUAfhYMBmXWJJl4UjZgbGys5W0CfTQgmUHS1svLq8/NzcEsN1N2tBh0vIqyDw0N6Zo5LQkwiBwaSICpKMTYYOxvY5kqtYPopUp9yc0YHh6u5aJQZB07wlsKIYSyTgjRmJJkmIbrkDQAvBPaB/+Du0svZl318nRibW3NgKAFmr7ZzDtwcai8ekRBCZBCHLWKyi7pNJqYdDmQXRkTrO0I0VQqBZMOh8O6jnJGU3u93rpWgWaU/nLEtNWXLMfF6XTyfkIIoawTQrRHSUSRUYNGDpKDmktVx2Qyqcxs2vJReogi9C5nub6+DvGtUmMRgjg0NFRl7Ck+Dk0sUfZgMKhf5rRM7anH6ALsxfDwMPZIvyl1QSQSga/X1ThSNKn6GAB5SCKTfPFmQgihrBNCtEcZMijUW4+v+bX7/X6IjmQdAI/HY+QE9RVNGtardyNABOHi1d1xZWVlYGBgS2VXNhXHTqfM6eXl5c4NGigoWSPpdNrlcvX29uq3ilAoVFeBTsSQ0mVe5SOKrOM05s2EEEJZJ4TogpJ326rccanADfWUqYIMK3m+GalUSu9GkDavZTAo5FW6zKvnsudyOWilTpnTXq8XK9J79K3UssRpMDo6qscJIGFY7TV/8H6EjtUnDqOsE0Io64QQI5AkhxZO75LJZGCEhw4dOnbsmJGjXTcjEonolPwtyGQ6NU6TeXmjhrp6KquKFWMOHjx4+vRpzTdVxpUiDDCmXlA+n8eewpL1KCcqkyXVPrkpwsjqk8JS1gkhlHVCiBFAYtQTatrt9urj6nTahnfeeWfv3r0vvfTSqVOnRkdHW9ggUEa9q0kiOCkp4Lgl8/Pzvb29m/n6rl27nnzyScRdiAQ0PCgy/NfIwccAq0N4EAwGNR/DIAWIajy7lNHP5aV7KOuEEMo6IcRQUqmUOj26Vbko77///p4Njh07VssUkvqRTCZ1NdRoNFrFAquwuLgoU2yqOXHiBGT96aefVurWa1JaJxKJtOpkwBpjsZjNZoNYaztqFktDaFpjphPWLrPJUtYJIZR1QkiLKank2Kq+7fPnz0M6H3jggYMHD7bW16G8+s3aA5luppERXKmV/Y033oCsP/PMM+oj6PV60YD/f3vnAtvWdeb5mcbYejLFott2tp06ixQ7zSLAuIti4elMp5nZFFt0g9nMTlEEU7QwvE1faTOG6zZpmtauZcd2FNuJ4zpB4jgPO6kV+VE/GlGypJCURZpDcviwKJoiWT4iUiVlRpJFytTbdvZffZu7t5cUxTdl+/+DEZCX916ee++J8PsOv/Odsj07nU7LvNKaZgQVZmpqyuVydXR0VLdk5OTkJHy9v7+/GLOXGdh5b4Ii6yaTiX9ACCGUdUJIzVFXcmxI8roisocPH962bduePXtqWtGvMPAzmGLtzg8HNRgMlZxhfHxcKsb86le/gqzv378/7wxUhARl5JPIxNb6rOq6ZNjQ29uL2KOKieyw8K6urmIms8rget6eIKvGss46IYSyTgipE/Pz81IBQ5m2WEaeRlWIx+MnTpx4+umnn3jiCbfb3aj6MKFQqHYRi8PhwE2ufHpAJpOByDY1Nb344ouLZbRD6O12+/DwcJF3EvESDtHpdLX7baFUkskknBg3rVpJ+VNTU1I2tPBueED4HyFv5crBwUHKOiGEsk4IqSvpdFpdeb2jo6NRhc+lDskrr7yyc+fOzs7OKs6bLAk4bo3uwNDQEC6wKj8dSGwjTnm6INBTRCCFIwSlamHeZVYbCBrm9/vb29sRv0G1Kz8hQpGenh74euEYxuPx4G7gS3Nvu7KyLP90EEIo64SQOpFIJNR6ZzabGzWwLWkG0ND9+/efPHkSXlv/lkxMTBRfY7FU9dTpdEajsfJTSeF2iCzsc2BgQGqYFMZmsy02CTUcDi+5HlADQezkdDoRmUCyK/9dYn5+Hj18sSmkAgJFCYQ0EWMqlVLuJ/9uEEIo64SQeluyAtyoUd4mVVNAS0sLbEmv19c/MwdBAgKYWpxZMmEqH7kXWQ+FQkoYgC0F6jwqSN62OqMdx3Z2dha5ZlMDkRVe4dDoIRXm6uCSLRaLy+Uq0MmlMI4mcx1dUbmTyydfiBBCWSeE3BJoFs70+XyNakl/f7+0ob29HXYLZUdj6rNGj4Ldbq9F7XlZ077yGpFSySe3eA5sEn65ZG6MLP2DmGRqakpOhaBoeQ6ra0in0+io6BjBYLASXZb1TcFi/Qp3RtLD8I3KRlncSmjU7A5CCGWdEHKLAvWRdeYVotFooxqjrLFqMBgGBwehkh0dHTUa7c4LtKzwyGt5QA1h0haLpcLzSA3BxSpdzs7OhsPhrq6uJZX9zJkz+/bte+211+q8ClKFZDIZm82m0+lwmZVEcehmZrN5sR865Ece9WpZ6A8NL51ECKGsE0JuXWZmZjTZz8lksiEtgRU5nU7F16FTkUikra0Nmqse6awpCBJqUfcdlwBfrzATRmR9ycQVCCVcs8BA+4EDB7Zs2bJr1y5YO2449r8hxteF8fHxypXd5/Ohg+WtdCllYXCXxsbGlI3KzWxgKEsIoawTQm5dIEBqt4Os1E2Oc1HKwEOnJheQrBiPx1OfjGH4a9WL0kjRG/hl5bJe5OAuAoNQKNTT06Mx9VOnTm3fvh2yfvjwYWVje3s7bi/09EaxdsllR5AJ7S6vYgyeSGdnZ960lmAwKEsgKXdDr9c3PE+MEEJZJ4Tc0kiFQQWdTlfGCjtVAYak+LrRaJQk8pGREXinjKfWWiihuQgPqvstuArEGxUugSmyvlh1l8WA3LtcLqVS58GDB2HqO3fuhLXnDrpjN0hw8ZXaGwtiKrfbjV7h9XrLiK9wZ6D7uNjcHijZRMpPTBaLRe4POgb/VhBCKOuEkMYgtfzUJUSqUuW6PJSZr2iGMulTRkP1en2uYFUXnB9mXN1zSgRSSQhUnqwrAppIJNAGaDpk/dVXXy2c197e3m632+Px+PKvf4LuEQwGod1ocKkTQNPpNHpUbnKLFDZV6lr6fD5lhi7/UBBCKOuEkIYhRUIUJHG8IS2BJMG9pBnd3d2K487Pz3u93t/85jfQpiquS58LvkWdtVw5srZOJSsQDQwMlC3rQiQS+fWvf/3mm2+eP3++mOoxyu8bcjeW83A72jY4OIimWiyWWCxWfFMnJyfRz/v6+jSHyMTrQCDw3vtZTLJ8GP9KEEIo64SQRuJyudSiZjKZ6lw/UY1UKJfFIzXV9GSguhb55Yr84SuqOK6M29jW1gYvLPsMUi2nbFlXliyVKaozMzNwUMQ8p4tGkmTgxI1aaLYYUqkUug2sGp5d5OPDbmazWVPSEf3tNwvgYnHPlZuwnK+dEEJZJ4Tc/EDpFEVWBlYbOL6u1HOEfmmSHPAWsYTMPa1FffSJiQnN+jhViT3KnrwrcVTZsi6pHbm11WGfoVAI1l78WLucB48mmUwuzzwZXBR6BfoMFLyYKbm4J16vF8GM+ukoZRzV1RsbVSuJEEJZJ4SQ/49msSR1ZYz6o6xv2tbWlite2NLT04OPfD5f1cUxGo1WsZKjDNCWXVGkQlk3m804PBKJLLbD/Pz84OAgdivJ2iVPqa+vDzcK4c1yizxxRYhDZA3XJWPOeDwOv1f6GLqTVDXFPZcFX1kQhhBCWSeELBfLUSpgCAXWkakDsg48gEfmXSYJG41GY1XWpdfgdruruG4lGgntKy/yqUTW0+m0ZBMV89V40DBvh8Oh1JApHtgt2hkOh/GNyyfHHU/Q6XTKrNlkMlmgYeLlSpFNmWmAaESpUIQX/PtACKGsE0KWo69DNBuYvy61UAr4+nsLVVxE2fv7+6tVykaS16t14YFAoGzhrkTW5dhQKFTqtadSKZ/PpxQaLwk8qZ6eHlhyNBrNZDINd3c0YGhoyGAwIKJAd1qsMs/MzAyajTsmUZ/JZJLyOEo0cgOtIUUIoawTQm5mYKhiKup8mALj6+Pj462trdu3b9+zZ4/Vaq16e+B8SoZGgbIqELKuri7s6fV6q5LLnk6nc6uFlMfk5CQa5na7yzhWfl4oY8V7qfIOKvnNAcFPPB6HwkoN8vLcHaJst9sRsSSTyYmJiUZZL756YGAAF2I2myORSG5cJ5MlEPjheSHMgKm//vrrhw4devTRR7/yla9s2rQJB/LvAyGEsk4IaTywFk3+urJQkYbnnnvuwx/+8B+puPfee0sdyl2SWCym+HphgU4kElBD7Nzf3195BQ94aoFs75KwWCxoVRk5RfLbQhk59HJgFSfLwm4RODkcDiWTu2x9R3dyOp3oJ8PDw/UvtILwEhEdrkIKPmoeikR9+C8e/YMPPnj77beru/eaNWtwLP9EEEIo64SQZefr6oWKhO3bt4vBrPx3H1hz94c/9ef/T2s+9alPVd3XU6mUTqeTlmjK7eWV7J6eHhnMrjD1HNJflcrusNLCEz2rK+t4fDJLsoqZ92omJibC4TCEu+wRd011SDwvqLPH40E8AFFOp9OQ+FqPwaNToYe0t7eLtSthA75dr9c//PDD0p9X3PbHq//zv7/7zg/hBd4iOqWvE0Io64SQZeHrmnqO3d3dSukP2JWozNr/+Z8ud/7D9fP/hH//+tLfi7Lfe++9VW8PFEpRw8VG+jUqJvn3+G8ldcrtdnvlqfA4D6QQN60+si4VG+uz9CYeBEIRRDW4zxIhVAuEW3jiuAqc2eVy+Xy+YDCIW4EnOzY2Vi2blxx9BB4SMyDOzGQy+LrbbrsNPfkrf/fnybfuk+79b6/8d1g7Nn72s5/l3wdCCGWdELIsfF1ZUlTQ6XSyxuf9998Pa/mbv/wPc73/W1RG/nXv+1sZgKxF/jqkWdaYzFuCPS/ZbBaXIJnT4XC4jARuyKjNZqvcC2Ut0lKzz6GnOCoajZZ0lEQppR5VrZhqaGjI6/XiSZVaDrJsoQcmk8m8ALTb9T4IIfyLgI9cKnDHpH7/q6++umfPns985jPow5++408n3v5f6u490PI/PvQnK2rUvQkhlHVCCCkHpYSiokfJZFJS1Q/+9LNqlZF/UBx8BOOpRWNg20q9mra2NnhhkZYPP+vs7Gxvbw8EAqXmjo+OjsLtKo80cOugkiUdFYvFcKVofPGHyHzWCqeWVgsES+gtCDkcDodMJzh9I/CJT3wCfXjz//kvud37S2v+rHbdmxBCWSeEkHIIhUIazZIkgVPNn8u1mTV3/97jm5qaatSYa9eueTwepSUFSsTkHhiNRvV6Pa4F7lhSbkw8Hq88EV/G+EuaUlmGrFd9aml1n10mk0kkEgiZ8AjqM/peBh/96EfRh/duWJ3bvR/44idr2r0JIZR1QggpB3VJFrBq1aq8Q49Txn+UPIFDhw7VtD2wZ6U9bre7pJroqVRKvLm7uzscDhd57MDAwPDwcCVtltVM4anFHyIzUxGcFH+IZPaXUe2xUWSzWdyZoaEh3GHJSKmw4Ezl3HXXXTIfI1fW777zQ3Xo3oQQyjohhJQMdErx46997WtQFnh5/xtfVKvMxn/+C6mYUaM6JBr3VWY0ms3mUsurz87OBoNB+HpbWxscsZgGOxyOxVbVKRJ8nU6nKz4DXvy++GFy2b/sBVOXFXigo6OjCFcQKOJJeb1e3Ac8aEQjZSyzWiRHjhzZt2/f5z//eakDY3rhHnX33rth9e/LH61cWYfuTQihrBNCSMnAUcSP4TSStg6heXztXW/t/us3fvHf7v/bT0iJmObm5vq0Z3Jy0mAwlDTlNBdloB2n8vl8BXR8bm7OZrNVsuhSNBpFU4tMtQeZTAb7F5/p3t/fj/1xFbdCb0RAMrkAnH5kATzK2PtEIhH/UgQCATwR7BwOhy0Wy6lTp1paWnp6ei5evHjnnXdK90b8ear5c8e3/5UkwIDHH3+cfwoIIZR1QsgyRRZmhxHu3btXsyKS8J3vfKekpJQKUU85hXDDusobVJ6dnYW3mc1mqfaYSCTyXsXU1JTD4Sh73LrUGo4wUfndoMiTSzX6dDrNjlokEH2Xy9XW1tbV1QV9V2YUXLhw4Y477sjt3vfff//09DTvGyGEsk4IWb5ACm02G6Tw0KFDX/3qV1etWnXbbbfdfvvtX/rSl1paWhqiMuqSNRVWWsxms16vF0ot81BTqZTG2qHCbre77K+QCaBFTm/FV2Nnk8lUzM5oKnbW6/XsosXEZojrpEANOszw8HDuA71y5Upzc/OaNWtWrFixcuVKdG+mqhNCKOuEkBsGTUlHYLfbZ2ZmdDrd1atX698e+BYMW1rS09OjrN9UNmNjYy6XC5cjSe3JZFLxOSklXrYm4oQWi6XI/aWUeDF7opG49qovH3uTxZnxeBwxWO5QOiGEUNYJITcb0WhUM9VPr9fjv2fPnm1Ike9MJiMNkJSYSCRSrTAAcQgiAcXa5+fnw+Fw2VoscU6R4UR3dzeupRgNlRyYyqOUmxKZmdDR0VFgKJ0QQijrhJCbjXQ6rVlk/oUXXti9ezd8vSHj65oq7NDiaiXQ48xDQ0OS3wzhkwqD5U3lzGazOEORNV5MJhMupBgZxW69vb3sk+pHhtvidrvF0c1mcywWq+eECkIIoawTQhrP3NycJGAILS0t69ev/8UvfgFDaoivg0gkogz56/X6TCZTdQXEJbe3tz/77LNnzpwZGBgYHR0taaRW6s9MTU0VsyeuYskSNPIISlo+6WYFOj48PCy5LjqdDjcQjl7qsrWEEEJZJ4TcVITD4WPHju3bt+/AgQM/+clPHn744UceeeT48eNms1kphnj+/PmOBd555x31sdiOfWD2Vqu1tbXV7XZfv35dPurs7Dxy5IjNZtN8nRyi3nL58mV8ncFgkGPxqdFoVFJiQqFQLdIeRkZGTpw4Ibny8EK0s0gvhNzLck5L7ik5M0sWeJE2jI2N3bI9EE8cQRq6EBwdfQzRC2KqKj50PAL0uosXL+bth3l7r6ZPXrly5a233uru7pa3aFuHCnW3WbJ7E0Io64QQUjKwkM2bN+/YsaO5ufnhBb797W9//etfj8fjsgM+tS+gXgoUirNu3bpEIjE1NXXu3LlLly7t3btXqSx+4cKFd999d/fu3eoJncoh6m/funUrPOmNN96ANMuWubk5nEcZ8rdYLMWMZJcKvgUBCax9cHAQlyaJ43q93ufzLVb/UTCZTIgilhwyDwQCS65IKjkwMLlbrcvJIDr6hsxVQHiG217qrxxFAoFGIHry5Mm8/TBv71X3SUg23iJMhdDLSdDIcwug2fifRekJRXZvQghlnRBCSgbO9Mtf/vKVV16BfDz00ENr1679wQ9+cOLECRkmbGpq0uwPEd+zZw8cSK0mkP7jx4+rd3vuueeCwWCBQ+BnEHpxpm3btqmPHRoaUqrEtLW1aRyoKkCz4OvKzE6IO1rb29sr2e1QMb/fn0wmNV4Oy0ST4OKFT44YALvhvwX2kTT9sgvU3FhIGhJuqdxhKa2D+1OHRJeenh5F1vP2Q3Xv1fTJ3/72t9hZeovmf4SzZ892dnaW170JIZR1Qggp2WbgJT/84Q+/9a1vbd68+Wc/+9nrr7+u0+mgU4cPH961a9fRo0flp/yrV69CQS5fvnzw4EFFTaD1W7ZsgbLIW6fTuWHDhpaWFnmb9xAAV1b2Wb9+vSZXHnpktVqVIXaHw1F1sRNf16QuiFZCx202m4g77o/b7Y5EIpKvgre4M4Ur5xTj9DKurP694iYDtwghEKIRk8mkTPCFr+M21nPCqCLri/VDde/V9MkrV67g/wXY9sDAwDe+8Q11qgzcXX4KKK97E0Io64QQUrLNtLa2bty48ac//emDDz4IRzl16pSsxAmbef755/v6+rAPPHXr1q3Y87HHHoOdQF+gvM3NzUNDQ+pzTk9P79+/32g05j1E9rl48SLe4gW24Hvztk0967Sjo6PqQ+zwMFzgYmEAbCydTiNiQfjR2dkpbWhvb3/hhRfgnQWqfY+Pj2Nnj8ez2A6yyinuzE1WixBdRerZIxSBneNe4fZKlkujKroo3TtvP9T03tw+CU1/8cUXz5w5gyBWOSf6NrbL60q6NyGEsk4IISXYzOXLl6PRKDTru9/97jPPPKOMasO6Xn75ZVnlB/sMLvDkk086HA5s2bdvXywWyz3t22+/ffTo0dxD4C4ymD03NyfpAclkEsFAAf/r7e1VGuNyuapbDx46brVai1FJOH0qlQqFQpCw3bt3I5iBqMHa4abxeDyTySjmjRhAEu4XO5XkyRRZCHLZgutFWIKnj7BEGT43GAy4LtwlfLTcurem6+b23sX6pNvtVrK8cAa1fFfYvQkhlHVCCCnE2bNnN23a9Oijj544cULZuHPnTpiHjKz//Oc/37x5849+9KNz586p1+6B5SQSCb/fv3bt2qYFcCpsxz67du167bXXnnjiCSUxRn0IfHfdunWypbW1FV/04x//OBwOF25nMBiECIqvd3Z2Qo6rOCY9OjoKsS4+BsC3Sz14HBiJRGByRqMRzZMlNnGqgYGBw4cPY5/FzimTaJVZvDcEMzMzuF4ZOEf7IcFyyZImhDAPdr7cCqLn7d7SD/Eit/fm9knsjNgMJ4GUyw5vvvmmZnpG5d2bEEJZJ4SQ0rhw4cKZM2cglEePHj127JgyxB4IBJa05NnZ2eJHVSH3RRoe9oQXKkPsdru9ilnsY2NjVqu1+ADAYDDAU9UuLjkz8O/+/n74+rPPPrtjxw65aVB5h8OB7fh0ZGRkampKps/WotBN5eCu4lZLqRzoLLwcF6vM99XpdGazGb4ei8XUPybcTKj7JEIURdMrPBUhhLJOCCFVAxJmMpneeeedrq6u039IR0dH4TonNW2Veogd4ljFWuzQ0+IDABlch38vtgPU/9SpU/A8yZzx+XzYgmAD9xPxz5YtW5555hm8hfjiSz0eD7QYu8GAsf/o6Ojk5GTtVB4xRjablWHycDiMtrndbgQYkHL10rZ4jT6AMAMNw/UiALsp1ZwQQijrhJAbEsgZ7G16ehpKqvixAjSuuouMFs/ExATMUmlJb28vvLNal1xk/jrA9xaoue71etG2vA1DCHTs2DG9Xi9D1319fTabDdZuNBplGqsafEXXAvjUvACu3bUUMGzz+0iEAHBy9XOEi2MjrgLRAg5BgyHuIuWIE+jlhBBCWSeELHdCoZAUgUmn0+pZnopH4tMCRVFqSiKRUHIzpPRKVSaeQlVhw8UvaLrY4DpuHT7VFMkRpMJ6JBJZ7MwQZdzVbDY7MjKSSqViC8Ck/QsMDAwsKet4Lv73iUajOBwtwdlwdThzHaqbE0IIZZ0QQuqB0+lUtBLap/ZjdSJ7QxJzIZ3qUX+dTgejrXxIGJGJ3W4v5jxWqxXfnjdckQVK8655ZDAY8JF6ti4hhBDKOiGElAMsHHIJ9VTeut3u0zlAlKHyDWnh+Pi42WxWWmI0GpXWVuLrEPElR6DFyOXHBw1SSV1ZxF5hamoKft/R0cGuRQghlHVCCKkC2WwWvq4217xZMUCv1w8NDTUk3TkSiagnR8KSK8zPmZiYsNlsS/q6xWLJO7iOqEZWP9Vsj8VihUuwE0IIoawTQkhpjIyMmM1mjYUnEgnYea6yV2Vsuwzgxx6PR8mKwQu8XWwCaDFAwe12e+EzwOnxRdD63I+kvKPmpvX19aFtgUCAnYoQQijrhBBSNaLRqMPh0Kgn3obDYShpXmUfHh6ufzulVoyi7Gib3+8vO6Uepm61Wgvnl0teEOIZzXaIPrZrauaYTCZslEV5CCGEUNYJIaRqBAIBl8uVm+UyOzvr8/lyyzuCnp6ehoyyI07o7u5Wp9RHIpHy8nMg+ohSxsbGFtsBl4/zIzjRbJeqL+plSiU3BhtZj4UQQijrhBBSfQYGBtxud96PJicn81Zkl1H2vEUMawrUPBqNqhPZu7q6oM5lKDsOQZSSTCYLhDG51RgHBwc1BWEymQy2dHZ2siMRQghlnRBCagJkHVK+mPJOTEz09fXlVXZIajAYrPOgMtoJaVYvNoTX5Sm7z+dbrOINzoZIAIGBOt9mfHxcM5dU9D1vgjshhBDKOiGE1MPX31tI9cY+eZUdG10uF0S2zsoeCoXUReKh7LFYrFRlj0QiXq8371EIADTj6NgNF4svVbbgpmEfv9/PLkQIIZR1QgipIbDSvPnraqamprBb3umnoLe3t7wR7rKZn58fHBxUJ8Z0d3eXquzJZNLhcOSdsWo2m2Hn6hmlsv4R7oO8tVgseFsgnYYQQghlnRBCqkMgEIB9LlloZW5uLhQKqRNR1ECdfT5fPZfzlMQYtbLjNVpYfH7O6OgoLjy3pCM0HbKOIESxf6fTqa79IkP7XLuUEEIo64QQUg8ikUhPT08xtczhr0NDQ1K4MC9mszkej8Ps66ns6oox8Gy4dZH5ORBuNDidTmu2+/1+nApnlreIAZSq6rg0+RZ2G0IIoawTQkidSKVSRqNRU028ALDhxdLZpcaiy+UaHh6uW3pMMpnULO2E8KOYTBXIt8Vi0dSS18w0hc3jhFar9b2F8XhJ/mGfIYQQyjohhNSPiYmJIgVXYXZ2NhQKqQe2NbS3t3u93gLVzavLyMiIJJSry03GYrHCST5S0lFTIkZmmioFLnEhUqtRtjscDnYYQgihrBNCSF0RbS1cIiYvw8PDNpttsYF2mQMK8a3PWDtiA1yFujFtbW0ejyc33UVNOBzWlIiRtUtlTVPJ/EFwIhkyPp+PvYUQQijrhBDSAILBoMViUYqfFM/MzEwoFDIajacXp6OjAyYdj8fLOH9JSBEbdZ1HSV+JxWKLpdQnk0kIupK7jzPA8g0GAwwep8LhqVQKMYlmQVNCCCGUdUIIqSsjIyNwbrhpeYePj4/39fUtVjpGnaMCCca31G64XWbEms1mzVdbrVaoee73Tk5OYufR0VF5K1NL/X6/ZL/grZRxrHOBeUIIIZR1Qgj5A2ZnZ51Op91uX7KqY2Hpd7vdi9VoV5dwsVgsgUAAElwjcc9ms7kD7QgnfD6fouYCrhdXHYvF5C0iCjTv0qVL0ki5ljov4EoIIYSyTggheYCz9vT0lD3ELsC/Zay9q6vrdBH09vbCofGlVU+VWWyg3WAwaOrEDw4OSu5+Op2GoB8+fPjLX/7yqlWrPvKRj9x1112HDh2qJIYhhBBCWSeEkOowOzvrdrsdDkdV1DmbzUajUQQABWajamamOp3OUCgEd69i+XY0IxwO56bXI04IBAKTk5PvLfwsYLPZ8Lq5ufmDH/zgH/0hq1evRqvYPQghhLJOCCGNZ3R0FCIbDAarNaKMGCCRSBQ/3K7MTzWbzR6PR/QdJl1h2szY2NjAwEBuGwwGQ39//+9+97unnnpqxYoVsPNP3/Gnj6+9a++G1d/5xztX3PbHv9/y6U8zeZ0QQijrhBCyLIAWQ5HhtVWvhZLNZoeHhyHNxY+4q/Pd0SSLxYLzAg4AAATsSURBVOJyuXw+XzQaRQyQTqdL9Xix9txJsR//+Mfh5ff99X+83PkP18//k/wzvXCP+HpTUxM7BiGEUNYJIWS5MDMz43a7jUbj0NBQLc4/Nzcn4m61WnU63enKwBmg8ogBzGazCD3o6+vzL8LFixfPnTt37Nixl1566emnn/7e974HI4eXJ9+6TzF1+bfxn/8CH919993sEoQQQlknhJDlxdTUlNPphARD2Wu6ztHk5CS+Au4O1V6yFmR1aW1tfeCBB35v5Hd+SGPq+Heq+XOSvM7OQAghlHVCCFmOwKQ9Hg+UPRKJVHH2ZwHm5+fT6XQ8Hg8EAna73WAwLFkXshIeeughyVbPlfXj2/8KH61cuZLdgBBCKOuEELJ8mZmZ8fv9RqOxv79f6qjUmdnZ2fHx8VQqNTg4iJb09fVZLJbe3t6urq5SM+A17N69+wMf+ACk/F9f+nuNrD/wxU9i+z333MMOQAghlHVCCFnuXLt2LZFImM1mm82WTCaXVRlyhBOIIjKZzMgCQ0NDsYKg/cFgUK/Xd3R0fOELX5DBdfehexVT3/0vfyk5MC+//DIfPSGEUNYJIeSGAU7s8/lguh6PZ3R0tKYZ7VUHTh8KhYxGo8vlgtZLAZyPfexjMs30nv/60Qe++EmIu5j6fffdx6WRCCGEsk4IITckw8PDfX19kh6D1/VJai+PbDY7ODhosVisVmssFtM01ev1rl69Wr0i0ooVK77//e9PT0/zKRNCCGWdEEJuYK5du5ZKpeDrnZ2dDocjHo9XZSXUqjRsZGTE7/f39vba7fZIJFKgYfPz86dPn964ceM3v/nNpqYmrl1KCCGUdUIIudnIZDLBYNBqtZpMJqfTGY1Gocv1HHGfnJxMJBKIHGQGqsfjwdvlPORPCCGEsk4IIfXm2rVrExMTsVjM5XIZDAbJEYfHp1IpbK9WmvvMzMzY2BhCArHzrq4uCLrb7V4+o/uEEEIo64QQstyZn5+HVUciEVi1zWaDu+v1epPJhNeQ+IGBAXwkdVqGh4dHVCh1XWDkfr/f5/Nhf3g5DkcMADWXGAC7VTEGIIQQQlknhJBbnbm5ucnJydHR0UQiMTg4GAgEoOMQd7fb7Xof2Ll/Acg6lD2VSkH6Z2Zmatqwzs7OI0eOIJDQbD9//nw2m5XXaINOp8NuCD/wNp1O49OLFy8qO+du0ZxB4fLly8ePH0fscf36dfYKQgihrBNCCCnEhQsX3n333d27d3u9XmWj1Wpdt24d4gp5u2fPnu7u7kuXLoXDYbHwAwcOnDx5Uu3lmi2aMyhs3boV8ckbb7wB++fNJ4QQyjohhJClee6554LBoLyGu8POId+i2tPT001NTdevX1dPXe3p6VGruWaL5gwKo6OjiArwYmpqatu2bbzthBBCWSeEEFIIp9O5YcOGlpYWeXv16lX49OXLlw8ePCiq7Xa7N23adPr06aeeespkMi0p67lnUDCbzcoXrV+/Hnvy/hNCCGWdEEJIIaanp/fv3280GvFap9Nt3bq1tbX1scceg21fv37d6/Xu2rXrvYXh8EceeWRJWc89g7LPxYsXsQUvsHHjxo2884QQQlknhBCyNG+//fbRo0ffW5gAOrjAk08+6XA4sGV2dnbLli3vLUwz3bFjx5KynnsGqLnMNJ2bm5Psl2Qy+fzzz/O2E0JIdfm/1xbsMgFfneYAAAAASUVORK5CYII=\n" }, "execution_count": 22, "output_type": "execute_result", "metadata": {} } ], "execution_count": 22, "metadata": { "scrolled": false }, "cell_type": "code", "source": [ "from pymaid import cytoscape as cs\n", "\n", "g = pymaid.network2nx(adj)\n", "\n", "n = cs.generate_network(g, clear_session=True)\n", "\n", "# Plot again\n", "Image(n.get_png(height=400))" ] }, { "metadata": { "raw_mimetype": "text/restructuredtext" }, "cell_type": "raw", "source": [ "Updating networks\n", "+++++++++++++++++\n", "\n", "Another powerful usage of the cyREST API is to have scripts running in the background to automatically update, layout or style networks. Pymaid's ``pymaid.cytoscape.watch_network`` lets you constantly update a defined network:\n", "\n", "In this example, we are watching a set of *\"seed\"* neurons and their direct downstream partners. " ] }, { "outputs": [], "execution_count": 23, "metadata": {}, "cell_type": "code", "source": [ "from pymaid import cytoscape as cs\n", "\n", "cs.watch_network('annotation:glomerulus DA1',\n", " n_circles=1, # increase to >1 for indirect partners or set to 0 for seed neurons-only\n", " min_pre=5, # 5 synapse minimum from a seed neuron to be included\n", " min_post=-1, # set threshold to -1 to exclude upstream partners\n", " sleep=5, # sleep for 5s after each update\n", " )" ] }, { "metadata": { "raw_mimetype": "text/restructuredtext" }, "cell_type": "raw", "source": [ "This function runs in an infinite loop. In order to interupt it, simply press ``CTRL-C`` if you are in terminal. In a Jupyter notebook, hit the **stop** button in the top toolbar.\n", "\n", "Similar to the the earlier example, ``pymaid.cytoscape.watch_network`` also allows to collapse neurons into groups:" ] }, { "outputs": [], "execution_count": 24, "metadata": {}, "cell_type": "code", "source": [ "# Same set up as above but we collapse all excitatory DA1 PNs into a single group\n", "cs.watch_network('annotation:glomerulus DA1',\n", " n_circles=1, \n", " min_pre=5, \n", " min_post=-1, \n", " sleep=5,\n", " group_by={'exc DA1': pymaid.get_skids_by_annotation('glomerulus DA1 right excitatory')}\n", " )" ] } ], "nbformat_minor": 2, "nbformat": 4 }