{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Running simulations in parallel\n", "\n", "In this tutorial we show how the number of threads can be specified when simulations are executed in parallel. We start by defining a simple system object." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import discretisedfield as df\n", "import micromagneticmodel as mm\n", "\n", "import oommfc as mc\n", "\n", "region = df.Region(p1=(-50e-9, -50e-9, 0), p2=(50e-9, 50e-9, 10e-9))\n", "mesh = df.Mesh(region=region, cell=(5e-9, 5e-9, 5e-9))\n", "\n", "system = mm.System(name=\"mindriver_steps\")\n", "\n", "system.energy = mm.Exchange(A=1e-12) + mm.Zeeman(H=(0, 0, 1e5)) + mm.Demag()\n", "system.dynamics = mm.Precession(gamma0=mm.consts.gamma0) + mm.Damping(alpha=0.5)\n", "system.m = df.Field(mesh, dim=3, value=(1, 0, 0), norm=1.1e6)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We are now going to drive the system using `TimeDriver` for $2\\,\\text{ns}$ and save the magnetisation in 200 steps. When we pass those arguments to the `drive` method, we can also specify `n_threads`. `n_threads` is a positive `int` which specifies how many threads are going to be used in simulation." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Running OOMMF (ExeOOMMFRunner)[2022/02/18 18:13]... (1.7 s)\n" ] } ], "source": [ "td = mc.TimeDriver()\n", "td.drive(system, t=2e-9, n=200, n_threads=4)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can finally plot the magnetisation." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkYAAAC9CAYAAABWF7KfAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAABR5UlEQVR4nO3dd3hUVfrA8e+9d3rJpEISSggBBKWDBZcFBPtiWQULVmyguPaOCIIoLoqKiiysq1J0lbKCbRfbD3UVFEWRBaQk9JpeZzLl/v6YMDAkmUwmCQR8P88zz2TuvXPmzGTmzjvnvOccRdd1HSGEEEIIgXqsKyCEEEII0VxIYCSEEEIIUUUCIyGEEEKIKhIYCSGEEEJUkcBICCGEEKKKBEZCCCGEEFUkMBJCCCF+J9asWUP//v2jPv6dd97hrLPOonfv3tx4443s2rWrCWvXPEhgJIQQQpzgdF1n4cKF3HTTTXi93qju88UXXzBjxgxmzZrFypUrad++PePGjWvimh57EhgJIYQQJ7iZM2cyZ84cRo8eHba9sLCQBx98kH79+jF48GBmzZrFwXmf58+fz+jRo+nYsSNGo5H777+fhx9++FhU/6iSwEgIIYQ4wV1++eUsWbKEbt26hW1/6KGHUBSFzz//nDlz5rB06VIWL14MwLp16/D5fAwbNowzzjiDRx55hMTExGNR/aNKAiMhhBDiBNeiRQsURQnbduDAAb766iseffRRbDYbrVu35uabb2bBggUAFBUV8e677zJ16lS++OILLBYLDz744LGo/lFlONYVEEIIIcTRt2fPHnRd55xzzgltCwQCxMfHA2AymbjmmmvIzMwE4J577mHIkCGUlpbicDiORZWPCgmMhBBCiN+hlJQUDAYD3377LSaTCQi2EpWVlQGQmZkZlqgdCASOST2PNulKE0IIIX6H0tLS6NOnD1OnTsXtdlNYWMhdd93FCy+8AMBll13GnDlzyMnJwe128+KLL9K/f/8TurUIpMVICCGE+N2aNm0aTz/9NIMHD8bv9zNgwADGjx8PwLXXXovP5+PWW28lPz+f0047jSlTphzjGjc9RT84Lk8IIYQQ4ndOutKEEEIIIapIYCSEEEIIUUVyjIQQQggRxre3Q8T9htTNR6kmR58ERkIIIYQI49cjD80/kYOHE/m5CSGEECIGPvwR95uPUj2OBckxEkIIIUQYv65HvNRlzZo19O/fv9b9H374IUOGDKFnz56MGjWK3Nzcxqx+g0hgJIQQQogwXgIRL7XRdZ2FCxdy0003hc2afbgNGzYwfvx4pk2bxooVK0hOTubRRx9tqqdSbxIYCSGEECKMVw9EvNRm5syZzJkzh9GjR9d6zAcffMCQIUPo0aMHFouFBx54gK+//rrZtBpJYCSEEEKIMIE6LrW5/PLLWbJkCd26dav1mOzsbDp0ODTqLSEhAZfLRU5OTmNUvcEk+VoIIYQQYSpjXBSjRYsWdR5TUVGBxWIJ22a1WqmoqIjpMRubBEZCCCGECBN5sH7DWCwW3G532LaKigpsNlsTPmr0JDASQgghRBivrjRZ2VlZWWHdZvn5+RQVFZGVldVkj1kfkmMkhBBCiDB+lIiXhhg6dCjLli1j1apVeDwepk2bxoABA0hISGik2jeMtBgJIYQQIoxXb9x2kyeeeAKAiRMn0qVLFyZNmsTYsWM5cOAAffv25ZlnnmnUx2sIRddjzLASQgghxAnph+3tIu4/te3Wo1KPY0FajIQQQggRJtCEOUbNnQRGQgghhAhTqWvHugrHjARGQgghhAgT+B2PzZLASAghhBBhpMVICCGEEKJKoIFD8o9nEhgJIYQQIkyl/vsND36/z1wIIYQQNfJKV5oQQgghRJBfkq+FEEIIIYK80pUmhBBCCBHklwkehRBCCCGCpMVICCGEEKKKDNcXQgghhKgiw/WFEEIIIarIcH0hhBBCiCoBXYbrCyGEEEIA0mIkhBBCCBHil+RrIYQQQoggb+D3Gx78fp+5EEIIIWokw/WFEEIIIap4A5JjJIQQQggBSPK1EEIIIURIABmuL4QQQggBgDcggZEQQgghBCATPAohhBBChHglMBJCCCGECJIWIyGEEEKIKr/nFqPf7zMXQgghRI18AS3ipTl65ZVXqKioqLa9tLSUZ555JupyJDASQgghRJgASsRLc5Gfn8/u3bvZvXs3r776KtnZ2aHbBy8rVqzgnXfeibpM6UoTQgghRJiGtAqtW7eOJ554gs2bN5ORkcGTTz5Jz549qx03dOhQduzYgaoG22jS09P56KOP6vVYX331FY888giKEgzWhg0bVuNx55xzTtRlSmAkhBBCiDABPbZWIY/Hw+jRoxk9ejTDhw9nyZIl3H777Xz22WfY7fbQcW63m+zsbL755hsSExNjruell15K27ZtCQQCXHvttcyYMQOXyxXarygKdrudDh06RF2mBEZCCCGECOOLMfl6xYoVqKrKiBEjgGALzltvvcXy5cu58MILQ8dt3LiR5OTkBgVFB/Xu3RuAzz//nPT09FDrUawkMBJCCCFEmFhbjHJycsjKygrblpmZSXZ2dti2devWYTAYuPLKK9m2bRsnn3wyY8eOrXbf+khLS+PDDz/k559/xuv1out62P5JkyZFVY4ERkIIIYQI44txSZDy8nKsVmvYNovFgtvtrnZst27dePDBB0lOTmbGjBnceuutfPzxx1gslpgee/LkybzzzjucdNJJOByOsH31aUWSwEgIIYQQYWLtSrNardWCILfbjc1mC9t21VVXcdVVV4Vu33vvvcyfP5/169fTq1evmB77ww8/ZMqUKVx88cUx3f8gGa4vhBBCiDABXYl4qU379u3JyckJ25aTk1Mt+fndd9/l22+/Dd32+/34fD7MZnPMdfb5fDEHVYeTwEgIIYQQYXwBNeKlNv369aOyspK5c+fi9XpZuHAhubm59O/fP+y4/fv3M3nyZPbs2YPb7WbKlCm0b9+ezp07x1znIUOG8PHHH8d8/4OkK00IIYQQYfQYk69NJhOzZ89mwoQJTJs2jYyMDF577TVsNhu33HILffv2DQ3nLy0tZfjw4ZSVlXHqqafy6quvhuY0ikVqaiqvvvoqX3zxBe3atcNkMoXtjzb5WtGPTNsWQgghxO9a/88eirj/m7P/epRqEr3rrruu1n2KojBnzpyoypEWIyGEEEKEibXF6FiaO3duo5QjOUZCCCGECOMPqBEvzZXP5+Pjjz/mlVdeobCwkO+//578/Px6lSEtRkIIIYQIE+sEj8fS/v37ueGGG9i3bx9ut5tLLrmEN954gzVr1vDWW29FvSzIMQn71qxZE5ahXlRUxJgxY+jTpw+DBg1iwYIFx6JaQgghhAD8uhLx0hxNmTKFjh07smLFitCw/6lTp9K1a1eeffbZqMs5qi1Guq6zaNEipkyZgqYdWrl33Lhx2Gw2vv32W3777TduvfVWOnbsWONqvEIIIYRoWs25u6w2K1eu5PXXXw8bjeZwOLj//vu55pproi7nqD7zmTNnMmfOHEaPHh3aVlZWxmeffcZdd92F2Wyme/fuDB06lPfff/9oVk0IIYQQVXQ98qU5crvdGI3GatsrKyurrZsWyVENjC6//HKWLFlCt27dQtu2bduGwWCgTZs2oW01LTgnhBBCiKMjEFAjXpqjP/zhD8yePTssCCopKWHatGmcfvrpUZdzVLvSWrRoUW1beXl5tQXjaltw7qDA3o6NXrem5tcDTVJugKYJ3b26v0nKBbis3ZlNUq7qsDdJuRhkjMLRoDTV62w21X1MDPQmKhcgEGet+6AYTF/0tyYpFyBFbZq8E7PSNO8Lo6LVfVAzY047eg0Gx2Py9WOPPcZ1113HH//4RzweD3feeSc7d+4kISGBN954I+pyjvkZ32q14vF4wrbVtOCcEEIIIY6OQOD4C4xSU1NZunQpH374IevXr8doNNKhQwcuvvjieq3BVu/AqKSkBEVRcDgc9b1rjTIyMvB6vezevZv09HSg5gXnhBBCCHF0HI8TPEKwsWX48OENKqPOwKi0tJQFCxbwxRdf8Msvv+D1eoFgd1ePHj04++yzufTSS2MOlBwOB0OGDOH555/nqaeeYtOmTXz44YfMmjUrpvKEEEII0TDHY1fagQMHmD59Oj///DOVlZXV9v/nP/+JqpxaA6NAIMCsWbOYPXs26enpDBo0iOHDh5OYmIjf76egoIB169axYMECXnrpJW666SZuvfVWDDHkCUyaNInx48czcOBAbDYbDz74ID169Kh3OUII8XsVCPgJ6D5URUNRNBTl+PtiE82Hfhx2pT3++OOsW7eOCy+8EKfTGXM5tS4iO2zYME4++WRuuOEGsrKyIhayYcMG3nrrLX777TcWL14cc2WiJcnXh0jy9SGSfH18ay7J17oeQFHqHnUTS/L1wdNtXUFLLMnX/oCXnzbOo7BkW9VjqKEgSVU0VFWjRVoZRqOCyQxGo4LRWHVtCv59aj8T1420o2n1/1KU5OumdzSTrzu891TE/ZuvePwo1SR6PXr04I033qB3794NKqfWd9yUKVOizvPp3LkzzzzzDJs2bWpQZYSoia4H8OLFi4dK3RO8xoP34N9V1y09HWhl6hjxS2e7ex1lgSLMqg2zYsOi2oJ/q3YMGBv0Kzuvcidbyn/Eojqxag4sqgOL5sCqOrFoDgxK9fk1ouEJlPNr8ZcYVQtW1YFVc2LVnFiq/tZi/OII6AH+V7KcAAFsmhOrGodNi8OqxWFRbVEFB7Up9h5gQ9l32DUXNi2+6tqFTYtDbeAXUpmvkF8KlmEzuHAaknAYE3EakrBqcY3SSrK5cCW5FVtxmVOJN6fiMqdiM8Q3WgvMT7sWoqCSYGtNgrUNcZZU1Aa81gdpqpGeHa5i1YY3KK3Yj64Hqn6QeUPHbN9W832dcQr3P+Jk+AgbahMFOKJ2Xq/Oe0tKGXG5o9m09OnNdEh+JE6nE5fL1eByaj2jxpL83LFj82vJ8fl0fttSySknRZ+RLo4+r+5ha2BDKMg5PODxUr2v+HAqGp21PrQ2d6rzcVqaMvmu+H08enm1fRqGqiDpiKDJ4MSi2jFrwQCqtkAkydSa3e5N7PZsrHG/UbFUBUrhAdPB2ybFWuNJ0azaSLNksbZkeY3lmhRrVbDkqArKnKEAyqI5aw3IVEUlw9qNFYX/Qie8RVNBxao5salxweuqgMmqxWFTnRjUyK0lccYUnFoi293/O6Jcpaq8YLBk1+KxaS7smguL5orqS8FuiKelNYtNJSvYy+bQdk0x4DAk4jAk4TQm4TAEAyaTXr+AN9PVl12l/2N7yc9sLwluM6hmXKaWoWApztQSszkx6jJDz19RyEo6k5Xb53GgbHNVvU3EW9NJtLUlwdoGlyW13uUeZDRYOSXzUr5f/zp6lK2+5w81Y7WqfPYfD8s+cRPwQ0CHQAD0gE4gUHXbT9XfOnqg6u8ABAI6g4ZYePKBOKzW5vGlfji3Wyeg69isjfNFv2efj1/WVnLe4Jo/r/W16mcPdzyQyxWX2ptNUATNdxLHSEaMGMH06dOZMmUKVmvsU15E9VPT6/WyaNEiNm3aVGNC06RJk2KuQFPSdZ27Hz/AeWfZmyQw0nWdH3724Pfr9OvbNPOO5Bf4MRoVnI5jF737/ToV7uDF7dapqKi6dut4PIdtd4f/7XYHGDzAyhmn1v3aGxUzTiWetYGV1b6kI7Fip7uhP3FKQlTHm1UrPRyD+aHkI/QjuiH9+CgPFFMeKK7xvgoqrS1d6GDvi0m11HhMF2d/inz7KfMXVtvn1d14fW5KyK3xvgnGdE529MdhqP5c0s0nkVe5iz2ezdX2VeoVVPoqKPLtr7Fcm+ais/1MUsxtq+2LMybTyX46v5V9F7ZdJ0C5v4hyf9HhDQ4hRsWCTYsjzdKRtpaTa2xd6uQ4nTzvrrDXQken3F9Mub+42qugKYZgwGQIXlItHXAak2p8Tpn2Xuxzb6HYeyC0za/7KPLup8i7HyoOq6tqxWlKxmFMOuw6CYNa8/vSoBrpknQWq/cvDW3zBTzkubeT594e2mYxOHFZ0oizpOGypuEyp2LQ6n6vx1tbkeY8mT0l66rqXUle+VbyyrcCoCoGXI7WJDgzSHBm4LK3RtNqD0T9AS+FpTvIK9pMXtEWSiv21VkHgFZtNJ54Ko4BZ1nYud3HdcPz2Lunfl3+cXEKjz0Zx8WXWbFqCpWVOlNfKOFAbgCvV6fSCz6vTqVXx1sJXp+O1wuVlTpeX7ClpLJSx+cjdH3dCBsP3OPEbI4uSPD7dXbv9bNtu4+tVZdt231s3eFn63YfA8408+pzNb+PoqHrOj//WslHn5bzyWflrN/o5bN/pTU4iCkrD/DkXwt45e/FWC0KN18be05MUzgec4x++uknVq5cyamnnkpKSkrY0iDQCMnXh3vkkUdYtmwZXbp0qTYXQHOKcI/03IxCZr5VzJiR8Y1a7o5dXuYvKmHughIUBb7/d5u671QLn09n5x4f2Vt95Gz3smWrl5ztPrKrri8+z8ZrU1OiKmvj5kqefrEQvw98/uBJxufX8fuDj+Orug74g9vtdpVnxiXSu3vNJ/O8fD8XXbmfX9fV8M1YB5tVYcqTCZzeN/o8jFQ1AyNmfvF/gx9fnccnK2l01fphVOp+jIDup9RfQLE/j2J/HgbFjFevfRLRcArp5o5k2ftg0+KqlVvuL6LEl0+pP58SXz7egKeWcmrmMrSgg70vScbWoc+Truu4A6VV5RZQ6sun2FdzQFUbo2Imw9qdDGvXUAuPrut4AuWU+Qso9RdS5gte15fTkEh7W28SjekoioKu61QGyinzF1UFPkWU+Yvw69G/d/y6jxJfLmbNRqKpNQ5DIgHdj9tfSoW/hAp/Ce6q6+DfpVGV6w1UkO/eQb57BxpG0h1daGnrgKpqVPrLqfRXUBmoOOzvcir91VsUj+T2leAuLWFf6aEWQrPBSaK1DfHWVvh1L75AJf5AJb6AB1+gEp8/eNvtK6m13IDuo6BkKwUlW4FgrlCcLZ0EZ7tgoORojcdbQl7RFvKKt1BQspVAoO7Py0EGA9x4q5077nGGWnhatzXwj3eSuH54HrkHoguOBgw2M3GKi5aph7pGTSaFC861cPmIPEpK6tfk0LKlyoyX4hk8KPxHh67r5BcE2LbDx9ZtwYBn22EB0PZdPry1vM0evCuOxx901bt7sKIiwJffuEPB0O69h1rf3p7VotZzZrQ+/b9y7nw4j207gv+3G65ykhDfzHKejsMWo549ezbKGqu1Jl8frk+fPkyZMoVzzjmnwQ/YGKJJvv7n+yVcc3vwl1NpdnusDWxGLS0LsOijUuYtKOHL/1ag62CxKKz8pDVdO9f9ITk8+VrXdSY+V8C775eydYcPXy3ntPEPJvDYPZFzG45Mvn7pb0U8/GR+nfU5e6CVmc8n0zq95tj4YPL1/gN+/nTFfjZsjP4Lrld3E6+/kkTHrJq7cGpKvtZ1nWI9n116NnsD2+oMjLLUrmSqp4S9NgeTr316JSW+/FAQVOLPo9RfUK2FKBotje3o4DgNuxaPO1BKqS+fEn9+8NqXT5m/sF4tXIdzGVrQ3tYbp5ZEWaCAUl8Bpf78quuCegUVhzMqFjKs3UgxtcUdKKPMX0CZv5BSX/Dap0fumowkydiKluZMVEWjzFcUbGGrCoZire9BcYYWOIyJBHRfKAjyBOoOUKKhoKIqBgK6N6b3QXNg0CyYTXF4vWVU+spiKqNHbyMTp7jo1PnQZ3P/Xj9ffOrm82UeVn7nwVvH28PhVHhsQhyXDgvvSjo8+fqHHysZNiKPsrLoXutLL7YwdXI8CQnVz9MmNGa9WcrD4wvwRzkmxGCAl55N5Pqrap9G5sjk6917fXz8WTkfLyvny2/cVLir1338Q/E8ek90rdM1OZDn58Hxefxz8aH/n6LA2v+2Jqtd3TmIRzP5ut2cKRH3b73+kaNUk6MvqhYjp9NJZmZmU9el0Sz/toKRdweDolZpWoOCooqKAPdPyGXughLKK8I/KC9MTI4qKDqSoig8/Jd4tu7wsTmn+q9egwH+9nwK1w2vf9Nqn55m2rU1sHV7zYGF3aYwZXwit1zrjKq1r0WKxuzpSZxz6T7cNZwoDqcocN+YOB6734XJFN0vtErdw57AVnYHsimlqM7jjZjoqvUjWU0DwKNXUKIXBC+lJZT482vtCqsPl5ZCoiEVr+7lfyXLKfUXNCigOJxFdeAwJOALePm15ItGK1fFUNWipZNd/hOby39olHIBDIoJXQ+Q591FnndXo5V7uGLffopr6Q5sKJ0A/kZ6nY8mRdEwaCa8vgp8fje+itpbOY2alURXe5Lisoh3tuW7X18NBYEGzUyH1mfz9uIfURTY+JuXL5a5+WKZh19/iT6g7T/QzMRnXaSl19y6UVmp8823Hj742B3VYE6XS+Gvk11cfmntKx0oisKokU5O6mDk+tG5FBRG/iES51SYNyuFswbU3N19JI9HZ/QDB3hnUeRg84pL7Txyd3xUZR5J13XeXlTKQ+PzySsIr//F59uiCoqOuuNwHiOATz/9lFmzZrFp0yYMBgMdOnTgpptu4txzz426jKgCo9tuu41nn32WJ598MjQ7dXO1fmMll920h4OpUB0a+IazWlUmPJjID6s9/PTroS6SYRc5uPXauAj3jExRFP67svpJzhWn8t7fW3JW/9hylj74d1mtQdEfTjcz+8UU2mdE/5qs/62SP56/t87jWqcHA6j+/eo+Gem6Tr6+l12BbPbru6JucXEqCfTQ/kCFXsZq33KK9QIqOew1jKoYBbvqwqHFs8+7tYa9KjoBivwHKPIfqH73CIIBTyJOLZFtFb8SoOaft+5AKe7K6LqBIBiUOLREHIYECrx7asxfAgjgo9Rfd2vhQSoa9qqcHre/lEJf7bkp9QneDiVYu7CqTna410V937rKNWv20Kg8o2JhW/maBperKUZMmhWTasOkWTGoZvaUbWhwmZpqwqCaMagmDJop7LY/4GV38doIJSiAjq778foqaj5CUXE52pAUl0VSXBZx9rRQrldR6c5QUNQy4RQ6tTmXisoCpk4u4fP/uNmxvX7TcdgdCg+Pi2PYVTUnHPv9On95oJCP/+OmqCi6VqJBA8xMfy6e9FqCrCMlJKh0O9nIV9/W3lXdppXGorkpdDkp+i58s1lh1rQU+vYwM+GvBZSUVq//ab3N/O355JhSR3K2e/nLw3l8trzm/+Pdoxo+iqpJHIcNq5988gn33Xcf559/PpdeeimBQIBVq1Zx77338sILL0QdHEUVGJ1yyim89NJLDBkyBFVVq7051q6N9AE/esrKAzz8VC42q0JhVeND+0aIxOMcKmXlh75127UxMOu5lAblV5nNCmeeZmHrjkNfkG1bGVgyL5VT6vGhPtLF59uZPqsYTSPURWc2K0x8JIE7b4mr9/wknTsZyWijsW1H7SfSyy6y8eKURBLiI7fMbd/pY967pXzj+wA3NXeRaBhIVYJJwrv0Q83GrZT2nKT1QVM0SvUicvU9ddZdRcOhJRCnJRFnSMKpJeHUEtEUA7neXWGBUZyWjCdQXuNotSMZFBNOQyIOLTjqyWFIxKElYKxK5i3x5ZNT8XPoeLNqxxOou+tD4+CoqoRQIOTQEjGrNhRFIaAH+L+8uaHjjVjw4qGuM1gwsEoIJjVrCTi0eOyGBKyqI/RF+n3hoURjBRUVtY7uTAWrGhytdmgovgubwYVVdYSG5OdW7og6MNIUA5aDUxFoh01LUHVtVu1hw9p3ldccvKhohwId1YLJ4MCkWTFrtrAAyKTZMKlWNDX8HBHQA5RW5lLiDc/pMmsO4s2pxJvTMaoWNLMtGPRUBTyHAh9jnVMdbDrwVR2vRs3/U5s5kSRXFkmuDiQ429Wa7F1cvhuLyUXnjD9R7s5lxbqZeH0VrIoQ73XrYWTwuWa+/bqSH1YcCoTP+IOJp6a6aNW69q8LTVPYtNkXVVBktSiMHxvHTTfUb2qA//vGHTEo6t3DxHtvptCyRf1zdYxGhYAOZeXV6986XeO9f7SIqeehoNDPE88U8P1PNbf0ndrLTL8oBqccC8dj8vWMGTO45557GDVqVGjbddddx6xZs5g5c2bjBkaPPfYY7dq14+KLL27Wi7vabSpL56Qz+YV8nnoxn4zWRrLq0TpSG4tF5b2/p7Ls/8p5dHIe7/wtFVdcwxPlJj6cyIVn27j29v306mbi/TmppLVs2GRmZ/Q1s/Xntpx5/i527fHTu7uJ16en0KVTbMGWoij8+SIbr84uwWRUwk4cDrvC85MTuHpY3cNMbxidy78+LK91CKhLSaaV2p6WShsMipHN/jWgg4pKZ60vrdT2oWOdNYxAM2DEaUgmTkskTkvCaUjCrsbXOj9MrndH8Dmo8XSw9qGFMYOfy75g/2HB0sEWlWDwk1DVGpQUClRqc6AyOFlMnCGFDra+APxU/El4uYYEHFpCKKhyGhKxqJHnMCny7sOruzGpNjKtPWhj7cJ3BYtDLUhm1RZsAdIScBwWBJnqqG9loIIC715UNFpbOtPO1oO1JcvJ9+6qCn6C8w8dDH7smgur5oxqPqK9nmBw69ASaW3pwi7Pb1gPm+fp4NQCFs2ByVi/OVx2VwSTnm1aPOnWTqRaOmDR7GjKEcPz6zkRo6qopDk6U1LwDUbVSivHybR2dMVhCh+eX98JHgO6n6KKPRwo28zW/O+juo9BM5MYF+weS3JlYTVHl9/itKZyZtcxaJqJHfsKa2x1MprgjDPNDD7HzFnnWEJJ1Ms+CbaU2mwKD451cuW1kd8/Bw290Mqqn4LdcinJKheeb2HzFh///e5QkNWrh5EZ0xPomFX/89wNVzuYMq2I0hrylv50npXXX0nCbos9baJvT3O185PdprD4rZaktojtvJwQrzH3tRYUlwQ4/dxd5GwL/7Fx122NM/dWkzgOW4y2bdvG+eefX237eeedx6uvvhp1OVH9t3fs2MHSpUtp165d1AUfS2PvTWTU9S4Kivzk1NKtVF9dO5tJb2lA1+G0XtH1XdelbWsDGzarXDDEyvyZLXHYG2GSN03BZlXYn+tn3APxPPSXeIzGhn3w7hoVx31jXAy9Yh9r/hc88Z3a28TfX06KukUuMUGtdtIxYSZNzSRdzcShhDcne/QKLNjpYfgDcUr4F5IZKy2VttgUB04lgTglAQt2NGf06/WVB4rpZhtImql96Nd9qikTp1YVsGgJ2NS4YGBVzxmZPYFyesddQLKpDYqi4AlU0MHWNxQE2bS4mCZPLPIdoLP9TFpbu4TmUuri6I+mGLBr8aEWq/rK9+6mnbU77WzdMavBHz7d4wZjVMwNmowxoPvxBTxhr0WGrWutx9fnC6LSX4FZs3JG0uXEm2Kf96cmuq7j9pXQM+VPtLC1R22EmZcrfeV8nfM3fIG6uiQV4i3pJCZ2JMmVRZw9Pab/Qbzz0NQMKfEnsWH7x0BwIseBg80MPsfCHweZcTjD34d+v072Jh+n9TMxeaqL1m2jf+4X/8nC7t1+hl5o4fRTTWiawuVXB1vdNA3uv9vJvX9xxHw+inepjH3ARVycypj7D3UZj7nFyeQn4mOarftw/U618MSDwXKeeKYARYE3Xk6h+ykNb9HJK/CHzn+KEpwjqE0rjT//qYlm628EynHYYpSWlsbGjRvJyMgI275hwwYSEqJPmo9qVNrVV1/N6NGjGThwYP1r2gSO5ZIguq7HFOHXtiTIvgM+khI0DIbY3oQ1LQmye6+Pffv99GrAkNIjlwTRdZ1WnXdSVq7z8D1xPHS3q151Xr2mkgEX7EVVIVFPp5XanmQlvdYWne3+jaSpGRiV6J9DtEuC6LqOjh79bMP1DIxifY/83sttLkuCRKu+LUZfZ8+i3FtQbbvV6CLJlkmyvR2JtgyMmiWmJUEiydnzDXH2dN78eFnEwGT/Pj+ffuLm6uvrPwN2TUuC9Dx9HxaLwoyX4undM7b/w5FLgpRXBGjZYSeqCs8+mcDom2Kb/6e2JUFKywIkd9zGU48l8MCd8TGVXZP9uX7GPpVPv1Mt3PFgLs+OT6x3ftFRHZU2a2rE/Vtve/Ao1SR6s2fP5o033uDee++lV69eQHBuoxdffJErr7ySu+++O6pyojoTXXbZZTz22GNcccUVtG3bttpCsRdddFE9q3/8auwvkJYpjf9lkJ5qID21ccvNzQ+QmKCyeF5yVBM2HqlnNyMvPpPABedYubPfgDqPb6vVPYt1rBRFQaHpfg01VdO4lHt8S7Znsr2wAE01kWTLIMnWjiR7JjZj4y03UpvMtP4AdbbWtGipcc2NjdOK4Xbr/Ol8C2MfcTbarNMQzAOyWRXemJHEhec2fmqHw65y96g47h/TuEnRLZI1Zr+Ygter8+LMIm68unlN6FjNcdhidNNNN7Fv3z6efPJJ/H4/uq5jNBoZOXIkY8aMibqcqFqMOnfuXHsBisL69eujfsDGIIvIHnK0FpEtLAqgqhDnbPgJThaRFTU50VuMSj25eP0VuKx1d481dovRQdMX/a1JyoWjt4hsXr6f7Tv99OresP9rpEVkm6oV9aAtOV6yMuuf/3pUW4xmPBdx/9Y7HjhKNam/0tJSsrOzsVgsZGRkVJuYui5RnYk2bGjY0FVx/It3HX8LCgrRnDjMyce6CieEpESNpMSmnSW6qVvwYgmKjrrjdB6j0tJSPv74YzZu3IiiKJxyyimcf/75WCzR5wbLT2EhhBBChFGappOjSW3cuJGRI0dSUVFBVlYWfr+fhQsX8vLLLzNnzhxatWoVVTlRBUZbtmxh8uTJrF69Gm8Ni9I0l3mMhBBCCPH7NGnSJHr27Mmzzz6LwxEcpVxUVMRDDz3EpEmTmDlzZlTlRBUYPfHEExQVFXHvvffidDbzhDEhhBBCNEhDhuuvW7eOJ554gs2bN5ORkcGTTz5Z4+Kub775Jq+//jplZWUMHjyYiRMnNmiuxF9//ZVFixaFgiIAl8vF/fffz5VXXhl1OVEFRmvWrGHBggURk7CPpiMTgxuL2oQjlY5WknRj8eiNM/9TTfTaVs1toECEdaQaQrU2zrxVNdKa2YradVGbsL5NldfRRK+xbmu6GYt9jqZJGHcqTTdrn1lpmryZSEnSzbHcE0aMbxWPx8Po0aMZPXo0w4cPZ8mSJdx+++189tln2O2HBsh8+eWXvP7668yZM4fk5GTuu+8+/vrXvzJhwoSYq5yenk5OTg5ZWVlh2w8cOECLFi2iLieqjNqUlBSiGLwmhBBCiBOAEoh8qc2KFStQVZURI0ZgNBoZNmwYycnJLF++POy4JUuWMGzYMDIzM3E6ndx9990sWbIEvz/2H/t33HEHEyZMYP78+WzcuJHs7GyWLl3K448/zqWXXspPP/0UukQSVYvR6NGjefrpp5k4cSIZGRmoqoxQEkKI40Ug4MPrLWf9ei8FhQHy83UKCwIUFATIzw+EtlVW6jz0kIPevZqmxUocR2JMvq6pxSYzM5Ps7PCpBrKzsznnnHPCjikvL2ffvn0xL1b/wAPBKQQmTZpUbd9LL70U+ruuaYaiCozeeOMNduzYwYUXXoiiKNUCI0m+FkKIY6+4eCc7d/4Xr7f8sEsZfn9wKZJzIqyh2aGDxqy/JdCpkwxWFhBrr2t5eTlWa/g8XBaLBbc7PNWhoqIibAj9wftUVFRf1y9an3/+ecz3PVxUn4DbbrutUR5MCCF+77x+N/6AF7OhfovmRsPpbIXVmsy+ffX7grhoqIWpU+NwOKQ3QFSJMfnaarVWC4Lcbne1pGqLxYLH4wndPhgQHZ6HVF/RDsevS1SB0Z///OdGebBjye/XWfebl24nSxPx75Ff9+HWy7AqzujXSKuHgB5gT+UWHFo8Di0htMhrYyjzF1Hg3YNDS8ShxWNQG+c9rOsBdro3YNEc2LV4rKojpsVta1Lqyye3cgd2LR6bFo9Va7zX3e0vJbv0R2xaPHZD8GJpxPILKnayKf+/2E2J2I0J2I2J2E2JWA2xLf57JFXR+H7zP6ioLMJmSsRmScRmSsBmTgxdVN0cU9CkKAqZmUMwmRxs3LiUujJoDQZ4fKyTm2+2yRIuIkysLUbt27dn3rx5YdtycnIYOnRo2LasrKyw7rWcnBzi4uLqlSR9pB07dvDCCy+wadMmKiurL9j8n//8J6pyaj17X3fddTz88MN07Vr7atiHW716Nc8//3y1F6Q52LrDy813HWDsfdGvrltfefn+Jp+N9Xjg9+vs2u0nO8dHdo6fLdk+Tu5iZMSV1qhPvH7djx8vPrz48FVdH/r7yH1+vLSiPS3IrLVMFY0NvlUUBPZjV+JwKC4cajx2xYVDiceqNOzXu6qolAeKWVv+FQA2NQ6nlohDS8SpJeDUErGqzpgew6Y6Wev+Pwp9+wCwqA4cWgIOQ0JVsJSA3RCPoZ6jghRFRQd+Kv538DmgYdPisGsJ2LV47Fo8DkM8Ns1V77LtWjzrPF9R4N0TfCxUbFpcVTDjCl5r8dg1Fya1fl/KFs0R/H8Wf33ouaBiM8SFgiWb4VDQZK5nkJFgbY3F4GRH8S9h2xU07MZ47KZEbMYEbN5U7JYk7OZkjIbol/DQVCPdMv7Myo2vU+reR6l7X7VjVNWI1ZqE1ZqIzZZc9XfwYjY7aw3QvN4K9u//hT17fqSuoKhlC5Wrrrbicql8+10lrVtppKVpmEwSIB1NBwc2NbfANNYJHvv160dlZSVz587lqquuYsmSJeTm5tK/f/+w4y6++GLGjx/PeeedR1paGtOnT2fo0KENymF++OGH2bdvHxdccEG9Zro+Uq1rpa1atYrHH3+c5ORkLrjgAgYOHEjr1q3Djtm8eTMrV65k8eLFFBcXM3nyZE477bSYKxMtz572UR2n6zpvLyrlnsfySEnWWPtN64grRtd3uH5pWYB/fVzG/AWlXHGJnZuuiav12PoO1y8pDbD6Vw8//VLJ1u1eHrsvgRbJ1QOv+gzXDwR0DuQG2L3Xz649Pvbs8bN7r5+2bQzcOMIe9sGMNFxf13X27guwJdtXFQD52JITDIa2bvNxWOsoN99g4+mJLjTtUNlXtQlfK61cL2UNK/BQjg8fej2y/oyYOIVTSVbSUOpYD6dCL+M7z4f4qf7cVLRQkORQXTgUF3Y1Hgs2NFt0X3oB3c+3xe9TFiiscb+GEaeWEBYsOUzJGNW6h32X+Qr5tnARAWr/f1tVZ3jAZAgGOJFar3Rd58fiT8jz7oz4+BY12KpkNySEyrVrCZjU2gPeCn8x/81/D79efVLYw2mKMVieMb4qsEkIBTW1tY75dR/fHXiPUl9+xLKD5RuCgYwxoaoFKIE4c0uc5pRa7+P1e/jvzjdx+0rqLB/AaLBhNydhNydhsyTRMr4LNnNircfrus7GXcvYdmBlVOUfzmpNplOni0lM7FBVVoDCwhz27PmRAwfWEgjUPR1Gv34mZrzqYteuAH++LI+D8/YqCrRIUUlvpdGqlUarVmrwOv3gbY34eKXG/3mcYuSJpwvZfyBAakuNlikqLVM0WrY4dHE6ar5vJM1tuH5pWQCHvXFaJz0enWem5zPhwaSojldTNzXK40aj0+QXIu7fOPbeWvdt2LCBCRMm8Ntvv5GRkcGECRPo2bMnt9xyC3379mX06NEAzJkzhzfffJPi4mIGDhzIU089VS0/qT569uzJ/PnzOeWUU2IuA+pYRLayspJFixbx1ltvsW3bNiwWC/Hx8fj9fgoLC/F6vWRmZnLttdcybNgwTKaj000VTWCUX+DnL4/kseiDMgAmPZrAg3+Jj3ifaAIjv19n+bdu5i0s4V8flVFWrjPsIjvzZ7aI+IGPFBiVlwf45X+V/PSLhx/XVPLjzx42bvGi65CYoPLJu6n06Frzl+fBwMjj0dmzryrg2etn956qy95D2/bs83PkFELXXmnnxWcSMZvD634wMKqo0Hn/g4pDAVC2j5ytfsrK6w70xj3i5K4x1VtijgyMAIr0PFbzDT4if4keLp5kunIaFiXYd11XYBTQA+T41pLt/zXqx9AwBIMNLYGWpnakGNtUO0bXdTx6Oe5AGfsrt5HjWRN1+RAMOpxaIumWTrQ0ZYa9Xj7di9tfQkWglJyKX0ItMNFTSDCk0sXxB5yGQ1/Uuh7AHSij3F9MgXcPWyoiD1+tiVm1k2XvS2tLl7A6VwbclPuLKPcXsbNiXb3rrKLR2nYy7Rw9sRkOrXAe0P2U+4oo8xVS7i8k172dvMrIAd2RjKqVDFdv2rp6YtKCJ2BdD+D2lVDuLaTMW0i5t4ByXyFF7j14/GX1Kj/J2Z52Lc8k0RH8P3p9FZR58ihz51HuyaPMk0d51d+Bes5BZrUmk5ExgJYte6KqBtzuQvbu/Yk9e37E7S6Iupw77rDz0IMODIbg/+zvfy9jwpPRBYAANptCq1Yq6eka3bsZueMOO06niks1sSXHy8AL91JUXPP5wWpRSG2p0SJFDQZLKRqpLTRaVP3dMctAh/bhrZMHA5jCIj8/rPbg8ei4PToV7uC1x6Pjrvo7dLtqW7xL5dF74klMqB4ERRsY7d7r4+uVFXy9ws23P1TwxP2JXHqBo+471qGg0M/lN+2hSycTr06JrvvoaAZGJ02KHBj9Nq72wOhYueSSSxg3bhx9+/ZtUDkREyFMJhNXX301V199NTk5Ofzyyy/k5eWhKAopKSl0796djIyMBlWgKXz+VQW33nOA3XuDJx6DAa67smFv5A2bKpm3sJS3F5awc8+hE1pmWwOvTU2J+leQx6Pz6/pgELTqZw8/rfGw7jcvgRoaSeoKig7auNnLRVfuDz3faKgqTB4Xz5hbI3fvWK0KBgPMnF1GhTu6Vi+DAaY/F88Vw6KfwdSlJNFL/yOr+BI9ita1TDqTyclheSUB3Y9bL6dCL8Otl1Ghl1Zdl+HWS3FTQX1nLfPjQ0HFoSai6wG2u9fh1stwB8pwB0qrrsvr1cp1JLvqIsGYiidQzsbylVRUBUIV/hK8euyTVjq1JFJNWdgMceR5d7HTvZ5yfzHlgWIq/CUx19mhJdLG2hWnIQl3oIQt5T9S7iui3F9Iub8Ir+6pu5AaGBUzbWzdaGHJxKu72e/eSrmvkDJ/IeW+Qir80X95H8msOWkd1xWXqSVufwlbClYEAyBvIeXeIvQILXHRSI7rQKIjE50Ae/PXsmXPcso8eXh95Q0qF8DhSCcjYyApKaeg6wFyc9ezZ88q8vM3U9v72elsRVpaX/buXU1x8XYANM3M32ZaOf/8YBdDaWmA337zYbEoOJ0KJSXRfTbKy3VycwMMG2blxhts2A9rPcnKNPK3l5K4amRujfetcOvkbPORsy18u8WicPvNTk7vW/uP6zinyuIPy3jj7dKo6jn0XBtPj0usMSiqja7r5Gz38dWKCr5eEQyGtmw99GPt9RdbNEpQtHWHl6HX7Gb9Ji933xbf4PKaxHE4deG4ceOYNGkSI0eOpHXr1tW65Xr37h1VOVFniGZmZpKZWXsOR3PgdgcY90wBL88uDtv+p3NspLaofzJsXr6f95aUMndBKat+rn6yNxhg3mstcMVF36z62+ZKbrn7ABs2RW4ZiTYoAujUwcgXH7Rk+A0H+HVd3S0urjiFN19L5uxB0TVZDr/MRueTjNx4az7btkf+ArHbFd6clcBZA6Pr39V1nQIOsJft7GNnnUGRCTOncBpJSku26Rsp0QupoAw35Xg8sQ/zrIkBIwECFPr3UeivngfSEAoKCioB/OT5dpHn29VoZRsVM6BQ4s+jpCKv0co1KzYMqhlPoJz1pV81WrkaRiyaA50AOWU/kV22qvHKVoxoqpFKfxlbCr5rtHKDFAyaCZ+/ktzizeQWb27U0uPjM8nIGERCQgfKyvayefPH7Nv3M15vzcGW0WijZcuepKX1weFIA2DXrmBXnd2eSkbGIH755QPefbeCDb/52LGj/sFgfLzC6NF2Rt4YHhAd9N+Vbqa9UoyqUuOPvSNpGtw4wsHD98SRlhr5HK2qCq/+NZmycp333q+9Jc9mVZg6MZGbRtQvp2/XHh+XXL+H1WtrDuynPZnMjVfWni4RrR9/cXPRdXvYd8CPwQBn/SH2JTCaUhNOkt5kcnJy2LJlC4888ki1fXXNXXS4E2bCijX/83DjnQdY91v1wOCma+q/vpuu6/zzX6U881Ih+3NrPoE89Wgip/aqX4JX91PMfPfvdP7yaB7z3qv5l09Sgson76XS/ZTolxxIbalx351x3PKXPCJNHJqVaeC9N1Po1CH6ZFqPR2f1z5VESM8CgrkJ/5ybRPeudZddqhezl23sYTseogtoEmnBKZyGWQm+5gfYRSGN98V/pPp069WXjl7vVgoNQ435UUeqb4uNgoqKWmfZHr0cj79+LSAW1Y47ELk7yo+XMn/0XUEQDP5shniKvQcitnz5dS9+f33+jyoWgwOjakEBiiv3RzhWx+eP/rW2mOKDeUiWJGxV+Uhrty/F4w3/IZfi6kSbrMHYbCns3/8L2dnLKCmpLXBWSEzsSFpaH5KTu6Cq4af0ysoSUlN70anTJezY8Q0vv1K/rsGD4uMVRt1mZ+RIW8Qh/WaTwvc/Vh8NVJNhl9gY+4CrWtdZJIs/LGPh0tqfQ58eJt58pQUds+q/PEmrNAMfzEvjjAt3snN3+Gdh3H0JjdKy8+GnZVw9ai/lFcGoo18fC3HOZjpFQuyN4MfM9OnTGTZsGNdee22DcpWO+8AoENB56W/FjH82nxpG59GmlcbZA+v/AimKwpibXVxygZ0zzt9VLTg6f7CVe0a5arl3ZNt2+vjwPzV/wcQSFAHs2OXnpjF5RFq5ZfAAC2++lkxCfHQfxOLiAG/OLWPm62Xs3x/5U5LVXuO9eUlktK39LbX/gJ/FSypYqX9GCYVR1SFUPqfQjs5hvwAt2KGWwEhBwaLYsSh2rAevCV6v8X6Nl/A3i0OJp5Xagd/8kVsrVDQsqgOrasei2rGojqrr4N9mxcrXxQtj6gLTMGDVnFhVJxbNgVV1hm5bNScVgRJWFP6r3uUCGBQjVjWuamRYHFYtDlvVbYtqZ2XRUop8kYKA2plVGzbNVXUJjjSzGVzYtDjc/nK+yX87pnI1xYhNc4WNMrMZgrdNqhVvwMPne2fXu1xVMWAzxgcvhviqpOzg7WLPflbvW4Kb4roLqoFBs4QSsINBUDI2cxI2cwKaGv5lXVpxIBQUKSikJnQlo8WZ+Pzl7Ni1ImIitcWSQFpaH1JTe2OxxNd4jK4HaN/+XNLS+qIoCnZ7as11NkBamlZjC5LLdSggckbxBd61iwmDgWq5jIc75ywL4x+Jp0fX+ueknt7HUmNLlKrCg39x8fh9CRiNsY/u2rbTVy0ouvNmF+MfqD2RPlrZ27zMmltUldsVPFGfO6h5thbB8dliVFpayi233FJtoFh9HfeBkd8PZ55mZsq4RP7xdglr14f/OrzhKmfYiKj6Wv2rp1pQlNZS4/WXWkQc4RZJpywjbVsZKCwK/3JOSlD594K0mOZaatfWwDlnWVj2Rc1fyHfc7GTyE/GhhMtovPq3Up5/qe7+/L69jcx/M7HO6QoeHlvEBx/XXD8DRlrShjTaks068gl+SZux0JXTSVCqjyCKI4FK3FiwYcGG1ejCqjiwKHbMWGuc16YgsD8sKEpWW9FW60yi2hKAnYGNGDFjUWzBchQbNnN8KPAxKpGHfu+v3B4KioyKmdamk0g3ZfHfkn+hYagKqhxVAY8Dq8EVCnzqKju7fHXo73hDSzKs3cguX02JPxgcmlVbePBz2N+Ryq7wl4SCIrNqI8PSld2ezZT6D434MinWQ0FKKAgKXgxq7b/O93m2hP6OM6RQ7DsQtl9Fw6rFYddc2I0JYQGQWbVHfq3dObXuOxhU2QwubJakUCBkNyZg1mqfmsEfxeLJCmqwPFtKtRYgoyH6qQf2Fa1HVTRaJfUiNaErBaVb+SXnPSoqa249U1UDKSldSUvrQ3x8Zp1zKimKSnr6qaHbDkcqaWkqnTsb6NzZSOfOBrp0NpCVZeDDj9zcfXdR6FiXS+G2W4MBUVw9UgUsFoUnH41n124/M14Pzwk7tbeJJx+N549nxj6Muk0rA/eMimP9Ji//+SLY0pzRxsA/pqfwh9MbvtjzGX0s3HObi1U/e/jmezfXDXfywsTkRhlK3z7DyOJ/pNHnnB1s3+WjuCTQvAOj47DFaPDgwXz22WfceOONDSqnQYFRIBBg7969Ma9r0hiMRoXT+1jo0snExOcKw/apajAwaoiLzrNz581xbNvp44P/lKMo8NYrLUhJin0IqaoqTH48gcUflvHp/1Wwc7ef5ESVT96LLSg6aNRIJyWlwdEYq9cEv/yNRnjhmURuuLr+CYM332jnlZmloeH3J3Uy8JfbHTwyrojS0uDPifPPtTDr1Xhs1rpPnsMvs4YFRgoqyaSRRluSSUWtGiXi1oMnvCRSOYVTMSk1t561VTrSlo6HytPqbmXb489BRaOVlkUb7STsanjOwJnmi6rdRzVFf8LdXbkZh5ZAhvkU0kxZoaHyZ7lGYFQs1U+wUa78rusB9lXmkGpqT4a1O/HG4CgWq+pEU4LBRayTSu71bMGhJdDO2oM0cxZqVXk6erD1R407NGxerd/7fr8nh1aWzrSz9URVNLaVrwlO+mhwYddcWA6bVFIx1K/sA55ttLC0R9cDOI1JVWUGyw6bG8ka/f/PZoxHQUFHR1U07MZEXOY0HKZE7MbgRIxWgwtVUQnENexLzWx00rn1BewrXM8Pm96s9bhgInUfWrTogdEYe/eA1ZrID9/XPPrp88+CH/K4OIVbb7Vz8031C4gOd9foOMZNPhTcde5kZPwjLv50bvRzmUUyZXwSdz0aTO6+ZriDaZOS6pXnWZfnn0xh6qsFJCZo/H1a7D+Aa2IwKKz4uDW79vp45Kk8enevX8/AUXUcthilp6fz/PPPs2zZMjIyMjAYws+JNa2hVpOIw/UPOvvssxkzZky1GbBzc3P54x//GHVCU2Opbbj+V99VcO2o/Zw9yMbbC0u54Gwr/5pTc/NxTWobru/366gqpJ6yjdtvjGPCQ/VvVq1tuP5pZ+9i914f/16QRtcu9Q+KDp/HSNd1FEXh2lsPsOTjCpKTVObNTo7pl9TB4foPPFrIuvVe7hrj5NwhZlRVoXXWbtweuOFaG88+5Yq6Fcrj0enaZy+BwkTSyKAlrTEq4c9Z13X+jyVk0oUMOtXrRFrXcH1d19nt30ILrU1VgnJ01Ci/WHVdp8h/AJcW/SjFaAMjX6ASr16JVWv4iJgjlfkLsamu6Opcj8BI1wN4AuVYoqxzfQMjX6AyulnA6xEYAZR4DmAxxGGsI9CONTAqqdjHrryf2ZO/Bq+/5vw6g8FKamqvsETqxjB3zvRq27xenT8OOMAVV9i4+SYbLldsQYbrsP/FH87dQ0FhgLEPuLjqcnuDWu1rGlZ/7aj9XPonG8Mujv3zEGm4/upfPXTpaMRiabr8n4qKANYoflAe7mgO1z/l0cjD9f/3TPMbrn/dddfVuk9RFObMmRNVOVH9xNy5cyfjxo1j48aNPPTQQ2En0CjiqqNmQD8rv37TBqdDYfUaDzeNaFhr0UEHP9R3jIxj7L2NO3t263SNf7ycElNQdKSD/5ei4gBduxh5980U2rZuWG/p5AmusDmOdF2n0guPPujkvrvqN1u02ayw6r8tGdW1f63HBAjQiz8Sr0Q34Vl9KIpCK0OHRi/38PLjDbFPZx+JQTVhoGnmCbNr8U1SrqKoUQdFsWispVGOFGnix1h5fW72Fq5lV97PFJfvrvW4JGcWrZJ6kZDRvVoidVOprNT5z7+TYw6IjlReEeDaKx3cdK2j2vxojeW155NxNuG6br26NX1LTn2DoqPuOOxKmzt3bqOUE/Un75VXXmHcuHFs3ryZF154AYcjeMJrbtOYH2xS/euERM7qH3uzc02eeCCh0Z/vP15OId7VuDO7DjjTwu23OBtldtYjT2yBALw4NZ4RV8b2a7muk6+maMTT+EGREMfSj1vm1RoQWU3xpCf1pFViDyym4IAO71EKioAah903hM2qcvvNjfOjtDZNGRSJoOMx+Rpg9+7dzJ8/n02bNmEwGOjYsSNXXHFFvRaYjfrd1a1bNxYuXEheXh7Dhw9n27ZtDVrT5Ejr1q1j2LBh9OzZk0suuYSff/65QeWdM8hWr0TjaDRFENjYQRHAg3e7Gm3K+iNpmhJzUCTE71VaQviak6piIC2hG307XEf/k/9CVuqAUFAkRHOgBCJfmqP169dz0UUX8fHHH2O1WtE0jSVLlnDxxRezYcOGqMuJ6tvzYEDQsmVL3n77bTp06MDw4cP58ccfY6v9ETweD6NHj+ayyy7jhx9+4LrrruP222+nrCy2OTeEEKI5SUvsjqKoxNnS6dL6QgZ2vY9u7f5MojOz2bW6CwEEk68jXZqhZ599lgEDBrBs2TJeeuklXn75ZT799FMGDRrEc889F3U5UQVGh+cRWSwWXn75Za6++mruvbdxkq9WrFiBqqqMGDECo9HIsGHDSE5OZvny5Y1SvhBCHEsmg43+J/+FM066hTYpfTEaGj60XIimpOiRL83Rzz//zB133IHReGgKEaPRyKhRo/jpp+jXg4yqI/vOO+/EZgvvPrn33ntp3749CxcujPrBapOTk0NWVlbYtszMTLKzsxtcthBCNAdW6SoTx5NmGvxEEhcXV2NPU2lpabWh+5FEHRjV5JJLLuGSSy6J+sFqU15eXm36bovFgttd82SA5jQJmA5qqrETTTeWCD5tpv3TQpz4Hj3WFRDHieaaRxTJoEGDmDhxIi+++CJt27YFYOvWrUyePJmBAwdGXU6zmPnaarVWC4Lcbne1ViohhBBCNL3jMTC67777GDlyJOeddx7x8fEAFBQU0LNnTx59NPofBc0iMGrfvj3z5s0L25aTk8PQoUOPUY2EEEKI37HjsCstPj6eRYsW8fXXX7Np0yYsFgtZWVn069evXuU0i8kg+vXrR2VlJXPnzsXr9bJw4UJyc3Pp37/2iQCFEEII0TSOx+H6AIsWLQotJnvttdcyf/58/vWv+i2+3SwCI5PJxOzZs/noo4847bTTmDdvHq+99pp0pQkhhBDHwPE4Ku3111/n6aefxuc7tBh0VlYWEydOZP78+VGX0ywCI4DOnTvzz3/+k9WrV/P+++/Ts2fPY12lRrNw4UJOP/30sG0ffvghQ4YMoWfPnowaNYrc3NxjVLvj24wZMxg0aBB9+/bluuuuY+PGjaF93377LUOHDqVnz56MGDGCnJzaV2MXkTX2BKwCVq1axfDhw+nTpw9nn302//znPwEoKipizJgx9OnTh0GDBrFgwYJjXNPjX25uLv369ePLL78Egstc3XDDDfTq1YvzzjsvtF0cJlDHpRl6++23mTp1atigsHvvvZcpU6bw1ltvRV1OswmMTlQ7duxgypQpYds2bNjA+PHjmTZtGitWrCA5ObleiWEiaPHixSxZsoS5c+eyYsUK+vXrx6hRowgEAuTm5nLnnXdy33338f3333PmmWdy5513Nqu1/Y4XMgFr4ysqKuKOO+7g+uuv54cffuCll15i2rRpfPvtt4wbNw6bzca3337L9OnTee655yQQbaCxY8dSWFgYun333XfTvXt3vv/+ex577DHuv/9+du+ufQ2736PjscUoLy+Pjh07VtvepUsX9u7dG3U5Ehg1Ib/fz0MPPcSVV14Ztv2DDz5gyJAh9OjRA4vFwgMPPMDXX38trUb1VFBQwOjRo2nTpg0Gg4Hrr7+e3bt3s3fvXpYtW0aXLl0YPHgwJpOJ22+/nf379/Prr78e62ofd2QC1sa3e/duBg4cyEUXXYSqqpxyyimcfvrp/PTTT3z22WfcddddmM1munfvztChQ3n//fePdZWPW++88w5Wq5W0tDQAtmzZwsaNGxkzZgxGo5GBAwdy2mmn8dFHHx3jmjYvSkCPeGmOOnXqxNKlS6tt/+ijj2jfvn3U5TSLUWnHK5/PR3l5ebXtqqricDiYNWsWHTt2ZMCAAWETYWZnZ9OrV6/Q7YSEBFwuFzk5OSQnJx+Vuh8vIr3GN998c9i2L774gvj4eFJTU8nOzg6bNFTTNNq0aUN2djbdu3dv8nqfSGQC1sbXpUsXpk6dGrpdVFTEqlWrOOmkkzAYDLRp0ya0LzMzk2XLlh2Lah73cnJyeOONN3jvvfe47LLLgOD5t1WrVlgsh2Yfl/dzdc05wbo2Y8aM4fbbb+eHH34InefXrl3LDz/8wMsvvxx1ORIYNcD333/PyJEjq21v1aoV06dPZ+nSpSxcuJC1a9eG7a+oqAj7UEJwLqeKioomre/xKNJr/MUXX4QdN378eCZOnIiqqlRUVOBwhE9TKa9xbOo7Aauon5KSEkaPHh1qNZozZ07YfnmtY+Pz+XjooYcYO3ZsaE4bkPdz1Jpno1BEAwcOZP78+cybN4/ly5djMBho3749CxYs4OSTT466HAmMGuDMM8/kt99+q7bd7XYzbNgwnnrqKex2e7X9NX0IKyoqZBReDWp7jQ/3/vvv8+STTzJu3DguuugioOZJQ+U1jo1MwNp0duzYEeoOfvHFF9myZQsejyfsGHmtYzNjxgy6dOlSbcZjeT9H53hsMQLo1atXWI9MLCTHqAmsXbuWHTt2MGrUKPr27cvo0aMpKiqib9++7N69m6ysrLARUvn5+RQVFVXrrhB1e/XVV3nmmWeYMWNGqKkcgpOGHv4a+/1+tm/fTocOHY5FNY9rR76WEOyikNeyYf73v/9xxRVX0L9/f2bMmIHFYiEjIwOv1xuWCCyvdWw+/vhjPvroI/r27Rs69953333k5OSwa9cuKisrQ8fKa1zd8Zh8fbjevXuzY8eOmO4rgVET6Nu3L7/88gurVq1i1apVzJw5E5fLxapVq0hPT2fo0KEsW7aMVatW4fF4mDZtGgMGDCAhIeFYV/24smjRIt566y3efvvtajObnnPOOaxdu5Zly5ZRWVnJa6+9Rmpqar2aU0WQTMDa+HJzc7nlllsYOXIkjz76KKoaPBU7HA6GDBnC888/T0VFBWvWrOHDDz8MtYSK6P373//mxx9/DJ2H09PTmTZtGqNGjaJDhw68+OKLVFZWsnz5clauXMn5559/rKvcrByvEzwe1JARyNKVdgx06dKFSZMmMXbsWA4cOEDfvn155plnjnW1jjuzZs2irKyMYcOGhW1fuHAhWVlZzJgxg6effpqHH36YLl268PLLL6MoyjGq7fHr4ASsEyZMYNq0aWRkZMgErA20cOFC8vPzee2113jttddC26+//nomTZrE+PHjGThwIDabjQcffJAePXocw9qeeF5++WWeeOIJ+vXrR3JyMtOmTQuNWhNVjvOpTRpyrld0mdhFCCGEEIfpd/XzEfd/9879R6km0duwYQOdO3cGgrlGS5cuDRvhGS1pMRJCCCFEGMV/rGtQf5deeildunThsssu4/PPPycxMTGmciTHSAghhBBhjsfk62XLljFkyBDmzZvHgAEDGDNmDJ999lnY2mnRkK40IYQQQoTpf/lzEfd/s+iBmMp98803ef311ykrK2Pw4MFMnDixxnzFX3/9lSuuuCJszr9Ro0YxevToqB5n9erVfPDBB3z++edUVlYydOhQLr/88lBXWyTSYiSEEEKIcHodlxh8+eWXvP7668yZM4fly5dTVFTEX//61xqPXb9+PQMGDGD16tWhS7RBEQRzjM4991yGDBlCRUUFS5cuZfjw4VEtKC6BkRBCCCHCNMVaaUuWLGHYsGFkZmbidDq5++67WbJkCX5/9YSmdevWRdW6c6QNGzbw7LPPMmDAAG655Rb27dvHc889x3//+1+++uor4uPjueuuuyKWIcnXQgghhAgTax5RpPUts7OzOeecc0LbMjMzKS8vZ9++faSnp4cdv379ekwmE4MHDyYQCHDBBRdw7733YjKZan3soUOHsmXLFjp16sRNN93ExRdfHJaAnZCQwCWXXMLjjz8e8TlIYCSECFm1ahUvvvgi8+bNa5LyN23axCOPPMK7776LwSCnHyGaq1gncYy0vqWmaWE5QwfXrKtpDcuEhAROP/10rrzySvLy8rj77ruZPn06DzxQe27TmWeeydSpU+nSpUutx5x++ul88sknEZ+DnJmEEAB4PB7Gjh0btup7Y+vYsSNdunRh9uzZ3H777U32OEKIBvLH1mQUaX3Liy66KGwtwIMBUU1ris6cOTP0t81mY9SoUUybNi1iYPTYY4/VWb/DFxSujeQYCSEAWLx4MUlJSXTv3r1JH2fkyJHMnj2bkpKSJn0cIUTsmmK4flZWFtnZ2aHbOTk5xMXF0aJFi7DjioqKePbZZyktLQ1t83g8mM3m2B64niQwEuIE9Mknn3DSSSexfPlyILhu0MiRI/nzn/8ctnjm4d58800uuOCC0O3Fixdz/vnn8+677zJ48GC6du3KiBEj2LJlS+iYk046iQULFnDVVVfRrVs3LrzwQn7++WfefvttBg4cSO/evbnvvvvCHjMrK4tWrVrx3nvvNdGzF0I0VFMkX1988cW8++67bNq0idLSUqZPn87QoUNDawUe5HQ6+fTTT3nllVfwer1s27aNmTNnhi0U3pQkMBLiBHTBBRcwdOhQJkyYQFlZGXPnzmX16tU899xzNSYvZmdns3XrVgYNGhS2fefOnXzwwQdMnz6d9957j6KiIiZNmhR2zLRp07jttttYsmQJDoeD2267jc8//5zZs2fzzDPPsGzZMhYuXBh2n4EDB/LFF180+vMWQjSSJhiuP3jwYG699VZGjRrFoEGDcDqdPPTQQwDs3r2bXr16sXv3blRVZebMmWzYsIEzzjiDESNGcP7553PDDTc0xjOrk+QYCXGCeuKJJxg6dChjx47lyy+/5LHHHiMrK6vGY9esWYPVaqV169Zh271eL08++WTofldccQUvvPBC2DFXXHEFgwcPBuCSSy5h4sSJTJgwgTZt2tCpUyf+/ve/s2nTprD7dOzYkTfffLORnqkQorEpMeYY1eX666/n+uuvr7Y9PT2d1atXh2536NDhmJ0jpMVIiBOUy+Vi4sSJfPLJJ/Tt25crr7yy1mNzc3NxuVzVVqRWFIWMjIzQbafTidfrDTumbdu2ob+tViuqqoYFWBaLpVr3XWJiIl6vl6KiopiemxCiaSm6HvFyIpPASIgT2P/+9z80TWP9+vXk5+fXepyiKDVOsqaqarVh9UeuInTkfkVRqgVYRwoEAqHyhRDNUECPfDmByVlJiBPU2rVree2113juuedITk7miSeeqPXYlJQUCgsLqwU9TSU/Px+r1YrT6TwqjyeEqJ+mSL4+XkhgJMQJqLKykocffpjBgwdz4YUX8tRTT/H555/z/vvv13h89+7d8Xq91XKBmsq6deuafFoAIUTslEDky4lMAiMhTkAvvPACBw4cCLUSde/eneuvv57Jkyezd+/ease3a9eO9u3bs3LlyqNSv5UrVzJkyJCj8lhCiBj8jrvSFP1otZ0LIZq1+fPns2jRIhYvXtykj7NhwwauueYavvzyS+Li4pr0sYQQsTm336SI+5d9N+4o1eTokxYjIQQAw4cPp6ioiB9//LFJH+ett95i5MiREhQJ0Zz59ciXE5gERkIIAEwmE08//TTPP/98kz3Gxo0b2bBhA7fddluTPYYQouF+z8P1pStNCCGEEGHO6zM+4v7//PjkUarJ0SczXwshhBAi3Ak+8iwSCYyEEEIIEUYJ/H4jIwmMhBBCCBFOAiMhhBBCiCq/37hIAiMhhBBChJOuNCGEEEKIg07w2a0jkcBICCGEEOGkxUgIIYQQosrveIpDCYyEEEIIEc7vP9Y1OGYkMBJCCCFEOL90pQkhhBBCBElXmhBCCCFEFUm+FkIIIYSoIoGREEIIIUQVCYyEEEIIIarIBI9CCCGEEEG6DNcXQgghhKgigZEQQgghRBUZri+EEEIIESRdaUIIIYQQB0nytRBCCCFEkLQYCSGEEEIcpMs8RkIIIYQQwO+7xUjR9d9x6rkQQgghxGHUY10BIYQQQojmQgIjIYQQQogqEhgJIYQQQlSRwEgIIYQQoooERkIIIYQQVSQwEkIIIYSo8v/gkSf41WMMKgAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "system.m.plane(\"y\").mpl(figsize=(10, 3))" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.12" }, "widgets": { "application/vnd.jupyter.widget-state+json": { "state": {}, "version_major": 2, "version_minor": 0 } } }, "nbformat": 4, "nbformat_minor": 4 }