From 59c9f38882a37fcc4fc16c624daf42585821aeaa Mon Sep 17 00:00:00 2001 From: epignatelli Date: Sat, 22 Jun 2024 00:11:58 +0100 Subject: [PATCH 1/2] docs(benchmarks): add benchmarks to docs --- docs/benchmarks/envs.ipynb | 219 +++++++++++++++++++++++++++++++ docs/benchmarks/timesteps.ipynb | 225 ++++++++++++++++++++++++++++++++ mkdocs.yml | 13 +- 3 files changed, 453 insertions(+), 4 deletions(-) create mode 100644 docs/benchmarks/envs.ipynb create mode 100644 docs/benchmarks/timesteps.ipynb diff --git a/docs/benchmarks/envs.ipynb b/docs/benchmarks/envs.ipynb new file mode 100644 index 0000000..b583fee --- /dev/null +++ b/docs/benchmarks/envs.ipynb @@ -0,0 +1,219 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Scaling with the number of environments" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this notebook, we will look at the difference in **throughput** between MiniGrid and NAVIX environments." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's start with MiniGrid." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "os.environ['PYGAME_HIDE_SUPPORT_PROMPT'] = \"hide\"\n", + "# See https://stackoverflow.com/questions/51464455/how-to-disable-welcome-message-when-importing-pygame" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import time\n", + "import timeit\n", + "import gymnasium as gym\n", + "import matplotlib.pyplot as plt\n", + "from minigrid.wrappers import ImgObsWrapper\n", + "\n", + "def benchmark_minigrid(num_envs):\n", + " env = gym.make_vec(\n", + " \"MiniGrid-Empty-8x8-v0\",\n", + " num_envs=num_envs,\n", + " wrappers=[ImgObsWrapper],\n", + " )\n", + " env.reset()\n", + "\n", + " for _ in range(1_000):\n", + " action = env.action_space.sample()\n", + " timestep = env.step(action)\n", + " return timestep\n", + "\n", + "\n", + "minigrid_times = {}\n", + "i = 2\n", + "while True:\n", + " try:\n", + " minigrid_times[i] = timeit.timeit(lambda: benchmark_minigrid(i), number=1)\n", + " time.sleep(1)\n", + " i *= 2\n", + " except:\n", + " print(\"Max num_envs reached\", i)\n", + " break" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": { + "tags": [ + "hide_input" + ] + }, + "outputs": [ + { + "data": { + "image/png": "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1KlTLf73AwAAAMxCGAMAAADA56Kjo/Xzn/9ctbW1eumll1q8JiMjQ5L0l7/8RVVVVc3HP/nkEz311FPt0WazxsZGzZkzx6WPr7/+Ws8884wsFovuueee5uNTpkxRamqqVq9ercWLF7vthWIYhjZt2qRNmza1SW9jxoyRzWZTYWGh/vCHP8gwjOZzb731lt58802Fh4drxowZ5/ysu+66S71799ajjz6q5cuXu42Lq6+v14cffqjc3NxzfpYkXXvttYqIiNAbb7yhl19+WVLLI8o+/fRTffzxx2797NmzR1u3bpXFYjntnjUAAACAGQhjAAAAAHQICxYsULdu3VRdXd3i+alTpyopKUmfffaZUlJSdMMNN+jSSy/V2LFjXcKP9jBp0iTl5+dr4MCBuvnmmzV+/HiNGDFCFRUV+t3vfqeLL764+dqAgACtX79eiYmJ+sMf/qC4uDiNHTtWt956q8aNG6c+ffpo1KhR2rJlS5v0ZrFYtHr1akVHR+tPf/qT0tLSdMstt2jUqFG6/vrr5efnp5deeql5pdG5iIqK0ttvv63IyEjdddddSkhI0DXXXKNbb71VV155pXr16qXx48dr586dbfDJpJCQEF133XU6ceKE1q5dq4iICF177bVu12VnZ2vs2LHq06ePJkyYoGnTpmncuHFKSUnRiRMnNHv27NOOwwMAAADMQBgDAAAAoEPo3r275s2bd9rzISEh+p//+R9NnTpVFRUVev/999XQ0KBXX31V9913X/s1qu9W8mzevFlXXXWVPv30U23cuFGpqalasWKFFi9e7Hb94MGD9e2332rJkiXq16+fNm/erDfffFPbt2/XhRdeqGXLlmnatGlt1p/NZtM333yjO++8U5WVlXr99de1bds2TZ48WZs2bdJNN93UZs+69NJLlZOTowceeEDdunVTVlaW1q9fr6KiImVkZGjlypW66qqr2ux5318Jc9111ykkJMTtmkmTJmnhwoUaMmSIsrOztW7dOuXl5WnUqFF64403tHTp0jbrBwAAAPCExfj+mnUAAAAAAAAAAAC0KVbGAAAAAAAAAAAAmIgwBgAAAAAAAAAAwESEMQAAAAAAAAAAACYijAEAAAAAAAAAADARYQwAAAAAAAAAAICJCGMAAAAAAAAAAABMRBgDAAAAAAAAAABgIsIYAAAAAAAAAAAAExHGAAAAAAAAAAAAmIgwBgAAAAAAAAAAwESEMQAAAAAAAAAAACYijAEAAAAAAAAAADARYQwAAAAAAAAAAICJCGMAAAAAAAAAAABMRBgDAAAAAAAAAABgIsIYAAAAAAAAAAAAExHGAAAAAAAAAAAAmIgwBgAAAAAAAAAAwESEMQAAAAAAAAAAACYijAEAAAAAAAAAADARYQwAAAAAAAAAAICJCGMAAAAAAAAAAABMRBgDAAAAAAAAAABgIsIYAAAAAAAAAAAAExHGAAAAAAAAAAAAmIgwBgAAAAAAAAAAwESEMQAAAAAAAAAAACYijAEAAAAAAAAAADARYQwAAAAAAAAAAICJCGMAAAAAAAAAAABMRBgDAAAAAAAAAABgIsIYAAAAAAAAAAAAExHGAAAAAAAAAAAAmIgwBgAAAAAAAAAAwESEMQAAAAAAAAAAACYijAEAAAAAAAAAADARYQwAAAAAAAAAAICJCGMAAAAAAAAAAABMRBgDAAAAAAAAAABgIsIYAAAAAGgDFoul+dfnn39+2utee+215usSEhJczhUWFspisWjMmDHn3I8ntfbv36/f/e53uuSSS9SzZ09ZrVb16NFDl1xyiebPn68vv/yyVc9etGiRLBaLVq5c2ab9AgAAAJ1VgK8bAAAAAIDTOXjwoF588UVlZWWpoqJCERERGjNmjGbOnKmYmBhft3daq1ev1ogRI1o8t2rVqnbupmXPPvus5s+fr9raWvXo0UPDhw9XdHS0ysrK5HQ69eSTT+rJJ5/Uvffeq2XLlvm6XQAAAKBTsxiGYfi6CQAAAAD4vurqas2dO1crV65UXV2d23mr1arMzEwtXbpUwcHBPujQncVikb+/v1JTU1VSUqKSkhIFBLj+/9+OHj2q2NhY2Ww2ffPNN4qPj1dhYWHz+bq6Ou3atUuhoaGKi4s7p37OVOvZZ5/Vfffdp/DwcP31r3/V7bffLn9/f5drtmzZosWLF6uqqkoff/yxV88+cuSIjhw5otjYWEVGRnp0T2FhoRITE5WRkaGNGzd69TwAAACgo2NMGQAAAIAOpbq6WhMmTNALL7zQYhAjfRc0LF++XOPHj1d1dXU7d3hmt956q44cOaIPP/zQ7dyrr76quro6TZs2rcV7rVarkpOTzzmIOVOtoqIizZ8/X35+fnrvvfeUmZnpFsRI0vDhw/XOO+/oz3/+s9fP7tmzp5KTkz0OYgAAAICujjAGAAAAQIcyd+5cZWVleXRtVlaW5s2bZ25DXrrllltksVhaHEe2atUqhYeH69prr23x3tPtm7Jy5UpZLBYtWrRIe/fu1S233KJevXopJCREF198sd59912Paz399NOqra3VT3/6U11++eVn/TwXXXSRy+83btwoi8Wi6dOnq7S0VD/72c/Ur18/BQQE6KmnnpJ05j1jiouLddttt6lXr14KDQ3VRRdd1GFGtwEAAABmYc8YAAAAAB1GaWmpV5u+S9KKFSv04IMPdpg9ZPr376/LL79c77zzjiorKxUeHi5J2r17tz7//HPddtttCg0NbVXtwsJCDR8+XBEREbryyiu1d+9eff7555o8ebI2bNigq6+++qw1NmzYIEmaOnVqq3pocvjwYQ0fPlz19fUaNWqUampqzvq59uzZo8suu0ylpaUaMGCArrrqKu3fv1+333677rvvvnPqBwAAAOjICGMAAAAAtCnDMFRWVtaqe5955pnTjiY7nbq6Oj3zzDNasGBBq54pSZGRkbJYLK2+/4emTZumrKwsvfnmm7r99tslSatXr24+11qvvPKKFixYoEcffVR+ft8NOnjqqaf0i1/8QkuWLDlrGFNXV6etW7dKki688MJW9yFJ77//vq677jqtWbPG43177r33XpWWlmrGjBl6/vnnm/fUeffdd3XdddedUz8AAABAR0YYAwAAAKBNlZWVqXv37u36zCVLlmjJkiWtvv/48eOKiopqs35uuOEGzZ49W6tXr3YJY2JjY3XllVfq8OHDraqbmJioP/3pT81BjCTNnj1bDz74oDZv3qxTp04pMDDwtPcfO3ZMhmFI+m5flx/asWOHHnroIbfjjz/+uNv1QUFBevrppz0OYnbv3q0PPvhA3bp10xNPPNEcxEjSj3/8Y91www169dVXPaoFAAAAdDaEMQAAAADQxqKiojRx4kS9/fbbKi0tVXFxsbZt26Zf/OIX8vf3b3XdMWPGuIUtAQEBSkxM1DfffKOjR48qNja21fUPHjyoV155xe34okWL3MKYYcOG6YILLvC49r///W9J0vjx4xUZGel2furUqYQxAAAA6LL8zn4JAAAAAMBb06ZNU0NDg9auXdu8Qf25jCiTpH79+rV4PCIiQpJUW1t7xvt79OjRPI7tyJEjbudHjRolwzCafyUlJZ22VlxcnKdtS5IOHDggSYqPj2/xfEJCglf1AAAAgM6ElTEAAAAA2lRkZKSOHz/eqnsff/zxFsdknc3ChQvPec+YtnbNNdcoKipKf/vb33TgwAGlpKRo2LBh51Tz++PJWsNqtSolJUX5+fn69ttvvVrZ8kOejicDAAAAQBgDAAAAoI1ZLJZW778ye/ZsPfroo6qrq/P4HqvVqtmzZ7fpni9tISgoSDfeeKNeeOEFSdLPf/5zH3f0nQkTJig/P19r167VpEmT2u25TePTioqKWjx/uuMAAABAV8CYMgAAAAAdRp8+fTR9+nSv7snMzFRMTIw5DZ2j2267TdHR0erZs6duvfVWX7cjSZozZ44CAwP197//Xf/7v//bbs8dNWqUJOmDDz5QeXm52/m1a9e2Wy8AAABAeyOMAQAAANChLF26VBkZGR5dm5GRoaVLl5rcUeuNHj1aR44c0eHDh0+7V0p7i4+P1xNPPKHGxkZNnDhRK1asUENDg9t1BQUFrR4315KBAwfq6quvVnl5uRYsWODyzPfff1/r1q1rs2cBAAAAHQ1hDAAAAIAOJSQkRBs2bNCsWbNktVpbvMZqtWrWrFn64IMP2LukFe677z4tW7ZMdXV1mjFjhnr37q0JEybo1ltv1TXXXKO0tDSlpKTo0KFDGj9+vHr27Nkmz33uuecUExOjF198UUlJSZo6daoyMjI0adIk3XXXXW3yDAAAAKAjIowBAAAA0OGEhITo+eefV3FxsR566CGNHTtWl156qcaOHauHHnpIxcXFev755wlizsG9996rnTt36je/+Y0GDBigL774Qq+99po+//xzBQcHa86cOdq8ebM2bNig8PDwNnlm03NuueUWnThxQuvXr1d5eblWrFihX/7yl23yDAAAAKAjshiGYfi6CQAAAAAAAAAAgK6KlTEAAAAAAAAAAAAmIowBAAAAAAAAAAAwEWEMAAAAAAAAAACAiQhjAAAAAAAAAAAATEQYAwAAAAAAAAAAYCLCGAAAAAAAAAAAABMRxgAAAAAAAAAAAJiIMAYAAAAAAAAAAMBEhDEAAAAAAAAAAAAmIowBAAAAAAAAAAAwEWEMAAAAAAAAAACAiQhjAAAAAAAAAAAATEQYAwAAAAAAAAAAYCLCGAAAAAAAAAAAABMRxgAAAAAAAAAAAJiIMAYAAAAAAAAAAMBEhDEAAAAAAAAAAAAmIowBAAAAAAAAAAAwEWEMAAAAAAAAAACAiQhjAAAAAAAAAAAATEQYAwAAAAAAAAAAYCLCGAAAAAAAAAAAABMRxgAAAAAAAAAAAJiIMAYAAAAAAAAAAMBEhDEAAAAAAAAAAAAmIowBAAAAAAAAAAAw0f8FH2Uy1jeQ6RYAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, ax = plt.subplots(figsize=(11, 5), dpi=150)\n", + "ax.plot(minigrid_times.keys(), minigrid_times.values(), label=\"MiniGrid\", color=\"black\", marker=\"o\")\n", + "ax.set_xlabel(\"Number of envs\")\n", + "ax.set_ylabel(\"Time (s)\")\n", + "ax.set_title(\"MiniGrid\")\n", + "ax.set_yscale(\"log\")\n", + "ax.set_xscale(\"log\", base=2)\n", + "ax.grid(axis=\"y\", linestyle=(0, (6, 8)), alpha=0.6)\n", + "fig.legend(loc=\"lower center\", ncol=2, bbox_to_anchor=(0.53, -0.07), shadow=False, frameon=False)\n", + "fig.tight_layout()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "It scales quite linearly with the number of steps. That's a reasonable time for a single environment that runs on the CPU.\n", + "\n", + "Let's see how NAVIX compares to MiniGrid with a single environment." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import jax\n", + "import navix as nx\n", + "\n", + "\n", + "@jax.jit\n", + "@jax.vmap\n", + "def benchmark_navix(seed):\n", + " env = nx.make('Navix-Empty-8x8-v0') # Create the environment\n", + " timestep = env.reset(seed)\n", + " actions = jax.random.randint(seed, (1_000,), 0, env.action_space.n)\n", + "\n", + " def body_fun(timestep, action):\n", + " timestep = env.step(timestep, action) # Update the environment state\n", + " return timestep, ()\n", + "\n", + " return jax.lax.scan(body_fun, timestep, actions, unroll=10)[0]\n", + "\n", + "navix_times = {}\n", + "i = 2\n", + "while True:\n", + " if i >= 524288: # \n", + " break\n", + " try:\n", + " seeds = jax.random.split(jax.random.PRNGKey(0), i)\n", + " benchmark_navix_jit = benchmark_navix.lower(seeds).compile()\n", + " navix_times[i] = timeit.timeit(lambda: benchmark_navix_jit(seeds), number=1)\n", + " i *= 2\n", + " except:\n", + " break" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": { + "tags": [ + "hide_input" + ] + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAABmMAAAMfCAYAAAAqhqPxAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAABcSAAAXEgFnn9JSAACn7ElEQVR4nOzdeZxWdd0//tcwDCKCTCqiSCgqmpJioaVpgpaaS7mv3S5J2Z6W/dS8W/TWuz3D+7a73HKp3HIXtTQTygVzp3BDBc0NER1kZ4Dr98f1hWFkUGa4Ls4sz+fjMQ/P+ZzrnPOe48wFnNf1eZ+aUqlUCgAAAAAAAFXRregCAAAAAAAAOjNhDAAAAAAAQBUJYwAAAAAAAKpIGAMAAAAAAFBFwhgAAAAAAIAqEsYAAAAAAABUkTAGAAAAAACgioQxAAAAAAAAVSSMAQAAAAAAqCJhDAAAAAAAQBUJYwAAAAAAAKpIGAMAAAAAAFBFwhgAAAAAAIAqEsYAAAAAAABUkTAGAACgQs4444zU1NRk5MiRRZdSqOOOOy41NTU57rjjii4FAADaBWEMAABQFUuCiZa+evXqlSFDhuTYY4/NfffdV3SpAAAAVSWMAQAAqq5///5Lv/r165cFCxbk2WefzeWXX56dd945Z5xxRtElAgAAVI0wBgAAqLrXXntt6dfrr7+e+fPn55577snw4cOTJGeeeaYZMgAAQKcljAEAAFa72tra7LzzzrnxxhuXjt10003FFQQAAFBFwhgAAKAwAwcOzLrrrpskmTVrVouvmTlzZn784x9np512yjrrrJM11lgj73//+3PEEUfk/vvvb3GfKVOmLH0+zZQpUzJ16tSceOKJGTx4cHr27Jn+/fvniCOOyFNPPfWu9S1evDjXXHNNDjjggGy00UZZY4010q9fvwwfPjynnnpq/vWvf73r/nfddVf23Xff9OvXLz179sxWW22VM888M/PmzWvx9e988P2ll16anXbaKX379s373ve+fPKTn8zf/va3pa9fuHBh/vd//zfDhw/P2muvnb59+2afffbJI488ssKaxo8fn1NPPTUf//jHs/HGG6dnz56pr6/PjjvumJ/85Ccr/P+QZOk1HTt2bF5//fV861vfyhZbbJFevXqlpqbmXa/Fsu6444706dNn6fe6cOHCld4XAAA6ou5FFwAAAHRdL7/8cqZPn54k2XLLLZfb/thjj+XTn/50XnrppSTlGTW9evXKSy+9lKuvvjrXXHNN/vu//zvf+c53VniOiRMn5vjjj8/rr7+eXr16JUlef/31XH311bn99tvzt7/9LcOGDVtuvzfeeCMHH3xws/Cjvr4+8+bNyyOPPJJHHnkkTz/9dLPZPcv62c9+llNPPTVJ0rdv3yxYsCBPPfVUzjjjjIwbNy533nlnamtrV1j3cccdl8suuyzdu3fPmmuumYaGhtx1110ZN25cbrjhhuyxxx75zGc+kzvuuCM9evRIXV1dZs+endtvvz3jxo3L3/72t6Vt4Ja10047LV3u1atXevXqlbfeeisPPPBAHnjggVx++eW5++67s/7666+wtmeffTZHHHFEpk6dmp49e6aurm6Fr32n3//+9zn++OPT2NiYU089NT/+8Y9Xel8AAOiozIwBAABWu0WLFuX+++/PgQcemCRZf/31c8wxxzR7zauvvpq99torL730Ug466KA89NBDmTt3bt5+++1MnTo13/ve91JbW5vTTz99hYFIkhx99NEZMmRIHnzwwcyePTuzZs3KnXfemQ033DBvv/12vv71ry+3z8KFC3PAAQfkb3/7W9ZYY4385Cc/yeuvv5633norM2fOzMsvv5zzzz8/W2+9dYvnfPzxx3PaaafltNNOW7pfQ0NDvv/97ydJ7r777lx22WUrrPmmm27KNddck/PPPz9vv/123n777Tz11FMZPnx4Fi5cmK9//ev59re/nYceeijXXHNNZs2alZkzZ+ahhx7KZpttljlz5uTEE09s8dif/vSnc/XVV+fVV1/N7Nmz8+abb2bOnDm5/vrrs+WWW+aJJ57Il770pRXWliTf/OY3U19fn7vuuiuzZ8/O22+/naeffvpd90mSn//85znmmGOycOHCjB49WhADAEDXUQIAAKiCH/zgB6UkpSSl/v37L/3q169fqba2tpSktPbaa5c++9nPlqZMmbLc/scff3wpSemoo45a4TnOOeecUpLSsGHDmo1Pnjx56bk/8IEPlObMmbPcvjfffPPS1/z73/9utu2iiy4qJSnV1NSUbr311jZ9zz/4wQ9afM1BBx1USlL65Cc/udy2Y489dun+v//975fb/uyzzy7dnqT097//fbnX3HXXXSv8vt7LSy+9VFpjjTVKNTU1pRdeeGG57UuOu/baa7/rsZd8H8cee2ypVCqVFi9eXPrmN79ZSlLq0aNH6aqrrmpVXQAA0NGZGQMAAFTd1KlTl35NmzYtixYtSpLMmTMnM2bMyNSpU5u9ft68ebniiiuSZGmrr5YsmU3z+OOPL3eMJU4++eSsueaay43vvffe6dGjR5Lkn//8Z7Ntv/3tb5Mk++yzT/bZZ5+V+RabWWONNfLtb3+7xW37779/kmTChAkr3H/QoEE56qijlhvfbLPNsvnmmydJPv7xj2eXXXZZ7jUjRozIGmus8Z7naMlGG22UYcOGpVQq5b777lvh644++ugMHDhwpY65YMGCfPazn80vf/nL9OnTJ7fddlsOP/zwVtUFAAAdnTAGAACoulKp1Oxr7ty5efTRR3PsscdmzJgx2XXXXZu1Gnv44YeXPuR+zz33zAYbbNDi19ChQ5fu88ILL7R47o9+9KMtjnfv3j39+vVLkrz55ptLxxcuXJgHH3wwSbmlV1sMHTo0vXv3bnHbgAEDljvnO22//fapqalpcVv//v2TJDvssEOL22tra7PeeuslSd56663lti9evDhXXHFFPvOZz2TQoEFZc801U1NTs/TrH//4R5IsfU5PS3beeecVblvWzJkzs+++++bKK69M//79M27cuHziE59YqX0BAKAz6V50AQAAQNfTs2fPbLfddrnooovy5ptv5oYbbshxxx2XF198MWuvvXZeeeWVpa9d0YyXd5ozZ06L43369FnhPt27l/9J1NjYuHRs+vTpS9c33njjlTp3W865cOHCVdq/td9XUr5G++23X+6+++6lYz169Mg666yTurq6JOWQqLGxMbNnz17h8ddff/0VblvW9ddfv3T5lltuyYc+9KGV2g8AADobM2MAAIBCfeELX0iSzJgxI7fddluSLG1jliRz585dbmZNS18jR46sSD0rmpHSGfz3f/937r777qy55pr55S9/mRdeeCHz5s3L9OnT89prr+W1115bOpOoVCqt8Di1tbUrdb4RI0bk/e9/f5Lk85//fKZNm7bq3wQAAHRAwhgAAKBQy84+mTx5cpJkgw02WDq2ovZj1bLsLJHVfe5qu+qqq5Ik3//+93PSSSdl0KBBy4VPr732WsXOt8kmm2Ts2LHZeOONM2HChOy22255/fXXK3Z8AADoKIQxAABAoZZ9Nslaa62VpPw8lB49eiQpt7danbp3756PfOQjhZy72v79738nyQrbhU2ZMiXPPvtsRc+56aabZuzYsdlkk00yceLEjBw5sqKBDwAAdATCGAAAoFBXXHHF0uXtt98+STmUOeqoo5IkP/nJT/Liiy++6zHefPPNitY0atSoJMltt922tHVaZ9C3b98kyeOPP97i9tNOO60q591kk00ybty4bLrppnnyySczcuTIvPrqq1U5FwAAtEfCGAAAoBCvvfZavvvd7+ayyy5Lkuy4447Zaaedlm7/4Q9/mAEDBuSNN97ITjvtlN/97neZOXPm0u3Tpk3LddddlwMPPDBHHnlkRWs7+uijs8suu6RUKuXggw/Oz372s7zxxhtLt7/yyiv55S9/mVNPPbWi5622T33qU0mSs88+O9dff30WLlyYpNwe7qijjso111yT973vfVU596BBgzJu3LhsvvnmefrppzNixIi8/PLLVTkXAAC0N92LLgAAAOj8ln0GTJLMmzcvM2bMWLq+zTbb5Lrrrmv2/JINN9wwf/nLX3LAAQfkmWeeyTHHHJNu3bqlvr4+8+fPz+zZs5e+9pOf/GRF6+3evXtuuOGGHHTQQfn73/+eU045Jaeeemr69u2bhQsXZtasWUmS/fffv6Lnrbazzz47d955Z6ZOnZqDDz443bt3z1prrbX0/8UPf/jD/PnPf864ceOqcv6BAwdm3Lhx2X333ZcGMnfffXfe//73V+V8AADQXpgZAwAAVN3UqVObfc2ZMycbbLBB9tprr1x44YV56KGHMmDAgOX222qrrTJhwoScf/752XPPPbPeeuvl7bffTqlUyuabb55DDz00F1xwQa655pqK17zeeutl7Nix+f3vf5+99947/fr1y+zZs9OrV68MHz48p512Wn74wx9W/LzVtPHGG+ehhx7KqFGjll7vnj17Zr/99suf//znfOc736l6DQMGDMjYsWOz1VZb5bnnnsuIESPywgsvVP28AABQpJpSqVQquggAAAAAAIDOyswYAAAAAACAKhLGAAAAAAAAVJEwBgAAAAAAoIqEMQAAAAAAAFUkjAEAAAAAAKgiYQwAAAAAAEAVCWMAAAAAAACqSBgDAAAAAABQRcIYAAAAAACAKhLGAAAAAAAAVFH3ogtg5WywwQaZPXt2Bg0aVHQpAAAAAADQpbz44otZa6218tprr7VpfzNjOojZs2ensbGx6DIAAAAAAKDLaWxszOzZs9u8v5kxHcSSGTETJ04suBIAAAAAAOhahg4dukr7mxkDAAAAAABQRcIYAAAAAACAKhLGAAAAAAAAVJEwBgAAAAAAoIqEMQAAAAAAAFUkjAEAAAAAAKgiYQwAAAAAAEAVCWMAAAAAAACqSBgDAAAAAABQRcIYAAAAAACAKhLGAAAAAAAAVJEwBgAAAAAAoIqEMQAAAAAAAFUkjAEAAAAAAKgiYQwAAAAAAEAVCWMAAAAAAACqSBgDAAAAAABQRcIYAAAAAACAKupedAEAlTZ16tRcdNFFGTduXGbOnJk+ffpk5MiRGTVqVPr37190eQAAAABAF1NTKpVKRRfBexs6dGiSZOLEiQVXAu3X3Llzc+KJJ+bSSy9NY2Pjctvr6uryuc99Lueee2569uxZQIUAAAAAQEe0qvfozYwBOoW5c+dm7733zrhx41b4msbGxlxwwQV5+umnc/vtt2fNNddcjRUCAAAAAF2VZ8YAncKJJ574rkHMssaNG5eTTjqpugUBAAAAAPw/whigw3vttddy6aWXtmqfSy65JFOnTq1OQQAAAAAAyxDGVNhjjz2Wj3/841lzzTUzePDgnHfeeUWXBJ3exRdf3OIzYt5NY2NjLr744ipVBAAAAADQRBhTQdOmTcsee+yRtddeO2PGjMlXvvKVnHTSSfnd735XdGnQqa1se7J3Gjt2bGULAQAAAABoQfeiC+hMfvOb36SmpiZ//OMf06tXr3ziE5/I5MmTc9ZZZ+Xoo48uujzotGbOnLla9wMAAAAAaA0zYyroz3/+c/bZZ5/06tVr6dihhx6aSZMm5fnnny+wMujc+vTps1r3AwAAAABojS4Txjz88MP58Y9/nIMOOigDBw5MTU1Nampq3nO/uXPn5vvf/3622GKL9OzZMwMGDMjxxx+fl19+ebnXPvPMM/nABz7QbGzJ+tNPP12ZbwRYzpZbbtmm/UaOHFnZQgAAAAAAWtBl2pSdddZZuemmm1q1z7x587L77rtn/Pjx2XDDDbP//vtnypQpueSSSzJmzJiMHz8+m2666dLXv/XWW6mvr292jPe9731LtwGVNW/evJx11ln59a9/3ep96+rqMmrUqCpUBQAAAADQXJcJY3baaadsu+222WGHHbLDDjtkk002yfz58991n7PPPjvjx4/PTjvtlDvuuCO9e/dOkpxzzjk5+eSTc/zxx3sAOBRk3LhxOeGEE/LMM8+0af/Pfe5z6d+/f4WrAgAAAABYXpcJY0499dRWvX7BggU577zzkiS/+tWvlgYxSfKtb30rl112WcaNG5eHH344w4cPT1KeBTNjxoxmx2loaFi6DVh1M2bMyCmnnJILLrig2figQYNSX1+fCRMmvOcxRowYkXPPPbdaJQIAAAAANNNlnhnTWvfee29mzJiRzTbbLB/60IeW237IIYckSW655ZalY1tssUWeeuqpZq9bst7WZ1oATW644YZstdVWzYKYbt265Vvf+laeeOKJjB8/PieccELq6upa3L+uri4nnHBC/vSnP6Vnz56rq2wAAAAAoIvrMjNjWuvxxx9Pknz4wx9ucfuS8WU/hb/XXnvlvPPOy9y5c7PmmmsmSa699toMGTKk2bNl3s3QoUNbHH/uuecycODA5cKelnzgAx9YqXMt6+WXX87MmTPf83UDBgzI2muv3apjv/3223nllVfe83V9+vTJRhtt1KpjJ1mpa5K4LivSEa7L66+/nrPPPjt33nlns/Ftt902F110UXbYYYelY+eff37+67/+KxdffHHGjh2bmTNnpk+fPhk5cmRGjRqVt956K1OmTHnPOjrCdWmJn5eWuS4tc11a5rq0zHVpmevSMtelZa5Ly1yXlrkuLXNdWua6tMx1aZnr0jLXpWWuS8tcl5Z1tevSWsKYFXjxxReTJAMHDmxx+5LxF154YenYl770pfzP//xPDjvssJx00kl59NFHc/755+e3v/1t9QuGTqhUKuXaa6/Nz372s2Zvmj169Mg3v/nNnHXWWS3Ogunfv39OP/30nH766ctte+utt6paMwAAAADAO9WUSqVS0UUUoWfPnpk/f35W9O2fcMIJufDCC/Of//mfOfvss5fb/uyzz2bIkCEZMmRIsweIP/bYY/na176Whx56KP3798+3v/3tfP3rX1/lepfMmJk4ceIqHws6gkmTJuWEE07I2LFjm43vuuuuueCCC7T+AwAAAABWm1W9R29mTIVtt912ueeee4ouAzqsxsbG/OIXv8gZZ5yR+fPnLx1fe+2187Of/Syf//zn062bx10BAAAAAB2HMGYFevfunSSZM2dOi9tnz56dpNwHD6iMhx56KJ///OeXPrNpiQMPPDDnnXdeBgwYUFBlAAAAAABt5+PlKzBo0KAkyUsvvdTi9iXjG2+88WqrCTqr2bNn59vf/nY++tGPNgtiNthgg1x33XW5/vrrBTEAAAAAQIdlZswKDBs2LEnyyCOPtLh9yfi222672mqCzujOO+/MF7/4xUyePLnZ+Be+8IX89Kc/TX19fTGFAQAAAABUiJkxK7Dzzjunb9++ee655/LYY48tt/3aa69Nknz6059ezZVB5zB9+vQcd9xx2XPPPZsFMUOGDMndd9+dCy64QBADAAAAAHQKwpgV6NGjR772ta8lSb761a8ufUZMkpxzzjmZMGFCRowYkeHDhxdVInRIpVIpV111VbbeeutcdtllS8dra2vzne98J48//nhGjhxZXIEAAAAAABXWZdqU3XrrrTnrrLOWri9YsCBJsuOOOy4d+973vpd999136fp3v/vd/OUvf8l9992XIUOG5OMf/3heeOGFPPDAA+nXr19++9vfrr5vADqBf//73/nKV76SMWPGNBsfPnx4Lrroomy33XbFFAYAAAAAUEVdJoyZNm1aHnjggeXGlx2bNm1as209e/bM3XffnR/96Ee54oorcuONN2adddbJcccdl7POOisDBw6set3QGSxevDi//vWvc9ppp2XWrFlLx9dcc82cffbZ+cY3vpHu3bvM2xEAAAAA0MXUlEqlUtFF0LKGhoY0NDQkSfbcc8/U1tbmySefLLYoaKUnnngiX/jCF3Lfffc1G99jjz3ym9/8JptuumlBlQEAAAAArJyhQ4cmSSZOnNim/T0zph0bPXp0Bg8enMGDB2fSpEmZPn160SXBSps/f37OPPPMbLfdds2CmPe973259NJL8+c//1kQAwAAAAB0CWbGtGNmxtBR3X///fn85z+fJ554otn4EUcckdGjR6d///4FVQYAAAAA0HqrOjPGQxrasfr6+tTX1ydJ6urqii0GVsLMmTNz+umn51e/+lWWzXkHDhyYX//619lvv/0KrA4AAAAAoBjCGKAibr311nz5y1/Ov//976VjNTU1+epXv5of/vCH6dOnT4HVAQAAAAAURxgDrJLXX389J554Yq666qpm41tttVUuuuiifOxjHyuoMgAAAACA9qFb0QUAHVOpVMpll12WrbbaqlkQU1dXlzPOOCOPPvqoIAYAAAAAIGbGAG0wefLkfPGLX8ydd97ZbHynnXbKhRdeuPRhVgAAAAAAmBkDtMLChQtzzjnn5IMf/GCzIKZ3794577zzcs899whiAAAAAADewcwYYKU8/vjj+fznP5+HHnqo2fi+++6bX//613n/+99fUGUAAAAAAO2bmTHAu5o7d25OP/30DB8+vFkQ069fv1x55ZW55ZZbBDEAAAAAAO/CzBhghcaNG5cvfOELmTRpUrPxY489Nr/4xS+y7rrrFlQZAAAAAEDHIYxpxxoaGtLQ0JAkaWxsTG1tbbEF0WU0NDTklFNOyYUXXthsfPDgwTn//POzxx57FFQZAAAAAEDHo01ZOzZ69OgMHjw4gwcPzqRJkzJ9+vSiS6ILuP7667P11ls3C2K6deuWk08+Of/85z8FMQAAAAAArVRTKpVKRRdBy5adGbPnnnumtrY2Tz75ZLFF0Wm98sor+drXvpYbbrih2fiwYcNy0UUXZfvtty+oMgAAAACAYg0dOjRJMnHixDbtr01ZO1ZfX5/6+vokSV1dXbHF0GktXrw4F110UU455ZTMmDFj6fgaa6yRM844IyeffLKfPwAAAACAVSCMgS7smWeeyQknnJBx48Y1Gx8xYkQuuOCCbLHFFgVVBgAAAADQeXhmDHRBjY2N+dGPfpRtt922WRDTt2/fXHjhhfnrX/8qiAEAAAAAqBAzY6CLefDBB/P5z38+EyZMaDZ+8MEH53//93+z4YYbFlQZAAAAAEDnZGYMdBGzZ8/OySefnB133LFZELPhhhvm+uuvz7XXXiuIAQAAAACoAjNjoIObOnVqLrrooowbNy4zZ85Mnz59MnLkyIwaNSr9+/dPktxxxx354he/mClTpjTb94QTTshPfvKT1NfXr/7CAQAAAAC6iJpSqVQqugje29ChQ5MkEydOLLgS2ou5c+fmxBNPzKWXXprGxsblttfV1eXII4/MokWL8oc//KHZtiFDhuTCCy/MiBEjVle5AAAAAAAd1qreozczBjqguXPnZu+99864ceNW+JrGxsZcfvnlzca6d++eU045Jd/73vfSs2fPapcJAAAAAECEMdAhnXjiie8axLRk++23z0UXXZRhw4ZVqSoAAAAAAFoijIEO5rXXXsull17aqn1qa2tz0003ZcCAAdUpCgAAAACAFepWdAGsWENDQ6ZMmZIpU6aksbExixcvLrok2oGLL764xWfEvJtFixa1OsABAAAAAKAyzIxpx0aPHp0zzzxz6Xq/fv0KrIYilEqlvPrqq5kwYUIef/zxTJgwITfddFObjjV27NicfvrpFa4QAAAAAID3Ioxpx0466aQcd9xxSZI999wztbW1xRZEVc2bNy9PPvnk0tBlyX/feOONihx/5syZFTkOAAAAAACtI4xpx+rr61NfX58kqaurK7YYKmbJbJd3hi5PPfVUFi1aVLXz9unTp2rHBgAAAABgxYQxUEXz5s3LE088sTRwWRK+TJ8+vVXHGTBgQLbddtsMGzYszz//fP74xz+2upaRI0e2eh8AAAAAAFadMAYqoFQq5ZVXXllutsvTTz/dqtkuPXr0yNChQzNs2LCl4cu2226b9dZbb+lrXnvttdx4441pbGxc6ePW1dVl1KhRrfqeAAAAAACoDGEMtNK8efMyceLEZqHL448/njfffLNVxxkwYMByocsWW2zxni3pNthggxx33HG58MILV/pcn/vc59K/f/9W1QcAAAAAQGUIY+hwpk6dmosuuijjxo3LzJkz06dPn4wcOTKjRo2qaOBQKpXy8ssvLxe6PPPMM62a7bLGGmssN9tlm222aTbbpbXOPffcPPPMMxk3btx7vnbEiBE599xz23wuAAAAAABWTU2pVCoVXQTvbejQoUmSiRMnFlxJcebOnZsTTzwxl156aYstuurq6vK5z30u5557bnr27NnqY79ztsuECRNaPdtlo402anG2S/fulc89586dm5NOOimXXHJJxa8HAAAAAABNVvUevTCmg+jqYczcuXOz9957r/RMkNtvvz1rrrnmcttKpVJeeumlFme7LF68eKXrWWONNfLBD36wWeiy7bbbZt11123V91UJU6dOzcUXX5yxY8dWdaYQAAAAAEBXJYzpIrp6GHPCCSe06hkpJ5xwQkaPHp2JEyc2C10mTJiQt956q1XnHjhwYLPQZdiwYRkyZEhVZrsAAAAAAND+CGO6iK4cxrz22msZNGhQi6243k1NTU1a8+Pds2fP5Wa7bLPNNoXMdgEAAAAAoP1Y1Xv0PtpPu3fxxRe3OohJ8q5BzPvf//7lZrtsvvnmZrsAAAAAAFBx7jzT7q3Mc2JWZMlsl2VDl2222SbrrLNOBSsEAAAAAIAVE8bQ7s2cObNN+w0bNiwPP/xwamtrK1wRAAAAAACsvG5FFwDvpU+fPm3ab/311xfEAAAAAABQOGFMO9bQ0JApU6ZkypQpaWxszOLFi4suqRAjRoxo034jR46sbCEAAAAAANAGwph2bPTo0Rk8eHAGDx6cSZMmZfr06UWXVIhRo0alrq6uVfvU1dVl1KhRVaoIAAAAAABWnjCmHTvppJMyefLkTJ48OUOGDMm6665bdEmF2GCDDXLccce1ap/Pfe5z6d+/f3UKAgAAAACAVuhedAGsWH19ferr65Ok1TNDOptzzz03zzzzTMaNG/eerx0xYkTOPffc1VAVAAAAAAC8NzNj6BDWXHPN3H777TnhhBNWGEzV1dXlhBNOyJ/+9Kf07NlzNVcIAAAAAAAtqymVSqWii+C9DR06NEkyceLEgisp3tSpU3PxxRdn7NixmTlzZvr06ZORI0dm1KhRWpMBAAAAAFBxq3qPXhjTQQhjAAAAAACgGKt6j16bMgAAAAAAgCoSxgAAAAAAAFSRMAYAAAAAAKCKhDEAAAAAAABVJIwBAAAAAACoImEMAAAAAABAFQljAAAAAAAAqkgYAwAAAAAAUEXCGAAAAAAAgCoSxgAAAAAAAFSRMAYAAAAAAKCKuhddACvW0NCQhoaGJEljY2Nqa2uLLQgAAAAAAGg1M2PasdGjR2fw4MEZPHhwJk2alOnTpxddEgAAAAAA0Eo1pVKpVHQRtGzZmTF77rlnamtr8+STTxZbFAAAAAAAdDFDhw5NkkycOLFN+2tT1o7V19envr4+SVJXV1dsMQAAAAAAQJtoUwYAAAAAAFBFwhgAAAAAAIAqEsYAAAAAAABUkTAGAAAAAACgioQxAAAAAAAAVSSMAQAAAAAAqCJhDAAAAAAAQBUJYwAAAAAAAKpIGAMAAAAAAFBFwhgAAAAAAIAqEsYAAAAAAABUkTAGAAAAAACgioQxAAAAAAAAVSSMAQAAAAAAqCJhDAAAAAAAQBUJYwAAAAAAAKpIGAMAAAAAAFBFwhgAAAAAAIAq6l50AaxYQ0NDGhoakiSNjY2pra0ttiAAAAAAAKDVzIxpx0aPHp3Bgwdn8ODBmTRpUqZPn150SQAAAAAAQCvVlEqlUtFF0LJlZ8bsueeeqa2tzZNPPllsUQAAAAAA0MUMHTo0STJx4sQ27a9NWTtWX1+f+vr6JEldXV2xxQAAAAAAAG2iTRkAAAAAAEAVCWMAAAAAAACqSBgDAAAAAABQRcIYAAAAAACAKhLGAAAAAAAAVJEwBgAAAAAAoIqEMQAAAAAAAFUkjAEAAAAAAKgiYQwAAAAAAEAVCWMAAAAAAACqSBgDAAAAAABQRcIYAAAAAACAKhLGAAAAAAAAVJEwBgAAAAAAoIqEMQAAAAAAAFUkjAEAAAAAAKgiYQwAAAAAAEAVCWMAAAAAAACqSBgDAAAAAABQRcIYAAAAAACAKhLGAAAAAAAAVJEwBgAAAAAAoIqEMQAAAAAAAFUkjAEAAAAAAKgiYQwAAAAAAEAVdS+6AFasoaEhDQ0NSZLGxsbU1tYWWxAAAAAAANBqZsa0Y6NHj87gwYMzePDgTJo0KdOnTy+6JAAAAAAAoJVqSqVSqegiaNmyM2P23HPP1NbW5sknnyy2KAAAAAAA6GKGDh2aJJk4cWKb9temrB2rr69PfX19kqSurq7YYgAAAAAAgDbRpgwAAAAAAKCKhDEAAAAAAABVJIwBAAAAAACoImEMAAAAAABAFQljAAAAAAAAqkgYAwAAAAAAUEXCGAAAAAAAgCoSxgAAAAAAAFSRMAYAAAAAAKCKhDEAAAAAAABVJIwBAAAAAACoou5FFwAAAAAAAKxmpVIyZ07b9u3VK6mpqWw9nZwwBgAAAAAAupo5c5Levdu276xZyVprVbaeTk6bMgAAAAAAgCoSxgAAAAAAAFSRMAYAAAAAAKCKhDEAAAAAAABVJIwBAAAAAACoImEMAAAAAABAFQljAAAAAAAAqkgYAwAAAAAAUEXCGAAAAAAAgCoSxgAAAAAAAFSRMAYAAAAAALqSRYuS//qvoqvoUroXXQAAAAAAALCaTJuWHHVU8pe/FF1JlyKMAQAAAACArmD8+OTQQ5OXXiq6ki5HGAMAAAAAAJ1ZqZT86lfJt76VNDY2jR94YPJ//5f06dO64/XqVdn6ugBhDAAAAAAAdFazZiVf+EJy1VVNY927Jz/7WXLiiUlNTXG1dSHCGAAAAAAA6Iyeeio56KDkySebxgYMSK65Jtl55+Lq6oK6FV0AAAAAAABQYddck+ywQ/MgZrfdkkceEcQUQBgDAAAAAACdRWNj8s1vJocfXm5RtsRppyV33JH0719cbV2YNmUAAAAAANAZvPxycthhyX33NY317Ztcfnnymc8UVxfCGAAAAAAA6PD++tfkyCOT119vGhs2LLnuumSzzYqriyTalAEAAAAAQMe1eHHy4x8ne+zRPIg57rjk/vsFMe2EmTEAAAAAANARNTQkxx6b3Hxz09gaayTnnZeMGpXU1BRWGs0JYwAAAAAAoKN57LHk4IOT559vGttkk3Jbsg9/uKiqWAFtygAAAAAAoCO55JJkp52aBzH77ps8/LAgpp0yM6Yda2hoSENDQ5KksbExtbW1xRYEAAAAAEBx5s1Lvv715KKLmsZqapKzzkq+852km/kX7ZUwph0bPXp0zjzzzKXr/fr1K7AaAAAAAAAKM3lycsghySOPNI2tt15yxRXJHnsUVxcrRUzWjp100kmZPHlyJk+enCFDhmTdddctuiQAAAAAAFa3W28ttx9bNojZccfyuiCmQzAzph2rr69PfX19kqSurq7YYgAAAAAAWL0WLUp+8IPkv/+7+fjXv578/OdJjx7F1EWrCWMAAAAAAKC9mTYtOfLI5K67msZ69So/L+bII4urizYRxgAAAAAAQHty//3JYYclL73UNLbllsl11yVDhxZXF23mmTEAAAAAANAelErJ//5vsuuuzYOYQw9NHnxQENOBCWMAAAAAAKBos2YlRx2VfOMbycKF5bHu3ZNf/jK5+uqkT59i62OVaFMGAAAAAABFevLJ5OCDy/9dYsCA5Jprkp13Lq4uKsbMGAAAAAAAKMo11yQ77NA8iNltt+SRRwQxnYgwBgAAAAAAVrcFC5KTTkoOPzyZPbtp/LTTkjvuSPr3L6w0Kk+bMgAAAAAAWJ1efjk57LDkvvuaxvr2TS6/PPnMZ4qri6oRxgAAAAAAwOry178mRxyRTJvWNDZsWHLddclmmxVXF1WlTRkAAAAAAFTb4sXJj3+c7LFH8yDmuOOS++8XxHRyZsYAAAAAAEA1NTQkxx6b3Hxz09gaayTnnZeMGpXU1BRWGquHMAYAAAAAAKrlsceSgw9Onn++aWyTTcptyT784aKqYjXTpgwAAAAAAKrhkkuSnXZqHsTsu2/y8MOCmC5GGAMAAAAAAJU0b17yhS8kxx9fXk7KrcjOPrvcqmyddYqtj9VOmzIAAAAAAKiU559PDjkkefTRprH11kuuvDL55CeLq4tCmRkDAAAAAACVMGZMMnx48yBmxx2TRx4RxHRxwhgAAAAAAFgVixYl3/1u8ulPJw0NTeNf/3oyblzy/vcXVhrtgzZlAAAAAADQVtOmJUcemdx1V9NYr17JRReVxyHCGAAAAAAAaJv7708OPTR5+eWmsS23TK67Lhk6tLi6aHe0KQMAAAAAgNYolZL//d9k112bBzGHHpo8+KAghuUIYwAAAAAAYGXNmpUcdVTyjW8kCxeWx7p3T375y+Tqq5M+fYqtj3ZJmzIAAAAAAFgZTz6ZHHxw+b9LDBiQXHNNsvPOxdVFu2dmDAAAAAAAvJdrrkl22KF5ELPbbskjjwhieE/CGAAAAAAAWJEFC5KTTkoOPzyZPbtp/LTTkjvuSPr3L6w0Og5tygAAAAAA6NxKpWTOnNbv98orybHHJvff3zTWt29y+eXJZz5Tufro9IQxAAAAAAB0bnPmJL17r/pxhg1Lrrsu2WyzVT8WXYo2ZQAAAAAA8F4+97nyDBlBDG1gZgwAAAAAAKxIjx7J//1fMmpU0ZXQgQljAAAAAABgRf7612TnnYuugg5OmzIAAAAAAFiR7bYrugI6AWEMAAAAAABAFQljAAAAAAAAqkgYAwAAAAAAUEXCGAAAAAAAgCoSxgAAAAAAAFSRMAYAAAAAAKCKhDEAAAAAAHRepVJy5plFV0EX173oAgAAAAAAoCrmz09GjUr+8IeiK6GLE8YAAAAAAND5vPVWctBBydixRVcCwhgAAAAAADqZKVOSffZJnnyyaWzXXZMrrkjq61t3rF69KlkZXZQwBgAAAACAzuOhh5L99kumTm0aO/ro5KKLkh49iquLLq1b0QUAAAAAAEBFjBmTjBjRPIj53veSyy4TxFAoM2MAAAAAAOj4/u//kq9/PVm8uLzevXty/vnJ8ccXWxdEGAMAAAAAQEe2eHFy6qnJz3/eNNanT3LttcmeexZXFyxDGAMAAAAAQMc0b15yzDHJH//YNLbRRslttyXbbltcXfAOwhgAAAAAADqe6dOT/fdP7r23aWzbbZNbb00GDiyuLmhBt6ILAAAAAACAVnnuuWSnnZoHMXvumfz974IY2iVhDAAAAAAAHcf48cmOOyaTJjWNjRqVjBmTrL12cXXBuxDGAAAAAADQMVx/fbLbbskbbzSNnX12cuGFSV1dcXXBe/DMGAAAAAAA2r/Ro5NvfSsplcrrdXXJJZckn/1soWXByhDGAAAAAADQfi1aVA5h/ud/msbq65MbbkhGjiyqKmgVYQwAAAAAAO3TnDnJUUclN93UNLbxxslttyVbb11cXdBKwhgAAAAAANqf119PPv3p5B//aBobPjwZMybZYIPi6oI26FZ0AQAAAAAA0MzTTyc77tg8iNlvv2TsWEEMHZIwBgAAAACA9uPvf0922imZPLlp7CtfKT8jpnfv4uqCVSCMAQAAAACgfbjqquSTn0zeeqtp7Gc/S847L+nuqRt0XH56AQAAAAAoVqmU/PSnyWmnNY2tsUbyu98lhx5aXF1QIWbGVNhDDz2UY445Jptvvnlqamry3e9+t+iSAAAAAADar4ULky9/uXkQs+66yV13CWLoNMyMqbB7770348ePzy677JI33nij6HIAAAAAANqvmTOTww9Pbr+9aWyzzcrrQ4YUVxdUmDCmwr7+9a/nxBNPTJJssskmxRYDAAAAANBevfJKst9+yaOPNo3tuGNy881Jv37F1QVVoE1ZhXXr5pICAAAAALyrf/2rHLwsG8QcdFDy178KYuiUOmxy8PDDD+fHP/5xDjrooAwcODA1NTWpqal5z/3mzp2b73//+9liiy3Ss2fPDBgwIMcff3xefvnl1VA1AAAAAEAXd9ddyc47J//+d9PYN7+ZXHNNsuaaxdUFVdRh25SdddZZuemmm1q1z7x587L77rtn/Pjx2XDDDbP//vtnypQpueSSSzJmzJiMHz8+m266aZUqBgAAAADo4i67LPn855OFC8vrNTXJuecmX/96sXVBlVUljJkxY0amTZuWhoaG1NfXp1+/funbt29Fz7HTTjtl2223zQ477JAddtghm2yySebPn/+u+5x99tkZP358dtppp9xxxx3p3bt3kuScc87JySefnOOPPz5jx45d+vqGhoa89tpr73rMXr16ZdCgQav8/QAAAAAAdFqlUnLWWckPftA0tuaayZVXJvvvX1xdsJpUJIxZuHBhbrjhhtx6660ZN25cXnzxxeVeM2jQoIwYMSL77bdfDjjggHTvvmqnPvXUU1v1+gULFuS8885LkvzqV79aGsQkybe+9a1cdtllGTduXB5++OEMHz48SXLVVVfly1/+8rsed8SIEc0CHAAAAAAAlrFgQfLFLyaXXto0tv76yS23JB/5SGFlweq0SolIQ0NDfvKTn+S3v/1t3njjjZRKpXTr1i0DBgzIOuusk7XXXjszZszIW2+9lRdffDGXX355fve732W99dbLqFGjcsopp6S+vr5C38q7u/feezNjxoxsttlm+dCHPrTc9kMOOSQTJkzILbfcsjSM+dKXvpQvfelLq6U+AAAAAIBOZ8aM5JBDkr/8pWlsyy2T225LPDKCLqTNYczPf/7z/OhHP8pbb72VzTffPF/60pcycuTIbL/99unTp89yr585c2YefPDB3H333bnqqqvy4x//OOeff35OP/30nHzyyav0TayMxx9/PEny4Q9/uMXtS8YnTJhQ9VrezdChQ1scf+655zJw4MA89dRT73mMD3zgA60+78svv5yZM2e+5+sGDBiQtddeu1XHfvvtt/PKK6+85+v69OmTjTbaqFXHTrJS1yRxXVbEdWmZ69Iy16VlrkvLXJeWuS4tc11a5rq0zHVpmevSMtelZa5Ly1yXlrkuLXNdWua6tKyrXpfur76agV/8YnpOmrR025ztt89L//u/WbxgQVp/VTrHdXkvXfXn5b20t+vSWt3auuMpp5ySj3/847n//vvzzDPP5Mwzz8xuu+3WYhCTlP9H7L777jnrrLMyadKk3Hvvvdlll11yyimntLn41ljSOm3gwIEtbl8y/sILL6zSeaZNm5Zrr7021157bebMmZOnnnoq1157bW6//fZVOi4AAAAAQEexxpNPZuMjjmgWxLy9zz7598UXZ/Fq6pYE7UlNqVQqtWXHxx57LNttt90qF1Cp4/Ts2TPz58/Pir6dE044IRdeeGH+8z//M2efffZy25999tkMGTIkQ4YMyTPPPNPmOsaOHZvddtttufGNN944U6ZMafNxl8yYmThxYpuPAQAAAABQdX/6U3LoocmsWU1jp52W/Pd/J93aPD8ACrWq9+jb3KasEgFKJY/TXowcOXKFgRAAAAAAQKd24YXJl7+cLFpUXq+tTf7v/5ITTii2LihYm8OYjqZ3795Jkjlz5rS4ffbs2UmywjZrAAAAAACsQKmUfPe7yQ9/2DS21lrJH/+Y7L13cXVBO1GxOWFTp07N3/72t0ydOrXZ+HPPPZcjjjgiH/zgB7PPPvtk/PjxlTplqwwaNChJ8tJLL7W4fcn4xhtvvNpqAgAAAADo8ObPT/7jP5oHMRtumPztb4IY+H8qNjPmxz/+cf7nf/4nTz75ZPr3758kefvtt7PLLrvk9ddfT6lUyhNPPJFx48blsccey5AhQyp16pUybNiwJMkjjzzS4vYl49tuu+1qqwkAAAAAoEN7883kwAPLwcsSQ4cmt92W/L8PyAMVnBkzduzYbL311tliiy2Wjl166aWZOnVqjjzyyDz99NM555xz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N+89X/fiiy+mT58+lTptp9bQ0JCGhoYkSWNjY2pra4stCAAAAADoWK66qmn58MOTbhX7fD7QChX7zRs6dGgefvjhzJw5c4Wvef311/PYY49lu+22q9RpO7XRo0dn8ODBGTx4cCZNmpTp06cXXRIAAAAA0FG8/HLyt781rR9xRHG1QBdXsTDm6KOPzvTp0/OlL30pCxYsWG77okWL8tWvfjVz5szJscceW6nTdmonnXRSJk+enMmTJ2fIkCFZd911iy4JAAAAAOgorrkmKZXKy5tummy/fbH1QBdWsTZlJ5xwQv74xz/myiuvzH333Ze99torSfL444/nxBNPzJgxYzJ58uTsueee+exnP1up03Zq9fX1qa+vT1JuAwcAAAAAsNKWbVF2xBFJTU1xtUAXV1MqLYlGV928efNy8skn56KLLkpjY2OzbbW1tTn++ONz7rnnpmfPnpU6ZZcxdOjQJMnEiRMLrgQAAAAAaPeefz7ZbLOm9QkTkm22Ka4e6OBW9R59xWbGJEnPnj3zq1/9KmeccUbGjh2bKVOmZPHixRk4cGB22223DBgwoJKnAwAAAACgJVdf3bS89dbJBz9YXC1AZcOYJfr165dDDz20GocGAAAAAOC9aFEG7Uq3ogsAAAAAAKCCnnii3JZsiSOOKK4WIEkVZsaMGzcu48aNy6uvvpr58+e3+JqamppcfPHFlT41AAAAAADLzooZPjwZMqS4WoAkFQxj3nzzzRx44IG55557UiqV3vW1whgAAAAAgCoolZZvUQYUrmJhzDe/+c38/e9/z9ChQ3PCCSdk0003Te/evSt1eAAAAAAA3sujjyaTJjWtH3ZYcbUAS1UsjLnlllsycODA3H///UIYAAAAAIAiLDsrZuedk0GDiqsFWKpbpQ60aNGi7LTTToIYAAAAAIAiLF6cXH1107oWZdBuVCyMGT58eF577bVKHQ4AAAAAgNYYPz558cXycrduySGHFFsPsFTFwpjvfve7uf/++/OnP/2pUocEAAAAAGBlLduibLfdkg02KK4WoJmKPTNm9913zxVXXJFjjjkm++yzT/bYY49stNFG6dat5bxn1113rdSpO62GhoY0NDQkSRobG1NbW1tsQQAAAABA+7RoUXLNNU3rRx5ZXC3AcioWxiTJrFmzUldXl9/97nf53e9+966vXbRoUSVP3SmNHj06Z555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Od2LLgAAAAAAYJWUSsmcOSvePm1acuedTesHHJDMnl1e7tUrqampankAwhgAAAAAoGObMyfp3XvlX/+pTzUtz5qVrLVW5WsCWIY2ZQAAAAAAAFVkZgwAANA279UO5N1oB0JX5fcGAKBLEsYAAABt09p2IMvSDoSuyu8NAECXpE1ZhV1zzTXZd999s+GGG6Zv377Zddddc8899xRdFgAAAAAAUBAzYyps9OjRGTJkSH71q1+ld+/eueSSS/KJT3wi//jHPzJs2LCiy+t4TOEHAAAAAKCDE8ZU2C233JJ111136fonP/nJbLPNNvnVr36VCy64oMDKOihT+AEAAAAA6OC0KauwZYOYJOnWrVs++MEPZvLkyQVVBAAAAAAAFKnDhjEPP/xwfvzjH+eggw7KwIEDU1NTk5qVaEk1d+7cfP/7388WW2yRnj17ZsCAATn++OPz8ssvV6XORYsW5cEHH8zmm29eleMDAAAAQJe1aFFy553JF75QdCUA76rDtik766yzctNNN7Vqn3nz5mX33XfP+PHjs+GGG2b//ffPlClTcskll2TMmDEZP358Nt1004rWed555+XFF1/MV77ylYoeFwAAAAC6pFIpeeSR5A9/SK68MnnttaIrAnhPHTaM2WmnnbLttttmhx12yA477JBNNtkk8+fPf9d9zj777IwfPz477bRT7rjjjvT+f88iOeecc3LyySfn+OOPz9ixY5e+vqGhIa+9x5t5r169MmjQoBa3PfDAAznttNPy3e9+N9tss03rvkEAAAAAoMnkyeUA5g9/SJ56quhqAFqlplQqlYouohJ69uyZ+fPnZ0XfzoIFC7L++utnxowZeeSRR/KhD32o2fZhw4ZlwoQJeeihhzJ8+PAkyW9+85t8+ctfftfzjhgxolmAs8SUKVOy4447Ztddd83VV1+9Ui3U3s3QoUOTJBMnTlyl43Q4s2cn/y80a7VZs5K11qpsPQAANHnxxWTjjdu2r7+r0dUsWJDcdlvy298mt9zStmP4vQG6ounTk2uuSX7/++S++1p+TV1dssce5ffZtvD+CqyEVb1H32GfGdNa9957b2bMmJHNNttsuSAmSQ455JAkyS3L/KX4S1/6Ukql0rt+tRTENDQ0ZN99980mm2ySyy67bJWDGAAAaFcmTUq+8pVkyy3bfoybb04WL65cTdAelUrJgw8mX/96MmBAcuCBbQ9iALqSuXOTq69OPvOZZIMNyn/vaCmI2WWX5Ne/Tl59tRzYALRjHbZNWWs9/vjjSZIPf/jDLW5fMj5hwoRVOs+CBQty0EEHZc6cOfnrX/+aNddcs1X7L0nX3um5557LwIED89RKTMH8wAc+0KpzJsnLL7+cmTNnvufrBgwYkLXXXrtVx3777bfzyiuvvOfr+vTpk4022qhVx343Tz/9dEq9ei1d72rXZWV+VhLXZUVcl5a5Li1zXVrmurTMdWmZ69KydnVdSqXM/tOfsvjnP0/vu+9OzapOsD/qqOSnP01+8INk//2TmpqOeV3i52VFuvR1eeml8ie4L788efLJVp9/hX75y+Q730lqa1f4knZ9Xd5Fl/55eReuS8tcl5Z1+OvS0JBeDzyQtceMSZ877kjt7Nktv3irrZL/+I/y3yU22aRpfEWvXwlPP/10evfv3z6vi5+X5bguLXNdWlbN69JaXSaMefHFF5MkAwcObHH7kvEXXnhhlc7zla98JePGjcuFF16YyZMnZ/LkyUmSNdZYo8UZOQAA0K41NibXXpucc07Weuihyh77scfKMwW2264cymy5ZWJWOR3V7NnJ9deXA5i77irPinmnnj3T+KlPpe7GG9t2ju99L7njjuSyy5LBg1epXIB2oVRKHnssa//mN1n/hhtSN21aiy9r7NcvM/fdNz2OPz69d9ml5b8v9OpVbjf2Dm+//XZeffXVdy+jlR+mBmiLLvPMmBNOOCEXXnhh/vM//zNnn332ctufffbZDBkyJEOGDMkzzzzT5jo22WSTFgOdjTfeOFOmTGnzcT0zpg30+wQAaLsZM5KLLkrOPTf597+X3/6BDyRf/Wq5/VKlLAll/t9MGWj3Fi9Oxo4tBzDXXrviT2V//OPJsccmhxySdO/e9n/jLNG7dzJ6dHL88X5XgI5pypTkiivKswhXNIOwT5/koIPKs2B22+1dZwUCrA6reo++y8yMWV1WJXABAIDCvfBCOYC56KKkpen8u++enHxy8qlPlfu5tzWMue++5Gc/S264oWls2ZkyZ5xR7hPvRjPt0dNPlwOY3/2u5bAySTbbLDnmmPJNxE03bRpfhTY6S82alXz+88lNNyUXXpj077/qxwSotunTkz/+MfnDH5J77mn5Nd27J3vvnXz2s8mnP12e7QLQSXSZMKb3//vk0Zw5c1rcPvv//YW4T58+q60mAABoNx58MPnFL8qf7l+0qPm27t2TI49MvvnNZNnWuytoB7JSevUqt3R69NHkv/4rWbZt02OPJQccUD7XD34glKF9ePPN5KqryiHMAw+0/Jq+fZPDDivPgvnYx1rVRmel3HxzeUbaW2+V12+5Jdlmm+SCC8q/MwDtzdy5yZgx5Rkwt99ebn/ako99rBxeH3post56q7dGgNWky4QxgwYNSpK89NJLLW5fMr7xxhuvtpoAAKBQixaVb+b+4hctf0K1vj754hfLs19aehBnTc2qt4X90IfKs2NaCmUefbQplDnjjPInZIUyrE4LFpRvHl5+efl3paWbiLW1yV57lQOYT386ea/nDqzK782RRya77lpuT3bHHeWxadPKM8qOO648q63KD54FeE+LFpVbOP7hD8l11yVvv93y67bcshzAHHVU8xmEAJ1Ulwljhg0bliR55JFHWty+ZHzbbbddbTVRZRMnJh/5SNFVAAC0P7Nnlx8A/stfJs8+u/z2wYPLs2A+97lVf7bFylo2lDnzzHL7pSUefbT8HBmhDKtDqZQ8/HA5gLnyyuSNN1p+3bBh5QDmyCOTDTZYffVttFHypz8lv/518u1vlz91niSXXprcfXf5d3vEiNVXD0BSfu98/PFyAHPFFckrr7T8ug02KL9vfvazyYc/7M9zoEupKa3oifcdTM+ePTN//vys6NtZsGBB1l9//cyYMSOPPvpotttuu2bbhw0blgkTJuShhx7K8OHDV0PFrbOqDwfqsEqlZAWt5Zbz+OPJHns0vf7970/+8Y/V+w8jAID27NVXk/POS37zm3LLpXfaaafy82AOOKD4h+S2FMosIZShGl56qXwT8fLLkyeeaPk1/fuXbyAec0w5jCnaM88kRx9d/nfPEjU1ybe+lZx9dtKzZ3G1AV3DCy+Uw5c//KH8odiW9O6dHHRQeRbMbruV258CdECreo++WyWLac969OiRr33ta0mSr371q0ufEZMk55xzTiZMmJARI0a0yyCmS1syhX9lvj72sXIP5yX/IP/3v8ufoFzySTEAgK5qwoRyC6ONN05++MPmQUy3bskhhyT33Vf+Ovjg4oOYpBy43HhjeYbC/vs337Zkpsz225dbR3WOz5dRhNmzy88x2HPPZNCg5LTTlg9i1lgjOfzw5LbbyoHNL37RPoKYJNlii+Te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0zJtS05ONiQZCxYsKMjyAUu40zeGYRhHjx51nuft7W3MmDHDguoB67jTO76+vkZwcLDRuHFj4/PPPzc++ugjo1ixYkaHDh2seRFAAXOnb8LDw40XXngh07a2bdsakozNmzcXZPlAgXD3d7MMZcqUMcaMGXPd+8TExBje3t7Gzz//nJ/lA5Ywq2/Wrl1rvPbaa8ZXX31lfPrpp0bHjh0NScaKFSvMfDlAgTDz5837779v2O125/V79eplpKenm/VSgAKV194xjOv/Hpbb3+duZUwe6gHsdrv69eunYcOGqWrVqs7tR48eVbt27bRjxw4NGzZMCxcutLBKwLO42zcRERHatm2bEhIStHbtWg0ePFhFihRRly5dCvolAJZwp3fS09NlGIZWrFjhHKbs7+/vnB6zYsWKBf46gILkTt/0799fU6ZMUYMGDdSoUSPFxsbqyy+/lMRQftycCuLfNN9//72ef/55vfjii6pRo0Z+lA1Yyqy+iY6OVnR0tPN5+/bt1aRJE40fP14dOnTIt/oBK5jVN19//bWGDRumF154Qffee6/279+vF154QSNHjtSbb76Z3y8DKHB57R1+D8sfNsMwDKuLQM62bNmihg0bys/PT+fOnXNOd1GsWDGNGDFCo0aNch577NgxRUZGas2aNWrTpo1VJQOWy6lvsvPUU09p06ZN2rdvXwFWCHima/3MKV++vLZs2eI89uTJkypatKhWrlypBx980KqSAcvl1Dfnz59Xz549tXLlSkmOqWKefPJJvfzyyzp48KDKli1rYdVAwcrN72bXW/D10KFDql+/vpo2barFixfLZrOZXTZgqfzomyu99dZbGjNmDOuW4aaWl76pVauW6tSpo9mzZzu3LVq0SL1799bhw4cVGRlpev2AVa7XO7n9PcyVn0u3Kj6W5+Fq1qwpSbp48aJOnTrl3F6pUiXt3bs307EZzytXrlxwBQIeKKe+yU6tWrX0+++/F0RZgMfLqXeqVq2qnD67wSf8cavLqW+CgoK0YsUKHTlyRL/88osOHjyokJAQFStWjCAGtxxXfjfLTnx8vNq1a6eyZcvqgw8+IIjBLSGvfQPcivLSN/v27XOef+X10tLSdOjQofwqEfBI1+odfg/LX7yD4uEy3iS22+0qXLiwc3t0dLTWrFmj5ORk57alS5eqYsWKuuOOOwq8TsCT5NQ32fnu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T54sm82m4cOHO7clJiZqwoQJqlmzpkJDQxUcHKzy5cvroYce0hdffJGr1wUAAAB4GsIYAAAAALkWGRmpp59+WgkJCXrzzTdNv9/333+vRo0a6cSJE4qOjlaRIkW0ZMkStWjRQmfPntW9996rDz74QHXr1lWDBg20e/dudevWLcc37U+fPq369etr7dq1at68uZo0aaKdO3fqscce09ixY7Mcv2/fPtWqVUuvv/66kpOTFR0drTp16uj777/XAw88kOMIoeTkZDVr1kzz5s1TrVq19OCDD+ZqWredO3eqdu3amjlzpgICAtS5c2dVrFhRy5cvV8OGDbVkyRLnsbVq1dJjjz2m4sWLS5K6dOmixx57TI899phKlChx3Xtt2bJFNWvW1HvvvSe73a527dqpevXq+uKLL9S0aVMtXrw42/Pi4+PVoEEDrVq1Sk2aNFGjRo20d+9ePfHEE5o9e7bzuNq1a6tKlSqKi4vTgQMHsr3WggULJEm9evWSJKWlpen+++/XCy+8oCNHjqh58+Zq166dSpQooTVr1mjRokXXfV0AAACARzIAAAAA4DokGd7e3oZhGMaxY8eMwMBAIygoyPj777+dx0yYMMGQZLz00kuZzm3WrJkhyTh48GCW6x48eNCQZDRr1izT9pdeesmQZEgypk2b5tx+6dIl4/777zckGdWqVTPuu+8+IzEx0bl/9uzZhiSjadOmma63YcMG5/VatmyZ6Zy4uDgjODjY8PLyMn788Ufn9tTUVKNGjRqGJOONN94w0tLSnPv2799vlCtXzvD29jZ27tyZ5fVIMho0aGCcOXMm5y/qVdLT0533GzlypJGenu7ct3TpUsPLy8sIDg42jhw5kum8a319c3L27FkjMjLS8Pb2NubPn59p37Zt24zw8HAjODg409/vlV/DRx55xLhw4YJz3/Llyw1JRunSpTNd69VXXzUkGa+88kqWGn777TdDklGlShXntvXr1xuSjLp16xrJyclZav7hhx9y/RoBAAAAT8LIGAAAAAAuKV68uAYMGKDz58/rX//6l6n3aty4sZ5++mnnc7vdriFDhkiS9u7dq2nTpikoKMi5v0+fPoqIiNCWLVuUkpKS5XpeXl6aPHlypnPq1q2rQYMGKT09XVOnTnVu//TTT7Vz50516dJFzz33nLy8Lv/zqUKFCnr77beVlpamWbNmZVv7u+++q7CwsFy/1o0bN2rnzp0qXbq0xo0bJ5vN5tzXpUsXdezYUYmJiVmmA3PHnDlzdPToUQ0bNkw9e/bMtK9OnTr6v//7PyUmJmr+/PlZzi1UqJCmTJkiPz8/57aOHTuqevXq+vPPPzNNR5dx7YULF2a5TsaomCvvf+LECUlSo0aN5O/vn+W+d999t4uvFAAAAPAMhDEAAAAAXDZq1CgFBQVp2rRpOn78uGn3adWqVZZtGQvVly1bVpUqVcq0z9vbW2XKlFFKSopOnjyZ5dxatWqpcuXKWbZ3795dkvTNN984t3355ZeSpM6dO2dbW5MmTSRJcXFxWfZFRkaqTp062Z6Xk4x7d+vWTXa7Pcv+3r17Z6nRXXl5bXfffbeKFCmSZXvG38XRo0ed28qVK6eGDRtq79692r59e6bjswtjatWqJS8vL82dO1ezZs3K9bpEAAAAgKcjjAEAAADgsqJFi2rQoEFKSkrS66+/btp9SpUqlWVbcHBwjvuu3H/x4sUs+8qUKZPtOWXLlpUkHTlyxLktY4RHz549ZbPZsjyKFi0qSdmGPqVLl87hFeUs494ZteRU419//eXyta+W8doaNWqU7WurW7eupOxf22233ZbtNUNCQiRl/bpnhC0Z4Ysk/fDDD9q3b58aNmyocuXKObdXqlRJb7zxhpKSktSvXz8VK1ZMNWvW1PDhw/Xzzz+7/4IBAAAAi/lYXQAAAACAG9Nzzz2nqVOnavr06Ro5cqRb10hPT7/m/iunBnNlX37IqK1169YqXrx4jsdFRERk2Xb1FFv54cppy/Iq47V17do105RtV6tSpUqWba5+3R9++GENGzZMsbGxevPNN+Xl5ZXtqJgMI0aMULdu3bRixQqtW7dO33zzjd555x3FxMTonXfe0dChQ126PwAAAOAJCGMAAAAAuCUiIkJDhgzRhAkTNGHCBJUsWTLb43x9fSVJiYmJWfYdPnzY1Bqv9scff1xz+5WvIWMEyJNPPqkuXbqYXlvGvXOqMWM0S04jglxx22236ddff9Xzzz9v+josRYoUUXR0tFavXq2NGzeqWbNmio2Nld1u18MPP5ztObfffruGDBmiIUOGKDU1VbGxserbt69GjhypRx99VOHh4abWDAAAAOQ3pikDAAAA4LYRI0YoJCREM2fOzHH6rMjISEnSvn37suxbt26dqfVd7aefftL+/fuzbI+NjZUkNW7c2LmtZcuWkqTly5cXSG0Z67QsWbJEaWlpWfbPnz8/03F5UdCvLWMEzMKFC7V+/XodO3ZM0dHR2a49czUfHx/16tVLdevW1aVLl7L9+wMAAAA8HWEMAAAAALcVKVJEzzzzjC5evKj3338/22OaNWsmSXr77beVlJTk3L5+/XrFxMQURJlO6enpGjJkSKY6fvzxR02ZMkU2m00DBgxwbu/SpYuqVaumBQsW6NVXX82yFophGNq8ebM2b96cL7U1b95cNWrU0KFDh/TPf/5ThmE49y1fvlzLli1TcHCwHn/88Tzfq3///ipWrJjeeOMNzZw5M8t0campqfriiy/0yy+/5PlektShQweFhITok08+0Zw5cyRlP0XZhg0b9NVXX2Wp5+DBg9qzZ49sNluOa9YAAAAAnowwBgAAAECejBgxQoUKFVJycnK2+7t3767KlSvru+++U9WqVdW1a1fVr19fLVu2zBR+FIT27dtr9+7dKl++vB5++GG1bt1aDRo0UEJCgsaMGaM6deo4j/Xx8dGKFStUrlw5/fOf/1Tp0qXVsmVL9ezZU9HR0SpRooQaN26sbdu25UttNptNCxYsUJEiRTR+/HhFRUWpR48eaty4sTp37iwvLy+9//77zpFGeREWFqaVK1cqNDRU/fv3V9myZdW2bVv17NlTLVq0UNGiRdW6dWv99ttv+fDKpICAAHXq1Enx8fGKjY1VSEiIOnTokOW4//znP2rZsqVKlCihNm3aqFevXoqOjlbVqlUVHx+vwYMH5zgdHgAAAODJCGMAAAAA5El4eLiGDRuW4/6AgAB9/fXX6t69uxISErRmzRqlpaVp8eLFGjRoUMEVKsdInq1bt+r+++/Xhg0btHHjRlWrVk1z587Vq6++muX4ihUraseOHRo3bpxuu+02bd26VcuWLdO+fft011136b333lOvXr3yrb4aNWpo+/bteuqpp5SYmKilS5fq119/VceOHbV582Z169Yt3+5Vv3597dy5UyNHjlShQoW0adMmrVixQn/88YeaNWumefPm6f7778+3+105EqZTp04KCAjIckz79u314osvqlKlSvrPf/6jJUuWaNeuXWrcuLE++eQTTZo0Kd/qAQAAAAqSzbhy7DsAAAAAAAAAAADyFSNjAAAAAAAAAAAATEQYAwAAAAAAAAAAYCLCGAAAAAAAAAAAABMRxgAAAAAAAAAAAJiIMAYAAAAAAAAAAMBEhDEAAAAAAAAAAAAmIowBAAAAAAAAAAAwEWEMAAAAAAAAAACAiQhjAAAAAAAAAAAATEQYAwAAAAAAAAAAYCLCGAAAAAAAAAAAABMRxgAAAAAAAAAAAJiIMAYAAAAAAAAAAMBEhDEAAAAAAAAAAAAmIowBAAAAAAAAAAAwEWEMAAAAAAAAAACAiQhjAAAAAAAAAAAATEQYAwAAAAAAAAAAYCLCGAAAAAAAAAAAABMRxgAAAAAAAAAAAJiIMAYAAAAAAAAAAMBEhDEAAAAAAAAAAAAmIowBAAAAAAAAAAAwEWEMAAAAAAAAAACAiQhjAAAAAAAAAAAATEQYAwAAAAAAAAAAYCLCGAAAAAAAAAAAABMRxgAAAAAAAAAAAJiIMAYAAAAAAAAAAMBEhDEAAAAAAAAAAAAmIowBAAAAAAAAAAAwEWEMAAAAAAAAAACAiQhjAAAAAAAAAAAATEQYAwAAAAAAAAAAYCLCGAAAAAAAAAAAABMRxgAAAAAAAAAAAJiIMAYAAAAAAAAAAMBEhDEAAAAAAAAAAAAmIowBAAAAAAAAAAAwEWEMAAAAcIuz2WzOx5YtW3I87uOPP3YeV7Zs2Uz7Dh06JJvNpubNm+e5ntxc66+//tKYMWNUr149RUREyG63q3DhwqpXr56GDx+uuLg4t+49duxY2Ww2zZs3L1/rvakYhnT+vHsPw7C09Izv37CwMMXHx2d7zOuvvy6bzaaxY8de81pt27aVzWZTSEiIkpKSMu378ssvZbPZVKFChVzVFRUVJZvNpk8//VSSNG/ePNlsNvXp0yfTcS1atJDNZtOECRNyvNbAgQNls9n06KOP5ureAAAAKBiEMQAAAIBJjh8/rtdee02tWrVSgwYN1KpVK40fP17Hjx+3urQcLViwIMd98+fPL8BKcjZ16lSVL19e48eP14EDB1SnTh1169ZNDRs21LFjx/TOO+/onnvu0aBBg6wu9eaUlCQFB7v3uCq0sMrZs2c1ceJEt88/fvy4vvzyS0lSYmKiVqxYkWl/ixYtFBkZqQMHDlwz4JSk7du3a/fu3YqIiFDr1q2veeyMGTPk7++vV155Rb/99luW/Zs3b9b06dMVERGRp9cHAACA/EcYAwAAAOSz5ORk9evXT7fffrtefPFFrVu3Tlu3btW6des0ZswY3X777erfv78uXLhgdalO3t7eqlGjhhYvXqzU1NQs+0+dOqW1a9eqdu3a2Z5fqlQp7dmzRx9++GGea7nWtaZOnapBgwbJbrdrzpw5+vvvv7V27VotWLBAq1ev1p9//qm4uDg98MAD+vXXX12+9+DBg7Vnzx516tQpz68Dnslms8nf31+TJk3SmTNn3LrGokWLlJaWpsjISEnSRx99lGm/t7e3evToIen6IWbG/kceeUR2u/2ax1aoUEEvvfSSLly4oP79+2fad+nSJfXr10+GYeidd95RRESES68JAAAA5iKMAQAAAPJRcnKy2rRpo1mzZiklJSXbY1JSUjRz5ky1bt1aycnJBVxhznr27KmTJ0/qiy++yLJv8eLFSklJUa9evbI91263q0qVKipdunSe68jpWn/88YeGDx8uLy8vffbZZ+rbt6+8vb2znF+3bl2tWrVK//rXv1y+d0REhKpUqaLQ0FC364dn8/LyUr9+/XTu3Dm99dZbbl0jI3yZPn26goODtW7dOh07dizTMb1795bkmN4vp/8XpKWlKTY2VpJy7K2rPfvss7rzzju1fv36TNPpjR8/Xrt371arVq1yfS0AAAAUHMIYAAAAIB8NHTpUmzZtytWxmzZt0rBhw8wtyAU9evSQzWbL9pP88+fPV3BwsDp06JDtuTmtm5Kx9sXYsWP1559/qkePHipatKgCAgJUp04d5xoZubnW5MmTdfHiRT3yyCNq2rTpdV/P3Xffnen5xo0bnetwHDt2TE8++aRuu+02+fj4KCYmRtK114w5fPiwevfuraJFiyowMFB33323x0zdBtc8//zzCggI0OTJk3Xq1CmXzt2zZ4+2b9+ukiVLqn379urcubPS0tK0aNGiTMfVrFlT1atXzzHglKT169fr6NGjqlixou65555c3d/Hx0ezZ8+Wl5eXRowYob///lt79uzRhAkTFBgYqOnTp7v0egAAAFAwCGMAAACAfHLs2DGXFn6XpLlz53rMGjK33367mjZtqlWrVikxMdG5/ffff9eWLVvUqVMnBQYGunXtQ4cOqW7duoqLi1OLFi1011136ccff1THjh2da29cz+effy5J6t69u1s1ZDhx4oTq1q2rzz77TA0aNFCbNm2u+7oOHjyoevXqaf78+SpUqJA6dOigoKAgPfroo3r77bfzVA8KXmRk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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, ax = plt.subplots(figsize=(11, 5), dpi=150)\n", + "ax.plot(minigrid_times.keys(), minigrid_times.values(), label=\"MiniGrid\", color=\"black\", marker=\"o\")\n", + "ax.plot(navix_times.keys(), navix_times.values(), label=\"NAVIX\", color=\"red\", marker=\"s\")\n", + "ax.set_xlabel(\"Number of envs\")\n", + "ax.set_ylabel(\"Time (s)\")\n", + "ax.set_title(\"Benchmark\")\n", + "ax.set_yscale(\"log\")\n", + "ax.set_xscale(\"log\", base=2)\n", + "ax.grid(axis=\"y\", linestyle=(0, (6, 8)), alpha=0.6)\n", + "fig.legend(loc=\"lower center\", ncol=2, bbox_to_anchor=(0.53, -0.07), shadow=False, frameon=False)\n", + "fig.tight_layout()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Conclusions\n", + "\n", + "NAVIX can scale up to $2^21 = 2097152$ environments (over $2M$ environments in parallel!) and still do that in less than the time required by MiniGrid to run a single environment." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.12" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/docs/benchmarks/timesteps.ipynb b/docs/benchmarks/timesteps.ipynb new file mode 100644 index 0000000..1055331 --- /dev/null +++ b/docs/benchmarks/timesteps.ipynb @@ -0,0 +1,225 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Scaling with the number of timesteps" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "*How faster is NAVIX than MiniGrid?* \n", + "\n", + "In this notebook, we will answer this question by comparing the two libraries in terms of their performance.\n", + "\n", + "We will look at:\n", + "- The raw time it takes to run 100_000 episodes of a simple environment in both libraries.\n", + "- How the performance scales with the number of parallel environments" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's start with MiniGrid." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "os.environ['PYGAME_HIDE_SUPPORT_PROMPT'] = \"hide\"\n", + "# See https://stackoverflow.com/questions/51464455/how-to-disable-welcome-message-when-importing-pygame" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import gymnasium as gym\n", + "import timeit\n", + "import matplotlib.pyplot as plt\n", + "\n", + "num_steps_set = (\n", + " 10,\n", + " 100,\n", + " 1_000,\n", + " 10_000,\n", + " 100_000,\n", + " 1_000_000,\n", + ") # we won't for further because MiniGrid becomes too slow\n", + "\n", + "def benchmark_minigrid(num_steps):\n", + " env = gym.make(\"MiniGrid-Empty-8x8-v0\")\n", + " env.reset()\n", + "\n", + " for _ in range(num_steps):\n", + " action = env.action_space.sample()\n", + " timestep = env.step(action)\n", + " return timestep\n", + "\n", + "minigrid_times = {}\n", + "for i in num_steps_set:\n", + " minigrid_times[i] = timeit.timeit(lambda: benchmark_minigrid(i), number=1)" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "metadata": { + "tags": [ + "hide_input" + ] + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAABmMAAAMfCAYAAAAqhqPxAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAABcSAAAXEgFnn9JSAAC6jElEQVR4nOzdeXRUdZ7//1elqJgAgRKIIERWA2pkE1wQ2TVsIqK4oCBLICypKp12uv062jOmcY49Mz12qKqALElYFFFRQUBkURK3BhRENAQQJKyyakEIgWz1+8MfNdBVbEklt5I8H+d4ztR9f+69r9zR01DvfN7X5PV6vQIAAAAAAAAAAECFCDM6AAAAAAAAAAAAQHVGMwYAAAAAAAAAAKAC0YwBAAAAAAAAAACoQDRjAAAAAAAAAAAAKhDNGAAAAAAAAAAAgApEMwYAAAAAAAAAAKAC0YwBAAAAAAAAAACoQDRjAAAAAAAAAAAAKhDNGAAAAAAAAAAAgApEMwYAAAAAAAAAAKAC0YwBAAAAAAAAAACoQDRjAAAAAAAAAAAAKhDNGAAAAAAAAAAAgApEMwYAAAAAAAAAAKAC0YwBAAAAUCOZTCaZTCZlZmYG9bq5ubm+a+fm5gb12mX1yiuvyGQyqXfv3oacDwAAANR0NGMAAAAAhLzzzYDz/yxatOiK5wwePPiic0KlMXKh/fv3a+rUqerbt69iYmIUGRmpyMhINWvWTPfff7/+/Oc/67vvvjM6JgAAAIByqmV0AAAAAAC4VhkZGXryyScvWT906JBWrVp12Wu0a9dOklS7du2gZrNYLL5rWyyWgGsKCwv1wgsvKDU1VUVFRb7jtWvXVnh4uH755RcdOnRIn376qV599VX16NFDCxYsUIsWLcqUqVGjRmrXrp2aN29epvMBAAAAlA/NGAAAAABVRqNGjVRQUKC1a9fqwIEDiomJCbhu/vz5KikpUcuWLS+5I2b79u0VkrFZs2aXvfbZs2fVv39/ff7555Kk+Ph42Ww29ezZU/Xr15ckFRcXa8uWLfrkk080c+ZMffHFF8rJySlzM8Zms8lms5XpXAAAAADlx5gyAAAAAFVGnTp1NHz4cJWWlmru3LmXXJeRkSFJGjNmTOUEuwY2m83XiHG5XFq1apWGDBnia8RIUq1atdS1a1e9/PLL2rNnj/76178qMjLSqMgAAAAAyolmDAAAAIAqZezYsZJ0yWbMl19+qZ07d6p169bq2bPnJa9z/l0ymZmZFx3Pzc296D0zR44c0bPPPqtWrVopIiJCjRs31pNPPnnJ3S//fP6FfvjhB6Wnp0uSJk+efFW7VWrVqqUXXnhBvXr1uuzPcPToUf3hD39Q27ZtVbt2bZlMJt+68+/c6d279yXvs3LlSj3wwAOyWq2qW7euOnbsqP/+7/++aIwaAAAAgLKhGQMAAACgSunZs6fatGmj3bt3+3aYXOjCXTEXNiTKIjs7Wx06dJDT6dTRo0clSUePHtU777yju+++W99///01XW/69Onyer2qVauWXnrppXJlu9CuXbvUoUMH/f3vf9f+/ftVq9a1TaR+5ZVXNGjQIK1du1YnT56UxWLRtm3b9MILL+j+++9XYWFh0LICAAAANRHNGAAAAABVislk8o0fO7/L5Lz8/Hy9++67CgsLC8qIslGjRik2NlbffPON8vPzdfr0aa1Zs0Y33nijTp06Jbvdfk3X+/TTTyVJd9xxh5o1a1bufOf9y7/8i6xWqz799FPl5+fr1KlT2rFjx1Wd+9FHHyk5OVmS9Nhjj2nfvn367bffdOrUKaWmpmr9+vWaMWNG0LICAAAANRHNGAAAAABVzujRoxUWFqbFixfr9OnTvuPvvvuuTp8+rX79+ummm24q930aN26sNWvWqGvXrpJ+Hxl2//33a+bMmZKkL774QgcOHLiqaxUVFemnn36SJHXq1Knc2S4UFhamtWvXqm/fvgoL+/2veW3btr2qc1988UVJUq9evbRo0SLfc4uMjNSUKVPkdDrl8XiCmhcAAACoaWjGAAAAAKhybrrpJt1///2+nTDnnR9RNm7cuKDc5/nnn1dkZKTf8YEDByo8PFzS7++BuRq//vqr7/9u0KDBJddNmjRJTZo08fvnkUceueQ5o0aNUkxMzFXluNDWrVu1bds2SdLLL7/sa+RcaMKECUHdxQMAAADURDRjAAAAAFRJY8eOlfR/o8p27dqlL774Qtdff70efvjhoNzj7rvvDni8Vq1aio6OlnRxkyUYPB6Pjhw54vfP5e7TvXv3Mt3r22+/lfT7z9OjR4+Aa8LCwtS7d+8yXR8AAADA72jGAAAAAKiShg0bpuuvv15fffWVfvrpJ9+umBEjRigiIiIo94iKirpkrVatWpJ+Hz92NS7cDXO5xsqiRYvk9Xp9/4wePfqK177hhhuuKsM/O3r0qCSpUaNGuu666y65riy7bgAAAAD8H5oxAAAAAKqk6667TiNGjJAkzZkzR/Pnz5f0fztmQo3FYlFsbKwkacuWLUG9ttlsDur1AAAAAAQXzRgAAAAAVdb5xktKSooOHDig22+/XV27djU41aX169dPkrR582YdPHjQ4DT/t6Pm+PHjKiwsvOS6UMgKAAAAVGU0YwAAAABUWV27dlX79u19jYRx48YZnOjypkyZIpPJpOLiYv3nf/6n0XF8javi4mJ98cUXAdeUlpYqMzOzElMBAAAA1Q/NGAAAAABV2n/913/p+eef1/PPP6+RI0caHeey2rdv72sYzZgxQ26329A8HTp00K233ipJ+s///E+Vlpb6rUlPT9eBAwcqOxoAAABQrdCMAQAAAFClDRw4UH/729/0t7/9TdHR0UbHuSK3262ePXtKkux2u/r3769ly5bp5MmTvjWlpaXauXOn/vu//1srVqyo0Dznd+isW7dOTz31lK/xcvbsWb3xxhuy2WyyWq0VmgEAAACo7mjGAAAAAEAlioiI0Jo1a/Tss8/KYrFo9erVeuihh2S1WlW3bl1FR0crMjJS7dq10wsvvKDjx4+rR48e+tvf/lYheYYNG6aXXnpJkvTOO+/opptuUoMGDRQVFaXJkyfrrrvu0uTJkyvk3gAAAEBNQTMGAAAAACpZeHi4UlJStGvXLiUnJ6tPnz5q2rSpiouLdfr0aTVs2FB9+vTRiy++qO+//16ff/657/0uFeHVV1/V8uXL1bdvX9WrV0/nzp3Trbfeqr/+9a/69NNPFR4eXmH3BgAAAGoCk9fr9RodAgAAAAAAAAAAoLpiZwwAAAAAAAAAAEAFohkDAAAAAAAAAABQgWjGAAAAAAAAAAAAVCCaMQAAAAAAAAAAABWIZgwAAAAAAAAAAEAFohkDAAAAAAAAAABQgWjGAAAAAAAAAAAAVCCaMQAAAAAAAAAAABWIZgwAAAAAAAAAAEAFohkDAAAAAAAAAABQgWoZHQBXp0mTJsrPz1fz5s2NjgIAAAAAAAAAQI2yb98+1alTR4cPHy7T+TRjQpjH45HH45EknT59WkVFRcYGAgAAAAAAAACgBioqKlJ+fn6Zz6cZE8JSUlKUnJzs+xwdHa3s7GwDEwEAAAAAAAAAUPPExcWV63yT1+v1BikLguzCnTHx8fEym83KyckxNhQAAAAAAAAAADXM+WZMWTdMsDMmhFmtVlmtVkmSxWIxNgwAAAAAAAAAACiTMKMDAAAAAAAAAAAAVGc0YwAAAAAAAAAAACoQzRgAAAAAAAAAAIAKRDMGAAAAAAAAAACgAtGMAQAAAAAAAAAAqEA0YwAAAAAAAAAAACoQzRgAAAAAAAAAAIAKRDMGAAAAAAAAAACgAtGMAQAAAAAAAAAAqEA0YwAAAAAAAAAAACoQzRgAAAAAAAAAAIAKRDMGAAAAAAAAAACgAtGMAQAAAAAAAAAAqEA0YwAAAAAAAAAAACoQzRgAAAAAAAAAAIAKRDMGAAAAAAAAAACgAtUyOgAAAAAAAAAAADDekSNHNGfOHGVlZSkvL09RUVHq3bu3EhIS1LhxY6PjVWk0Y0KYx+ORx+ORJBUVFclsNhsbCAAAAAAAAABQ7RQUFOjZZ5/V3LlzVVRUdFFtzZo1euWVVzR27FhNmzZNERERBqWs2hhTFsJSUlLUqlUrtWrVSj/99JNOnDhhdCQAAAAAAAAAQDVSUFCggQMHavbs2X6NmPOKioo0a9YsDRgwQAUFBZWcsHqgGRPCnnvuOe3Zs0d79uxRbGysGjZsaHQkAAAAAAAAAEA18uyzzyorK+uq1mZlZem5556r2EDVlMnr9XqNDoEri4uLkyRlZ2cbnAQAAAAAAAAAUB0cPnxYzZs3v+SOmEAsFov2799f494hU97v6NkZAwAAAAAAAABADZSWlnZNjRjp95FlaWlpFZSo+qIZAwAAAAAAAABADXS148n+WWZmZnCD1AA0YwAAAAAAAAAAqIHy8vIq9byajGYMAAAAAAAAAAA1zJkzZ3Ty5MkynRsVFRXkNNUfzRgAAAAAAAAAAGqI3Nxc/elPf1JMTIxycnLKdI3evXsHN1QNUMvoAAAAAAAAAAAAoOJ4vV6tW7dOLpdLH330kUpLS8t8LYvFooSEhCCmqxloxgAAAAAAAAAAUA3l5+frzTfflMvlUnZ2tl+9Tp06atGihbZt23bV1xw7dqwaN24czJg1AmPKAAAAAAAAAACoRvbs2aN//dd/VUxMjCZNmuTXiGnTpo1SUlJ08OBBffvtt+rVq9dVXbdXr16aNm1aRUSu9mjGAAAAAAAAAABQxXm9Xn366acaOnSo2rRpo//93/+Vx+O5aE3//v21fPly7dy5U88++6zq16+vyMhIrVy5UomJibJYLAGvbbFYlJiYqE8++UQRERGV8NNUPyav1+s1OgSuLC4uTpICbiUDAAAAAAAAANRM+fn5WrBggVwuV8BxY3Xr1tWYMWNks9nUrl27y17ryJEjSktLU2ZmpvLy8hQVFaXevXsrISGhxo8mK+939DRjqgiaMQAAAAAAAACA837++WelpqYqLS1NJ0+e9KvHxsbKZrNpzJgxqlevngEJq5fyfkdfK5hhAAAAAAAAAABAxTg/iszpdGr58uUKtNdiwIABcjgc6t+/v8LCeFNJqKAZAwAAAAAAAABACDt9+rTmz58vt9utnJwcv3pUVJRvFFnbtm0NSIgroRkDAAAAAAAAAEAI2r17t1JTU5Wenh5wFFnbtm1lt9v1zDPPMIosxNGMAQAAAAAAAAAgRHi9Xq1Zs0Yul0srVqwIOIps0KBBstvtio+PZxRZFUEzBgAAAAAAAAAAg+Xl5flGkW3fvt2vHhUVpXHjxikpKUmxsbEGJER50IwBAAAAAAAAAMAgu3btktvtVkZGhk6dOuVXb9eunW8UWVRUlAEJEQw0YwAAAAAAAAAAqESlpaVas2aNnE6nVq5c6TeKzGQyadCgQXI4HLr//vsZRVYN0IwBAAAAAAAAAKAS5OXlad68eXK5XNq5c6dfvV69er5RZDfffLMBCVFRaMYAAAAAAAAAAFCBfvrpJ98osry8PL/6Lbfc4htFVrduXQMSoqLRjAEAAAAAAAAAIMhKS0u1atUquVwurVy50q9uMpn04IMPym636/7775fJZDIgJSoLzRgAAAAAAAAAAILk1KlTmjt3rtxut3766Se/ev369ZWQkKApU6aoTZs2BiSEEXjrT5C9++67Gjx4sG688UbVr19fPXv21Jdffml0LAAAAAAAAABABdqxY4fsdruaNWumZ5991q8Rc+utt2r69Ok6cOCA/vd//5dGTA3DzpggS0lJUWxsrFJTU1W3bl1lZGSoX79+2rhxozp27Gh0PAAAAAAAAABAkJSWluqTTz6Ry+XSJ5984lc3mUwaMmSIHA6H+vbtyyiyGoxmTJAtW7ZMDRs29H2+//771b59e6WmpmrWrFkGJgMAAAAAAAAABMPJkyd9o8h27drlV7darb5RZK1btzYgIUINzZggu7ARI0lhYWG6/fbbtWfPHoMSAQAAAAAAAACCYfv27XK73Zo3b55Onz7tV4+Li5PdbtfIkSNVp04dAxIiVNWod8Zs2rRJf/3rX/XII48oJiZGJpPpqraFFRQU6N///d/Vtm1bRUREqGnTpho3bpwOHjx4xXNLSkr0zTff6Oabbw7GjwAAAAAAAAAAqESlpaVavny5+vfvr1tvvVWpqakXNWLCwsL08MMP69NPP9UPP/ygiRMn0oiBnxq1M2bq1KlaunTpNZ1z9uxZ9e3bV+vXr9eNN96ooUOHKjc3VxkZGVq+fLnWr19/2W1mbrdb+/bt05QpU8obHwAAAAAAAABQSU6ePKmMjAy53W7t3r3br261WjVhwgRNmTJFLVu2rPyAqFJqVDOmW7du6tChg+68807deeedatmypc6dO3fZc1599VWtX79e3bp10+rVq1W3bl1J0uuvv67nn39e48aNU2ZmZsBzN2zYoP/3//6fXn75ZbVv3z7YPw4AAAAAAAAAIMhycnJ8o8jy8/P96rfffrvsdruefvppdsDgqpm8Xq/X6BBGiYiI0Llz53SpR1BYWKgbbrhBJ0+e1ObNm9W5c+eL6h07dtTWrVv17bffqkuXLhfVcnNzdc8996hnz5565513rmoc2uXExcVJkrKzs8t1HQAAAAAAAADAxUpKSvTxxx/L5XJpzZo1fvWwsDANHTpUDodDvXr1Kvf3vah6yvsdfY3aGXOtvvrqK508eVJt2rTxa8RI0vDhw7V161YtW7bsomaMx+PR4MGD1bJlS82bN4//MAEAAAAAAAAgBHk8HqWnpys1NVU///yzX/3666/3jSJr0aKFAQlRXdCMuYzvv/9eknTHHXcErJ8/vnXrVt+xwsJCPfLIIzpz5ow+++wzRUZGXtM9z3fX/tnu3bsVExOj7du3X/Eat9xyyzXdU5IOHjyovLy8K65r2rSp6tWrd03XPnXqlA4dOnTFdVFRUWrWrNk1XVvSVT0TiedyKTyXwHgugfFcAuO5BMZzCYznEhjPJTCeS2A8l8B4LoHxXALjuQTGcwmM5xIYzyUwnktgPJfAjHwu27Ztk8vl0vz583XmzBm/etu2bTVy5Eg9+OCDioyMVEFBge/nqs7PJRD+fQkOmjGXsW/fPklSTExMwPr543v37vUdmzJlirKysjR79mzt2bNHe/bskSRdd911AXfXAAAAAAAAAAAqXklJiVasWCGn06lPP/3Urx4WFqZ+/fpp5MiRuvPOO5l4hKDinTGXeWdMYmKiZs+erZdeekmvvvqqX33Xrl2KjY1VbGysdu7cKUlq2bLlRc2Z81q0aKHc3NwyZ+WdMQAAAAAAAABw7X777TffKLLzvzx/oQYNGmjChAmaPHkyo8hwSbwzJsSUp+ECAAAAAAAAAAiO7OxsuVwuLViwIOAoso4dO8put+upp5665tdNANeKZsxl1K1bV5IC/ocqSfn5+ZJ+n4UHAAAAAAAAADBWSUmJli9fLqfTqc8++8yvbjabNWzYMNntdvXo0YNRZKg0NGMuo3nz5pKkAwcOBKyfP87WNQAAAAAAAAAwzq+//qq0tDRNnz494PSihg0bKjExUZMnT9ZNN91U+QFR49GMuYyOHTtKkjZv3hywfv54hw4dKuT+Ho9HHo9HklRUVCSz2Vwh9wEAAAAAAACAquiHH36Qy+XSm2++qYKCAr96p06d5HA49OSTTzKKDIaiGXMZ3bt3V/369bV7925t2bJFnTp1uqi+ePFiSdKQIUMq5P4pKSlKTk72fY6Ojq6Q+wAAAAAAAABAVVFcXKxly5bJ6XQqMzPTr242m/XII4/I4XCoe/fujCJDSAgzOkAoCw8Pl81mkyQlJSX53hEjSa+//rq2bt2qXr16qUuXLhVy/+eee0579uzRnj17FBsbq4YNG1bIfQAAAAAAAAAg1P3666/67//+b7Vp00aPPPKIXyOmUaNG+rd/+zfl5ubq3Xff1X333UcjBiGjRu2MWbFihaZOner7XFhYKEm65557fMf+/Oc/a/Dgwb7PL7/8stauXauvv/5asbGx6tGjh/bu3asNGzYoOjpa6enpFZbXarXKarVKkiwWS4XdBwAAAAAAAABC1datW+VyufTWW28FHEXWuXNn3yiyiIgIAxICV1ajmjHHjh3Thg0b/I5feOzYsWMX1SIiIrRu3Tq99tprWrhwoZYsWaIGDRpozJgxmjp1qmJiYio8NwAAAAAAAADUJMXFxfroo4/kdDqVlZXlVzebzRo+fLjsdrvuvfdedsAg5Jm8Xq/X6BC4sri4OElSdna2wUkAAAAAAAAAoGKcOHFCc+bMUWpqqvbv3+9Xj46O1sSJEzVp0iQ1a9bMgISoqcr7HX2N2hlT1Xg8Hnk8HklSUVGRzGazsYEAAAAAAAAAoAJ8//33vlFkZ8+e9at36dJFDodDjz/+OKPIUCXRjAlhKSkpSk5O9n2Ojo42MA0AAAAAAAAABE9xcbGWLFkil8ulzz//3K9eq1YtDR8+XA6HQ/fccw+jyFClMaYshF24MyY+Pl5ms1k5OTnGhgIAAAAAAACAcjh+/Lhmz56tGTNmBBxFdsMNN/hGkTVt2tSAhIA/xpRVY1arVVarVZJksViMDQMAAAAAAAAA5fDdd9/J5XJp4cKFOnfunF+9a9euvlFk1113nQEJgYpDMwYAAAAAAAAAUCGKioq0ZMkSOZ1Offnll371WrVq6bHHHpPD4dDdd9/NKDJUWzRjAAAAAAAAAABBdezYMc2ePVvTp0/XwYMH/eqNGzfWxIkTNXHiREaRoUagGQMAAAAAAAAACIrNmzfL5XLp7bffDjiK7K677pLdbtdjjz3GKDLUKDRjQpjH45HH45H0+3Y+s9lsbCAAAAAAAAAA+CdFRUX64IMP5HK59NVXX/nVLRaLHn/8cdntdt19990GJASMRzMmhKWkpCg5Odn3OTo62sA0AAAAAAAAAPB/jh49qlmzZmnGjBk6dOiQX71JkyaaNGmSJk6cqCZNmhiQEAgdJq/X6zU6BAK7cGdMfHy8zGazcnJyjA0FAAAAAAAAoEbbtGmTbxRZYWGhX/3uu++Ww+HQ8OHDFR4ebkBCIPji4uIkSdnZ2WU6n50xIcxqtcpqtUr6fSsfAAAAAAAAABihqKhI77//vlwul77++mu/usVi0RNPPCG73a677rrLgIRAaKMZAwAAAAAAAAAI6MiRI5o1a5beeOONgKPIbrzxRk2aNEmJiYmMIgMug2YMAAAAAAAAAOAi33zzjVwul955552Ao8i6desmu92uRx99lFFkwFWgGQMAAAAAAAAAUGFhod5//305nU6tX7/erx4eHq4nn3xSdrtdXbt2NSAhUHXRjAlhHo9HHo9H0u8zGc1ms7GBAAAAAAAAAFQ7hw8f1qxZszRjxgwdPnzYr37jjTdqypQpSkxM1A033GBAQqDqoxkTwlJSUpScnOz7HB0dbWAaAAAAAAAAANXJxo0bfaPIioqK/Or33nuvHA6HHnnkEVksFgMSAtWHyev1eo0OgcAu3BkTHx8vs9msnJwcY0MBAAAAAAAAqLIKCwv13nvvyeVyacOGDX718PBwjRgxQna7XV26dDEgIRCa4uLiJEnZ2dllOp+dMSHMarXKarVKEp1nAAAAAAAAAGX2yy+/aObMmZo5c2bAUWRNmzbVlClTNGHCBEaRARWAZgwAAAAAAAAAVFMbNmyQ0+nUe++9F3AUWffu3eVwODRs2DB+IRyoQDRjAAAAAAAAAKAaOXfunN577z05nU598803fvXrrrvON4rsjjvuMCAhUPPQjAEAAAAAAACAauCXX37RG2+8oTfeeENHjx71q8fExGjy5MmaMGGCoqOjDUgI1Fw0YwAAAAAAAACgivJ6vReNIisuLvZb06NHDzkcDj388MOqVYuvhAEj8F8eAAAAAAAAAFQx586d0zvvvCOXy6Vvv/3Wrx4REaGnnnpKdrtdnTp1qvyAAC5CMwYAAAAAAAAAqohDhw7pjTfe0MyZMy85iiwpKUnjx49Xo0aNDEgIIBCaMSHM4/HI4/FIkoqKimQ2m40NBAAAAAAAAKDSeb1e/eMf/5DL5dLixYsDjiLr2bOnHA6Hhg4dyigyIATxX2UIS0lJUXJysu8zL9UCAAAAAAAAao6zZ8/6RpFt2rTJrx4REaGnn35adrtdHTt2NCAhgKtl8nq9XqNDILALd8bEx8fLbDYrJyfH2FAAAAAAAAAAKtTBgwc1Y8YMzZo1S8eOHfOrN2/eXFOmTNH48ePVsGFDAxICNU9cXJwkKTs7u0znszMmhFmtVlmtVkmSxWIxNgwAAAAAAACACuP1evX111/L6XTqgw8+CDiKrHfv3rLb7XrooYcYRQZUMfwXCwAAAAAAAAAGOXv2rBYtWiSn06nvvvvOrx4ZGamRI0fKZrOpQ4cOBiQEEAw0YwAAAAAAAACgkh04cMA3iuz48eN+9RYtWigpKUkJCQlq0KCBAQkBBBPNGAAAAAAAAACoBF6vV19++aVcLpc++OADlZSU+K3p06ePHA6HhgwZIrPZbEBKABWBZgwAAAAAAAAAVKCCggK9/fbbcrlc2rJli189MjJSo0aNks1mU/v27Ss/IIAKRzMGAAAAAAAAACrA/v37NX36dM2ePVsnTpzwq7ds2VJJSUkaN24co8iAao5mDAAAAAAAAAAEidfr1RdffCGn06klS5YEHEXWr18/2e12Pfjgg4wiA2oImjEAAAAAAAAAUE4FBQVauHChXC6Xvv/+e7967dq1faPIbr/9dgMSAjASzZgQ5vF45PF4JElFRUV0yQEAAAAAAIAQs2/fPt8osl9//dWv3qpVK9lsNo0dO1bXX3+9AQkBhAKaMSEsJSVFycnJvs/R0dEGpgEAAAAAAAAg/T6KLCsrSy6XS0uWLFFpaanfmvvvv192u12DBw/ml6wByOT1er1Gh0BgF+6MiY+Pl9lsVk5OjrGhAAAAAAAAgBrqzJkzWrhwoZxOp3744Qe/eu3atTV69GjZbDbddtttBiQEUFHi4uIkSdnZ2WU6n50xIcxqtcpqtUqSLBaLsWEAAAAAAACAGmrv3r2+UWS//fabX71169a+UWTnv88DgAvRjAEAAAAAAACAf+L1epWZmSmXy6WlS5cGHEUWHx8vu92ugQMHMooMwGXRjAEAAAAAAACA/9+ZM2f05ptvyuVy6ccff/Sr16lTxzeK7NZbbzUgIYCqiGYMAAAAAAAAgBovNzdXqampSktLCziKrE2bNr5RZPXr1zcgIYCqjGYMAAAAAAAAgBrJ6/Vq3bp1cjqdWrZsWcBRZP379/eNIgsLCzMgJYDqgGYMAAAAAAAAgBolPz/fN4osOzvbr163bl2NGTNGNptN7dq1MyAhgOqGZgwAAAAAAACAGmHPnj2+UWQej8evfvPNN8tut2vMmDGqV69e5QcEUG3RjAEAAAAAAABQbXm9Xn322We+UWRer9dvzYABA+RwONS/f39GkQGoEDRjAAAAAAAAAFQ7p0+f1oIFC+R2u7Vt2za/elRUlG8UWdu2bQ1ICKAmoRkDAAAAAAAAoNrYvXu3UlNTlZ6erpMnT/rV27ZtK5vNptGjRzOKDECloRkDAAAAAAAAoErzer1au3atnE6nVqxYEXAU2aBBg2S32xUfH88oMgCVjmYMAAAAAAAAgCrp9OnTmj9/vlwul7Zv3+5Xj4qK0rhx45SUlKTY2FgDEgLA72jGhDCPxyOPxyNJKioqktlsNjYQAAAAAAAAEAJ27drlG0V26tQpv3q7du1kt9v1zDPPKCoqyoCEAHAxmjEhLCUlRcnJyb7P0dHRBqYBAAAAAAAAjFNaWuobRfbxxx/7jSIzmUwaNGiQHA6H7r//fkaRAQgpJm+gAYoICRfujImPj5fZbFZOTo6xoQAAAAAAAIBKlJeX5xtFtmPHDr96vXr1fKPIbr75ZgMSAqgJ4uLiJEnZ2dllOp+dMSHMarXKarVKkiwWi7FhAAAAAAAAgEr0008/KTU1VRkZGQFHkd1yyy2+UWR169Y1ICEAXD2aMQAAAAAAAABCQmlpqVavXi2Xy6WPP/7Yr24ymfTggw/Kbrfr/vvvl8lkMiAlAFw7mjEAAAAAAAAADHXq1CnNmzdPbrdbO3fu9KvXr19fCQkJmjJlitq0aWNAQgAoH5oxAAAAAAAAAAyxc+dOud1uzZ07V3l5eX71W2+9VXa7XaNGjWIUGYAqjWYMAAAAAAAAgEpTWlqqVatWyel06pNPPvGrm0wmDRkyRHa7Xf369WMUGYBqgWYMAAAAAAAAgAp36tQpzZ07V263Wz/99JNfvX79+ho/frymTJmi1q1bG5AQACoOzRgAAAAAAAAAFWbHjh2+UWSnT5/2q992221yOBwaOXKk6tSpY0BCAKh4NGMAAAAAAAAABFVpaalWrlwpl8ulVatW+dVNJpMeeughORwO9enTh1FkAKo9mjEAAAAAAAAAguLkyZPKyMhQamqqdu3a5Ve3Wq2+UWStWrUyICEAGINmDAAAAAAAAIBy2b59u28UWX5+vl/99ttvl91u19NPP80oMgA1Es0YAAAAAAAAANestLRUH3/8sVwul1avXu1XDwsL09ChQ2W329W7d29GkQGo0WjGAAAAAAAAALhqHo/HN4ps9+7dfvXrr79eEyZM0OTJk9WyZcvKDwgAIYhmDAAAAAAAAIAr2rZtm9xut+bPnx9wFFn79u3lcDj01FNPqXbt2gYkBIDQRTMGAAAAAAAAQEAlJSX6+OOP5XQ6tXbtWr96WFiYHn74YTkcDvXs2ZNRZABwCTRjAAAAAAAAAFzE4/EoPT1dbrdbe/bs8as3aNDAN4qsRYsWBiQEgKqFZgwAAAAAAAAASb+PInO5XJo/f77OnDnjV+/YsaPsdrueeuopRUZGGpAQAKommjEAAAAAAABADVZSUqLly5fL5XLp008/9aubzWYNGzZMdrtdPXr0YBQZAJQBzRgAAAAAAACgijty5IjmzJmjrKws5eXlKSoqSr1791ZCQoIaN24c8JzffvtNaWlpSk1NVW5url+9YcOGvlFkzZs3r+CfAACqN5oxIczj8cjj8UiSioqKZDabjQ0EAAAAAACAkFJQUKBnn31Wc+fOVVFR0UW1NWvW6JVXXtHYsWM1bdo0RURESJJ+/PFHuVwuvfnmmwFHkXXq1El2u10jRoxgFBkABAnNmBCWkpKi5ORk3+fo6GgD0wAAAAAAACCUFBQUaODAgcrKyrrkmqKiIs2aNUvbt2/XlClTNHPmTK1bt85vndls1iOPPCKHw6Hu3bszigwAgszk9Xq9RodAYBfujImPj5fZbFZOTo6xoQAAAAAAABASEhMTNXv27HJdo1GjRkpMTNSkSZN00003BSkZAFQ/cXFxkqTs7Owync/OmBBmtVpltVolSRaLxdgwAAAAAAAACBmHDx/W3Llzy3x+586d5XA49OSTT/rGlwEAKg7NGAAAAAAAAKCKSUtL83tHzNW4/fbb9cYbb+jee+9lFBkAVCKaMQAAAAAAAEAVc7n3xFzOjTfeqO7duwc5DQDgSsKMDgAAAAAAAADg2uTl5VXqeQCA8mFnDAAAAAAAAFBFlJSUaNmyZdqxY0eZzo+KigpyIgDA1aAZAwAAAAAAAIS43377TWlpaXK73dq7d2+Zr9O7d+/ghQIAXDWaMQAAAAAAAECI+vHHH+VyubRgwQIVFBSU61oWi0UJCQlBSgYAuBY0YwAAAAAAAIAQUlJSouXLl8vpdOqzzz7zq5vNZg0fPlwFBQX66KOPrvq6Y8eOVePGjYMZFQBwlWjGAAAAAAAAACHg/Ciy1NRU5ebm+tUbNWqkiRMnatKkSYqJiVFBQYEGDhyorKysK167V69emjZtWgWkBgBcjTCjAwAAAAAAAAA1WXZ2tq/B8sc//tGvEdO5c2dlZGRo//79evXVVxUTEyNJioyM1MqVK5WYmCiLxRLw2haLRYmJifrkk08UERFR0T8KAOASTF6v12t0CFxZXFycpN//xxkAAAAAAABVW0lJiVasWCGn06lPP/3Ur242m/Xoo4/K4XDo3nvvlclkuuz1jhw5orS0NGVmZiovL09RUVHq3bu3EhISGE0GAEFQ3u/oacZUETRjAAAAAAAAqj6Px6P09HS53W7t2bPHr96wYUNNnDhRkydP9u2AAQAYr7zf0fPOGAAAAAAAAKCCbdu2TW63W/PmzdOZM2f86p06dZLD4dCTTz6pyMhIAxICACoSzRgAAAAAAACgApSUlOjjjz+W0+nU2rVr/epms1mPPPKI7Ha77rvvviuOIgMAVF00YwAAAAAAAIAg8ng8ysjIkNvt1s8//+xXb9iwoRITEzV58mTddNNNBiQEAFQ2mjEAAAAAAABAEOTk5PhGkeXn5/vVO3bsKIfDoREjRjCKDABqGJoxAAAAAAAAQBmVlpb6RpGtWbPGrx4WFqZhw4bJ4XCoR48ejCIDgBqKZgwAAAAAAABwjU6ePOkbRbZ7926/eoMGDXyjyJo3b25AQgBAKKEZAwAAAAAAAFyl7du3y+12a+7cuQFHkXXo0EEOh0NPPfUUo8gAAD40YwAAAAAAAIDLKC0t1cqVK+V0OrV69Wq/elhYmB5++GE5HA717NmTUWQAAD80YwAAAAAAAIAATp48qblz58rtdmvXrl1+9QYNGmjChAmaPHmyWrRoYUBCAEBVQTMGAAAAAAAAuMCOHTt8o8hOnz7tV2/fvr1vFFnt2rUNSAgAqGpoxgAAAAAAAKDGKy0t1SeffCKXy6VPPvnErx4WFqahQ4fK4XCoV69ejCIDAFyTMKMDVDfffvutnnnmGd18880ymUx6+eWXjY4EAAAAAACASzh16pScTqduueUWDR482K8Rc/311+tPf/qTfv75Z33wwQfq3bs3jRgAwDVjZ0yQffXVV1q/fr3uu+8+HT9+3Og4AAAAAAAACGDnzp1yu93KyMgIOIrs9ttvl8Ph0NNPP80oMgBAudGMCTK73a5nn31WktSyZUtjwwAAAAAAAMCntLRUq1atksvl0sqVK/3qYWFheuihh+RwONgBAwAIKpoxQRYWxuQ3AAAAAACAUHLq1CnNmzdPLpdLP/30k1/darVq/PjxmjJlilq1amVAQgBAdVejmjGbNm3SmjVrtHHjRm3cuFEHDx6UJHm93sueV1BQoNdee02LFi3Svn371KBBAw0YMEBTp05Vs2bNKiM6AAAAAAAArtFPP/3kG0WWl5fnV4+Li/ONIqtTp44BCQEANUWNasZMnTpVS5cuvaZzzp49q759+2r9+vW68cYbNXToUOXm5iojI0PLly/X+vXr1bp16wpKDAAAAAAAgGtRWlqqNWvWyOl06uOPP/arm0wm3yiyPn36MIoMAFApalQzplu3burQoYPuvPNO3XnnnWrZsqXOnTt32XNeffVVrV+/Xt26ddPq1atVt25dSdLrr7+u559/XuPGjVNmZmYlpAcAAAAAAMCl5OXl+UaR7dy5069ev359jR8/XklJSYwiAwBUuhrVjHnhhReuaX1hYaHcbrckKTU11deIkaQ//OEPmjdvnrKysrRp0yZ16dIlqFkBAAAAAABwZbt27ZLb7VZ6enrAUWS33XabHA6HRo4cySgyAIBhalQz5lp99dVXOnnypNq0aaPOnTv71YcPH66tW7dq2bJlNGMAAAAAAAAqyflRZC6XSx9//LHf+4BNJpOGDBkih8Ohvn37MooMAGA4mjGX8f3330uS7rjjjoD188e3bt0atHvGxcUFPL57927FxMRo+/btV7zGLbfccs33PXjwYMDfHvlnTZs2Vb169a7p2qdOndKhQ4euuC4qKkrNmjW7pmtLuqpnIvFcLoXnEhjPJTCeS2A8l8B4LoHxXALjuQTGcwmM5xIYzyUwnktgPJfAeC6BhdJzycvL06xZs5Samqo9e/b41aOiovToo4/qqaee0m233VZjnovEvy+XwnMJjOcSGM8lMJ5LcNCMuYx9+/ZJkmJiYgLWzx/fu3ev79ixY8eUlZUlSTpz5oy2b9+uxYsXq06dOho4cGAFJwYAAAAAAKh+du3apdTUVKWnp+vUqVN+9TZt2ujpp5/WQw89xCgyAEBIMnn/eR9nDRIREaFz5875bWU9LzExUbNnz9ZLL72kV1991a++a9cuxcbGKjY21vdiuMzMTPXp08dvbYsWLZSbm1vmrOd3zGRnZ5f5GgAAAAAAAFWF1+vV2rVr5XQ6tWLFioCjyB588EE5HA7169ePUWQAgApV3u/o2RkTZL17975kcwcAAAAAAACXd/r0aS1YsEAul0s5OTl+9Xr16ikhIUFJSUlq06aNAQkBALh2NGMuo27dupJ+HzcWSH5+vqTfZ+EBAAAAAACg7Hbv3u0bRXby5Em/+i233CK73a5nnnnG950NAABVBc2Yy2jevLkk6cCBAwHr54+3aNGi0jIBAAAAAABUF16vV59++qmcTqeWL18ecBTZ4MGDZbfbdf/99yssLMygpAAAlA/NmMvo2LGjJGnz5s0B6+ePd+jQoULu7/F45PF4JElFRUUym80Vch8AAAAAAIDKlJ+f7xtFtm3bNr96vXr1NG7cOCUlJenmm282ICEAAMFFM+Yyunfvrvr162v37t3asmWLOnXqdFF98eLFkqQhQ4ZUyP1TUlKUnJzs+xwdHV0h9wEAAAAAAKgMP//8s1JTU5WWlhZwFFm7du18o8gYCw8AqE7Y23kZ4eHhstlskqSkpCTfO2Ik6fXXX9fWrVvVq1cvdenSpULu/9xzz2nPnj3as2ePYmNj1bBhwwq5DwAAAAAAQEU5P4ps6NChuvnmm/X666/7NWIGDx6sVatWadu2bUpKSqIRAwCodmrUzpgVK1Zo6tSpvs+FhYWSpHvuucd37M9//rMGDx7s+/zyyy9r7dq1+vrrrxUbG6sePXpo79692rBhg6Kjo5Wenl5hea1Wq6xWqyTJYrFU2H0AAAAAAACCLT8/X2+++aacTmfAUWRRUVG+UWSxsbEGJAQAoPLUqGbMsWPHtGHDBr/jFx47duzYRbWIiAitW7dOr732mhYuXKglS5aoQYMGGjNmjKZOnaqYmJgKzw0AAAAAAFBV7NmzxzeK7Py7cC/Utm1b2e12jR49mh0wAIAaw+T1er1Gh8CVxcXFSZKys7MNTgIAAAAAAHAxr9erdevWyel06qOPPlKgr5sGDRoku92u+Ph4hYUxOR8AULWU9zv6GrUzpqrxeDy+3yApKiqS2Ww2NhAAAAAAAMAF8vPz9dZbb8npdAb8cioqKkpjx45VUlKS2rZta0BCAABCA82YEJaSkqLk5GTf5+joaAPTAAAAAAAA/C43N1fTp0/XnDlz9Ntvv/nVY2NjfaPI6tWrZ0BCAABCC2PKQtiFO2Pi4+NlNpuVk5NjbCgAAAAAAFAjeb1eZWZm+kaRlZaW+q0ZMGCAHA6H+vfvzygyAEC1wpiyasxqtcpqtUqSLBaLsWEAAAAAAECNdObMGd8osh9//NGvXrduXd8osnbt2hmQEACA0EczBgAAAAAAAH727t2r6dOna/bs2QFHkd18882y2+0aM2YMo8gAALgCmjEAAAAAAACQ9PsosqysLDmdTi1dujTgKLL+/fvL4XBowIABjCIDAOAq0YwJYRe+M6aoqEhms9nYQAAAAAAAoFo6c+aMFi5cKKfTqR9++MGvXrduXY0ZM0Y2m41RZAAAlAHNmBCWkpKi5ORk3+fo6GgD0wAAAAAAgOpm3759vlFkv/76q1+9TZs2vlFk9evXNyAhAADVg8nr9XqNDoHALtwZEx8fL7PZrJycHGNDAQAAAACAKs3r9erzzz+X0+nUkiVLAo4ii4+Pl8Ph0MCBAxlFBgCApLi4OElSdnZ2mc5nZ0wIs1qtslqtkiSLxWJsGAAAAAAAUKUVFBT4RpFt3brVr16nTh2NHj1aNptNt956qwEJAQCovmjGAAAAAAAAVGP79u3TjBkzNGvWrICjyFq3bu0bRXb+l0IBAEBw0YwBAAAAAACoZrxer7744gu5XC59+OGHKikp8VvzwAMP+EaRmc1mA1ICAFBz0IwBAAAAAACoJgoKCvT222/L6XTq+++/96vXqVNHzzzzjGw2m2677TYDEgIAUDPRjAEAAAAAAKji9u/f7xtFduLECb96q1atZLfbNXbsWEaRAQBgAJoxIczj8cjj8UiSioqK2DIMAAAAAAB8vF6vvvrqKzmdTn3wwQcBR5Hdf//9cjgcGjRoEN8rAABgIJoxISwlJUXJycm+z9HR0QamAQAAAAAAoeDs2bN6++235XK59N133/nVa9eurWeeeUZ2u51RZAAAhAiT1+v1Gh0CgV24MyY+Pl5ms1k5OTnGhgIAAAAAAIY4cOCAbxTZ8ePH/eqtWrVSUlKSxo0bp+uvv96AhAAAVF9xcXGSpOzs7DKdz86YEGa1Wn1zXC0Wi7FhAAAAAABApfN6vfr666/ldDr1/vvvBxxF1q9fPzkcDg0ePJhRZAAAhCiaMQAAAAAAACHm7Nmzeuedd+R0OrV582a/emRkpJ555hnZbDbdfvvtBiQEAADXgmYMAAAAAABAiDh48KBmzJihmTNnBhxF1rJlS9lsNkaRAQBQxdCMAQAAAAAAMJDX69U//vEP3yiy4uJivzV9+/aVw+HQgw8+yCgyAACqIJoxAAAAAAAABjg/iszlcmnTpk1+9cjISI0aNUp2u51RZAAAVHE0YwAAAAAAACrRoUOHfKPIjh075ldv0aKFkpKSlJCQoAYNGhiQEAAABBvNGAAAAAAAgArm9Xq1fv16OZ1OLV68OOAosj59+sjhcGjIkCGMIgMAoJqhGRPCPB6PPB6PJKmoqIg/iAEAAAAAUMWcO3dO7777rpxOp7799lu/emRkpEaOHCm73a727dsbkBAAAFQGmjEhLCUlRcnJyb7P0dHRBqYBAAAAAABX69ChQ3rjjTc0c+ZMHT161K/evHlz3yiyhg0bGpAQAABUJpPX6/UaHQKBXbgzJj4+XmazWTk5OcaGAgAAAAAAAXm9Xm3YsEFOp1PvvfdewFFkvXr1ksPh0EMPPaRatfgdWQAAqoq4uDhJUnZ2dpnO53/1Q5jVapXVapUkWSwWY8MAAAAAAICAzp07p/fee09Op1PffPONXz0iIsI3iqxDhw4GJAQAAEajGQMAAAAAAFAGv/zyi28U2ZEjR/zqN910k5KSkjR+/HhGkQEAUMPRjAEAAAAAALgGF44iKyoq8qv37NlTDodDQ4cOZRQZAACQRDMGAAAAAADgigoLC32jyDZu3OhXj4iI0NNPPy273a6OHTsakBAAAIQymjEAAAAAAACXcPjwYd8ossOHD/vVY2JifKPIGjVqZEBCAABQFdCMAQAAAAAA+CcbN26U0+nUu+++G3AUWY8ePeRwOPTwww8zigwAAFwRf1oAAAAAAADQ76PIFi9eLKfTqQ0bNvjVr7vuOt8osk6dOlV+QAAAUGXRjAEAAAAAADXakSNHNHPmTM2YMSPgKLJmzZopKSlJEyZMYBQZAAAoE5oxIczj8cjj8UiSioqKZDabjQ0EAAAAAEA18s0338jpdOqdd94JOIrsvvvu840is1gsBiQEAADVBc2YEJaSkqLk5GTf5+joaAPTAAAAAABQ9RUWFur999+X0+nU+vXr/erXXXednnrqKdntdnXu3NmAhAAAoDoyeb1er9EhENiFO2Pi4+NlNpuVk5NjbCgAAAAAAKqgI0eOaNasWZoxY4Z++eUXv3qzZs00ZcoUTZgwgV+GBAAAfuLi4iRJ2dnZZTqfnTEhzGq1ymq1ShLboQEAAAAAKINvv/1WLpdLixYtUmFhoV+9e/fucjgcGjZsGH/3BgAAFYZmDAAAAAAAqFaKiop8o8j+8Y9/+NXDw8M1YsQI2e12denSxYCEAACgpqEZAwAAAAAAqoWjR4/6RpEdOnTIr960aVPfKLIbbrjBgIQAAKCmohkDAAAAAACqtE2bNsnlcuntt98OOIrs3nvvlcPh0COPPMIoMgAAYAiaMQAAAAAAoMopKirSBx98IKfTqa+//tqvHh4erieffFJ2u11du3Y1ICEAAMD/oRkDAAAAAACqjGPHjmnWrFmaPn16wFFkN954o6ZMmaLExERGkQEAgJBBMwYAAAAAAIS8zZs3+0aRnTt3zq/erVs33yiy8PBwAxICAABcGs0YAAAAAAAQkoqKivThhx/K6XTqq6++8quHh4friSeekN1u15133mlAQgAAgKtDMwYAAAAAAISUY8eOafbs2Zo+fboOHjzoV2/SpIlvFFnjxo0NSAgAAHBtaMYAAAAAAICQ8N1338nlcmnhwoUBR5Hdc889cjgcevTRRxlFBgAAqhSaMQAAAAAAwDDFxcX68MMP5XK59MUXX/jVLRaLbxTZXXfdZUBCAACA8qMZAwAAAAAAKt3x48d9o8gOHDjgV2/cuLEmT56siRMnqkmTJgYkBAAACB6aMSHM4/HI4/FI+v2lhWaz2dhAAAAAAACU05YtW+RyufTWW28FHEV29913y26367HHHmMUGQAAqDZoxoSwlJQUJScn+z5HR0cbmAYAAAAAgLIpLi7W0qVL5XQ69fnnn/vVLRaLHn/8cdntdt19990GJAQAAKhYJq/X6zU6BAK7cGdMfHy8zGazcnJyjA0FAAAAAMBVOn78uObMmaPp06dr//79fvXGjRtr0qRJmjhxom688UYDEgIAAFyduLg4SVJ2dnaZzmdnTAizWq2yWq2Sfv8tIQAAAAAAqoLvv//eN4rs7NmzfvU777xTzz77rIYPH67rrrvOgIQAAACVi2YMAAAAAAAot/OjyFwul7KysvzqtWrV0uOPPy6Hw8EoMgAAUOPQjAEAAAAAAGV24sQJzZkzR6mpqQFHkd1www2+UWRNmzY1ICEAAIDxaMYAAAAAAIBrtnXrVrlcLr355psBR5F17dpVDodDjz/+OKPIAABAjUczBgAAAAAAXJXi4mItW7ZMTqdTmZmZfvVatWrpscce840iM5lMlR8SAAAgBNGMAQAAAAAAl/Xrr79qzpw5mj59uvbu3etXj46O1qRJkzRp0iRGkQEAAARAMwYAAAAAAAT0ww8/+EaRFRQU+NW7dOkih8OhJ554glFkAAAAl0EzBgAAAAAA+JSUlPhGka1bt86vXqtWLQ0fPlx2u13dunVjFBkAAMBVoBkDAAAAAAD022+/KS0tTampqcrNzfWrR0dHa+LEiZo0aZKaNWtW+QEBAACqMJoxAAAAAADUYD/++KNcLpcWLFgQcBTZHXfc4RtFFhERYUBCAACAqo9mDAAAAAAANUxJSYmWL18up9Opzz77zK9uNps1fPhwORwORpEBAAAEAc0YAAAAAABqiN9++03p6elyu90BR5E1atTIN4osJiam8gMCAABUUzRjAAAAAACo5rKzs32jyM6cOeNX79y5sxwOh5588klGkQEAAFQAmjEAAAAAAFRDJSUlWrFihZxOpz799FO/utls1iOPPCKHw6Hu3bszigwAAKAC0YwBAAAAAKAa8Xg8vlFke/bs8as3bNjQN4rspptuMiAhAABAzUMzBgAAAACAamDbtm1yu92aN29ewFFkHTt21LPPPqsnn3xSkZGRBiQEAACouWjGAAAAAABQRZWUlOjjjz+W0+nU2rVr/epms1nDhg2Tw+HQfffdxygyAAAAg9CMAQAAAADAQEeOHNGcOXOUlZWlvLw8RUVFqXfv3kpISFDjxo0DnuPxeJSRkSG3262ff/7Zr96wYUMlJiZq8uTJjCIDAAAIATRjQpjH45HH45EkFRUVyWw2GxsIAAAAABA0BQUFevbZZzV37lwVFRVdVFuzZo1eeeUVjR07VtOmTVNERIQkKScnxzeKLD8/3++aHTt2lMPh0IgRIxhFBgAAEEJoxoSwlJQUJScn+z5HR0cbmAYAAAAAECwFBQUaOHCgsrKyLrmmqKhIs2bN0o4dO2S32zVz5kytWbPGb11YWJhvFFmPHj0YRQYAABCCTF6v12t0CAR24c6Y+Ph4mc1m5eTkGBsKAAAAAFBuiYmJmj17drmu0aBBA02YMEFTpkxR8+bNg5QMAAAAgcTFxUmSsrOzy3Q+O2NCmNVqldVqlSRZLBZjwwAAAAAAguLw4cOaO3dumc/v0KGDHA6HnnrqKUaRAQAAVBE0YwAAAAAAqERpaWl+74i5GrfddpumT5+unj17MooMAACgiqEZAwAAAABAJbrce2Iup1mzZurVq1eQ0wAAAKAyVEgz5uTJkzp27Jg8Ho+sVquio6NVv379irgVAAAAAABVSl5eXqWeBwAAAOMFpRlTXFysDz/8UCtWrFBWVpb27dvnt6Z58+bq1auXHnzwQT388MOqVYtNOQAAAACAmqOoqEhLly7Vjh07ynR+VFRUkBMBAACgspSrI+LxePRf//VfSk9P1/Hjx+X1ehUWFqamTZuqQYMGqlevnk6ePKnffvtN+/bt0/z587VgwQI1atRICQkJ+tOf/uR7QT0AAAAAANXR0aNHNXv2bM2YMUMHDx4s83V69+4dvFAAAACoVCav1+sty4l/+9vf9Nprr+m3337TzTffrBEjRqh3797q2rVrwN/WycvL0zfffKN169Zp0aJF2r17t66//nr927/9m55//vly/yDVXVxcnCQpOzvb4CQAAAAAgKuxceNGuVwuvfvuuyosLCzXtSwWi/bv36/GjRsHKR0AAACuRXm/oy9zMyYsLEwPPfSQXnzxRd19993XfP4//vEP/fWvf9Xy5ctVUlJSlgg1Cs0YAAAAAAh9586d0zvvvCO3261vvvnGr26xWPT444/r9OnTWrp06VVfNzExUTNnzgxmVAAAAFyD8n5HX+YxZZs3b1anTp3Kerq6deumpUuXasuWLWW+BgAAAAAAoWD//v164403NHv2bB07dsyv3rRpU02aNEkTJkxQkyZNVFBQoIEDByorK+uK1+7Vq5emTZtWEbEBAABQScrcjClPI6YirgMAAAAAQGXyer3KysqS2+3WkiVLAk596NGjh2w2m4YNGyaLxeI7HhkZqZUrV+q5555TRkaGioqK/M61WCwaO3aspk2bpoiIiAr9WQAAAFCxyjymDJWLMWUAAAAAEBry8/P15ptvyu1268cff/SrR0ZG6umnn1ZSUtJV/QLikSNHlJaWpszMTOXl5SkqKkq9e/dWQkIC74gBAAAIEYa9M+afHTlyRDt27FC7du0u+sPi7t279dJLL+nHH39U8+bN9e///u+65557gnHLGoVmDAAAAAAYa9euXZo+fbrS09N18uRJv3qrVq00ZcoUjRs3Tg0aNDAgIQAAACqKYe+M+Wd//etf5XQ6lZOT42vGnDp1Svfdd5+OHj0qr9erbdu2KSsrS1u2bFFsbGywbg0AAAAAQIUoLS3VqlWr5HK5tHLlyoBr4uPjZbfbNXDgQJnN5kpOCAAAgKogLFgXyszM1G233aa2bdv6js2dO1dHjhzRiBEjtGPHDr3++usqKCjQ//7v/wbrtgAAAAAABJ3H49Hf//53tW3bVoMGDfJrxERFRclut2v79u1atWqVHnzwQRoxAAAAuKSg7Yw5ePCgunXrdtGxFStWqFatWkpJSVGjRo303HPPad68ecrKygrWbQEAAAAACJoff/xRbrdbCxYs0JkzZ/zqt956q2w2m0aNGqWoqCgDEgIAAKAqClozJi8vT7Vr1/Z9Likp0T/+8Q916dJFjRo18h2/5ZZbtHz58mDdFgAAAACAcikuLtbSpUvldruVmZnpVw8LC9NDDz0km82mvn37ymQyVX5IAAAAVGlBa8Y0bdpU27dv933+8ssvdfr0afXu3fuidcXFxQoPDw/WbQEAAAAAKJOjR49qzpw5mjFjhg4cOOBXb9CggSZMmKBJkyapZcuWlR8QAAAA1UbQmjHdunXT22+/rZSUFPXr108vv/yyTCaThgwZctG6nJwcNWvWLFi3BQAAAADgmnzzzTdyu91atGiRCgsL/eqdO3eW3W7Xk08+qcjISAMSAgAAoLoJWjPmxRdf1AcffKDnn39ekuT1etWnTx/de++9vjW5ubnatm2bEhISgnVbAAAAAACu6Ny5c3rvvffkcrm0ceNGv3qtWrX02GOPyW6365577mEUGQAAAIIqaM2YuLg4ffnll5o2bZqOHz+uLl266I9//ONFa1atWqWOHTvq4YcfDtZtAQAAAAC4pAMHDmjmzJmaNWuWjh496ldv0qSJJk2apMTERN14440GJAQAAEBNYPJ6vV6jQ+DK4uLiJEnZ2dkGJwEAAACA0Ob1evXFF1/I5XLpww8/VElJid+a7t27y263a9iwYbzXFAAAAFdU3u/og7YzBgAAAAAAI+Xn5+utt96S2+3WDz/84FePiIjQ008/raSkJHXu3NmAhAAAAKipytyMOX78uBo1alTuAMG6DgAAAACgZtq9e7emT5+u9PR0eTwev3rLli01ZcoUjRs3Tg0bNqz8gAAAAKjxwsp6YqtWrfTiiy/q+PHjZTr/6NGj+tOf/qRWrVqVNUJI2rJli3r06KHIyEi1atVKbrfb6EgAAAAAUO2Ulpbqk08+0YMPPqjY2Fi9/vrrfo2YBx54QEuXLtWuXbv0xz/+kUYMAAAADFPmnTGPPfaY/ud//kd///vfNWDAAI0YMUK9evVSkyZNLnnOL7/8oszMTC1cuFCrV69WSUmJRo8eXdYIIefYsWN64IEHdNddd2n58uXavHmznnvuOdWvX1+jRo0yOh4AAAAAVHknT57U3LlzlZqaqp9++smvXrduXY0ZM0ZJSUm65ZZbDEgIAAAA+DN5vV5vWU/+4Ycf9PLLL2vFihU6f5mmTZuqXbt2uv766xUVFaW8vDz9+uuv2rFjh3755RdJUlhYmIYMGaKpU6f6XnpTHUydOlUul0u5ubmqXbu2JGnKlClau3atdu7cWa5rl/flQAAAAABQlWVnZys1NVXz589Xfn6+X71du3ay2Wx65plnVK9ePQMSAgAAoDor73f0Zd4ZI0nt27fX0qVLdeDAAaWlpWn58uXasmWLDh486H+jWrXUtWtXDR48WOPGjVNMTEx5bh2SVq1apUGDBvkaMdLvO4hmzJihn3/+Wa1btzYwHQAAAABULcXFxVq2bJlcLpfWrVvnVzeZTBoyZIjsdrv69esnk8lkQEoAAADgysrVjDkvJiZG//Ef/6H/+I//UH5+vrZt26ajR4/q5MmTql+/vm644QbFxcVd1KSobJs2bdKaNWu0ceNGbdy40dcwutLGoIKCAr322mtatGiR9u3bpwYNGmjAgAGaOnWqmjVrdtHanTt36sEHH7zo2Plt8Tt27KAZAwAAAABX4dixY5ozZ45mzJih/fv3+9UbNGig8ePHa/LkyWrZsmXlBwQAAACuUVCaMReqU6eO7rzzzmBfttymTp2qpUuXXtM5Z8+eVd++fbV+/XrdeOONGjp0qHJzc5WRkaHly5dr/fr1FzVYfvvtN1mt1ouucf311/tqAAAAAIBL+/bbb+V2u7Vo0SKdO3fOr96pUyfZ7XaNGDFCkZGRBiQEAAAAyibozZhQ1a1bN3Xo0EF33nmn7rzzTrVs2TLgH+4v9Oqrr2r9+vXq1q2bVq9erbp160qSXn/9dT3//PMaN26cMjMzKyE9AAAAAFRP586d0+LFi+VyubRhwwa/eq1atTR8+HDZbDbde++9jCIDAABAlVRjmjEvvPDCNa0vLCyU2+2WJKWmpvoaMZL0hz/8QfPmzVNWVpY2bdqkLl26SPp9F8zJkycvuo7H4/HVAAAAAAC/O3jwoGbOnKlZs2bpyJEjfvUmTZpo4sSJSkxMVNOmTQ1ICAAAAARPjWnGXKuvvvpKJ0+eVJs2bdS5c2e/+vDhw7V161YtW7bM14xp27attm/fftG685/btWtX8aEBAAAAIIR5vV59+eWXcrvd+uCDD1RcXOy35t5775XNZtOjjz6q8PBwA1ICAAAAwUcz5hK+//57SdIdd9wRsH7++NatW33H+vfvL7fbrYKCAt/84sWLFys2Nvaid8tcTlxcXMDju3fvVkxMjF+zJ5Bbbrnlqu51oYMHDyovL++K65o2bap69epd07VPnTqlQ4cOXXFdVFSUmjVrdk3XlnRVz0TiuVwKzyUwnktgPJfAeC6B8VwC47kExnMJjOcSGM8lsFB+LgUFBVq2bJkWLlyoHTt2+K2NiIjQU089paSkpEv+HeyfVYfncjk1+d+Xy+G5BMZzCYznEhjPJTCeS2A8l8B4LoHVtOdyrWjGXMK+ffskSTExMQHr54/v3bvXd2zSpElyOp16/PHH9dxzz+m7777TzJkzlZ6eXvGBAQAAACDE7N+/X2+//bbef/99nTp1yq/etGlTjRkzRn/4wx/UsGFDAxICAAAAlcPk9Xq9RocwQkREhM6dO6dL/fiJiYmaPXu2XnrpJb366qt+9V27dik2NlaxsbHauXOn7/iWLVtks9n07bffqnHjxvrXf/1X2e32cuc9v2MmOzu73NcCAAAAgIpSWlqqNWvWyO12a8WKFQH/ztWvXz/Z7XY9+OCDMpvNBqQEAAAArk15v6NnZ0yQderUSV9++aXRMQAAAACgUp08eVLz5s1TamrqRb+wdl7dunU1evRoJSUl6dZbbzUgIQAAAGCcCmvGnDt3Tr/++quuu+46NWjQoKJuU2Hq1q0rSTpz5kzAen5+vqTf5+ABAAAAQE21bds2paamav78+Tp9+rRfvW3btrLZbBo9enSFz+EGAAAAQlVYsC84a9Ysde7cWXXq1FFMTIz+9V//1Vf74IMP9Mgjj2jXrl3Bvm3QNW/eXJJ04MCBgPXzx1u0aFFhGTwej3Jzc5Wbm6uioiKVlpZW2L0AAAAA4GoVFxdryZIl6tevn+Li4jR9+vSLGjEmk0lDhgzR6tWrlZOTI7vdTiMGAAAANVrQdsaUlJRo+PDh+uijj2SxWHTrrbf6zU7r2LGjhg8fri5duuill14K1q0rRMeOHSVJmzdvDlg/f7xDhw4VliElJUXJycm+z9HR0RV2LwAAAAC4kuPHj2vOnDmaMWOG9u3b51e//vrrlZCQoClTpqhVq1YGJAQAAABCU9B2xrjdbi1dulQDBw7U3r179cMPP/itadOmjW6++WatXLkyWLetMN27d1f9+vW1e/dubdmyxa++ePFiSdKQIUMqLMNzzz2nPXv2aM+ePYqNjVXDhg0r7F4AAAAAcCmbNm3S2LFjFRMToxdffNGvEdOxY0fNnj1bBw4c0P/8z//QiAEAAAD+SdCaMXPnzlXjxo31zjvvqHHjxpdcd9ttt2nv3r3Bum2FCQ8Pl81mkyQlJSX53hEjSa+//rq2bt2qXr16qUuXLhWWwWq1qmXLlmrZsqUsFovCwoI+VQ4AAAAAAiosLNTChQt17733qmvXrpo7d67OnTvnq9eqVUtPPPGEvvjiC3333XcaP368ateubWBiAAAAIHQFbUzZjh07FB8frzp16lx2XZ06dXTs2LFg3faqrVixQlOnTvV9LiwslCTdc889vmN//vOfNXjwYN/nl19+WWvXrtXXX3+t2NhY9ejRQ3v37tWGDRsUHR2t9PT0yvsBAAAAAKASHDp0SDNnztTMmTN15MgRv3rjxo01ceJEJSYmqlmzZgYkBAAAAKqeoDVjLBaLzp49e8V1+/btU1RUVLBue9WOHTumDRs2+B2/8Ng/N4kiIiK0bt06vfbaa1q4cKGWLFmiBg0aaMyYMZo6dapiYmIqPDcAAAAAVDSv16uvvvpKbrdb77//voqLi/3WdOvWTTabTcOHD1d4eLgBKQEAAICqK2jNmLi4OG3atEl5eXmXbLYcPXpUW7ZsuWg3SmUZM2aMxowZc83nRUZG6i9/+Yv+8pe/BD/UFXg8Hnk8HklSUVGRzGZzpWcAAAAAUH2dOXNGb7/9ttxud8B3ZV533XUaMWKEbDZbhY5oBgAAAKq7oL2EZNSoUTpx4oQmTZrkGwF2oZKSEiUlJenMmTMaPXp0sG5braWkpKhVq1Zq1aqVfvrpJ504ccLoSAAAAACqgT179uiPf/yjYmJiNH78eL9GzE033aTXXntN+/fvV0ZGBo0YAAAAoJxMXq/XG4wLlZSU6IEHHlBmZqZatGih/v37a9asWercubPuu+8+LV++XHv27FF8fLxWrlwpk8kUjNtWaxfujImPj5fZbFZOTo6xoQAAAABUSaWlpVq7dq3cbreWL1+uQH8V7Nu3r+x2ux588EHVqhW0QQoAAABAlRcXFydJys7OLtP5QWvGSNLZs2f1/PPPa86cOSoqKrqoZjabNW7cOE2bNk0RERHBumWNUd7/RwMAAAComU6dOqV58+YpNTVVO3bs8KvXqVNHo0ePVlJSkm677TYDEgIAAAChL6SaMecdO3ZMmZmZys3NVWlpqWJiYtSnTx81bdo02LeqMWjGAAAAALgWOTk5Sk1N1bx583T69Gm/emxsrGw2m0aPHq369esbkBAAAACoOsr7HX2F7DuPjo7WY489VhGXBgAAAABcQklJiZYvXy632621a9f61U0mkwYPHiybzaYHHnhAYWFBe40oAAAAgMtgCDAAAAAAVHEnTpxQWlqapk+frr179/rVrVarEhISNHnyZLVp08aAhAAAAEDNFvRmTFZWlrKysvTLL7/o3LlzAdeYTCalpaUF+9bVjsfjkcfjkSQVFRXJbDYbGwgAAABASPnuu+/kcrn09ttv6+zZs3719u3by2636+mnn1bt2rUNSAgAAABACmIz5tdff9WwYcP05Zdf6kqvoaEZc3VSUlKUnJzs+xwdHW1gGgAAAAChoLCwUB988IFcLpe+/vprv7rZbNYjjzwiu92u++67TyaTyYCUAAAAAC4UtGbMv/zLv+iLL75QXFycEhMT1bp1a9WtWzdYl6+RnnvuOY0ZM0aSFB8fz84YAAAAoAb75ZdfNHPmTM2cOVOHDx/2q99www2aOHGiJk6cqGbNmhmQEAAAAMClBK0Zs2zZMsXExOgf//gHTZggsVqtslqtkiSLxWJsGAAAAACVzuv16uuvv5bb7dbixYtVXFzst+buu++W3W7X8OHDdd111xmQEgAAAMCVBK0ZU1JSom7dutGIAQAAAIByKigo0Ntvvy23263vvvvOrx4eHq4RI0YoKSlJd955pwEJAQAAAFyLoDVjunTpEnCrPAAAAADg6uTm5mrGjBmaM2eOfv31V7/6TTfdpMmTJ2v8+PG8UxIAAACoQoLWjHn55Zc1YMAAffLJJxowYECwLgsAAAAA1ZrX69Wnn34ql8ulZcuWyev1+q3p06ePbDabHnroIdWqFbS/xgEAAACoJEH7U3zfvn21cOFCPfPMMxo0aJAeeOABNWvWTGFhYQHX9+zZM1i3BgAAAIAqJy8vT/PmzVNqaqq2b9/uV69du7aeeeYZ2Ww2xcXFGZAQAAAAQLAE9VeqTp8+LYvFogULFmjBggWXXVtSUhLMW1dLHo9HHo9HklRUVCSz2WxsIAAAAADltmPHDrndbs2bN095eXl+9ZtvvllJSUkaM2aMrFZr5QcEAAAAEHRBa8bMnTtXCQkJ8nq96ty5s1q3bq26desG6/I1UkpKipKTk32fmQkNAAAAVE0lJSVasWKF3G631qxZ41c3mUwaOHCg7Ha74uPjLzlhAAAAAEDVZPIGGkhcBrfddptyc3P18ccfq3fv3sG4ZI134c6Y+Ph4mc1m5eTkGBsKAAAAwFU7ceKE0tPTNX36dOXm5vrV69evr4SEBE2ePFk333xz5QcEAAAAcFXOjw7Ozs4u0/lB2xmTm5urXr160YgJIqvV6htLYLFYjA0DAAAA4Kpt2bJFbrdbb731ls6ePetXv/3222W32/X000+rTp06BiQEAAAAUJmC1oxp1qyZateuHazLAQAAAECVUlRUpA8++EAul0tfffWVX91sNmvYsGGy2Wzq2bOnTCaTASkBAAAAGCFozZhnnnlGf//73/Xrr7+qQYMGwbosAAAAAIS0w4cPa+bMmZo5c6Z++eUXv3p0dLQSExM1adIkxcTEGJAQAAAAgNGC1oz5t3/7N23ZskV9+vTRtGnT1KtXL37TCwAAAEC15PV6tX79erlcLi1evFhFRUV+a+666y7ZbDY9/vjjuu666wxICQAAACBUBK0ZExsbK0nau3ev+vXrJ4vFoiZNmigsLMxvrclk0u7du4N1awAAAACoFAUFBVq0aJHcbrc2b97sVw8PD9cTTzwhm82mu+66y4CEAAAAAEJR0Joxubm5F30uLCzUvn37gnV5AAAAADDM3r17NWPGDM2ZM0cnTpzwq8fExGjy5MkaP368brjhBgMSAgAAAAhlQWvGlJaWButSAAAAAGA4r9erzz77TG63Wx999FHAv/P07t1bNptNQ4cOVa1aQfvrFQAAAIBqhr8thDCPxyOPxyNJKioqktlsNjYQAAAAUAPk5eVpwYIFcrvdysnJ8avXrl1bo0aNUlJSktq3b29AQgAAAABVDc2YEJaSkqLk5GTf5+joaAPTAAAAANXbjh07NH36dM2dO1enTp3yq7dp00ZJSUkaM2aMrr/+egMSAgAAAKiqTF6v11uWE8+/D6ZZs2Yym83X/H6Y5s2bl+W2NcqFO2Pi4+NlNpsD/mYeAAAAgLIpKSnRypUr5XK5tHr16oBrBg4cKJvNpgEDBigsLKySEwIAAAAIBXFxcZKk7OzsMp1f5p0xLVu2VFhYmLZt26a2bduqZcuWMplMV3WuyWRScXFxWW9dY1itVlmtVkmSxWIxNgwAAABQjfz6669KT0/X9OnTtWfPHr96/fr1NXbsWE2ZMkWxsbEGJAQAAABQnZS5GdOzZ0+ZTCbVrl37os8AAAAAEKq+//57ud1uvfXWWyooKPCrx8XFyW636+mnn1bdunUNSAgAAACgOipzMyYzM/OynwEAAAAgFBQVFenDDz+U2+3WF1984VcPCwvTww8/LLvdrl69evFLZgAAAACCrszNmNatW+uxxx7Tf/3XfwUzDwAAAAAExeHDhzV79my98cYbOnTokF+9UaNGSkxM1MSJE3mnJQAAAIAKVeZmTG5uro4dOxbMLAAAAABQLl6vVxs2bJDb7da7776roqIivzVdu3aV3W7X448/roiICANSAgAAAKhpytyMAQAAAIBQcfbsWb3zzjtyuVzatGmTX91iseiJJ56QzWbT3XffbUBCAAAAADUZzRgAAAAAVda+ffs0Y8YMzZ49WydOnPCrN2vWTJMmTdKECRPUuHFjAxICAAAAAM0YAAAAAFWM1+vVunXr5Ha7tXTpUpWWlvqt6dmzp2w2mx5++GFZLBYDUgIAAADA/ylXM2bLli36y1/+UqZz//3f/708t64RPB6PPB6PJKmoqEhms9nYQAAAAICBTp8+rQULFsjtdmvbtm1+9cjISI0cOVI2m00dOnQwICEAAAAABGbyer3espwYFhYmk8l0zed5vV6ZTCaVlJSU5bY1yiuvvKLk5GTf5+joaB09etTARAAAAEDl27lzp6ZPn66MjAydOnXKr966dWslJSVp7Nixuv766w1ICAAAAKC6i4uLkyRlZ2eX6fxy7Yxp06aNunfvXp5L4DKee+45jRkzRpIUHx/PzhgAAADUGKWlpVq5cqXcbrc++eSTgGsGDBggm82mAQMG8GdlAAAAACGtXM2Y++67T+np6cHKgn9itVpltVoliTnXAAAAqBF+++03ZWRkKDU1VT///LNfvV69eho7dqymTJmitm3bGpAQAAAAAK5duZoxAAAAABAMW7duldvt1ptvvqmCggK/+m233SabzaZRo0apbt26BiQEAAAAgLKjGQMAAADAEEVFRVqyZIncbrc+//xzv3pYWJiGDh0qm82mPn36lOmdlQAAAAAQCmjGAAAAAKhUR44c0ezZs/XGG2/o4MGDfvWGDRtqwoQJmjx5spo3b25AQgAAAAAILpoxAAAAACrFhg0b5Ha79e6776qwsNCv3qVLF9ntdj3xxBOKiIgwICEAAAAAVIwyN2NKS0uDmQMAAABANXT27Fm9++67crvd+uabb/zqFotFjz/+uGw2m+6++25GkQEAAAColtgZAwAAACDo9u/frxkzZmj27Nk6fvy4X71p06aaNGmSJkyYoCZNmhiQEAAAAAAqD80YAAAAAEHh9XqVmZkpt9utJUuWBNxN36NHD9lsNg0bNkwWi8WAlAAAAABQ+WjGAAAAACiX06dP680335Tb7VZ2drZfPTIyUk8//bSSkpLUqVOnyg8IAAAAAAajGQMAAACgTH766SdNnz5dGRkZOnnypF+9VatWmjJlisaNG6cGDRoYkBAAAAAAQgPNGAAAAABXrbS0VJ988oncbrdWrlwZcE18fLzsdrsGDhwos9lcyQkB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1alTx7kChgIGAAAAAAAAqNooY9xs5cqVioiIcL7u27evOnTooDfeeENz5szxYTIAnnL69OlSK2AuV8AMGzbMWcDUrFnTy0kBAAAAAAAA+AJljJtdWsRIUlBQkNq3b6+cnBwfJQLgCadPn9ZHH33kLGDOnTvnclzdunWdBcxdd91FAQMAAAAAAABUQwFbxuzcuVMff/yxtm3bpm3btunQoUOSJIfDcdn9CgsLNWvWLH3wwQc6cOCA6tevr/79+2vGjBlq0qSJ23MWFxdr+/bt6tevn9uPDcC7CgoKnAXMmjVrLlvADB8+XAkJCerbty8FDAAAAAAAAFDNBWwZM2PGDC1fvrxC+5w7d069e/dWVlaWGjdurGHDhik3N1fz5s3TRx99pKysLLVq1cqtOV9//XUdOHBADz/8sFuPC8A7rraAMZvNGjZsmBITE9W3b1/VqFHDy0kBAAAAAAAA+KuALWN69Oihjh07qnv37urevbtatGih8+fPX3afmTNnKisrSz169ND69esVFhYmSXrllVc0depUTZw4URkZGc7xNptNeXl5lz1mrVq11KxZM5fbtm7dqqeeekrPPPOMOnToULEPCMBnCgoKtHLlSmcBU97cYjabS62AoYABAAAAAAAA4IrBcaX7egWIkJAQnT9/vtzblBUVFalhw4Y6efKkdu3apS5dupTa3qlTJ+3evVs7duxQt27dJEn/+te/9NBDD132vLGxsaUKnItyc3N12223qWfPnlq4cKEMBkPlPtj/Ex0dLUnKzs6+puMAcO3UqVPOAmbt2rXlFjD16tVzFjB9+vShgAEAAAAAAACqgWv9GX3AroypqM2bN+vkyZOKiooqU8RI0siRI7V7926tXLnSWcY8+OCDevDBByt8LpvNpkGDBqlFixaaP3/+NRcxADzj1KlTWrFihdLT07Vu3brLFjB33323EhIS1Lt3bwoYAAAAAAAAABVSbcqYr776SpLUtWtXl9svvr979+5rOk9RUZHuuecenT17Vhs2bFBoaGiF9r/Yrv3a999/r6ZNm+rrr7++4jHatm1boXNK0qFDh1RQUHDFcddff73q1KlToWOfOnVKhw8fvuK48PBwNWnSpELHlnRV10TiupSnul2X7du3a8OGDVq3bp0+++wz2e12l+Pq16+v4cOHKzExUb1795bJZLrisQP5uvD3xTWui2tc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G5SSkuKNmE4lJSV65JFHSuXYuXOnXn/9dRkMBj300EPO90eMGKF27dppwYIFmjFjRpln0DgcDm3evFmbN292S7a4uDh16NBBubm5evbZZ+VwOJzbli5dqiVLligsLEwTJ0685nP961//Uk5OTpn3V69eLUn6zW9+43zv4uqUb775xuWxHnjgATVs2FAvvfSS5syZU+bWcxcuXNC6detcliUV+Xq88847Lo+xZs0aORyOUpkBAAAAf8ZtygAAAABU2NSpU/Xaa6/p1KlTLrePHj1aL730kj7//HPddNNN6t69u3788Udt375dTzzxhF5++WWvZR08eLC++uorRUVFqWfPnjp58qQ2bNggu92uZ555RjfffLNzbHBwsJYtW6Z+/frp2Wef1euvv66OHTuqYcOGys/P15dffqmjR4/q1Vdf1R133HHN2QwGgxYsWKBevXrphRde0NKlS9W5c2cdOHBAmzdvVnBwsKxWq3Ol0bX417/+pYceekjt2rXTTTfdpODgYH399df66quvFBISomeffdY5tkWLFurYsaN27NihW265RdHR0TIajRo6dKiGDh0qs9ms5cuXa8iQIXrggQc0c+ZMtW/fXvXq1VNeXp527dolm82mpUuXqn379qVyVOTr8eGHH2rcuHGKiopShw4dFBoaqpycHG3dulVBQUGaOXPmNV8XAAAAwBtYGQMAAACgwurVq6cpU6aUuz00NFSffvqpRo8erYKCAq1evVrFxcVauHChJk2a5L2g+mUlT1ZWlvr27auNGzcqIyND7dq107x58zRjxowy41u3bq0vvvhCM2fOVNOmTZWVlaUlS5Zo37596tKli9544w2NHTvWbfk6dOigXbt26Xe/+51Onz6txYsX65tvvtHw4cO1efNmJSYmuuU8M2bM0MSJE2UwGPTpp59q5cqVKiwsVHJysr788ssy5dKHH36o4cOH64cfftDbb78tq9WqXbt2Obffdttt2rNnj5588knVqVNHmZmZWrZsmfbv36/Y2FilpaWpb9++ZXJU5OvxxBNPaNKkSQoPD9emTZu0dOlSHT16VKNGjdLWrVuVkJDglmsDAAAAeJrBcek6eAAAAAAAPCAjI0O9evXS+PHjlZaW5us4AAAAgFexMgYAAAAAAAAAAMCDKGMAAAAAAAAAAAA8iDIGAAAAAAAAAADAg3hmDAAAAAAA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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, ax = plt.subplots(figsize=(11, 5), dpi=150)\n", + "ax.plot(minigrid_times.keys(), minigrid_times.values(), label=\"MiniGrid\", color=\"black\", marker=\"o\")\n", + "ax.set_xlabel(\"Number of steps\")\n", + "ax.set_ylabel(\"Time (s)\")\n", + "ax.set_title(\"MiniGrid\")\n", + "ax.set_yscale(\"log\")\n", + "ax.set_xscale(\"log\")\n", + "ax.grid(axis=\"y\", linestyle=(0, (6, 8)), alpha=0.6)\n", + "fig.legend(loc=\"lower center\", ncol=2, bbox_to_anchor=(0.53, -0.07), shadow=False, frameon=False)\n", + "fig.tight_layout()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "It scales quite linearly with the number of steps. That's a reasonable time for a single environment that runs on the CPU.\n", + "\n", + "Let's see how NAVIX compares to MiniGrid with a single environment." + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": {}, + "outputs": [], + "source": [ + "import functools\n", + "import jax\n", + "import navix as nx\n", + "\n", + "\n", + "@functools.partial(jax.jit, static_argnums=1)\n", + "def benchmark_navix(seed, num_steps):\n", + " def run(seed):\n", + " env = nx.make('Navix-Empty-8x8-v0') # Create the environment\n", + " key = jax.random.PRNGKey(seed)\n", + " timestep = env.reset(key)\n", + " actions = jax.random.randint(key, (num_steps,), 0, env.action_space.n)\n", + "\n", + " def body_fun(timestep, action):\n", + " timestep = env.step(timestep, action) # Update the environment state\n", + " return timestep, ()\n", + "\n", + " return jax.lax.scan(body_fun, timestep, actions, unroll=10)[0]\n", + "\n", + " final_timestep = jax.jit(jax.vmap(run))(seed)\n", + " return final_timestep\n", + "\n", + "seed = jax.random.PRNGKey(0)\n", + "navix_times = {}\n", + "for i in num_steps_set:\n", + " benchmark_navix_jit = benchmark_navix.lower(seed, i).compile()\n", + " navix_times[i] = timeit.timeit(lambda: benchmark_navix_jit(seed), number=1)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "metadata": { + "tags": [ + "hide_input" + ] + }, + "outputs": [ + { + "data": { + "image/png": "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eeYZQ5JRtmxZY/78+deUCwAAACjuWBkDAAAAoNAdPnzY9+vo0aPKy8uTJGVmZurUqVM6fPjwJeefPXtW8+bNkyTfqC9/zq+m+f77703vcd5zzz2niIgI0/HOnTurbNmykqQffvjhktqMGTMkSV26dFGXLl2u5ke8RLly5fSHP/zBb61nz56SpK1bt172+nr16ql///6m440aNVLjxo0lSW3bttX9999vOqd9+/YqV67c797Dn7p166pFixYyDENfffXVZc8bOHCgoqOjr+o9s7OzNWDAAL3++uuKjIzUihUr9OSTT15TLgAAAKC4oxkDAAAAoNAZhnHJr6ysLH333XcaPHiwli1bpnbt2l0yamzz5s2+Te5jY2NVq1Ytv79iYmJ81+zZs8fvve+55x6/x8uUKaOoqChJ0okTJ3zHc3Nz9c0330jyjvQqiJiYGFWsWNFvrU6dOqZ7/tadd96pkJAQv7WaNWtKku666y6/dZvNpurVq0uSTp48aarn5+dr3rx56tGjh+rVq6eIiAiFhIT4fm3cuFGSfPv0+NOmTZvL1i6Wnp6url276p133lHNmjWVnJyshx566KquBQAAAEqSMlYHAAAAAFD6hIeH6/bbb9e0adN04sQJffDBBxoyZIj27t2rSpUq6ddff/Wde7kVL7+VmZnp93hkZORlrylTxvtXopycHN+x48eP+17Xr1//qu5dkHvm5uZe1/XX+nNJ3mfUrVs3rV271nesbNmyqlq1qsLCwiR5m0Q5OTnKyMi47PvXqFHjsrWLLVq0yPfPS5cuVcuWLa/qOgAAAKCkYWUMAAAAAEuNGDFCknTq1CmtWLFCknxjzCQpKyvLtLLG368OHToEJM/lVqSUBP/85z+1du1aRURE6PXXX9eePXt09uxZHT9+XIcOHdKhQ4d8K4kMw7js+9hstqu6X/v27XXDDTdIkp5++mkdPXr0+n8IAAAAoBiiGQMAAADAUhevPtm9e7ckqVatWr5jlxs/VlguXiVS1PcubPPnz5ck/f3vf9f48eNVr149U/Pp0KFDAbtfgwYNtG7dOtWvX19bt27VAw88oCNHjgTs/QEAAIDigmYMAAAAAEtdvDdJhQoVJHn3Qylbtqwk73irolSmTBndfffdlty7sO3bt0+SLjsuLC0tTTt37gzoPW+88UatW7dODRo0UEpKijp06BDQhg8A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kcvrBACgVFm1SnrgASkpKbvt8celadMkP76LDAAousjISEnSnj17CnU8YYwXu3ZkTFRUlHx9fbV3715jiwIAACjlxowZow8//LDQx9evX1/jxo3TiBEjVJZv6QIAUDQ2m/Sf/0hPPSVlZtrbfHyk6dOlceOMrQ0AUKIUNYzhqwFezGw2y2w2S5L8/f2NLQYAAAA6ffq0Zs2aVahje/Xqpccff1ydO3eWj4+PawsDAKA0Sk+XnnhCeu+97LawMGnBAvv0ZAAAeBHCGAAAACCfrFZrrjVi8mPChAl644033FARAACl1MWL0qBB0vr12W01atinK2va1Li6AADIA2EMAAAAkE/5WSfGmV27drm4EgAASrEjR6QePaSff85uu+02afly6aabDCsLAIDrYX4EAAAAIB9++ukn7d69u1DHJiYmurgaAABKqS1bpNtvzxnEDBwobdpEEAMA8GqEMQAAAEAeEhMT9eGHH+qOO+5Q06ZNdfr06UKdJywszMWVAQBQCs2fL3XsKJ05k932/PP29qAgw8oCACA/mKYMAAAAuIbNZtM333yj2NhYLVy4UFeuXCnyOTt27Fj0wgAAKK1sNmnKFOnFF7Pb/P2lDz+URowwri4AAAqAMAYAAACQFB8fr48++khWq1X79+932qdp06b6+eeflZGRke/z+vv7y2KxuKpMAABKl6tXpehoac6c7LYKFaQlS6QOHYyrCwCAAmKaMgAAAJRa6enpWr16te6//35Vr15dzzzzTK4gxmw2a9y4cfr++++1a9cujR49ukDXGDVqlCIiIlxZNgAApcO5c9K99+YMYurXt68bQxADAChmGBkDAACAUufQoUOaMWOGZs6cqVOnTjnt06lTJ1ksFvXr109B18xDP336dB04cEBxcXE3vE6HDh00ffp0l9UNAECpsW+f1KOHdOhQdlvHjtKnn9pHxgAAUMwQxgAAAKBUSE5O1tKlSxUbG6uNGzc67VOtWjWNGjVKo0aNUp06dZz2CQoK0meffabx48dr5syZSktLy9XH399fo0aN0vTp0xUYGOjS9wEAQIn35ZfSgAFSQkJ226hR0vvvSwEBhpUFAEBRmGw2m83oInBjkZGRkqQ9e/YYXAkAAEDx8v3338tqtWru3LlKuPZDnT/4+fmpd+/eslgs6tKli3x9ffN97vj4eFmtVm3atEmJiYkKCwtT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f/65Hn74YVe+FQAG8tSzJCYmRuHh4Ro8eLCr3wIAL+HJn02qVasmPz8/NWvWTIsXL3bl2wBgME88S7Zt26Z69erpscceU2hoqMLCwjR06FBduHDBHW+p2GKaMhiqb9++Wr58ea726/2xTElJ0T333KMtW7aoSpUquvvuu3XkyBFt27ZN4eHh2rJli+rUqeP0WKYpA0omTz9LJGn69OmaMGGCvv/+ezVt2tQl7wOAsTz1LDl9+rSqVKkiSfL19dW7776rMWPGuPbNADCMJ54l8fHxql+/vtauXau2bdtq4sSJio2NZZoyoITxxPNk3bp12rFjh26//XYlJyfLarVq2bJlWrZsmfr06eOW9wXAszzxLClTpowCAgLUokULPf/88zp37pwmTJigtm3batmyZe54W8USk0HCUG3btlWzZs3Upk0btWnTRrVq1dLVq1eve8yUKVO0ZcsWtW3bVuvXr1doaKgkadq0aZowYYJGjx6tTZs2eaB6AN7C08+SrVu36rnnntMLL7xAEAOUIJ56llSqVEnbt29XYmKi1q5dq3HjxqlixYrq37+/u94aAA/yxLPk73//u7p27aq2bdu6860AMJgnniddunRRly5dHK979uypu+++W6+88gphDFBCeOJZkpmZKZvNpmXLljmmeQ8MDNTAgQP1yy+/qF69em57f8UJI2PgVQIDA3X16tU8k9nU1FRVrlxZFy9e1M6dO9WyZcsc+5s3b65du3bpu+++U+vWrXMdz8gYoHRw57PkyJEjuuOOO9S+fXstWLAgX0N7ARRP7v65JMv//d//KS4uTgcOHHBp/QC8g6ufJT/99JNat26tLVu2qHbt2pKkV199VR9//LH27Nmj4OBgBQQEuP19AfA8T/1s8sYbb+j555+/4Ye1AIondzxLKleurLp16+rbb7919Dt37pzCw8O1fPly9e7d231vqBhhzRgUK5s3b9bFixdVt27dXA8CSRowYIAkaeXKlZ4uDUAxUthnSUJCgnr06KFatWpp9uzZBDFAKeeqn0tatGihQ4cOuaVGAN6voM+SX3/9VampqWrVqpXKly+v8uXL61//+pdOnTql8uXLa8aMGR6tH4D34DMTAK5QmGdJo0aN8gx3fHyIILIwTRmKlR9//FGS1KpVK6f7s9p37drlsZoAFD+FeZakpqbq/vvv15UrV7RhwwYFBQW5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Vbdeb+vWrXrkkUfUpEkTdenSRTt37tSiRYv0448/atu2bbrvvvt09OhRtW/fXufOnVNcXJwGDRqkzz77TF26dMl1vt9//1133HGHrl69qo4dO+rChQvauHGjRowYoUOHDuUKGA4cOKB7771Xx48fV61atdSlSxclJiZqy5Yt6tWrl15//XU9/fTTua6TnJysDh066OjRo+rQoYNatWqVr2nddu/erU6dOuncuXNq0KCB7r//fh07dkxLly7VypUr9cknn2jgwIGSpBYtWmjEiBFau3at4uPj1b9/f4WGhkqSbrrpputeZ8eOHWrXrp1SUlLUrFkz9enTR1euXNGhQ4c0ffp09e3bV1WqVFG7du10+vRprVu3TnXr1lW7du0c52jRooXj199++6169OihCxcuqEGDBurRo4fOnj2rdevWae3atZo7d64GDx5cpN+P48ePq1WrVvr9999Vr149de/eXRkZGTp69Kg+/PBDtW3bVg0aNLjhPQYAAAAMZwMAAAAAJyTZfH19bTabzXb69GlbcHCwLSQkxHbmzBlHn6lTp9ok2V566aUcx3bo0MEmyXb48OFc5z18+LBNkq1Dhw452l966SWbJJsk23vvvedoT01Ntd177702SbbGjRvbOnXqZLt8+bJjf2xsrE2SrX379jnOt3HjRsf57rvvvhzHbNu2zRYaGmrz8fGx7dixw9Genp5ua9q0qU2S7bXXXrNlZGQ49v3yyy+22rVr23x9fW27d+/O9X4k2dq2bWu7cOFC3jf1TzIzMx3Xe+aZZ2yZmZmOfYsXL7b5+PjYQkNDbadOncpx3PXub14eeughmyTbG2+8kWvf3r17c1wj696NGDHC6bkuXrxoq1Klis3X19c2Z86cHPu2b99uK1++vC00NDTHn5XC/H68+OKLNkm2cePG5arh6NGjtl9//TXf7x8AAAAwEtOUAQAAALihiIgIPfroo0pKStK//vUvt16rXbt2euSRRxyv/f399fjjj0uS9u3bp/fee08hISGO/SNHjlSlSpX07bffKi0tLdf5fHx89NZbb+U4pk2bNho7dqwyMzP17rvvOtpXrlyp3bt3q3///vrrX/8qH5/sfzLdcsst+ve//62MjAx9+OGHTmv/z3/+I7PZnO/3umnTJu3evVs1atTQlClTZDKZHPv69++vvn376vLly5oxY0a+z5mXs2fPSpLuvffeXPsaNmyoKlWq5PtcM2bM0G+//abx48dr6NChOfbdeuut+sc//qHLly9rzpw5uY4tyO/H9WquUaOG6tatm++aAQAAACMRxgAAAADIl2effVYhISF67733FB8f77brREVF5WrLWqi+Vq1aql+/fo59vr6+qlmzptLS0nTu3Llcx7Zo0cLpVFZDhgyRJH311VeOtvXr10uS7r//fqe13X333ZKkbdu25dpXpUoV3XrrrU6Py0vWtQcNGiR/f/9c+4cPH56rxsJq3bq1JGns2LHatGmT0tPTC32uotyngvx+ZNX897//XatWrVJKSkqhawYAAACMRBgDAAAAIF/Cw8M1duxYXblyxa3rxlSrVi1XW9a6KM72Xbv/6tWrufbVrFnT6TG1atWSJJ06dcrRduTIEUnS0KFDcyxcn7WFh4dLktPQp0aNGnm8o7xlXTurlrxqPHnyZIHP/Wd//etf1bFjR23evFn33HOPypcvr6ioKE2fPl0XL14s0Lmy7tNdd93l9D61adNGkvP7VJDfj5EjR2rQoEH6+eef1atXL5UvX17t27fXK6+8otOnTxeoZgAAAMBIfkYXAAAAAKD4+Otf/6p3331X77//vp555plCnSMzM/O6+6+dGqwg+1whq7auXbsqIiIiz36VKlXK1RYYGOjyeq6dtqyoypYtqw0bNmjz5s1auXKlNm3apA0bNujzzz/X1KlT9dVXX6levXr5OlfWfRowYECO6cb+rGHDhkWq2dfXVwsWLNBzzz2n5cuXa8OGDdq6dau++uorvfrqq1q7dq3uvPPOIl0DAAAA8ATCGAAAAAD5VqlSJT3++OOaOnWqpk6dqqpVqzrtFxAQIEm6fPlyrn3Hjx93a41/dvTo0eu2X/seqlevLkmKjo5W//793V5b1rXzqjFrBEpeI4IKymQyqV27dmrXrp0k6cyZMxo/frzmzZun559/XgsXLszXeapXr679+/frueeec0wlll8F+f3I0rJlS7Vs2VITJ07UpUuXNHHiRL355psaP36806nQAAAAAG/DNGUAAAAACmTChAkKCwvTBx98kOf0WVmLwR84cCDXvs8//9yt9f3ZDz/8oF9++SVX+/z58yXJEUxI0n333SdJWrp0qUdqy1pbZdGiRcrIyMi1f86cOTn6uVrlypU1ceJESdJPP/3kaM8K0/JaV6Yo96kgvx/OlC1bVlOnTpXJZMpRMwAAAODNCGMAAAAAFEjFihX1xBNP6OrVq7JarU77dOjQQZL073//W1euXHG0b9iwQTExMZ4o0yEzM1OPP/54jjp27Niht99+WyaTSY8++qijvX///mrcuLHmzp2ryZMn51qDxmazafPmzdq8ebNLauvYsaOaNm2qI0eO6MUXX5TNZnPsW7p0qZYsWaLQ0FCNHj26yNd6//33dfjw4Vzta9askSTdfPPNjras0Sn79+93eq6HH35YlStX1muvvaYPPvgg19Rz6enpWrdundOwpCC/Hx9//LHTc3z22Wey2Ww5agYAAAC8GdOUAQAAACiwCRMm6K233tKlS5ec7h8yZIhee+01ffPNN2rUqJHatGmjEydOaPv27Xrqqaf0xhtveKzWnj176scff1TdunXVvn17Xbx4URs2bFBaWppeeOEF3XrrrY6+fn5+WrZsmbp06aIXX3xRb7/9tpo1a6bKlSvr3Llz+uGHH3TmzBm9+eabuuuuu4pcm8lk0ty5c3XPPffolVde0dKlS9WiRQsdO3ZMmzdvlp+fn6xWq2OkUVG8//77evTRR9W4cWM1atRIfn5+2rdvn3788UcFBgbqxRdfdPStVauWmjVrpu+++0633XabIiMj5evrq969e6t3794ym81avny5evXqpYcfflhTpkxRkyZNVL58eZ0+fVo7d+5UQkKCli5dqiZNmuSooyC/H59++qkeeugh1a1bV02bNlVQUJAOHz6srVu3ysfHR1OmTCnyfQEAAAA8gZExAAAAAAqsfPnyGj9+fJ77g4KC9OWXX2rIkCFKTEzUmjVrlJGRoQULFmjs2LGeK1T2kTxbtmzRvffeq40bN2rTpk1q3LixZs6cqcmTJ+fqX69ePX3//feaMmWKqlevri1btmjJkiU6cOCAWrZsqXfeeUfDhg1zWX1NmzbVzp079X//93+6fPmyFi9erP3796tv377avHmzBg0a5JLrTJ48WaNHj5bJZNKXX36plStXKjk5WdHR0frhhx9yhUuffvqp+vbtq0OHDumjjz6S1WrVzp07HfvvuOMO7d69W88884zKli2ruLg4LVu2TEePHlWHDh00a9Ys3XvvvbnqKMjvx1NPPaWxY8cqLCxMX331lZYuXaozZ85o8ODB2rp1qwYOHOiSewMAAAC4m8l27Th4AAAA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LsoUZZJUPY/RFFnTNl29evW6x1eoUMExFZuz0S7t2rWTzWZzbA0aNMjzXDVq1Mhv2ZKkU6dOSZJq1qzpdH+tWrUKdD54j/DwcI0dO1ZXrlzRq6++et2+KSkpWrx4sUwmkx588MEc+1q0aKHIyEgdP35ccXFxOfb1799fQUFB2rBhg3777TdJ9j/D69atU0BAgAYNGlSo2p9++mmdOXNGQ4YMUfny5fXOO+9o+/bthToXAAAA3I81YwAAAIA/lCtXThcuXCj08W+88Uahpip74YUXirxmjCt1795dZrNZH330kU6dOqVGjRqpVatWRTrntdOTFYa/v78aNWqkn3/+Wd9//32BRrb8WX6nJyvRypWTCvtnPSmp8FOVnTghhYQU7lgX/znP8te//lXvvvuu3n//fT3zzDN59luxYoUuXryogIAAp6OhskLCjz/+WB07dnS0h4WFqW/fvpo3b54++eQTTZgwQfPnz1d6erruv/9+lS9fvsA1b9y4UTNmzFC1atX0/vvva8GCBRozZozGjBmj7du355hKDwAAAN6Bn9AAAACAP5hMJpnN5kIfP27cOL322mtKK8AC5f7+/ho3blyRrutqZcqU0cCBA/Xhhx9Kkp544gmDK7Lr1q2bfv75Z82fP189e/b02HWrVKkiSTp69KjT/Xm1ezWTSSrsnzl//8Jf12wufBjjJpUqVdLjjz+uqVOnaurUqapatarTflnrwaSmpmrz5s15nm/x4sV65513coR+w4cP17x58zRnzhxNmDChSCPOUlJSHGvFvPXWWypbtqyio6P10Ucf6euvv1ZMTIyefvrpAp8XAAAA7sU0ZQAAAICL3HTTTRo5cmSBjhk1apQiIiLcU1ARDB8+XBUrVlSlSpU0dOhQo8uRJD3++OMKCAjQvHnz9L///c9j123Xrp0kae3atbp06VKu/fPnz/dYLXCPCRMmKCwsTB988IFOnjyZa/+104r9/vvvOabEu3br2LGjLl26pOXLl+c4/r777lPlypX1ww8/aMWKFdq6dasqVKigHj16FLjWf/7zn/rll1/Ut29f9evXT5I9SP7ggw8UEBCgl156qXgGhAAAACUcYQwAAADgQtOnT1eHDh3y1bdDhw6aPn26mysqnLvvvlvnzp3T2bNn81wrxdNq1qypadOmKTMzUz169NDMmTOVkZGRq9++ffuKNN3cn9WtW1dRUVG6dOmSJkyYkOOaa9asYeH0EqBixYp64okndPXqVVmt1lz758+fr7S0NHXp0uW604plTV+WNfIli5+fn2OfxWKRJA0aNEgBAQEFqnPXrl16/fXXVbZsWb399ts59jVq1EjPPvusrly5oscee6xA5wUAAID7EcYAAAAALhQUFKTPPvtMY8aMkX8e0zn5+/trzJgxWrt2LeuXFNDYsWP1zjvvKC0tTaNHj1blypXVrVs3DR06VN27d1dkZKQaNWqkM2fOqGvXrqpUqZJLrvvee+8pIiJCsbGxatCggYYMGaIOHTqoZ8+ejimjULxNmDBBZcuWVXJycq59WVOUOVsr5loDBgyQv7+/1q5dq7Nnz+bYN3z4cEnZa8tkvc6vzMxM/d///Z/S09P1yiuvOF036fnnn1f9+vW1Zs0aLVy4sEDnBwAAgHsRxgAAAAAuFhQUpP/+9786fvy4Xn75Zd1333264447dN999+nll1/W8ePH9d///pcgppAee+wx/frrr/rb3/6mOnXqaOvWrVq4cKG+/fZbBQYG6vHHH9eWLVv02WefKTQ01CXXzLrOgw8+qISEBC1btkyXLl3SzJkzS9/6HMHB0uXLhduCg42uPk/ly5fX+PHjc7UfOHBA27ZtU3BwsHr37n3dc1SoUEFRUVFKT0/PNX1d69at1ahRI0n2P0933nlngep76623tG3bNt1xxx169NFHnfYpU6aM3n//fUnSk08+qYSEhAJdAwAAAO5jstlsNqOLAAAAAAAAAAAAKKkYGQMAAAAAAAAAAOBGhDEAAAAAAAAAAABuRBgDAAAAAAAAAADgRoQxAAAAAAAAAAAAbkQYAwAAAAAAAAAA4EaEMQAAAAAAAAAAAG5EGAMAAAAAAAAAAOBGhDEAAAAAAAAAAABuRBgDAAAAAAAAAADgRoQxAAAAAAAAAAAAbkQYAwAAAAAAAAAA4EaEMQAAAAAAAAAAAG5EGAMAAAAAAAAAAOBGhDEAAAAAAAAAAABuRBgDAAAAAAAAAADgRoQxAAAAAAAAAAAAbkQYAwAAAAAAAAAA4EaEMQAAAAAAAAAAAG5EGAMAAAAAAAAAAOBGhDEAAAAAAAAAAABuRBgDAAAAAAAAAADgRoQxAAAAAAAAAAAAbkQYAwAAAAAAAAAA4EaEMQAAAAAAAAAAAG5EGAMAAAAAAAAAAOBGhDEAAAAAAAAAAABu9P8nybGQDy0rOQAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, ax = plt.subplots(figsize=(11, 5), dpi=150)\n", + "ax.plot(minigrid_times.keys(), minigrid_times.values(), label=\"MiniGrid\", color=\"black\", marker=\"o\")\n", + "ax.plot(navix_times.keys(), navix_times.values(), label=\"NAVIX\", color=\"red\", marker=\"s\")\n", + "ax.set_xlabel(\"Number of steps\")\n", + "ax.set_ylabel(\"Time (s)\")\n", + "ax.set_title(\"Benchmark\")\n", + "ax.set_yscale(\"log\")\n", + "ax.set_xscale(\"log\")\n", + "ax.grid(axis=\"y\", linestyle=(0, (6, 8)), alpha=0.6)\n", + "fig.legend(loc=\"lower center\", ncol=2, bbox_to_anchor=(0.53, -0.07), shadow=False, frameon=False)\n", + "fig.tight_layout()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Conclusions \n", + "\n", + "The plot shows that NAVIX is about $10 \\times$ faster than MiniGrid for a single environment at $10^6$ steps.\n", + "\n", + "This is not all. NAVIX is designed to scale with the number of parallel environments. Let's see how it performs in the batched case with the next benchmark." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.12" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/mkdocs.yml b/mkdocs.yml index cc6dc78..aa93e18 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -18,9 +18,11 @@ nav: - Quickstart: - "Getting started": examples/getting_started.ipynb - "PPO": examples/ppo.ipynb - - "Customizing envs": examples/customisation.ipynb + # - "Customizing envs": examples/customisation.ipynb - Install: install/index.md - - Becnhmarks: benchmarks/index.md + - Becnhmarks: + - "Timesteps": benchmarks/timesteps.ipynb + - "Environments": benchmarks/envs.ipynb - API: api/ - Changelog: https://github.com/epignatelli/navix/releases @@ -82,14 +84,17 @@ theme: name: Switch to dark mode - scheme: slate - primary: light green + primary: pink accent: red toggle: icon: material/weather-sunny name: Switch to light mode plugins: - - mkdocs-jupyter + - mkdocs-jupyter: + remove_tag_config: + remove_input_tags: + - hide_input - mkdocstrings: default_handler: python handlers: From 168682ca794520dc1c5de6385a16d69031be015c Mon Sep 17 00:00:00 2001 From: epignatelli Date: Sat, 22 Jun 2024 00:13:07 +0100 Subject: [PATCH 2/2] chore(release): bump version --- navix/_version.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/navix/_version.py b/navix/_version.py index 9fef7b9..55d7f03 100644 --- a/navix/_version.py +++ b/navix/_version.py @@ -18,5 +18,5 @@ # under the License. -__version__ = "0.6.10" +__version__ = "0.6.11" __version_info__ = tuple(int(i) for i in __version__.split(".") if i.isdigit())