{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Constructing Scalar Models\n",
"\n",
"Once the modes have been found, we can then make use of them to construct scalar models of our meta-atoms."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"# setup 2D plotting \n",
"%matplotlib inline\n",
"from openmodes.ipython import matplotlib_defaults\n",
"matplotlib_defaults()\n",
"import matplotlib.pyplot as plt\n",
"\n",
"# the numpy library contains useful mathematical functions\n",
"import numpy as np\n",
"\n",
"# import useful python libraries\n",
"import os.path as osp\n",
"\n",
"# import the openmodes package\n",
"import openmodes\n",
"from openmodes.sources import PlaneWaveSource"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Initialising simulation"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Pruned cell types: vertex, line\n"
]
}
],
"source": [
"sim = openmodes.Simulation(notebook=True)\n",
"mesh = sim.load_mesh(osp.join(openmodes.geometry_dir, \"SRR.geo\"), parameters={'inner_radius': 2.5e-3}, mesh_tol=0.8e-3)\n",
"ring = sim.place_part(mesh)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Searching for modes"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "26ba383ee27e41f1a40c88fd073ef7a3",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(Label(value='Refining modes'), FloatProgress(value=0.0, max=3.0)))"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"start_freq = 2e9\n",
"start_s = 2j*np.pi*start_freq\n",
"\n",
"num_modes = 4\n",
"estimates = sim.estimate_poles(start_s, modes=num_modes, cauchy_integral=False)\n",
"refined = sim.refine_poles(estimates, rel_tol=1e-12)\n",
"modes = refined.add_conjugates()"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAagAAAEYCAYAAAAJeGK1AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8li6FKAAAgAElEQVR4nO3deZwcdZ3/8debkEgOAoQMAoEEOUQDrIIDhEVdRIUQQbKsB6wrh2gEPHHxh7KKioi6q+LBEcLCj6AYDg8MbDi8uH5LCEk4IgGEQEIGAplMSMJkAiHh8/ujvhM6nZ6Z7tAzVTPzfj4e/Ziq+n676tPVPfXpqvr296uIwMzMrGi2yDsAMzOzSpygzMyskJygzMyskJygzMyskJygzMyskJygzMyskJygLFeSFkr6QA9v8xZJJ/XAdt4s6S5JL0n6cXdvrydI+oSk23t4m/8sabGkVkn79/C275D06Z7cpr1uy7wDsHxI+lfgK8DbgJeAB4HvRcQ9uQbWAyLiqB7a1CRgGTA8+sgPDiPiGuCaHt7sj4DPR8Qfeni7ljOfQfVDkr4C/BS4AHgzMBq4BDg2z7j6oDHA/I6SkyR/QazOGOCRvIOwHESEH/3oAWwDtAIf7aTOm8gS2HPp8VPgTansMKAJ+D/AUmAJMBGYAPwdWA6cU7KubwO/Aa4jO1ObC7yjpHwh8IE0vQXwNWAB0AJcD4xIZR8HniI7GwE4CngeaOjgNYwD/hdYATwEHFZSdgfw6TQ9APgx2ZnO08DngQC2LNlfV6TX+SxwPjAglZ0M3EP2Df/F9PyjUtlVwKvA2rS/P1CyL34FrAI+3dlrTuv5JLAolf1H2f66Cji/pO5hQFPJ/M7Ab4HmFNsXy96X64Gr0/vyCNBYUr4r8Lv03BbgotLXXFLvbcAf0/v+OPCxkrIJwPy0/meBszp4r7YAvpFe59IU0zZkn8PW9H6sBhZ08PwAzgCeSNv6LrAHcG/az9cDg0rqfwZ4MsU8Hdi5pOyDwGPASuAi4E7SZyWVfwp4NL3ftwFj0nIBF6b4VwIPA/vm/f/e2x+5B+BHD7/hMB5YRzoAd1DnPGAmsAPQQHag/24qOyw9/1xgYPpnbwZ+DWwN7AO8DOye6n+b7ED9kVT/rHSwHJjKF/L6AffLabu7pIPTZcC0kriuITsob0+WOI/uIP5R6aA6IR38PpjmG1L5HbyeoE5LB9FdgO2AP7FxgroxxTE07Y9ZwGdT2cnptX2GLNGdnuJSKr+KjRNI+76YmOIa3NlrBsaSHaDfm8p+kvZ9lwkqrX9Oep8GAbuTJfgjS2J5Oe2jAcD3gZmpbABZUr8wve6tgHeXvOZ70vRQYDFwCtntggPIEv0+qXwJ8J40vR1wQAfv16fIEsbuwDCyxPjLkvIA9uzk8xpkiWY42efvFeDPaX3bpPf3pFT38BTjAWmf/gK4K5WNJEto7Z/VM9P+bv+sTExxvj293m8A/5vKjkz7e1uyZPV2YKe8/997+yP3AOr+guBKsm8xf6ui7nvJvtGvAz5SVnYS2TeyJ9o/3H3hAXwCeL6LOguACSXzRwIL0/RhwBpeP4vYOh0gDi6pPweYmKa/3X7gS/NblB24FvL6AfdR4P0ldXciO6C3J4ttgWeAecBlncR/dukBLi27reQgdUfJQecvpIST5j+QXs+WZJc/XwEGl5SfAPw1TZ8MPFlSNiQ9d8c0fxWbJqi7yuLq8DWTJZdrS8qGkp2RVZOgDgaeKdvW14H/WxLLn0rKxgJr0vQhZF86NvkSw8YJ6uPA3WXllwHfStPPAJ8lnfV28n79GTijZH7vsve9mgR1aNnn7+yS+R8DP03TVwD/WVI2LG1rN+BENv6siuxqQftn5Rbg1LLPchvZJcjDya4gjAO26Mn/6b786Iv3oK4iO0uoxjNk/3C/Ll0oaQTwLbJ/8oOAb0narn4h5qoFGNnF/Y+dyS63tFuUlm1YR0SsT9Nr0t8XSsrXkP3jt1vcPhERr5H905eur90Y4PeSVkhaQXbwXk+WKIiIFcANwL5kB52OjAE+2r6etK53kx38K73WxSXzpdNjyL5JLylZz2VkZ1Ltni95bW1psvS1l1tcNt/Za94otohYTfb+VWMMsHPZPjgnrXeT2MkOtFulz8WuwKKIWFfFNg4u28YngB1T+b+QnaEtknSnpEM6WE+lz1v7F4RqlX/+Ovo8brStiGgl26ej2HR/B5t+Hn5W8lqXkyWxURHxF7JLghcDL0iaIml4DfFbBX0uQUXEXWQfnA0k7SHpVklzJN0t6W2p7sKIeBh4rWw1RwJ/jIjlEfEi2TX2apNe0d1LdmlnYid1niP7Z2w3Oi3bXLu2T0jaguxyVqX1LSa7h7NtyWOriHg2PfedZJeDpgE/72R7i8nOoErXMzQiflCh7pIUzyaxpvW8AowsWc/wiNinitfckagQa0eveQkb77shZJc3260mO2trt2PJ9GLg6bL1bh0RE6qIcTEwuopGHIuBO8u2MSwiTgeIiPsj4liyhH4j2b2gSip93taxcZKpl422JWko2T6ttL/Fpp+Hz5a93sER8b8AEfHziHgX2WXGtwJf7Yb4+5U+l6A6MAX4QvrwnEXWYq0zo9j4m1NTWtbrRcRKsktHF0uaKGmIpIGSjpL0n6naNOAbkhokjUz1f/UGNvsuScelA96XyQ76MyvUmwx8T9IYgLT9Y9P0VimGc8jueYySdEYH2/sVcIykIyUNkLSVpMMk7VKh7vXAlySNkrQt2eVBACJiCXA78GNJwyVtkb7s/NPm7IQOdPiayRpUHC3p3ZIGkd0bLP2ffRCYIGmEpB3J9m27WcAqSWdLGpz2w76SDqwipllkB+sfSBqa9t+hFerdDLxV0ifTZ2igpAMlvV3SoPSbqW0i4lWyezvrK6wDss/bmZLeImkYWevS66o4g9scvwZOkfROSW9K27ovIhYC/wPsU/JZ/SIbJ/3JwNcl7QMgaRtJH03TB0o6WNJAsi8OL9Px67Uq9fkElT7w/wjcIOlBsks0lS71bPS0CsvKv/n2WhHxE7LfQH2D7F7DYrLWazemKucDs8laIs0ju093/hvY5B/I7le8SNYq7bh00Cr3M7Kb3bdLeoksiR2cyr5Pdn/l0oh4Bfg34HxJe1V4fYvJmsyfU/L6vkrlz/vlZEnoYeABYAbZt/f2g8uJZI0M5qf4f0PXn59adPiaI+IR4HNkB9UlaftNJc/9JVljhoXpNVzXXpAuwR4DvJOsUcoy4L/JGg10quS5e5JdBm8ie//K670EHAEcT3Zm8jzwQ7LGB5C91wslrSJrjPJvHWzyyvRa7kqxvgx8oas4N0dE/Bn4JlnrxiVkrf2OT2XLgI8CPyC77LcX8P9Knvt7std3bXpNfyNrTQpZA43Lyd6j9laXP+qO19CftLc26lMk7QbcHBH7puvAj0dEhwcVSVel+r9J8yeQNUv+bJq/DLgjIqZ1d+x9jaRvk93g7ujgVCiSjgImR8SYLivnQNJCspv2f8o7FrPu1ufPoCJiFfB0yam4JL2ji6fdBhwhabvUOOKItMz6mHT5a4KkLSWNImsc8/u84zKzPpigJE0jawiwt6QmSaeStSw6VdJDZD9IbL+vcaCkJrLT+sskPQIQEcvJfux3f3qcl5ZZ3yPgO2SXZh4ga0V3bq4RmRnQRy/xmZlZ79fnzqDMzKxv6FOdVY4cOTJ22223vMMwM7MazJkzZ1lENJQvzzVBSRpA1pz52Yg4uqxMZE1wJ5D9yv3kiJjb2fp22203Zs+e3V3hmplZN5C0qNLyvC/xfYnspnQlR5H9DmEvsnF1Lu2poMzMLH+5Jaj0q/4Pkf14sJJjgasjMxPYVlI9fyBpZmYFlucZ1E/JxhQq7wevXVXdDUmaJGm2pNnNzc31j9LMzHKRS4KSdDSwNCLmdFatwrJN2sRHxJSIaIyIxoaGTe6xmZlZL5XXGdShwIdTty3XAodLKu+MtImNexLuqAfsN2zWrFm0trZumG9tbWXWrFndsSkzs15v+TXXsK7l9ZFf1rW0sPyaa+q+nVwSVER8PSJ2iYjdyDpq/EuFvtqmAyemronGAStT79J1NWvWLGbMmMHUqVNpbW2ltbWVqVOnMmPGDCcpM7Myy6+5hhe+ez6LTjqJdS0trGtpYdFJJ/HCd8+ve5Iq1O+gJJ0GEBGTyXqVnkA2xHIb2RALdTd27Fjuv/9+mpubueSSbBSOtrY2GhoaGDt2bHds0sys1xo+fjwvTpvG2icX8NQxHwZg/fLlDNpzD4aPr++weX2qq6PGxsbYnN9Btba2cskll9DWlg2IOmTIEM444wyGDetsYFQzs/5pXUsLTx3zYdYvz7ooHTBiBLvfNJ0tt9++i2dWJmlORDSWL8/7d1BmZmYV9fsE1X7Pqa2tjSFDhjBkyBDa2to23JMyM7PXtd9zWr98OQNGjGDAiBGsX758wz2peur3CWr+/Pk0NzfT0NDAGWecwRlnnEFDQwPNzc3Mnz8/7/DMzApl1a23svbJBQzacw92v2k6u980nUF77sHaJxew6tZb67ot34Mia8k3duzYDfecWltbmT9/PgcddFC9QzQz6/WWX3MNw8eP33DPaV1LC6tuvZURn/jEZq2vo3tQTlBmZpYrN5IwM7NexQnKzMwKyQnKzMwKyQnKzMwKyQnKzMwKyQnKzMwKyQnKzMwKyQnKzMwKyQnKzMwKyQnKzMwKyQnKzMwKKZcEJWkrSbMkPSTpEUnfqVDnMEkrJT2YHufmEauZmeUjryHfXwEOj4hWSQOBeyTdEhEzy+rdHRFH5xCfmZnlLJcEFVkX6u2jAQ5Mj77TrbqZmb1hud2DkjRA0oPAUuCPEXFfhWqHpMuAt0jap4dDNDOzHOWWoCJifUS8E9gFOEjSvmVV5gJjIuIdwC+AGyutR9IkSbMlzW5ubu7eoM3MrMfk3oovIlYAdwDjy5aviojWND0DGChpZIXnT4mIxohobGho6ImQzcysB+TViq9B0rZpejDwAeCxsjo7SlKaPogs1paejtXMzPKRVyu+nYCpkgaQJZ7rI+JmSacBRMRk4CPA6ZLWAWuA46MvjU9vZmadyqsV38PA/hWWTy6Zvgi4qCfjMjOz4sj9HpSZmVklTlBmZlZITlBmZlZITlBmZlZITlBmZlZITlBmZlZITlBmZlZITlBmZlZITlBmZlZITlBmZlZITlBmZlZITlBmZlZITlBmZlZITlBmZlZITlBmZlZITlBmZlZITlBmZlZIuSQoSVtJmiXpIUmPSPpOhTqS9HNJT0p6WNIBecRqZmb5yGXId+AV4PCIaJU0ELhH0i0RMbOkzlHAXulxMHBp+mtmZv1ALmdQkWlNswPTI8qqHQtcnerOBLaVtFNPxtnTWu99jvWtazfMr29dS+u9z+UYkZkVybTHptGypmXDfMuaFqY9Ni3HiLpXXmdQSBoAzAH2BC6OiPvKqowCFpfMN6VlS8rWMwmYBDB69Ohui7e7td77HCv+sIDWe5fQMGk/AJqnzGPd0jYAhh2yc57hmVnOpj02jQvuu4DrHruOK468AoBTbzuVBSsXAHDC207IM7xukVuCioj1wDslbQv8XtK+EfG3kiqq9LQK65kCTAFobGzcpLy3GLzfSFrvXcK6pW28cOFcAF5b/Spb7jCEwfuNzDk6M8vbEWOO4LrHrmPBygUcN/04AJa/vJw9ttmDI8YckXN03aPLBCXp3BrXeUdE3FVt5YhYIekOYDxQmqCagF1L5ncB+uz1rgHDBtEwaT9euHAur61+FYAthg6kYdJ+DBg2KOfozCxv2w/eniuOvILjph/H8peXAzBiqxFcceQVbD94+5yj6x7V3INSjY+uVyg1pDMnJA0GPgA8VlZtOnBias03DlgZEUswM7N+ocszqIjYpAl4HewETE33obYAro+ImyWdlrY5GZgBTACeBNqAU7ohjsJY37qW5inzeG31q2wxdCCQXeJrnjLPZ1FmRsuaFk697VSWv7ycEVuNALJLfKfedmqfPYuq6R6UpA8B7wOGkCWOaRGxRNL/RMSHql1PRDwM7F9h+eSS6QA+V0t8vdmaectYt7SNLXcYskkjiTXzlrmRhFk/d/ui21mwcgF7bLPHJo0kbl90e59sJKEsD3RRSdqK7JLbQcB9wApgH2AM8FlgckQM78Y4q9LY2BizZ8/OO4zN1nrvcwzeb+SGs6X1rWudnMxsg2mPTeOIMUdsOFtqWdPSJ5KTpDkR0bjJ8ioT1H+RJad/iYhlJcsPB64Cdo6I3FoEtuvtCcrMrD/qKEFV+0PdjwOfKU1OABHxF+AYoOpWe2ZmZtWo9qxnBPBEpYKIeAg4vG4RmZmZUf0Z1CLgXZUKJE2UtK5+IZmZmVWfoH4KXCVpbPsCSYMknU7Wi8Nr3RGcmZn1X1Vd4ouIyyU1ALMkLQFWkvWh10T2W6W/dl+IZmbWH1Xd8i4iLpB0KXAoMAx4KiJmAUi6oJviMzOzfqqmpuER8SJwc4Xl369bRGZmZhSgs1gzM7NKqjmDqqoDWDMzs3rKq7NYMzOzTuUy5LuZmVlXnKDMzKyQnKDMzKyQnKDMzKyQak5Qkj4o6QpJN6X5xjTshpmZWd3UlKAkfQG4lKxn8/emxWuA82tcz66S/irpUUmPSPpShTqHSVop6cH0qPX3WGZm1ovVOsjgl4H3R8RCSWenZY8Be9e4nnXAv0fEXElbA3Mk/TEi5pfVuzsijq5x3WZm1gfUeolva2Bxmm4fincgsLaWlUTEkoiYm6ZfAh4FRtUYi5mZ9WG1Jqi7gK+VLfsib6A3c0m7AfsD91UoPkTSQ5JukbRPB8+fJGm2pNnNzc2bG4aZmRWMIqLrWu2VpZ2Am4CRZGc8TwGrgGMi4vmaNy4NA+4EvhcRvysrGw68FhGtkiYAP4uIvTpbX2NjY8yePbvWMMzMLEeS5kREY/nyWnszXyLpQOBAYAzZ5b5ZEVHzgIWSBgK/Ba4pT05pW6tKpmdIukTSyIhYVuu2zMys96m1Fd9ZkZkVETdExMyIeE3SV2pcj4ArgEcj4icd1Nkx1UPSQSnWllq2Y93vgdtupm3lig3zbStX8MBtm4zIYlY8sy6H1pLbAq3N2TIrjFpb8Z0L/KjC8m8AFRNNBw4FPgnMk/RgWnYOMBogIiYDHwFOl7SOrCn78VHL9Ujrdg/cdjN/uXIyD90+g4+dm41Zef1559DS9AwA+x/pBphWULMuhxlnwf3/DSelL1RTj4bmx7Lpgz6TX2y2QVUJquSHuAMkvY+Nh+DYHXiplo1GxD10MYxHRFwEXFTLeq1n7T3u3Tx0+wxamp7hqrM+B8CaVSvZfpfR7D3u3TlHZ9aJsROz5NT8GFwyLlvWtgwa3paVWSFU1UhC0tNpcjTwTElRAC8A34+I6fUPrzZuJNHz2lau4KqzPseaVSsBGDx8G07+0cUM2WbbnCMz60Jrc5ac2tJt7SEj4YyZMKwh37j6oTfUSCIi3pJWcnVEnFjv4MzMzMrV1EgiIk6U9GZJx0g6RdKn2h/dFaAVV9vKFVx/3jmsWbWSwcO3YfDwbVizaiXXn3fORg0nzAqntTm759S2LDtzGjIym5569MYNJyxXtbbimwgsAM4DLgO+kP5+sv6hWdE9PvMeWpqeYftdRnPyjy7m5B9dzPa7jKal6Rken3lP3uGZdWz+jdn9p4a3ZZf1zpiZTTc/lpVZIdTaiu984JSIuEHSixGxv6RTgIq9PFjf1t5Kb+9x795wz+lj517A4zPvcQs+K7b2VnpjJ75+z+mkm7Pk5BZ8hVFrTxKrImJ4mn4xIraTtAXwfETs0F1BVsuNJMzMep+OGknU2hffUklvTtMLJR0C7AEMeKMBmpmZlao1QV0OtP/A5UKyTmIfAi6pZ1BmZma13oP6r/Z+9yLiakl3AEMj4tG6R2ZmZv1a1QlK0gCgVdK2EfEKQEQ808XTzMzMNkvVl/giYj3wd2D77gvHzMwsU+slvmuAmyX9DGji9VF1iYi/1DMwMzPr32pNUKenv98uWx5kncaamZnVRa0DFr6luwIxMzMrVWszczMzsx7hBGVmZoWUS4KStKukv0p6VNIjkr5UoY4k/VzSk5IelnRAHrGamVk+am0kUS/rgH+PiLmStgbmSPpjRMwvqXMUsFd6HAxcmv6amVk/kMsZVEQsiYi5afol4FFgVFm1Y4GrIzMT2FbSTj0cqpmZ5aSmMyhJ53VQ9ArZ76JujYgXalznbsD+wH1lRaOAxSXzTWnZkrLnTwImAYwePbqWTZuZWYHVegb1VuBs4H3Anunv2WQJ5nTgKUnjq12ZpGHAb4EvR8Sq8uIKT9lkbJCImBIRjRHR2NDQUO2mzcys4GpNUFsAx0fEeyLiXyPiPcDHgPURMQ44A/hBNSuSNJAsOV0TEb+rUKUJ2LVkfhfguRrjNTOzXqrWBHUkML1s2c1kDRoAfkU2PlSnJAm4Ang0In7SQbXpwImpNd84YGVELOmgrpmZ9TG1tuJbQHYp76KSZael5QAjgdVVrOdQ4JPAPEkPpmXnAKMBImIyMAOYADwJtAGn1BirmZn1YrUmqE8Dv5N0NvAs2WW3dcBxqXxv4JtdrSQi7qHyPabSOgF8rsb4zMysj6i1L765kvYCxgE7k7WouzciXk3ldwF31T1KMzPrd2ptZj4IOBl4JzAsLf60JCLixDrHZmZm/Vitl/imAu8AbgJq+r2TmZlZLWpNUOOBt0TEiu4IxszMrF2tzcyfAd7UHYGYmZmVqvUM6mrgD2nI940u8XnIdzMzq6daE9Tn098LypZ7yHczM6srD/luZmaF5BF1zcyskLo8g5L03vQDXCQd3lE934MyM7N6quYS3yXAvmn6ig7q+B6UmZnVVZcJKiL2LZn2PSgzM+sRNd2DkjRI0nmSnpC0Ov39rqStuitAMzPrn2ptZj6ZbFTdLwKLgDHA18mGYv9UfUMzM7P+rNYEdSywR0lXR/Ml3Uc2ZpMTlJmZ1U2tzcyfB4aULRtMNuyGmZlZ3dR6BvVL4FZJvwCagF3JBhW8urQJupucm5nZG1Vrgvps+ntO2fLT0gOqaHIu6UrgaGBpaSvBkvLDgD8AT6dFv4uI82qM1czMerG8ujq6CriIrPPZjtwdEUfXaXtmZtbL5NLVUeqZYnke2zYzs96h1iHftyFrYr4/rw/5DkBEHFHHuAAOkfQQ8BxwVkQ80kFMk4BJAKNHj65zCGZmlpda70HdAAwAfg+sqX84G8wFxkREq6QJwI3AXpUqRsQUYApAY2NjdGNMZmbWg2pNUOOA7SPi1e4Ipl1ErCqZniHpEkkjI2JZd27XzMyKo9Z7UPcAb++OQEpJ2lGS0vRBZHG2dPd2zcysOGo9gzoZmJF6jygf8r3qZuCSpgGHASMlNQHfAgam9UwGPgKcLmkd2aXE4yPCl+/MzPqRWhPU98h+nLsQGF6yvKbkEREndFF+EVkzdDMz66dqTVDHA2+NCHdtZGZm3arWe1BPAd3aQMLMzAw2ry++6akvvvJ7UO5/z8zM6qbWBPW59PeCsuUe8t3MzOoqr774zMzMOlXrGRSS3gwcBIwE1L48Iq6sY1xmZtbP1doX30TgV8ATwD7AI8C+ZD/gdYIyM7O6qbUV3/nAKRGxP7A6/Z0EzKl7ZGZm1q/VmqBGR8QNZcumAifWKR4zMzOg9gS1NN2DAlgo6RBgD7Iezs3MzOqm1gR1OfDuNH0h8FfgIeCSegZlZmZWazPzH5ZMXy3pDmBoRDxa78DMzKx/q7UV31jgPcAIsiHb746I+d0RmJmZ9W9VJag0NtMVwElAE9kw7KOAnSX9EviUh8MwM7N6qvYe1CSy8ZvGRcSYiDgkIkYDh5CdUX22m+IzM7N+qtoE9UngixFxf+nCNP/lVG5mZlY31SaoscCdHZTdmcqrJulKSUsl/a2Dckn6uaQnJT0s6YBa1m9mZr1ftQlqQES8VKkgLa+1ufpVwPhOyo8C9kqPScClNa7fzMx6uWpb8Q2U9D5KOofdzPUAEBF3SdqtkyrHAlenhhczJW0raSeP5Gtm1n9Um1iW0nlnsEvrEEupUcDikvmmtGyTBCVpEtlZFqNHj65zGGZmlpeqElRE7NbNcZSrdKZWsRl7REwBpgA0Nja6qbuZWR9R672jntIE7FoyvwvZb6/MzKyfKGqCmg6cmFrzjQNW+v6TmVn/UvOIuvUgaRrZD39HSmoCvgUMBIiIycAMYALwJNAGnJJHnGZmlp9cElREnNBFeQCf66FwzMysgIp6ic/MzPo5JygzMyskJygzMyskJygzMyskJygzMyskJygzMyskJygzMyskJygzMyskJygzMyskJygzMyskJygzMyskJygzMyskJygzMyskJygzMyskJygzMyskJygzMyskJygzMyuk3BKUpPGSHpf0pKSvVSg/TNJKSQ+mx7l5xGlmZvnIZch3SQOAi4EPAk3A/ZKmR8T8sqp3R8TRPR6gmZnlLq8zqIOAJyPiqYhYC1wLHJtTLGZmVkB5JahRwOKS+aa0rNwhkh6SdIukfSqtSNIkSbMlzW5ubu6OWM3MLAd5JShVWBZl83OBMRHxDuAXwI2VVhQRUyKiMSIaGxoa6hymmZnlJa8E1QTsWjK/C/BcaYWIWBURrWl6BjBQ0sieC9HMzPKUV4K6H9hL0lskDQKOB6aXVpC0oySl6YPIYm3p8UjNzCwXubTii4h1kj4P3AYMAK6MiEcknZbKJwMfAU6XtA5YAxwfEeWXAc3MrI9SXzrmNzY2xuzZs/MOw8zMaiBpTkQ0li93TxJmZlZITlBmZlZITlBmZlZITlBmZlZITlBmZlZITlBmZlZITlBmZlZITlBmZlZITlBmZlZITlBmZlZITlDWL827o4m2VWs3zLetWsu8O5pyjKh3uvrehSxrfWXD/LLWV7j63oV5hWN9TC6dxZrlad4dTdx17d+Zd+ezTDxzfwBuvPABXlyyGoD9Dtslz/B6javvXci5f3iEX967iGmTxgFwwpSZPLG0FYATD9ktv+CsT3CCsn5njwN2YN6dz/LiktVc+937AFjz0qtst9NQ9jhgh5yj6z0m7LcTv7x3EU8sbeXIC+8CoCSDxo4AAAmpSURBVGX1WvbaYRgT9tsp5+isL/AlPut3hgwfxMQz92fw1gNZ89KrrHnpVQZvPZCJZ+7PkOGD8g6v1xg57E1MmzSO7YcOomX1WlpWr2X7oYOYNmkcI4e9Ke/wrA9wgjIzs0JygrJ+p23VWm688IENZ07tZ1I3XvjARg0nrHPLWl/hhCkzN5w5tZ9JnTBl5kYNJ8w2V24JStJ4SY9LelLS1yqUS9LPU/nDkg7II07rexbMXcqLS1az3U5DOf6bB3P8Nw9mu52G8uKS1SyYuzTv8HqNGfOW8MTSVvbaYRi3nflebjvzvey1wzCeWNrKjHlL8g7P+oBcGklIGgBcDHwQaALulzQ9IuaXVDsK2Cs9DgYuTX/N3pD2Vnp7HLDDhntOE8/cnwVzl7oFXw3aW+lN2G+nDfecpk0ax4x5S9yCz+oilyHfJR0CfDsijkzzXweIiO+X1LkMuCMipqX5x4HDIqLDr2Ye8t3MrPcp2pDvo4DFJfNNaVmtdczMrI/KK0GpwrLyU7lq6iBpkqTZkmY3NzfXJTgzM8tfXgmqCdi1ZH4X4LnNqENETImIxohobGhoqHugZmaWj7wS1P3AXpLeImkQcDwwvazOdODE1JpvHLCys/tPZmbWt+TSii8i1kn6PHAbMAC4MiIekXRaKp8MzAAmAE8CbcApecRqZmb5yKUVX3eR1AwsyjuOGo0EluUdxGZw3D2rt8YNvTd2x91zxkTEJvdo+lSC6o0kza7UvLLoHHfP6q1xQ++N3XHnz10dmZlZITlBmZlZITlB5W9K3gFsJsfds3pr3NB7Y3fcOfM9KDMzKySfQZmZWSE5QZmZWSE5QfUwSR+V9Iik1yR12BRU0kJJ8yQ9KCn3LtpriLvTcb56mqQRkv4o6Yn0d7sO6hVif/fWcdKqiPswSSvT/n1Q0rl5xFlO0pWSlkr6WwflRd3fXcVdyP1ds4jwowcfwNuBvYE7gMZO6i0ERuYdby1xk/UKsgDYHRgEPASMzTnu/wS+lqa/BvywqPu7mv1H1rvKLWSdKY8D7ivAZ6OauA8Dbs471gqxvxc4APhbB+WF299Vxl3I/V3rw2dQPSwiHo2Ix/OOo1ZVxn0Q8GREPBURa4FrgWO7P7pOHQtMTdNTgYk5xtKVavbfscDVkZkJbCtpp54OtEwR3/eqRMRdwPJOqhRxf1cTd5/gBFVcAdwuaY6kSXkHU6UijuH15kidDKe/O3RQrwj7u7eOk1ZtTIdIekjSLZL26ZnQ3rAi7u9q9cb9vZFcOovt6yT9CdixQtF/RMQfqlzNoRHxnKQdgD9Keix9a+o2dYi7qjG86q2zuGtYTY/v7wrqNk5aD6smprlk/a21SpoA3Ajs1e2RvXFF3N/V6K37eyNOUN0gIj5Qh3U8l/4ulfR7ssso3XrArEPcVY3hVW+dxS3pBUk7RcSSdGlmaQfr6PH9XUHdxknrYV3GFBGrSqZnSLpE0siIKHqnpkXc313qxft7I77EV0CShkraun0aOAKo2FqnYKoZ56unTQdOStMnAZucCRZof/fWcdK6jFvSjpKUpg8iO/a09HiktSvi/u5SL97fG8u7lUZ/ewD/TPat7BXgBeC2tHxnYEaa3p2sJdRDwCNkl9gKH3eanwD8naxVVxHi3h74M/BE+juiyPu70v4DTgNOS9MCLk7l8+ikJWjB4v582rcPATOBf8w75hTXNGAJ8Gr6fJ/aS/Z3V3EXcn/X+nBXR2ZmVki+xGdmZoXkBGVmZoXkBGVmZoXkBGVmZoXkBGVmZh3qqmPasrrvlTRX0jpJHykru1XSCkk3V7ttJygzM+vMVcD4Kus+A5wM/LpC2X8Bn6xlw05QZmbWoajQMa2kPdIZ0RxJd0t6W6q7MCIeBl6rsJ4/Ay/Vsm0nKDOrSNKjkt6RdxxWSFOAL0TEu4CzgEu6YyPui8+shKSFwJuB9SWL3xqpr77+JCLenncMVjyShgH/CNyQelMCeFN3bMsJymxTx0TEnzoqlLRlRKzryYDMCmQLYEVEvLMnNmRmXUhDwp8t6WFgtaQtJe0s6beSmiU9LemLZc/ZP7VoeknSdZKulXR+KgtJe5bUvaq9LM13uO4Uy1lpCPKVad1blZTvKul36bktki5Ky78q6bdlMf5C0k8rvN5PSLqtZH5rSc9K+qeyerum17L9ZuxW64Ui6yn9aUkfBUgd6XbLpWAnKLPqnQB8CNiW7CbwTWSdcY4C3g98WdKRAKlX7xuBXwIjgBuAf6lmI5K26GzdycfIWla9BfgHspZTSBoA3AwsAnZLz782PedXwHhJ26a6WwIfTzGW25eNe3T/d7Lhxe8srRQRi4HVwH7VvDbrfSRNA+4F9pbUJOlU4BPAqZLaO1g+NtU9UFIT8FHgMkmPlKznbrL/g/en9RxZvq1yvsRntqkbJbVfwrsjItqHif95OiAj6WCgISLOS2VPSbqcbKiJ24BxwEDgp5H1yPwbSV+pcvsHdrHu9lieS7HcBLRfbjmIrKf2r5ZchrwHshGFJd1FdvC4nCzBLYuIORVi2Bf4bVr/AOB0sh6ykdQAbB0RT6W664DBVb4262Ui4oQOijZpeh4R95ONmVVpPe+pddtOUGabmtjBPajSob/HADtLWlGybABwd5reGXg2Nh4uYFGV2+9q3QDPl0y3pe1BNrjeok7ukU0lSzaXA/9G5bMnyBLUd0qmd+D15PgVsmEoviZpMLA1HQwEafZG+BKfWfVKk81i4OmI2LbksXVETEjlS4BR7YPGJaNLptuAISXzpUPWd7XuziwGRqfLd5XcCPyDpH2Bo4FryiukVlq7AvPTolHAi/H6KK3jeT0h/RPwIvBAFbGZ1cQJymzzzAJWpYYTgyUNkLSvpANT+b1kl76+mBpUHEd2+a3dg8C/pueNJzvQV7vuruJaAvxA2UjBW0k6tL0wIl4GfkP2S/9ZEfFMhXXsQ5Yg29L8cmC4shFzTwAGAWPTvaxvk13G3OSHmWZvlBOU2WaIiPXAMWT3fp4GlgH/DWyTytcCx5E1XniRrDHC70pW8aX0/BVkN5xvrHbdVca1J1m3M01p26WmkjVq6OzyXmkDifvJGlo8SDZy64fJfgfzBHAf8MOu4jLbHB5R16yHSLoKaIqIb+Qcx2jgMWDHkst2peU/A5ZHxHc2ebJZD/IZlFk/kpqwfwW4toPkNIysKf1fezo2s3JuxWfWT0gaCrxA1ppwkybCkg4jazQxlY1bDJrlwpf4zMyskHyJz8zMCskJyszMCskJyszMCskJyszMCskJyszMCskJyszMCskJyszMCun/Awex9a8XUMngAAAAAElFTkSuQmCC\n",
"text/plain": [
"