{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Integration" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "\n", "from integration_algorithms import monte_carlo_quasi_two_dimensions\n", "from integration_algorithms import quadrature_newton_trapezoid_one\n", "from integration_algorithms import quadrature_newton_simpson_one\n", "from integration_algorithms import quadrature_gauss_legendre_one\n", "from integration_algorithms import quadrature_gauss_legendre_two\n", "from integration_algorithms import monte_carlo_naive_one\n", "\n", "from integration_plots import plot_naive_monte_carlo_randomness\n", "from integration_plots import plot_naive_monte_carlo_error\n", "from integration_plots import plot_gauss_legendre_weights\n", "from integration_plots import plot_benchmarking_exercise\n", "from integration_plots import plot_naive_monte_carlo\n", "from integration_plots import plot_quasi_monte_carlo\n", "from integration_plots import plot_starting_illustration\n", "from integration_plots import plot_trapezoid_rule_illustration\n", "from integration_plots import plot_simpsons_rule_illustration\n", "\n", "from integration_problems import problem_kinked\n", "from integration_problems import problem_smooth" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Outline\n", "\n", "1. Setup\n", "2. Newton-Cotes rules\n", "3. Gaussian formulas\n", "4. Monte Carlo integration\n", "5. Resources" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Setup\n", "\n", "Consider finding the area under a continuous real-valued function $f$ over a bounded interval $[a, b]$:\n", "\n", "$$\n", "\\begin{aligned}\n", "A = \\int_a^b f(x) dx\n", "\\end{aligned}\n", "$$\n", "\n", "Let's look a visual representation of our problem." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "image/png": "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P+sMTJw40dy0aVO3PgMAALiXV1GvJz7ZoxVbC9q0hwX66WczUnTruUM7PU/p4osvVkFBgf7whz8oOjpadrtdM2bM0Jo1azRx4sRO3auhoUHJyclasmSJbr311k5d24VcJkV6mAAA8HLVjTb99d/fauk3OWpucbS2+/kY+uHUIVo4M+W01lMqKirSqlWr9MILL+jyyy+XJC1cuFBjx47tdFiSpODgYN1888164oknrAxMLnlWfxcAAOgyNrtzg9wLfv9v/e2Lb9uEpUsy4vSvX5yv31418rTC0ty5c5WQkCDTNDV//nwZhqH7779fL730km688cY25+7fv1/+/v5avHhxm/af/vSnCgsL0/EjUTfccIN2796tNWvWdLqm7kQPEwAAXsbhMLVyR6Ge/Nce5ZbVtzk2NjFCv74iQ5OTo8/oGb/73e8UExOjV199VZ9++qkkqampSY899pimT5/e5tyUlBTdfvvteuqpp7Rw4ULFxsbq4Ycf1tKlS7Vy5co2vVHjxo1TeHi4Pv74Y02bNu2MauxKBCYAALyEaZr6al+pfv9JtnbmV7c5NigyWPddlqYrRyfIx+fMF54cOXKkKisrNWbMGE2dOlWS9Pjjj8swDI0ZM6bd+YsXL9ayZcv0+OOPKy0tTQ899JD++c9/6qKLLmpzno+Pj8aMGaN169adcY1dicAEAIAX2Hq4Uo9/lK21B8ratIcHOSd03zKt8xO63T5z61bNmjWr9eeCggKFh4crICCg3bnx8fG655579OSTT6qlpUV//vOfdd1117m8b//+/bV3794urfVMEZgAAOjF9pfU6olP9ujjXUVt2oP8fXTrucn6yfnDFRHi3+XPramp0bfffqvx48e3tjU2Niow8OTzoVJTU9XU1KTzzjtPd91110nPCw4OVkNDQ5fWe6YITAAA9EIFlQ16+rN9emPzYTmOWyHI18fQ9ZMG6+4LUxXXjSt0b926VaZptglMMTExqqiocHn+6tWr9eMf/1jnnHOOvvnmG23btk1jx451eW55ebliY2O7pe7TxVtyAAD0IkdqmvS7D3bre098rtc2tQ1LV45J0Gf3XqBHrx7drWFJkrZs2SJ/f3+NHDmytS0tLU02m015eXltzs3MzNScOXN0++236/PPP1dSUpIeeOCBk947JydHI0aM6LbaTwc9TAAA9AJltU165ssDenFt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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plot_starting_illustration()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Most numerical methods for computing this integral split up the original integral into a sum of several integrals, each covering a smaller part of the original integration interval $[a, b]$. This re-writing of the integral is based on a selection of integration points $x_i , i = 0, 1, . . . , n$ that are distributed on the interval $[a, b]$. Integration points may, or may not, be evenly distributed.\n", "\n", "Given the integration points, the original integral is re-written as a sum of integrals, each integral being computed over the sub-interval between two consecutive integration points. The integral from the beginning is thus expressed as:\n", "\n", "$$\n", "\\begin{aligned}\n", "\\int_a^b f(x) dx = \\int_{x_0}^{x_1} f(x) dx + \\int_{x_1}^{x_2} f(x) dx + ... + \\int_{x_{n-1}}^{x_n} f(x) dx , \n", "\\end{aligned}\n", "$$\n", "\n", "where $x_0 = a$ and $x_n = b$.\n", "\n", "The different integration methods will differ in the way they approximate each integral on the right hand side. The fundamental idea is that each term is an integral over a small interval $[x_i , x_{i+1}]$, and over this small interval, it makes sense to approximate $f$ by a simple shape" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Newton-Cotes rules\n", "\n", "\n", "Newton–Cotes quadrature rules are a group of formulas for numerical integration (also called quadrature) based on evaluating the integrand at equally spaced points. The integration points are then computed as\n", "\n", "$$\n", "\\begin{aligned}\n", "x_i = a + ih, i = 0, 1, . . . , n,\n", "\\end{aligned}\n", "$$\n", "\n", "where $h = (b - a) / n$\n", "\n", "The closed Newton-Cotes formula of degree $n$ is stated as\n", "\n", "$$\n", "\\begin{aligned}\n", "\\int_a^b f(x) dx \\approx \\sum^n_{i=0} \\omega_i f(x_i).\n", "\\end{aligned}\n", "$$\n", "\n", "We will consider the first two degrees in more detail:\n", "\n", "* Trapezoid rule\n", "\n", "* Simpson’s rule" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Trapezoid rule\n", "\n", "\n", "The Trapezoid rule approximates the area under the function $f$ with the area under a piecewise linear approximation to $f$. " ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkwAAAFsCAYAAAA+IOZoAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAABWmklEQVR4nO3dZ3gc1f328e9sUVv1LlfZlrtxxwUM2DTTSwgQIIApSWgOkFACSTCYJJQ/JcSUhIDpAZIAD8XUUI0rrrj3JluSJVld2j7PixVrCxe5SDsr6f5cly7Onp3d+a2xpNtzzpxjmKaJiIiIiOyfzeoCRERERKKdApOIiIhIMxSYRERERJqhwCQiIiLSDAUmERERkWY4WvPNTzvtNPPjjz9uzVOIiIiItBRjf0+06hWmsrKy1nx7ERERkYjQkJyIiIhIMxSYRERERJqhwCQiIiLSDAUmERERkWYoMImIiIg0Q4FJREREpBkKTCIiIiLNUGASERERaYYCk4iIiEgzFJhEREREmqHAJCIiIlHNNE2rS1BgEhERkehkmia7Vqzm9mkf8e/vtllai8PSs4uIiIjswV9WRt2cOdTNmk3Vt7OgrJT0XsfxhxKDPrlJDO2aakldCkwiIiISFermzWfrlVfu1T9s51qeDQT55JX3GXr35RZUpiE5ERERiSAzGKRh+QrK/vlPgg0NTZ6L798dHE2v5dQ449mRmMUd373COS//JZKlNqErTCIiItKqfDt2UDd7duPXHAKVlQDE9elF4jEF4N0C3lVU1FazqVM3autgUXYfFmf1pr57J+54bxoFVTss/QwKTK1k+/btTJ48mZkzZ1JeXs4tt9yCz+dj8+bNvP/++4f0Xo8//jgvvPACS5YswWbTRUEREYlugZoa6ufPp25WKCR5N2/e53F1Xz5N4qBRYNhZsCOLm97No2RYX0wj9Lvu2Hw/085rwN5rENiPh7gREfwUTSkwtZJJkyaxY8cOXnrpJdLT0wkEAkyYMIHZs2cf8ntdd911PPTQQ7z00ktcddVVrVCtiIhIy9j56GOUT58OgcB+j7GnxeEa1Z2EowdhOrry/PwYHvwyFn/QACN0zI3HeLj1eA8OGzCxLzg6Q9JZkfkQ+6DA1AqKi4v5/PPPefHFFznjjDMAmDx5MkOGDGHkyJGH/H7x8fFcccUVPPLIIwpMIiJiOdM08W7ajL+kGNfYsU2ec+Rm7BWWjBg7CcM64RrVG9foAmILcjBsBlVuuO6teD5Z6wwfmxof5PGz3Uwo8Efksxwsje+0sJ/85Cfk5eVhmiZXXnklhmFw11138eqrr3LppZc2OXb9+vU4nU6mTJnSpP/6668nKSmJBQsWhPt+9rOfsXLlysO6QiUiInKk/Lt2UTVjBjt+/3vWn3gSG884gx2/uwsz6APfDmiYD5UvkzhgLQBxfTPJuHw03Z78OX0+v5Nu064i4/JxxPXJxbAZLC+2cfb0xCZhaUinAB9cXRd1YQmi8ApT/u9mWF1C2OYHzzzk19x///1kZGTwxhtv8NlnnwHg8Xh48MEHOe6445ocW1BQwLXXXsvjjz/O5MmTyczMZOrUqUyfPp0ZM2Y0uRo1dOhQkpOT+fjjjznmmGOO7IOJiIg0I+jx0LBwIXWzZ1M7ezaelav2OsZfUoJ38X3E5icDBthTcPYYQO9Pe+JITdj3+5rw/PwYHv4yFl/QCPdPGunh7pM8xNhb6xMdmagLTG3dwIEDqaysZPDgwYwZMwaAhx56CMMwGDx48F7HT5kyhZdffpmHHnqIfv36cd999/H6669z8sknNznOZrMxePBg5s6dG5HPISIiHZPp97Ptuuup/+47TI9nv8fZEpwkjOiCGUwDZ6dwvwH7DUs7aw1++348Mzftjh+JMSYPndnAmf33f1Vp223vgxEHjo/p+vdnDv1DtQAFplawZMkSJk6cGH68Y8cOkpOTiYmJ2evY3NxcbrnlFh599FH8fj9/+9vfuOiii/b5vllZWaxdu7bV6hYRkY7FV1KCYbPhyMoK9xkOB/7ysr3Dkt0gfkA2rtEFuEb3Jn5gZwzHwV8O+t86B3d8EMeuht2zgQbnBXji3AZ6pAcP+NraWZsbW6sP+nwtLeoC0+EMg0WTmpoaNmzYwLBhw8J9breb2NjY/b6md+/eeDwexo0bx4033rjf4+Lj42n40SJfIiIiBytYV0fd/PnUzZ4Tut1/wwYyb7yRrJtugEAZ+LaDbw2Jw514VkFM1xRco3vgGt2XhBHdsSfGHfI5G3zw58/jeHXR7osGBibXjfVy6/HROwT3Y1EXmNq6JUuWYJpmk8CUkZFBRUXFPo//4osv+NWvfsXYsWOZNWsWS5cuZciQIfs8dteuXWRmZrZK3SIi0v6YgQDu5ctDC0bOmk39kiXgbzr0VTdzBlmXBSDoCY2n2ZJJ+9kE0i4+EWduyhGdf3mxjVvfi2dd2e5UlJsU5LGzGzgmf//LDvxYl4fPAns6xI85onqOhAJTC1u8eDFOp5OBAweG+/r164fP56OwsJAuXbqE+xctWsR5550Xnvjdp08f7r77bmbM2PfE902bNjFq1KhW/wwiItK2uVetouzpZ6ibN49gdfV+jzOcNmxxAUwjFWOPaSPOnCM7vzcAT86K5alZMQTM3RO7T+vr44HT3aQlmIf0fknH9Whch2nCkRV2BBSYWtjixYsZMGBAkyG4448/HoD58+eHA9P69es5/fTTOfXUU5k2bRo2m40pU6Zw9dVX880334Rf84PKykrWrl3LbbfdFrkPIyIiUS9QU4M9KalJnxkMUtN4p/aPxRak4xrVE9foPiQM644tzrnP4w7Xqp02fvt+PCtLdl9VinOYTDnFzc+G+jCMA7w4iikwtbDFixczdOjQJn35+fmMGjWK999/n5/85CcUFxdz6qmn0r9/f1577bXwdidXXHEFDz/8ML/73e/2Wm9pxowZxMTEcP7550fqo4iISBQyvV7qlywJ78vmXr6cgi8+x5mTA8EK8BUR13k19tQ4ApVuHJkJuEZ1xzW6L65RPXFkJLZKXf4g/H1ODE/MbLpcwMgufh45q4H89EO7qhRtDNNsvQ8wcuRIc8/FFzuyF198kZtvvpmioiISEvZ9u+WBnH766WRmZvLKK6+0QnUiIhKtTNPEu359eD2k+u8WYNbXNzkmb8qlpJ6WBsF6ME2wJ1I7txRnXjoxPTIxWvmyzrpSG7d9EM/Sot1XlWLsJneM93DV0V7sR7pMdqCicUju3CN8o2bt9w9KgSlCAoEARx11FFdfffUhD6stWbKEMWPGsHz5cgoKClqpQhERiSY1X35JzcefUDdnDv6dO/d/oM0g4/KhZF9/Ktj2f0d2a/D44enZsTw9O6bJVaUhnQI8elYDBZkHXi7gYG351fNgxIA9k+6vvNwi77kf+w1MGpKLELvdzvTp01m0aNEhv7a4uJgXXnhBYUlEpJ0yTXOvq0B1M2dS9e67+zze2SkpdLv/qD64ju6BPTk+EmU2MW+rnbs/imNDedOrSrcc5+GXY7yhTXNbSP3i7Y2tTS33podIgSmCxowZE179+1CcdtpprVCNiIhYxQwGca9Y2TgPaTa2xES6PvVk6MlADQSKcA2PpeJfoS5bUgyukV1DAWlMATGd0yyrvaoBHvwyjteXNF2MeWgnPw+d4aZvdstcVYo2CkwiIiIR4C3cTt3sWdTNnkP9nDkEqqrCzxlxsQR3fY7N2ADBXYCNhME2sq47Htfo3sT1y8M44olAR8Y0YcYqB/d+FkdZ3e5aEmNM7hjv5rLhviOfq7Qf3Z46H+yZED+udU5wEBSYREREWoHp9VL7zTfhRSO9W7bs/1i3B/f3n5AwtC84uwNgT4XMq7vs9zWRtL7Mxn2fxTXZAw7glD4+pp7qJi+5de+Acw3v0jjp27q1CBWYREREWsn2O+7c6462H9jT4xtv9++Da1QvnFlJ+zzOSrUemDYrlufnx+DfY1J3TmKQ+ya6Oa3v/jfMbW8UmERERA6DaZp4N22iblZoHlLqhReSdGLjStTBBgyKcA3vQe23KwAwYu0kDOuMa3RvXKMLiO2V3eq3+x8u04R3Vzj4yxdx7KzdPc5mM0x+PtzHbSe4ST70beXaNAUmERGRg+TftSu8cW3dnDn4i4rCzznSE0gamwCe1eAvAQNSJuYR2zMR1+g+xA/pii0m+n/triyxMeWTOL4rbFrr0V383DvRzcCc9jmpuznR/39ORETEIkG3m/qFC8OrantWrdrvsXWzv8asy8ZwpIGzCxgGyRO7kjwxggUfgeIag8e+ieU/S52YeyxHlJ0Y5O4T3Zw70G/ZtiabJr0RWofJ9jI93n7LkhoUmERERPaj5tNP2XHHnft93uZykjCiK67RvUkcXQDOdNraZmm1Hnh2bizPzovB7d9du8Nmcs0oL5OP9ZAY2fUw9+JeU9rY2n7A41qTApOIiHRovuJi6mbNpn7hQvLun4phb1yI0fTiOrp704PtBvEDc3CNLsA1ujfxAzpjtOQKjRHkD8KbS5w8PjO2yTIBAON7+fjDSZ4WW6m7PVBgamU/bD0TrRP7REQ6mkBtHfXz54cXjfRu3Bh+Lu3CU4nvlwze1eAvxOE0STy+O87sdFxj+pAwPB+71ZdbjpBpwmfrHDz8ZSzr91ilG2BAToDfn+jm2B4Bi6rbt/wXLgZ7FiSMt6wGBaYWtmjRIi677DIMw2Dy5Ml88MEHTJw4kV//+tdWlyYi0iGZfj8Ny5aF5yE1LF0K/n3fDl/3xbPEdxsCtmRwdALDRtdHroxwxa3DNGHmJjuPfh3XZJNcgLykILeN93D+IB+2KPz3fXy/7MZ1mAZaVoMCUwt79dVXufXWWxk9ejSXXHIJABdeeKHFVYmIdFyFN95E7ddf7/d5I8ZG/OBOuEYXkHTCAHBmRrC6yJi31c6jX8cyf1vTX/uJMSbXH+PhmqO9xDktKq6NUGBqYY899li4vXLlSgsrERHpOAKVldTNnQtA8p77b5oB4ocU7BWYYnun4xrVC9foPiQM7YatnaaFJTtsPPr13it0x9hNrhjh5bqxXjJdrbtKd3uhwCQiIm1O0OulYdHi8Dwk94oVYJrE9ulD8imjwFcE3rXg34hrcAkVWQm4RuWHVtU+uieOjESrP0KrmrfVzpOzYvcKSk6bycVDfdx0rIfcJAWlQ2H8MCm5NYwcOdJcsGBBq71/NNu+fTuTJ09m5syZlJeXc8sttzS5+rQvkydPZvPmzbz//vuHdK7HH3+cF154gSVLlmCztc27NUREDsQ0TTzr1oUDUv13CzAbGvZ5bO/3LsaRHg/2RLAlYxKar9Peb74xTfhqo4OnZ8XsteikzTC54Cgfvx7noWtq2wtKGy74GxgOMFz0+uTj1jzVfv+S6ApTK5k0aRI7duzgpZdeIj09nfz8/AMev2HDBv7xj38we/bsQz7Xddddx0MPPcRLL73EVVdddZgVi4hEJ39FBZvOORd/aen+D7IZxPXPwjWqFzg7Q8zuK0jtOyZB0IRP1jh4anYsy4ubTua2GSZnD/Dz63EeemW03SUCvNsqG1tlltWgwNQKiouL+fzzz3nxxRc544wzDuo1f/3rXxkyZAgjR4485PPFx8dzxRVX8MgjjygwiUibFayvp37BAmL79sWZkxPud6SmYMTu/evK2TkJ16geoWG2kT2wJ8dHslzLNfjg7WVOnp8fw8ZdTYOS02byk6N8XD/WQ35627uiFI00JNfCfvKTn/DOO+806fvjH//I1KlT9/saj8dDbm4u99xzD7feemu4f/369fTv35+7776b++67L9x//fXX8+qrr/Lll1+GA9aiRYsYMWIEs2bN4phjjmnhTyUi0vLMQAD3ylXUzZpF3ezZNCxejOnzkXP33aRfdi4EisG7DrzrKXrwC6q/3IxrZLdQQBrdi5jOaVZ/BEvsrDV4ZWEMry5yUtHQdBpGrMPkkqFefjnGS6fk9hOUPJs2gj0HXCcR26NHa55KQ3KRcv/995ORkcEbb7zBZ599BkDPnj0P+Jq5c+dSWVnJcccd16S/oKCAa6+9lscff5zJkyeTmZnJ1KlTmT59OjNmzGhyNWro0KEkJyfz8ccfKzCJSNTyFm6nbvYs6mbPoX7OHAJVVXsdU/f166SfuSP0wIgHexrZt5xH7l0xGPaOO09z1U4bz8+P4b0VTryBpr/Xk2JNLhvu5ZqjvWQltp+g9IPYbmngyIKkVg1LBxSVgal02pOUPfXUQR2beuGF5N3f9OpN0R/vofI//zmo12feeCNZk29q0tewfAXxgw5vcayBAwdSWVnJ4MGDGTNmzEG9Zu7cuRiGweDBg/d6bsqUKbz88ss89NBD9OvXj/vuu4/XX3+dk08+uclxNpuNwYMHM7fxtloRkWhS8/nnlDz8ML4tWw94XGzPNGL75ICzW5N+e2L7vO2/Ob4AfLrWwauLYpizZe9f2V1Sglx9tJeLhngt3++tvYvKwNTWLVmyhIkTd29PfdJJJ1FWVoZhGCQlJTFt2jSGDh0afn7Hjh0kJycTExOz13vl5uZyyy238Oijj+L3+/nb3/7GRRddtM/zZmVlsXbt2hb/PCIiB8v0+fCsX09c//5N+m0JCfsMS/aMeBKPzsc1ujcJo3vhzEyKVKlRbUe1weuLY3hjiZPSur2vqo3o4ufaUV5O6eOnjW5l1+YoMLWwmpoaNmzYwLBhw8J9b7/9NikpKQC88847TJo0iSVLloSfd7vdxMbu/58GvXv3xuPxMG7cOG688cb9HhcfH0/Dfm6zFRFpDaZp4t24kbpZjbf7z59P0OOhz9w52F128BeDbyPxPVdhxIYmJicM64xrdG9cY3oT2zOr3d/uf7CCJnyz0c6ri2L4Yr2DoNn0z8VmmJzez881o7wM7xxde711BFEZmLIm37TXMNmhyLt/6l7DdIficIfjIHR1yTTNJoHph7AEUF1dvddrMjIyqKio2Of7ffHFF/zqV79i7NixzJo1i6VLlzJkyJB9Hrtr1y4yM9vfkv4iEl385eXUzZkbmqw9Zw7+4uK9jqn/4gGSxqWGFgeyxWKLTSH/+WuIyc/EFhOVv3oss63S4L/fx/DWMieFVXtfLspODPKzoT4uGeolrx1N5D4U686eDtjAeJTeM7+xpAb9rW1hixcvxul0MnBg09B12WWX8fXXX2Oz2fjwww+bPNevXz98Ph+FhYV06dIl3L9o0SLOO++88MTvPn36cPfddzNjxox9nnvTpk2MGjWq5T+UiAhQ9uw/qf7oIzyrVh3wOGdeIkG3GxxdYI+rR3F9clu7xDajzgsfrXby3++dzN2671/F4/L9/Hy4l5N6+3Ha93lIh+Evq2ts1VhWgwJTC1u8eDEDBgzYa4jttddeA+C5557jzjvvbBJ6jj/+eADmz58fDkzr16/n9NNP59RTT2XatGnYbDamTJnC1VdfzTfffBN+zQ8qKytZu3Ytt912W2t+PBHpAMxgkGBtLfbk5Cb9njVr9hmWbIkxuEZ0wTW6L67RvXB2SdMw2z4EzdCWJW8vczJjlZN6395/RqnxQX56lI9Lh/no2YYXmmyPtA5TCxs6dChDhw7lxRdf3OfzpmkSGxtLUVERGRkZ4f7Ro0czYMAAXnjhBYqLiznmmGPo1q0bn3zySTh8BQIBBg0aRFpa2l4rgr/22mtcc801bN++vcn7iogcDF9RUWjbkVmzqZs7F9eYMXR+7FEwvaF5SN4tVL7zFkV/+gTsBvGDcnGNLiBxdG/i+nfC0MzjfTJNWLLDzvsrHcxY5aSkdu8/J5thMr6Xn58e5eOk3n72sUZnh+cr3gaOPHBNxJmT3Zqn2m/SV2BqZRUVFbjdbvLy8gD473//yy233MK2bdua/AvsxRdf5Oabb6aoqIiEhIRDPs/pp59OZmYmr7zySovVLiLtV6C2lvr588OTtb2bNjV53p6aRO+PbsEIbgdMMOz4q2JoWFlOwvB87C7dw74/pgmrS228v9LJ+yudbKvcd5gsyAhw4RAf5w/ykd0O105qUYEKcHSGpHNb+0xauNIqFRUVXHzxxbjdbmw2G9nZ2XzwwQd7Xa6+/PLLefjhh3n66acPeVhtyZIlfPnllyxfvrwlSxeRdiZQWcmuV18Lrar9/ffg9x/gaB/+okKcnTuDEfqF78iApON0Y8m+BE34vsjGp2udfLLGwYbyfU86ykgIckY/Pz8d7GVwXhCNXLYdCkytrGfPnnz33XfNHme325k+fTqLFi065HMUFxfzwgsvUFBQcDglikg79MPoQZN/nNntlD3zDAT2viXdiLGTMLQTrlG9cY0pILYgB8Om3+YH4g3A3C12Pl3r5LO1jn0Ot0FoFe7T+/k4e4CPsd0DWjepjVJgiiJjxow56NXB93Taaae1QjUi0tb4Kyqonzs3PBcp70/34zrmGDD9ECjF7thG/IBcGpZtByC2dwauUb1wjelNwpBu2OI65mrah6Ki3mDmJjufr3fyxXoHNZ59h8p4p8kpvf2cPcDH8T01L6k90P9CEZE2Kuj10rBoUXgeknvlytAEmkZ137yHa1Ax+DeBGQAMMi4fQdA9CteonjjSXdYV30YEgvB9kZ2vN9r5aoODpTvsmPuZ5pIWH+Sk3n5O7ePnuB5+4pU/W8yak/5OaHrRVPouWmhJDQpMIiJtiHfrVmr+93loVe0FCzDd7v0eW79wDgS6hXZ5N0JzapLGd9nv8RJSVG0we4uDrzc4mLnJTkXD/sfQOqcEmdjHx6l9/IzsquG21hKs9zW2vJbVoMAkItKG1H79DTsffnjfT9oM4vtn4RpdgGt0b+KP6gL2Dr7i4UHYWWswZ4udOVsczN1iZ3PF/v/MbIbJ0E4BTujp5+Q+fgZka+J2R6HAJCISRYL19dR/9x11s2fjWb+Brs/9MzRx2wxCoBzXyPQmxzu7JOMa1QPX6D64RvbAnhRnUeVtR3GNwYJtoYA0Z4udjbsOHCqzXEFO6OXnhJ6hobbU+AgVKmF9/vcrcHSCxDMtq0GBSUTEQmYggHvFivBE7folS8DnCz/vW/81MXl14F0PQQ8xWSap5w4ibkA3XKMLiOmUalntbYEvAKt22lhY6GBhoZ3F2+1srz7wuFmsw2RklwDH5PsZ38tP/+wgumHQWnZXDDhiIdG6eXcKTCIiEebdti08Ubtu3jyCVVX7Pbb2q5dIv2A42NPA4cQA8n7fLXLFtiGmCYVVBsuL7XxfZGdhYei/bv+B006M3WRY5wBju/sZ2z3A0E4B3dUme9FfCRGRCCu8aTKeNWv2+3xsr/TQMNuYviQM7QaOmAhW1zb8EI6WFdlZVmxnebGd5cW2A07Q/kG802RIXoBRXQOM6e5neOcAWlFBmqPAJCLSwkyvl4alS6mdPZuYbt1JPf+8xidMCFbiGt23SWByZMTjOjof15g+uEb1wpGZaE3hUarWA+vK7KwptYW+dtpZUWKnyn1w42RdUoIM7xxgRBc/I7oE6Jcd1N1scsgUmEREjpBpmng3bgwNs82aRf133xGsrwcgfsQwUs8cDL6N4F0DwVoSR3rwrOsWmqg9uoDYnll7bZfUETX4YNMuG+vKbKzeaWdtqY01pXYKqw4+3STHmQzKCXBUXmhobXjnADlJ2qetrVs1dlpj63f0X73KkhoUmEREDoO/vJy62XNC85Bmz8ZfUrLP4xqWLCFQ/C/siYlgSwVnOq4x3XCNGR3ZgqOELwCFVTY27bKxcZeNTeWh9qZdNopqDu2yT0qcyaDcAINyAxyVGwpJ3VJN3eYvrUKBSUTkELnXrGXTuQfeNd3ZKQnXqHxco/pgxHcHR8f4cWuaUNFgUFhlsK3SRmGVjcJKG4VVBlsqbGyttOEPHlqicdhMeqYH6ZMVpF92gD5ZQfpnB+iSonAkkdMxvoNFRA6RGQziXrWKutmzST3vPBxZWeHnYntkY0tOJFhdG+6zJcXgGtG1cZitFzFd0vf1tm2e2w87awyKa2wUN/53e5WNbVVGYzCyUe87vBRjN0y6pQXplRGkb1aQvlkB+mYF6ZERJEbrb3Zo/edMBkdnSDrwP1RakwKTiEgj344d4SG2ujlzCVRUAODITCP1rFHg3QLe1RjBXSSOzsZfmhReVTuuXyeMNjyT2OOH8nqD8jqDnbWhMFRSY6O4NvTfkhqD4lqDyoO4C605uUlBeqSHvnqm7253TQ3iVDCSKKXAJCIdVqC2lvp588JrInk3b97ncXVfvUjq8RtD+7HZUsHZjU5/uiyqJ2r7AlDZYLCr3qC83qCs7oe2jbK6UN8PAam83kaNp+U+iyvGpGtKkC6pQbqkBOmSatIlJRSI8tOCuLRKgrRBCkwi0iGVP/ccOx//KwQC+z3GnhaH6+juJI0fBM6uTZ6LRFgyzdCdY5Vug8oGgyq3QVWDEX5c2fi46kePK90Gdd7Wqc9hM8lONMlODJKbZJKbFKRzyu5A1CUlSEocmlsk7Y4Ck4i0W6Zp4t28Ge+mzSSdOKHJc84uuXuFJSPGTsKwTrhG9Q7d7l+Qg3EEe2KYZmjOT7XboMYTCjbVHoMaN1R7DKrDj43w4xpP6Piqxi9vIDLJw2EzSU8IfWUnhoJQTqJJTtLuYJSdaJLpMrVNiERcoM4LDg8Yddgt2h5FgUlE2hV/RQX1c+ZQ+8Pt/juKMBIS6DvnWwxbBfgLwbMaV58tYDeIK8jANaoXrtG9iR/SDdsee2IETahxQ41nz0DTGHQaQ8/ux8YexxHu9x3iHWEtxWaYJMeZZCSEvjJdof+mJ5hkuoKhftcPzwVJjkNBSKLW2pP/0diaonWYREQOR9DjoWHRovDmte5Vq0KXdvZg1tdT9NkU6vt0orLBQaU3mUp3P2oeuJtdRgIVDQaV2w2qNoSGtioadl8JMrE2RcTYTdLiTVLjTVLiTFLiTVLjQo9T40KhKDV+9+MfjkmKVQASaUkKTCLS5rh9AcpqPVTd/huM+XMxvJ79HlvviGVpZgH/fi+f1endf/RsQusWSijwJMeZJMeaJMVBcuzux3v+NynWJLnx+aTY3cFIe5yJgC3BCRhYGVsUmEQkKpimSbXbT0m1m+IqN8XVbnZWh/5bUu2hvNZDeZ2X8lovtR4/AFPXFnP0j8JSwLCxOq0bi7N6szi7D2vSuhGwHf696gnOPQPPDwGHHz3e83maPI7TT1mRI9b38+u0DpOIdAy1Hj/bKxoorKhne2UD2ysaKG4MRyWNoajBt+871tLc1aR6atmS0qlJ/+LsPhy9cw2FrkwWZfdhcXYfvs/sRb0zvslxNiM0VPXDsNaeQ1ypew5xxe851AVJsabWBRIRQIFJRFqIxx9ga3k9W8rrKayop7CigcKKBrZXhkJSRb3vkN/TMIOcvnkuV6/4kF1xSdw44bf47A4cNpOMhACFw4fy1JgBxOSmkOEyGZ9gcoHLJDOhnvSEIGnxms8jIi1DgUlEDpo/EGR7ZQMby+rYXFbHpj2+tlc2/Hiu9SGLd9rJTYkjJzmWfg2lnPzRdDI2rwHAVevmg8R/k/vL40lOSG5c58cAYgH3EX4yEZEDU2ASkb34AkG2lNexpriWNSU1rC2uYd3OGrbuqscXOLxUFGO30Tktni5p8XRODX3lpsSFvpLjyE6OIznOgenxUPbM3yl//nnw+3e/vmsyueMGEFNv4K+vAcCZldQin1dEopuvtBYc1VC/E2dOtiU1KDCJdGCmaVJU5WbljupQMCqpYU1xDRtL6/AGgof0XoYBXdLiyc9w0SUtgS6N4Sj0lUBWYiy2ZsbF6ubMoejee/Ft2bq702Ej4/JRZF59IrZYB6tGTQ0/1X/+PYdUo4i0TevPeaGx9RetwyQircs0TbbtamDZ9iqW76hi+fYqVuyoZled95DeJzsplvxMFz0zXfTY46tregJxhzlD2l9Rwc4HH6Lq3Xeb9McPziXvrvOI7WXNvyhFRH6gwCTSTpVUu1m0pYLF2ypZVhgKSTVuf/MvbNQpJY7eOUn0zU2iT04SfXIS6ZmVSGJsy/7YCHq9bDr/J/iLi8N9tkQn2TedROp5R++1NYkjM7FFzy8i0c+R6QJsYMRZVoNhHukszQMYOXKkuWDBglZ7fxEJ8QWCrNxRzaKtFSzaWsmiLRVsr2w4qNcmxToY0CmZ/nnJ9MlJom9uIr1zkkiO4IqJZX9/mtK/TgvVc1IBOb89G2em5ieJSKNARaTWYdrvvAFdYRJpgxq8ARZtrWDuxnLmbdzF0sJKPP7m5xylJjg5qnMKAzulMKhzMkd1TqFrWkKzc4takmmaGHtuZe/ZQMYFfhq+60raBceQOK5vxGoRETlYCkwibYDbF2DRllBAmrOxnCXbKpu9Wy3OaWNwl1SGd0tjaNcUBnVOoXNqfNOwEmH1ixZR8qc/0+nRR4jtlgn1X4JnBYYzk66PX2VZXSIizVFgEolCwaDJ8h1VfL2mlJnryliyrbLZu9a6psczvFta+KtfXhJOuy1CFR9YoLqanY8+RuWbbwJQfM/tdHt8bGh+krM7WBjiREQOhgKTSJQorfEwc10pX68NhaTm7l7rnZ3I2F4ZjOmZwcj8NLKTrJsMuT+maVLz8ccU/+UvBErLwv0Ny9fg3TaG2F6dDvDqffNsKQ+3Y7tntEidIhLdPFsrwB4Drk3E9uhhSQ0KTCIWCQZNvt9exf9WlvDV2p0s3159wOMLshMZ2zMUkEb1SCcrKTZClR4e3/btFE+9n9qvv27Snzgun9w7zsWZm3JY77vxwqfCba3DJNIxbLz41cbWo1qHSaQj8PgDzNlQzmcrS/jfqhJKqj37PTYzMYbje2dxfJ8sji3IjPqA9APT72fXK69S+re/YTbsvlPPkRFPzm2nk3TiQEvnUYmIHA4FJpFWVu328eXqnXy6soSv15RS69n3WkgOm8Hw7mmc0CeLE/pkMSAvOaJ3r7UE9+rVFN39e9wrV+7uNCD1/MFk33Qa9sQjHzaM6Zp+xO8hIm1LTNdUMBxguCyrQYFJpBXUe/38b9VOPli6g6/WlO53wnZagpOT+udwcv8cji3IICmCax+1hmBdXZOwFNszjdy7zyVhcLcWO0evt25qsfcSkbah178vj9Q6TPulwCTSQty+AF+tKeX973fwxaqdNPgC+zyuW3oCpw7I4ZQBOYzonoYjSu5kawkJQ3uQet4Iqj5cQuY1x5Bx+fEYjsPbLkVEJJooMIkcgWDQZO6mct5auJ1PVhTvd7htQF4ypw/K5dSBufTJSWwXc3h8JTvxbt6Ma/QoMH3gXgT1X5N9/RAyLh+roTMRaVcUmEQOw5byOt5aWMhbi7bvdwuS3tmJnD2kE2cNzqNnVvvZ/8wMBql88012PvoYhsNBz/eexxEzGwLl4MjDnubEnmZ1lSIiLUuBSeQg1bh9fLisiP8uLOS7zRX7PCY/I6ExJHWib2772wvNvXYtxfdMoWHJknDfzgfuoNM9Z4Gz5eYpHUjDqh3hdnz/Q1/HSUTanobVO8FuQsIK4gcNtKQGBSaRZiwrrOK1eVt4d8mOfc5LSk1wcs6QTlwwvAuDu6S0i+G2Hwu63ZQ9/Qzl06eDf/ewY0zXZFLOGgv2w1tT6XBsvvK5cFvrMIl0DJuverOx9aTWYRKJJvVePx8sLeK1eVtYWli11/N2m8GEvllcMLwLJ/bPJrYdT2yumz2bonvvw7d16+5Oh43MK0aRcdWJ2GL1Y0RE2j/9pBPZw7qSGl6bt5W3FhVS4957AnffnCQuHNmFc4d2bjMLSR4u/65d7HzoIarefa9Jf/zgXPLuOo/YXtmW1BXXL8+S84qIdeL6ZoERA7bIXc3+McM0D7zj+ZEYOXKkuWDBglZ7f5GWEAyafL2ulOnfbmLmurK9no9x2DjrqDwuG9ON4d3S2uWQ24+ZwSAbzzkH7/oN4T5bopPsm04i9byjQ5vmiohESqAiUusw7feHm64wSYfV4A3w9uJCpn+7iQ2ldXs93yPTxWWju3HB8C6kuWIsqNA6hs1G5q+uZcftdwGQfHJvcn5zNo7M9nO3n4jIoVBgkg5nZ7Wbl+ds4bV5W6io9zV5zmbAKQNyuGJsPmN7ZrS5rUkOlxkIYNj3mIfl2UDysYXUn9OHpAnDSDy2r3XFiYhEAQUm6TA2l9Xxj2828N+FhfgCTYeiE2MdXDSyK1cdm0/X9ASLKrRG/aJFFE+ZQs4f/4hrRD+o/xI8KzAcWeT94WdWlyciEhUUmKTdW11czdNfbuCD73cQ/NGUvS5p8Uw6Jp+Lj+7a5vdxO1SB6mp2PvIolf/+NwDF99xFj+kTscU5wJkPUTpXq27h5nDbNSLfsjpEJHLqFhWC3Q3x80O7C1hAgUnarUVbK3j6y/X8b9XOvZ4b3i2VXxzXk1MG5LSrvdwOhmma1Hz0EcV/eYBA2e5J7r6Snbg3+EgY0tXC6pq39fqXw22twyTSMWy98Z3G1j+1DpNIS1m4pYLHP1vLt+v3vuPtuN6Z3DihgNE90jvE3W4/5i3cTvH9U6n7+psm/YnH5ZN7x7k4c6y7ZVdEJJopMEm7saywikc/W8NXa0r3eu60gbncMKEXg7ukRr6wKGD6/ex6+RVKp03DbNi9950jM4Gc204jacLANhMgE4Z3t7oEEYmwhGGdQ+sw2TMtq0HrMEmbt6qomsc/W8unK0ua9NttBucO6cT143vRO6f97et2sDzr1rH9zjvxrNzjMrYBaT8ZQtaNE7EnxllXnIjIwdA6TCKHb1NZHY98uoYZ3xc16TcMOG9oZ359Um96ZLosqi56GLGxeDdsDD+O7ZVG3l3nEj84Mpvlioi0BwpM0uaU13r42+freG3eVvw/uu3tzKPyuOXk3h36itKPxXROJPOacZQ99xWZ144j4+fjMNrx3nciIq1BgUnajAZvgOmzNvHMVxuo9TTd5+3k/jncekpvBnbq2JOWfSU7aViyhOSJp4LpA/dCqP+GjJ/1IvmUAcR0TrO6RBGRNkmBSaJeIGjy9qJCHv10LcXV7ibPjeqRzl2n92NYt44dBMxgkIo33qD0sccxPR5ie/yD2OzlENgFjjwMp5OYzlZX2TJqZq4Jt5OO0wrkIh1BzcxNYK+C+GSSTpxgSQ0KTBLV5m0s5973V7KqqLpJf68sF3ed3p+T+me3mbu7Wot7zVqK77mHhqVLw33FU+6i21MXYzjb3zylwt++GW5rHSaRjqHwjg8aWy9rHSaRPRVVNfCXD1fz/tIdTfozE2O59ZTeXDyya4dbcPLHgm43ZU8/Q/n06eDfPUQZ0zWFzF+cguFIta44EZF2RoFJoorHH+C5mZt48ov1NPgC4f54p51fHt+TXx7fE1es/trWzZ5N0b334du6dXenw0bmlaPJmDQBWzv+M0oc19vqEkQkwhKPzQcjDhy5ltWgdZgkany+qoSpH6xkS3l9k/6zBudx9xn96ZQab1Fl0cO/axclDz5I9XvvN+mPH5JL3l3nEdsz26LKRERakdZhEoHtlQ1MeXf5Xnu+9ctN4t5zBjKmZ4ZFlUWf7b++mfo9/hFiS4whe/KJpJ57NIatY8/lEhFpTQpMYhl/IMiLszfz2GdrqffuHn5LiXfy21P7cOmobh1+ntKPZd1yI1t+fhUAyaf0JufWs3FkJlpclYhI+6fAJJZYVljFXe98z/LtTe9+u2RUV26f2I90V4xFlUUP0+sFp3P3XYCeDST0WkDmNcOIP6ovicf0sbZAEZEORIFJIqrO4+fRT9fy4uxN7LlId5+cRB74yVGM6J5uXXFRpH7BAorumULGL39B6tknQv2X4FkBjiyyfnW21eVZqurjZeF2ymlHWViJiERK1SdrwF4KcXZSzj7LkhoUmCRivllbyl1vL2N7ZUO4L9Zh49cn9eYXx/UkxqHht0BVFTsfeYTK//wXgJ0P/oXEo1biSIsHZ35oo7wObsc974TbCkwiHcOOez9tbL2hwCTtV43bx18+XMXr87c16R9XkMmfzhtEvjbIxTRNqj/8kJIHHiRQVra739OAe72HxLE9LKxOREQUmKRVfbuujDvf+r7JVaV0Vwx/PKs/5w3t3OFX6QbwFhZSfN9U6mbObNKfeHwPcm8/F2dOskWVRafkUwdZXYKIRFjyKX3AFg+OLpbVoHWYpFXUevz85cNV/Gve1ib9pw/K5f7zBpGZGGtRZdHD9PvZ9dJLlE57EtO9e488R1YCObedTvKEgRZWJyISRbQOk7RHszeUcft/ml5VSktwMvXcQZw1OE9XlQDv5s0U3vobPKv22BPJgLQLhpB1w2nYFShFRKKKApO0GK8/yKOfruHZmRvZ88LlxIE5/Om8o8hKUgj4gT0tDf/O3Qt1xhakk3fXucQf1dXCqkREZH8UmKRFrN9Zy81vLGbFjt3rKqXEO5l67kDOGdJJV5V+xJ7oJ+fmEyj687tkXTuO9MvGYTjsVpclIiL7ocAkR8Q0Tf41fyv3f7ASty8Y7j+udyaPXjiE7OQ4C6uLDr6SEmq//JK0n/0MTB+4F0L9NySflE3C8Mk4szWp+1BUvLMw3E47f4SFlYhIpFT8v+VgK4Q4D2kXX2RJDQpMcth21Xm5863v+WxlSbgvxm7jd6f3Y9Ix+dg6+N5mZiBAxRtvUPrY4wTr6ojploRrwA4I7AJHHobhxKm9cg9Z8QMzwm0FJpGOofihLxtb7ygwSdsye30ZN7+5hNIaT7ivT04iT/xsGP3zdMXEvWYNRffcg3vp9+G+4nun0vO1KzFiu1lYmYiIHA4FJjkkwaDJk1+u56//W9tka5NJx+Tzu9P7Eefs2PNwgg0NlD39NOUvvAh+f7g/plsKuXedgxGbZl1x7UTqecOtLkFEIiz13IFguMDZ3bIatA6THLTyWg+3vLmEmet2r0Sd4YrhkQuHMKGfxpZqZ82i+N778G3bY0Vzh43MK0eTcdUEbDH694mIyGHROkzSVszftIvJry+ipHr3ENzoHulMu2RYh5/Y7S8vp+TBh6h+//0m/fFDcsm76zxieypMioi0dQpMckDBoMmzMzfyf5+sIbDHGNyNE3px68l9cNi1YW7x/X+i5uOPw49tiTFk//okUs8ZidHBJ76LiLQXCkyyX1UNPn777yX8b9XuBRZTE5w8fvFQJvTVVZMfZN9yA7Vffo7p8ZF8Sh9yfnMWjoxEq8sSEZEWpMAk+7R+Zw2/eHkhm8rqwn3Du6Xy5KXD6ZQab2Fl1gp6vRiAERMT6vCsJyblE3JuGYUzryuJx/SxtL6OoPy1OeF2xmVjLaxERCKl/F+LwLYBYneRcfVVltSgwCR7+XRFMb/591JqPbvv8rp2XA/uPL0fzg48BFe/YAFF90wh+YwzyLr+cqj/EjwrwJFF2gUnWV1eh7Hzic/CbQUmkY5h57RZja0PFZjEesGgyROfr+OJz9eF++Kddh7+6WDOHtLJwsqsFaiqYucjj1D5n/8CUP6Pv5N8TDGx+engzAdt+yIi0u4pMAkANW4ft765lP+t2r1qd5e0eJ69fCQDOnXMhShN06R6xoeUPPAAgfLycL/hAO+2ALEFuRZW13GlXzrG6hJEJMLSLxkKRiLEFFhWg9ZhEjaU1vLLlxewoXT3fKVxBZlMu2QYaa4YCyuzjrewkOJ776Pu22+b9Cce34Pc28/FmdMxQ6SIiCW0DpNYbfb6Mq57dSHV7t3zlX55fE/umNi3Qy4ZYPp87Hr5ZUqnPYnpdof7HVkJ5N5+OknjB1pYnYiIWEWBqQN787ut/P6d5fgb11eKc9p46ILBnDu0s8WVWcNXVMS262/As3r17k4D0i4YStYNE7EnxlpXnIiIWEqBqQMKBk0e+ng1//hmY7gvOymW5688mqO6pFhYmbUcGRlN9n+LLUgn765ziT+qq4VViYhINFBg6mDqvX5ufXMJn6zYPbl7QF4yz08aSV5Kx11fCcCw15B753Fs/fVmsq4+lvTLxmE4OvZmwtGo9Nmvwu2sX463rA4RiZzS5+aBLQlitpE1+SZLalBg6kBKqt1c+9IClm2vCved3D+bJ342DFdsx/qr4CspofI//yXzxhsw8IN7IdR/TcLAeHq/dyv2Dh4eo1nZc9+E2wpMIh1D2fPzG1ufKzBJ61pdXM1VL3xHUdXuiczXjOvB3Wf0x96B9jszAwEqXn+D0scfJ1hXhzM3ntSTAxDYBY5OYDiwd9xRSRER2Q8Fpg5g7sZyfvHyAmoa74Sz2wzuO2cgPx/T3eLKIsu9Zg1F99yDe+n34b6dj/yN5GOuwZbYzcLK5FBkXnu81SWISIRlXjOqcUiun2U1KDC1cx8uK+KWN5bgDQQBSIx18PRlwzm+T5bFlUVOsKGBsqeeovyFFyEQCPfHdEsh7+5zsCVmWlecHDINw4l0PFnXjo7UOkz7pcDUjr00ezP3vr+CH9YmzUqK5cWrjmZgp44z5lQ781uK77sPX2FhuM9w2si4cgwZk8Zji9G3gIiINE+/Ldoh0zT5v0/W8PRXG8J9PTNdvHT1KLqmJ1hYWeT4y8ooeeBBqmfMaNKfMCyP3N+dR2yPjnOFTUREjpwCUzvjCwT53VvLeGvR7isqQ7umMn3S0aR3oG1Oyv7xbJOwZEuKIefXJ5FyzkgMbZYrIiKHSIGpHXH7Atz0r0X8b9XOcN+J/bJ58tJhJHSwoaesG66l+sP/R6C8huSJfcm59Swc6S6ry5IWUPLXT8PtnFtOtbASEYmUkr/NbNx8dzU5v7vTkho61m/RdqzO4+cXLy9g9obycN9FI7vwl/OPavd7wgW9XkyvF3tiIpgmeDdg52Py7hyNEZtF4tjeVpcoLWjXv+aG2wpMIh3DrteXNLa+VWCSw1dV72PSi/NZvLUy3PerE3ryu9P6tfvhp7r58ymeci/xw4bR6f47of5z8KwCRzZJ44+xujwREWknFJjauNIaD5c/P4/VxTXhvtsn9uXGCQUWVtX6ApWVlDzyCFX/fQsA76ZNpExw4xrRBZz50M6DYkeWffMpVpcgIhGWPflYsKVA7CDLalBgasO2VzZw+XPz2FhWF+6beu5Arhibb11Rrcw0Tao/mEHJgw8SKN89/GhLcOKvsIMj18LqJBIyLhtrdQkiEmEZlw7XOkxyeDaX1XHZc/PYXtkAgM2Ah386hJ+O6GJxZa3Hu20bxfdNpe7bb5v0J53Qk5zbz8GZnWxRZSIi0t4pMLVBG0trueSfcymp9gDgtBtMu2QYpw3Ks7iy1mH6fJS/+CJlTz2N6d69F54jK4Hc288gafwAC6sTEZGOQIGpjdlQWsslz85lZ00oLMU5bfzj8pGc0E63OvFXVLB10lV41qzZ3WlA2oVDybp+InZXrHXFiYhIh6HA1Ias31nDJf+cR2ljWIp32pk+6WjG9sqwuLLWY09NxZGZgacxL8UWpJN397nED+pqbWFimaK/fBBu5919loWViEikFD34BRgucC4k7/6pltSgwNRGrCsJhaWy2lBYSogJhaUxPdtvWAIwgrvI/e0INi9fSMblY0i/dByGw251WWKhyv+3KNxWYBLpGCrfXdHYmq/AJPu3priGy56bS1mtFwiFpRevGsWoHukWV9ayfMXFlP/zObLvvAOb04CG76BhJjG58RS8dyu2+I6ztYuIiEQXBaYot6a4hkv/OZfyulBYcsXYeenqUYzMbz9hyQwEqHjtX5T+9a8E6+uxp9jIujwTghXg6ASGA5v+pkqj3LvOtLoEEYmw3DsngC0V4oZaVoNhmmarvfnIkSPNBQsWtNr7t3cbSmu5+B9zwleWEmMdvHT10Yzo3n7Cknv1aor+eA/uZcvCfUaMjYJ3rsaR1cnCykREJGoEKiK1DtN+Vz3Wv9uj1Nbyei7757xwWEqKdfDSNaMY3i3N4spaRrC+ntKnnmLXiy9BIBDuj+meQt5d5yosiYhIVFFgikI7Khu45J9zKa4OrTmUEGPnxauPbjdhqXbmTIrvvQ/f9u3hPsNpI2PSGDKuHI8tRn8tRUQkuug3U5TZWe3m0n/ODa/gHeuw8dwVI9vFMJy/rIySBx6kesaMJv0Jw/LIvft8YrtnWlSZiIjIgSkwRZHyWg+XPTePzeX1QGgF739cPoJjCtpHkKh6990mYcmWFEPOzSeTcvYIDG2WKwdp+x/eDrc7/+knFlYiIpGy/Z5PwBYPjpl0fvQRS2qwWXJW2UtVvY/Ln5/Pup21ANhtBk9eOpzxfbMtrqzlpP/8ImJ7hbZvSZ7Yl17/mUzqOSMVluSQVH+6PPwlIh1D9Wdrqf5k6V4jFJGkK0xRoN7rZ9KL81lZVA2AYcDjFw9l4sBciys7fEGvl2BVFY6sLDBN8G7AqPuIvLtGEqhPInFMgdUlioiIHDQFJot5/UGuf3URi7dWhvsevmAw5wxpu3eJ1c2fT/GUe3FkZ9Pt+ScwGr4AzypwZBM/eJjV5Ukb12nq+VaXICIR1uneU8GeDnEjLKtBgclCwaDJbf9ZytdrS8N99549gAtHts190gKVlZT83/9R9VZojol30yaq/nU7qWf1B2d+6NKZyBFKOe0oq0sQkQhLmdi3cR0m67ZDUmCyiGmaTP1gJe8t3RHu+/WJBUw6toeFVR0e0zSp/mAGJQ88QGDXrnC/LcEJ9iRwtN2hRREREVBgssy0L9bz4uzN4ceXje7Graf0sa6gw+Tdto3ie++jbtasJv1J43uSc9s5OLOTLapMRESk5SgwWeCVuVt47LO14cdnDs5j6rmD2tTdYqbPR/mLL1L21NOYbne435GdQO7tZ5B0wgALqxMREWlZCkwRNuP7Iu55d/ft0OMKMnnsoiHYbW0nLAXdbjb/7BI8q1fv7rQZpF04lKzrTsXuirWuOGn3tv3m9XC762OXWFiJiETKttveByMOHB/T9e/PWFKDAlMEzd+0i1vfXMIP+x0P6ZLCPy4fQazDbm1hh8gWF0f84KPCgSm2dwZ5vz+P+AGdLa5MOoLab9dZXYKIRFjtrM2NrdUHOqxVKTBFyPqdNfzi5QV4A0EAema5eOGqUbhi2+D/An8Z2b/oTt2sJNJ+MoL0S8ZhOLQGqoiItF9t8Ld127Ozxs2kF76jqsEHQGZiLC9dNYp0V4zFlTXPV1RE6V+fIPt3d+JITYSG76DhW+yuOHr959cYbezqmLR9XR692OoSRCTCujx8VmgdpvgxltWgwNTK6jx+rnlxAYUVoc104512Xph0NF3TEyyu7MDMQICK1/5F6V//SrC+Hmig0+8GQrACHJ3AcNB2Zl1Je5J0XF+rSxCRCEs6rkfjOkwTLKtBgakV+QNBJr++mGXbqwCwGfDUZcM4qkuKxZUdmHvVKorumYJ72bJwX9V7n5JxSS6xPfOtK0xERMQiCkytxDRN7nlvBV+s3hnu+9N5R3FivxwLqzqwYH09pU8+xa6XXoJAINwfk59K3l3nKCyJiEiHpcDUSp75egP/mrc1/PiG8b24dHQ3Cys6sNpvvqH4vqn4tm8P9xlOGxlXjSXjihOwxeivioiIdFz6LdgKPlpWxMMfrwk/PndoJ26fGJ3zLvylpZQ88ADVH37UpD9heCdy7zqf2O4ZFlUmsm9brnsp3O7+9ystrEREImXLDW+DEQP2t+j+ysuW1KDA1MKWb6/i1n8vCT8e3SOdh386OGpX8a6bN79JWLInx5J980mknDUiamuWjq1+0RarSxCRCKtf/MPoxybLatDiOS2opNrNNS99h9sXWmspPyMh6hemTD79RFxj+gGQclo/ev7nJlLPHqmwJCIisgddYWohDd4Av3h5ASXVHgCS4hw8P+loUhOiZ62loMeDv6SEmG7dwDTBux6j7mNyfzMIb/FwEscUWF2iSLO6PXOF1SWISIR1e+p8sGdC/DjLalBgagHBoMlt/1nK94Wh5QPsNoNnLhtBr6xEiyvbrW7efIqnTAHDoMfbL2Hzfwue1eDIIiZ/ADH5VlcocnBcI/KtLkFEIsw1vEvjOkyjLKtBgakF/PXzdcxYVhR+fO85AxnXO9PCinbzV1Sw8/8eoertt8N95dNuJuvao8HZHTT0JiIi0iwFpiP07pLt/O3z3ZuBXjm2O5eP6W5hRSGmaVL9/vuUPPAggYqKcL/N5cSRkwOOXAurExERaVsUmI7AssIq7vjv9+HHx/XO5I9nDbCwohDv1q0U33sfdbNnN+lPmtCLnNvOwZmVZFFlIiIibZMC02Eqq/Xwq1cW4PGH7ojrleXiyUuH47Bbd+Oh6fNRPv0Fyp5+GtPjCfc7sl3k3nEGScf3t6w2kZay6Yp/hts9Xv6FhZWISKRsmvRGaB0m28v0ePstS2pQYDoMvkCQG19bxI4qNxC6I+65K48mJd5pWU1mMMjmy36O+/vdV7ywGaRfNIys607FFkV364kcCffqouYPEpF2xb2mtLG1/YDHtSYFpsPw5xmrmLdpFxCaM/23nw2jR6bL0poMm42kk04MB6bYPhnk3X0+8QM6WVqXiIhIe6DAdIjeWljIi7M3hx//9pQ+TOiXbV1BP/CXkfHTeGo/zSTppKNI/9mxGA6tSyrtT/5L11pdgohEWP4LF4M9CxLGW1aDAtMhWFZYxV3vLAs/Pm1gLjdOiPxij76iIkoefIism28mtkcXaPgOGmZiGAl0f/56DJuWCpD2K76/rpqKdDTx/bIb12EaaFkNCkwH6YdJ3t7GSd69sxN55KIhEd1CxAwEqHjtNUr/+gTB+noCu4rp9sR4DLMaHJ3AcKCoJCIi0vIUmA7CviZ5P3vFSBJjI/fH5165kqJ7puBevjzcV//dUhq+70vC8H4Rq0NERKQjUmA6CA9+tLrpJO9LIjfJO1hfT+m0J9n18ssQCIT7Y/JTybvrHBKG5UekDhERkY5MgakZHy0r4vlvN4Uf33ZqXyb0jcwk79pvvqH43vvw7dgR7jNibGROOoaMK0/AcNojUodINNlwwZPhdq+3brKwEhGJlA0XvQKGA4xn6PXJx5bUoMB0AJvK6rh9j5W8T+6fww3je7X6ef2lpZQ88ADVH37UpD9heCdy7zqf2O4ZrV6DSLTybttldQkiEmHebZWNrTLLalBg2g+3L8D1ry6k1uMHoGt6PI9GaJK3d9u2JmHJnhxL9s0nk3LW8IhOMhcREZEQBab9uOfd5awurgEgxmHjmctGRGwl74Sh/Um94Fgq35pFymn9yL71TBxp1i6MKRItev7nRqtLEJEI6/nmz8GeA66TLKtBgWkf/v3dNv69oDD8+N6zBzKoc0qrnCvo8eDdsIG4AQPANMG7Huo+IvsX+SRPyMc1qvWHAEXaEg1Ji3Q8sd3SwJEFST0sq0GB6UdW7qjmj+/uvnX//GGduWRU11Y5V93ceRRPmUKgqoqeH7yBI2YheFeDIxt7ehauUa1yWhERETlE2jtjD9VuHze8thBP4+KUfXIS+fP5g1p83pC/ooIdd93N1kmT8G7ZQqCykp1/ngz+LeDMB5uG30RERKKJrjA1Mk2TO//7PZvL6wFIiLHz9GXDSYhpuT8i0zSpfu89Sh58iEBFRbjf5nISP7gnOHJb7FwiIiLSchSYGr0ydwsfLS8OP37wgsEUZCe12Pt7t2yh6N57qZ8zt0l/0okF5Nx2Ns7MljuXSHu27ozHwu3eH/7GwkpEJFLWnT0dsIHxKL1nfmNJDQpMhOYt/WnGqvDjy8d055whLbPBp+n1Uj79BcqeeQbT4wn3O7Jd5N55JknHaVsTkUPhL6u1ugQRiTB/WV1jq8ayGjp8YKr3+pn8+qLwprr985L5/Zn9W+z9t113HXWz5+zusBmkXzSMrOtOxZYQ02LnERERkdbT4QPTfe+tZENpKLnGO+1Mu2QYcS245UjKT84PB6a4vhnk3nU+8QNa5uqVSEdUMONWq0sQkQgreO8qcOSBa6JlNXTowPT+0h28uWBb+PF95wykIDux5U7gLyN5XBU147sRP6QX6Rcfi+HQjYkiR8KZpfl+Ih2NMysRHMmQFJm9XPelwwambbvqufvtZeHHZw/pxIUjuxz2+/l27KD4T38mfdKVuI4eCg3fQcO3GEYCnR+6UluaiIiItGEdMjD5AkEmv76Ymj32iTvc9ZbMQICKV19l5xN/w6yvx7txLT1eOg+bow4cncBwoKgkIiLStnXIwPTYZ2tZ0rjzscNmMO2S4STHHfo+cQ0rVlB8zxTcK1aE+7ybC6mbt5Wk8UNbqFoRERGxWocLTN+uK+PvX28IP75tYl+Gdk09pPcI1tVROu1Jdr38MgSD4f6Y/FTy7j6XhKHdW6pcEfmRNeMfDLf7fvU7CysRkUhZc9LfAQOYSt9FCy2poUMFpoo6L7/59xJMM/T4uN6Z/PK4nof0HjVffUXx1Kn4dxSF+4wYG5lXHUPGFSdgtOAddiKyt2C91+oSRCTCgvW+xpZ13/8dJjCZpsnd7yxjZ01o8cgMVwyPXjQEm+3gZhj5S0sp/vNfqPn44yb9CSM6k3fXecR00w7qIiIi7VWHCUxvL9reZOuTh386mOykuIN+fbChgdovvww/tqfEkn3LKaScMUx3wIlEUJ8v77S6BBGJsD7/+1XoRqrEMy2roUMsCrRtVz1T3ts9MfuSUd04qX/OIb1HTJcsMn9xKgApZ/Sn538mk3rmcIUlkQizu2LDXyLSMdhdMaHv+0SXZTW0+ytMgaDJb/+9lNrGJQTyMxL4QzNbnwQ9HhoWL8E1ZjSYJnjXQ91HZFyYQcJRV5AwLD8ClYuIiEi0aPeB6Z8zNzJ/8y4A7DaDxy4eiit2/x+7bu5ciqZMwb+jiB7vvEps9jrwrgFHDkZ8FgnDIlW5iIiIRIt2PSS3YkcVj366Jvz4xgkFDO+Wts9j/RUV7Ljzd2yddBW+LVsxfT6K/3gLpm8rOPPBlhChqkVERCTatNsrTG5fgFvfXIIvEFpDYEiXFCafWLDXcaZpUvXuu+x88CEClZXhfluik+RTB4M9BzRPSSRqrBo1NdzuP/8eCysRkUhZNXZaY+t39F+9ypIa2m1g+r9P1rC2pBaAOKeNxy4eitPe9IKad/Nmiu67j/o5c5v0J51UQM5vz8aZqU0+RUREpJ0Gptnry3j+203hx78/cwC9shLDj02vl/Lp0yl7+hlM7+5FsBw5LnLvOJOk4/pFtF4RERGJbu0uMNV6/Nz+3+/Dj8f3zeLno7s1OWb7HXc2XYDSZpB+8XCyfnUKtoSYSJUqIodBw3AiHU//OZPB0RmSzrWshnY36fuBD1exvbIBgJR4Jw9fMHivtZLSL78s3I7rm0n+9GvIufVMhSURERHZp3Z1hWnW+jJem7c1/Pi+cwaSlRSLaZq7Q5O/lISCNaT/bACOnBzSLz4Ww9HucqOIiIi0oHYTmGo9fu7YYyjulAE5nJFlUnjd9SSddhqp550BDd9Bw0wwXOT85qcWVisiIiJtSbsJTH/ZYyguPc7GH+oXs/Gcv2PW19OwdDGJQzfhSPKCszMY7eZji3Q4gTpPuK3tUUQ6hkCdFxweMOos2x6lXSSHb9eV8a/GobiCykL+b8sM6jetCz8fqKqmbs4WUs4abVWJItJC1k54KNzWBHCRjmHtyf9obE3ROkyHq8bt4863vifO7+HyVZ9w3saZ2Ewz/HxszzRy7z6XhMHdDvAuIiIiIvvX5gPTXz5cTefVC/nz0rfJaagM9xsxdjKvOYaMnx+P4bRbV6CItCjdzSrS8dgSnICBlbHFMPe4GtPSRo4caS5YsKDV3v/bBetYcccfOH7H9036E0Z2Ju+u84npmt5q5xYREZEICVREah2m/e6F1mavMNW4fdz7wWruK9+9orc9NZacm08h+Yxhe629JCIiInK42uwCRB98X8R6t41njzoHgNiJA+j578mknDlcYUlERERaVJu9wnTJqG6kxDv5w9uw7QyTU88qsLokERERaafabGACOCXbzphLbCQGW28elohEF19pTbjtzEqysBIRiRRfaS04qqF+J86cbEtqaNOBaf0JJwBQgtZjEeko1p/5eLit73uRjmH9OS80tv5i2TpMbXYOk4iIiEiktOkrTI6sLDB9gNfqUkQkQhyZiVaXICIR5sh0ATYw4iyroU2vwwRAwzxo+BYcnVr3PCIiImKNKFiHSUNyIiIiIs1QYBIRERFphgKTiIiISDPa9KRvz6ZN4CkGdxWxPTWHSaQj8GwpD7dju2dYWImIRIpnawXYY8C1idgePSypoU0Hpo2nnxFuaz0WkY5h44VPhdv6vhfpGDZe/Gpj61GtwyQiIiISrdr0FaaY7t3BdIPZYHUpIhIhMV3TrS5BRCIspmsqGA4wXJbVoHWYREREJLppHSYRERGR6KfAJCIiItIMBSYRERGRZrTpSd8Ny1eAZzN4yogfpDlMIh1Bw6od4XZ8f33fi3QEDat3gt2EhBXEDxpoSQ1tOjBt/ulPw+3+8wdbWImIRMrmK58Lt7UOk0jHsPmqNxtbT2odJhEREZFo1aavMMUNGABmHQRrrS5FRCIkrl+e1SWISITF9c0CIwZsKZbVoHWYREREJLppHSYRERGR6KfAJCIiItIMBSYRERGRZrTpSd918+aDdxV4duAapTlMIh1B3cLN4bZrRL5ldYhI5NQtKgS7G+Ln4xo9ypIa2nRg2nrlleF2//kjLaxERCJl6/Uvh9tah0mkY9h64zuNrX9qHSYRERGRaNWmrzAlHH00BKshWGV1KSISIQnDu1tdgohEWMKwzqF1mOyZltWgdZhEREQkumkdJhEREZHop8AkIiIi0gwFJhEREZFmtOlJ3zVffAneNeDdQtJ4zWES6QhqZq4Jt5OO62thJSISKTUzN4G9CuKTSTpxgiU1tOnAVHjDDeF2//ljLaxERCKl8Ldvhttah0mkYyi844PG1stah0lEREQkWrXpK0yJ48dDsAICu6wuRUQiJHFcb6tLEJEISzw2H4w4cORaVoPWYRIREZHopnWYRERERKKfApOIiIhIMxSYRERERJrRpid9V73/AfjWg3c9KWdoDpNIR1D18bJwO+W0oyysREQipeqTNWAvhTg7KWefZUkNbTow7bj99nA75YzjLaxERCJlxz3vhNsKTCIdw457P21svWFZYNKQnIiIiEgz2vQVpuQzz4RAOQRKrS5FRCIk+dRBVpcgIhGWfEofsMWDo4tlNWgdJhEREYluWodJREREJPopMImIiIg0Q4FJREREpBltetJ3xZv/Bt8m8K4n7aeawyTSEVS8szDcTjt/hIWViEikVPy/5WArhDgPaRdfZEkNbTowFU+ZEm6n/fRECysRkUgpfmBGuK3AJNIxFD/0ZWPrHcsCk4bkRERERJrRpq8wpV54IQR2gr/Y6lJEJEJSzxtudQkiEmGp5w4EwwXO7pbVoHWYREREJLppHSYRERGR6KfAJCIiItIMBSYRERGRZrTpSd/l018A3xbwbSLjCs1hEukIyl+bE25nXDbWwkpEJFLK/7UIbBsgdhcZV19lSQ1tOjDtfPjhcDvjitMsrEREImXnE5+F2wpMIh3DzmmzGlsfWhaYNCQnIiIi0ow2fYUpfdIk8BeBf7vVpYhIhKRfOsbqEkQkwtIvGQpGIsQUWFaD1mESERGR6KZ1mERERESinwKTiIiISDMOOjAZhnGDYRibDMNwG4ax0DCM41qzMBEREZFocVCTvg3DuBh4ArgB+Lbxvx8ZhjHANM2trVjfAZVOexL8heDbStZ1msMk0hGUPvtVuJ31y/GW1SEikVP63DywJUHMNrIm32RJDQc16dswjHnA96Zp/mKPvnXAf03TvGt/r2vtSd+r+vUPt/vPv6fVziMi0WPVqKnhtr7vRTqGJt/3q1e15qn2O+m72cBkGEYMUA9cYprmf/bofwoYZJrmCQd4bevdgiciIiLSgkzTPKK75DIBO1Dyo/4SIPfHBxuG8UvDMBYYhtHK6wmIiIiIRMahLFz546tFxj76ME3zWeBZiNA6TCIiIiKt7GCuMJUBAfa+mpTN3ledRERERNqdZgOTaZpeYCFwyo+eOgWY3RpFiYiIiESTgx2Sewx4xTCM+cAs4DqgE/D31ipMREREJFocVGAyTfNNwzAygD8AecBy4AzTNLe0ZnEiIiIi0eCgJ32bpvk08HQr1iIiIiISlbSXnIiIiEgzFJhEREREmqHAJCIiItIMBSYRERGRZigwiYiIiDRDgUlERESkGQpMIiIiIs0wTHOv/XNb7s0NoxRo7cUtMwntdyciHYe+70U6nkh835eZpnnavp5o1cAUCYZhLDBNc6TVdYhI5Oj7XqTjsfr7XkNyIiIiIs1QYBIRERFpRnsITM9aXYCIRJy+70U6Hku/79v8HCYRERGR1tYerjCJiIiItCoFJhEREZFmKDCJiIiINEOBSURERKQZlgcmwzAuNAzDYxhG9z36njAMY4NhGDktfK7TDMOYaRhGhWEYuwzD+MQwjP4teQ4RaTmR/PkgIu2DYRhfGYbxZEu/r+WBCfgvsAz4A4BhGLcBlwCnmaZZcqAXGoZxt2EYtc18HbfHS1zAX4FRwHigCnjfMIyYlv9YItICDvvng4hIS3JYXYBpmqZhGHcDMwzD2AD8HjjRNM11AIZhnAE8TijcPW6a5tN7vPzvwL+bOcX2Pc711p5PGIZxFVBNKEB9e6SfRURa1kH8fHgPOA743DTNn1pYqoi0c1GzDpNhGLMJBZezTdP8qLHPAawCTgTKgQXASaZpFh3mOXoB9wOjgSxCIcwFXGaa5r+O+EOISKvY18+Hxv4JQCJwpQKTSPQyDONC4FWgj2maWxr7ngDOAo5pySvGhmF8BawGPMAVjd3PAXeaphk83PeNhiE5DMM4ERgCGMCef2ijgJWmaW4zTbMeeIfQH+4PrzvUIbn3CQWlXxEKTcMAP6AhOZEodYCfD5im+SVQY0VdInJIIjn9BuAyQhlnLKHf+b8EbjmSD2D5kJxhGEOAt4HJwJnAA8DExqc7Adv2OLwQ6LzH44MekjMMIwPoD9zY+EMWwzCGEwV/BiKyb838fBCRNuJAw+uGYXQFXgGyAR9wn2mab+/x8kOaftOoCPi1GRpGW20YRh/gN8Bjh/sZLA0LjXe+fAg8ZprmdMMw5gPfG4Yx3jTNrwj9i/LHwmOIpmnuAnYd5OkqgDLgF4ZhbCMUvP6P0BUmEYkyB/HzQUTaENM0PzUM4zvgT4SG179rfMoP3GKa5hLDMLKBhYZhfNw4snSov+t/MNdsOudoDnC/YRjJpmlWH079lg3JGYaRDnwMfGCa5lQA0zSXA/8h9K9ICCXGrnu8rAuw43DO1zhueTEwGFgOPAX8kdAYp4hEkYP8+SAibcj+htdN0ywyTXNJY3snoQscmXu87nCG5Fq+/miZ9L0vjZO+VwMTCF0dWgicbJrmYYUmEWl/DMMYD9ykSd8i0atxeP1rQsNiZwKJpmnuNbxuGMZIQsNzA364QtT4D6j0Zk6x3TTNhsbjvwLygH57vMfvgRtM0+y8/7c4sKiev2Oapt8wjFuBzwldDXtCYUlEfmAYxv8I/YvVZRhGIXChaZpzLC5LRPZwsMPrjXONXwau2XM47TCH5DoBfzUM42ngKOB2QkOBh/85ovkKk4iIiLRdjVeHZgHfmKb5qz363wS6maY5tvFxLPAZ8E/TNF85wnN+RWh0yg/8nNDc5+nAHaZpBg77fRWYRERExCqGYRjAv4A1pmnea3E5+6XAJCIiIpYxDGMc8A3w/R7dl5umucyikvZJgUlERESkGVGx0reIiIhINFNgEhEREWmGApOIiIhIMxSYRERERJqhwCQiIiLSDAUmERERkWYoMImIiIg0Q4FJREREpBn/H82Z6e8pb+VYAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plot_trapezoid_rule_illustration()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "More formally:\n", "\n", "$$\n", "\\begin{aligned}\n", "\\int_a^b f(x) dx & = \\int_{x_0}^{x_1} f(x) dx + \\int_{x_1}^{x_2} f(x) dx + ... + \\int_{x_{n-1}}^{x_n} f(x) dx \\\\ &\\approx h \\frac{f(x_0) - f(x_1)}{2} + h \\frac{f(x_1) - f(x_2)}{2} + ... + h \\frac{f(x_{n-1}) - f(x_n)}{2}, \n", "\\end{aligned}\n", "$$\n", "\n", "which we can further simplify to:\n", "\n", "$$\n", "\\begin{aligned}\n", "\\int_a^b f(x) dx \\approx 0.5h f(x_0) + h\\sum_{i = 1}^{n -1}f(x_i) + 0.5 h f(x_n).\n", "\\end{aligned}\n", "$$\n", "\n", "The weights are then the following:\n", "\n", "$$\n", "\\begin{aligned}\n", "\\omega_i = \\begin{cases}\n", "h / 2 & \\text{if $i \\in \\{0, n\\}$} \\\\\n", "h & \\text{otherwise}\n", "\\end{cases}\n", "\\end{aligned}\n", "$$" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "\u001b[0;31mSignature:\u001b[0m \u001b[0mquadrature_newton_trapezoid_one\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mf\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0ma\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mb\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mn\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mSource:\u001b[0m \n", "\u001b[0;32mdef\u001b[0m \u001b[0mquadrature_newton_trapezoid_one\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mf\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0ma\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mb\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mn\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;34m\"\"\"Return quadrature newton trapezoid example.\"\"\"\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mxvals\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlinspace\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0ma\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mb\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mn\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mfvals\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtile\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnan\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mn\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mh\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mxvals\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m-\u001b[0m \u001b[0mxvals\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mweights\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtile\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mh\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mn\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mweights\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mweights\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m0.5\u001b[0m \u001b[0;34m*\u001b[0m \u001b[0mh\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mi\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mxval\u001b[0m \u001b[0;32min\u001b[0m \u001b[0menumerate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mxvals\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mfvals\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mf\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mxval\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msum\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mweights\u001b[0m \u001b[0;34m*\u001b[0m \u001b[0mfvals\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mFile:\u001b[0m ~/external-storage/sciebo/office/OpenSourceEconomics/teaching/scientific-computing/course/lectures/integration/integration_algorithms.py\n", "\u001b[0;31mType:\u001b[0m function\n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "??quadrature_newton_trapezoid_one" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "integrand = quadrature_newton_trapezoid_one(np.exp, 0, 1, 1000)\n", "np.testing.assert_almost_equal(integrand, np.exp(1) - 1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Simpson’s rule\n", "\n", "\n", "Simpson’s rule approximates the area under a function $f$ with the area under a piecewise quadratic approximation to $f$.\n" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkwAAAFsCAYAAAA+IOZoAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAABVN0lEQVR4nO3dd5hU5fnG8e+Zsr33RpGy0qSLYkGwISr2BkZjicYSYo1Gk1hT1F+wa2IDe0ksUcSOggoC0kGQXrewbO+zU87vj1kHVsoC7s6Z2b0/17UXM++Z8oy4uzfnfc/zGqZpIiIiIiJ7Z7O6ABEREZFQp8AkIiIi0goFJhEREZFWKDCJiIiItEKBSURERKQVjvZ88VNOOcX85JNP2vMtRERERNqKsbcD7XqGqbS0tD1fXkRERCQoNCUnIiIi0goFJhEREZFWKDCJiIiItEKBSURERKQVCkwiIiIirVBgEhEREWmFApOIiIhIKxSYRERERFqhwCQiIiLSCgUmERERkVYoMImIiEhIM03T6hLad/NdERERkQPlra3DW7oDT2kpNYXb+feyCvqOPY4LDu9iWU0KTCIiIhIUvqYmvBUVODMzW4zXL1pEycMP49mxA8+OUsz6+hbHM3MH8eeGVPKz4hncJSmIFe+kwCQiIiK/mOnz4SktxV1QgKeoCHdREe6iYtxFRf7727fjLSvDnpxM/ndzdnmiiemqpWHBwr2+dnJjDU1eH/c+8xbv/fW3Qfg0u1NgEhERkVaZpom3ogL3li1EDRiA4dgZIZq2bmXDqadhut2tvo63ogJf2fvYHPXgqwJfDY7IypaPcTgoiUigIiqeysh41sVlUDrtn/xv5UxQYBIRERErmV6v/6zQls00bdlK05YtNG3ZjHvrNtxbt+Jrnirr+cXnROTlgekFXx2OJM9+hSVsBo60GLylq7BlJIMRBY54nF2z6PrUJdTGxvOneel8URgHhgFAbqKP7x+9EXfJhvb86K1SYGonBQUFTJo0iW+++YaysjJuvPFG3G43mzZtYtq0aQf0Wo888ghTp05lyZIl2Gy6sFFERA6eaZrg82HY7S3GN15wIa5Vq/Yr+LhXv0JEbCL4agH/Jff25Cjwmjiy4nFmJeDMSvZ/ZSbiyEzw/5kah+HY/feYLcLGqqxe/O5/0RTX2MCflTi6u4cnzmrgk7RRYDsToof/4s9/sBSY2slll11GYWEhL730EikpKXi9XsaMGcOcOXNaf/LPXHPNNTz44IO89NJLXH755e1QrYiIdDSmx+M/S7RhPa4NG2nasAHXxg00bdhI9n33kjBu3M4H+xowm+pbDUu2GCfO3ATw1IKRDY6kwJmgXu/fhC3KeeB1mvDC/Age+CoSj88IjF9/lIubRrlw2GDieYeDIxfizzzg128rCkztoLi4mBkzZvDiiy9y6qmnAjBp0iQGDRrE8OEHno6jo6O59NJL+ec//6nAJCIie1Q3dx71CxbgWreOpvXrcW3aBHsJQK6138GxDvBuB28pmE1E5Hhw/eg/UxSRl0RElxSceWlEdEkjIjcJZ14K9sRoDMPY42seTFiqaoTbPozm0zU7n5sU7eOR8Y2M6eU54NdrT5rfaWPnnHMO2dnZmKbJr3/9awzD4I477uDVV19l4sSJLR67bt06nE4nd999d4vxa6+9lvj4eBYsWBAYu+iii1i5cuVBnaESEZHwZ5om7oICar78irp583c7Xj19OqVPPknNJ5/gWrt2r2EJwL15MTStArMB7Kng7ELmrWeT/+Vt5H96G91fuJqce84j/TejSRw7gOgBeTiSYvYalg7GimIb46fEtQhLg3K8fHhFXciFJQjBM0zd/zjd6hICNj1w2gE/5/777yc1NZU333yTzz//HACXy8UDDzzAscce2+KxvXr14je/+Q2PPPIIkyZNIi0tjfvuu48pU6Ywffr0FmejBg8eTEJCAp988glHHXXUL/tgIiIS0nwNDbjWrKHxx9W4Vq+mcc1qXKvX4KupASBu9GhiRwwBb5X/SjNvGZFdGnZ7HUd6DJHdU4nonk5E90wiD0kjolsajrSdi6p/4kyLD85na56Ce+irSNy7TMFdNtzFnSe4iLDv48kWCrnAFO769+9PZWUlAwcO5MgjjwTgwQcfxDAMBg4cuNvj7777bl5++WUefPBB+vTpw7333ssbb7zBiSee2OJxNpuNgQMHMnfu3KB8DhERCa6GH36g/IUXaFz1I02bN4PPt9fHun5cBOWPgEnzAmkbMQPjSJl4OJE9s/3BqHsa9rioYJW/X0pqDW6ZFs03G3fGj7gIkwdPa+C0vns/qzR+wr+ar6h7/oAvnGorCkztYMmSJYwdOzZwv7CwkISEBCIiInZ7bFZWFjfeeCOTJ0/G4/Hw+OOPc8EFF+zxddPT01mzZk271S0iIu3LXVJC4w8/0LRxE6lXtFyTarpcVH/08T6fb4uPIKpnGpG9szBtuRj2nStrovpBVL/8dqm7LXyx1sFtH0ZR3rCz5oHZXh47s4FDUvYeDgE+/HRFe5fXqpALTAczDRZKampqWL9+PUOGDAmMNTY2EhkZudfn9O7dG5fLxTHHHMP111+/18dFR0fT0LD7KVcREQk9nooKGpcvp2HFChpX/EDjihV4SkoCxxPPHIcjEfCUg6eAqKwN/rNFJmAziOiSSFTvDCJ75xCVn01kr0wcGfFtuo4oGBrc8LcZUby6aOdJAwOTa0Y2cdOo0J2C+7mQC0zhbsmSJZim2SIwpaamUlFRscfHf/nll/z2t79l5MiRzJ49m6VLlzJo0KA9Pra8vJy0tLR2qVtERH4Z0zQpf+klGpcto2HZctzbtu3z8Y3z/0HciFz/dfW2aGwxseTcexYReSlE9so8qKvOQs2KYhs3fRDN2tKdqSgr3sfD4xs4qrt3v1/ng9evAXsKRB/ZHmXuFwWmNrZ48WKcTif9+/cPjPXp0we32822bdvIy8sLjC9atIizzjorsPA7Pz+fO++8k+nT97zwfePGjYwYMaLdP4OIiOydaZo0bdqEPT4exy7/iDUMg4o33sC9ecten2tEOYjKTyOqTw6OjO7gzGpxPPGU3de6hqMmLzw5O5KnZkfgNXeeETvlUDf/GNdIcox5QK83/pTDmvswjW/rUvebAlMbW7x4Mf369WsxBTdq1CgA5s+fHwhM69atY9y4cZx88sk88cQT2Gw27r77bq644gq+/vrrwHN+UllZyZo1a7j11luD92FERARfXR0Ny1fQsGQx9YsX07hkKd6qKjJuv53Uy34duEoNdyHRfeJxb/Y/z3DaiOydRnS/HKL6dSW6bw4R3dNarDvqiFaV2LhlWjQrt+88qxTlMLn7pEYuGuz++cV5YcMwzQNLeQdi+PDh5q69hDqDwYMHM3jwYF588cUW40cccQT9+vVj6tSpFBcXc9RRR9G1a1c+/fTTQLjyer0MGDCA5OTk3fotvfbaa1x55ZUUFBSQmpoarI8jItLpuIuKqF+0iIZFi2lYvJjG1avBu/v0UfzxA8j76zFgupqn1ZzULSjHtbWO6P55RPXOxHCGyQKdNuDxwb+/i+Cxb1q2Cxie5+GfpzfQPeUX5A1vRbA6fe81zikwBcmLL77IDTfcQFFRETExMQf8/HHjxpGWlsYrr7zSDtWJiAhA2ZSplDz0UKuPsydGEndsT3L+ciYY4b/W6Jdau8PGrR9Gs7RoZ0CMsJvcNtrF5Yc38YtPqoVAYNKUXJBccsklPPTQQzz99NMHPK22ZMkSvvrqK1assP6yShGRcGZ6PDT+uJr6Bd/jKSom844/7nLQR1R+9u5PMiCyRwrRA/OIPqw70Yd1IaJrSthdrdYeXB54ek4kT8+JaHFWaVCOl8mnN9Arbd/tAvbX6PGPghEB9keYOXNmm7zmgVJgChK73c6UKVNYtGjRAT+3uLiYqVOn0qtXr3aoTESk4zI9HhpXrqR+/nzq5s+nYeEifHV1/oM2G2nXnIs9qhbc68CzleiuDdhinUT1ySBmUDeiB3Un+rC8kGsAGQrmbbFz58dRrC9reVbpxmNdXH1kE442XKo1a/batnuxg6QpORER6TBM06RxxQ/Uz59H3bx5NCxYiK++fq+P7/LPk4gb2QVscf4vw4Hp9XX4hdm/RFUDPPBVFG8sadmMeXCOhwdPbeTQjLY5q7QrI3HnXqztmVvQlJyIiHQWW6+9Fm9p6V6PO9JjiBnShZghPYjs1wecLfdQU1jaM9OE6asc3PN5FKV1O/8bxUWY3Da6kYuHun/5WqW9+OqDG8CeBjHHtM8b7AcFJhERCSvu4mLq5nxH3Zw5xB8/hoRTT/UfMD0Y3h3EDutF9ac7A5MjM5bYIV2JGdaTmGHdceYma/3RAVpXauPez6Na7AEHcFK+m/tObiQ7oV3P+jD6mPzmRd+j2/V99kWBSUREQpq3tta/Bmn2HOrmzKFp48ZdDtaTcHwuNK0B9xbAS/xRUUAfYof3JGZ4D5w5SQpIB6nWBU/MjuSF+RF4dlnUnRnn496xjZxy6N43zO1oFJhERCSkmF4vjT/8QN3s2dTOnk3DkqXg2fMv5rq5czBru2LYE8CRBYaNhHFdSBgX5KI7GNOE939w8Pcvoyip3TnPZjNMfjXUza3HNZLQydbBKzCJiEhIqZ05k23X/26vx40IOzGDc4gd0YuYEb3824voDFKbWbndxt2fRvH9tpYR4fA8D/eMbaR/Ztsv6g4HCkwiIhJ0psdDw9Kl1H77LenXXosR0XzFlekjZmh3sNvAu/MXc2R+KnFH9CL2iN5ED+qKLVK/vtpacY3Bw19H8t+lTsxdLhbLiPNx5/GNnNnfY1kuHTbmAX+DUNt9LFy40JIa9H+ciIgEhaesjNpvvqHu66+p/XY2vupqAGIPH0Ts8Dz/OqSmtdh9jcSP6ootKprYkYcSO6InjpRYi6vvuGpd8OzcSJ6dF0GjZ2cicthMrhzRxKSjXcRF7uMFgmDR0q3WFoACk4iItBPTNGlcuZLaWbOonTmLxuXL/Ytjfqb28yeJzT8cbNFgTwaHk7wHL7Wg4s7F44O3ljh55JvIFm0CAEb3dPPnE1xt1qm7I1Bgamc/NdjSFRoi0pmUv/wyZc+/gKekZK+PcWTEEjeyB3HHDIKIrkGsrnMzTfh8rYOHvopkXVnLzYH7ZXr50/GNHH3I7psNW2nBl7eDPR1iR1tWgwJTG1u0aBEXX3wxhmEwadIkPvzwQ8aOHcvvf/97q0sTEWkXPpcLW2TLORvT69s9LNkNogdkEXf0ocQdcyiRPTP0j8kgMk34ZqOdybOiWmySC5Ad7+PW0S7OHuDGFoJ/JcMGd23uwzTMshoUmNrYq6++yk033cQRRxzBhAkTADj//PMtrkpEpG25NmygZsYMamd8ibe6mp4fTQfTC55iaNpA/LBiSgB7QiSxI7sTd0w/4kb2wp4QbXXpndK8LXYmz4pk/taWv/bjIkyuPcrFlYc3EeW0qLgwob3kRESkVabPR+OyZdTMmEHNFzNaNo8Eerz9RyJzysF0Azawp9CwqpyoQ7Mx2nIXVjkgSwptTJ61e4fuCLvJpcOauGZkE2mx7dulu014K5rPMJ3Z3u+kveREROTAmG439d9/T80XX1Dz+Rd4duzY8wNtBo3LvieyyxFg7Py1Et0/N0iVys/N22LnydmRuwUlp83kwsFufne0i6z4MAhKIUSBqZ0UFBQwadIkvvnmG8rKyrjxxht5+OGH9/mcSZMmsWnTJqZNm3ZA7/XII48wdepUlixZgs2mf8mJSNvYNPFi/5Vte2BEOYg7oitxowcQd3Q+jqSYIFcnP2eaMHODg6dnR+zWdNJmmJx7mJvfH+OiS1L4BaX8w+8FHGD7A2vWrLGkBgWmdnLZZZdRWFjISy+9REpKCt27d9/n49evX88zzzzDnDlzDvi9rrnmGh588EFeeuklLr/88oOsWEQ6K19DA56yMiLy8nYOmiYxwwe0CEz2xEjijulJ/JjDiB3RA5sWvYQEnwmfrnbw1JxIVhS3XMxtM0zG9/Pw+2Nc9EwN3xYBa9fv/WrLYFFgagfFxcXMmDGDF198kVN/2kW7FY8++iiDBg1i+PDhB/x+0dHRXHrppfzzn/9UYBKR/eKrr6d21iyqP/2M2lmziB40iG5Tp4C3BJrWgWsZCUdWUz09lvjR+cSPOYyYQV21HimENLjh3eVOXpgfwYbylkHJaTM55zA314500T0l/M4ohSIt+m5j55xzDu+9916Lsb/85S/cd999e32Oy+UiKyuLu+66i5tuuikwvm7dOvr27cudd97JvffeGxi/9tprefXVV/nqq68CAWvRokUMGzaM2bNnc9RRR7XxpxKRjsDX0EDtrK+p/uQTamfOxGxs3HnQZtD7w8txJPjAsIM9BdPw766qS/9DS0mtwSsLI3h1kZOKhpYBNtJhMmFwE1cf2UROQscJSmtW/wj2TIg7kfz8/PZ8Ky36Dpb777+f1NRU3nzzTT7//HMAevTosc/nzJ07l8rKSo499tgW47169eI3v/kNjzzyCJMmTSItLY377ruPKVOmMH369BZnowYPHkxCQgKffPKJApOIBPhcLmq//pqajz+m5quZmA0Ne3xcRNdE3CUeHGndA2OKSaFlVYmNF+ZH8MEPTpq8Lf924iNNLh7axJWHN5Ee13GC0k/ye2U2XyXXrmFpn0IyMO144klKn3pqvx6bdP75ZN/f8uxN0V/uovK//92v56ddfz3pk1ruit2w4geiB/Tfv2J/pn///lRWVjJw4ECOPPLI/XrO3LlzMQyDgQMH7nbs7rvv5uWXX+bBBx+kT58+3HvvvbzxxhuceOKJLR5ns9kYOHAgc+fOPai6RaTjMb1e1p88Fs/27Xs8HnlIEvEn9CfhxIFE9kgPcnWyP9xe+GyNg1cXRfDd5t1/Zecl+rji8CYuGNRk+X5vHV1IBqZwt2TJEsaOHRu4f8IJJ1BaWophGMTHx/PEE08wePDgwPHCwkISEhKI+Gm37l1kZWVx4403MnnyZDweD48//jgXXHDBHt83PT3dsqsHRMRaps+Hr7YWe0JCYMyw2Yg5fCDVH34eGIvolkjCif1JOGmQQlIIK6w2eGNxBG8ucbKjbvd1Y8PyPPxmRBMn5XvQsrLgUGBqYzU1Naxfv54hQ4YExt59910SExMBeO+997jssstYsmRJ4HhjYyORkXv/p0Hv3r1xuVwcc8wxXH/99Xt9XHR0NA17Od0uIh2PaZq4Vq2iatqHVH/0EbFHHkHOgw+Ctwya1kPjIhJG+WhYkkDCSf1JOGmgtiMJYT4Tvt5g59VFEXy5zoHPbPn3ZDNMxvXxcOWIJobmhtZeb51BSAam9Em/222a7EBk33/fbtN0B+Jgp+PAf3bJNM0WgemnsARQXV2923NSU1OpqKjY4+t9+eWX/Pa3v2XkyJHMnj2bpUuXMmjQoD0+try8nLS0tIOuXUTCQ9O2bVRPm0bVtA9p2rAhMF7z+Wf4buqBzVnJT92240YdRdxxRykkhbCtlQZvL4vgneVOtlXtfrooI87HRYPdTBjcRHYHWsh9IHL63QnYwIiisLDQkhpCMjCFs8WLF+N0Ounfv2Xouvjii5k1axY2m42PPvqoxbE+ffrgdrvZtm0bebv0QVm0aBFnnXVWYOF3fn4+d955J9OnT9/je2/cuJERI0a0/YcSEct5Kiqo+fRTqj6YRsOiRXt8jBFh0rS5lKi+Oy80UUwKTXVN8PGPTt5e5mTulj3/Kj6mu4dfDW3ihN4enPY9PqTTKCqusroEBaa2tnjxYvr167fbFNtrr70GwPPPP8/tt9/eIvSMGjUKgPnz5wcC07p16xg3bhwnn3wyTzzxBDabjbvvvpsrrriCr7/+OvCcn1RWVrJmzRpuvfXW9vx4IhJkpsdDwU03UTNzFrjdux03oh3EH9eLxLFDiD2iB4ajk/9mDWE+079lybvLnUxf5aTevXucTYr2cd5hbiYOcdMjjBtNdkTqw9TGBg8ezODBg3nxxRf3eNw0TSIjIykqKiI1NTUwfsQRR9CvXz+mTp1KcXExRx11FF27duXTTz8NhC+v18uAAQNITk7erSP4a6+9xpVXXklBQUGL1xWR8Lf5ssuonztv54DdIO6IriScMoT44/pgi979ghEJDaYJSwrtTFvpYPoqJ9trd59ysxkmo3t6OO8wNyf09hCpUxm7Kdy2ERzZEDeWnJyc9nwr9WEKll0XcwNUVFTQ2NhIdnY2AO+88w4ZGRmkpKS0eNy1117LDTfcwFNPPUVWVhYbdlmX8BO73c6qVav2+L6vvvoq559/vsKSSJhyFxZS9cEH2BISSJk40T/oLYemNSSeGEf9XIjqn0HiuMEknHQYjuRYawuWvTJN+HGHjWkrnUxb6WRr5Z4vY+uV6uX8QW7OHuAmowP2TmpLOdlJ4EiB+HYNS/ukwNTOKioquPDCC2lsbMRms5GRkcGHH3642wLMSy65hIceeoinn376gKfVlixZwldffcWKFSvasnQRaWe+hgZqPv+cyvfe859BMk0c2VkknzUAo2kxeIsBOwnHH0b0oD5EdtM/iEKVz4RlRTY+W+Pk09UO1pfteWo0NcbHqX08nDewiYHZPrQWP3woMLWzHj168P3337f6OLvdzpQpU1i0l8Wc+1JcXMzUqVPp1avXwZQoIkFkmiYNi5dQ9d67VH/0Mb66uhbHPUXF1H87ldjD+4CzKwA2J0TGWVGt7EuTF+ZutvPZGiefr3HscboN/F24x/VxM76fm5HdvOqbFKa0hklEJAg8O3ZQ9f77VL7zLk0bN+7+AJtB7PA8Ek8fRvzovtiinMEvUlpVUW/wzUY7M9Y5+XKdgxrXnk8RRTtNTurtYXw/N6N6aF3SL+ataN4a5cz2fietYRIRsdLmyy6naf363cYjuiSSOH4wiacOwZmRsIdnipW8PlhWZGfWBjsz1ztYWmjH3Mvv1ORoHyf09nByvodjD/EQrczbZuK73ow/yzioqamxpAYFJhGRNuZzubDt2lrE9JF4+nHseMwfmGwxThJOPJTEMw4n+rA8NZUMMUXVBnM2O5i13sE3G+1UNOx9Di030cfYfDcn53sY3kXTbe2lttZldQkKTCIibcHnclHz2WdU/ue/mD4f3V97FbzV0PQjNC4kcUw1dd/kkDh+GAnH91crgBBSUmvw3WY73212MHeznU0Ve+9lZTNMBud4Oa6HhxPzPfTL0MLtzkKBSUTkF3CtW0fFf/5D9fsf4K3a2Y3YtezfROZW8dMWJc6cfnT7dz/rCpWA4hqDBVv9Aem7zXY2lO+72Wd6rI/jeno4rod/qi0pOkiFSkD15sngyIH40yyrQYFJROQA+Robqfn0Uyr+818aFi7c/QF2g4Yly4jsdjQYmqOxktsLq0psLNzmYOE2O4sL7BRU7/vvJNJhMjzPy1HdPYzu6aFvhg+bziJZKj4+ChzREB9vWQ0KTCIi+8m1YQOVb71F5f/ex1e1+95Wzuw4ks4YQuIZw3GmW/eDvbMyTdhWZbCi2M6yIjsLt/n/bPTsO+1E2E2G5HoZ2c3DyG5eBud4dVWb7Eb/S4iI7KfyqS9S+d//thy0G8SP6knSWSOIPaInhk5FBMVP4Wh5kZ3lxXZWFNtZUWzb5wLtn0Q7TQZlexnRxcuR3TwMzfWiLg7SGgUmEZE98NbUYN/19L/pJencYwKByZkTT9JZQ0k6fRiONHWVbE+1Llhbamf1Dpv/q8TOD9vtVDXuXzjNS/QxNNfLsDwPw/K89Mnw6Wo2OWAKTCIizUyfj7rZc6h4/XXq582j11dfYo+zQdMqaJxPdF4tKRcPIXZEX51NagcNbthYbmNtqY0fS+ys2WFj9Q4726r2P90kRJkMyPRyWLZ/am1orpfMeO3TFu6MlOsDt9uz4fa+KDCJSKfnraqi8t33qHjzDdybtwTGq978Kynnpfvv2NMhIpXMG7pZVGXH4PbCtiobG8ttbCi3sbHMf3tjuY2imgM77ZMYZTIgy8uALC+HZflDUtckU5f5S7tQYBKRTqvxxx+peO01qqZ9iNnYuNtx14YN4BisK90OgGlCRYPBtiqDrZU2tlXZ2FZpY1uVweYKG1sqbXh8B5ZoHDaTHik+8tN99Mnwkp/uo2+Gl7xEhSMJHgUmEelUTLebmi++oPy112hYsHtLAFt8BEmnHUbSuUcS2S3VggpDW6MHSmoMimtsFDf/WVBlY2uV0RyMbNS7Dy7F2A2Trsk+eqb6ODTdx6HpXg5N93FIqo+IfbdKkg7OLH8qWHvJ7ZUCk4h0KjVffEHBTTfvNh7ZO5Xk848gcezATtmF2+WBsnqDsjqDklp/GNpeY6O41v/n9hqD4lqDyv24Cq01WfE+Dknxf/VI2Xm7S5IPp4KRhCgFJhHpVOLHjMSeloi3tArsBgnH9yL5/KOJHtSlQ+3p5vZCZYNBeb1BWb1Bad1Pt22U1vnHfgpIZfU2alxt99ljI0y6JPrIS/KRl+gjL8kkL9EfiLon+4jtfHlUOgAFJhHpcEyPh5oZX1L+ysukXX01caNGgacEGpdguJaS9qu+eGtsJJ1zREg3mDRN/5VjlY0GlQ0GVY0GVQ1G4H5l8/2qn92vbDSoa2qf8OewmWTEmWTE+ciKN8mK95GbuDMQ5SX6SIxCa4ukw1FgEpEOw1tdTeXb71Dx6qu4CwsBKI94hrhBW8GzFYwIcGSTMjEvKPWYpn/NT3WjQY3LH2yqXQY1jVDtMqgO3DcC92tc/sdXNX81eYOTPBw2k5QY/1dGnD8IZcaZZMbvDEYZcSZpsaa2CZGgq6lpBEcDUEO8RdujKDCJSNhr2rKF8pdfoerdd/HV17c4Vjd/CZ4dg3Gkdz3g0x4+0980sca1a6BpDjrNoWfnfWOXxxEYdx/gFWFtxWaYJESZpMb4v9Ji/X+mxJikxfr847E/HfOREIWCkISshG63BG6rD5OIyAEwTZOGhQspe/FFamd86T+dswt7YiRJZw0m+fyRmKkJlNY3T1vtYUqromHnlFdl8/2fzgSZWJsiIuwmydEmSdEmiVEmidEmSVH++0lR/lCUFL3z/k+PiY9UABJpSwpMIhJ2GhpcbL3kErwrlu92rCItje8GH8s33YdR6o6g8mWD2nZaz7M/Iuz+UJMQaRIfBQmRO+/v+md8pElC8/H4yJ3BSHuciUBcXCRgYGVsUWASkZBgmibVjR62VzdSXNVIcXUjJdX+P7dXuyirdVFW10RZbRO1Lg+3V9gZvcvzv884lP/1GsWi9Hz/1Ftp29QV49w18PwUcPjZ/V2P0+J+lH7KivxiNVseVh8mEekcal0eCioa2FZRT0FlAwUVDRQ3h6PtzaGowe3d7XlpDZV0ry5iUWbfFuPv9RrFUUUrmNFlGP/reSxbErL2+t42wz9V9dO01q5TXEm7TnFF7zrVBfGRpvoCiQigwCQibcTl8bKlrJ7NZfVsq6hnW0UD2yoaKKj0h6SKevcBvV73qiLOXTeT0dsW0+CI5Ncn/4kGZxTgv6Krqksu91/yJ2JSoxke42NsrCuwkDktxiQlxkdytNbziEjbUGASkf3m8fooqGxgQ2kdm0rr2LjLV0Flw8/XXR+waIeNUfVbOG3lF/TetCIwHu9u4PW0j0k4byBp8SkkRNt3ueCtfo+vJSLSlhSYRGQ3bq+PzWV1rC6uZfX2GtYU17C2pIYt5fW4vQeXiiLsNnKTo8lLjiY3yf+VlRhFVmIUmbFOEhbMpuHlKTSuWLHbc6MHZdH18O7EZqZTWFRBXZV/PCc7+Zd8TBEJE4VFleCIhppCcnJyLKlBgUmkEzNNk6KqRlYWVvuD0fYaVhfXsGFHHU1e3wG9lmFAXnI03VNjyUuOIa85HPm/YkiPi8T2s3kxn8tF1f/ep2zKC1Rs3vKzF4T40T1J/dVxRB+2s9Fkbp/rd9Zf9fqBf2gRCTu5/f8UuK0+TCLSrkzTZGt5A8sLqlhRWMWKgip+KKymvK7pgF4nIz6S7mmx9EiL5ZBdvrqkxBB1gCukq95/n+K7724xZkTYSTytH6m/Oo6ILikH9HoiIu1FgUmkg9pe3ciizRUs3lrJ8m3+kFTT6Nnv5+ckRtE7M55Ds+LJz4wnPzOOHulxxEW23Y+NxNNPZMejk/GWV2OLjyD53KGkXHQ0jpTYvT4nOyupzd5fRMJDdlYiYAMjyrIajPY8tTV8+HBzwYIF7fb6IuLn9vpYWVjNoi0VLNpSyaLNFRRUNuzXc+MjHfTLSaBvdgL5mfEcmhVH78x4EtqwY6K7oICyKVNJOP00YoYMAW81NC6Gxu+peH8VvsZIks4egT02ss3eU0Q6EG9FsPow7fV6Wp1hEglDDU1eFm2pYO6GMuZtKGfptkpcntbXHCXFODksN5H+OYkMyE3gsNxEuiTH7La2qK24Nmyk7LnnqJo2DTwe3Ns2ETP5fHAtBWzgyCT5vNx2eW8RkbakwCQSBhrdXhZt9gek7zaUsWRrZatXq0U5bQzMS2Jo12QGd0lkQG4iuUnRGAe4Ae1B1btqFaXPPEvNp5+22OOtdtZsXGtyiOx5KBi2dq9DRKStKDCJhCCfz2RFYRWzVu/gm7WlLNla2epVa11SohnaNTnw1Sc7Hqc9uKGkYelSSv/1b2pnztztWMyQbFIvG01Ez14QhNAmItKWFJhEQsSOGhffrN3BrDX+kNTa1Wu9M+IY2TOVI3ukMrx7Mhnx1i2GrP/+e0r/9S/q5ny327HYkV1Ju+J4YgZ1bZP3WrOuKHA7v1d2m7ymiIS2Neu2gx2IW0N+fr4lNSgwiVjE5zNZVlDFFyu3M3NNCSsKqvf5+F4ZcYzs4Q9IIw5JIT0+dBZIlz3/Qsuw1NxDKe2K44k6tG1DzaHDbgncVh8mkc7h0BH3BW6rD5NIJ+DyePlufRmfr9zOF6u2s73atdfHpsVFMKp3OqPy0zm6V1pIBaQWTB9pvzmD2lmzwGaQcHI+aZcfT+Qh6VZXJiLSZhSYRNpZdaObr34s4bOV25m1ege1rj33QnLYDIZ2S+a4/HSOy0+nX3ZCu129djBM06R21iwq3/oPuY88jC0yAprWQ8PXRB9SQsakY4kfPajdm0327pnVrq8vIqGnd88MwAG2vfdoa2/qwyTSDuqbPHyxqoQPlxYyc/WOvS7YTo5xckLfTE7sm8nRvVKJb8PeR23lp6BU+uRTgX3eMv94NSlnxYGnFOwpYE+wuEoR6dDUh0mk42h0e5m5egfTlhXy5aoSGtzePT6ua0oMJ/fL5KR+mQzrlowjyFey7a89BaWflL/yBslnXIkR0d2a4kREgkyBSeQX8PlM5m4s452FBXz6Q/Fep9v6ZScwbkAWJ/fPIj8zLii9kA6WaZrUffMNO554ksbly1scMyJsJJ09iNRLR2M44i2qUEQk+BSYRA7C5rI63lm4jXcWFex1C5LeGXGMH5TD6QOz6ZEeF+QKD5xpmtTNnsOOJx6ncemyFseMCDtJZw8k9dLRONMVlESk81FgEtlPNY1uPlpexNsLt/H9poo9PqZ7akxzSMrh0KzwCha+ujoKbroJX01NYMyIsJF01iBSLxuNMy00Ps/CxRsCt4cN6WFhJSISLAuXbAF7A8QuZNiwYZbUoMAk0orl26p4bd5m3l9SuMd1SUkxTs4YlMO5Q/MYmJcY0tNt+2KPjSHlV+Mp/dfrGE4bSWcO9AeljNBa0D189J8Dt9WHSaRzGH78g4Hb6sMkEkLqmzx8uLSI1+ZtZum2qt2O220GYw5N59yheRzfN4NIh92CKg9ew/IV1C9cQOpll/n3emvaAA2zSDnLh698CCm/Og5nZmgFJRERKykwiexi7fYaXpu3hXcWbaOmcfcF3IdmxnP+8DzOHJwbuo0k96Fx9Rp2PP44tTNmgM1G3MieRGZuAE8h2FOwJ+eTeYs12w7sr6GDultdgogE2dBBXcBwgi3JshrUh0k6PZ/PZNbaHUz5diPfrC3d7XiEw8bph2Vz8ZFdGdo1OSyn3Jo2bWLHE09S/dFH/jNKzeKP70be384Ee5J1xYmItEZ9mESs09Dk5d3F25jy7UbW76jb7fghabFcfERXzh2aR3JshAUV/nLuoiJKn/4Xle++C96W668STuxN2tUnKSyJiOwHBSbpdEqqG3n5u828Nm8zFfXuFsdsBpzUL5NLR3ZnZI/UkNqa5EB4ysspe+ZZKt54A7OpqcWxuGO6k/7bk9p8U1wRkY5MgUk6jU2ldTzz9XreXrgNt7flVHRcpIMLhnfh8qO70yUlxqIK20bT5s1sPPscfPX1LcZjhueScc3JRA/sYlFlIiLhS4FJOrwfi6t5+qv1fLisEN/PluzlJUdz2VHdufDwLiG5j9vBcHbtSmR+LxqW+JtPRvXPIOPak4gd0dPiytrGzG9WBm6PPrafhZWISLDM/HYN2MshJpHRo0dbUoMCk3RYi7ZU8PRX6/hiVclux4Z2TeKqY3twUr/MkN3LbX+YXi+e4mKcubn+AV89RsNCMq7Ko+j/tpBx3YnEHdc3LBeq782Y0/8auK0+TCKdw5gzHgvcVh8mkTaycHMFj3y+hm/X7X7F27G907h+TC+OOCQlrEOEaZrUfjWTHY88jOnx0uODtzE8K6D+W8BLzPDB9HhzGEaYrsESEQk1CkzSYSzfVsXkz1czc/WO3Y6d0j+L68b0ZGBeUvALa2P1ixZTMnkyDQsXBsYqX7uF5PGHgCMTDP8VfWGcB/fpuGP6Wl2CiATZcUf39v9ss6dZVoMCk4S9VUXVPPL5Gj5bub3FuN1mcOagHK4d3ZPemaGxD9ov4dqwgZKHH6b2ixktxm3RDky3HZydYzH3zOl/sboEEQmymdNuDFYfpr1SYJKwtbG0jn9+tprpy4pajBsGnDU4l9+f0JtD0mItqq7tuEtKKH3yKSrfeadlLyWHjeSzB5J25Qk4UsL/c4qIhDIFJgk7ZbUuHp+xltfmbcHzs8veTjssmxtP7N0hzih5a+sonzKFsqlTMRsaWhxLOCmf9GtPJiIvxaLqREQ6FwUmCRsNTV6mzN7Iv2aup9bVcp+3E/tmctNJvemfk2hRdW3PV1tD2QsvYLpcgbGY4blkTBpHdN8cCysTEel8FJgk5Hl9Ju8u2sbkz9ZQXN3Y4tiIQ1K4Y1wfhnRNtqi69uPMSCJl4gmUTf2IyF4pZEwaS+yRvcL66r62MO3jnYvdx48bZmElIhIs0z5ZDvYCiLYxfvx4S2rQ5rsS0uZtKOOeaStZVVTdYrxneix3jOvLCX0zOkSAaFi+gsZVK0m+4AIwPeD6Aeq/wltbR+2cahLGDsQI435RbclInBi4rT5MIp1Di+/79u3DpM13JbwUVTXw949+ZNrSwhbjaXGR3HRSby4c3iWsG07+xF1YSMkjj1I9bRqG00nssBwiUn4AbyU4MrAnZZJ4qtVVioiIApOEFJfHy/PfbOTJL9fR4N55RVi0087Vo3pw9agexEaG//+23tpayp59jvIXXwxsjmu63ex45G/k/vVsiOhqcYWh6/RThlhdgogE2eljB4ARBY4sy2rQlJyEjBmrtnPfhyvZXNZy09jTB2Zz56l9yUmKtqiytmN6PFS+8y47Hn8cb1lZi2Pxx/Ug/XfjiOyWalF1IiIhylsRrD5MmpKT0FVQ2cDd76/Ybc+3Plnx3HNGf47s0TECRO23syl58EFca9e2GI/qk0bmjeOIGXqIRZWJiEhrFJjEMh6vjxfnbOLhz9dQ37Rz+i0x2sktJ+czcUTXDrFOyVtZScHtt1M36+sW446MGDKuP5GEsYO055uISIhTYBJLLN9WxR3vLWNFQcur3yaM6MIfxvYhJTbCosrani0+Hk/xzm1bjGgHaZceScrFx2KLclpYmYiI7C8FJgmqOpeHyZ+t4cU5G9m1SXd+Zhz/OOcwhnXreJ2rDarIvOFotly/msTT+pF+3VicaeHfidwqr/93duD2xPOPtrASEQmW19/+HmzrILqOiRMntv6EdqBF3xI0X6/ZwR3vLqegcuc2H5EOG78/oTdXHduDCEf4T7/VfvMt1R9+SPY//o6BCxrmQ+NcMCJpKnIQ0aVjrMeykvowiXQ+6sMknUJNo5u/f7SKN+ZvbTF+TK80/nrWALp3gA1yXRs3UvLAg9TOmgVA7IguJI5xg9kEjhwwHER0sbhIERE5aApM0q6+XVvK7e8sa3FWKSU2gr+c3pezBueGfZdub20tpU//i/JXXgG3OzBe+twrJBx/NYYj/FshhJoJ5x1ldQkiEmQTzh0ORjQ48yyrQVNy0i5qXR7+/tEqXp+3pcX4uAFZ3H/WANLiIi2qrG2YPh9V771HycOPtOynZEDi6f3JuHYsjrQ46woUEelI1IdJOqI560v5w39bnlVKjnFy35kDOH1gdtifVWpYsoTiv/6NxhUrWoxHD8wk8+bxRPfLsagyERFpLwpM0maaPD4mf7aaZ7/ZwK4nLsf2z+SvZx1GenyYn1UyTYr+/Geq3nm3xbgjI4aM353k3yA3zMOgiIjsmQKTtIl1JbXc8OZifijc2VcpMdrJfWf254xBOR0iSBiGgS0yauf9CBspF48g7bLR2KI7Tt8oERHZnQKT/CKmafL6/C3c/+FKGt2+wPixvdOYfP4gMhKi9vHsMOOrI/03A6ieHknM4FwybjyNiNxkq6vqdJ6dOiNw++rLT7CwEhEJlmdf/BbsSRC1nauvvtqSGrToWw5aeV0Tt7+zjM9X7uxiHWG38cdxfbjsqO7Ywni7D3dBASWPPUbmbbfhSE0G1wqomwH48FTF40hLsLrETkt9mEQ6H/VhkrA1Z10pN7y1hB01rsBYfmYcj100hL7Z4RsmfC4X5VOmUPrMs5iNjRiGi5w7BoKnBBxZYIvCkWZ1lSIiEmwKTHJAfD6TJ79ax6NfrGmxtcllR3Xnj+P6EOW0W1fcL1Q7axbFf/s77i07WyFUffAZab/KIqJbd+sKkxau+vUYq0sQkSC76tKjwRYDzu6W1aApOdlvZbUubnxrCd+sLQ2MpcZG8M/zBzGmT4aFlf0yTdsK2P6Pf1A7Y0aL8cjeqWTddjoxg7pZVJmIiADqwyThY/7Gcia9sYjt1Tun4I44JIUnJgwJ24XdvqYm//Tbv5/BbGwMjNviIki/djTJ54zAsIf//nYiIvLLKTDJPvl8Js9+s4H/+3Q13l3m4K4f05ObTszHEaaBom7efIrvuoumzZtbjCee3o+MSeNwJIf//nYiItJ2FJhkr6oa3NzynyV8saokMJYU4+SRCwcz5tDwnYID8FaUtwhLkfmpZN02npiBXS2sSkREQpUCk+zRupIarnp5IRtL6wJjQ7sm8eTEoeQkhf+GsvHHDyD2iO40/FBA+jWjST73CE2/hYnJT0wP3L5l0mkWViIiwTL5yS/AngiR67jlllssqUGLvmU3n/1QzM3/WUqtyxMY+80xh3D7uD44wzBU1C9aDEDM0CHgq4P6b6FxEe4ddoyoZByp2iQ3nKgPk0jnoz5MElJ8PpPHZqzlsRlrA2PRTjsPnTeQ8YPCb0NZT0UFOx5+mMr/vk1E9+4c8p+/YfN8DaYHnF1x5oZf+BMREWsoMAkANY1ubnprKV+s2tm1Oy85mmcvGU6/nPBqRGmaJlXv/Y+S//s/vBUVADRt2kT5c/9H2pUngy08r+oTv5t/d6rVJYhIkN183fFgi4OIXpbVoCk5Yf2OWq5+eQHrd+xcr3RMrzSemDCE5Njw2lTWtX49xXffQ/3P/r+LG3UIWbeMx5mdZE1hIiJy8NSHSaw2Z10p17y6kOrGneuVrh7Vg9vGHhpWLQN8jY2UPvMMZc+/AG53YNyRGUvWreOIP66fhdWJiEi4U2DqxN76fgt/em8Fnub+SlFOGw+eO5AzB+daXNmBqZszh6J77m2xpQl2g5SLhpF+9YnYosPrLJmIiIQeBaZOyOczefCTH3nm6w2BsYz4SF749eEclpdoYWUHzlNeztbrrm/RqTt6QCZZfzyTqPwsCysTEZGORIGpk6lv8nDTW0v49Iedi7v7ZSfwwmXDyU4Mv/5KjpQU0q69lB2PPIstLoKM68eQdPYIDNtep6ElzN3zj7d33r7jPAsrEZFgueeB6WCLh8jF3HPPPZbUoEXfncj26kZ+89IClhdUBcZO7JvBYxcNITYyPLKzt7YWe1xz3yRfIzTMwaz5jh3PryRl4mgcaeqp1NGpD5NI56M+TBI0PxZXc/nU7ymq2jl1deUxh3DnqX2xh8HZGLOpibIXXqBsylS6v/UWkbk+qP8YfA0Y0d3I+H0Pq0sUEZEOTIGpE5i7oYyrXl5ATfOVcHabwb1n9OdXR3azuLL9U794McV33YVr7ToAiv98PV0fOxrDmQHOVIurk2C7+4/nWF2CiATZ3bed2jwl18eyGjQl18F9tLyIG99cQpPXB0BcpIOnLx7KqPx0iytrnbe2lh0PP0LFG2/ALv+fRvVJo8tjv8aRHGthdSIiEjTqwyTt6aU5m7hn2g+BrJEeH8mLlx9O/5zQvxKu5suvKL73Xjzbdy5ON6IdZFxzHMkXjNRGuSIiElQKTB2QaZr836ereXrm+sBYj7RYXrpiBF1SYiysrHWe0lKK//Y3aj7+pMV47MiuZN9xNs6s0A97IiLS8SgwdTBur48/vrOcdxZtC4wN7pLElMsOJyXEtzmpmTGDwjv/hK9q51V89uQoMm8eS8LJAzGM0F+cLiIiHZMCUwfS6Pbyu9cX8cWqksDY8X0yeHLiEGIiQv+v2p6U1CIsJZ7Wl8wbT8cehv2hpP3c8qdXA7cn/+1XFlYiIsFyy5/fad5892smT55sSQ1a9N1B1Lk8XPXyAuasLwuMXTA8j7+ffVj47AnXtJHie26n9ruNZN1xBnFHWrcrtYQu9WES6XzUh0naRFW9m8tenM/iLZWBsd8e14M/ntInZKexXOvX4y4qJu6Yo8FXD3VfgWspGb87jowbTtP+byIiElIUmMLcjhoXl7wwjx+LawJjfxh7KNePCc2zM6bbTdkLUyh96ilscXH0ePcxHJFzwHSDsxu2iDA5GyaW+edfL7a6BBEJsn/edzbYEyFygGU1aEoujBVUNnDJ8/PYUFoXGLvvzP5cOrK7dUXtQ+OqVRTe+Sdcq1YFxhLGHkLuveeCLbSv3hMREQupD5McrE2ldVz8/DwKKhsAsBnw0HmDOG9YnsWV7c7X1ETZv/9N6bPPgccTGI/qk0bqpScpLImISMhTYApDG3bUMuG5uWyvdgHgtBs8MWEIpwzItriy3TUsX07RnXcGtjUBMCLspF99DCkTj8VwaApORERCnwJTmFm/o5YJz86lpMYflqKcNp65ZDjHhdhWJz6Xi9Inn6TshSng8wXGowdlkf3nc4nspj3gREQkfCgwhZF1JTVMeG4eO5rDUrTTzpTLDmdkz9AKH6ZpsuWKK2lYuDAwZkQ5yLhutH9bE1toXrkn4eHq3z8XuP3s41dZWImIBMvVN77uX77hnM6zzz5rSQ1a9B0m1m73h6XSWn9Yionwh6Uje4RWWPpJ1YfTKLz1NgBihuaQ/ZdzichNtrgq6QjUh0mk81EfJtkvq4truPj5uZTWNgH+sPTi5SMYcUiKxZXthbeChGNqqBvbg+jBvUk6e4TOKomISFhTYApxq4trmPjcXMrq/GEpNsLOS1eMYHj30AhLP61Vihs9mpihQ8C1FOq+wDAiyLlf21ZI23vm0SutLkFEguyZhyeAPQmiBltWg6bkQtj6HbVc+Mx3gTNLcZEOXrricIZ1C42w1LB8BYV3/JGmdeuJ6NaFQ17+FTZ7AThzwFCnbhERaSMh0IdJ13SHqC1l9Vz83LxAWIqPdPDylSNCIiyZTU2UPPYYmy66iKZ16wFo2ryVyg++gYjuCksiItLhaEouBBVWNjDhubkUVzcCzWuWrjicoV2tXzTd+OOPFN7+R1yrVwfGjGgHmZOOJ+mcIyysTEREpP0oMIWYkupGJj43N9DBO9Jh4/lLh1t+Zsn0eCh77jl2PP0vcLsD4zFDssm+6zxdASciIh2aAlMIKat1cfHz89hUVg/4O3g/c8kwjuqVZmldrvXrKfzjHTQuXx4YMyLtZFx3HMkXHq0r4CSoJl75ZOD26y/8zsJKRCRYJl41FYxocL7F669b005Ei75DRFW9mwnPzWVlUTUAdpvB0xcPZWz/LEvr8tbUsO74E/DV1ATGovtnkH3PeUR2szbISeekPkwinU8o9GHSou8QUN/k4bIX5wfCkmHAIxcOtjwsAdjj40m7+jIADKeN9OtG0e35qxWWRESkU9GUnMWaPD6ufXURi7dUBsYeOncgZwzKsa6oXbnWkXKWi6Z1fUi+YBRRva0PcdK5vfb89VaXICJB9tqzl4EtGaKHW1aDpuQs5POZ3PjWEj5YWhgYu2d8Py47+hBL6vGUlrL9738n/YYbiOiSCXVfgWsxODL9e/iIiIhYIQT6MOkMk0VM0+S+D1e2CEu/P76XZWGp+vPPKb7rbrwVFbgLNtPtqTEYRgM4u4GhmVsREencFJgs8sSX63hxzqbA/YuP6MpNJ+UHvQ5vTQ3b//Z3qv73v8BYw9KV1C04lLijDgt6PSIiIqFIgckCr8zdzMOfrwncP21gNvedOQDDCO7l+fXff0/h7X/EXbjzLJcjPYbsv5xJ3JG9g1qLiIhIKFNgCrLpy4q46/0VgfvH9Erj4QsGYQ9iLyNfUxM7HnuM8ilTYZc1bAkn55N125nYE6KDVovIgRp/4f8Fbk976w8WViIiwTJ+wr/AiALH80ybNs2SGhSYgmj+xnJuemtJIKMMykvkmUuGEemwB62GxtVrKLztthZbm9jiI8j+46kknDQwaHWIHKwPP1lsdQkiEmQffrqi9Qe1MwWmIFlXUsNVLy+gyesDoEd6LFMvH0FsZPD+Ctzbt7PpggswXa7AWOyILmTfdS7OjISg1SEiIhJuFJiCoKSmkcumfk9Vg38PtrS4SF66fAQpsRFBrcOZmUnS+WdT8eqbGBF2MiaNIfmCkUFfOyXyS3zw5i1WlyAiQfbB69eAPQWij7SsBgWmdlbn8nDliwvYVuHfTDfaaWfqZYfTJcWCvkauDWRcGY93e0/SrjyJyB4Zwa9B5BcaP26Y1SWISJCNP+Ww5j5M4y2rQQ122pHH62PSG4tZXlAFgM2Apy4ewmF5ie3+3t7aOrb/4x94KirAbIK6GVDzJrboeHL/drHCkoiIyAHQGaZ2Ypomd33wA1/+WBIY++tZh3F8n8x2f+/6xYspvO123Fu34t62kdy/DsfwVqgJpYiIyEHSb8928q9Z63l93pbA/etG92TiEV3b9T1Nj4cdTz7F5l9dgnvrVgBqZnxD/YKNENFVYUlEROQg6QxTO/h4eREPfbLzsv0zB+fwh7GHtut7Nm3bRuEfbqNh8c5Lrm1xTrJuG0fsEWoXIB3H6NPuD9yeOf0vFlYiIsEyevyjYESA/RFmzpxpSQ0KTG1sRUEVN/1nSeD+EYek8NB5A9v1SrSqadMovvc+fLW1gbHoQVnk3ncBzuykdntfESvM+naV1SWISJDNmr3W6hIUmNrS9upGrnzpexrd/l5L3VNj2rUxpbe2luL77qP6g126ntoN0q86mtRfj8awawpORESkLSgwtZGGJi9XvbyA7dX+ppDxUQ5euOxwkmLap9eSp7SUTRdNwL1tW2DMmRtP7v3nET2gS7u8p0go+OrDP1tdgogE2Vcf3AD2NIg5xrIaFJjagM9ncut/l7Jsm799gN1m8K+Lh9EzPa7d3tOemkpUnz6BwJR4al8y/3AG9tjIdntPkVAw+th+VpcgIkE2+pj85j5Moy2rQYGpDTw6Yy3TlxcF7t9zRn+O6Z3Wru9p+GrIum0oTesXkHrFcSSOHdSu7yciItKZKTD9Qu8vKeDxGTsXo/16ZDcuObJbm79P7ezZxAwfji0yElzroO5DHHEmh7z+O61VEhERaWcKTL/A8m1V3Pb2ssD9Y3un8ZfT23a6wNfYSMlD/0fF66+TfMnFZN04EhrmgyMDbDFoFzgREZH2p8B0kEprXfz2lQW4PP4r4nqmx/LkxKE42vBsj2vdOgpuvgXXmjUAVLzyGnEDtxM36kg1oZROa9ioOwO3F379dwsrEZFgGTbmATCcYLuPhQsXWlKDAtNBcHt9XP/aIgqrGgH/FXHP//pwEqOdbfL6pmlS+fbbbP/b3zEbGwPj8aN7ED14iMKSdGqLlm6yugQRCbJFS7daXYIC08H42/RVzNtYDoBhwOMXDeGQtNg2eW1vTQ1Fd91FzcefBMaMCDuZN55A0rlHtGsDTBEREdkzBaYD9M7Cbbw4Z1Pg/i0n5TOmT0abvHbD0qUU3HwL7oKCwFhE9yRy/34hUb3af9NekXCwYOZfrS5BRIJswZe3gz0dYkdbVoMC0wFYvq2KO95bHrh/Sv8srh/T6xe/runzUT51KiWPPAoeT2A86cwBZN4yHltU20z1iXQEw4b0sLoEEQmyYYO7NvdhGmZZDQpM++mnRd5NzYu8e2fE8c8LBrXNFJnXS/WnnwXCki3WSfafTiPhRG2aKyIiEgq0eng/7GmR97OXDicusm3ypuF0kvvAjdhiI4jql84hr16jsCQiIhJCdIZpPzzw8Y8tF3lP+GWLvE2vF2w2/9kp0wv1c4hI+JZu/7qAyF7dMNpps14RERE5OApMrfh4eREvfLsxcP/Wkw9lzKEHv8jbXVJC4R9uI27MaFIvORtqp4N7CzjziOqjvw6R1uQPvTlwe82ihy2sRESCJf/wewEH2P7AmubehMGm39D7sLG0jj/s0sn7xL6ZXDe650G/Xu23sym87Ta85eXUL1xITK81RPfLhIi230pFpKNau77Y6hJEJMjWri+xugStYdqbRreXa19dSK3LvxC7S0o0kw9ykbfp8VDy6KNsveoqvOX+qT28HhpWVfm3OBEREZGQpjNMe3HX+yv4sbgGgAiHjX9dPOygOnm7t5dQeMst1C9YEBizp0aTe985xB5+8GerRDqr1QsnW12CiATZ6vl3gT0T4k60rAYFpj34z/db+c+CbYH794zvz4DcxAN+ndrZsyn8w207zyoBsYfnknPfhThS49qkVpHOJr9XttUliEiQ5ffKbO7DlG9ZDQpMP7OysJq/vL8icP/sIblMGNHlgF7D9HopfeopSv/1bzBN/6DNIO03R5F2+RiMNtygV0RERNqfAtMuqhvdXPfaQlzNzSnzM+P429kDDnjdUtGf/kzV//4XuO+fgjuX2MPVoVhERCQc6VRHM9M0uf3tZWwqqwcgJsLO0xcPJSbiwDNl8kUXQnMvpZjhufR49VqFJRERkTCmM0zNXpm7mY9X7Lxc+YFzB9IrI/7AX8j0EN27iszrhuCtjyDtyuM1BSfShnIOvS5wu3D10xZWIiLBktPvTsAGRhSFhYWW1KDAhH/d0l+nrwrcv+TIbpwxKGe/nuupqKBp40Zihg4FbzXUfgjuLaRcPBYMdewWaWtFxZVWlyAiQVZUXGV1CQpM9U0eJr2xKLCpbt/sBP50Wt/9em7DkiVsu+lmfHV1HPLmY0QkzQUMNaIUERHpYDp9YLr3g5Ws31EHQLTTzhMThhDl3PeZIdM0qXj1NbY/9BC43QAU3HIr3V+4FMNxENN4IrLfCn58yuoSRCTICn74GziyIW6sZTV06sA0bWkhby3YGrh/7xn96ZWx7/5I3tpaiv78F2o++SQwZouPIO03xyssiQRBTnay1SWISJDlZCeBIwXi92+5THvotIFpa3k9d767PHB//KAczh+et8/nNK5ZQ8Hvb6Bp06bAWFSfdHIfmEBETlI7VSoiIiJW65SBye31MemNxdTssk9ca/2WqqZNo+iuuzEbGgJjyecMJOPm07EdROsBERERCR+d8jf9w5+vYcnWSgAcNoMnJgwlIWrP+8T5mpooeeABKl5/IzBmRNnJvvNUEk8ZEoxyRURExGKdLjB9u7aUf89aH7h/69hDGdwlaa+Pr587t0VYiuiaSN6DFxHZM7M9yxSRvYjPvSJwu6ZgioWViEiwxHe9GTAABzU1NZbU0Kk6KlbUNXHzf5YEtnc7tncaVx+77w7ccaNGkXzxaQDEH9+L7i9do7AkYqHa2sbAl4h0DrW1rubv+1rLaug0Z5hM0+TO95ZTUuMCIDU2gskXDMJm28c+caYb6r8m8zcJRPc+jYRxQw94XzkREREJf50mML27qKDF1icPnTeQjPioFo/xVlVR8uijZNx0E/ZYoPYD8BRgxPQk8dROdTJOJGRVb3vB6hJEJMiqN08GRw7En2ZZDZ0iMG0tr+fuD34I3J8woisn9G05rdb4449sm/R73Fu34ineTN79h2HYbODsGuxyRWQf4uOjrS5BRIIsPj4KHNEQb12/ww5/2sTrM7nlP0upbW4h0D01hj//bOuTqg8+YNNFE3Bv9TexrP3qO+qXloMjI+j1ioiISOjp8GeYnvtmA/M3lQNgtxk8fOFgYiP9H9tsamL7Aw9S8frrgcfboh1k33UGsYf3s6ReERERCT0dOjD9UFjF5M9WB+5fP6YXQ7v6t1Vwby+h4MYbaVi8OHA8olsieQ9NJPKQ9KDXKiIiIqGrwwamRreXm95agtvr7yEwKC+RScf3AqB+4UK23Xgj3h2lgcfHj+lJ9l3nYY+NtKReEdk/RuLEwG2z6vV9PFJEOgoj5frAbfOn3kBB1mED0/99upo12/39GqKcNh6+cDAOm0H5K6+y/cEHweNf04TNIOO6UaRcMkotA0RERGSPOmRgmrOulBe+3Ri4/6fT+tEzPQ7T56P2228CYcmeFEnu384j9vCeVpUqIiIiYaDDBaZal4c/vL0scH/0oen86gh/awDDZiP377ey8YKl2OMjyHtoIs6sRKtKFZGDoGk4kc7HLH8KHLkQf6ZlNXS4wPSPj1ZRUNkAQGK0k4fOHbhzqq1xBXam0/Xxs3Fk5GCL7HAfX0RERNpBh+rDNHtdKa/N2+K/Y5o8bvsBnnsaTA/UzYDa98GeSUSXrgpLIiIist86TGqodXm4rXkqLtLj4oEN08hYOZcyIKp7GQmj48HZHYwOlRFFREQkCDpMevh781RcZl0Zj377NH1Wzg0cq3x/Pqajq8KSSAdQU9MQ+BKRzqGmprH5+77Gsho6xBmmb9eW8vq8LQwuWcMd379Kgrs+cCzp7MPIuvUMtQwQ6SAS8q4M3NYCcJHOIaHbLYHb6sN0kGoa3dz+9lLOXjeLK1d8iB3/f0jDaSPzD2NJPutwiysUERGRcBf2genB95cxYcYUTti2KDDmSI0m78ELiR7Y1cLKRKQ9xMVFWV2CiARZXFwkYGBlbDHa89TW8OHDzQULFrTb68+es4Kym26kd1VBYCx6QCa5D03EmRbfbu8rIiIiQeStCFYfpr2u3wnbVdA1jW7++cEycurKAmOJ4/vT9d9XKiyJiIhImwrbwPThsiIWk8iDwyfittmJveFksv98DraIsJ9lFBERkRATtuliwoiuJEY7+fN7BtvOu4KBo7KtLklEREQ6qLANTACDU03ePN9HrLcSUGAS6QwKiyoCt3Oyky2sRESCpbCoEhzRUFNITk6OJTWEdWDKzc0N3FY/FpHOIbfP9YHb+r4X6Rxy+/8pcNuqPkxhu4ZJREREJFjC+gxTdnY2mG4wm6wuRUSCJDsryeoSRCTIsrMSARsY1vVhC+s+TAA0zIOGb8FhzZymiIiItDP1YRIREREJfQpMIiIiIq1QYBIRERFpRVgv+l6zZg00boHGHeT30Romkc5gzbqiwO38Xuq/JtIZrFm3HexA3Bry8/MtqSGsF30bxs61WerHItI5GIkTA7f1fS/SObT4vm/fPkxa9C0iIiJysMJ6Sq53795gNoLZYHUpIhIkvXtmWV2CiARZ754ZgANssZbVENZTcoD6MImIiHR06sMkIiIiEvoUmERERERaocAkIiIi0oqwXvS9cOFCaPwRXNsYNlxrmEQ6g4WLNwRuDxvSw8JKRCRYFi7ZAvYGiF3IsGHDLKkhrBd9qw+TSOejPkwinY/6MImIiIiEgbCekhs6dCj46sCstboUEQmSoYO6W12CiATZ0EFdwHCCLcmyGsJ6Sg5QHyYREZGOTn2YREREREKfApOIiIhIKxSYRERERFoR1ou+Z86cCa6V4FrH6NFawyTSGcz8ZmXg9uhj+1lYiYgEy8xv14C9HGISGT16tCU1hPWib/VhEul81IdJpPNRHyYRERGRMBDWU3LHHXcc+KrBV2V1KSISJMcd09fqEkQkyI47ujcYEWBPs6yGsJ6SA9SHSUREpKNTHyYRERGR0KfAJCIiItIKBSYRERGRVoT1ou9p06aBazU0rWT86VrDJNIZTPt4YeD2+HHDLKxERIJl2ifLwV4A0TbGjx9vSQ1hvehbfZhEOh/1YRLpfNSHSURERCQMhPWU3Omnn+6/1NBXbnUpIhIkp58yxOoSRCTITh87AIwocGRZVkNYT8kB6sMkIiLS0akPk4iIiEjoU2ASERERaYUCk4iIiEgrwnrR9+uvvw5N66BpNRMv0homkc7g9f/ODtyeeP7RFlYiIsHy+tvfg20dRNcxceLE1p/QDsJ60bf6MIl0PurDJNL5qA+TiIiISBgI6ym5CRMmgLcMvDusLkVEgmTCeUdZXYKIBNmEc4eDEQ3OPMtqCOspOUB9mERERDo69WESERERCX0KTCIiIiKtUGASERERaUVYL/p+9tlnoWkjuNdx9ZXnWF2OiATBs1NnBG5fffkJFlYiIsHy7Ivfgj0JorZz9dVXW1JDWC/6Vh8mkc5HfZhEOh/1YRIREREJA2E9JXfVVVeBpwS8xVaXIiJBctWvx1hdgogE2VWXHg22GHB2t6yGsJ6SA9SHSUREpKNTHyYRERGR0KfAJCIiItIKBSYRERGRVoT1ou/JkyeDezO4N3LLDRNbf4KIhL3JT0wP3L5l0mkWViIiwTL5yS/AngiR67jlllssqSGsF32rD5NI56M+TCKdj/owiYiIiISBsJ6Su/nmm8FTBJ4Cq0sRkSC5+XenWl2CiATZzdcdD7Y4iOhlWQ1hPSUHqA+TiIhIR6c+TCIiIiKhT4FJREREpBX7HZgMw7jOMIyNhmE0Goax0DCMY9uzMBEREZFQsV+Lvg3DuBB4DLgO+Lb5z48Nw+hnmuaWdqxvn+655x5wbwPPFu750+VWlSEiQXTPP97eefuO8yysRESC5Z4HpoMtHiIX+3/3W2C/Fn0bhjEPWGaa5lW7jK0F3jZN8469PU99mESkrakPk0jnEwp9mFoNTIZhRAD1wATTNP+7y/hTwADTNI/bx3Pb9VOJiIiItBXTNH/RVXJpgB3Y/rPx7UDWzx9sGMbVhmEsMAyjnfsJiIiIiATHgTSu/PnZImMPY5im+SzwLASpD5OIiIhIO9ufM0ylgJfdzyZlsPtZJxEREZEOp9XAZJpmE7AQOOlnh04C5rRHUSIiIiKhZH+n5B4GXjEMYz4wG7gGyAH+3V6FiYiIiISK/QpMpmm+ZRhGKvBnIBtYAZxqmubm9ixOREREJBTs96Jv0zSfBp5ux1pEREREQpL2khMRERFphQKTiIiISCsUmERERERaocAkIiIi0goFJhEREZFWKDCJiIiItEKBSURERKQVhmnutn9u2724YewA2ru5ZRr+/e5EpPPQ971I5xOM7/tS0zRP2dOBdg1MwWAYxgLTNIdbXYeIBI++70U6H6u/7zUlJyIiItIKBSYRERGRVnSEwPSs1QWISNDp+16k87H0+z7s1zCJiIiItLeOcIZJREREpF0pMImIiIi0QoFJREREpBUKTCIiIiKtsDwwGYZxvmEYLsMwuu0y9phhGOsNw8hs4/c6xTCMbwzDqDAMo9wwjE8Nw+jblu8hIm0nmD8fRKRjMAxjpmEYT7b161oemIC3geXAnwEMw7gVmACcYprm9n090TCMOw3DqG3l69hdnhILPAqMAEYDVcA0wzAi2v5jiUgbOOifDyIibclhdQGmaZqGYdwJTDcMYz3wJ+B40zTXAhiGcSrwCP5w94hpmk/v8vR/A/9p5S0Kdnmvd3Y9YBjG5UA1/gD17S/9LCLStvbj58MHwLHADNM0z7OwVBHp4EKmD5NhGHPwB5fxpml+3DzmAFYBxwNlwALgBNM0iw7yPXoC9wNHAOn4Q1gscLFpmq//4g8hIu1iTz8fmsfHAHHArxWYREKXYRjnA68C+aZpbm4eeww4HTiqLc8YG4YxE/gRcAGXNg8/D9xumqbvYF83FKbkMAzjeGAQYAC7/kcbAaw0TXOraZr1wHv4/+P+9LwDnZKbhj8o/RZ/aBoCeABNyYmEqH38fMA0za+AGivqEpEDEszlNwAX4884I/H/zr8auPGXfADLp+QMwxgEvAtMAk4D/gGMbT6cA2zd5eHbgNxd7u/3lJxhGKlAX+D65h+yGIYxlBD4byAie9bKzwcRCRP7ml43DKML8AqQAbiBe03TfHeXpx/Q8ptmRcDvTf802o+GYeQDNwMPH+xnsDQsNF/58hHwsGmaUwzDmA8sMwxjtGmaM/H/i/LnAnOIpmmWA+X7+XYVQClwlWEYW/EHr//Df4ZJRELMfvx8EJEwYprmZ4ZhfA/8Ff/0+vfNhzzAjaZpLjEMIwNYaBjGJ80zSwf6u/4nc82Wa46+A+43DCPBNM3qg6nfsik5wzBSgE+AD03TvA/ANM0VwH/x/ysS/Imxyy5PywMKD+b9muctLwQGAiuAp4C/4J/jFJEQsp8/H0QkjOxtet00zSLTNJc03y7Bf4IjbZfnHcyUXNvXHyqLvvekedH3j8AY/GeHFgInmqZ5UKFJRDoewzBGA7/Tom+R0NU8vT4L/7TYaUCcaZq7Ta8bhjEc//Rcv5/OEDX/AyqllbcoME2zofnxM4FsoM8ur/En4DrTNHP3/hL7FtLrd0zT9BiGcRMwA//ZsMcUlkTkJ4ZhfIH/X6yxhmFsA843TfM7i8sSkV3s7/R681rjl4Erd51OO8gpuRzgUcMwngYOA/6Afyrw4D9HKJ9hEhERkfDVfHZoNvC1aZq/3WX8LaCraZojm+9HAp8Dz5mm+covfM+Z+GenPMCv8K99ngLcZpqm96BfV4FJRERErGIYhgG8Dqw2TfMei8vZKwUmERERsYxhGMcAXwPLdhm+xDTN5RaVtEcKTCIiIiKtCIlO3yIiIiKhTIFJREREpBUKTCIiIiKtUGASERERaYUCk4iIiEgrFJhEREREWqHAJCIiItIKBSYRERGRVvw/WTDIkosNfeMAAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkwAAAFsCAYAAAA+IOZoAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAABQMUlEQVR4nO3dd3wUdf7H8ddsSy+kkYQqJTSlK4oo2EXErifYzl65s92d5RQs91NPUe/0PLuIiIp6FsRe6NK7lFClJIEkpGez2TK/PxIXImAAk50k+34+HjyczMzuvtfJJJ/M97ufMUzTREREREQOzGZ1ABEREZGmTgWTiIiISD1UMImIiIjUQwWTiIiISD1UMImIiIjUw9GYT37mmWeaX375ZWO+hIiIiEhDMQ60oVGvMBUUFDTm04uIiIiEhIbkREREROqhgklERESkHiqYREREROqhgklERESkHiqYREREROqhgklERESkHiqYREREROqhgklERESkHiqYREREROqhgklERESkHiqYREREpEkzTdPqCCqYREREpOkqq/Jy41uLmbJwm6U5HJa+uoiIiMh+mKbJhtwSbnpnGRvzK5i+Lp+s9Dj6tku0JI+uMImIiEiT4t2xg6VXXMv/br6PjfkVAFT7Azz00nuWZVLBJCIiIk2C6fWS/8qrrB0+gqhFPzIiewadincQ8HoomPoUH//jJsuyaUhORERELFe5eDHbHxyHf+OGYHFiNwMMLVvH7I+ewLtrk6X5VDA1kh07djBmzBhmzZpFYWEht99+O16vly1btjB16tRDeq5nnnmGN954g2XLlmGz6aKgiIi0HL7du9n15FOUfPRRnfWb4zOYcea5/O2W1nSduhts50LUQItSgtGYH9UbOHCguWjRokZ7/qbstNNOIycnhyeffJKkpCT8fj8nnXQSc+fOZeDAQzvgbrebI444gscee4yrr766kRKLiIiEjun3UzxlCrueeZZAaWlwvdvuYlL308m8/BhuP8mHwwb4i8DRBuLObexYxoE26ApTI8jLy+O7775jwoQJnHXWWQCMGTOGPn36HHKxBBAVFcWVV17JU089pYJJRESaPV9hIdtuuJGqn36qs3525lG8M3AkD1wayUldfBal2z+N7zSwCy64gIyMDEzT5KqrrsIwDO69914mTZrE6NGj6+y7YcMGnE4nY8eOrbP+5ptvJi4ujr2vzl166aWsXr2auXPnhuR9iIiINBZ7q1a4/Xu+zolJ5oHjruWz8y5n4hhnkyuWoAleYep4zzSrIwRteXzEIT/mkUceITk5mXfffZdvvvkGAI/Hw+OPP84JJ5xQZ98uXbpw3XXX8cwzzzBmzBhSUlJ4+OGHef3115k2bVqdq1F9+/YlPj6eL7/8ksGDB/++NyYiImKRQMDktZmr+DDjVB5bn837XU/i/a4ncdmgAPedUoHLbnXC/WtyBVNz16tXL4qLi+nduzfHHnssAE888QSGYdC7d+999h87diwTJ07kiSeeoHv37jz00EO88847nHrqqXX2s9ls9O7dm3nz5oXkfYiIiDSEinnzKJ4yhcx//pP88jLumjKPWZsCkNCOK854AGKjeHaEmxE9DnxVaeSo/4IRCY5XD/mDUw1FBVMjWLZsGWeccUbw65ycHOLj43G5XPvsm56ezu2338748ePx+Xz8+9//5pJLLtnv86amppKdnd1ouUVERBpK9fbt7HriCcq++RaArekp3OruxW73ntKjU4cI/nVuBUckBX7zuT77alWjZj0YTa5gOpxhsKakrKyMjRs30q9fv+C6qqoqIiIiDviYrl274vF4GDJkCLfeeusB94uKisLtdjdoXhERkYbkL6+g8KWX2D1hAqbXG1zveWcqxacdCTYwMLnpuGruONHTZIfgfq3JFUzN3bJlyzBNs07BlJycTFFR0X73//7777nxxhs57rjjmDNnDsuXL6dPnz773Xf37t2kpKQ0Sm4REZHfwwwEKPnoY3Y9+wz+/II6275tN4A3ep5FwGYnPS7A0yPdDO7oP8Az7evTyTeBPQmijm3o2AdNBVMDW7p0KU6nk169egXXde/eHa/Xy/bt22nbtm1w/ZIlSzjvvPOCE7+zsrK47777mDZt/xPfN2/ezDHHHNPo70FERORQVMybz85/PoFn9Zo669e1aseLR53H2qQOAJzZzctjw6toFX1oPSBHnnlUbR+mkQ2W+VCpYGpgS5cupWfPnnWG4E488UQAFixYECyYNmzYwPDhwzn99NN57rnnsNlsjB07lmuuuYaZM2cGH/OL4uJisrOzufvuu0P3ZkRERH6DaZrk3P0XSn/1h35JdBwv9Tib6W37YRo2Ih0mY0+r4tK+XowDtoZs2tSHqYEtXbqUvn371lnXsWNHjjnmmODM/ry8PE4//XR69OjB22+/HbzdyZVXXkn37t2555579nneadOm4XK5OP/88xv9PYiIiBwMwzBwdWgf/NrvdPBO99O46uR7+KHdAEzDxsC2Pr68rpxR/ZpvsQS6NUrITJgwgT//+c/k5uYSHR19yI8fPnw4KSkpvPXWW42QTkREpH6m349h32uWtr+QQMHXrDvvKZakZvHMEWdTEJUIgMtu8tdhHq4+uhr777080wRujaKCKUT8fj9HHXUU11xzzSEPqy1btoxjjz2WVatW0aVLl0ZKKCIisn+m30/Jx59Q8N//0v7VV3C1TwH3fDzli3hhfgYTZkVRYt9zMaBPpp/xZ7vpkvLb7QIO1rCzxoLhAnsK06dPb5DnPADdS85qdrud119/nSVLlhzyY/Py8njjjTdULImISEiZpkn5D9PJf+ZpPOs3ALDrqQdo+1Af5m+L4r5verCx0A61F51cdpPbT/Bww7HVNTfNbSAz5qxvuCc7TLrCJCIiIvuoXLKEXU+Nx/2rP/RtSVFMvu4O3sxOqrO+b6aPJ86qoltaw1xV2puRsOderI1Zt6ArTCIiInIwqtatI//pZyifMaPOeluUg4LTB/PXiNPYkR0VXB/rMvnrsCou6+/9/XOVDuCHT/8M9hSIHtI4L3AQVDCJiIgI1Vu2kP/c85R+/jnsfRXHYcN2Zh+ebjOCr3YmQvWeTadleXn49Coy4hv1qg/DhmTVTvoe1qiv81tUMImIiAi5DzxI5cKFe1YYEH1qdz7uN4LnNqTj27lntKp1bICHzqjizG4HvmFuS6OCSUREREi5+TK21hZMsUM6svL0EYzL7sCu7D3jbDbD5PL+Xu4eWkV8pFVJraGCSUREJIx4d+2i+L0ppNx0I4bTCf5CqJxLTNZPJF/el4LeA7hza1cWLqlbIhzd1se4M6ro1brhJ3U3ByqYREREwoAvP5/CV1+j6N13MT0enOkJJA5PgaoVYHORV9Wepzt34/25Tsy9PiyWFhvgvpOrOLeXz7JO3QNOehwMJ9geZvHixZZkUMEkIiLSgnl37mL3669R9O57mB5PcH3BC/8mYeilVNCWl3+M4uX5Lqp8eyoih83k2mOqGXO8h9iI/T1z6CxZvs3aAKhgEhERaZG8ubkUvvoaxe+/j1ldXWdbZPcUWl17CpN/as8zsyMpqKjbD2BYZy9/P8XTYJ26WwIVTI3slwZbRnO+46CIiDQb1Vu3UvjKKxR//Al4vXW2RXZPIeW6U/ixdU/+OT2SDYX2Ott7tvZz/8lVHH+EP5SR67Xo+7+BPRVihlmWQQVTA1uyZAmXXXYZhmEwZswYPvvsM8444wz+9Kc/WR1NRERauIDHw+aLLyFQUlJnfWTPVFKuPZmlmT24fWYUy2fXLZQy4gLcPczD+Ud6sTXBv+8H9G1f24dpgGUZVDA1sEmTJnHHHXcwaNAgRo0aBcDFF19scSoREQkHtogIWl00gsLXJgMQ1SedlGtO4qfMbvxtZiQLZtX9tR/rMrl5sIdrj64m0mlF4uZDBVMDe/rpp4PLq1evtjCJiIi0VKZpUjFzJlVr1pJy0401nbl926FyLknn+vCs6UDylUPJTu/EAzMimfVD3V/3LrvJlQOquem4alJiGrdLd0uhgklERKSZMKurKZn2Obtffx3P+vVgsxF/Wi9cyRvBnwO2OBytu5FzZy/umxPBrC/r/pp32kz+0NfLbcd7SI9ToXQoGuk2ebJjxw4uuOACUlNTsdls3HnnnfU+ZsyYMYwcOfKQX+uZZ56hd+/eBAL6NIOISEvkLy2l8NVX2XDqaeTee29NsQQQCLD79fFgujEdHflhS2sufiuGP0yKYdbmPcWSzTC5uHc1399UzqNnVjW7Yinr6IfI6ncLWVlZlmUwTLPx/qcNHDjQXLRoUaM9f1N22mmnkZOTw5NPPklSUhIdO3YkPT39gPtv3LiRHj16MHfuXAYOHHhIr+V2uzniiCN47LHHuPrqq39vdBERaSKqt29n98SJlHzwIYHKyjrbjCgHrc7tTeLoE/i+OJn/zI1gVV7dydw2w2RkTx9/GuKhc3Lz/aPaSBgdXG7MugU44JR3Dck1gry8PL777jsmTJjAWWeddVCPefbZZ+nTp88hF0sAUVFRXHnllTz11FMqmEREWoCqddkUPP8cZd99D78aPbAnRZH0h6OJPGcQn/wcz2sfu9i0u26h5LSZXHCUl5uP89AxqXldTWqqNCTXwC644AIyMjIwTZOrrroKwzB48MEHf/MxHo+HSZMmMXr06DrrN2zYgNPpZOzYsXXW33zzzcTFxbH31btLL72U1atXM3fu3IZ7MyIiYgl/cTFl33xbp1iKOKIVGX8fQcLkO3mz0xmcMDGV+7+MqlMsRThM/jjQw4xbynliRFWLKZbWLXiQdYv/w7p16yzLoCtMDeyRRx4hOTmZd999l2+++QaATp06/eZj5s2bR3FxMSeccEKd9V26dOG6667jmWeeYcyYMaSkpPDwww/z+uuvM23atDpXo/r27Ut8fDxffvklgwcPbvg3JiIijcK7cxf2+DhsUVE1K0wv0X3iieiSimdDPjHHtCPpsiFs65TFowsj+PQVJ9X+uiNHcREml/Wv5tqjq0mNbRlF0t6yurSu7cNk3RymJlkw5T/3PAX/+c9B7Zt48cVkPPJwnXW5DzxI8fvvH9TjU269ldQxt9VZ5171E1FH9jq4sL/Sq1cviouL6d27N8cee+xBPWbevHkYhkHv3r332TZ27FgmTpzIE088Qffu3XnooYd45513OPXUU+vsZ7PZ6N27N/PmzTus3CIiEjqmaVK5cCFFk9+h7NtvSX/wAVpdOByqV4N7PkbATfrdwwjEJTPDl8mkJS5+/GHfX9ltEwJcc3Q1l/Sptvx+by1dkyyYmrtly5ZxxhlnBL/u2LEjERERRNX+9XDbbbdx3XXXBbfn5OQQHx+Py+Xa57nS09O5/fbbGT9+PD6fj3//+99ccskl+33d1NRUsrOzG/jdiIhIQ/GXl1Py6acUv/MOnvUbguuL3nqRxJM319xGy55GTmUa75S5eHeWk/yKfWfPDGjr47pjqjkty4dDk2tCQgVTAysrK2Pjxo3069evzvr33nuPvn377vcxVVVVREQc+E+Drl274vF4GDJkCLfeeusB94uKisLtdh9WbhERaTxVa9ZQ9O57lE6dus+n3QDsseCrTGZOYTyTlrj4foODgFl32M1mmAzv7uPaY6rp36Zp3estHDTJgil1zG37DJMdioxHHt5nmO5QHO5wHNRcXTJNc5+C6bckJydTVFS0323ff/89N954I8cddxxz5sxh+fLl9OnTZ7/77t69m5SUlMPKLSIiDStQXU3pp59S9N4Uqlau3Ge7Eekg4cweeIYfz//K2vHh2062l+x7uSgtNsClfb2M6ltNRnzLm590MDJ73gfYwIgkJyfHkgxNsmBqzpYuXYrT6aRXr7pF15VXXhkspB577DHatGkT3Na9e3e8Xi/bt2+nbdu2wfVLlizhvPPOC078zsrK4r777mPatGn7fe3NmzdzzDHHNM4bExGRQ7brqfH4i4vrrHN1TCTmvKOZ2+kYpmyIY94X+/9VPKSjj8v7V3NKVx9O+353CRu5eSX179TINPLZwJYuXUrPnj3rDLHNmDGDFStWsHTpUrp06cJFF11U5zEnnngiAAsWLAiu27BhA8OHD+f000/nueeew+VyMXbsWD7//HNmzpy5z+sWFxeTnZ0dfC4REQkdX1ER1Vu31llns5WSMKLm08yG00bcaVmUPXQ1L17xF07ecTp3ft+KeVvrFkuJUQGuO8bD9zeWM2l0JWd2V7HUVKjTdwPr27cvffv2ZcKECfvdXlZWRkJCAh6PB6dzz62hBw0aRM+ePXnjjTfIy8tj8ODBtG/fnq+++ipYfPn9fo488khatWq1T7+lt99+m2uvvZYdO3aQnJzcaO9PRERqmD4f5bNnU/K/jyj74QdiTziBds8/Dd7N4F4I/hw8P5ez7utiPs88ho+2JrKzfN/rFDbDZFhnHxcd5eWUrj4iNPazj5ztm8GRAbFnkJmZ2ZgvdcBO3yqYGllFRQVer5fExEQAXnzxRV544QVWrFhRZ78JEybw5z//mdzcXKKjow/5dYYPH05KSgpvvfVWQ8QWEZEDqFq7lpKPP6Hks8/wFxTs2WC30fWjS7G3crJ2dypT17Vi6mon24r3P5jTJdnPxX28nH+kl7QW2DupQfmLavswndvYr6Rbo1hl586dXHjhhfj9fkzTpF27dry/nx5RV1xxBf/85z954YUXuPvuuw/pNZYtW8YPP/zAqlWrGiq2iIjsxbtzJ6WfTaPk00/xHKDbdKBTKq9+l8j75R3YWLj/cbTk6ABndfdxUe9qemcEMA7461maGhVMjaxTp04sXbq03v3sdjuvv/46S5YsOeTXyMvL44033qBLly6HE1FERA7ANE2233wL5TNmwH5GZPyJ0azr1Y9JrY5lqSMDft73OeIiTIZ39zKyp5fjOvjVN6mZUsHUhBx77LEH3R18b2eeeWYjpBEREcMwsEVH1SmWAi4HG7v0YErKMcxNzCJg2/dqUpTT5LSuPkb29HJiJ81Lagl0CEVEJKwF3G7KZ86i7KsvsSe2Iv3BB8AMgC8Xf9UaCnrbcX4BGzM78WnaQOZk9qbSGbnP87SKCnBKVx+nZ/k44QgfUc79vJgclrj2d1IzvchBWVmZJRlUMImISNgJVFZSPnMmpV99RfmMmZi13bdtcTEErhrEjz/vYMZmF7O2xFJacQKJp/ejMCphn+dpkxDgjCwvp2f5GNhOw22NpbzcY3UEFUwiIhIe/CUllM+YQdk331A+cxamZ99fwoGyCm57aBVL0rrtWWkjWCzZDJO+mX6GdvJxapaPnmmauB0uVDCJiEiLZgYCbLvpJirm/gg+33732Rabyqw2fZiV2Yct8el1tqXGBBja2cfQTjVDbYlRoUgteyv9eTw4MiFuhGUZVDCJiEiLYQYCmG43tpgYALz+AGtyS6nILyPxV8XS5vh05mQcxew2vfk5Lp1fLhVFOEwGtvUxuKOPYZ199EgLYNNVJEvFxUWCIwri4izLoIJJRESaNX95ORVz5lI+Yzql02dSMuhEpp9xJYu3FLBiRylVXpOznUdwK8tYl9iOOZlHMTfjSHbEpQHgspsMauPnuA4+juvgp2+mX59qk33oW0JERJoVMxCgau1acr6ZTsmMmUSsXYUt4A9ur5gxg/+6BrP35KIf2vZnXkYvCqISiXKa9Mnwc2E7D8d28NG/jZ9IfaJN6qGCSUREmrRyj4/1m/PY9flXBBYtIGXtMmIrSwHY33SiaJ+HVp4yiiLjAWibEKB/GwcD2sKAtuV0Twvo02xyyFQwiYhIk+Cu9rO5oIL1u8pYm1dGdl4Z63aWsb3ITZK7hLe/euqAj92Q0IYFrXuwun03Inu04ZI2Jn0zK+nfxk/rON2nrbkzkm4NLjfmPXB/iwomEREJGa8/wPYiN5sLytmUX8Hmgpp/eTn5pGxeS++CjRxVsJHv+lxAdqv2wcftjkrg57jWdCjbCUCJK5pV6VkUdu+C8+guZHWN5roMP+0TTQyjyqq3Jy2YCiYREWkwpmlSVOlle1El23a72V5Uyfaimv/+XFjJ1t2V+AImSe4Seu7ewpGFmxlduIkjSnKxsefKQd/89cGCyWEz6ZTk4YOoNKJ9BnPKy/jokzsZlGTsNU1p/+0CRBqKCiYRETloVV4/u0o95JVW1fwrcbOjyM22oj3FUWW1f7+PHbBzLRduW0KP3VvIqNz9m68zwruGISN70i3NxREpTlx24IbzG+EdSXNg7v4PONpA3LmWZVDBJCIieHx+CsurKSyvZldZTTG0s6T2v6UedtYWSMWV3t9+ItMkzV1Eq6oy1iV1qLOpY2kuJ29fsv/H2QwislKI6deB6IFdyOrbHnvcvvdrE7GKCiYRkRbI6w9QXOlld0U1heUeCiqq2V3uobCimoLymnWFtdsKy6sp8xzGkFZtcdS5OIcuxdvpWrKdrkXbSKyuID8+lYm3jqdtopO2iQHaxlXQbls6/K3moYbLTlTP1kT17UB0vyOIOqod9tiIhv2fINKAVDCJiDRRpmni9voprvRSXOmlxO2lxF1d87V7P+tqvy6urKbiAMNiv0eEz8OJuavo5d5J59Ic2hRuJ8pdvt99U0vzeWnoLOxxXmruMm8QyIyi6PZTie7dnshuGRhOe4NnFGksKphERBqJaZpUeQOUVnkpq/JS4vbVLvsodXsprfJS6vZRVuWltHbdL8slbi8llV6q/YGQZHXYDJJiXKRG2ujmL6ZLZT7evgNJTk8hPT6S9IRIUh1+dg+9v97nssU4ieyehr8U7El7Pulmc0Ly6MGHnbGszB1cjovTDd3CSVlZFTjcQBlxFt0eRQWTiMgBBAIm5dW+PQWOu7bYqfLWFjy1xc7ehVBV3f28fmt6xtgMiI9ykhzjIjk2gpRYF8kxESTFuEiJdpDmLSe5eCfxBblE7twB27biXbyZ6u3bwV9zdardaa8SOygD/CUQ2AW+fMraJuHdvmfCti3WRWRWKpHdMojs0Y7IHpm42iVhNMLN1+LbXhtcNksmN/jzS9MV3+Gu4LL6MImINBKvP1A7VFUzXLVnSKuaEreXotp1v+xTVFldU/R4fFj0sznI5bDRKtpJYpSLhCgnCdFOEqOcJEY7SYx2ER+119e1+8RHOYjxVGIzwJ6YWOf5dvzlr5R9/TWmxwOAH6g4wGtXr3gTus/Zs8Kwk3hOD8xqg8isTCK6tsaZmYhh6M600vKpYBKRBlH84f/wFxfhLy/HrKwk4K7C9HgIVHswvV7w+jADAQgESPvbX4nMyqrz+NwHHsQM+LFFRmGLjsIWE4MtJhZbXCz2+ATsiYnYWyXiSErCExlNkdsXnLBc8KsJzPnlnmARVFzppfxwJjQ3EJfdRnxtERMX6SQ+0lHzdZ3l2m1RDuIjncRFOkmoLYIifzXPx6yuxldYiK+gAF/+VnxbduHbtQvvzp348nbizctjZ24ugcpKkq+/nrS77qx9oAlmJQTcwWJpvwxwpsfi6piMIy0JnO3qbE75Y2ZD/y86aLGx+tRcuIqNjaBmLpx1ZYsKJhGpw/R68ebkUL19O94dO/Dm5ODLzav5hbxrF778fNr+61liBtedi7Lr2Wfw5xcc1GsEireDL6n25qgGYKNk6qeYVb/xi3wv22NTifR5KImIpcQVS0lEDGXOaCpd0fhcMThcUUQ5owg4oyhIyATH4X/6Ktplrylu9lPwxO1d/Bxg+68LHqgZUjA9HgLl5QQqKvCXlRMoL8OfX0qgtBR/SQn+4mIq01oTecXldR5b8OJLFLzwwkFl925dBqX/A/9uCBQDAVypNcfInhCBs20CrnbJuNqlENExDVeHZFztk7E10TvRlu143eoIYpGyrU+rD5OINA25DzxAxbz5eHNygnNYDsSXuxzcNvCXQ6AczHLsMQH8+Qf3Wl8uncW6bdvIK3eQV+5kZ5mD5z1eDvYzU4mecmK9blKqSuvd97Zhd7C5VZvaKzYuWkXYuP/1u/G7IghEREJEBLYIF7aISByRLhyREbhcLpwRLpwuB5n3P4wtYk/B5d25i4L/vgAmYJqYAT/4AxDwY3p9mD4fpteLu7oaT3Q0bZ/7d508Zd99x/Yxf4JA/ZO5o/r2IWn0uWB6gv/sifX0QaplRDogUAT+nWBEgCMDDBtJl6WQdPlp2OM1aVrkUKhgEmnhTNPEu307VT+tpmr1aqrWriHhnHNJOHvE3jvhzcvBu23bQT2nL/dHcFcCTjAcYDiJPeNIinZ5KCGSIiLZ7Y8g3+civ9rJrioHJV4HAcNGwDBYt6495Zuj67z+0/3+gDPgI8JfTZSvmiifh2hfFbFeN7FeN3HVFcRXVxLnqSDO6z5gtl+bcrOLVp1c2OxRYEThL/eR/Z8ycJcd8DH+2n9VAGP/Ck4/wY/GF+dT/O57B/Xa9sQE8OWBWfuMpg/DVnBQxRKAv3AzFL9Y+5UJGDjjt+BIjsaeFI0jJQZHShzO1AQcqQk40uJxpsXhaJ2APSFqv3OL7AkqlEQOhwomkRbGX1KCe/ly3MuW416+nKpVq/CXlNTZx5nRioRTO4I/D3y54NuFK704OPnXkRqNs00CrsxWOFq3wpnRCmfreIzkOPJd8azwxrBlqYPNu23BfztKRmKy1y9oG+Cq/RdbT2jD4Pv2A4hymqTHBWgda9I6ziQiLkBkrElyXIDUGJPkGJOU6ACxpZMJeE/CVxrAX1SJr7gSf4kbf0klgVI3/tJK/OVVBMrcJCYWYvOWgtcHpp9AwYELpf0qfQWq7PDLfc5Kiw76oaanAkre2vNYDGzk1Sw5bdhiXNiindhiIrDHRmCLj8QeG4k9IQZ7fDSOtARwtq3znHEntyXu5CGH9h5E5HczGvPjeQMHDjQXLVrUaM8vInuUfDaNwpdexLN+Q737RvVOo+MLZ4EtAmwxYERSnVNGoMqLq00r/E4nPxfZWJdvY12+nex8G+sLbGwtsuENHN4nolx2kzYJAdom1Py3TXyA9PiaAik91iQtLkB8BNT3gauc3CIo/QRiTiez7aFPQDb9AfwlbgJVXkx3NYFqH6bHh1ntI+DxYfoCmF4f+AOYvgAJI/rU+Yi8v8RNyTerMDBqLjrZbTXb7TYMuw3Dacdw2DGcNoxIJzH9O+7z+pgmhkNNGw9VTu6eYjUzo5WFSSTUcrZvrhlWjj2DzMxG/eDBAX8C6QqTSDPjLy2levNmovr0qbsh4D9gsWSLcxHVPY3Ibm2I6N6GyG4Z4ErGNCG3zGD1Tjvr8qPJzrez7gcbmwptVPsPrTAyMGmbaNKxVYC2CYGa22HUFkhtEwKkxpo0RGueNt1vrV36+rB68Rh2G46kmMN+fXtCFEkXHX3YjzfstsN+bLjbc+zVhynctOm1p2Gq+jCJyH6ZgQBVa9ZQMXMm5TNn4V6xAltsLFlzZmMY5TVzZLwbie66quYBdoPIrilEHdWWqKM6EHVkW5xtWgEG24oNFubZWbXJzqq5dn7Ks7HbfWi/wNNiA3RsFaBTcoAjkmr/tQrQrlWASP1EEZEWSj/eRJqgQFUVFXN/pPyH7ymfPgNfft2PnwVKSqha+ChRWbUTp41InJlt6PDiVUT2yMAW5WJnmcHcHXaWrrOzcoadVXl2yjwHf4knMz5A15QA3VL9ZKUGyEr10ykpgNX3R81IT4SAG2zqyRNuMtITrY4gFslITwBsYFh33qtgEmkiTNOkdNrnlH39NeWzZmG6D/BJMAMiu6UScBvBpoJeP6zOtbHE35UlX9lZst3OjtKDu3IUF2HSs7WfHmk1hVG31ABdU/zEN9F6JGfdC1DyLsSeY3UUCbGcdQfXf0panpzV/6c+TCJSwzAMdr/5JlUrV+6zzZ4QQcxxRxA7uDsxx3bBGxPNku125s1wMH+rneW5djy++q8eJUYFOCo9QK90P0e29nNUhp92iQ0zt0hEpCVTwSQSYmZ1NeWz54DNIG7YsNqVAfDlEje0U7BgcrVPIO7EbsQO7YnRrS1L85zM+9nBj5/aWZZjr/fTapEOk94Zfvq39dM3w8+RGX7axJv1fgpNRET2pYJJJARM06Tqp9WUfPwxpdOm4S8qIqJHD+KGdAfPOvAsB9NN/NBI8J1IzLBerI9qzecbHcxa4WDZl/Z6P7XWLjFA/zZ++rfx0b+Nn+5pAfZzVw4RETkMKphEGpGvqIjSqVMp/uBDPNnZdbZ51qzBs/RfRHROAXsK+RVpzCp1MCO5L7M+sdf76bWuKX6O6+Dn2PY+BrbzkxZrzUdtQy17Qy6UlUN0HlndOlkdR0Ioe0NucDmrS4aFSSTUsjfsBDsQm03Wr27cHSpqXCnSwEzTpHLBQorfe4+yb77B9O577y9HWjTxZxxJ7tDj+XZ3CtM3OViV99uXg7ok1xZIHXwc085PapgUSL9mJIwOLqsXT3jRsQ9fdY594/ZhUuNKkVAwTZOfLx2Fe/nyfbYZEXZihnVl68BBfO7oyrcbXez87MBXkVKiA5zYyceJnXwc3zF8CyQRkaZABZNIAzIMg8jeveoUTM7uaWwfNIiPk/vz7fZYyn/a/x8wDptJ/zZ+hnb2MbSTj56tA/r02n507ZwOgTKw1XeDOmlpunZOtzqCWKRr5zTAUXMrJ4toSE7kMJiBABWzZ+PZuInkq/9Ys9JfCFUr8Kz7gc3Xf0zRMUcxtcMQPihrd8AJ262iApzS1cepXX0c39FHnMVNIZuNX/ow2aOtTiIioeAvClUfJg3JiTSEgMdDyaefsnvCm1Rv3AhOBwln9sERnU2V+2emb05ganZfZp3Rj9KAC4r3fY72iQFOz/JyWpaPAW39OHRrMRGRJk8Fk8hB8JeVUfTOu+x+ayL+/II9G7w+Vjz3NG/3PJuvsntSXr3/P056tvYzvJuX07N8ZKUG1AtJRKSZUcEk8ht8hYXsnvAmRe+8Q6C8vO62CBffdzqGyWUnsHPVvvNpuqb4GdnTy9k9fHRKDoQqsoiINAIVTCL74d25i8LXXqV4yvuYVVV1tpXExPN+xxP5ouMgKp1RdbZ1bOVnZE8fZ/fw0i1NRVJjWLx0E5QXQ/QWBgzoaXUcCaHFSzcFlwf0Uw+ucLJ42VawuyFmMQMGDLAkgyZ9i+xHybRp5Nx1d5112+PSmNJlGD+064/PtudvjcSoAOf09HHhUdX0ztBwW2NTL57wpWMfvtSHSaSJcgztT1V6GpF5u9iQ0IZ3s05hbuaRmEbNDG27YXJSFx8XHuXl5C4+InQmiYi0aPoxL2HNX1xM4WuvEXP88cQceyzrc7fz9pzlfLjST9dO52Lv6Gdh6x78ctmoW6qfi/t4ObenV40kLdK/T8eajxjbE6yOIiHWv09HqyOIRfr3aQeGE2yJlmXQkJyEpUBlJbsnvkXha68RKCujumsWT424gVlb9t3XZTc5u4eXy/p76d/GryG3pkB9mETCi/owiYSW6fNR/OH/KHj+eXz5+cH1rvXZlC/IhrQ9N3U8IsnPZf28XHiUl1bRupokIhLOVDBJWDBNk/IZM9j15FM1DSf3sj02lYk9zmBZahdshslpXX1cOaCa4zr6dWsSEREBVDBJGKhas4adT/yTynnz6qwviIzn7e6n83X7o4mOtHF1n2quPrqadom6miQiInWpYJIWbfekt9n5j3/AXnP1Kh0RTOl6Mh93PoHUZAf3HV3NH/pU6z5uzcT0WauhogCi1jJsaH+r40gITZ+1Org87AT14Aon02dng303RCcwbNgwSzKoYJIWa8nWIt7dGcOVGNgx8Rs2Pu94LG93P43OnaJ4dlA1p2VV6V5uzcxJZz9auzRXvXjCzJ5jrz5M4eakc/4VXG7kPkwHpIJJWhTTNFmytZhnvslm9oYCwEmrI46nTUU+r/Y6mw59UnhpsIdB7Sv1aTcRETloKpikRfDm5pI99lFm2FL5Z+LRdba9cuTZnN4jwPODPfTOqLQooTSUoUN6gG8X2JOtjiIhNnRID6sjiEWGHt8VDBfYUyzLoD5M0qyZXi9rn3+Z6tdfweX14La7uOHUv1IQlYjdMDm3l5ebj6uma6ru69aiqA+TSHhRHyaRw7fxh7nkjB1Hyq5tuGrXRfmrGZT3E66RR/OnIdUckaRCSUREfj8VTNLs5OfmM++eR+gy/xv2vji7OT6dJSNHcvvoNnRNrbIsn4iItDwqmKTZqPT4+Oz5t2n71gt0qSoNrq+yO5k/5BROuP1ozmpjALqqJCIiDUsFkzR5/oDJJzN+ovKxRxmwdXmdbSvbdKHr2JHc1DfOonQSalO/WAwVeRC1jJEjBlsdR0Jo6heLg8sjhw+wMImE2tQvV4J9B0TZGDlypCUZNOlbmrT5mwoZN3U1m7fl8+J3T9HaXQRAoTOax6tMpm1Yqn4sYcZIGB1c1rEPLzr24avOsW/cPkwHnPStln3SJOWWuBnzzlL+8PI81uSWUuWI4N/9LgKgYEhfzlqzgmkbllqcUkREwoWG5KRJ8fj8vDpzE99P+YrFiUcE10c5A5xwXhIZN99Ej25pDN2xzsKUYqWzz+wH3hxwtLY6ioTY2Wf2szqCWOTsM44EIxIc6ZZl0JCcNBnfrdnJs1N+5MLvJzJo5xrGDbqa+Rm9OLtbEfed4iEzUT13pJb6MImEF/VhEoEdxW7GfrKKqm+/4e/LPiTeW9ON+84VH8B1Ngb1zgBDvxhFRMQ6KpjEMj5/gAlzt/DitOX8cdEHnLJ9SZ3t7UZ0Jr1bGhiaaiciItZSwSSWWLm9hHs/WoGxfClPLX6H1u7i4DZbagxtx51HzNGdrQsoIiKyFxVMElIVHh/jv87mrdkbGL3may7J/h4be+bRJQzvTuu/nIM9NvI3n2fy+3OCy6MvPr7R8krTM/n9OVC5HSLnM/oPJ1kdR0JI5334mvzBQrBtgKgKRo8eXf8DGoEmfUvIzMzO597/rcS3Yzv3LJpE96JtwW22OBcZ944g/tSjDuq51I8lfOnYhy8d+/DVFPow6QqTNLqyKi//9/ka3llQUyC1BtqV5Qe3Rw9sQ+a4i3GmxVuUUERE5LepYJJGNXt9AX/7cAU7it3Bdd7UdIqvuZCY198h7aYTSLr8RAzbAYv6/Rp1kW6JEa5GXTQYvD/XfMRYworO+/A16sKBYESBs61lGTQkJ42i3OPj/z5fw+T5W4n2VlHprJmTNLxXKx45aTUpUUVU74rG1SbJ4qTSLKkPk0h4UR8maYnmbizgL++vYEdRJaf/vIDrfvqMx065lWsu78HZHWdi2BPA3haXLhCIiEgzoYJJGky1L8D4r9fx8qxNuLwe7lr+P07dVnN38cdXvE6XlNMwnEeA4bI4qYiIyKFRwSQNYsOucv787lJ+yimlbdku7l/wJh3Ldga3O1wB/JWp2JNULImISPOjgkl+F9M0mbxgK498tpoqb4AhO5Zzx9IpRPs8wX0SzupB+t/OxRbVcMXSy298F1y+4epTGux5pel7+Y3vwL0FImZww7XDrY4jIaTzPny9PGE22BMhcic33HCDJRk06VsO2+6Kav724Qq+Wb0TW8DPNas/58INM4LbDZed9L+cTuK5Rzf4a6sfS/jSsQ9fOvbhS32YpNmau6GAP7+3jPwyDwmeMu5dOIk+BRuD251t4mj7+KVEdsuwMKWIiEjDUMEkhyQQMHn+hw08+202ARMifB7+Nf3ftHYXBfeJHdKRzIcuwR7327c3+T2uv0q3xAhX1191ElRvAmcHq6NIiOm8D1/XX3k82KLB2dGyDBqSk4NWWO7h9veWMWt9QXBdcoyL/xoriZv0ChiQev3xJF9z8iE3ohQ5JOrDJBJe1IdJmosFm3cz5p0l7CzdM5l70BFJPPeHHqQapeSVdCHulAHEDu5mYUoREZHGoYJJflMgYPLyrE08+dU6/AGTuOoKbKbJ5Wf24Y6TUnBUTgFfKRl/HwWGriqJiEjLpIJJDqjE7eWuKcv4ds0uANqX5vHwgjdo1b4NvY/vg1H2JtgiwamW3SIi0rKpYJL92rCrjOsnLmZzQQUAR+et5r7Fk4n0VsHqQvIe/isZ951bMwnPAuOfmxZcvmvMCEsyiDXGPzcNqjaA6yvu+vP5VseRENJ5H77GP/8t2BMgYgN33XWXJRk06Vv28fVPedw5ZTnlHh+YJhdsmMF1q6dh1H6vGFEOMsedS/xJvSzLqH4s4UvHPnzp2Icv9WGSJiUQMPnXd+v513frAXAEfPxp5cectnlecB9neixtnxpNZFa6VTFFRERCTgWTAFBW5eWO95bz7Zqa+7/FVlfy8NJJ9MjNDu4TdVRr2j55OY6kGKtiBt1521lWRxCL3HnbWeBZC87OVkeRENN5H77uvOVksMWCq4tlGTQkJ2zML+eGiYvYmF8zXymjooB/Lp5Ayu684D4JZ3Yn/e8XYHOpxpYmQH2YRMKL+jCJ1eZuKOCmSYsprfIB0LEkl2cXvEJERWlwn9Qbh5B8zUkYahsgIiJhymZ1ALHOewu3cuXrC4LFUqTTxp1XDiW+Xc393wyXjTaPnkvKtSerWBIRkbCmK0xhKBAweeLLtbw0c1NwXVpcBK9ddTRHZUbiHX8e2+54hfS/nkN07/YWJhUREWkaVDCFmcpqH3e8t4yvfqqZ3I1p0jMzgdf+OJCMOD+UvYczMZ8jJt6CYWu6FyDHPfbBnuV7L7IwiYTauMc+gKq14DIZd/8oq+NICOm8D1/jHp8GtjiIWMq4ceMsyaBJ32FkZ2kV1725iJU7SgBw+r08uf4jjrv0bFpffDKUTgHTA47WFietn/qxhC8d+/ClYx++1IdJQmZtXilXv7GQ3JIqAGKq3fx37TukblrN7kcWERMzl9ghXZpFsSQiIhJqKpjCwLxNhVw/cRFltZO70zylvLhyIlHbt9Ts4A9QuaKA2KHHWBfyEI295wKrI4hFxt5zAVStAlc3q6NIiOm8D19j/3pW7ZBcd8syaEiuhft8ZS63v7uMan8AgCxPIU8veh17/s7gPmljhpJ0+Yn6JJw0H+rDJBJe1IdJGtObc7cwbupP/FITD/LkMnbOqxilNXOYsBtkPjCChLP6WxdSRESkGVDB1AKZpsmTX63jhekbg+uGe7byp+mvgNsNgBFpp+3jFxE7WMMaIiIi9VHB1MJ4/QHu+XAlHy7ZHlx3mWcjl3/7Kni9ANjjXbR75jKijmpnVUwREZFmRQVTC1Ll9XPb5CV8u2ZXcN25mXYuf2VPseRIi6b9v68kolOaVTEbxF33Twouj//H5RYmkVC76/5JtTffdTP+sautjiMhpPM+fN319w9rb747k/Hjx1uSQZO+W4gKj4/rJy5i7sbC4LpLBrbl/84/ivJP3if3vnG42iXQ/j9/xJmeYGHShqF+LOFLxz586diHL/VhkgZRUunljxMWsHRrcXDdjUM7cc+Z3TEC5SSeXIEx7iRiju2PIynGuqAiIiLNlAqmZi6/zMMVr81nbV5ZzQrT5J6h7blpeA/wl0Dpe2C6STjrBGuDNrCnHr3M6ghikacevQyqloKrl9VRJMR03oevpx4+H+wJEHGkZRk0JNeM7Sh2c8Wr89lUUAGAYQaYUPwD7XZtocPrz2DnMzD94Ei1OKlIA1MfJpHw0gT6MDXdu6vKb9pSUMElL/4YLJYcpp/JhV+TNuMLPGvWsO36qwi4vSqWREREGoCG5JqhTfnljHplHjtLPQBEGgEm7fqCmLnTg/u42rbCiFSxJCIi0hBUMDUzG/PLGfXyPHaV1RRLsbYAk3KmEjFvVnCfxHOPJP3e8zFsutWJiIhIQ1DB1Ixs2FXGqFfmk19bLMXbAkza+hHORT8G92l1SV9a3zWyxd8X7oY/vRJcfvnf11uYRELthj+9AtWbwFnMy8/dZHUcCSGd9+Hrhtsngy0anNN4+eWXLcmgSd/NxPqdNcVSQXlNsZRo8zPx5//hXDw/uE/SZQNJ+9PwFl8sgfqxhDMd+/ClYx++1IdJDsq6vDIue3UeBeXVQE2x9NbmD3AsXRjcJ/mqQaTecnpYFEsiIiKhpoKpiVuXV8boV+ZRWFFTLMW47Ez0LapTLKVcexwpN5waVsXSS89ea3UEschLz14L7oUQ0cfqKBJiOu/D10tPjwJ7IkT2tSyDhuSasI355fzhpR+DV5ZiIxy8ec3R9G3lYOs1V1C1KpuU6weTev2pFicVCTH1YRIJL02gD5OuMDVRWwsrueyV+cFiKS7CwZvXHkP/9q2gejPtnxpA2cwjSDxvkMVJRUREWj4VTE1QTrGbUa/MI6+0CoBop40J1xwdLJYoew97YhsSz+tqcVIREZHwoIKpidlVWsXoV+axo9gNQIwRYPLWj+mwxAMZfaHsfbCn1ny8UkREREJCBVMTUlju4bJX57OlsBKo7eCd8ymu+bPJXTAHSgeTeO5xKpaA0dc+H1ye/NptFiaRUBt97fPg/RkceUx+/Xar40gI6bwPX6OvfwOMKHC+x+TJ1rSU0KTvJqKk0suoV+axOrcUACcB3tk5jZgfZwT3Sf7jINJuOcOqiE2K+rGELx378KVjH76aQh8m3Xy3Cais9vHHCQuCxZKdAJMKv65TLCVdNpDUm0+3KqKIiEhY05Ccxap9AW6etISlW4trVpgmE0t+IH7Wt8F9Wl3SN2w6eB+st1+91eoIYpG3X70VKn+EyAFWR5EQ03kfvt5++Y9gawVRAy3LoCE5CwUCJre/t4xPl+fUrDBNXq+YTca3nwT3STz3SNLvO1/Fksje1IdJJLw0gT5MGpKziGmaPPzZ6j3FEvCce0GdYinhzO6k36tiSURExGoqmCzy3PcbmDB3S/Drf1QtpcvX7we/jjupMxkPXoRhU7EkIiJiNRVMFnhr3s88/U128OsRvTMYPqQH2GoOR8xx7Wnz6KUYDh0eERGRpkCTvkNs2opcHvxkVfDrIV1SePqSPkTYuuOwLaD44yW0feIyDKfdwpRN38g/PBlcnvreXyxMIqE28g9PgjcHHFuYOuUeq+NICOm8D18jR/0XjEhwvMrUqVMtyaCCKYQWbN7NHe8t45d59n3aJvDSFQOIsHmh7APih6UTd8rVmrN0ED77cqnVEcQie479TktzSOjpvA9fn321qv6dGpnGfEJkw64yrp+4iGp/AIChFPDaRT2IcQWg7GPw7QJHuoolERGRJkhXmEJgV1kVf3xjISVuLwD9q/O5Z8bzlK77hMRnL8ARswNc7S1O2bx8+u5dVkcQi3z67l1QMQuijrE6ioSYzvvw9enkm8CeBFHHWpZBfZgaWYXHx6Uvz2PljhIAjvDs5j8//hejuAiA6L6taf/i9Rg2XewTOWjqwyQSXtSHqWXz+QOMeWdpsFhK9pTy7yVvBIslW6yT1nefo2JJRESkidNv6kZimiYPfvoT36/dBUC0183LP03CsTMXAMNlp934UURmZVgZU0RERA6CCqZG8t8ZG5k8fysATr+Xl9a+S/TWTTUb7QZtHruA6H4drQsoIiIiB02TvhvBFytz+eeX6wCwmQGe2fARKRt/Cm7PuP8s4k7oYVW8FmHYiEeCy9OnPWBhEgm1YSMeqflUqX0t0z8fZ3UcCSGd9+Fr2MhnwXCB/RmmT59uSQYVTA1s1Y4S7piyrOYL02Tsli/pvGZBcHvarSeSeLbusv57zZi9xuoIYpE9x77Q0hwSejrvw9eMOeutjqAhuYa0s7SKa99cSJW3ptfS5QVLOGb598HtSZf2I+nKoVbFExERkcOkK0wNxF3t5/qJi9hZ6gEgLtLBH++/DscDa3AvXkb8aV1Ju/1sNaZsID989nerI4hFfvjs71DxPUQNtjqKhJjO+/D1w6d/BnsKRA+xLIP6MDWAQMBkzDtLmbay5hNwdpvBm1cfw5DOMQTy32L3pNkkXXUaNpfqU5EGoT5MIuGlCfRh0m/wBvDsd+uDxRLAuHN6MaRLApT+D5ujjJTrh1uYTkRERH4vzWH6nT5ZtoN/f1czGS21soi/x+RwxaB2UP4VeLeAM9PagCIiIvK76QrT77Byewl//WAFADHVbsYvmUBqwQ4KkjaTfEkshqujtQFFRESkQahgOkwF5R5ufGsRHl8AR8DHP5ZNIrVgBwD5//2EuBNuIKKjJng3lgEn3hdcXjzz/yxMIqE24MT7auYz2JexeObjVseRENJ5H74GnPQ4GE6wPczixYstyaCC6TB4/QFufXsJOSVVYJrcteJDuuWsC27PfGAEER3TLEzY8i1ZvsXqCGKRPce+xMoYYgGd9+FryfJtVkfQHKbD8Y9pa5i/eTcAo7O/ZdiWhcFtqTcOIWF4P6uiiYiISCPQFaZD9OHi7UyYuwWAk7Yt4Yo1XwW3JZzdk+RrTrIoWXhZNP1RqyOIRRZNfxTKv4boE62OIiGm8z58Lfr+b2BPhZhhlmVQwXQIVm4v4d6PVgLQq2ATdy6bEtwWPbANGfedr8aUITKgXyerI4hFBvTrBCWJENvR6igSYjrvw9eAvu1r+zBZd2sxDckdpF8meVf7AmRUFDBu4Zs4/D4AXB0TafvEZRgOu8UpRUREpDGoYDoIe0/ytgf8PDz/DWI9FQDYEyNp98wV2OMiLU4pIiIijUUF00F4/Iu1wUneAbudmFvHYERGYLhstHvqUlxtWlmcUERERBqT5jDV44uVubw2e3Pw67tP78bgwTbcXU7FWxBBVO/2FqYLX1n97wwuZy952sIkEmpZ/e+EQBnY5pO95Bmr40gI6bwPX1lHPwQ4wPYXsrOzLcmgguk3bC6o4C+1nbwBTu3RmluGxEPpRKJ69SDKpht/WmX9xjyrI4hF9hz7CktzSOjpvA9f6zfusjqChuQOpMrr5+ZJiyn3+OhZuJke0X7GX9QFo/xDsEXX/BMREZGwoCtMB/DgJ6tYm1dGu7KdPPzja0Svb0XkyE3QwQRHutXxwt66xeOtjiAWWbd4PJRNg+iTrY4iIabzPnytW/Ag2FtD7KmWZVDBtB9TFm5jyqLtxFVXMG7e68T4qiAvlx33vccR74xBnZasl9Ulw+oIYpGsLhlQEgux+sMl3Oi8D19ZXVrX9mHKsiyDhuR+ZXVOKQ98sgp7wM99CyaSWVEIgBFpJ/PhizBsKpdERETCjQqmvZRWebnl7cV4fAFuWPkJfQs2BrdlPnQekd0yLUwnIiIiVlHBVMs0Tf72wQq2FFYyfPOPnLN5bnBb6g3HE39SLwvTiYiIiJU0h6nWW/N+5otVefQq2MQtKz4Kro8/tSvJ12pyaVOT2e2W4HLOuhcsTCKhltntFgi4wTaDnHX/tTqOhJDO+/CV2fM+wAZGJDk5OZZkUMFEzbylR6etIbWyiL8veBOHGQAgIiuZjAcv0g11m6DcvGKrI4hF9hx7j5UxxAI678NXbl6J1RE0JFdZ7WPMO0swqqp4cP4EEqv3ukfcU5dji3RanFBERESsFvZXmB76dDUb8yuIxKQgNokuJTvAbtD28UtwpidYHU8OYMfa/1gdQSyyY+1/oPQTiDnd6igSYjrvw9eOn/4BjgyIPcOyDGFdME1dnsN7i7YBUOWIIObR+0md+wT2pDSi+3e0Npz8pswM3fA4XGVmtILoSIhNtDqKhJjO+/CVmZEIjiSIs+7T6mFbMG3bXcl9/1sZ/Hpk71Qu7jYbo/tQsMdbmExERESamrCcw+T1BxjzzlKqK2rmK7VrFcU/TlmPQbWKJREREdlHWF5hevqbbNZs3sX4mf9hdWonTn/yfOId28DRwepoIiIi0gSFXcE0e30BL07fwN3LPqBzaQ6dS3OIeWwj5nPX6B5xzUhcm2uCy2U7XrcwiYRaXJtrwPSC8RVlO96wOo6EkM778BXX/k7AAByUlZVZkiGsCqaiimrunLKMczbO5uTtS4Lr407pjWGzW5hMDlV5eZXVEcQie46939IcEno678NXebn1fdfCZg6TaZrc99FKUjev4bpVU4PrE8/pRasLBlmYTERERJq6sLnC9L8lO5i/cB3PLXwr2Mk7skcqrf96rsXJ5HCUbn/N6ghikdLtr0HphxBzltVRJMR03oev0p/HgyMT4kZYliEsCqZtuyt5+OMVPLDwLZI8NWOf9sRI2v5zNDZXWPwvaHHi4qKsjiAWiYuLgoADYiOtjiIhpvM+fMXFRYIjCuLiLMvQ4ofk/AGTu6Ys59LFH9Nr95aalTaDNv+4EGdrdfIWERGR+rX4gumVWZuImv0d522aFVyXdvMJxBzd2cJUIiIi0py06ILpp5wS/vXFT1z702fBdXFDO5F05VALU4mIiEhz02In8FR5/dzx3jLc2PnLkFt4dOlEjogsI2PsRRiGOi41d0bC6OCyWTLZwiQSanuO/ac69mFG5334MpJuDS6bpmlJhhZbMD351Tqyd5YDUJKQzBEvnkZ7exx2TRQVERGRQ9QiC6a5Gwp4bfbm4Nf3D8uhS7t0MFwWphIREZHmymjMS1sDBw40Fy1a1GjPvz/lHh833P8WhaVu1iV1YFinSt64aDeGQzfVFWkxSt6F2HPAHm11EhEJBX8RONpAXKP3TjzgnJ0Wd4Vp/AcLueG7l0mqKmNSv7O566Z0DEdrq2OJiIhIM9aiPiU3J3sXHV5+ktbuYpymnyvXfEFyIMbqWCIiItLMtZiCqdzj4/uHnmHQzjXBde0fOgdHSqyFqURERKQlaDFDcq+88BHnL/k0+HXkxQOJH9bTwkTSmMrK3MFl3S4hvJSVuaHcB2YVcYmawxROdN6Hr7KyKnC4gTLiLLo9SosomOYsWs/AN8djr72prrtzJt3vOMPiVNKY4tteG1xWP5bwsufYf65jH2Z03oev+A53BZet6sPU7IfkSis97PjbPaRUlQDgjoziyGcuxnDYLU4mIiIiLUWzv8L06b3/ZMCO1cGv0x48B1e6bqrb0sWqAWnYio2NBNMLRrP/8SWHSOd9+IqNjaDmE//WnffNug/Tj59+T9zfxgSH4nYPP5bjHzq90V5PRJoI9WESCS9NoA9Tsx2SK6vy8vFHc/il3MvJbMtxfz/F0kwiIiLSMjXbgumzFbm817o/fznhVja3yqTX+IuwOTVvSURERBpes50EMOqY9iREOfn7Rwb+Ky8hvbNufSIiIiKNo9kWTAB9k03evThAjH8HoIIpnOTkFgWXMzNaWZhEQi0ntwhKqyCmmMy2msMUTnTeh6+c3GJwREFZDpmZmZZkaNaTvg1jz9ws9eQIL0bC6OCyjn140bEPXzr24avOsW/cPkwtb9K3iIiISKg06yG5jIyMmn4sZrXVUSTEMtITrY4gFslIT4SAG2zqyRNudN6Hr4z0BMAGhnXnfbMekgPAPR/cs8FhzZimiFhAfZhEwov6MImIiIg0fSqYREREROqhgklERESkHs160nd2djZUbYWqfLK6aw5TOMnekBtczuqSYWESCbXsDblQVg7ReWR162R1HAkhnffhK3vDTrADsdlkZWVZkqFZT/pWH6bwpX4s4UvHPnzp2Icv9WESERERaQaa9ZBc165dwawC0211FAmxrp3TrY4gFunaOR0CZWCLtTqKhJjO+/DVtXMa4ABbjGUZmvWQHKA+TCLhSH2YRMKL+jCJiIiINH0qmERERETqoYJJREREpB7NetL34sWLoWoteLYzYKDmMIWTxUs3BZcH9FMvnnCyeOkmKC+G6C0MGNDT6jgSQjrvw9fiZVvB7oaYxQwYMMCSDM160rf6MIUv9WMJXzr24UvHPnypD5OIiIhIM9Csh+T69+8PgQowy62OIiHWv09HqyOIRfr36VjzEWN7gtVRJMR03oev/n3ageEEW6JlGZr1kBygPkwi4Uh9mETCi/owiYiIiDR9KphERERE6qGCSURERKQezXrS9/Tp08GzGjwbGDZMc5jCyfRZq4PLw05QL55wMn3WaqgogKi1DBva3+o4EkI678PX9NnZYN8N0QkMGzbMkgzNetK3+jCFL/VjCV869uFLxz58qQ+TiIiISDPQrIfkhg4dCoFSCJRYHUVCbOiQHlZHEIsMHdIDfLvAnmx1FAkxnffha+jxXcFwgT3FsgzNekgOUB8mkXCkPkwi4UV9mERERESaPhVMIiIiIvVQwSQiIiJSj2Y96Xvq1KngWQfVqxl5tuYwhZOpXywOLo8cPsDCJBJqU79YDBV5ELWMkSMGWx1HQkjnffia+uVKsO+AKBsjR460JEOznvStPkzhS/1YwpeOffjSsQ9f6sMkIiIi0gw06yG5s88+u+ajhoHdVkeREDv7zH5WRxCLnH1mP/DmgKO11VEkxHTeh6+zzzgSjEhwpFuWoVkPyQHqwyQSjtSHSSS8qA+TiIiISNOngklERESkHiqYREREROrRrCd9T548Gao3QPU6Rl+qOUzhZPL7c4LLoy8+3sIkEmqT358Dldshcj6j/3CS1XEkhHTeh6/JHywE2waIqmD06NH1P6ARNOtJ3+rDFL7UjyV86diHLx378KU+TCIiIiLNQLMekhs1ahT4C8Gfb3UUCbFRF+mWGOFq1EWDwftzzUeMJazovA9foy4cCEYUONtalqFZD8kB6sMkEo7Uh0kkvKgPk4iIiEjTp4JJREREpB4qmERERETq0awnfb/88stQvRm8G7jh2gusjiMh9PIb3wWXb7j6FAuTSKi9/MZ34N4CETO44drhVseRENJ5H75enjAb7IkQuZMbbrjBkgzNetK3+jCFL/VjCV869uFLxz58qQ+TiIiISDPQrIfkrr/+evDtAn+e1VEkxK6/SrfECFfXX3USVG8CZwero0iI6bwPX9dfeTzYosHZ0bIMzXpIDlAfJpFwpD5MIuFFfZhEREREmj4VTCIiIiL1UMEkIiIiUo9mPel7/PjxNTfh9G7mrj+Prv8B0mKMf25acPmuMSMsTCKhNv65aVC1AVxfcdefz7c6joSQzvvwNf75b8GeABEbuOuuuyzJ0KwnfasPU/hSP5bwpWMfvnTsw5f6MImIiIg0A816SO7OO+8EXy74dlgdRULsztvOsjqCWOTO284Cz1pwdrY6ioSYzvvwdectJ4MtFlxdLMvQrIfkAPVhEglH6sMkEl7Uh0lERESk6VPBJCIiIlKPgy6YDMO4xTCMzYZhVBmGsdgwjBMaM5iIiIhIU3FQk74Nw/gD8C/gFmB27X+/MAyjp2maWxsx328aN24ceLeDbyvj7r/aqhhigXGPfbBn+d6LLEwioTbusQ+gai24TMbdP8rqOBJCOu/D17jHp4EtDiKW1vzut8BBTfo2DGM+sMI0zev3Wrce+MA0zXsP9Dj1YZLGon4s4UvHPnzp2IevptCHqd6CyTAMF1AJjDJN8/291v8HONI0zaG/8dhGfVciIiIiDcU0zd/1KbkUwA7s/NX6nUD6r3c2DOMGwzAWGYbRyP0ERERERELjUBpX/vpqkbGfdZim+TLwMoSoD5OIiIhIIzuYK0wFgJ99ryalse9VJxEREZEWp96CyTTNamAxcNqvNp0GzG2MUCIiIiJNycEOyT0NvGUYxgJgDnATkAm82FjBRERERJqKgyqYTNN8zzCMZODvQAawCjjLNM2fGzOciIiISFNw0JO+TdN8AXihEbOIiIiINEm6l5yIiIhIPVQwiYiIiNRDBZOIiIhIPVQwiYiIiNRDBZOIiIhIPVQwiYiIiNRDBZOIiIhIPQzT3Of+uQ335IaRDzR2c8sUau53J+FHxz586diHLx378BWKY19gmuaZ+9vQqAVTKBiGscg0zYFW55DQ07EPXzr24UvHPnxZfew1JCciIiJSDxVMIiIiIvVoCQXTy1YHEMvo2IcvHfvwpWMfviw99s1+DpOIiIhIY2sJV5hEREREGpUKJhEREZF6qGASERERqYcKJhEREZF6WF4wGYZxsWEYHsMwOuy17l+GYWw0DKN1A7/WmYZhzDIMo8gwjN2GYXxlGEaPhnwNaXih/B6RpkXHPnzp2MvhMgxjumEYzzf081peMAEfACuBvwMYhnE3MAo40zTNnb/1QMMw7jMMo7yefyfs9ZAY4FngGGAYUAJMNQzD1fBvSxrQYX+PSLOnYx++dOylSXFYHcA0TdMwjPuAaYZhbATuB042TXM9gGEYZwHPUFPcPWOa5gt7PfxFYEo9L7Fjr9f6cO8NhmFcDZRSU0DN/r3vRRrHQXyPfAqcAHxnmuZFFkaVBvZbx94wjHbAW0Aa4AUeMk3zfxbGlQZ0EOf9XGr+CLYDU0zTfNi6tBIOmkwfptpv/mOAkaZpflG7zgGsAU4GCoFFwCmmaeYe5mt0Bh4BBgGp1BRhMcBlpmlO/t1vQhrV/r5HatefBMQCV6lgapkO8PMhA2htmuYywzDSgMVAN9M0Ky2MKg3sN877eNM0Sw3DsFPzB+/Npmkusyim1MMwjIuBSUCWaZo/1677F3A2MLghrxoahjEdWAt4gCtrV78K/M00zcDhPm9TGJLDMIyTgT6AAez9P+0YYLVpmttqfwh+RM3/3F8ed6hDclOpKZRupKZo6gf4AA3JNXG/8T2CaZo/AGVW5JLGd6Bjb5pm7i+/IE3T3AUUUXM3c2kh6jnvS2sXXehneHMQyuk3AJdRU+McR83v/BuA23/PG7B8SM4wjD7A/4AxwAjgMeCM2s2ZwLa9dt8OtNnr64MekjMMIxnoAdxa+wsWwzD60wT+H8hvq+d7RFqwgz32hmEMBJzU/XkhzdjBHHvDMOYDPYEXdHWpaatviBXAMAwbMB/4+VejBYc0/aZWLvAns2YYba1hGFnAncDTh/seLC0Waj/98DnwtGmarxuGsQBYYRjGMNM0p1PzV8WvBccQTdPcDew+yJcrAgqA6w3D2EZN4fUkNVeYpIk6iO8RaaEO9tjX/jE0EbjWbCpzDOR3Odhjb5rmIMMw4oH3DcM40jTNVRZFloNgmubXhmEsBB6lZoh14a92uRnYyK9qk0P8Xf+Leb/6efAj8MgvQ7mH+FyAhUNyhmEkAV8Cn/0yWa/2m/19av6SgJqKsd1eD2sL5BzO69WOW/4B6A2sAv4DPEDNGKc0QQf5PSIt0MEee8MwIqgZqn/MNM25VmSVhnWo533tL7/vgTNDmVMO3W8NsdbOQ7yA/dxg9zCH5Bo+f1P+g6x20vda4CRqrg4tBk41TfOwiiZpuQzDGAbcpknf4cMwDAOYDKwzTXOcxXEkhAzDSAQcpmkWGIYRCUyj5lPUn1mbTA6kdoh1BjXDYiOAWNM0z9hr+5vAS9TMR6vzs7y2iE6q5yV2mKbprt1/OpABdP/lKpNhGPcDt5im2ebAT/HbmvT8HdM0fYZh3AF8R83VsH+pWJJfMwzjW2r+aokxDGM7cLFpmj9aHEsa3/HUXDVeYRjGebXrrjBNc6V1kSREkqgZhnNS87thioqlpqu+IVbDME6kZprT3No/fus4zCG5TOBZwzBeAI4C/kLNUODhv4+mfIVJREREmq/aq0NzgJmmad641/r3gPamaR5nGMY91Ezu9wKRQBzwrmma1x7ma06nZnTKB1xOzdzn14G/mqbpP+z3ooJJREREmoKmPL2iSfRhEhEREWnKdIVJREREpB66wiQiIiJSDxVMIiIiIvVQwSQiIiJSDxVMIiIiIvVQwSQiIiJSDxVMIiIiIvVQwSQiIiJSDxVMIiIiIvX4f+Fm3/p/pbd2AAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plot_simpsons_rule_illustration()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The weights are the following:\n", "\n", "$$\n", "\\begin{aligned}\n", "w_i = \\begin{cases}\n", "h / 3 & \\text{for $i \\in [0, n]$} \\\\\n", "4 h / 3& \\text{for $0 < i < n, i$ even} \\\\\n", "2 h / 3& \\text{for $0 < i < n, i$ odd} . \\\\\n", "\\end{cases}\n", "\\end{aligned}\n", "$$\n" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "\u001b[0;31mSignature:\u001b[0m \u001b[0mquadrature_newton_simpson_one\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mf\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0ma\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mb\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mn\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mSource:\u001b[0m \n", "\u001b[0;32mdef\u001b[0m \u001b[0mquadrature_newton_simpson_one\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mf\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0ma\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mb\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mn\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;34m\"\"\"Return quadrature newton simpson example.\"\"\"\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mn\u001b[0m \u001b[0;34m%\u001b[0m \u001b[0;36m2\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mWarning\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"n must be an odd integer. Increasing by 1\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mn\u001b[0m \u001b[0;34m+=\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mxvals\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlinspace\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0ma\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mb\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mn\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mfvals\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtile\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnan\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mn\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mh\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mxvals\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m-\u001b[0m \u001b[0mxvals\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mweights\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtile\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnan\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mn\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mweights\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m2\u001b[0m \u001b[0;34m*\u001b[0m \u001b[0mh\u001b[0m \u001b[0;34m/\u001b[0m \u001b[0;36m3\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mweights\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m4\u001b[0m \u001b[0;34m*\u001b[0m \u001b[0mh\u001b[0m \u001b[0;34m/\u001b[0m \u001b[0;36m3\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mweights\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mweights\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mh\u001b[0m \u001b[0;34m/\u001b[0m \u001b[0;36m3\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mi\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mxval\u001b[0m \u001b[0;32min\u001b[0m \u001b[0menumerate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mxvals\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mfvals\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mf\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mxval\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msum\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mweights\u001b[0m \u001b[0;34m*\u001b[0m \u001b[0mfvals\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mFile:\u001b[0m ~/external-storage/sciebo/office/OpenSourceEconomics/teaching/scientific-computing/course/lectures/integration/integration_algorithms.py\n", "\u001b[0;31mType:\u001b[0m function\n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "??quadrature_newton_simpson_one" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "integrand = quadrature_newton_simpson_one(np.exp, 0, 1, 1001)\n", "np.testing.assert_almost_equal(integrand, np.exp(1) - 1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Gaussian formulas\n", "\n", "Gaussian quadrature formulas employ a very different logic to compute the area under a curve $f$ over a bounded interval $[a, b]$. Specifically, the $n$ quadrature nodes $x_i$ and $n$ quadrature weights $\\omega_i$ are chosen to exactly integrate polynomials of degree $2n - 1$ or less.\n", "\n", "Gaussian quadrature approximations of the form:\n", "\n", "$$\n", "\\begin{aligned}\n", "\\int_a^b f(x) w(x) dx \\approx \\sum_{i = 1}^{n}\\omega _i f(x_i)\n", "\\end{aligned}\n", "$$\n", "\n", "for any nonnegative weighing function $w(x)$. Versions of $w(x)$ lead to include Gauss-Legendre, Gauss-Chebyshev, Gauss-Hermite and Gauss-Laguerre.\n", "\n", "\n", "\n", "We start from the special domain between $[-1, 1]$, again the formula for our approximate solution looks very similar.\n", "\n", "$$\n", "\\begin{aligned}\n", "\\int_{-1}^1 f(x) dx\\approx \\sum^n_{i=1} w_i f(x_i)\n", "\\end{aligned}\n", "$$\n", "\n", "So, more generally using a change of variables:\n", "\n", "$$\n", "\\begin{aligned}\n", "\\int_a^b f(x) = \\approx \\frac{b -a }{2} \\sum^n_{i=1} w_i f\\left(\\frac{(x_i + 1)(b - a)}{2} + a\\right)\n", "\\end{aligned}\n", "$$\n", "\n", "Unlike in the case of the Newton-Cotes approach, Gaussian nodes are not uniformly spaced and do not include the integration limits." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "text/plain": [ "[None, None, None]" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "[plot_gauss_legendre_weights(deg) for deg in [5, 11, 21]]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### _Question_\n", "\n", "* What are the properties of the weights?" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "\u001b[0;31mSignature:\u001b[0m \u001b[0mquadrature_gauss_legendre_one\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mf\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0ma\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mb\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mn\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mSource:\u001b[0m \n", "\u001b[0;32mdef\u001b[0m \u001b[0mquadrature_gauss_legendre_one\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mf\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0ma\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mb\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mn\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;34m\"\"\"Return quadrature gauss legendre example.\"\"\"\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mxvals\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mweights\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpolynomial\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlegendre\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mleggauss\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mn\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mxval_trans\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mb\u001b[0m \u001b[0;34m-\u001b[0m \u001b[0ma\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m*\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mxvals\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0;36m1.0\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m/\u001b[0m \u001b[0;36m2.0\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0ma\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mfvals\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtile\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnan\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mn\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mi\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mxval\u001b[0m \u001b[0;32min\u001b[0m \u001b[0menumerate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mxval_trans\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mfvals\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mb\u001b[0m \u001b[0;34m-\u001b[0m \u001b[0ma\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m/\u001b[0m \u001b[0;36m2.0\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m*\u001b[0m \u001b[0mf\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mxval\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msum\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mweights\u001b[0m \u001b[0;34m*\u001b[0m \u001b[0mfvals\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mFile:\u001b[0m ~/external-storage/sciebo/office/OpenSourceEconomics/teaching/scientific-computing/course/lectures/integration/integration_algorithms.py\n", "\u001b[0;31mType:\u001b[0m function\n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "??quadrature_gauss_legendre_one" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "integrand = quadrature_gauss_legendre_one(np.exp, 0, 1, 1000)\n", "np.testing.assert_almost_equal(integrand, np.exp(1) - 1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Benchmarking\n", "\n", "\n", "### _Exercise_\n", "* Compare the performance of our integration routines on the following two integrals.\n", "\n", "\n", "We study the following two cases:\n", "\n", "$$\n", "\\begin{aligned}\n", "f(x) & = \\int_{-1}^1 e^{-x} dx \\\\\n", "f(x) & = \\int_{-1}^1 \\sqrt{|x|} dx .\n", "\\end{aligned}\n", "$$" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plot_benchmarking_exercise()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "How can we extend the ideas so far to multidimensional integration? \n", "\n", "$$\n", "\\begin{aligned}\n", "\\int_{x}\\int_{y} f(x, y) dx dy .\n", "\\end{aligned}\n", "$$\n", "\n", "The product rule approximates the integral with the following sum:\n", "\n", "$$\n", "\\begin{aligned}\n", "\\sum_{i_x = 1}^m \\sum_{i_y = 1}^m \\omega_{i_x} \\omega_{i_y} f(x_{1} y_{1}) .\n", "\\end{aligned}\n", "$$\n", "\n", "A difficulty of this approach is the curse of dimensionality as the number of nodes inreases exponentially with the number of dimensions.\n" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "\u001b[0;31mSignature:\u001b[0m \u001b[0mquadrature_gauss_legendre_two\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mf\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0ma\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mb\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mn\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m10\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mSource:\u001b[0m \n", "\u001b[0;32mdef\u001b[0m \u001b[0mquadrature_gauss_legendre_two\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mf\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0ma\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mb\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mn\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m10\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;34m\"\"\"Return quadrature gauss legendre example.\"\"\"\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mn_dim\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msqrt\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mn\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mxvals\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mweight_uni\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpolynomial\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlegendre\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mleggauss\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mn_dim\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mxvals_transformed\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mb\u001b[0m \u001b[0;34m-\u001b[0m \u001b[0ma\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m*\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mxvals\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0;36m1.0\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m/\u001b[0m \u001b[0;36m2.0\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0ma\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mweights\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtile\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnan\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mn_dim\u001b[0m \u001b[0;34m**\u001b[0m \u001b[0;36m2\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mfvals\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtile\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnan\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mn_dim\u001b[0m \u001b[0;34m**\u001b[0m \u001b[0;36m2\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mcounter\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mi\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mx\u001b[0m \u001b[0;32min\u001b[0m \u001b[0menumerate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mxvals_transformed\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mj\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m \u001b[0;32min\u001b[0m \u001b[0menumerate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mxvals_transformed\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mweights\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mcounter\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mweight_uni\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m*\u001b[0m \u001b[0mweight_uni\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mj\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mfvals\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mcounter\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mf\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mcounter\u001b[0m \u001b[0;34m+=\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mb\u001b[0m \u001b[0;34m-\u001b[0m \u001b[0ma\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m/\u001b[0m \u001b[0;36m2\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m**\u001b[0m \u001b[0;36m2\u001b[0m \u001b[0;34m*\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msum\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mweights\u001b[0m \u001b[0;34m*\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0marray\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfvals\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mFile:\u001b[0m ~/external-storage/sciebo/office/OpenSourceEconomics/teaching/scientific-computing/course/lectures/integration/integration_algorithms.py\n", "\u001b[0;31mType:\u001b[0m function\n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "??quadrature_gauss_legendre_two" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Monte Carlo integration\n", "\n", "Naive Monte Carlo integration uses random sampling of a function to numerically compute an estimate of its integral. We can approximate this integral by averaging $N$ samples of the function $f$ drawn from a uniform distribution between $a$ and $b$.\n", "\n", "$$\n", "\\begin{aligned}\n", "\\int_a^b f(x) dx \\approx (b - a) \\frac{1}{N} \\sum_{i = 1}^N f(x_i)\n", "\\end{aligned}\n", "$$\n", "\n", "Why?\n", "\n", "$$\n", "\\begin{aligned}\n", "E\\left[ (b - a) \\frac{1}{N} \\sum_{i = 1}^N f(x_i)\\right] & = (b - a) \\frac{1}{N} \\sum_{i = 1}^N E\\left[f(x_i)\\right] \\\\\n", "& = (b - a) \\frac{1}{N} \\sum_{i = 1}^N\\left[\\int_a^b f(x) \\frac{1}{b - a} dx\\right] \\\\\n", "& = \\frac{1}{N} \\sum_{i = 1}^N \\int_a^b f(x) dx \\\\\n", "& = \\int_a^b f(x) dx. \n", "\\end{aligned}\n", "$$\n" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "\u001b[0;31mSignature:\u001b[0m \u001b[0mmonte_carlo_naive_one\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mf\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0ma\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mb\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mn\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m10\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mseed\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m123\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mSource:\u001b[0m \n", "\u001b[0;32mdef\u001b[0m \u001b[0mmonte_carlo_naive_one\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mf\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0ma\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mb\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mn\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m10\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mseed\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m123\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;34m\"\"\"Return naive monte carlo example.\"\"\"\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrandom\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mseed\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mseed\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mxvals\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrandom\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0muniform\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msize\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mn\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mfvals\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtile\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnan\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mn\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mweights\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtile\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1\u001b[0m \u001b[0;34m/\u001b[0m \u001b[0mn\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mn\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mscale\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mb\u001b[0m \u001b[0;34m-\u001b[0m \u001b[0ma\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mi\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mxval\u001b[0m \u001b[0;32min\u001b[0m \u001b[0menumerate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mxvals\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mfvals\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mf\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0ma\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mxval\u001b[0m \u001b[0;34m*\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mb\u001b[0m \u001b[0;34m-\u001b[0m \u001b[0ma\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mscale\u001b[0m \u001b[0;34m*\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msum\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mweights\u001b[0m \u001b[0;34m*\u001b[0m \u001b[0mfvals\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mFile:\u001b[0m ~/external-storage/sciebo/office/OpenSourceEconomics/teaching/scientific-computing/course/lectures/integration/integration_algorithms.py\n", "\u001b[0;31mType:\u001b[0m function\n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "??monte_carlo_naive_one" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Monte Carlo integration only converges very slowly. Let's consider our smooth benchmarking example from earlier and compare the naive Monte Carlo approach to the quadrature methods." ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plot_naive_monte_carlo_error(max_nodes=200)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Naive Monte Carlo integration differs from our earlier methods as the approximation itself is a random variable. How about the level of randomness at a given number $(n = 50)$ of integration nodes? " ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plot_naive_monte_carlo_randomness()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "However, Monte Carlo integration is particular useful when tackling multidimensional integrals. Let's consider the computation of a two dimensional integral going forward." ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plot_naive_monte_carlo(100)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Quasi-Monte Carlo employ deterministic sequences of nodes $x_i$ with the property that\n", "\n", "$$\n", "\\begin{aligned}\n", "\\lim_{n \\rightarrow \\infty} \\frac{b - a}{n} \\sum_{i=1}^n f(x_i)= \\int_{a}^b f(x) dx.\n", "\\end{aligned}\n", "$$\n", "\n", "Deterministic sequences of nodes chosen to fill space in a regular manner typically provide more accurate integration approximations than pseudo-random sequences. These sequences are readily available in the [chaospy](chaospy.readthedocs.io) package. The documentation of the package also includes a tutorial on [Monte Carlo integration](https://chaospy.readthedocs.io/en/master/tutorials/monte_carlo_integration.html)." ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plot_quasi_monte_carlo(3)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Otherwise, all looks pretty similar to our earlier implementation. Note that the default rule actually takes us back to the naive Monte Carlo method." ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "\u001b[0;31mSignature:\u001b[0m \u001b[0mmonte_carlo_quasi_two_dimensions\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mf\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0ma\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mb\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mn\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m10\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mrule\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m'random'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mSource:\u001b[0m \n", "\u001b[0;32mdef\u001b[0m \u001b[0mmonte_carlo_quasi_two_dimensions\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mf\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0ma\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mb\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mn\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m10\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mrule\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m\"random\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;34m\"\"\"Return Monte Carlo example (two-dimensional).\u001b[0m\n", "\u001b[0;34m\u001b[0m\n", "\u001b[0;34m Corresponds to naive Monthe Carlo for `rule='random'`. Restricted to same\u001b[0m\n", "\u001b[0;34m integration domain for both variables.\u001b[0m\n", "\u001b[0;34m \"\"\"\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mdistribution\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mcp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mJ\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mUniform\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0ma\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mb\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mUniform\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0ma\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mb\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0msamples\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mdistribution\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msample\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mn\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mrule\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mrule\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mT\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mvolume\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mb\u001b[0m \u001b[0;34m-\u001b[0m \u001b[0ma\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m**\u001b[0m \u001b[0;36m2\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mfvals\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtile\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnan\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mn\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mweights\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtile\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1\u001b[0m \u001b[0;34m/\u001b[0m \u001b[0mn\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mn\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mi\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mxval\u001b[0m \u001b[0;32min\u001b[0m \u001b[0menumerate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msamples\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mfvals\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mf\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mxval\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mvolume\u001b[0m \u001b[0;34m*\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msum\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mweights\u001b[0m \u001b[0;34m*\u001b[0m \u001b[0mfvals\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mFile:\u001b[0m ~/external-storage/sciebo/office/OpenSourceEconomics/teaching/scientific-computing/course/lectures/integration/integration_algorithms.py\n", "\u001b[0;31mType:\u001b[0m function\n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "??monte_carlo_quasi_two_dimensions" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's consider the following test function from Genz (1984)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### _Exercises_\n", "\n", "1. What are the properties of the function?\n", "2. Compare the performance naive and quasi Monte Carlo integration routines for $u = (0.5, 0.5)$ and $a = (5, 5)$ over the two-dimensional unit cube.\n", "3. How does Gauss-Legendre quadrature perform?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Applying the integration routines to functions with other input arguments can be achieved with some small modifications. Here we pass in our benchmarking function without any default arguments to a modified naive Monte Carlo integration routine." ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [], "source": [ "def genz_discontinuous_no_defaults(x, u, a):\n", " if x[0] > u[0] or x[1] > u[1]:\n", " return 0\n", " else:\n", " return np.exp((a * x).sum())\n", "\n", "\n", "def monte_carlo_naive_with_args(f, args=(), a=0, b=1, n=10, seed=128):\n", " np.random.seed(seed)\n", " xvals = np.random.uniform(low=a, high=b, size=2 * n).reshape(n, 2)\n", " volume = (b - a) ** 2\n", "\n", " fvals = np.tile(np.nan, n)\n", " weights = np.tile(1 / n, n)\n", "\n", " for i, xval in enumerate(xvals):\n", " # Here is the main modification that passes in the arguments by position now.\n", " fvals[i] = f(xval, *args)\n", "\n", " return volume * np.sum(weights * fvals)\n", "\n", "\n", "u, a = (0.5, 0.5), (5, 5)\n", "rslt = monte_carlo_naive_with_args(genz_discontinuous_no_defaults, args=(u, a))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Resources" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Research\n", "\n", "* https://papers.ssrn.com/sol3/papers.cfm?abstract_id=1870703\n", "\n", "* https://www.sciencedirect.com/science/article/abs/pii/S0304407607002552\n", "\n", "* https://arxiv.org/abs/1908.04110\n", "\n", "* Philip J. Davis and Philip Rabinowitz, Methods of Numerical Integration.\n", "\n", "* https://www.sciencedirect.com/science/article/pii/S0021999185712090\n", "\n", "* https://ins.uni-bonn.de/media/public/publication-media/sparse_grids_nutshell.pdf?pk=639" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Other resources\n", "\n", "* http://hplgit.github.io/prog4comp/doc/pub/p4c-sphinx-Python/._pylight004.html\n", "\n", "* http://people.duke.edu/~ccc14/cspy/15C_MonteCarloIntegration.html\n", "\n", "* https://www.math.ubc.ca/~pwalls/math-python/integration/integrals/\n", "\n", "* https://guido.vonrudorff.de/wp-content/uploads/2020/05/NumericalIntegration.pdf\n", "\n", "* https://readthedocs.org/projects/mec-cs101-integrals/downloads/pdf/latest/\n", "\n", "### References\n", "\n", "* Genz, A. (1984, September). Testing multidimensional integration routines. In Proc. of international conference on Tools, methods and languages for scientific and engineering computation (pp. 81-94). Elsevier North-Holland, Inc.." ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.8.8" } }, "nbformat": 4, "nbformat_minor": 4 }