{ "cells": [ { "cell_type": "markdown", "id": "ba853562", "metadata": {}, "source": [ "# CCModel and CCOutput — Base Class Basics\n", "\n", "**Author:** Jordan Landers \n", "**Date:** last-modified\n", "\n", "_Description:_ Base class interface: construction, `param_values`, integration, `CCOutput`, callable parameters, `register_forcing`, `set_function`, copying, `to_pyleo`\n", "\n", "_Abstract_\n", "> Every model in ClimateCreatures inherits from `CCModel`. `CCModel.integrate()` returns a `CCOutput` object that carries the full\n", "trajectory and exposes output-focused operations. This notebook covers the shared interface both classes provide. Examples use `Stommel` as a concrete stand-in, but the same patterns apply to every model.\n", "\n", "**Keywords:** CCModel, CCOutput, param_values, integrate, register_forcing, set_function, to_pyleo, callable parameters, base class" ] }, { "cell_type": "code", "execution_count": 24, "id": "ee2b9b47", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{}\n" ] } ], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "import climatecritters as cc\n", "from climatecritters.model_critters.stommel import Stommel" ] }, { "cell_type": "markdown", "id": "7837a9cc", "metadata": {}, "source": [ "## CCModel" ] }, { "cell_type": "markdown", "id": "c7cc3195", "metadata": {}, "source": [ "### Construction and `param_values`\n", "\n", "Model parameters are stored in `param_values` — a dict mapping names to constants,\n", "callables, or `Forcing` objects. Every subclass populates it at `__init__`." ] }, { "cell_type": "code", "execution_count": 25, "id": "70a273de", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "param_values: {'alpha': 1.0, 'beta': 1.0, 'k': 1.0, 'E': 0.3, 'lambda_T': 1.0, 'lambda_S': 1.0, 'T_star': 1.0, 'S_star': 0.0}\n", "{}\n" ] } ], "source": [ "# Construct with keyword arguments\n", "model = Stommel(E=0.3, T_star=1.0, S_star=0.0)\n", "\n", "print(\"param_values:\", model.param_values)" ] }, { "cell_type": "markdown", "id": "b5961e5e", "metadata": {}, "source": [ "### Exploring a model: `.list()` and `.doc()`\n", "\n", "`.list(target)` returns the names of a category; `.doc(target)` pretty-prints\n", "descriptions parsed from the class docstring, alongside current values.\n", "\n", "Valid targets: `\"parameters\"`, `\"state_variables\"`, `\"diagnostic_variables\"`." ] }, { "cell_type": "code", "execution_count": 26, "id": "6c2de2b6", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "parameters: ['alpha', 'beta', 'k', 'E', 'lambda_T', 'lambda_S', 'T_star', 'S_star']\n", "state_variables: ['T', 'S']\n", "diagnostic_variables: ['q']\n", "{}\n" ] } ], "source": [ "# What parameters does this model have?\n", "print(\"parameters: \", model.list(\"parameters\"))\n", "print(\"state_variables: \", model.list(\"state_variables\"))\n", "print(\"diagnostic_variables:\", model.list(\"diagnostic_variables\"))" ] }, { "cell_type": "code", "execution_count": 27, "id": "64b4af25", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "Parameters — Stommel\n", "═════════════════════════════════════════════════════════════════════════════\n", "Name Current value Description\n", "─────────────────────────────────────────────────────────────────────────────\n", "alpha 1 Thermal expansion coefficient. Default 1.0.\n", "beta 1 Haline contraction coefficient. Default 1.0.\n", "k 1 Hydraulic constant controlling overturning\n", " sensitivity. Default 1.0.\n", "E 0.3 Net evaporation-minus-precipitation freshwater flux.\n", " Default 0.0.\n", "lambda_T 1 Thermal restoring rate. Default 1.0.\n", "lambda_S 1 Saline restoring rate. Default 1.0.\n", "T_star 1 Equilibrium temperature contrast. Default 1.0.\n", "S_star 0 Equilibrium salinity contrast. Default 0.0.\n", "═════════════════════════════════════════════════════════════════════════════\n", "\n", "{}\n" ] } ], "source": [ "# Full descriptions + current values for parameters\n", "model.doc(\"parameters\")" ] }, { "cell_type": "code", "execution_count": 28, "id": "68936e63", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "State variables — Stommel\n", "══════════════════════════════════════════════════════════════════════\n", "Name Kind Description\n", "──────────────────────────────────────────────────────────────────────\n", "T integrated \n", "S integrated \n", "══════════════════════════════════════════════════════════════════════\n", "\n", "{}\n" ] } ], "source": [ "# State variable descriptions\n", "model.doc(\"state_variables\")" ] }, { "cell_type": "markdown", "id": "379c22d3", "metadata": {}, "source": [ "### Updating parameters\n", "\n", "Two equivalent ways to change a parameter after construction:" ] }, { "cell_type": "code", "execution_count": 29, "id": "9ecd758b", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "E after direct assignment: 0.5\n", "E after reset: 0.3\n", "{}\n" ] } ], "source": [ "# Option 1: direct attribute assignment — syncs param_values automatically\n", "model.E = 0.5\n", "print(\"E after direct assignment:\", model.param_values[\"E\"])\n", "\n", "# Option 2: set_param_value — also adds keys not present at init\n", "model.set_param_value(\"E\", 0.3) # reset\n", "print(\"E after reset: \", model.param_values[\"E\"])" ] }, { "cell_type": "markdown", "id": "bbeca382", "metadata": {}, "source": [ "### Callable parameters\n", "\n", "Any `param_values` entry can be a callable instead of a scalar. The dispatcher\n", "inspects the signature and accepts `(t)`, `(t, state)`, or `(t, state, model)`.\n", "The first argument must be named `t` or `time`." ] }, { "cell_type": "code", "execution_count": 30, "id": "e3925760", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{}\n" ] } ], "source": [ "# E as a callable — gradual freshwater increase\n", "def E_ramp(t):\n", " return np.clip(0.012 * t, 0.0, 0.6)\n", "\n", "model_callable = Stommel(E=E_ramp, T_star=1.0, S_star=0.0)\n", "out_callable = model_callable.integrate(t_span=(0, 50), y0=[1.0, 0.0], method=\"RK45\")" ] }, { "cell_type": "code", "execution_count": 31, "id": "8cb645df", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAxYAAAHqCAYAAACZcdjsAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjksIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvJkbTWQAAAAlwSFlzAAAPYQAAD2EBqD+naQAAXStJREFUeJzt3Qt8VOWd//FfMrnfA7mRkJCAdxFQbiIiWlHaWle0dvlTt1Bqd7cqVKW2gqtQ7FZqrRarVKrb2ssuhepW21oXqwgqiqKoLaCAQm4EEhIg9/tk/q/fQ+Y4E4YwISFnLp/363WczDlnJmfOjOF853l+zxPhcrlcAgAAAAD9ENmfBwMAAAAAwQIAAADAgKDFAgAAAEC/ESwAAAAA9BvBAgAAAEC/ESwAAAAA9BvBAgAAAEC/ESwAAAAA9BvBAgAAAEC/ESwA4DS7/PLLzeJWUlIiERER8utf/7rPz/X973/fPLampuak+xYWFsrXv/71Pv8OBK8f//jHcs4550hXV9dJ9128eLFMnjx5UI4LQHggWABAD3v37pV///d/l5EjR0pcXJykpKTI1KlT5dFHH5WWlhbOV5has2aNrFy5clB/pwZSDZK+Fg0Qnurr6+XBBx+Uu+++WyIjj/3z3tzcbMLopk2bjnvuO+64Q/7+97/Ln//850F7PQBCW5TdBwAAgeSvf/2rfOUrX5HY2FiZO3eujB49Wtrb22Xz5s3y3e9+V3bu3ClPPvmk3YcJm4LFjh07zAX5YBo+fLisWLHiuPWpqale93/1q19JZ2enzJkzx1qnwWL58uXmZ89WM5WTkyPXXXed/OQnP5F/+qd/Om3HDyB8ECwAoFtxcbH8v//3/2TEiBHy6quvyrBhw6xzc9ttt8mnn35qggdOn9bWVomJibG+cQ912mVJg6u2jJ2IBoh/+Zd/OelzPf300yYg9PZcPf3zP/+zCdL79u0zLXQA0B/h8ZcbAPzsn97Y2Ci//OUvvUKF2xlnnCG3336714Xc5z73OcnKyjItHOedd5488cQTp3Su//GPf5h6CHf3K/02+Rvf+IYcPnzY5/5aY6EXhdpNa+jQoea49KL8ZGpra8037vn5+eaY9TVp9xl/+uRrzcaXvvQl+dvf/ibjxo0zx6mv+Y9//KPXfkeOHJG77rpLLrjgAklKSjLH+IUvfMF0u/Gk3XO0S8/atWvl3nvvlby8PElISDBdevr6HH/4wx/MN/P6HMnJyXLjjTdKXV2dtLW1mder75E+z/z58826nv77v/9bxo8fL/Hx8TJkyBATMMvLy63t+m2/hsrS0lKrK5KeDzd9zmXLlpnzqedVz+/3vve9436XPm7BggXyP//zP3L++eebfdevXy8DEYr1MzRjxgyvWp7MzEzzs54b93Fr1yg39/5/+tOf+n0MAECLBQB0+8tf/mIu7C+55BK/zomGCL041G+Jo6KizONvvfVWc5GuLRx98fLLL5tvjfXCV0OFu8uV3r799tvmgtCThgq9sNUuMrr9Zz/7mRw9elR++9vfnvB3aLeY6dOnS0VFhakhKSgokLfeekuWLFkiBw8e9Kt+4JNPPpHZs2fLt771LZk3b54JV/qNt14cX3XVVWYffR3PP/+8WV9UVCRVVVXyi1/8wvzujz76SHJzc72e8wc/+IFppdAgoRfi+rPu15fn0POgoUALkrVl6bHHHpPo6GjT8qHnRS+m9Txpwbw+39KlS63H/vCHP5T77rvPnNNvfvObUl1dbR5/2WWXyQcffCBpaWnyH//xHyao7N+/X37605+ax2lQUfp+62dAu8v927/9m5x77rmyfft2s9+ePXvM6/CkrWEahDRgZGRkeAUUX5xOp89ifX29iYmJ5md9H9VFF11kbddQoZ/RW265Ra6//nq54YYbzPoxY8Z4tYaMGjVK3nzzTbnzzjtP8u4DwEm4AACuuro6l/5JvO666/w+G83NzcetmzlzpmvkyJFe66ZPn24Wt+LiYvO7nn766V6f6/e//73Z7/XXX7fWLVu2zKz7p3/6J699b731VrP+73//u7VuxIgRrnnz5ln3f/CDH7gSExNde/bs8Xrs4sWLXQ6Hw1VWVtbr69Xn09/xv//7v17nbdiwYa4LL7zQWtfa2upyOp1ej9XXHBsb67r//vutdRs3bjTPp+er5+vv63OMHj3a1d7ebq2fM2eOKyIiwvWFL3zB6zmmTJliXodbSUmJee0//OEPvfbbvn27Kyoqymv9Nddc4/VYt9/97neuyMhI1xtvvOG1fvXq1ebY3nzzTWud3td9d+7c6fKHfm70Mb6Wf//3f7f2u/fee826hoYGr8dXV1eb9fq5OZGrr77ade655/p1PADQG7pCAUD3iDpKu9H4S78xdtNvs/VbZf1GXb+x1/t94flc2qVJn+viiy82999///3j9u/ZIrJw4UJz++KLL57wdzzzzDMybdo0SU9PN8/vXrQ7jH4r/vrrr5/0OLWlQL/9dtMuSlrkrt/sV1ZWmnXavcddI6HPq9259Nv9s88+2+dr0ZYPz9d/Ks+hx6AtFG46jKpex2t3Mk+6Xrs4aZGz0m5c2uKgrRWe50Rbjc4880zZuHHjSc+JnldtpdBRmjyfQ7vJqZ7PoZ8R7ULmL23R0BatnotnEbmeH201c7ei9IX78wAA/UVXKADovkBWDQ0Nfp8P7T6i/eq3bNliuhl50mDRc9Se3mhNgfaD13qDQ4cOHfdcPelFryftzqIX4tqvvrduTNoP393vvqeev9cXrSHo2S3rrLPOMrf6u/WCXC/UdWjen//856bvvwYDN60H6Um7JvXU1+fQbl2e3Odeax16rtfn1nOqz6PnRANIz/Pp5hlWTkSf4+OPP/b7vPp6vb3R7k6etRMDTV9/z/cUAE4FwQIAuoOFfhuvw4n6O9fFlVdeab6lfuSRR8wFrNYGaIuB9q33pxjak35jrv3kdUhbLYzWb571OT7/+c/79Vz+XBjq82gdhBYV++IOCP31wAMPmJoFbS3Q+gkthtbQo9+w+3otPVsrTuU5HA6Hz2M50fpjvZKOnRM9d//3f//nc19/WgD0ObTIXD8HvvQMN75eb39pSNJWGA3GfWl1U1qDorUeANBfBAsA6KYjHmnBtLZATJkypdfzooXaWmisk4t5flvuT9cZXxd2GzZsMC0WnkXF+k34ieg2z2++tWBZL3B7KwTWVg0d9ao/337r7+n5DbcWKCv373722WfliiuuMKNr9RyRyt8L2IF4Dn/oOdHXo+fyZMHqROFNn0NHq9Kgadc3/+7J8rR1x7M425/j0ceMHTv2tB4fgPBAjQUAdNNv8rXbiY4MpKMQ+Wql0O45yv3ttvubb6Xda3SUpL7y9Vyqt1GaVq1a5XVfRzFSOiRrb60iGppeeuml47bpBbu77qA3Bw4ckOeee86rNkVHotJWFu0G5X49PV+L1iHoaFT+Gojn8IeOlKS/S0Ndz9+n9z2H+9XPhq9uaXpe9bieeuqp47bpTO1NTU1yurmD8Hvvvee1Xofvdb+/vujr0c+1vyOhAUBvaLEAAI9vnnV2ZR1OVYtxPWfe1m5KemGrc02oq6++2nR9uvbaa83QrdoSoBeWOl+CDt3a125YOrSpzqPR0dFh5mLQuSL0m+QT0W06xKl2ldKwoPMwfPWrX+31m2ftZqUtLNoyo69D523Qi14dGlVbCLRG4mStAfqt/s033yzvvvuuZGdnm9meNYR5Bip9/vvvv98MnasXrPr8Om9DXyZgG4jn8Pc9/8///E8z5K6+/lmzZpmuRHp+NUDp8LE6DK7S87Vu3TpZtGiRTJw40XST0vf/a1/7mhk+Vofg1RarqVOnmpqQXbt2mfUa5CZMmHDKx6gX//r++uKeOE/Pi35WX3nlFa+Cde12pYXietz63mmXMt1PF6X7a4DSGbgBoN96HTMKAMKQDsf6r//6r67CwkJXTEyMKzk52TV16lTXY489ZoZBdfvzn//sGjNmjCsuLs7s++CDD7p+9atfmeE9dWjUvgw3u3//ftf111/vSktLc6Wmprq+8pWvuA4cOHDcUKHu4WY/+ugj14033miOLT093bVgwQJXS0uL1+voOdys0uFIlyxZ4jrjjDPMa8vIyHBdcsklrp/85Cdew7X6os+nQ66+9NJL5nXr0K/nnHOO65lnnvHaT8/Rd77zHTMMbXx8vDl3W7ZsOe48uIeK7fn4gXgOPbe6/t133/Va7z5/OgyrJx1C99JLLzXD8eqir+u2225z7d6929qnsbHR9dWvftW8R/ocnkPP6rnT9//8888350Xfk/Hjx7uWL19uhuR108fp8/qrt+Fme/4T/sgjj7iSkpKOG7r3rbfeMsei73fPz9Ps2bPN6waAgRCh/+l/PAEAhDqtodBvul944QW7DwUnaNnQlgtt+dJWpZPR4YG1tkRHIqPFAsBAoMYCAIAQoEPpap3QQw895NdIYlrDo6NZESoADBRaLAAAfqHFAgDQG1osAAAAAPQbLRYAAAAA+o0WCwAAAAD9RrAAAAAA0G9hN0GejpShM8fqBEgRERF2Hw4AAAAQsHRmioaGBsnNzZXIyN7bJMIuWGioyM/Pt/swAAAAgKBRXl4uw4cP73WfsAsW2lLhPjkpKSl2Hw4AAAAQsOrr682X8u5r6N6EXbBwd3/SUEGwAAAAAE7OnxICircBAAAA9BvBAgAAAEDwB4tVq1ZJYWGhxMXFyeTJk2Xr1q297l9bWyu33XabDBs2TGJjY+Wss86SF198cdCOFwAAAECA1VisW7dOFi1aJKtXrzahYuXKlTJz5kzZvXu3ZGVlHbd/e3u7XHXVVWbbs88+K3l5eVJaWippaWm2HD8AAACAYyJcOjitTTRMTJw4UR5//HFrjgmtOl+4cKEsXrz4uP01gDz00EOya9cuiY6OPuXK9tTUVKmrq6N4GwAAAAHtaEuLJMXESLTDYcvv78u1s21dobT1Ydu2bTJjxozPDiYy0tzfsmWLz8f8+c9/lilTppiuUNnZ2TJ69Gh54IEHxOl0nvD3tLW1mRPiuQAAAACBqK2zUzYWF8t/bNggk556SjIeekg2l5VJMLCtK1RNTY0JBBoQPOl9bZHwZd++ffLqq6/KTTfdZOoqPv30U7n11lulo6NDli1b5vMxK1askOXLl5+W1wAAAAD0R5fLJdurquSVffvk5X375PXSUmnp7PTaZ9vBg3JFUVHAn+igmsdCu0ppfcWTTz4pDodDxo8fLxUVFaZ71ImCxZIlS0wdR89JPgAAAAA7lNfVWUFiQ3GxHGpq8tqek5QkM0aOlBlFReY2L0gmdbYtWGRkZJhwUFVV5bVe7+fk5Ph8jI4EpbUV+ji3c889VyorK03XqpiYmOMeoyNH6QIAAADYoa61VTaVlJggoYFi9+HDXtsTo6NlemGhCRJXjRol52dm+jUhXaCxLVhoCNAWhw0bNsisWbOsFgm9v2DBAp+PmTp1qqxZs8bsp/UYas+ePSZw+AoVAAAAwGBrdzrlnf37rSCxtaJCnB7jJUVGRMikvDwrSFw8fLjE2FScHTJdobSL0rx582TChAkyadIkM9xsU1OTzJ8/32yfO3euGVJW6yTULbfcYkaQuv32283IUZ988okp3v72t79t58sAAABAGNNBVndWV1vdm14rKZGmjg6vfc4aOlSu0u5NI0fK5YWFkhYXJ6HG1mAxe/Zsqa6ulqVLl5ruTOPGjZP169dbBd1lZWVWy4TS2oiXXnpJ7rzzThkzZowJHRoy7r77bhtfBQAAAMLNgYYGK0jobWVjo9f2zISEY3US3UtBaqqEOlvnsbAD81gAAACgrxra2uS10lJ5ee9eeaW4WD6qrvbaHh8VJZeNGGFChLZMXJCdbbo8hdO1c1CNCgUAAAAMhg6nU949cMAKEm/v3y+dXV3Wdo0ME3JzrSAxJT9f4qLC+9I6vF89AAAA0F0noaM1uYOETlLX0N7udW5GpadbQULnlRgSH8+580CwAAAAQFiqamw09REaJPR2f32913YNDlfqyE3ddRJF6em2HWswIFgAAAAgLDS1t5uZrd1F19sPHfLaHutwyKUFBVaQuHDYsJCokxgsBAsAAACEJK2J2KZ1Et0jN71VXi4dHnUS6sKcHCtIaKiIj4627XiDHcECAAAAIVMn8emRI1aQeLW4WOra2rz2GZGaagWJzxUVSWZiom3HG2oIFgAAAAha1U1NsqG7RkIDRVldndd2nYhOA4R7lmstwI6ge9NpQbAAAABA0Gjp6JA3ysqsIPFhZaXX9ujISJlaUGAFifHDhonDY8JlnD4ECwAAAAQsZ1eXfFBZaQWJN8vKpM3p9NpnTHa21b1pWkGBJMbE2Ha84YxgAQAAgICy7+hRK0honcSRlhav7cNTUqwgocPBZicl2Xas+AzBAgAAALbS4KABwj05nQYLTymxsXJFYaE1Od1ZQ4dSJxGACBYAAAAYVK2dnWboV3eQ0CFhXR7boyIjZcrw4VaQmJiXZ9YhsBEsAAAAcFp1uVzyj6oqK0i8UVoqLZ2dXvucn5lpBYnLRoyQ5NhY3pUgQ7AAAADAgNNhX91BYsO+fVLd3Oy1fVhSkhUkrhw5UnKTk3kXghzBAgAAAP1W29oqGz3mk/jkyBGv7YnR0XJ5YaFVdH1eZiZ1EiGGYAEAAIA+a3c6ZYvWSXTPcv3ugQOmy5ObIyJCJmudRPd8EpPy8iTG4eBMhzCCBQAAAE7K5XLJjkOHrCDxWmmpNHd0eO1zTkaGFSSmjxghqXFxnNkwQrAAAACAT/vr602IcC9VTU1e27MSEz+rkygqkvzUVM5kGCNYAAAAwKhva5NNJSVWncSumhqvM5MQHW1GbHLXSVyQlUWdBCwECwAAgDDV4XTKOxUVVpB4Z/9+cXrUSURGRMiE3FwrSOjcErFRXD7CNz4ZAAAAYVQn8XFNjRUktHWisb3da58zhgyxgoTOdp0eH2/b8SK4ECwAAABC2MGGBtlQXGwVXR9oaPDanpGQYOojNEjoUpiWZtuxIrgRLAAAAEKItkC85lEnsbO62mt7XFSUTCsosFolxubkmC5PQH8RLAAAAIJYZ1eXvOtRJ7Fl/36zzk0jw0XDhllBYmpBgQkXwEDjUwUAABBkdRJ7Dh+2gsTGkhIzmpOnorQ0K0h8rqhIhiYk2Ha8CB8ECwAAgAB3qKlJNnQHCQ0U5fX1XtvT4+LkSg0S3ZPTjUxPt+1YEb4IFgAAAAFGZ7R+o7TUChJ/r6ry2h7jcMilBQVWkLgwJ0cckZG2HS+gCBYAAAA2c3Z1yfsHD1pB4s3ycml3Or32GZeTYwUJDRU6WR0QSAgWAAAANtRJ7D161IQIXV4tLpajra1e+xSkpnrVSWQlJvI+IaARLAAAAAZBTXOzCRAv790rrxQXS0ltrdf21NhYEyA0SGig0InqIhgGFkGEYAEAAHAatHR0mC5N7iDxwcGD4vLYHh0ZKZfk51tBYnxurkRRJ4EgRrAAAAAYAF0ul3xYWWkFic1lZdLa2em1zwVZWVaQmDZihCTFxHDuETIIFgAAAKdIuzO5g4QOB3u4pcVre25ysgkRuuhwsDlJSZxrhCyCBQAAgJ+OtrSYOgn35HRagO0pOSZGLi8stIquz8nIoE4CYYNgAQAAcAJtnZ3yVnm5FSS2HTxoujy5OSIi5OLhw60gMSkvT6IdDs4nwhLBAgAAoJuGhu1VVVaQeL20VFp61Emcl5lp5pPQIDG9sFBSYmM5fwDBAgAAhLvyujprYroNxcVyqKnJa7vWRbgLrq8sKpK8lBTbjhUIZLRYAACAsFLX2iobS0qsVok9hw97bU+MjjYtEe7uTednZlInAfiBYAEAAEJau9Mpb+/fbwWJrRUVXnUSkRERpjbCHSS0ZiKGOgmgzwgWAAAgpLhcLtlZXW0FiddKSqSpo8Nrn7OGDrWChI7ilBYXZ9vxAqGCYAEAAIJeRX29qY9w10pUNjZ6bc9MSDAhwr0UpKbadqxAqCJYAACAoNPQ1iavlZZak9N9VF3ttT0+KkouGzHCKrq+IDvbdHkCcPoQLAAAQMDrcDpNbYS2RmiQ0JqJzq4ua7tGhgm5uVaQmJKfL3FRXOYAg4n/4wAAQEDWSeyqqbHqJDaVlEhDe7vXPqPS060gcUVRkQyJj7fteAEQLAAAQIDQuogN3UFCA0VFQ4PXdg0OOo+Eu+i6KD3dtmMFcDxaLAAAgC2a2tvNzNbuILH90CGv7bEOh1xaUGAFiQuHDaNOAghgBAsAADAotCZi24EDVpB4q7xcOjzqJNRFw4bJDG2VGDVKpubnS3x0NO8OECQCIlisWrVKHnroIamsrJSxY8fKY489JpMmTTrp49auXStz5syR6667Tp5//vlBOVYAAOB/ncSnR45YQeLV4mKpa2vz2mdEaqppkdAg8bmiIslISOD0AkHK9mCxbt06WbRokaxevVomT54sK1eulJkzZ8ru3bslKyvrhI8rKSmRu+66S6ZNmzaoxwsAAE6suqnJzCfhLrouq6vz2q4T0WmAcHdv0gLsCIaBBUJChEu/TrCRhomJEyfK448/bu53dXVJfn6+LFy4UBYvXuzzMU6nUy677DL5xje+IW+88YbU1tb63WJRX18vqampUldXJykpKQP6WgAACDctHR3yRlmZFSQ+rKz02h4dGSlTPeokxg8bJo7ISNuOF0Df9OXa2dYWi/b2dtm2bZssWbLEWhcZGSkzZsyQLVu2nPBx999/v2nNuPnmm02w6E1bW5tZPE8OAAA4Nc6uLvmgstIKEm+WlUmb0+m1z5jsbCtITCsokMSYGE43EAZsDRY1NTWm9SE7O9trvd7ftWuXz8ds3rxZfvnLX8qHH37o1+9YsWKFLF++fECOFwCAcLTv6FErSGidxJGWFq/tw1NSrCChw8FmJyXZdqwAwrjGoi8aGhrka1/7mjz11FOSkZHh12O0NURrODxbLLSrFQAA8O1wc7NsLCmRl/fuNbNca7DwlBIbK1cUFlqT0501dCh1EgDsDRYaDhwOh1RVVXmt1/s5OTnH7b93715TtH3ttdda67QmQ0VFRZmC71GjRnk9JjY21iwAAMC31s5O06XJ3Srx/sGD4lmAGRUZKVOGD7daJSbm5Zl1ABAwwSImJkbGjx8vGzZskFmzZllBQe8vWLDguP3POecc2b59u9e6e++917RkPProo7REAADghy6XS/7uUSehxdcaLjydn5lpBYnphYWSRJ0EgEDvCqXdlObNmycTJkwwc1focLNNTU0yf/58s33u3LmSl5dnaiXi4uJk9OjRXo9PS0sztz3XAwCAz5TW1lpBQoeDrWlu9jo9w5KSzFwSOjmdholhycmcPgDBFSxmz54t1dXVsnTpUjNB3rhx42T9+vVWQXdZWZkZKQoAAPivtrVVNhYXW5PTfXLkiNd2bYG4XOskume5PjcjgzoJAME9j8VgYx4LAEAoauvslLf377eCxLsHDpguT26OiAiZPHy4FSQm5+VJtMNh6zEDCHxBM48FAAA4Nfq94I5Dh6wg8VppqTR3dHjtc05GhhUkpo8YIalxcZxuAKcNwQIAgCCxv77ehAj3UtXU5LU9KzHRGgJW55PIT0217VgBhB+CBQAAAaq+rU02ecwnsaumxmt7QnS0aYlwh4nRWVnUSQCwDcECAIAA0eF0yjsVFVaQeGf/fnF61ElERkTIxNxcK0hcPHy4xEbxTzmAwMBfIwAAbKyT+LimxgoS2jrR2N7utc+ZQ4ZYQUJHcUqPj+f9AhCQCBYAAAyigw0Nx2okiovN7YGGBq/tGQkJpj7CPTndiO75mgAg0BEsAAA4jbQF4rWSEmtyup3V1V7b46KiZFpBgRUkxubkmC5PABBsCBYAAAygzq4uebeiwgoSW/bvN+vcNDJcNGyYFSSmFhSYcAEAwY6/ZAAA9LNOYs/hw1aQ2FhSYkZz8lSUlmYFic8VFcnQhATOOYCQQ7AAAKCPDjU1ec0nUV5f77U9PS5OruwuuNYwMTI9nXMMIOQRLAAAOAmd0fr10lKrVeIfVVVe22McDrnUo07iwpwccURGcl4BhBWCBQAAPTi7umTbwYNWkHirvFzanU6vfcbl5FhBQkOFTlYHAOGMYAEACHtaJ7H36FErSLxaXCy1ra1e56UgNdUKEjocbGZiYtifNwDwRLAAAISlmuZmEyDck9OV1NZ6bU+NjTWF1u7J6c4YMkQiGAYWAAY2WHz88ceydu1aeeONN6S0tFSam5slMzNTLrzwQpk5c6Z8+ctfltjY2FN5agAATouWjg55s7zcChIfHDwoLo/t0ZGRckl+vhUkxufmShR1EgDgtwiXtv/66f3335fvfe97snnzZpk6dapMmjRJcnNzJT4+Xo4cOSI7duwwYaO+vt7sd8cddwRcwNBjS01Nlbq6OklJSbH7cAAAp0mXyyUfVlZaQeKN0lJp61EncUFWlhUkpo0YIUkxMbwfAHCK1859arHQlojvfve78uyzz0paWtoJ99uyZYs8+uij8vDDD8s999zTl18BAMApK+5RJ3G4pcVre15yslw1apTMKCoyw8HmJCVxtgHAjhaLjo4Oie7DqBd93X8w0GIBAKHjSEuLbNQ6ie75JLQA21NyTIxcoXUSRUUmUJw9dCh1EgAQCC0WniHht7/9rcyePfu4rk7t7e2m/mLu3LkBFyoAAMGtrbPTDP3qDhLvHTjgVSehNREXDx9uBYmJubkS7XDYeMQAED761GLhyeFwyMGDByUrK8tr/eHDh806Z49+rIGCFgsACK46ie1VVVaQ0EnqWjo7vfY5LzPTChLTR4yQ5ACr7QOAYHbaWiw8aR7xNeze/v37zS8HAOBUlNfVWUFCl+rmZq/tWhfhLrjW+STyGIgDAAJCn4OFDimrgUKXK6+8UqKiPnsKbaUoLi6Wz3/+8wN9nACAEFXX2iobS0qsous9hw97bU+MjpbphYXW5HTnZ2ZSJwEAoRAsZs2aZW4//PBDM2dFkseIGjExMVJYWGhGjwIAwJd2p1Pe3r/fChJbKypMlyc3R0SETMrLMyFCF62ZiKFOAgBCL1gsW7bM3GqA0OLtuLi403FcAIAQoV1nd1ZXW/NJvFZSIk0dHV776GhN7u5NlxcWSir/tgBAaAcLz7qKefPmna5jAgAEuYr6+mM1EsXF5raysdFre2ZCgtUioUsBtXkAEF7B4vzzz5elS5fKDTfcYLo9ncgnn3wijzzyiIwYMUIWL148EMcJAAhgDW1tssmjTuLjmhqv7fFRUXLZiBFWq8QF2dkS6WMAEABAmASLxx57TO6++2659dZb5aqrrpIJEyZIbm6u6Q519OhR+eijj2Tz5s2yc+dOWbBggdxyyy2n78gBALbpcDpNbYQ7SLxTUSGdXV3Wdo0ME3JzrYLrKfn5Eucx2AcAIPSc0jwWGh7WrVsnb7zxhpTqmOItLZKRkWFGjNKC7ptuuknS09MlEDGPBQD0nf5TsaumxgoS2jrR0N7utc+o9HQrSOhs10Pi4znVABDk+nLtfMoT5AUrggUA+EfrIjZ0BwkNFBUNDV7bh8bHy5UaJIqKTJgoCtAvlAAAATpB3he/+EX5/e9/b02C96Mf/Ui+9a1vSVpamjXz9rRp00y3KABA8Ghqb5fXSkutiem2HzrktT3W4ZBpWifRPcv1uJwc6iQAAKfeYuFwOOTgwYOSlZVl7mty0TktRo4cae5XVVWZugudLC8Q0WIBAMdoTcR7Bw5Y3Zu2lJdLR486iQuHDbOCxNT8fImPjub0AUAYqT+dLRY9c0iY9aQCgKClf68/PXLEhAhdNhYXS11bm9c+I1JTTZ2EBonPFRVJRkKCbccLAAguDNEBACGsuqlJNnTPJaFhoqyuzmt7WlycCRDuomstwHbPVwQAwGkNFvoPTs9/dPhHCAACQ3NHh2wuK7Nmuf6wstJre4zDYbo0uSemGz9smDgiI207XgBA6DilrlBf//rXJTY21txvbW01xduJiYnmfluPZnUAwOnj7OqSDyorrSDxZlmZtPWocRubnW1NTHdpQYEk9jLBKQAAgxYs5s2b53X/X/7lX47bZ+7cuad8QACA3u07etQKEq8WF8uRlhav7cNTUo7VSYwcabo5ZSclcUoBAIEXLJ5++unTcyQAAJ8ONzebAOGukyiurfXanhIbK1cUFlp1EmcNHUoXVQDAoKN4GwACTGtnp+nS5A4S7x88KJ7j70VFRsqU4cOtIDExL8+sAwDATgQLALBZl8slf6+stILEG2VlJlx4Oj8z0woS0wsLJYk6CQBAgCFYAIANSmtrrSChw8HWNDd7bR+WlGTmktDJ6TRMDEtO5n0CAAQ0ggUADILa1larTkKXT44c8dquLRCXe9RJnJuRQZ0EACCoECwA4DRo6+yULfv3W60S7x04YLo8uTkiImSyR53E5Lw8iXY4eC8AAEGLYAEAA0Dn+Nl+6JAVJF4vLTWT1Xk6JyPDChLaOqGjOQEAECoIFgBwivbX139WJ7Fvn1Q1NXltz05MtGa41kXnlwAAIFQRLADAT/VtbbKppMSanG5XTY3X9oToaJk+YoQ1y/XorCzqJAAAYYNgAQAn0OF0yjsVFVaQeGf/fnF61ElERkTIxNxcK0hcPHy4xEbxZxUAEJ74FxAAPOokPq6psYKEtk40trd7nZ8zhwyxgoTWSaTHx3P+AAAIlGCxatUqeeihh6SyslLGjh0rjz32mEyaNMnnvk899ZT89re/lR07dpj748ePlwceeOCE+wNAbw40NJj6CK2T0HqJg42NXtszEhKO1Uh0zycxIi2NEwoAQCAGi3Xr1smiRYtk9erVMnnyZFm5cqXMnDlTdu/eLVlZWcftv2nTJpkzZ45ccsklEhcXJw8++KBcffXVsnPnTsnLy7PlNQAIHg1tbWbEJneQ2Fld7bU9LipKLtM6iaIiM0HdmOxs0+UJAAD0LsKlbf820jAxceJEefzxx839rq4uyc/Pl4ULF8rixYtP+nin0ynp6enm8XPnzj3p/vX19ZKamip1dXWSwggtQMjr7OqSd7VOojtI6NwSus5NI8N4rZPoDhKX5OebcAEAAKRP1862/uvZ3t4u27ZtkyVLlljrIiMjZcaMGbJlyxa/nqO5uVk6OjpkyJAhp/FIAQQL/a5kz+HDVpDYWFJiRnPyNDI93QoSVxQWytCEBNuOFwCAUGFrsKipqTEtDtnZ2V7r9f6uXbv8eo67775bcvXbxhkzfG5va2szi2fqAhBaqhobZUNxsQkSupT3+P88PS5OruwuuNY6CQ0WAABgYAV1e/+PfvQjWbt2ram70HoLX1asWCHLly8f9GMDcProjNZaJ+GenO4fVVVe22McDrm0oMAKEhfm5IgjMpK3BACAUA0WGRkZ4nA4pKrHRYHez8nJ6fWxP/nJT0yweOWVV2TMmDEn3E+7WWlxuGeLhdZwAAgezq4u2XbwoBUk3iovl3an02ufcTk5VpDQUKGT1QEAgDAJFjExMWa42A0bNsisWbOs4m29v2DBghM+7sc//rH88Ic/lJdeekkmTJjQ6++IjY01C4DgqpPYe/SoNZ/Eq8XFUtva6rVPQWqqCRK6fK6oSDITE207XgAAEABdobQ1Yd68eSYg6FwUOtxsU1OTzJ8/32zXkZ50GFnt0qR0eNmlS5fKmjVrpLCw0Mx9oZKSkswCIDjVNDeb+STcrRKldXVe21NjY02AcLdKnDFkiEQwDCwAAAHD9mAxe/Zsqa6uNmFBQ8K4ceNk/fr1VkF3WVmZGSnK7YknnjCjSd14441ez7Ns2TL5/ve/P+jHD+DUtHR0yOayMitIfND9JYFbdGSkGfrVHSR0SNgo6iQAAAhYts9jMdiYxwKwR5fLJR941EloqGjrUSdxQVaWFSR0krrEmBjeLgAAbBQ081gACG3FR49aQULrJA63tHhtz0tONnNJ6JwSOhxsDt0ZAQAIWgQLAAPmSEuLbCwutian0wJsT8kxMXJFUZE1Od3ZQ4dSJwEAQIggWAA4ZW2dnWboV3eQeO/AAfHsW6k1ERcPH24FiYm5uRLtcHDGAQAIQQQLAH2qk9DJ6Nzdm94oLZWWzk6vfc7LzLTqJKaPGCHJDPcMAEBYIFgA6FVZXZ0VJHQ42OrmZq/tWhfhDhK65CYnc0YBAAhDBAsAXnQiuk0lJdbkdHsOH/banhgdLZcXFpoQoYFCWyiYTwIAABAsgDDX7nTK2/v3W0Fia0WF6fLk5oiIkEl5eVaQmDx8uMRQJwEAAHogWABhRqeu2VldbQWJ10pKpKmjw2sfHa3JHSS0dSI1Ls624wUAAMGBYAGEgYr6elMnoUFCbysbG722ZyYkWEFC55MoSE217VgBAEBwIlgAIaihrc3USbiLrj+uqfHaHh8VZWa2dhddX5CdLZEREbYdLwAACH4ECyAEdDidpjbCPZ/EOxUV0tnVZW3XyDAhN9cKEpfk50tsFP/7AwCAgcOVBRCkdRK7amqsIKGtEw3t7V77jEpPt4KEznY9JD7etuMFAAChj2ABBAmtizB1Et1LRUOD1/ah8fGmPkJnudYwUZSebtuxAgCA8EOwAAJUY3u7vF5aatVJ7Dh0yGt7rMMh00aMMEHiqlGjZFxODnUSAADANgQLIEBoTcR7Bw5YQWJLebl09KiTuHDYMKt709T8fImPjrb1mAEAANwIFoCNdRKfHDliBYmNxcVS19bmtU9hWpoVJD5XVCQZCQm8XwAAICARLIBBVN3UJBuKi63J6crq6ry2p8XFyZXdNRIaKEamp0sEw8ACAIAgQLAATqPmjg7ZXFZmBYkPKyu9tsc4HKZLkztIXDRsmDgiI3lPAABA0CFYAAPI2dUlH1RWWkFCQ0W70+m1z9jsbCtIXFpQIIkxMbwHAAAg6BEsgH7ad/SoFSReLS6WIy0tXtuHp6SYEHFVd51EdlIS5xwAAIQcggXQR4ebm02AcBddF9fWem1PiY01AcI9n8RZQ4dSJwEAAEIewQI4idbOTnlT6yS6J6Z7/+BBcXn+TxQZKZdonUT3fBITcnPNOgAAgHBCsAB66HK55O9aJ9EdJN4oKzPhwtPorCwrSFw2YoQkUScBAADCHMECEJHS2lorSOhwsDXNzV7nJTc52Sq41uFghyUnc94AAAA8ECwQlo62tMjGkhKrTuLTI0e8tmsLxOWFhdbkdOdmZFAnAQAA0AuCBcJCW2enbNm/3woS7x04YLo8uTkiImTy8OFWkJiclyfRDoetxwwAABBMCBYISS6XS7YfOmQFiddLS81kdZ7OyciwgoS2TuhoTgAAADg1BAuEjP319dZ8EhooDjU1eW3PTkw0IcK96PwSAAAAGBgECwStutZW2eRRJ7H78GGv7QnR0TJ9xAirVUJHcoqIiLDteAEAAEIZwQJBo8PplLc96iS2VlSI06NOIjIiQibm5lpBYkp+vsRQJwEAADAoCBYI6DqJj6qrrSDxWmmpNLa3e+1z5pAhVpC4oqhI0uLibDteAACAcEawQEA50NAgG7qDhAaKg42NXtszEhKO1UgUFZnbEWlpth0rAAAAPkOwgK0a2trMiE3uILGzutpre1xUlJnZ2j3L9ZjsbNPlCQAAAIGFYIFB1dnVJe9WVFhBQueW0HVuGhnG5+ZaQeKS/HwTLgAAABDYuGLDaa+T0NGaNEToorNd17e1ee0zMj39szqJwkIZmpDAuwIAABBkCBYYcFWNjbKhuNhqldD5JTwNiY+XK7trJHTRYAEAAIDgRrBAvzW1t8sbZWXW5HT/qKry2h7rcMilBQUmRGjLxLicHHFERnLmAQAAQgjBAn3m7OqSbQcPWkHirfJyaXc6vfa5MCfHChJTCwrMZHUAAAAIXQQL+FUnsffoUStIvFpcLLWtrV77FKSmmhChy+eKiiQzMZEzCwAAEEYIFvCpprnZzCfhnpyutK7Oa3tqbKwJEO6i6zOGDJEIhoEFAAAIWwQLGC0dHbK5rMwKEh9UVnqdmejISDP0qztI6JCwUdRJAAAAoBvBIkx1uVzygdZJdLdKaKho61EnoZPRuWe41knqEmNibDteAAAABDaCRRgp1jqJ7iChw8EeaWnx2p6XnGwmpXPXSeQkJdl2rAAAAAguBIsQpsFBC63d3Zv2HT3qtT05Jkau8KiTOHvoUOokAAAAcEoIFiGkrbNT3iwvt4LEtgMHxOWxXWsiLh4+3AoSk/LyqJMAAADAgCBYBHmdhE5G5w4Sb5SWSktnp9c+52VmWkFi+ogRkhwba9vxAgAAIHQRLIJMWV2dFSR0ONjq5mav7cOSkkyIcC+5ycm2HSsAAADCR0AEi1WrVslDDz0klZWVMnbsWHnsscdk0qRJJ9z/mWeekfvuu09KSkrkzDPPlAcffFC++MUvSijSieg2lZRYk9PtOXzYa3tidLRcXlhozXKtLRTMJwEAAICwCxbr1q2TRYsWyerVq2Xy5MmycuVKmTlzpuzevVuysrKO2/+tt96SOXPmyIoVK+RLX/qSrFmzRmbNmiXvv/++jB49WoJdu9MpW7rrJDRIbK2oMF2e3BwREaY2wh0kJg8fLjEOh63HDAAAAES4XB5XrTbQMDFx4kR5/PHHzf2uri7Jz8+XhQsXyuLFi4/bf/bs2dLU1CQvvPCCte7iiy+WcePGmXByMvX19ZKamip1dXWSkpIidtPTv+PQIat702ulpdLc0eG1j47W5A4S2jqRGhdn2/ECAAAgfNT34drZ1haL9vZ22bZtmyxZssRaFxkZKTNmzJAtW7b4fIyu1xYOT9rC8fzzz0uwqKivt4KE3lY1NXltz0xIsILElSNHSkFqqm3HCgAAAPjD1mBRU1MjTqdTsrOzvdbr/V27dvl8jNZh+Npf1/vS1tZmFs/UZaf3DhyQiU895bUuPirKzGztHr3pguxsiYyIsO0YAQAAgKCrsTjdtBZj+fLlEijGZmdLWlycnKXdm3RyulGjZMrw4RIbFfJvBQAAAEKYrVezGRkZ4nA4pKqqymu93s/JyfH5GF3fl/21m5Vn1yltsdAaDrtEOxxSsWiRJERH23YMAAAAwECLFBvFxMTI+PHjZcOGDdY6Ld7W+1OmTPH5GF3vub96+eWXT7h/bGysKTTxXOxGqAAAAECosb3/jbYmzJs3TyZMmGDmrtDhZnXUp/nz55vtc+fOlby8PNOlSd1+++0yffp0efjhh+Waa66RtWvXynvvvSdPPvmkza8EAAAACF+2BwsdPra6ulqWLl1qCrB12Nj169dbBdplZWVmpCi3Sy65xMxdce+998o999xjJsjTEaFCYQ4LAAAAIFjZPo/FYAu0eSwAAACAULh2trXGAgAAAEBoIFgAAAAACP4ai8Hm7vll90R5AAAAQKBzXzP7Uz0RdsGioaHB3No5lwUAAAAQbNfQWmvRm7Ar3tZ5Mg4cOCDJyckSERFhyzG4J+krLy+ngDzM8VkAnwPwNwH8+4BAvk7QqKChIjc312ukVl/CrsVCT8jw4cMlEATKhH2wH58F8DkAfxPAvw8I1OuEk7VUuFG8DQAAAKDfCBYAAAAA+o1gYYPY2FhZtmyZuUV447MAPgfgbwL49wGhcp0QdsXbAAAAAAYeLRYAAAAA+o1gAQAAAKDfCBYAAAAA+o1gAQAAAKDfCBYAAAAA+o1gAQAAAKDfCBYAAAAA+o1gAQAAAKDfCBYAAAAA+o1gAQAAAKDfCBYAAAAA+i1KwkxXV5ccOHBAkpOTJSIiwu7DAQAAAAKWy+WShoYGyc3NlcjI3tskwi5YaKjIz8+3+zAAAACAoFFeXi7Dhw/vdZ+wCxbaUuE+OSkpKXYfDgAAABCw6uvrzZfy7mvo3oRdsHB3f9JQQbAAAAAATs6fEgKKtwEAAAD0G8ECAAAAQHAHi9dff12uvfZaU2WuzSvPP//8SR+zadMmueiiiyQ2NlbOOOMM+fWvfz0oxwoAAAAgQINFU1OTjB07VlatWuXX/sXFxXLNNdfIFVdcIR9++KHccccd8s1vflNeeuml036sAAAAAAK0ePsLX/iCWfy1evVqKSoqkocfftjcP/fcc2Xz5s3y05/+VGbOnHkajxQAAABAyNRYbNmyRWbMmOG1TgOFrj+RtrY2M0yW52KnuvI6WT12taw6179WGgAAACAYBFWwqKyslOzsbK91el/DQktLi8/HrFixQlJTU63F7snxouOjpeofVVKzq0acHU5bjwUAAAAIy2BxKpYsWSJ1dXXWohPj2Sl+SLxERB4bB7i5ptnWYwEAAAAGSlBNkJeTkyNVVVVe6/S+TnQXHx/v8zE6epQugUJDRfzQeGmubjbBInnYyWcxBAAAAAJdULVYTJkyRTZs2OC17uWXXzbrg0lCRoK51XABAAAAhAJbg0VjY6MZNlYX93Cy+nNZWZnVjWnu3LnW/t/61rdk37598r3vfU927dolP//5z+UPf/iD3HnnnRJMEjMTzW1TdZPdhwIAAAAEf7B477335MILLzSLWrRokfl56dKl5v7BgwetkKF0qNm//vWvppVC57/QYWf/67/+K+iGmk3I7G6xoMYCAAAAIcLWGovLL79cXC7XCbf7mlVbH/PBBx+c5iM7vegKBQAAgFATVDUWoYIWCwAAAIQagoWdNRaHqLEAAABAaCBY2CApJ8ncNh5stOPXAwAAAAOOYGGDpGHHgkXDwQY7fj0AAAAw4AgWNnBPiqctFr0VrwMAAADBgmBhY4tFR3OHtDe023EIAAAAwIAiWNggJjFGYlNizc90hwIAAEAoIFjYXWdxgDoLAAAABD+CRQDUWQAAAADBjmBhE0aGAgAAQCghWNgcLGixAAAAQCggWNgkOZeuUAAAAAgdBAubaywYFQoAAAChgGBhk+S8Y8GivrzerkMAAAAABgzBwiZphWnmtq6sTlxdzL4NAACA4EawsElKXopEOCLE2e6kOxQAAACCHsHCrhMfFSmp+anm59qSWrsOAwAAABgQBIsA6A5FsAAAAECwI1jYKK2oO1gU02IBAACA4EawsBEtFgAAAAgVBAsbESwAAAAQKggWgdAViuJtAAAABDmCRSDMZVFaJ13OLjsPBQAAAOgXgoWNknOTJSouSro6u2i1AAAAQFCzPVisWrVKCgsLJS4uTiZPnixbt27tdf+VK1fK2WefLfHx8ZKfny933nmntLa2SjCKdETK0LOHmp+rP6q2+3AAAACA4AwW69atk0WLFsmyZcvk/fffl7Fjx8rMmTPl0KFDPvdfs2aNLF682Oz/8ccfyy9/+UvzHPfcc48Eq8zzMs0twQIAAADBzNZg8cgjj8i//uu/yvz58+W8886T1atXS0JCgvzqV7/yuf9bb70lU6dOla9+9aumlePqq6+WOXPmnLSVIxiCRc1HNXYfCgAAABB8waK9vV22bdsmM2bM+OxgIiPN/S1btvh8zCWXXGIe4w4S+/btkxdffFG++MUvnvD3tLW1SX19vdcSSGixAAAAQCiIsusX19TUiNPplOzsbK/1en/Xrl0+H6MtFfq4Sy+9VFwul3R2dsq3vvWtXrtCrVixQpYvXy6BKuPcDHNb/XG1eU0RERF2HxIAAAAQfMXbfbFp0yZ54IEH5Oc//7mpyfjjH/8of/3rX+UHP/jBCR+zZMkSqaurs5by8nIJJEPOGCKRUZHS0dQh9eWB1ZoCAAAABHyLRUZGhjgcDqmqqvJar/dzcnJ8Pua+++6Tr33ta/LNb37T3L/gggukqalJ/u3f/k3+4z/+w3Sl6ik2NtYsgcoR7ZChZw01xduHdh6S1IJUuw8JAAAACJ4Wi5iYGBk/frxs2LDBWtfV1WXuT5kyxedjmpubjwsPGk6UdiMKVlkXZJnbyg8q7T4UAAAAIPi6QulQs0899ZT85je/McPH3nLLLaYFQkeJUnPnzjVdmdyuvfZaeeKJJ2Tt2rVSXFwsL7/8smnF0PXugBGM8iblmduKdyrsPhQAAAAguLpCqdmzZ0t1dbUsXbpUKisrZdy4cbJ+/XqroLusrMyrheLee+81xc16W1FRIZmZmSZU/PCHP5Rgljf5WLDY/85+CrgBAAAQlCJcwdyH6BTocLOpqammkDslJUUCQUdzh6xIWSEup0vuKLtDUvOpswAAAEBwXTsH1ahQoSo6IVqyxxxrpaE7FAAAAIIRwSLQ6iy2UmcBAACA4EOwCLBgUf5WYM2zAQAAAPiDYBEgCq8oNLf7394vrXWtdh8OAAAA0CcEiwCRXpRuJsrTAu7iV4vtPhwAAACgTwgWAWTUzFHm9tP1n9p9KAAAAECfECwCMFjsfWlvUM8kDgAAgPBDsAgghZcXiiPGIXWldVKzq8buwwEAAAD8RrAIIDGJMVJ0ZZH5ecfvd9h9OAAAAIDfCBYBZszXxpjbf/zuH+LqojsUAAAAggPBIsCcc905EpMcI7UltVK2uczuwwEAAAD8QrAIMNEJ0XL+P59vfv7wNx/afTgAAACAXwgWAWjsvLHmdseaHdJY2Wj34QAAAAAnRbAIQAWXFsjwKcOls7VT3nzoTbsPBwAAADgpgkUAioiIkOlLp5uf33viPWk61GT3IQEAAAC9IlgE8GR5uRNzpbOlUzYu3Wj34QAAAAC9IlgEcKvFjAdnmJ+3/WKbFL9abPchAQAAACdEsAhgRVcUyfhvjTc///nmP0tbfZvdhwQAAAD4RLAIcFf9+CpJHZFq5rX4w5f/IM52p92HBAAAAByHYBHgYpNj5Z+f/WeJToyWfa/sk+fmPiddnV12HxYAAADghWARBHIn5MrsP86WyOhI2blup/z35/9bmmua7T4sAAAAwEKwCBKjrh4lX3nmK6blonhDsTw5/knZ88Iecblcdh8aAAAAQLAIJudcd4588+1vSvqodKkrq5PfX/t7+Z/P/4+UvFZCwAAAAICtIlxh9pV3fX29pKamSl1dnaSkpEgwamtokzd++Ia8/dO3rWLuzPMyZey8sXLWl86SjHMzzHC1AAAAwGBdO9veFWrVqlVSWFgocXFxMnnyZNm6dWuv+9fW1sptt90mw4YNk9jYWDnrrLPkxRdflHAr6J7xoxly60e3yoXfvFCiE6Kl+qNqeeXuV+Tn5/9cHi16VP540x/l7UfflrI3y0w9RpjlRwAAAIRTi8W6detk7ty5snr1ahMqVq5cKc8884zs3r1bsrKyjtu/vb1dpk6darbdc889kpeXJ6WlpZKWliZjx44NmxaLnlrrWmX7mu2y5897zER6voakjUuLk6FnDTVLamGqJOcmS/Kw5GO3ucmSmJ0ojmiHLccPAACAwNSXa2dbg4WGiYkTJ8rjjz9u7nd1dUl+fr4sXLhQFi9efNz+GkAeeugh2bVrl0RHR5/S7wzFYOGpvaldyjaXScXWCql4p0IObT9k6jFOKkIkMStRknKSJDEzURIyEiR+aLy59bXotuj4U3sPAAAAEByCIlho60NCQoI8++yzMmvWLGv9vHnzTHenP/3pT8c95otf/KIMGTLEPE63Z2Zmyle/+lW5++67xeHw/W17W1ubWTxPjoaXUA0WvnQ0d8iRvUfk8J7DZqkvr5fGg43ScKDBLI2Vjac0N4Z2wfIVOEwgGZrg8zYmKYb6DwAAgBAMFlFik5qaGnE6nZKdne21Xu9ri4Qv+/btk1dffVVuuukmU1fx6aefyq233iodHR2ybNkyn49ZsWKFLF++XMKZBoDsC7LN4oury2XqMNwhQ39uPtx87LamWVpqWqyf3YsGEQ0s2hriV4tIN0eMw2fg8FqnIcVje1x6nEQ6bC8HAgAAQCAGi1OhXaW0vuLJJ580LRTjx4+XiooK0z3qRMFiyZIlsmjRouNaLPCZiMgI0w1KF39oI1dbfZu0HD4+cLgDiW4z2w83W7fONqep/9DWEl38FnGsRsRX8OitdYSuWgAAAGEQLDIyMkw4qKqq8lqv93Nycnw+RkeC0toKz25P5557rlRWVpquVTExMcc9RkeO0gUDR4eyjUuNM0v6yHS/w4i2cFhhxCNweN66f3aHEw0w4hJpPdpqFvm0by01vbWOWHUkHttjU2PpqgUAABBMwUJDgLY4bNiwwaqx0BYJvb9gwQKfj9ERodasWWP2i4w81jVmz549JnD4ChUIrDASkxhjltSCVL8f5+xwSsuR41s/3MGjZyBx37qcx4KMLlpT4vdxOiIkfoh3t6zeWkXM9iHxjKgFAADCnq1dobSLkhZrT5gwQSZNmmSGm21qapL58+eb7ToUrQ4pq3US6pZbbjEjSN1+++1m5KhPPvlEHnjgAfn2t78d9m9kqNIhcJOyk8ziL3dXrZ7hw2friEfriYYQDSTN1c1m6YvYlNgTt470qBlx30YnRtM6AgAAQoatwWL27NlSXV0tS5cuNd2Zxo0bJ+vXr7cKusvKyqyWCaW1ES+99JLceeedMmbMGBM6NGToqFCAr65aMsr/89LZ2nl8CPEIHj7DydEW01VLg4wutcW1p1TIfrIRtdzbtdaEQnYAABCIbJ3Hwg6hPo8FBleXs8vUfpyoVcQzoHje9zWJoV8iROLTTxBAeum2FRUXVOM0AACAABEUw80CoUBbD9xzePjLFLI3dfSpZsSzkN3UnBxpkSOfHOl7IbsfI2q5A4p279LWHwAAAH8QLAA7CtmTYsySNiLN78dpK4cGil5bR2p63D/ScsqF7JFRkaYw3XMG9t5mY9eFMAIAQPgiWABBQmsyknKSzOIvnfzQFLL7qBk5UeuI7tPZ0mkmQWw61GSWvoQRf0OIe6GIHQCA0ECwAEJ88kMt+NalL4XsHS3dc470CCRes7F73NdFu3dpGNHZ23XpS2DqGTbiM3yEkqEeYSQh+tROCAAAOG0IFgCOo7OWRw+PlpThKX0PIz5mYrfCiMe2puomazb2hgMNZvH7D1d8VK+tIL5aS6Ji+XMHAMDpxL+0AGwJI8fNxt7L4t5Hw0hXR5fpqqX1In2pGdGaFn8CiOc2nUcFAAD4h2ABIGhmY9cw0t7YftIA0nPRAnZ9nC61Jf7PNRKbGntcVyyf3bTcYSQ93tSZAAAQjggWAIIqjMQmx5olvSjd/5nY69p8ds86UTctM5qWFr7XtZnl6N6jfh6gmHqWXgvWMxMkMTPR+pmRtAAAYR0sFi1a5Pe+jzzyyKn8CgAYuJnYuwvYh5wxxK/HaKhorW31u4uWO4zoPCM6YaIu/s4zEhl9bCQtz7DhK4C496GLFgAgpILFBx98YJaOjg45++yzzbo9e/aIw+GQiy66yNqPybUABOtoWmYOjyHxMvSsoX49RkfEajnacuLwUf1Z0br7Z+2apTUjjQcbzeIv0yriETY8w0jPdfozQ/oCAAI2WFx77bWSnJwsv/nNbyQ9/Vh3hKNHj8r8+fNl2rRp8p3vfGegjxMAAprWVuhFvC59HUnLM2x4/nzcusPNx1pFalvN4m+rSFRc1PEtHxnxxwUQ9z4aqHRWeQAA+iLCpR2Q+ygvL0/+9re/yfnnn++1fseOHXL11VfLgQMHJFDV19dLamqq1NXVSUqK/0NpAoDdupxdpptVzwDSWxjpbO3s+y+KEBMuvLpi+Qggnj/rqGAAgNDTl2vnU2qx0F9QXV193Hpd19Dg/1j0AAD/aSuCuwg845wMv4f09RVAThRGNLhoq4h7VnZ/6aSFvupCTlQrot25tMsZACB0nFKwuP766023p4cfflgmTZpk1r3zzjvy3e9+V2644YaBPkYAQD+H9E0rTPPrMc4OpylE70sY0ToRDTB1pXVm8evYHBHHhvA9Sa1IYtZn65lXBABCsCtUc3Oz3HXXXfKrX/3KFHCrqKgoufnmm+Whhx6SxET/+xgPNrpCAcDAMcP51ncP51vdHT48goevdbr/qYhLj/MOG9oakpXotc76OSOBOUUAYJCvnU8pWLg1NTXJ3r17zc+jRo0K6EDhRrAAAHt1tnV+NnJWb2Gk+1a7ZOkQwKcURHoED88w4vUzQQQA7A0WwYhgAQDBV7Tu7p7VdKjps9DR42frtnv0rL7SgnVfwcPnuqG0iAAID/Wnu3gbAIDBLFp3D+WbeV6m30HEChvVTV4/Nx/yXucOIvoYXQ7vPuzfyFnp8V7Bw6srVo+fCSIAwgHBAgAQskHEHyaIeMwn4rMlpJcgIrv6NoSvPzUiOsM6c4kACDYECwBAWDNBRC/ws/oeRHwGD49worcmfHgM4Vuzq8b/IOJnjQhBBEAgIFgAAHCqQcR7nlifujo/65p1svoQU6zeM4h87F8QMUP0dh+XtWT3uN+9xCTFmOGIAWAgESwAADiNIqP62CLS2WW6W/mqD/HVKmImMnSJtb565/ET2PYUFR/lM3D4CiLMIQLAXwQLAAACLIgkZSeZxe8g0j1ZoQkb7qWqx/3upaOpQzpbOvs0oaF2tfI3iMSmxNIaAoQpggUAAMEeRHKSzOKP9qZ2n4HDVxDRFhCdQ6Qv3bIcsQ7fIcRXEMlMFEeMYwDOAoBAEBDBYtWqVWbG7srKShk7dqw89thjMmnSpJM+bu3atTJnzhy57rrr5Pnnnx+UYwUAIJjFJMZITFGMpBel92noXn+CSHtDuzjbnFJfXm8Wf8SlxZ2wFqTnet2X2hAgcNkeLNatWyeLFi2S1atXy+TJk2XlypUyc+ZM2b17t2RlZZ3wcSUlJXLXXXfJtGnTBvV4AQAIy6F7/ShU72jp8B1CThBEXE6XtNa2msWf+UMio7uPx88gEhVr+2UOEFZsn3lbw8TEiRPl8ccfN/e7urokPz9fFi5cKIsXL/b5GKfTKZdddpl84xvfkDfeeENqa2v9brFg5m0AAOynXaw0UDRWNfoVRNrq2vr8O2JTY02tigYO963nz5630QnRp+V1AsEuaGbebm9vl23btsmSJUusdZGRkTJjxgzZsmXLCR93//33m9aMm2++2QSL3rS1tZnF8+QAAAB7RURGmLk6dMk89+Qzqne2dZqaD19BRGdT77m+q6PLhBFdDu85eWuIDsHrTwDRW4brBQIwWNTU1JjWh+zsbK/1en/XLt9TmW7evFl++ctfyocffujX71ixYoUsX758QI4XAADYQ7s1pQxPMcvJaGeM1qPdrSFVTcfd9lyndSHtje1mObr36MmPJT7K75YQbTWhLgThIqg6HzY0NMjXvvY1eeqppyQjI8Ovx2hriNZweLZYaFcrAAAQmvRC3t/WEA0hbfVtPgOIryDS0XxsuN7aklqz+DtKlj8tIXq8hBAEM1uDhYYDh8MhVVVVXuv1fk5OznH779271xRtX3vttdY6rclQUVFRpuB71KhRXo+JjY01CwAAQE96IR+XGmeWoWcNPekJ0lYNf1tC+jpKljWZoh8tITq3iBbXA4HE1mARExMj48ePlw0bNsisWbOsoKD3FyxYcNz+55xzjmzfvt1r3b333mtaMh599FFaIgAAwGml9RVDkobIkFFD/Bsl6wQtIVZdSPd97bqlkx02HGgwiz81KgmZCSfskqXzmpifc5LM7OmEEIRFVyjtpjRv3jyZMGGCmbtCh5ttamqS+fPnm+1z586VvLw8UysRFxcno0eP9np8Wlqaue25HgAAwE7R8dGSVphmlpNxtjtN0bk/rSE607qOquVe708IMd2xuidS9AwdPRdqQhDUwWL27NlSXV0tS5cuNRPkjRs3TtavX28VdJeVlZmRogAAAEKVzkDub3G6tmw0VTf1GkAaK7vvVzeZEKL3dTnpccQ6rBYPE0ByegQQj20M0YuAm8disDGPBQAACBfuEOIOFiZ4dP/cc+nrXCExyTF+tYJoa4kj2nHaXiNOr6CZxwIAAACnjxaEJw9LNsvJdLZ2Wq0dPRevQHKw0eyrxelHGo7IkU+OnPS5tdjcZ+joEUYShiaYrlsITgQLAAAASFRclKSNSDNLb7Szi4YKK2j0CCNNld0hpLt7lraatBxuMUv1zupenzvCEXFc8fmJAklsCnOEBBqCBQAAAPo0RK9e1OtysiF6tb6j5UjL8a0gVR4BpHsxRelOl98jY2kQ8gob3fUg2jqTNKz7tjuE0BVrcBAsAAAAcFqYYXEzEsySNTqr132dHcdGxuqtDsS9TSc11O5Yfk1UGCHm97uDhoYOz+Bh/TwsSWISYwb2BIQZggUAAABsp60KKXkpZjkZnQHdZz3IwWNLw8EGa522gjRXN5ul6h/ekzL7mqfEM2j0DB7uFhGtGWGW9OMRLAAAABBUdKjb9KJ0s5ysK5Z2sbKChjt0aADpcV/Dis6srsXoJytIj4yOtLpgWaFjmPd9vQ23blgECwAAAIQk9+SAusjYkxSkN7YfFzysnz3uaxF6V0eX1JfXm+VkEjISjut65asrlraWBDuCBQAAAMKaKUhPjjXLyQrSdZZ0dzcrd/DwbBFp7L7vHhFLW0x0ObT90Mm7YfnoeqW3BZcWyJBRQyTQESwAAACAPsySnlqQapaTdsM63Hxc8PDVFaujqbsb1qdHzNLTl578EsECAAAACNtuWJmJZskek93rvm0Nbb0Gj4yzMyQY0GIBAAAA2CjW3Q3rzN67YQW6SLsPAAAAAEDwI1gAAAAA6DeCBQAAAIB+I1gAAAAA6DeCBQAAAIB+I1gAAAAA6DeCBQAAAIB+I1gAAAAA6DeCBQAAAIB+I1gAAAAA6DeCBQAAAIB+I1gAAAAA6DeCBQAAAIDQCBarVq2SwsJCiYuLk8mTJ8vWrVtPuO9TTz0l06ZNk/T0dLPMmDGj1/0BAAAAhEGwWLdunSxatEiWLVsm77//vowdO1Zmzpwphw4d8rn/pk2bZM6cObJx40bZsmWL5Ofny9VXXy0VFRWDfuwAAAAAjolwuVwusZG2UEycOFEef/xxc7+rq8uEhYULF8rixYtP+nin02laLvTxc+fOPen+9fX1kpqaKnV1dZKSkjIgrwEAAAAIRX25dra1xaK9vV22bdtmujNZBxQZae5ra4Q/mpubpaOjQ4YMGeJze1tbmzkhngsAAACAgWVrsKipqTEtDtnZ2V7r9X5lZaVfz3H33XdLbm6uVzjxtGLFCpOy3Iu2hgAAAAAIsRqL/vjRj34ka9euleeee84UfvuyZMkS03TjXsrLywf9OAEAAIBQF2XnL8/IyBCHwyFVVVVe6/V+Tk5Or4/9yU9+YoLFK6+8ImPGjDnhfrGxsWYBAAAAEKItFjExMTJ+/HjZsGGDtU6Lt/X+lClTTvi4H//4x/KDH/xA1q9fLxMmTBikowUAAAAQkC0WSoeanTdvngkIkyZNkpUrV0pTU5PMnz/fbNeRnvLy8kythHrwwQdl6dKlsmbNGjP3hbsWIykpySwAAAAAwjBYzJ49W6qrq01Y0JAwbtw40xLhLuguKyszI0W5PfHEE2Y0qRtvvNHreXQejO9///uDfvwAAAAAAmAei8HGPBYAAABAiM1jAQAAACA0ECwAAAAA9BvBAgAAAEC/ESwAAAAA9BvBAgAAAEC/ESwAAAAA9BvBAgAAAEC/ESwAAAAA9BvBAgAAAEC/ESwAAAAA9BvBAgAAAEC/ESwAAAAA9BvBAgAAAEC/ESwAAAAA9BvBAgAAAEC/ESwAAAAA9BvBAgAAAEC/ESwAAAAA9BvBAgAAAEC/ESwAAAAA9BvBAgAAAEC/ESwAAAAA9BvBAgAAAEBoBItVq1ZJYWGhxMXFyeTJk2Xr1q297v/MM8/IOeecY/a/4IIL5MUXXxy0YwUAAAAQgMFi3bp1smjRIlm2bJm8//77MnbsWJk5c6YcOnTI5/5vvfWWzJkzR26++Wb54IMPZNasWWbZsWPHoB87AAAAgGMiXC6Xy86ToS0UEydOlMcff9zc7+rqkvz8fFm4cKEsXrz4uP1nz54tTU1N8sILL1jrLr74Yhk3bpysXr36pL+vvr5eUlNTpa6uTlJSUgb41QAAAAChoy/Xzra2WLS3t8u2bdtkxowZnx1QZKS5v2XLFp+P0fWe+ytt4TjR/gAAAABOvyixUU1NjTidTsnOzvZar/d37drl8zGVlZU+99f1vrS1tZnFM3V53qro6GiJj4+XlpYW6ejosNbHxsaaRVtI9DjdtLYjJiZGGhsbTQuLW0JCgkRFRXk9t0pMTDSBqaGhwWt9cnKyebw+vydNg52dndLc3Gyt08cnJSWZMNba2mqtdzgc5vl7vk5eE+8Tnz3+f+JvBH/L+feJf3O5juDayNnPa9g+dW5y2aiiokKP1PXWW295rf/ud7/rmjRpks/HREdHu9asWeO1btWqVa6srCyf+y9btsz8jt6Wm2++2eyrt57r9bHq6quv9lr/1FNPmfXnnXee1/r169eb9cnJyV7rd+zY4aqrqzvu9+o63ea5Th+r9Lk81+vvUvq7Pdfrsfl6nbwm3ic+e/z/xN8I/pbz7xP/5nIdwbWR9PMatry83LpuPRlbayz023dNSM8++6wpwHabN2+e1NbWyp/+9KfjHlNQUGCKve+44w5rnRZ+P//88/L3v//drxYLreEoLy+3+onx7T7f7italmgtowWQllpF6zMt6vQS4NpI0UNFzLWRtm6kpaX5VWMREMXbkyZNkscee8zc12YZDQ8LFiw4YfG2dhH6y1/+Yq275JJLZMyYMRRvAwAAADYVb9taY6G09UFbKCZMmGACxsqVK03Nwfz58832uXPnSl5enqxYscLcv/3222X69Ony8MMPyzXXXCNr166V9957T5588kmbXwkAAAAQvmwPFtoCUV1dLUuXLjUF2Dps7Pr1660C7bKyMtMk6dk6sWbNGrn33nvlnnvukTPPPNN0gxo9erSNrwIAAAAIb7Z3hRpszGMBAAAAhNg8FgAAAABCA8ECAAAAQPDXWAw2d8+vnhOAAAAAAPDmvmb2p3oi7IKFe/ZrncsCAAAAgH/X0Fpr0ZuwK97WeTIOHDggycnJEhERYcsx+JqkD+GJzwL4HIC/CeDfBwTydYJGBQ0Vubm5XiO1+hJ2LRZ6QoYPHy6BQD8gBAvwWQB/E8C/D+BaAYF8zXiylgo3ircBAAAA9BvBAgAAAEC/ESxsEBsbK8uWLTO3CG98FsDnAPxNAP8+IFSuE8KueBsAAADAwKPFAgAAAEC/ESwAAAAA9BvBAgAAAEC/ESwG2apVq6SwsFDi4uJk8uTJsnXr1sE+BAyy119/Xa699lozsYxOyvj88897bdcyp6VLl8qwYcMkPj5eZsyYIZ988gnvUwhasWKFTJw40UzQmZWVJbNmzZLdu3d77dPa2iq33XabDB06VJKSkuTLX/6yVFVV2XbMGHhPPPGEjBkzxhqXfsqUKfJ///d/1nY+A+HrRz/6kfl34o477rDW8XkID9///vfNe++5nHPOOUH3OSBYDKJ169bJokWLTHX/+++/L2PHjpWZM2fKoUOHBvMwMMiamprMe62h0pcf//jH8rOf/UxWr14t77zzjiQmJprPhf4RQWh57bXXzD8Mb7/9trz88svS0dEhV199tfmMuN15553yl7/8RZ555hmz/4EDB+SGG26w9bgxsHSSVr2A3LZtm7z33nvyuc99Tq677jrZuXOn2c5nIDy9++678otf/MKETk98HsLH+eefLwcPHrSWzZs3B9/nQEeFwuCYNGmS67bbbrPuO51OV25urmvFihW8BWFC/5d77rnnrPtdXV2unJwc10MPPWStq62tdcXGxrp+//vf23SUGCyHDh0yn4nXXnvNeu+jo6NdzzzzjLXPxx9/bPbZsmULb0wIS09Pd/3Xf/0Xn4Ew1dDQ4DrzzDNdL7/8smv69Omu22+/3aznb0L4WLZsmWvs2LE+twXT54AWi0HS3t5uvp3Sbi5ukZGR5v6WLVsG6zAQYIqLi6WystLrc5Gammq6yfG5CH11dXXmdsiQIeZW/0ZoK4bn50GbwgsKCvg8hCin0ylr1641rVbaJYrPQHjSlsxrrrnG6/99xechvHzyySem2/TIkSPlpptukrKysqD7HETZfQDhoqamxvwDkp2d7bVe7+/atcu244K9NFQoX58L9zaEpq6uLtOPeurUqTJ69GizTt/zmJgYSUtL89qXz0Po2b59uwkS2uVR+0s/99xzct5558mHH37IZyDMaLDU7tHaFaon/iaEj8mTJ8uvf/1rOfvss003qOXLl8u0adNkx44dQfU5IFgAgE3fUOo/GJ59aBE+9OJBQ4S2Wj377LMyb948028a4aW8vFxuv/12U3Olg7ogfH3hC1+wftY6Gw0aI0aMkD/84Q9mYJdgQVeoQZKRkSEOh+O4Cn69n5OTM1iHgQDjfu/5XISXBQsWyAsvvCAbN240hbyenwftNllbW+u1P38nQo9++3jGGWfI+PHjzWhhOsDDo48+ymcgzGgXFx3A5aKLLpKoqCizaMDUAT30Z/1Gmr8J4SktLU3OOuss+fTTT4Pq7wLBYhD/EdF/QDZs2ODVFULva3M4wlNRUZH5o+D5uaivrzejQ/G5CD1av6+hQru9vPrqq+b996R/I6Kjo70+Dzocrfaz5fMQ2vTfg7a2Nj4DYebKK6803eK09cq9TJgwwfSvd//M34Tw1NjYKHv37jVD0QfTvw10hRpEOtSsNnfrH4pJkybJypUrTcHe/PnzB/MwYMMfB/3GwbNgW//B0IJdLbzSfvb/+Z//KWeeeaa50LzvvvtM8ZbOcYDQ6/60Zs0a+dOf/mTmsnD3jdWCfW3q1tubb77Z/K3Qz4fOcbBw4ULzD8fFF19s9+FjgCxZssR0e9D//xsaGsxnYtOmTfLSSy/xGQgz+nfAXWPlpkOO61wF7vX8TQgPd911l5nzSrs/6VCyOjWB9nSZM2dOcP1dsHtYqnDz2GOPuQoKClwxMTFm+Nm3337b7kPCabZx40YzJFzPZd68edaQs/fdd58rOzvbDDN75ZVXunbv3s37EoJ8fQ50efrpp619WlpaXLfeeqsZfjQhIcF1/fXXuw4ePGjrcWNgfeMb33CNGDHC/DuQmZlp/p//29/+Zm3nMxDePIebVXwewsPs2bNdw4YNM38X8vLyzP1PP/006D4HEfofu8MNAAAAgOBGjQUAAACAfiNYAAAAAOg3ggUAAACAfiNYAAAAAOg3ggUAAACAfiNYAAAAAOg3ggUAAACAfiNYAAAAAOg3ggUA4LTatGmTRERESG1tLWcaAEIYM28DAAbU5ZdfLuPGjZOVK1ea++3t7XLkyBHJzs42AQMAEJqi7D4AAEBoi4mJkZycHLsPAwBwmtEVCgAwYL7+9a/La6+9Jo8++qhpndDl17/+tVdXKL2flpYmL7zwgpx99tmSkJAgN954ozQ3N8tvfvMbKSwslPT0dPn2t78tTqfTeu62tja56667JC8vTxITE2Xy5MmmmxUAIDDQYgEAGDAaKPbs2SOjR4+W+++/36zbuXPncftpiPjZz34ma9eulYaGBrnhhhvk+uuvN4HjxRdflH379smXv/xlmTp1qsyePds8ZsGCBfLRRx+Zx+Tm5spzzz0nn//852X79u1y5pln8i4CgM0IFgCAAZOammq6PmkrhLv7065du47br6OjQ5544gkZNWqUua8tFr/73e+kqqpKkpKS5LzzzpMrrrhCNm7caIJFWVmZPP300+ZWQ4XS1ov169eb9Q888ADvIgDYjGABABh0GjzcoUJpYbd2gdJQ4bnu0KFD5mdtldBuUWeddZbX82j3qKFDhw7ikQMAToRgAQAYdNHR0V73tQbD17quri7zc2NjozgcDtm2bZu59eQZRgAA9iFYAAAGlHaF8iy6HggXXniheU5twZg2bdqAPjcAYGAwKhQAYEBpl6Z33nlHSkpKpKamxmp16A/tAnXTTTfJ3Llz5Y9//KMUFxfL1q1bZcWKFfLXv/51QI4bANA/BAsAwIDSomrtrqQF2JmZmabgeiBokbYGi+985ztmmNpZs2bJu+++KwUFBQPy/ACA/mHmbQAAAAD9RosFAAAAgH4jWAAAAADoN4IFAAAAgH4jWAAAAADoN4IFAAAAgH4jWAAAAADoN4IFAAAAgH4jWAAAAADoN4IFAAAAgH4jWAAAAADoN4IFAAAAgH4jWAAAAACQ/vr/jKZD5OlPBbEAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{}\n" ] } ], "source": [ "t_plot = np.linspace(0, 50, 300)\n", "fig, axes = plt.subplots(2, 1, figsize=(8, 5), sharex=True)\n", "axes[0].plot(t_plot, [E_ramp(t) for t in t_plot], color=\"teal\")\n", "axes[0].set_ylabel(\"E(t)\"); axes[0].set_title(\"Callable parameter E(t)\")\n", "axes[1].plot(out_callable.time, out_callable.diagnostic_variables[\"q\"], color=\"purple\")\n", "axes[1].axhline(0, color=\"k\", lw=0.8, ls=\"--\")\n", "axes[1].set_ylabel(\"q\"); axes[1].set_xlabel(\"time\")\n", "plt.tight_layout(); plt.show()" ] }, { "cell_type": "markdown", "id": "9854549a", "metadata": {}, "source": [ "### `register_forcing`\n", "\n", "Attaches a `Forcing` object to a named parameter or state variable after construction.\n", "Wraps `dydt` transparently — no changes to the model subclass required.\n", "\n", "See the [Forcing notebook](forcing.ipynb) for all construction patterns and the\n", "full `register_forcing` contract (attachment styles, timing, noise)." ] }, { "cell_type": "code", "execution_count": 32, "id": "0ac16063", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{}\n" ] } ], "source": [ "# Freshwater pulse forcing\n", "fw = cc.Forcing.from_sequence([\n", " cc.forcing.Hold(duration=10, value=0.0),\n", " cc.forcing.Ramp(duration=5, y0=0.0, yf=0.5),\n", " cc.forcing.Hold(duration=15, value=0.5),\n", " cc.forcing.Ramp(duration=5, y0=0.5, yf=0.0),\n", " cc.forcing.Hold(duration=15, value=0.0),\n", "])\n", "\n", "# Attach to E parameter (replacement — overrides E=0 set at construction)\n", "model_forced = Stommel(E=0.0, T_star=1.0, S_star=0.0)\n", "model_forced.register_forcing(\"E\", fw)\n", "out_forced = model_forced.integrate(t_span=(0, 50), y0=[1.0, 0.0], method=\"RK45\")" ] }, { "cell_type": "code", "execution_count": 33, "id": "224d8a6e", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAxYAAAHqCAYAAACZcdjsAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjksIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvJkbTWQAAAAlwSFlzAAAPYQAAD2EBqD+naQAAYbFJREFUeJzt3QlcVOX6wPGHfZNNEXBBcVdUwD01K8s0NcvKrmmlmXn/ZdpidW+26DVvWbfy2mJaluWtTFPTMg31klqmprnlrriBIpsLICIgzP/zvjpzQVHBAc4sv+/nc5w5hzMzL2fG4Tznfd/ncTGZTCYBAAAAACu4WvNgAAAAACCwAAAAAFAh6LEAAAAAYDUCCwAAAABWI7AAAAAAYDUCCwAAAABWI7AAAAAAYDUCCwAAAABWI7AAAAAAYDUCCwCwIbfccoteHImLi4v84x//uOZ+qampMmDAAKlRo4Z+zJQpU6SqqPap1wQAXD8CCwAo5osvvtAnmObF3d1d6tSpI4888ogcO3bMJo/V2rVr9Ynx6dOnxZ49++yzsmzZMhk7dqx8+eWXcscddxjdJIeiAtbin+3iS/PmzY1uHgAH4G50AwDAFr322mvSoEEDOXfunKxfv14HHGvWrJEdO3aIt7d3pb3u8uXLryuwmDBhgg5+goKCxF79/PPPcvfdd8vzzz9f5a/9yiuvyIsvviiOrm7dujJp0qTLtgcGBhrSHgCOhcACAErRu3dvad++vb7/2GOPSUhIiLz11lvyww8/yF/+8pdKO2aenp42836cPXtWfH19q+z10tLSKjQwUkGhOp6urtfunFc9U2pxdCqAeOihh4xuBgAHxVAoACiDbt266dsDBw6U2L5nzx49L6B69eq6J0MFIyr4uNSff/4pN998s/j4+Oirxv/85z/l888/18NQDh8+fNU5Fh988IG0bNlSn+QHBwfr15g9e7b+mRoC9cILL+j7qofFPLSl+HN+9dVX0q5dO/3aqp0PPPCAJCUllXgN9ZqtWrWSTZs2yU033aRf66WXXtI/y8vLk/Hjx0vjxo3Fy8tLIiIi5G9/+5veXpxaV8OZatasKf7+/nLXXXfJ0aNHyzz8zGQyydSpUy2/g9nBgwfl/vvv121X7brhhhtkyZIlJZ5j1apV+jFz5szRvQ9q+JraNysrS//8999/lz59+ujj5+fnJ9HR0fLee+9ddY6FWh81apQsWrRIHxv1u6v3IS4u7rLfQb2+el/UZ6BRo0by8ccfl2vexrx58yzvkQpi1cn/pUPvVI9UtWrV9Pb+/fvr++pYqx6ewsLCMr0OAFQmx788AwAVwHyirk5MzXbu3Cldu3bVJ7FqGI06Yf3222/1Sd+CBQvknnvu0fupE8Hu3bvrk0w1f0Dt9+mnn+oT1WuZMWOGPPXUUzp4efrpp/VVeBWkqBPlwYMHy7333iv79u2Tb775Rv7973/rk1JFnXAqr7/+urz66qu6l0X1vKSnp+tARQUPW7ZsKdFDcOLECd1TowIPdWIbFhYmRUVFOkBQw8D++te/SosWLWT79u36tdTrqpNuM/X8KohR7erSpYse2tS3b99r/o6qLWpOxcMPPyy33367DBkypMSEbvVcqvdEHQc1sXvWrFm6TfPnz7ccY7OJEyfqXgp1sq0CHXV/xYoVcuedd0qtWrX0MQwPD5fdu3fLjz/+qNevRv3e3333nYwcOVIHS++//77cd999kpiYqNuiqOOo5oOo51dD0tRJvhpKZ34PyhJYDRs2TDp06KCHKanfWQU9v/3222XvkXruXr16SadOneSdd96R//73v/Luu+/qYOaJJ5645mupx2dkZFy2XQU06nMJAFYxAQAsPv/8c5P6avzvf/9rSk9PNyUlJZnmz59vqlmzpsnLy0uvm912222m1q1bm86dO2fZVlRUZOrSpYupSZMmlm2jR482ubi4mLZs2WLZduLECVP16tX1ax06dMiy/eabb9aL2d13321q2bLlVd+ht99++7LnUQ4fPmxyc3Mzvf766yW2b9++3eTu7l5iu3pN9RzTp08vse+XX35pcnV1Nf36668ltqv91P6//fabXt+6dateHzlyZIn9Bg8erLePHz/+mp8ytd+TTz5ZYtszzzyjtxd//ezsbFODBg1MkZGRpsLCQr1t5cqVer+GDRuazp49a9n3/Pnzet/69eubTp06VeK51Xtlptp36Z9Ete7p6WlKSEiwbNu2bZve/sEHH1i29evXz+Tr62s6duyYZdv+/fv1Mb7Wn9n8/HxTaGioqVWrVqbc3FzL9h9//FE/dty4cZZtQ4cO1dtee+21Es/Rpk0bU7t27UzXYn6PS1v+7//+75qPB4BrYSgUAJSiR48e+oqzGvajegvU1Vw1xEkNY1JOnjypr8irnoDs7Gx9FVgt6qq/uqK8f/9+y1AWNXSmc+fOEhsba3l+NaznwQcfvOaxV1er1XCijRs3lvt9UlfaVY+DaqO5fWpRV+ybNGkiK1euLLG/6kFRV84vHaKjeilU1qDiz3Hrrbfqn5ufY+nSpfpW9SoU98wzz4g11PN27NhRbrzxRss2NQRI9Z6oXqRdu3aV2H/o0KH66ruZuuJ/6NAh3Y5L52+UZZiS+hyo3gAzNYQqICBAD88y9wCoXgPVS1W7dm3LfmrYmOr9uZY//vhDzy1RPSLFkwKonh51zC8d8qU8/vjjlw3TM7fnWiIjI3UPzqWLte8TACgMhQKAUqix/k2bNpXMzEyZOXOm/PLLLyWGLiUkJOg5AWqYkVpKo04Y1TCpI0eO6MDiUurk81r+/ve/6xNXdXKt9u/Zs6ceaqSGYF2LCm5UG1UQURoPD48S66qtl04eV8+hhg1daViP+h0V9TuqSdLFT8KVZs2aiTXU86phP5dSwY7552r+g5maZ1KceU5M8X3Ko169epdtU8PhTp06Zfn9c3NzS30vy/L+qvZf6TipwEINxSpOBR+XvhfF23MtKkBWwRIAVAYCCwAohTqRN2eFUlej1RVzdUK/d+9efcVc9QQoaiy/6qEoTVlOLK9FnUCr11TzAVTPh5q78dFHH8m4ceP0eP6rUW1UV+V/+ukncXNzu+zn6vcorviV/uLP0bp1a5k8eXKpr6F6dGxJab+DNUo7bsqFkVJV70rtAQBbQGABAGU4mVOTatUE7A8//FBP1G7YsKHlqv+1rgDXr19f93BcqrRtV7rKPHDgQL3k5+frCdtqUraaCK6uYF9pSI/qPVAnwOoqvup9uR7qObZt2ya33XbbVYcOqd9RBSGqh6D41XcVFFlDPW9pz6GycZl/fq32K6r+SGVcqQ8NDdXvwfW+v+b2q9/RPLzMTG271u8HALaEORYAUAYqHavqxZgyZYrOzKROKNU2lVb0+PHjl+2vsi+ZqR6NdevWydatWy3b1ByNr7/++pqvq+ZsFKeGKkVFRemAoaCgQG8zZ/O5tPK2CkBUUKR6Ni69wq7WL33u0qj5GWquiMpOdSk1BCgnJ0ffN88nUFmTilPHyxoqReyGDRv08TNTr/nJJ5/o+QLqWFxN27ZtdWCl2nHp8amIXgd1fFXAorJjJScnlwgqVE/RtaheMfVZmj59eon0veqxaghaWbJqAYCtoMcCAMpI1YtQ9RRUelA1gVbNw1BDpNRQoREjRuheDJUqVJ0EqwnX6kq/omo+qDSsKpXq6NGjLelm1fh9FWBcrSdAzalQk63VnAqV/lWdbKpeE3XCqdKfKqr+gfLyyy/rVLGqF6Vfv376ar2ql6F6NtREZzWkSz1GTWZeuHChngB9rSrXKgWsSqGrfl81UVu1Q01YVj0GavuyZcv0ybGamD5o0CA9TEvNS1EpYuPj48vcK3MlqndIpdJVgYuaGK4mvat0s+p3UMPCrlX8Tv182rRp+nioNqrJ6SotrGq/Shes2m8tVa9CVUxXx0alfFXHR71Hal5H8WCyNOq9UoUXVbtUnRN1DM3pZlXgpOqCVCT13qjPYmkonAfAatfMGwUATphuduPGjZf9TKU2bdSokV5UGlPlwIEDpiFDhpjCw8NNHh4epjp16pjuvPNOnaK2OJVqtlu3bjplbd26dU2TJk0yvf/++/q1UlJSrphu9uOPPzbddNNNpho1aujHqtd+4YUXTJmZmSWef+LEifq1VWrYS1PPLliwwHTjjTea/Pz89NK8eXOd1nXv3r0lXvdKaW1VStS33npL/1y1ITg4WKc3nTBhQol2qHSpTz31lG6reh2VhlWl57Um3az5GA8YMMAUFBRk8vb2NnXs2FGnYy3OnG523rx5pT73mjVrTLfffrvJ399fty06OrpEytgrpZstrT0qda1K/VpcfHy8Tvuq0tOq9+jTTz81Pffcc7q9ZTF37lz9eHV8VRriBx980HT06NES+6jXVG2/VGltL2+6WU4HAFQEF/WP9eEJAKC8VIpPNZTqzJkzTMp1QKqHSPWKqMxaAOAMmGMBAFVAzUcoTs1vUNWm1VAqMv043vurgglVg0PNwwEAZ0GPBQBUATW+X51kqvSxagz9Z599pif7qnkIN910E++BnVPzNh555BE9z0bVplDzOtRkbFWg70p1RADA0TB5GwCqgMpuNH/+fJ3NSE3WVtmKVHBBUOEY7rjjDj3JPCUlRRdSVAUR33jjDYIKAE6FHgsAAAAAVmOOBQAAAACrEVgAAAAAsJrTzbEoKirSEyZVkairFaUCAAAAnJ3JZJLs7GypXbv2NYuSOl1goYKKiIgIo5sBAAAA2I2kpCSpW7fuVfdxusBC9VSYD05AQIDRzQEAAABsVlZWlr4obz6HvhqnCyzMw59UUEFgAQAAAFxbWaYQMHkbAAAAgNUILAAAAAA4RmAxdepUiYyMFG9vb+nUqZNs2LDhivt+8cUXuium+KIeBwAAAMCJA4u5c+fKmDFjZPz48bJ582aJiYmRXr16SVpa2hUfo+ZGHD9+3LIcOXKkStsMAAAAwMYCi8mTJ8uIESNk2LBhEhUVJdOnTxdfX1+ZOXPmFR+jeinCw8MtS1hYWJW2GQAAAIANZYXKz8+XTZs2ydixYy3bVOGNHj16yLp16674uDNnzkj9+vV1sbu2bdvKG2+8IS1btix137y8PL0UT5kFwHZMWb9eXvn5ZzlfVGR0UwDD+Xh4yNf33it9mjQxuikAYF+BRUZGhhQWFl7W46DW9+zZU+pjmjVrpnszoqOjJTMzU9555x3p0qWL7Ny5s9SiHZMmTZIJEyZU2u8A4PolZ2fLS/Hxknv+PIcRUBfDCgtlxOLFsvvJJyXAy4tjAsCu2F0di86dO+vFTAUVLVq0kI8//lgmTpx42f6qN0TN4bi0yAcA4722erUOKjrXrStzBwwwujmAoVSvXc+vvpKEkydl/MqV8u877uAdAWBXDA0sQkJCxM3NTVJTU0tsV+tq7kRZeHh4SJs2bSQhIaHUn3t5eekFgG1Jz8mRz7Zs0fff6tFDIgIDjW4SYLgPeveW3l9/LTM2b5aJt94q1Tw9jW4SANjH5G1PT09p166dxMfHW7apeRNqvXivxNWooVTbt2+XWrVqVWJLAVS02du36yu0HWrXlm7163OAARHp1aiRNK5eXXIKCmTBrl0cEwB2xfCsUGqY0owZM2TWrFmye/dueeKJJyQnJ0dniVKGDBlSYnL3a6+9JsuXL5eDBw/q9LQPPfSQTjf72GOPGfhbACivL7Zt07dDY2I4eECxrIePXPw/Mevi/xEAsBeGz7EYOHCgpKeny7hx4yQlJUViY2MlLi7OMqE7MTFRZ4oyO3XqlE5Pq/YNDg7WPR5r167VqWoB2IdtKSmyNSVFPN3c5IFWrYxuDmBTHo6JkVdXrpSVhw/L4dOnJTIoyOgmAUCZuJhMJpM4ETV5OzAwUGeUUoX2AFS9McuWyb/Xr5cBUVEy7/77eQuAS/T4z38k/tAhmXDLLTLu5ps5PgDs4tzZ8KFQAJxLQWGhfPXnn/o+w6CA0j0SG2sZDuVk1/8A2DECCwBVKi4hQdLPnpUwPz89URXA5e5p3lxnhDp46pSsSUzkEAGwCwQWAAyZtP1QdLR4uLlx9IFS+Hl6yl8uzh38YutWjhEAu0BgAaDKnDh7Vhbv3avvMwwKKNtwqHm7dklOfj6HC4DNI7AAUGW+2bFDCoqKpG2tWtL6YuY3AKW7sV49aRgcLNn5+bJwzx4OEwCbR2ABoMqYh3SY8/QDuHpNC3PPHsOhANgDAgsAVWJ7aqpsOn5cPFxdZVDr1hx1oAyGXAwsfj50SBIzMzlmAGwagQWAKmGuInxn06YS4uvLUQfKQBXH6x4ZKSrh7JdU4gZg4wgsAFS680VFltoV5gmpAMrGMhyKmhYAbByBBYBKtywhQVJzcqSmr6/0btyYIw6Uw31RUeLn4SEJJ0/K2qQkjh0Am0VgAaDKalc82Lo1tSuAclKF8u5v2bLEkEIAsEUEFgAq1cncXPnhYu0KhkEB1g2Hmrtzp5wtKOAwArBJBBYAKtWcHTskv7BQYsPDJSY8nKMNXIeb6tfXE7mz8vJkETUtANgoAgsAlcqcf59K28D1cy1W04LhUABsFYEFgEqzKz1dNiYni7urqwymdgVQITUtVhw4IEezsjiaAGwOgQWASjPrYm9F3yZNJNTPjyMNWKFhcLAeEkVNCwC2isACQKXVrviS2hVAhXqk2HAok0mFGABgOwgsAFQKNVzj+JkzUsPHR/o0acJRBirAgKgo8fXwkL0nTsjvx45xTAHYFAILAJViVrHaFZ5ubhxloAL4e3nJfS1alEiMAAC2gsACQIU7lZtrSYlJ7QqgYpn/T6lUzufOn+fwArAZBBYAKpwq4pVXWCitQ0N1/QoAFeeWyEipFxgomXl58j01LQDYEAILAJU2DEpdWXVxceEIAxVc02JIdLS+/8XF/2sAYAsILABUqD0ZGbL+6FFxc3HR8ysAVLyhF4dDLT9wQJKzsznEAGwCgQWASqld0btJEwmrVo2jC1SCxtWry4316kmRySRfXUzrDABGs4nAYurUqRIZGSne3t7SqVMn2bBhQ5keN2fOHD3Mon///pXeRgDXVli8dsXFfPsAKsfQi//HVHYoaloAsAWGBxZz586VMWPGyPjx42Xz5s0SExMjvXr1krS0tKs+7vDhw/L8889Lt27dqqytAK4u/tAhOZadLdV9fOTOpk05XEAluj8qSnzc3WV3RoZsTE7mWAMwnOGBxeTJk2XEiBEybNgwiYqKkunTp4uvr6/MnDnzio8pLCyUBx98UCZMmCANGzas0vYCuDJzXv1BrVqJl7s7hwqoRIHe3nLvxZoW5iGIAOC0gUV+fr5s2rRJevTo8b8Gubrq9XXr1l3xca+99pqEhobK8OHDr/kaeXl5kpWVVWIBUPEyz52ThdSuAAwZDvUNNS0AOHtgkZGRoXsfwsLCSmxX6ykpKaU+Zs2aNfLZZ5/JjBkzyvQakyZNksDAQMsSERFRIW0HUNK3O3fqYl0ta9aUdrVqcXiAKnBrgwZSNyBATp07J4v37uWYA3DuoVDlkZ2dLQ8//LAOKkJCQsr0mLFjx0pmZqZlSUpKqvR2As7InE+f2hVA1XFzdbXUtDDXjwEAoxg6CFoFB25ubpKamlpiu1oPL6Va74EDB/Sk7X79+lm2FRUV6Vt3d3fZu3evNGrUqMRjvLy89AKg8uw7cULWJiXpwl3UrgCqvqbFG2vWSFxCghzPzpZa/v68BQCcr8fC09NT2rVrJ/Hx8SUCBbXeuXPny/Zv3ry5bN++XbZu3WpZ7rrrLunevbu+zzAnwBj/uXil9I7GjTmpAapY0xo1pHPdulJoMsnX27dz/AEYxvC0LSrV7NChQ6V9+/bSsWNHmTJliuTk5OgsUcqQIUOkTp06eq6EqnPRqlWrEo8PCgrSt5duB1B1tSvMQzCoXQEYQw1BXHf0qM7M9lznzrrGEwA4XWAxcOBASU9Pl3HjxukJ27GxsRIXF2eZ0J2YmKgzRQGwTSsPH5ajWVkS5O0t/Zo1M7o5gFP6S8uW8nRcnOxMT5fNx49Lu9q1jW4SACfkYnKycp0q3azKDqUmcgcEBBjdHMDuPbxwoXz155/yRPv28lHfvkY3B3BagxYskDk7dsioDh3kgz59jG4OACc8d6YrAMD1f9nk5cmCXbssQzEAGMc8FHH2jh2Sd/48bwWAKkdgAeC6zdu5U3LPn5fmISHSgaEXgKF6NGwotf395WRurizZv593A0CVI7AAYH3tipgYJosCNlDT4uGLNS3UJG4AqGoEFgCuS8LJk7JGJVdwcZGHLp7MADDW0IvDoZbu3y+pZ87wdgCoUgQWAKyqXXF7w4ZSh0QIgE1oUbOmdKpTR9e0mE1NCwBVjMACQLkVmUz/q13BpG3Appj/T36+das4WeJHAAYjsABQbqsPH5bEzEwJ9PKSu6ldAdiUgS1bipebm2xPS5OtKSlGNweAEyGwAHDdk7YfaNVKfDw8OIKADQn28ZG7mzfX9809iwBQFQgsAJRLdl6ezL9Yu8I8URSAbda0+Hr7dskvLDS6OQCcBIEFgHJZsHu3nC0okKY1asgNdety9AAbdHujRhJerZpknD2rM0QBQFUgsABQLub8+NSuAGyXOzUtABiAwAJAmR08dUpWHzkiLiLyMMOgAJtmHqqoqnCn5+QY3RwAToDAAkC5a1f0aNhQ6lK7ArBpLUNDpX3t2nK+qIiaFgCqBIEFgDLXrjAHFtSuAOxrErc5kxsAVCYCCwBl8uuRI3Lo9Gnx9/SU/hdTWQKwbSoltKebm65nsY2aFgAqGYEFgDIxX/FUxbd8qV0B2IUavr7Sr2lTfZ+aFgAqG4EFgGs6k58v83bu1PcZBgXYF/P/2a/+/FMKqGkBoBK5l/cBwcHB4uKicsKUpLZ5e3tL48aN5ZFHHpFhw4ZVVBsBGOy73bslp6BAGlevLl0iIoxuDoBy6NWokYT5+UlqTo7EJSRIv2bNOH4AbKPHYty4ceLq6ip9+/aVCRMm6EXdV9uefPJJadq0qTzxxBMyY8aMymkxAMNqV6j0laVdWABguzzc3OSh6Gh9n0ncAGyqx2LNmjXyz3/+Ux5//PES2z/++GNZvny5LFiwQKKjo+X999+XESNGVGRbARjgyOnTsvLwYV27Ygi1KwC7pC4KvLtunSzeu1dX4w7x9TW6SQAcULl7LJYtWyY9evS4bPttt92mf6b06dNHDh48WDEtBGAoc4rZWxs0kHqBgbwbgB1qHRYmbWvVkoKiIvlm+3ajmwPAQZU7sKhevbosXrz4su1qm/qZkpOTI/7+/hXTQgCGMZlMlqET5iq+AOy7pgXZoQDYzFCoV199Vc+hWLlypXTs2FFv27hxoyxdulSmT5+u11esWCE333xzxbcWQJVak5goB0+dkmqennJvixYcfcCODWrdWp5bvlw2HT8u21NTdS8GABjaY6HmTaxevVr8/Pzku+++04uvr6/eNnz4cL3Pc889J3Pnzi3zc06dOlUiIyN1VqlOnTrJhg0brriver327dtLUFCQbkNsbKx8+eWX5f01AJSB+crmX6KixM/Tk2MG2DE1r+JOaloAsKUeC6Vr1656qQgqABkzZozu7VBBxZQpU6RXr16yd+9eCQ0NvWx/Ndzq5ZdflubNm4unp6f8+OOPOrWt2lc9DkDFyMnPl28v1q4YejEPPgD7r2mxcM8eXdPizR49xN2VclYAKo6LSQ2iLqeioiJJSEiQtLQ0fb+4m266qVzPpYKJDh06yIcffmh57oiICBk9erS8+OKLZXqOtm3b6pS3EydOvOa+WVlZEhgYKJmZmRIQEFCutgLORJ14PLxwoTQMDpb9o0eLK2lmAbunCuTVmTxZ0s+elR8HDZK+F3swAKAizp3L3WOxfv16GTx4sBw5ckRP7CxO5bcvLEdVz/z8fNm0aZOMHTvWsk3Vw1BZp9atW3fNx6vX//nnn3XvxltvvVXO3wRAWYZBqUnbBBWA49S0eLB1a5ny++86MQOBBYCKVO7AQtWvUHMclixZIrVq1bKqWFZGRoYORMIumUCm1vfs2XPFx6mIqU6dOpKXlydubm7y0Ucfye23317qvmoftRSPugBcXWJmpsRfTBlN7QrA8YZDqcDih7175WRurlT38TG6SQCcNbDYv3+/zJ8/Xxo3bixGUalst27dKmfOnJH4+Hg9R6Nhw4Zyyy23XLbvpEmTdHVwAGX35bZtovojb4mMlMigIA4d4EBiwsMlNjxctqakyJwdO2Rkhw5GNwmAgyj3rC01J0LNr6gIISEhuschNTW1xHa1Hh4efsXHqeFSKrBRGaFUBqoBAwboAKI0apiV6uEwL0lJSRXSdsBRqSGG5mFQ5rz3AByLuS7NF1u3Gt0UAM7cY6EmVauT+ZSUFGndurV4eHiU+Hl0dHSZn0tldWrXrp3udejfv79l8rZaHzVqVJmfRz2m+HCn4ry8vPQCoGzWHT0q+0+eFD8PD7kvKorDBjigwa1bywsrVsjG5GTZlZ4uUTVrGt0kAA6g3IHFfffdp28fffRRyzY1z0Jd5Szv5G1FDWMaOnSonrehCu6pdLOqcrdKIasMGTJEz6cw90ioW7Vvo0aNdDChCvOpOhbTpk0r768CoBTmK5gDoqJ0YTwAjifUz0/6Nmki3+/dK7O2bpW3rjBPEQAqNbA4dOiQVKSBAwdKenq6jBs3TveCqOFNcXFxlgndiYmJeuiTmQo6Ro4cKUePHhUfHx9dz+Krr77SzwPAOrkFBTL3Yu0KNcETgGMPh1KBxZd//imv33YbNS0AGFPHwp5RxwK4sm+2b5fB332nJ2wfeOop0swCDiy/sFBqv/uunMjNlaWDB0vvJk2MbhIAZ6hj8cMPP0jv3r31fAp1/2ruuuuu8rUWgM1Qee2VIdHRBBWAg/O8WNPi/Q0bdMIGAgsA1ipTYKEmVqthSqGhoZZJ1qW5njkWAGzD0awsWXHggL5P7QrAOQyNjdWBxaI9e+RUbq4EU9MCQGWnm1VZl1RQYb5/pYWgArBfX/35p65dcVP9+tKoenWjmwOgCrQJD5fWoaGSV1homV8FAFVWxwKA41FTrczZoMz57QE4PjXSwJyowVy/BgCqLLB46qmn5P33379s+4cffijPPPPMdTcEgHF+P3ZM9p44Ib4eHnI/tSsAp6LmWbi5uMj6o0dlT0aG0c0B4EyBxYIFC6Rr166Xbe/SpYvMnz+/otoFoAqpPPbKfS1aiD8FJQGnElatmmXitvm7AACqJLA4ceKETjl1KZV+KoMrHYDdOXf+vHyzY4e+zzAowDk9cnEIpKppUVhUZHRzADhLYNG4cWNdwO5SP/30kzRs2LCi2gWginy/Z49k5uVJRECAdG/QgOMOOKE7mzaV6j4+ciw7W+IruBAuAOdR7srbY8aMkVGjRulq2bfeeqveFh8fL++++65MmTKlMtoIoApqV6jeClcXF4414IS83N1lUKtWMnXjRp3IoWejRkY3CYAzBBaPPvqo5OXlyeuvvy4TJ07U2yIjI2XatGkyZMiQymgjgEqSnJ0ty6ldAUANh4qN1YHFQtWLee6cBHp7c1wAVN5QqPPnz8t//vMfuffee+Xo0aOSmpqqy3wfPHiQoAKw09oVRSaTdI2IkCY1ahjdHAAGalerlrSsWVPPu/qWmhYAKjuwcHd3l8cff1zOnTun12vWrCnVqlW7ntcFYEO1K8x57AE4d00LcwIH8xBJAKjUydsdO3aULVu2lPdhAGzMH8nJsjsjQ3zc3aldAUB7KDpaz7Vam5Qk+06c4KgAqNw5FiNHjpTnnntOD4Vq166d+Pn5lfh5dHR0eZ8SgAHMvRX3tGjBWGoAWi1/f7mjcWNZun+//GfbNvnnxSQtAFApgcUDDzxgqcBdvPtUDatQt4WFheV9SgBVLK9Y7Qpz/noAUNRwKBVYzNq2TSbccou4uZZ7cAMAJ1XuwOIQ+a0Bu7d43z45de6c1A0IkFupXQGgmLuaNZMgb285mpUlKw8flh7UqAJQWYFF/fr1y/sQADY6DOrh6GiuRgIowftiTYtpf/yhey0ILACU1XX1bx44cEBGjx4tPXr00IsaFqW2AbB9x7OzJS4hQd83Z4ABgOLM3w0Ldu2SrLw8Dg6Aygksli1bJlFRUbJhwwY9UVstv//+u7Rs2VJWrFhR3qcDUMW+3r5dCk0m6Vy3rjQLCeH4A7hMxzp1pHlIiOSePy/zqGkBoLICixdffFGeffZZHUxMnjxZL+r+M888I3//+9/L+3QAqpBKsqCGNij0VgC4EpWMxZzYwfydAQAVHljs3r1bhg8fftn2Rx99VHbt2lXepwNQhTYfPy470tLEy81NBrZqxbEHcM2aFr8mJkrCyZMcKQAVH1ioattbL078LE5tCw0NLe/TATCodoXK+gIAV1InIEBuv5gRStW0AIAKzwo1YsQI+etf/yoHDx6ULl266G2//fabvPXWWzJmzJjyPh2AKqxdMfti7QqGQQEoi0diY2XZgQN6ONQ/brlF92AAQIUFFq+++qr4+/vLu+++K2PHjtXbateuLf/4xz9KFM0DYFuW7N8vJ3Nzpba/v+UqJABczd3Nmkmgl5ckZmbK6sOHpTt1bwBYOxTqhx9+kIKCAsuELjV5++jRo5KZmakXdf/pp5/WP7seU6dOlcjISPH29pZOnTrpjFNXMmPGDOnWrZsEBwfrRaW7vdr+AC6gdgWA8vLx8JCBLVte+A5hOBSAiggs7rnnHjl9+rS+7+bmJmlpafq+6rlQizXmzp2rh1CNHz9eNm/eLDExMdKrVy/La1xq1apVMmjQIFm5cqWsW7dOIiIipGfPnnLs2DGr2gE4stQzZ2Tp/v36PsOgAJR3OJQyf9cuyaamBQBrAws1YXv9+vWWdJXX2zNRGpWuVs3bGDZsmK6PMX36dPH19ZWZM2eWuv/XX38tI0eOlNjYWGnevLl8+umnUlRUJPHx8RXWJsDRzL5Yu0Llpm9Rs6bRzQFgR26oW1ea1qghZwsKZMHu3UY3B4C9BxaPP/643H333bq3QgUV4eHh+n5pS3nk5+fLpk2b9HAmS4NcXfW66o0oi7Nnz+phWtWrVy/XawPOQl0M+PxiNihzXnoAKCv1d9/c02keUgkA1z15W03MfuCBByQhIUHuuusu+fzzzyUoKEislZGRIYWFhRIWFlZiu1rfs2dPmZ5DFeVTk8eLByfF5eXl6cUsKyvLylYD9mVrSopsT0sTTzc3eYDaFQCuw8PR0fLKzz/L6iNH5NCpU9IgOJjjCOD6s0KpYUdqUXMh7r//fj1cyWhvvvmmzJkzR8+7UBO/SzNp0iSZMGFClbcNsBXmqrkqu0uwj4/RzQFghyICA6VHw4ay4uBBXdNi/C23GN0kAI5QIE8FFhUVVISEhOjhU6mpqSW2q3U13Opq3nnnHR1YLF++XKKjo6+4n0qJa85epZakpKQKaTtgD/ILC+Xr7dtLTMAEgOth/g5RFyuKTCYOIgDrA4uK5OnpKe3atSsx8do8Ebtz585XfNy//vUvmThxosTFxUn79u2v+hpeXl4SEBBQYgGchcoElXH2rIRXqyY9GzUyujkA7Fj/5s3F39NTDp0+Lb8eOWJ0cwDYIEMDC0WlmlW1KWbNmiW7d++WJ554QnJycnSWKGXIkCGWQnyKqvCtivSprFGq9kVKSopezpw5Y+BvAdj2MKiHWrcWd1fD/7sDsGO+xWpamL9bAKA4w880Bg4cqIc1jRs3TqeQ3bp1q+6JME/oTkxMlOPHj1v2nzZtms4mNWDAAKlVq5ZlUc8B4H/Sc3Lkx3379P2hDIMCUIHDob7duVPO5OdzTAFc3+TtyjRq1Ci9lEZNzC7u8OHDVdQqwP5rV5wvKpL2tWtLq9BQo5sDwAF0iYiQxtWrS8LJk/Ld7t0yhBTWAK6nx6JPnz568rOZmjhtrsatnDhxQhe4A2AbzEMVqLQNoKJQ0wJAhQQWy5YtK1EP4o033pCTJ09a1s+fPy979+4t69MBqETbUlJkS0qKeLi6yiBqVwCoQKqXwkVEVh4+LEeKXWAEANfyVO+92joA2+utuKtZM6lhAzVnADiOeoGB0r1BA31f1bQAAJuZvA2gYhVQuwJAJXvk4twKdRGDC40Ayh1YqHGVarl0GwDbEpeQIGk5ORLq5ye9qF0BoBLc26KFVPP0lAOnTslvFJ4FUN6sUOqKxCOPPKILzinnzp2Txx9/XPz8/PR68fkXAIzzRbHaFR5ubrwVACqcn6en3B8VJZ9v3SpfbN0qN9arx1EGUPYei6FDh0poaKgEBgbq5aGHHpLatWtb1tXPVDE7AMY5cfasLL6YRIHaFQCqqqbF2YICDjaAsvdYfP755xwuwMZ9s2OHFBQVSZvwcIm+WGQSACqD6qVoGBwsB0+dkoW7d8uD0dEcaMDJMXkbcCBqSELxK4kAUFlcXVwsdXLMQzABODcCC8BB7EhLk03Hj+vaFYNbtza6OQCcgLnydvzBg5JYrIguAOdEYAE4iFkXeyv6Nm0qIdSuAFAFIoOC5JbISFGVrb6k1wJwegQWgAM4X1QkX/75Z4n88gBQFahpAcCMwAJwAMsSEiQ1J0dq+vpKnyZNjG4OACdyX1SU+Hl4yP6TJ2Xd0aNGNweAgQgsAAegqt8qam4FtSsAVCVVKG9AVFSJBBIAnBOBBWDnTubmyvcXa1eQDQqAEczfPXN37pRcaloATovAArBzc3bskPzCQokJC5PY8HCjmwPACd1Uv77UDwyUrLw8WbRnj9HNAWAQAgvAzlG7AoDRqGkBQH8XcBgA+7UrPV02JieLO7UrANhITYv/Hjwox7KyjG4OAAMQWAAOULtCZYIK9fMzujkAnFij6tWlW716UmQyWdJfA3AuBBaAnaJ2BQBbncSthmiaTKpsHgBnQmAB2Ck13OD4mTNSw8dHV9sGAKPdHxUlvh4esvfECdlw7JjRzQFQxQgsADuftK1qV3i6uRndHAAQfy8vua9FC30kqGkBOB8CC8AOncrNtaR0pHYFAFsy9OIk7m927JBz588b3RwAVYjAArBD3+7cKXmFhdIqNFTaULsCgA3p3qCBRAQESGZennxPTQvAqRgeWEydOlUiIyPF29tbOnXqJBs2bLjivjt37pT77rtP7+/i4iJTpkyp0rYCtuKLbdv07SMxMfr/AgDYYk2LWRe/qwA4B0MDi7lz58qYMWNk/PjxsnnzZomJiZFevXpJWlpaqfufPXtWGjZsKG+++aaEc5UWTmpPRoasP3pU3Fxc5MHoaKObAwBXrGmx7MABSc7O5ggBTsLQwGLy5MkyYsQIGTZsmERFRcn06dPF19dXZs6cWer+HTp0kLffflseeOAB8fLyqvL2ArZUu+KOxo0lvFo1o5sDAJdpUqOGdI2I0DUtvqKmBeA0DAss8vPzZdOmTdKjR4//NcbVVa+vW7fOqGYBNq2wqMhSeIpJ2wBsmfk7Sg2HoqYF4BwMCywyMjKksLBQwsLCSmxX6ykpKRX2Onl5eZKVlVViAexV/KFDciw7W4K9vaUftSsA2HhNC293d9mVni5/JCcb3RwAzjB5u7JNmjRJAgMDLUtERITRTQIqpHaFl7s7RxKAzQr09pZ7qWkBOBXDAouQkBBxc3OT1NTUEtvVekVOzB47dqxkZmZalqSkpAp7bqAqZZ47Jwsvpm40Z1wBAFumMteZa1rkUdMCcHiGBRaenp7Srl07iY+Pt2wrKirS6507d66w11GTvAMCAkosgL3WrlDFpqJq1pT2tWsb3RwAuKZbGzSQugEBcurcOVm8bx9HDHBwhg6FUqlmZ8yYIbNmzZLdu3fLE088ITk5OTpLlDJkyBDd41B8wvfWrVv1ou4fO3ZM309ISDDwtwCqBrUrANgbN1dXefhiWmzzUE4AjsvQQdoDBw6U9PR0GTdunJ6wHRsbK3FxcZYJ3YmJiTpTlFlycrK0adPGsv7OO+/o5eabb5ZVq1YZ8jsAVWH/iROyNilJF556iNoVAOyIGro5ac0aiUtIkJQzZ0iTDTgww2d/jho1Si+luTRYUBW3SVkHZ2SuXturUSOp5e9vdHMAoMyahYRI57p1Zd3Ro/L1n3/Kc126cPQAB+XwWaEAR6hdYQ4sqF0BwB6ZE06oIZ1cIAQcF4EFYONWHj4sR7OyJMjbW+5q1szo5gBAuQ1s1Uq83NxkR1qabD5+nCMIOCgCC8DGmXsrHmjZUhebAgB7oy6M3HOxpoX5Ow2A4yGwAGxYVl6eLNi1S99nGBQARxgO9fX27dS0ABwUgQVgw+bt3Cm5589Lsxo1pGOdOkY3BwCu2+0NG0ptf385mZsrS/bv50gCDojAArBhxSdtu7i4GN0cAKiQmhYMhwIcE4EFYKMSTp6UX1UtFxcXyx9jAHCE4VBL9u2T1DNnjG4OgApGYAHYqP9c7K1QwwfqBAQY3RwAsFqLmjX1sM5Ck0lmb9/OEQUcDIEFYIOKTCZLYGG+wgcAjuCRi99pDIcCHA+BBWCDVh8+LEcyMyXAy0v6N29udHMAoMI80KqVeLq5ybbUVNmaksKRBRwIgQVgg1R1WnPtCh8PD6ObAwAVJtjHR+6+WOzzi61bObKAAyGwAGxMdl6ezL9Yu2JobKzRzQGACmeuy6NqWuQXFnKEAQdBYAHYmAW7d8vZggJpUr26dK5b1+jmAECF69mokYRXqyYZZ8/KT9S0ABwGgQVgY8xDA6hdAcBRubu6ykOtW5cY+gnA/hFYADbk0KlTsvrIEVGl8KhdAcCRmYd6/rhvn6Tn5BjdHAAVgMACsCHmFLO3NWwoEYGBRjcHACpNq9BQaV+7tpwvKpJvduzgSAMOgMACsKHaFea87uY87wDgyMx1esgOBTgGAgvARvx65IgcOn1a/D095Z4WLYxuDgBUukGtWomHq6tsSUmRP1NTOeKAnSOwAGyEubfiLy1bii+1KwA4gRq+vnLXxZoWs6hpAdg9AgvABpzJz5dvd+4skd8dAJxpONRX27dLATUtALtGYAHYgO9275acggJpFBwsXSMijG4OAFSZOxo3llA/P0nLyZG4hASOPGDHCCwAG2CeuKiu3Lm4qGSzAOAcPNzcqGkBOAgCC8BgR06flpWHD+v7Q8gGBcCJa1os3rtXTpw9a3RzAFwnAgvARmpX3NqggdQPCjK6OQBQ5aLDwqRNeLgUUNMCsGs2EVhMnTpVIiMjxdvbWzp16iQbNmy46v7z5s2T5s2b6/1bt24tS5curbK2AhXJVKx2hXkCIwA4I3PiCmpaAPbL8MBi7ty5MmbMGBk/frxs3rxZYmJipFevXpKWllbq/mvXrpVBgwbJ8OHDZcuWLdK/f3+97KBqJ+zQb0lJcuDUKanm6Sn3UbsCgBMb3Lq1rmmx6fhx2XGFcwAAts3wwGLy5MkyYsQIGTZsmERFRcn06dPF19dXZs6cWer+7733ntxxxx3ywgsvSIsWLWTixInStm1b+fDDD6u87YC1zFfm7o+KEj9PTw4oAKcV4usrfZs21fepaQHYJ3cjXzw/P182bdokY8eOtWxzdXWVHj16yLp160p9jNquejiKUz0cixYtEnugcnTvSk83uhmwAarK9tyLtSsYBgUAIo/ExMiiPXvk402bpFPdutKkenUOCyAiEYGBUt3Hx+aPhaGBRUZGhhQWFkpYWFiJ7Wp9z549pT4mJSWl1P3V9tLk5eXpxSwrK0uMdCI3V2I//tjQNsC2xISFSbf69Y1uBgAYrk+TJtKtXj35NTFR7p83z+jmADbji7vvtmRPs2WGBhZVYdKkSTJhwgSxFa4uLlKrWjWjmwEbyd3+l6goGdutm/5cAICzU9+LKx5+WP62YoUs2L1bikwmo5sE2AQfDw+xB4YGFiEhIeLm5iapqakltqv18PDwUh+jtpdnfzXMqvjQKdVjEWFgZWNVXTT5uecMe30AAGyZl7u7vNe7t14A2BdDJ297enpKu3btJD4+3rKtqKhIr3fu3LnUx6jtxfdXVqxYccX9vby8JCAgoMQCAAAAwMGGQqnehKFDh0r79u2lY8eOMmXKFMnJydFZopQhQ4ZInTp19JAm5emnn5abb75Z3n33Xenbt6/MmTNH/vjjD/nkk08M/k0AAAAA52V4YDFw4EBJT0+XcePG6QnYsbGxEhcXZ5mgnZiYqDNFmXXp0kVmz54tr7zyirz00kvSpEkTnRGqVatWBv4WAAAAgHNzManSv05EzbEIDAyUzMxMhkUBAAAAFXTubHiBPAAAAAD2j8ACAAAAgP3Psahq5pFfRhfKAwAAAGyd+Zy5LLMnnC6wyM7O1rdG1rIAAAAA7O0cWs21uBqnm7yt6mQkJyeLv7+/uBhU7dhcpC8pKYkJ5E6OzwL4HIDvBPD3AbZ8nqBCBRVU1K5du0Sm1tI4XY+FOiB169YVW0DBPvBZAN8J4O8DOFeArZ8zXqunwozJ2wAAAACsRmABAAAAwGoEFgbw8vKS8ePH61s4Nz4L4HMAvhPA3wc4ynmC003eBgAAAFDx6LEAAAAAYDUCCwAAAABWI7AAAAAAYDUCCwAAAABWI7AAAAAAYDUCCwAAAABWI7AAAAAAYDUCCwAAAABWI7AAAAAAYDUCCwAAAABWI7AAAAAAYDV3cTJFRUWSnJws/v7+4uLiYnRzAAAAAJtlMpkkOztbateuLa6uV++TcLrAQgUVERERRjcDAAAAsBtJSUlSt27dq+7jdIGF6qkwH5yAgACjmwMAAADYrKysLH1R3nwOfTVOF1iYhz+poILAAgAAALi2skwhYPI2AAAAAKsRWAAAAACw78Dil19+kX79+ulZ5qp7ZdGiRdd8zKpVq6Rt27bi5eUljRs3li+++KJK2goAAADARgOLnJwciYmJkalTp5Zp/0OHDknfvn2le/fusnXrVnnmmWfksccek2XLllV6WwEAAADY6OTt3r1766Wspk+fLg0aNJB3331Xr7do0ULWrFkj//73v6VXr16V2FIAAAAADjPHYt26ddKjR48S21RAobZfSV5enk6TVXwxUmZSpkyPmS5TW5StlwYAAACwB3YVWKSkpEhYWFiJbWpdBQu5ubmlPmbSpEkSGBhoWYwujufh4yGpf6ZKxp4MKSwoNLQtAAAAgFMGFtdj7NixkpmZaVlUYTwjeQd7i4vrhTzAZzPOGtoWAAAAoKLYVYG88PBwSU1NLbFNratCdz4+PqU+RmWPUoutcHVzFZ/qPjqoOJt+VvxrXbuKIQAAAGDr7KrHonPnzhIfH19i24oVK/R2e+Jb01ff0mMBAAAAR2FoYHHmzBmdNlYt5nSy6n5iYqJlGNOQIUMs+z/++ONy8OBB+dvf/iZ79uyRjz76SL799lt59tlnxZ741fTTtznpOUY3BQAAALD/wOKPP/6QNm3a6EUZM2aMvj9u3Di9fvz4cUuQoahUs0uWLNG9FKr+hUo7++mnn9pdqlnfkIs9FunMsQAAAIBjMHSOxS233CImk+mKPy+tqrZ6zJYtWyq5ZZWLoVAAAABwNHY1x8JRmAMLhkIBAADAURBYGDkUKo2hUAAAAHAMBBYGMKeYPZNyxoiXBwAAACocgYUBqtWqpm+zj2cb8fIAAABAhSOwMLLH4viZq05eBwAAAOwFgYWBPRYFZwskLyvPiCYAAAAAFYrAwgCefp7iFeBl6bUAAAAA7B2BhUGYZwEAAABHQmBhA/MsAAAAAHtHYGEQ/9oXAgsyQwEAAMAREFgYPRQqmZSzAAAAsH8EFgYHFgyFAgAAgCMgsDAIcywAAADgSAgsDOJf58Ici6yjWUY1AQAAAKgwBBYGCYoM0renj5wWUxHVtwEAAGDfCCwMElAnQFzdXaWooIjMUAAAALB7BBZGHXh3VwmICND3Tx86bVQzAAAAgApBYGGg4AbB+vb0YQILAAAA2DcCCwMFRgbq21OHThnZDAAAAMBqBBa2MIGbHgsAAADYOQILGxgKlXk408hmAAAAAFYjsLCBHguGQgEAAMDeEVgYKKjBhcAiMzFTis4XGdkUAAAAwCoEFgbyr+Uv7j7uYio00WsBAAAAu2Z4YDF16lSJjIwUb29v6dSpk2zYsOGq+0+ZMkWaNWsmPj4+EhERIc8++6ycO3dO7JGLq4vUbFFT30/flW50cwAAAAD7DCzmzp0rY8aMkfHjx8vmzZslJiZGevXqJWlpaaXuP3v2bHnxxRf1/rt375bPPvtMP8dLL70k9qpmFIEFAAAA7J+hgcXkyZNlxIgRMmzYMImKipLp06eLr6+vzJw5s9T9165dK127dpXBgwfrXo6ePXvKoEGDrtnLYctCokL0bcauDKObAgAAANhfYJGfny+bNm2SHj16/K8xrq56fd26daU+pkuXLvox5kDi4MGDsnTpUunTp88VXycvL0+ysrJKLLaEHgsAAAA4AnejXjgjI0MKCwslLCysxHa1vmfPnlIfo3oq1ONuvPFGMZlMcv78eXn88cevOhRq0qRJMmHCBLFVlsBid7qYikx63gUAAABgbwyfvF0eq1atkjfeeEM++ugjPSfju+++kyVLlsjEiROv+JixY8dKZmamZUlKShJbK5Ln5uUm53PPy+kjp41uDgAAAGBfPRYhISHi5uYmqampJbar9fDw8FIf8+qrr8rDDz8sjz32mF5v3bq15OTkyF//+ld5+eWX9VCqS3l5eenFVrm6u0pIsxBJ/TNV0nemW6pxAwAAAPbEsB4LT09PadeuncTHx1u2FRUV6fXOnTuX+pizZ89eFjyo4ERRQ6PsVVj0heFgyZuSjW4KAAAAYH9DoVSq2RkzZsisWbN0+tgnnnhC90CoLFHKkCFD9FAms379+sm0adNkzpw5cujQIVmxYoXuxVDbzQGGParTqY6+Pfb7MaObAgAAANjXUChl4MCBkp6eLuPGjZOUlBSJjY2VuLg4y4TuxMTEEj0Ur7zyiri4uOjbY8eOSc2aNXVQ8frrr4s9swQWG47pnhf1OwIAAAD2xMVkz2OIroNKNxsYGKgncgcEBIgtKMwvlEkBk6Qwr1BG7x8t1RtXN7pJAAAAgJTn3NmuskI5KjdPN6nVppa+f/T3o0Y3BwAAACg3AgsbwTwLAAAA2DMCCxsLLBLXJBrdFAAAAKDcCCxsRINbG+jblC0pcib1jNHNAQAAAMqFwMJGVAurJrXaXphncWDZAaObAwAAAJQLgYUNaXRHI32bEJdgdFMAAACAciGwsCFNejex9FgUFRYZ3RwAAACgzAgsbEjdG+qKV6CX5J7MlaPrSTsLAAAA+0FgYUNc3V2lWb9m+v6fX/1pdHMAAACAMiOwsDExj8To2x3f7JCC3AKjmwMAAACUCYGFjWnQvYEE1g+UvMw82bNoj9HNAQAAAMqEwMLGuLi6SMzQC70WW2duNbo5AAAAQJkQWNigNsPa6ADj4H8PSsrWFKObAwAAAFwTgYUNCooMkpZ/aanv//LPX4xuDgAAAHBNBBY2qtvL3XSvxe4FuyVpXZLRzQEAAACuisDCRoW2CpXYYbH6/pInlkhhQaHRTQIAAACuiMDCht32xm3iU91HUrelyuoJq41uDgAAAHBFBBY2zC/UT/pM7aPv//r6r6SfBQAAgM0isLBxrR5oJe1Httf3FwxaoDNFAQAAALaGwMIO9H6vtzTt11TOnzsvs/vOlo3TNorJZDK6WQAAAIAFgYUdcHV3lfvn3S9RA6KkML9Qlo5cKnPuniOnD582umkAAACARmBhJ9y93GXA3AHS69+9xM3TTfYt3icfNPlAvn/0ezm++Tg9GAAAADCUi8nJxtRkZWVJYGCgZGZmSkBAgNij1D9TZfnzy+Xgiv/NtwhqEKSHS0V0jpA6HevodRcXF0PbCQAAAOc5dyawsGNH1x+VdZPXyb4f98n53PMlfubu7a6Di+AGwTq7lHd1b/EJ9hHv4Au37j7uuufj0kX1jLh6uOrifDowuRibmO9felumnxVXSqxTagDkUv597PX11M/VsQcAVI2iwiIpOl8kpkLT/3r8zTfF1q/2M8v6pT8DKoGXv5c+tzOCXQUWU6dOlbfffltSUlIkJiZGPvjgA+nYseMV9z99+rS8/PLL8t1338nJkyelfv36MmXKFOnT50JaVmfosbhUfk6+JMQlyOFVhyV5Q7KkbE3RczFgP/zC/CQsOkzq31xfmvVrJqGtQ+lxAoBSqIKxJ/adkJP7T0p2crZlyT2ZK/nZ+ZJ/Jl/ysvP0rfpbWFRwIYhQj1O3ajEHA4C9uPuLuyV26IXCyVWtPOfOxoQ+F82dO1fGjBkj06dPl06dOukAoVevXrJ3714JDQ29bP/8/Hy5/fbb9c/mz58vderUkSNHjkhQUJA4M08/T4m6L0ovivryzEzMlNOHTsupQ6fkbMZZOXfqnOSeypVzJ8/JudPn5Hzeef2Fq5e8i7fFFlPRxas4l1yxKbHtKrcon5zUHD20TS0rX1kpNZrVkHZ/bScxQ2LEN8SXwwnAaamLZ+rC2YHlB+TIqiOSvjtdBwsAbI+hPRYqmOjQoYN8+OGHer2oqEgiIiJk9OjR8uKLL162vwpAVO/Gnj17xMPD47pe0xF7LOxFqR81U/n3KXU/k/2+nrp6durAKUnelCwJSxN0rRKVWlhR3Z5threRLi90kaD6zh1AA3AuKdtS5Pf3f5edc3dKQU5BiZ95VvOUkOYhEhARIP61/aVarWr6IowaLuLp76l/ru67ebnpzIpuHhdu9eLhatmmhv1eOqzXcl/fsXIdcAB2MRRK9T74+vrqnof+/ftbtg8dOlQPd/r+++8ve4wa7lS9enX9OPXzmjVryuDBg+Xvf/+7uLmVPkY9Ly9PL8UPjgpeCCxgq1QX/o5vdsimjzfpjF+K+iMY/VC03Dj2RqnRtIbRTQSASqN62uNfjJed3+60bAuKDJKGPRtKo9sbSe0OtSWwXiAn70AVsYuhUBkZGVJYWChhYWEltqt11SNRmoMHD8rPP/8sDz74oCxdulQSEhJk5MiRUlBQIOPHjy/1MZMmTZIJEyZUyu8AVAZ1lU0Ng2o7oq3u/v/19V/lUPwh2frFVtn25Ta9/Zbxt0i18Gq8AQAchuq9Xf/eelk1bpUUnC3QV/9b/qWldBzVUSK6RhBIAHbAsB6L5ORkPUdi7dq10rlzZ8v2v/3tb7J69Wr5/fffL3tM06ZN5dy5c3Lo0CFLD8XkyZP18Kjjxy9c2b0UPRZwBEd/Pyq/TPxF9i/Zr9c9/Dyky/Nd9KK6/AHAnqmhoItHLJaULSl6XSWy6P1+b53UAoCx7KLHIiQkRAcHqampJbar9fDw8FIfU6tWLT23oviwpxYtWuiMUmpolafn5SdYXl5eegHsWd1OdWXwj4PlyC9HZMULK+TYhmOyesJq+WP6H3LbG7dJ7COxF8YKA4AdUZmbVo5fKb9P+V0nDVEp0Xu+01Nih8XSQwHYIcMqb6sgoF27dhIfH2/ZpiZvq/XiPRjFde3aVQ9/UvuZ7du3TwccpQUVgKOpf1N9Gb5+uAz4doBUb1xdZ5P6YfgP8ukNn+pgAwDsxf6f9stHrT6S9ZPX66Ci1aBW8uTuJ6XNo20IKgA7ZVhgoahUszNmzJBZs2bJ7t275YknnpCcnBwZNmyY/vmQIUNk7Nixlv3Vz1XtiqeffloHFEuWLJE33nhDnnzySQN/C6BqqWwjLe9vKSN3jpTb37ldZ0BJ3pgsn3b6VL5/9Hs5k3qGtwSAzVLfUQsGLZDZfWZL5pFMCawfKIOXDpb7Zt8n1cKYOwbYM0PrWAwcOFDS09Nl3LhxejhTbGysxMXFWSZ0JyYmiqvr/2Iflc1p2bJl8uyzz0p0dLSeo6GCDJUVCnA2qlp3l+e6SOvBrXUGlW3/2SZbP98quxfsllsm3CIdnuyg0ykCgC1QUzrVd9Ty55fr2kpq+GanZzpJ9wndmSsGOAjDK29XNepYwFElrU2Sn0b/ZElRWzOqpvSd1lcPnwIAI506eEp+eOwHObzysF4PbxMu/Wb0k9rtavPGADbOLupYGIXAAo6sqLBItny2ReJfipfcE7l6m5oEefvbt4tvDSp4A6haau7Ehg83SPzYeJ1C1t3HXbq/1l1ueOYGXZ8HgO0jsKiggwPYq9yTufLfF/8rm2ds1us+NXx0ppWYoTFMigRQJU7sO6HnfSX9lqTXI2+JlH6f9pPqjarzDgB2hMCigg4OYO8Sf0uUJY8vkbQdaZbc8HdOv1NCmocY3TQADtxzum7yOl3o7vy583r+hOo1VYU/SYsN2B8Ciwo6OIAjKCwo1H/kVd2L87nnxdXDVbr+vat0e6mbePh4GN08AA4kbWea/PDoD5b01416NpI7P7lTguoHGd00ANeJwKKCDg7gSE4dOiU/jfpJ9i+9UL07uFGw3PnxndLwtoZGNw2AA1zA+O1fv8kvr/0ihfmF4hXoJb0m96LQHeAACCwq6OAAjkblatj93W6JeypOspOzLZO7e77bU3yCfYxuHgA7lLItRb4f9r2kbEnR6036NtEXLQLq8DcWcAQEFhV0cABHlZeVpzNHbfxoo4hJpFp4Nen9YW+Jui/K6KYBsKNeil/f+FV+/eevUnS+SLyDvaX3+72l9YOtSRIBOBACiwo6OIAzTO5e/NhiydiTodeb39Nc+kztI/61/I1uGgAbz/i08OGFlrkULe5tob871EUKAI6l0gOLMWPGlHnfyZMniy0hsABKUllbfnn9F/ntzd/0VUc1NloNjWrzaBuuOgIoQZ0y/DHtD109WyWD8A7y1gFFq0Gt+L4AHFSlBxbdu3eXLVu2SEFBgTRr1kxv27dvn7i5uUnbtm3/9+QuLvLzzz+LLSGwAEqX+meq/DD8B0n+I1mvN7i1gc7mQs55AIqal6W+IxLiEi58R9zWQO7+/G4JjAjkAAEOLKuyAwvVC7Fq1SqZNWuWBAcH622nTp2SYcOGSbdu3eS5554TW0VgAVyZ6rFY/956WfnqSn01UlfJndhdbniaKrmAM9s1f5f8+H8/6uKb7t7uctubt0mn0Z2oSwE4gazKDizq1Kkjy5cvl5YtW5bYvmPHDunZs6ckJ1+44mmLCCyAazt54KT8+Ncf5dDPh/R67Q61pf8X/aVmVE0OH+BEzmWek59G/yR/fvmnXg9vEy73fnUv3wWAE8kqR2Dher0vkJ6eftl2tS07+0IKSwD2Sw1/evi/D0u/T/vpORfJG5Pl47Yfy5q31uheDQCO7/CqwzKt9TQdVKiK2d1e7iaPrX+MoAJAxQYW99xzjx729N1338nRo0f1smDBAhk+fLjce++91/OUAGyMmiPVdnhbGblzpDTp00QK8wol/sV4mXnjTEsWKQCOmdBh2XPLZNatsyQrKUuCGwbLsF+Hya3/vFXcPN2Mbh4AG3ZdQ6HOnj0rzz//vMycOVNP4Fbc3d11YPH222+Ln5+f2CqGQgHlp74mts3aJnFPx+kaGG5ebnruRecxncXV7bquTwCwQSlbU+S7h76T9J0XRiW0HdFWV9D2rOZpdNMAOHodi5ycHDlw4IC+36hRI5sOKMwILAAr/v8czZLFIxZbssLU7VxXZ4UJaRbCYQXsWFFhkax9Z61O3FBUUCR+oX5y12d3SdM7mxrdNAAGo0BeBR0cAJdT1yK2zNwiy55dJvnZ+TpDzK2v3yqdnu5E7wVgh04dOiWLhiySxDWJer15/+Y61bRfTdu/WAig8hFYVNDBAXBlmYmZ8sNjP8jBFQf1ekTXCOk/qz91LwA7ukiw9fOteohj/pl8PdzpjvfvkNhHYil2B8CCwOIqCCyAij0x2Txjsyx/brk+MfHw85A7ptwhbYZTtRuwZTlpObL4r4tl7/d79Xq9G+tJ///0l+AGF2pTAYAZgcVVEFgAFe/04dOyaOgiOfLLEb3etF9T6Tejn1QLq8bhBmzM3sV7ZfFji3Vw4erhqhMxdHm+C0MZAZSKwOIqCCyAypv8uf7f6+Xnl3+WwvxC8a3pq4OL5nc355ADNkD1Ki4bs0z3MiqhrULlni/vkfDYcKObBsCGEVhU0MEBUH6pf6bqdJVp29P0uhoW1evfvcTL34vDCRgkaW2SLHx4oZw6eErERXSqaFWXQiVfAICrIbCooIMD4Pqczzuv01aq9JViEglqEKSvjNbrWo9DClQh1Xu4asIq+e3N38RUZJKAiACdZKFB9wa8DwDKhMCigg4OAOscXn1Yz73IPJIpLq4u0uVvXaT7hO5U7wWqqPdQ/f9TRe+U6IejpfcHvcU70JvjD6BSzp1tomTu1KlTJTIyUry9vaVTp06yYcOGMj1uzpw5OiVe//79K72NAMov8uZIeeLPJyRmaIy+Wqqumn7a6VNJ23lhmBSAild0vkh+feNX+aT9Jzqo8KnuIwO+HSD3/OceggoAlcrwwGLu3LkyZswYGT9+vGzevFliYmKkV69ekpZ29ROPw4cPy/PPPy/dunWrsrYCKD+vAC/p/0V/+cuCv4hPDR99ovNJu0/k9/d/18EGgIqTvjtdZnadqZMoqAraze5qJiN3jpSW97fkMAOodC4mlYjeQKqHokOHDvLhhx/q9aKiIomIiJDRo0fLiy++WOpjCgsL5aabbpJHH31Ufv31Vzl9+rQsWrSoTK/HUCjAONnHs+WHR3+QhLgEvd7w9oY66PCv7c/bAliblW3KxaxseYXiFeglvd/vrYc/qZ59AHD4oVD5+fmyadMm6dGjx/8a5Oqq19etW3fFx7322msSGhoqw4cPv+Zr5OXl6QNSfAFgDP9a/jJ46WDpM7WPzkajqnZPaz1Nds3fxVsCXKfjm4/LZzd8JiueX6GDika9GsnIHSMlZkgMQQWAKmVoYJGRkaF7H8LCwkpsV+spKRcmm11qzZo18tlnn8mMGTPK9BqTJk3SUZZ5Ub0hAIyjrp52GNlB/m/L/0mttrUk92SuzLt/nix6ZJHknsrlrQHKKC87T+KejZMZHWZI8h/JetjhnZ/cKQ/+9KAE1CU5CQAnnGNRHtnZ2fLwww/roCIkJKRMjxk7dqzuujEvSUlJld5OANcW0jxEhq8bLje+dKPOGLVt1jZ5v+H7suofqyTrGD2LwNUmZ2/+dLNMbT5Vfp9yYa5SqwdayZN7npR2I9rRSwHAMIZWxlHBgZubm6SmppbYrtbDwy+vBHrgwAE9abtfv36WbWpOhuLu7i579+6VRo0alXiMl5eXXgDYHjdPN7nt9dukSe8msuSJJZK2I01WT1gtv0z8RZre2VRaP9haGtzaQHxDfI1uKmA4NSVy7w97JX5svGTsztDbghsGS5+P+kjjXo2Nbh4A2Mbk7Y4dO8oHH3xgCRTq1asno0aNumzy9rlz5yQh4cKkT7NXXnlF92S899570rRpU/H09Lzq6zF5G7Ddyae75u2SjR9tlMRfE0v8LLxNuNTrVk9CW4VKzaiaEtoyVLyDyMUP5xnytO0/22TjhxslY8+FgEJlWLvplZuk/RPtxd2L6tkAKk95zp0N/zZSqWaHDh0q7du31wHGlClTJCcnR4YNG6Z/PmTIEKlTp46eK6HqXLRq1arE44OCgvTtpdsB2BdXN1c9nEMtKmXm1s+36uxRadvTJGVLil6KU+PJVTYp/zr+elK4yoKjtnn6e+pbL/8L62qSuKuHq7h5uP3v1t31sm3icmH+h2a+f7Vt5s3X2gaUU0FugWQnZ+tJ2QeXH5S9i/dKfna+/plnNU/pOLqjdP17V2pSALA5hgcWAwcOlPT0dBk3bpyesB0bGytxcXGWCd2JiYk6UxQA51GzRU25/V+36+VM6hk59PMhPTk1fWe6Hi6VfSxb8rLy9GK+ggs4shrNakjHUR11picVMAOALTJ8KFRVYygU4BhDQ1Rwoa7q6uX4hUBDXdUtfquW83nndaGwwoLCErdqAmzxbWK6MIZdM993qm9H2BI11E8N/avbpa4uchfROUInOQCAqmZXQ6EAoLz0MKfmXjqzVFUxBxrFA45rbgOugxqapxIbAIC9IbAAgDKwzJswT6QAAAAlMHkBAAAAgNUILAAAAABYjcACAAAAgNUILAAAAABYjcACAAAAgNUILAAAAABYjcACAAAAgNUILAAAAABYjcACAAAAgNUILAAAAABYjcACAAAAgNUILAAAAABYjcACAAAAgNUILAAAAABYjcACAAAAgNUILAAAAABYjcACAAAAgNUILAAAAABYjcACAAAAgNUILAAAAABYjcACAAAAgNUILAAAAAA4RmAxdepUiYyMFG9vb+nUqZNs2LDhivvOmDFDunXrJsHBwXrp0aPHVfcHAAAA4ASBxdy5c2XMmDEyfvx42bx5s8TExEivXr0kLS2t1P1XrVolgwYNkpUrV8q6deskIiJCevbsKceOHavytgMAAAC4wMVkMpnEQKqHokOHDvLhhx/q9aKiIh0sjB49Wl588cVrPr6wsFD3XKjHDxky5Jr7Z2VlSWBgoGRmZkpAQECF/A4AAACAIyrPubOhPRb5+fmyadMmPZzJ0iBXV72ueiPK4uzZs1JQUCDVq1cv9ed5eXn6gBRfAAAAAFQsQwOLjIwM3eMQFhZWYrtaT0lJKdNz/P3vf5fatWuXCE6KmzRpko6yzIvqDQEAAADgYHMsrPHmm2/KnDlzZOHChXrid2nGjh2ru27MS1JSUpW3EwAAAHB07ka+eEhIiLi5uUlqamqJ7Wo9PDz8qo995513dGDx3//+V6Kjo6+4n5eXl14AAAAAOGiPhaenp7Rr107i4+Mt29TkbbXeuXPnKz7uX//6l0ycOFHi4uKkffv2VdRaAAAAADbZY6GoVLNDhw7VAULHjh1lypQpkpOTI8OGDdM/V5me6tSpo+dKKG+99ZaMGzdOZs+erWtfmOdiVKtWTS8AAAAAnDCwGDhwoKSnp+tgQQUJsbGxuifCPKE7MTFRZ4oymzZtms4mNWDAgBLPo+pg/OMf/6jy9gMAAACwgToWVY06FgAAAICD1bEAAAAA4BgILAAAAABYjcACAAAAgNUILAAAAABYjcACAAAAgNUILAAAAABYjcACAAAAgNUILAAAAABYjcACAAAAgNUILAAAAABYjcACAAAAgNUILAAAAABYjcACAAAAgNUILAAAAABYjcACAAAAgNUILAAAAABYjcACAAAAgNUILAAAAABYjcACAAAAgNUILAAAAABYjcACAAAAgNUILAAAAABYjcACAAAAgGMEFlOnTpXIyEjx9vaWTp06yYYNG666/7x586R58+Z6/9atW8vSpUurrK0AAAAAbDCwmDt3rowZM0bGjx8vmzdvlpiYGOnVq5ekpaWVuv/atWtl0KBBMnz4cNmyZYv0799fLzt27KjytgMAAAC4wMVkMpmMPBiqh6JDhw7y4Ycf6vWioiKJiIiQ0aNHy4svvnjZ/gMHDpScnBz58ccfLdtuuOEGiY2NlenTp1/z9bKysiQwMFAyMzMlICCggn8bAAAAwHGU59zZ0B6L/Px82bRpk/To0eN/DXJ11evr1q0r9TFqe/H9FdXDcaX9AQAAAFQ+dzFQRkaGFBYWSlhYWIntan3Pnj2lPiYlJaXU/dX20uTl5emleNRV/Fbx8PAQHx8fyc3NlYKCAst2Ly8vvageEtVOMzW3w9PTU86cOaN7WMx8fX3F3d29xHMrfn5+OmDKzs4usd3f318/Xj1/cSoaPH/+vJw9e9ayTT2+WrVqOhg7d+6cZbubm5t+/kt/T34n3ic+e/x/4juC73L+PvE3l/MIzo0KrTyHLdfgJpOBjh07plpqWrt2bYntL7zwgqljx46lPsbDw8M0e/bsEtumTp1qCg0NLXX/8ePH69e42jJ8+HC9r7otvl09VunZs2eJ7TNmzNDbo6KiSmyPi4vT2/39/Uts37FjhykzM/Oy11Xb1M+Kb1OPVdRzFd+uXktRr118u2pbab8nvxPvE589/j/xHcF3OX+f+JvLeQTnRmLlOWxSUpLlvPVaDJ1joa6+qwhp/vz5egK22dChQ+X06dPy/fffX/aYevXq6cnezzzzjGWbmvi9aNEi2bZtW5l6LNQcjqSkJMs4Ma7uc3VfoWeJ3jJ6AOmpVeh9pkedUQKcGymMUBF9bqR6N4KCgso0x8ImJm937NhRPvjgA72uumVU8DBq1KgrTt5WQ4QWL15s2dalSxeJjo5m8jYAAABg0ORtQ+dYKKr3QfVQtG/fXgcYU6ZM0XMOhg0bpn8+ZMgQqVOnjkyaNEmvP/3003LzzTfLu+++K3379pU5c+bIH3/8IZ988onBvwkAAADgvAwPLFQPRHp6uowbN05PwFZpY+Pi4iwTtBMTE3WXZPHeidmzZ8srr7wiL730kjRp0kQPg2rVqpWBvwUAAADg3AwfClXVqGMBAAAAOFgdCwAAAACOgcACAAAAgP3Psahq5pFflxYAAQAAAFCS+Zy5LLMnnC6wMFe/VrUsAAAAAJTtHFrNtbgap5u8repkJCcni7+/v7i4uBjShtKK9ME58VkAnwPwnQD+PsCWzxNUqKCCitq1a5fI1Foap+uxUAekbt26YgvUB4TAAnwWwHcC+PsAzhVgy+eM1+qpMGPyNgAAAACrEVgAAAAAsBqBhQG8vLxk/Pjx+hbOjc8C+ByA7wTw9wGOcp7gdJO3AQAAAFQ8eiwAAAAAWI3AAgAAAIDVCCwAAAAAWI3AoopNnTpVIiMjxdvbWzp16iQbNmyo6iagiv3yyy/Sr18/XVhGFWVctGhRiZ+raU7jxo2TWrVqiY+Pj/To0UP279/P++SAJk2aJB06dNAFOkNDQ6V///6yd+/eEvucO3dOnnzySalRo4ZUq1ZN7rvvPklNTTWszah406ZNk+joaEte+s6dO8tPP/1k+TmfAef15ptv6r8TzzzzjGUbnwfn8I9//EO/98WX5s2b293ngMCiCs2dO1fGjBmjZ/dv3rxZYmJipFevXpKWllaVzUAVy8nJ0e+1CipL869//Uvef/99mT59uvz+++/i5+enPxfqSwSOZfXq1foPw/r162XFihVSUFAgPXv21J8Rs2effVYWL14s8+bN0/snJyfLvffea2i7UbFUkVZ1Arlp0yb5448/5NZbb5W7775bdu7cqX/OZ8A5bdy4UT7++GMddBbH58F5tGzZUo4fP25Z1qxZY3+fA5UVClWjY8eOpieffNKyXlhYaKpdu7Zp0qRJvAVOQv2XW7hwoWW9qKjIFB4ebnr77bct206fPm3y8vIyffPNNwa1ElUlLS1NfyZWr15tee89PDxM8+bNs+yze/duvc+6det4YxxYcHCw6dNPP+Uz4KSys7NNTZo0Ma1YscJ08803m55++mm9ne8E5zF+/HhTTExMqT+zp88BPRZVJD8/X1+dUsNczFxdXfX6unXrqqoZsDGHDh2SlJSUEp+LwMBAPUyOz4Xjy8zM1LfVq1fXt+o7QvViFP88qK7wevXq8XlwUIWFhTJnzhzda6WGRPEZcE6qJ7Nv374l/u8rfB6cy/79+/Ww6YYNG8qDDz4oiYmJdvc5cDe6Ac4iIyND/wEJCwsrsV2t79mzx7B2wVgqqFBK+1yYfwbHVFRUpMdRd+3aVVq1aqW3qffc09NTgoKCSuzL58HxbN++XQcSasijGi+9cOFCiYqKkq1bt/IZcDIqsFTDo9VQqEvxneA8OnXqJF988YU0a9ZMD4OaMGGCdOvWTXbs2GFXnwMCCwAw6Aql+oNRfAwtnIc6eVBBhOq1mj9/vgwdOlSPm4ZzSUpKkqefflrPuVJJXeC8evfubbmv5tmoQKN+/fry7bff6sQu9oKhUFUkJCRE3NzcLpvBr9bDw8OrqhmwMeb3ns+Fcxk1apT8+OOPsnLlSj2Rt/jnQQ2bPH36dIn9+Z5wPOrqY+PGjaVdu3Y6W5hK8PDee+/xGXAyaoiLSuDStm1bcXd314sKMFVCD3VfXZHmO8E5BQUFSdOmTSUhIcGuvhcILKrwj4j6AxIfH19iKIRaV93hcE4NGjTQXwrFPxdZWVk6OxSfC8ej5u+roEINe/n555/1+1+c+o7w8PAo8XlQ6WjVOFs+D45N/T3Iy8vjM+BkbrvtNj0sTvVemZf27dvr8fXm+3wnOKczZ87IgQMHdCp6e/rbwFCoKqRSzarubvVF0bFjR5kyZYqesDds2LCqbAYM+HJQVxyKT9hWfzDUhF018UqNs//nP/8pTZo00Sear776qp68pWocwPGGP82ePVu+//57XcvCPDZWTdhXXd3qdvjw4fq7Qn0+VI2D0aNH6z8cN9xwg9HNRwUZO3asHvag/v9nZ2frz8SqVatk2bJlfAacjPoeMM+xMlMpx1WtAvN2vhOcw/PPP69rXqnhTyqVrCpNoEa6DBo0yL6+F4xOS+VsPvjgA1O9evVMnp6eOv3s+vXrjW4SKtnKlSt1SrhLl6FDh1pSzr766qumsLAwnWb2tttuM+3du5f3xQGV9jlQy+eff27ZJzc31zRy5EidftTX19d0zz33mI4fP25ou1GxHn30UVP9+vX134GaNWvq//PLly+3/JzPgHMrnm5W4fPgHAYOHGiqVauW/l6oU6eOXk9ISLC7z4GL+sfo4AYAAACAfWOOBQAAAACrEVgAAAAAsBqBBQAAAACrEVgAAAAAsBqBBQAAAACrEVgAAAAAsBqBBQAAAACrEVgAAAAAsBqBBQCgUq1atUpcXFzk9OnTHGkAcGBU3gYAVKhbbrlFYmNjZcqUKXo9Pz9fTp48KWFhYTrAAAA4JnejGwAAcGyenp4SHh5udDMAAJWMoVAAgArzyCOPyOrVq+W9997TvRNq+eKLL0oMhVLrQUFB8uOPP0qzZs3E19dXBgwYIGfPnpVZs2ZJZGSkBAcHy1NPPSWFhYWW587Ly5Pnn39e6tSpI35+ftKpUyc9zAoAYBvosQAAVBgVUOzbt09atWolr732mt62c+fOy/ZTQcT7778vc+bMkezsbLn33nvlnnvu0QHH0qVL5eDBg3LfffdJ165dZeDAgfoxo0aNkl27dunH1K5dWxYuXCh33HGHbN++XZo0acK7CAAGI7AAAFSYwMBAPfRJ9UKYhz/t2bPnsv0KCgpk2rRp0qhRI72ueiy+/PJLSU1NlWrVqklUVJR0795dVq5cqQOLxMRE+fzzz/WtCioU1XsRFxent7/xxhu8iwBgMAILAECVU4GHOahQ1MRuNQRKBRXFt6Wlpen7qldCDYtq2rRpiedRw6Nq1KhRhS0HAFwJgQUAoMp5eHiUWFdzMErbVlRUpO+fOXNG3NzcZNOmTfq2uOLBCADAOAQWAIAKpYZCFZ90XRHatGmjn1P1YHTr1q1CnxsAUDHICgUAqFBqSNPvv/8uhw8floyMDEuvgzXUEKgHH3xQhgwZIt99950cOnRINmzYIJMmTZIlS5ZUSLsBANYhsAAAVCg1qVoNV1ITsGvWrKknXFcENUlbBRbPPfecTlPbv39/2bhxo9SrV69Cnh8AYB0qbwMAAACwGj0WAAAAAKxGYAEAAADAagQWAAAAAKxGYAEAAADAagQWAAAAAKxGYAEAAADAagQWAAAAAKxGYAEAAADAagQWAAAAAKxGYAEAAADAagQWAAAAAKxGYAEAAABArPX/rZ0VX0S3AWsAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{}\n" ] } ], "source": [ "t_plot = np.linspace(0, 50, 500)\n", "fig, axes = plt.subplots(2, 1, figsize=(8, 5), sharex=True)\n", "axes[0].plot(t_plot, [fw.get_forcing(t) for t in t_plot], color=\"teal\")\n", "axes[0].set_ylabel(\"E forcing\"); axes[0].set_title(\"Registered forcing on E\")\n", "axes[1].plot(out_forced.time, out_forced.diagnostic_variables[\"q\"], color=\"purple\")\n", "axes[1].axhline(0, color=\"k\", lw=0.8, ls=\"--\")\n", "axes[1].set_ylabel(\"q\"); axes[1].set_xlabel(\"time\")\n", "plt.tight_layout(); plt.show()" ] }, { "cell_type": "markdown", "id": "ac5e7cae", "metadata": {}, "source": [ "### Copying a model\n", "\n", "`copy.copy(model)` creates a shallow copy with reset diagnostic accumulators —\n", "useful for running ensembles from the same parameter set without interference." ] }, { "cell_type": "code", "execution_count": 34, "id": "2fdd265a", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{}\n" ] } ], "source": [ "import copy\n", "\n", "base = Stommel(E=0.3, T_star=1.0, S_star=0.0)\n", "runs = []\n", "for T0 in [0.5, 1.0, 1.5, 2.0]:\n", " m = copy.copy(base) # fresh accumulators, same parameters\n", " out = m.integrate(t_span=(0, 50), y0=[T0, 0.0], method=\"RK45\")\n", " runs.append((T0, out))" ] }, { "cell_type": "code", "execution_count": 35, "id": "87f3061e", "metadata": {}, "outputs": [ { "data": { "image/png": "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R95X2uSitV56x0tTBLREQVMGSqLrp81YatOBWmFU10v/aeh20vF64Xi2OxXUO+667trcqF7U6wW5XoDpNrX+ues/cf2Hru3Ma90LvVumlfM1fUZz/yuKphu99tpr5h+vNhGpFWA1718vCnV76Tpputbp6F1Q3Rf6eT1O9OJE11UrJCtNW9LvqqlBOm+dr140licnvSLmUVbaTKXW49C6RVYTmnoxrKUmGjTpRZ7VB4meI9rMqKZH6XbQtvF10P2l20RTgnQ76Dmo20YDFm3yVO/ol0aPC60PohXh27dvb0oZ9K6s9jmjJYcWbWRBS/JKS79Tmtqox782+6nrr+utaR2VcaFdEeedNh+rn9Ucfd1+ur56x10rL+t20OflpftR95VWUNZ+EnSb6nY5G/TY1boK2ryx3qTRC2f9bsXVrano81+PD90n2qyqliDofLV0QlOu9D1tUlWPMU070xs4ejGvdcE0INDfK60D5llaXFaaSqjpsrq8Bx54wN3crJYgnO57lGd76T7U9dMmhfXY1u+i6UsffPCBSev1rKhdFmU991DN+LtZKsAOzc16NtdnNTdbXDOynk1mavOO2sxemzZtTJOb2uxely5dTBOiRWlTj9pUqU4TERHhatGihWvEiBGutWvXejUNqPMpqqzNV1rfb+nSpa4777zTVbt2bVeNGjVct9xyi+vw4cOnzNOzyUKrmcann37aLEubQ9TPa9O1Tz75pCstLc11tq1fv9510003uRo3bmzWJy4uzvW73/3Oa5up119/3TRLqtPovtDtUFwzoPq6aLOIJe1rq2nO+fPne43//vvvXQMHDjRNEevydB8MHjzYtXjx4lK/izW/d955xzRlq99Fm3TV/efZ/KvavHmzaaZT9129evVMk8RWM4+eTUqWdLxUxDzK02SqNqms36lly5ameUpdnjYV+9xzz3k1e7xixQpzPOk0RZue3bFjh2vYsGGm2d/Q0FDTLK/u6/fee++U47to88PadOojjzziat++vatmzZrm++jzf/7zn17TaTPR+nltyvV09Hy57bbbXLVq1TLnrD7XfV/Rzc2W57wr7vi1HDx40LzXqFEjs/10O2ozvq+88sppj2nrHPD8XhkZGa6bb77ZNJWt752u6dmSmpstuq+sddDH0n6LtGns888/3xUSEuK1bsU1N1vW878szc1aTQvr74HO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t/8JLGxm3rx5Mnr0aFP7f/369dK+fXvp06ePpKSk+HvVUAkyMzPNPtZgsjjPPPOMvPDCCzJz5kxZvXq1REdHm+NBf2BQNSxdutT8s1i1apV88cUXkpeXJ7179zbHhuWhhx6Sjz76SObPn2+m37dvnwwcONCv642Kox2y6oXkunXrZO3atXLVVVdJ//795aeffjLvs/+rl++++05efvllE2x64jio+i644ALZv3+/e1i+fHng7X8XbKVz586ue++91/26oKDAlZiY6Jo6dapf1wuVT0/H999/3/3a6XS64uPjXc8++6x73LFjx1zh4eGud955h11SRaWkpJhjYenSpe59Hhoa6po/f757mp9//tlMs3LlSj+uKSpT7dq1Xa+99hr7v5o5fvy4q1WrVq4vvvjCdfnll7seeOABM57fgapv4sSJrvbt2xf7XiDtf0osbCQ3N9fcsdJ0F0tQUJB5vXLlSr+uG86+nTt3yoEDB7yOh5iYGJMex/FQdaWlpZnHOnXqmEf9TdBSDM/jQIvHGzduzHFQBRUUFMjcuXNNiZWmRLH/qxctvezXr5/X+a44DqqHbdu2mdTo5s2byy233CLJyckBt/9D/L0C+J9Dhw6ZfyoNGjTw2iz6esuWLWyqakaDClXc8WC9h6rF6XSanOpLL71U2rZta8bpvg4LC5PY2FivaTkOqpYff/zRBBKa5qj50++//76cf/75smHDBvZ/NaEBpaZAaypUUfwOVH1dunSRWbNmSevWrU0a1JNPPilJSUmyadOmgNr/BBYAYKO7lfpPxDOvFtWDXkxoEKElVu+9954MHz7c5FGjeti9e7c88MADpp6VNtyC6qdv377u51q/RgONJk2ayLvvvmsabwkUpELZSL169SQ4OPiUWv76Oj4+3m/rBf+w9jnHQ/Vw3333yccffyxff/21qczreRxomuSxY8e8pud3oWrRu5EtW7aUjh07mpbCtFGH6dOns/+rCU110UZaLr74YgkJCTGDBpbaeIc+1zvT/A5UL7GxsXLuuefK9u3bA+p3gMDCZv9Y9J/K4sWLvVIj9LUWkaN6adasmfnB8Dwe0tPTTetQHA9Vh9bb16BCU1+++uors9896W9CaGio13GgzdFq7i3HQdWlv/05OTns/2qiZ8+eJh1OS62soVOnTibP3nrO70D1kpGRITt27DDNzQfS/wFSoWxGm5rVInD9EencubNMmzbNVOIbOXKkv1cNlfTDoXcjPCts6z8RrbirlbI0337y5MnSqlUrc8E5fvx4U7FL+zpA1Ul/evvtt+WDDz4wfVlY+bJaUV+Lv/Vx1KhR5rdBjwvt5+D+++83/0y6du3q79VHBRg3bpxJg9Bz/vjx4+Z4WLJkiXz22Wfs/2pCz32rXpVFmxfXPgus8fwOVG1jxowx/Vpp+pM2JavdDmgWy0033RRYvwP+bpYKp3rxxRddjRs3doWFhZnmZ1etWsVmqqK+/vpr01xc0WH48OHuJmfHjx/vatCggWlmtmfPnq6tW7f6e7VRgYrb/zq8+eab7mmys7Ndf/zjH00TpFFRUa7rr7/etX//fvZDFfGHP/zB1aRJE/ObX79+fXOef/755+732f/Vk2dzs4rjoGobMmSIKyEhwfwONGzY0Lzevn17wO1/h/7xd3ADAAAAILBRxwIAAACAzwgsAAAAAPiMwAIAAACAzwgsAAAAAPiMwAIAAACAzwgsAAAAAPiMwAIAAACAzwgsAAAAAPiMwAIAcNYtWbJEHA6HHDt2jK0PAFUEPW8DACrdFVdcIR06dJBp06aZ17m5uXLkyBFp0KCBCTAAAIEvxN8rAACofsLCwiQ+Pt7fqwEAqECkQgEAKtWIESNk6dKlMn36dFM6ocOsWbO8UqH0dWxsrHz88cfSunVriYqKkhtvvFGysrJk9uzZ0rRpU6ldu7b86U9/koKCAve8c3JyZMyYMdKwYUOJjo6WLl26mDQrAMDZR4kFAKBSaUDxyy+/SNu2beWpp54y43766adTptMg4oUXXpC5c+fK8ePHZeDAgXL99debgOPTTz+VX3/9VW644Qa59NJLZciQIeYz9913n2zevNl8JjExUd5//3255ppr5Mcff5RWrVqxZwHgLCKwAABUqpiYGJP6pKUQVvrTli1bTpkuLy9PXnrpJWnRooV5rSUWb731lhw8eFBq1Kgh559/vlx55ZXy9ddfm8AiOTlZ3nzzTfOoQYXS0otFixaZ8VOmTGHPAsBZRGABALAFDTysoEJpxW5NgdKgwnNcSkqKea6lEpoWde6553rNR9Oj6tatexbXHACgCCwAALYQGhrq9VrrYBQ3zul0mucZGRkSHBws69atM4+ePIMRAMDZQWABAKh0mgrlWem6Ilx00UVmnlqCkZSUVKHzBgCUH61CAQAqnaY0rV69Wnbt2iWHDh1ylzr4QlOgbrnlFhk2bJgsWLBAdu7cKWvWrJGpU6fKJ598UiHrDQAoOwILAECl00rVmq6kFbDr169vKlxXBK2krYHFww8/bJqpHTBggHz33XfSuHHjCpk/AKDs6HkbAAAAgM8osQAAAADgMwILAAAAAD4jsAAAAADgMwILAAAAAD4jsAAAAADgMwILAAAAAD4jsAAAAADgMwILAAAAAD4jsAAAAADgMwILAAAAAD4jsAAAAADgMwILAAAAAOKr/weyhAI8EyF5VAAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{}\n" ] } ], "source": [ "fig, ax = plt.subplots(figsize=(8, 4))\n", "for T0, out in runs:\n", " ax.plot(out.time, out.diagnostic_variables[\"q\"], label=f\"T₀={T0}\")\n", "ax.axhline(0, color=\"k\", lw=0.8, ls=\"--\")\n", "ax.set_xlabel(\"time\"); ax.set_ylabel(\"q\")\n", "ax.set_title(\"Ensemble — same parameters, different initial conditions\")\n", "ax.legend(); plt.tight_layout(); plt.show()" ] }, { "cell_type": "markdown", "id": "5e693bae", "metadata": {}, "source": [ "## CCOutput\n", "\n", "`CCModel.integrate()` returns a `CCOutput` — a container for one run's results.\n", "It is never constructed directly; you always get one from `integrate()`.\n", "\n", "Separating output from model configuration means a single model instance can\n", "produce multiple independent outputs without them overwriting each other." ] }, { "cell_type": "code", "execution_count": 36, "id": "263ff2d0", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "run_name: RK45, dt=variable\n", "time axis length: 84\n", "state_variable_names: ['T', 'S']\n", "diagnostic keys: ['q']\n", "{}\n" ] } ], "source": [ "# A basic run to work with throughout this section\n", "model = Stommel(E=0.3, T_star=1.0, S_star=0.0)\n", "output = model.integrate(t_span=(0, 50), y0=[1.0, 0.0], method=\"RK45\")\n", "\n", "print(f\"run_name: {output.run_name}\")\n", "print(f\"time axis length: {len(output.time)}\")\n", "print(f\"state_variable_names: {output.state_variable_names}\")\n", "print(f\"diagnostic keys: {list(output.diagnostic_variables.keys())}\")" ] }, { "cell_type": "markdown", "id": "590bb1c1", "metadata": {}, "source": [ "### Accessing state variables and diagnostics\n", "\n", "State variables are stored in a **structured numpy array**, indexed by name.\n", "Diagnostics are in a plain **dict of arrays**. Both are aligned to `output.time`." ] }, { "cell_type": "code", "execution_count": 37, "id": "ec491c4a", "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{}\n" ] } ], "source": [ "# State variables — structured array, index by name\n", "T = output.state_variables[\"T\"]\n", "S = output.state_variables[\"S\"]\n", "\n", "# Diagnostics — dict of arrays\n", "q = output.diagnostic_variables[\"q\"]\n", "\n", "fig, axes = plt.subplots(3, 1, figsize=(8, 7), sharex=True)\n", "axes[0].plot(output.time, T, color=\"firebrick\"); axes[0].set_ylabel(\"T\")\n", "axes[1].plot(output.time, S, color=\"steelblue\"); axes[1].set_ylabel(\"S\")\n", "axes[2].plot(output.time, q, color=\"purple\")\n", "axes[2].axhline(0, color=\"k\", lw=0.8, ls=\"--\")\n", "axes[2].set_ylabel(\"q\"); axes[2].set_xlabel(\"time\")\n", "plt.tight_layout(); plt.show()" ] }, { "cell_type": "markdown", "id": "d36824d3", "metadata": {}, "source": [ "### `to_pyleo` — exporting to pyleoclim\n", "\n", "`output.to_pyleo(var_names)` returns a `pyleoclim.Series` (single variable) or\n", "`pyleoclim.MultipleSeries` (list of variables). Works for both state variables\n", "and diagnostics." ] }, { "cell_type": "code", "execution_count": 38, "id": "fc8b2f71", "metadata": {}, "outputs": [ { "data": { "image/png": "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nnhQ8XjT71bGY09vKns4AADQr5QanNrb2+Oee+6JKVOm/GlAtbXF/sKFC3f5uo0bN8aBBx4Y48aNi7e85S3xhz/8YZfntrW1RUtLyw5bf3TU2OHx2oNHxpauSnx5wUNlDwcAAPqVUoPTunXrorOz8zkzRml/1are70t02GGHFbNRP/7xj+M73/lOdHV1xWte85p47LHeGyPMnj07hg8f3rOlsNVffeiUQ3uaRCxds7Hs4QAAQL9ReqneCzV58uQ4++yz45hjjomTTz45brjhhthnn33i6quv7vX8GTNmxPr163u2FStWRH917AF7xhuPHBVdlYiZP74vKpVK2UMCAIB+odTgNHLkyKirq4vVq1fvcDztp7VLz0dDQ0Mce+yxsXTp0l4/3tTUVDST2H7rzy479chobqiNux5+UntyAADoD8GpsbExJk6cGAsWLOg5lkrv0n6aWXo+Uqnf73//+xgzZsyLONLqccDeg+ODU7aW7H3yv/8QD69VsgcAAFVfqpdakX/961+P6667Lu6///648MILo7W1teiyl6SyvFRu1+3Tn/503HrrrbFs2bKiffm73/3uoh35eeedV+KfIi/nvfagmHTQXtHa3hnv+87i2LC5o+whAQBAVasvewBnnnlmrF27NmbOnFk0hEhrl26++eaehhHLly8vOu11e/rpp4v25encPffcs5ixuuuuu4pW5mxVX1cbXznr2Hjzl++MJas3xLnX3R3/8d4TormhzrcIAAD+DDWVAdZBILUjT931UqOI/r7e6b7H18dZX/tVbGjbEicctFd87T0TY8TgxrKHBQAAVZcNSi/V48W9t9M3//FVMbSpPhY98lS89aq7ijAFAAC8MIJTP5dmmn5w4eQYM7w5lq1rjTOu+mX8v7csida2LWUPDQAAqobgNAAcPnpY3PTPJ8XUV4yKjs5K/PvtS+Pky++Iubcvjadb28seHgAAZM8apwEkLWe75Q+rYvbPHohHn9xUHGuoq4mTD90nTjlydLz2kJGx34hBZQ8TAACyW+MkOA1A7Vu64qbfPxHfvPORuO/xlh0+NnbEoDh6/+Fx6KihcfC+e8QBew2OMSOaY+SQpqitrSltzAAA8NcmOP2VvjkDwUOrN8RPfrcyfvHg2vjdY89E1y56LKbMtNeQpthzcEMMH9QQQ5vrY3BTfQxuqItBjXXRVF8bTfV1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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{}\n" ] } ], "source": [ "# Single variable → pyleoclim.Series\n", "ts_q = output.to_pyleo(var_names=[\"q\"])\n", "ts_q.plot(); plt.show()" ] }, { "cell_type": "code", "execution_count": 39, "id": "09187399", "metadata": {}, "outputs": [ { "data": { "image/png": "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AFuP7gUAAIACBCcAAIACBCcAAIACBCcAAIACBCcAAIACBCcAAIACBCcAAIACBCcAAIACBCcAAIACBCcAAIACBCcAAIACBCcAAIACBCcAAIACBCcAAIBiD05TpkyJwYMHR5cuXWLUqFExc+bMzR7/xhtvxHnnnRf9+vWLqqqq2GeffeKOO+54x9oLAAB0PJV5vvm0adNi/PjxMXXq1Cw0TZ48OcaMGRNz5syJXXbZZaPj6+vr44QTTsieu/nmm2PAgAHx0ksvRa9evXJpPwAA0DGUNTU1NeX15iksjRgxIq699tpsu7GxMQYNGhTnn39+XHzxxRsdnwLWt771rZg9e3Z06tTpn3rPurq6qKmpidra2qiurn7bPwMAAFCatiQb5DZUL/UezZo1K0aPHv1mY8rLs+0ZM2a0e87vfve7OPzww7Ohen369IkhQ4bElVdeGQ0NDZt8n9WrV2cfyPoLAADAlsgtOC1ZsiQLPCkArS9tL1iwoN1zXnzxxWyIXjovzWu65JJL4uqrr46vfe1rm3yfSZMmZSmyZUk9WgAAACVVHGJLpKF8aX7Tj370oxg+fHicfvrp8eUvfzkbwrcpEyZMyLreWpZ58+a9o20GAABKX27FIXr37h0VFRWxcOHCNvvTdt++fds9J1XSS3Ob0nkt9ttvv6yHKg3969y580bnpMp7aQEAACi5HqcUclKv0fTp09v0KKXtNI+pPUceeWQ8//zz2XEtnn322SxQtReaAAAASn6oXipFft1118XPfvazeOaZZ+KTn/xkLF++PMaNG5c9f9ZZZ2VD7Vqk51977bW44IILssB0++23Z8UhUrEIAACA7fI+TmmO0uLFi2PixInZcLthw4bFnXfe2VowYu7cuVmlvRapsMNdd90VF154YRx00EHZfZxSiPriF7+Y408BAABs73K9j1Me3McJAAAomfs4AQAAlArBCQAAoADBCQAAoADBCQAAYFsFp3Q/pVThbuXKldl2B6sxAQAAdCBbHJxeffXVGD16dOyzzz7xvve9L+bPn5/tP/vss+Nzn/vctmgjAABAaQWndA+lysrK7B5L3bp1a3NPpnQPJgAAgOjoN8C9++67syF6AwcObLN/7733jpdeemlrtg0AAKA0e5yWL1/epqepxWuvvRZVVVVbq10AAAClG5yOPvro+PnPf966XVZWFo2NjfHNb34zjjvuuK3dPgAAgNIbqpcC0vHHHx+PPPJI1NfXxxe+8IV4+umnsx6nP/3pT9umlQAAAKXU4zRkyJB49tln46ijjor3v//92dC9D37wg/HYY4/FnnvuuW1aCQAAkKOypg52A6a6urqoqamJ2traqK6uzrs5AABACWSDLR6qd//992/2+X/5l3/Z0pcEAAAoalscnI499tiN9qUCES0aGhrefqsAAABKeY7T66+/3mZZtGhRduPbESNGZPd4AgAAiI7e45TGAG7ohBNOiM6dO8f48eNj1qxZW6ttAAAApdnjtCl9+vSJOXPmbK2XAwAAKN0ep7/85S9ttlNRvvnz58dVV10Vw4YN25ptAwAAKM3glMJRKgaxYRXzww47LK6//vqt2TYAAIDSDE5/+9vf2myXl5fHzjvvHF26dNma7QIAACjd4LTbbrttm5YAAACUcnD67ne/+5Zf8DOf+czbaQ8AAEDRKWvacLJSO3bfffe39mJlZfHiiy9GMaurq8tKqtfW1kZ1dXXezQEAAEogG1T+M/OaAAAAOpKtdh8nAACA7dUWF4dI/vGPf8Tvfve7mDt3btTX17d57pprrtlabQMAACjN4DR9+vQ45ZRTYo899ojZs2fHkCFD4u9//3t2X6dDDjlk27QSAACglIbqTZgwIS666KJ48skns3s3/frXv4558+bFMcccE6eddtq2aSUAAEApBadnnnkmzjrrrOxxZWVlrFy5Mnr06BFXXHFFfOMb39gWbQQAACit4NS9e/fWeU39+vWLF154ofW5JUuWbN3WAQAAlOIcp8MOOyweeOCB2G+//eJ973tffO5zn8uG7f3mN7/JngMAAIiOHpxS1bxly5Zljy+//PLs8bRp02LvvfdWUQ8AANgubXFwuvLKK+Pf//3fW4ftTZ06dVu0CwAAoHTnOC1evDje8573xKBBg+Lzn/98PPHEE9umZQAAAKUanH7729/G/Pnz45JLLomHH344u3fTAQcckPVEpfs5AQAAbG/KmtKda9+Gf/zjH/GLX/wirr/++njuuedi7dq1Uczq6uqipqYmamtro7q6Ou/mAAAAJZANtrjHaX1r1qyJRx55JB566KGst6lPnz5v5+UAAACK0j8VnO69994499xzs6D0sY99LEtnt912W9b7BAAAEB29qt6AAQPitddeywpE/OhHP4qTTz45qqqqtk3rAAAASjE4XXbZZXHaaadFr169tk2LAAAASj04pSF6AAAAHcnbKg4BAADQEQhOAAAABQhOAAAApRCcpkyZEoMHD44uXbrEqFGjYubMmW/pvJtuuinKysri1FNP3eZtBAAAOq7cg9O0adNi/Pjxcemll8ajjz4aQ4cOjTFjxsSiRYs2e1664e5FF10URx999DvWVgAAoGPKPThdc801WaW+cePGxf777x9Tp06Nbt26xfXXX7/JcxoaGuKjH/1oXH755bHHHnu8o+0FAAA6nlyDU319fcyaNStGjx79ZoPKy7PtGTNmbPK8K664InbZZZc4++yzC77H6tWro66urs0CAABQMsFpyZIlWe9Rnz592uxP2wsWLGj3nAceeCB+8pOfxHXXXfeW3mPSpElRU1PTugwaNGirtB0AAOg4ch+qtyWWLl0aZ555Zhaaevfu/ZbOmTBhQtTW1rYu8+bN2+btBAAAti+Veb55Cj8VFRWxcOHCNvvTdt++fTc6/oUXXsiKQpx88smt+xobG7N1ZWVlzJkzJ/bcc88251RVVWULAABASfY4de7cOYYPHx7Tp09vE4TS9uGHH77R8fvuu288+eST8fjjj7cup5xyShx33HHZY8PwAACA7a7HKUmlyMeOHRuHHnpojBw5MiZPnhzLly/PquwlZ511VgwYMCCbq5Tu8zRkyJA25/fq1Stbb7gfAABguwlOp59+eixevDgmTpyYFYQYNmxY3Hnnna0FI+bOnZtV2gMAAMhLWVNTU1N0IKkceaqulwpFVFdX590cAACgBLKBrhwAAIACBCcAAIACBCcAAIACBCcAAIACBCcAAIACBCcAAIACBCcAAIACBCcAAIACBCcAAIACBCcAAIACBCcAAIACBCcAAIACBCcAAIACBCcAAIACBCcAAIACBCcAAIACBCcAAIACBCcAAIACBCcAAIACBCcAAIACBCcAAIACBCcAAIACBCcAAIACBCcAAIACBCcAAIACBCcAAIACBCcAAIACBCcAAIACBCcAAIACBCcAAIACBCcAAIACBCcAAIACBCcAAIACBCcAAIACBCcAAIACBCcAAIACBCcAAIACBCcAAIACBCcAAIACBCcAAIACBCcAAIACBCcAAIACBCcAAADBCQAA4O3R4wQAAFAKwWnKlCkxePDg6NKlS4waNSpmzpy5yWOvu+66OProo2OHHXbIltGjR2/2eAAAgLerMnI2bdq0GD9+fEydOjULTZMnT44xY8bEnDlzYpdddtno+Pvuuy/OOOOMOOKII7Kg9Y1vfCNOPPHEePrpp2PAgAG5/AxsQmNjRMPqiIb6iIa1zevGteuWhuZ1U0NEU+MGS9PG29H05jrJHsdb2F5vXyFv8TAAALaC3Y+OqKyKUlHW1NTmL8x3XApLI0aMiGuvvTbbbmxsjEGDBsX5558fF198ccHzGxoasp6ndP5ZZ51V8Pi6urqoqamJ2traqK6u3io/w3atfnnEG/Mils6PWLYwYvniiBWvRqx4LWJVbfNSv6z5uLReszJizaqItasiGtfk3XoAAIrV556N6Nkn1yZsSTbItcepvr4+Zs2aFRMmTGjdV15eng2/mzFjxlt6jRUrVsSaNWtixx13bPf51atXZ8v6Hw7tSAHolcciFjwVseivEUuei3jtheaQtLWUlUeUd4oor4wor2heytZbp+ezZd2xaUkbZWXtr7PX3PBx9qCd9263QVvp59pKrwMA0JGU5z74bYvk2tolS5ZkPUZ9+rRNmml79uzZb+k1vvjFL0b//v2zsNWeSZMmxeWXX75V2rtdST1EL97XvPzt/yIWp897E52PVdUR1f0jevaN6L5LRLedIrruENG1V/NzVT0jqnpEdOoe0alr81LZpbnrtaJz8zoLTEUxpQ4AALZYacW8DVx11VVx0003ZfOe0nyn9qTerDSHav0epzQUsENqWBPx7J0Rf5kW8dw9zcPp1tdrt4h+QyP6HBDRe5+InfaM2GFwRJeavFoMAABFIdfg1Lt376ioqIiFCxe22Z+2+/btu9lz//M//zMLTv/zP/8TBx100CaPq6qqypYOLc1HmnldxCPXRyxb8Ob+ml0j9jkxYvdjInY9PKLHznm2EgAAilauwalz584xfPjwmD59epx66qmtxSHS9qc//elNnvfNb34zvv71r8ddd90Vhx566DvY4hKzelnEg9+LmHFtc+GGJA21G/rhiANPi+h7oPk5AABQCkP10jC6sWPHZgFo5MiRWTny5cuXx7hx47LnU6W8VGY8zVVKUvnxiRMnxo033pjd+2nBguYelB49emQL6zzz+4g7vhCx9JXm7T5DIo66MGK/UyIqO/uYAACglILT6aefHosXL87CUApBw4YNizvvvLO1YMTcuXOzSnstfvCD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45Q+kIEDB0axSRdN3hcOpcP1gmsG3zMUG7+bKNVrplBPUwvFIQAAAAoQnAAAAAoQnHJWVVUVl156abYG1wu+Y8ib30u4ZvA9074OVxwCAABgS+lxAgAAKEBwAgAAKEBwAgAAKEBwAgAAKEBwytGUKVNi8ODB0aVLlxg1alTMnDkzz+ZQRO6///44+eSTs7tYl5WVxa233trm+VTTZeLEidGvX7/o2rVrjB49Op577rnc2kv+Jk2aFCNGjIiePXvGLrvsEqeeemrMmTOnzTGrVq2K8847L3baaafo0aNH/Ou//mssXLgwtzaTrx/84Adx0EEHtd6A8vDDD48//OEPrc+7Xticq666Kvv99NnPftY1Q7suu+yy7BpZf9l3331L+jtGcMrJtGnTYvz48Vkp8kcffTSGDh0aY8aMiUWLFuXVJIrI8uXLs2sihev2fPOb34zvfve7MXXq1HjooYeie/fu2fWTvoTomP74xz9mv4D+/Oc/xz333BNr1qyJE088MbuWWlx44YXx+9//Pn71q19lx7/yyivxwQ9+MNd2k5+BAwdmf/zOmjUrHnnkkXj3u98d73//++Ppp5/Onne9sCkPP/xw/PCHP8yC9/pcM2zogAMOiPnz57cuDzzwQGlfL6kcOe+8kSNHNp133nmt2w0NDU39+/dvmjRpkn8O2kj/N73llltatxsbG5v69u3b9K1vfat13xtvvNFUVVXV9Itf/MKnR2bRokXZtfPHP/6x9Rrp1KlT069+9avWT+iZZ57JjpkxY4ZPjcwOO+zQ9OMf/9j1wiYtXbq0ae+992665557mo455pimCy64wHcM7br00kubhg4d2u5zpfo7SY9TDurr67P/wpeGV7UoLy/PtmfMmJFHkyghf/vb32LBggVtrp+amppsuKfrhxa1tbXZescdd8zW6Tsn9UKtf92kIRO77rqr64ZoaGiIm266KeuhTEP2XC9sSurZPumkk9p8l/iOYVPSNII07WCPPfaIj370ozF37txsf6l+x1Tm3YCOaMmSJdkvqT59+rTZn7Znz56dW7soDSk0Je1dPy3P0bE1NjZm8w6OPPLIGDJkSLYvXRudO3eOXr16tTnWddOxPfnkk1lQSsN80xyDW265Jfbff/94/PHHXS9sJIXrNL0gDdXbkO8YNpT+g+4NN9wQ73rXu7JhepdffnkcffTR8dRT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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{}\n" ] } ], "source": [ "# Multiple variables → pyleoclim.MultipleSeries\n", "ms = output.to_pyleo(var_names=[\"T\", \"S\"])\n", "ms.plot(); plt.show()" ] }, { "cell_type": "markdown", "id": "c6610dfb", "metadata": {}, "source": [ "### `reframe_time_axis` — resampling onto a new grid\n", "\n", "Resamples state variables onto a requested time axis using the solver's dense output\n", "(polynomial interpolation for RK45; linear fallback for fixed-step solvers).\n", "`output.model_time` always retains the solver's original grid; `output.time` and\n", "`output.state_variables` are replaced." ] }, { "cell_type": "code", "execution_count": 40, "id": "469908e2", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "original grid: 84 points\n", "reframed grid: 200 points\n", "{}\n" ] } ], "source": [ "import copy\n", "\n", "# Work on a copy so the original output is unchanged\n", "out_reframed = copy.copy(output)\n", "out_reframed.reframe_time_axis(np.linspace(0, 50, 200)) # uniform 200-point grid\n", "\n", "print(f\"original grid: {len(output.time)} points\")\n", "print(f\"reframed grid: {len(out_reframed.time)} points\")" ] }, { "cell_type": "code", "execution_count": 41, "id": "59cd5d77", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAw0AAAEiCAYAAAC7hD4qAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjksIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvJkbTWQAAAAlwSFlzAAAPYQAAD2EBqD+naQAASMlJREFUeJzt3Qd4VFXawPE3PYQSIEDooUgRaQqCiIiFBRVZwIauCmLZVcGGuit+CogF7GID1BXL6qoouBZEXAQVpYMU6S0gQkINkF7u97wH7uwkTCYJKfdO5v97nmFmbu7cOXPvneG897znnBDLsiwBAAAAgEKEFvYHAAAAACBoAAAAAFAkWhoAAAAA+EXQAAAAAMAvggYAAAAAfhE0AAAAAPCLoAEAAACAXwQNAAAAAPwiaAAAAADgF0EDEADef/99adu2rUREREjNmjUlmLzzzjsSEhIiO3bskGDQrFkzuemmmyTQjBs3zhwnBBb9Xulx0+9ZMLjgggvMrSxx7iNYEDQALrdhwwZTiWzZsqW8+eab8sYbb0hl9NRTT8nnn3/udDGAMvfLL7+YiuXhw4cr1XcpLS3NfK758+dLZRdMnxUoDEED4HL6n1ReXp5MmjTJBA/XXHONVEaFVXRuvPFGSU9Pl4SEBAkGGzduNMEhKlfQ8Nhjj7kyaNDvlX6/9Ht2KhVp/VzBUJH291kfeeQRsw+Byo6gAahgqampJVo/OTnZ3BeVlmRZVqX8jyssLEyio6ODJvUlKirKpKEBFUG/V/r90u9ZoP5GOi08PNzsQ6CyI2gAypGd67pu3Tr5y1/+IrVq1ZLzzjvP8/d//etf0qVLF6lSpYrUrl1brr32Wtm1a1e+/PaxY8eax3Xr1jXb0m3af7v88svl22+/la5du5ptTJ061fxt2rRpctFFF0m9evVMJbRdu3YyefLkk8pnb0Ovntnb6NChg+dq2owZM8xz/Q9Ry7ly5Uqf6VNXXXWVKb+up9v54osvSrSf9HNpReHdd981j/Vm5/X76tPglnIXd19///33EhoaKmPGjMm3/MMPPzSfzXv9gn0asrOzzRXOVq1amXLGxcWZc+i7774TpyxYsEDOPvtsUx5Nm7PPO1+KOseV5pi3b9/efE8uvPBCiYmJkUaNGskzzzxz0vZeeeUVOeOMM8w6+n3S46b70dvu3bvl5ptvlvj4eHNMdP2333672J9Pz8X7779fmjRpYl7fpk0bee6550xgXpy+AN7fU71/8MEHzePmzZt7zm/7fNbHI0eOlA8++MC8j33O/vjjj/m2qeeEnhtF5dP7+y754utz6PrVqlUz+3HQoEHmsf7+PPDAA5Kbm+t5nS5Ten7a72V/7uJ+x+zv9w8//CB33nmn+R41btw432fT7WgLa40aNcz5f88990hGRka+7eTk5Mjjjz9uzkc9ZrqvHn74YcnMzBR/srKyzPdS93lsbKxUrVpVevXqJfPmzcu3j/x9Vl99GopbHvu3TL9T3bp1M/upRYsW8t577/ktN+AIC0C5GTt2rNYyrHbt2lkDBw60Xn/9deu1114zf3viiSeskJAQa8iQIWb5Y489ZtWpU8dq1qyZdejQIbPOzJkzrcGDB5ttTJ482Xr//fetVatWmb8lJCRYp512mlWrVi3roYcesqZMmWLNmzfP/O3ss8+2brrpJuvFF1+0XnnlFatv375mG6+++mq+8uk22rRpYzVo0MAaN26cWb9Ro0ZWtWrVrH/9619W06ZNrYkTJ5pbbGyseb/c3FzP69euXWuW6+d7+umnzfbPP/9887lmzJhR7P2knysqKsrq1auXeay3X375xfxt2rRppuzbt293XblLsq9HjBhhhYeHW8uXLzfP//jjD6t27dpWnz59rLy8vHyfbdiwYZ7nDz/8sCnXbbfdZr355pvW888/b1133XXmszlh9erVVpUqVcw+njBhgvX4449b8fHxVseOHc3n9lacc1z17t3batiwodWkSRPrnnvuMetedNFFZnuzZs3yrPfGG2+YZVdddZU1depUa9KkSdYtt9xi3X333Z519u7dazVu3Nhsa/z48eZ78+c//9m8To9RUfRY6HtruW+99VZzHAcMGGBef++993rW0/NRl+n5WZAu1+++0u+rHi/7/e3z+9ixY55127dvb/aLllfPRz0HdB+vWbPGs009J3R5Yb8xxfku+eLrc+h7RUdHW2eccYZ18803m3145ZVXmvX02Cgtvy7XZfobZb+X/ftU3O+Y/f3W9fQ80O+QfW7bn61Dhw7mGOg2brjhBrPsxhtvzPc5tMz2uaG/sUOHDjXPBw0alG89fQ+92fbt22d+R0aNGmU+zzPPPGN+WyIiIqyVK1cW67MWPAYlKY/9W6bfIf2u62c866yzzH7SfQi4CUEDUI7s/0y00uBtx44dVlhYmPXkk0/mW66VBK1Yei+3t6H/uRX8z0aXz549+6T3TUtLO2lZv379rBYtWvjchnel4ttvvzXLtNKSmJjoWa6VNF1uBybq4osvNv+hZ2Rk5Kt0nXvuuVarVq2skqhatWq+yrKtsKDBLeUu7r5OTU01wYtWxPR9+/fvb9WoUSNfWe3P5r0fOnXqZNZ1C630aIXSu9zr1q0z57N3xakk57hW4vS17733nmdZZmamVb9+fVNZtWngrfvPHw0itBK4f//+fMuvvfZaU4n1dby8ff7556YsGvB408qfVuS2bNlSoqBBPfvssyedw97r6m3ZsmWeZbpvdR9rBbWkQYO/71JJggZdpkGMtzPPPNPq0qWL57n+JhX8rCX9jtnf7/POO8/Kycnx+dk06PN25513muV2pf3XX381zzXI8/bAAw+Y5d9//32hQYO+p55r3jSg1Uq8BkzF+awFj0FJymP/lv3444+eZcnJySbwu//++096L8BJpCcBFeD222/P91zTZ7Rzsza579+/33OrX7++SUPxbhr3R9Md+vXrd9JyTQWxpaSkmG337t1btm3bZp5703SaHj16eJ53797d3GvKTdOmTU9arttQBw8eNGk3+hmOHj3q+QwHDhwwZdq8ebNJbygvbil3cfe1ptNoKsb69evl/PPPl6+//lpefPHFfGX1Rfuy/Pbbb6ZcTtPUFE2H05QV73KffvrpJ52HJT3HNQXmhhtu8DyPjIw06Rr2cbP3xe+//y5Lly71WT6tg3/22WcyYMAA89j7fbV8ejxWrFjh9zPOmjXL5Pfffffd+ZZrupJu85tvvpGypuexpsfYdN8OHDjQ7Gs7HcgNv1uatuN9PApzKt+x2267rdB+FSNGjMj3/K677vIcK+/7UaNGnXTMlH7XCqPvqeea0vNVy66pRZpKVdS5UpiSlkd/y3Tf2jQVSlPVirOvgYoUXqHvBgQprdx70/80tQKilSdfitsRtuB2bT///LPpC7Fw4UIz6oc3rThp7q6tYKXV/pvmc/tafujQIXO/ZcsW8xkeffRRcyusE7fmppcHt5S7JPu6Z8+ecscdd8hrr71mKk+ad1+U8ePHmwpk69atTd7/JZdcYka66dixY6Gv0Yrmvn375FRoJcrO3y5It6md7X2dt1rJsStLp3KOax57wbxw7bOwevVqz/N/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f21aF3R+Bx169a233gqo4VbbJNQ19/ExYXSCBgAAZW7GjBny+OOPl3o79lD35557rmfZpk2bZODAgVKnTh2THn7eeefJvHnzfL7+wIED0rhxYxN4lXaoXp3ct6TbeeCBB+Tdd981F5wR4OlJGgnruM+Feeedd3y+ZuXKlRKoQk+kSsVXDWfUJAAAgpxezS/t+PkFt1W7du1Sb0vrZ6+++qqMHz8+3/LLL79cWrVqJd9//73pT6qtFbps69atpu+pt1tuuUU6duwou3fvFidoYKMXlidPnizPPvusI2WoTAKqI3RlEBZ9vCN0XkaG00UBAKDS+/TTT6VDhw6mgqvDxep8T6mpqZ4x7LVSrFfDtf9j586dZfbs2T63o+vqeloB9aYXMnXyrMTERPNcr4TfeuutZphLvRJ/0UUXyapVqzzrjxs3zryPZkroVfzoE/UCX958800z6qOOWjV48GB54YUXpGbNmkVuq2B6UnJysgwYMMDsA13vgw8+KHK/LV++3AQC/fv39yzbv3+/bN682aT9aDCgwcPEiRMlLS1N1q5dm+/1up90X+jV/uKmgX300UemVUM/R/v27eWHH37w/P3CCy80j2vVqmXWvemmm4o8vko/t24XpUfQ4FBLQ67X3BEAAASThRuTZMqcdea+PGma83XXXSc333yzrF+/3qS4XHHFFZ4sh0mTJplU5+eee05Wr15trkr/+c9/NhXjgjQw0G19+OGH+ZZrBbxnz56SkJBgnl999dWmkv7NN9+YivdZZ50lF198sRw8eNDzmi1btshnn31m0ogK6y/x888/m76c99xzj1nnT3/6kzz55JMnrVecbWkFW0eP1DQirWRrn1Atoz8//fSTtG7dWqpXr+5ZppXyNm3ayHvvvWcq5jru/9SpU838HV26dPGst27dOhOM6Xq634rrwQcflPvvv98EYjrIjVb4NcVJAyf9jGrjxo3muOqxK+r4qm7dusnvv/9uAg+UkhVkUlJS9Ewy9044tGqV9UWLFtacnj0deX8AAEoqPT3dWrdunbkvrV827LX6jv/KuuTxr829Pi8vy5cvN//n79ixw+ffGzZsaD355JP5lp199tnWnXfeaR5v377dvH7lypXmud6HhIRYiYmJ5nlubq7VqFEja/Lkyeb5Tz/9ZNWoUcPKyMjIt82WLVtaU6dONY/Hjh1rRUREWMnJ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s1JPmTJFFi9eLFWrVpV+/fqZIMSmAcNvv/0m3333nalI//jjj+ZKfGURGxubryWnOOdJUTQYy8nJOeUyDR8+XCZPnlyqbRSLFWRSUlJ0ykFz75TVY8daX7RoYa1/4QXHygAAQHGlp6db69atM/eBpnfv3taIESOse+65x4qLi7MuuOACs3zNmjXWJZdcYlWtWtWqV6+edcMNN1j79u0zfxs2bJipK9i3hIQEv9t6/vnnrfbt21sxMTFW48aNrTvuuMM6evSopwzTpk2zYmNjrS+//NJq3bq1VaVKFevKK6+0UlNTrXfeecdsv2bNmtZdd91l5eTkeF6XkZFh3X///VbDhg3Ntrt162bNmzcv3+fTbTdp0sRsc9CgQdZzzz1n3suf/v37Ww888IDfdbQc1atXt959913zPC8vz6pfv7717LPPetY5fPiwFRUVZf373/82z/Uc0f21dOlSzzrffPONFRISYu3evbvQ99LXvP766+Z4REdHW82bN7emT5+e7+/eNz0OSvfF2WefbfaNfuZzzz3X2rFjh8/30HX1tYcOHfIsW7lypVm2fft2z77U7cyePdtq27atOTf69etn/fHHH57X6LkxcOBAv+eJHjc9lnXr1jX7p2fPntaSJUtOKsusWbOss846y4qIiDDL9HONHDnSnF96Puh5+cYbb1jHjh2zbrrpJqtatWpWy5Ytzeu8ZWZmmvf573//W+Lvb0nqxbQ0ONnSwORuAIAAZa6OpqU5cjtejyy+d999VyIjI+Xnn382V8kPHz4sF110kZx55pmybNkyk2KSlJQk11xzjScFZfz48SZXXFNOli5dWui2VGhoqLkCr1fY9e/ff/+9/P3vf89XhrS0NLPORx99ZN5Pr+wPHjxYZs2aZW7vv/++TJ061bQC2EaOHGmu+utrVq9eLVdffbVccsklnpQgvdqv6T+6nqbuXHjhhfLEE08UuT8WLFggXbt29buOljc7O9vk6qvt27fL3r17TUqS91X37t27mzIqvder8N7b1vV1/2hZ/dF0qSuvvFJWrVplWiuuvfZaWb9+vfmbnSb13//+1xyPGTNmmKvq2regd+/eZt/oe2uLhqYxlYZ+7ueee84cD20l2blzpzzwwAM+1y3sPNFj/9lnn5lzYcWKFXLaaaeZFhlN3fL20EMPycSJE83n7Nixo1mmr6lTp475zHfd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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{}\n" ] } ], "source": [ "fig, ax = plt.subplots(figsize=(8, 3))\n", "ax.plot(output.time, output.state_variables[\"T\"],\n", " \"o\", ms=2, color=\"steelblue\", label=f\"solver grid ({len(output.time)} pts)\")\n", "ax.plot(out_reframed.time, out_reframed.state_variables[\"T\"],\n", " color=\"firebrick\", lw=1.5, label=\"reframed (200 pts uniform)\")\n", "ax.set_xlabel(\"time\"); ax.set_ylabel(\"T\")\n", "ax.set_title(\"reframe_time_axis — dense-output interpolation\")\n", "ax.legend(); plt.tight_layout(); plt.show()" ] }, { "cell_type": "markdown", "id": "8f8527cf", "metadata": {}, "source": [ "### `add_noise` / `remove_noise` — post-hoc noise\n", "\n", "Adds externally supplied noise to any state or diagnostic variable after integration.\n", "The original clean values are saved on the first call so `remove_noise` can restore them.\n", "Useful for simulating observation uncertainty without re-running the model." ] }, { "cell_type": "code", "execution_count": 42, "id": "14ee13c5", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "noisy q range: 0.441 – 1.006\n", "{}\n" ] } ], "source": [ "import copy\n", "\n", "out_noisy = copy.copy(output) # work on a copy\n", "\n", "# Generate white noise scaled to ~2% of the q range\n", "rng = np.random.default_rng(42)\n", "noise = rng.normal(0, 0.02, size=len(out_noisy.diagnostic_variables[\"q\"]))\n", "\n", "out_noisy.add_noise(\"q\", noise)\n", "print(\"noisy q range:\", out_noisy.diagnostic_variables[\"q\"].min().round(3),\n", " \"–\", out_noisy.diagnostic_variables[\"q\"].max().round(3))" ] }, { "cell_type": "code", "execution_count": 43, "id": "8b4dc595", "metadata": {}, "outputs": [ { "data": { "image/png": "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PsH8+fORmZmJu+66C3feeacKOP744w+cOHECI0aMQJ8+fTBy5Ej1mmeeeQYxMTHqNU2aNMGSJUtw66234sCBA2jbti2PIhGRxhhYEBFRnfH29lZNn6QWwtT86dChQxW2KywsxOeff47WrVur51Jj8d133yExMREeHh6IiIjAjTfeiLVr16rAIjY2Fl9//bV6lKBCSO3FihUr1Pr333+fR5GISGMMLIiIqN5J4GEKKoR07JYmUBJUlF6XlJSk/pZaCWkW1a5duzLvI82jGjduXI8pJyKiqjCwICKieqfT6co8lz4Yla0rLi5Wf2dlZcHBwQG7du1Sj6WVDkaIiEg7DCyIiKhOSVOo0p2u60LXrl3Ve0oNRr9+/er0vYmIqG5wVCgiIqpT0qRp27ZtOHXqFFJSUsy1DrUhTaAeeOABjB49GosXL8bJkyexfft2TJkyBcuXL6+TdBMRUe0wsCAiojolnaqluZJ0wPb391cdruuCdNKWwOKFF15Qw9QOHz4cO3bsQLNmzerk/YmIqHY48zYREREREdUaayyIiIiIiKjWGFgQEREREVGtMbAgIiIiIqJaY2BBRERERES1xsCCiIiIiIhqjYEFERERERHVGgMLIiIiIiKqNQYWRERERERUawwsiIiIiIio1hhYEBERERFRrTGwICIiIiKiWmNgQUREREREqK3/B7vgojJk5lRNAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{}\n" ] } ], "source": [ "fig, ax = plt.subplots(figsize=(8, 3))\n", "ax.plot(output.time, output.diagnostic_variables[\"q\"],\n", " color=\"purple\", lw=1.5, label=\"clean\")\n", "ax.plot(out_noisy.time, out_noisy.diagnostic_variables[\"q\"],\n", " color=\"gray\", lw=0.8, alpha=0.8, label=\"+ noise\")\n", "ax.set_xlabel(\"time\"); ax.set_ylabel(\"q\")\n", "ax.set_title(\"add_noise — white noise on overturning diagnostic\")\n", "ax.legend(); plt.tight_layout(); plt.show()" ] }, { "cell_type": "code", "execution_count": 44, "id": "8e606e52", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "after remove_noise, q matches original: True\n", "{}\n" ] } ], "source": [ "# Restore the clean series\n", "out_noisy.remove_noise(\"q\")\n", "print(\"after remove_noise, q matches original:\",\n", " np.allclose(out_noisy.diagnostic_variables[\"q\"],\n", " output.diagnostic_variables[\"q\"]))" ] }, { "cell_type": "markdown", "id": "5b231c0b", "metadata": {}, "source": [ "## Advanced\n", "\n", "The features below are less commonly needed but can be useful for experiments\n", "that would otherwise require writing a new subclass." ] }, { "cell_type": "markdown", "id": "78122870", "metadata": {}, "source": [ "### `set_function` — swapping a calculation method\n", "\n", "Replaces a model calculation method on a single instance without subclassing.\n", "The replacement callable can be bound as an instance method (first arg named `self`\n", "or `model`) or as a plain function (any other first arg name); `bind` is inferred\n", "automatically or can be set explicitly." ] }, { "cell_type": "code", "execution_count": 45, "id": "d1b0ca28", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{}\n" ] } ], "source": [ "# Replace the overturning formula on one instance only\n", "def weaker_overturning(self, t, x):\n", " \"\"\"Overturning with halved hydraulic constant k.\"\"\"\n", " T, S = x[0], x[1]\n", " alpha = self.get_param_value(\"alpha\", t, x)\n", " beta = self.get_param_value(\"beta\", t, x)\n", " k = self.get_param_value(\"k\", t, x)\n", " return (k / 2.0) * (alpha * T - beta * S)\n", "\n", "model_alt = Stommel(E=0.3, T_star=1.0, S_star=0.0)\n", "model_alt.set_function(\"overturning\", weaker_overturning)\n", "out_alt = model_alt.integrate(t_span=(0, 50), y0=[1.0, 0.0], method=\"RK45\")" ] }, { "cell_type": "code", "execution_count": 46, "id": "3afe4f67", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAxYAAAEiCAYAAABkykQ1AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjksIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvJkbTWQAAAAlwSFlzAAAPYQAAD2EBqD+naQAAS4hJREFUeJzt3Qd8FGX+x/FfCCmEEjqBSFEEFBFQEETkbCh6HIqV81QQOfXulFOxcqdgx4aiHop6FtRDsHdRRLAiKFhApYMgSFNIqCEk+399H/6z7C6bZJMN2d3k8345MjuZ2X1m9pnZ5zdPmSSfz+czAAAAAIhCtWg2BgAAAAACCwAAAADlghoLAAAAAFEjsAAAAAAQNQILAAAAAFEjsAAAAAAQNQILAAAAAFEjsAAAAAAQNQILAAAAAFEjsACKMXnyZOvcubOlp6dbUlKSbdq0KS6Pl9J28803xzoZQImWL1/u8uszzzwTk6O1aNEiO+mkkywzM9Ol4/XXX7dE06pVK7vwwgtjmobp06e746d/I1335ZdftqqY1++7775yeT+dM3o/vW9VPHeRGAgsUKl98cUXrsBdloDgt99+s3POOcdq1KhhY8eOteeee85q1qxpsfLuu+8SPKDMfvzxR5d/YlUoiReDBg2yuXPn2h133OHO6a5du8Y6SZXGhAkTbMyYMRZPtm3b5vJ9JAEQgOhVL4f3AOI6sLjlllvc3b26deuWatuvvvrKNm/ebLfddpv17t3bYk2BhQKccDUT27dvt+rVOZ1RfGChc+HYY491d7xjpWXLli6/pqSkVPhn63NnzJhh//73v+3yyy+v8M+vTP7whz+445mamhoUWMybN8+uvPJKi6fAQvlelPeRmOcuEgc1FkAR1q1b5/4tbUASC2qqRWCBcHbs2GGFhYX77OBs3bq1VOurKYXya3JyslW09evXl/s5Xdr9ryyqVavmvkf9i6ohlucuEgdXBMQd1RLojpfuqqalpVnjxo3txBNPtDlz5gStN3PmTDv55JNdW+mMjAw75phj7PPPP/f/XXf2r732Wje///77u4tipO1TdWdLTSbkiCOOcNt5bZqLat+sbQLviHntil988UXX7GK//fZzF+UTTjjBFi9evNf22p8//vGPVq9ePdfkqmPHjvbggw+6v+nzVFsh3n5oKq6PxTfffGOnnHKK1alTx2rVquU+98svvwzbZlfHbdiwYdaoUSP32aeffrq/EBardvBnnnmmZWVluWOmY/fnP//ZcnJy3N/POOMMO/zww4O26devn9uXN998M+iYatl7773nXv/+++92zTXX2KGHHuqOiY6NjtF3330X9F7edzdp0iT717/+5dKh43LqqafaypUrI9qHko7/119/7T5j/Pjxe237/vvvu7+9/fbb/mWrVq2yiy66yJo0aeLOi0MOOcSeeuqpsOmeOHGi3XjjjZadne3OjYceesjOPvtst85xxx3nzz9e85Ci+uiE5nUvv3z88cf2j3/8w52b+m5Eeb9Dhw6uZkSfoc/V599zzz0lttPWZ+gYaR/79+/v5pUX9V0VFBTs1UTxggsucMdVAYLOU31/JbX91v7pjqvouqD1A2tuSnO+FLf/33//vbsWaf8PPPBAf78CbdO9e3fXtLJdu3b24YcfBr23jkG4miSlO/BcDyfSfB1OWc+l0D4W2v933nnHfv75Z3/+Ct0fBbiRXAtfeukl69KliztWDRs2tPPPP9/ljeKut+GOo/Ka8pGo1sJLV3H90fLz8926bdq0cWls0KCBHX300TZlypRSfXaoBx54wOU/7ZPyh2p2Qs2fP981v1WavXyi2rXivPHGG9a3b19r1qyZuy60bt3a1bKHnjclXVNF+6h91XmlfKTP1/Uv1ucuEgttJxB3/va3v7kfYzVVaN++vbsYffbZZ/bTTz/5fwA/+ugj98OpH5+RI0e6u2ZPP/20HX/88fbpp59at27d3A/mwoUL7YUXXnAXdf1AifdDUxxdzHVRffzxx+3WW291gYku2GVx1113ufTpQquLuApa5513nvuhDryg/+lPf7KmTZvaFVdc4S7+2l8VLPX60ksvtdWrV7v11C68JD/88IP16tXLXcCvu+46V3X92GOPuR9Dr4ATaOjQoS6g0bHUj4faSev4q2Bd0Xbu3Gl9+vSxvLw8ly4dC/1o6Vior4wCSe2bflBzc3PdPvp8Phcc6Tjr+1cAIJrXsp49e7rXS5cudZ11VcjWd7p27Vp3XPRDrwKxfpwDqRCkH73rr7/e1WDpuKhZ3Lfffut++KM5/mrbf8ABB7jA0wtiPTru+j50HETpPPLII11a9L0oD6uAN2TIEHcMQpueqGChJirKczqO6qz8z3/+0wUYKigcfPDBbj3v39JSoVppGDFiRNAd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dtppp9n555/vXquPg963ffv2QU2b1FfCk5ub655zVhSvKZPSE4m77rrLBT9q5qW+I4GfjejReTtGNRYemkMBAIB4oUL3kCFDXAfujz76yHWyvvDCC11NgkdNoM477zw3cpQ6S6vgr07Uo0aNch2zi6J+Deos/cUXX9hPP/3knnOxdu3aoHU0itRzzz1nn376qWtyNWjQoGKbLKkvR40aNVz/Dr1XTk5Oift43333ufTrs/TAZZQfAosYSK+3J7DYvnF7LJIAAABQZJMl1UT069fPevfubUcffbQbzSmQOmkrsLj66qtd/4v+/fvbV1995a/lCOfGG2+0ww8/3D3bQsPCqrO1tgs0fPhwVzPypz/9yTVb0t9Vi1KU6tWr20MPPWSPPfaY60iuGpFIPPDAA3bOOee44EK1JigfSb7inlBXCalKLTMz00W0derUiUka3r/6ffvy/i/d/OBPB1uLo4s+CQEAQOLR0Kq6k6/nLKSn77mhCCRafi1N2Zkaixg3haLGAgAAAJUBgUUMO28LfSwAAABQGRBYxLrG4nf6WAAAACDxEVjEQI0Ge2osCCwAAABQGRBYxECN+gGBxW/UWAAAACDxEVjEQEaDPY+up8YCAAAAlQGBRaybQlFjAQAAgEqAwCIG0jPTLalakpunxgIAAACVAYFFDCio8J6+ve23bbFIAgAAAFCuCCxi3M+CplAAACCeHHvssXbllVdWyGctWLDAsrKybPPmzRYrn3/+uR166KGWkpJi/fv3t1i68MILyz0N48aNs379+llFILCIcT+LvNw8K9hZEKtkAAAAlMktt9xi559/vv3+++82dOhQa9eundWoUcNatGhh//znPy0nJ6fE9xg+fLjbtnbt2jELioYNG2adO3e2ZcuW2TPPPGMVYfny5ZaUlGTffvtt0PIHH3yw3NNw0UUX2Zw5c+zTTz+1fY3AIkZqNqrpn9+2geZQAAAgsbzxxht26qmn2urVq91033332bx581zBePLkyTZkyJBit1+xYoW9/fbb7i59LC1ZssSOP/5422+//axu3boxTUtmZma5pyE1NdX+8pe/2EMPPWT7GoFFjGQ02jPk7Nb1W2OVDAAAgGK98847rsD7v//9z79s5cqV9sMPP9jJJ59sHTp0sFdeecU1t2ndurUrpN9xxx321ltv2a5du4p83xdffNE6depk2dnZ/mU///yze5969epZzZo17ZBDDrF3333X/3cFLqeccorVqlXLmjRpYhdccIFt2LDB/U0Byscff+zu+qs2QJNqBkqqNfjtt9/cXX3NKyjSFFq4f/31193fPTfffLOr5XjuueesVatW7vj8+c9/DmrSVVhYaPfcc48deOCBlpaW5mpydFxk//33d/8edthh7n1V0xKuKVReXp6r/WncuLGlp6fb0UcfbV999ZX/79OnT3fbT5061bp27WoZGRl21FFHuSZmgXRM33zzTdu+fd8+P43AIkZqNg6osVhPjQUAAIg/EyZMsHPPPdcFFeedd55/uQqpKgzXqVMn7HZqBqW/Va9evcj3VtMcFYYDXXbZZa4w/cknn9jcuXPt7rvvdkGEbNq0yQUtKox//fXXrlZk7dq1ds4557i/K6Do0aOHXXzxxfbrr7+6qXnz5kV+vv6mdZTOMWPGuPkBAwaUqqZDAYdqXTR9/PHHdtdddwU189Lrm266yX788Ud3LBUMyaxZs9y/H374ofvcV199NexnXHfddS5oGz9+vGvOpCClT58+rvlZoH//+982evRod1x0zBUoBdJxVpA3c+ZM25eK/raxT1FjAQBA1fTKl0vt1S+XlbjegVl17JY/HxG0bOTEr2zxmtwStz3jyP3tzCMPiCqdY8eOdQVW1Twcc8wxezWDOu2008JupxqE2267zS655JJi31+1E6GBhZpHnXnmma4ztRxwwJ59+M9//uOCijvvvNO/7KmnnnIBwsKFC61t27au2Y/u2qtDeEmSk5PderrjrxqHSLYJpBoJ1W54/UMuuOACV3OgWgnVXCjQUZoHDRrk/q7aHNU4SKNGjdy/DRo0KPJzt27dao8++qj7DNXSyBNPPGFTpkyxJ5980q699lr/uvpM7zu64YYbrG/fvrZjxw5XyyE6JtpHHfN9icAiHvpYUGMBAECVsS1vl23YvKPE9RrV2V0oDJSzbWdE2+ozovHyyy/bunXr3IhJRxwRHNzk5ua6u/Mq3IbS31Sobd++vWsuVBw1y/EKvh41+/n73/9uH3zwgfXu3dsFGR07dnR/++6772zatGn+GozQ2gMFFhVJTaACO503bdrUHTP56aefXM3LCSecUOb31z7l5+dbz549/cs0clW3bt3c+wfyjpGXDlFa1PzKo47127bt21YyBBYxQo0FAABVU0ZadWtY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AABA1AgsAAAAAESNwAIAAABA1AgsAAAAAESNwAIAAABA1AgsAAAAAESNwAIAAABA5Qgsxo4da61atbL09HTr3r27zZo1q8h1n3jiCevVq5fVq1fPTb179y52fQAAAABVILCYNGmSDRs2zEaOHGlz5syxTp06WZ8+fWzdunVh158+fbqde+65Nm3aNJsxY4Y1b97cTjrpJFu1alWFpx0AAABAnDx5WzUURxxxhP3nP/9xrwsLC12wMHToULvhhhtK3L6goMDVXGj7gQMHlrg+T94GAAAAKtmTt3fu3GmzZ892zZn8CapWzb1WbUQktm3bZvn5+Va/fv2wf8/Ly3MHJHACAAAAUL5iGlhs2LDB1Tg0adIkaLler1mzJqL3uP76661Zs2ZBwUmgUaNGuSjLm1QbAgAAAKCS9bGIxl133WUTJ0601157zXX8Dmf48OGu6sabVq5cWeHpBAAAACq76rH88IYNG1pycrKtXbs2aLleZ2VlFbvtfffd5wKLDz/80Dp27FjkemlpaW4CAAAAUElrLFJTU61Lly42depU/zJ13tbrHj16FLndPffcY7fddptNnjzZunbtWkGpBQAAABCXNRaioWYHDRrkAoRu3brZmDFjbOvWrTZ48GD3d430lJ2d7fpKyN13320jRoywCRMmuGdfeH0xatWq5SYAAAAAVTCwGDBggK1fv94FCwoSOnfu7GoivA7dK1ascCNFeR599FE3mtRZZ50V9D56DsbNN99c4ekHAAAAEAfPsahoPMcCAAAAqGTPsQAAAABQORBYAAAAAIgagQUAAACAqBFYAAAAAIgagQUAAACAqBFYAAAAAIgagQUAAACAqBFYAAAAAIgagQUAAACAqBFYAAAAAIgagQUAAACAqBFYAAAAAIgagQUAAACAqBFYAAAAAIgagQUAAACAqBFYAAAAAIgagQUAAACAqBFYAAAAAIgagQUAAACAqBFYAAAAAIgagQUAAACAqBFYAAAAAIgagQUAAACAqBFYAAAAAIgagQUAAACAqBFYAAAAAKgcgcXYsWOtVatWlp6ebt27d7dZs2YVu/5LL71kBx10kFv/0EMPtXfffbfC0goAAAAgDgOLSZMm2bBhw2zkyJE2Z84c69Spk/Xp08fWrVsXdv0vvvjCzj33XBsyZIh988031r9/fzfNmzevwtMOAAAAYLckn8/nsxhSDcURRxxh//nPf9zrwsJCa968uQ0dOtRuuOGGvdYfMGCAbd261d5++23/siOPPNI6d+5s48aNK/HzcnNzLTMz03JycqxOnTrlvDcAAABA5VGasnNMayx27txps2fPtt69e+9JULVq7vWMGTPCbqPlgeuLajiKWj8vL88dkMBJtm/f7v7dsWOHm7xlWl+2bdvmn1cgo7R68/n5+W5+y5YttmvXLje/efNm/7w+o6CgwD+vYEnxm+b1r1576dB63ry21/t483p/0efpc71j5s0rfUqnN88+8T2R9zifuEZwLef3id9cyhGUjfLKuQwbMV8MrVq1Sin1ffHFF0HLr732Wl+3bt3CbpOSkuKbMGFC0LKxY8f6GjduHHb9kSNHus8InS644AL396uuuspNMmTIELe+nHXWWb7Ro0e7+ZNOOsn3xBNPuPkjjzzS9+KLL7r59u3b+yZPnuzms7Oz/ftRu3Zt37x589y8PmvlypW+nJwcN69/9do79FpP64u21/uI3lfvL/o8fa4oHUqPKH1Kp7efSj/7xPdE3uN84hrBtZzfJ35zKUdQNiqvMqxXblUZtiSVPrDYsWOHOxDe5B2cNWvWuL9v377dTbJt2za3vmzdutU/v2XLFl9eXp5/fufOnW5+8+bNvvz8fDefm5vrn9fn7Nq1yz9fUFDgKywsdPP6V6+9L0frefPaXu/jzev9RZ+nzxWlw5tX+pROb17pZ5/4nsh7nE9cI7iW8/vEby7lCMpG5VWG3bRpU8SBRUz7WKhqJiMjw15++WXXAdszaNAg27Rpk73xxht7bdOiRQvX2fvKK6/0L1PH79dff92+++67Ej+TPhYAAABAJetjkZqaal26dLGpU6f6l6ktl1736NEj7DZaHri+TJkypcj1AQAAAOx71S3GVPugGoquXbtat27dbMyYMa5zyeDBg93fBw4caNnZ2TZq1Cj3+oorrrBjjjnGRo8ebX379rWJEyfa119/bY8//niM9wQAAACoumIeWGj42PXr19uIESNszZo1btjYyZMnW5MmTdzfV6xY4UaK8hx11FE2YcIEu/HGG+1f//qXtWnTxjWD6tChQwz3AgAAAKjaYv4ci4pGHwsAAACgkvWxAAAAAFA5EFgAAAAASPw+FhXNa/nlPe0aAAAAQHhemTmS3hNVLrDQY8ulefPmsU4KAAAAkDBlaPW1KE6V67yt52SsXr3aateubUlJSTGL/BTYrFy5ssROMKjcyAsgH4BrAvh9QDyXExQqKKho1qxZ0Eit4VS5GgsdkP3228/igTIIgQXIC+CaAH4fQFkB8VxmLKmmwkPnbQAAAABRI7AAAAAAEDUCixhIS0uzkSNHun9RtZEXQD4A1wTw+4DKUk6ocp23AQAAAJQ/aiwAAAAARI3AAgAAAEDUCCwAAAAARI3AooKNHTvWWrVqZenp6da9e3ebNWtWRScBFeyTTz6xfv36uQfL6KGMr7/+etDf1c1pxIgR1rRpU6tRo4b17t3bFi1axPdUCY0aNcqOOOII94DOxo0bW//+/W3BggVB6+zYscMuu+wya9CggdWqVcvOPPNMW7t2bczSjPL36KOPWseOHf3j0vfo0cPee+89/9/JA1XXXXfd5X4nrrzySv8y8kPVcPPNN7vvPnA66KCDEi4fEFhUoEmTJtmwYcNc7/45c+ZYp06drE+fPrZu3bqKTAYq2NatW913raAynHvuucceeughGzdunM2cOdNq1qzp8oUuIqhcPv74Y/fD8OWXX9qUKVMsPz/fTjrpJJdHPFdddZW99dZb9tJLL7n1V69ebWeccUZM043ypYe0qgA5e/Zs+/rrr+3444+30047zX744Qf3d/JA1fTVV1/ZY4895oLOQOSHquOQQw6xX3/91T999tlniZcPNCoUKka3bt18l112mf91QUGBr1mzZr5Ro0bxFVQROuVee+01/+vCwkJfVlaW79577/Uv27Rpky8tLc33wgsvxCiVqCjr1q1zeeLjjz/2f/cpKSm+l156yb/OTz/95NaZMWMGX0wlVq9ePd9///tf8kAVtXnzZl+bNm18U6ZM8R1zzDG+K664wi3nmlB1jBw50tepU6ewf0ukfECNRQXZuXOnuzulZi6eatWqudczZsyoqGQgzixbtszWrFkTlC8yMzNdMznyReWXk5Pj/q1fv777V9cI1WIE5gdVhbdo0YL8UEkVFBTYxIkTXa2VmkSRB6om1WT27ds36NwX8kPVsmjRItds+oADDrDzzjvPVqxYkXD5oHqsE1BVbNiwwf2ANGnSJGi5Xs+fPz9m6UJsKaiQcPnC+xsqp8LCQteOumfPntahQwe3TN95amqq1a1bN2hd8kPlM3fuXBdIqMmj2ku/9tpr1r59e/v222/JA1WMAks1j1ZTqFBcE6qO7t272zPPPGPt2rVzzaBuueUW69Wrl82bNy+h8gGBBQDE6A6lfjAC29Ci6lDhQUGEaq1efvllGzRokGs3japl5cqVdsUVV7g+VxrUBVXXKaec4p9XPxsFGi1btrQXX3zRDeySKGgKVUEaNmxoycnJe/Xg1+usrKyKSgbijPfdky+qlssvv9zefvttmzZtmuvIG5gf1Gxy06ZNQetznah8dPfxwAMPtC5durjRwjTAw4MPPkgeqGLUxEUDuBx++OFWvXp1NynA1IAemtcdaa4JVVPdunWtbdu2tnjx4oS6LhBYVOCPiH5Apk6dGtQUQq9VHY6qaf/993cXhcB8kZub60aHIl9UPuq/r6BCzV4++ugj9/0H0jUiJSUlKD9oOFq1syU/VG76PcjLyyMPVDEnnHCCaxan2itv6tq1q2tf781zTaiatmzZYkuWLHFD0SfSbwNNoSqQhppVdbcuFN26dbMxY8a4DnuDBw+uyGQgBhcH3XEI7LCtHwx12FXHK7Wzv/32261NmzauoHnTTTe5zlt6xgEqX/OnCRMm2BtvvOGeZeG1jVWHfVV1698hQ4a4a4Xyh55xMHToUPfDceSRR8Y6+Sgnw4cPd80edP5v3rzZ5Ynp06fb+++/Tx6oYnQd8PpYeTTkuJ5V4C3nmlA1XHPNNe6ZV2r+pKFk9WgCtXQ599xzE+u6EOthqaqahx9+2NeiRQtfamqqG372yy+/jHWSsI9NmzbNDQkXOg0aNMg/5OxNN93ka9KkiRtm9oQTTvAtWLCA76USCpcPND399NP+dbZv3+77xz/+4YYfzcjI8J1++um+X3/9NabpRvm66KKLfC1btnS/A40aNXLn/AcffOD/O3mgagscblbID1XDgAEDfE2bNnXXhezsbPd68eLFCZcPkvS/WAc3AAAAABIbfSwAAAAARI3AAgAAAEDUCCwAAAAARI3AAgAAAEDUCCwAAAAARI3AAgAAAEDUCCwAAAAARI3AAgAAAEDUCCwAAPvU9OnTLSkpyTZt2sSRBoBKjCdvAwDK1bHHHmudO3e2MWPGuNc7d+6033//3Zo0aeICDABA5VQ91gkAAFRuqamplpWVFetkAAD2MZpCAQDKzYUXXmgff/yxPfjgg652QtMzzzwT1BRKr+vWrWtvv/22tWvXzjIyMuyss86ybdu22fjx461Vq1ZWr149++c//2kFBQX+987Ly7NrrrnGsrOzrWbNmta9e3fXzAoAEB+osQAAlBsFFAsXLrQOHTrYrbfe6pb98MMPe62nIOKhhx6yiRMn2ubNm+2MM86w008/3QUc7777ri1dutTOPPNM69mzpw0YMMBtc/nll9uPP/7otmnWrJm99tprdvLJJ9vcuXOtTZs2fIsAEGMEFgCAcpOZmemaPqkWwmv+NH/+/L3Wy8/Pt0cffdRat27tXqvG4rnnnrO1a9darVq1rH379nbcccfZtGnTXGCxYsUKe/rpp92/CipEtReTJ092y++8806+RQCIMQILAECFU+DhBRWijt1qAqWgInDZunXr3LxqJdQsqm3btkHvo+ZRDRo0qMCUAwCKQmABAKhwKSkpQa/VByPcssLCQje/ZcsWS05OttmzZ7t/AwUGIwCA2CGwAACUKzWFCux0XR4OO+ww956qwejVq1e5vjcAoHwwKhQAoFypSdPMmTNt+fLltmHDBn+tQzTUBOq8886zgQMH2quvvmrLli2zWbNm2ahRo+ydd94pl3QDAKJDYAEAKFfqVK3mSuqA3ahRI9fhujyok7YCi6uvvtoNU9u/f3/76quvrEWLFuXy/gCA6PDkbQAAAABRo8YCAAAAQNQILAAAAABEjcACAAAAQNQILAAAAABEjcACAAAAQNQILAAAAABEjcACAAAAQNQILAAAAABEjcACAAAAQNQILAAAAABEjcACAAAAQNQILAAAAABYtP4P4KWE3Jn7Al0AAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{}\n" ] } ], "source": [ "fig, ax = plt.subplots(figsize=(8, 3))\n", "ax.plot(output.time, output.diagnostic_variables[\"q\"],\n", " color=\"purple\", lw=2, label=\"default k\")\n", "ax.plot(out_alt.time, out_alt.diagnostic_variables[\"q\"],\n", " color=\"steelblue\", ls=\"--\", lw=2, label=\"k/2 (set_function)\")\n", "ax.axhline(0, color=\"k\", lw=0.8, ls=\":\")\n", "ax.set_xlabel(\"time\"); ax.set_ylabel(\"q\")\n", "ax.set_title(\"set_function — swap overturning formula without subclassing\")\n", "ax.legend(); plt.tight_layout(); plt.show()" ] } ], "metadata": { "kernelspec": { "display_name": "cc_env_dev", "language": "python", "name": "cc_env_dev", "path": "/Users/jlanders/Library/Jupyter/kernels/cc_env_dev" }, "language_info": { "name": "python", "version": "3.11.0" } }, "nbformat": 4, "nbformat_minor": 5 }