{ "cells": [ { "cell_type": "markdown", "id": "3988f0c0", "metadata": {}, "source": [ "# `vickrey` — Vickrey's (1969) single-bottleneck departure-time equilibrium\n", "\n", "**What.** `vickrey` is the analytical departure-TIME equilibrium at a single\n", "deterministic-queue (point-queue) bottleneck: commuters choose WHEN to depart,\n", "trading queueing delay against early/late schedule-delay penalties around a\n", "preferred arrival time `t*`. Its closed form is a Wardrop-style equal-cost\n", "condition on the time axis instead of the route axis — the entry point of the\n", "benchmark's analytical dynamic-UE (DUE) track.\n", "\n", "**Why it is in the benchmark.** It is the first model to make departure time\n", "itself an equilibrium choice variable, and proves the pure-queueing user\n", "equilibrium wastes exactly a factor of two versus the system optimum\n", "(Price of Anarchy = 2) — a closed-form, machine-checkable result. See the\n", "[model compendium](../../docs/MODELS.md) (Vickrey 1969) (P1).\n", "\n", "**Scope.** This notebook runs the closed-form UE and SO schedules on the\n", "built-in worked instance and certifies both. It does not benchmark departure-\n", "time solvers against each other — this track ships only the closed form.\n", "\n", "**Canon.** `[vickrey1969congestion]`, [docs/REFERENCES.md](../../docs/REFERENCES.md) / [docs/references.bib](../../docs/references.bib)." ] }, { "cell_type": "markdown", "id": "ecd032e5", "metadata": {}, "source": [ "## How this notebook is graded\n", "\n", "**A notebook never claims a number it does not compute in that cell.** Every\n", "scored quantity below is recomputed live by the P1 `BottleneckEvaluator` from\n", "the emitted cumulative departure curve `R(t)` alone — the deterministic point\n", "queue, each used departure time's generalized cost, and the equilibrium gap\n", "are all reconstructed from `R(t)`, never taken from the solver's own\n", "`r_early`/`t1`/`C*` provenance\n", "([README](../../README.md), *Certified, not self-reported*)." ] }, { "cell_type": "code", "execution_count": 1, "id": "59b40180", "metadata": { "execution": { "iopub.execute_input": "2026-07-21T13:48:42.714388Z", "iopub.status.busy": "2026-07-21T13:48:42.713979Z", "iopub.status.idle": "2026-07-21T13:48:44.760538Z", "shell.execute_reply": "2026-07-21T13:48:44.759110Z" } }, "outputs": [], "source": [ "# Setup. `vickrey` is a core model: a plain `pip install -e .` suffices — no\n", "# optional extra, so no guard cell. The inline backend is Agg-based (headless\n", "# CI renders into the notebook); NEVER matplotlib.use(\"Agg\") in-kernel — it\n", "# silently suppresses inline figure capture.\n", "%matplotlib inline\n", "import numpy as np\n", "\n", "from tabench import (\n", " BottleneckEvaluator,\n", " so_closed_form,\n", " ue_closed_form,\n", " vickrey_worked_scenario,\n", ")" ] }, { "cell_type": "markdown", "id": "7ac2b810", "metadata": {}, "source": [ "## The scenario\n", "\n", "The built-in worked instance: `N=6000` travelers, bottleneck capacity\n", "`s=3000`/h, schedule-delay slopes `alpha=1, beta=0.5, gamma=2`, preferred\n", "arrival `t*=9`. `BottleneckScenario` is frozen and content-hashed (P2)." ] }, { "cell_type": "code", "execution_count": 2, "id": "de261241", "metadata": { "execution": { "iopub.execute_input": "2026-07-21T13:48:44.765337Z", "iopub.status.busy": "2026-07-21T13:48:44.764943Z", "iopub.status.idle": "2026-07-21T13:48:44.771110Z", "shell.execute_reply": "2026-07-21T13:48:44.770179Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "scenario : vickrey-worked\n", "content hash : a4ef2d96f75397f1…\n", "N=6000.0, s=3000.0, alpha=1.0, beta=0.5, gamma=2.0, t*=9.0\n", "equilibrium cost C* (property) : 0.8\n", "task : departure-time user equilibrium vs system optimum\n" ] } ], "source": [ "scenario = vickrey_worked_scenario()\n", "print(f\"scenario : {scenario.name}\")\n", "print(f\"content hash : {scenario.content_hash()[:16]}…\")\n", "print(f\"N={scenario.n_travelers}, s={scenario.capacity}, alpha={scenario.alpha}, \"\n", " f\"beta={scenario.beta}, gamma={scenario.gamma}, t*={scenario.t_star}\")\n", "print(f\"equilibrium cost C* (property) : {scenario.equilibrium_cost}\")\n", "print(\"task : departure-time user equilibrium vs system optimum\")" ] }, { "cell_type": "markdown", "id": "eb7bd8fd", "metadata": {}, "source": [ "## Solve\n", "\n", "No `Budget`/`RngBundle`/`Trace` — the closed forms are pure functions of the\n", "scenario, each emitting a `BottleneckSchedule` (a cumulative departure curve\n", "`R(t)` on a time grid, the P1-certifiable artifact)." ] }, { "cell_type": "code", "execution_count": 3, "id": "8f593bba", "metadata": { "execution": { "iopub.execute_input": "2026-07-21T13:48:44.774540Z", "iopub.status.busy": "2026-07-21T13:48:44.774365Z", "iopub.status.idle": "2026-07-21T13:48:44.779121Z", "shell.execute_reply": "2026-07-21T13:48:44.778248Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "UE provenance : {'r_early': 6000.0, 'r_late': 1000.0, 't1': 7.4, 't2': 9.4, 't_n': 8.2, 'equilibrium_cost': 0.8}\n", "SO provenance : {'rate': 3000.0, 't1': 7.4, 't2': 9.4, 'queue': 0.0}\n" ] } ], "source": [ "ue = ue_closed_form(scenario)\n", "so = so_closed_form(scenario)\n", "print(f\"UE provenance : {ue.provenance}\")\n", "print(f\"SO provenance : {so.provenance}\")" ] }, { "cell_type": "markdown", "id": "94fd01a6", "metadata": {}, "source": [ "## Certify (P1) — the equal-cost condition, honestly\n", "\n", "The harness reconstructs the deterministic point queue from `R(t)` alone,\n", "recomputes each used departure time's generalized cost by inverting BOTH the\n", "arrival and served curves (per-traveler, not per-grid-step — a start-of-step\n", "sample would let a burst dump falsely certify), and scores\n", "`equilibrium_gap = (max cost - min cost) / C*`: zero iff every used departure\n", "time is equally costly (a true UE), positive otherwise." ] }, { "cell_type": "code", "execution_count": 4, "id": "77b1e3cf", "metadata": { "execution": { "iopub.execute_input": "2026-07-21T13:48:44.783047Z", "iopub.status.busy": "2026-07-21T13:48:44.782673Z", "iopub.status.idle": "2026-07-21T13:48:44.794977Z", "shell.execute_reply": "2026-07-21T13:48:44.794090Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "UE: feasible=1 equilibrium_gap=1.954e-13 total_cost=4800.00 max_queue=2400.00\n", "SO: feasible=1 equilibrium_gap=1.000 total_cost=2400.00 max_queue=0.00\n", "Price of Anarchy (UE/SO) : 2.000000\n" ] } ], "source": [ "evaluator = BottleneckEvaluator(scenario)\n", "m_ue = evaluator.certify(ue)\n", "m_so = evaluator.certify(so)\n", "print(f\"UE: feasible={m_ue['feasible']:.0f} equilibrium_gap={m_ue['equilibrium_gap']:.3e} \"\n", " f\"total_cost={m_ue['total_cost']:.2f} max_queue={m_ue['max_queue']:.2f}\")\n", "print(f\"SO: feasible={m_so['feasible']:.0f} equilibrium_gap={m_so['equilibrium_gap']:.3f} \"\n", " f\"total_cost={m_so['total_cost']:.2f} max_queue={m_so['max_queue']:.2f}\")\n", "assert m_ue[\"feasible\"] == 1.0 and m_so[\"feasible\"] == 1.0\n", "# The UE is a true departure-time equilibrium: every used time costs the same.\n", "assert m_ue[\"equilibrium_gap\"] < 1e-6\n", "assert np.isclose(m_ue[\"total_cost\"], 4800.0, atol=1e-2)\n", "assert np.isclose(m_ue[\"max_queue\"], 2400.0, atol=1e-2)\n", "# The SO is NOT a user equilibrium (it meters demand rather than equalizing\n", "# individual cost) — it certifies a large POSITIVE gap, by construction.\n", "assert m_so[\"equilibrium_gap\"] > 0.5\n", "assert np.isclose(m_so[\"total_cost\"], 2400.0, atol=1e-2)\n", "assert np.isclose(m_so[\"max_queue\"], 0.0, atol=1e-6) # SO loads at capacity: no queue at all\n", "\n", "# DISTINCTIVE (Vickrey 1969): Price of Anarchy = 2, exactly, for ANY beta/gamma\n", "# — recomputed here as the ratio of the two certified totals, not quoted.\n", "poa = m_ue[\"total_cost\"] / m_so[\"total_cost\"]\n", "print(f\"Price of Anarchy (UE/SO) : {poa:.6f}\")\n", "assert np.isclose(poa, 2.0, atol=1e-3)" ] }, { "cell_type": "markdown", "id": "de375248", "metadata": {}, "source": [ "## Visualize\n", "\n", "`tabench.viz` is a road-network visualizer, and a single point-queue bottleneck\n", "has no network to draw — this notebook instead plots the two certified\n", "cumulative departure curves directly (a house departure-diagram, not\n", "`tabench.viz`): the SO's straight-line uniform loading against the UE's\n", "queue-building/dissipating kinks." ] }, { "cell_type": "code", "execution_count": 5, "id": "c173b1e6", "metadata": { "execution": { "iopub.execute_input": "2026-07-21T13:48:44.799241Z", "iopub.status.busy": "2026-07-21T13:48:44.798538Z", "iopub.status.idle": "2026-07-21T13:48:44.941547Z", "shell.execute_reply": "2026-07-21T13:48:44.940489Z" } }, "outputs": [ { "data": { "image/png": "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hw8ZMGAAGo2G6dOn07FjRy5fvoydnZ3pMZ/1PgQIDQ2lcePG6HQ603kLFy5M95aitL5mBg4cyMqVKxk6dCjly5fnwYMH7N69mzNnzlC1atV0jUkASogn6Natm/L09FQ6nc607/bt20qr1apJkyaZ9o0fP149/lK6cOGC0mq1qkOHDkqv15td02AwmG77+PioNm3aKKWU+vrrr5VGo1GfffaZ2flXrlxRgHJxcVF37941O9a0aVPl5+en4uPjza5ft25dVaZMGdO+BQsWKECdOXPGtC8xMVG5u7urXr16KaWUCgwMVIAaP378M38ujRo1UhUqVEj12L1791JcZ9GiRQpI9Z+Dg8NTHysyMlI5ODio999/32z/9OnTlUajUdeuXVNKKTVr1iwFqHv37j0z/scZDAbVqFEjBSgvLy/VrVs3NW/ePNN1k0VERChAvfbaa0+9Xrt27RSgoqKinnjO7NmzFaCWL19u2hcTE6NKly6tABUYGGiKrUyZMiogIMDsdRMbG6tKlCihmjdvbtqX/Bps166d2WMNHjxYAerEiRNm9/+vgIAAVbJkSbN9Pj4+ClAbN25Mcb6zs7PptfO4Xr16KR8fnxT7//seUUopQGm1WnX69Gmz/X379lWFChVS9+/fN9vftWtX5erqmmr8ydLyOvjxxx8VoGbOnJniWPLPOfl9V7BgQRUWFmY6/tdffylA/f3336Z9aX0fDh8+XAHqwIEDpn13795Vrq6uClBXrlwx7X/Se9HHx8fs5578vn2e14yrq6saMmTIE39OIn1JN4p4oi5dunD37l2zaWUrV67EYDDQpUuXJ97vzz//xGAwMG7cOLRa85dYat0t06dP57333mPatGl88sknqV6zU6dOZk33YWFhbN++nTfeeIOHDx9y//597t+/z4MHDwgICODChQvcvHkTMH7bdXR0ZPHixab7b9q0ifv379OjRw/AOMNEKZVhrRoA8+bNY8uWLWb/NmzY8NT7uLi40KpVK5YvX45SyrR/2bJl1K5dm+LFiwOQP39+AP76669Um6WfRKPRsGnTJiZPnoybmxtLlixhyJAh+Pj40KVLF9OYjYcPHwKQL1++p14v+XhUVNQTz1m/fj2FChXi9ddfN+1zcnIytRIkO378OBcuXODNN9/kwYMHpt9xTEwMTZs2ZefOnSme639bJt59913TYyZ7/Jt0cmtTo0aNuHz5MpGRkWb3L1GiBAEBAU99zi+iUaNGlC9f3rStlOKPP/7g1VdfRSlles73798nICCAyMjIpzbzp+V18Mcff+Du7m762Tzuv+/PLl264ObmZtpObtW6fPkyYNn7cP369dSuXdusNcrDw4Pu3bs/7UdkEUteM/nz5+fAgQPcunUr3R5fPIV1cx2RlcXHxytXV1fVr18/07769eurypUrm533329tAwcOVFqtViUkJDz1+j4+Pipv3rwKUGPGjEn1nORvWI+3pCil1IEDB57YWpD87+jRo6bzO3fubPbNtWvXrqpIkSIpWl7SIi0tGxMmTDDtS27ZOHTokMWPpZRSS5YsUYDas2ePUkqpixcvKkDNnj3bdE5sbKyqV6+eApS7u7vq0qWLWrZsmcXP79atW2rJkiWqdu3aClDdu3dXSlneshEZGfnEc8qWLasaNGiQYn/yt+bkb6nLli175u84+Vt38mvw8uXLZtdMTExUWq1WDRgwwLRv9+7dqmnTpsrJySnF9R5v0fHx8VFNmjRJ9TmkV8tGnz59zPbduXPnmc951apVqcakVNpeB+XKlVP16tV74jWU+vd998UXX6Q49vjr25L3oYODg3rrrbdSXO/rr79Ot5YNS14zy5YtU46Ojkqr1aoaNWqo8ePHq0uXLj315yKen4zZEE/k4OBA+/btWb16Nd988w137txhz549TJkyJd0eo0KFCkRERPDrr78yYMCAVKeGAin6dZO/nXzwwQdP/Ob5+JTSnj17smLFCvbu3Yufnx9r1qxh8ODBKVpe0sLR0ZG4uLhUj8XGxprOSS+vvvoqTk5OLF++nLp167J8+XK0Wi2dO3c2nZMnTx527txJYGAg69atY+PGjSxbtowmTZqwefNmbGxs0vRYhQoVomvXrnTq1IkKFSqwfPlyfvrpJ1xdXSlUqBBBQUFPvX9QUBBFihTBxcXlhZ4z/Ps7njFjBpUrV071nLx58z71Gv/9pn7p0iWaNm1KuXLlmDlzJsWKFcPe3p7169cza9asFK0Blo4neFJxO71en+r+J72ue/ToQa9evVK9j7+//xMfP71eB8medL561Mpm6fvwRT3p55jMktfMG2+8QYMGDVi9ejWbN29mxowZTJs2jVWrVtGqVat0i1kYSbIhnqpLly78/PPPbNu2jTNnzqCUemoXChgHyxkMBoKDg5/4hk/m7u7OypUrqV+/Pk2bNmX37t0ULlz4mXElz9Cws7OjWbNmzzy/ZcuWeHh4sHjxYmrVqkVsbCxvvfXWM++XGh8fH7Zv305cXFyKD4tz586Zzkkvzs7OtG3blhUrVjBz5kyWLVtGgwYNUvyctFotTZs2pWnTpsycOZMpU6bw8ccfExgYmKaf0ePs7Ozw9/fnwoUL3L9/H29vb9q2bct3333H7t27qV+/for77Nq1i6tXrzJgwICnXtvHx4dTp06hlDL7cE7+2SVLHqjo4uKS5vgvXLhglrBevHgRg8FgmiHy999/k5CQwJo1a0xdUACBgYFpun6yJyUVbm5uZtOFk127di1N1/Xw8CBfvnzo9XqLf2fJnvU6KFWqFAcOHCApKck0yPN5WfI+9PHx4cKFCyn2//f3Dqn/HBMTE7l9+/ZTH8PS10yhQoUYPHgwgwcP5u7du1StWpXPP/9cko0MIGM2xFM1a9aMAgUKsGzZMpYtW0bNmjWf2PqQrH379mi1WiZNmpTim6J6bNxBsqJFi7J161bi4uJo3rw5Dx48eGZcnp6evPLKKyxYsCDVP0D37t0z27a1taVbt26mb+p+fn5m3xAtmfraunVrkpKSWLBggdl+g8HAt99+i729PU2bNn3mdSzRpUsXbt26xffff8+JEydSJHxhYWEp7pOc6D1pSikYP5xDQkJS7I+IiGDfvn24ubmZxsqMGjWKPHnyMGDAgBS/o7CwMAYOHIiTk5Np2vKTtG7dmlu3brFy5UrTvuQptY+rVq0apUqV4ssvvyQ6OjrFdf77OwbjuJjH/e9//wMwfXgkf1N//HUYGRnJokWLnhrzfzk7O6eaVJQqVYrIyEizFqDbt2+zevXqNF3XxsaGTp068ccff5imlj8utef8uLS8Djp16sT9+/eZO3duinNTe38+jSXvw9atW7N//34OHjxodvzxsVTJSpUqxc6dO832LVy48JktG2l9zej1+hTjczw9PSlcuPBT3y/i+UnLhngqOzs7OnbsyNKlS4mJiUnTWgmlS5fm448/5rPPPqNBgwZ07NgRBwcHDh06ROHChZk6dWqq99m8eTOvvPIKAQEBbN++/ZlN8fPmzaN+/fr4+fnRr18/SpYsyZ07d9i3bx83btzgxIkTZuf37NmTOXPmEBgYyLRp08yOWTL19dVXX6VFixaMGDGCgwcPUrduXWJjY1mzZg179uxh8uTJKepQAGzYsCHV8t9169Z9ZhGs1q1bky9fPj744APTB9LjJk2axM6dO2nTpg0+Pj7cvXuXb775hqJFi6baCpHsxIkTvPnmm7Rq1YoGDRpQoEABbt68yc8//8ytW7eYPXu26QO6TJky/Pzzz3Tv3h0/P78UFUTv37/PkiVLnjkNtF+/fsydO5eePXty5MgRChUqxK+//oqTk5PZeVqtlu+//55WrVpRoUIFevfuTZEiRbh58yaBgYG4uLjw999/m93nypUrtGvXjpYtW7Jv3z5+++033nzzTSpVqgRAixYtsLe359VXX2XAgAFER0fz3Xff4enp+cxvzY+rVq0aW7duZebMmRQuXJgSJUpQq1YtunbtypgxY+jQoQPDhg0jNjaWb7/9lpdeeinN9Ru++OILAgMDqVWrFv369aN8+fKEhYVx9OhRtm7dmmpCkSwtr4OePXvyyy+/MHLkSA4ePEiDBg2IiYlh69atDB48mNdeey3NPwdI+/tw9OjR/Prrr7Rs2ZL33nvPNPXVx8cnRffcO++8w8CBA+nUqRPNmzfnxIkTbNq0CXd396fGktbXzMOHDylatCivv/46lSpVIm/evGzdupVDhw7x1VdfWfT8RRpZc8CIyB62bNmiAKXRaNT169dTHE9t8JtSxil2VapUUQ4ODsrNzU01atRIbdmyxXT88amvyQ4cOKDy5cunGjZsqGJjY00D1WbMmJFqbJcuXVI9e/ZU3t7eys7OThUpUkS1bdtWrVy5MtXzK1SooLRarbpx44bZfkumviplHDw7YcIEVa5cOeXg4KCcnZ1V7dq11W+//Zbi3KdNfQXUokWL0vSY3bt3V4Bq1qxZimPbtm1Tr732mipcuLCyt7dXhQsXVt26dVPnz59/6jXv3LmjvvjiC9WoUSNVqFAhZWtrq9zc3FSTJk2e+DMMCgpS3bp1U4UKFVJ2dnbK29tbdevWTZ08eTJNz0Mppa5du6batWunnJyclLu7u3rvvffUxo0bzQb7JTt27Jjq2LGjKliwoHJwcFA+Pj7qjTfeUNu2bTOdk/waDA4OVq+//rrKly+fcnNzU0OHDlVxcXFm11uzZo3y9/dXjo6OytfXV02bNs00HfTxQYqpvT6TnT17VjVs2FDlyZNHAWaDFjdv3qwqVqyo7O3tVdmyZdVvv/32xAGiT5p6eefOHTVkyBBVrFgx08+4adOmauHChU/9uab1dRAbG6s+/vhjVaJECdP1X3/9ddMAyae971J7n6T1fRgUFKQaNWqkHB0dVZEiRdRnn32mfvjhhxQ/e71er8aMGaPc3d2Vk5OTCggIUBcvXnzmANFkz3rNJCQkqFGjRqlKlSqpfPnyKWdnZ1WpUiX1zTffPPXnK56fRikL282EyMaqVKlCgQIF2LZtm7VDEelowoQJTJw4kXv37j3z268QIvPJmA2Raxw+fJjjx4/Ts2dPa4cihBC5iozZEDneqVOnOHLkCF999RWFChV65mwaIYQQ6UtaNkSOt3LlSnr37k1SUhJLliyRVTWFECKTyZgNIYQQQmQoadkQQgghRIaSZEMIIYQQGUoGiKaBwWDg1q1b5MuX74llioUQQojsSCnFw4cPKVy48HOtF5UWkmykwa1btyhWrJi1wxBCCCEyzPXr1ylatGiGXFuSjTTIly8fYPxFpMdqlkIIkVsZDAauXLkCQIkSJTLsm7RIu6ioKIoVK2b6rMsIkmykQXLXiYuLiyQbQgjxgqpUqWLtEEQqMnKYgKSUQgghhMhQ0rIhhBAi0xgMBu7fvw+Au7u7dKPkEpJspAO9Xk9SUpK1wxAiXdjZ2ZmWlRciven1ev78808AevfuLclGLiHJxguKjo7mxo0bSCFWkVNoNBqKFi1K3rx5rR2KyIE0Go3ptSWlBHIPSTZegF6v58aNGzg5OeHh4SFvHJHtKaW4d+8eN27coEyZMtLCIdKdra0tb775prXDEJlMko0XkJSUhFIKDw8P8uTJY+1whEgXHh4eXL16laSkJEk2hBDpQjrL0oG0aIicRF7PQoj0ZvVk4+bNm/To0YOCBQuSJ08e/Pz8OHz4sOm4Uopx48ZRqFAh8uTJQ7Nmzbhw4YLZNcLCwujevTsuLi7kz5+fvn37Eh0dbXZOUFAQDRo0wNHRkWLFijF9+vRMeX7WoNFoiIiIMNvn6+vL8ePHAXjllVcoUaIElStXNv3btGlTqte6ffs2tWvXxmAwZHDU2cs///zDxo0bn3ne3bt38fLyon379qZ9cXFx9OzZk4oVK1KxYkXatWvHvXv3TMd/+OEHypQpQ6lSpejXr5/Z4OMnHQsKCqJVq1bp9wSFyCA6nY5NmzaxadMmdDqdtcMRmcSqyUZ4eDj16tXDzs6ODRs2EBwczFdffYWbm5vpnOnTpzNnzhzmz5/PgQMHcHZ2JiAggPj4eNM53bt35/Tp02zZsoW1a9eyc+dO+vfvbzoeFRVFixYt8PHx4ciRI8yYMYMJEyawcOHCTH2+WcmsWbM4fvy46V9AQECq53322WcMGTJERoz/R1qTjQEDBtC2bVuzfQsWLCA2NpaTJ09y6tQpvLy8mDFjBgBXrlzh008/ZdeuXVy8eJE7d+6YXqdPO+bv74+DgwPbt29P52cqRPpSSnHt2jWuXbsmA+tzE2VFY8aMUfXr13/icYPBoLy9vdWMGTNM+yIiIpSDg4NasmSJUkqp4OBgBahDhw6ZztmwYYPSaDTq5s2bSimlvvnmG+Xm5qYSEhLMHrts2bJpijMyMlIBKjIy0mx/XFycCg4OVnFxccpgMKiYhKQM/2cwGJ4ZL6DCw8PN9vn4+Khjx44ppZRq1KiRWr169TOvExcXpwoUKKBiYmJM+/766y9Vrlw55efnp0aNGqUKFiyorly5kuIxlFKqWrVqKjAwUCml1O3bt1Xnzp1VjRo1VMWKFdXHH3+camxpvZ9er1dDhgxR5cqVU/7+/qpq1aoqLi7umc9p7dq1qnr16srf319VqlRJ7d+/Xyml1MaNG1WVKlWUn5+fatiwoTp9+rRSSqnz58+runXrKn9/f9PjHzt2THl5eSl3d3dVqVIlNXHixFQf6/vvv1cjRoxQixYtUq+99ppp/+zZs1WrVq1UQkKCSkpKUl27dlVff/21Ukqp6dOnqwEDBpjOXbdunapXr94zjyml1NKlS9Ubb7zxzJ/Bszz+uhYiven1ehUcHKyCg4OVXq+3djjZVpIu/X52T/qMS09WHSC6Zs0aAgIC6Ny5Mzt27KBIkSIMHjyYfv36AcZvcqGhoTRr1sx0H1dXV2rVqsW+ffvo2rUr+/btI3/+/FSvXt10TrNmzdBqtRw4cIAOHTqwb98+GjZsiL29vemcgIAApk2bRnh4uFlLCkBCQgIJCQmm7aioqGc+l7gkPeXHpd4VkZ6CJwXgZP/iv7YRI0YwYcIE0/Yff/xBqVKlzM45dOgQJUqUwMnJCTB2CfTu3Ztdu3ZRvnx5Fi5cyIMHD9L0eL169eKjjz6iUaNG6HQ62rZty4oVK+jcufNz3a906dJs27aN06dPo9VqiYyMNPv9pub8+fP07t2bnTt3Uq5cOZKSkoiNjeXu3bu8+eab/PPPP/j5+bF48WJef/11Tp8+zdy5c2nbti1jx44FjF12BQoUYODAgURERDB79uxUH+vKlSvMnz+fnTt3smzZMrNjAwYMYO/evXh6emJjY0OtWrUYOnQoACEhIfj4+JjO9fX1JSQk5JnHAOrUqcOQIUOe+jMQwtq0Wi0vv/yytcPIVpRShITFcvhqOPEnVlH7xo8k2uXj5bG7rB1amlk12bh8+TLffvstI0eO5KOPPuLQoUMMGzYMe3t7evXqRWhoKABeXl5m9/Py8jIdCw0NxdPT0+y4ra0tBQoUMDunRIkSKa6RfOy/ycbUqVOZOHFi+j3RLOLxgX+zZs0yG0eQmhs3bpj97Pfv34+/vz/ly5cHoG/fvrz77rvPfNyYmBi2bdvGnTt3TPuio6M5d+7cc9+vRYsW6HQ6+vTpQ+PGjWnTps0zu3q2bNlCy5YtKVeuHGAsXuXq6srff/+Nn58ffn5+gLFbbsiQIdy8eZOGDRsyatQooqOjadSokVni+yRKKfr06cPcuXNTnaW0efNmDAYDoaGhaLVa3n77bcaNG8fkyZOfee2n8fb25sGDB8THx+Po6PhC1xJCWE+izsCpW5EcvRbO4avhHL4WTmJ0GBPsfqa7zW4AQuK90BsUNtrsMaDbqsmGwWCgevXqTJkyBTAuznPq1Cnmz59Pr169rBbX2LFjGTlypGk7eUW8p8ljZ0PwpNTHPaSnPHbPnoro4eHBgwcPyJ8/v2nf/fv3UyRlz+Lk5GQ2Nua//jtrwdbWFr1eb9pOvq961C+7f//+VD8En/d+p06dYseOHQQGBjJ27Fh27txJ6dKl0/r00qRTp07UrVuXLVu2MHfuXGbPns369eufep+oqCiCgoLo0qULYEyQYmNjadq0Kdu2bWPhwoW8+eabpufUvXt303ugePHiXLp0yXStq1evUrx48WceA+PPzcbG5pktPEJYk1KK8PBwANzc3GT2ExARm8iRa8ak4sjVcE7ciCBB9++g/Dra03zlMJ/CmgcY0BLy0tvkr9U92yQaYOUBooUKFTJ9S0728ssvm5qGvb29Acy+2SZvJx/z9vbm7t27Zsd1Oh1hYWFm56R2jccf43EODg6mFV7TutKrRqPByd42w/+l5Y0ZEBDAggULTNu//PILJUuWpFChQs+87+P8/f3NWh/q1KlDUFAQZ8+eBeDHH38kMTHRdLx06dIcOHAAgIMHD5rumzdvXho3bswXX3xhOvfWrVvcuHHjue937949YmJiaNGiBVOmTMHX15fg4GAAmjZtysGDB1P9uWzatMkUf1JSEpGRkdSuXds0WBNg6dKlFClShCJFinDhwgW8vLzo2bMn06dPZ//+/YBxBeDIyMhUf26urq48ePCAq1evcvXqVb788ktatGjBtm3bAChZsiSbN29GKYVSinXr1lGxYkXAmNysWbOG0NBQlFLMnz+frl27PvMYwJkzZ6hYsaIM5hVZmk6nY+XKlaxcuTJXzkZRSnHlfgwrDl/nwz+CaDZzB5UnbaHvz4f59p9LHLwaRoLOgJuTHa3K5mdN6bUssf+cwpoH4FYCbZ+N+L45i/ylqj/7wbIQq7Zs1KtXL0VT+vnz50390iVKlMDb25tt27ZRuXJlwPit8cCBAwwaNAgwfgBGRERw5MgRqlWrBsD27dsxGAzUqlXLdM7HH39MUlISdnZ2gLFJvWzZsim6UHKC2bNnM3z4cPz9/dFqtXh7e7NixQqzc/47ZmPUqFF0797d7JwSJUrg5eXF6dOnqVChAh4eHvz444906NABe3t7WrZsScGCBU3nT548mV69erFgwQLq1KlDhQoVTMcWL17MyJEjqVixIhqNBmdnZxYsWEDRokWf6356vd409VOv11OvXj1atWqFXq/nxIkTFC1aNMXPpXTp0ixatIgePXqYClbNnz+fmjVrsnjxYnr27IlOp8PNzY0VK1ag0WhYuXIlv/32G/b29hgMBubPnw9Ahw4d+PXXX6lcuTIdO3Zk3Lhxaf79TJgwgf79+5sSjHLlypmSw5IlSzJx4kTq1asHGKcpDxgw4JnHADZu3Mjrr7+e5jiEsJbc1M2XoNNz6mYUR66FcfhqOEdDwrkfnZjivJIezlT3caO6TwGq+bpRMukCmlUD4P6jz8hqvaHFZHDInssIaJSy3tyjQ4cOUbduXSZOnMgbb7zBwYMH6devHwsXLjR98E2bNo0vvviCn3/+mRIlSvDpp58SFBREcHCw6QXbqlUr7ty5w/z580lKSqJ3795Ur16d33//HYDIyEjKli1LixYtGDNmDKdOnaJPnz7MmjXLbIrsk0RFReHq6kpkZKRZK0d8fDxXrlyhRIkSOfbNs2LFCv755x/mzZuX6nF3d3cOHz6Mr69v5gb2BIcOHWLBggV8//331g4lUyUmJlK9enW2b9+Ou7v7C10rN7yuhcgo4TGPdYlcC+PEjUgSdeZ1iuxttPgXdaWa76PkwseNAs6Puj/1Otg9C3Z8AQYd5PWCdnPhpRYZFvOTPuPSk1VbNmrUqMHq1asZO3YskyZNokSJEsyePdvsG/bo0aOJiYmhf//+REREUL9+fTZu3Gj2R3Dx4sUMHTqUpk2botVq6dSpE3PmzDEdd3V1ZfPmzQwZMoRq1arh7u7OuHHj0pRo5HadO3fmzp07GAyGbNE8X6NGDWrUqGHtMDLdlStX+OKLL1440RBCpF1yl0jyWIvD18K4dC8mxXkFnO2p5uNmbLnwdaNiEVccbFMZf/fgEqweADcOGbfLvwZtZoFzwZTnZjNWbdnILnJzy4bIfeR1LUTqjF0ikaYZIkevhfMgJmWXSCkPZ1N3SHUfN0q4Oz99vJ1ScPgH2PwpJMWCgyu0ngH+b0AmDKDN8S0bQgghchedTsfOnTsBaNiwIba2WfdjKMzUJRLGkavhBN1MpUvEVkuloq5U8ylAdR83qvm44eZswYywqNuwZihc3GrcLtEQ2n8LrinHnWVnWfe3LIQQIsdRSnHx4kUAGjRoYOVo/qWU4vL9GFN3yOFr4VxOpUukYHKXiK8b1XwKULGIS+pdImlxejWsHQFx4WDrCM0mQM0BkA26rC0lyYYQQohMY2NjQ506dUy3rSU+6VGXyKPCWUdDwglLpUuktGdeU4tFdd8C+BZ0evHaIHERsH4UnFxu3C5UCTosBM9yL3bdLEySDSGEEJlGq9WaqvVmpgfRCRy5Fm6aKXLyRiSJevMuEQdbLZWK5jeNtaha3MIukbS4/A/8ORiiboJGCw3eh4ajwTZnF+OTZEMIIUSOopTi0r0YU22LI9fCuXw/ZZeIe97kWSLGwZwVC7tib5tBXRhJcbB1Ahww1uqhQElja0ax3DF7TpKNHGjVqlV8/vnn6PV64uPjKVy4MFu3bkWr1aKUYsaMGfz4449oNBqUUrzzzju8//77T2waXLt2LWvXrjUVtBKWi4iIYP78+Xz44YepHj958iRDhgzh7t272NraUrNmTebNm5dibZXx48czadIkjh07Zip0d+HCBXr16sX9+/dxdXXlp59+MhVGe9qxBg0a8Msvv6RYN0iIjKSUIjo6GjBWCU6PcuXxSXpOPpolcuRaGEeuhRMem5TivDKeeU1jLar7uOGTHl0iaXHzqHFK6/3zxu3qfaHFZ2DvnPGPnUVIspHD3L59m/79+3PkyBFTJdajR4+a3lAff/wxO3fuZPfu3bi7u3P//n3at29PZGQkn332WarXHDt2LGvXrs2055ATRURE8MUXXzwx2XB0dGTu3Ln4+/uj1+t58803mTZtmlmV14MHD3Lo0CGzlV/BuIps//79efvtt1m5ciVvv/02hw4deuax999/n/Hjx/PLL79kzJMWIhU6nY4lS5YA0Lt3b1NVZ0vcf7xL5GoYp25Gpd4lUiy/qbZF1eJu5HfK5K4KvQ52fQU7pz8q0OUNr82DMs9e0DHHybDF63OQyMhIBajIyEiz/XFxcSo4OFjFxcUpZTAolRCd8f8MhqfGeuzYMeXp6amioqJSHHv48KFycHBQp0+fNtt/+vRp5ejoqKKjo1PcZ+fOnap+/fqm7cDAQFWhQgU1aNAg5e/vr8qXL68OHTpkOv7LL78oPz8/5efnp1q3bq1u3LiRapx79uxRlSpVUhUqVFBvv/22qlSpkgoMDFRKKdWoUSO1evVq07mdOnVSixYtUkopFRUVpd555x1Vo0YN5efnp/r166cSEhJe6H5Pc+PGDdWpUydVsWJF5efnpz755BOllFJ37txRHTp0UBUrVlQVKlRQ8+fPV0oppdfr1ZAhQ1S5cuWUv7+/qlq1qoqLi1MBAQFKq9WqSpUqqWrVqj3zcWfMmKF69epl2o6JiVE1atRQISEhysfHRx07dswUR758+VRSUpJSSimDwaC8vLzUhQsXnnpMKaUSExOVu7u7ioiIMHtss9e1EOksMTFR/fDDD+qHH35QiYmJzzxfrzeo86FR6vcD19TIZcdVo+nblc+YtSn+Vftsixrwy2H13c5L6ui1MJWQpM+EZ/MU9y4otbCxUuNdjP+W9VQq5oF1Y3qCJ33GpSdp2UgvSbEwpXDGP85Ht57a9Obv70/9+vXx8fGhUaNG1K1blzfffJMiRYoQHByMg4NDisXvypcvj729PcHBwSmqb/7zzz+mNWaSnT17lh9++IFvvvmG+fPn8/HHH7Np0yZOnTrFqFGjOHLkCEWKFOHzzz/nnXfeYcOGDWb3T0xMpEuXLixatIhmzZqxefNmfvrppzQ9/ffff58GDRrw3XffoZSiX79+fP3114waNSpD7tejRw9atGjBypUrAbh37x4A7777LmXLlmXVqlXcvXuXatWqUalSJRwcHNi2bRunT59Gq9USGRmJvb098+fPp3Llyhw/fvyZzzEmJobvv/+eqVOnmvaNHj2aQYMGpVh9+Pr16xQqVMhUq0Cj0VC8eHFCQkJwdXV94rHSpUtjZ2eHn58fu3btom3bts+MS4j0YGdnR58+fZ54PD5Jz4nrEY/KfRtniUSk0iXykldeU3dIdV83ihfIpC6RZ1EKDn1vLNClizMW6GrzJfh1zpQCXVmVJBs5jFar5Y8//uDs2bPs2LGDDRs28Pnnn3P48GEg5bLwz3Ljxo0Uy7aXLl3abJG7L7/8EoDAwEBatmxJkSJFABg8eDCTJk1Cr9ebTXE7e/Ystra2NGtmbEps0aIFJUuWTFM8f/75J/v27WPmzJkAxMXFpWn63PPcLzo6mt27d7Np0ybTPg8PDwC2bt3KkSNHAPD09KRjx45s3bqVd999F51OR58+fWjcuDFt2rSxqMx7ciLWokULOnToABgXDbx27Rpz585N83XSytvb27T6rhDWcO9hgmkg5+Fr4Zy+FUmS3rywtaOdlsrF8psGclYt5oark+XdLxku6hb8NQQubTdul2gE7b/JcQW6nockG+nFzsnY6pAZj5MG5cqVo1y5cgwYMICWLVuyZs0a+vfvT3x8PMHBwWatG8HBwSQmJqZo8QBwcnIiPj7ebN/jJaxtbGyeuEy0JYnN4+fa2tqi1+tN248/vlKKP/74g5deeinFNZ73fukhOX5XV1dOnTrFjh07CAwMZOzYsezcuTNNVRKTkpLo0qULhQoV4uuvvzbt3759O0ePHjUtdnfjxg1at27NggULqFWrFrdv30an02Fra4tSipCQEIoXL46Li8sTjyWLj49PMQhViIxiMCgu3ot+lFgYB3JeexCb4jzPfA5mAznLF3bBziaLF7o69QesHQnxEY8KdE2Emv1zZIGu5yE/hfSi0Ri7NzL63zM+wG/evMmePXtM2+Hh4Vy5coVSpUqRN29e3nvvPQYMGMD9+/cBePDgAQMGDGDkyJE4O6fsnvH39+fcuXNp+hE0btyYjRs3cuuWMemaP38+TZs2TdGCUK5cOXQ6HYGBgYCxleDSpUum46VLl+bAgQOAcYGx3bt3m461b9+eadOmmRKc8PBwUzXC573f3LlzGTt2bIrnkzdvXho2bMhXX31l2pfcjdKsWTO+++47075Vq1bRvHlz7t27R0xMDC1atGDKlCn4+voSHByMi4sLcXFxJCamLBoExkFzXbt2pUCBAixcuNAs+Zo6dSo3b97k6tWrXL16laJFi7J+/XpeffVVPD09qVq1Kr/99hsAf/zxB0WLFqV06dJPPZbszJkzVKpUKdWYhHhRcYl69l9+wLzAi/RedJAqn22h1awd7Nq1k7iQU9x4EINGA+W889G9VnFmdanErtGNOfBRU77pXo2+9UtQqVj+rJ1oxIXDyr6wso8x0ShUGQbshNoDJdF4jLRs5DA6nY5JkyZx5coVnJyc0Ol09OrVi9deew0wfnBNnz6dunXrYmNjg8FgoG/fvk8cu9C2bdtUu0JSU7FiRWbMmEHLli0BKFasmOkD+XH29vYsW7aMwYMHo9frqVGjhtkH3ujRo+nSpQt+fn5UqFDBbMzIrFmz+PDDD6lcuTJarRZbW1umT59O6dKln/t+wcHBT+zG+fXXX3n33XepUKECdnZ2vPbaa0ycOJE5c+YwaNAg/Pz8UErx8ccfU6tWLY4ePUq/fv1ISkpCr9dTr149WrVqhZ2dHT179sTf35+8efOaurWSLVu2jFWrVuHv70+VKlUAqFevHvPmzXvqzxxgwYIFvP3220yZMgUXFxcWLVqUpmNXr15Fr9dLsiHSzd2H8Y/KfT/qErkZic5g3iWSz15LFRdja0bn1k2oVsID1zxZsEskLS5thz+HwMNboLGBhh9Aw1Fgk02fTwaSVV/TILev+jpkyBBeeeUVOnfunGGPUb16db788kteeeWVDHuMJ6lfvz4bNmwgX758mf7Y1vThhx9SunRp3nnnHbP9ueV1LV6MwaC4cDfatEjZ4WvhhISl7BLxcnEwjrV4NJDzJU9ngk+dBKBSpUpWLVn+3BJjYet4OLjQuF2gFHRcCEWrWzeu5ySrvoosYdKkSSlmlOQkj3e35CaFCxd+6qwAIR4Xl6jn+PUI42DOR8urR8Wbj9fSaKCsVz6q+7qZEoyibnlSjN+qWrVqZoaevm4egVUD4MEF43aNd6D5pFxVoOt5SLIhnqlgwYL06NEjQx/jv90KIuMNGzbM2iGILOxuVLxpkbIj18I4fSsqRZeIk73No1kiblTzLUCV4vlxccyhXQj6JNj5JeycAUoP+QrBa3OhdC4s0PUcJNkQQohczmBQnL/70LSOyOFrYVwPi0txnreLo2mRsuo+BXi5UD5sLRy8qZQyzRRzdHTMGrUxnuX+BVjVH24dNW5X7AStvwSnAtaNKxuRZEMIIXKZ2ESdsUvk0ViLoyHhPEylS6Sct4upaFY1HzeK5E/ZJWIpnU7Hr7/+Cjx/ufJMYzAYC3RtGWcs0OXoCm1mgt/r1o4s25FkQwghcrjQyHgOP7YCavDtKPSpdIlUKZ7fVNuiSvH85MupXSJpEXXLuBT8ZeMUfUo2Nq5r4lrEunFlU5JsCCFEDqI3KM6FPjQN5Dx8NZybESm7RAq5Oj5aXt2N6r4FKOdteZfI87Czs6N///4Z/jgv5ORKWDcS4iPBNo9xAGiNd6RuxguQZCMHmjBhAh9++CGOjo4opbh27Ro//fQTEyZMQCmVPfpIhRBpEpNg7BJJrsp5PCSChwnmXSLa5C6RR90h1X0LUCS/VI5NITYM1r0Pp1cZtwtXNU5pdS9j3bhyAKmzkQbZrc6GRqMhPDwcnU7H8OHDadeuHXv37sXBwYEaNWrw+uvS3yieLKu+roXR7cg4s4GcZ24/TNEl4mxvQ5XibqbaFpWL5fIukbS4uBX+GgoPbxsLdDUaDQ3ezxUFuqTOhrDYwIEDAWjQoAE2NjasWbOGXr16ceTIEbZt25ZiVVchRNalNyjOhkYZE4tHCUZqXSKFXR2p5msca1HNxy3TukSeh16vNy0rUKtWLesX9UqMNQ4APfSo2nHBMtBxARSpZt24chhJNtJZUpJxKWRbW1tTd4Ver8dgMKDVas3eWKmdazAY0Ov1aDQas8W7kpKS0jRqe/78+SxYsIBdu3ah1+sZMWIEgwYNYs+ePaxcuZLr16/TsWPHdHu+Qoj0E52g43hIhGmRsmMhEUSn0iXyciEXU22L6j5uFM5GXSIGg4FTp04BUKNGDesmGzeOwOr+8MC4ThI1+xsXULNP24KXIu0k2UhnyWtPvPXWW6bVNE+cOMHhw4cpV64cDRs2NJ3766+/otPp6Natm6lU9unTp9m3bx+lS5emSZMmpnOXLFlCz549LYqlYMGC/Pzzz1y7do3g4GDTmA0hRNZwKyKOw9fCOXLVOJjzzO0o/tMjQl4HW6oUz2+qyFm5eH7yOmTfP91arZbKlSubbluFPslYnGvnl48KdBWG9vOgVJNn31c8l+z7ihVpotFo8PX1ZcKECaZtIUTm0+kNnA19+GishTHBuBUZn+K8IvnzPCr3bVxivax3Pmy0Oed9a2NjQ82aNa0XwL3zxtaMW8eM2xVfhzZfQh4368WUC8gA0TSwZICotbtRAFxcXDh58iQ+Pj4v8KxFbiUDRNNHdIKOYyH/jrU4FhJOTKLe7BwbrYbyhVxMAzmr+bhRyDX7dIlkKwaDceG0reNBFw+O+aHtTGM10FxOBohmQ6klBDY2Nqn2S6Z2rlarTbVp0ZIqe++//z7NmzfHycmJzZs34+npmeb7CiGez82IOA5fDTMN5jwbmrJLJJ+DLVWSa1v4uFGpWH6cs3GXyPNQSqHTGcehPP5FK0NF3jAW6Lqyw7hdqomxQJdL4Yx/bAFIspEjjR8/nvHjx1s7DCFyrOQukcOPxlocuRbO7VS6RIq65TEbyPmSV87qEnkeOp3ONLYtw8uVKwUnV8C6DyDhUYGuFp8ZC3RJl3KmkmRDCCGe4WF8EsdCIh4lFmEcC4kgNpUukQqFH3WJ+BSguq8bXi7SDWU1sWGwdgQE/2ncLlINOiyQAl1WIsmGEEI8RinFzYg4U3fI4WvhnEutS8TRlqrFHw3kfFQ4y8le/qQ+i62tLb179zbdzhAXtsJfQyA69FGBrjGPCnTJ78da5CcvhMjVdHoDZ24/NC5Udi2cI1fDCY1K2SVSrEAe0/TT6r5uvOSZD20u7xJ5HhqNJuO6ThJjYPOncPgH47b7S8bWjCJVM+bxRJpJsiGEyFWi4pM4+micxeGr4Ry/HkFcknmXiK2pS6SAaRqqp3SJZG3XD8HqARB2ybhdayA0mwB2MrsnK5BkIx3I7GGRk+Sk17NSihvhcWbLq5+785D/PsV8jramFVCr+RSgcrH85LG3chntHEqv13PkyBEAqlWr9uIVRPVJsGMa7PoKlAFcihhnmpRqnA7RivQiycYLsLOzQ6PRcO/ePTw8PKRglsj2lFLcu3cvY5u6M1CS3kDwrSjTQM7DV8O5+zAhxXnFCziZxlpU9ylAGc+80iWSSQwGA8ePHwegSpUqL5Zs3D1rLNB1+4Rx2+8NaD1dCnRlQVZNNiZMmMDEiRPN9pUtW5azZ88CxuJC77//PkuXLiUhIYGAgAC++eYbvLy8TOeHhIQwaNAgAgMDyZs3L7169WLq1KlmA4/++ecfRo4cyenTpylWrBiffPIJb7/99gvHb2NjQ9GiRblx4wZXr1594esJkRVoNBqKFi1q/QWy0iAyLomjIcZxFoevhXHiemTqXSJFXE21LapJl4hVabVaKlasaLr9XAwGODAftk4AfYIxuWg7Cyp0SL9ARbqyestGhQoV2Lp1q2n78SRhxIgRrFu3jhUrVuDq6srQoUPp2LEje/bsAYzNcW3atMHb25u9e/dy+/ZtevbsiZ2dHVOmTAHgypUrtGnThoEDB7J48WK2bdvGO++8Q6FChQgICHjh+PPmzUuZMmVM1UCFyO7s7OyyZKKhlOJ6WJzZQM7zd1N2ibgkd4n4GgdzVioqXSJZiY2NDXXr1n3+C0Rch78Gw5Wdxu3SzaDdXHAplD4Bigxh1XLlEyZM4M8//zQ1qT0uMjISDw8Pfv/9d15//XUAzp49y8svv8y+ffuoXbs2GzZsoG3btty6dcvU2jF//nzGjBnDvXv3sLe3Z8yYMaxbt860yiBA165diYiIYOPGjWmKMzNKuQohzCXpDZy+FfVvVc5r4dxLpUvEp6CTWW2L0h7SJZIjKQVBy2H9KGOBLjsnaDEZqveRAl0vKFeUK79w4QKFCxfG0dGROnXqMHXqVIoXL86RI0dISkqiWbNmpnPLlStH8eLFTcnGvn378PPzM+tWCQgIYNCgQZw+fZoqVaqwb98+s2sknzN8+PAnxpSQkEBCwr9/1KKiotLvCQshUhUZa+wSSR7MeeJGBPFJBrNz7Gw0VCj8qEvE142qPm545pMukRwvNgzWDofgv4zbRapDx4VQsJRVwxJpZ9Vko1atWvz000+ULVuW27dvM3HiRBo0aMCpU6cIDQ3F3t6e/Pnzm93Hy8uL0NBQAEJDQ80SjeTjyceedk5UVBRxcXGmZeAfN3Xq1BRjSYQQ6UcpRUhYrKlo1pFrYZy/E53iPNc8dlR7NM4ieS0RRzvpEsnOkpKSLCtXfmHLowJdd0BrC40+hPojpEBXNmPRbysiIoLVq1eza9curl27RmxsLB4eHlSpUoWAgACL++FatWpluu3v70+tWrXw8fFh+fLlqSYBmWXs2LGMHDnStB0VFUWxYsWsFo8Q2V2izsDpW5FmVTnvR6fsEvEt6GRW26KUdInkXgnRsPkTOGJMTHAvCx0XQOEq1o1LPJc0JRu3bt1i3LhxLF68mMKFC1OzZk0qV65Mnjx5CAsLIzAwkC+//BIfHx/Gjx9Ply5dniuY/Pnz89JLL3Hx4kWaN29OYmIiERERZq0bd+7cwdvbGwBvb28OHjxodo07d+6YjiX/n7zv8XNcXFyemNA4ODjg4ODwXM9BCAERsYnGLpFHicWJ6xEk6FJ2iVR8NEuk2qPKnB755H2X09na2vLWW2+Zbqfq+kFY1R/Crxi3aw+GpuOkQFc2lqZko0qVKvTq1YsjR45Qvnz5VM+Ji4vjzz//ZPbs2Vy/fp0PPvjA4mCio6O5dOkSb731FtWqVcPOzo5t27bRqVMnAM6dO0dISAh16tQBoE6dOnz++efcvXvXtIz6li1bcHFxMcVZp04d1q9fb/Y4W7ZsMV1DCPFilFJcexBrVtviwt2UXSL5neyoVvzf2hb+RV2lSyQX0mg0T2651iUaC3TtnvmoQFdRaP8NlGyUuUGKdJem2SgPHjygYMGCab5oWs//4IMPePXVV/Hx8eHWrVuMHz+e48ePExwcjIeHB4MGDWL9+vX89NNPuLi48O677wKwd+9ewDj1tXLlyhQuXJjp06cTGhrKW2+9xTvvvGM29bVixYoMGTKEPn36sH37doYNG8a6devSPPVVZqMI8a9EnYGTNyNNicXRkHDuRyemOK+Eu7NprEV1XzdKukuXiHiKu2dhVT8IDTJu+3eBVtMhT36rhpUbZJnZKI8nDjt37qRu3bopmr90Oh179+6lYcOGaU5Mbty4Qbdu3Xjw4AEeHh7Ur1+f/fv34+HhAcCsWbPQarV06tTJrKhXMhsbG9auXcugQYOoU6cOzs7O9OrVi0mTJpnOKVGiBOvWrWPEiBF8/fXXFC1alO+//z5damwIkRuExySapp4euRbGiRuRJP6nS8TeRotfUVdT0ayqPm6455UuEZGSXq/nxAljxc9KlSpho9HAgW9h68THCnTNhgrtrRqnSF8W19mwsbHh9u3bpm6LZA8ePMDT0xO9Xv+Ee2Zf0rIhcgulFFfux5iKZh2+FsalezEpznNzsjMbyFmxiHSJiLQxm43SsTl2a9+Fq7uMB0s3h9fmQj5vK0aY+2SZlo3HKaVSXQPkwYMHODs7p0tQQojMkaDTc+pmpGkg59Fr4TyISdklUtLD+VG57wJU83WjpLuzrAUknotWq6Vc2bIQdhntd40hIdxYoCvgc6jWWwp05VBpTjY6duwIGAf3vP3222azNfR6PUFBQS9WglYIkSliE3Us2HGZPRfvE3Qz9S4R/6KupoGc1XzcKOBsb6VoRU5jEx9Bw9Dv4Mzfxh1Fa0KH+VKgK4dLc7Lh6uoKGFs28uXLZzaa2N7entq1a9OvX7/0j1AIkW6UUoxaGcS6oNumfQWc7c0GclYs4oqDrXSJiAxwfhP8NRRi7hoLdL0yFuoNlwJduUCaf8PJfWy+vr588MEH0mUiRDa04vAN1gXdxlarYXy7CtQrVZAS0iUiMlpCNGz6CI7+bNz2KAcdFkDhylYNS2Qeqy7Ell3IAFGRE1y6F03bObuJS9IzumVZBr9S2tohidwgZD+sHgDhVwFIqjmUX0ONXSZvvfXWs8uViwyXGZ9x2rSc1LJlS/bv3//M8x4+fMi0adOYN2/eCwcmhEg/CTo9w5YcIy5JT91SBRnYUPrHRQbTJRqnsy5qZUw0XIpCr7+h+QR0Oh06nc7aEYpMlKZulM6dO9OpUydcXV159dVXqV69umml1vDwcIKDg9m9ezfr16+nTZs2zJgxI6PjFkJYYMbGc5y+FYWbkx2zulSW4loiY90JhtX9IfSkcbtSN2g1DRxdsVWKbt26AU8pVy5ynDR3oyQkJLBixQqWLVvG7t27iYyMNF5Ao6F8+fIEBATQt29fXn755QwN2BqkG0VkZ/+cu8vbiw4B8H3P6jQr7/WMewjxnAwG2D8Ptk0CfSLkKQCvzobyr1k7MvEUmfEZ99xjNiIjI4mLi6NgwYI5vs9Nkg2RXd17mECrr3dyPzqRnnV8mPRaRWuHJHKqiBBYPQiu7TZulwmAdv+DfJLcZnVZsqhXMldXV9N02GRxcXFWXRpeCPEvg0HxwYoT3I9OpKxXPj5qnfNaHUUWoBQc/x02jIHEh2DnDC2nQNVeqRboMhgMnD59GoAKFSqg1aZp6KDI5tLlt5yQkMBXX31FiRIl0uNyQoh08OOeK+w4fw8HWy3/e7OKlBMX6S/mPizrAX8NNiYaxWrBoN1Q7e0nVgLV6/Xs27ePffv25cjlLUTq0tyykZCQwIQJE9iyZQv29vaMHj2a9u3bs2jRIj7++GNsbGwYMWJERsYqhEijUzcjmbbxLACftC3PS175rByRyHHObYQ1QyHmHmjtoPFHUO890D49qdVoNJQuXdp0W+QOaU42xo0bx4IFC2jWrBl79+6lc+fO9O7dm/379zNz5kw6d+6MjY18cxLC2mITdQxbeowkvaJFeS961Cpu7ZBETpLw8FGBrl+M2x4vQ8eFUMg/TXe3tbWlSZMmGRigyIrSnGysWLGCX375hXbt2nHq1Cn8/f3R6XScOHFCslMhspCJa4K5fC8GbxdHpnXyl/enSD/X9hkLdEVcAzRQZwg0+RTsHK0dmcji0pxs3Lhxg2rVqgFQsWJFHBwcGDFihPwhEyILWRd0m2WHr6PRwMwulXCTBdREetAlQOAU2PM1oMC1OHT4FnzrWzsykU2kOdnQ6/XY2//7h8vW1pa8efNmSFBCCMvdCI/lw1VBAAx+pRR1S7lbOSKRI9w5Dav6w51Txu3K3aHlF+D4fFMkk5KSWLJkCQDdunXL8aUThFGakw2llNnS8vHx8QwcODDFgmyrVq1K3wiFEM+k0xsYvvQ4D+N1VC6Wn+HNXrJ2SCK7M+hh3zzY/pmxQJdTQXj1a3j51Re+dHx8fDoEKLKTNCcbvXr1Mtvu0aNHugcjhHg+/9t+kcPXwsnrYMucrlWws5HaBeIFhF+DPwfBtT3G7ZdaQbs5kNfzhS9ta2vL66+/brotcgeLl5gXQmQtB6+E8b/tFwD4vENFihd0snJEIttSCo4vhg0fGutm2OeFgClQtecT62ZYSqPRUKBAgXS5lsg+JK0UIhuLjE1i+NJjGBR0rFqE1yoXsXZIIruKvgd/vwfn1hm3i9WGDvOhgBRrFC9Okg0hsimlFGNXB3ErMh7fgk6y7ol4fmfXw9/D/i3Q1eRjqDvsmQW6nofBYODcuXMAlC1bVsqV5xKSbAiRTS07dJ31J0Ox1Wr4umsV8jrI21lYKOEhbPwQjv1m3PasAB0XgLdfhj2kXq9n165dAJQuXVqSjVxC/joJkQ1dvBvNxL+DAfggoCyViuW3bkAi+7m2F1YP/LdAV913ocknYOuQoQ+r0Wjw8fEx3Ra5gyQbQmQzCTo9w5YcIy5JT/3S7vRvUNLaIYnsRJcAgZ/Dnjn8W6BrPvjWy5SHt7W1JSAgIFMeS2QdFrdf/fzzz6xbt860PXr0aPLnz0/dunW5du1augYnhEhp2oZzBN+OooCzPTPfqIRWK98ORRqFnoKFjf+tBFq5Bwzak2mJhsi9LE42pkyZQp48eQDYt28f8+bNY/r06bi7u8uqr0JksMBzd/lxzxUAZrzuj6eLrEkh0sCgh92zYOErcPc0OLlD19+h/bznrgQqhCUs7ka5fv26aXngP//8k06dOtG/f3/q1avHK6+8kt7xCSEeufswng+WnwDg7bq+NH3Zy8oRiWwh/KpxbEbIPuN22dbw6hzI62GVcHQ6HcuXLwfgjTfekMJeuYTFLRt58+blwYMHAGzevJnmzZsD4OjoSFxcXPpGJ4QAwGBQvL/8BA9iEinnnY8PW5Wzdkgiq1PKuAz8t/WMiYZ9XnhtnrFFw0qJhjEsRXR0NNHR0SilrBaHyFwWp5TNmzfnnXfeoUqVKpw/f57WrVsDcPr0aXx9fdM7PiEE8MPuK+y6cB9HOy3/61YFR7v0r38gcpDou7BmGJzfYNwuXte4Squbr1XDArCxsaF9+/am2yJ3sLhlY968edSpU4d79+7xxx9/ULBgQQCOHDlCt27d0j1AIXK7kzcimb7pLACfti1PGa98Vo5IZGln1sI3dYyJho09NJ8Eb6/NEokGgFarxdPTE09PT6mxkYtolLRjPVNUVBSurq5ERkbi4iKDqUTmiUnQ0fZ/u7lyP4aWFbz5tkdVqU0gUhcfZSzQdXyxcdurInRYAN5SWVY8XWZ8xj1XWrlr1y569OhB3bp1uXnzJgC//voru3fvTtfghMjtJqw5zZX7MRRydeSLTn6SaIjUXd1tHJtxfDGggXrDod/2LJloGAwGLly4wIULFzAYDNYOR2QSi5ONP/74g4CAAPLkycPRo0dJSEgAIDIykilTpqR7gELkVn+fuMWKIzfQaGBWl8rkd7K3dkgiq0mKh82fwE9tITIE8vtA7w3QfGKGVwJ9Xnq9nsDAQAIDA9Hr9dYOR2QSi5ONyZMnM3/+fL777jvs7OxM++vVq8fRo0fTNTghcqvrYbF8tOokAO82Lk3tkgWtHJHIckJPwneNYe//AAVV3jIW6PKpY+3Inkqj0VCkSBGKFCkiLXW5iMWzUc6dO0fDhg1T7Hd1dSUiIiI9YhIiV9PpDby39BgPE3RU83FjWNMy1g5JZCUGvbECaOAUMCSBs4exbka51taOLE1sbW1p06aNtcMQmczilg1vb28uXryYYv/u3bspWfL512j44osv0Gg0DB8+3LQvPj6eIUOGULBgQfLmzUunTp24c+eO2f1CQkJo06YNTk5OeHp6MmrUKHQ6ndk5//zzD1WrVsXBwYHSpUvz008/PXecQmS0OdsucDQkgnyOtszuUhlbGxmxLx4JuwKLWsO2icZEo1xbGLw/2yQaIvey+K9Yv379eO+99zhw4AAajYZbt26xePFiPvjgAwYNGvRcQRw6dIgFCxbg7+9vtn/EiBH8/fffrFixgh07dnDr1i06duxoOq7X62nTpg2JiYns3buXn3/+mZ9++olx48aZzrly5Qpt2rShcePGHD9+nOHDh/POO++wadOm54pViIx04PID5gYak/kpHfwoVsDJyhGJLEEpOPKTcRDo9f1gnw9e+wa6/AbO7taOTohnUxYyGAxq8uTJytnZWWk0GqXRaJSjo6P65JNPLL2UUkqphw8fqjJlyqgtW7aoRo0aqffee08ppVRERISys7NTK1asMJ175swZBah9+/YppZRav3690mq1KjQ01HTOt99+q1xcXFRCQoJSSqnRo0erChUqmD1mly5dVEBAQJpjjIyMVICKjIx8rucoRFqExySo2lO2Kp8xa9UHy49bOxyRVTy8o9TiN5Qa72L892MrpcKuWjuq55aUlKSWL1+uli9frpKSkqwdjlCZ8xlnUcuGXq9n165dDBkyhLCwME6dOsX+/fu5d+8en3322XMlO0OGDKFNmzY0a9bMbP+RI0dISkoy21+uXDmKFy/Ovn3GGv/79u3Dz88PL69/14gICAggKiqK06dPm87577UDAgJM10hNQkICUVFRZv+EyEhKKT784yS3I+Mp6e7MhHYVrB2SyArO/A3f1IbzG40FulpMhl5rwc3H2pE9N6UU4eHhhIeHS7nyXMSiAaI2Nja0aNGCM2fOkD9/fsqXL/9CD7506VKOHj3KoUOHUhwLDQ3F3t6e/Pnzm+338vIiNDTUdM7jiUby8eRjTzsnKiqKuLg40wq2j5s6dSoTJ0587uclhKV+PxjCxtOh2NlomNOtCs4OsjhVrhYfCRs+hBO/G7e9/KDjAvDK/kmojY0Nbdu2Nd0WuYPFYzYqVqzI5cuXX/iBr1+/znvvvcfixYtxdMxay2SPHTuWyMhI07/r169bOySRg12485DP1gYDMDqgHBWLuFo5ImFVV3YZx2ac+B00Wqg/AvptyxGJBhjLlRcuXJjChQtLufJc5LnqbHzwwQesXbuW27dvP3d3w5EjR7h79y5Vq1bF1tYWW1tbduzYwZw5c7C1tcXLy4vExMQU02nv3LmDt7c3YJwZ89/ZKcnbzzrHxcUl1VYNAAcHB1xcXMz+CZER4pP0vLvkGPFJBhqUcadv/RLWDklYS1I8bPoYfn4VIq8b1zLpvQGaTciyBbqESCuL22qTV3lt166dWUEWpRQajSbNFeGaNm3KyZMnzfb17t2bcuXKMWbMGIoVK4adnR3btm2jU6dOgLHGR0hICHXqGIvW1KlTh88//5y7d+/i6ekJwJYtW3BxcTF18dSpU4f169ebPc6WLVtM1xDCmr7YcJazoQ9xz2vPV29UQquVIke50u0TsGoA3Dtj3K7aCwI+B4ect+iewWAgJCQEgOLFi0vrRi5hcbIRGBiYLg+cL18+KlY0r9vv7OxMwYIFTfv79u3LyJEjKVCgAC4uLrz77rvUqVOH2rVrA9CiRQvKly/PW2+9xfTp0wkNDeWTTz5hyJAhODgYvwkMHDiQuXPnMnr0aPr06cP27dtZvnw569atS5fnIcTz2nbmDj/tvQrAjM6V8MyXtboTRSYw6GHPbAic+qhAlye0+x+UbWntyDKMXq9n8+bNgPELpiQbuYPFyUajRo0yIo5UzZo1C61WS6dOnUhISCAgIIBvvvnGdNzGxoa1a9cyaNAg6tSpg7OzM7169WLSpEmmc0qUKMG6desYMWIEX3/9NUWLFuX7778nICAg056HEP91NyqeUSuDAOhTrwSNy3paOSKR6R5cgj8HwfUDxu1ybeHVr3N83QyNRmMatC/lynMPi5eY37lz51OPp1bKPLuTJeZFejIYFD1/PMjui/cpX8iF1UPq4mAro/JzDaXgyCLY9AkkxYCDC7SaDpW6gnz4CivIjM84i1s2XnnllRT7Hs9OZRU/IZ5u4a7L7L54nzx2NszpVkUSjdzkYSiseRcuGLsR8G0A7b+B/MWtG5cQGcziZCM8PNxsOykpiWPHjvHpp5/y+eefp1tgQuREJ65H8OWmcwCMf7U8pT3zWjkikWmC/4K/h0NcGNg4QLPxUGsQyJgFkQtYnGy4uqasAdC8eXPs7e0ZOXIkR44cSZfAhMhpohN0DFt6DJ1B0drPmy41ilk7JJEZ4iNh/WgIWmrc9vaDjt+B58vWjctKdDodf//9NwCvvvoqtrZSwC43SLffspeXF+fOnUuvywmR44z76xTXHsRSJH8epnbwl8FxucHlHfDnYIi68W+BrkYfgq29tSOzGqUU9+7dM90WuYPFyUZQUJDZtlKK27dv88UXX1C5cuX0ikuIHOWv4zdZdfQmWg3M7loZVyc7a4ckMlJSHGybBPsfzZ5zKwEdFkDxWtaNKwuwsbGhZcuWptsid7A42ahcuTIajSZFRlq7dm1+/PHHdAtMiJwi5EEsH68+BcC7TcpQw7eAlSMSGerWcVg9AO6dNW5X621cQM1BxueAsVx58eIyIDa3sTjZuHLlitm2VqvFw8Mjy61vIkRWkKQ3MGzpMaITdFT3cePdJqWtHZLIKHod7JkF/3wBBh3k9YJ2c+GlFtaOTAirs3gY9I4dO/D29sbHxwcfHx+KFSuGo6MjiYmJ/PLLLxkRoxDZ1uyt5zl+PYJ8jrbM7loZWxuZeZAjPbgEi1rC9snGROPldjBonyQaqTAYDNy4cYMbN25gMBisHY7IJBb/5evduzeRkZEp9j98+JDevXunS1BC5AR7L93nm38uAfBFR3+KujlZOSKR7pSCQz/A/Ppw45CxQFeHBfDGL+Bc0NrRZUl6vZ7169ezfv16qcuUi1jcjZK84Np/3bhxI9VpsULkRuExiYxcdgKloEv1YrTxL2TtkER6exgKfw2Fi1uM274NoP23kF+mND+NRqOhYMGCptsid0hzslGlShU0Gg0ajYamTZuazY3W6/VcuXLFNMJYiNxMKcXoP4IIjYqnpIcz49uVt3ZIIr2dXg1rR0Bc+KMCXROg1kAp0JUGtra2ppW8Re6R5mSjffv2ABw/fpyAgADy5v13ZLW9vT2+vr7yAhIC+O1ACFuC72Bvo2VO1yo42UvRohwjLgLWj4KTy43bhSpBh4XgWc6qYQmR1aX5r+D48ePR6/X4+vrSokULChWSZmEh/utc6EMmrw0GYHTLslQsIl2LOcblfx4V6LppLNDV4H1oODpXF+gSIq0s+splY2PDgAEDOHPmTEbFI0S2FZ+kZ9iSYyToDDR6yYM+9UpYOySRHpLiYOtEOPCtcbtASeMg0GI1rRtXNqXT6diwYQMArVq1knLluYTFv+WKFSty+fJlSpSQP6RCPG7K+jOcu/MQ97wOfNm5ElqtDH7L9m4dg1UD4P6jpRiq9zEW6LJ3tm5c2Vhy1enk2yJ3sDjZmDx5Mh988AGfffYZ1apVw9nZ/E3n4uKSbsEJkV1sCb7DL/uuAfDVG5XwyOdg5YjEC9HrYPdM2DHt3wJdr82DMs2tHVm2Z2NjQ7NmzUy3Re6gURamltrHRls/Pm0peUpsTpw3HRUVhaurK5GRkZJMiRRCI+Np9fVOwmOTeKd+CT5pK7NPsrX7F43lxm8eNm6Xbw9tZ4GTlJkXOVNmfMZZ3LIRGBiYEXEIkS3pDYqRy48THptEhcIujGpZ1tohieelFBz+ATZ/Ckmx4OAKbb4Ev84g9SCEeCEWJxuNGjXKiDiEyJYW7LzE3ksPyGNnw5xuVXCwlWbhbCnqNqwZChe3GrdLNIL234BrUevGlQMZDAbu3r0LgKenp1lruci5nnsYcGxsLCEhISQmJprt9/f3f+GghMgOjl+PYObm8wBMbFeBUh6yqme2dGoVrBtpLNBl6wjNJkLN/lKgK4Po9XrWrFkDGJe/kGQjd7A42bh37x69e/c2TV36r5w4ZkOI/3oYn8SwJcfQGRRt/AvRubp8A8524sJh3QdwaqVxu1Bl6LgQPKQrLCNpNBrTuAApV557WJxsDB8+nIiICA4cOMArr7zC6tWruXPnDpMnT+arr77KiBiFyHLG/XWakLBYiuTPw5QOfvJHM7u5FGgs0PXwFmhsoOEH0HAU2NhZO7Icz9bWlq5du1o7DJHJLE42tm/fzl9//UX16tXRarX4+PjQvHlzXFxcmDp1Km3atMmIOIXIMlYfu8HqYzfRauDrrpVxzSMfUNlGYixsnQAHFxi3C5QytmYUrW7VsITI6SzuLIuJicHT0xMANzc37t27B4Cfnx9Hjx5N3+iEyGKuPYjhk9WnAHiv6UtU95XpkNnGzSOwoOG/iUaNd2DgLkk0hMgEFrdslC1blnPnzuHr60ulSpVYsGABvr6+zJ8/X9ZLETlakt7AsKXHiUnUU9O3AEOblLZ2SCIt9Emw6yvYMR2UHvJ6Q/t5ULqZtSPLlXQ6HVu2bAGgefPmUq48l7D4t/zee++ZSs2OHz+eli1bsnjxYuzt7fnpp5/SOz4hsoyZW85z4noELo62zOpaGRspR5713b8Aq/rDrUetrhU6QpuvpECXFSmluH79uum2yB0sTjZ69Ohhul2tWjWuXbvG2bNnKV68OO7u7ukanBBZxd6L95m/4xIA0zr5UyR/HitHJJ5KKTj0vbFAly4OHF2hzUzwe93akeV6NjY2pnpNUq4893ih9iulFHny5KFq1arpFY8QWU5YTCLDlx1HKehWsxit/KS7MEuLugV/DYFL243bJRsb1zVxLWLduARgXPKibFmZXpzbPFc1lR9++IGKFSvi6OiIo6MjFStW5Pvvv0/v2ISwOqUUo1ee4O7DBEp5OPOprHuStZ1cCd/UMSYato7Qajr0WCWJhhBWZnHLxrhx45g5cybvvvsuderUAWDfvn2MGDGCkJAQJk2alO5BCmEtv+6/xtYzd7G30fK/blVxspfBbFlSbBis/wBO/WHcLlwFOiwEj5esG5dIwWAwEBYWBkCBAgWkgmguYfGqrx4eHsyZM4du3bqZ7V+yZAnvvvsu9+/fT9cAswJZ9TV3OhsaRbu5e0jUGRjXtjx96pewdkgiNRe3GbtNHt5+VKBrlLFIlxToypKSkpJYtGgRYCxXbmcnvydry5KrviYlJVG9esp56dWqVUOn06VLUEJYW3ySnmFLjpGoM9C4rAe96/laOyTxX4mxsGUcHPrOuF2wtLE1o2g168Ylnkqj0eDk5GS6LXIHi5ONt956i2+//ZaZM2ea7V+4cCHdu3dPt8CEsKbJ64I5fycaj3wOzOhcSf4oZjU3jxintD64aNyu2d+4gJq9k3XjEs9ka2trNqtR5A7P1QH9ww8/sHnzZmrXrg3AgQMHCAkJoWfPnowcOdJ03n8TEiGyg42nQvltfwgAM9+ohHteBytHJEz0SbDzS9g5w1igK18h40yT0k2tHZkQ4iksTjZOnTplmup66ZKx7oC7uzvu7u6cOnXKdJ58ExTZ0e3IOD5cFQTAgIYlaVDGw8oRCZN752F1f7h1zLhdsRO0/lIKdAmRDVg8DDgwMDBN/7Zv3/7Ma3377bf4+/vj4uKCi4sLderUMVu6Pj4+niFDhlCwYEHy5s1Lp06duHPnjtk1QkJCaNOmDU5OTnh6ejJq1KgUY0f++ecfqlatioODA6VLl5ZKpyJVeoNi+NLjRMQm4V/UlfdbSC2ALMFggAMLYEEDY6Lh6AqdfoDXf5REIxtKLle+ZcsWGeeXizz3nKOLFy+yadMm4uLigOcrO1u0aFG++OILjhw5wuHDh2nSpAmvvfYap0+fBmDEiBH8/fffrFixgh07dnDr1i06duxour9er6dNmzYkJiayd+9efv75Z3766SfGjRtnOufKlSu0adOGxo0bc/z4cYYPH84777zDpk2bnvepixzq238ucuBKGE72NnzdtQr2tjIlz+oib8JvHWDDaNDFQ6kmMHi/VALNxpRSXLlyhStXrki58txEWej+/fuqSZMmSqPRKK1Wqy5duqSUUqp3795q5MiRll4uBTc3N/X999+riIgIZWdnp1asWGE6dubMGQWoffv2KaWUWr9+vdJqtSo0NNR0zrfffqtcXFxUQkKCUkqp0aNHqwoVKpg9RpcuXVRAQECaY4qMjFSAioyMfJGnJrKww1fDVMmx65TPmLVqxeHr1g5HKKVU0AqlphZTaryLUp95KXVgoVIGg7WjEi9Ir9erU6dOqVOnTim9Xm/tcITKnM84i7+6jRgxAjs7O0JCQkzTlwC6dOnCxo0bnzvp0ev1LF26lJiYGOrUqcORI0dISkqiWbN/V2YsV64cxYsXZ9++fYCxmJifnx9eXl6mcwICAoiKijK1juzbt8/sGsnnJF9DiKj4JN5begy9QdGuUmE6VZVqk1YVGwYresMffSE+EopUMy4FX7MfyFiwbE+r1VKhQgUqVKggBb1yEYsHiG7evJlNmzZRtGhRs/1lypTh2rVrFgdw8uRJ6tSpQ3x8PHnz5mX16tWUL1+e48ePY29vT/78+c3O9/LyIjQ0FIDQ0FCzRCP5ePKxp50TFRVFXFwcefKkXFArISGBhIQE03ZUVJTFz0tkD0opPll9ihvhcRR1y8PkDhVlcLM1XdwKfw39t0BXozHQ4H2wkcqtQmRnFr+DY2JizFo0koWFheHgYPkUwbJly3L8+HEiIyNZuXIlvXr1YseOHRZfJz1NnTqViRMnWjUGkTn+OHqTNSduYaPVMKdbFVwcpZqhVSTGPCrQ9WiNJfeXoMMCKCKLPOY0SinTFzgXFxdJ7nMJi9uwGjRowC+//GLa1mg0GAwGpk+fTuPGjS0OwN7entKlS1OtWjWmTp1KpUqV+Prrr/H29iYxMZGIiAiz8+/cuYO3tzcA3t7eKWanJG8/6xwXF5dUWzUAxo4dS2RkpOnf9evXLX5eIuu7cj+GcX8Zp2uPaFaGqsXdrBxRLnXjMMxv8G+iUWsgDNgpiUYOpdPpWLZsGcuWLZPZKLmIxS0b06dPp2nTphw+fJjExERGjx7N6dOnCQsLY8+ePS8ckMFgICEhgWrVqmFnZ8e2bdvo1KkTAOfOnSMkJMS0AFydOnX4/PPPuXv3Lp6engBs2bIFFxcXypcvbzpn/fr1Zo+xZcsW0zVS4+Dg8FytNCL7SNQZGLbkGLGJemqXLMCgV0pbO6TcR58EO6bDrq+MBbpcihgLdJWy/EuLyF7s7e2tHYLIZBYnGxUrVuT8+fPMnTuXfPnyER0dTceOHRkyZAiFChWy6Fpjx46lVatWFC9enIcPH/L777/zzz//sGnTJlxdXenbty8jR46kQIECuLi4mFaaTa5c2qJFC8qXL89bb73F9OnTCQ0N5ZNPPmHIkCGmZGHgwIHMnTuX0aNH06dPH7Zv387y5ctZt26dpU9d5CBfbT7HyZuR5HeyY1aXythopSk3U907Zyw3fvu4cduvM7SeAXmkdSmns7Oz4+2337Z2GCKzZdg8lzTo06eP8vHxUfb29srDw0M1bdpUbd682XQ8Li5ODR48WLm5uSknJyfVoUMHdfv2bbNrXL16VbVq1UrlyZNHubu7q/fff18lJSWZnRMYGKgqV66s7O3tVcmSJdWiRYssilOmvuYsO8/fVT5j1iqfMWvVxlO3n30HkX70eqX2faPUZ57GKa1Tiyt18g9rRyVErpYZn3FpWmI+KCgozcmLv7//C6Q+WZMsMZ9zPIhOoOXXu7j3MIHutYrzeQc/a4eUe0TegD8Hw5VHA8BLNTV2m7hY1iIqhEhfWWaJ+cqVK6PRaFBKmY0cTs5THt+n1+vTOUQh0odSilErg7j3MIEynnn5pE15a4eUOygFQcth/ShIiAQ7J2jxGVTvK3UzciG9Xs+uXbsA44QDGxsbK0ckMkOako0rV66Ybh87dowPPviAUaNGmQZZ7tu3j6+++orp06dnTJRCpIOf9l5l+9m72Ntq+d+bVchjL3/kMlxsGKwdAcF/GreLVIeOC6FgKauGJazHYDBw/vx5AOrVqyfJRi6RpmTDx8fHdLtz587MmTOH1q1bm/b5+/tTrFgxPv30U9q3b5/uQQrxooJvRTF1/VkAPm79MuW8pTssw13YYizQFR0KWlto9CHUHyEFunI5rVZLrVq1TLdF7mDxu/7kyZOUKFEixf4SJUoQHBycLkEJkZ7iEvW8u+QoiXoDzV72pGcdn2ffSTy/xBjY/Akc/tG47f6SsTWjcBXrxiWyBBsbGypVqmTtMEQmszitfPnll5k6dSqJiYmmfYmJiUydOpWXX345XYMTIj1MWhvMpXsxeOZzYPrrlaRiYUa6fgjm1/830ag1yFigSxINIXI1i1s25s+fz6uvvkrRokVNM0+CgoLQaDT8/fff6R6gEC9i46nbLDkYgkYDs7pUpoCzFBPKELpE2DENds8EZTAW6Gr/DZR8xdqRiSxGKUVsbCwATk5OkvznEhYnGzVr1uTy5cssXryYs2eNfeBdunThzTffxNnZOd0DFOJ53YqIY8wfJwEY0LAU9Uq7WzmiHOruWVjdH26fMG77d4FW0yFPfquGJbImnU7H4sWLAejduzd2drIeUW7wXCO1nJ2d6d+/f3rHIkS60RsUw5cdJzIuiUpFXXm/xUvWDinnMRjgwHzYOgH0Ccbqn21nQ4X2Vg5MZHXSmpH7yLBwkSPNC7zIwSthONvbMKdbFexsZNR7uoq4Dn8Nhis7jdulm8NrcyGft3XjElmenZ0d/fr1s3YYIpNJsiFynCPXwvh62wUAPmtfEZ+C0r2XbpSCoGWPCnRFPSrQNRmq95ECXUKIJ5JkQ+QokXFJDFtyHL1B0b5yYTpWLWrtkHKOmAewdjicWWPcLloDOiyQAl1CiGeSZEPkGEopPl59kpsRcRQv4MRn7StaO6Sc4/xmWDMUou8YC3S9MhbqDZcCXcJier2effv2AVCnTh2pIJpLPFdHdkREBN9//z1jx44lLCwMgKNHj3Lz5s10DU4IS6w4coO1Qbex1Wr4umtl8jnKKPcXlhANfw+H3zsbEw2PcvDONmj4gSQa4rkYDAaCg4MJDg7GYDBYOxyRSSz+axEUFESzZs1wdXXl6tWr9OvXjwIFCrBq1SpCQkL45ZdfMiJOIZ7q8r1oJqw5DcCI5i9RpbiblSPKAa4fhFX9IfzR2ki1h0DTcWDnaN24RLam1WqpWrWq6bbIHSz+TY8cOZK3336bCxcu4Oj47x+d1q1bs3PnznQNToi0SNDpGbb0GLGJeuqULMjARjKG4IXoEmHbJPgxwJhouBSFXn9DyymSaIgXZmNjQ/Xq1alevbp0oeQiFrdsHDp0iAULFqTYX6RIEUJDQ9MlKCEs8eWmc5y6GYWbkx2zulTGRiuzIp7b3TPG1ozQION2pW7Qaho4ulo3LiFEtmZxsuHg4EBUVFSK/efPn8fDwyNdghIirXacv8d3u4zN/NM6+ePtKt+8n4vBAPu/MbZo6BMgTwF4dTaUf83akYkcRillWlvL3t5eCnzlEhZ3o7Rr145JkyaRlJQEGCvBhYSEMGbMGDp16pTuAQrxJPejE3h/ubFE9lu1fWhRQQpKPZeIEPilHWz+2JholGkBg/dLoiEyhE6n4+eff+bnn39Gp9NZOxyRSSxONr766iuio6Px9PQkLi6ORo0aUbp0afLly8fnn3+eETEKkYLBoPhgxQnuRydQ1isfH7eRFYctphQc/x2+rQdXd4Gds7Hc+JvLIZ+XtaMTQuQgGqWUep477t69m6CgIKKjo6latSrNmjVL79iyjKioKFxdXYmMjMTFxcXa4Qjgh91X+GxtMA62WtYMrU9Z73zWDil7ibkPf78HZ9cat4vVgg7zoUBJ68YlcjylFMkfOxqNRrpRsoDM+IyzeMzG9evXKVasGPXr16d+/foZEZMQT3XqZiTTNhhXHP6kzcuSaFjq3EZY8y7E3AWtHTR+VKBLKzMDRMaTBCN3srgbxdfXl0aNGvHdd98RHh6eETEJ8USxiTqGLT1Got5A8/Je9KjtY+2Qso+Eh8YkY0kXY6Lh8TL02w4N3pdEQwiRoSxONg4fPkzNmjWZNGkShQoVon379qxcuZKEhISMiE8IM5P+DubyvRi8XByY1slfviGlVch+mF8fjv4CaKDOUOj/DxTyt3ZkIpfR6/Xs37+f/fv3o9frrR2OyCQWJxtVqlRhxowZhISEsGHDBjw8POjfvz9eXl706dMnI2IUAoD1J2+z9NB1NBqY1aUyBZztrR1S1qdLhK0TYFErCL8KrsWMBboCPpcCXcIqDAYDQUFBBAUFSbnyXOS5B4g+7ujRo/Tt25egoKAcmanKAFHruxkRR6vZO4mK1zH4lVKMblnO2iFlfXeCjQW67pw0bld6E1p9IQW6hFXp9XoOHToEQI0aNaSKaBaQJQeIJrtx4wa///47v//+O6dOnaJOnTrMmzcvPWMTAgCd3sDwpceIitdRuVh+RjR/ydohZW0GPeybB9s/A30iOBWEV7+Gl1+1dmRCYGNjQ+3ata0dhshkFicbCxYs4Pfff2fPnj2UK1eO7t2789dff+HjIwP1RMb43/aLHLoaTl4HW+Z0rYKdjSze9ETh1+DPQXBtj3H7pZbw6hypmyGEsCqLk43JkyfTrVs35syZQ6VKlTIiJiFMDl4J43/bLwAwuX1Fihd0snJEWVRyga4NYyDxobFAV8upULUnyCBakYVInY3cyeJkIyQkRF4cIlNExiYxfOkxDAo6VilC+ypFrB1S1pSiQFdt6PCtFOgSWZJOp2PRokUA9O7dGzs7OytHJDJDmpKNoKAgKlasiFar5eTJk089199fptKJF6eUYuzqIG5FxuNT0IlJ7StaO6Ss6dyGRwW67hkLdDX5GOoOk7oZQogsJU2zUbRaLaGhoXh6eqLVatFoNDx+t+RtjUYjs1FEulh6MIQPV53EVqvhj0F1qVQsv7VDyloSHsLGsXDsV+O2ZwXouAC8/awblxDPIKu+Zj1ZZjbKlStXTMvHX7lyJUMCESLZxbvRTPw7GIAPAspKovFf1/bB6gEQcQ3QQN13ocknYOtg7ciEeCaNRoODg7xWc5s0JRuPzzS5du0adevWxdbW/K46nY69e/fKrBTxQhJ0eoYtOUZckp76pd3p30DGHZjoEiDwc9gzB1DgWty4eJpvPWtHJoQQT2XxANHGjRtz+/ZtPD09zfZHRkbSuHHjHNmNIjLPtA3nCL4dRQFne2a+UQmtVppYAbhz+lGBrlPG7co9jLNNHKVbT2Qver2eY8eOAcaK1FLUK3ewONlIHpvxXw8ePMDZ2TldghK5U+C5u/y4x9hNN+N1fzxdpJy2sUDXXNg++VGBLndoNwfKtbF2ZEI8F4PBwNGjRwGoVKmSJBu5RJqrI3Xs2JGOHTui0Wh4++23TdsdO3bktddeIyAggLp161r04FOnTqVGjRrky5cPT09P2rdvz7lz58zOiY+PZ8iQIRQsWJC8efPSqVMn7ty5Y3ZOSEgIbdq0wcnJCU9PT0aNGoVOpzM7559//qFq1ao4ODhQunRpfvrpJ4tiFRnr7sN4Plh+AoC36/rS9GUpQkX4VfipLWwZZ0w0yraGwfsl0RDZmlarpXz58pQvXx6tVgr05RZpbtlwdTWup6CUIl++fOTJk8d0zN7entq1a9OvXz+LHnzHjh0MGTKEGjVqoNPp+Oijj2jRogXBwcGmVpIRI0awbt06VqxYgaurK0OHDqVjx47s2WOskKjX62nTpg3e3t7s3buX27dv07NnT+zs7JgyZQpgHNTapk0bBg4cyOLFi9m2bRvvvPMOhQoVIiAgwKKYRfozGBTvLz/Bg5hEynnn48NWuXzdE6Xg2G+w8UNIjAb7vNDyC6jSQwp0iWzPxsaG+vXrWzsMkdmUhSZMmKCio6MtvVua3L17VwFqx44dSimlIiIilJ2dnVqxYoXpnDNnzihA7du3Tyml1Pr165VWq1WhoaGmc7799lvl4uKiEhISlFJKjR49WlWoUMHssbp06aICAgLSFFdkZKQCVGRk5As9P5G6hTsuKZ8xa1XZT9ar86FR1g7Huh7eVer3bkqNdzH++6GlUmFXrB2VECIHy4zPOIvbsMaPH59hYzMiIyMBKFCgAABHjhwhKSmJZs2amc4pV64cxYsXZ9++fQDs27cPPz8/vLz+bXYPCAggKiqK06dPm855/BrJ5yRfQ1jPyRuRTN90FoBP25anjFc+K0dkRWfXwTe14dw6sLGHZhPh7bXg5mvtyIQQ4oU816qvK1euZPny5YSEhJiKsyRLHvhjKYPBwPDhw6lXrx4VKxqrRYaGhmJvb0/+/PnNzvXy8iI0NNR0zuOJRvLx5GNPOycqKoq4uDizLiGAhIQEEhISTNtRUVHP9ZzE08Uk6Bi29BhJekXLCt68WbO4tUOyjvgoY4Gu478Ztz0rQMeF4C1VU0XOk5SUZBoz9/bbb0u58lzC4paNOXPm0Lt3b7y8vDh27Bg1a9akYMGCXL58mVatWj13IEOGDOHUqVMsXbr0ua+RXqZOnYqrq6vpX7FixawdUo40Yc1prtyPoZCrI1908sudlQSv7oH59R4lGhqo9x70D5REQ+Ro6rHF2ETuYHGy8c0337Bw4UL+97//YW9vz+jRo9myZQvDhg0zdYNYaujQoaxdu5bAwECKFi1q2u/t7U1iYiIRERFm59+5cwdvb2/TOf+dnZK8/axzXFxcUrRqAIwdO5bIyEjTv+vXrz/X8xJP9veJW6w4cgONBmZ1qUx+J3trh5S5dAmw+RP4qQ1EhED+4tB7PTSfJJVARY5ma2tL9+7d6d69e4rikCLnsjjZCAkJMU1xzZMnDw8fPgTgrbfeYsmSJRZdSynF0KFDWb16Ndu3b6dEiRJmx6tVq4adnR3btm0z7Tt37hwhISHUqVMHgDp16nDy5Enu3r1rOmfLli24uLhQvnx50zmPXyP5nORr/JeDgwMuLi5m/0T6uR4Wy0erjAv6DW1cmtolC1o5okwWehIWNoa9/wMUVHkLBu0FH8umjguRHWk0GpydnXF2ds6drZm5lMXJhre3N2FhYQAUL16c/fv3A8bppZY2iw0ZMoTffvuN33//nXz58hEaGkpoaChxcXGAcbpt3759GTlyJIGBgRw5coTevXtTp04dateuDUCLFi0oX748b731FidOnGDTpk188sknDBkyxFR/f+DAgVy+fJnRo0dz9uxZvvnmG5YvX86IESMsffriBen0Bt5beoyHCTqqFs/Pe03LWDukzGPQw+5ZxkTj7mljga6uS+C1ueCQiwfGCiFyPkunr/Tt21dNmDBBKaXU3LlzVZ48eVSzZs1U/vz5VZ8+fSy6FpDqv0WLFpnOiYuLU4MHD1Zubm7KyclJdejQQd2+fdvsOlevXlWtWrVSefLkUe7u7ur9999XSUlJZucEBgaqypUrK3t7e1WyZEmzx3gWmfqafr7adFb5jFmrKo7bqEIexFg7nMzz4LJSPwT8O6X1927Gaa5C5DI6nU4dP35cHT9+XOl0OmuHI1TmfMalaYn5xxkMBgwGg6mvbenSpezdu5cyZcowYMAA7O1zXt+7LDGfPg5cfkC37/ZjUDCnWxXaVSps7ZAynlJw9BfY9NGjAl35oNUXULm7FOgSuVJSUhKLFi0CoHfv3jIbJQvIMkvMP06r1ZqVmO3atStdu3ZN16BEzhMRm8jwZccxKHi9WtHckWhE34U1w+D8BuO2Tz1o/y24ycrIIvfSarW89NJLptsid0hTshEUFJTmC/r7+z93MCJnUkrx4R8nuR0ZTwl3Zya2q2DtkDLemb/h7/cg9oGxQFeTT6HOENDKolMid7OxseGVV16xdhgik6Up2ahcuTIajeaZA0A1Go0sMS9SWHLwOhtPh2Jno2FO1yo4O+Tg6W7xUcY1TY4vNm57+UHHBeCVCxIsIYR4gjT91b9y5UpGxyFyqAt3HjJprbFs/KiAsvgVdbVyRBno6m5YPQgiQ0CjNRboemWs1M0QQuR6aUo2fHykj1lYLj5Jz7tLjhGfZKBBGXfeqV/S2iFljKR42P4Z7JsHKONaJh0WQPHa1o5MiCwnKSmJxYuNLX/du3eXAaK5hMXt2b/88stTj/fs2fO5gxE5yxcbznI29CEFne356o1KaLU5cPbF7SBYPQDuBhu3q/aCgM+lboYQT/HfNbVEzmfx1Fc3Nzez7aSkJGJjY7G3t8fJyclU8Csnkamvltt+9g59fjoMwKK3a9C4nKeVI0pnBj3smQ2BU8GQBM6e0O5/ULaltSMTIktTSpkWt3RxcZEqollAlpz6Gh4enmLfhQsXGDRoEKNGjUqXoET2djcqng9WGGcw9a7nm/MSjbDLsHogXD9g3C7XFl79GpzdrRuXENmARqPB1TUHj90SqUqXaQFlypThiy++oEePHpw9ezY9LimyKYNBMXL5CcJiEnm5kAsftipn7ZDSj1Jw9GfY+BEkxRgLdLWeDpW6SYEuIYR4inSbg2hra8utW7fS63Iim/pu12V2X7yPo52W/3WrjINtDqkr8fAO/D0Mzm80bvs2gPbfGFdrFUKkmcFg4MyZMwC8/PLLUtgrl7A42VizZo3ZtlKK27dvM3fuXOrVq5dugYnsJ+hGBDM2nQNg/KsVKO2ZQwZJBq8xFuiKCwMbB2g6DmoPBvkjKYTF9Ho9e/bsAeCll16SZCOXsDjZaN++vdm2RqPBw8ODJk2a8NVXX6VXXCKbiU7QMWzJMXQGRauK3nStUczaIb24+EjYMAZOLDFue/tBh4XgVd66cQmRjWk0GkqUKGG6LXIHi5MNg8GQEXGIbG78X6e5+iCWwq6OfNHRP/v/EbmyE/4cDJHXjQW66o+ARh+Cbc5baFCIzGRra0vz5s2tHYbIZDm4brTILH8dv8kfR2+g1cDsrlVwdcrGRXqS4mHbJNg/z7jt5mtszShey6phCSFEdmZxsqGUYuXKlQQGBnL37t0ULR2rVq1Kt+BE1nc9LJZPVp8CYGiTMtQsUcDKEb2A2ydgVX+492hGVbW3ocXn4JDXqmEJIUR2Z3GyMXz4cBYsWEDjxo3x8vLK/s3l4rkl6Q0MW3qMhwk6qvu4MaxJaWuH9Hz0OtgzC/75Agw6Y4Gu1+bCSwHWjkyIHEen07F06VIAunbtiq2tNLDnBhb/ln/99VdWrVpF69atMyIekY18vfUCx0IiyOdoy+yulbG1yYajyh9cMhbounHQuP1yO2g7G5wLWjUsIXIqpRSxsbGm2yJ3sDjZcHV1pWTJHLqglkizfZceMO+fiwBM7ehHUTcnK0dkIaXgyCLY9DEkxYKDC7SeAf5dpECXEBnIxsaGjh07mm6L3MHir6ITJkxg4sSJxMXFZUQ8IhsIj0lkxLLjKAVvVC9KW//C1g7JMg9D4fc3YO0IY6Lh2wAG7YVKXSXRECKDabVa3N3dcXd3lxobuYjFLRtvvPEGS5YswdPTE19f3xTLAx89ejTdghNZj1KK0X8EERoVT0l3Zya0q2DtkCxz+k9jkpFcoKvZeKg1SAp0CSFEBrI42ejVqxdHjhyhR48eMkA0F/rtQAhbgu9gZ6NhTrcqONlnk8FdcRGwYTQELTNue/tDx4Xg+bJVwxIitzEYDFy4cAEwrqslrRu5g8WfFOvWrWPTpk3Ur18/I+IRWdi50IdMXhsMwJiW5ahYJJus3Hh5h7FAV9SNRwW6RkKjMVKgSwgr0Ov17NixA4CSJUtKspFLWJxsFCtWLMPWuxdZV3ySnmFLjpGgM9DwJQ/61Cth7ZCeLSnuUYGub4zbBUpChwVQrKZ14xIiF9NoNBQrVsx0W+QOFicbX331FaNHj2b+/Pn4+vpmQEgiK5qy/gzn7jzEPa89X3WuhFabxf9I3DpuLNB137gwHNX7QIvJYO9s1bCEyO1sbW1p1aqVtcMQmcziZKNHjx7ExsZSqlQpnJycUgwQDQsLS7fgRNawJfgOv+y7BsCXnSvhkc/ByhE9hV4Hu2fBjkcFuvJ6wWvzoIysxSCEENZicbIxe/bsDAhDZFWhkfGMXnkCgL71S/BKWU8rR/QUDy7B6gFw45Bxu3x7aDsLnLJxCXUhhMgBnms2isgd9AbFyOXHCY9NokJhF0a3LGvtkFKnFBz+ATZ/+qhAlyu0+RL8OkvdDCGyGJ1Ox8qVKwF4/fXXpVx5LmHxbzkkJOSpx4sXL/7cwYisZcHOS+y99IA8djbM6VYFB9ssWO0v6jasGQoXtxq3SzSE9t+Ca1HrxiWESJVSiqioKNNtkTtYnGz4+vo+dQSxXq9/oYBE1nD8egQzN58HYEK78pTyyIIrn55e/ahAVzjYOkKzCVBzgBToEiILs7GxoV27dqbbInewONk4duyY2XZSUhLHjh1j5syZfP755+kWmLCeh/FJDFtyDJ1B0cavEG9UL2btkMzFRcD6UXByuXG7UGVjgS6PLNrNI4Qw0Wq1eHt7WzsMkcksTjYqVaqUYl/16tUpXLgwM2bMMC2wI7KvcX+dJiQsliL58zClo1/Wmgt/+Z9HBbpugsYGGrwPjUaDjd0z7yqEEMI60m1kTtmyZTl06FB6XU5YyepjN1h97CZaDXzdtTKuebLIh3hSHGydAAfmG7cLlDK2ZhStbtWwhBCWMRgMXL16FTB2y0sF0dzB4mQjeWBPMqUUt2/fZsKECZQpUybdAhOZ79qDGD5ZfQqA95q+RHXfLDJl9OZR45TW+8YxJNR4B5pPkgJdQmRDer2erVuNA7p79+4tyUYuYXGykT9//hTN6kopihUrxtKlS9MtMJG5kvQGhi09Tkyinpq+BRjapLS1QzIW6Nr1Feyc/qhAl/ejAl3NrB2ZEOI5aTQaChUqZLotcgeLk43t27ebvUC0Wi0eHh6ULl1a5ktnYzO3nOfE9QhcHG2Z1bUyNtYuR37/IqzuDzePGLcrdIA2M6VAlxDZnK2tLa+++qq1wxCZzOL2q1deeYVGjRqZ/jVo0IBy5co9V6Kxc+dOXn31VQoXLoxGo+HPP/80O66UYty4cRQqVIg8efLQrFkz09LEycLCwujevTsuLi7kz5+fvn37Eh0dbXZOUFAQDRo0wNHRkWLFijF9+nSLY83J9l68z/wdlwCY1smfIvnzWC8YpeDgdzC/vjHRcHSFjt/D64sk0RBCiGzK4mRj6tSp/Pjjjyn2//jjj0ybNs2ia8XExFCpUiXmzZuX6vHp06czZ84c5s+fz4EDB3B2diYgIID4+HjTOd27d+f06dNs2bKFtWvXsnPnTvr37286HhUVRYsWLfDx8eHIkSPMmDGDCRMmsHDhQotizanCYhIZvuw4SkG3msVo5VfIesFE3YLfOsL6D0AXByVfgUH7wF8qgQohRLamLOTj46P27NmTYv/+/fuVr6+vpZczAdTq1atN2waDQXl7e6sZM2aY9kVERCgHBwe1ZMkSpZRSwcHBClCHDh0ynbNhwwal0WjUzZs3lVJKffPNN8rNzU0lJCSYzhkzZowqW7ZsmmOLjIxUgIqMjHzep5clGQwG1feng8pnzFrV5MtAFZOQZL1gTq5Uampxpca7KPWZp1L75yul11svHiFEhkhKSlIrV65UK1euVElJVvybI0wy4zPO4paN0NBQ0+Cex3l4eHD79u0XTn6SXblyhdDQUJo1+3cwoKurK7Vq1WLfvn0A7Nu3j/z581O9+r/TH5s1a4ZWq+XAgQOmcxo2bIi9vb3pnICAAM6dO0d4eHi6xZsd/br/GlvP3MXeRsv/ulXFyd4KY27iwmFlX1jZB+IjjAW6BuyCWlIJVIicSCnFgwcPePDggZQrz0Us/nQpVqwYe/bsoUSJEmb79+zZQ+HChdMtsNDQUAC8vLzM9nt5eZmOhYaG4ulpvgqpra0tBQoUMDvnv7EmXzM0NBQ3N7cUj52QkEBCQoJp+7/TfXOCs6FRTF53BoAPW5WjfGGXzA/i0nb4cwg8vGUs0NXwA2g4Sgp0CZGD2djY0Lp1a9NtkTtYnGz069eP4cOHk5SURJMmTQDYtm0bo0eP5v3330/3AK1h6tSpTJw40dphZJj4JD3DlhwjUWegcVkPetfzzdwAEmNh63g4+GjcTMHS0GEhFK2WuXEIITKdVqulaFFZKDG3sTjZGDVqFA8ePGDw4MEkJiYC4OjoyJgxYxg7dmy6BZZcO//OnTtm3TZ37tyhcuXKpnPu3r1rdj+dTkdYWJjp/t7e3ty5c8fsnOTtJ9XnHzt2LCNHjjRtR0VFUaxYFlsf5AVMXhfM+TvRuOd1YEbnSpk71/3mEVg1AB48mlVUsz80mwj2TpkXgxBCiExlcae4RqNh2rRp3Lt3j/3793PixAnCwsIYN25cugZWokQJvL292bZtm2lfVFQUBw4coE6dOgDUqVOHiIgIjhw5Yjpn+/btGAwGatWqZTpn586dJCUlmc7ZsmULZcuWTbULBcDBwQEXFxezfznFptOh/LY/BICZb1TCPa9D5jywPgkCp8L3zY2JRr5C0GMVtJ4hiYYQuYjBYCAkJISQkBAMBoO1wxGZ5LlH4OXNm5caNWpQsWJFHBye7wMrOjqa48ePc/z4ccA4KPT48eOEhISg0WgYPnw4kydPZs2aNZw8eZKePXtSuHBh2rdvD8DLL79My5Yt6devHwcPHmTPnj0MHTqUrl27msaPvPnmm9jb29O3b19Onz7NsmXL+Prrr81aLnKL25FxjPkjCID+DUvS8CWPzHng+xfghxaw4wtQeqjYCQbthdJNM+fxhRBZhl6vZ+PGjWzcuBG9Xm/tcEQmsWrJz8OHD9O4cWPTdnIC0KtXL3766SdGjx5NTEwM/fv3JyIigvr167Nx40YcHR1N91m8eDFDhw6ladOmaLVaOnXqxJw5c0zHXV1d2bx5M0OGDKFatWq4u7szbtw4s1ocuYHeoBix7DgRsUn4FXHlgxaZsBy7wQCHvoct44x1MxxdjVVA/V7P+McWQmRJGo0GDw8P022RO2iUzD16pqioKFxdXYmMjMy2XSrzAi8yY9M5nOxtWDesASXcM3gRs6hbxqXgLwcat0s1Ma5r4pJ+M5aEEEK8uMz4jJPFTHKBoyHhzNxiXDF1YrsKGZ9onFwJ60ZCfCTY5oEWnxlXapVvMUIIkStJspHDRcUn8d7SY+gNilcrFeb1ahk45Sw2DNa9D6dXGbcLV4WOC8G9TMY9phBCiCxPko0cTCnFp3+e4npYHEXd8vB5h4oZ10d6cSv8NRQe3jYW6Go0Ghq8LwW6hBBmdDod69atA6BNmzayWnguIb/lHGzV0Zv8dfwWNloNX3etgotjBnzwJ8YaB4Ae+s64XbAMdFwARaRAlxAiJaWUqdaRDBnMPSTZyKGu3o9h3F+nABjetAzVfFKvKfJCbhyB1f3hwUXjds0B0GyC1M0QQjyRjY0NLVq0MN0WuYMkGzlQos7AsKXHiEnUU6tEAQY3Lp2+D6BPgp0zYOeXxroZ+QpD+3nGGSdCCPEUWq0WX19fa4chMpkkGznQV1vOEXQjEtc8dszqUhkbbTqO07h33tiaceuYcduvs7EKaJ4MaDkRQgiRI0iykcPsvnCfBTsuAzCtkz+F8+dJnwsbDMaF07aOB108OOaHtjON1UCFECKNDAaDaVVub29vtNrnLmQtshFJNnKQB9EJjFh+HIA3axWnZcXUF5qzWOQN+GsIXP7HuF2qKbw2Vwp0CSEsptfrWbt2LQC9e/eWZCOXkGQjh1BKMWplEPceJlDGMy+ftimfHheFkytg3QeQIAW6hBAvTqPRmBbBlHLluYckGznEz3uvsv3sXexttczpVoU89i84yjs2DNaOgOA/jdtFqkGHheCezoNNhRC5iq2tLZ07d7Z2GCKTSbKRA5y5HcWUDWcB+KhVOV4u9IK17S9sNXabRIeC1hYajYH6I8FGXi5CCCEsJ58e2Vxcop53lxwjUWegaTlPetX1ff6LJcbA5k/h8A/GbfeXoMMCKFI1XWIVQgiRO0mykc1NWhvMxbvReOZzYPrr/s/fB3r9EKweAGGXjNu1BhoLdNml02wWIYTAWK5806ZNAAQEBEi58lxCfsvZ2MZTt1lyMASNBma+UZmCeR0sv4g+CXZMg11fgTKASxFo/w2UfCXd4xVCCKUUN2/eNN0WuYMkG9nUrYg4xvxxEoD+DUtSv4y75Re5e9ZYoOv2CeO2fxdoNR3y5E+/QIUQ4jE2NjY0btzYdFvkDpJsZEN6g2L4suNExiXhX9SV95uXtewCBgMcmA9bJ4A+wVj9s+1sqNA+A6IVQoh/abVaypQpY+0wRCaTZCMbmhd4kYNXwnC2t2FO1yrY21pQFCfiOvw1GK7sNG6Xbm4s0JUvnQqACSGEEP8hyUY2c+RaGF9vuwDApNcq4uvunLY7KgVBy2H9KGOBLjsnaDEZqveRAl1CiExjMBi4f/8+AO7u7lJBNJeQZCMbiYxLYtiS4+gNitcqF6Zj1SJpu2NsGKwdDsF/GbeL1jBOaS1YKsNiFUKI1Oj1ev78809AypXnJpJsZBNKKT5efZKbEXEUK5CHye0rpm2a64Utjwp03TEW6HrlQ6g3Qgp0CSGsQqPRkDdvXtNtkTvIJ042seLIDdYG3cZGq+HrrlXI52j39DskRMPmT+DIIuO2Rzlja0bhyhkeqxBCPImtrS1vvvmmtcMQmUySjWzg8r1oJqw5DcDI5i9Rtbjb0+9w/SCs6g/hV4zbtYdA00+lQJcQQgirkGQji0vQ6Rm29BixiXpqlyzAwEZPGWehSzQW6No981GBrqKPCnQ1yryAhRBCiP+QZCOL+3LTOU7djCK/kx2zu1TBRvuEPs67Z2FVPwgNMm77d4VW06RAlxAiS9HpdGzbtg2Apk2bSrnyXEJ+y1nYjvP3+G6XsStkeid/vF0dU55kMMCBb2HrxEcFugrAq7Oh/GuZG6wQQqSBUopr166ZbovcQZKNLOp+dALvLzeWEe9RuzgtKqRSdCviOvw5CK7uMm6XaQHt/icFuoQQWZaNjQ0NGjQw3Ra5gyQbWZDBoPhgxQnuRyfwkldePmlT3vwEpeDEUtgwGhKiwM4ZAj6Ham9LgS4hRJam1Wp5+eWXrR2GyGSSbGRBi/Ze5Z9z97C31TKnWxUc7R7L/mMewNr34Mzfxu2iNaHDfCnQJYQQIsuSZCOLOXUzkmkbzgLwSZuXKeft8u/B85vgr6EQc/dRga6xUG+4FOgSQmQbSinCw8MBcHNzk8JeuYR8SmUhsYk6hi09RqLeQLOXvXirto/xQEI0bPoIjv5s3P5/e/ceFGX97wH8vbuwu6AuiBjgBRESTfMnWsJBK+xEalfLzPX8vKB2OdOxwvGKp4yyycvpD7VibJoSyhwwO1pzzPCCwJmI1KiMMFIQRTHACwiKgrv7OX9w2HFlVVz32X2U92uGGffL53n4fPjyhY/PPpeeg4CJnwBhw7yXLBGRCywWC77++msArbcr9/W9wQ0K6Y7AZkNFlv3PQRw5dQEhJgP+a9I/Wjv+yp+Arf8O1B0FoAHi5wD/uhTwdXJlChHRbcBo5O+vzobNhkpsL/4bWfuPQ6MBVptjEGRA6+WsBWtab9AV0Bd4Zh3Q/0Fvp0pE5DJfX1/MmDHD22mQh7HZUIGq+otI+e/Wm3G9khCFUV1rgU+fAaqLWwOG/RN4bCVgDPBekkRERC5is+FlFqsNc7N+RcMlC4b3MWF+153AJ+8C1hbAvwfw1Frgnqe8nSYREZHLtN5OwJPS0tIQEREBo9GIuLg47Nu3z9sp4aPcMuw/WocBhjpkGt6DbvfS1kYjejzwSiEbDSK6o1gsFuzZswd79uyBxWLxdjrkIZ2m2di0aRPmzZuH1NRU/PLLLxg2bBjGjRuH2tpar+W0/+hZfJBzCJN0+djuuwjGqsLWG3Q99QHwb1lAtxCv5UZEpAQRQVlZGcrKyni78k5EI51ktuPi4jBy5Eh89NFHAACbzYa+ffvitddeQ0pKynW3bWhoQEBAAM6dOweTyXTd2I4613QZ/1y7Da81pWG8bn/rYN9/AZ5dBwRFuuVrEBGpjc1mQ0lJCQBgyJAh0Go7zf95VUuJv3FX6xTnbLS0tKCoqAhLliyxj2m1WiQmJqKwsNDj+Zw+eQybNm9ExqV16KlrgGh9oXn4P4HRyYCWzwogojuXVqvF0KFDvZ0GeVinaDZOnz4Nq9WKkBDHtyVCQkJQWlraLr65uRnNzc321w0NDW7Np3zTYsw59z2gAS52Hwi/yZ8CYf9w69cgIiJSCx6/cmLFihUICAiwf/Tt29e9X8DXH2cQgD8iZsLvP/6XjQYRdRoigsbGRjQ2NvKcjU6kUxzZCA4Ohk6nQ01NjcN4TU0NQkPbP459yZIlmDdvnv11Q0ODWxuOuFfXAwB6uG2PRES3B4vFgszMTAC8XXln0imObOj1etx3333Iycmxj9lsNuTk5CA+Pr5dvMFggMlkcvggIiL38PHxgY9Pp/i/Lv2/TjPb8+bNQ1JSEu6//37ExsZizZo1uHDhAmbNmuXt1IiIOg1fX1/Mnj3b22mQh3WaZsNsNuPUqVN46623UF1djZiYGGRnZ7c7aZSIiIjcq9PcZ+NWeOIaZCIiIm/gfTaIiOiOYrVaUVBQAAAYPXo0dDreW6gz6BQniBIRkTrYbDaUlpaitLQUNpvN2+mQh/DIBhEReYxWq8X9999v/zd1Dmw2iIjIY3Q6HUaMGOHtNMjD2FYSERGRonhkg4iIPEZEcOnSJQCA0WiERqPxckbkCTyyQUREHmOxWLBhwwZs2LABFovF2+mQh/DIRge03YrE3U9/JSLqbC5fvoyLFy8CaP2dymejeF/b3zYlb7vFm3p1wIkTJ9z/5FciIiIVKS8vR2RkpCL7ZrPRATabDSdPnkS3bt1U+/5i25Npjx8/flvf5ZR1qAvrUBfWoS53Sh3nzp1DeHg46urqEBgYqMjX4NsoHaDVatGnTx9vp9Ehd8pTalmHurAOdWEd6nKn1KHkfU94gigREREpis0GERERKYrNxh3CYDAgNTUVBoPB26ncEtahLqxDXViHurCOjuMJokRERKQoHtkgIiIiRbHZICIiIkWx2SAiIiJFsdlQmYiICGg0mnYfc+bMcRqfkZHRLtZoNDrEiAjeeusthIWFwc/PD4mJiTh8+LCq6hgzZozT+CeeeMIeM3PmzHafHz9+vKJ1WK1WLF26FP3794efnx+ioqLw7rvv3vC2vnl5eRgxYgQMBgPuvvtuZGRktItJS0tDREQEjEYj4uLisG/fPoWqcK2OLVu24NFHH0XPnj1hMpkQHx+PHTt2OMS8/fbb7eZk0KBBqqojLy/P6c9WdXW1Q5za58PZz79Go8GQIUPsMZ6eDwBobGzE3Llz0a9fP/j5+WHUqFHYv3//dbdR2/oAbr4ONa4PV+rw2PoQUpXa2lr5+++/7R+7du0SAJKbm+s0Pj09XUwmk8M21dXVDjErV66UgIAA+eabb+TAgQPy9NNPS//+/eXixYuqqePMmTMO8X/88YfodDpJT0+3xyQlJcn48eMd4s6ePatYDSIi7733nvTo0UO2bdsmFRUVsnnzZunatausXbv2mtscOXJE/P39Zd68eXLw4EH58MMPRafTSXZ2tj0mKytL9Hq9rF+/XkpKSuSll16SwMBAqampUU0dycnJsmrVKtm3b58cOnRIlixZIr6+vvLLL7/YY1JTU2XIkCEOc3Lq1ClFanC1jtzcXAEgf/31l0OeVqvVHnM7zEd9fb1D/sePH5egoCBJTU21x3h6PkREJk+eLIMHD5b8/Hw5fPiwpKamislkkhMnTjiNV+P6cKUONa4PV+rw1Ppgs6FyycnJEhUVJTabzenn09PTJSAg4Jrb22w2CQ0Nlffff98+Vl9fLwaDQTIzM92d7jXdqI6rrV69Wrp16ybnz5+3jyUlJcmECRMUytC5J554QmbPnu0wNnHiRJk6deo1t1m0aJEMGTLEYcxsNsu4cePsr2NjY2XOnDn211arVXr16iUrVqxwU+aOXKnDmcGDB8s777xjf52amirDhg1zR4od4kodbb9M6+rqrhlzO87H1q1bRaPRyNGjR+1jnp6PpqYm0el0sm3bNofxESNGyBtvvOF0GzWuD1fqcMbb68OVOjy1Pvg2ioq1tLTgyy+/xOzZs6/7TJbz58+jX79+6Nu3LyZMmICSkhL75yoqKlBdXY3ExET7WEBAAOLi4lBYWKho/m06WseVPvvsM0yZMgVdunRxGM/Ly8Ndd92FgQMH4pVXXsGZM2eUSNlu1KhRyMnJwaFDhwAABw4cwA8//IDHHnvsmtsUFhY6fL8BYNy4cfbvd0tLC4qKihxitFotEhMTFZsTV+q4ms1mQ2NjI4KCghzGDx8+jF69eiEyMhJTp05FZWWlW3O/0q3UERMTg7CwMDz66KMoKCiwj9+u8/HZZ58hMTER/fr1cxj35HxYLBZYrdZ2b936+fnhhx9+cLqNGteHK3VcTQ3r41bqUHx9dLgtIY/btGmT6HQ6qaqqumbMjz/+KJ9//rn8+uuvkpeXJ08++aSYTCY5fvy4iIgUFBQIADl58qTDds8//7xMnjxZ0fzbdKSOK+3du1cAyN69ex3GMzMz5dtvv5Xff/9dtm7dKvfcc4+MHDlSLBaLEmmLSGsHv3jxYtFoNOLj4yMajUaWL19+3W0GDBjQLua7774TANLU1CRVVVUCQH788UeHmIULF0psbKzbaxBxrY6rrVq1Srp37+5w6HT79u3y1VdfyYEDByQ7O1vi4+MlPDxcGhoa3F2CiLhWR2lpqXz88cfy888/S0FBgcyaNUt8fHykqKhIROS2nI+qqirR6XSyadMmh3FPz4eISHx8vCQkJEhVVZVYLBbZsGGDaLVaiY6OdhqvxvXhSh1XU8P6ELn5Ojy1PthsqNjYsWPlySefvKltWlpaJCoqSt58800RUUezcbN1vPzyyzJ06NAbxpWXlwsA2b17962kd12ZmZnSp08fyczMlN9//12++OILCQoKkoyMjGtuo8Zfpq7UcaWNGzeKv7+/7Nq167pxdXV1YjKZ5NNPP3VH2u3cah1tHnroIZk2bZqIeKfZuNU6li9fLj169JDm5ubrxik9HyIiZWVl8tBDDwkA0el0MnLkSJk6daoMGjTIabwa14crdVxJLetD5NbqaKPE+uBTX1Xq2LFj2L17N7Zs2XJT2/n6+mL48OEoKysDAISGhgIAampqEBYWZo+rqalBTEyM2/K9lput48KFC8jKysKyZctuGBsZGYng4GCUlZXhkUceudVUnVq4cCFSUlIwZcoUAMDQoUNx7NgxrFixAklJSU63CQ0NRU1NjcNYTU0NTCYT/Pz8oNPpoNPpnMa0zZca6miTlZWFF198EZs3b253+PtqgYGBiI6Otv/8udut1HGl2NhY+2Hl4ODg22o+RATr16/H9OnTodfrrxur9HwAQFRUFPLz83HhwgU0NDQgLCwMZrMZkZGRTuPVuD5cqaONmtYH4HodV1JiffCcDZVKT0/HXXfd5XDpZ0dYrVYUFxfbG4v+/fsjNDQUOTk59piGhgbs3bsX8fHxbs3ZmZutY/PmzWhubsa0adNuGHvixAmcOXPGoYlyt6ampnaPXdbpdLDZbNfcJj4+3uH7DQC7du2yf7/1ej3uu+8+hxibzYacnBzF5sSVOgAgMzMTs2bNQmZmZofm8Pz58ygvL1dsTlyt42q//fabPcfbaT4AID8/H2VlZXjhhRduGKv0fFypS5cuCAsLQ11dHXbs2IEJEyY4jVPj+rhSR+sA1Lc+rnQzdVxNkfXR4WMg5DFWq1XCw8Nl8eLF7T43ffp0SUlJsb9+5513ZMeOHVJeXi5FRUUyZcoUMRqNUlJSYo9ZuXKlBAYG2s93mDBhguKXvt5sHW0eeOABMZvN7cYbGxtlwYIFUlhYKBUVFbJ7924ZMWKEDBgwQC5duqRI/iKtV8D07t3bfonili1bJDg4WBYtWmSPSUlJkenTp9tft13at3DhQvnzzz8lLS3N6aV9BoNBMjIy5ODBg/Lyyy9LYGBgu8uWvVnHxo0bxcfHR9LS0hwuiauvr7fHzJ8/X/Ly8qSiokIKCgokMTFRgoODpba2VjV1rF69Wr755hs5fPiwFBcXS3Jysmi1Woe3326H+Wgzbdo0iYuLc7pfT8+HiEh2drZ8//33cuTIEdm5c6cMGzZM4uLipKWlxWkdalwfrtShxvXhSh2eWh9sNlRox44d9uuer5aQkCBJSUn213PnzpXw8HDR6/USEhIijz/+uMN13iKtl78uXbpUQkJCxGAwyCOPPOJ03+52M3WItJ6oBEB27tzZLr6pqUnGjh0rPXv2FF9fX+nXr5+89NJLiv7yERFpaGiQ5ORkCQ8PF6PRKJGRkfLGG284vFeelJQkCQkJDtvl5uZKTEyM6PV6iYyMdLhfSJsPP/zQPnexsbHy008/qaqOhIQEAdDu48p5M5vNEhYWJnq9Xnr37i1ms1nKyspUVceqVaskKipKjEajBAUFyZgxY2TPnj3t9q32+RBpvWzdz89PPvnkE6f79fR8iLSeAB4ZGSl6vV5CQ0Nlzpw5Dn9wb4f14UodalwfrtThqfXBp74SERGRonjOBhERESmKzQYREREpis0GERERKYrNBhERESmKzQYREREpis0GERERKYrNBhERESmKzQYREREpis0GEXlMXl4eNBoN6uvrvZ0KEXkQ7yBKRIoZM2YMYmJisGbNGgBAS0sLzp49i5CQEGg0Gu8mR0Qew0fME5HH6PV6RR8TTkTqxLdRiEgRM2fORH5+PtauXQuNRgONRoOMjAyHt1EyMjIQGBiIbdu2YeDAgfD398ekSZPQ1NSEzz//HBEREejevTtef/11WK1W+76bm5uxYMEC9O7dG126dEFcXBzy8vK8UygR3RCPbBCRItauXYtDhw7h3nvvxbJlywAAJSUl7eKamprwwQcfICsrC42NjZg4cSKeffZZBAYGYvv27Thy5Aiee+45jB49GmazGQDw6quv4uDBg8jKykKvXr2wdetWjB8/HsXFxRgwYIBH6ySiG2OzQUSKCAgIgF6vh7+/v/2tk9LS0nZxly9fxrp16xAVFQUAmDRpEjZs2ICamhp07doVgwcPxsMPP4zc3FyYzWZUVlYiPT0dlZWV6NWrFwBgwYIFyM7ORnp6OpYvX+65IomoQ9hsEJFX+fv72xsNAAgJCUFERAS6du3qMFZbWwsAKC4uhtVqRXR0tMN+mpub0aNHD88kTUQ3hc0GEXmVr6+vw2uNRuN0zGazAQDOnz8PnU6HoqIi6HQ6h7grGxQiUg82G0SkGL1e73BipzsMHz4cVqsVtbW1ePDBB926byJSBq9GISLFREREYO/evTh69ChOnz5tPzpxK6KjozF16lTMmDEDW7ZsQUVFBfbt24cVK1bgu+++c0PWRORubDaISDELFiyATqfD4MGD0bNnT1RWVrplv+np6ZgxYwbmz5+PgQMH4plnnsH+/fsRHh7ulv0TkXvxDqJERESkKB7ZICIiIkWx2SAiIiJFsdkgIiIiRbHZICIiIkWx2SAiIiJFsdkgIiIiRbHZICIiIkWx2SAiIiJFsdkgIiIiRbHZICIiIkWx2SAiIiJFsdkgIiIiRf0fwWmAzW75xLwAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "\n", "fig, ax = plt.subplots(figsize=(5.5, 4.0))\n", "ax.plot(ue.times, ue.cumulative, label=f\"UE (queues, cost {m_ue['total_cost']:.0f})\")\n", "ax.plot(so.times, so.cumulative, label=f\"SO (no queue, cost {m_so['total_cost']:.0f})\")\n", "ax.axvline(scenario.t_star, color=\"0.6\", linestyle=\":\", label=\"t*\")\n", "ax.set_xlabel(\"time\")\n", "ax.set_ylabel(\"cumulative departures R(t)\")\n", "ax.set_title(\"vickrey: UE vs SO departure schedules\")\n", "ax.legend(fontsize=8)\n", "fig.tight_layout()\n", "display(fig)\n", "plt.close(fig)\n" ] }, { "cell_type": "markdown", "id": "9f1640ad", "metadata": {}, "source": [ "## Takeaways & pointers\n", "\n", "- **Certified, not self-reported.** Both schedules' costs and gaps came from\n", " `BottleneckEvaluator`, reconstructed from the emitted `R(t)` alone; the\n", " solvers' own `r_early`/`t1`/`C*` provenance was never trusted.\n", "- **PoA = 2 is exact**, not a bound — the certified totals above land on it to\n", " three decimal places on this worked instance.\n", "- **Where next.** the multi-route generalization\n", " [`vi-due`](02-vi-due.ipynb) (reduces to `vickrey` on one route with `f=0`);\n", " the lineage in the [model compendium](../../docs/MODELS.md)." ] } ], "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" }, "tabench": { "covers": [], "requires_extra": null, "track": "bottleneck", "unit": "vickrey" } }, "nbformat": 4, "nbformat_minor": 5 }