Files
tensorneat-mend/test/test_b_spline_conn.ipynb
2024-07-10 16:58:58 +08:00

309 lines
59 KiB
Plaintext

{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "initial_id",
"metadata": {
"collapsed": true,
"ExecuteTime": {
"end_time": "2024-06-02T09:34:27.311024900Z",
"start_time": "2024-06-02T09:34:24.476578200Z"
}
},
"outputs": [],
"source": [
"from algorithm.neat.gene.conn.bspline import BSplineConn\n",
"import jax, jax.numpy as jnp"
]
},
{
"cell_type": "code",
"execution_count": 19,
"outputs": [],
"source": [
"conn_gene = BSplineConn(grid_cnt=10, spline_order=3, grid_init_range=[-1, 1])\n",
"state = conn_gene.setup()"
],
"metadata": {
"collapsed": false,
"ExecuteTime": {
"end_time": "2024-06-02T09:36:42.768225100Z",
"start_time": "2024-06-02T09:36:42.757227800Z"
}
},
"id": "e9015de97c372eb0"
},
{
"cell_type": "code",
"execution_count": 20,
"outputs": [
{
"data": {
"text/plain": "(Array([-2. , -1.5555556 , -1.1111112 , -0.66666657, -0.22222227,\n 0.22222233, 0.66666675, 1.1111112 , 1.5555556 , 2. ,\n -1.3647934 , -0.06133604, -0.67493236, -0.23494798, 1.4040948 ,\n -1.4103687 , 0.18820001, -0.6302892 , -1.9635582 , 0.3691777 ,\n 0.97018796, 1.2873127 ], dtype=float32),\n Array([-2. , -1.5555556 , -1.1111112 , -0.66666657, -0.22222227,\n 0.22222233, 0.66666675, 1.1111112 , 1.5555556 , 2. ,\n -1.1737438 , 0.8969659 , 1.127439 , 1.7055644 , -0.74586004,\n 1.0907347 , -1.5847186 , 1.3379306 , -1.0891589 , 1.7622422 ,\n 1.876175 , -1.033506 ], dtype=float32))"
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"randkey = jax.random.key(3)\n",
"k1, k2 = jax.random.split(randkey)\n",
"attrs1 = conn_gene.new_random_attrs(state, k1)\n",
"attrs2 = conn_gene.new_random_attrs(state, k2)\n",
"attrs1, attrs2"
],
"metadata": {
"collapsed": false,
"ExecuteTime": {
"end_time": "2024-06-02T09:36:43.360341Z",
"start_time": "2024-06-02T09:36:43.313076200Z"
}
},
"id": "30c0962c964d19a6"
},
{
"cell_type": "code",
"execution_count": 21,
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0.0, 0.9452241063117981\n"
]
},
{
"data": {
"text/plain": "Array(0.47261205, dtype=float32)"
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"distance = conn_gene.distance(state, attrs1, attrs2)\n",
"distance"
],
"metadata": {
"collapsed": false,
"ExecuteTime": {
"end_time": "2024-06-02T09:36:44.084221Z",
"start_time": "2024-06-02T09:36:43.838220300Z"
}
},
"id": "56a1a09e36e97ddf"
},
{
"cell_type": "code",
"execution_count": 22,
"outputs": [
{
"data": {
"text/plain": "Array(-1.3738157, dtype=float32)"
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"out = conn_gene.forward(state, attrs1, 1)\n",
"out"
],
"metadata": {
"collapsed": false,
"ExecuteTime": {
"end_time": "2024-06-02T09:36:45.390747700Z",
"start_time": "2024-06-02T09:36:45.222715100Z"
}
},
"id": "de96adb31f059c6b"
},
{
"cell_type": "code",
"execution_count": 23,
"outputs": [
{
"data": {
"text/plain": "(Array(1.0680349, dtype=float32), Array(-0.8857973, dtype=float32))"
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"batch_x = jax.random.normal(k1, (1000, )) * 0.3\n",
"batch_x.max(), batch_x.min()"
],
"metadata": {
"collapsed": false,
"ExecuteTime": {
"end_time": "2024-06-02T09:36:46.412072800Z",
"start_time": "2024-06-02T09:36:46.386941500Z"
}
},
"id": "5776e5921eb9047"
},
{
"cell_type": "code",
"execution_count": 24,
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"resid: [0.00100023]\n"
]
},
{
"data": {
"text/plain": "Array([-0.8857973 , -0.3740343 , -0.23061422, -0.13795438, -0.03827247,\n 0.04180069, 0.12013934, 0.23201329, 0.36620033, 1.068035 ,\n -0.10794136, 0.60137945, 0.8359451 , 0.03605032, -0.83068913,\n -0.6539811 , -0.14713624, -0.18018943, -0.6166692 , -1.1958175 ,\n -1.5304552 , -0.9817784 ], dtype=float32)"
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"batch_output, new_attrs = conn_gene.update_by_batch(state, attrs1, batch_x)\n",
"new_attrs"
],
"metadata": {
"collapsed": false,
"ExecuteTime": {
"end_time": "2024-06-02T09:36:49.375437600Z",
"start_time": "2024-06-02T09:36:49.015036100Z"
}
},
"id": "9053ae5e3fd580d6"
},
{
"cell_type": "code",
"execution_count": 25,
"outputs": [],
"source": [
"batch_forward = jax.jit(jax.vmap(conn_gene.forward, in_axes=(None, None, 0)))"
],
"metadata": {
"collapsed": false,
"ExecuteTime": {
"end_time": "2024-06-02T09:36:54.447737600Z",
"start_time": "2024-06-02T09:36:54.433767800Z"
}
},
"id": "9cfa8208fe37ddb"
},
{
"cell_type": "code",
"execution_count": 26,
"outputs": [
{
"data": {
"text/plain": "[<matplotlib.lines.Line2D at 0x7f22c528d7b0>]"
},
"execution_count": 26,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"text/plain": "<Figure size 640x480 with 1 Axes>",
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAi8AAAGdCAYAAADaPpOnAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAA9hAAAPYQGoP6dpAABM9klEQVR4nO3dd3hT1eMG8DdJm3QmpXSXMspogRZaQCqIgFKZCggqCAo44OseuMCB+4d740IRB4qCLBURQXBAASktqy20ZXRAF4Wku01yfn8UqpXVkeRkvJ/nyfNIetO8t2ma13vPPUchhBAgIiIichBK2QGIiIiImoPlhYiIiBwKywsRERE5FJYXIiIicigsL0RERORQWF6IiIjIobC8EBERkUNheSEiIiKH4iY7gKWZzWYcO3YMvr6+UCgUsuMQERFREwghUFZWhrCwMCiVFz624nTl5dixY4iIiJAdg4iIiFogNzcX7dq1u+A2TldefH19AdTvvFarlZyGiIiImsJgMCAiIqLhc/xCnK68nDlVpNVqWV6IiIgcTFOGfHDALhERETkUlhciIiJyKCwvRERE5FBYXoiIiMihsLwQERGRQ2F5ISIiIofC8kJEREQOheWFiIiIHArLCxERETkUlhciIiJyKCwvRERE5FBYXoiIiMihON3CjNQ6x05VYV++HjmllSitqEWt0QyNuxJtvNToHOiDnmFaBGk9ZMckIiIXxvLi4oQQSD56EitS8vFnZjFyS6su+phuwT5I7B6MG/pFoGOAtw1SEhER/YPlxUXVGE1YnpyHhX8cwpETlQ33q5QKRIf4omOANwJ9NNC4K1Fda0JJeS0OFpYhu7gcBwvrb+9vzsYVUYF4aHgUYsJ1EveGiIhcCcuLizGbBZYn5+H1Xw+g0FADAPBWqzAqNhRjeoXiko7+8NGc/9fiVGUtfj9YjJUp+fj9YDE2Hai/jY8Lw1NX90BbH42tdoWIiFyUQgghZIewJIPBAJ1OB71eD61WKzuOXdmXr8eTq/YhNfcUACBE64E7hkTihksi4KVufo89UlKBtzdmYlVqPoQA2ni5Y/6EWIyMCbVwciIicnbN+fxmeXEBJrPAh79n481fD8JoFvBWq3B/YldMH9gRGjdVq7//7txTeOz7PcgoKAMAzLy8Ex4dGQ13FS9mIyKipmF5YXlpUFRWjXuWpGDHkVIAwKiYEDw7tqfFrxiqNZrx6i8ZWPjnYQDAldFBWDClDzzVrS9HRETk/Jrz+c3/NXZie/P0GPfeFuw4UgofjRtev7433p/axyqXOqvdlHhiTA98MLUPNG5K/JZRhJs+3Q59ZZ3Fn4uIiFwby4uT+mH3MVz34VYc11ejc6A31txzGSb2bQeFQmHV5x0VG4qvbk+A1sMNyUdPYuqn21BWzQJDRESWw/LihL5MOoL7lqagxmjGldFBWHn3ZYgM9LHZ81/S0R/f3TEAbb3V2JdvwO2f70R1nclmz09ERM6N5cWJCCHw7sZMPLV6P4QApg/ogIXT+kHr4W7zLNEhWnx+a3/4aNyw/XAp7vk6BSazUw2vIiIiSVhenMjr6w/i9V8PAgDuG9YVz4ztCZXSuqeJLiQmXIdPp/eDxk2JDemFePWXA9KyEBGR82B5cRLv/ZaJ9zZlAQCeHNMds6/qZvXxLU2RENkWr1zXCwDw4e/ZWJ2aLzkRERE5OpYXJ/DJn4fw2vr6Iy6Pj47G7ZdHSk7U2Li4cNw5tDMA4NHle5B+3CA5EREROTKWFwe3YlceXvgpHQDwYGI3zBrcWXKic3t4eBSGRgWixmjGvd+koLLWKDsSERE5KJYXB7Y1uwSPfb8HQP2stvcN6yI50fmplAq8cUMcgnw1yCoqx3M/pMmOREREDorlxUFlFpbhf18mo84kMKZXKOaO6m4XY1wuxN9bjbcmxUGhAJb+nYu1e4/LjkRERA6I5cUBFZfVYMZnf6Os2oh+Hdrg9et7QynxqqLmGNglAHcOqT+19dSqfSitqJWciIiIHA3Li4OpM5lx95JdyD9VhU4B3vh4Wj94uDvW+kEPJHZDVLAvTlTU4tkf9suOQ0REDoblxcG8+FM6dhwpha/GDZ9M7wd/b7XsSM2mdlPilet6QakAVqcew4a0QtmRiIjIgbC8OJCVKXlYvPUIAOCNSXHobMMp/y2td4QfZg6uv6T7iVV7oa/i+kdERNQ0LC8OYv8xPeZ8vxcAcN+VXXBVj2DJiVrvwcRuiAzwRqGhBm9tOCg7DhEROQiWFwdQUWPEPV/XL7R4RVQgHkjsJjuSRXi4q/DsuJ4AgC+SjiKjgJPXERHRxbG8OIB5q/fjcEkFQnUeeHNSnMNcWdQUl3cNxKiYEJjMAvNW74cQXLyRiIgujOXFzq1Kycf3u/KgVABvT46Hn5fjDdC9mCev7gEPdyV2HC7Fmt3HZMchIiI7x/Jix46UVOCJlafHuQzriv6d/CUnso5wP0/cc0X97MD/tzYdVbUmyYmIiMiesbzYqVqjGfctTUFFrQn9O/nj3iu7yo5kVbdfHol2bTxRaKjBoi2HZcchIiI7xvJip97blIU9eXroPN3x1qQ4qJxonMu5eLir8MiIKADAB5uzcaK8RnIiIiKyVywvdmhvnh4LNmUBAF4YH4MwP0/JiWzjml5hiAnXorzGiHd/y5Idh4iI7BTLi52pMZrw0LJUmMwCY2JDcU3vMNmRbEapVGDuqO4AgK+2HcWRkgrJiYiIyB7ZpLwsWLAAHTt2hIeHBxISErBjx47zbrt48WIoFIpGNw8PD1vEtAtvbcjEwcJyBPio8fz4GNlxbO6yLgEY0i0QRrPAq+sPyI5DRER2yOrl5dtvv8Xs2bPx9NNPY9euXejduzdGjBiBoqKi8z5Gq9Xi+PHjDbejR49aO6Zd2JVzEh/9ng0AePHaWIdct8gS5oyKhkIB/LTnOPbl62XHISIiO2P18vLGG29g5syZuOWWW9CjRw98+OGH8PLywqJFi877GIVCgZCQkIZbcLDjT4V/MdV1Jjy8bDfMArg2PhwjeobIjiRN91Atxp4+XfbWhkzJaYiIyN5YtbzU1tYiOTkZiYmJ/zyhUonExEQkJSWd93Hl5eXo0KEDIiIiMG7cOOzfv/+829bU1MBgMDS6OaJ3NmbiUHEFgnw1eOaanrLjSHfvlV2hVAAb0gt59IWIiBqxankpKSmByWQ668hJcHAwCgoKzvmYqKgoLFq0CKtXr8ZXX30Fs9mMgQMHIi8v75zbz58/HzqdruEWERFh8f2wtowCAz7+4xAA4PnxMdB5uUtOJF+XIJ9/HX3hoo1ERPQPu7vaaMCAAZg2bRri4uIwZMgQrFixAoGBgfjoo4/Ouf3cuXOh1+sbbrm5uTZO3Dpms8DjK/bCaBYY3iPYpU8X/de9w84cfSnC3jwefSEionpWLS8BAQFQqVQoLCxsdH9hYSFCQpr2Ie3u7o74+HhkZZ173g+NRgOtVtvo5kiW7MjBrpxT8NG4NaywTPU6B/pgXFw4AB59ISKif1i1vKjVavTt2xcbN25suM9sNmPjxo0YMGBAk76HyWTC3r17ERoaaq2Y0hQaqvHKzxkAgIeHd0OozjUmo2uOe6/sAqUC2JjBoy9ERFTP6qeNZs+ejYULF+Lzzz9Heno67rzzTlRUVOCWW24BAEybNg1z585t2P65557D+vXrcejQIezatQs33XQTjh49ittvv93aUW3u2R/2o6zGiN4Rfrh5QEfZcexSZOA/Y18+PH0ZORERuTY3az/BpEmTUFxcjHnz5qGgoABxcXFYt25dwyDenJwcKJX/dKiTJ09i5syZKCgoQJs2bdC3b19s3boVPXr0sHZUm9qYXoi1ewugUiow/9pYp1+7qDXuGNoZq1KPYe2+4zhcUoFOAd6yIxERkUQKIYSQHcKSDAYDdDod9Hq93Y5/qa4zYdjrvyP/VBX+NzgSc0d3lx3J7t26+G/8llGEG/u3x/wJsbLjEBGRhTXn89vurjZyBR9szkb+qSqE6Txwf2JX2XEcwp1DOwMAvk/OQ5GhWnIaIiKSieXFxnJLKxvGbjwxpge81FY/c+cULunoj34d2qDWZMaiLUdkxyEiIolYXmzs+R/TUGM0Y2DnthgdyzldmuOOIfVHX5ZsOwpDdZ3kNEREJAvLiw1tPlCE9WmFcFMq8OzYnlAoOEi3Oa6MDkK3YB+U1RixZFuO7DhERCQJy4uN1BrNeO6HNADAjIEd0TXYV3Iix6NUKhqOvizachg1RpPkREREJAPLi40s2nIYh0oqEOCj4SDdVrimdxhCtB4oLqvBT3uOy45DREQSsLzYQIG+Gu9szAQAzB0VDV8PLrzYUu4qJW4e0AEA8Olfh+FkV/oTEVETsLzYwPyf01FZa0LfDm1wbXy47DgOb0r/9vBwV2L/MQP+PnJSdhwiIrIxlhcrS8k5idWpx6BQAM+O7QklZ9JttTbeakzo0w4AsOivw5LTEBGRrbG8WJEQAi/8lA4AmNinHWLCdZITOY9bBnYEAKxPK0BuaaXcMEREZFMsL1a0dm8Bko+ehKe7Co+MiJIdx6l0DfbF4G6BMAtg8dYjsuMQEZENsbxYSXWdCfN/rj/qcseQzgjWekhO5HxuvawjAODbv3NRxknriIhcBsuLlSzeegR5J6sQovXAzMGdZMdxSoO7BqJzoDfKa4xYnpwnOw4REdkIy4sVlJTXYMFvWQCAR0ZEcf0iK1EqFZhxWX0x/HLbUV42TUTkIlherOCtDQdRVmNETLiWl0Zb2bXx4fBWq3CouAJJ2SdkxyEiIhtgebGwg4Vl+Hp7/bo7T43pwUujrcxH49Zw2fSX245KTkNERLbA8mJh/7c2HWYBjOwZgoTItrLjuIQzM+6uTytEgb5achoiIrI2lhcL+v1gMTYfKIa7SoE5o6Jlx3EZ3YJ9kdDJHyazwNc7uNo0EZGzY3mxEJNZYP7a+kujpw3oiI4B3pITuZYzR1++2ZGDOpNZchoiIrImlhcLWZ2aj4yCMvh6uOHeK7vIjuNyhvcIQaCvBsVlNVi/v1B2HCIisiKWFwuorjPh9fUHAQB3De0CPy+15ESuR+2mxI2XRAAAvtx2RG4YIiKyKpYXC/hq21Hkn6qfkO6W07O+ku3dmNAeKqUC2w6VIrOwTHYcIiKyEpaXVtJX1eG9TfUT0s2+qhs83FWSE7muUJ0nErsHAQCWbOfAXSIiZ8Xy0kof/Z6NU5V16Brkgwl9OCGdbFMT6gfurtiVh+o6k+Q0RERkDSwvrVCgr8aiLYcBAI+OjIabij9O2QZ1CUC4nycM1Ub8vO+47DhERGQF/LRthbc2HER1nRmXdGzTcLqC5FIqFZh0euDuNztyJachIiJrYHlpoayiMny3s/7Dcc6oaCgUXAbAXlzfrx2UCmDH4VJkF5fLjkNERBbG8tJCL687ALMAhvcIRt8O/rLj0L+E6jxxRVT9kbBv/+bRFyIiZ8Py0gI7j5Ti17RCKBXAoyOjZMehc5jcvz0A4PvkPNQaOeMuEZEzYXlpJiEEXvo5AwAw6ZIIdAnylZyIzuWKqEAEazU4UVGLX9M44y4RkTNheWmmDelF2Hn0JDzclbh/WDfZceg83FRKXN+3fuDu0r855wsRkTNheWkGo8mMl9fVH3W59bJOCNF5SE5EF3JDv/ry8mdmCXJLKyWnISIiS2F5aYbvd+Uhq6gcfl7uuGNoZ9lx6CLat/XCoC4BADhwl4jImbC8NFFVrQlv/poJALjnii7QerhLTkRNMbl//dGXZcm5MJo4cJeIyBmwvDTRtkMnUFRWjXA/T9w8oIPsONREV/UIhr+3GoWGGmw6UCw7DhERWQDLSxNdER2EdQ8MxqvX94LGjYsvOgqNmwoTT685dWZSQSIicmwsL83QLdgXAzsHyI5BzXT96YG7mzKKUFJeIzkNERG1FssLOb1uwb7o3U4Ho1lgVUq+7DhERNRKLC/kEq7r2w4AsDw5D0IIyWmIiKg1WF7IJYztHQ61SomMgjLsP2aQHYeIiFqB5YVcgs7LHVf1DAZQf/SFiIgcF8sLuYzrT586WpWajxqjSXIaIiJqKZYXchmXd61frPFUZR1+Sy+SHYeIiFqI5YVchkqpwIQ+9UdflvHUERGRw2J5IZdy5qqj3w8Wo8hQLTkNERG1BMsLuZTOgT7o094PJrPASs75QkTkkFheyOWcmXF3Ged8ISJySCwv5HLG9AqFh7sSWUXl2J2nlx2HiIiaieWFXI7Wwx0je4YAAJZxsUYiIofD8kIu6cypozW7j6G6jnO+EBE5EpYXckkDItsi3M8TZdVGrE8rlB2HiIiageWFXJJSqcCEPuEAgJW7OOcLEZEjYXkhl3VtfH15+SOzBMVlNZLTEBFRU7G8kMuKDPRBXET9nC9rdh+THYeIiJqI5YVc2sTTp45W8NQREZHDYHkhl3Z1rzC4qxTYf8yAAwVlsuMQEVETsLyQS2vjrcYVUUEAgBUpPPpCROQIWF7I5Z1ZaXpVSj5MZi4XQERk71heyOVdER0Inac7Cg012JpdIjsOERFdBMsLuTyNmwrX9A4FAKzcxZWmiYjsHcsLEf45dfTzvgJU1BglpyEiogtheSECEB/hh04B3qiqM2HdvgLZcYiI6AJYXogAKBSKhhl3V6bw1BERkT1jeSE67Ux52ZJdguP6KslpiIjofFheiE6L8PdC/47+EAJYncrlAoiI7BXLC9G/nFlp+vvkPAjBOV+IiOwRywvRv4yKDYXaTYnMonLsP2aQHYeIiM6B5YXoX3Se7riqRzAAYAXnfCEiskssL0T/cWal6TW781FnMktOQ0RE/8XyQvQfl3cNRFtvNUrKa/FnZrHsOERE9B82KS8LFixAx44d4eHhgYSEBOzYseOC2y9btgzR0dHw8PBAbGws1q5da4uYRAAAd5USY+PCAPDUERGRPbJ6efn2228xe/ZsPP3009i1axd69+6NESNGoKio6Jzbb926FTfeeCNuu+02pKSkYPz48Rg/fjz27dtn7ahEDSaeXi5gfVohDNV1ktMQEdG/KYSVrwdNSEjAJZdcgvfeew8AYDabERERgXvvvRdz5sw5a/tJkyahoqICP/74Y8N9l156KeLi4vDhhx9e9PkMBgN0Oh30ej20Wq3ldoRcihACw9/8A5lF5Xh5YiwmXdJediQiIqfWnM9vqx55qa2tRXJyMhITE/95QqUSiYmJSEpKOudjkpKSGm0PACNGjDjv9jU1NTAYDI1uRK2lUCgaFmv8PpmnjoiI7IlVy0tJSQlMJhOCg4Mb3R8cHIyCgnMvfldQUNCs7efPnw+dTtdwi4iIsEx4cnnj48OgUAA7jpQit7RSdhwiIjrN4a82mjt3LvR6fcMtNzdXdiRyEqE6Twzs3BYAF2skIrInVi0vAQEBUKlUKCwsbHR/YWEhQkJCzvmYkJCQZm2v0Wig1Wob3YgsZUJ8/amjlSn5XC6AiMhOWLW8qNVq9O3bFxs3bmy4z2w2Y+PGjRgwYMA5HzNgwIBG2wPAr7/+et7tiaxpZEwIPN1VOFxSgZTcU7LjEBERbHDaaPbs2Vi4cCE+//xzpKen484770RFRQVuueUWAMC0adMwd+7chu3vv/9+rFu3Dq+//joyMjLwzDPPYOfOnbjnnnusHZXoLN4aN4yKqT/qt2JXnuQ0REQE2KC8TJo0Ca+99hrmzZuHuLg4pKamYt26dQ2DcnNycnD8+PGG7QcOHIivv/4aH3/8MXr37o3ly5dj1apViImJsXZUonM6c9XRD7uPo8ZokpyGiIisPs+LrXGeF7I0k1ngspd+Q4GhGh/e1AcjY0JlRyIicjp2M88LkTNQKRUYF1+/XMD3XC6AiEg6lheiJjhz1dGmjCKUVtRKTkNE5NpYXoiaICrEFzHhWhjNAj/uOSY7DhGRS2N5IWqiM0dfeOqIiEgulheiJhobFwaVUoHduaeQVVQuOw4RkctieSFqogAfDYZ2CwQArEzhnC9ERLKwvBA1w7V9wgEAK3flw2x2qlkGiIgcBssLUTMkdg+Gr4cbjumrse3wCdlxiIhcEssLUTN4uKtwda/6SepWcuAuEZEULC9EzXRmuYC1e4+jqpbLBRAR2RrLC1Ez9evQBhH+nqioNWF9WoHsOERELoflhaiZFAoFruWcL0RE0rC8ELXAhPj6q47+yixGoaFachoiItfC8kLUAh0DvNG3QxuYBbA6lUdfiIhsieWFqIUmnJ7zZQVPHRER2RTLC1ELXR0bBrVKiYyCMqQdM8iOQ0TkMlheiFpI5+WOxB5BAIAVu7hcABGRrbC8ELXCmauOVqUeg9FklpyGiMg1sLwQtcKQboHw91ajpLwGf2aVyI5DROQSWF6IWkHtpsTY3mEAOHCXiMhWWF6IWunMVUfr9xfAUF0nOQ0RkfNzkx2AyNHFhuvQJcgHWUXlWLe3ADdcEiE7EjkhIQQKDTU4rq9Cgb4a5TVGmMwCJiHgrXZDG2812nqr0SnAG94a/mkn58bfcKJWUigUmNAnHK+sO4Dvd+WxvJBF1JnM2HnkJH4/WIw9eaewL18PQ7WxSY8N9/NEdIgvEiL9cWlkW/QM00GlVFg5MZHtsLwQWcD4uHC8+ssBbD9citzSSkT4e8mORA5ICIFth0rx3c5cbEwvPKusuCkVCPLVIFjnAZ2nO9yUSigVQEWtEaUVdSguq0ZJeS3yT1Uh/1QVNmYUAQDaeqsxMiYEY2JDkRDZlkWGHB7LC5EFhPl5YmDnttiSdQLf78rDA4ndZEciB1JdZ8LSHTn4IukoDpVUNNzv763G0KhAJHTyR0y4Dt2CfeGuuvBQxVOVtcgsKsfu3FPYdugEth8uxYmKWizZnoMl23MQ4e+JqQkdcEO/CPh7q629a0RWoRBCCNkhLMlgMECn00Gv10Or1cqOQy5kdWo+7l+ainA/T/z56BVQ8v9u6SJqjCZ8sz0H72/ORlFZDQDAW63C2LhwTOwTjvj2bVp9lKTOZEZS9gn8tOc4ft53vOFojsZNiRv7t8cdQzojROfR6n0haq3mfH6zvBBZSHWdCZe8uAFl1UYsuT0Bl3UJkB2J7NjvB4vx9Op9OHKiEgAQpvPAnUM7Y0KfdlYbcFtVa8IPe47hy6Sj2JuvBwCoVUpMSWiP+4d1RRseiSGJWF5YXkiSJ1buxZLtORgXF4a3J8fLjkN2qKS8Bk+t2oef9xUAAAJ9NXggsSuu69sOGjeVTTIIIbA1+wTe3pCJHUdKAQA6T3c8mNgVUy/tcNFTU0TWwPLC8kKS7M49hXELtkDjpsSOJxKh83SXHYnsyMb0Qjz2/R6UlNdCpVRgxsCOeCCxK3w95P2ebMkqwfM/piGjoAwA0C3YBy9P7IX49m2kZSLX1JzPb9ZrIgvq1U6HqGBf1BjN+GH3MdlxyE7UGs14evU+3Pb5TpSU1yIq2Bc/3DMIT13dQ2pxAYDLugTgp/sux4vXxsDfW42DheWY+MFWzF+bjuo6k9RsROfD8kJkQQqFAtf3q1+scdnOXMlpyB4Ul9Vg6ifb8HnSUQDAbYM6YfU9l6FHmP0cGVYpFZia0AG/PTQE18aHwyyAj/44hNHv/Il9p8fGENkTlhciC7s2PhxuSgV25+mRUWCQHYck2pN3CmPf+wt/HzkJX40bPp3eD09d3QMe7rYZ29Jcfl5qvDkpDgun9UOgrwaHiisw4f2t+DLpCJxshAE5OJYXIgtr66PBsO5BAIBlO/MkpyFZNqQV4oaPknBcX43IQG+suucyDOseLDtWk1zVIxi/PjgYid2DUGsy46nV+3H317tQxrW7yE6wvBBZwQ396pcIWJmSj1qjWXIasrXvdubif18lo7rOjKFRgVh192XoHOgjO1az+HmpsXBaPzw5pjvclAqs3VuACe9vxdETFRd/MJGVsbwQWcGQboEI9NWgtKIWv2UUyo5DNiKEwAebs/Ho8j0wmQUm9mmHhdP6QSt5UG5LKRQK3H55JJbdMQDBWg0yi8oxbsEWJGWfkB2NXBzLC5EVuKmUmNjnzMBdnjpyFW9uyMTL6zIAAP8bEonXru/lFHOmxLdvgzX3DELvdjqcqqzDzZ9ux3d/c0A6yeP47yoiO3XmqqNNB4pQaKiWnIas7c1fD+KdjZkAgDmjojF3VHcoFM6zRESw1gPf/m8AxvYOg9Es8Oj3e7BgUxYH8pIULC9EVtI50Ad9O7SBWQArduXLjkNW9NaGg3j7dHF5YnR33DGks+RE1uHhrsLbk+Nw19D6/Xv1lwN47sc0mM0sMGRbLC9EVnTDv+Z84f+hOqf3fsvEWxvqi8vjo6Mxc3Ck5ETWpVAo8OjIaMy7ugcA4LMtR/Dgd6moM3FgOtkOywuRFY3pFQYvtQqHSiqw43Cp7DhkYV8mHcFr6w8CAOaOisaswc55xOVcbh3UCW9PjoObUoHVqcdw79cpLDBkMywvRFbko3HDNb3CAADf7MiRnIYs6cc9xzBvzX4AwP3DuuJ/Tnqq6ELGxYVj4bR+UKuUWLe/APd8vYtTA5BNsLwQWdmUhPYAgLX7CnCyolZyGrKELVklePDbVAgB3HRpezyQ2FV2JGmuiA7CR9P6Qu2mxC/7C1lgyCZYXoisrFc7HXqGaVFrNOP7Xbxs2tHtzdNj1hc7UWcSGB0bgmfHxjjVVUUtcUVUED6+ub7ArE8rxL3f7IKRp5DIilheiKxMoVA0HH35ekcOB+46sNzSStyyeAcqak0Y2Lkt3pwUB5XStYvLGUOjgupPIZ0+AjNnxV5ehURWw/JCZANje58euFtcge0cuOuQyqrrcPvnO1FSXovuoVp8dHNfaNzsc4FFWYZ0C8R7N8ZDpVRgeXIe/m9tOss6WQXLC5EN+Hq4Y1xc/cDdr7dz4K6jMZrMuPebFBwoLEOQrwaLZvSDr4NO+W9tw3uG4OWJvQAAn/x1GO9vzpaciJwRywuRjUzp3wEAsG5fAUo5cNehvPBTOjYfKIaHuxKfTO+HUJ2n7Eh27bq+7fDkmO4A6ieyW7L9qORE5GxYXohsJLadDrHhOtSazPg+mQN3HcUXSUeweOsRAMBbk+LQq52f1DyO4vbLI3HPFV0AAE+t2scFSsmiWF6IbOjMwN1vOHDXIfyZWYxnTs/l8ujIKIyMCZWcyLE8NLwbJvWLgFkA93ydgv3H9LIjkZNgeSGyoWt6h8H79Iy7SYdOyI5DF5B/qgr3fZMCs6g/DXKnC05C11oKhQIvXBuDy7q0RWWtCbct3okCPRcppdZjeSGyIR+NG8bFhwPgwF17VmM04a4lu3Cysg6x4Tq8MJ5zubSUu0qJ96f2RdcgHxQYqnHb53+josYoOxY5OJYXIhub0r/+1NEv+wtQXFYjOQ2dy4s/pWN37inoPN3x/tQ+8HDnJdGtofN0x6IZlyDAR439xwy4f2kK54ChVmF5IbKxmHAd4iL8UGcSWMr1juzOqpR8fJFUf3XMW5PiEOHvJTmRc4jw98LCaf2gcVNiQ3oR3txwUHYkcmAsL0QSzBjYEQDw1fajXInXjhwsLMPcFXsBAPdd2QVXRAdJTuRc4tu3aZgD5t3fsrBu33HJichRsbwQSTAqNgQBPmoUGmqwfj8vIbUHZdV1uOPLZFTVmXB51wDcn9hNdiSnND4+HLcP6gQAmP3dbhwoKJOciBwRywuRBBo3VcPYl89PzyFC8ggh8Nj3e3CopAKhOg+8xTWLrGrOqOiGK5BmfbkT+so62ZHIwbC8EEky9dIOcFMqsONIKdKOGWTHcWmf/nUYa/cWwF2lwIKpfdDWRyM7klNzUynx7o190K6NJ46eqMR9S1Ng4gBeagaWFyJJgrUeGBkTAqB+FleS4+8jpXjp5wwAwFNX90Cf9m0kJ3IN/t5qfHxzP3i4K/H7wWIs2JQlOxI5EJYXIommnx64uyo1H6cqud6RrRWX1eDuJbtgNAuM7R2Gmy/tIDuSS+kRpsUL42MBAG9tOIit2SWSE5GjYHkhkqhfhzboEapFdZ0Z3/6dKzuOS6lfKXoXispq0DXIB/MnxHIiOgmu69sO1/dtB7MA7vsmFUVlnIGXLo7lhUgihULRcNn0l9uO8ry/Db22/iC2HSqFt1qFD27qC2+Nm+xILuu5cTGICvZFSXkN7v8mle8DuiiWFyLJxsaFoY2XO/JOVuHXtALZcVzC+v0F+PD3bADAK9f1RpcgH8mJXJunWoUFU/vAS61C0qETeHtjpuxIZOdYXogk83BX4abTYy0+/uOQ5DTO70hJBR5athsAcOtlnTCmF1eKtgddgnzwf9fWj39597dM/JXJ8S90fiwvRHZg2oCOUKuU2JVzCslHS2XHcVrVdSbcuWQXyqqN6NehDeaOjpYdif5lfHw4buwfASGA2d+lorSCg9jp3FheiOxAoK8G155ebXrhH4clp3FOQgg8uWof0o8bEOCjxntT+sBdxT+B9mbe1T3ROdAbRWU1eOz7PRCC41/obHznEtmJ2y+vnzL9l7QCHCmpkJzG+Xz7dy6WJ+dBqQDemRyPEJ2H7Eh0Dp5qFd6eHA93lQK/phViKa/Co3NgeSGyE12DfXFFVCCEqJ/xlSxnX74e89bsBwA8PCIKA7sESE5EFxITrsMjI6IAAM/9kIbs4nLJicjesLwQ2ZGZgyMBAMuSc3GS5/st4lRlLe74Khm1RjMSuwfjjsGdZUeiJrh9UCQGdm6LqjoTHliailojV1+nf7C8ENmRAZFtERNeP2ndl9uOyo7j8Mxmgdnf7UbeySq09/fC6zf0hpILLjoEpVKBN26Ig87THXvz9Xhrw0HZkciOsLwQ2RGFQoGZl9cffVm89Qgqa42SEzm29zdn4beMImjclPjgpj7QebrLjkTNEKLzwEsT6i+f/uD3bGw7dEJyIrIXVi0vpaWlmDp1KrRaLfz8/HDbbbehvPzC5y6HDh0KhULR6HbHHXdYMyaRXRkTG4oObb1QWlGLr7fnyI7jsP7KLMHrv9b/3/rz42PQM0wnORG1xKjYUEzqV3/59MPLdqO8hoWerFxepk6div379+PXX3/Fjz/+iD/++AOzZs266ONmzpyJ48ePN9xeeeUVa8YksituKiXuGlo/LuPjPw6hus4kOZHjOa6vwn1LUyAEMKlfBG7oFyE7ErXCU9f0QLifJ/JOVmH+2nTZccgOWK28pKenY926dfjkk0+QkJCAQYMG4d1338XSpUtx7NixCz7Wy8sLISEhDTetVmutmER26dr4dgjTeaCorAbLdvJS0eaoNZpx15JdKK2oRc8wLZ4d11N2JGolH40bXr2uFwBgyfYc/JlZLDkRyWa18pKUlAQ/Pz/069ev4b7ExEQolUps3779go9dsmQJAgICEBMTg7lz56KysvK829bU1MBgMDS6ETk6tZsSd5w++vLh74d4pUUz/N/adKTknILWww0fTO0LD3eV7EhkAQO7BGDagPplNB5bvgeG6jrJiUgmq5WXgoICBAUFNbrPzc0N/v7+KCg4/+JzU6ZMwVdffYVNmzZh7ty5+PLLL3HTTTedd/v58+dDp9M13CIieHiYnMMN/SIQ6KtB/qkqrErJlx3HIaxOzcfirUcAAG9OikP7tl5yA5FFzRkVjfb+Xjimr8aLP/L0kStrdnmZM2fOWQNq/3vLyMhocaBZs2ZhxIgRiI2NxdSpU/HFF19g5cqVyM7OPuf2c+fOhV6vb7jl5vIQOzkHD3cVZp2+8uj9zVkwmnj05ULSjxvw2Pd7AAD3XtkFw7oHS05ElualdsNr1/eGQgF8uzMXmzKKZEciSZpdXh566CGkp6df8BYZGYmQkBAUFTX+xTIajSgtLUVISEiTny8hIQEAkJWVdc6vazQaaLXaRjciZzEloT3aeLnjyIlKrE698FgxV6avqsMdXyWjus6Mwd0C8UBiN9mRyEr6d/LHLQPrl9KYs2IP9JU8feSK3Jr7gMDAQAQGBl50uwEDBuDUqVNITk5G3759AQC//fYbzGZzQyFpitTUVABAaCiXrSfX461xw8zBkXhl3QG8tfEgrukdBrUbp2f6N7NZYPa3qTh6ohLhfp54e1IcVJyIzqk9MiIKmw8U4VBJBZ7/KQ2vXd9bdiSyMav9FezevTtGjhyJmTNnYseOHdiyZQvuueceTJ48GWFhYQCA/Px8REdHY8eOHQCA7OxsPP/880hOTsaRI0ewZs0aTJs2DYMHD0avXr2sFZXIrs0Y2BEBPhrkllbh278578t/vbcpCxsziqB2U+Kjm/uijbdadiSyMk+1Cq9c1wsKBbA8OQ9/ZZbIjkQ2ZtX/hVuyZAmio6MxbNgwjB49GoMGDcLHH3/c8PW6ujocOHCg4WoitVqNDRs2YPjw4YiOjsZDDz2EiRMn4ocffrBmTCK75qV2w33DugAA3vktC1W1nPfljM0HivDm6WnjXxgfg5hwTkTnKvp19MfNl9ZfffT4yr18X7gYhRBCyA5hSQaDATqdDnq9nuNfyGnUGs248vXNyDtZhcdGRuPOoVxcMLe0Ele/+xf0VXWYktAe/3dtrOxIZGNl1XUY/uYfOK6vxqzBkXh8dHfZkagVmvP5zZPnRA5A7abEg6cHoX74ezb0Va49SLGixohZXyZDX1WH3hF+ePqaHrIjkQS+Hu54YXwMAOCTPw9hb55eciKyFZYXIgcxPj4cXYN8oK+qwwebzz11gCswmwUe+m430o8bEOCjxgdT+0DjxonoXNWw7sG4pncYzAJ47Ps9qOOUAi6B5YXIQaiUCjw6MhoAsOivw8g5cf6Zp53ZWxszsW5/AdSq+gG6YX6esiORZE9f0wN+Xu5IO27AJ38elh2HbIDlhciBJHYPwmVd2qLWZMb8n11vhtGf9hzHOxszAQAvXhuDvh38JSciexDgo8GTY+pPHb614SAOl1RITkTWxvJC5EAUCgWeuroHlArg530F2HbohOxINrMvX4+HlqUCAG4f1AnXc6Vo+peJfcJxedcA1BjNmLtiD5zsWhT6D5YXIgcTHaLFlIT2AIBnf0iDyez8f6SLDNWY+cVOVNeZMaRbIObyqhL6D4VCgf+7NhYe7kpsO1SKlVwPzKmxvBA5oNlXRUHr4Yb04wZ8+7dzr+dVXmPEjM/+xnF9NToHeuPdKfGcQZfOKcLfC/de2RUA8OJP6ThVWSs5EVkLywuRA/L3Vjes3/PyugyUlNdITmQddSYz7lqyC2mnryz6bEZ/aD3cZcciOzbz8kh0CfLBiYpavPLLAdlxyEpYXogc1LQBHdAjVAt9VR2e+yFNdhyLE0LgiZV78cfBYni6q/Dp9EvQvq2X7Fhk59Ruyoa5X77ZkYOUnJOSE5E1sLwQOSg3lRIvTYyFUgGs2X0Mmw4UXfxBDuSdjVn4bmcelArgvSnx6B3hJzsSOYhLI9tiQp9wCAE8sXIfjJz7xemwvBA5sF7t/HDLZZ0AAE+u3IeKGqPkRJbx9fachjWLnh8fg2HdgyUnIkfz+Oju0HnWz/3yRdJR2XHIwlheiBzc7Ku6IdzPE/mnqvB/ax1/7peVKXl4YtVeAMDdV3TG1IQOkhORIwrw0eCx05M6vr7+AAr01ZITkSWxvBA5OG+NG16e2AsAsGR7DjakFUpO1HLr9hXg4WV7IAQwfUAHPDw8SnYkcmCTL4lAfHs/VNSa8PyPzjcuzJWxvBA5gUFdA3DboPrTR499vwfFZY539dHvB4tx7ze7YDILXNe3HZ6+picUCl4STS2nVCrwwvgYKBXAT3uP4/eDxbIjkYWwvBA5iUdGRCE6xBcnKmrx6PLdMDvQ5HWbMoow84udqDMJjIkNxcsTe0HJuVzIAnqG6TBjYH2xf3r1PtQYTZITkSWwvBA5CQ93Fd6eHA+1mxKbDhTj/c1ZsiM1ybp9BZj15U7UGs24qkcw3pwUx0noyKJmD++GQF8Njpyo5MKNToLlhciJRIX44rmxPQEAr/960O4vn16dmo+7v95Vf8SlVyjen9oHajf+WSLL8tG4Ye6o+sG77/2WheP6KsmJqLX4V4LIyUzu3x439m8PIYD7v0nBoeJy2ZHOIoTAJ38ewgPfpsJkFpjYpx3emRwPdxX/JJF1XBsfjr4d2qCqzoT5azNkx6FW4l8KIif0zNgeiG/vB0O1EdMW7UCRwX4uEzWZBZ5Zsx8v/JQOIepnCn71ul48VURWpVAo8OzYnlCcntRxuwutyO6MWF6InJDGTYWF0/qhY1sv5J2swvTP/oahuk52LJTXGPG/L5Px+elJwx4fHY1nx/bk4FyyiZhwHW7sX78i+9Nr9nPmXQfG8kLkpAJ8NPji1gQE+GiQftyAaZ/ugL5SXoE5WFiGse/9hQ3phVC7KbFgSh/MGtyZl0OTTT0yPAo6T3dkFJTh6x05suNQC7G8EDmx9m298Pmtl8DPyx2puacweeE2m69ALYTAqpR8jHtvCw4VVyBE64Glsy7FmF6hNs1BBABtvNV4eHj9iuyvrz+I0opayYmoJVheiJxczzAdvp01AIG+9UdgJry/FenHDTZ57hPlNbj761144NtUVNWZMKhLAH66bxD6tG9jk+cnOpcpCR3Q/fSK7K/+ckB2HGoBlhciFxAV4ovv/jcAEf6eyCmtxIT3t2J1ar7Vnk8IgdWp+Rj+5h9Yu7cAbkoFHkzshs9v7Y+2PhqrPS9RU6iU9YN3AWDp3znYm6eXnIiai+WFyEV0CvDGD/cMwuVdA1BVZ8L9S1Nx51fJFr8SaVfOSUz4YCvuX5qKExW1iAr2xaq7L8P9iV15RRHZjf6d/DEuLgxCAE+v2edQM1IToBBCONUrZjAYoNPpoNfrodVqZcchsjsms8DbGzPx/qYsGM0Cvh5uuGNIZ8wY2BHeGrcWfU8hBLYdKsWHv2c3rB/jpVbhrqGdMXNwJDRuKkvuApFFFOirceXrm1FZa8Lr1/fGxL7tZEdyac35/GZ5IXJRaccMmLNiD/acPmTu5+WOiX3aYWKfduge6nvRq4CEEDhyohJr9x7HypR8ZBXVT4anVAAT+7TDIyOiEKT1sPp+ELXGB5uz8fK6DARrNdj08FB4qVtW4Kn1WF5YXoiaxGQW+GH3Mby14SCOnKhsuD9E64F+Hduge6gWwVoPaD3cYDQLVNaakFtaiUMlFUg+Uopj+n9OOWnclLi+XzvMvDwSHdp6y9gdomarMZpw1Rt/IKe0EvcN64rZV3WTHcllsbywvBA1i8ks8MfBYnyzIwd/ZBajuq5pk3e5qxS4pKM/xseFY2RsCLQe7lZOSmR5P+89jjuX7ILGTYnfHh6KcD9P2ZFcUnM+v3l8jIigUipwRXQQrogOQnWdCX8fKcW+fAMyC8tQXF6Dsmoj1ColNO5KhOk80THAGz3DtLikoz881RzPQo5tZEwI+nfyx47DpXhlXQbenhwvOxJdBI+8EBGRy9uXr8c17/0FIYAVdw3kXEQSNOfzm5dKExGRy4sJ1+H601cbPfdDGpzs/+udDssLERERgIeHR8FbrUJq7ims2X1Mdhy6AJYXIiIiAEFaD9x1RRcAwEs/Z6Cq1iQ5EZ0PywsREdFptw3qhHA/TxzXV2Phn4dkx6HzYHkhIiI6zcNdhbmjowHUT2BXoLfs8hlkGSwvRERE/zImNhT9OrRBVZ0Jr/ySITsOnQPLCxER0b8oFAo8dXUPAMCKXfnYnXtKbiA6C8sLERHRf/SO8MOEPuEAgOd/5KXT9oblhYiI6BweHRENT3cVdh49iR/3HJcdh/6F5YWIiOgcQnQeuHNoZwD1l05X1/HSaXvB8kJERHQeMy+PRKjOA/mnqrBoy2HZceg0lhciIqLz8FSr8OjIKADA+5uyUVxWIzkRASwvREREFzSudzh6t9OhvMaIN349IDsOgeWFiIjogpTKfy6d/vbvXKQfN0hORCwvREREF9Gvoz/G9AqFWQAv/pTOS6clY3khIiJqgjkjo6FWKfFXVgl+yyiSHcelsbwQERE1QYS/F24d1AkA8OLadNSZzJITuS6WFyIioia6+4rOaOutxqHiCizZdlR2HJfF8kJERNREvh7umD28GwDgrY2Z0FfWSU7kmlheiIiImmFSvwhEBfviVGUd3t6YKTuOS2J5ISIiagY3lRJPXt0dAPBF0hEcKi6XnMj1sLwQERE10+VdA3FldBCMZoH5P2fIjuNyWF6IiIha4PHR0VApFfg1rRBbs0tkx3EpLC9EREQt0CXIFzcltAcAPP9jOkxmTlxnKywvRERELfRAYjdoPdyQftyA5cm5suO4DJYXIiKiFmrjrcZ9w7oCAF5bfxDlNUbJiVwDywsREVErTBvQER3beqG4rAYfbs6WHcclsLwQERG1gtpNibmj6y+dXvjnIeSfqpKcyPmxvBAREbXS8B7BuDTSHzVGM17mpdNWx/JCRETUSgqFAk+O6QGFAliz+xh25ZyUHcmpsbwQERFZQEy4Dtf1aQcAeOHHNAjBS6etheWFiIjIQh4ZEQUvtQq7ck7hhz3HZcdxWiwvREREFhKk9cCdQzoDAF7+OQPVdSbJiZwTywsREZEF3X55JEJ1Hsg/VYVP/zosO45TYnkhIiKyIE+1Co+NjAYAvL8pC0Vl1ZITOR+WFyIiIgsb2zsMvSP8UFFrwhvrD8qO43RYXoiIiCxMqVTgqTH1E9d9uzMXaccMkhM5F5YXIiIiK+jX0R9jeoVCCODFtbx02pJYXoiIiKxkzshoqN2U2JJ1AhvTi2THcRpWKy8vvvgiBg4cCC8vL/j5+TXpMUIIzJs3D6GhofD09ERiYiIyMzOtFZGIiMiqIvy9cNugTgCA/1ubjlqjWXIi52C18lJbW4vrr78ed955Z5Mf88orr+Cdd97Bhx9+iO3bt8Pb2xsjRoxAdTVHahMRkWO6a2hnBPiocaikAku2H5UdxylYrbw8++yzePDBBxEbG9uk7YUQeOutt/Dkk09i3Lhx6NWrF7744gscO3YMq1atslZMIiIiq/L1cMfsq6IAAG9tyMSpylrJiRyf3Yx5OXz4MAoKCpCYmNhwn06nQ0JCApKSks77uJqaGhgMhkY3IiIiezLpkghEh/hCX1WHtzdyOERr2U15KSgoAAAEBwc3uj84OLjha+cyf/586HS6hltERIRVcxIRETWXSlm/6jQAfJl0FNnF5ZITObZmlZc5c+ZAoVBc8JaRkWGtrOc0d+5c6PX6hltubq5Nn5+IiKgpBnUNwJXRQTCaBeavTZcdx6G5NWfjhx56CDNmzLjgNpGRkS0KEhISAgAoLCxEaGhow/2FhYWIi4s77+M0Gg00Gk2LnpOIiMiWHh/dHX8cLMaG9CJsPlCEoVFBsiM5pGaVl8DAQAQGBlolSKdOnRASEoKNGzc2lBWDwYDt27c364olIiIie9UlyAczBnbEJ38dxrM/pGFA57bQuKlkx3I4VhvzkpOTg9TUVOTk5MBkMiE1NRWpqakoL//nPF90dDRWrlwJAFAoFHjggQfwwgsvYM2aNdi7dy+mTZuGsLAwjB8/3loxiYiIbOr+xK4I9NXgcEkFPvmTq063RLOOvDTHvHnz8Pnnnzf8Oz4+HgCwadMmDB06FABw4MAB6PX6hm0effRRVFRUYNasWTh16hQGDRqEdevWwcPDw1oxiYiIbMrXwx2Pj47Gg9/uxnu/ZWF8fDjC/Txlx3IoCuFkiy0YDAbodDro9XpotVrZcYiIiM4ihMCkj7Zhx5FSjIkNxYKpfWRHkq45n992c6k0ERGRq1AoFHh2XE8oFcBPe4/jr8wS2ZEcCssLERGRBN1DtZg2oCMA4Ok1+7juUTOwvBAREUny4FXd0NZbjeziCizeysG7TcXyQkREJInO0x2PjYoGALy9IROFBi5E3BQsL0RERBJd16cd4tv7oaLWhP/jzLtNwvJCREQkkVKpwPPjYqBQAKtTj2FrNgfvXgzLCxERkWQx4TpMTWgPAHhy5T5U15kkJ7JvLC9ERER24JER0Qj01eBQSQU+2JwtO45dY3khIiKyAzpPdzxzTU8AwAebs5FVVH6RR7gulhciIiI7MTo2BFdEBaLWZMbjK/fCbHaqSfAthuWFiIjITigUCjw3Lgae7irsOFyK5cl5siPZJZYXIiIiOxLh74XZV3UDALy4Nh0l5TWSE9kflhciIiI7c8tlHdEjVAt9VR1e+DFNdhy7w/JCRERkZ9xUSsyfEAuFAliVegx/ZhbLjmRXWF6IiIjsUO8IP0w/vXDj3BV7UVFjlBvIjrC8EBER2amHR0Qh3M8TeSer8PK6DNlx7AbLCxERkZ3y0bjh5Ym9AABfJB1FUvYJyYnsA8sLERGRHRvUNQA39q9fOuDR73ejspanj1heiIiI7Nzjo6MRpvNAbmkVXll3QHYc6VheiIiI7JyvhzteOn36aPHWI9h2yLVPH7G8EBEROYDB3QIx+ZIIAMCjy/e49OkjlhciIiIH8fiY7gjVeSCntBIv/JQuO440LC9EREQOQuvhjteu7w0A+Hp7Dn5NK5ScSA6WFyIiIgdyWZcAzLy8EwDgse/3oKisWnIi22N5ISIicjAPj4hC91AtSitq8ciyPRBCyI5kUywvREREDkbjpsLbk+OgcVPi94PF+HLbUdmRbIrlhYiIyAF1C/bF3FHRAIAXf0rHgYIyyYlsh+WFiIjIQU0f2BFDugWixmjGXUuSXWbxRpYXIiIiB6VQKPDGDb0RovVAdnEFHl+51yXGv7C8EBERObC2Phq8OyUeKqUCq1OP4ZsdubIjWR3LCxERkYO7pKM/Hh0RBQB45of92Jevl5zIulheiIiInMDMyyOR2D0ItUYz7v56FwzVdbIjWQ3LCxERkRNQKhV47freCPfzxNETlbj/mxSYzM45/oXlhYiIyEn4eanx4U19oXFTYtOBYrzyS4bsSFbB8kJEROREYtvp8Orp9Y8++v0QVqbkSU5keSwvRERETmZs7zDcfUVnAMBj3+9FSs5JyYksi+WFiIjICT10VRSu6hGMWqMZs75MRm5ppexIFsPyQkRE5ISUSgXenBSH6BBfFJfVYPqiHSitqJUdyyJYXoiIiJyUj8YNi2/pj3A/TxwqqcCti/9GZa3jLyHA8kJEROTEQnQe+PzWS6DzdEdq7inc83UKjCaz7FitwvJCRETk5LoE+WLRjH7QuCnxW0YRHl6226HngGF5ISIicgF9O/jjvSl9oFIqsCr1GB5Z7rgFhuWFiIjIRVzVIxjv3li/iOOKXfl47Ps9MDtggWF5ISIiciGjY0Px9uQ4qJQKLE/Ow8PLdqPOwcbAsLwQERG5mKt7heHNSfUFZkVKPmZ9sdOhrkJieSEiInJBY3uH4eOb+8LDvX4dpCkLtzvMPDAsL0RERC5qWPdgLLn9Uvh51V9GPeH9LThYWCY71kWxvBAREbmwvh3aYPkdAxDu54kjJypx7YItWLfvuOxYF8TyQkRE5OK6BPlizT2XYUBkW1TUmnDHV7vwwo9pqK4zyY52TiwvREREhLY+Gnx5W3/cNqgTAOCTvw5j/IItSD9ukJzsbCwvREREBABwUynx1NU98Mm0fmjrrUZGQRnGvbcFr/6SYVdXI7G8EBERUSOJPYLxy4ODkdg9GLUmMxZsysaw13/H6tR8u5iVVyGEkJ/CggwGA3Q6HfR6PbRarew4REREDksIgV/TCvHcj2nIO1kFAOga5IP7hnXF6NhQqJQKiz1Xcz6/eeSFiIiIzkmhUGB4zxBsmD0ED13VDb4ebsgsKscza/ajxihvMK+btGcmIiIih+DhrsK9w7pi2sCOWLzlCPx91PBSy6sQLC9ERETUJDpPd9yf2FV2DJ42IiIiIsfC8kJEREQOheWFiIiIHArLCxERETkUlhciIiJyKCwvRERE5FBYXoiIiMihsLwQERGRQ2F5ISIiIofC8kJEREQOheWFiIiIHArLCxERETkUlhciIiJyKE63qrQQAgBgMBgkJyEiIqKmOvO5feZz/EKcrryUlZUBACIiIiQnISIiouYqKyuDTqe74DYK0ZSK40DMZjOOHTsGX19fKBQKi35vg8GAiIgI5ObmQqvVWvR72wNn3z/A+feR++f4nH0fuX+Oz1r7KIRAWVkZwsLCoFReeFSL0x15USqVaNeunVWfQ6vVOu0vJeD8+wc4/z5y/xyfs+8j98/xWWMfL3bE5QwO2CUiIiKHwvJCREREDoXlpRk0Gg2efvppaDQa2VGswtn3D3D+feT+OT5n30fun+Ozh310ugG7RERE5Nx45IWIiIgcCssLERERORSWFyIiInIoLC9ERETkUFhe/uXFF1/EwIED4eXlBT8/vyY9RgiBefPmITQ0FJ6enkhMTERmZmajbUpLSzF16lRotVr4+fnhtttuQ3l5uRX24OKam+XIkSNQKBTnvC1btqxhu3N9fenSpbbYpUZa8rMeOnToWdnvuOOORtvk5ORgzJgx8PLyQlBQEB555BEYjUZr7so5NXf/SktLce+99yIqKgqenp5o37497rvvPuj1+kbbyXz9FixYgI4dO8LDwwMJCQnYsWPHBbdftmwZoqOj4eHhgdjYWKxdu7bR15vynrSl5uzfwoULcfnll6NNmzZo06YNEhMTz9p+xowZZ71WI0eOtPZuXFBz9nHx4sVn5ffw8Gi0jSO/huf6e6JQKDBmzJiGbezpNfzjjz9wzTXXICwsDAqFAqtWrbroYzZv3ow+ffpAo9GgS5cuWLx48VnbNPd93WyCGsybN0+88cYbYvbs2UKn0zXpMS+99JLQ6XRi1apVYvfu3WLs2LGiU6dOoqqqqmGbkSNHit69e4tt27aJP//8U3Tp0kXceOONVtqLC2tuFqPRKI4fP97o9uyzzwofHx9RVlbWsB0A8dlnnzXa7t8/A1tpyc96yJAhYubMmY2y6/X6hq8bjUYRExMjEhMTRUpKili7dq0ICAgQc+fOtfbunKW5+7d3714xYcIEsWbNGpGVlSU2btwounbtKiZOnNhoO1mv39KlS4VarRaLFi0S+/fvFzNnzhR+fn6isLDwnNtv2bJFqFQq8corr4i0tDTx5JNPCnd3d7F3796GbZrynrSV5u7flClTxIIFC0RKSopIT08XM2bMEDqdTuTl5TVsM336dDFy5MhGr1Vpaamtdukszd3Hzz77TGi12kb5CwoKGm3jyK/hiRMnGu3bvn37hEqlEp999lnDNvb0Gq5du1Y88cQTYsWKFQKAWLly5QW3P3TokPDy8hKzZ88WaWlp4t133xUqlUqsW7euYZvm/sxaguXlHD777LMmlRez2SxCQkLEq6++2nDfqVOnhEajEd98840QQoi0tDQBQPz9998N2/z8889CoVCI/Px8i2e/EEtliYuLE7feemuj+5ryS29tLd2/IUOGiPvvv/+8X1+7dq1QKpWN/sB+8MEHQqvVipqaGotkbwpLvX7fffedUKvVoq6uruE+Wa9f//79xd13393wb5PJJMLCwsT8+fPPuf0NN9wgxowZ0+i+hIQE8b///U8I0bT3pC01d//+y2g0Cl9fX/H555833Dd9+nQxbtw4S0dtsebu48X+vjrba/jmm28KX19fUV5e3nCfvb2GZzTl78Cjjz4qevbs2ei+SZMmiREjRjT8u7U/s6bgaaNWOHz4MAoKCpCYmNhwn06nQ0JCApKSkgAASUlJ8PPzQ79+/Rq2SUxMhFKpxPbt222a1xJZkpOTkZqaittuu+2sr919990ICAhA//79sWjRoiYta25Jrdm/JUuWICAgADExMZg7dy4qKysbfd/Y2FgEBwc33DdixAgYDAbs37/f8jtyHpb6XdLr9dBqtXBza7y0ma1fv9raWiQnJzd6/yiVSiQmJja8f/4rKSmp0fZA/WtxZvumvCdtpSX791+VlZWoq6uDv79/o/s3b96MoKAgREVF4c4778SJEycsmr2pWrqP5eXl6NChAyIiIjBu3LhG7yNnew0//fRTTJ48Gd7e3o3ut5fXsLku9h60xM+sKZxuYUZbKigoAIBGH2pn/n3mawUFBQgKCmr0dTc3N/j7+zdsYyuWyPLpp5+ie/fuGDhwYKP7n3vuOVx55ZXw8vLC+vXrcdddd6G8vBz33XefxfJfTEv3b8qUKejQoQPCwsKwZ88ePPbYYzhw4ABWrFjR8H3P9Rqf+ZqtWOL1KykpwfPPP49Zs2Y1ul/G61dSUgKTyXTOn21GRsY5H3O+1+Lf77cz951vG1tpyf7912OPPYawsLBGHwQjR47EhAkT0KlTJ2RnZ+Pxxx/HqFGjkJSUBJVKZdF9uJiW7GNUVBQWLVqEXr16Qa/X47XXXsPAgQOxf/9+tGvXzqlewx07dmDfvn349NNPG91vT69hc53vPWgwGFBVVYWTJ0+2+ve+KZy+vMyZMwcvv/zyBbdJT09HdHS0jRJZXlP3sbWqqqrw9ddf46mnnjrra/++Lz4+HhUVFXj11Vct8uFn7f379wd5bGwsQkNDMWzYMGRnZ6Nz584t/r5NZavXz2AwYMyYMejRoweeeeaZRl+z5utHLfPSSy9h6dKl2Lx5c6MBrZMnT27479jYWPTq1QudO3fG5s2bMWzYMBlRm2XAgAEYMGBAw78HDhyI7t2746OPPsLzzz8vMZnlffrpp4iNjUX//v0b3e/or6E9cPry8tBDD2HGjBkX3CYyMrJF3zskJAQAUFhYiNDQ0Ib7CwsLERcX17BNUVFRo8cZjUaUlpY2PL61mrqPrc2yfPlyVFZWYtq0aRfdNiEhAc8//zxqampavf6FrfbvjISEBABAVlYWOnfujJCQkLNGyhcWFgKARV5DW+xfWVkZRo4cCV9fX6xcuRLu7u4X3N6Sr9/5BAQEQKVSNfwszygsLDzv/oSEhFxw+6a8J22lJft3xmuvvYaXXnoJGzZsQK9evS64bWRkJAICApCVlWXzD77W7OMZ7u7uiI+PR1ZWFgDneQ0rKiqwdOlSPPfccxd9HpmvYXOd7z2o1Wrh6ekJlUrV6t+JJrHY6Bkn0twBu6+99lrDfXq9/pwDdnfu3NmwzS+//CJ1wG5LswwZMuSsq1TO54UXXhBt2rRpcdaWsNTP+q+//hIAxO7du4UQ/wzY/fdI+Y8++khotVpRXV1tuR24iJbun16vF5deeqkYMmSIqKioaNJz2er169+/v7jnnnsa/m0ymUR4ePgFB+xeffXVje4bMGDAWQN2L/SetKXm7p8QQrz88stCq9WKpKSkJj1Hbm6uUCgUYvXq1a3O2xIt2cd/MxqNIioqSjz44INCCOd4DYWo/xzRaDSipKTkos8h+zU8A00csBsTE9PovhtvvPGsAbut+Z1oUlaLfScncPToUZGSktJwKXBKSopISUlpdElwVFSUWLFiRcO/X3rpJeHn5ydWr14t9uzZI8aNG3fOS6Xj4+PF9u3bxV9//SW6du0q9VLpC2XJy8sTUVFRYvv27Y0el5mZKRQKhfj555/P+p5r1qwRCxcuFHv37hWZmZni/fffF15eXmLevHlW35//au7+ZWVlieeee07s3LlTHD58WKxevVpERkaKwYMHNzzmzKXSw4cPF6mpqWLdunUiMDBQ2qXSzdk/vV4vEhISRGxsrMjKymp0aabRaBRCyH39li5dKjQajVi8eLFIS0sTs2bNEn5+fg1Xdt18881izpw5Ddtv2bJFuLm5iddee02kp6eLp59++pyXSl/sPWkrzd2/l156SajVarF8+fJGr9WZv0FlZWXi4YcfFklJSeLw4cNiw4YNok+fPqJr1642LdKt2cdnn31W/PLLLyI7O1skJyeLyZMnCw8PD7F///6GbRz5NTxj0KBBYtKkSWfdb2+vYVlZWcNnHQDxxhtviJSUFHH06FEhhBBz5swRN998c8P2Zy6VfuSRR0R6erpYsGDBOS+VvtDPzBJYXv5l+vTpAsBZt02bNjVsg9PzYZxhNpvFU089JYKDg4VGoxHDhg0TBw4caPR9T5w4IW688Ubh4+MjtFqtuOWWWxoVIlu6WJbDhw+ftc9CCDF37lwREREhTCbTWd/z559/FnFxccLHx0d4e3uL3r17iw8//PCc21pbc/cvJydHDB48WPj7+wuNRiO6dOkiHnnkkUbzvAghxJEjR8SoUaOEp6enCAgIEA899FCjS41tpbn7t2nTpnP+TgMQhw8fFkLIf/3effdd0b59e6FWq0X//v3Ftm3bGr42ZMgQMX369Ebbf/fdd6Jbt25CrVaLnj17ip9++qnR15vynrSl5uxfhw4dzvlaPf3000IIISorK8Xw4cNFYGCgcHd3Fx06dBAzZ8606IdCSzRnHx944IGGbYODg8Xo0aPFrl27Gn0/R34NhRAiIyNDABDr168/63vZ22t4vr8RZ/Zp+vTpYsiQIWc9Ji4uTqjVahEZGdnoM/GMC/3MLEEhhI2vZyUiIiJqBc7zQkRERA6F5YWIiIgcCssLERERORSWFyIiInIoLC9ERETkUFheiIiIyKGwvBAREZFDYXkhIiIih8LyQkRERA6F5YWIiIgcCssLERERORSWFyIiInIo/w+hr6XHc6cu1gAAAABJRU5ErkJggg=="
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"xs = jnp.linspace(-1, 1, 1000)\n",
"ys = batch_forward(state, attrs1, xs)\n",
"from matplotlib import pyplot as plt\n",
"plt.plot(xs, ys)"
],
"metadata": {
"collapsed": false,
"ExecuteTime": {
"end_time": "2024-06-02T09:36:57.676981900Z",
"start_time": "2024-06-02T09:36:57.316397400Z"
}
},
"id": "a46b132c08bd2498"
},
{
"cell_type": "code",
"execution_count": 27,
"outputs": [
{
"data": {
"text/plain": "[<matplotlib.lines.Line2D at 0x7f22c52c0550>]"
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"text/plain": "<Figure size 640x480 with 1 Axes>",
"image/png": "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"
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"xs = jnp.linspace(-1, 1, 1000)\n",
"ys = batch_forward(state, new_attrs, xs)\n",
"from matplotlib import pyplot as plt\n",
"plt.plot(xs, ys)"
],
"metadata": {
"collapsed": false,
"ExecuteTime": {
"end_time": "2024-06-02T09:36:58.851566700Z",
"start_time": "2024-06-02T09:36:58.703939500Z"
}
},
"id": "180afd131908efc4"
},
{
"cell_type": "code",
"execution_count": 10,
"outputs": [],
"source": [],
"metadata": {
"collapsed": false,
"ExecuteTime": {
"end_time": "2024-06-02T09:34:35.072643400Z",
"start_time": "2024-06-02T09:34:35.065130500Z"
}
},
"id": "ecf586f7a7f90110"
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.6"
}
},
"nbformat": 4,
"nbformat_minor": 5
}