diff --git a/examples/userapi/07_sparse_operations.ipynb b/examples/userapi/07_sparse_operations.ipynb new file mode 100644 index 00000000000..aa380c3df8c --- /dev/null +++ b/examples/userapi/07_sparse_operations.ipynb @@ -0,0 +1,630 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Sparse operations in devito\n", + "\n", + "In this tutorials, we look at the API devito offers for sparse operations:\n", + "\n", + "- `injection` that inject values at given sparse position (i.e point source)\n", + "- `interpolation` that reads the value of a field at sparse positions (i.e point measurments)\n", + "\n", + "In devito, sparse operation are define as methods for `SparseFunction`, `SparseTimeFunction`, `PrecomputedSparseFunction`, `PrecomputedSparseTimeFunction`. For practicality, we will only consider the time-dependent functions in this tutorials but all operations trivially apply to spatial-only functions" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "from devito import *\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "from matplotlib.ticker import AutoMinorLocator, FixedLocator" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "grid = Grid((51, 51))\n", + "nt = 11\n", + "f = TimeFunction(name=\"f\", grid=grid, space_order=4)\n", + "u = TimeFunction(name=\"u\", grid=grid, space_order=4, save=nt)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0UAAANECAYAAAB/24QQAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAACYfUlEQVR4nOzdeXxTVf7/8fctScvWXDZbFtlVBAeFwQ0YBQYEFVHHDXFhEXELijDjKDMKCOO+4RLBBRC3ER1ncRRQZHFFcVBURFBkEwRkTwIIaXt/f/hLvgkthaTpbdPzej4efTzszf2c97knB/RjkhvLcRxHAAAAAGCorIqeAAAAAABUJJoiAAAAAEajKQIAAABgNJoiAAAAAEajKQIAAABgNJoiAAAAAEajKQIAAABgNJoiAAAAAEajKQIAAABgNJoiACjBZ599pi5duqhWrVqyLEtLliyRJM2ePVsdOnRQ9erVZVmWdu7cmfTYlmVp+PDh6Z1wORk3bpwsyzqscy3L0rhx48p3QjgsCxYskGVZWrBgwSHPXbNmjSzL0nPPPVfu8wKAyoqmCIARvvnmG11xxRVq0qSJcnJy1LhxY11++eX65ptvip0biUR08cUXa/v27XrkkUf0wgsvqHnz5tq2bZsuueQS1ahRQ4FAQC+88IJq1apVYt7HH3+scePGpdQ0AeXh5Zdf1sSJEyt6GgBQKXkqegIAUN7++c9/asCAAapXr56GDh2qli1bas2aNZoyZYr+8Y9/6JVXXtEf/vCH2Pk//PCD1q5dq2eeeUZXX3117Pjs2bMVCoU0YcIE9erVq9TMjz/+WHfeeacGDx6sOnXqlNellbvbb79dt912W0VPA0k6/fTTtXfvXmVnZ8eOvfzyy1q6dKluvvnmhHObN2+uvXv3yuv1ujxLAKg8aIoAVGk//PCDrrzySrVq1Urvv/++jjjiiNhjI0aM0GmnnaYrr7xSX331lVq1aiVJ+vnnnyWpWDNzsONV0e7du1WrVi15PB55PFXvXxWO4+iXX35RjRo1Knoq5SIrK0vVq1c/rHMtyzrscwGgquLtcwCqtAceeEB79uzR008/ndAQSVKDBg301FNPaffu3br//vslSYMHD1a3bt0kSRdffLEsy1L37t3VvXt3DRo0SJJ00kknybIsDR48uMTMcePG6ZZbbpEktWzZUpZlybIsrVmzJuG8f//73/rNb36jnJwcHXfccZo9e3axsTZs2KCrrrpK+fn5sfOmTp16WNe+d+9e3XTTTWrQoIFyc3N17rnnasOGDcU++xP93NCyZct02WWXqW7duvrd736X8Fi8ffv2aeTIkTriiCNi465fv/6w5iRJjz/+uI477jjVrFlTdevW1YknnqiXX3652HyWL1+uSy65RD6fT/Xr19eIESP0yy+/JIw1bdo0/f73v1deXp5ycnLUrl07TZo0qVhmixYtdM455+jtt9/WiSeeqBo1auipp56SJM2ZM0e/+93vVKdOHdWuXVtt2rTRX/7yl2LXPHbsWB111FHKyclR06ZN9ec//1n79u075PV2795dv/nNb7R48WJ16dJFNWrUUMuWLTV58uRi5/78888aOnSo8vPzVb16dZ1wwgmaPn16sfNeeeUVderUSbm5ufL5fGrfvr0effTR2OMHfqaoe/fueuutt7R27drYfmzRooWkg3+maN68eTrttNNUq1Yt1alTR+edd56+/fbbhHOiz9XKlStjr4ratq0hQ4Zoz549CecezjoDQEWpev/7DwDi/Pe//1WLFi102mmnlfj46aefrhYtWuitt96SJF177bVq0qSJ7r77bt1000066aSTlJ+fL0lq06aNnn76aY0fP14tW7ZU69atSxzzggsu0Hfffae///3veuSRR9SgQQNJSmjKPvzwQ/3zn//UDTfcoNzcXD322GO68MILtW7dOtWvX1+StHnzZp166qmxGzMcccQRmjVrloYOHapgMFjsbVAHGjx4sF599VVdeeWVOvXUU/Xee++pb9++Bz3/4osv1tFHH627775bjuMc9Lyrr75aL774oi677DJ16dJF8+bNK3XceM8884xuuukmXXTRRbEm56uvvtKnn36qyy67LOHcSy65RC1atNA999yjTz75RI899ph27Nih559/PnbOpEmTdNxxx+ncc8+Vx+PRf//7X91www0qKiqS3+9PGG/FihUaMGCArr32Wg0bNkxt2rTRN998o3POOUfHH3+8xo8fr5ycHK1cuVIfffRRrK6oqEjnnnuuPvzwQ11zzTVq27atvv76az3yyCP67rvv9O9///uQ171jxw6dffbZuuSSSzRgwAC9+uqruv7665Wdna2rrrpK0q9NbPfu3bVy5UoNHz5cLVu21GuvvabBgwdr586dGjFihKRfm4sBAwaoZ8+euu+++yRJ3377rT766KPYOQf661//ql27dmn9+vV65JFHJEm1a9c+6HzfffddnXXWWWrVqpXGjRunvXv36vHHH1fXrl31+eefxxqq+OeqZcuWuueee/T555/r2WefVV5eXmx+h7POAFChHACoonbu3OlIcs4777xSzzv33HMdSU4wGHQcx3Hmz5/vSHJee+21hPOmTZvmSHI+++yzQ2Y/8MADjiRn9erVxR6T5GRnZzsrV66MHfvyyy8dSc7jjz8eOzZ06FCnUaNGztatWxPqL730Use2bWfPnj0HzV+8eLEjybn55psTjg8ePNiR5IwdOzZ2bOzYsY4kZ8CAAcXGiT4WtWTJEkeSc8MNNyScd9lllxUbtyTnnXeec9xxx5V6TjTz3HPPTTh+ww03OJKcL7/8MnaspDXo06eP06pVq4RjzZs3dyQ5s2fPTjj+yCOPOJKcLVu2HHQ+L7zwgpOVleV88MEHCccnT57sSHI++uijUq+nW7dujiTnoYceih3bt2+f06FDBycvL8/Zv3+/4ziOM3HiREeS8+KLL8bO279/v9O5c2endu3asf05YsQIx+fzOQUFBQfNjO7h+fPnx4717dvXad68ebFzV69e7Uhypk2bFjsWndu2bdtix7788ksnKyvLGThwYOxY9Lm66qqrEsb8wx/+4NSvXz/2++GsMwBUJN4+B6DKCoVCkqTc3NxSz4s+HgwGy31OUb169Up4pen444+Xz+fTqlWrJP36mZfXX39d/fr1k+M42rp1a+ynT58+2rVrlz7//PODjh99K94NN9yQcPzGG288aM111113yHnPnDlTknTTTTclHD/Uq1ZRderU0fr16/XZZ58d8twDX+mJzj06B0kJnwnatWuXtm7dqm7dumnVqlXatWtXQn3Lli3Vp0+fYvORpP/85z8qKioqcR6vvfaa2rZtq2OPPTbhefj9738vSZo/f/4hr8Xj8ejaa6+N/Z6dna1rr71WP//8sxYvXhy7roYNG2rAgAGx87xer2666SaFw2G99957sTnv3r1bc+bMOWRuKjZu3KglS5Zo8ODBqlevXuz48ccfrzPOOCNh/aMO3DunnXaatm3bFvszdTjrDAAViaYIQJUVbXaizdHBHG7zlE7NmjUrdqxu3brasWOHJGnLli3auXNn7LNQ8T9DhgyR9H83fijJ2rVrlZWVpZYtWyYcP+qoow5ac+C5pY174FsH27Rpc8haSbr11ltVu3ZtnXzyyTr66KPl9/sP+haqo48+OuH31q1bKysrK+GzWR999JF69eoV+9zLEUccEfucSklN0YH69++vrl276uqrr1Z+fr4uvfRSvfrqqwn/4f7999/rm2++KfY8HHPMMZJKfx6iGjduXOz27dH66PWsXbtWRx99tLKyEv/V3LZt29jj0q+N7jHHHKOzzjpLRx55pK666qoSP4+WqmhOSc9p27ZttXXrVu3evTvh+IH7uW7dupIU28+Hs84AUJH4TBGAKsu2bTVq1EhfffVVqed99dVXatKkiXw+n0szk6pVq1bicef/f5Yn+h+LV1xxRewGDwc6/vjj0zonN+7E1rZtW61YsUJvvvmmZs+erddff11PPvmkxowZozvvvLPU2gNv+PDDDz+oZ8+eOvbYY/Xwww+radOmys7O1syZM/XII48U+w/ukq6vRo0aev/99zV//ny99dZbmj17tmbMmKHf//73euedd1StWjUVFRWpffv2evjhh0ucV9OmTZNchbLJy8vTkiVL9Pbbb2vWrFmaNWuWpk2bpoEDB5Z4UwY3HGo/H846A0BFoikCUKWdc845euaZZ/Thhx/G7qgW74MPPtCaNWsS3tqUDgf+B3yyond2KywsPOR3IpWkefPmKioq0urVqxNecVm5cmWZ5hUd94cffkh4JWHFihWHPUatWrXUv39/9e/fX/v379cFF1ygu+66S6NHj064NfT333+f8OrOypUrVVRUFPuQ/3//+1/t27dPb7zxRsIrFYfzdrZ4WVlZ6tmzp3r27KmHH35Yd999t/76179q/vz5sbc5fvnll+rZs2fKz+tPP/0Uu8151HfffSdJsetp3ry5vvrqKxUVFSW8WrR8+fLY41HZ2dnq16+f+vXrp6KiIt1www166qmndMcddxz01cDDnXs0p6TndPny5WrQoMFBv7S4NIdaZwCoSLx9DkCVdsstt6hGjRq69tprtW3btoTHtm/fruuuu041a9aM3UI7XaL/0bhz586U6qtVq6YLL7xQr7/+upYuXVrs8S1btpRaH/3szJNPPplw/PHHH09pPlFnnXWWJOmxxx5LOD5x4sTDqj/wOcjOzla7du3kOI4ikUjCY4FAIOH36Nyjc4i+uuDE3Slv165dmjZt2mHNRfp1DxyoQ4cOkhS73fYll1yiDRs26Jlnnil27t69e4u9lawkBQUFsVuAS9L+/fv11FNP6YgjjlCnTp0kSWeffbY2bdqkGTNmJNQ9/vjjql27duxW8QeuYVZWVuxVw9JuEV6rVq1ibyksSaNGjdShQwdNnz49Yf8uXbpU77zzjs4+++xDjnGgw1lnAKhIvFIEoEo7+uijNX36dF1++eVq3769hg4dqpYtW2rNmjWaMmWKtm7dqr///e8Hvb12qqL/ofvXv/5Vl156qbxer/r165fU/2G/9957NX/+fJ1yyikaNmyY2rVrp+3bt+vzzz/Xu+++W+J/aMbnX3jhhZo4caK2bdsWuyV39NWJVF/x6NChgwYMGKAnn3xSu3btUpcuXTR37tzDfgWqd+/eatiwobp27ar8/Hx9++23euKJJ9S3b99in+lavXq1zj33XJ155plauHBh7DbgJ5xwQmys6Csm1157rcLhsJ555hnl5eVp48aNhzWf8ePH6/3331ffvn3VvHlz/fzzz3ryySd15JFHxl5ZvPLKK/Xqq6/quuuu0/z589W1a1cVFhZq+fLlevXVV2PffVSaxo0b67777tOaNWt0zDHHaMaMGVqyZImefvppeb1eSdI111yjp556SoMHD9bixYvVokUL/eMf/9BHH32kiRMnxtbn6quv1vbt2/X73/9eRx55pNauXavHH39cHTp0iH3+qCSdOnXSjBkzNGrUKJ100kmqXbu2+vXrV+K5DzzwgM466yx17txZQ4cOjd2S27bthO+4OlyHs84AUKEq8tZ3AOCWr776yhkwYIDTqFEjx+v1Og0bNnQGDBjgfP3118XOTcctuR3HcSZMmOA0adLEycrKSrg9tyTH7/cXO7958+bOoEGDEo5t3rzZ8fv9TtOmTWPz7tmzp/P0008fMn/37t2O3+936tWr59SuXds5//zznRUrVjiSnHvvvTd2XvS2yiXdLvnAW3I7juPs3bvXuemmm5z69es7tWrVcvr16+f8+OOPh3VL7qeeeso5/fTTnfr16zs5OTlO69atnVtuucXZtWtXscxly5Y5F110kZObm+vUrVvXGT58uLN3796E8d544w3n+OOPd6pXr+60aNHCue+++5ypU6cWux168+bNnb59+xabz9y5c53zzjvPady4sZOdne00btzYGTBggPPdd98lnLd//37nvvvu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pl27dmnKlCl66aWXdPrpp8u2bU2bNk1t27bVJ598knCt8eLn7TiOZs6cqR49eqhVq1YJ582aNUvvvPOOXn/9dc2aNSvhsZdeekn79+/XlClTtHfvXp166qn68ssv9fDDD+uaa66JndevXz/99a9/LfFVKADm4ZUiAAAq0AcffKBOnTolHFu4cKHat2+v/Pz82LE+ffooGAzqm2++KXW8e++9V/Xr11fHjh31wAMPJLzl7r///a9atWqlN998Uy1btlSLFi109dVXa/v27Qcd74UXXlCvXr3UvHnzw76mxYsXKxKJqFevXrFjxx57rJo1a6aFCxce1hibN2/WO++8o6uuuqrY8WHDhumFF15QzZo1i9UtXLhQp59+ekLj2KdPH61YsUI7duyIHTv55JO1fv16PscFQBKvFAEAUKHWrl1b7G1gmzZtSmiIJMV+37Rp00HHuummm/Tb3/5W9erV08cff6zRo0drw4YN6tGjhyRp1apVWrt2rV577TU9//zzKiws1MiRI3XRRRdp3rx5xcb76aef9O677+qll15K6po2bdqk7Oxs1alTR7t27Uq4htLmH2/69OmqXbt2wlvuHMfR4MGDdd111+nEE08ssaHZtGlTsVe/4teubt26khRb87Vr1yZ8lguAmWiKAACoQHv37lX16tXTMtaoUaNi/3z88ccrOztb1157rX73u99JkoqKirRv3z49//zzOuaYYyRJU6ZMUadOnbRixYrYW+qipk+fLtu2df7556dlfsmYNm2aLr744oS1efzxxxUKhTR69Ogyj1+jRg1Jv36mCwB4+xwAABWoQYMGCW/rkn79bM2Bd2qL/h7/uZtDOeWUU1RQUKCff/5ZktSoUSN5PJ5YQyRJbdu2lfTr3e7iOY6jadOmqX///qV+hqkkDRs21P79+7Vz585i13A48//ggw+0YsUKXXnllQnH582bp4ULFyonJ0cej0dHHXWUJOnEE0/UoEGDYtmHs3bRtwweccQRSV0bgKqJpggAgArwxbod+ufn65XXoo2WLVuW8Fjnzp319ddfx5oZSZozZ458Pp/atWt32BlLlixRVlZW7MYJXbt2VUFBgX744YfYOd99950kFfvM0HvvvaeVK1fqiiuuSPraOnXqJK/Xq7lz58aOrVixQuvWrVPnzp0PWR999ap9+/YJxx977DF9+eWXWrJkiZYs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oZtuukm9evUqsX7SpEkaPXq0xo0bp2+++UZ33nmn/H6//vvf/yZ1Xffff78ee+wxTZ48WZ9++qlq1aqlPn366JdffjlozY4dO9S1a1d5vV7NmjVLy5Yt00MPPaS6detK+rXJ+cMf/qA1a9bo3//+t7744gs1b95cvXr1KvFVn4kTJx70CxUHDx6sSZMmlcu30ANAOngqegIAALhlzpw5ysnJ0amnnho79s4772jZsmV69913lZ+frw4dOmjChAm69dZbNW7cOGVnZx90vNzcXDVs2LDEx2rVqqVJkyZJkj766CNt2bKl2DkvvPCCrr32WvXv31+S1KpVK3322We677771K9fv8O6JsdxNHHiRN1+++0677zzJEnPP/+88vPz9e9//1sXXnhhiXX33XefmjZtqmnTpsWOtWzZMvbP33//vT755BN9/PHHOumkk2RZliZNmqSGDRvq73//u66++urYuUuWLNFDDz2k//3vf2rUqFGxrDPOOEPbt2/Xe++9p549ex7WdQGAm3ilCABgjIULF6pTp07FjrVv3175+fmxY3369FEwGNQ333xT6nj33nuv6tevr44dO+qBBx5I+pWQffv2qXr16gnHatSooUWLFikSiRzWGKtXr9amTZsSXo2ybVunnHKKFi5ceNC6N954QyeeeKIuvvhi5eXlqWPHjnrmmWcS5iYpYX5ZWVnKycnRhx9+GDu2Z88eXXbZZQoEAgdtELOzs9WhQwd98MEHh3VNAOC2jHqlyHEcOY6TUk2ydemoJzszs+PHcTvb1DU3NTt+HLezTV3zH3/8UY0aNUoYY+PGjcrPz084lpeXF3usQ4cOJWbfeOON+u1vf6t69erp448/1l/+8hf99NNPJX52Jv75jte7d289++yzOu+88/Tb3/5Wixcv1rPPPqtIJKItW7bE5lradW/cuDE25/hz8vPztWnTpoPutVWrVmnSpEkaOXKkRo8erc8++0w33XSTvF6vBg0apDZt2qhZs2a68847NWXKFNWuXVuPPPKI1q9fr40bN8bGuvnmm9W5c2ede+65xbLifxo3bqy1a9ce9vOX6XvN1Oz4cdzONnXNTc1Ot0rdFAUCAQUCARUWFkqSQqGQPJ7kpuw4jsLhsCQd9L3O5VVPduZlR/8vbzAYZK+RXa7Z7LWKy27UqJF27doVOx6JRFRQUJBwbM+ePZKk3bt3a9euXSVmx38uqXnz5iosLNTIkSN12223KScnJyE7PiN+7jfddJN+/PFHde7cWY7jKC8vT/3799djjz2mcDh80Ox40ceCwaBq1qyZkGlZloLBYOzx+L1WVFSkDh066NZbb5X061v3Pv/8cz355JM6//zzJUnPPfechg8frgYNGqhatWrq3r27evXqpcLCQu3atUszZ87U3Llz9d577xVbvwPnXq1aNe3atSvhvNJUhb1mWjZ/r5HtVnYoFEq65lAqdVPk9/vl9/sVDAZl27Zyc3Nl23ZSY0Q7Sdu2U37CU60nO/Oyo29X8fl88nq9rmabuuamZrPXKiY7Ly9Pu3fvTvh3SdOmTbVkyZKEY9u3b5cktW7dWrZtH1Z29+7dVVBQoB07dqhNmzYJj3m9Xnk8nmL1tm3rhRde0NSpU7V582Y1atRITz/9tHJzc9W6dWtlZWUdMvuoo46SJO3du7fYNZxwwgny+XySiu+1Ro0aqX379gk1J5xwgt58883YsW7dusXeKheJRHTEEUfo1FNPVadOnWTbtj799FOtXr064U5+kjRw4ECddtppmjdvXmzu4XBYrVq1Oux/j2f6XjMxm7/XyHYruzxu2lKpm6IDRW95mmpdKrVlrSc7s7KjNaZdN9nstaqe/cW6HVq9JaxGLY/R+++8lVDfpUsX3X333dqyZUvsbXPvvvuufD6fjjvuuGLP1cGyv/zyS2VlZSk/P7/YOYd6vrOzs9W0aVNJ0owZM3TOOeeoWrVqh3XdrVq1UsOGDTVv3jx17NhR0q//p/7TTz/V9ddff9Dsrl276rvvvks49v3336t58+YJxyzLiv2Hy/fff6///e9/mjBhgizL0ujRozVs2LCE+bRv316PPPKI+vXrlzDvpUuX6qKLLkrqucvEvWZyNn+vke1mbbplVFMEAECy7p31rSa/t0qWHNXZ00hfL/1GO3bsiN16unfv3mrXrp2uvPJK3X///dq0aZNuv/12+f3+2NvgFi1apCuvvFLz5s3TkUceqYULF+rTTz9Vjx49lJubq4ULF2rkyJG64oorYuNK0rJly7R//35t375dwWBQS5YskWVZ6tChgyTpu+++06JFi3TKKadox44devjhh7V06VJNnz79sK/PsizdfPPN+tvf/qajjz5aLVu21B133KHGjRvH3gYn/XrziAsuuEDDhw+XJI0c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na0jjzxS11xzjR566CH1798/VtuzZ09NmDBB48ePN2avkZ2Z2ew1st3KZq+R7VZ29L9H0qlSN0V+v19+v1/BYFC2bSs3N1e2bSc1RrSTtG075Sc81XqyMy87EolIknw+X+w/6N3KTrV+8eLF6tSpk2rXrh2r/eqrr9S+fXsdffTRsfPOP/98/fGPf9T69evVsWPHw8ret2+fGjRoEPtzl5ubK0m6/PLL9csvv+iYY47Rn/70J3Xr1i1W++6776pr1676y1/+ojfeeENHHHGEBgwYoFtvvVXVqlU7rOtevHixIpGIzj333Fj2SSedpGbNmunrr79Wr169SqzNzs7WRx99pGOOOUZ169ZVjx499Le//U3169cvce22bdumN998U126dFGDBg0kSV9++aW6deumI444Inbeueeeq0cffVRFRUWxBq9bt2664YYbtGPHDrVs2fLQT9QBMnGvkZ2Z2ew1st3KZq+R7VZ2aR8HSFWlbooOFP2MQKp1qdSWtZ7szMqO1mTSda9bt06NGzdOqN28ebPy8/MTxmnYsKEkafPmzSWOf2D2ypUr9cQTT+jBBx+MHcvNzdVDDz2krl27KisrS6+//rouuOACvfjiixowYIAsy9KqVas0b948XX755Zo5c6ZWrlypG264QQUFBRo7duxhXffmzZuVnZ0da0Ci8vPzi80/vvbMM8/UBRdcoJYtW+qHH37QX/7yF5199tlauHBhQkN266236oknntCePXt00kknaebMmbExN23apJYtWx507erVqydJatKkSWz9W7VqdcjnqaRrjp9/KvWZ+GeMbP5eI7vqZrPXyHazNt0yqikCUNzevXtVvXr1tI65YcMGnXnmmbr44os1bNiw2PEGDRpo1KhRsd9POukk/fTTT3r88cc1YMAASVJRUZHy8vL09NNPq1q1aurUqZM2bNigBx544KBNUbpceumlsX9u3769jj/+eLVu3VoLFixQz549Y4/dcsstGjp0qNasWaMxY8Zo0KBBevPNN5P6Szb6Fr09e/ak7wIAAECF4O5zQIZr0KCBdu7cmXCsYcOGxe7UFv09+qrHwfz000/q0aOHunTpoqeffvqQ+SeffLJWr14d+71Ro0Y65phjEl6Zadu2rTZt2pRwJ7vSNGzYUPv37y92XZs3bz7k/OO1atVKDRo00MqVKxOON2jQQMccc4zO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pv75NjWbvUa2W9mhUCjpmkOp1E2R3++X3+9XMBiUbdvKzc2VbdtJjRHtJG3bTvkJT7We7MzLjkQikiSfzyev1+tqtqlrbmr2wfbanDlzVL16dfXq1St2bNasWVqxYoXmzZun/Px8OY6j9evX684779Q999yj7Ozsg+bMmjVL7733nv7xj3/oN7/5jWrXrh37e/Tll19WJBLRCy+8oOzsbJ166qn67rvvNHnyZI0YMUKSVKNGDWVlZemYY46JXfeuXbuSuu5vv/1Wc+fO1aJFi9SpUyft2rVLjz/+uM455xw9+uijaty48UFrlyxZoieffFKfffaZGjdurOrVqxfLnjRpknbv3q077rhD7777rnw+X+wav/76a7Vo0UJ//vOf5TiOmjdvruuvv173339/wr9P/vCHP+j222/XY489VuI8quJecyPb1D/fpmaz18h2KzvagKdTRr19Lv4tHPzwU14/7DV+3Popaa99+OGH6tSpU8KxTz75RO3bt1fDhg1jx3r27KlgMKhly5YddPyff/5Z11xzjV544QXVqlWrWN6nn36q008/XTk5ObFjZ555plasWKGdO3fGjoXDYbVo0ULNmjXTH/7wBy1fvjyp6/zkk09Up04dnXTSSbFjZ5xxhrKysrRo0aKD1u3du1eXX365AoGAGjVqVOJ6ffvtt5owYYKef/55VatWrdg5Xbp00Y8//qhZs2ZJkrZs2aLXX39dZ599dsJ5p5xyitavX6+1a9dW+L5wa6/xw095/LDX+HHrJ90yqikCgKpu7dq1xV452bRpk/Lz8xOORd8Ot2nTphLHcRxHgwcP1nXXXacTTzyxxHNKGjf6e3TcNm3aaOrUqfrPf/6jF198UUVFRerTp4/Wr19/2Ne0adMm5eXlJRzzeDyqV6/eQecvSSNHjlSXLl103nnnlfj4vn37NGDAAD3wwANq1qxZied07dpVL730kvr376+cnBy1adNGtm0rEAgknBdd87Vr1x72dQEAqg6aIgCoRPbu3avq1auXeZzHH39coVBIo0ePLtM4nTt31sCBA9WhQwd169ZNr7/+uho0aKCnnnqqzHMszRtvvKF58+Zp4sSJBz1n9OjRatu2ra644oqDnrNs2TKNGDFCY8aM0f/+9z/94x//0Jo1a3TdddclnFejRg1Jv36mCwBgHpoiAKhEGjRooB07diQca9iwoTZv3pxwbMuWLbHHSjJv3jwtXLhQOTk58ng8OuqooyRJJ554YuwmCiWNG/39YON6vV4df/zx+uGHHw77mho2bKiff/454VhBQYG2b99e6vx/+OEH1alTRx6PJ/ah7YEDB6pHjx6xc1577bXY4z179pT06xqOHTtWknTPPfeoa9euuuWWW3T88cerZ8+eCgQCmjp1qjZu3BjL2759u6T/ewUOAGCWSn2jBQAwxRfrdmj11t3Ka9FG89/6Z8JjnTt31l133aWff/459ja0+fPny+fzqV27diWO99hjj+lvf/tb7PeffvpJffr00YwZM3TyySdLkk499VTdfvvtikQisQ9Fz5kzR23atFHdunVLHLewsFDLli1T3759D/vaOnfurJ07d2rx4sX67W9/K+nXhqaoqEinnHJKiTW33Xabrr766oRj7du31913362LL75YkvT6669r7969scc/++wzXXXVVfrggw/UunVrSb++8nPgXbCinz2Kv6Xr0qVL5fV6ddxxxx32dQEAqg6aIgCoYPfO+laT31slSdq/pb42L/1GO3bsiDUmvXv3Vrt27XTllVfq/vvv18aNG3XXXXfphhtuUE5OjiRp0aJFGjhwoObOnasmTZoU+4xN7dq1JUmtW7fWkUceqV27dumyyy7T+PHjNXToUN16661aunSpHn30UT3yyCOxuvHjx+vUU0/VUUcdpZ07d+qBBx7Qjz/+WKxhKU3btm115plnatiwYZo0aZJ27Nihm266SZdeemnsszwbNmxQz5499fzzz+vkk09Ww4YNS3wV6cgjj1TLli1j1xJv69atsbw6depIkvr16xfL7d27t77//nvdcccdOvnkkxM+u/XBBx/otNNOi72NDgBgFt4+BwAV6Kv1O2MNkSRlH9FCnrxWenDyc7Fj1apV05tvvqlq1aqpc+fOuvLKK3XppZdq/PjxsXP27NmjFStWxG6Jezhs29Y777yj1atXq1OnTvrjH/+oMWPG6Jprromds2PHDg0bNkxt27bV2WefrWAwqLfffjvhFapx48apRYsWpWa99NJLOvbYY9WrVy9dcskl6tq1q55++unY45FIRCtWrEj7Z3oGDx6shx9+WE888YTat2+vIUOGqE2bNvrnPxNfjXvllVc0bNiwtGYDADIHrxQBQAVau614E2B3HaDnn5mkCbeOUFbWr//vqnnz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kV11s9lrZLtZGz+Gm9llrSc7s7JTnW9puNECAAAAAKPRFAEAAAAwGk0RAAAAAKPRFAEAAAAwGk0RAAAAAKPRFAEAAAAwGk0RAAAAAKPRFAEAAAAwGk0RAKBcbNu2TXl5eVqzZk1FT8UIt912m2688caKngYAZCSaIgBAubjrrrt03nnnqUWLFrFj69at0yWXXKJatWopLy9Pt9xyiwoKCg5rvH379um0005TVlaWlixZEjs+bty4hG9Gj/7UqlUrof61117TySefrBo1aqh9+/aaOXNm0te0fft2XX755fL5fKpTp46GDh2qcDhcas21116ro446So0aNVJeXp7OO+88LV++POGcm266SZ06dVJOTo46dOhQbIwPP/xQ559/vho1aqRatWqpQ4cOeumllxLO+dOf/qTp06dr1apVSV8XAJiOpggAkHZ79uzRlClTNHTo0NixwsJCnXPOOYpEIvroo480ffp0PffccxozZsxhjfnnP/9ZDRs2LHb8T3/6kzZu3Jjw065dO1188cWxcz7++GNddtlluuKKK/T555/r/PPP1/nnn6+lS5cmdV1XXHGFvvnmG82ZM0dvvvmm3n//fV1zzTWl1nTq1ElTp07Vp59+qtmzZ8txHPXu3VuFhYUJ51111VXq379/iWN8+umnat++vV5//XV99dVXGjJkiAYOHKg333wzdk6DBg3Up08fTZo0KalrAgBInoqeAACg6pk5c6ZycnJ06qmnxo698847WrZsmb799lsdffTRsixLEyZM0K233qpx48YpOzv7oOPNmjVLc+bM0bRp0/Tuu+8mPFa7dm3Vrl079vuXX36pZcuWafLkybFjjz76qM4880zddNNNsm1bEyZM0Jw5c/TEE08knFeaFStWaPbs2frss8904oknSpIef/xxnX322XrwwQfVuHHjEuuuueYaOY6jXbt2ybZt/e1vf9MJJ5ygNWvWqHXr1pKkxx57TJK0ZcsWffXVV8XG+OMf/yjbtmVZliRpxIgReuedd/TPf/5T55xzTuy8fv366a9//aseeOCBw7omAMCvMqopchxHjuOkVJNsXTrqyc7M7Phx3M42dc1NzY4fx+3s8r7u999/X506dUo47+OPP1b79u11xBFHxI737t1b119/vZYuXaqOHTuWONbmzZs1bNgw/fOf/1ROTk7CPEryzDPP6JhjjtHvfve72DkLFy7UyJEjE+p69+6t//znP4e1Do7jaNGiRapTp07CdfXs2VNZWVn65JNP9Ic//KHUesdxFA6HNXXqVLVs2VJHHnlksez4fXFg7YHn7tq1S8cee2zC8ZNOOknr16/X6tWrY29brOp7jezKlR0/jtvZpq65qdnpVqmbokAgoEAgEHuLQSgUkseT3JSj/xKSFPs/bG7Vk5152dHPNgSDQfYa2eWaXdX32g8//KAGDRpo165dsWM//vij6tWrl1BfvXr12PmtWrUqMe+KK67Q4MGDdfTRR+vbb7+VJIXD4YSxo3755Re99NJLuvnmmxMe37Rpk3JzcxOyfT6fNm7cWOI4Jc1j/fr1xa5JkurWravVq1eXOs6zzz6rsWPHas+ePTr66KP1+uuva+/evdq7d2/Cefv27VNhYWHCWCWt+b/+9S999tlneuCBBxLOjX6OatmyZapbt66kqr/XyK482ew1st3KDoVCSdccSqVuivx+v/x+v4LBoGzbVm5urmzbTmqMaCcZ/7YDt+rJzrzsSCQiSfL5fPJ6va5mm7rmpmZX9b1WUFBQ7O9sr9crj8ej2rVrx+qj116rVq0S/35/7LHH9Msvv2jcuHHKysqK/Ud/dIwDzZw5U+FwWNdee22xx2vUqJGQXaNGDVmWdVj/XnEcR9nZ2crKyip2fnSs0sYZOnSounfvrnA4rIcfflhXX321Pvzww1hTGJWTk6Nq1aoljHXgms+fP1/Dhw/X008/nfD2REmqWbNmbE7RMar6XiO78mSz18h2K/twb9CTjErdFB0oekehVOtSqS1rPdmZlR2tMe26yWavpbu2QYMG2rlzZ8I5jRo10meffZZQ//PPP8ceK2m8+fPna+HChcWah5NOOkmXX365pk+fnnB8ypQpOuecc4rdkKFhw4b6+eefi2U3bNjwsNcgPz8/NkZUQUGBtm/fftD5R9WpU0dHHXWUbNtWly5dVLduXf373//WgAEDEs6L3xcHHrcsS++//77OPfdcPfLIIxo0aFCxnB07dkiS8vLyio1VVfca2ZUnm71Gtpu16cbd5wAAafPFuh365+frldeijZYtW5bwWOfOnfX1119ry5YtsWNz5syRz+dTu3btShzvscce05dffqklS5boiy++0KuvvipJmjFjhu66666Ec1evXq358+cn3PEuPnvevHkJx+bMmaPOnTsf9rWddNJJ2rlzpxYvXhw7Nm/ePBUVFemUU0457HGi76Pft2/fYddI0oIFC9S3b1/dd999B73j3dKlS+X1enXcccclNTYAmC6jXikCAFRe9876VpPf+/U7cvZvqa/NS7/Rjh07Yp9t6d27t9q1a6frrrtODz30kDZv3qzbb79dfr8/dgOFRYsWaeDAgZo7d66aNGmiZs2axcaP/1Bu69atdeSRRybkT506VY0aNdJZZ51VbG4jRoxQt27d9MQTT+jCCy/UjBkz9L///U9PP/30YV9fmzZtdOaZZ2rYsGGaPHmyIpGIhg8frksvvTR257kNGzaoZ8+eev7553XyySdr1apVmjFjhs444wzl5OTom2++0X333acaNWro7LPPjo29cuVKhcNhbdq0SXv37o19D1O7du3k9Xr1wQcf6NJLL9WIESN04YUXatOmTZKk7Oxs1atXLzbOBx98oNNOO001atQ47OsCAPBKEQAgDb5YtyPWEElS9hEt5MlrpQcnPxc7Vq1aNf33v/9VVlaWunTpoiuuuEIDBw7U+PHjY+fs2bNHK1asiH024XAVFRXpueee0+DBg1WtWrVij3fp0kUvvfSSpk+frg4dOugf//iH/v3vf+s3v/lN7Jxx48YlfNFsSV588UUde+yx6tmzp84++2z97ne/S2isIpGIVqxYoT179kiSqlevrg8++EB9+/ZVp06ddOmllyo3N1cff/yx8vLyYnVXX321OnbsqKeeekrfffedOnbsqI4dO+qnn36SJP3973/Xnj17dM8996hRo0axnwsuuCBhfq+88oqGDRuW1NoBAHilCACQBqu37i52zO46QM8/M0kTbh2hrKxf/x9c8+bN9dprrx30w7Xdu3cv9VarzZo1U1FRUbHarKws/fjjj6XO8eKLL1bv3r0Pmr169Wp179691DHq1aunl19++aCPt2jRImH+jRs31syZM+U4//c9RSVlL1iw4KBjOo6jJ598Ui+99FKp76OfNWuWsrKydNFFF5V6DQCA4miKAABl1rJBrWLHarY+SRe1y9aGDRvUtGnTCpjV4XMcRwsWLNCHH35Y0VNJ2e7duzVt2rSkb4UMAKApAgCkQcdmdXVdt1YJb6G7vlsr3XpW3wqc1eGzLEtr166t6GmUCa8QAUDqaIoAAGlx21lt1ee4hlq9dbdaNqiljs3qVvSUAAA4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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "npoint = 5\n", + "coords = np.random.rand(npoint, 2)/2 + .25\n", + "base = np.floor(coords / grid.spacing)*grid.spacing\n", + "\n", + "\n", + "fig, ax = plt.subplots(figsize=(10, 10))\n", + "ax.set_xlim([0, 1])\n", + "ax.set_ylim([0, 1])\n", + "ax.scatter(coords[:, 0], coords[:, 1], s=10, label=\"Sparse positions\")\n", + "ax.grid(which = \"major\")\n", + "ax.grid(which = \"minor\", alpha = 0.2)\n", + "ax.xaxis.set_minor_locator(FixedLocator(np.linspace(0, 1, 51)))\n", + "ax.yaxis.set_minor_locator(FixedLocator(np.linspace(0, 1, 51)))\n", + "ax.set_title(\"Off the grid sparse positions\")\n", + "for i in range(npoint):\n", + " ax.annotate(\"(%.3f, %.3f)\" % (coords[i, 0], coords[i, 1]), coords[i, :])\n", + "ax.legend()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## SparseFunction" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " Tensor symbol representing a space- and time-varying sparse array in symbolic\n", + " equations.\n", + "\n", + " Like SparseFunction, SparseTimeFunction carries multi-dimensional data that\n", + " are not aligned with the computational grid. As such, each data value is\n", + " associated some coordinates.\n", + " A SparseTimeFunction provides symbolic interpolation routines to convert\n", + " between TimeFunctions and sparse data points. These are based upon standard\n", + " [bi,tri]linear interpolation.\n", + "\n", + " Parameters\n", + " ----------\n", + " name : str\n", + " Name of the symbol.\n", + " npoint : int\n", + " Number of sparse points.\n", + " nt : int\n", + " Number of timesteps along the time Dimension.\n", + " grid : Grid\n", + " The computational domain from which the sparse points are sampled.\n", + " coordinates : np.ndarray, optional\n", + " The coordinates of each sparse point.\n", + " space_order : int, optional\n", + " Discretisation order for space derivatives. Defaults to 0.\n", + " time_order : int, optional\n", + " Discretisation order for time derivatives. Defaults to 1.\n", + " shape : tuple of ints, optional\n", + " Shape of the object. Defaults to ``(nt, npoint)``.\n", + " dimensions : tuple of Dimension, optional\n", + " Dimensions associated with the object. Only necessary if the SparseFunction\n", + " defines a multi-dimensional tensor.\n", + " dtype : data-type, optional\n", + " Any object that can be interpreted as a numpy data type. Defaults\n", + " to ``np.float32``.\n", + " initializer : callable or any object exposing the buffer interface, optional\n", + " Data initializer. If a callable is provided, data is allocated lazily.\n", + " allocator : MemoryAllocator, optional\n", + " Controller for memory allocation. To be used, for example, when one wants\n", + " to take advantage of the memory hierarchy in a NUMA architecture. Refer to\n", + " `default_allocator.__doc__` for more information.\n", + "\n", + " Examples\n", + " --------\n", + "\n", + " Creation\n", + "\n", + " >>> from devito import Grid, SparseTimeFunction\n", + " >>> grid = Grid(shape=(4, 4))\n", + " >>> sf = SparseTimeFunction(name='sf', grid=grid, npoint=2, nt=3)\n", + " >>> sf\n", + " sf(time, p_sf)\n", + "\n", + " Inspection\n", + "\n", + " >>> sf.data\n", + " Data([[0., 0.],\n", + " [0., 0.],\n", + " [0., 0.]], dtype=float32)\n", + " >>> sf.coordinates\n", + " sf_coords(p_sf, d)\n", + " >>> sf.coordinates_data\n", + " array([[0., 0.],\n", + " [0., 0.]], dtype=float32)\n", + "\n", + " Symbolic interpolation routines\n", + "\n", + " >>> from devito import TimeFunction\n", + " >>> f = TimeFunction(name='f', grid=grid)\n", + " >>> exprs0 = sf.interpolate(f)\n", + " >>> exprs1 = sf.inject(f, sf)\n", + "\n", + " Notes\n", + " -----\n", + " The parameters must always be given as keyword arguments, since SymPy\n", + " uses ``*args`` to (re-)create the Dimension arguments of the symbolic object.\n", + " \n" + ] + } + ], + "source": [ + "print(SparseTimeFunction.__doc__)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "from itertools import product\n", + "pos = tuple(product((0, grid.spacing[1]), (0, grid.spacing[1])))" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "s = SparseTimeFunction(name=\"s\", grid=grid, npoint=npoint, nt=nt,\n", + " coordinates=coords)\n", + "\n", + "interp_points = np.concatenate([base+p for p in pos])" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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ERERkaKxKSIiIiIiIkVjU0RERERERIrGpoiIiIiIiBSNTRERERERESkamyIiIiIiIlI0z/LeAXuIoghRFB2qsbfOFfXMds/s/NuRO1upY67U7PzbkTtbqWOu1Oz825E7W6ljrtTs/NuRO1upY67UbFer0E2RwWCAwWBAbm4uAMBkMsHT075dFkURGRkZAABBEOzeB2fqme1+2Tk5OQAAo9HIucbsMs3mXGO2XNmca8yWK5tzjdlyZZtMJrtrSlKhmyK9Xg+9Xg+j0QidTgeNRgOdTmfXNqydpE6nc/gJd7Se2e6XbTabAQBarRZqtVrWbKWOuVKzOdeYLVc25xqz5crmXGO2XNnWBtyVKnRTdC9BEBwaOGudI7XO1jPbvbKtNUo7bmZzrjG78mZzrjFbztr825Az29l6ZrtXtqP7WxzeaIGIiIiIiBSNTRERERERESkamyIiIiIiIlI0NkVERERERKRobIqIiIiIiEjR2BQREREREZGisSkiIiIiIiJFY1NERERERESKxqaIiIiIiIgUjU0REREREREpGpsiIiIiIiJSNM/y3gF7iKIIURQdqrG3zhX1zHbP7PzbkTtbqWOu1Oz825E7W6ljrtTs/NuRO1upY67U7PzbkTtbqWOu1GxXq9BNkcFggMFgQG5uLgDAZDLB09O+XRZFERkZGQAAQRDs3gdn6pntftk5OTkAAKPRyLnG7DLN5lxjtlzZnGvMliubc43ZcmWbTCa7a0pSoZsivV4PvV4Po9EInU4HjUYDnU5n1zasnaROp3P4CXe0ntnul202mwEAWq0WarVa1myljrlSsznXmC1XNucas+XK5lxjtlzZ1gbclSp0U3QvQRAcGjhrnSO1ztYz272yrTVKO25mc64xu/Jmc64xW87a/NuQM9vZema7V7aj+1sc3miBiIiIiIgUjU0REREREREpGpsiIiIiIiJSNDZFRERERESkaGyKiIiIiIhI0dgUERERERGRorEpIiIiIiIiRWNTREREREREisamiIiIiIiIFI1NERERERERKRqbIiIiIiIiUjQ2RUREREREpGie5b0D9hBFEaIoOlRjb50r6pntntn5tyN3tlLHXKnZ+bcjd7ZSx1yp2fm3I3e2Usdcqdn5tyN3tlLHXKnZrlahmyKDwQCDwYDc3FwAgMlkgqenfbssiiIyMjIAAIIg2L0PztQz2/2yc3JyAABGo5Fzjdllms25xmy5sjnXmC1XNucas+XKNplMdteUpEI3RXq9Hnq9HkajETqdDhqNBjqdzq5tWDtJnU7n8BPuaD2z3S/bbDYDALRaLdRqtazZSh1zpWZzrjFbrmzONWbLlc25xmy5sq0NuCtV6KboXoIgODRw1jpHap2tZ7Z7ZVtrlHbczOZcY3blzeZcY7actfm3IWe2s/XMdq9sR/e3OLzRAhERERERKRqbIiIiIiIiUjQ2RUREREREpGhsioiIiIiISNHYFBERERERkaKxKSIiIiIiIkVjU0RERERERIrGpoiIiIiIiBTNoabIYDAgPDwcPj4+aNeuHXbu3Fns+gsXLkSjRo3g6+uL0NBQTJ48GXfu3HFoh4mIiIiIiFzJ7qZozZo1mDJlCuLi4rB37160aNECPXr0wOXLlwtd/7PPPsPUqVMRFxeHw4cPY/ny5VizZg3+97//Ob3zREREREREzrK7KZo/fz5Gjx6NESNGoGnTpliyZAmqVKmCFStWFLr+n3/+iZiYGAwePBjh4eHo3r07Bg0aVOK7S0RERERERHLwtGfl7Oxs7NmzB9OmTZOWqVQqdOvWDdu3by+0pkOHDvjkk0+wc+dO3H///UhJScH69esxZMiQInOysrKQlZUl/Ww0GgEAZrMZZrPZnl2GKIrIycmB2WyGIAh21Tpbz2z3y7bOL3vnmSuylTrmSs3mXGO2XNmca8yWK5tzjdlyZTsyx0piV1N09epV5ObmIigoyGZ5UFAQjhw5UmjN4MGDcfXqVTzwwAPSAIwbN67Y0+fmzp2L+Pj4Asu3bNmCKlWq2LPLRA5JTEws710gheBcI7lwrpFcONeorN2+fdvl27SrKXLE1q1b8frrr2Px4sVo164dTpw4gYkTJ2LOnDmYMWNGoTXTpk3DlClTpJ+NRiNCQ0PRpUsX1KhRw658URRhNBqh1Wod7oIdrWe2+2WbzWYkJiYiNjYWarVa1myljrlSsznXmC1XNucas+XK5lxjtlzZ165ds7umJHY1RQEBAfDw8MClS5dsll+6dAnBwcGF1syYMQNDhgzBqFGjAABRUVG4desWxowZg1deeQUqVcHLmry9veHt7V1guVqtduiXzNPTE2q12uEn3NF6ZrtfthXnGrPLOtuKc43ZZZ1txbnG7LLOtuJcY3ZZZ9s7v0rDrhsteHl5oXXr1ti0aZO0LC8vD5s2bUJ0dHShNbdv3y7Q+Hh4eACwDAgREREREVF5svv0uSlTpmDYsGFo06YN7r//fixcuBC3bt3CiBEjAABDhw5F7dq1MXfuXABA3759MX/+fLRq1Uo6fW7GjBno27ev1BwRERERERGVF7ubooEDB+LKlSuYOXMmLl68iJYtW+Lnn3+Wbr5w5swZm3eGpk+fDkEQMH36dJw/fx41a9ZE37598dprr7nuKIiIiIiIiBzk0I0WnnvuOTz33HOFPrZ161bbAE9PxMXFIS4uzpEoIiIiIiKiMmX3h7cSERERERFVJmyKiIiIiIhI0dgUERERERGRorEpIiIiIiIiRWNTREREREREisamiIiIiIiIFI1NERERUUnO7QaObbR8l7ve2ewL+2y/ExFRAQ59ThEREZFiJMYBSQmAbxiQmQrETARi4+Wpd0X29iVAi6XA6r5A9Dj76omIFMKtmiJRFCGKokM19ta5op7Z7pmdfztyZyt1zJWanX87cmcrdcztrj+3G0hKgAhB+kJSAtC4D1CnTdnWuypb5QMAlm3YUw8FPt/M5usas90m29UqdFNkMBhgMBiQm5sLADCZTPD0tG+XRVFERkYGAEAQBLv3wZl6Zrtfdk5ODgDAaDRyrjG7TLM519wkOy0F8A2DCAEZ3sGWWoiW5ZoGZVvvouwclRcAwOgbCs+87NLXQ4HPN7P5usZst8g2mUx215SkQjdFer0eer0eRqMROp0OGo0GOp3Orm1YO0mdTufwE+5oPbPdL9tsNgMAtFot1Gq1rNlKHXOlZnOuuUl2SCSQmWp5lwaALjPV0piERAKl+f+RM/UuyjbffadIm3kW6rw7pa+HAp9vZjuVzdc1ZsuVbW3AXalCN0X3EgTBoYGz1jlS62w9s90r21qjtONmNucas4sQ2tZyHU9Swr8nscVMsiwv63oXZQvblwCA/fV3Ker5ZjZf15jtFtmO7m9x3KopIiIikl1svOU6nLQUy7ssdjYVTtW7IrthbyA5DRj2IxB2v331REQKwaaIiIioJHXaWK7DsfMUbpfUO5tdq5WlKarVyrF6IiIF4OcUERERERGRorEpIiIiIiIiRWNTREREREREisamiIiIiIiIFI1NERERERERKRqbIiIiIiIiUjQ2RUREREREpGhsioiIiEpybjdwbKPlu9z1zmZf2Gf7nYiICuCHtxIRERUnMQ5ISgB8w4DMVCBmIhAbL0+9K7K3LwFaLAVW9wWix9lXT0SkEG7VFImiCFEUHaqxt84V9cx2z+z825E7W6ljrtTs/NuRO1upY253/bndQFICRAjSF5ISgMZ9gDptyrbeVdkqHwCwbMOeeijw+WY2X9eY7TbZrlahmyKDwQCDwYDc3FwAgMlkgqenfbssiiIyMjIAAIIg2L0PztQz2/2yc3JyAABGo5Fzjdllms255ibZaSmAbxhECMjwDrbUQrQs1zQo23oXZeeovAAARt9QeOZll74eCny+mc3XNWa7RbbJZLK7piQVuinS6/XQ6/UwGo3Q6XTQaDTQ6XR2bcPaSep0OoefcEfrme1+2WazGQCg1WqhVqtlzVbqmCs1m3PNTbJDIoHMVMu7NAB0mamWxiQkEijN/4+cqXdRtvnuO0XazLNQ590pfT0U+Hwz26lsvq4xW65sawPuShW6KbqXIAgODZy1zpFaZ+uZ7V7Z1hqlHTezOdeYXYTQtpbreJIS/j2JLWaSZXlZ17soW9i+BADsr79LUc83s/m6xmy3yHZ0f4vjVk0RERGR7GLjLdfhpKVY3mWxs6lwqt4V2Q17A8lpwLAfgbD77asnIlIINkVEREQlqdPGch2Onadwl7b+2rVraNKkCXbu3Inw8HDXZtdqZWmKarVyrL4Smjp1Km7duoVFixaV964QUQXBzykiIiIqZ6+99hr69+9v0xCdOXMGvXv3hp+fHxo0aIAXX3yxxPPow8PDbU5JEQQBb731ls06oiji7bffRsOGDeHt7Y3atWvjtddekx4fPny4VKtSqVCtWjWoVCo0a9bMrmO6c+cO9Ho9IiMjodFoMGDAAFy6dKnYmvz7nT973rx5BdbNyspCy5YtIQgCkpOTbR77+++/0bFjRwQHB6Nu3boFxuD//u//sHr1aqSkpNh1TERUebEpIiIiKke3b9/G8uXLMXLkSGlZbm4uevfujezsbCQlJWHx4sVYvXo1Zs6cWeL2Zs+ejbS0NOlLr9fbPD5x4kR8+OGHePvtt3HkyBH88MMPuP/+f0+rS0hIkGovXLiAgwcPonr16nj88cftOq7Jkydj3bp1WLVqFbZu3YoLFy7gscceK7Ym/35fuHAB7733HgRBwIABAwqs+9JLL6FWrVoFlhuNRnTv3h1hYWHYsmUL3nrrLcyaNQtLly6V1gkICECPHj3w/vvv23VMRFR58fQ5IiKicrR+/Xp4e3ujffv20rJffvkFhw4dwq+//orAwEBERERg9uzZmDp1KmbNmgUvL68it6fRaBAcHCz9bL0jGAAcPnwY77//Pg4ePIhGjRoBACIiImzqdTqddKdXURSxefNm3LhxAyNGjCj1MaWnp2P58uX49NNP0bFjR+h0OqxcuRJNmjTBjh07bI41v/z7LYoi1q9fjy5duiAyMtJmvQ0bNuCXX37B2rVrsWHDBpvHPv30U2RnZ2P58uXIzMxE+/btsX//fsyfPx9jxoyR1uvbty9eeeWVQt+FIiLl4TtFRERE5Wjbtm1o3bq1zbLt27cjKioKQUFB0rIePXrAaDTin3/+KXZ7b7zxBmrUqIFWrVph3rx5Nqfc/fjjj4iMjMS6desQERGB8PBwjBo1CtevXy9yex9//DG6deuGsLCwUh/Tnj17YDab0a1bN2lZ48aNUbduXWzfvr1U27h06RJ++eUXPPPMMwWWjx49Gh9//DGqVKlSoG779u3o2LGjTePYo0cPHD16FDdu3JCW3X///Th37hxOnz5d6uMiosqL7xQRERGVo9TU1AKngV28eNGmIQIg/Xzx4sUitzVhwgTcd999qF69Ov78809MmzYN58+fR5cuXQAAKSkpSE1NxVdffYWPPvoIubm5mDx5Mv773/9i8+bNBbZ34cIF/Prrr/j000/tOqaLFy/Cy8sLVatWRXp6us0xFLf/+a1evRr+/v42p9yJoojhw4dj3LhxaNOmTaENzcWLFwu8+5V/7KpVqwYA0pinpqYWvLkFESkOmyIiIqJylJmZCR8fH5dsa8qUKdJ/N2/eHF5eXhg7diweeOABAEBeXh6ysrLw0UcfoWHDhgCA5cuXo3Xr1jh69Kh0Sp3V6tWrodPp8Mgjj7hk/+yxcuVKPP744zZjs2jRIphMJkybNs3p7fv6+gKwXNNFRMTT54iIiMpRQECAzWldgOXamnvv1Gb9Of91NyVp164dcnJycPnyZQBASEgIPD09pYYIAJo0aQLAcre7/ERRxMqVKzFw4MBir2EqTHBwMLKzs3Hz5s0Cx1Ca/d+2bRuOHj2KIUOG2CzfvHkztm/fDm9vb3h6eqJ+/foAgDZt2mDYsGFSdmnGznrKYM2aNe06NiKqnNgUERERleTcbuDYRst3F9XvO3MD3+w9h8DwRjh06JDN6tHR0Thw4IClmblbm/jlh9BqtWjatGmpY5OTk6FSqSw3TriwDzExMcjJycHJkyeldY4dOwYABa4Z+u2333DixAk8/fTTdh9u69atoVarsWnTJmnZ0aNHcebMGURHR5dYb333Kioqymb5u+++i/379yM5ORnJyclYv349AGDNmjXSbcWjo6Px+++/29xgIjExEY0aNZJOnQOAgwcPQq1W232rcSKqnHj6HBERUXES44CkBMA3DMhMBWImArHxTtW/kfMklvxm+Yyc7Cs1cOngP7hx44b0R3v37t3RtGlTDHk4Gm+2uYyT5pqY8cVp6Pt1gLe3NwBg586dGDp0KDZt2oTatWtj+/bt+Ouvv9ClSxdoNBps374dk/VjMDjKC/7+/sDqvujWbizuu+8+PPPMM1i4cCHy8vKg1+sRGxtr8+4RYGlM2rVrZ1cTZqXT6TBy5Ei88MILeO+99xASEoIJEyYgOjra5s5zjRs3xty5c/Hoo49Ky4xGI7766iu8/fbbBbZbt25dm5/9/f0BAPXq1UOdOnUAAIMHD0Z8fDxGjRqFZ599FqmpqUhISMCCBQtsardt24YHH3xQOo2OiJTNrZoiURQhiqJDNfbWuaKe2e6ZnX87cmcrdcyVmp1/O3JnK3XM7a4/txtISoAIQfpCUgLQuA9Qp43D9X9lVYeAegAA75ph8AyMxNvvr8Sr0yYDAFQqFX5c+hrGDx2ADstzUMU7E8NaeCG+wQGIZ3cBddrg1q1bOHr0KLKzsyGKIry8vPDFF19g1qxZyMrKQkSdEExqnYvnY3TYDECEAGH7u/hhyWeY8MZydOzYEX5+fujVqxfefvttm3FJT0/H2rVrsWDBgkLHbNWqVXjmmWeQl5dX5KHPnz8fgiBg6NChyM7ORo8ePWAwGGy2dfToUdy8edNm2eeffw5RFPHkk0+W+HwV9nuk1WqxceNGPPfcc+jSpQsCAgIwY8YMjB492mZbX3zxBeLi4grdvuLmuQuz829H7myljrlSs12tQjdFBoMBBoMBubm5AACTyQRPT/t2WRRFZGRkALB8Ura9nKlntvtlW29dazQaOdeYXabZnGtukp2WAviGQYSADG/L9SgCRMtyTQOH6//jacSVfP9P933oSXy0bDFeGDccKpXlzPaqHpn4bFRTqdY/6yJu5ctu1aqVdC1Seno66tWrh59//vnfjR7bCGx5HVkqy/VARt9QeOZlw080Yfny5QV2Nf9d4gDLneeKGrMjR44gJiamQM29XnvtNUybNg3+/v5Sff6a/PtvNXDgQAwcOLBUz1e1atUK3UZYWBh++OEHZGRkSNn5H09MTAQAxMbGFnoMipvnLsrm6xqz5co2mUx215SkQjdFer0eer0eRqMROp0OGo1G+kC50rJ2kjqdzuEn3NF6ZrtftvUcdK1WC7VaLWu2Usdcqdmca26SHRIJZKZa3uEBoMtMtTRFIZFAaf5/VET9wSwtzuf/h846bTFwiDcyMjIQGhrq0myzynL3Nm3mWajz7pS+HkWP2ZYtW7Bo0aIS/59ckZ/vVatWoUaNGuWSXVa15Z3N1zVmy5Wd//PXXKVCN0X3EgTBoYGz1jlS62w9s90r21qjtONmNucas4sQ2tZyDVFSwr8nwMVMsix3or5dTnfsu3tNEQA82ykSL/fqUybZwvYlAGB//V2FjdnOnTudqpejtrj6xx9/vNyyy7q2PLP5usZsOWtdza2aIiIiItnFxluuIUpLsbzLYmdTUVj9VAA9mgXj1NVbiAjwQ6u61couu2FvIDkNGPYjEHa/ffVERArBpoiIiKgkddpYriGy8xTu4upb1a1WdDPkyuxarSxNUa1WjtUTESkAP6eIiIiIiIgUjU0REREREREpGpsiIiIiIiJSNDZFRERERESkaGyKiIiIiIhI0dgUERERERGRorEpIiIiIiIiRWNTREREREREisamiIiI5HNuN3Bso+W7nLXO1u/9BPj9bct3ubOdPe4L+2y/ExFRAZ7lvQNERKQQiXFAUgLgGwZkpgIxE4HY+LKvdbZ+2UPA+b2W2r3vAXtXAqM3y5PtiuPevgRosRRY3ReIHmdfPRGRQrhVUySKIkRRdKjG3jpX1DPbPbPzb0fubKWOuVKz829H7mzZj/vcbiApASIE6QtJCUDjPkCdNmVX62z93k+A83tta8/vBfZ8DNz3tHsct8oHACzbsKcebjrXmM3XNRlrmV2+c82VKnRTZDAYYDAYkJubCwAwmUzw9LRvl0VRREZGBgBAEAS798GZema7X3ZOTg4AwGg0cq4xu0yzFTfX0lIA3zCIEJDhHWyph2hZrmlQdrXO1p8/Wnjt+aNAvfSyzXbRceeovAAARt9QeOZll74ebjrXmM3XNQWNuVKzTSaT3TUlqdBNkV6vh16vh9FohE6ng0ajgU6ns2sb1k5Sp9M5/IQ7Ws9s98s2m80AAK1WC7VaLWu2UsdcqdmKm2shkUBmquXdDgC6zFTLH/ghkUBJr+vO1DpbX7sRsPe9grW1G5V9touO23z3nSJt5lmo8+6Uvh5uOteYXW7ZintdY3a5ZVsbcFeq0E3RvQRBcGjgrHWO1Dpbz2z3yrbWKO24mc25Vua1oW0t18MkJfx7MljMJMvysqx1tr71EMs1ROf3/ltbu7VleVlnu+i4he1LAMD++rvcbq4xm69rzK702Y7ub3HcqikiIiI3FhtvuZ4lLcXyboU9f5w7U+ts/ejNlmuIzh+1vENU2obIFdmuOO6GvYHkNGDYj0DY/fbVExEpBJsiIiKST502lutZ7DwV2ulaZ+vve9pyDVF5ZDt73LVaWZqiWq0cqyciUgB+ThERERERESkamyIiIiIiIlI0NkVERERERKRobIqIiIiIiEjR2BQREZGiXLt2DYGBgTh9+nR574oiHDlyBKGhobh161Z57woRUZHYFBERkaK89tpr6N+/P8LDw6VlZ86cQe/evVGlShUEBgbixRdfLPHDAcPDw20+Z0MQBLzxxhvS43fu3MHw4cMRFRUFtVqNp556qtDtGAwGNGnSBL6+vmjUqBE++ugju49JFEXMnDkTISEh8PX1Rbdu3XD8+PES686fP4+nn34aNWrUgK+vL6KiorB7927p8UuXLmH8+PGoXbs2qlSpgp49exa5XVEU0atXLwiCgO+++05a3rhxY7Rv3x7z58+3+7iIiOTCpoiIiBTj9u3bWLFiBUaOHCkty83NRe/evZGdnY0///wTq1evxqpVqzBz5swStzd79mykpaVJX88//7zNdn19fTFhwgR069at0Pr3338f06ZNw6xZs/DPP/8gPj4eer0eP/74o13H9dZbb+Hdd9/FkiVL8Ndff8HPzw89evTAnTt3iqy5ceMGYmJioFarsWHDBhw6dAjvvPMOqlWrBsDS5Dz66KM4ffo0vvvuO+zbtw9hYWHo1q1boe/6LFy4sMgPVBw+fDjef//9MvkUeiIiV+DnFBERkXzO7Xb8g0idqb1bn/jJZ/BWe6B9+/bS4l9++QWHDh3Cr7/+iqCgILRs2RJz5szByy+/jFmzZsHLy6vIbI1Gg+Dg4ELj/Pz88P777wMAkpKScOXKlQLrfPzxxxg7diwGDhwIAIiMjMSuXbvw5ptvom/fvqU6LFEUsXDhQkyfPh39+/cHAHz00UcICgrCd999hwEDBhRa9+abbyI0NBQrV66UlkVEREj/ffz4cezYsQN//vkn2rZtC0EQ8P777yM4OBiff/45Ro0aJa2bnJyMd955B7t370ZISEiBrNjYWFy/fh2//fYbunbtWqrjIiKSE98pIiIieSTGActjgS2vW74nxslTm69++7qP0bqayaZ++/btiIqKQlBQkLSsR48eMBqN+Oeff4rNfuONN1CjRg20atUK8+bNs/udkKysLPj4+Ngs8/X1xc6dO2E2m0u1jVOnTuHixYs270bpdDq0a9cO27dvL7Luhx9+QJs2bfD4448jMDAQrVq1wrJly2z2DYDN/qlUKnh7e+OPP/6Qlt2+fRuDBw+GwWAoskH08vJCy5YtsW3btlIdExGR3NzqnSJRFCGKokM19ta5op7Z7pmdfztyZyt1zJWanX87cmfLftzndgNJCRAhSF9ISgAa9wHqtCm72nvqz940I8RfBTFffVpaGoKCgmyOKTAwEACQduB3tEwpPPv555/Hfffdh+rVq+PPP//E//73P1y4cKHQa2fyP9/5de/eHR9++CH69++P++67D3v27MGHH34Is9mMK1euICQkpMQxT0tLk/Y5/zpBQUG4ePFikXMtJSUF77//PiZPnoxp06Zh165dmDBhAtRqNYYNG4ZGjRqhbt26iI+Px/Lly+Hv748FCxbg3LlzSEtLk7Y1adIkREdHo1+/fgWy8n/VqlULqamppZ47bjnPmW2zHbmzlTrmSs12tQrdFBkMBhgMBuTm5gIATCYTPD3t22VRFJGRkQEARZ7rXFb1zHa/bOu/8hqNRs41ZpdptuLmWloK4BsGEQIyvC3vJggQLcs1Dcqu9t763HMI8VEj3be2VG82m5GTk4P09HSp5Pbt2wCAW9fTkF5Edv7rksLCwpCbm4vJkydj6tSp8Pb2ttmF/Bn5x23ChAk4e/YsoqOjIYoiAgMDMXDgQLz77rvIyMhAenp6iWNufcxoNKJKlSo2mYIgwGg0So/nn2t5eXlo2bIlXn75ZQCWU/f27t2LxYsX45FHHgEArFq1Cs899xwCAgLg4eGBzp07o1u3bsjNzUV6ejrWr1+PTZs24bfffiswfvfuu4eHB9LT023WK45bznOFZyvudY3Z5ZZtMpnsrilJhW6K9Ho99Ho9jEYjdDodNBoNdDqdXduwdpI6nc7hJ9zRema7X7b1dBWtVgu1Wi1rtlLHXKnZiptrIZFAZqrlnRYAusxUS3MREgmU9LruTO099YG+wK2MW9Bl5kj1oaGhSE5Otvn/y/Xr1wEA9Rr9B7q/lpQqu3PnzsjJycGNGzfQqFEjm8fUajU8PT0LjJtOp8PHH3+MFStW4NKlSwgJCcHSpUuh0WhQr149qFSqEse8fv36AIDMzMwCx9CiRQtotVoABedaSEgIoqKibGpatGiBdevWScs6deoknSpnNptRs2ZNtG/fHq1bt4ZOp8Nff/2FU6dO2dzJDwCGDh2KBx98EJs3b5b2PSMjA5GRkaX+/7hbznOFZyvudY3Z5ZZdFjdtqdBN0b2stzx1tM6RWmfrme1e2dYapR03sznXyrw2tC0QMxFISvj3RLSYSaW7YYIztXfrL0WNReCBD9C8VhWs3WO0qe/QoQNef/11XLlyRTpt7tdff4VWq0Wzhx6H4Hm8VNn79++HSqVCUFBQgbEp6fn28vJCaGgoAGDNmjXo06cPPDw8bOqLqo2MjERwcDA2b96MVq1aAbD8S/1ff/2FZ599tsjsmJgYHDt2zGbZ8ePHERYWZrNMEATpD5fjx49j9+7dmDNnDgRBwLRp0zB69Gib/YmKisKCBQvQt29fm/0+ePAg/vvf/9o1b9xunis8W3Gva8wu97nmSm7VFBERkRuLjbdcx+PIHeScqH1jw2Es2dURrYRaCIw4joMbl+BGm4modvfx7t27o2nTphgyZAjeeustXLx4EdOnT4der7ecBhcbj513IjDk+Vew+atPUadtb2zfvh1//fUXunTpAo1Gg+3bt2Py5Ml4+umnpVtaA8ChQ4eQnZ2N69evw2g0Ijk5GYIgoGXLlgCAY8eOYefOnWjXrh1u3LiB+fPn4+DBg1i9enWpj08QBEyaNAmvvvoqGjRogIiICMyYMQO1atWSToMDLDePeOyxx/Dcc88BACZPniw1hE888QR27tyJpUuXYunSpVLNV199hSpVqqBJkyY4ePAgJk6ciEceeQTdu3cHAAQHBxd6c4W6desiIiJC+tfg06dP4/z580XempyIqLyxKSIiIvnUaWO5DsjOU6Edrd135gaW/JYCAEgW66F2UD14BCbi7SWr8Nq0yQAs17qsW7cOzz77LKKjo+Hn54dhw4Zh9uzZ0nZu+4fheOoFmAOaAgC8vb3xxRdfYNasWcjKykJERAQmT56MKVOm2OQ//PDDSE1NlX6+7777APx76khubi7eeecdHD16FGq1Gl26dMGff/5pczra1q1b8dBDDyElJcXmltn5vfTSS7h16xbGjBmDmzdv4oEHHsDPP/8MHx8f6ZSmlJQUXL16Vapp27Ytvv32W0ybNg2zZ89GREQEFi5caPMhs2lpaXjrrbekmz4MHToUM2bMKPX4W33++efo3r07wsLC7K4lIpIDmyIiIqq0Tl0t+CGjVWOexEfL3seclydCpbJ8MkVYWBjWr19f5HY6d+6MGzduSNfD3HfffdixY0eJ+adPnwZgaYLS09MLnD/fpEkT7Nu3r/hjOHUKkZGRqF27dpHrCIKA2bNn2zRy9zp+/HiB6zz69OmDPn36FFkzYcIEDBs2zK7z/u+9K1R2djY++OADfPbZZ6WqJyIqD2yKiIio0ooI8CuwrEq9thjQ1Bvnz5+XruOpyDZs2IAZM2bYfeF6RXHu3DlMmzYNMTEx5b0rRERFYlNERESVVqu61TCuU6R0Ch0AjOsYiZcfLvrdkYrmyy+/LPVtrCuiyMhI6QYQREQVFZsiIiKq1Kb2aoIezYJx6koGavuJuL9RxX93iIiI5MWmiIiIKr1WdauhZWhVt37HhYiIyo6qvHeAiIiIiIioPLEpIiIiIiIiRWNTREREREREisamiIiI5HNuN3Bso+W7nLXlnU1ERBUab7RARETySIwDkhIA3zAgMxWImQjExpd9bXlnExFRhedWTZEoigU+Kbu0NfbWuaKe2e6ZnX87cmcrdcyVmp1/O3Jny37c53YDSQkQIUhfSEoAGvcB6rQpu9ryzr6Lc015v99Kzc6/HbmzlTrmSs12tQrdFBkMBhgMBuTm5gIATCYTPD3t22VRFJGRkQEAEATB7n1wpp7Z7pedk5MDADAajZxrzC7TbMXNtbQUwDcMIgRkeAdb6iFalmsalF1teWffxbmmrN9vpWZzrjFbrmyTyWR3TUkqdFOk1+uh1+thNBqh0+mg0Wig0+ns2oa1k9TpdA4/4Y7WM9v9ss1mMwBAq9VCrVbLmq3UMVdqtuLmWkgkkJlqeacFgC4z1dJchEQCJb2uO1Nb3tl3ca4p6/dbqdmca8yWK9vagLtShW6K7iUIgkMDZ61zpNbZema7V7a1RmnHzWzOtTKvDW1ruRYnKeHfE9FiJlmWl2VteWfnw7nG7MqezbnGbDlrXc2tmiIiInJjsfGWa3HSUizvtNjTWDhTW97ZRERU4bEpIiIi+dRpY7kWx85ToZ2uLe9sIiKq0Pg5RUREREREpGhsioiIiIiISNHYFBERERERkaKxKSIiIiIiIkVjU0RERERERIrGpoiIiIiIiBSNTRERERERESkamyIiIpLPud3AsY2W73LWlnc2ERFVaPzwViIikkdiHJCUAPiGAZmpQMxEIDa+7GvLO5uIiCo8t2qKRFGEKIoO1dhb54p6Zrtndv7tyJ2t1DFXanb+7cidLftxn9sNJCVAhCB9ISkBaNwHqNOm7GrLO/suzjXl/X4rNTv/duTOVuqYKzXb1Sp0U2QwGGAwGJCbmwsAMJlM8PS0b5dFUURGRgYAQBAEu/fBmXpmu192Tk4OAMBoNHKuMbtMsxU319JSAN8wiBCQ4R1sqYdoWa5pUHa15Z19F+easn6/lZrNucZsubJNJpPdNSWp0E2RXq+HXq+H0WiETqeDRqOBTqezaxvWTlKn0zn8hDtaz2z3yzabzQAArVYLtVota7ZSx1yp2YqbayGRQGaq5Z0WALrMVEtzERIJlPS67kxteWffxbmmrN9vpWZzrjFbrmxrA+5KFbopupcgCA4NnLXOkVpn65ntXtnWGqUdN7M518q8NrSt5VqcpIR/T0SLmWRZXpa15Z2dD+casyt7Nucas+WsdTW3aoqIiMiNxcZbrsVJS7G802JPY+FMbXlnExFRhcemiIiI5FOnjeVaHDtPhXa6tryziYioQuPnFBERERERkaKxKSIiIiIiIkVjU0RERERERIrGpoiIiIiIiBSNTRERERERESkamyIiIiIiIlI0NkVERERERKRobIqIiIiIiEjR2BQREREREZGieZb3DthDFEWIouhQjb11rqhntntm59+O3NlKHXOlZuffjtzZSh1zpWbn347c2Uodc6Vm59+O3NlKHXOlZrtahW6KDAYDDAYDcnNzAQAmkwmenvbtsiiKyMjIAAAIgmD3PjhTz2z3y87JyQEAGI1GzjVml2k25xqz5crmXGO2XNmca8yWK9tkMtldU5IK3RTp9Xro9XoYjUbodDpoNBrodDq7tmHtJHU6ncNPuKP1zHa/bLPZDADQarVQq9WyZit1zJWazbnGbLmyOdeYLVc25xqz5cq2NuCuVKGbonsJguDQwFnrHKl1tp7Z7pVtrVHacTObc43ZlTebc43Zctbm34ac2c7WM9u9sh3d3+LwRgtERERERKRobIqIiIiIiEjR2BQREREREZGisSkiIiIiIiJFY1NERERERESKxqaIiIiIiIgUjU0REREREREpGpsiIiIiIiJSNDZFRERERESkaGyKiIiIiIhI0dgUERERERGRorEpIiIiIiIiRfMs7x2whyiKEEXRoRp761xRz2z3zM6/HbmzlTrmSs3Ovx25s5U65krNzr8dubOVOuZKzc6/HbmzlTrmSs12tQrdFBkMBhgMBuTm5gIATCYTPD3t22VRFJGRkQEAEATB7n1wpp7Z7pedk5MDADAajZxrzC7TbM41ZsuVzbnGbLmyOdeYLVe2yWSyu6YkFbop0uv10Ov1MBqN0Ol00Gg00Ol0dm3D2knqdDqHn3BH65ntftlmsxkAoNVqoVarZc1W6pgrNZtzjdlyZXOuMVuubM41ZsuVbW3AXalCN0X3EgTBoYGz1jlS62w9s90r21qjtONmNucasytvNucas+Wszb8NObOdrWe2e2U7ur/F4Y0WiIiIiIhI0dgUERERERGRorEpIiIiIiIiRWNTREREREREisamiIiIiIiIFI1NERERERERKRqbIiIiIiIiUjQ2RUREREREpGgONUUGgwHh4eHw8fFBu3btsHPnzmLXv3nzJvR6PUJCQuDt7Y2GDRti/fr1Du0wERERERGRK3naW7BmzRpMmTIFS5YsQbt27bBw4UL06NEDR48eRWBgYIH1s7OzERsbi8DAQHz99deoXbs2UlNTUbVqVVfsPxERERERkVPsbormz5+P0aNHY8SIEQCAJUuW4KeffsKKFSswderUAuuvWLEC169fx59//gm1Wg0ACA8Pd26viYiIiIiIXMSupig7Oxt79uzBtGnTpGUqlQrdunXD9u3bC6354YcfEB0dDb1ej++//x41a9bE4MGD8fLLL8PDw6PQmqysLGRlZUk/G41GAIDZbIbZbLZnlyGKInJycmA2myEIgl21ztYz2/2yrfPL3nnmimyljrlSsznXmC1XNucas+XK5lxjtlzZjsyxktjVFF29ehW5ubkICgqyWR4UFIQjR44UWpOSkoLNmzfjqaeewvr163HixAmMHz8eZrMZcXFxhdbMnTsX8fHxBZZv2bIFVapUsWeXiRySmJhY3rtACsG5RnLhXCO5cK5RWbt9+7bLt2n36XP2ysvLQ2BgIJYuXQoPDw+0bt0a58+fx7x584psiqZNm4YpU6ZIPxuNRoSGhqJLly6oUaOGXfmiKMJoNEKr1TrcBTtaz2z3yzabzUhMTERsbKx0uqdc2Uodc6Vmc64xW65szjVmy5XNucZsubKvXbtmd01J7GqKAgIC4OHhgUuXLtksv3TpEoKDgwutCQkJgVqttjlVrkmTJrh48SKys7Ph5eVVoMbb2xve3t4FlqvVaod+yTw9PaFWqx1+wh2tZ7b7ZVtxrjG7rLOtONeYXdbZVpxrzC7rbCvONWaXdba986s07Lolt5eXF1q3bo1NmzZJy/Ly8rBp0yZER0cXWhMTE4MTJ04gLy9PWnbs2DGEhIQU2hARERERERHJye7PKZoyZQqWLVuG1atX4/Dhw3j22Wdx69Yt6W50Q4cOtbkRw7PPPovr169j4sSJOHbsGH766Se8/vrr0Ov1rjsKIiIiIiIiB9l9TdHAgQNx5coVzJw5ExcvXkTLli3x888/SzdfOHPmDFSqf3ut0NBQbNy4EZMnT0bz5s1Ru3ZtTJw4ES+//LLrjoKIiIiIiMhBDt1o4bnnnsNzzz1X6GNbt24tsCw6Oho7duxwJIqIiIiIiKhM2X36HBERERERUWXCpoiIiIiIiBSNTRERERERESkamyIiIiIiIlI0NkVERERERKRobIqIiIiIiEjR2BQREREREZGisSkiIiIiIiJFc+jDW8uLKIoQRdGhGnvrXFHPbPfMzr8dubOVOuZKzc6/HbmzlTrmSs3Ovx25s5U65krNzr8dubOVOuZKzXa1Ct0UGQwGGAwG5ObmAgBMJhM8Pe3bZVEUkZGRAQAQBMHufXCmntnul52TkwMAMBqNnGvMLtNszjVmy5XNucZsubI515gtV7bJZLK7piQVuinS6/XQ6/UwGo3Q6XTQaDTQ6XR2bcPaSep0OoefcEfrme1+2WazGQCg1WqhVqtlzVbqmCs1m3ON2XJlc64xW65szjVmy5VtbcBdqUI3RfcSBMGhgbPWOVLrbD2z3SvbWqO042Y25xqzK2825xqz5azNvw05s52tZ7Z7ZTu6v8XhjRaIiIiIiEjR2BQREREREZGisSkiIiIiIiJFY1NERERERESKxqaIiIiIiIgUjU0REREREREpGpsiIiIiIiJSNDZFRERERESkaGyKiIiIiIhI0dgUEbnKud3AsY2W73LXl2c2ERERkZvzLO8dIKoUEuOApATANwzITAViJgKx8fLUl2c2ERERUSXgVk2RKIoQRdGhGnvrXFHPbPfMzr+dUjm3G0hKgAhB+kJSAtC4D1CnTdnWl2f2Xe7+fLvVXHNhtlLHXKnZ+bcjd7ZSx1yp2fm3I3e2UsdcqdmuVqGbIoPBAIPBgNzcXACAyWSCp6d9uyyKIjIyMgAAgiDYvQ/O1DPb/bJzcnIAAEajsfRzLS0F8A2DCAEZ3sGWbIiW5ZoGZVtfntl3ufPz7XZzzUXZSh1zpWZzrjFbrmzONWbLlW0ymeyuKUmFbor0ej30ej2MRiN0Oh00Gg10Op1d27B2kjqdzuEn3NF6ZrtfttlsBgBotVqo1erSFYVEApmplndZAOgyUy2NRUgkUJr56kx9eWbf5c7Pt9vNNRdlK3XMlZrNucZsubI515gtV7a1AXelCt0U3UsQBIcGzlrnSK2z9cx2r2xrjV31oW0t1+EkJfx7ElrMJMvysq4vz+x83PX5Ls9sh+aai7KdrWe2e2VzrjFbztr825Az29l6ZrtXtqP7Wxy3aoqIKqzYeMt1OGkplndZ7GwqnKovz2wiIiKiSoBNEZGr1GljuQ7HzlM8XVJfntlEREREbo6fU0RERERERIrGpoiIiIiIiBSNTRERERERESkamyIiIiIiIlI0NkVERERERKRobIqIiIiIiEjR2BQREREREZGisSkicpVzu4FjGy3fZa6/duBXNIgMw+ntP8ierURTp07F888/X967QURERC7CpojIFRLjgOWxwJbXLd8T4+SrT4zDa2P74OH6ngj/ZZhUe+bMGfTu3RtVqlRBYGAgXnzxReTk5BSZfWbtLIzsF4OI4Grw9fVFvXr1EBcXh+zsbGnV06dPQxAEmy+VSoVdu3bZbPLmzZvQ6/UICQmBt7c3GjZsiPXr19s1JHfu3IFer0eNGjXg7++PAQMG4NKlS8XWDB8+vMD+9ezZ02adfv36oW7duvDx8UGtWrUwduxYXLhwwWadv//+Gw8++CB8fHwQGhqKt956y+bx//u//8NHH32E06dP23VMREREVDF5lvcO2EMURYii6FCNvXWuqGe2e2bn306pnNsNJCVAhCB9ISkBaNwHqNOmbOvP7cbtrQuxYl82vhpZHSKuAkkJyG3QC737jkZwcDCSkpKQlpaGYcOGwdPTE6+//nqh2UevZCEPApbEZqP+2M9x8JqAMWPGICMjA2+//bbN+CQmJqJZs2bSMk9PT+mx7OxsxMbGIjAwEF999RVq166N1NRUVK1atdAxLeo5mzRpEtavX48vv/wSOp0Ozz//PB577DH88ccfxdb27NkTK1askH729va2ebxz586YNm0aQkJCcO7cOUyZMgWPP/44kpKSAABGoxHdu3dHt27d8P777+PAgQMYOXIkdDodxowZAwCoUaMGunfvjuXLlyMhIaH456gIDs21Yo5brnpmu2d2/u3Ina3UMVdqdv7tyJ2t1DFXararVeimyGAwwGAwIDc3FwBgMpng6WnfLouiiIyMDACAIAh274Mz9cx2v2zrOylGo7H0cy0tBfANgwgBGd7BlmyIluWaBmVbn5aC71OrwsvzNpo0qIf0LD8IEJH43Xc4dOgQ1q5di8DAQERERGDatGmYNWsWJk+eDC8vrwLZ7ZsHo1sjrSXbKwudOvWAXq/HihUrMGPGDACW30HA0mj4+voC+HfM09PTIQgCVqxYgatXr2L9+vVQq9UAgGrVqgEA0tPTCxxCYc9Zeno6VqxYgWXLlqF169YAgISEBLRr1w6//vor2rZtW2htdnY2VCqVtG9W+XOfeeYZ6b91Oh3Gjh2L0aNH4+rVq1Cr1Vi+fDmysrIwf/58eHl5oU6dOhgzZgzeeecdDBw4UKrt2rUr5syZg9mzZ8s31+5y598xZrvJ65qLspU65krN5lxjtlzZ1r9HXKlCN0V6vR56vR5GoxE6nQ4ajQY6nc6ubVg7SZ1O5/AT7mg9s90v22w2AwC0Wq30B32JQiKBzFTLOzwAdJmplsYiJBIozXx1pj4kEnuOX0TrEMA/66JU+3faVURFRaFBg3+bqkceeQQvvPACzp07h1atWpUqOysrCwEBAdLvnUajAQA89dRTuHPnDho2bIj/+7//Q6dOnaQx//XXXxETE4P//e9/+OGHH1CzZk0MGjQIL7/8Mjw8PAocQmHP2Z49e2A2m9GvXz8pu23btqhbty4OHDiAbt26FVrr5eWFpKQkNGzYENWqVUOXLl3w6quvokaNGoUO37Vr17Bu3Tp06NABAQEBAID9+/ejU6dOqFmzprRev379kJCQgLy8PKnB69SpE8aPH48bN24gIiKi+OepEA7Ntbvc+XeM2W7yuuaibKWOuVKzOdeYLVd2oZcDOKlCN0X3sl4j4GidI7XO1jPbvbKtNXbVh7YFYiYCSQn/ngAXM8myvKzrQ9vijEcEavmn2NRe+uoCgoKCbI4hONjyLtSlS5f+XV5M9okTJ/Dee+/h7bffltbXaDR45513EBMTA5VKhbVr1+Kxxx7DJ598gkGDBkEQBKSkpGDz5s146qmnsH79epw4cQLjx49HTk4O4uIKv1bq3ufs0qVL8PLykhoQq6CgINv9v6e2Z8+eeOyxxxAREYGTJ0/if//7Hx5++GFs377dpiF7+eWX8d577+H27dto27Yt1q9fL23z4sWLiIiIKHLsqlevDgCoXbs2AMu1W5GRkSU/V4Ucc/79d6TeHX/HmO0mr2suyna2ntnulc25xmw5a13NrZoiogorNt5yDVBaiuVdltI2RC6oz9SEwadBFNDlv//WfjXGqezz58+jZ8+eePzxxzF69Ghp1YCAAEyZMkX6uW3btrhw4QIWLVqEQYMGAQDy8vIQGBiIpUuXwsPDA61bt8b58+cxb968IpsiV3nyySel/46KikLz5s1Rr149bN26FV27dpUee/HFFzFy5EicPn0aM2fOxLBhw7Bu3Tq7XmStp+jdvn3bdQdARERE5YJNEZGr1GljuQbIzlM8na0PCAjATbMINOwh1QYHB2Pnzp0261nv3GZ916Oo7AsXLqBLly7o0KEDli5dWmL+/fffj19++UX6OSQkBGq12uadmSZNmuDixYvIzs7+93qmYgQHByM7Oxs3b95E1apVbY6h0P0vQmRkJAICAnDixAmbpiggIAABAQFo0KABateujf/85z/YsWMHoqOjERwcXOAud4WN3fXr1wHA5jQ7IiIick+8JTeRm9p35ga+2XsOgeGNcOjQIZvHoqOjceDAAVy+fFlalpiYCK1Wi6ZNmxa5zfPnz6Nz585o3bo1Vq5cCZWq5JeI5ORkBAUFST/HxMTgxIkTyMvLk5YdO3YMISEhpWqIAKB169ZQq9XYtGmTtOzo0aM4c+YMoqOjS7UNADh37hyuXbuGkJCQItex7mdWVhYAy9j9/vvv0rnxgGXsGjVqZHM638GDB6FWq6W78BEREZH7YlNE5Ibe2HAYjy7+E1O+3I81F2vgwMF/cPPmTenx7t27o2nTphgyZAj279+PjRs3Yvr06dDr9fD29gYA7Ny5E40bN8b58+cBQHqHqG7dunj77bdx5coVXLx4ERcvXpS2u3r1anz++ec4cuQIjhw5gtdffx0rV66UblUNAM8++yyuX7+OiRMn4tixY/jpp5/w+uuvQ6/Xl/r4dDodRo4ciSlTpmDLli3Ys2cPRowYgejoaLRv315ar0mTJli3bh0AICMjAy+++CJ27NiB06dPY9OmTejfvz/q16+PHj16AAD++usvvPfee0hOTkZqaio2b96MUaNGoV69elKzNXjwYHh5eWHkyJH4559/sGbNGiQkJNicNggA27ZtQ3R0dIE73REREZH74elzRG5m35kbWPJbivSzV81weAZGYsnqzzF35lQAgIeHB9atW4dnn30W0dHR8PPzw7BhwzB79myp7vbt2zh69Kj0jsjWrVtx4sQJnDhxAnXq1LHJzP95AHPmzEFqaio8PT3RuHFjfPHFF4iNjZUeDw0NxcaNGzF58mQ0b94ctWvXxsSJE/Hyyy9L66xatQojRowo9nMGFixYAJVKhQEDBiArKws9evTA4sWLbdY5evQojEajdMx///03Vq9ejZs3b6JWrVro3r075syZIzWCVapUwTfffIO4uDjcunULISEh6NKlC2bPni2to9Pp8Msvv0Cv16N169YICAjAzJkzbRo/AFizZg1efPHFIvefiIiI3AebIiI3c+rqrQLLqsY8iU9XLcdr01+SruUJCwvD+vXri9xO586dbT5ob/DgwXj22WeLvdnAsGHDMGzYMJtloigW+Pyh6Oho7Nixo+hjOHUKnTp1KvJxAPDx8ZE+q6woeXl5Uravry82btxY7DajoqKwefPmAvt+763+mzdvjm3bthW5nQ0bNkClUqF///7F5hEREZF7YFNE5GYiAvwKLKtSry0eqW+5Jqhu3brlsFf22bBhA957773y3g2H3bp1CytWrLD7wwmJiIioYuL/0YncTKu61TCuU6TNKXTjOkZibIcH7P5w4/Jy753x3M1///vfQt8hIyIiIvfEpojIDU3t1QQ9mgXj1NVbiAjwQ8vQqvwDnYiIiMhBbIqI3FSrutXQqq7lFtHF3bCAiIiIiIrHW3ITucq53cCxjZbvcteXZzYRERGRm+M7RUSu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bpcdEglkplreZQGgy0y1NBYhkUBpXp/u1pvvvlOkzTwLdd6d0tW7KNvheijw+a4E2XxdY7Zc2ZxrzJYr29qAu1KFboruJQiCQwNnrXOk1tl6ZrtXtrVGacfNbDvqQ9tarsNJSvj3JLSYSZbldtQL25dY8u2pd1G2w/V3Ker5rgTZfF1jtpy1+bchZ7az9cx2r2xH97c4btUUERFVCLHxlutw0lIs77LY2VQgNh5o2BtITgOG/QiE3S9vtjP1RERElRCbIiIiR9RpY7kOx85TeiW1Wlmaolqt5M92tp6IiKiS4ecUERERERGRorEpIiIiIiIiRWNTREREREREisamiIiIiIiIFI1NERERERERKRqbIiIiIiIiUjSHmiKDwYDw8HD4+PigXbt22LlzZ6nqvvjiCwiCgEceecSRWCIiIiIiIpezuylas2YNpkyZgri4OOzduxctWrRAjx49cPny5WLrTp8+jf/7v//Dgw8+6PDOEhERERERuZrdTdH8+fMxevRojBgxAk2bNsWSJUtQpUoVrFixosia3NxcPPXUU4iPj0dkZKRTO0xERERERORKnvasnJ2djT179mDatGnSMpVKhW7dumH79u1F1s2ePRuBgYEYOXIktm3bVmJOVlYWsrKypJ+NRiMAwGw2w2w227PLEEUROTk5MJvNEATBrlpn65ntftnW+WXvPHNFtlLHXKnZnGvMliubc43ZcmVzrjFbrmxH5lhJ7GqKrl69itzcXAQFBdksDwoKwpEjRwqt+eOPP7B8+XIkJyeXOmfu3LmIj48vsHzLli2oUqWKPbtM5JDExMTy3gVSCM41kgvnGsmFc43K2u3bt12+TbuaInuZTCYMGTIEy5YtQ0BAQKnrpk2bhilTpkg/G41GhIaGokuXLqhRo4Zd+yCKIoxGI7RarcNdsKP1zHa/bLPZjMTERMTGxkKtVsuardQxV2o25xqz5crmXGO2XNmca8yWK/vatWt215TErqYoICAAHh4euHTpks3yS5cuITg4uMD6J0+exOnTp9G3b19pWV5eniXY0xNHjx5FvXr1CtR5e3vD29u7wHK1Wu3QL5mnpyfUarXDT7ij9cx2v2wrzjVml3W2Fecas8s624pzjdllnW3Fucbsss62d36Vhl03WvDy8kLr1q2xadMmaVleXh42bdqE6OjoAus3btwYBw4cQHJysvTV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tG3btjbXbd++XYVCoc1a7T3fjz32mP74xz/qRz/6UZtriz9H9corr6hnz56S+L5Gtr1seo1sW9mZTCZwzd506aEomUwqmUwqnU7L933F43H5vh9ojeIk6ft+6Cc8bD3Z0cvO5XKSpEQioVgsZjXb1TN3NbsqvdY4UNq2vuVVHkn+tvUtg03jQGlv31sD1ubz+bbfsxsHKpbPqHan0UHbm1vrYw2fkdTyH/PtfX+/44479NecdP3nt6lm23oduL1RknTQ9o3y28leuHChstmsLrvsst3W69Gjhw466KDWc+vRo4c8z9unf68YY9S9e3fV1NTsdn1xrY7WmTZtmk477TRls1nddtttuvjii/Xss8+qvr6+zXV1dXXq1q1bm7V2fb6XLl2q6dOn65577mnz9kRJOuCAA1r3VFyD72tk28qm18i2lb2vH9ATRJceinZV/EShsHVhasutJzta2cUa1+6bbEd6rd8I6aQrpOVzPn0T3ElXtjxe4dpevXrp448//nR//Uao8ejP64+/X96m/t3YYZKkxsbGdu9l6dKlWrHyT6pfaSRjJO9jSdKIuVv09W136oEHHmhz/X333aezzz5bDQ0NbR5vaGjQu+++2+bc3n33XTU0NOzzGfbp06d1jaJ8Pq8PP/xwj/svOvjgg3XEEUfI932NGTNGPXv21OOPP64LLrigzXWlfbHr457n6emnn9aXvvQl/cd//IemTJmyW85HH30kSerdu/dua7n2zxjZjnxfq1A92dHKDrvfjkRqKAIAlGncDS0/B7RxbcurPPsyEAWoXbXhI617f4t6D/islv6m7YcAjP76tbrpF2frveOT8o85Qeo3QovvuUeJREJDhgxpN/KOO+7QjTfeKEkyzav1/175H335illa8MuHNWrUqDbXrlu3TkuXLtWvf/3r3dYZPXq0nnrqKU2dOrX1scWLF2v06NH7fPsjRozQxx9/rJdeeknDhg2TJD311FPauXPnbnvpSPF99Nu3b9/nGklatmyZzjnnHN1yyy17/MS71atXKxaL6Zhjjgm0NgC4jqEIAFxz2PCWn8UJ+HbkvdXO/u2ruvv/tvyOnB3v/Y02rf6zPvroo9afbRk/fryGDBmib/5ogf7930dq0ytP6vvf/76SyaTq6uokSS+88IImT56sJUuW6NBDD1X//v1b1zfHHCPTe4ikWRo0aJAO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bat28+bN6t+/vw455JBQ9e0JNBT16tVL3bp106ZNm9o8vmnTJjU0NLRb09DQEOh6Saqrq1NdXd1uj/u+H+ofsm7duoWqq0Q92dHLlqREIkGvkd3p2RK9RradbIleI9tOtkSvkW0nW2r5MZ5KCbRS9+7dNWzYMC1ZsqT1sZ07d2rJkiUaPXp0uzWjR49uc70kLV68eI/Xd4ZkMlm1erKjl12OKN832fazyxHl+ybbfnY5onzfZNvPLkeU75ts+9mV5pmAP6G0YMECTZkyRT/96U81cuRI3X777frlL3+p1157TX369NHkyZN16KGHatasWZJaPpL71FNP1ezZs3XWWWdp/vz5uvnmm7Vy5Uode+yx+5SZTqfl+742b95c9kQJdIRegy30Gmyh12ALvQZbOqPXAv9M0aRJk/Tee+/puuuuU3Nzs4YOHapFixa1fpjChg0b2ryUNWbMGD300EP6/ve/r+9+97s68sgj9fjjj+/zQCS1vJ2uqamp3bfUAZVEr8EWeg220GuwhV6DLZ3Ra4FfKQIAAACA/UnlfjoJAAAAACKIoQgAAACA0xiKAAAAADiNoQgAAACA07rMUJRKpTRgwADV19dr1KhReuGFFzq8/uGHH9bgwYNVX1+v4447TgsXLrS0U0RdkF6bO3euTjnlFPXs2VM9e/bU2LFj99qbQFHQ72tF8+fPl+d5mjhxYuduEPuNoL328ccfK5lMqrGxUXV1dTrqqKP49yj2SdBeu/322/XZz35WPXr0UL9+/fTtb39bf/3rXy3tFlH09NNP65xzzlHfvn3leZ4ef/zxvdYsW7ZMJ554ourq6nTEEUdo3rx5gXO7xFC0YMECzZgxQ01NTVq5cqWOP/54TZgwQe+++2671z/33HO64IILNG3aNK1atUoTJ07UxIkTtXr1ass7R9QE7bVly5bpggsu0NKlS7VixQr169dP48eP1zvvvGN554iaoL1W9Oabb+qqq67SKaecYmmniLqgvbZjxw6NGzdOb775ph555BGtWbNGc+fO1aGHHmp554iaoL320EMP6ZprrlFTU5NeffVV3XfffVqwYIG++93vWt45omTLli06/vjjlUql9un6devW6ayzztIXvvAFvfzyy7ryyit18cUX68knnwwWbLqAkSNHmmQy2frnQqFg+vbta2bNmtXu9eedd54566yz2jw2atQoc9lll3XqPhF9QXttV/l83sTjcfPAAw901haxnwjTa/l83owZM8bce++9ZsqUKebcc8+1sFNEXdBeu+uuu8zAgQPNjh07bG0R+4mgvZZMJs3f//3ft3lsxowZ5qSTTurUfWL/Ick89thjHV7zr//6r+aYY45p89ikSZPMhAkTAmVV/ZWiHTt26KWXXtLYsWNbH6upqdHYsWO1YsWKdmtWrFjR5npJmjBhwh6vB6RwvbarrVu3KpfL6ZBDDumsbWI/ELbXfvCDH6h3796aNm2ajW1iPxCm1379619r9OjRSiaT6tOnj4499ljdfPPNKhQKtraNCArTa2PGjNFLL73U+ha7tWvXauHChTrzzDOt7BluqNRcUFvJTYXx/vvvq1AoqE+fPm0e79Onj1577bV2a5qbm9u9vrm5udP2iegL02u7+s53vqO+ffvu9g8fUCpMrz377LO677779PLLL1vYIfYXYXpt7dq1euqpp/T1r39dCxcu1BtvvKHLL79cuVxOTU1NNraNCArTa1/72tf0/vvv6+STT5YxRvl8Xt/85jd5+xwqak9zQTqd1rZt29SjR499WqfqrxQBUTF79mzNnz9fjz32mOrr66u9HexHMpmMLrroIs2dO1e9evWq9nawn9u5c6d69+6te+65R8OGDdOkSZP0ve99T3fffXe1t4b9zLJly3TzzTfrJz/5iVauXKlHH31Uv/nNbzRz5sxqbw3YTdVfKerVq5e6deumTZs2tXl806ZNamhoaLemoaEh0PWAFK7Xim699VbNnj1bv//97/W5z32uM7eJ/UDQXvvLX/6iN998U+ecc07rYzt37pQk1dbWas2aNRo0aFDnbhqRFOb7WmNjo2KxmLp169b62NFHH63m5mbt2LFD3bt379Q9I5rC9Nq//du/6aKLLtLFF18sSTruuOO0ZcsWXXrppfre976nmhr+3zzKt6e5IJFI7POrRFIXeKWoe/fuGjZsmJYsWdL62M6dO7VkyRKNHj263ZrRo0e3uV6SFi9evMfrASlcr0nSD3/4Q82cOVOLFi3S8OHDbWwVERe01wYPHqw//elPevnll1u/vvSlL7V+kk6/fv1sbh8REub72kknnaQ33nijdfCWpNdff12NjY0MRNijML22devW3Qaf4jDe8jP0QPkqNhcE+wyIzjF//nxTV1dn5s2bZ1555RVz6aWXmoMPPtg0NzcbY4y56KKLzDXXXNN6/fLly01tba259dZbzauvvmqamppMLBYzf/rTn6p1C4iIoL02e/Zs0717d/PII4+YjRs3tn5lMplq3QIiImiv7YpPn8O+CtprGzZsMPF43EyfPt2sWbPGPPHEE6Z3797mxhtvrNYtICKC9lpTU5OJx+PmF7/4hVm7dq353e9+ZwYNGmTOO++8at0CIiCTyZhVq1aZVatWGUnmtttuM6tWrTLr1683xhhzzTXXmIsuuqj1+rVr15oDDjjAXH311ebVV181qVTKdOvWzSxatChQbpcYiowx5sc//rHp37+/6d69uxk5cqR5/vnnW//eqaeeaqZMmdLm+l/+8pfmqKOOMt27dzfHHHOM+c1vfmN5x4iqIL12+OGHG0m7fTU1NdnfOCIn6Pe1UgxFCCJorz333HNm1KhRpq6uzgwcONDcdNNNJp/PW941oihIr+VyOXP99debQYMGmfr6etOvXz9z+eWXm48++sj+xhEZS5cubfe/vYq9NWXKFHPqqafuVjN06FDTvXt3M3DgQPOzn/0scK5nDK9fAgAAAHBX1X+mCAAAAACqiaEIAAAAgNMYigAAAAA4jaEIAAAAgNMYigAAAAA4jaEIAAAAgNMYigAAAAA4jaEIAAAAgNMYigAAAAA4jaEIAAAAgNMYigAAAAA4jaEIAAAAgNP+P2pqYL7/ilbSAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, ax = plt.subplots(figsize=(10, 10))\n", + "ax.set_xlim([0, 1])\n", + "ax.set_ylim([0, 1])\n", + "ax.scatter(coords[:, 0], coords[:, 1], s=10, label=\"Sparse positions\")\n", + "ax.scatter(interp_points[:, 0], interp_points[:, 1], s=10, label=\"Interpolation support\")\n", + "ax.grid(which = \"major\")\n", + "ax.grid(which = \"minor\", alpha = 0.2)\n", + "ax.xaxis.set_minor_locator(FixedLocator(np.linspace(0, 1, 51)))\n", + "ax.yaxis.set_minor_locator(FixedLocator(np.linspace(0, 1, 51)))\n", + "ax.set_title(\"Off the grid sparse positions\")\n", + "for i in range(npoint):\n", + " ax.annotate(\"(%.3f, %.3f)\" % (coords[i, 0], coords[i, 1]), coords[i, :])\n", + "ax.legend()" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Operator `Kernel` ran in 0.01 s\n" + ] + }, + { + "data": { + "text/plain": [ + "PerformanceSummary([(PerfKey(name='section0', rank=None),\n", + " PerfEntry(time=0.00021299999999999995, gflopss=0.0, gpointss=0.0, oi=0.0, ops=0, itershapes=[])),\n", + " (PerfKey(name='section1', rank=None),\n", + " PerfEntry(time=0.000321, gflopss=0.0, gpointss=0.0, oi=0.0, ops=0, itershapes=[]))])" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "f.data.fill(0)\n", + "op = Operator([Eq(f.forward, f+1)] + s.interpolate(f))\n", + "op()" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Data([[0. , 0. , 0. , 0. , 0. ],\n", + " [1. , 1. , 1. , 1. , 1. ],\n", + " [2. , 2. , 2. , 2. , 2. ],\n", + " [2.9999998, 3. , 3. , 3. , 3. ],\n", + " [4. , 4. , 4. , 4. , 4. ],\n", + " [5. , 5. , 5. , 5. , 5. ],\n", + " [5.9999995, 6. , 6. , 6. , 6. ],\n", + " [7. , 7. , 7. , 7. , 7. ],\n", + " [8. , 8. , 8. , 8. , 8. ],\n", + " [9. , 9. , 9. , 9. , 9. ],\n", + " [0. , 0. , 0. , 0. , 0. ]],\n", + " dtype=float32)" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "s.data" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Operator `Kernel` ran in 0.01 s\n" + ] + }, + { + "data": { + "text/plain": [ + "PerformanceSummary([(PerfKey(name='section0', rank=None),\n", + " PerfEntry(time=0.000108, gflopss=0.0, gpointss=0.0, oi=0.0, ops=0, itershapes=[]))])" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "op = Operator(s.inject(u, expr=s))\n", + "op()" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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sTFee+21Qc9//PHHY/Xq1dHc3Bz79u2LRx55JLZs2RK33nrrsIcHAAAoRckBdP/998e1114bK1eujI9//OOxcePGOO200+LRRx8d9PydO3fGJZdcEldddVXMmTMnrrjiili6dOl73jUCAAAYaSUFUE9PT+zevTsaGhr+/ASTJkVDQ0O0tbUNuubiiy+O3bt39wfPgQMHYtu2bfHZz372uNfp7u6Orq6uAQ8AAIDhmlzKyYcPH47e3t6oqakZcLympiZefPHFQddcddVVcfjw4fj0pz8dRVHEO++8E9dff/27vgWupaUl7rrrrlJGAwAAeE+j/i1wO3bsiHvuuScefPDB2LNnT/zgBz+IrVu3xt13333cNWvWrInOzs7+x6FDh0Z7TAAAIIGS7gBNmzYtysvLo6OjY8Dxjo6OmDFjxqBr7rjjjli2bFlcc801ERFxwQUXxNGjR+O6666L2267LSZNOrbBKisro7KyspTRAAAA3lNJd4AqKipi/vz50dra2n+sr68vWltbo76+ftA1b7311jGRU15eHhERRVGUOi8AAMCQlXQHKCKiqakpVqxYEQsWLIiFCxfG+vXr4+jRo7Fy5cqIiFi+fHnMnj07WlpaIiJi0aJFcf/998dFF10UdXV18fLLL8cdd9wRixYt6g8hAACAsVByAC1ZsiRef/31WLt2bbS3t8e8efNi+/bt/V+McPDgwQF3fG6//fYoKyuL22+/PV599dX4q7/6q1i0aFF885vfHLlXAQAAcALKignwPrSurq6orq6OiNUR4bNBAACQQ3dErIvOzs6YMmXKiDzjqH8LHAAAwMlCAAEAAGkIIAAAIA0BBAAApCGAAACANAQQAACQhgACAADSEEAAAEAaAggAAEhDAAEAAGkIIAAAIA0BBAAApCGAAACANAQQAACQhgACAADSEEAAAEAaAggAAEhDAAEAAGkIIAAAIA0BBAAApDF5vAcAgOG7YZyu+9A4XReAoXIHCAAASEMAAQAAaQggAAAgDQEEAACkIYAAAIA0BBAAAJCGAAIAANIQQAAAQBoCCAAASEMAAQAAaQggAAAgDQEEAACkIYAAAIA0BBAAAJDG5PEeAACG6/zi4JDXlkfvkNf+77IhLwVgnLgDBAAApCGAAACANAQQAACQhgACAADSEEAAAEAaAggAAEhDAAEAAGkIIAAAIA0BBAAApCGAAACANAQQAACQhgACAADSEEAAAEAaAggAAEhj8ngPAADD9ULZ1vEeAYAJwh0gAAAgDQEEAACkIYAAAIA0BBAAAJCGAAIAANIQQAAAQBoCCAAASEMAAQAAaQggAAAgDQEEAACkIYAAAIA0BBAAAJCGAAIAANIQQAAAQBoCCAAASEMAAQAAaQggAAAgDQEEAACkIYAAAIA0BBAAAJCGAAIAANIQQAAAQBoCCAAASEMAAQAAaQggAAAgDQEEAACkIYAAAIA0BBAAAJCGAAIAANIQQAAAQBoCCAAASEMAAQAAaQggAAAgDQEEAACkIYAAAIA0BBAAAJCGAAIAANIQQAAAQBoCCAAASEMAAQAAaQggAAAgDQEEAACkIYAAAIA0BBAAAJCGAAIAANIQQAAAQBoCCAAASEMAAQAAaQggAAAgDQEEAACkIYAAAIA0BBAAAJCGAAIAANIQQAAAQBoCCAAASEMAAQAAaQggAAAgDQEEAACkIYAAAIA0BBAAAJCGAAIAANIQQAAAQBoCCAAASEMAAQAAaQggAAAgDQEEAACkIYAAAIA0BBAAAJCGAAIAANIQQAAAQBoCCAAASEMAAQAAaQggAAAgDQEEAACkIYAAAIA0BBAAAJCGAAIAANIQQAAAQBoCCAAASEMAAQAAaQggAAAgDQEEAACkIYAAAIA0BBAAAJCGAAIAANIQQAAAQBoCCAAASEMAAQAAaQggAAAgDQEEAACkMXm8BwBgZF1RXDTktT/e+vmhX/jv7xz6WgAYI+4AAQAAaQwpgDZs2BBz5syJqqqqqKuri127dr3r+W+++WasWrUqZs6cGZWVlXHuuefGtm3bhjQwAADAUJX8FrgtW7ZEU1NTbNy4Merq6mL9+vXR2NgY+/fvj+nTpx9zfk9PT3zmM5+J6dOnxxNPPBGzZ8+OX/3qV3HGGWeMxPwAAAAnrOQAuv/+++Paa6+NlStXRkTExo0bY+vWrfHoo4/G6tWrjzn/0UcfjTfeeCN27twZp5xySkREzJkzZ3hTAwAADEFJb4Hr6emJ3bt3R0NDw5+fYNKkaGhoiLa2tkHX/PCHP4z6+vpYtWpV1NTUxPnnnx/33HNP9Pb2Hvc63d3d0dXVNeABAAAwXCUF0OHDh6O3tzdqamoGHK+pqYn29vZB1xw4cCCeeOKJ6O3tjW3btsUdd9wR9913X3zjG9847nVaWlqiurq6/1FbW1vKmAAAAIMa9W+B6+vri+nTp8fDDz8c8+fPjyVLlsRtt90WGzduPO6aNWvWRGdnZ//j0KFDoz0mAACQQEmfAZo2bVqUl5dHR0fHgOMdHR0xY8aMQdfMnDkzTjnllCgvL+8/9rGPfSza29ujp6cnKioqjllTWVkZlZWVpYwGAADwnkq6A1RRURHz58+P1tbW/mN9fX3R2toa9fX1g6655JJL4uWXX46+vr7+Yy+99FLMnDlz0PgBAAAYLSW/Ba6pqSk2bdoU3/3ud2Pfvn1xww03xNGjR/u/FW758uWxZs2a/vNvuOGGeOONN+LGG2+Ml156KbZu3Rr33HNPrFq1auReBQAAwAko+WuwlyxZEq+//nqsXbs22tvbY968ebF9+/b+L0Y4ePBgTJr0566qra2Np59+Om6++ea48MILY/bs2XHjjTfGLbfcMnKvAgAA4ASUFUVRjPcQ76Wrqyuqq6sjYnVE+GwQwLu5orhoyGt/vPXzQ7/w39859LUAMKjuiFgXnZ2dMWXKlBF5xlH/FjgAAICThQACAADSKPkzQACc3H5cO4y3sf2ft0duEAA4CbkDBAAApCGAAACANAQQAACQhgACAADSEEAAAEAaAggAAEhDAAEAAGkIIAAAIA0BBAAApCGAAACANAQQAACQhgACAADSEEAAAEAaAggAAEhj8ngPAMAI+z93jvcEAHDScgcIAABIQwABAABpCCAAACANAQQAAKQhgAAAgDQEEAAAkIYAAgAA0hBAAABAGgIIAABIQwABAABpCCAAACANAQQAAKQhgAAAgDQEEAAAkMbk8R4AmEC+eOfw1v+PYaz9+2FeGwAg3AECAAASEUAAAEAaAggAAEhDAAEAAGkIIAAAIA0BBAAApCGAAACANAQQAACQhgACAADSEEAAAEAaAggAAEhDAAEAAGkIIAAAIA0BBAAApDF5vAcAJpDfDXP94RGZAgBgyNwBAgAA0hBAAABAGgIIAABIQwABAABpCCAAACANAQQAAKQhgAAAgDQEEAAAkIYAAgAA0hBAAABAGgIIAABIQwABAABpCCAAACANAQQAAKQxebwHACaQH905zPUjMgWQTs0w1s4Z5rX/1zDXAycbd4AAAIA0BBAAAJCGAAIAANIQQAAAQBoCCAAASEMAAQAAaQggAAAgDQEEAACkIYAAAIA0BBAAAJCGAAIAANIQQAAAQBoCCAAASEMAAQAAaQggAAAgjcnjPQAAwLv6nzcMeWnnFyuGdenqybcOaz1w8nEHCAAASEMAAQAAaQggAAAgDQEEAACkIYAAAIA0BBAAAJCGAAIAANIQQAAAQBoCCAAASEMAAQAAaQggAAAgDQEEAACkIYAAAIA0BBAAAJBGWVEUxXgP8V66urqiuro6IlZHROV4jwMAAIyJ7ohYF52dnTFlypQReUZ3gAAAgDQEEAAAkIYAAgAA0hBAAABAGgIIAABIQwABAABpCCAAACANAQQAAKQhgAAAgDQEEAAAkIYAAgAA0hBAAABAGgIIAABIQwABAABpTB7vAQAA3o9+U3xryGs/WHbnMK78+2Gshfc/d4AAAIA0BBAAAJCGAAIAANIQQAAAQBoCCAAASEMAAQAAaQggAAAgDQEEAACkIYAAAIA0BBAAAJCGAAIAANIQQAAAQBoCCAAASEMAAQAAaUwe7wEAAN6PPvjqb4ex+r4RmwMYyB0gAAAgDQEEAACkIYAAAIA0BBAAAJCGAAIAANIQQAAAQBoCCAAASEMAAQAAaQggAAAgDQEEAACkIYAAAIA0BBAAAJCGAAIAANIQQAAAQBqTx3sAAID3pQ+tG+8JgEG4AwQAAKQhgAAAgDQEEAAAkIYAAgAA0hhSAG3YsCHmzJkTVVVVUVdXF7t27TqhdZs3b46ysrJYvHjxUC4LAAAwLCUH0JYtW6KpqSmam5tjz549MXfu3GhsbIzXXnvtXde98sor8dWvfjUuvfTSIQ8LAAAwHCUH0P333x/XXnttrFy5Mj7+8Y/Hxo0b47TTTotHH330uGt6e3vjS1/6Utx1111x9tlnD2tgAACAoSopgHp6emL37t3R0NDw5yeYNCkaGhqira3tuOu+/vWvx/Tp0+Pqq68+oet0d3dHV1fXgAcAAMBwlRRAhw8fjt7e3qipqRlwvKamJtrb2wdd87Of/SweeeSR2LRp0wlfp6WlJaqrq/sftbW1pYwJAAAwqFH9FrgjR47EsmXLYtOmTTFt2rQTXrdmzZro7Ozsfxw6dGgUpwQAALKYXMrJ06ZNi/Ly8ujo6BhwvKOjI2bMmHHM+b/4xS/ilVdeiUWLFvUf6+vr++OFJ0+O/fv3xznnnHPMusrKyqisrCxlNAAAgPdU0h2gioqKmD9/frS2tvYf6+vri9bW1qivrz/m/PPOOy+ef/752Lt3b//jc5/7XFx++eWxd+9eb20DAADGVEl3gCIimpqaYsWKFbFgwYJYuHBhrF+/Po4ePRorV66MiIjly5fH7Nmzo6WlJaqqquL8888fsP6MM86IiDjmOAAAwGgrOYCWLFkSr7/+eqxduzba29tj3rx5sX379v4vRjh48GBMmjSqHy0CAAAYkrKiKIrxHuK9dHV1RXV1dUSsjgifDQIAgBy6I2JddHZ2xpQpU0bkGd2qAQAA0hBAAABAGgIIAABIQwABAABpCCAAACANAQQAAKQhgAAAgDQEEAAAkIYAAgAA0hBAAABAGgIIAABIQwABAABpCCAAACANAQQAAKQhgAAAgDQEEAAAkIYAAgAA0hBAAABAGgIIAABIQwABAABpCCAAACANAQQAAKQhgAAAgDQEEAAAkIYAAgAA0hBAAABAGgIIAABIQwABAABpCCAAACANAQQAAKQhgAAAgDQEEAAAkIYAAgAA0hBAAABAGgIIAABIQwABAABpCCAAACANAQQAAKQhgAAAgDQEEAAAkIYAAgAA0hBAAABAGgIIAABIQwABAABpCCAAACANAQQAAKQhgAAAgDQEEAAAkIYAAgAA0hBAAABAGgIIAABIQwABAABpCCAAACANAQQAAKQhgAAAgDQEEAAAkIYAAgAA0hBAAABAGgIIAABIQwABAABpCCAAACANAQQAAKQhgAAAgDQEEAAAkIYAAgAA0hBAAABAGgIIAABIQwABAABpCCAAACANAQQAAKQhgAAAgDQEEAAAkIYAAgAA0hBAAABAGgIIAABIQwABAABpCCAAACANAQQAAKQhgAAAgDQEEAAAkIYAAgAA0hBAAABAGgIIAABIQwABAABpCCAAACANAQQAAKQhgAAAgDQEEAAAkIYAAgAA0hBAAABAGgIIAABIQwABAABpCCAAACANAQQAAKQhgAAAgDQEEAAAkIYAAgAA0hBAAABAGgIIAABIQwABAABpCCAAACANAQQAAKQhgAAAgDQEEAAAkIYAAgAA0hBAAABAGgIIAABIQwABAABpCCAAACANAQQAAKQhgAAAgDQEEAAAkIYAAgAA0hBAAABAGgIIAABIQwABAABpCCAAACANAQQAAKQhgAAAgDQEEAAAkIYAAgAA0hBAAABAGgIIAABIQwABAABpCCAAACANAQQA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hhM6/5e//GVceeWVcfnll8fevXvjpptuimuuuSaefvrp0i5cnAQWLlxYrFq1qv/Xvb29xaxZs4qWlpZBz//CF75QXHnllQOO1dXVFf/4j/84qnMysZW6z/7SO++8U5x++unFd7/73dEakfeBoeyzd955p7j44ouL73znO8WKFSuKz3/+82MwKRNZqfvsoYceKs4+++yip6dnrEbkfaDUfbZq1ari7/7u7wYca2pqKi655JJRnZP3h4gonnzyyXc952tf+1rxiU98YsCxJUuWFI2NjSVda9zvAPX09MTu3bujoaGh/9ikSZOioaEh2traBl3T1tY24PyIiMbGxuOeD0PZZ3/prbfeirfffjvOPPPM0RqTCW6o++zrX/96TJ8+Pa6++uqxGJMJbij77Ic//GHU19fHqlWroqamJs4///y45557ore3d6zGZoIZyj67+OKLY/fu3f1vkztw4EBs27YtPvvZz47JzLz/jVQDTB7JoYbi8OHD0dvbGzU1NQOO19TUxIsvvjjomvb29kHPb29vH7U5mdiGss/+0i233BKzZs065g8e/MlQ9tnPfvazeOSRR2Lv3r1jMCHvB0PZZwcOHIj/+I//iC996Uuxbdu2ePnll+PLX/5yvP3229Hc3DwWYzPBDGWfXXXVVXH48OH49Kc/HUVRxDvvvBPXX3+9t8AxYo7XAF1dXfH73/8+Tj311BN6nnG/AwQTwbp162Lz5s3x5JNPRlVV1XiPw/vEkSNHYtmyZbFp06aYNm3aeI/D+1hfX19Mnz49Hn744Zg/f34sWbIkbrvttti4ceN4j8b7yI4dO+Kee+6JBx98MPbs2RM/+MEPYuvWrXH33XeP92gwwLjfAZo2bVqUl5dHR0fHgOMdHR0xY8aMQdfMmDGjpPNhKPvsT+69995Yt25d/OQnP4kLL7xwNMdkgit1n/3iF7+IV155JRYtWtR/rK+vLyIiJk+eHPv3749zzjlndIdmwhnK32czZ86MU045JcrLy/uPfexjH4v29vbo6emJioqKUZ2ZiWco++yOO+6IZcuWxTXXXBMRERdccEEcPXo0rrvuurjtttti0iT/353hOV4DTJky5YTv/kScBHeAKioqYv78+dHa2tp/rK+vL1pbW6O+vn7QNfX19QPOj4h45plnjns+DGWfRUR8+9vfjrvvvju2b98eCxYsGItRmcBK3WfnnXdePP/887F3797+x+c+97n+b7epra0dy/GZIIby99kll1wSL7/8cn9gR0S89NJLMXPmTPHDoIayz956661jIudP0f3Hz7jD8IxYA5T2/QyjY/PmzUVlZWXx2GOPFf/93/9dXHfddcUZZ5xRtLe3F0VRFMuWLStWr17df/5//ud/FpMnTy7uvffeYt++fUVzc3NxyimnFM8///x4vQQmgFL32bp164qKioriiSeeKH7961/3P44cOTJeL4EJoNR99pd8CxwnotR9dvDgweL0008v/umf/qnYv39/8aMf/aiYPn168Y1vfGO8XgITQKn7rLm5uTj99NOLf//3fy8OHDhQ/PjHPy7OOeec4gtf+MJ4vQROckeOHCmee+654rnnnisiorj//vuL5557rvjVr35VFEVRrF69uli2bFn/+QcOHChOO+204p//+Z+Lffv2FRs2bCjKy8uL7du3l3TdkyKAiqIo/vVf/7U466yzioqKimLhwoXFf/3Xf/X/3mWXXVasWLFiwPnf+973inPPPbeoqKgoPvGJTxRbt24d44mZiErZZx/+8IeLiDjm0dzcPPaDM6GU+vfZ/08AcaJK3Wc7d+4s6urqisrKyuLss88uvvnNbxbvvPPOGE/NRFPKPnv77beLO++8szjnnHOKqqqqora2tvjyl79c/Pa3vx37wZkQnn322UH/rfWnfbVixYrisssuO2bNvHnzioqKiuLss88u/u3f/q3k65YVhXuSAABADuP+GSAAAICxIoAAAIA0BBAAAJCGAAIAANIQQAAAQBoCCAAASEMAAQAAaQggAAAgDQEEAACkIYAAAIA0BBAAAJCGAAIAANL4vz6WxMlUENLGAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, ax = plt.subplots(figsize=(10, 10))\n", + "ax.imshow(u.data[1], vmin=0, vmax=1, cmap=\"jet\", extent=[0,1,0,1])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## PrecomputedSparseFunction\n", + "\n", + "In some cases, simple linear interpolation may not be sufficient for two main reasons:\n", + "- The polynomial approximation isn't accurate enough\n", + "- The interpolation coefficients could be precomputed as they are not time-dependent\n", + "\n", + "`PrecomputedSparseFunction` offer the interface to answer these two points by allowing the user to provide arbitrary precomputed interpolation weights over an arbitrary large support. \n", + "\n", + "To illustrate this capability, we show in the following how to use `PrecomputedSparseFunction` to compute a simple local average over a `4x4` window centered on a sparse point ( average over `[x-1, x, x+1, x+2]` in 1D)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " Tensor symbol representing a sparse array in symbolic equations; unlike\n", + " SparseFunction, PrecomputedSparseFunction uses externally-defined data\n", + " for interpolation.\n", + "\n", + " Parameters\n", + " ----------\n", + " name : str\n", + " Name of the symbol.\n", + " npoint : int\n", + " Number of sparse points.\n", + " grid : Grid\n", + " The computational domain from which the sparse points are sampled.\n", + " r : int\n", + " Number of gridpoints in each Dimension to interpolate a single sparse\n", + " point to. E.g. `r=2` for linear interpolation.\n", + " coordinates : np.ndarray, optional\n", + " The coordinates of each sparse point.\n", + " gridpoints : np.ndarray, optional\n", + " An array carrying the *reference* grid point corresponding to each\n", + " sparse point. Of all the gridpoints that one sparse point would be\n", + " interpolated to, this is the grid point closest to the origin, i.e. the\n", + " one with the lowest value of each coordinate Dimension. Must be a\n", + " two-dimensional array of shape `(npoint, grid.ndim)`.\n", + " interpolation_coeffs : np.ndarray, optional\n", + " An array containing the coefficient for each of the r^2 (2D) or r^3\n", + " (3D) gridpoints that each sparse point will be interpolated to. The\n", + " coefficient is split across the n Dimensions such that the contribution\n", + " of the point (i, j, k) will be multiplied by\n", + " `interp_coeffs[..., i]*interp_coeffs[...,j]*interp_coeffs[...,k]`.\n", + " So for `r=6`, we will store 18 coefficients per sparse point (instead of\n", + " potentially 216). Must be a three-dimensional array of shape\n", + " `(npoint, grid.ndim, r)`.\n", + " space_order : int, optional\n", + " Discretisation order for space derivatives. Defaults to 0.\n", + " shape : tuple of ints, optional\n", + " Shape of the object. Defaults to `(npoint,)`.\n", + " dimensions : tuple of Dimension, optional\n", + " Dimensions associated with the object. Only necessary if the SparseFunction\n", + " defines a multi-dimensional tensor.\n", + " dtype : data-type, optional\n", + " Any object that can be interpreted as a numpy data type. Defaults\n", + " to `np.float32`.\n", + " initializer : callable or any object exposing the buffer interface, optional\n", + " Data initializer. If a callable is provided, data is allocated lazily.\n", + " allocator : MemoryAllocator, optional\n", + " Controller for memory allocation. To be used, for example, when one wants\n", + " to take advantage of the memory hierarchy in a NUMA architecture. Refer to\n", + " `default_allocator.__doc__` for more information.\n", + "\n", + " Notes\n", + " -----\n", + " The parameters must always be given as keyword arguments, since SymPy\n", + " uses `*args` to (re-)create the Dimension arguments of the symbolic object.\n", + " \n" + ] + } + ], + "source": [ + "print(PrecomputedSparseFunction.__doc__)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "coeffs = np.ones((5, 2, 5))\n", + "s = PrecomputedSparseTimeFunction(name=\"s\", grid=grid, npoint=npoint, nt=nt, \n", + " interpolation_coeffs=coeffs,\n", + " coordinates=coords, r=2)\n", + "\n", + "\n", + "pos = tuple(product((-grid.spacing[1], 0, grid.spacing[1],2*grid.spacing[1]),\n", + " (-grid.spacing[1], 0, grid.spacing[1],2*grid.spacing[1])))\n", + "interp_points = np.concatenate([base+p for p in pos])" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0UAAANECAYAAAB/24QQAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAACoE0lEQVR4nOzdeXhTZf7+8TulaSnQHhAsLVAKRVYHBQGx1AWGTUXUcceFRcQtKsKMo8yoLI46LqNUjSIKijs6zm++LiAi4KgVRVBUREEEqmBBWZNChS7n90dITOiaND1tOO/XdfXqcJrPcz/nyUPlM8k5cZimaQoAAAAAbCquvicAAAAAAPWJpggAAACArdEUAQAAALA1miIAAAAAtkZTBAAAAMDWaIoAAAAA2BpNEQAAAABboykCAAAAYGs0RQAAAABsjaYIACrw2WefacCAAWratKkcDodWr14tSXrnnXfUq1cvNW7cWA6HQ3v27Al7bIfDoRtuuCG6E64j06ZNk8PhqNFjHQ6Hpk2bVrcTQo28//77cjgcev/996t97ObNm+VwOPTss8/W+bwAoKGiKQJgC998840uv/xytW3bVomJiWrTpo0uu+wyffPNN+UeW1xcrAsvvFC7du3Sww8/rOeff16ZmZnauXOnLrroIiUlJcntduv5559X06ZNK8z7+OOPNW3atIiaJqAuvPTSS5o5c2Z9TwMAGqT4+p4AANS1//znPxo1apSOOuoojR8/Xh07dtTmzZs1Z84c/fvf/9Yrr7yiP/3pT4HH//DDD8rPz9dTTz2lq666KnD8nXfekdfr1V133aUhQ4ZUmfnxxx9r+vTpGjt2rJo3b15Xp1bnbr/9dt122231PQ2E6dRTT1VRUZESEhICx1566SWtWbNGN998c8hjMzMzVVRUJKfTafEsAaDhoCkCcET74YcfdMUVVygrK0sffPCBjj766MDPJk6cqFNOOUVXXHGFvvrqK2VlZUmSfvnlF0kq18xUdvxItG/fPjVt2lTx8fGKjz/y/lNhmqZ+++03JSUl1fdU6kRcXJwaN25co8c6HI4aPxYAjlS8fQ7AEe2BBx7Q/v37NXv27JCGSJJatWqlJ598Uvv27dP9998vSRo7dqxOO+00SdKFF14oh8OhgQMHauDAgRozZowkqV+/fnI4HBo7dmyFmdOmTdMtt9wiSerYsaMcDoccDoc2b94c8rj//ve/+sMf/qDExEQde+yxeuedd8qNtXXrVl155ZVq3bp14HFz586t0bkXFRXppptuUqtWrZScnKyzzz5bW7duLXftj/+6obVr1+rSSy9VixYtdPLJJ4f8LNiBAwc0adIkHX300YFxt2zZUqM5SdKjjz6qY489Vk2aNFGLFi3Ut29fvfTSS+Xm89133+miiy5SSkqKWrZsqYkTJ+q3334LGeuZZ57RH//4R6WmpioxMVE9evTQE088US6zQ4cOOuuss7Ro0SL17dtXSUlJevLJJyVJixcv1sknn6zmzZurWbNm6tq1q/72t7+VO+epU6fqmGOOUWJiojIyMvTXv/5VBw4cqPZ8Bw4cqD/84Q9atWqVBgwYoKSkJHXs2FGzZs0q99hffvlF48ePV+vWrdW4cWMdf/zxmjdvXrnHvfLKK+rTp4+Sk5OVkpKinj17Kjc3N/Dzw68pGjhwoN5++23l5+cH9mOHDh0kVX5N0dKlS3XKKaeoadOmat68uc455xx9++23IY/xP1cbNmwIvCpqGIbGjRun/fv3hzy2JusMAPXlyPu//wAgyJtvvqkOHTrolFNOqfDnp556qjp06KC3335bknTNNdeobdu2uueee3TTTTepX79+at26tSSpa9eumj17tmbMmKGOHTuqU6dOFY553nnnaf369Xr55Zf18MMPq1WrVpIU0pR99NFH+s9//qPrr79eycnJeuSRR3T++efrxx9/VMuWLSVJ27dv10knnRS4McPRRx+thQsXavz48fJ4POXeBnW4sWPH6tVXX9UVV1yhk046Sf/73/80YsSISh9/4YUXqnPnzrrnnntkmmalj7vqqqv0wgsv6NJLL9WAAQO0dOnSKscN9tRTT+mmm27SBRdcEGhyvvrqK3366ae69NJLQx570UUXqUOHDrr33nv1ySef6JFHHtHu3bv13HPPBR7zxBNP6Nhjj9XZZ5+t+Ph4vfnmm7r++utVVlYml8sVMt66des0atQoXXPNNZowYYK6du2qb775RmeddZaOO+44zZgxQ4mJidqwYYPy8vICdWVlZTr77LP10Ucf6eqrr1b37t319ddf6+GHH9b69ev13//+t9rz3r17t84880xddNFFGjVqlF599VVdd911SkhI0JVXXinJ18QOHDhQGzZs0A033KCOHTvqtdde09ixY7Vnzx5N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Wph9+vQxp0+fHjL3ipx22mnmsccea65cudLMzs42GzdubGZmZpqPPfZYucdu377dHDdunNmqVSszISHB7NmzZ8itsk3TNP/973+bw4YNM1NTU82EhASzffv25jXXXGMWFBQEHlPRLbkLCwvNSy+91GzevLkpKXB77opuyW2apvnee++ZOTk5ZlJSkpmSkmKOHDnSXLt2bchjKts7/r8r/uegpusMAPXFYZpVfEIfAOCIsnr1avXu3VsvvPCCLrvssvqeToWmTZum6dOn69dffw188G0sGzhwoHbs2FHh2yABAA0D1xQBwBGqqKio3LGZM2cqLi5Op556aj3MCACAholrigDgCHX//fdr1apVGjRokOLj4wO3b7766qstv400AAANGU0RAByhBgwYoMWLF+uuu+5SYWGh2rdvr2nTpunvf/97fU8NAIAGJexrij744AM98MADWrVqlQoKCvT//t//07nnnltlzfvvv6/Jkyfrm2++UUZGhm6//XaNHTu2FtMGAAAAgOgI+5qiffv26fjjjy/3+RGV2bRpk0aMGKFBgwZp9erVuvnmm3XVVVdp0aJFYU8WAAAAAKKtVnefczgc1b5SdOutt+rtt98OuevOJZdcoj179uidd96JNBoAAAAAoqLOrylavny5hgwZEnJs+PDhuvnmmyutOXDgQMgnXJeVlWnXrl1q2bJlxB84CAAAACD2maYpr9erNm3aKC4uOjfTrvOmaNu2bWrdunXIsdatW8vj8aioqEhJSUnlau69915Nnz69rqcGAAAAIEb99NNPateuXVTGapB3n5syZYomT54c+PPevXvVvn17rV+/XkcddVRYY/k7yeTk5IheZapNPdmxl11cXKxly5Zp0KBBcjqdlmbbdc3tms1eI9uqbPYa2VZls9fItip7165d6tKli5KTk8OurUydN0VpaWnavn17yLHt27crJSWlwleJJCkxMVGJiYnljh911FFq2bJlWPmmaSo+Pl6GYUT8hEdaT3bsZRcXF6tJkyZq2bJlRL/QY/W8yWavkX3kZrPXyLYqm71GtlXZftG8rCY6b8KrQnZ2tpYsWRJybPHixcrOzq7raAAAAACoVthNUWFhoVavXq3Vq1dL8t1ye/Xq1frxxx8l+d76Nnr06MDjr732Wm3cuFF//etf9d133+nxxx/Xq6++qkmTJkXnDAAAAACg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UM/uvvtunXPOOSEN0Y8//qgRI0aoadOm6ty5s2655ZZq30ffoUOHkLekOBwO3X///SGPMU1TDz74oLp06aLExES1bdtWd999d+DnY8eODdTGxcWpRYsWiouL07HHHhvWOf32229yuVzKyspScnKyzj//fG3fvr3KmuB5B2c/8MAD5R574MAB9erVSw6HQ6tXrw752VdffaVTTz1VaWlpat++fbk1+Mtf/qJ58+Zp48aNYZ0TgCMXTREAAPVo//79mjNnjsaPHx84VlpaqhEjRujgwYPKy8vT448/rnnz5unOO++sdrwZM2aooKAg8OVyuUJ+PnHiRD399NN68MEH9d133+mNN97QiSf+/ra63NzcQO3PP/+sNWvW6KijjtKFF14Y1nlNmjRJb731lp599lm9//77+vnnn3XeeedVWRM8759//lmPPfaYHA6Hzj///HKP/etf/6o2bdqUO+7xeDRs2DBlZmZq2bJluv/++zVt2jTNnj078JhWrVpp+PDheuKJJ8I6JwBHLt4+BwBAPVqwYIESExN10kknBY69++67Wrt2rd577z2lpqaqY8eOmjFjhm677TZNmzZNCQkJlY6XnJystLS0wJ/9dwSTpG+//VZPPPGE1qxZo65du0qSOnbsGFJvGEbgTq+maWrp0qXavXu3xo0bV+Nz2rt3r+bMmaMXX3xRp556qgzD0DPPPKPu3bvrk08+CTnXYMHzNk1TCxYs0KBBg5SVlRXyuIULF+rdd9/V66+/roULF4b87MUXX9TBgwc1Z84cFRUV6aSTTtKXX36phx56SFdffXXgcSNHjtTf//73Cl+FAmA/vFIEAEA9+vDDD9WnT5+QY8uXL1fPnj3VunXrwLHhw4fL4/Hom2++qXK8f/7zn2rZsqV69+6tBx54IOQtd2+++aaysrL01ltvqWPHjurQoYOuuuoq7dq1q9Lxnn/+eQ0ZMkSZmZk1PqdVq1apuLhYQ4YMCRzr1q2b2rdvr+XLl9dojO3bt+vdd9/VlVdeWe74hAkT9Pzzz6tJkybl6pYvX65TTz01pHEcPny41q1bp927dweOnXjiidqyZYs2b95c4/MCcOTilSIAAOpRfn5+ubeBbdu2LaQhkhT487Zt2yod66abbtIJJ5ygo446Sh9//LGmTJmirVu3atCgQZKkjRs3Kj8/X6+99pqee+45lZaWatKk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yTRN3XnnnUpPT1dSUpKGDBmi77//vtq6rVu36vLLL1fLli2VlJSknj17auXKlYGfb9++Xddff73atm2rJk2a6PTTT690XNM0dcYZZ8jhcOi///1v4Hi3bt100kkn6aGHHgr7vADAKjRFAADb2L9/v+bOnavx48cHjpWWlmrEiBE6ePCgPv74Y82bN0/PPvus7rzzzmrHmzFjhgoKCgJfN954Y8i4SUlJuummmzRkyJAK65944glNmTJF06ZN0zfffKPp06fL5XLpzTffDOu87r//fj3yyCOaNWuWPv30UzVt2lTDhw/Xb7/9VmnN7t27lZOTI6fTqYULF2rt2rX617/+pRYtWkjyNTl/+tOftHnzZv33v//VF198oczMTA0ZMqTCV31mzpxZ6Qcqjh07Vk888USdfAo9AEQDn1MEALDOlpWRfxBpbWoP1S9+4SUlOhvppJNOChx+9913tXbtWr333ntq3bq1evXqpbvuuku33nqrpk2bpoSEhEqzk5OTlZaWVmFc06ZN9cQTT0iS8vLy9Ouvv5Z7zPPPP69rrrlGF198sSQpKytLn332me677z6NHDmyRqdlmqZmzpyp22+/Xeecc44k6bnnnlPr1q313//+V+eff36Fdffdd58yMjL0zDPPBI517Ngx8L+///57ffLJJ/r444/Vr18/ORwOPfHEE0pLS9PLL7+sq666KvDY1atX61//+pdWrlyp9PT0cllDhw7Vrl279L///U+DBw+u0XkBgJV4pQgAYI3FU6U5Q6Vl9/i+L55qTW1Q/fK3nlefFt6Q+uXLl6tnz55q3bp14Njw4cPl8Xj0zTffVJn9z3/+Uy1btlTv3r31wAMPhP1KyIEDB9S4ceOQY0lJSVqxYoWKi4trNMamTZu0bdu2kFejDMNQ//79tXz58krr3njjDfXt21cXXnihUlNT1bt3bz311FMhc5MUMr+4uDglJibqo48+Chzbv3+/Lr30Urnd7kobxISEBPXq1Usffvhhjc4JAKwWU68UmaYp0zQjqgm3Lhr1ZMdmdvA4Vmfbdc3tmh08jtXZlp/3lpVSXq5MOQJfysuVup0ltetbd7WH1f+0p1jpzeJkBtUXFBSodevWIeeUmpoqSSr4+gP12lhx9o033qgTTjhBRx11lD7++GP97W9/088//1zhtTPBz3ewYcOG6emnn9Y555yjE044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N7/g3CuvvDLwvw3D0DXXXKMJEyZox44dcjqdmjNnjg4cOKCHHnpICQkJateuna6++mr961//0sUXXxyoHTx4sO666y7NmDHDur12SCz/HSM7Rn6vRSnbrmtu12z2GtlWZfv/PRJNDbopcrlccrlc8ng8MgxDycnJMgwjrDH8naRhGBE/4ZHWkx172cXFxZKklJSUwD/oq5WeJRXl+17hkWQU5fsai/QsqSb7tTb16Vla9f029UmXmh3YFqj9qmCHevbsqc6df2+qzj33XP35z3/Wli1b1Lt37xplHzhwQK1atQr8vUtOTpYkXXbZZfrtt9/UpUsX/eUvf9Fpp50WWPP33ntPOTk5+tvf/qY33nhDRx99tEaNGqVbb71VjRo1KncKFT1nq1atUnFxsc4+++xAdr9+/dS+fXt9/fXXGjJkSIW1CQkJysvLU5cuXdSiRQsNGjRI//jHP9SyZcsKl2/nzp166623NGDAALVq1UqS9OWXX+q0007T0UcfHXjc2WefrdzcXJWVlQUavNNOO03XX3+9du/erY4dO1b9PFUgor12SCz/HSM7Rn6vRSnbrmtu12z2GtlWZVd4OUAtNeim6HD+awQirYuktrb1ZMdWtr8mrPqMflLORCkv9/c3wOXc7Dte1/UZ/fRjo45q02xjSO32135W69atQ84hLc33KtT27dt/P15F9oYNG/TYY4/pwQcfDDw+OTlZ//rXv5STk6O4uDi9/vrrOu+88/TCCy9o1KhRcjgc2rhxo5YuXarLLrtMCxYs0IYNG3T99derpKREU6dWfK3U4c/Z9u3blZCQEGhA/Fq3bh06/8NqTz/9dJ133nnq2LGjfvjhB/3tb3/TmWeeqeXLl4c0ZLfeeqsee+wx7d+/X/369dOCBQsCY27btk0dO3asdO2OOuooSVLbtm0l+a7dysrKqv65quCcg+cfSX0s/h0jO0Z+r0Upu7b1ZMdWNnuNbCtroy2mmiKgwRo63XcNUMFG36ssNW2IolBflJypxp17SoMu+L32tatrlb1161adfvrpuvDCCzVhwoTAQ1u1aqXJkycH/tyvXz/9/PPPevTRRzVq1ChJUllZmVJTUzV79mw1atRIffr00datW/XAAw9U2hRFyyWXXBL43z179tRxxx2nTp066f3339fgwYMDP7vllls0fvx4bd68WXfeeafGjBmjt956K6xfsv636O3fvz96JwAAAOoFTREQLe36+q4BCvMtnrWtb9WqlfYUm1KX4YHatLQ0rVixIuRx/ju3+V/1qCz7559/1qBBgzRgwADNnj272vwTTzxR7777buDP6enpcjqdIa/MdO/eXdu2bdPBgwd/v56pCmlpaTp48KD27Nmj5s2bh5xDhfOvRFZWllq1aqUNGzaENEWtWrVSq1at1LlzZ7Vt21Z/+MMf9Mknnyg7O1tpaWnl7nJX0drt2rVLkkLeZgcAAGITt+QGYtQXP+7Wfz7fotQOXbV27dqQn2VnZ+vrr7/WL7/8Eji2ePFipaSkqEePHpWOuXXrVg0cOFB9+vTRM888o7i46n9FrF69Wq1btw78OScnRxs2bFBZWVng2Pr165Wenl6jhkiS+vTpI6fTqSVLlgSOrVu3Tj/++KOys7NrNIYkbdmyRTt37lR6enqlj/HP88CBA5J8a/fBBx8E3hsv+daua9euIW/nW7NmjZxOZ+AufAAAIHbRFAEx6J8Lv9WfHv9Yk1/9UvO3tdTXa77Rnj17Aj8fNmyYevTooSuuuEJffvmlFi1apNtvv10ul0uJiYmSpBUrVqhbt27aunWrJAVeIWrfvr0efPBB/frrr9q2bZu2bdsWGHfevHl6+eWX9d133+m7777TPffco2eeeSZwq2pJuu6667Rr1y5NnDhR69ev19tvv6177rlHLperxudnGIbGjx+vyZMna9myZVq1apXGjRun7OxsnXTSSYHHde/eXW+99ZYkqbCwULfccos++eQTbd68WUuWLNE555yjY445RsOHD5ckffrpp3rssce0evVq5efna+nSpbrqqqvUqVOnQLN16aWXKiEhQePHj9c333yj+fPnKzc3N+Rtg5L04YcfKjs7u9yd7gAAQOzh7XNAjPnix92a9b+NgT8nHN1B8alZmjXvZd17522SpEaNGumtt97Sddddp+zsbDVt2lRjxozRjBkzAnX79+/XunXrAq+IvP/++9qwYYM2bNigdu3ahWQGfx7AXXfdpfz8fMXHx6tbt2565ZVXNHTo0MDPMzIytGjRIk2aNEnHHXec2rZtq4kTJ+rWW28NPObZZ5/VuHHjqvycgYcfflhxcXE6//zzdeDAAQ0fPlyPP/54yGPWrVsnj8cTOOevvvpK8+bN0549e9SmTRsNGzZMd911V6ARbNKkif7zn/9o6tSp2rdvn9LT0zVo0CDNmDEj8BjDMPTuu+/K5XKpT58+atWqle68886Qxk+S5s+fr1tuuaXS+QMAgNhBUwTEmE079pU71jznEr347BzdfftfA9fyZGZmasGCBZWOM3DgwJAP2rv00kt13XXXVXmzgTFjxmjMmDEhx0zTLPf5Q9nZ2frkk08qP4dNm3TaaadV+nNJaty4ceCzyipTVlYWyE5KStKiRYuqHLNnz55aunRpubkffqv/4447Th9++GGl4yxcuFBxcXE655xzqswDAACxgaYIiDEdWzUtd6xJp3469xjfNUHt27evh1mFZ+HChXrsscfqexoR27dvn+bOnRv2hxMCAICGif+iAzGmd/sWuva0rJC30F17apauGXBy2B9uXF8OvzNerLngggsqfIUMAADEJpoiIAbddkZ3DT82TZt27FPHVk3VK6M5/0AHAACIEE0REKN6t2+h3u19t4iu6oYFAAAAqBq35AaiZctKaf0i33er6+szGwAAIMbxShEQDYunSnm5UlKmVJQv5UyUhk63pr4+swEAAI4AMdUUmaYZ9tuE/DWRvr2oNvVkx2Z28Dg1smWllJcrU47Al/JypW5nSe361m19fWYfEuvPd0zttShm23XN7ZodPI7V2XZdc7tmB49jdbZd19yu2dHWoJsi/2eUlJaWSpK8Xm/Yt8A1TVOFhYWSVOXnr9RFPdmxl11SUiJJ8ng8Nd9rBRulpEyZcqgwMc2XLdN3PLlz3dbXZ/Yhsfx8x9xei1K2XdfcrtnsNbKtymavkW1VttfrDbumOg26KXK5XHK5XPJ4PDIMQ8nJyWHfctjfSRqGEfETHmk92bGXXVxcLElKSUmR0+msWVF6llSU73uVRZJRlO9rLNKzpJrs19rU12f2IbH8fMfcXotStl3X3K7Z7DWyrcpmr5FtVba/AY+mBt0UHc7hcES0cP66SGprW092bGX7a8Kqz+jnuw4nL/f3N6Hl3Ow7Xtf19ZkdJFaf7/rMjmivRSm7tvVkx1Y2e41sK2uDx7Ayu7b1ZMdWdqTzrUpMNUVAgzV0uu86nIKNvldZwmwqalVfn9kAAABHAJoiIFra9fVdhxPmWzyjUl+f2QAAADGOzykCAAAAYGs0RQAAAABsjaYIAAAAgK3RFAEAAACwNZoiAAAAALZGUwQAAADA1miKAAAAANgaTREQLVtWSusX+b5bXV+f2QAAADGOD28FomHxVCkvV0rKlIrypZyJ0tDp1tTXZzYAAMARIKaaItM0ZZpmRDXh1kWjnuzYzA4ep0a2rJTycmXKEfhSXq7U7SypXd+6ra/P7ENi/fmOqb0WxWy7rrlds4PHsTrbrmtu1+zgcazOtuua2zU72hp0U+R2u+V2u1VaWipJ8nq9io8Pb8qmaaqwsFCS5HA4wp5DberJjr3skpISSZLH46n5XivYKCVlypRDhYlpvmyZvuPJneu2vj6zD4nl5zvm9lqUsu265nbNZq+RbVU2e41sq7K9Xm/YNdVp0E2Ry+WSy+WSx+ORYRhKTk6WYRhhjeHvJA3DiPgJj7Se7NjLLi4uliSlpKTI6XTWrCg9SyrK973KIskoyvc1FulZUk32a23q6zP7kFh+vmNur0Up265rbtds9hrZVmWz18i2KtvfgEdTg26KDudwOCJaOH9dJLW1rSc7trL9NWHVZ/TzXYeTl/v7m9BybvYdr+v6+swOEqvPd31mR7TXopRd23qyYyubvUa2lbXBY1iZXdt6smMrO9L5ViWmmiKgwRo63XcdTsFG36ssYTYVtaqvz2wAAIAjAE0REC3t+vquwwnzLZ5Rqa/PbAAAgBjH5xQBAAAAsDWaIgAAAAC2RlMEAAAAwNZoigAAAADYGk0RAAAAAFujKQIAAABgazRFAAAAAGyNpggAAACArdEUAUAktqyU1i/yfY/Ez1+Efrcyu7b1AAAcYeLrewIAEHMWT5XycqWkTKkoX8qZKA2dHl798lnS8bOleSOl7GtrXh+N7NrUAwBwBIqppsg0TZmmGVFNuHXRqCc7NrODx7E6265rHlPZW1ZKebky5Qh8KS9X6naW1K5vzevjGvvmIIfMmtZHKzvSetnw+T5CsoPHsTrbrmtu1+zgcazOtuua2zU72hp0U+R2u+V2u1VaWipJ8nq9io8Pb8qmaaqwsFCS5HA4wp5DberJjr3skpISSZLH42GvkV2xgo1SUqZMOVSYmOarlek7nty5xvUlcQmSJE9ShuLLDtasPkrZEdfLhs/3EZDN7zWyrcpmr5FtVbbX6w27pjoNuilyuVxyuVzyeDwyDEPJyckyDCOsMfydpGEYET/hkdaTHXvZxcXFkqSUlBQ5nU5Ls+265jGXnZ4lFeX7XmWRZBTl+xqL9CypJr+fDtUXH3qlKKXoJznLfqtZfZSyI66XDZ/vIyCb32tkW5XNXiPbqmx/Ax5NDbopOpzD4Yho4fx1kdTWtp7s2Mr219jtvMkOoz6jn+86nLzc39+ElnOz73gY9Y7ls3z54dRHKTvi+kNs9XwfAdn8XiPbytrgMazMrm092bGVHel8qxJTTREANAhDp/uuwynY6HuVJcymQkOnS11GSKsLpDFvSpknWptdm3oAAI5ANEUAEIl2fX3X4YT5lt6ANr19TVGb3tZn17YeAIAjDJ9TBAAAAMDWaIoAAAAA2BpNEQAAAABboykCAAAAYGs0RQAAAABsjaYIAAAAgK3RFAEAAACwNZoiAIjElpXS+kW+75H4+YvQ71Zm17YeAIAjDE0RAIRr8VRpzlBp2T2+74unhl8/b6Tvf88bWa5+586dSk1N1ebNm+smuzb1R6DbbrtNN954Y31PAwBQj2KqKTJNky++6vyLvcZXlV8/fSYzL1emHL9/5eX6jodZL6nC+n/84x86++yzlZmZGTiWn5+vEYNPVpMzZ6j1Ax7dsaBAxWWqUfZvv/2mXr16yeFw6IvXHwqZ+5f/eUinnNhLjRs3VkZGhu67776Q2meeeUYOhyPwFRcXp7S0tLDXbefOnbrssstkGIYyMzM1fvx4eb3eGtWWlZXpjDPOUFxcnN56660KH7Njxw61a9dODodDu3fvDvnZCy+8oOOPP15NmzZVt27ddOWVV2rHjh2Bn//5z3/WvHnz9MMPP9T//qqjL36v8WXVF3uNL6u+oi0+6iNGkdvtltvtVmlpqSTJ6/UqPj68KZumqcLCQkmSw+EIew61qSc79rJLSkokSR6Ph71GdsUKNkpJmTLlUGFimq9Wpu94cuca15fEJUiSPEkZii87GKjfv3+/5syZo9dff1179+6VJJWWluqMM85Q6+R4Lbq+swq8Jbru1S1yxrXQnaenVZt922236eijj5YkFSama29SExUmpsnzW6mGvfCdTjs5WcuWLdPatWt14403KjExUWPHjpUkFRUVKTk5WZ999llgzfbv36+9e/eGteYXX3yxtm/frtdff10ej0d//etfNW7cOD399NPV1j7++OOBv5u//fZbhdljxoxR9+7dtXXrVnk8nsDPP/nkE40ZM0b33HOPhg8frh9++EG33367xo0bp+eff16S5HQ69cc//lEzZ87UXXfdVeEcYnmf83uNbKuy2WtkW5Xt9XrDrqlOg26KXC6XXC6XPB6PDMNQcnKyDMMIawx/J2kYRsRPeKT1ZMdednFxsSQpJSVFTqfT0my7rnnMZadnSUX5gVd6jKJ8X1OUniXV5PfTofriuMaSpJSin+Qs+y1Qv3jxYjVu3FhDhgwJlCxcuFDr1q3T0s/eVus3LpHZwqEtQ1M1feFW3Xvyb0qoInvhwoX63//+p3//+9/6wx/+oGYHCmQU+X71v7TiBxWXlOr5x+5TQtZJOumkk7R+/XrNmjVLEydOlCQlJSUpLi5OXbp0CazZ3r17w1qzb7/9VkuWLNGKFSvUp08f7d27V48++qjOOuss5ebmqk2bNpXWrl69Wo8//rg+++wztWnTRo0bNy6X/cQTT2jfvn2644479N577yklJSXw34qvv/5aHTp00F//+leZpqnMzExdd911uv/++0P+e/KnP/1Jt99+ux555JEK5xHL+5zfa2Rblc1eI9uqbH8DHk0x9fa54Ldw8MVXXX2x1/iq8iujnxw5E4PfPCdHzs2+42HWSypX/9FHH6lPnz4hNZ988ol69uyptBNOD9QO7pIszwFpbZtLKs3+5ZdfdPXVV+v5559X06ZNfXm9Lg3M+9MtJTq1dxcldhoQqDn99NO1bt067dmzJ3CssLBQHTp0UPv27fWnP/1J3333XVhr9sknn6h58+bq1+/3eQ4dOlRxcXFasWJFpXVFRUW67LLL5Ha7lZ6eXuHfzW+//VZ33XWXnnvuOTVq1KjcYwYMGKCffvpJCxculCT9+uuvev3113XmmWeGPK5///7asmWL8vPz63+P1cEXv9f4suqLvcaXVV/RFlNNEQA0CEOnS+MXS4P+5vs+dFr49WPe9P3vMW+G1Ofn55d75WTbtm1q3bp1SPbRI6b4ftbh3AojTNPU2LFjde2116pv376//+Ck6wJz32acoNY9Twup8+ds27ZNktS1a1fNnTtX//d//6cXXnhBZWVlGj58uLZs2VLj0922bZtSU1NDjsXHx+uoo44K5FRk0qRJGjBggM4555wKf37gwAGNGjVKDzzwgNq3b1/hY3JycvTiiy/q4osvVmJiorp27SrDMOR2u0Me51/z/Pz8Gp8XAODIQVMEAJFo11fqMtz3PRJteod+P6SoqEiNGzeuPvuYIVU+5NFHH5XX69WUKVMqru8yXGqcUu00s7OzNXr0aPXq1UunnXaaXn/9dbVq1UpPPvlktbW18cYbb2jp0qWaOXNmpY+ZMmWKunfvrssvv7zSx6xdu1YTJ07UnXfeqZUrV+rf//63Nm/erGuvvTbkcUlJSZKk/fv3R2X+AIDYQlMEAA1Iq1attHv37pBjaWlp2r59e8ixX3/9NfCziixdulTLly9XYmKi4uPjdcwxx0iS+vbtG7iJQkXj+v9c2bhOp1PHHXecfvjhhxqfU1pamn755ZeQYyUlJdq1a1eV8//hhx/UvHlzxcfHBy7aHj16tAYNGhR4zGuvvRb4+eDBgyX51nDqVN+txu+9917l5OTolltu0XHHHafBgwfL7XZr7ty5KigoCOTt2rVLkgI3pAAA2EuDvtECANjFFz/u1qYd+5TaoauWvf2fkJ9lZ2fr7rvv1i+//BJ4G9qyZcuUkpKiHj16VDjeI488on/84x+BP//8888aPny45s+frxNPPFGSdNJJJ+n2229XcXFx4KLoxYsXq2vXrmrRokWF45aWlmrt2rUaMWJEjc8tOztbe/bs0apVq3TCCSdI8jU0ZWVl6t+/f4U1t912m6666qqQYz179tQ999yjCy+8UJL0+uuvq6ioKPDzzz77TFdeeaU+/PBDderUSZLvlZ/D74Llv/Yo+Jaua9askdPp1LHHHlvj8wIAHDloigCgnv1z4bea9b+NkqSDv7bU9jXfaPfu3YHGZNiwYerRo4euuOIK3X///SooKNDdd9+t66+/XomJiZKkFStWaPTo0VqyZInatm1b7hqbZs2aSZI6deqkdu3aae/evbr00ks1Y8YMjR8/XrfeeqvWrFmj3NxcPfzww4G6GTNm6KSTTtIxxxyjPXv26IEHHtBPP/1UrmGpSvfu3XX66adrwoQJeuKJJ7R7927ddNNNuuSSSwLX8mzdulWDBw/Wc889pxNPPFFpaWkVvorUrl07dezYMXAuwXbs2BHIa968uSRp5MiRgdxhw4bp+++/1x133KETTzwx5NqtDz/8UKecckrgbXQAAHvh7XMAUI++2rIn0BBJUsLRHRSfmqUHZz0bONaoUSO99dZbatSokbKzs3XFFVfokksu0YwZMwKP2b9/v9atWxe4JW5NGIahd999V5s2bVKfPn305z//WXfeeaeuvvrqwGN2796tCRMmqHv37jrzzDPl8Xi0aNGikFeopk2bpg4dOlSZ9eKLL6pbt24aMmSILrroIuXk5Gj27NmBnxcXF2vdunVRv6Zn7Nixeuihh/TYY4+pZ8+eGjdunLp27ar//Cf01bhXXnlFEyZMiGo2ACB28EoRANSj/J3lmwAjZ5See+oJ3XXrRMXF+f6/q8zMTC1YsEDS758VFPy2sIEDB1b5Cd8dOnQI/Dz4cccdd5w+/PDDSusefvjhkFeO/NnBNm3apIEDB1ZxltJRRx2ll156qdLPOQqeX2XKysrKZQerbA1uvPFG3XjjjZVmL1y4UHFxcbrggguqzAcAHLloigCgHmW2bFLuWJNO/XRBjwRt3bpVGRkZ9TCrmjNNU++//74++uij+p5KxPbt26dnnnmm3LVHAAD74L8AAFCPjmvXXNeelhXyFrrrTsvSrWfU/EYG9cnhcMT8Z/vwChEAgKYIACKxZaVUsFFKz5Iy+oVf//MXge+3nXGihh+bpk079qljq6bq3b7iO79FLbu29QAAHGFoigAgXIunSnm5UlKmVJQv5UyUhk4Pr375LOn42dK8kVL2teo9dHr1zVC0smtTDwDAESimmiLTNKu9ELeymnDrolFPdmxmB49jdbZd1zymsreslPJyZcoR+FJertTtLKld35rXxzX2zUEOmTWtj1Z2pPWy4fN9hGQHj2N1tl3X3K7ZweNYnW3XNbdrdrQ16KbI7XbL7XartLRUkuT1esO+ENY0TRUWFkpSyN2GrKgnO/ayS0pKJEkej4e9RnbFCjZKSZky5VBhou9zdBwyfceTO9e4viQuQZLkScpQfNnBmtVHKTvietnw+T4Csvm9RrZV2ew1sq3K9nq9YddUp0E3RS6XSy6XSx6PR4ZhKDk5WYZhhDWGv5M8/BasVtSTHXvZ/s94SUlJkdPptDTbrmsec9npWVJRvu9VFklGUb6vsUjPkmry++lQffGhV4pSin6Ss+y3mtVHKTvietnw+T4Csvm9RrZV2ew1sq3K9jfg0dSgm6LDORyOiBbOXxdJbW3ryY6tbH+N3c6b7DDqM/r5rsPJy/39TWg5N9f8hgWH6h3LZ/nyw6mPUnbE9YfY6vk+ArL5vUa2lbXBY1iZXdt6smMrO9L5ViWmmiIAaBCGTvddhxPpHdyGTpe6jJBWF0hj3pQyT7Q2uzb1AAAcgWiKACAS7fr6rsMJ8y29AW16+5qiNr2tz65tPQAAR5i4+p4AAAAAANQnmiIAAAAAtkZTBAAAAMDWaIoAAAAA2BpNEQAAAABboykCAAAAYGs0RQAAAABsjaYIAAAAgK3RFAFAJLaslNYv8n2PxM9fhH63Mru29QAAHGHi63sCABBzFk+V8nKlpEypKF/KmSgNnR5e/fJZ0vGzpXkjpexra14fjeza1AMAcASKqabINE2ZphlRTbh10agnOzazg8exOtuuax5T2VtWSnm5MuUIfCkvV+p2ltSub83r4xr75iCHzJrWRys70nrZ8Pk+QrKDx7E6265rbtfs4HGszrbrmts1O9oadFPkdrvldrtVWloqSfJ6vYqPD2/KpmmqsLBQkuRwOMKeQ23qyY697JKSEkmSx+Nhr5FdsYKNUlKmTDlUmJjmq5XpO57cucb1JXEJkiRPUobiyw7WrD5K2RHXy4bP9xGQze81sq3KZq+RbVW21+sNu6Y6Dbopcrlccrlc8ng8MgxDycnJMgwjrDH8naRhGBE/4ZHWkx172cXFxZKklJQUOZ1OS7PtuuYxl52eJRXl+15lkWQU5fsai/QsqSa/nw7VFx96pSil6Cc5y36rWX2UsiOulw2f7yMgm99rZFuVzV4j26psfwMeTQ26KTqcw+GIaOH8dZHU1rae7NjK9tfY7bzJDqM+o5/vOpy83N/fhJZzs+94GPWO5bN8+eHURyk74vpDbPV8HwHZ/F4j28ra4DGszK5tPdmxlR3pfKsSU00RADQIQ6f7rsMp2Oh7lSXMpkJDp0tdRkirC6Qxb0qZJ1qbXZt6AACOQDRFABCJdn191+GE+ZbegDa9fU1Rm97WZ9e2HgCAIwyfUwQAAADA1miKAAAAANgaTREAAAAAW6MpAgAAAGBrNEUAAAAAbI2mCAAAAICtRdQUud1udejQQY0bN1b//v21YsWKGtW98sorcjgcOvfccyOJBQAAAICoC7spmj9/viZPnqypU6fq888/1/HHH6/hw4frl19+qbJu8+bN+stf/qJTTjkl4skCAAAAQLSF3RQ99NBDmjBhgsaNG6cePXpo1qxZatKkiebOnVtpTWlpqS677DJNnz5dWVlZtZowAAAAAERTfDgPPnjwoFatWqUpU6YEjsXFxWnIkCFavnx5pXUzZsxQamqqxo8frw8//LDanAMHDujAgQOBP3s8HklScXGxiouLw5myTNNUSUmJiouL5XA4wqqtbT3ZsZft31/h7rNoZNt1ze2azV4j26ps9hrZVmWz18i2KjuSPVadsJqiHTt2qLS0VK1btw453rp1a3333XcV1nz00UeaM2eOVq9eXeOce++9V9OnTy93fNmyZWrSpEk4UwYisnjx4vqeAmyCvQarsNdgFfYa6tr+/fujPmZYTVG4vF6vrrjiCj311FNq1apVjeumTJmiyZMnB/7s8XiUkZGhQYMGqWXLlmHNwTRNeTwepaSkRNwFR1pPduxlFxcXa/HixRo6dKicTqel2XZdc7tms9fItiqbvUa2VdnsNbKtyt65c2fYNdUJqylq1aqVGjVqpO3bt4cc3759u9LS0so9/ocfftDmzZs1cuTIwLGysjJfcHy81q1bp06dOpWrS0xMVGJiYrnjTqczor9k8fHxcjqdET/hkdaTHXvZfuw1sus624+9RnZdZ/ux18iu62w/9hrZdZ0d7v6qibButJCQkKA+ffpoyZIlgWNlZWVasmSJsrOzyz2+W7du+vrrr7V69erA19lnn61BgwZp9erVysjIqP0ZAAAAAEAthP32ucmTJ2vMmDHq27evTjzxRM2cOVP79u3TuHHjJEmjR49W27Ztde+996px48b6wx/+EFLfvHlzSSp3HAAAAADqQ9hN0cUXX6xff/1Vd955p7Zt26ZevXrpnXfeCdx84ccff1RcXESfCQsAAAAAlovoRgs33HCDbrjhhgp/9v7771dZ++yzz0YSCQAAAAB1gpd0AAAAANgaTREAAAAAW6MpAgAAAGBrNEUAAAAAbI2mCAAAAICt0RQBAAAAsDWaIgAAAAC2RlMEAAAAwNYi+vDW+mKapkzTjKgm3Lpo1JMdm9nB41idbdc1t2t28DhWZ9t1ze2aHTyO1dl2XXO7ZgePY3W2XdfcrtnR1qCbIrfbLbfbrdLSUkmS1+tVfHx4UzZNU4WFhZIkh8MR9hxqU0927GWXlJRIkjweD3uN7DrNZq+RbVU2e41sq7LZa2Rble31esOuqU6DbopcLpdcLpc8Ho8Mw1BycrIMwwhrDH8naRhGxE94pPVkx152cXGxJCklJUVOp9PSbLuuuV2z2WtkW5XNXiPbqmz2GtlWZfsb8Ghq0E3R4RwOR0QL56+LpLa29WTHVra/xm7nTTZ7jewjN5u9RraVtcFjWJld23qyYys70vlWhRstAAAAALA1miIAAAAAtkZTBAAAAMDWaIoAAAAA2BpNEQAAAABboykCAAAAYGs0RQAAAABsjaYIAAAAgK3RFAEAAACwNZoiAAAAALZGUwQAAADA1uLrewLhME1TpmlGVBNuXTTqyY7N7OBxrM6265rbNTt4HKuz7brmds0OHsfqbLuuuV2zg8exOtuua27X7Ghr0E2R2+2W2+1WaWmpJMnr9So+Prwpm6apwsJCSZLD4Qh7DrWpJzv2sktKSiRJHo+HvUZ2nWaz18i2Kpu9RrZV2ew1sq3K9nq9YddUp0E3RS6XSy6XSx6PR4ZhKDk5WYZhhDWGv5M0DCPiJzzSerJjL7u4uFiSlJKSIqfTaWm2XdfcrtnsNbKtymavkW1VNnuNbKuy/Q14NDXopuhwDocjooXz10VSW9t6smMr219jt/Mmm71G9pGbzV4j28ra4DGszK5tPdmxlR3pfKvCjRYAAAAA2BpNEQAAAABboykCAAAAYGs0RQAAAABsjaYIAAAAgK3RFAEAAACwNZoiAAAAALZGUwQAAADA1miKAAAAANgaTREA2M2WldL6Rb7vVtbWdzYAAJWIr+8JAAAstHiqlJcrJWVKRflSzkRp6PS6r63vbAAAqhBTTZFpmjJNM6KacOuiUU92bGYHj2N1tl3X3K7ZweNYkr1lpZSXK1OOwJfycqVuZ0nt+tZdbX1nH1Lfz7et9loU6smOzezgcazOtuua2zU72hp0U+R2u+V2u1VaWipJ8nq9io8Pb8qmaaqwsFCS5HA4wp5DberJjr3skpISSZLH42GvkV2n2fWy1wo2SkmZMuVQYWKar16m73hy57qrre/sQ9hr/F4ju26z2WtkW5Xt9XrDrqlOg26KXC6XXC6XPB6PDMNQcnKyDMMIawx/J2kYRsRPeKT1ZMdednFxsSQpJSVFTqfT0my7rrlds+tlr6VnSUX5vldaJBlF+b7mIj1Lqu53a21q6zv7EPYav9fIrtts9hrZVmX7G/BoatBN0eEcDkdEC+evi6S2tvVkx1a2v8Zu5022TfZaRj/ftTh5ub+/ES3nZt/xuqyt7+wg7DX7nDfZ7DWyj9zsSOdblZhqigAAtTR0uu9anIKNvldawmksalNb39kAAFSBpggA7KZdX9+1OGG+HbnWtfWdDQBAJficIgAAAAC2RlMEAAAAwNZoigAAAADYGk0RAAAAAFujKQIAAABgazRFAAAAAGyNpggAUCd27typ1NRUbd68ub6nYgu33XabbrzxxvqeBgDEJJoiAECduPvuu3XOOeeoQ4cOgWM//vijLrroIjVt2lSpqam65ZZbVFJSUqPxDhw4oFNOOUVxcXFavXp14Pi0adNCPhnd/9W0adOQ+tdee00nnniikpKS1LNnTy1YsCDsc9q1a5cuu+wypaSkqHnz5ho/frwKCwurrLnmmmt0zDHHKD09XampqTrnnHP03XffhTzmpptuUp8+fZSYmKhevXqVG+Ojjz7Sueeeq/T0dDVt2lS9evXSiy++GPKYv/zlL5o3b542btwY9nkBgN3RFAGA3WxZKa1f5PteR7X79+/XnDlzNH78+MCx0tJSnTV8sIr3blPef57SvHnz9Oyzz+rOO++sUfRfrx+rtOTynzn+l7/8RQUFBSFfPXr00IUXXhh4zMcff6xLL71Ul19+uT7//HOde+65Ovfcc7VmzZoanrjP5Zdfrm+++UaLFy/WW2+9pQ8++EBXX311lTV9+vTR3Llz9emnn+qdd96RaZoaNmyYSktLQx535ZVX6uKLL65wjE8//VQ9e/bU66+/rq+++krjxo3T6NGj9dZbbwUe06pVKw0fPlxPPPFEWOcEAKApAgB7WTxVmjNUWnaP7/viqXVSu2DBAiUmJuqkk04KHHv3n1do7fof9OTQEvX6xKUz4j/RXXfdJbfbrYMHD1YZvfDuS7X4zdd010n7fQc++f0f/s2aNVNaWlrga/v27Vq7dm1IQ5abm6vTTz9dN910k7p376677rpLJ5xwgh577LEan/66dev0zjvv6Omnn1b//v118skn69FHH9Urr7yin3/+udK6q6++Wqeeeqrat2+vE044Qf/4xz/0008/hbyt8JFHHpHL5VJWVlaFY/z5z3/WXXfdpQEDBqhTp06aOHGiTj/9dP3nP/8JedzIkSP1yiuv1PicAAA+5f8vtwbMNE2ZphlRTbh10agnOzazg8exOtuua27X7OBxLMneslLKy5UpR+BLeblSt7Okdn2jWvvBBx+oT58+v89xy0p9/O5/1DM1TkcnJ8gs8tUPG/qsrvN4tGbNGvXu3bvC6O1fLNKE+17Rfy5pqkRnI98arH5J5k9XVZj91FNPqUuXLjr55JMD+cuXL9ekSZNC1m3YsGH6v//7vxqto2maWrFihZo3bx5yXoMHD1ZcXJw++eQT/elPf6qy3jRNFRYWau7cuerYsaPatWtXLjt4Xxxee/hj9+7dq27duoUc79evn7Zs2aJNmzYF3rbI7zWyrcwOHsfqbLuuuV2zo61BN0Vut1tutzvwFgOv16v4+PCm7P+PkCQ5HI6w51CberJjL9t/bYPH42GvkV2n2fWy1wo2SkmZMuVQYWKar16m73hy56jW/vDDD2rVqpX27t0bqP/pt6Y6KuVgSH3jUk/g8RW9SmKapi6/4TaNPSlVnTul6dt9hqRvVZiYrr0VZP/222968cUXdfPNN/+eLWnbtm1KTk4OWbeUlBQVFBSEPK4ypmlqy5Ytoed0SIsWLbRp06Yqx3n66ac1depU7d+/X507d9brr7+uoqIiFRUVhTzuwIEDKi0tDRmrouf7//2//6fPPvtMDzzwQMhj/ddRrV27Vi1atJDE7zWyrctmr5FtVbbX6w27pjoNuilyuVxyuVzyeDwyDEPJyckyDCOsMfydpGEYET/hkdaTHXvZxcXFkqSUlBQ5nU5Ls+265nbNrpe9lp4lFeX7XuWRZBTl+xqb9Cyput+tYdaWlJSE/s5Oz5KzxKv4MlPNDmwL1DvTOkry/WO+ot/vjzzyiH4rlqadVKS4onw1PZAuSWp2oEBGBdkLFixQYWGhrrnmmnLjJSUlqVmzZoF1S0pKksPhqNF/V0zTVEJCguLi4so93j9WVeOMHz9eAwcOVGFhoR566CFdddVV+uijj9S4ceOQxyUmJqpRo0YhYx3+fC9btkw33HCDZs+eHfL2RElq0qRJYE7+Mfi9RrZV2ew1sq3KrukNesLRoJuiw/nvKBRpXSS1ta0nO7ay/TV2O2+ybbLXMvpJOROlvNzf3wSXc7PveJRrW7VqpT179vw+v4x+Su9+kj57Ly+k/hdnO0lSenp6heeybNkyLf/8azX+3JRMU3LskST1e2qfLit6TPPmzQt5/Jw5c3TWWWcpLS0t5HhaWpp++eWXkHX75ZdflJaWVuM1bN26dWAMv5KSEu3atavS+fs1b95cxxxzjAzD0IABA9SiRQv997//1ahRo0IeF7wvDj/ucDj0wQcf6Oyzz9bDDz+sMWPGlMvZvXu3JCk1NbXcWHb7O0a2TX6vRame7NjKjnS+VYmppggAUEtDp/uuAyrY6HuVpyYNURi1X/y4W5t27FNqh65a9nboTQCyL5uiu18+S78e75JxbG8po58Wz56tlJQU9ejRo8LIRx55RP/4xz8kSea2Nfp+7Vc6f+K9mv/qa+rfv3/IYzdt2qRly5bpjTfeKDdOdna2li5dqnHjxgWOLV68WNnZ2TU+/X79+mnPnj1atWqV+vTpI0launSpysrKys2lKv730R84cKDGNZL0/vvva+TIkbrvvvsqvePdmjVr5HQ6deyxx4Y1NgDYHU0RANhNu76+a3HCfDtydbX/XPitZv3P9xk5B39tqe1rvtHu3bsD17YMGzZMPXr00LUPzNe//nWitq9dpNtvv10ul0uJiYmSpBUrVmj06NFasmSJ2rZtq/bt2wfGN489VmZqD0n3qlOnTmrXrl1I/ty5c5Wenq4zzjij3NwmTpyo0047TY899pjOP/98zZ8/XytXrtTs2bNrfOpdu3bV6aefrgkTJmjWrFkqLi7WDTfcoEsuuURt2rSRJG3dulWDBw/Wc889pxNPPFEbN27U/PnzNXToUCUmJuqbb77Rfffdp6SkJJ155pmBsTds2KDCwkJt27ZNRUVFgc9h6tGjh5xOpz788ENdcsklmjhxos4//3xt27ZNkpSQkKCjjjoqMM6HH36oU045RUlJSTU+LwAAt+QGAETBFz/uDjREkpRwdAfFp2bpwVnPBo41atRIb775puLi4jRgwABdfvnlGj16tGbMmBF4zP79+7Vu3brAtQk1VVZWpmeffVZjx45Vo0aNyv18wIABevHFFzVv3jz16tVL//73v/Xf//5Xf/jDHwKPmTZtWsgHzVbkhRdeULdu3TR48GCdeeaZOvnkk0Maq+LiYq1bt0779/tuHd64cWN9+OGHGjFihPr06aNLLrlEycnJ+vjjj5Wamhqou+qqq9S7d289+eSTWr9+vXr37q3evXsHbvX98ssva//+/br33nuVnp4e+DrvvPNC5vfKK69owoQJYa0dAIBXigAAUbBpx75yx4ycUXruqSd0160TFRfn+//gMjMz9dprr1V6ce3AgQOrvNVq+/btVVZWVq42Li5OP/30U5VzvPDCCzVs2LBKszdt2qSBAwdWOcZRRx2ll156qdKfd+jQIWT+bdq00YIFC2Sapvbu3Vtp9vvvv1/pmKZp6vHHH9eLL75Y5fvoFy5cqLi4OF1wwQVVngMAoDyaIgBArXVs1bTcsSad+umCHgnaunWrMjIy6mFWNWeapt5//3199NFH9T2ViO3bt0/PPPNM2LdCBgDQFAEAoqB3+xa69rSskLfQXXdalm49Y0Q9zqrmHA6H8vPz63satcIrRAAQOZoiAEBU3HZGdw0/Nk2bduxTx1ZN1bt9i/qeEgAANUJTBACImt7tW9AMAQBiDnefAwAAAGBrNEUAYDdbVkrrF/m+W1lb39kAAFSCt88BgJ0snirl5UpJmVJRvpQzURo6ve5r6zsbAIAqxFRTZJpmlZ9fUVVNuHXRqCc7NrODx7E6265rbtfs4HEsyd6yUsrLlSlH4Et5uVK3s6R2feuutr6zD6nv59tWey0K9WTHZnbwOFZn23XN7ZodbQ26KXK73XK73SotLZUkeb3esD9/wTRNFRYWSlKVH3pXF/Vkx152SUmJJMnj8bDXyK7T7HrZawUbpaRMmXKoMDHNVy/Tdzy5c93V1nf2Iew1fq+RXbfZ7DWyrcr2er1h11SnQTdFLpdLLpdLHo9HhmEoOTlZhmGENYa/k6zsU8Trsp7s2MsuLi6WJKWkpMjpdFqabdc1t2t2vey19CypKN/3Soskoyjf11ykZ0nV/W6tTW19Zx/CXuP3Gtl1m81eI9uqbH8DHk0Nuik6nMPhiGjh/HWR1Na2nuzYyvbX2O28ybbJXsvo57sWJy/39zei5dzsO16XtfWdHYS9Zp/zJpu9RvaRmx3pfKsSU00RAKCWhk73XYtTsNH3Sks4jUVtaus7GwCAKtAUAYDdtOvruxYnzLcj17q2vrMBAKgEn1MEAAAAwNZoigAAAADYGk0RAAAAAFujKQIAAABgazRFAAAAAGyNpggAAACArdEUAQAAALA1miIAAAAAtkZTBAB2s2WltH6R77uVtfWdDQBAJeLrewIAAAstnirl5UpJmVJRvpQzURo6ve5r6zsbAIAqxFRTZJqmTNOMqCbcumjUkx2b2cHjWJ1t1zW3a3bwOJZkb1kp5eXKlCPwpbxcqdtZUru+dVdb39mH1Pfzbau9FoV6smMzO3gcq7PtuuZ2zY62Bt0Uud1uud1ulZaWSpK8Xq/i48ObsmmaKiwslCQ5HI6w51CberJjL7ukpESS5PF42Gtk12l2vey1go1SUqZMOVSYmOarl+k7nty57mrrO/sQ9hq/18iu22z2GtlWZXu93rBrqtOgmyKXyyWXyyWPxyPDMJScnCzDMMIaw99JGoYR8RMeaT3ZsZddXFwsSUpJSZHT6bQ0265rbtfsetlr6VlSUb7vlRZJRlG+r7lIz5Kq+91am9r6zj6EvcbvNbLrNpu9RrZV2f4GPJoadFN0OIfDEdHC+esiqa1tPdmxle2vsdt5k22TvZbRz3ctTl7u729Ey7nZd7wua+s7Owh7zT7nTTZ7jewjNzvS+VYlppoiAEAtDZ3uuxanYKPvlZZwGova1NZ3NgAAVaApAgC7adfXdy1OmG9HrnVtfWcDAFAJPqcIAAAAgK3RFAEAAACwNZoiAAAAALZGUwQAAADA1miKAAAAANgaTREAAAAAW6MpAgAAAGBrNEUAAAAAbI2mCAAAAICtxdf3BMJhmqZM04yoJty6aNSTHZvZweNYnW3XNbdrdvA4Vmfbdc3tmh08jtXZdl1zu2YHj2N1tl3X3K7Z0dagmyK32y23263S0lJJktfrVXx8eFM2TVOFhYWSJIfDEfYcalNPduxll5SUSJI8Hg97jew6zWavkW1VNnuNbKuy2WtkW5Xt9XrDrqlOg26KXC6XXC6XPB6PDMNQcnKyDMMIawx/J2kYRsRPeKT1ZMdednFxsSQpJSVFTqfT0my7rrlds9lrZFuVzV4j26ps9hrZVmX7G/BoatBN0eEcDkdEC+evi6S2tvVkx1a2v8Zu5002e43sIzebvUa2lbXBY1iZXdt6smMrO9L5VoUbLQAAAACwNZoiAAAAALZGUwQAAADA1miKAAAAANgaTREAAAAAW6MpAgAAAGBrNEUAAAAAbI2mCAAAAICt0RQBAAAAsDWaIgAAAAC2RlMEAAAAwNbi63sC4TBNU6ZpRlQTbl006smOzezgcazOtuua2zU7eByrs+265nbNDh7H6my7rrlds4PHsTrbrmtu1+xoa9BNkdvtltvtVmlpqSTJ6/UqPj68KZumqcLC/9/e/cZIddV/HP9cmNndks5cqaRLIduSopX+hZQKgdo0NdtiJFUemBI0lDS01XD7QDfWQqtsKwrYEILRa1HaWh+I0Da2MZagFCFGWVMDNGljwVRETOPSgrb3Lig7M5zfg2b2NwvLn3tn9uzcPe9XwgOm93s+3zn7hfp1YdonSfI8L3EP9dSTnb3scrksSYqiiFkje1izmTWybWUza2TbymbWyLaVHcdx4poLaeqlKAgCBUGgKIrk+74KhYJ83090RnWT9H0/9Rc8bT3Z2csulUqSpGKxqHw+bzXb1Tt3NZtZI9tWNrNGtq1sZo1sW9nVBbyRmnopOpPneakurlqXprbeerKzlV2tce19k82skT16s5k1sm3W1p5hM7veerKzlZ223/PhgxYAAAAAOI2lCAAAAIDTWIoAAAAAOI2lCAAAAIDTWIoAAAAAOI2lCAAAAIDTWIoAAAAAOI2lCAAAAIDTWIoAAAAAOI2lCAAAAIDTWIoAAAAAOI2lCAAAAIDTciPdQBLGGBljUtUkrWtEPdnZzK49x3a2q3fuanbtObazXb1zV7Nrz7Gd7eqdu5pde47tbFfv3NXsRmvqpSgMQ4VhqEqlIkmK41i5XLKWjTHq6+uTJHmel7iHeurJzl52uVyWJEVRxKyRPazZzBrZtrKZNbJtZTNrZNvKjuM4cc2FNPVSFASBgiBQFEXyfV+FQkG+7yc6o7pJ+r6f+guetp7s7GWXSiVJUrFYVD6ft5rt6p27ms2skW0rm1kj21Y2s0a2rezqAt5ITb0UncnzvFQXV61LU1tvPdnZyq7WuPa+yWbWyB692cwa2TZra8+wmV1vPdnZyk7b7/nwQQsAAAAAnMZSBAAAAMBpLEUAAAAAnMZSBAAAAMBpLEUAAAAAnMZSBAAAAMBpLEUAAAAAnMZSBAAAAMBpqZaiMAw1ZcoUtbW1afbs2XrttdfO+eymTZt02223afz48Ro/frw6OzvP+zwAAAAA2JR4Kdq6dau6urrU3d2tffv2afr06Zo3b57efffdIZ/fvXu3Fi1apF27dqmnp0cdHR2666679M4779TdPAAAAADUK/FStH79ej3wwAO67777dN1112njxo0aN26cnn322SGf//nPf65ly5ZpxowZmjZtmp5++mmdPn1aO3furLt5AAAAAKhXLsnD/f392rt3r1asWDHw2pgxY9TZ2amenp6LOuPkyZMqlUq67LLLzvnMqVOndOrUqYGfR1EkSSqVSiqVSklaljFG5XJZpVJJnuclqq23nuzsZVfnK+mcNSLb1Tt3NZtZI9tWNrNGtq1sZo1sW9lpZuxCEi1Fx44dU6VSUXt7+6DX29vbdeDAgYs645FHHtGkSZPU2dl5zmfWrFmjJ5544qzXd+3apXHjxiVpGUhlx44dI90CHMGswRZmDbYwaxhuJ0+ebPiZiZaieq1du1ZbtmzR7t271dbWds7nVqxYoa6uroGfR1Gkjo4O3XHHHfroRz+aKNMYoyiKVCwWU2/BaevJzl52qVTSjh07dOeddyqfz1vNdvXOXc1m1si2lc2skW0rm1kj21b28ePHE9dcSKKlaMKECRo7dqyOHj066PWjR49q4sSJ561dt26d1q5dq1dffVU33XTTeZ9tbW1Va2vrWa/n8/lUv8hyuZzy+XzqL3jaerKzl13FrJE93NlVzBrZw51dxayRPdzZVcwa2cOdnXS+LkaiD1poaWnRzJkzB31IQvVDE+bMmXPOuieffFKrVq3S9u3bdcstt6TvFgAAAAAaLPEfn+vq6tKSJUt0yy23aNasWdqwYYNOnDih++67T5J07733avLkyVqzZo0k6Xvf+55WrlypzZs3a8qUKert7ZUkXXrppbr00ksb+FYAAAAAILnES9HChQv13nvvaeXKlert7dWMGTO0ffv2gQ9fOHLkiMaM+f9vQD311FPq7+/XF77whUHndHd36/HHH6+vewAAAACoU6oPWnjooYf00EMPDfnPdu/ePejnhw8fThMBAAAAAFYk/o+3AgAAAMBowlIEAAAAwGksRQAAAACcxlIEAAAAwGksRQAAAACcxlIEAAAAwGksRQAAAACcxlIEAAAAwGmp/uOtI8UYI2NMqpqkdY2oJzub2bXn2M529c5dza49x3a2q3fuanbtObazXb1zV7Nrz7Gd7eqdu5rdaE29FIVhqDAMValUJElxHCuXS9ayMUZ9fX2SJM/zEvdQTz3Z2csul8uSpCiKmDWyhzWbWSPbVjazRratbGaNbFvZcRwnrrmQpl6KgiBQEASKoki+76tQKMj3/URnVDdJ3/dTf8HT1pOdvexSqSRJKhaLyufzVrNdvXNXs5k1sm1lM2tk28pm1si2lV1dwBupqZeiM3mel+riqnVpauutJztb2dUa19432cwa2aM3m1kj22Zt7Rk2s+utJztb2Wn7PR8+aAEAAACA01iKAAAAADiNpQgAAACA01iKAAAAADiNpQgAAACA01iKAAAAADiNpQgAAACA01iKAAAAADiNpQgAAACA01iKAAAAADiNpQgAAACA03Ij3UASxhgZY1LVJK1rRD3Z2cyuPcd2tqt37mp27Tm2s129c1eza8+xne3qnbuaXXuO7WxX79zV7EZr6qUoDEOFYahKpSJJiuNYuVyylo0x6uvrkyR5npe4h3rq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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, ax = plt.subplots(figsize=(10, 10))\n", + "ax.set_xlim([0, 1])\n", + "ax.set_ylim([0, 1])\n", + "ax.scatter(coords[:, 0], coords[:, 1], s=10, label=\"Sparse positions\")\n", + "ax.scatter(interp_points[:, 0], interp_points[:, 1], s=10, label=\"Interpolation support\")\n", + "ax.grid(which = \"major\")\n", + "ax.grid(which = \"minor\", alpha = 0.2)\n", + "ax.xaxis.set_minor_locator(FixedLocator(np.linspace(0, 1, 51)))\n", + "ax.yaxis.set_minor_locator(FixedLocator(np.linspace(0, 1, 51)))\n", + "ax.set_title(\"Off the grid sparse positions\")\n", + "for i in range(npoint):\n", + " ax.annotate(\"(%.3f, %.3f)\" % (coords[i, 0], coords[i, 1]), coords[i, :])\n", + "ax.legend()" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "f.data.fill(0)\n", + "op = Operator([Eq(f.forward, f+1)] + s.interpolate(f/16))" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Operator `Kernel` ran in 0.01 s\n" + ] + }, + { + "data": { + "text/plain": [ + "Data([[0., 0., 0., 0., 0.],\n", + " [1., 1., 1., 1., 1.],\n", + " [2., 2., 2., 2., 2.],\n", + " [3., 3., 3., 3., 3.],\n", + " [4., 4., 4., 4., 4.],\n", + " [5., 5., 5., 5., 5.],\n", + " [6., 6., 6., 6., 6.],\n", + " [7., 7., 7., 7., 7.],\n", + " [8., 8., 8., 8., 8.],\n", + " [9., 9., 9., 9., 9.],\n", + " [0., 0., 0., 0., 0.]], dtype=float32)" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "op()\n", + "s.data" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Operator `Kernel` ran in 0.01 s\n" + ] + }, + { + "data": { + "text/plain": [ + "PerformanceSummary([(PerfKey(name='section0', rank=None),\n", + " PerfEntry(time=6.2e-05, gflopss=0.0, gpointss=0.0, oi=0.0, ops=0, itershapes=[]))])" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "u.data.fill(0)\n", + "op = Operator(s.inject(u, expr=s))\n", + "op()" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0AAAAMzCAYAAACP1XItAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAoNElEQVR4nO3df2zV9b348VcpttVMEC+X8uPWcXXXuU0FB6O3OmO86Wwywy5/3IyLCxDij+vGXdRmd4IinZNR7qJekiuOyPS6f7ywmWmWQfC6XsmyS2/I+JFoLmIcYxCzFrheWy5urbSf+8e+674dRTmlPyyvxyM5f/Dh/Tmf10neIE8/55yWFUVRBAAAQALjRnsAAACAkSKAAACANAQQAACQhgACAADSEEAAAEAaAggAAEhDAAEAAGkIIAAAIA0BBAAApCGAAACANEoOoJ/+9Kcxf/78mD59epSVlcWLL774gefs2LEjPv3pT0dlZWV87GMfi2effXYQowIAAJybkgPo5MmTMWvWrNiwYcNZrf/lL38Zt956a9x8882xb9++uPfee+OOO+6Il156qeRhAQAAzkVZURTFoE8uK4sXXnghFixYcMY1999/f2zdujVee+21vmN/+7d/G++8805s3759sJcGAAAo2fjhvkBra2vU19f3O9bQ0BD33nvvGc/p6uqKrq6uvl/39vbG22+/HX/yJ38SZWVlwzUqAADwIVIURZw4cSKmT58e48YNzdcXDHsAtbW1RXV1db9j1dXV0dnZGb/5zW/iwgsvPO2c5ubmePjhh4d7NAAAYAw4cuRI/Nmf/dmQPNewB9BgrFy5MhobG/t+3dHREZdddllE3BcRlaM2FwAAMJK6IuKf4uKLLx6yZxz2AJo6dWq0t7f3O9be3h4TJkwY8O5PRERlZWVUVg4UOpUhgAAAIJeh/BjMsP8coLq6umhpael37OWXX466urrhvjQAAEA/JQfQ//7v/8a+ffti3759EfG7r7net29fHD58OCJ+9/a1JUuW9K2/++674+DBg/H1r389Xn/99XjyySfj+9//ftx3331D8woAAADOUskB9POf/zyuu+66uO666yIiorGxMa677rpYvXp1RET8+te/7ouhiIg///M/j61bt8bLL78cs2bNisceeyy++93vRkNDwxC9BAAAgLNzTj8HaKR0dnbGxIkTI2JF+AwQAABk0RUR66KjoyMmTJgwJM847J8BAgAA+LAQQAAAQBoCCAAASEMAAQAAaQggAAAgDQEEAACkIYAAAIA0BBAAAJCGAAIAANIQQAAAQBoCCAAASEMAAQAAaQggAAAgDQEEAACkIYAAAIA0BBAAAJCGAAIAANIQQAAAQBoCCAAASEMAAQAAaQggAAAgDQEEAACkIYAAAIA0BBAAAJCGAAIAANIQQAAAQBoCCAAASEMAAQAAaQggAAAgDQEEAACkIYAAAIA0BBAAAJCGAAIAANIQQAAAQBoCCAAASEMAAQAAaQggAAAgDQEEAACkIYAAAIA0BBAAAJCGAAIAANIQQAAAQBoCCAAASEMAAQAAaQggAAAgDQEEAACkIYAAAIA0BBAAAJCGAAIAANIQQAAAQBoCCAAASEMAAQAAaQggAAAgDQEEAACkIYAAAIA0BBAAAJCGAAIAANIQQAAAQBoCCAAASEMAAQAAaQggAAAgDQEEAACkIYAAAIA0BBAAAJCGAAIAANIQQAAAQBoCCAAASEMAAQAAaQggAAAgDQEEAACkIYAAAIA0BBAAAJCGAAIAANIQQAAAQBoCCAAASEMAAQAAaQggAAAgDQEEAACkIYAAAIA0BBAAAJCGAAIAANIQQAAAQBoCCAAASEMAAQAAaQggAAAgDQEEAACkIYAAAIA0BBAAAJCGAAIAANIQQAAAQBoCCAAASEMAAQAAaQggAAAgDQEEAACkIYAAAIA0BBAAAJCGAAIAANIQQAAAQBoCCAAASEMAAQAAaQggAAAgDQEEAACkIYAAAIA0BBAAAJCGAAIAANIQQAAAQBoCCAAASEMAAQAAaQggAAAgDQEEAACkIYAAAIA0BBAAAJCGAAIAANIQQAAAQBoCCAAASEMAAQAAaQggAAAgDQEEAACkIYAAAIA0BBAAAJCGAAIAANIQQAAAQBoCCAAASEMAAQAAaQggAAAgDQEEAACkIYAAAIA0BBAAAJCGAAIAANIQQAAAQBoCCAAASEMAAQAAaQggAAAgDQEEAACkIYAAAIA0BBAAAJCGAAIAANIQQAAAQBoCCAAASEMAAQAAaQggAAAgDQEEAACkIYAAAIA0BhVAGzZsiJkzZ0ZVVVXU1tbGrl273nf9+vXr4+Mf/3hceOGFUVNTE/fdd1/89re/HdTAAAAAg1VyAG3ZsiUaGxujqakp9uzZE7NmzYqGhoY4evTogOufe+65WLFiRTQ1NcX+/fvj6aefji1btsQDDzxwzsMDAACUouQAevzxx+POO++MZcuWxSc/+cnYuHFjXHTRRfHMM88MuH7nzp1xww03xG233RYzZ86MW265JRYtWvSBd40AAACGWkkB1N3dHbt37476+vo/PMG4cVFfXx+tra0DnnP99dfH7t27+4Ln4MGDsW3btvj85z9/xut0dXVFZ2dnvwcAAMC5Gl/K4uPHj0dPT09UV1f3O15dXR2vv/76gOfcdtttcfz48fjsZz8bRVHEqVOn4u67737ft8A1NzfHww8/XMpoAAAAH2jYvwVux44dsXbt2njyySdjz5498cMf/jC2bt0ajzzyyBnPWblyZXR0dPQ9jhw5MtxjAgAACZR0B2jy5MlRXl4e7e3t/Y63t7fH1KlTBzznoYceisWLF8cdd9wRERHXXHNNnDx5Mu6666548MEHY9y40xussrIyKisrSxkNAADgA5V0B6iioiLmzJkTLS0tfcd6e3ujpaUl6urqBjzn3XffPS1yysvLIyKiKIpS5wUAABi0ku4ARUQ0NjbG0qVLY+7cuTFv3rxYv359nDx5MpYtWxYREUuWLIkZM2ZEc3NzRETMnz8/Hn/88bjuuuuitrY23nzzzXjooYdi/vz5fSEEAAAwEkoOoIULF8axY8di9erV0dbWFrNnz47t27f3fTHC4cOH+93xWbVqVZSVlcWqVavirbfeij/90z+N+fPnx7e+9a2hexUAAABnoawYA+9D6+zsjIkTJ0bEiojw2SAAAMihKyLWRUdHR0yYMGFInnHYvwUOAADgw0IAAQAAaQggAAAgDQEEAACkIYAAAIA0Sv4abAAYaquK7tEeYcStKasY7REAUnIHCAAASEMAAQAAaQggAAAgDQEEAACkIYAAAIA0BBAAAJCGAAIAANIQQAAAQBoCCAAASEMAAQAAaQggAAAgDQEEAACkIYAAAIA0BBAAAJCGAAIAANIQQAAAQBoCCAAASEMAAQAAaQggAAAgDQEEAACkIYAAAIA0BBAAAJCGAAIAANIQQAAAQBoCCAAASEMAAQAAaQggAAAgDQEEAACkIYAAAIA0BBAAAJCGAAIAANIQQAAAQBoCCAAASEMAAQAAaQggAAAgDQEEAACkIYAAAIA0BBAAAJCGAAIAANIQQAAAQBoCCAAASEMAAQAAaQggAAAgDQEEAACkIYAAAIA0BBAAAJCGAAIAANIQQAAAQBoCCAAASEMAAQAAaQggAAAgDQEEAACkIYAAAIA0BBAAAJCGAAIAANIQQAAAQBoCCAAASEMAAQAAaQggAAAgjfGjPQAArCmrGO0RAEjCHSAAACANAQQAAKQhgAAAgDQEEAAAkIYAAgAA0hBAAABAGgIIAABIQwABAABpCCAAACANAQQAAKQhgAAAgDQEEAAAkIYAAgAA0hBAAABAGgIIAABIQwABAABpCCAAACANAQQAAKQhgAAAgDQEEAAAkIYAAgAA0hBAAABAGgIIAABIQwABAABpCCAAACANAQQAAKQhgAAAgDQEEAAAkIYAAgAA0hBAAABAGgIIAABIQwABAABpCCAAACANAQQAAKQhgAAAgDQEEAAAkIYAAgAA0hBAAABAGgIIAABIQwABAABpCCAAACANAQQAAKQhgAAAgDQEEAAAkIYAAgAA0hBAAABAGgIIAABIQwABAABpCCAAACANAQQAAKQhgAAAgDQEEAAAkIYAAgAA0hBAAABAGgIIAABIQwABAABpCCAAACANAQQAAKQhgAAAgDQEEAAAkMb40R4AgNOtKrpHe4QRtaasYrRHACAJd4AAAIA0BBAAAJCGAAIAANIQQAAAQBoCCAAASEMAAQAAaQggAAAgDQEEAACkIYAAAIA0BBAAAJCGAAIAANIQQAAAQBoCCAAASEMAAQAAaQggAAAgDQEEAACkMagA2rBhQ8ycOTOqqqqitrY2du3a9b7r33nnnVi+fHlMmzYtKisr48orr4xt27YNamAAAIDBGl/qCVu2bInGxsbYuHFj1NbWxvr166OhoSEOHDgQU6ZMOW19d3d3fO5zn4spU6bE888/HzNmzIhf/epXcckllwzF/AAAAGet5AB6/PHH484774xly5ZFRMTGjRtj69at8cwzz8SKFStOW//MM8/E22+/HTt37owLLrggIiJmzpx5blMDAAAMQklvgevu7o7du3dHfX39H55g3Lior6+P1tbWAc/50Y9+FHV1dbF8+fKorq6Oq6++OtauXRs9PT1nvE5XV1d0dnb2ewAAAJyrkgLo+PHj0dPTE9XV1f2OV1dXR1tb24DnHDx4MJ5//vno6emJbdu2xUMPPRSPPfZYrFmz5ozXaW5ujokTJ/Y9ampqShkTAABgQMP+LXC9vb0xZcqUeOqpp2LOnDmxcOHCePDBB2Pjxo1nPGflypXR0dHR9zhy5MhwjwkAACRQ0meAJk+eHOXl5dHe3t7veHt7e0ydOnXAc6ZNmxYXXHBBlJeX9x37xCc+EW1tbdHd3R0VFRWnnVNZWRmVlZWljAYAAPCBSroDVFFREXPmzImWlpa+Y729vdHS0hJ1dXUDnnPDDTfEm2++Gb29vX3H3njjjZg2bdqA8QMAADBcSn4LXGNjY2zatCm+973vxf79++PLX/5ynDx5su9b4ZYsWRIrV67sW//lL3853n777bjnnnvijTfeiK1bt8batWtj+fLlQ/cqAAAAzkLJX4O9cOHCOHbsWKxevTra2tpi9uzZsX379r4vRjh8+HCMG/eHrqqpqYmXXnop7rvvvrj22mtjxowZcc8998T9998/dK8CAADgLJQVRVGM9hAfpLOzMyZOnBgRKyLCZ4OA89+qonu0RxhRa8q8JRqAgXRFxLro6OiICRMmDMkzDvu3wAEAAHxYCCAAACANAQQAAKQhgAAAgDQEEAAAkIYAAgAA0hBAAABAGgIIAABIQwABAABpCCAAACANAQQAAKQhgAAAgDQEEAAAkIYAAgAA0hBAAABAGgIIAABIQwABAABpjB/tAYCRtaroHu0RRtyasorRHgEA+JBwBwgAAEhDAAEAAGkIIAAAIA0BBAAApCGAAACANAQQAACQhgACAADSEEAAAEAaAggAAEhDAAEAAGkIIAAAIA0BBAAApCGAAACANAQQAACQxvjRHgCA060pqxjtEQDgvOQOEAAAkIYAAgAA0hBAAABAGgIIAABIQwABAABpCCAAACANAQQAAKQhgAAAgDQEEAAAkIYAAgAA0hBAAABAGgIIAABIQwABAABpCCAAACCN8aM9AABw/ltVdI/2CCNuTVnFaI8ADMAdIAAAIA0BBAAApCGAAACANAQQAACQhgACAADSEEAAAEAaAggAAEhDAAEAAGkIIAAAIA0BBAAApCGAAACANAQQAACQhgACAADSEEAAAEAaAggAAEhDAAEAAGkIIAAAIA0BBAAApCGAAACANAQQAACQhgACAADSEEAAAEAaAggAAEhDAAEAAGkIIAAAIA0BBAAApCGAAACANAQQAACQhgACAADSEEAAAEAa40d7AGBkrSmrGO0RAABGjTtAAABAGgIIAABIQwAB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FxcrVqzoW/8f//Efxfjx44tHH3202L9/f9HU1FRccMEFxauvvjpaL4ExoNR9tm7duqKioqJ4/vnni1//+td9jxMnTozWS2AMKHWf/THfAsfZKHWfHT58uLj44ouLv//7vy8OHDhQ/PjHPy6mTJlSrFmzZrReAmNAqfusqampuPjii4t//dd/LQ4ePFj827/9W3HFFVcUX/ziF0frJfAhd+LEiWLv3r3F3r17i4goHn/88WLv3r3Fr371q6IoimLFihXF4sWL+9YfPHiwuOiii4p/+Id/KPbv319s2LChKC8vL7Zv317SdT8UAVQURfHP//zPxWWXXVZUVFQU8+bNK/7zP/+z7/duuummYunSpf3Wf//73y+uvPLKoqKiovjUpz5VbN26dYQnZiwqZZ999KMfLSLitEdTU9PID86YUurfZ/8/AcTZKnWf7dy5s6itrS0qKyuLyy+/vPjWt75VnDp1aoSnZqwpZZ+99957xTe+8Y3iiiuuKKqqqoqampriK1/5SvE///M/Iz84Y8Irr7wy4L+1fr+vli5dWtx0002nnTN79uyioqKiuPzyy4t/+Zd/Kfm6ZUXhniQAAJDDqH8GCAAAYKQIIAAAIA0BBAAApCGAAACANAQQAACQhgACAADSEEAAAEAaAggAAEhDAAEAAGkIIAAAIA0BBAAApCGAAACANP4P00SrVdLqpmsAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, ax = plt.subplots(figsize=(10, 10))\n", + "ax.imshow(u.data[1], vmin=0, vmax=2, cmap=\"jet\", extent=[0,1,0,1])" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.6" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +}