Created
December 10, 2025 22:50
-
-
Save ekellbuch/fe64f77602897a4a06776056b2ae23b9 to your computer and use it in GitHub Desktop.
Runtimes.ipynb
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| { | |
| "nbformat": 4, | |
| "nbformat_minor": 0, | |
| "metadata": { | |
| "colab": { | |
| "provenance": [], | |
| "authorship_tag": "ABX9TyNQgQMvR0UY2bPB4xJmAQmR", | |
| "include_colab_link": true | |
| }, | |
| "kernelspec": { | |
| "name": "python3", | |
| "display_name": "Python 3" | |
| }, | |
| "language_info": { | |
| "name": "python" | |
| } | |
| }, | |
| "cells": [ | |
| { | |
| "cell_type": "markdown", | |
| "metadata": { | |
| "id": "view-in-github", | |
| "colab_type": "text" | |
| }, | |
| "source": [ | |
| "<a href=\"https://colab.research.google.com/gist/ekellbuch/fe64f77602897a4a06776056b2ae23b9/runtimes.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 6, | |
| "metadata": { | |
| "colab": { | |
| "base_uri": "https://localhost:8080/", | |
| "height": 564 | |
| }, | |
| "id": "ZCx-0-s0ck-6", | |
| "outputId": "08ac0e13-d1d1-4cfe-b7c9-f49a56153de3" | |
| }, | |
| "outputs": [ | |
| { | |
| "output_type": "display_data", | |
| "data": { | |
| "text/plain": [ | |
| "<Figure size 1000x600 with 1 Axes>" | |
| ], | |
| "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0kAAAIjCAYAAADWYVDIAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAgzRJREFUeJzt3Xl8VNX9xvHnTmYmC9mAQEIgbEFBBBRBEFeqCCIqVO2vWKu4oFVjFdHaUhWFSkWL4AZWK4VWal3qVq0boiBWUGQVUURkK7tAQiDbJHN+f0zmMpMFsszkhvB5v17pzNx7594zk9s2D+ec77GMMUYAAAAAAEmSy+kGAAAAAEBjQkgCAAAAgBCEJAAAAAAIQUgCAAAAgBCEJAAAAAAIQUgCAAAAgBCEJAAAAAAIQUgCAAAAgBCEJAAAAAAIQUgCgCbCsiw98MADTjej3p5//nl169ZNHo9Hqamp9T7fwIEDNXDgwHqfB4dE+1574IEHZFlWjY6dPXu2LMvSxo0bo9YeAMceQhKAJmP9+vX61a9+pc6dOysuLk7Jyck644wz9Pjjj6uwsNDp5qEGvv32W11zzTXKzs7WX/7yFz377LOVjtm4caMsy6rRT2P+w5n7tXb++Mc/6o033nC6GQCOEZYxxjjdCACor//85z/62c9+ptjYWF199dXq0aOHSkpK9Omnn+rVV1/VNddcU+Uf3E1JUVGR3G633G63002psz//+c+6+eabtW7dOnXp0qXKYw4ePKjXX389bNujjz6q//3vf5o2bVrY9p/+9KfyeDySJK/XG51G18HRfr9alqX7778/ar1JpaWlKi0tVVxcnL0tMTFRl19+uWbPnh12bFlZmXw+n2JjY2vc+wQAR3L0/j8pAJTbsGGDRo4cqQ4dOuijjz5SmzZt7H05OTn6/vvv9Z///MfBFkaP3+9XSUmJ4uLiwv6gPFrt2rVLkg47zK5Zs2b65S9/GbbtxRdf1L59+yptb4yO5fu1pmoT9mNiYhQTExPlFgE41jDcDsBR75FHHtGBAwc0c+bMsD84g7p06aLbb7/dfl1aWqo//OEPys7OVmxsrDp27Kjf//73Ki4uDntfx44dddFFF2n+/Pnq27ev4uPj1bNnT82fP1+S9Nprr6lnz56Ki4tTnz59tHz58rD3X3PNNUpMTNQPP/ygIUOGqFmzZsrMzNTEiRNVsRN/ypQpOv3009WyZUvFx8erT58++te//lXps1iWpVtvvVX/+Mc/dOKJJyo2NlbvvfeevS/0X/bz8/M1ZswYdezYUbGxsWrdurXOP/98LVu2LOycr7zyivr06aP4+HilpaXpl7/8pbZu3VrlZ9m6datGjBihxMREtWrVSnfddZfKysqq+c2EmzFjht3mzMxM5eTkKDc3N+z7vv/++yVJrVq1iti8l4pzkubPny/LsvTyyy9rwoQJatu2rZKSknT55ZcrLy9PxcXFGjNmjFq3bq3ExERde+21le4NSZozZ479vbVo0UIjR47Uli1bjtiepnC/VmXr1q267rrrlJ6ertjYWJ144on661//au8vLCxUt27d1K1bt7DhhHv37lWbNm10+umn2/dSxTlJlmXp4MGD+tvf/mYPpbzmmmskVT8n6d1339VZZ52lZs2aKSkpScOGDdPXX38ddsyOHTt07bXXql27doqNjVWbNm00fPjwRj1ME0ADMQBwlGvbtq3p3LlzjY8fNWqUkWQuv/xyM336dHP11VcbSWbEiBFhx3Xo0MF07drVtGnTxjzwwANm2rRppm3btiYxMdHMmTPHtG/f3kyePNlMnjzZpKSkmC5dupiysrKw68TFxZnjjjvOXHXVVeapp54yF110kZFk7rvvvrBrtWvXztxyyy3mqaeeMlOnTjX9+vUzkszbb78ddpwkc8IJJ5hWrVqZCRMmmOnTp5vly5fb++6//3772F/84hfG6/WasWPHmueee848/PDD5uKLLzZz5syxj5k1a5aRZE499VQzbdo087vf/c7Ex8ebjh07mn379lX6LCeeeKK57rrrzNNPP20uu+wyI8nMmDHjiN/5/fffbySZQYMGmSeffNLceuutJiYmxpx66qmmpKTEGGPM66+/bn76058aSebpp582zz//vFm5cuURz22MMcOGDTMdOnSoct8555xjzjnnHPv1xx9/bCSZk08+2QwYMMA88cQT5rbbbjOWZZmRI0eaX/ziF2bo0KFm+vTp5qqrrjKSzIQJE8LO+eCDDxrLsszPf/5zM2PGDDNhwgSTlpZW6XurSlO4Xyveazt27DDt2rUzWVlZZuLEiebpp582l1xyiZFkpk2bZh+3ePFiExMTY+644w5728iRI018fLxZu3atvS14vwQ9//zzJjY21px11lnm+eefN88//7z57LPPjDGH7uENGzbYx//97383lmWZCy64wDz55JPm4YcfNh07djSpqalhx51++ukmJSXF3Hvvvea5554zf/zjH81PfvITs2DBghr/fgA0TYQkAEe1vLw8I8kMHz68RsevWLHCSDKjR48O237XXXcZSeajjz6yt3Xo0MFIsv8YM8aY999/30gy8fHxZtOmTfb2Z555xkgyH3/8sb0t+Mftr3/9a3ub3+83w4YNM16v1+zevdveXlBQENaekpIS06NHD3PuueeGbZdkXC6X+frrryt9top/uKakpJicnJxqv4uSkhLTunVr06NHD1NYWGhvf/vtt40kM378+EqfZeLEiWHn6N27t+nTp0+11zDGmF27dhmv12sGDx4c9kf5U089ZSSZv/71r/a24B/Hod9NTdQlJPXo0cMOaMYYc8UVVxjLsszQoUPD3j9gwICwc2/cuNHExMSYSZMmhR331VdfGbfbXWl7qKZyv1a8166//nrTpk0b8+OPP4a1c+TIkSYlJSXs/h43bpxxuVzmk08+Ma+88oqRZB577LGw91UMScYY06xZMzNq1KhK31HFkJSfn29SU1PNDTfcEHbcjh07TEpKir193759RpL505/+VOmcAMBwOwBHtf3790uSkpKSanT8O++8I0kaO3Zs2PY777xTkirNBenevbsGDBhgv+7fv78k6dxzz1X79u0rbf/hhx8qXfPWW2+1nweHy5WUlOjDDz+0t8fHx9vP9+3bp7y8PJ111lmVhsZJ0jnnnKPu3bsf4ZMG5vV8/vnn2rZtW5X7v/zyS+3atUu33HJL2HymYcOGqVu3blXOi7npppvCXp911llVfuZQH374oUpKSjRmzBi5XIf+b+eGG25QcnKyY/Nvrr76aruogxT4HRpjdN1114Ud179/f23ZskWlpaWSAsPW/H6//u///k8//vij/ZORkaHjjjtOH3/8cbXXbCr3ayhjjF599VVdfPHFMsaEfSdDhgxRXl5e2H38wAMP6MQTT9SoUaN0yy236JxzztFtt9125C+jhubOnavc3FxdccUVYW2JiYlR//797d9PfHy8vF6v5s+fr3379kXs+gCaBgo3ADiqJScnSwrMv6mJTZs2yeVyVaqclpGRodTUVG3atClse+gflpKUkpIiScrKyqpye8U/tlwulzp37hy27fjjj5eksHkPb7/9th588EGtWLEibK5JVdW6OnXqVO3nC/XII49o1KhRysrKUp8+fXThhRfq6quvttsT/Kxdu3at9N5u3brp008/DdsWFxenVq1ahW1r3rz5Ef/ArO46Xq9XnTt3rvSdN5Ta/G79fr/y8vLUsmVLrVu3TsYYHXfccVWeNzR4VdRU7tdQu3fvVm5urp599tlqK/IFC3JIgd/7X//6V5166qmKi4vTrFmzIlqVbt26dZICwbAqwd9BbGysHn74Yd15551KT0/XaaedposuukhXX321MjIyItYeAEcnQhKAo1pycrIyMzO1evXqWr2vpn+UVVc1q7rtpg6rKixcuFCXXHKJzj77bM2YMUNt2rSRx+PRrFmz9MILL1Q6PrTX6XD+7//+T2eddZZef/11ffDBB/rTn/6khx9+WK+99pqGDh1a63Y2tQpidf3d+v1+WZald999t8pjExMTq71mU7hfK/L7/ZKkX/7ylxo1alSVx/Tq1Svs9fvvvy8pULZ+3bp1NQ7+tWnP888/X2XYCa2aN2bMGF188cV644039P777+u+++7TQw89pI8++ki9e/eOWJsAHH0ISQCOehdddJGeffZZLVq0KGyoUVU6dOggv9+vdevW6YQTTrC379y5U7m5uerQoUNE2+b3+/XDDz/Y/xovSd99952kQDUySXr11VcVFxen999/X7GxsfZxs2bNqvf127Rpo1tuuUW33HKLdu3apVNOOUWTJk3S0KFD7c+6du3aSv/qvnbt2oh9F6HXCe2lKCkp0YYNGzRo0KCIXKehZGdnyxijTp06hf1ea+pov18ratWqlZKSklRWVlaj3+WqVas0ceJEXXvttVqxYoVGjx6tr776yu7dqk5Ng2J2drYkqXXr1jVqT3Z2tu68807deeedWrdunU4++WQ9+uijmjNnTo2uB6BpYk4SgKPe3XffrWbNmmn06NHauXNnpf3r16/X448/Lkm68MILJUmPPfZY2DFTp06VFJiPE2lPPfWU/dwYo6eeekoej0fnnXeepMC/8luWFVZKe+PGjXrjjTfqfM2ysjLl5eWFbWvdurUyMzPt4Xx9+/ZV69at9ec//zlsiN+7776rb775JmLfxaBBg+T1evXEE0+E9VzMnDlTeXl5UfnOo+nSSy9VTEyMJkyYUKknxhijPXv2HPb9R/v9WlFMTIwuu+wyvfrqq1X2kO3evdt+7vP5dM011ygzM1OPP/64Zs+erZ07d+qOO+44YruaNWsWVjK+OkOGDFFycrL++Mc/yufzVduegoICFRUVhe3Lzs5WUlJSlSXfARxb6EkCcNTLzs7WCy+8oJ///Oc64YQTdPXVV6tHjx4qKSnRZ599pldeecVeU+Wkk07SqFGj9Oyzzyo3N1fnnHOOvvjiC/3tb3/TiBEj9JOf/CSibYuLi9N7772nUaNGqX///nr33Xf1n//8R7///e/t+T3Dhg3T1KlTdcEFF+gXv/iFdu3apenTp6tLly5atWpVna6bn5+vdu3a6fLLL9dJJ52kxMREffjhh1qyZIkeffRRSYG5Mw8//LCuvfZanXPOObriiiu0c+dOPf744+rYsWON/nCtiVatWmncuHGaMGGCLrjgAl1yySVau3atZsyYoVNPPfWoWAA2VHZ2th588EGNGzdOGzdu1IgRI5SUlKQNGzbo9ddf14033qi77rrrsO8/mu/XqkyePFkff/yx+vfvrxtuuEHdu3fX3r17tWzZMn344Yfau3evJNnz7ubNm6ekpCT16tVL48eP17333qvLL7/cDoVV6dOnjz788ENNnTpVmZmZ6tSpk12AIlRycrKefvppXXXVVTrllFM0cuRItWrVSps3b9Z//vMfnXHGGXrqqaf03Xff6bzzztP//d//qXv37nK73Xr99de1c+dOjRw5sv5fJoCjmyM19QAgCr777jtzww03mI4dOxqv12uSkpLMGWecYZ588klTVFRkH+fz+cyECRNMp06djMfjMVlZWWbcuHFhxxgTKKk8bNiwSteRVKm09oYNGyqVEx41apRp1qyZWb9+vRk8eLBJSEgw6enp5v777w8rhW2MMTNnzjTHHXeciY2NNd26dTOzZs2qsgxyVdcO3Rcsy1xcXGx+85vfmJNOOskkJSWZZs2amZNOOqnKNY1eeukl07t3bxMbG2tatGhhrrzySvO///0v7JjgZ6moqjZW56mnnjLdunUzHo/HpKenm5tvvrnSmkINWQL8lVdeCTsuWEp6yZIlNWrTq6++as4880zTrFkz06xZM9OtWzeTk5MTtt7P4RzN96sqlAA3xpidO3eanJwck5WVZTwej8nIyDDnnXeeefbZZ40xxixdutS43e6wEuPGGFNaWmpOPfVUk5mZad8PVd1X3377rTn77LNNfHy8kWSXA69qnSRjAr/nIUOGmJSUFBMXF2eys7PNNddcY7788ktjjDE//vijycnJMd26dTPNmjUzKSkppn///ubll1+u9B0COPZYxkRg1iYAoJJrrrlG//rXv3TgwAGnmwIcEfcrABzCnCQAAAAACEFIAgAAAIAQhCQAAAAACOFoSHrggQdkWVbYT7du3ez9RUVFysnJUcuWLZWYmKjLLrusynKpANAYzZ49m/kdOGpwvwLAIY73JJ144onavn27/fPpp5/a++644w699dZbeuWVV7RgwQJt27ZNl156qYOtBQAAANDUOb5OktvtVkZGRqXteXl5mjlzpl544QV7JfhZs2bphBNO0OLFi3Xaaac1dFMBAAAAHAMcD0nr1q1TZmam4uLiNGDAAD300ENq3769li5dKp/Pp0GDBtnHduvWTe3bt9eiRYuqDUnFxcVhK2X7/X7t3btXLVu2lGVZUf88AAAAABonY4zy8/OVmZkpl6v6QXWOhqT+/ftr9uzZ6tq1q7Zv364JEyborLPO0urVq7Vjxw55vV6lpqaGvSc9PV07duyo9pwPPfSQJkyYEOWWAwAAADhabdmyRe3atat2v6MhaejQofbzXr16qX///urQoYNefvllxcfH1+mc48aN09ixY+3XeXl5at++vTZs2KCkpKR6t7mufD6fXn5kkUpy3Trn8izp9v+TJHX6dKEsd+DXMH/LfN23+D6d1OokPTXwqai1xfXfxxSz6HGV9fqF/IMnRe06qB+fz6ePP/5YP/nJT+TxeJxuDo4S3DeoLe4Z1Bb3DGqrMd0z+fn56tSp0xFzgePD7UKlpqbq+OOP1/fff6/zzz9fJSUlys3NDetN2rlzZ5VzmIJiY2MVGxtbaXuLFi2UnJwcjWbXiM/nU3xsM8V43UpJSlFZTIwkqWVamqzy5wn7ExQTH6OExAS1bNkyeo1xF0mxltQ6U4rmdVAvPp9PCQmBe8Hp/0HB0YP7BrXFPYPa4p5BbTWmeyZ4/SNNw3G8ul2oAwcOaP369WrTpo369Okjj8ejefPm2fvXrl2rzZs3a8CAAQ62MsJCxkKWmTJJUowVE91rFuwNPCYQkAAAAICKHO1Juuuuu3TxxRerQ4cO2rZtm+6//37FxMToiiuuUEpKiq6//nqNHTvW7gX69a9/rQEDBhz9le38fvtpaIot8wdC0uEmkUVEwZ7AY3yL6F4HAAAAOAo5GpL+97//6YorrtCePXvUqlUrnXnmmVq8eLFatWolSZo2bZpcLpcuu+wyFRcXa8iQIZoxY4aTTY4MYwKPFbr5/CYQntxWlH8thfQkAQAAANVxNCS9+OKLh90fFxen6dOna/r06Q3UooZhgiGpQo9RqSmV1JDD7ehJAgAAqMgYo9LSUpWVlTndlCbB5/PJ7XarqKgo6t9pTEyM3G53vZf+aVSFG445FX55weF2MS5CEgAAgBNKSkq0fft2FRQUON2UJsMYo4yMDG3ZsqVB1i1NSEhQmzZt5PV663wOQpITynuSKt4kDVK4wVck+Q4GnjMnCQAAwOb3+7VhwwbFxMQoMzNTXq+3Qf6ob+r8fr8OHDigxMTEqM69N8aopKREu3fv1oYNG3TcccfV+XqEJCeUzz2qONzOLtxgRbFwQ3A+khUjxaVE7zoAAABHmZKSEvn9fmVlZSkhIcHp5jQZfr9fJSUliouLi3qBsvj4eHk8Hm3atMm+Zl00qhLgx4xgcbvqCje4ophdg5XtElpUuj4AAAAaoNIwoioSvz/uAEc4WLiBNZIAAACAwyIkOaG6OUkNMdyONZIAAACAwyIkOeFI6yRFc7hdIZXtAAAAgMMhJDngSOskRbcnieF2AAAAwOEQkhxx+J6k6M5JCincAAAAgGPSnj171Lp1a23cuNHeNnDgQI0ZM8axNo0cOVKPPvqoY9cPRUhygp2Rqp6TFN3qdvQkAQAANGUrVqzQyJEjlZGRIa/Xq+zsbE2cOFGlpaX2MZMmTdLw4cPVsWNH5xpawb333qtJkyYpLy/P6aYQkhxRzTpJDTPcjsINAAAATdWsWbPUr18/paen6+2339Y333yj++67T4899piuv/56SVJBQYFmzpxpv24sevTooezsbM2ZM8fpphCSHHGEdZKiOtyukJ4kAACAmjLGqKCk1JEfex57Dc2fP1+jR4/Wc889p8cff1x9+/ZVdna2rrnmGj388MP6+9//ru+//17vvPOOYmNjddpppx32fMXFxbrtttvUunVrxcXF6cwzz9SSJUvs/fn5+bryyivVrFkztWnTRtOmTat2yN6GDRsUExOjt99+W+edd54SEhLUtWtXff7552HHXXzxxXrxxRdr9bmjIYrjulC9YOGG8JBU6i9fJ8nFnCQAAIDGoNBXpu7j33fk2msmDlGCt+Z/rt9+++0aOnSorr766kr7zjnnHEnSypUrtXDhQvXp0+eI57v77rv16quv6m9/+5s6dOigRx55REOGDNH333+vFi1aaOzYsfrvf/+rf//730pPT9f48eO1bNkynXzyyZXOtXr1almWpalTp2r8+PFq27atbrnlFv3ud7/Txx9/bB/Xr18/TZo0ScXFxYqNja3xZ480epKcUN5jZMmJwg37Ao/0JAEAADQZy5cv16pVq5STk1Pl/sLCQkmS1+vVpk2blJmZedjzHTx4UE8//bT+9Kc/aejQoerevbv+8pe/KD4+XjNnzlR+fr7+9re/acqUKTrvvPPUo0cPzZo1S2VlZVWeb/Xq1UpNTdVLL72kgQMH6rjjjtMll1yi3bt3hx2XmZmpkpIS7dixow7fQuTQk+SEYM9phTlJZSbKhRtKS6SS/MDz+ObRuQYAAEATEu+J0ZqJQxy7dk0tX75ckqrsxZGkZcuW2fsLCwsVFxd32POtX79ePp9PZ5xxhr3N4/GoX79++uabb/TDDz/I5/OpX79+9v6UlBR17dq1yvOtXr1al1xyiVq1amVv27Bhg7p06RJ2XHx8vKTAvCknEZIcUO06Sf4oF24IzkeyXFJcanSuAQAA0IRYllWrIW9O8fl8klRt+JkxY4YGDhyorKwspaWlad++fQ3ZPK1evVrjxo0L27ZixQqdffbZYdv27g38vRoappzAcDtHBGuAh2+N+nA7u7Jd80oBDQAAAEev3r17S5IWLFhQad+UKVO0atUqTZ061T52zZo1hz1fdna2vF6v/vvf/9rbfD6flixZou7du6tz587yeDxhhRzy8vL03XffVTpXXl6eNm/ebLcxaMWKFZV6vlavXq127dopLS3t8B84yhp/LG6KynuSrAo9RsF1kqIXkqhsBwAA0BT169dPF1xwgXJycuTz+dS3b1/t3LlTzz33nObMmaOXXnrJDilDhgzRuHHjtG/fPjVvXvUUjGbNmunmm2/Wb37zG7Vo0ULt27fXI488ooKCAl1//fVKSkrSqFGj7P2tW7fW/fffL5fLVWkt0FWrVsntdqtnz572tk2bNmnfvn2VQtLChQs1ePDgyH45dUBIckI1w+2Cc5KiVt2ONZIAAACarFdffVXjx4/XnXfeqe3bt6tVq1Y677zztHLlyrC5Qj179tQpp5yil19+Wb/61a+qPd/kyZPl9/t11VVXKT8/X3379tX7779vB6upU6fqpptu0kUXXaTk5GTdfffd2rJlS6Uhf6tWrVKXLl3Cti9fvlypqalhi9kWFRXpjTfe0HvvvRehb6TuGHPlBH9wuF14yrZDUrR6klgjCQAAoMlKSEjQlClTtHnzZvl8Pm3btk3PP/98lcUUxo8fr8cff1x+v9/eNn/+fD322GP267i4OD3xxBPavXu3ioqK9Omnn+rUU0+19yclJekf//iHDh48qO3bt+vGG2/U2rVrKxVjyMnJ0aJFi8K2jRgxotK8qOBCuEdav6kh0JPkiOBwuwohKerD7YJrJFHZDgAA4Fg2bNgwrVu3Tlu3blVWVladzrF8+XJ9++236tevn/Ly8jRx4kRJ0vDhw+t0Po/HoyeffLJO7400QpITzBF6kqI23I6eJAAAAASMGTOm3ueYMmWK1q5dK6/Xqz59+mjhwoV1LrowevToercnUghJTjjSnCQKNwAAAKCR6927t5YuXep0M6KCOUkOMPZisg08J4nCDQAAAMAREZKcUL4eUrVzkqI13I7CDQAAAMAREZKcEOxJqrhOUkP1JCXQkwQAAABUh5DUkEyg58iU9yQ1eAnwgvIyi/QkAQAAANUiJDnAjkYVCzdEc7hdmU8qzgs8Z04SAAAAUC1CkhNM1esk+ct7mKLSk1QYXKzLkuJTI39+AAAAoIkgJDmhmnWSSk2pJMllReHXYle2S5WiVRgCAAAAaAIISQ4w1a2TVD7czu2KwvJVrJEEAAAA1AghyQl2SGrA4XaskQQAAADUCCHJCcE5Saow3M4fxeF2rJEEAAAA1AghyQnVDLcL9iRFZ7gdayQBAAAgYM+ePWrdurU2btxYq/eNHDlSjz76aHQa1YgQkhxgHCncEOxJIiQBAAA0ZStWrNDIkSOVkZEhr9er7OxsTZw4UaWlpfYxkyZN0vDhw9WxY8danfvee+/VpEmTlJeXF+FWNy6EJCeUZ6SKc5LsdZKiMiepPCQxJwkAAKDJmjVrlvr166f09HS9/fbb+uabb3Tffffpscce0/XXXy9JKigo0MyZM+3XtdGjRw9lZ2drzpw5kW56oxKFcV04ovJhdZblxHA75iQBAADUmDGSr8CZa3sSKo08Opz58+dr9OjRmjVrlq6++mp7e3Z2tnw+n2688Ubdd999WrFihWJjY3XaaaeFvX/9+vXq0qWL3nrrLU2bNk2LFi1SVlaW/v73v6t///72cRdffLFefPFF5eTk1P8zNlKEJCc4MdyOwg0AAAC15yuQ/pjpzLV/v03yNqvx4bfffruGDh0aFpCCzjnnHEnSypUrtXDhQvXp06fSMStXrpRlWZo6darGjx+vtm3b6pZbbtHvfvc7ffzxx/Zx/fr106RJk1RcXKzY2Ng6fLDGj+F2jjhC4QaLwg0AAACoueXLl2vVqlXV9u4UFhZKkrxerzZt2qTMzMrBb+XKlUpNTdVLL72kgQMH6rjjjtMll1yi3bt3hx2XmZmpkpIS7dixI/IfpJGgJ8kJ/vLHCr2nwTlJLlc0CzfQkwQAAFBjnoRAj45T166h5cuXS5JOPvnkKvcvW7bM3l9YWKi4uLhKx6xcuVLDhw9Xq1at7G0bNmxQly5dwo6Lj4+XFJjb1FQRkhxRvk5ShWF1ZSZKhRvKSqWi3MBzCjcAAADUnGXVasibU3w+nyRVGX4kacaMGRo4cKCysrKUlpamffv2VTpm5cqVGjduXNi2FStW6Oyzzw7btndv4B/fQ8NUU8NwOydUs05SMCRFvHBDMCBJUnzzyJ4bAAAAjuvdu7ckacGCBZX2TZkyRatWrdLUqVPtY9esWRN2TF5enjZu3GifJ2jFihWVeqdWr16tdu3aKS0tLYKfoHGhJ8kBVa2TZIyx5yRFvHBDcD5SXIoUw68cAACgqenXr58uuOAC5eTkyOfzqW/fvtq5c6eee+45zZkzRy+99JIdgIYMGaJx48Zp3759at488A/oq1atktvtVs+ePe1zbtq0Sfv27asUkhYuXKjBgwc32GdzAj1JTrB7kg6FpGAvkhSF4XbMRwIAAGjyXn31VV1xxRW68847dfzxx+vSSy9VcXGxVq5cqREjRtjH9ezZU6eccopefvlle9vKlSvVtWvXsOF6y5cvV2pqatiCs0VFRXrjjTd0ww03NMRHcgwhyQmm8pyk6Iak8p4k5iMBAAA0WQkJCZoyZYo2b94sn8+nbdu26fnnn1fXrl0rHTt+/Hg9/vjj8vsDI5luvfVWrV69OuyYESNGVJq7FFystuIaS00NY6+cUD6sLnS4XbCynSTFuCIcklgjCQAAACGGDRumdevWaevWrcrKyqrx+zwej5588skotqxxICQ5oXy0XWjhhtCepIivk8QaSQAAAKhgzJgxtX7P6NGjI9+QRojhdk6wCzcc2hTakxT5wg30JAEAAAA1RUhyxOHnJEUtJFH+GwAAADgiQpIDTBXrJIUuJGuFzFWKCHu4HT1JAAAAwJEQkpzgr7xOUnCNpIhXtpMo3AAAAADUAiHJCcES4CHrJJX6SyVFobKdROEGAAAAoBYISY4IlrervJhsVHqSKNwAAAAA1BghyQmHm5MU6Z4kf5lUWL4IGIvJAgAAAEdESHKCvU5S5cVkI96TVJR36IIMtwMAAACOiJDkBH+gSIPVEIUbgvORYpOlGE9kzw0AAAA0QYQkJ4Wsh1RqolS4wZ6PRC8SAAAAAvbs2aPWrVtr48aNtXrfwIEDNWbMmKi0qSZGjhypRx99NOrXISQ5wJT3GoXNSYrWcLtgTxLzkQAAAI4JK1as0MiRI5WRkSGv16vs7GxNnDhRpaWl9jGTJk3S8OHD1bFjR+caWgf33nuvJk2apLy8vKheh5DkhGDhhpA1Y6M23I41kgAAAI4Zs2bNUr9+/ZSenq63335b33zzje677z499thjuv766yVJBQUFmjlzpv36aNKjRw9lZ2drzpw5Ub0OIakhmfBHK6QnKbhOksuK8K+ENZIAAADqzBijAl+BIz8m+A/rNTR//nyNHj1azz33nB5//HH17dtX2dnZuuaaa/Twww/r73//u77//nu98847io2N1WmnnRb2/vXr18uyLL399ts677zzlJCQoK5du+rzzz+v8nrFxcW67bbb1Lp1a8XFxenMM8/UkiVLwo7Jz8/XL3/5S7Vt21Zt27bVtGnTqh2yV9PrX3zxxXrxxRdr9d3UljuqZ0fVgsPtVLlwg9sV4V8JayQBAADUWWFpofq/0N+Ra3/+i8+V4Emo8fG33367hg4dqquvvrrSvnPOOUeStHLlSi1cuFB9+vSpdMzKlStlWZamTp2q8ePHq23btrrlllv0u9/9Th9//HGl4++++269+uqr+tvf/qYOHTrokUce0ZAhQ/T999+rRYvAP9CPHTtWn332mV544QV16tRJDzzwgJYtW6aTTz65ztfv16+fJk2apOLiYsXGxtb4+6kNepKc5KqicANzkgAAAFBLy5cv16pVq5STk1Pl/sLCQkmS1+vVpk2blJmZWemYlStXKjU1VS+99JIGDhyo4447Tpdccol2795d6diDBw/q6aef1p/+9CcNHTpU3bt311/+8hfFx8dr5syZkgK9SH/729/0yCOP6JxzzlGPHj00a9YslZWVVdnGml4/MzNTJSUl2rFjR62+o9qgJ8kJ/uBispXXSYr8cDuq2wEAANRVvDten/+i6uFmDXHtmlq+fLkkVdlDI0nLli2z9xcWFiouLq7SMStXrtTw4cPVqlUre9uGDRvUpUuXSseuX79ePp9PZ5xxhr3N4/GoX79++uabbyRJP/zwg3w+n/r162cfk5KSoq5du1bZxppePz4+8L0UFBRUeZ5IICQ5wVS/TlLEh9sVEpIAAADqyrKsWg15c4rP55OkKsOPJM2YMUMDBw5UVlaW0tLStG/fvkrHrFy5UuPGjQvbtmLFCp199tmRb3AVanr9vXsDf9+GhqlIY7idk6pYJyl6hRuYkwQAANBU9e7dW5K0YMGCSvumTJmiVatWaerUqfaxa9asCTsmLy9PGzdutM8TtGLFiip7p7Kzs+X1evXf//7X3ubz+bRkyRJ1795dktS5c2d5PJ6wYg55eXn67rvvKp2vNtdfvXq12rVrp7S0tErniRR6khxg/OWFG6roSYr8nCQKNwAAADR1/fr10wUXXKCcnBz5fD717dtXO3fu1HPPPac5c+bopZdesgPIkCFDNG7cOO3bt0/NmzeXJK1atUput1s9e/a0z7lp0ybt27evypDUrFkz3XzzzfrNb36jFi1aqH379nrkkUdUUFBglxZPSkrSqFGj9Nvf/lZxcXHq2LGjJkyYIJfLFTaiqrbXX7hwoQYPHhyJr61ahCQnVTEnKcYVwZDk9x8abkfhBgAAgCbt1Vdf1fjx43XnnXdq+/btatWqlc477zytXLkybB5Qz549dcopp+jll1/Wr371K0myjwkdrrd8+XKlpqZWu+Ds5MmT5ff7ddVVVyk/P199+/bV+++/bwcvSZo6dap+9atfaeTIkUpOTtbdd9+tLVu2VBoWWNPrFxUV6Y033tB7771Xn6/qiBhu54Tywg1WFcPtItqTVJx3qNw4c5IAAACatISEBE2ZMkWbN2+Wz+fTtm3b9Pzzz1dZKGH8+PF6/PHH5S8f4XTrrbdq9erVYceMGDGi0tyl+fPn67HHHpMUmP/0xBNPaPfu3SoqKtKnn36qU089Nez4pKQkzZkzR1u3btXWrVt14403au3atZWKMdT0+sHFciuu8RRp9CQ5IriabBXD7SLZkxQcaudNlNzRqSEPAACAo8+wYcO0bt06bd26VVlZWVG7zvLly7VmzRp1795dZWVlevDBByVJw4cPr9P5PB6PnnzyyUg2sUqEJAfYqyeHrJNkD7eLZE8S5b8BAABQjTFjxjTIdaZOnaq1a9fK6/WqT58+WrhwYZ2LLowePTrCrasaIakBGftJ+XC70DlJJhohiYVkAQAA4JzevXtryZIl2r9/v5KTk+VyHR2zfY6OVjY1/srD7aLSk1RIZTsAAACgtghJjgiGpCoKN0R0TlJwjSR6kgAAAICaIiQ5wRymcENU5iTRkwQAAADUFCHJCXbhhigPt2NOEgAAAFBrhCQnmMrrJNmFGyI53K6Q6nYAAABAbRGSHGCqGG4Xnep2hCQAAACgtghJTmjo4XbMSQIAAABqjJDkhMP1JEW0uh2FGwAAAIDaIiQ5wa4AXsWcpEj1JBlzaE4ShRsAAACAGiMkOcAoUO5bVRVuiFRIKt4v+QNrLzEnCQAAAPW1ZcsWDRw4UN27d1evXr30yiuvON2kqGk0IWny5MmyLEtjxoyxtxUVFSknJ0ctW7ZUYmKiLrvsMu3cudO5RkaKv4rhduVzklyuCP1KgvORPAmSJz4y5wQAAMAxy+1267HHHtOaNWv0wQcfaMyYMTp48KDTzYqKRhGSlixZomeeeUa9evUK237HHXforbfe0iuvvKIFCxZo27ZtuvTSSx1qZeRY5ePtLFflOUluyx2ZixTsCzwyHwkAAAAV7NmzR61bt9bGjRtr/J42bdro5JNPliRlZGQoLS1Ne/futfePHDlSjz76aIRb6gzHQ9KBAwd05ZVX6i9/+YuaN29ub8/Ly9PMmTM1depUnXvuuerTp49mzZqlzz77TIsXL3awxRFg9ySFDLfzR7hwg72QbPPDHwcAAIAmZcWKFRo5cqQyMjLk9XqVnZ2tiRMnqrS01D5m0qRJGj58uDp27FinayxdulRlZWXKysqyt917772aNGmS8vLy6vsRHBehbou6y8nJ0bBhwzRo0CA9+OCD9valS5fK5/Np0KBB9rZu3bqpffv2WrRokU477bQqz1dcXKzi4mL79f79+yVJPp9PPp8vSp/iyEKv7fcH5iSVGb+93VdWvt+viLTTOrBbbkn++BYqc/Bzo+7se4PfH2qB+wa1xT2D2mrK94zP55MxRn6/3/577Wgza9Ys3Xzzzbrpppv073//W82bN9fChQt111136fvvv9fs2bNVUFCgmTNn6t13363T59y7d6+uvvpqPfPMM2Hv7969u7Kzs/X888/rlltusbcH1wgNfrfR5vf7ZYyRz+dTTEx4B0RN71tHQ9KLL76oZcuWacmSJZX27dixQ16vV6mpqWHb09PTtWPHjmrP+dBDD2nChAmVtn/wwQdKSEiod5vrJ3D9PXt+VDNJ33z7rXLfeUeStLFgoyTp+3Xf650t79T7Sp13faqekrbtK9LSd+p/Pjhn7ty5TjcBRyHuG9QW9wxqqyneM263WxkZGTpw4IBKSkqcbk6tffrpp7rxxhs1ffp0jRw50t5+6aWXKj8/X2PGjNGYMWP01Vdfyev1qnv37naHgiRt2LBBp5xyiv75z3/q6aef1pIlS9S2bVs9/fTT6tu3r6RAh8RPf/pT/frXv1aPHj3C3i9J559/vv7xj3/ol7/8ZaX25efnR+mThyspKVFhYaE++eSTsN4zSSooKKjRORwLSVu2bNHtt9+uuXPnKi4uLmLnHTdunMaOHWu/3r9/v7KysjR48GAlJydH7Dq15fP5NOez/0qSWjYPVJvr3r27Ui+8UJL0+eLPtfSHpererbsu7H5hva/nmr9C2iq16dJDFw6p//nQ8Hw+n+bOnavzzz9fHo/H6ebgKMF9g9rinkFtNeV7pqioSFu2bFFiYqL996kxRqaw0JH2WPHxskIKfR3JPffcowsuuEA33nhjpX1DhgyRJK1fv15Lly5Vnz59Kv1tvH79elmWpWeffVb333+/2rZtq5ycHE2aNEnz5s2TMUY33XSTzj///CqvIUlnnnmmHn30UcXGxio2NlZS4DvMz89XUlJSrT5PXRUVFSk+Pl5nn312pZxRMdRVx7GQtHTpUu3atUunnHKKva2srEyffPKJnnrqKb3//vsqKSlRbm5uWG/Szp07lZGRUe15Q38hoTweT6P5L3Lw5ohxV26T1+2NTDuLAoUbYpqlKaaRfG7UTWO6d3H04L5BbXHPoLaa4j1TVlYmy7LkcrnsisP+ggJ91/dUR9rTddlSuWo4Emr58uVatWqVJk+eXGW15OB0lLi4OG3evFlt27atdNxXX32l1NRUvfTSS2rVqpUkafjw4XrmmWfkcrn06aef6uWXX1avXr305ptvSpKef/559ezZ0z5Hu3btVFJSol27dqlDhw6SDk01CX630eZyuWRZVpX3aE3vWcdC0nnnnaevvvoqbNu1116rbt266be//a2ysrLk8Xg0b948XXbZZZKktWvXavPmzRowYIATTY4YY8rHYobcJKUm0BUYsXWSgoUbqG4HAADQ5C1fvlyS7OpzFS1btszeX1hYWOVIrpUrV2r48OF2QJICQ/C6dOkiKdBLdKQ5RfHxgaVnajqsrbFyLCQlJSWpR48eYduaNWumli1b2tuvv/56jR07Vi1atFBycrJ+/etfa8CAAdUWbThq2NXtDm2y10myIpSuC4MlwFlIFgAAoK6s+Hh1XbbUsWvXVLAgQXXTWGbMmKGBAwcqKytLaWlp2rdvX6VjVq5cqXHjxoVtW7Fihc4+++watyNYEjw0aB2NHK9udzjTpk2Ty+XSZZddpuLiYg0ZMkQzZsxwulkRY4X0JPnLe5fcrkitkxTsSSIkAQAA1JVlWbIcL/51ZL1795YkLViwQCNGjAjbN2XKFK1atcpeRqd3796aM2dO2DF5eXnauHGjfZ6gFStW6LbbbqtxO1avXq127dopLS2tDp+i8WhUIWn+/Plhr+Pi4jR9+nRNnz7dmQZFS3C4nVV5uF3EepIKyhf2YrgdAABAk9evXz9dcMEFysnJkc/nU9++fbVz504999xzmjNnjl566SU7AA0ZMkTjxo3Tvn377HVKV61aJbfbHTa/aNOmTdq3b1+1Q/iqsnDhQg0ePDiin80Jji8me0wqH22nkOoewZ6kiMxJMiZkMVl6kgAAAI4Fr776qq644grdeeedOv7443XppZequLhYK1euDOtd6tmzp0455RS9/PLL9raVK1eqa9euYcP1li9frtTU1BovOFtUVKQ33nhDN9xwQ6Q+kmMISU4oX1BLrkMhKTgnKSLD7UoOSP7yhbLoSQIAADgmJCQkaMqUKdq8ebN8Pp+2bdum559/Xl27dq107Pjx4/X444/bhRhuvfVWrV69OuyYESNGVDl3qTqzZs1Sv379jv76AWpkw+2OGeZQGcSgiA63C/YiueMkb+MfQwsAAICGNWzYMK1bt05bt25VVlZWRM7p8Xj05JNPRuRcTiMkOSHYk2RVLtwQ44rAcDvmIwEAAOAIxowZE9HzjR49OqLncxLD7Rxg7OF2h77+4HC7iMxJCoYk5iMBAAAAtUZIcoKpYp0kE8GQVBjsSSIkAQAAALVFSHKCPdouWj1JrJEEAAAA1BUhyQn2OkmVCzdEpLodc5IAAACAOiMkOcCocuGGUn8kQxJrJAEAAAB1RUhyQrAjKWSdpKiEJHqSAAAAgFojJDmhiuF2vvLFXyMSkgoZbgcAAADUFSHJCeWj7aI33C4YkprX/1wAAADAMYaQ1JCC4cheJ6mK4XYWhRsAAAAAJxGSnHCY6nYel6ee5zYUbgAAAADqgZDkhPKepNB1knxlEZqT5CuQyooDz+lJAgAAAGqNkOQAExxuZ1UeblfvnqRgL1KMV/I2q9+5AAAA0CTt2bNHrVu31saNG2v1vgsvvFDjx4/XGWecoc6dO2v16tWSpJEjR+rRRx+NQkudQUhyUjQWkw2djxRyfgAAABwbVqxYoZEjRyojI0Ner1fZ2dmaOHGiSktL7WMmTZqk4cOHq2PHjva2hx56SKeeeqqSkpLUunVrjRgxQmvXrg079+rVq9W+fXv997//1W233aY333xTknTvvfdq0qRJysvLa5DPGG2EJCf4w4fb+Y1f/vJ5SvUPScxHAgAAOFbNmjVL/fr1U3p6ut5++2198803uu+++/TYY4/p+uuvlyQVFBRo5syZ9uugBQsWKCcnR4sXL9bcuXPl8/k0ePBgHTx4UJK0f/9+WZal0aNHS5J8Pp9SU1MlST169FB2drbmzJnTcB82iiJQSg21VqFwQ3ConRSBkFS4L/CYQEgCAAA4lsyfP1+jR4/WrFmzdPXVV9vbs7Oz5fP5dOONN+q+++7TihUrFBsbq9NOOy3s/e+9917Y69mzZ6t169ZaunSpzj77bK1evVqnnnqqvf+rr77SddddZ7+++OKL9eKLLyonJydKn7DhEJIcEZyTFOhJimhICvYkEZIAAADqzRij0hK/I9d2e12yajF94vbbb9fQoUPDAlLQOeecI0lauXKlFi5cqD59+hzxfMGhcy1aBP6uXL16tU466SR7/1dffaWePXvar/v166dJkyapuLhYsbGxNW53Y0RIckLwv2flN73P77N3RXROEgAAAOqltMSvZ29f4Mi1b3z8HHliY2p07PLly7Vq1SpNnjy5yv2FhYWSJK/Xq02bNikzM/Ow5/P7/RozZozOOOMM9ejRQ1IgJJ133nmSpNLSUuXm5qply0N/c2ZmZqqkpEQ7duxQhw4datTuxoqQ5IjgnKQqhtvVdzFZ5iQBAAAcc5YvXy5JOvnkk6vcv2zZMnt/YWGh4uLiDnu+nJwcrV69Wp9++qm97YknnrCfu91ubdiwIew98fHxkgJzno52hCQnlBduUHnhhmBPktty16pLtUr2cDt6kgAAAOrL7XXpxsfPcezaNeXzBf6erC78zJgxQwMHDlRWVpbS0tK0b9++as9166236u2339Ynn3yidu3a1bgNe/cGRjS1atWqxu9prAhJDjCHxttJClkjKaaeayRJUiHD7QAAACLFsqwaD3lzUu/evSUFKtSNGDEibN+UKVO0atUqLV682D62qip0xhj9+te/1uuvv6758+erU6dOtWrD6tWr1a5dO6WlpdXtQzQihCQnlHckqcJwu3oPtZMo3AAAAHAM6tevny644ALl5OTI5/Opb9++2rlzp5577jnNmTNHL730kh2khgwZonHjxmnfvn1q3ry5fY6cnBy98MILevPNN5WUlKQdO3ZIklJSUuyhdIezcOFCDR48ODofsIGxTpIT/IGepOA6SXZIqm/RBkkqoAQ4AADAsejVV1/VFVdcoTvvvFPHH3+8Lr30UhUXF2vlypVhvUs9e/bUKaecopdffjns/U8//bTy8vI0cOBAtWnTxv556aWXjnjtoqIivfHGG7rhhhsi/bEcQU+SE0ywBHh5T5KJZEiicAMAAMCxKCEhQVOmTNGUKVOOeOz48eP1m9/8RjfccINc5f9wb4J/o9ZBcBHbimsvHa0ISQ4w1ayTVO+QVFIglQbKOzInCQAAANUZNmyY1q1bp61btyorK6ve5/N4PHryyScj0LLGgZDkhGB1u/JCdhELScGiDS63FJtUv3MBAACgSRszZkzEzjV69OiInasxYE6Sg6yKJcAjuZBsfUuJAwAAAMcoQpITygs3VFonqd4hiflIAAAAQH0RkpxgT4qrsE6Sq57rJLFGEgAAAFBvhCQnVVwnKWLD7Zof/jgAAABUqz5V3uC8SPz+CElOCK6TZEV4MVl7IVl6kgAAAGrL4wmM6ikoKHC4JaiP4O8v+PusC6rbOanCYrL1Hm5XwHA7AACAuoqJiVFqaqp27dolKbDukEUxrHrz+/0qKSlRUVGRvSZTNBhjVFBQoF27dik1NVUxMTF1PhchyQHGlBduCK6TFKnFZCncAAAAUC8ZGRmSZAcl1J8xRoWFhYqPj2+Q0Jmammr/HuuKkOSEaK+TRE8SAABAnViWpTZt2qh169by+XxON6dJ8Pl8+uSTT3T22WfXawhcTXg8nnr1IAURkhwRCElWheF2EetJSqAnCQAAoD5iYmIi8sc2At9laWmp4uLioh6SIoXCDU4I9iRFfJ2kfYFHepIAAACAOiMkOaGadZIiNyeJEuAAAABAXRGSHBEcbhcIScGepHpVt/MVSb6Dgef0JAEAAAB1Rkhygl24IYI9ScGiDVaMFJdSn9YBAAAAxzRCkiPC5yRFZDFZe42kFnb4AgAAAFB7hCQHmOCcJCuC1e1YIwkAAACICEKSE8qH21kV1kmq15wk1kgCAAAAIoKQ1JBMhSfB4XYmgj1JrJEEAAAA1AshyQGHhttFsHBD6JwkAAAAAHVGSHJChTlJEVlMtoDhdgAAAEAkEJKcYMLXSYrInCQKNwAAAAARQUhygt8feLTCF5ONyDpJ9CQBAAAA9UJIclLFdZIo3AAAAAA4jpDkpKgUbqAnCQAAAKgPQpKDrIohyYpASGJOEgAAAFAvhCQnRWq4XWmJVJIfeM5wOwAAAKBeCElOCvYkmXpWtwsWbbBcUlxqBBoGAAAAHLsISU4KrpNUVs/qdvZQu+Z27xQAAACAuuEvagdFbJ0k1kgCAAAAIoaQ5ADLfhI+3K7OPUmskQQAAABEDCHJSZEq3GCvkURIAgAAAOqLkOSkSK2TZIek5pFoFQAAAHBMIyQ5KLhOks9f38IN+wKP9CQBAAAA9UZIclKkh9tRuAEAAACoN0KSkyoOt7Mo3AAAAAA4jZDkpArD7epdAjyBniQAAACgvghJTrEse05S/ddJoicJAAAAiBRCklMse7WkCMxJKg9JzEkCAAAA6o2Q5BTXoa++XovJlvmk4rzAc3qSAAAAgHojJDmlvCfJb/zyG7+kOoakwn3BE0rxqZFpGwAAAHAMIyQ5wlSajyTVMSTZQ+1SJVdMBNoGAAAAHNsISU6psEaSVNeQxBpJAAAAQCQRkpxSofy3VM+QxHwkAAAAICIISQ6xqgpJdVlMloVkAQAAgIgiJDmlwpwkt+W2g1OtsJAsAAAAEFGEJKdUmJPkiannQrLxzSPRKgAAAOCYR0hySoWQVKehdtKhkMRwOwAAACAiCEkOCQ6ss0NSXYo2SMxJAgAAACKMkOSUYE+SqWdIYk4SAAAAEFGEJKdUHG5X55BETxIAAAAQSYQkp1SsblffniQWkwUAAAAigpDkBFN5naQ6haSyUqkoL/CcniQAAAAgIghJTolESCrKlWQCzykBDgAAAEQEIckpFddJctVhnaTgfKS4FCmmjsP1AAAAAIRxNCQ9/fTT6tWrl5KTk5WcnKwBAwbo3XfftfcXFRUpJydHLVu2VGJioi677DLt3LnTwRZHkCsCc5KYjwQAAABEnKMhqV27dpo8ebKWLl2qL7/8Uueee66GDx+ur7/+WpJ0xx136K233tIrr7yiBQsWaNu2bbr00kudbHLEWKoQkuqymKxd/pv5SAAAAECkODpG6+KLLw57PWnSJD399NNavHix2rVrp5kzZ+qFF17QueeeK0maNWuWTjjhBC1evFinnXaaE02OnEgMt2MhWQAAACDiGs1ElrKyMr3yyis6ePCgBgwYoKVLl8rn82nQoEH2Md26dVP79u21aNGiakNScXGxiouL7df79++XJPl8Pvl8vuh+iMOoeG1Tvq3YF2iry3LVun2u/N2KkeSPS1WZg58N0RG8H5y8b3H04b5BbXHPoLa4Z1BbjemeqWkbHA9JX331lQYMGKCioiIlJibq9ddfV/fu3bVixQp5vV6lpqaGHZ+enq4dO3ZUe76HHnpIEyZMqLT9gw8+UEJCQqSbX0uHrl9QWKh33nlHy4qXSZL27t6rd955p1Zn6771Sx0n6Ycdefq6lu/F0WPu3LlONwFHIe4b1Bb3DGqLewa11RjumYKCghod53hI6tq1q1asWKG8vDz961//0qhRo7RgwYI6n2/cuHEaO3as/Xr//v3KysrS4MGDlZycHIkm14nP59OcT/9rv26WlKgLL7xQB9cd1BtL3lBmRqYuPPvCWp0z5q33pF1SpxP7qMMZtXsvGj+fz6e5c+fq/PPPl8dTh+GYOCZx36C2uGdQW9wzqK3GdM8ER5kdieMhyev1qkuXLpKkPn36aMmSJXr88cf185//XCUlJcrNzQ3rTdq5c6cyMjKqPV9sbKxiY2Mrbfd4PI7/UkJZlksej0fGCqxz5HV7a9++4lxJUkxiK8U0os+GyGps9y6ODtw3qC3uGdQW9wxqqzHcMzW9fqNbJ8nv96u4uFh9+vSRx+PRvHnz7H1r167V5s2bNWDAAAdbWHfGhLyIyDpJwep2lAAHAAAAIsXRnqRx48Zp6NChat++vfLz8/XCCy9o/vz5ev/995WSkqLrr79eY8eOVYsWLZScnKxf//rXGjBgwNFf2U5GVvk6ST5/YPJY3dZJorodAAAAEGmOhqRdu3bp6quv1vbt25WSkqJevXrp/fff1/nnny9JmjZtmlwuly677DIVFxdryJAhmjFjhpNNjiAWkwUAAAAaI0dD0syZMw+7Py4uTtOnT9f06dMbqEUNqMJwu1ovJusvk4pyA8/pSQIAAAAiptHNSTpmWPXsSSrKk4w/8Dy+eSRbBgAAABzTCElOcYWHpFoXbggOtYtNltzeSLYMAAAAOKYRkhxiWYGvvs6FG+yiDcxHAgAAACKJkOSU+g63o2gDAAAAEBV1CknLli3TV199Zb9+8803NWLECP3+979XSUlJxBrXpAULN5g6hqRCyn8DAAAA0VCnkPSrX/1K3333nSTphx9+0MiRI5WQkKBXXnlFd999d0Qb2FRZVoTmJDHcDgAAAIioOoWk7777TieffLIk6ZVXXtHZZ5+tF154QbNnz9arr74ayfY1XVY9F5NlIVkAAAAgKuoUkowx8vsD5ac//PBDXXjhhZKkrKws/fjjj5FrXVNWcZ0k5iQBAAAAjUKdQlLfvn314IMP6vnnn9eCBQs0bNgwSdKGDRuUnp4e0QY2RZZM/Qs3FO4LPDLcDgAAAIioOoWkxx57TMuWLdOtt96qe+65R126dJEk/etf/9Lpp58e0QY2VRXnJLmtOvYkEZIAAACAiKrlX+YBvXr1CqtuF/SnP/1JMTEx9W7UMaHew+2YkwQAAABEQ51CUlBJSYl27dplz08Kat++fb0adUyoULihztXtmJMEAAAARFSdQtJ3332n66+/Xp999lnYdmOMLMtSWVlZRBrXpLnqMSfJ7w+Zk0RPEgAAABBJdQpJ1157rdxut95++221adPGnl+DmqvXOknFeZIpD6LMSQIAAAAiqk4hacWKFVq6dKm6desW6fYcO6zyOUmmDj1JwflI3kTJHRvplgEAAADHtDpVt+vevTvrIdVXfQo32EUb6EUCAAAAIq1OIenhhx/W3Xffrfnz52vPnj3av39/2A9qoHyEYt1CEkUbAAAAgGip03C7QYMGSZLOO++8sO0Ubqg5q3y4XbC6Xa1CUiHlvwEAAIBoqVNI+vjjjyPdjmNPvYbbsZAsAAAAEC11CknnnHNOpNtx7KmwTpLbqsucJHqSAAAAgEir82Kyubm5mjlzpr755htJ0oknnqjrrrtOKSkpEWtck+aqRwlw5iQBAAAAUVOnwg1ffvmlsrOzNW3aNO3du1d79+7V1KlTlZ2drWXLlkW6jU1SvdZJKqS6HQAAABAtdepJuuOOO3TJJZfoL3/5i9zuwClKS0s1evRojRkzRp988klEG9kkWZQABwAAABqjOoWkL7/8MiwgSZLb7dbdd9+tvn37RqxxTZorAovJMicJAAAAiLg6DbdLTk7W5s2bK23fsmWLkpKS6t2oY4Il+Y1ffuOXxDpJAAAAQGNRp5D085//XNdff71eeuklbdmyRVu2bNGLL76o0aNH64orroh0G5sky3LZQ+2kWoQkY1gnCQAAAIiiOg23mzJliizL0tVXX63S0vLCAx6Pbr75Zk2ePDmiDWyyLKtuIal4vxR8H3OSAAAAgIirU0jyer16/PHH9dBDD2n9+vWSpOzsbCUkJES0cU2ay2WvkSTVIiQFh9p5EiRPfBQaBgAAABzb6rxOkiQlJCSoZ8+ekWrLMcVyWeEhqaaLyRbsCzwy1A4AAACIihqHpEsvvVSzZ89WcnKyLr300sMe+9prr9W7YU2fFVb+O7hu0hHZRRuaR6ldAAAAwLGtxiEpJSXF/kM+OTm55n/U4xAT8tzlqudCsvQkAQAAANFQ45A0a9Ys+/ns2bOj0ZZjhzGSK6QnqaZD7aRDPUkUbQAAAACiok4lwM8991zl5uZW2r5//36de+659W3TscEKH25XYywkCwAAAERVnULS/PnzVVJSUml7UVGRFi5cWO9GHQssy6VSU5eQxEKyAAAAQDTVqrrdqlWr7Odr1qzRjh077NdlZWV677331LZt28i1rimra08Sc5IAAACAqKpVSDr55JNlWZYsy6pyWF18fLyefPLJiDWuSQspAV634Xb0JAEAAADRUKuQtGHDBhlj1LlzZ33xxRdq1aqVvc/r9ap169aKiYmJeCObIiukuh0hCQAAAGg8ahWSOnToIEny+/1Racyxpa49ScxJAgAAAKKpViGpojVr1mjz5s2Vijhccskl9WrUMaEu6yQZE1ICnDlJAAAAQDTUKST98MMP+ulPf6qvvvpKlmXJmMAqqcEFZsvKyiLXwqaqLoUbSg5I5b1PhCQAAAAgOupUAvz2229Xp06dtGvXLiUkJOjrr7/WJ598or59+2r+/PkRbmLTZNVlMdlgL5I7TvImRKllAAAAwLGtTj1JixYt0kcffaS0tDS5XC65XC6deeaZeuihh3Tbbbdp+fLlkW5n02PVYbgdC8kCAAAAUVennqSysjIlJSVJktLS0rRt2zZJgcIOa9eujVzrmjLLqv1issGQRNEGAAAAIGrq1JPUo0cPrVy5Up06dVL//v31yCOPyOv16tlnn1Xnzp0j3camyWXJV1bL6naFlP8GAAAAoq1OIenee+/VwYMHJUkTJ07URRddpLPOOkstW7bUSy+9FNEGNlV1WifJrmxHSAIAAACipU4haciQIfbzLl266Ntvv9XevXvVvHlzu8IdjqQew+2YkwQAAABETa3nJPl8Prndbq1evTpse4sWLQhItVGXdZJYSBYAAACIulqHJI/Ho/bt27MWUn1Zks9f1zlJ9CQBAAAA0VKn6nb33HOPfv/732vv3r2Rbs8xgzlJAAAAQONUpzlJTz31lL7//ntlZmaqQ4cOatasWdj+ZcuWRaRxTVrIOkk1X0x2X+CRkAQAAABETZ1C0ogRIyLcjGOQZam0tsPtmJMEAAAARF2dQtL9998f6XYce1yWPSepRoUbjAkZbsecJAAAACBa6jQnSZJyc3P13HPPady4cfbcpGXLlmnr1q0Ra1xTZllW7eYk+QqksuLAc0ISAAAAEDV16klatWqVBg0apJSUFG3cuFE33HCDWrRooddee02bN2/W3//+90i3s0mxZMLnJNUkJAV7kWK8krfZ4Y8FAAAAUGd16kkaO3asrrnmGq1bt05xcXH29gsvvFCffPJJxBrXpLlc9mKyNRpuF7qQLOtRAQAAAFFTp5C0ZMkS/epXv6q0vW3bttqxY0e9G3VMsFS3niSKNgAAAABRVaeQFBsbq/3791fa/t1336lVq1b1btSxwHK5areYbCHlvwEAAICGUKeQdMkll2jixIny+QJ/5FuWpc2bN+u3v/2tLrvssog2sMmq65wkQhIAAAAQVXUKSY8++qgOHDig1q1bq7CwUOecc466dOmipKQkTZo0KdJtbJpqW90udE4SAAAAgKipU3W7lJQUzZ07V59++qlWrVqlAwcO6JRTTtGgQYMi3b4mywpZJ8ltMScJAAAAaCzqFJKCzjzzTJ155pmRasuxpbY9SYX0JAEAAAANoc6Lyc6bN08XXXSRsrOzlZ2drYsuukgffvhhJNvWtIXMSapZCXDmJAEAAAANoU4hacaMGbrggguUlJSk22+/XbfffruSk5N14YUXavr06ZFuY9Pkqu2cpGBIoicJAAAAiKY6Dbf74x//qGnTpunWW2+1t912220644wz9Mc//lE5OTkRa2DTErIIbMhwu5r1JJWXAGdOEgAAABBVdepJys3N1QUXXFBp++DBg5WXl1fvRh0LLJdLpYYS4AAAAEBjU+d1kl5//fVK2998801ddNFF9W7UsaEWw+1KCqTSwsBzhtsBAAAAUVWn4Xbdu3fXpEmTNH/+fA0YMECStHjxYv33v//VnXfeqSeeeMI+9rbbbotMS5ua2sxJCla2c7ml2KQoNwwAAAA4ttUpJM2cOVPNmzfXmjVrtGbNGnt7amqqZs6cab+2LIuQVA3L5Tq0TtKRQlLoQrKWdfhjAQAAANRLnULShg0bJEk//vijJCktLS1yLTpWWFYtQhILyQIAAAANpdZzknJzc5WTk6O0tDSlp6crPT1daWlpuvXWW5WbmxuFJjZRIeskua0aDrdjPhIAAAAQdbXqSdq7d68GDBigrVu36sorr9QJJ5wgSVqzZo1mz56tefPm6bPPPlPz5s2j0tgmxVWLEuD2cDu+VwAAACDaahWSJk6cKK/Xq/Xr1ys9Pb3SvsGDB2vixImaNm1aRBvZFFm1WSepgJ4kAAAAoKHUarjdG2+8oSlTplQKSJKUkZGhRx55pMrS4KiCy1Xz6nbMSQIAAAAaTK1C0vbt23XiiSdWu79Hjx7asWNHvRt1bLBqvpgsc5IAAACABlOrkJSWlqaNGzdWu3/Dhg1q0YLejmqZkKeW5Dd+SbXoSUrguwUAAACirVYhaciQIbrnnntUUlJSaV9xcbHuu+8+XXDBBRFrXJNljPzWocRU85BETxIAAAAQbbUu3NC3b18dd9xxysnJUbdu3WSM0TfffKMZM2aouLhYzz//fLTa2qSUlfciSTUJSfsCj4QkAAAAIOpqFZLatWunRYsW6ZZbbtG4ceNkTKA3xLIsnX/++XrqqaeUlZUVlYY2NWVWbUJSsHADJcABAACAaKtVSJKkTp066d1339W+ffu0bt06SVKXLl2Yi1RLYT1Jh1tM1lck+Q4GntOTBAAAAERdrUNSUPPmzdWvX79ItuWYUlZexcHtcsuyrOoPDFa2s2KkuJQGaBkAAABwbKtV4QZEjl+BnqSaLyTbQjpcmAIAAAAQEY6GpIceekinnnqqkpKS1Lp1a40YMUJr164NO6aoqEg5OTlq2bKlEhMTddlll2nnzp0OtThyyspD0mGH2kksJAsAAAA0MEdD0oIFC5STk6PFixdr7ty58vl8Gjx4sA4ePGgfc8cdd+itt97SK6+8ogULFmjbtm269NJLHWx1ZIQOtzssFpIFAAAAGlSd5yRFwnvvvRf2evbs2WrdurWWLl2qs88+W3l5eZo5c6ZeeOEFnXvuuZKkWbNm6YQTTtDixYt12mmnOdHsiAhWt2MhWQAAAKBxcTQkVZSXlydJdqW8pUuXyufzadCgQfYx3bp1U/v27bVo0aIqQ1JxcbGKi4vt1/v375ck+Xw++Xy+aDb/sCpeu6Q08DrGijlsu1wHflSMJH9cqsocbD8aXvC+cPK+xdGH+wa1xT2D2uKeQW01pnumpm1oNCHJ7/drzJgxOuOMM9SjRw9J0o4dO+T1epWamhp2bHp6unbs2FHleR566CFNmDCh0vYPPvhACQkJEW937TSzn331zddSG6mkqETvvPNOte/o8b+lypa0fts+rTnMcWi65s6d63QTcBTivkFtcc+gtrhnUFuN4Z4pKCio0XGNJiTl5ORo9erV+vTTT+t1nnHjxmns2LH26/379ysrK0uDBw9WcnJyfZtZZz6fT88v+EySZMmo6wldpdz3lJyYrAsvvLDa98W8+W9pt9S556nqeFr1x6Hp8fl8mjt3rs4//3x5PEeoggiU475BbXHPoLa4Z1BbjemeCY4yO5JGEZJuvfVWvf322/rkk0/Url07e3tGRoZKSkqUm5sb1pu0c+dOZWRkVHmu2NhYxcbGVtru8Xgc/6WEMjGBR2+M9/DtKsqVJMUktlJMI2o/Gk5ju3dxdOC+QW1xz6C2uGdQW43hnqnp9R2tbmeM0a233qrXX39dH330kTp16hS2v0+fPvJ4PJo3b569be3atdq8ebMGDBjQ0M2NqBpXt7MLN1DdDgAAAGgIjvYk5eTk6IUXXtCbb76ppKQke55RSkqK4uPjlZKSouuvv15jx45VixYtlJycrF//+tcaMGDAUV3ZTpLKTJmkmoQkSoADAAAADcnRkPT0009LkgYOHBi2fdasWbrmmmskSdOmTZPL5dJll12m4uJiDRkyRDNmzGjglkZezReTLQ9JLCYLAAAANAhHQ5Ix5ojHxMXFafr06Zo+fXoDtKjhlJaHJI/rMOMiS0ukkvzAc9ZJAgAAABqEo3OSjmWlNRluV1jei2S5pLjU6DcKAAAAACHJKfZwu8OFJHuoXXPJxa8KAAAAaAj85e2QGhVuCFa2Yz4SAAAA0GAISQ4prUlPUiGV7QAAAICGRkhqQKFlKspqUrjBXiOJniQAAACgoRCSHOKr0XC7YE8SIQkAAABoKIQkh5SpFiGJOUkAAABAgyEkOcQuAX64xWTt4XbMSQIAAAAaCiHJIb6a9CRRuAEAAABocIQkh5QZCjcAAAAAjREhySGltSrcQE8SAAAA0FAISQ4ppXADAAAA0CgRkhwSDEnVDrcr80nFeYHn9CQBAAAADYaQ5JAjDrcr3Ff+xJLiUxukTQAAAAAISY45YnU7e6hdquSKaZhGAQAAACAkNShz6GmpKZV0uJBUXtmO+UgAAABAgyIkOcLId8ThdlS2AwAAAJxASHKIXd3OOkJPEmskAQAAAA2KkOSQUv+RhtvRkwQAAAA4gZDkEN+RSoDbc5KaN1CLAAAAAEiEJMeU+o8UkuhJAgAAAJxASHJI6ZFKgFO4AQAAAHAEIckhR14nicINAAAAgBMISQ458jpJ9CQBAAAATiAkOaSExWQBAACARomQ1KCM/eywPUllpVJRXuA5PUkAAABAgyIkOeSwPUlFubIDFSXAAQAAgAZFSHKCkXzBkGRVEZKC85HiUqSYaobjAQAAAIgKQpJDSk35OkkxVayTxHwkAAAAwDGEJIcEe5I8VhUhiTWSAAAAAMcQkhrSoboNh4bbVTUniTWSAAAAAMcQkhxSs5BETxIAAADQ0AhJDimTX1J1IYnhdgAAAIBTCEkOMVbg8bAhifLfAAAAQIMjJDWoQ5OSDhuSKNwAAAAAOIaQ5JDD9yRRuAEAAABwCiGpAVkhz4N9SoddTJaeJAAAAKDBEZKcYllyu9yyLKvyPhaTBQAAABxDSGpAJth95AoEI4+rioVk/WVSUW7gOT1JAAAAQIMjJDkg2HdU5VC7ojzJBMqDU90OAAAAaHiEpAZkD6wrH2J32PLfscmS29sg7QIAAABwCCHJCTWpbEcvEgAAAOAIQpIDzOF6klgjCQAAAHAUIckJVuBrZ40kAAAAoPEhJDUku7xdwOFDEj1JAAAAgBMISU4o/9arLAHOQrIAAACAowhJDgj2Jx2+cAPD7QAAAAAnEJKc4Dpc4YZ9gUfmJAEAAACOICQ5wJTXAK9yMVkKNwAAAACOIiQ5oXydJOYkAQAAAI0PIckJNVpMlp4kAAAAwAmEpIZkVwCvZk6S3x8yJ4meJAAAAMAJhCQHmOp6korzJFMWeM6cJAAAAMARhCQHGCuQkirNSQrOR/ImSu7YBm4VAAAAAImQ5KhKPUnBkMR8JAAAAMAxhKQGFZiUVO1wu8JgZTtCEgAAAOAUQpIDqg1JrJEEAAAAOI6Q5KBKi8naIYnKdgAAAIBTCEkOqL4niYVkAQAAAKcRkhwQXC6pcnU7FpIFAAAAnEZIakjl6YjCDQAAAEDjRUhywJGH2xGSAAAAAKcQkhxgyruUql1MljlJAAAAgGMISQ44Yglw5iQBAAAAjiEkOSgsJBkTMieJniQAAADAKYSkBhUYZuevqiepeL/kLw08Z04SAAAA4BhCkgOMFQhLYSEpOB/JkyB54h1oFQAAAACJkOSI4DpJbquKkMR8JAAAAMBRhCQH2CEprCepvGgDQ+0AAAAARxGSGlJ5OgrOSQorAU7RBgAAAKBRICQ5oMp1kuhJAgAAABoFQpIDqh5uR08SAAAA0BgQkhxg5JdUzZwkCjcAAAAAjiIkOaDKdZKYkwQAAAA0CoQkB1QZkuzhdvQkAQAAAE4iJDkgWLihypAU39yBFgEAAAAIIiQ5oOqQFKxux3A7AAAAwEmEpAYVCEdlVnlIsspDkjHMSQIAAAAaCUJSQzLhTzwx5esklRyQykoCz5mTBAAAADiKkOSAsvJHj1UekoLzkdxxkifBkTYBAAAACCAkOaDSnKTQNZIsy6FWAQAAAJAcDkmffPKJLr74YmVmZsqyLL3xxhth+40xGj9+vNq0aaP4+HgNGjRI69atc6axEeSvFJKYjwQAAAA0Fo6GpIMHD+qkk07S9OnTq9z/yCOP6IknntCf//xnff7552rWrJmGDBmioqKiBm5pZPnLH+2QVMgaSQAAAEBj4T7yIdEzdOhQDR06tMp9xhg99thjuvfeezV8+HBJ0t///nelp6frjTfe0MiRIxuyqZFlVTPcjpAEAAAAOM7RkHQ4GzZs0I4dOzRo0CB7W0pKivr3769FixZVG5KKi4tVXFxsv96/f78kyefzyefzRbfRhxF27fJpR6bMyOfzyXVgt2IklcU1l9/BNqJxCd4zTt63OPpw36C2uGdQW9wzTZsxRqV+o9Iyo1K/X76y4Gu/fMHtZX6V+o185Y+lZUY+v19lwech20v9RsU+n7bvs3R+I7hnanrfNtqQtGPHDklSenp62Pb09HR7X1UeeughTZgwodL2Dz74QAkJTleOC1SzC1YC//D9DxVjxajXluXqJOn7rXv07TvvONY6NE5z5851ugk4CnHfoLa4Z1Bb3DOV+Y1UFvzxhzyvdptV9XGHO95Ifr9UWr7tiNc01qFjKuz3V3FNv4lOEbETUi2d2AjumYKCghod12hDUl2NGzdOY8eOtV/v379fWVlZGjx4sJKTkx1rl8/n0/Pvz5ckBe+9iy68SJZlKea1V6UfpS69+qvzqRc61kY0Lj6fT3PnztX5558vj8fjdHNwlOC+QW1xz6C2GuKe8fuNfOU9Fb4yv9074SszKqlim6+8x8NXeqiHw1cW8n5/YJ8vZF9p6DH+iu8NnL8ktMekzNjHh23zHzqf3xz5sx2NLEtyuyx5Ylxyuyy5Yyx5XC65Yyy5yx89LkvuGJdiXJY8MVb5cYHjYywptmBno/jfmeAosyNptCEpIyNDkrRz5061adPG3r5z506dfPLJ1b4vNjZWsbGxlbZ7PB7HfynBLiS/FZiP5PV6AxuK9kmSYhJbKcbpNqLRaRT3Lo463DeoLe6Zps8YExYcSsoOBYuw12V+lZSWvy6tvK2oxKevtlna9NkWlRnLPp8dYEr9lUJKaLjxlfnlKzUh1zwUSILHljWhtOGNKQ8RMa7y8OCSxx0eMjxuV3nICB7nOhRKKrw3+Dq43xNzKIzYxwfPHeOyw0vodrsdR3x/4LgYV/16l3w+n955551G8b8zNb1+ow1JnTp1UkZGhubNm2eHov379+vzzz/XzTff7GzjIsDjCvkFFQRCEoUbAAA4uvn9gT/2i0sDoSI0XIQ++kIei8uDSFXHhx4X2BYeREoq7A+Gj+LSQ4GkpPRQSImcGGnT9xE83+FZViBshAeOwB/4VT0PDRaeKt7ndlmBYFIeIjzuwDav21UeHsLPFXy/2+WS1x0MKYHn4SHn0HvdLksxLksWa2AelRwNSQcOHND33x/6L9iGDRu0YsUKtWjRQu3bt9eYMWP04IMP6rjjjlOnTp103333KTMzUyNGjHCu0RFgLMlthXz1oYvJAgCAGjHGHAof5cGi2HcoOBSHbS+rdGzFY+x9FfeX+VVSWnYobFQReoLPj7YeEK87ECA8MYGAEAwG3phAb4c3+NodEi5clnbt2KaOHbIU64k5tD/YMxHyvrCg4q4+2ISev6rj6tuTAdSWoyHpyy+/1E9+8hP7dXAu0ahRozR79mzdfffdOnjwoG688Ubl5ubqzDPP1Hvvvae4uDinmlxPgf/hNFZI+W9jQtZJYjFZAEDjFwwnxaWBUFJcHiCKQ0JHcWlZ+T6/SspCnpeGHB8Sag49llURdsrsIGKfo3xfY+e1A0Dgj/9DocSlWPehAOINfV4htAS3BYJL6GPIMSH7QkNGrDs0rBwKP8FAUpdejsDQqf/pwgtPdHzoFBAtjoakgQMHypjq/8XFsixNnDhREydObMBWRZ9RSEjyFUil5YvjMtwOAFBDpWV+FZUGQkVxqV9F5Y/F5dtC9xWHhJaikPBSXFqmwpJS/bDRpQ9eWqUSv7HfX/F99vPSxhtOPOXDomI9MXZY8IYEh1h3+KO3ioASW+l9MWGv7feGhJ3gOT0xFfcx1Ao4WjXaOUlNWVhPUkF5L1KMV/ImOtcoAECdBHtVinzl4SQkiBSVlqkouM1X/rxCsAnuLy4NfywKOaakNPx1UWmkh3W5pN3VL69xJKHhI9Ydo1iPyw4rsfb2wL6KISVwbOh7XGFBJ9YdHkxiK4YWz6FeFhdDsgBECCHJIYdCUsh8JP61CQAiwhhjDwUr9JWpsDyMFPrKVFQSfO23txeF7C8sCQ03hwJL8D3FIWEneIzT01CCYSHWHQglcZ5AD0ic51A4iQvZHwwmcR6X3C5p4/ffqVeP7kqI9dqBJC404IQ8D90XDCr0lgBoaghJDgjvSSoPScxHAnCMMMaoyOdXQUlpeSgJBJCCkkMhJvg8uC/4vMgXvj00vITt95XpMKO5o8aypLjyQBLnibHDROijvS/kuGAQqer40PeFhp3Q0FOfHhSfz6d3CtfqwgEdmF8CAOUISQ4wCikBXkj5bwCNT2mZXwXlYeRgcakKyoNLQUmpCoPPfYH5LAUlZYe2lZSp0HfomGCgKSgPMMFtDSnGZSnBE6NYT4zivS7Fl4eROE9M+fPwbXEVtsV7AkPB7H1ul+K9MWFBJ7b8PfSqAEDTQEhqSOX/qll1TxIhCUDt+f1Ghb4yHSwpVUFxmfIKirR+v/TJuh9VVCoVlIeY4P7gY4GvTAXFpTpYHnoOlgedg+XHN9TE/Fi3SwnlgSPeG6MEbyCUxHvdii8PKvHeGMV73GEBJ94bE/Y8zn1oW7wnRnFelx1wPDGuBvksAICmg5DkgCoLNzDcDjgmlPmNDpaU6mBx4OdAcVn5Y/i2gpLQbYfCzYHiUhWUlOpgSA9PZW7p62URaW+My1JCeXhJ8LoV7ykPMqHbvDFKsLe7w/bH2+HHHfY6GGaYaA8AaIwISQ4IW0yWhWSBRs+YQG/NgaJS5ReX6kBRIMDklz8eKPIFHovLdKDYV74/8PxgebA5UP6+aA01syypmdetZt4YGV+RWrVIVjOvR81iY5QQG9geDCrNYgNhJzE2EHCaxQZ6aprFHgo+waDD8DEAwLGIkNSAQv/MODQniZ4kIJrK/EYHiku1v9Cn/KJS5ReVPxYHX5dqf1Eg2ITuDwtBxaURLrcsuV2WmsW6lRgbCCf2c69bzSpsCwab0OeB4wKBJjHWrThPIMwEFnl8RxdeOIBJ+AAA1BEhyQF+5iQBNVbmN8ov8imv0Kf9hYFAs7/QV/4Y+rrU3p5vPw8EnEhxWVJieVhJivMoMc5tv06MdSsxLhBwkmIDj4H9MUqMDfToJNqhyK1YNz00AAA0VoQkhzAnCceSYNDJLQiEnbxCn3ILg8HHp9yCEnt7MAwF9+VHKOR43S4lxwXCTfAxKe5Q4EmKc4f8eMq3hx+X4I0h2AAAcAwgJDnArypCEnOScBQwxmh/UalyC0qUW+DTvgqPuQUlyi0MhKHcQp/yCkq0ryDQu1PfNWsSvDFKifcoOc6j5Hh3+WMgwKSUP4ZuSy4PN8HXse6YyHwJAACgySMkOcGqak4SIQkNyxijgpIy7T1YEvazr6BEew6WKLeg/PXBQAgKBqHSeszNSfDGKDU+EGRSEzxKia/wk+BVcnnoCf1JjvdQxhkAADQYQlIDCv5paZcA9xVKvoLARkISIqCwpEw/HijWjweKtedAifYcLNaPBw4FoD0HS7TnQLH9vK5r4cR7YtQ8waPUBK9SEzxqXv6YmuBRanzwubf8GI9S4r1KiffI6yboAACAxo+Q5ABjmUBICg61c7ml2GRnG4VG60BxqXLzSvTjgWLtzg8EoB/zi7X7QIn9es/BQCiqes2cw4t1u9SymVfNm3nVovyneULgp0Uzj5qHvQ4EoDgPQ9cAAEDTRUhygFF5T1LoGklMBj+mGGO0r8CnXflF2rm/WDv3F2l3fiAE7coPPN+5v0g7cmNUsuijWp071u1SWmKs0hIDoaZlYqxaJnrVsplXLZrFlj8GftISYxXvJfAAAACEIiQ1oGAMsheTtct/U9muKSnylQUCTl6RdlR43Lk/EIp25xerpKwmQ90Cd02CN0atkmKVlhirVomxSksKBJzgtmAoapkYq2ZUYAMAAKgXQlJDMsZOSm6Xm4Vkj0K+Mr925BVpa26htucVantekbbnFml7XqG25QbC0N6DJTU+X4tmXrVOilXr5LjAY1Ig+LROilPz+BitWbpIl180WKmJ8VH8VAAAAAhFSHKACVa3s9dIau5sg2Ar8pXpf/sK9b99BfrfvkJtzS3U1pDHnflFNSplHedxKSM5TunJcWqTEqf0lDhlJAd+WifHKT05EIYOV5ba5/Np9xqpWSz/NQUAAGhI/PXlALu63QF6khqa32+0M79Im/YUaPOeAm3eW6At5YFoy94C7covPuI5vG6XMlPi1CYlXm1S45SZEq+MlDhlppZvS4lTSryHIW8AAABHKUKSA/x2T9L/AhtYSDai/H6jbXmF2vDjQW348aA2/ligzXsPauOeAm3ZW6DiI5S9Tox1q13zeLVrHq+2qfFq2zxebVMT1LZ5vDJT45TWLFYuFwEIAACgqSIkOYQ5SfW3v8in73cd0PpdB/TDjwe1YXd5KNpz8LBByO2y1K55vNq3bKb2LeKV1TxB7ZonKKv8eWoCvUAAAADHMkKSA+zhdnZ1O3qSDmfvwRJ9tzNf68oD0bpd+fp+1wHt3F/90DhPjKUOLZupY8tm6pSWoA4tm6lDywR1aNFMmalxcsewqCkAAACqRkhySNhisvQkSQoUTfh+1wGt3ZGvb3fs17c78rV2R/5h5wmlJ8eqS+tEdU5LVOdWzdQprZk6pyUShAAAAFBnhCQH+FUhJB2Dc5Lyi3xas22/Vm/br6+35enrrfv1/e4DKvNXXTqufYsEHdc6UV1aJyq7daKOK39MjvM0cMsBAADQ1BGSHGAsq8KcpKYdkop8ZVq9NU/LN+dq5f9y9fW2/drw48Eqj01N8KhbRpK6ZSSra0aSumUk6fj0JMpgAwAAoMHwl6cDjCW5jaSSA4ENTSgkGWO0aU+Blm/Zp+Wbc7V8c66+2b5fpVX0EGWmxOnEtinqkZmiHm2TdWJmitKTYymaAAAAAEcRkhqSkWQFfty+osA2K0aKTXGyVfXi9xt9tytfn/+wV59v2KMvNuzVjwdKKh2XlhirU9qn6qSsVPVsm6ITM5PVMjHWgRYDAAAAh0dIcoCR5AmGpPjmkuvoKTBgjNHanfn67Ps9dijaV+ALO8Yb41KPtsk6Oau5erdPVe/2qWqbGk8PEQAAAI4KhCQHGEvy+AoDL46Cynb7i3z6dN2PWrB2txZ8t1s79heF7Y/3xKhPh+bq36mFTstuqV7tUhTrjnGotQAAAED9EJIcYCzJ7SsIvGiE85GMMfp2R74++naXFqzdraWb94VVnYvzuNS/U0v179xC/TsFQpGHctsAAABoIghJDcrY/+kuKa/u1kh6koLB6D+rtus/X22vVH2uc6tmGnh8aw3s2kr9OrVQnIeeIgAAADRNhCQHGEtyFwdDknM9ScH5Re+s2q63v9quH3YfCkaxbpfO7JKmgd1aa+DxrZTVIsGxdgIAAAANiZDkgEBIKi//7cBCsrkFJfrX0v/ppSVbtG7XAXu71+3SwONbaVivNjrvhHQlsjYRAAAAjkH8FewQd0l+4EkDDbczxmjFllzNWbxZb6/apuJSv6RAJbpzurbSRb3a6NxurZUU52mQ9gAAAACNFSGpQQVKYPstyV20P7ApysPtDhaX6s0V2/SPzzfp62377e0ntEnWL09rr4tPylQywQgAAACwEZIalLEfD4Wk6PQk7S/y6bmFGzTr0w3KLy6VFBhOd1GvNvrlaR3UOyuVdYsAAACAKhCSHOC3JE9hbuBFhOckFfnK9LfPNurpBeuVW77Ia6e0Zrqyf3tddko7NW/mjej1AAAAgKaGkOQQT4R7kkpK/Xr5yy168qN12rm/WJKU3aqZ7hrcVUNOzJDLRa8RAAAAUBOEJAcEqtsFCzfUryfJ7zd6c+VWTZu7Tpv3BhaobZsarzvOP14jTs6Um0VeAQAAgFohJDWk8ilJxpLcMpLlkuJS6ny6nfuLNObFFVr0wx5JUlpirG47r4t+fmqWYt0s9goAAADUBSHJAUaS20iKS5VcdQsz877ZqbteWal9BT4leGN067lddM3pHZXg5VcKAAAA1Ad/UTvAWJLbmDrNRyouLdPkd7/VrP9ulCSdmJmsJ6/orc6tEiPcSgAAAODYREhyglX+xddyPtIPuw/o1/9cbq93dO0ZHfW7od0YWgcAAABEECGpAdmrJNWyJ8kYo1eXbdX4N1eroKRMLZp59afLe+m8E9Kj11gAAADgGEVIalDG/s/a9CRNfvdbPfPJD5KkAZ1b6rGRJys9OS46TQQAAACOcYQkB1iyZEk1Wkj2pSWb7YB05/nH65afdFEMax4BAAAAUUNIalCBcGNnnCMMt1uyca/ufWO1JOmOQcfr1+cdF83GAQAAAJDESqMNKjDczrLKZycdZrjdlr0Fuun5pfKVGQ3r2Ua3ndelIRoIAAAAHPMISQ6wB8tV05N0sLhUN/z9S+05WKITM5M15WcnybIYYgcAAAA0BEKSA6xgnbsq5iT5/UZ3vLRC3+7IV1pirP5ydV/FeynxDQAAADQUQpID7C+9ip6kaR9+pw/W7JQ3xqVnruqjzNT4Bm0bAAAAcKwjJDnAZfyBJxXmJL21cpue/Oh7SdIfL+2pPh2aN3TTAAAAgGMeIakhlY+yC0wvsqS4VHvXqv/l6q5XVkqSbjy7sy7v067BmwcAAACAkOQIlzFSXIoUc6gC+8S31qi41K+fdG2l317QzcHWAQAAAMc2QpIDXJYJm49U5CvTii25kqSJw3uwWCwAAADgIEJSgypfJ0kKm4/01dY8lfqNWiXFql1zCjUAAAAATiIkOcBlKawnadmmfZKk3lmprIcEAAAAOIyQ1KACAcglhYekzYGQdArV7AAAAADHEZIc4JKR4gOByBijZZtzJUmntCckAQAAAE4jJDkgdLjd1txC7c4vlttlqVe7FGcbBgAAAICQ5ARLxi7cEOxF6p6ZrDhPjIOtAgAAACARkhpYoLqd2xwqAR5atAEAAACA8whJDrAsSfGBnqTlFG0AAAAAGhVCkgOC1e2KfGX6ett+SRRtAAAAABoLQpIDXOVzklaXLyKblsgisgAAAEBjQUhqSIEpSYHqdvHND62P1J5FZAEAAIDGgpDkAJfllmI8WrYpV5LUm6F2AAAAQKNBSHJAjNtTvojsoZ4kAAAAAI2D2+kGHEs6bfq7Egqk7y84qK25hdplLyKb6nTTAAAAAJQjJDWglPzvlJxXqo3eFlpevojsCW2SFe9lEVkAAACgsWC4XUMygcoNMZ44htoBAAAAjRQhqQFZdkhK0LLyniSKNgAAAACNCyGpAQVDktzxWrMtTxKLyAIAAACNDSHJAYV+r3xlRmmJXmW1YBFZAAAAoDEhJDWgYE9Srs8jKTDUjkVkAQAAgMaFkNSQykfb7S4KFBVkqB0AAADQ+BCSGlCwJ+l/BwMlv3tT2Q4AAABodFgnqQEtOjVe+33FWq8Uxbgs9WqX4nSTAAAAAFRASGpA75zdRlvKtqjwfy10QnKSErx8/QAAAEBjw3C7BuSXX5JkTAzzkQAAAIBGipDUgMpMWeAJIQkAAABotAhJDaisvCdJxkXRBgAAAKCROipC0vTp09WxY0fFxcWpf//++uKLL5xuUp0U+wM9SclxcWrfIsHh1gAAAACoSqMPSS+99JLGjh2r+++/X8uWLdNJJ52kIUOGaNeuXU43rdZK/IGepOPTU1lEFgAAAGikGn1Imjp1qm644QZde+216t69u/785z8rISFBf/3rX51uWq35yuckdc9IdbYhAAAAAKrVqGtQl5SUaOnSpRo3bpy9zeVyadCgQVq0aFGV7ykuLlZxcbH9Oi8vT5K0d+9e+Xy+6Db4MHw+n0oKSiR3mbISYrRnzx7H2oKjg8/nU0FBgfbs2SOPx+N0c3CU4L5BbXHPoLa4Z1Bbjemeyc/PlyQZYw57XKMOST/++KPKysqUnp4etj09PV3ffvttle956KGHNGHChErbO3XqFJU21sX1Ol/XO90IAAAA4BiVn5+vlJSUavc36pBUF+PGjdPYsWPt136/X3v37lXLli0dnQe0f/9+ZWVlacuWLUpOTnasHTh6cM+gLrhvUFvcM6gt7hnUVmO6Z4wxys/PV2Zm5mGPa9QhKS0tTTExMdq5c2fY9p07dyojI6PK98TGxio2NjZsW2pqarSaWGvJycmO3xw4unDPoC64b1Bb3DOoLe4Z1FZjuWcO14MU1KgLN3i9XvXp00fz5s2zt/n9fs2bN08DBgxwsGUAAAAAmqpG3ZMkSWPHjtWoUaPUt29f9evXT4899pgOHjyoa6+91ummAQAAAGiCGn1I+vnPf67du3dr/Pjx2rFjh04++WS99957lYo5NHaxsbG6//77Kw0FBKrDPYO64L5BbXHPoLa4Z1BbR+M9Y5kj1b8DAAAAgGNIo56TBAAAAAANjZAEAAAAACEISQAAAAAQgpAEAAAAACEISQ1k+vTp6tixo+Li4tS/f3998cUXTjcJDnjooYd06qmnKikpSa1bt9aIESO0du3asGOKioqUk5Ojli1bKjExUZdddlmlBZU3b96sYcOGKSEhQa1bt9ZvfvMblZaWNuRHgUMmT54sy7I0ZswYexv3DCraunWrfvnLX6ply5aKj49Xz5499eWXX9r7jTEaP3682rRpo/j4eA0aNEjr1q0LO8fevXt15ZVXKjk5Wampqbr++ut14MCBhv4oaABlZWW677771KlTJ8XHxys7O1t/+MMfFFrbi3sGn3zyiS6++GJlZmbKsiy98cYbYfsjdY+sWrVKZ511luLi4pSVlaVHHnkk2h+tagZR9+KLLxqv12v++te/mq+//trccMMNJjU11ezcudPppqGBDRkyxMyaNcusXr3arFixwlx44YWmffv25sCBA/YxN910k8nKyjLz5s0zX375pTnttNPM6aefbu8vLS01PXr0MIMGDTLLly8377zzjklLSzPjxo1z4iOhAX3xxRemY8eOplevXub222+3t3PPINTevXtNhw4dzDXXXGM+//xz88MPP5j333/ffP/99/YxkydPNikpKeaNN94wK1euNJdcconp1KmTKSwstI+54IILzEknnWQWL15sFi5caLp06WKuuOIKJz4SomzSpEmmZcuW5u233zYbNmwwr7zyiklMTDSPP/64fQz3DN555x1zzz33mNdee81IMq+//nrY/kjcI3l5eSY9Pd1ceeWVZvXq1eaf//yniY+PN88880xDfUwbIakB9OvXz+Tk5Nivy8rKTGZmpnnooYccbBUag127dhlJZsGCBcYYY3Jzc43H4zGvvPKKfcw333xjJJlFixYZYwL/I+VyucyOHTvsY55++mmTnJxsiouLG/YDoMHk5+eb4447zsydO9ecc845dkjinkFFv/3tb82ZZ55Z7X6/328yMjLMn/70J3tbbm6uiY2NNf/85z+NMcasWbPGSDJLliyxj3n33XeNZVlm69at0Ws8HDFs2DBz3XXXhW279NJLzZVXXmmM4Z5BZRVDUqTukRkzZpjmzZuH/X/Tb3/7W9O1a9cof6LKGG4XZSUlJVq6dKkGDRpkb3O5XBo0aJAWLVrkYMvQGOTl5UmSWrRoIUlaunSpfD5f2P3SrVs3tW/f3r5fFi1apJ49e4YtqDxkyBDt379fX3/9dQO2Hg0pJydHw4YNC7s3JO4ZVPbvf/9bffv21c9+9jO1bt1avXv31l/+8hd7/4YNG7Rjx46weyYlJUX9+/cPu2dSU1PVt29f+5hBgwbJ5XLp888/b7gPgwZx+umna968efruu+8kSStXrtSnn36qoUOHSuKewZFF6h5ZtGiRzj77bHm9XvuYIUOGaO3atdq3b18DfZoAd4Ne7Rj0448/qqysLOyPE0lKT0/Xt99+61Cr0Bj4/X6NGTNGZ5xxhnr06CFJ2rFjh7xer1JTU8OOTU9P144dO+xjqrqfgvvQ9Lz44otatmyZlixZUmkf9wwq+uGHH/T0009r7Nix+v3vf68lS5botttuk9fr1ahRo+zfeVX3ROg907p167D9brdbLVq04J5pgn73u99p//796tatm2JiYlRWVqZJkybpyiuvlCTuGRxRpO6RHTt2qFOnTpXOEdzXvHnzqLS/KoQkwCE5OTlavXq1Pv30U6ebgkZsy5Ytuv322zV37lzFxcU53RwcBfx+v/r27as//vGPkqTevXtr9erV+vOf/6xRo0Y53Do0Ri+//LL+8Y9/6IUXXtCJJ56oFStWaMyYMcrMzOSewTGL4XZRlpaWppiYmEqVpnbu3KmMjAyHWgWn3XrrrXr77bf18ccfq127dvb2jIwMlZSUKDc3N+z40PslIyOjyvspuA9Ny9KlS7Vr1y6dcsopcrvdcrvdWrBggZ544gm53W6lp6dzzyBMmzZt1L1797BtJ5xwgjZv3izp0O/8cP+/lJGRoV27doXtLy0t1d69e7lnmqDf/OY3+t3vfqeRI0eqZ8+euuqqq3THHXfooYceksQ9gyOL1D3SmP7/ipAUZV6vV3369NG8efPsbX6/X/PmzdOAAQMcbBmcYIzRrbfeqtdff10fffRRpS7lPn36yOPxhN0va9eu1ebNm+37ZcCAAfrqq6/C/odm7ty5Sk5OrvSHEY5+5513nr766iutWLHC/unbt6+uvPJK+zn3DEKdccYZlZYW+O6779ShQwdJUqdOnZSRkRF2z+zfv1+ff/552D2Tm5urpUuX2sd89NFH8vv96t+/fwN8CjSkgoICuVzhfxLGxMTI7/dL4p7BkUXqHhkwYIA++eQT+Xw++5i5c+eqa9euDTrUThIlwBvCiy++aGJjY83s2bPNmjVrzI033mhSU1PDKk3h2HDzzTeblJQUM3/+fLN9+3b7p6CgwD7mpptuMu3btzcfffSR+fLLL82AAQPMgAED7P3Bcs6DBw82K1asMO+9955p1aoV5ZyPIaHV7YzhnkG4L774wrjdbjNp0iSzbt06849//MMkJCSYOXPm2MdMnjzZpKammjfffNOsWrXKDB8+vMpSvb179zaff/65+fTTT81xxx1HOecmatSoUaZt27Z2CfDXXnvNpKWlmbvvvts+hnsG+fn5Zvny5Wb58uVGkpk6dapZvny52bRpkzEmMvdIbm6uSU9PN1dddZVZvXq1efHFF01CQgIlwJuyJ5980rRv3954vV7Tr18/s3jxYqebBAdIqvJn1qxZ9jGFhYXmlltuMc2bNzcJCQnmpz/9qdm+fXvYeTZu3GiGDh1q4uPjTVpamrnzzjuNz+dr4E8Dp1QMSdwzqOitt94yPXr0MLGxsaZbt27m2WefDdvv9/vNfffdZ9LT001sbKw577zzzNq1a8OO2bNnj7niiitMYmKiSU5ONtdee63Jz89vyI+BBrJ//35z++23m/bt25u4uDjTuXNnc88994SVYeaewccff1zl3zCjRo0yxkTuHlm5cqU588wzTWxsrGnbtq2ZPHlyQ33EMJYxIcspAwAAAMAxjjlJAAAAABCCkAQAAAAAIQhJAAAAABCCkAQAAAAAIQhJAAAAABCCkAQAAAAAIQhJAAAAABCCkAQAAAAAIQhJAIBj0sCBAzVmzJioXqOkpERdunTRZ599VuP3vPfeezr55JPl9/uj2DIAwOEQkgAAtXbNNddoxIgRDX7d2bNnKzU19YjHlZWVafLkyerWrZvi4+PVokUL9e/fX88995x9zGuvvaY//OEPUWyt9Oc//1mdOnXS6aefXuP3XHDBBfJ4PPrHP/4RxZYBAA7H7XQDAACItAkTJuiZZ57RU089pb59+2r//v368ssvtW/fPvuYFi1aRLUNxhg99dRTmjhxYq3fe8011+iJJ57QVVddFYWWAQCOhJ4kAEC9DRw4ULfddpvuvvtutWjRQhkZGXrggQfCjrEsS08//bSGDh2q+Ph4de7cWf/617/s/fPnz5dlWcrNzbW3rVixQpZlaePGjZo/f76uvfZa5eXlybIsWZZV6RpB//73v3XLLbfoZz/7mTp16qSTTjpJ119/ve66666wNgeH2wWvXfHnmmuusY9/8803dcoppyguLk6dO3fWhAkTVFpaWu13snTpUq1fv17Dhg2zt23cuFGWZem1117TT37yEyUkJOikk07SokWLwt578cUX68svv9T69eurPT8AIHoISQCAiPjb3/6mZs2a6fPPP9cjjzyiiRMnau7cuWHH3Hfffbrsssu0cuVKXXnllRo5cqS++eabGp3/9NNP12OPPabk5GRt375d27dvDws9oTIyMvTRRx9p9+7dNT538Jzbt2/XRx99pLi4OJ199tmSpIULF+rqq6/W7bffrjVr1uiZZ57R7NmzNWnSpGrPuXDhQh1//PFKSkqqtO+ee+7RXXfdpRUrVuj444/XFVdcERa42rdvr/T0dC1cuLBG7QcARBYhCQAQEb169dL999+v4447TldffbX69u2refPmhR3zs5/9TKNHj9bxxx+vP/zhD+rbt6+efPLJGp3f6/UqJSVFlmUpIyNDGRkZSkxMrPLYqVOnavfu3crIyFCvXr1000036d133z3suYPn9Hg8Gj16tK677jpdd911kgLD9373u99p1KhR6ty5s84//3z94Q9/0DPPPFPtOTdt2qTMzMwq9911110aNmyYjj/+eE2YMEGbNm3S999/H3ZMZmamNm3adKSvBQAQBYQkAEBE9OrVK+x1mzZttGvXrrBtAwYMqPS6pj1JtdG9e3etXr1aixcv1nXXXaddu3bp4osv1ujRow/7Pp/Pp8suu0wdOnTQ448/bm9fuXKlJk6cqMTERPvnhhtu0Pbt21VQUFDluQoLCxUXF1flvtDvqk2bNpJU6buKj4+v9twAgOiicAMAICI8Hk/Ya8uyalXG2uUK/LudMcbe5vP56twel8ulU089VaeeeqrGjBmjOXPm6KqrrtI999yjTp06Vfmem2++WVu2bNEXX3wht/vQ/0UeOHBAEyZM0KWXXlrpPdUFobS0NH311VdV7gv9rizLkqRK39XevXvVqlWrw39IAEBU0JMEAGgwixcvrvT6hBNOkCQ7EGzfvt3ev2LFirDjvV6vysrK6nTt7t27S5IOHjxY5f6pU6fq5Zdf1ptvvqmWLVuG7TvllFO0du1adenSpdJPMNxV1Lt3b3377bdhoa+mioqKtH79evXu3bvW7wUA1B89SQCABvPKK6+ob9++OvPMM/WPf/xDX3zxhWbOnClJ6tKli7KysvTAAw9o0qRJ+u677/Too4+Gvb9jx446cOCA5s2bp5NOOkkJCQlKSEiodJ3LL79cZ5xxhk4//XRlZGRow4YNGjdunI4//nh169at0vEffvih7r77bk2fPl1paWnasWOHpMCQt5SUFI0fP14XXXSR2rdvr8svv1wul0srV67U6tWr9eCDD1b5WX/yk5/owIED+vrrr9WjR49afU+LFy9WbGxspeGJAICGQU8SAKDBTJgwQS+++KJ69eqlv//97/rnP/9p9/B4PB7985//1LfffqtevXrp4YcfrhRATj/9dN100036+c9/rlatWumRRx6p8jpDhgzRW2+9pYsvvljHH3+8Ro0apW7duumDDz4IG0YX9Omnn6qsrEw33XST2rRpY//cfvvt9vnefvttffDBBzr11FN12mmnadq0aerQoUO1n7Vly5b66U9/WqdFYf/5z3/qyiuvrDIAAgCizzJ1GQcAAEAtWZal119/XSNGjHC6KQ1m1apVOv/887V+/fpqK/FV9OOPP6pr16768ssvq507BQCILnqSAACIkmCP2IYNG2r8no0bN2rGjBkEJABwED1JAIAGcSz2JAEAjk4UbgAANAj+TQ4AcLRguB0AAAAAhCAkAQAAAEAIQhIAAAAAhCAkAQAAAEAIQhIAAAAAhCAkAQAAAEAIQhIAAAAAhCAkAQAAAECI/wflU+hOpqQJgQAAAABJRU5ErkJggg==\n" | |
| }, | |
| "metadata": {} | |
| } | |
| ], | |
| "source": [ | |
| "import matplotlib.pyplot as plt\n", | |
| "import numpy as np\n", | |
| "\n", | |
| "# Create a range of n values.\n", | |
| "n = np.linspace(1, 1e3, 100)\n", | |
| "\n", | |
| "# Calculate the time complexity values\n", | |
| "y_log = np.log2(n) # O(log n)\n", | |
| "y_n = n # O(n)\n", | |
| "y_nlog = n * np.log2(n) # O(n log n)\n", | |
| "y_sq = n**2 # O(n^2)\n", | |
| "y_exp = 2**n # O(2^n)\n", | |
| "\n", | |
| "# Setup the plot\n", | |
| "plt.figure(figsize=(10, 6))\n", | |
| "\n", | |
| "# Plot each function\n", | |
| "plt.plot(n, y_log, label=r'$O(\\log n)$')\n", | |
| "plt.plot(n, y_n, label=r'$O(n)$')\n", | |
| "plt.plot(n, y_nlog, label=r'$O(n \\log n)$')\n", | |
| "plt.plot(n, y_sq, label=r'$O(n^2)$')\n", | |
| "plt.plot(n, y_exp, label=r'$O(2^n)$')\n", | |
| "\n", | |
| "# Limit the y-axis because O(n^2) and O(2^n) grow very quickly\n", | |
| "plt.ylim(0, 50)\n", | |
| "\n", | |
| "# Add labels, title, and grid\n", | |
| "plt.xlabel('Input Size (n)')\n", | |
| "plt.ylabel('Operations')\n", | |
| "plt.title('Comparison of Time Complexities')\n", | |
| "plt.legend()\n", | |
| "plt.grid(True)\n", | |
| "\n", | |
| "# Show the plot\n", | |
| "plt.show()" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "source": [], | |
| "metadata": { | |
| "id": "ndxp2jMvcmVL" | |
| }, | |
| "execution_count": null, | |
| "outputs": [] | |
| } | |
| ] | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment