{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "### x lines of Python\n", "\n", "# Code golf: Let x = 1\n", "\n", "Code golf... reducing functions to their smallest possible size. Like x lines of Python, but x = 1.\n", "\n", "This notebook goes with a blog post of the same name.\n", "\n", "## Ricker wavelet: 95 chars\n", "\n", "First, define our short function:" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [], "source": [ "def r(l,d,f):import numpy as n;t=n.arange(-l/2,l/2,d);k=(n.pi*f*t)**2;return t,(1-2*k)/n.exp(k)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now import the version in `bruges` for comparison:" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": true }, "outputs": [], "source": [ "from bruges.filters import ricker" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Plot the two together:" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\nIP+/wlHVMQAAAABJRU5ErkJggg==\n", "text/plain": [ "<matplotlib.figure.Figure at 0x10faa4c50>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "%matplotlib inline\n", "\n", "t, w = r(0.128, 0.004, 25)\n", "\n", "plt.figure(figsize=(10,3))\n", "plt.plot(t, ricker(0.128, 0.004, 25), 'o') # Compare to bruges.\n", "plt.plot(t, w)\n", "plt.xlim(-0.07, 0.07)\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can use the `inspect` module ot compare the source code:" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "'def r(l,d,f):import numpy as n;t=n.arange(-l/2,l/2,d);k=(n.pi*f*t)**2;return t,(1-2*k)/n.exp(k)'" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import inspect\n", "inspect.getsource(r).strip()" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "95" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(inspect.getsource(r).strip())" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "1033" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(inspect.getsource(ricker).strip())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Ormsby wavelet: 169 chars" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false }, "outputs": [], "source": [ "def o(l,d,f):import numpy as n;t=n.arange(-l/2,l/2,d);p=n.pi;f,g,h,i=f;λ=lambda ϕ,t:(n.sinc(ϕ*t)*p*ϕ)**2;A=(λ(i,t)-λ(h,t))/(i-h)-(λ(g,t)-λ(f,t))/(g-f);return t,A/max(A)" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": true }, "outputs": [], "source": [ "from bruges.filters import ormsby" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\niYiIiIhI2vl/XaHq8o8kkGUAAAAASUVORK5CYII=\n", "text/plain": [ "<matplotlib.figure.Figure at 0x112fb8be0>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "%matplotlib inline\n", "\n", "t, w = o(0.128, 0.004, [8, 12, 60, 80])\n", "\n", "plt.figure(figsize=(10,3))\n", "plt.plot(t, ormsby(0.128, 0.004, [8, 12, 60, 80]), 'o') # Compare to bruges.\n", "plt.plot(t, w)\n", "plt.xlim(-0.07, 0.07)\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "'def r(l,d,f):import numpy as n;t=n.arange(-l/2,l/2,d);k=(n.pi*f*t)**2;return t,(1-2*k)/n.exp(k)'" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "inspect.getsource(r).strip()" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "168" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(inspect.getsource(o).strip())" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "1545" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(inspect.getsource(ormsby).strip())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Aki-Richards: 192 chars" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "collapsed": false }, "outputs": [], "source": [ "def r(a,c,e,b,d,f,t):import numpy as n;w=f-e;x=f+e;y=d+c;p=n.pi*t/180;s=n.sin(p);return((w/x)-(y/a)**2*w/x*s**2+((b-a)/(b+a))/n.cos((p+n.arcsin(b/a*s))/2)**2-4*((y/2)/a)**2*((d-c)/(y/2))*s**2)" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "collapsed": false }, "outputs": [], "source": [ "from bruges.reflection import akirichards" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "<matplotlib.figure.Figure at 0x1131d5048>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# 4-term Aki-Richards equation in 255 characters!\n", "# http://subsurfwiki.org/wiki/Aki–Richards_equation\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "%matplotlib inline\n", "\n", "rock1 = (2300, 1200, 2500) # Vp, Vs, rho for layer 1\n", "rock2 = (2400, 1250, 2450) # Vp, Vs, rho for layer 2\n", "theta1 = np.arange(40)\n", "\n", "result = r(*rock1, *rock2, np.arange(40))\n", "\n", "plt.figure(figsize=(10,4))\n", "plt.plot(akirichards(*rock1, *rock2, np.arange(40)), 'o')\n", "plt.plot(result)\n", "\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "'def r(a,c,e,b,d,f,t):import numpy as n;w=f-e;x=f+e;y=d+c;p=n.pi*t/180;s=n.sin(p);return((w/x)-(y/a)**2*w/x*s**2+((b-a)/(b+a))/n.cos((p+n.arcsin(b/a*s))/2)**2-4*((y/2)/a)**2*((d-c)/(y/2))*s**2)'" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "inspect.getsource(r).strip()" ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "192" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(inspect.getsource(r).strip())" ] }, { "cell_type": "code", "execution_count": 28, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "1828" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(inspect.getsource(akirichards).strip())" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "## Exact Zoeppritz: 386 chars\n", "\n", "From Dvorkin et al. (2014). Seismic Reflections of Rock Properties. Cambridge.\n", "\n", "I can't find a way to get rid of any of the newlines or indents." ] }, { "cell_type": "code", "execution_count": 29, "metadata": { "collapsed": false }, "outputs": [], "source": [ "def z(α,β,ρ,χ,ψ,ω,t):import numpy as n;t=n.pi*t/180;C=n.cos;A=n.arcsin;S=n.sin;p=S(t)/α;u=A(p*χ);ϕ=A(p*β);υ=A(p*ψ);v=lambda w,x,y,z: y-2*y*S(z)**2+2*w*S(x)**2;a=ω-2*ω*S(υ)**2-ρ+2*ρ*S(ϕ)**2;b=v(ρ,ϕ,ω,υ);x=v(ω,υ,ρ,ϕ);d=2*(ω*ψ**2-ρ*β**2);E=b*C(t)/α+x*C(u)/χ;F=b*C(ϕ)/β+x*C(υ)/ψ;G=a-d*C(t)/α*C(υ)/ψ;H=a-d*C(u)/χ*C(ϕ)/β;return(F*(b*C(t)/α-x*C(u)/χ)-H*p**2*(a+d*C(t)/α*C(υ)/ψ))/(E*F+G*H*p**2)" ] }, { "cell_type": "code", "execution_count": 30, "metadata": { "collapsed": true }, "outputs": [], "source": [ "from bruges.reflection import zoeppritz_rpp" ] }, { "cell_type": "code", "execution_count": 31, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA1kAAAFkCAYAAADSevFpAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAAPYQAAD2EBqD+naQAAIABJREFUeJzs3Xd4lFX6//H3GQglEIqClACCBQhNICJGFN2VqhQVUAN2\nVxRF3ACrrmQXVuG335VmXLMuoDRZsIAike5iWSkRE6pEFKQYeg1DaEPm/P6YSUxiAkwIPJPk87qu\nXJjnOXOee5jLwM19zn2MtRYREREREREpHC6nAxARERERESlOlGSJiIiIiIgUIiVZIiIiIiIihUhJ\nloiIiIiISCFSkiUiIiIiIlKIlGSJiIiIiIgUIiVZIiIiIiIihUhJloiIiIiISCFSkiUiIiIiIlKI\nlGSJiIiIiIgUogIlWcaY54wx24wxJ40xq4wxbc4zvo8xJsU/fp0xpmuu+/caYxYZYw4YY7zGmBa5\n7lc1xrxpjPnBGJNujNlhjIkzxlTKNc6b6yvDGHN/Qd6jiIiIiIhIQQScZBljHgDGAsOBVsA6YLEx\nplo+46OAmcAkoCUwF5hrjGmSbVgF4BvgJcDmMU1toBYwGGgGPAp0Ad7JY+yjQA2gpv81cwN7hyIi\nIiIiIgVnrM0rpznHC4xZBSRaa1/wf2+AX4A3rbWv5zH+fSDUWtsj27WVwBpr7bO5xl4NbANaWmvX\nnyeO3sB7QAVrrdd/zQvcY62dF9CbEhERERERKSQBVbKMMSFAJPDfzGvWl6V9DkTl87Io//3sFp9j\n/IWqAhzLTLCyifcvO0w0xjx+kc8QEREREREJSOkAx1cDSgH7cl3fBzTK5zU18xlfM8BnZ/EvTYwF\nJuS69RdgGXAC6AT8yxhTwVr7Vj7zXAl0BrYDpwoaj4iIiIiIFHnlgPrAYmvtoYuZKNAkKz+GvPdS\nFdb4X19oTBgwH9gI/C37PWvtqGzfrjPGVAT+BOSZZOFLsP5TkDhERERERKRY6oevp0SBBZpkHQQy\n8DWWyO4qflutyrQ3wPH58idNi4GjwH3W2ozzvCQRiDXGlLHWnsnj/naAGTNmEBEREWg4UkhiYmIY\nP36802GUaPoMnKfPwFn6/XeePgPn6TNwnj6DgrHW4msTcXFSUlJ46KGHwJ8jXIyAkixrrccYkwTc\nCcyDrMYXdwJv5vOylXnc7+i/nudj8rror2AtBk4CPfJJmnJrBRw5x9hTABEREbRu3foCppNLoXLl\nyvr9d5g+A+fpM3CWfv+dp8/AefoMnKfP4MK53W6GDRtDQsJyPJ4KhISk0717O0aNGkpYWNjFTn/R\n24gKslxwHDDNn2x9C8QAocBUAGPMdCDVWvuKf3wc8JUxZjC+ZX7R+JpnPJU5oTGmKlAPCMe3lLCx\nP3nba63d569gLcW3TrIfUCVbtrrfWmuNMd3wVchWAafx7cn6M/CbjociIiIiIlI0ud1uoqJ6kZIy\nGK93BJk7keLjF7NsWS9WrpxTGInWRQn4nCxr7YfAEOBVYA3QAuhsrT3gH1KHbE0trLUr8SVW/YG1\nwH1AT2vtpmzT9vDPlYCvkjULSAae9t+PBNoAzYEtwG5gj//Xuv4xHmAgvgrZGnxJ3B+tta8G+h5F\nRERERCQ4DRs2xp9gdYGKmTuQDF5vF1JSYoiNHetofFDAxhfW2n8B/8rn3u/zuDYHmHOO+aYB085x\n/yt8XQ3PFdNifMsJRURERESkmEpIWO6rYF2xBQY2gv8shK2dAPB6uzBv3jji4pyNMeBKlkhhi46O\ndjqEEk+fgfP0GThLv//O02fgPH0GztNncH7WWjyeCoCB1u/A6cqw47ZsIwweTyi+o3ydY5wOwEnG\nmNZAUlJSkjYZioiIiIgUAQ0adGD7L/Mhph5sjIZFb2S7a6lfvyPbtn0e8LzJyclERkYCRFprky8m\nRlWyRERERESkyOjevR2m8atQcT8kPZXjnsu1iB49bnUosmxxOB2AiIiIiIjIhRo1aiiht/0bdjaB\nA038Vy0u10IiIsYzcuQQR+ODAja+EBERERERccKBswdIr3mYjsfb81P9Tng8oYSEnKBHj3aMHOl8\n+3ZQkiUiIiIiIkXIpKRJVClXhU9fmUn50eWx1pLtDN2goOWCIiIiIiJSJJzJOMPktZN5uMXDlA8p\nDxB0CRYoyRIRERERkSIiYXMC+9P381Trp84/2EFKskREREREpEiYmDyRqDpRNK/R3OlQzklJloiI\niIiIBL1tR7axZOsS+kf2dzqU81KSJSIiIiIiQe+d5HeoXLYy9ze93+lQzktJloiIiIiIBDVPhofJ\nayfzUIuHCA0JdTqc81KSJSIiIiIiQe2zHz9j7/G9Qd/wIpOSLBERERERCWoTkyfSNrwtN9S8welQ\nLoiSLBERERERCVrbj25n8ZbFRaLhRSYlWSIiIiIiErTeTX6XsLJhPND0AadDuWBKskREREREJCid\n9Z7l3TXv8lDzh6hQpoLT4VwwJVkiIiIiIhKU5v84nz3H9xSppYKgJEtERERERILUhKQJ3BR+U5Fp\neJFJSZaIiIiIiASdHUd3sGjLIvq3LlpVLFCSJSIiIiIiQejdNe9SsUxFHmhWdBpeZFKSJSIiIiIi\nQSWz4UW/5v2oWKai0+EETEmWiIiIiIgElQU/LWC3e3eRa3iRSUmWiIiIiIgElYlJE7mx9o20qtXK\n6VAKREmWiIiIiIgEjZ1pO1m4ZWGRbHiRSUmWiIiIiIgEjclrJhMaEsqDzR50OpQCU5IlIiIiIiJB\nIbPhRd9mfQkrG+Z0OAWmJEtERERERILCoi2LSD2WWmQbXmRSkiUiIiIiIkFhYtJEWtdqTWTtSKdD\nuShKskRERERExHGpx1KZ/9N8no582ulQLpqSLBERERERcdzkNZMpX7o80c2inQ7loinJEhERERER\nR2V4M3gn+R36Ni/aDS8yKckSERERERFHLdqyiF+O/VLkG15kUpIlIiIiIiKOmpg8kVY1WxFZq2g3\nvMikJEtERERERByz69guPvvxM/pH9scY43Q4hUJJloiIiIiIOGbymsmUK12Ovs37Oh1KoVGSJSIi\nIiIijsjwZvDOmneIbhZNpbKVnA6n0CjJEhERERERRyzZuoSdaTuLTcOLTEqyRERERETEEROTJ3JD\njRtoU7uN06EUKiVZIiIiIiJy2e127yZhc0KxaniRSUmWiIiIiIhcdlPWTKFMqTL0a97P6VAKXYGS\nLGPMc8aYbcaYk8aYVcaYc9b3jDF9jDEp/vHrjDFdc92/1xizyBhzwBjjNca0yHW/qjHmTWPMD8aY\ndGPMDmNMnDGmUq5xdY0x8/1j9hpjXjfGKJEUEREREQkiXutlUvIkHmz2IJXLVXY6nEIXcAJijHkA\nGAsMB1oB64DFxphq+YyPAmYCk4CWwFxgrjGmSbZhFYBvgJcAm8c0tYFawGCgGfAo0AV4J9tzXMAC\noDRws3/MY8Crgb5HERERERG5dJZuXcqOtB3FruFFJmNtXjnNOV5gzCog0Vr7gv97A/wCvGmtfT2P\n8e8DodbaHtmurQTWWGufzTX2amAb0NJau/48cfQG3gMqWGu9/urYPKCWtfagf8zTwP8B1a21Z/OY\nozWQlJSUROvWrS/8N0FERERERArEWkvvj3qz5fAW1j69Nmj2YyUnJxMZGQkQaa1Nvpi5AqpkGWNC\ngEjgv5nXrC9L+xyIyudlUf772S0+x/gLVQU4Zq31+r+/GdiQmWBle05loOlFPktERERERArI7XYz\naNBwGjToQO2GXfj4+0+oujWc48ePOx3aJRHocsFqQClgX67r+4Ca+bymZoDjz8u/NDEWmHABz8m8\nJyIiIiIil5nb7SYqqhfx8VFs376UvbVuh4xyfB3/BFFRvXC73U6HWOhKF9I8hrz3UhXW+F9faEwY\nMB/YCPztAl92zmfFxMRQuXLODXfR0dFER0cXJEQREREREfEbNmwMKSmD8Xq7gPFC60mw8QHsyd6k\npFQgNnYscXEjLmtMs2bNYtasWTmupaWlFdr8gSZZB4EMoEau61fx2ypSpr0Bjs+XMaYiviWAR4H7\nrLUZuZ6Tu8th5nPP+azx48drT5aIiIiIyCWQkLAcr3eE75trPoeq22GOr+GF19uFefPGERd3eWPK\nq6CSbU/WRQtouaC11gMkAXdmXvM3vrgTWJHPy1ZmH+/X0X89z8fkddFfwVoCnAR6WGvP5PGc5rm6\nHHYC0oBN+TxLREREREQuEWstHk8FfAvZgLZvwr7mkHqzf4TB4wkl0GZ8wa4gywXHAdOMMUnAt0AM\nEApMBTDGTAdSrbWv+MfHAV8ZYwbjW+YXja95xlOZExpjqgL1gHB8n0Bjf/K211q7z1/BWgqUA/oB\nVbJ1ITngb36xBF8y9Z4x5iV8Ld9fA97yJ4ciIiIiInIZGWMICUkHLFz1PTScDx9PJyvpwhISkh40\nHQYLS8DnZFlrPwSG4Dt/ag3QAuhsrT3gH1KHbI0mrLUr8SVW/YG1wH1AT2tt9upSD/9cCfgqWbOA\nZOBp//1IfEsBmwNbgN3AHv+vdfzP8QLd8C1nXAFMx5f4DQ/0PYqIiIiISOHo3r0dLtdiuGUMpNWF\njQ9m3XO5FtGjx60ORndpBHxOVnGic7JERERERC4tt9vNjb+/mx+7roClr8OqwYDF5VpERMR4Vq6c\nQ1hYmNNhOndOloiIiIiISCDCwsLoPLwlZU0I9Q4mEB7ek/r1OzFwYGLQJFiFrbBauIuIiIiIiPzG\n0VNHmbJhCkPaD2bU30ZhrS12e7ByUyVLREREREQumX9/9288GR6eb/s8QLFPsEBJloiIiIiIXCKn\nzp4iLjGOR294lJoVa57/BcWEkiwREREREbkkZqyfwb7j+xhyyxCnQ7mslGSJiIiIiEih81ovo1eM\n5t6Ie2l4ZUOnw7ms1PhCREREREQK3bzN8/jx0I9Mv2e606FcdqpkiYiIiIhIobLW8o/l/6D91e1p\nW6et0+FcdqpkiYiIiIhIoVr+y3JWpa7is+jPnA7FEapkiYiIiIhIoXp9+es0rd6Urtd3dToUR6iS\nJSIiIiIiheb7/d+T8GMCU3tOxWVKZk2nZL5rERERERG5JMasHEN4WDjRzaOdDsUxSrJERERERKRQ\npB5L5T/r/0PMzTGUKVXG6XAcoyRLREREREQKRdyqOEJDQnkq8imnQ3GUkiwREREREbloR08dZULS\nBAbcOIBKZSs5HY6jlGSJiIiIiMhFm/DdBE5nnGZQ20FOh+I4JVkiIiIiInJRTp89zRuJb/BIi0eo\nFVbL6XAcpyRLREREREQuyoz1M9h3fB9DbxnqdChBQUmWiIiIiIgUmNd6Gb1iND0b96RRtUZOhxMU\ndBixiIiIiIgUWMLmBDYf2szUe6Y6HUrQUCVLREREREQK7PUVr3Nbvdu4uc7NTocSNFTJEhERERGR\nAlm+czkrfllBQnSC06EEFVWyRERERESkQF5f8TpNqjfhruvvcjqUoKJKloiIiIiIBCzlQArzNs9j\nSs8puIxqN9npd0NERERERAI2ZsUYaofVpm/zvk6HEnSUZImIiIiISEB2u3fz3vr3iLk5hjKlyjgd\nTtBRkiUiIiIiIgGJWxVH+ZDy9I/s73QoQUlJloiIiIiIXLC0U2n8O+nfDLhxAJXKVnI6nKCkJEtE\nRERERC7YxKSJnDp7ikFtBzkdStBSkiUiIiIiIhfk9NnTvJH4Bg+3eJjaYbWdDidoKckSEREREZEL\nMnPDTHa7dzP0lqFOhxLUlGSJiIiIiMh5ea2X0StG07NRTxpXa+x0OEFNhxGLiIiIiMh5zf9xPikH\nU3inxztOhxL0VMkSEREREZFzstby+orXaVe3HbfUvcXpcIKekiwREREREfkNt9vNoEHDadCgA1dF\ntuebnd9Q5fs6uN1up0MLekqyREREREQkB7fbTVRUL+Ljo9i+fSkHG1aDA41Z8MYjREX1UqJ1Hkqy\nREREREQkh2HDxpCSMhivtwtU2wyNP4UVf8J67yIlJYbY2LFOhxjUlGSJiIiIiEgOCQnL8Xo7+76J\nGgvHa8L6fgB4vV2YN2+5g9EFPyVZIiIiIiKSxVqLx1MBMFD1Z2g5DVbGQEZZ/wiDxxOKtdbJMIOa\nkiwREREREclijCEkJB2w8Lu/QHp1WP1cthGWkJB0jDFOhRj0CpRkGWOeM8ZsM8acNMasMsa0Oc/4\nPsaYFP/4dcaYrrnu32uMWWSMOWCM8RpjWuQxx1PGmC+MMWn+MZXyGLPdfy/zK8MY82JB3qOIiIiI\nSEnVvXs7TO14aDETvhwBntCsey7XInr0uNW54IqAgJMsY8wDwFhgONAKWAcsNsZUy2d8FDATmAS0\nBOYCc40xTbINqwB8A7wE5Fd3LA8sBEadY4wFYoEaQE2gFvDPC31vIiIiIiICo0YNpUKPEXCwDqx9\nzH/V4nItJCJiPCNHDnEwuuBXugCviQEmWGunAxhjngHuBp4AXs9j/AvAQmvtOP/3w40xnYCBwLMA\n1toZ/rmuBvKsO1pr3/SPuf088R231h4I6B2JiIiIiEiW1QdXc7zmIe5y38+menfh8YQSEnKCHj3a\nMXLkHMLCwpwOMagFlGQZY0KASOD/ZV6z1lpjzOdAVD4vi8JX+cpuMdAzkGcH4GVjzF+BnfgqaOOt\ntRmX6FkiIiIiIsWKtZaXP3+ZtuFt+ezJ9zFjDNZa7cEKQKCVrGpAKWBfruv7gEb5vKZmPuNrBvjs\nCxEHJAOHgVuA//M/Z+gleJaIiIiISLEzJ2UOq3ev5stHv8xKrJRgBaYgywXzYsh/n1RhjL8g1to3\nsn270RjjAf5tjPmztdZT2M8TERERESlOPBkeXvnvK3S9riu31z/fLh3JT6BJ1kEgA19jieyu4rfV\nqkx7AxxfmBLxvcf6wE/5DYqJiaFy5co5rkVHRxMdHX1JgxMRERERCSaT10xmy+EtfNTnI6dDuaRm\nzZrFrFmzclxLS0srtPkDSrKstR5jTBJwJzAPwPhqh3cCb+bzspV53O/ov57nYwKJ6TxaAV5g/7kG\njR8/ntatWxfiY0VEREREipb0M+mM+GoE/Vr044aaNzgdziWVV0ElOTmZyMjIQpm/IMsFxwHT/MnW\nt/i6DYYCUwGMMdOBVGvtK/7xccBXxpjBwHwgGl/zjKcyJzTGVAXqAeH4lhI29idve621+/xjMtuy\nX+8f08IY4wZ2WmuPGGNuBtoCXwBufHuyxgHvWWsLLy0VERERESmG4hLjOHzyMK/97jWnQynyAk6y\nrLUf+s/EehXfMsC1QOdsbdPrAGezjV9pjInGd77VKHzL9npaazdlm7YHMAVfFcsCmbW7v/mfA/AM\nvrO5Msd85b/+ODAdOA086B9TFtiGr6vh+EDfo4iIiIhISXLoxCH+sfwfDLhxAPWr1Hc6nCLPWFvo\n/SeKDGNMayApKSlJywVFREREpMQasngIk5InsXXQVqpXqO50OI7Itlww0lqbfDFzuQonJBERERER\nKYp2HN3BW6vf4k+3/KnEJliFTUmWiIiIiEgJNvzL4VQtV5WYqBinQyk2CuucLBERERERKWI27NvA\n9HXTeeuut6hYpqLT4RQbqmSJiIiIiJRQryx7hWuqXsNTrZ86/2C5YKpkiYiIiIiUQP/b8T8++/Ez\n3u/1PiGlQpwOp1hRJUtEREREpISx1vLS5y/RulZr+jTt43Q4xY4qWSIiIiIiJcy8zfNYmbqSpQ8v\nxWVUdyls+h0VERERESlBznrP8uf//pkO13SgwzUdnA6nWFIlS0RERESkBJm+bjopB1N47973nA6l\n2FIlS0RERESkhDjpOcnwL4fzQNMHiKwd6XQ4xZaSLBERERGREuKtb99i7/G9jPz9SKdDKdaUZImI\niIiIlABHTh7h79/8nf6t+3PdFdc5HU6xpiRLRERERKQE+Mfyf3A64zR/uf0vTodS7CnJEhEREREp\n5nYd20VcYhxDooZQs2JNp8Mp9pRkiYiIiIgUcyO+HEHFMhUZestQp0MpEdTCXURERESkGPvh4A9M\nXjuZsZ3GUqlsJafDKRFUyRIRERERKcaGLRtG3Up1GXDjAKdDKTFUyRIRERERKaZWpa7i45SPmX7P\ndMqWLut0OCWGkiwRERERkWLGWgvAS5+/RIsaLejbvK/DEZUsSrJERERERIoBt9vNsGFjSEhYjsdT\nAU/9HezvuI6P7vmIUq5STodXomhPloiIiIhIEed2u4mK6kV8fBTbty9l1+6P2d/CCzuaMbzfBNxu\nt9MhlihKskREREREirhhw8aQkjIYr7cLYKD5TKixAZZO4oeUwcTGjnU6xBJFSZaIiIiISBGXkLAc\nr7ez75tSp+H3f4GUeyH1ZrzeLsybt9zZAEsY7ckqRNZajDFOhyEiIiIiJYi1Fo+nAuD/e+gtY6BS\nKsxY6B9h8HhC9XfVy0iVLKBbt2cYNGh4gdaqut1uBg0aToMGHahb9x4aNOhQ4LlERERERAJljCEk\nJB2wcOWPcPtrsGIoHIzwj7CEhKQrwbqMlGQBe/a8TXx8FFFRvQJKjn6zwXDXp2zfvrRAc+Uls/Wm\niIiIiMi5dO/eDuNaBN2egWPh8NVfs+65XIvo0eNWB6MreZRkAWDweruQkhIT0KbA32wwvIi5Ml2q\nypgSNhEREZHia9SoodTq8ido8AV89jZ4QgGLy7WQiIjxjBw5xOkQSxTtyQJo/zeoVAtvRmmm7kmg\n3NKThJQKIcQVku+vZUqV4f0NH+NteAN4P4OMEDhbDk5XgtOV8Z5qw6cJY4iLu/AwMitjvsRtBL7E\nzRIfv5hly3qxcuUcwsLCApov+1kJISHpdO/ejlGjhgY0j4iIiIgEt1OuU5xsv5tGaS047R2NJzye\nkJAT9OjRjpEjA/s7pFw8U5IrHMaY1kAS9zSDq8pAKQ+ly2zj6mtq4PF68GR48vw1EKEhoVQuW5nK\n5SpTuWxlqpSrkvXf2a9XLleZD6cvYMEnrbEnO8KpKpB+FXgqAOByLWTgwETi4kZc0HNzJmydyUzY\nXK7FRESMCzhhExEREZHg9fAnD7PgpwX88NwPVK9QXU0uCiA5OZnIyEiASGtt8sXMpUoWwNxpQGvA\nUqd+R7Zs+zzfodZaMmwGngwPjZt2ZWfqbCh1FlweKH0Kyh6Dckeh3FGuDP8Lsa/1J+1UGmmn07J+\nPXzyMNuObCPtdBpHTx0l7VQapzNOQyXg0Q+Al3594OkwcNfCe7wW7x79gVKLj1GrYi1qhdXK8WuV\nclVy/I+UcyljpsyljJbY2LEXnLDl9Xug/2lFREREgsPSrUuZsX4GU3pOoXqF6gD6u5rDlGRlcyGb\nAo0xlDalKe0qTc8utxMf/12uRCZzroX063g/f7z5jxf07FOeUzSIuIe9R/4J5dJ8iVqFfRC2Byru\ngbA9eK7cyIKfFrDn+B6OnT6W4/XlSpejZsWaWYnX0v3f4m0XAsd3g7sWHKsLR64BT6j/rIRxAS9l\n1NJDERERkeBywnOCZ+Y/w+/q/45Hb3jU6XDET0kWkHNT4JwLftWoUUNZtqwXKSk2W/MLi8u1KOC5\nyoWUo1zGWTh8Hb820cgZY+36Hflhgq/Kln4mnb3H97Ln+B52u3ezx72HPcf9X+49nKyRBle/AaGH\nck7jrglHrmXfqR387cu/cd0V13FN1Wu49oprqR5aPc9/9SjsvWIiIiIiUjhe++o1dh3bxcJ+C1W9\nCiJKsoBatZ6lT5+uAW8KDAsLY+XKOcTGjmXevHF4PKEXtcGwe/d2xMcvzqcylrPKVqFMBa694lqu\nveLaPOdq8NcObN++FEp5oOJeqLwTqm6FK7ZC1Z/x1txA/Op4Dpw4kPWaimUqcm1V35zXVPElXtdW\nvZYZ/0xg0w8vYC/B0kPQ8kMRERGRgli/bz2jV4xmxB0jaHhlQ6fDkWzU+AKSkpKSaN269UXPd7HJ\nwq8Vo5g8K2OBVIwGDRpOfHxUvksZM5touE+7+fnIz2w9spWth7f++t9HtrLj6A4ybIbvRd5ScPRq\nOHKtr9q2vynsbwb7m1K/RjTbti0N+L1q+aGIiIhIwWR4M2g3uR3uM27WPL2GMqXKOB1SkVeYjS+U\nZBViklUY3G63vzK2PFdlbEjA7dsvNmHzZHjYmbaTtl0f4pD3UV8lrOrPcOVPUO0HX5UMcKWX5c7m\n7Wl2VTOaXdWM5lc1p0n1JlQoU+E8sanzoYiIiEhBvPXtWzy/8Hm+efwb2tVr53Q4xYKSrEISjElW\ndoVRGSuMhK1BA//Sw+x7xVweX7J11QYqX/8yv3uwJRv3b2Tr4a1YLAZDg6oNspKuzASs4ZUNGRoz\n6oKqbCIiIiLyW6nHUmkS34R+zfvxdre3nQ6n2FCSVUiCPckqTBeTsF3o0kPwdbhJOZDChv0b2Lh/\nY9bXLvcuAEJcIXCoDJ7U7v7lhs1gbytIq0tmRat+/U4BLz8sjPcpIiIiUhTc+8G9rEpdRcpzKVQp\nV8XpcIoNnZMlAbuYxCOQLoqhIaFE1o4ksnZkjjkOnzzM9/u/Z8P+Dbw4ejSesN1w3WIof8Q34HgN\n2NUGdrfBfcrNgfQDWec8nI/2d4mIiEhJMfeHucz9YS4f9flICVYQUyWrhFSyLlZhLT2E7MsPgbDd\nUDsJaq+G8NUQ/m1W4tWgSgPahLehTe023BR+E61rtaZimYq/iUv7u0RERKQkOHb6GE3im9CqVivm\nPThPq3cKmZYLFhIlWQVzsUvyzrX80LgW8PCgRXR98ha+3fUtq3evJnlPMic8J3AZFxHVImgT3oab\nat9Em/A2TPm/ufw7/lbt7xIREZFi7/kFzzNl7RQ2PbeJepXrOR1OsaMkq5AoyXJGoJ0Pz3rPknIg\nJSvpWr17Nev3rees9yxkGNh7I+y6ybfccFdbONiIwtjfJSIiIhIsElMTiXo3inGdx/HHm//odDjF\nkuNJljHmOWAoUBNYBzxvrV19jvF9gFeB+sCPwMvW2oXZ7t8LPA1EAlcCLa2163PN8RTQF2gNhAFV\nrLXHco2pCrwFdAO8wBzgBWttej5xKclyyMUuPzx19hRr9qyh6x/6k1ahlW+ZYbXNvpvp1WFHe9jR\nnuonPmb/4p+MAAAgAElEQVT3ms8pXapg2w/VSENERESc5snwEDkxkrKly7LqyVWUcpVyOqRiydHG\nF8aYB4CxQH/gWyAGWGyMaWitPZjH+ChgJvASMB9fojTXGNPKWrvJP6wC8A3wITApn0eXBxb6v/6e\nz5iZQA3gTqAMMBWYADwU2LuUSy0sLIy4uBHExRUskSlXuhxRdaOo+mMN0rZPAwyUTYM6q+Dq/8HV\nX0PHP3Gg9Bmqja5Gu3rtaF+vPe2vbk9k7chzHtinRhoiIiISTMatHMemA5tY/dRqJVhFRMCVLGPM\nKiDRWvuC/3sD/AK8aa19PY/x7wOh1toe2a6tBNZYa5/NNfZqYBt5VLKyjbkdWAZUzV7JMsY0Bjbh\nyzzX+K91xpfY1bHW7s1jLlWyirhz7u8K+ZT7np9Ly57X8vWOr1nxywrSPemUL12eqLpRWUlX2zpt\nCQ0JBdRIQ0RERILL1sNbafZ2Mwa2GcjoTqOdDqdYc6ySZYwJwbek7/9lXrPWWmPM50BUPi+Lwlf5\nym4x0DOQZ1+AKOBIZoLl9zlggbbAp4X8PAkC52wv3zCeKSN+TYo8GR7W7l3L1zu+5uudXxOXGMeI\nr0YQ4gqhTXgb2tdrz/cLd7Dp56exOZI2g9fbhZQUS2zsWDXSEBERkcvCWsuA+QOoUaEGI+4Y4XQ4\nEoBAlwtWA0oB+3Jd3wc0yuc1NfMZXzPAZ59PTWB/9gvW2gxjzOFL8CwJEmFhYaxcOce/v2tcrv1d\nOatOIaV8yVSb8DYMuWUIXuvl+/3fZyVdU9dNZW+lvfCnD2DfDb59XT93gO13wJmKeL1dmDdvHHFx\nzr1fERERKTn+s+E/LP15KQv6LqBCmQpOhyMBKKzDiH3lg0s3/mKc91kxMTFUrlw5x7Xo6Giio6Mv\nZVxSSAq6v8tlXDSv0ZzmNZrz3E3P4fV6qd2sI/vK9fXt6Wr8CdwcBxkhsLMdbO1EuvsMGd6MAq2H\nVhMNERERuVCHThwiZnEMDzZ7kK7Xd3U6nGJn1qxZzJo1K8e1tLS0Qps/0CTrIJCBr7lEdlfx22pV\npr0Bji+ovf55sxhjSgFVz/es8ePHa09WMXExSYzL5aL8SQMpT8CaJwELV/4E1y7xfd32/zhQ9jg1\nxtSg47Ud6XRNJzpe25E6lerkO6eaaIiIiEhBDF06lLPes7zR+Q2nQymW8iqoZNuTddFcgQy21nqA\nJHzd+4Csxhd3AivyednK7OP9Ovqv5/mYQGLK9ZwqxphW2a7dia+SlVjAOaWE6d69HS7XYv93Bg41\nhG8Hwqx5mNH/odexxxhw4wB+PvIzT857krrj69L0X02JWRTDwp8Wkn7m19MCMptoxMdHsX37Unbt\n+pTt25cSHx9FVFQv3G63M29SREREgtqybcuYunYqozuOpkbF3LUKKQoK0l3wfmAavnOtMlu49wYa\nW2sPGGOmA6nW2lf846OAr4CX8XX6i/b/d+vMFu7+863qAeHAZ8CDwGZgr7V2n39MDXx7q9oAE4H2\ngBvYaa094h+zAF81awC+Fu6TgW+ttQ/n817UXVByCOSg5EMnDrFs2zKWbF3C4q2L+eXYL5QpVYZb\n691Kp2s6sXbOVj548x6s967fPMflWsjAgYlqoiEiIiJZrLWczjhNi7dbULNiTb587EtcJqCaiFyE\nYDiM+FngRXzLANfiO4z4O/+9ZcB2a+0T2cb3AkYBVwM/AX+y1i7Odv9RYAq/rWL9zVr7qn/McGB4\nHmMet9ZO94+pgu8w4u74DiOeje8w4hP5vA8lWfIbBTko2VrLj4d+ZMnWJSz5eQlfbPuCdE+672Dk\nrR1hayfY2hmOZ/ZgsdSv34lt25ZevjcmIiIiQSf31oLjN63H3eIXEh9bxY31b3Q6vBLF8SSruFCS\nJedT0GYVp8+eps7Nv+dg5Tt8+7lqJ4GxkHoTbO4BP3andulYUn/5VM0wRERESqjfnM9ZfRM80xK+\neYCm+/frfM7LrDCTLNUfRc6hoAlQ2dJlqXioPCwbCZNWw+j98PF0SLsabv0HDLiBfdFLGbRwEEu2\nLuH02dMBzV+S/3FERESkuBg2bIw/weri+8fY7v3hyLXw9bukpMQQG5v7qFkpKpRkiVwiOZponKgG\n6x+Gjz6E1w9iZoykaenmJPyYQOcZnak+ujp9PurDe+ve49CJQ3nO53a7GTRoOA0adKBu3Xto0KAD\ngwYNVwMNERGRIiohYbmvggUQOQHqrYCEiZBR1n8+53JnA5QCK6xzskQkl1GjhrJsWS9SUmzOJhr2\nv0SU/YpvXvkvFStWZMP+DSRsTmDej/N4ZO4juIyLdnXb0b1hd3o06kGjao1yLScYkTVXfPxili3r\npeUEIiIiRYy1Fo+nAmDgqg3QeTCsfgZ2tPePMHg8oTpns4hSJUvkEgkLC2PlyjkMHJhI/fqdCA/v\nSf36nRg4MDErKTLG0KJGC4a1H0biHxLZPXg3E7pNoGr5qgz/cjiN4xvT8J8NaT+qE5tOdMBLB3wJ\nFoDB6+2i5QQiIiJFkDGGkJB0KOOGPvfD4eth8bhsIywhIelKsIooNb5Q4wu5TAL9l6gTnhMs27aM\neZvnMfmbaWSEnoGTVeGnu3zNM366C85URJ0KRUREiqbnB/2Vt1JXQMQqmJAEhxpl3dNxL5dfYTa+\n0HJBkcsk0H+JCg0JpVvDbtx9/d3MH7CX3fYv0CgBGs2DFv8BTznY0hU29ea0O0TLCURERIqYJtG1\nYMl/MR//CXuoof/qr+dzjhw5x9H4pOCUZIkEOWMMZUJOwPYbYXcb+OJVqLINmsyBJrOhVz/2ZBh6\nvt+TPk360L1Rd6qUq+J02CIiInIOG/dvZMiyITzW/DEqHQ5l3rFOuc7n1H7rokzLBbVcUIqAQYOG\nEx8f5W+gkZOpMo1bn5pJRuPjrPhlBSGuEDpe25HeEb3p2bgnV5S/4rzzqwomIiJy+Rw/c5w2k9oQ\n4goh8Q+JlA8pD+jPY6fpnCyREmbUqKFERIzD5VoIZP7DiMXlWkiT8P8w/y+zWf7EclJjUhnTaQzu\n026enPckNcbUoMuMLryT/A4HTxzMMadawouIiFx+1lqenf8sv6T9wod9PsxKsKDg53NK8FElS5Us\nKSLcbjexsWOZN295ruUEQ/JcTrDHvYdPfviE2Ztm89WOrzAY7qh/B72b9KZjnY707DDg1xPmM9vL\nuxYTETFOLeFFREQukSlrpvDEvCeYce8M+rXo53Q4kk1hVrKUZCnJkiIo0OUE+47vY+4Pc5mdMpsv\ntn2B1+vF7mgO3/eHlPvgeK2ssepmJCIicml8v/972kxqQ7/m/ZjUY5LT4UguSrIKiZIsKYkOnjhI\n43tu41CNq6HBf8GVAdtvhw19IaUXnKyqlvAiIiKFLP1MOm0mtaG0q3SOfVgSPNTCXUQK7MryV1Ju\nU0NY+imUPwyN50KzWdDtGbj7OfjpLtJ2HSH9TDoVylRwOlwREZFi4bkFz7EzbSff9f9OCVYJoMYX\nIiVM1gnzWDh5Bax5At5bCuNSYcloqLiHI3cmUXNsTR755BEWbVnEWe9Zp8MWEREpsqauncq0ddOY\n0G0Cjas1djocuQyUZImUQN27t8PlWpzz4vFakPgCrskjeOTo87x4y4t8u+tbuv6nK7XH1ub5Bc+z\n8peVnG+JcUlegiwiIpLb9/u/59n5z/JkqyfV6KIE0Z4s7cmSEsjtdhMV1YuUlBj/2VuZ3QV9J8xn\ndhe01rJm7xpmbpjJrI2z2O3eTf0q9enbrC99m/el6VVNs+YbNmwMCQnL8XgqEBKSTvfu7Rg1aqi6\nFIqISImVuQ+rlKsUiX9IJDQk1OmQ5BzU+KKQKMmSkizQlvAZ3gz+t/N/zNwwk482fcTRU0dpUaMF\nva7vxYyXl7I1eZjawYuIiGTz2NzHmL1pNt/1/07LBIsAJVmFREmWiE+gLeFPnz3N4q2LmblhJnM2\nzuGsOQs7bvN1KPy+D5y8ElA7eBERKbmmrp3K458+znv3vsdDLR5yOhy5AIWZZGlPlogEfMJ82dJl\n6dGoB+/3fp/a/2kHH0+DMxXgroEwtBY8cB80+hQvdzJv3vJLFLWIiEhwyr4PSwlWyaQW7iJSYNZa\nMk5Whi2PwPpHoMJ+Xzv4ltMg+h5Ir86Bn8NI3p1Mq1qtAk7mREREipr0M+ncP/t+rr3iWt7s+qbT\n4YhDVMkSkQLL0Q4eIP0qSHwBJiTD2+tg3UOcvC6VyEmR3PDvGxi7Yix7j+91NGYREZFLaeDCgew4\nuoOP+nykRhclmJIsEbkoebaDB9jXAtfnHXn25Et8Fv0Zjas15pVlr1BnXB26zezGR99/xKmzp845\nd0neMyoiIkXP1LVTmbp2Km/f/bYaXZRwWi4oIhdl1KihLFvWi5QUm2c7+P830tdd8O6Gd3P45GE+\n2PgB09ZN4/7Z91OlXBUebPogj7Z8lLbhbTHGqB28iIgUSZsObOK5Bc/xRMsnePiGh50ORxym7oLq\nLihy0QJtBw/ww8EfmL5uOu+tf4/UY6k0urIRD0Y8yKyXl7El+RW1gxcRkSLBWssJzwlueucmDIZv\nn/pWywSLKLVwLyRKskQKX6Dt4DO8GSzbtoxp66bxwfoPOEsG/HwnrHsUUu4Dj+8PKrWDFxGRYJF7\n1UXaHas5dd1BVj62ghvr3+h0eFJAauEuIkEr0A6CpVyl6HhtR2bcN4PaM9vBvElQ+jTc9zAMrQnd\n+0N4Il5vZ7WDFxERx7ndbqKiehEfH8X27UvZVe0+jl+/h4xPB/FYt1dwu91OhyhBQEmWiAQFay0Z\nJyrDmidhytcQtxVW/RGuWwhP3QwDbuBIoz0cSD/gdKgiIlKCDRs2hpSUwb59yNVT4O5nIfkJ7Nox\npKTEEBs71ukQJQgoyRKRoPCbdvBHroEvXoU3tsOMhXCwMWk3baLO+Drc/9H9LNm6BK/1OhmyiIiU\nQAkJy337hsumQZ8+cLQBLPwnAF5vF626EEBJlogEkTzbwdtSsKULrjlP8IdjQ/j7nX/n+wPf03lG\nZxrENWDElyPYcXTHBc1fkvegiojIxbPW4vFU8C1rf/AeCNsNH87O2j8MBo8nVH/eiJIsEQkeo0YN\nJSJiHC7XQrIqWlhcroVERIxn3Gt/ZXDUYDYO2MjKJ1fS6ZpOjF05lgZxDeg8ozMffv8hp8+ezjGn\n2+1m0KDhNGjQgbp176FBgw4MGjRca+ZFRCRgxhhKlzkO9z4MdVbBrAQ4mP08LEtISHrA+5Ol+FGS\nJSJBIywsjJUr5zBwYCL163ciPLwn9et3YuDAxBzt240x3FznZib1mMSeIXt4p8c7HD9znAdmP0D4\nuHBiFsWwcf/G325O3vUp27cvJT4+iqioXkq0REQkINZaKj3ghoiPYfb7sPPWHPddrkX06HFrPq+W\nkkQt3NXCXSRoBdoOPuVACpPXTGbaumkcOHGAGp7a7F/cC7thJJyulGOsWsKLiEigRn09itgvYqn1\nXQT7Foz1Nb/IOtNxERER43WmYxGmFu4iUiIEutwionoEozuNJnVwKnPun8Oxvaexd8XDkFrQ83Go\nu4LMZYjanCwiIoF4N/ldYr+I5dU7XmXzzMTzrrqQkq200wGIiBS2MqXKcG/je7li0TR2ueOh5VRo\nNRlaTYX9TSGpP6x7OGtzstbOi4jIuSRsTqD/Z/159sZniW0fizGGuLgRxMUFvupCSgZVskSkWMpq\nCX8sHL6OhTe3wPQlcCACOg2BIbU5+rtvWfHLCnWBEhGRfK34ZQX3z76fexvfy5td3/xNQqUES/Ki\nJEtEiq0cLeGtC37uCB99BONSMV9FU6rBaW6dcivN3m5G3Ko4Dp887GzAIiISVDYd2ES3md1oG96W\nGffNoJSrlNMhSRGhJEtEiq18W8KfTKbJkVR2Dt3G0oeX0rR6U4YuHUr4uHAe+eQRvtn5zXmrW6p+\niYgUb6nHUuk8ozN1KtVh7oNzKVe6nNMhSRGiJEtEiq3ztYSvXKkyHa7pwId9PiQ1JpURt49gxS8r\nuG3KbTT9V1PeWPVGjuqWztwSESkZjpw8QpcZXShlSrHooUVUKVfF6ZCkiFELd7VwFykxLmRzstd6\n+WLbF0xMnsgnKZ/gMi56N+nNwxEPM7jPGH5IGYLX25lfW/YuJiJinDpKiYgUEyc9J+k0oxMpB1JY\n/sRyGlVr5HRIcpmohbuISAFcyOZkl3Fx5zV38kHvD0gdnMqrv3uVxF2JdPmwC5vu2Iz3phQon1nd\nMni9XUhJiSE2duylDV5ERC65s96zPDjnQZL3JDO/73wlWFJgSrJERPJxVYWreLHdi2weuJkai1rB\nvlug40swJBzuewjqfQNYnbklIlIMWGsZ8NkA5v84n9l9ZtO2TlunQ5IirEBJljHmOWPMNmPMSWPM\nKmNMm/OM72OMSfGPX2eM6Zrr/r3GmEXGmAPGGK8xpkUec5Q1xsQbYw4aY9zGmNnGmKtyjfHm+sow\nxtxfkPcoIpLJYCj9S12Y/T6M3QXLXoPwRHjiNni2OdwUz2lC1AxDRKQIG/7lcN5Z8w7v9niXrtd3\nPf8LRM4h4CTLGPMAMBYYDrQC1gGLjTHV8hkfBcwEJgEtgbnAXGNMk2zDKgDfAC/xawuw3N4A7gZ6\nAe2B2sCcPMY9CtQAagK1/M8TESmwrDO3sHCiOqz4E7y1GaYvhYONocsf2dtvMU8lPMV3u79zOlwR\nEQnQ26vf5rWvX+P/7vw/Hm35qNPhSDFQkEpWDDDBWjvdWvsD8AxwAngin/EvAAutteOstZuttcOB\nZGBg5gBr7Qxr7Ujgv/h2k+dgjKnknz/GWvuVtXYN8DjQzhhzU67hadbaA9ba/f6vMwV4jyIiOeQ4\ncwv85251gA9nY96YSlvP7SzZuoQ2k9pw48QbeSf5HdLPpDsXsIiIXJA5m+bw3ILneKHtC7zY7kWn\nw5FiIqAkyxgTAkTiS4YAsL71MZ8DUfm8LMp/P7vF5xifl0igdK7nbgZ25jFPvH/ZYaIx5vEAniEi\nkq98z9xyLaRJ3eksif2UbS9sIyE6gZoVa9I/oT+1x9Vm4IKBbNi34bzza6mhiMjlkf3n7Vfbv6Lv\nx315oNkDjOs87oIaJIlciNIBjq8GlAL25bq+D8iv/UrNfMbXDOC5NYEz1tpj55nnL8AyfJW1TsC/\njDEVrLVvBfAsEZHfyDxzKzZ2LPPmjcPjCSUk5AQ9erRj5Mhf27d3a9iNbg27sePoDiYlT+Kd5HeI\nXx1Pu7rteObGZ+jdpHfWgZZut5thw8aQkLAcj6cCISHpdO/ejlGjhqodvIhIIcrr523UPdcx/6pZ\n3FbvNqb2nIrLqB+cFJ6AzskyxtQCdgFR1trEbNdfB2611t6Sx2tOA49Yaz/Idu1ZINZaWzvX2KuB\nbUBLa+36bNejgcnW2vK5xn8LfG6tfSWfeP8GPGatvTqf+62BpPbt21O5cuUc96Kjo4mOjs7rZSIi\nF3TmFoAnw8Onmz9lQtIEPv/5c64ofwWPt3ycvo378shdL5OSMljnbomIXEJut5uoqF45f95W2QZP\n3ki5sx62xKYQXi3c6TDlMps1axazZs3KcS0tLY2vv/4aCuGcrEArWQeBDHyNJbK7it9WqzLtDXB8\nfnOUMcZUylXNOt88iUCsMabMufZmjR8/XocRi0hALnRJSUipEHo36U3vJr356dBPTEyayJS1Uxi7\ncixEtgR7HH44C94Qfj13yxIbO5a4uBGX9D2IiJQEw4aN8SdYXXwXQg/CQ13AU4XTU17jdTtJP29L\noLwKKtkOI75oAdVFrbUeIAm4M/Oa8f1N405gRT4vW5l9vF9H//U8H5PHtSTgbK7nNgTqnWMe8HU/\nPKLmFyISDK6/8npGdxpN6uBUqn3dFEpVhPv7QEw9+H0sVN4BoHO3REQKUULCcn8FCwhJh753Q7mj\nMGMx1h2tn7dySQRayQIYB0wzxiQB3+LrNhgKTAUwxkwHUrMt4YsDvjLGDAbmA9H4Glk8lTmhMaYq\nvoQpHN+amcb+5G2vtXaftfaYMeZdYJwx5gjgBt4Elltrv/XP0Q1fZWsVcBrfnqw/A68X4D2KiFwy\nZUuVpezma2HZp3DVRrjx33DTP+HWv8NPd8F3z3DmZPkLXpIoIiJ5s9bi8VQADJQ/BH27QfVNMPVL\nOHwdAB5PqH7eSqELeIeftfZDYAjwKrAGaAF0ttYe8A+pQ7ZmFNbalfgSq/7AWuA+oKe1dlO2aXv4\n50rAV8maha/N+9PZxsQAnwGzgS+B3fjOzMrkwdcWfqV/rqeAP1prXw30PYqIXEo5zt3a3wwWvAXj\ndsFnEyBsN/Trxr4Hl/L3b/7O3uN7nQ5XRKTIyvp5W3kHPHErXLEFpi2DPZlLwiwhIelKsKTQBdT4\norjJbHyRlJSkPVkiclkNGjSc+PioX/cIZLGYOm8S8fBUtlXYjMfr4b6I+3gm8hnuqH+H/iIgIhKg\nfjEDmOn6CDLCYMZiONQw657LtZCBAxO1J0uAHHuyLrrxhXpViog4IP9ztxbRpPJ8Vv35a3YN3sXY\nTmNZv289v5/+eyLiI3hj1RscOXnknHOX5H88ExHJ7n87/seCGu9TznsaM2UkHLref8d3zmFExHhG\njhziaIxSPCnJEhFxQOa5WwMHJlK/fifCw3tSv34nBg5MzGrfXrV8VQa1HcSmZzfx5aNf0rJmS15c\n+iK1x9Xm8U8fJzE1MSuhcrvdDBo0nAYNOlC37j00aNCBQYOG43a7HX6nIiLO+PSHT+k0oxMta7Xk\np2EpPP/YT/n+vBUpbFouqOWCIhIELnTT9b7j+5iydgoTkiaw/eh2WtVsxWPNHuPtZ+fy48YXdeaW\niAgwKWkSz8x/hvsi7mPGvTMoW7ps1j01uZD8aLmgiEgxc6F/4NeoWIOXb32ZLc9vYUHfBdSpVIc/\nLv0jP9y9Cm+XBF+3Qt+M/jO3YoiNHXvpAhcRCSLWWl776jX6f9afATcO4P1e7+dIsODCf96KXAwl\nWSIiRVApVym6Xt+VedHzCJ99C6waDBEfw7Mt4Il20OI9KH1SZ26JSImR4c1g4IKB/PXLvzLydyP5\nZ9d/UspVyumwpIRSkiUiUoRZa7FHr4QvRsL4nfDhR+AJhfsegSHh0HkIJ0Iz1AxDRIq1U2dP8cDs\nB/h30r+Z1H0Sw9oPU8VKHFWQw4hFRCRI5DhzyxsCm3r7vq7YApEToeUU9kcd5PfTf8/TkU9zb+N7\nf7N0RkSkKEs7lUbP93uSuCuRTx74hB6NejgdkogqWSIiRV337u1wuRbnvHj4Olj6OuaNd+l8/D6s\ntUTPiabO+Dq8tPQlth7e6kywIiKFaI97D7dPvZ11+9bx+cOfK8GSoKEkS0SkiMv/zK2FNGn4Fh/9\ndSpfPvYlm57dxEPNH2Ji8kSu++d1dHqvE3M2zcGT4cl3bi0zFJFg9eOhH7ll8i0cPHGQbx7/hnb1\n2jkdkkgWJVkiIkXchZy5BRBRPYLxXcaze/Bupt0zjeNnjtP7o97Ue6Mescti2XF0B6Azt0Qk+K3e\ntZp2k9tRvnR5Vjy5gqZXNXU6JJEcdE6WzskSkWImkDNg1u9bz4TvJvDe+vc4fuY4HRt0JOW9faR+\nMQqbcRc6c0tEgkH2n2uLtyym14e9aFGjBZ/1/Ywryl/hcHRSXOicLBERyVcgHbVa1GhB/N3x7B6y\nm4ndJ7L2p438cus67KBn4PZXIWwXOnNLRJyQV1W909B76TarG79r8Ds+f+RzJVgStJRkiYgIFctU\n5A+t/0DojAiYsBq2dIV2oyGmHkT3gIYJeOmgM7dE5LJwu938//buPTyq6uz7+PcOhBBCgnI+CyJg\nRFBBH42i2JajCmJRFGmfqq8HqhREpFbRYq20j1ZA1FjRekIRRfEALSGgtAoIqMhJCQeRQAAJEGgC\nCSSBrPePvROSkEASJhnI/D7XNVcye9bsWTNr72Tuvda6V1zcIOLj40hOns/27Z+Q3Kwv86M/pu6m\nxky9Zip1wusEu5oipVKQJSIigDccJzc3Cn66GGa/DBN2wJx4rzfr1gFwfxvSumxl877Nwa6qiFRz\nY8c+Q1LSA+Tl9QVz0GsM9BkDXzxC+luv8PgfJwe7iiLHpSBLRESAYmtuAWTHwDfD4OXlMGU5rO/P\ngfM30e65dvR+qzfvf/8+OUdyglpnEameZs9eTF5eH4jIgEG3wuUTYM5zsGA8Lq+fetXllKcgS0RE\nCpS45hbAT10JS7ieYQd+z2vXv0ZmbiaDPxhMy4ktGTNvDBvSNpRp/6GcbElEyqagV73lMhh2IbSf\nA+/PgK9+55cwcnPr6O+JnNIUZImISIHjrbkVGzuJp558mNsuvI3Fdyzmu99+x9DOQ3lt5Wt0fKEj\nPd7owdur3+Zg7sEi+1RKeBEpjzyXR2bX7+GO7pDZGF5aCWtvLFTCER6eWa4kPyJVTUGWiIgUKOua\nWwCdGndiUt9JbH9gO+/88h1qWA1+/dGvaTGxBSMSRrAmdU3Jk9eT5xMfH0dc3CAFWiJSxLaMbfR8\nqyf/7boJFt8Ery2EfWcXKRMWNpcBA7oHqYYiZaN1srROlohIqcqz5hbAxrSNvLriVd5Y+Qapmak0\nyW3BroSbcN/9GXLqFikbFpbA8OHLmDz58QDXWkRORx8mfcids+4kqlYUL/d5mTGDJ5GUNMpLflGw\nZt9cYmMnac0+qRRaJ0tERKpEeYfjtG/Qnv/r+X+kjEph5uCZZKQewvWfDKObwXX3QItl5A9DzMvr\nq8nrIkJWbhb3zL6HQTMGcXWbq1k1bBX9zutX5l51kVNRzWBXQEREqp/wGuHccO4N1E94k+0HnoeL\nXoOLXoWLX4Zd58HK22D1rwsmr2tuhUhoWrlzJUNmDmHLf7cw5bop3NX1roK/B9HR0Uye/DiTJ5e/\nV10k2NSTJSIilaIgJXx6K/jP4/BsMryVCKkXwM8fgwdasrfvl3yY9KFSwYuEGOcczy59lkv/cSkR\nNaU5qk0AAB5bSURBVCJYfvdy7u52d6mBlAIsOd0oyBIRkUpTJCW8qwGbesPMd+CZnVjCMGKaRXDj\n+zfSfEJzRiaMZMVPK4JbYRGpdKkHUrn2nWsZlTiKey++l6V3LiW2UWywqyUSUAqyRESk0pSaEj5n\nCedlbWDj75P4/t7vueOiO5ixdgZdX+7KhS9dyOSlk9mdufu4+w7lxE0ip6u5P8yly0tdWP7Tcubc\nOodJfSdRu2btYFdLJOAUZImISKUpS0r48xqdx9O9niZlVAqzh8ymXf12jJk/hhYTW/DL937J7PWz\nyT2SC2jNLZHTSeELIdmHs3kg8QH6TetH12ZdWT1sNf3a9wti7UQql1K4K4W7iEiVKevk9T1Ze3hn\nzTu8vvJ1Vu5cSZOoJgw+dzBz/vINm5f9kby8PhxN6ZxIbOxEZRwTOQXs37+fsWOfYfbsxeTmRhEe\nnskVAzuwuv0i1u9dz1M9n2LEpSMIM13nl1NPIFO4K8hSkCUickpbuXMlb6x8gylLXuZQ2EHYfgms\nuB2+uwUOnQlozS2RU0H+4uNJSQ/4F0KArq9AvxHUOliTz+6dS/d2WkRYTl1aJ0tERELGhU0v5Nm+\nz9Lk7cvgvQ/gQBO45nfwYFO4+QY47wPywq7WmlsiQTZ27DN+gNUXIvfB4JtgwD2w6jfkxr/F+899\nGuwqilQZBVkiInLKc85xODsakgbB9NkwcRt8+hTEbPO+yD3YlF1x65m/aT5H8o4Eu7oiIWn27MXk\nuV5w/nQYdgG0XeBdGPnnFFz2QF0IkZCixYhFROSUV7DmFg4wONAUlt7v3RpsgM7TyOn6N3q/3Ztm\ndZtxy/m3cGvnW+nWrFuZ5oBpoVORk+Oc40CDQ9ArDlp8DesGwJwXIKOVX8K0+LiEFPVkiYjIaaHI\nmluFpXUg7IvL+O3hMSy7cxk3nXcT09ZM45JXLiE2PpYnPn+CTXs3HfM0ZSoUCYwNaRsYNGMQe/ov\nBsuDN/4N735SKMACcISHZyrAkpChxBdKfCEiclo4Oql+lDfnoyC74FxiYycVyS54OO8wCzYvYNqa\naXyY9CEHcg5waYtLGdp5KIM7DaaOq1Nsgr4yFYqU156sPTzx+RP8/Zu/06xuM2K3X8z8SXfi8q45\npqyS08jpQNkFA0RBlojI6WX//v08+ugEZs1aTG5uHcLDsxgw4AqefHJ0qUFRVm4W/9zwT6atmUbC\nxgTyXB4tstuQ8q8bcEl/hJyiz9OXQZHjO3T4EM8ve57xC8eT5/J45MpHGHnpSA4fOlzmCyEipyIF\nWQGiIEtE5PRVkbkdaVlpfLD2A0a++geym/4XciNh/QBYPRQ29YYjEYCjTZvebN48v3IqLnKaynN5\nvPfdezz82cNsy9jGsIuHMa7HOBpFNSooU5ELISKnCgVZAaIgS0Qk9DjnaNVqINsPPO9lQesyDZqs\ngexo2HAdrB1Es6zX2L75n5o/IuJbuGUho+eN5usdX3N9x+t5qudTdGzY8bjPUZILOd0EMshSdkER\nEQkpBZkK01vB4oe8W6O1EDsTzpsJN09n5+Ewbnz/RgbFDuLa9tdSr3a9YFdbpNKVFBRtSNvAHz79\nAx+t+4huzbrxn9/8hx5tepRpfwqwJJQpu6CIiIScYzIV7j4PvngMXlqJPf8PLs/5OdsytjH0w6E0\nfqYx175zLa+teI20rLQy7T+UR4nI6aW0LJvJu5IZkTCCTi92YvlPy3n7hrf56q6vyhxgiYQ6DRfU\ncEERkZBT1kyFKekpfJj0IR+u+5CFWxYSZmFc3eZqBsUOYuC5A2kW3azIPseOfYbZsxeTmxtFeHgm\n/ftfwfjxD2ouipySjp4HhbJs1jyIXTYc6zGVulF1eOTKRxhx6QgiwyODXV2RSqc5WQGiIEtEJHSV\nd4J+6oFUPl73MTOTZrJg8wLyXB6Xt7qcQbGD6N26Nzf3GaWU8HJaGTFiHPHxcd6FBsuDTu9Bz4ch\nZht8cw13tu/IK8/+LdjVFKkyCrICREGWiIhA+Sfo7z24l1nrZzEzaSbzNs0j50gO7GgPa2+HpEGQ\n1qGgrFLCy6mqbdueJKe+BxdMhYtfgoYbYN31MP8pSOugLJsScgIZZFVoTpaZ3Wdmm83soJktNbNL\nTlD+JjNL8suvMrN+xR6/wczmmtluM8szsy4l7CPCzOLNbI+Z7TezD8yscbEyrczsX2aWaWY7zexp\nM9O8MxEROa7yTtCvH1mf2y68jdlDZrN7zG4aft4J9l0AVz0Jv+sIw8+FPqOg3Tzywq5m1qzFlVNx\nkQpwzrEkZQm7Lt8AD7SEXg/BT13h1UXw7seQ1hEwcnPraH6hSAWVO7ugmd0MTADuBr4CRgGJZtbB\nObenhPJxwDvAQ8C/gFuBj83sIufcWr9YFLAImAG8UspLPwv0AwYBGUA8MBO40n+dMGAOsAO4DGgO\nvAXkAI+W932KiIiURXStaCI2tIN/vw/hWdAuEdrPgU7vQ9yzkFOHn3ZG88JXL9DvnH60q9+uXPtX\nGmwJlAM5B5i2ehovLX+JlTtXUrNZbfj8j7Di/0Fm42KlHeHhmTr2RCqoIr08o4Apzrmpzrl1wDAg\nC7ijlPIjgQTn3ETn3Hrn3DjgW2B4fgHn3NvOuSeBz/AGshdhZjH+/kc55z53zq0AbgeuMLP/8Yv1\nAc4Fhjrn1jjnEoHHgPvMTKnqRUSkUhSkhMdBbh1YdwPMfgUmpsCLq+HzP2LhOYxKHMU5z59Dh+c7\nMDJhJHN/mMvB3IMl7rO0jG/79++v2jcn1cLq1NXc+697aT6hOffOuZfW9VqTMDSBYTljCPvyohIC\nLAgLm8uAAd2DUFuR6qFcQZaZhQPd8IIhAJzXj/wpEFfK0+L8xwtLPE75knTD63Ur/Lrrga2F9nMZ\nsKZYb1oiUA/oVI7XEhERKZdjUsIDYLCrM2FLunB3xAj2/n4vH938ET9r8zM+WvcR/ab1o/7T9blm\n2jU8v+x5NqZtBI5mfIuPjyM5eT7bt39CcvJ84uPjiIsbpEBLiihtON+hw4d4a9VbXPHaFVzw0gV8\nvO5j7r/sfpJHJvPJLZ/Q95y+/GX8GGJjJxIWlgDk78cRFpZAbOwknnxydJW9D5Hqprw9PA2BGkBq\nse2pQGnLfjctpXzTcrxuUyDHOZdxnP2U9jr5j60qx+uJiIiU2fjxD7JgwSCSklyJKeGffHIm0RHR\nDDx3IAPPHYhzjrW715LwQwJzf5jL6HmjGTF3BO3ObEfUjvqszb0OV+MqyMsf3GHk5fUlKcnx6KMT\nlEQjxB1vuYCdOTuZsnwKr698nb0H99Lz7J7MHDyT/h36E14jvMh+oqOjWbJkpp9lc2KxLJvKiCly\nMgI1jM77b1J55U92P5q1KSIilaa8X1bNjE6NO9GpcScevPxBDuQcYMHmBSRsTOCVlDdwt34NuX+F\nLT1gU2/YchXsvJC8vL7MmjWRyZOD9EYl6IqubfU4YBCWwwufPcFrh9uQ2WQv9SPrc/uFt3NPt3to\n36D9cfcXHR3N5MmPM3my5v+JBFJ5g6w9wBGgSbHtjTm2FynfznKWL20ftcwsplhvVuH97ASKZznM\nf93jvtaoUaOoV69ekW1DhgxhyJAh5aiiiIiEspP5slq3Vl0GdBxA/w79mTVsOzuyn4Jz5kL7BPj5\nWAg/BDlRkBJH2n9T+OzHz7is5WVE1Yoqdz31Rfr0NnbsM36A1RfqbYGur0LXf+CifyIzJZZeB65i\n1tjp1K5Zu9z71nEhoWT69OlMnz69yLb09PSA7b/c62SZ2VJgmXNupH/f8OZGPeecO2bFOjN7F4h0\nzl1faNtiYJVz7t5iZc8CfgQucs6tLrQ9BtgN3OKc+8jf1gFYB1zqnPvazPoCs4Fm+fOyzOxu4Cmg\nsXMut4S6aZ0sERE5pbRt25Pk5PkU5IGqkQ3Nl0PrRdB6IWFt5pIXcZiaYTXp2qwrV7a+ku6tu9O9\ndXca1mlY4j6PN7xMQ8JOH1m5WbT92RXsqtsD2s2Hxmshuy6s/jV8MwxSO2ttK5GTEMh1sioyXHAi\n8KaZLedoCvc6wBsAZjYV2Oace8QvPxn43MwewEvhPgQvkcVd+Ts0szOB1kALvP8q5/rB207nXKpz\nLsPMXgUmmtk+YD/wHLDYOfe1v5t5wFrgLTN7CGgG/Bl4oaQAS0RE5FTUv/8VxMcn+nO7gCMRkHI5\npFxO2JLO3De8K3fffxOLti5i4daFzPh+BhOWTAAgtmEs3Vt3Lwi82pzRhgMHDhw7vAxHfHwiCxYM\nYskSzb2pSuXpSXTO8d2u70jclMi8TfP4YssXZPfKhvQ9sKkPfD4ONvaDnKPtl7+2lXqlRIKr3EGW\nc26GmTUEnsAbjrcS6OOc2+0XaQkcLlR+iZkNAcb7t43A9YXWyAIYALyON3fKAfl9d3/yXwe8YO4I\n8AEQAcwF7iv0Onlmdh3wd+BLIBMv8BtX3vcoIiISLCdKojHen+N1fuPzGXbxMAC2pm9l4ZaFBYHX\nK996S062iG5BnT1n8ENUD1yj5rDLgTMClUhDX+bLpjw9iXuy9jB/03zm/TiPeZvmsWP/DmrXrM3V\nba7mr7/4K8/89j12rPqSkhNEa20rkVNFuYcLVicaLigiIqei/fv3+0k0FhdLojG6TL1OaVlpfJny\nJQu3LuS5j18mu0EW1MiFQ/Vg5wWQ2sW/daZ15CNs2bigXHXT0MOyK5qoog9Hg+ZEYmMn8sWid/k+\n/XsSNyWSuCmR5TuW43Cc3/h8+rTrQ592fbjyrCsL5liNGDGO+Pi4oz2dhYSFJTB8+DJlnxSpoEAO\nF1SQpSBLREROYSfTW+Sco1WrgWzfNR2afw2tF0OT1d6twXoIywMH5zQ4hy5NutClcRfvZ5MutD2z\nLWFWtLfkRAHDyQw9PJV7xU6mbiUGRWf+CO0S4ZyphHf8llzLoUFkA3q160Wfdn3o3a43zaObl7i/\no20wqsSeTg3/FKm4YM/JEhERkSpyMoGHmREengm5kV46+C09jj5Y8yA0WkuDTr+m/4N9WZ26mhe+\nfoE9WXsAiAqPonOTzgWBV+cmnXl74j+PZrY7+ioVHnpYmb1iJxu0BaJuWblZfLB4LnmdOkDDx6BR\nEjRdAfV/hCM1YVscUStaMf/v79K1WddjgtqSaG0rkdODerLUkyUiItVYeYaXOedIzUxlderqIre1\nu9eSm+fnkEpvdXS4YVoHyGjpbctoSZsWA8uc2a4yesUCFbSVt25pWWkk7UkiaXeS99P/fUv6lqM7\nzWgOe2JhVyfY/HNI/hlkx9CixfWkpHx8Ur2Vp2oPoMjpRsMFA0RBloiIVHeBGF6WeySXdXvW0WPw\nbewL7+0NN2y6CmK2Fylnh8LpfFYsrWJa0TKmJa1iWtGq3tHfW8a0JDI8Egj83KJABm0l181BvRSs\n8VS6D1xE7JVnkbQniXV71rE7y8v9FWZhtDuzHec2PJfYhrHENorlkbvi+WnNfMg+o4RXcrRp04vN\nmz8t8/sUkcqj4YIiIiJSJoEYXhZeI5zOTTpTb+uZ7Ev+CwVreNU8BNHbIWYb1NtKvbP+RPfu3UnJ\nSGHZ9mXMTJpZMPwwX4PIBrSq14r1mdvI67cL0ldARis40BRy60BuJHmHz2LmgvE8fGAYkTUjqV2z\nNrVq1Dpuj02RRXoLHDuU8UjeEfbn7Cf9UDoZ2RmkZ/s/C92fum0qeX3SIGI61E733l/DdVArEwcs\nOhxGxvbOxDaKpefZPQsCqvb12xNRM6JIvb6N20z8t0vJo6Rgci4DBnQ/4ecvIqcf9WSpJ0tEREJI\nwJM4+ErrfTqYe5BtGdvYlrGNlIwUUtJT2JqxlTc/+oTsWk2gXgpE7jvhaxtG7Zq1iQz3gq7ImpFF\nfv96yfcc2t8dDtf2buFZEJHhBUkRGdSo8yORZ4ZzIOdAqa8RZmHERMSwf3c2R7LO8bIxZtfzAsDd\nsd5wvz3n0jzqfrZt/aRMn6MSVYicPtSTJSIiIhVyMvN3TrSG15NPzjzmOZHhkbRv0J72DdoX2T7v\nd5tITp7v7SM8E+qmej1jNQ9CeBZNWozkldf/xKHDhzh4+KD3M/dgwf3Cvx86fIivs38Ay4M6ad5+\ncutAdow3Zyw7hjq15jDuD3dzRu0ziImIoV7tetSLqFfwe0xEDFHhUZgZbdv2PFq3Yzhq1csq8+eo\nRBUioUlBloiIiJRJIAOG/v2vID4+0QvWcqNg39kFj4WFJXDzwAH079i/zPtb+EBPkpNnUVpg1KDN\nGkZfPrr8dSumIkP8oqOjmTz5cSZPVqIKkVChIEtERETKLFABQ0V6xY4nkIFRoOtWmAIskdBw4gUZ\nREREREpwMgFDfq/Y8OHLaNOmNy1aXE+bNr0ZPnxZheYpjR//ILGxEwkLSwDy55s7wsIS/MCobL1Y\nlVE3EQk9SnyhxBciIiJBF4hhdPv37/eHMi4uNpRx9EkFRhriJxIalPhCREREqpVABDGVNfdJAZaI\nlJeGC4qIiEi1o8BIRIJJQZaIiIiIiEgAKcgSEREREREJIAVZIiIiIiIiAaQgS0REREREJIAUZImI\niIiIiASQgiwREREREZEAUpAlIiIiIiISQAqyREREREREAkhBloiIiIiISAApyBIREREREQkgBVki\nIiIiIiIBpCBLREREREQkgBRkiYiIiIiIBJCCLBERERERkQBSkCUiIiIiIhJACrJEREREREQCSEGW\niIiIiIhIACnIEhERERERCSAFWSIiIiIiIgGkIEtERERERCSAFGSJiIiIiIgEkIIsERERERGRAFKQ\nJSIiIiIiEkAKskRERERERAJIQZaIiIiIiEgAKcgSEREREREJIAVZIiIiIiIiAaQgS4Ju+vTpwa5C\nyFMbBJ/aILj0+Qef2iD41AbBpzaoPioUZJnZfWa22cwOmtlSM7vkBOVvMrMkv/wqM+tXQpknzGyH\nmWWZ2XwzO6fY413NbJ6Z7TOz3WY2xcyiipXJK3Y7YmaDK/IeperoD0rwqQ2CT20QXPr8g09tEHxq\ng+BTG1Qf5Q6yzOxmYAIwDrgIWAUkmlnDUsrHAe8ArwAXAh8DH5vZeYXKPAQMB+4B/gfI9PdZy3+8\nGTAf2OA/3hfoBLxRwkv+BmgCNAWa+a8nIiIiIiJSJSrSkzUKmOKcm+qcWwcMA7KAO0opPxJIcM5N\ndM6td86NA77FC6oKl/mzc262c+474H+B5sBA//HrgBzn3HDn3Ebn3HL/dQeZ2dnFXi/dObfbObfL\nv+VU4D2KiIiIiIhUSLmCLDMLB7oBn+Vvc8454FMgrpSnxfmPF5aYX94PkpoW22cGsKzQPiOA4sHS\nIf9n92Lb4/3hhMvM7PYyvC0REREREZGAqVnO8g2BGkBqse2pQMdSntO0lPJN/d+bAO4EZRYAE8zs\nQWAyUBf4q/+8ZoWe85hfNgvoDbxoZlHOuRdKqVttgKSkpFIelqqQnp7Ot99+G+xqhDS1QfCpDYJL\nn3/wqQ2CT20QfGqD4CoUE9Q+2X2VN8gqjeEFPIEsX1DGObfWzH4DTMQLrg4DzwG7gCP5T3DOjS/0\n/FVmVhcYA5QWZLUB+NWvflWOqktl6NatW7CrEPLUBsGnNgguff7BpzYIPrVB8KkNTgltgC9PZgfl\nDbL24AU1TYptb8yxPVH5dp6g/E68gKpJsX00Blbk33HOvQu8a2aN8BJjAIwGNh+nvsuAR82sVilz\nsxKBoUAyR4cfioiIiIhI6KmNF2AlnuyOyhVkOedyzWw58AtgFoCZmX//uVKetqSEx3v523HObTaz\nnX6Z1f4+Y4BLgfgS6rDbL3MHcBAv62BpLgL2lZb8wjmXhpf5UERERERE5KR6sPJVZLjgROBNP9j6\nCi/bYB38dOpmNhXY5px7xC8/GfjczB4A/gUMwUuecVehfT6L1+P0A16v0p+BbcAn+QXM7D68N30A\nb77V08Dv/SQZmNl1eL1fS4Fsv8zDfjkREREREZEqUe4gyzk3w18T6wm8IX4rgT75PUxAS7w5U/nl\nl5jZEGC8f9sIXO+cW1uozNNmVgeYApwBLAT6FeuB+h/gcbykF+uAu5xzhXuhcvHSwk/CG374A3C/\nc+4f5X2PIiIiIiIiFWVeBnYREREREREJhIosRiwiIiIiIiKlUJAlIiIiIiISQCEbZJnZfWa22cwO\nmtlSM7sk2HUKFWY2zszyit3WnviZUlFmdqWZzTKz7f7nPaCEMk+Y2Q4zyzKz+WZ2TjDqWl2dqA3M\n7PUSzos5wapvdWRmD5vZV2aWYWapZvaRmXUoVibCzOLNbI+Z7TezD8yscbDqXN2UsQ3+U+w8OGJm\nLwarztWJmQ0zs1Vmlu7fvjSzvoUe1/FfycrQBjr+q5j/dynPzCYW2nbS50JIBllmdjMwARiHl+Z9\nFZDoJ/SQqvEdXuKUpv6te3CrU+1F4SWpuY8SFgI3s4fwEsfcg5dkJhPvnKhVlZWs5o7bBr4Eip4X\nQ6qmaiHjSuB5vCVCegLhwDwziyxU5lngWmAQcBXQHJhZxfWszsrSBg54maPnQjPg91Vcz+oqBXgI\nL8tzN2AB8ImZxfqP6/ivfCdqAx3/VcjvZLkLLxYo7KTPhZBMfGFmS4FlzrmR/n3DO+ifc84p5Xsl\nM7NxeBkmuwa7LqHIzPKAgc65WYW27QD+5pyb5N+PwVsc/DfOuRnBqWn1VUobvA7Uc879Mng1Cy3+\nhbVdwFXOuUX+cb8buMU595FfpiOQBFzmnPsqeLWtnoq3gb/t38AK59wDQa1ciDCzNOBBvC+QOv6D\nIL8NnHOv6/ivOmZWF1gO/BZ4DP9zD9T/gpDryTKzcLwrB5/lb3NepPkpEBeseoWg9v6wqU1m9raZ\ntQp2hUKVmbXFu1pW+JzIAJahc6KqXe0PoVpnZi+aWf1gV6iaOwPvqvFe/343vKVNCp8L64Gt6Fyo\nLMXbIN9QM9ttZmvM7C/FerokAMwszMxuwVvrdAk6/qtcsTYovACujv+qEQ/Mds4tKLb9YgJwLlRk\nMeLTXUOgBt5V+sJSgY5VX52QtBS4DViP1w3+OPCFmZ3vnMsMYr1CVVO8LzklnRNNq746ISsB70ry\nZqAd8FdgjpnFuVAcclDJ/BEMzwKLCq3b2BTIyV/kvhCdC5WglDYAmAZsAXYAXYCngQ7AjVVeyWrI\nzM7HC6pqA/uBG5xz68zsInT8V4lS2mC9/7CO/yrgB7cX4gVUxTUhAOdCKAZZpTFKnychAeScSyx0\n9zsz+wrvD8pg4PXg1EpKoHOiChUblvm9ma0BNgFXA/8OSqWqtxeB8yjbfFCdC5Ujvw2uKLzROfeP\nQne/N7OdwKdm1tY5t7kqK1hNrQMuwOtFHARMNbOrjlNex3/gldgGzrl1Ov4rn5m1xLvA08s5l1ue\np1KOcyHkhgsCe4AjeFFqYY059kq+VAHnXDqwAVA2u+DYifeHQ+fEKcT/Z7oHnRcBZ2YvANcAVzvn\ndhR6aCdQyx+PX5jOhQAr1gY/naD4Mry/UToXAsA5d9g596Nz7lvn3Fi8Cf8j0fFfZY7TBiXR8R94\n3YBGwHIzyzWzXKAHMNLMcvCO94iTPRdCLsjyI9blwC/yt/lDFn5B0fGwUkX8iYftgBP9o5VK4H+Z\n30nRcyIGL/uXzokg8a+0NUDnRUD5X+6vB37mnNta7OHlwGGKngsdgNZ4Q3skAE7QBiW5CO/qsc6F\nyhEGRKDjP5jy26AkOv4D71OgM95wwQv82zfA24V+z+Ukz4VQHS44EXjTzJYDXwGj8CYdvhHMSoUK\nM/sbMBtviGAL4E94f9inB7Ne1ZmZReFdBTN/09lmdgGw1zmXgtdt/qiZ/QAkA38GtgGfBKG61dLx\n2sC/jcObk7XTL/cUXg9v4rF7k4rw15oZAgwAMs0sv/c23Tl3yDmXYWavAhPNbB/eXInngMXKrBYY\nJ2oDMzsbuBWYA6ThfeGZCHzunPsuGHWuTsxsPN78zxQgGhiKdwW/t47/qnG8NtDxXzX8+f9F1mc1\ns0wgzTmX5N8/6XMhJIMs59wMP23sE3hDpFYCfZxzu4Nbs5DREngH7yr9bmARXkrMtKDWqnq7GG9e\nj/NvE/ztbwJ3OOeeNrM6wBS8MeILgX7OuZxgVLaaOl4b3Is3wfl/8T7/HXjB1R/LOV5cjm8Y3mf/\nn2Lbbwem+r+PwhtS/gHeleW5eGubSWCcqA1y8NbPGom3tlwK8D4wvuqqWK01wfucmwHpwGq8ACs/\nu5qO/8pXahv4Ixh0/AdH8blWJ30uhOQ6WSIiIiIiIpUl5OZkiYiIiIiIVCYFWSIiIiIiIgGkIEtE\nRERERCSAFGSJiIiIiIgEkIIsERERERGRAFKQJSIiIiIiEkAKskRERERERAJIQZaIiIiIiEgAKcgS\nEREREREJIAVZIiIiIiIiAaQgS0REREREJID+P0+HzI4fu5hLAAAAAElFTkSuQmCC\n", "text/plain": [ "<matplotlib.figure.Figure at 0x1131dfa58>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "result = z(*rock1, *rock2, np.arange(40))\n", "\n", "plt.figure(figsize=(10,4))\n", "plt.plot(zoeppritz_rpp(*rock1, *rock2, np.arange(40)), 'o')\n", "plt.plot(result)\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 32, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "'def z(α,β,ρ,χ,ψ,ω,t):import numpy as n;t=n.pi*t/180;C=n.cos;A=n.arcsin;S=n.sin;p=S(t)/α;u=A(p*χ);ϕ=A(p*β);υ=A(p*ψ);v=lambda w,x,y,z: y-2*y*S(z)**2+2*w*S(x)**2;a=ω-2*ω*S(υ)**2-ρ+2*ρ*S(ϕ)**2;b=v(ρ,ϕ,ω,υ);x=v(ω,υ,ρ,ϕ);d=2*(ω*ψ**2-ρ*β**2);E=b*C(t)/α+x*C(u)/χ;F=b*C(ϕ)/β+x*C(υ)/ψ;G=a-d*C(t)/α*C(υ)/ψ;H=a-d*C(u)/χ*C(ϕ)/β;return(F*(b*C(t)/α-x*C(u)/χ)-H*p**2*(a+d*C(t)/α*C(υ)/ψ))/(E*F+G*H*p**2)'" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "inspect.getsource(z).strip()" ] }, { "cell_type": "code", "execution_count": 33, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "386" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(inspect.getsource(z).strip())" ] }, { "cell_type": "code", "execution_count": 34, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "1198" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(inspect.getsource(zoeppritz_rpp).strip())" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "<hr>\n", "\n", "**© 2017 [agilescientific.com](https://www.agilescientific.com/) and licensed [CC-BY 4.0](https://creativecommons.org/licenses/by/4.0/)**" ] } ], "metadata": { "kernelspec": { "display_name": "Python [conda env:xlines]", "language": "python", "name": "conda-env-xlines-py" }, "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.5.2" } }, "nbformat": 4, "nbformat_minor": 0 }