{ "cells": [ { "cell_type": "markdown", "id": "2535ab04", "metadata": {}, "source": [ "# Fourier series\n", "In this notebook, Fourier series and Fourier transforms will be explained.\n", "\n", "Waves of any shape can be modelled and described using Fourier series. \n", "\n", "The general Fourier series is of the form:\n", "$y(t) = \\frac{a_0}{2} + \\sum_{n=1}^{n=\\infty} a_n sin(n\\omega t) +\\sum_{m=1}^{m=\\infty} b_m sin(m\\omega t) $. \n", "\n", "\n", "Here, $$a_0 = \\frac{2}{\\tau} \\int_{0}^{\\tau} y(t) dt$$\n", "$$a_n = \\frac{2}{\\tau} \\int_{0}^{\\tau} y(t)sin(n\\omega t) dt$$\n", "$$b_m = \\frac{2}{\\tau} \\int_{0}^{\\tau} y(t)cos(m\\omega t) dt$$\n", "\n", "Where $\\tau$ is the period." ] }, { "cell_type": "code", "execution_count": 43, "id": "442c046c", "metadata": {}, "outputs": [], "source": [ "import sympy as sym\n", "from sympy import pi\n", "import matplotlib.pyplot as plt\n", "from scipy.signal import square\n", "import numpy as np\n", "import scipy.integrate as integrate\n", "from scipy import fftpack" ] }, { "cell_type": "markdown", "id": "313a034c", "metadata": {}, "source": [ "## Finding Fourier components" ] }, { "cell_type": "code", "execution_count": 76, "id": "2f0bd2e9", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 76, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "def triangle(x):\n", " if x>=0:\n", " return x\n", " else:\n", " return -x\n", "\n", "def fourier(function, lower_limit, upper_limit, number_terms):\n", " l = (upper_limit-lower_limit)/2\n", " a0=1/l*integrate.quad(lambda x: function(x), lower_limit, upper_limit)[0]\n", " A = np.zeros((number_terms))\n", " B = np.zeros((number_terms))\n", " \n", " for i in range(1,number_terms+1):\n", " A[i-1]=1/l*integrate.quad(lambda x: function(x)*np.cos(i*np.pi*x/l), lower_limit, upper_limit)[0]\n", " B[i-1]=1/l* integrate.quad(lambda x: function(x)*np.sin(i*np.pi*x/l), lower_limit, upper_limit)[0]\n", " \n", " return [a0/2.0, A, B]\n", "\n", "# plot triangle function\n", "plt.figure(figsize=(9,6)) \n", "x = np.linspace(-np.pi, np.pi, 100)\n", "triangle_values = [triangle(item) for item in x]\n", "plt.plot(x, triangle_values, 'r')" ] }, { "cell_type": "code", "execution_count": 45, "id": "a5f74e08", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Fourier coefficients for the Triangular wave for three harmonic numbers\n", "\n", "a0 =1.5707963267948966\n", "an =[-1.27323954e+00 4.99600361e-16 -1.41471061e-01]\n", "bn =[0. 0. 0.]\n" ] } ], "source": [ "traingle_coeffs = fourier(triangle, -np.pi, np.pi, 3)\n", "print('Fourier coefficients for the Triangular wave for three harmonic numbers\\n')\n", "print('a0 ='+str(traingle_coeffs[0]))\n", "print('an ='+str(traingle_coeffs[1]))\n", "print('bn ='+str(traingle_coeffs[2]))" ] }, { "cell_type": "markdown", "id": "42cebab9", "metadata": {}, "source": [ "## Finding Fourier series using sympy module" ] }, { "cell_type": "code", "execution_count": 46, "id": "436c0e0b", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "L=10\n", "x=np.arange(-L,L,0.001)\n", "y=square(x) # period of 2pi\n", "plt.plot(x,y,'r--')\n", "plt.title(\"fourier series for square wave \")\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "337bde01", "metadata": {}, "source": [ "Figure above:\n", "\n", "n(t) = -1, -$\\pi$ < t < 0\n", "\n", "n(t) = 1, 0< t < $\\pi$ " ] }, { "cell_type": "code", "execution_count": 85, "id": "05fe6410", "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$\\displaystyle \\frac{4 \\sin{\\left(t \\right)}}{\\pi} + \\frac{4 \\sin{\\left(3 t \\right)}}{3 \\pi} + \\frac{4 \\sin{\\left(5 t \\right)}}{5 \\pi} + \\frac{4 \\sin{\\left(7 t \\right)}}{7 \\pi} + \\frac{4 \\sin{\\left(9 t \\right)}}{9 \\pi}$" ], "text/plain": [ "4*sin(t)/pi + 4*sin(3*t)/(3*pi) + 4*sin(5*t)/(5*pi) + 4*sin(7*t)/(7*pi) + 4*sin(9*t)/(9*pi)" ] }, "execution_count": 85, "metadata": {}, "output_type": "execute_result" } ], "source": [ "## Solving Fourier Series in Python\n", "t = sym.symbols('t')\n", "\n", "x = sym.Piecewise((-1, t<0), (1, t>0))\n", "series = sym.fourier_series(x, (t, -pi, pi))\n", "series.truncate(5)" ] }, { "cell_type": "markdown", "id": "26ed2a86", "metadata": {}, "source": [ "The series are truncated at 10 components, due to Fourier series being infinite. Adding more components will make the plot look more similar to the box plot above.\n", "**note** that we know the box plot above is an odd function, hence we can assume the Fourier series are made up solely of sine functions, thus the $b_m$ term is zero. If the function is even, we can expect only cosine functions, thus the $a_n$ term is zero." ] }, { "cell_type": "code", "execution_count": 86, "id": "b2c829dc", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "text/plain": [ "" ] }, "execution_count": 86, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sym.plot(series.truncate(10), (t, -pi, pi))" ] }, { "cell_type": "markdown", "id": "94298cf0", "metadata": {}, "source": [ "## Fourier transform\n", "A fourier tranform changes the domain of a function from time to frequency. Any function can be composed of infinite series like sines and cosines. For example, in the plot above, Fourier series are used to make a box plot out of sine functions. \n", "\n", "In the plot above, the series where truncated at 10 components. In the gif below is shown what happens if more and more components are added.\n", "\n", "\"image\n", "\n", "It can be seen that each component is a new function with a certain amplitud and period. These variables of each component can be displayed on a **frequency spectrum**. Decomposing the amplitudes of the components and the period can be done using a fourier transform. In Python, a 'Fast Fourier Transform' can be performed of which a frequency spectrum can be made." ] }, { "cell_type": "code", "execution_count": 87, "id": "83f63c25", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYoAAAEJCAYAAACKWmBmAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAACBNklEQVR4nO29ebglV3Uf+ltV55w79XB7UqvVkkAICRBIArkhYBwHG4xBBvQgYMPLF4jjfHqOjYcXJw6JYxt/NhmcBNsY21jB2BBjEzs2SM+I0WHGGFpCUmtAA0JDD5J6ure773DOqVP7/bFrV+3atXedWvvcU3WRan1ff33vueectatqr7XX+q2JhBBoqaWWWmqpJRcFTS+gpZZaaqmlzU3tQdFSSy211FIptQdFSy211FJLpdQeFC211FJLLZVSe1C01FJLLbVUSu1B0VJLLbXUUik1dlAQ0UVE9DkiuoeI7iKin7O8h4joPUT0ABHdQUTXNLHWllpqqaWnMnUa5B0B+AUhxK1EtBXALUT0GSHE3dp7Xg3gsuTfPwDwB8n/LbXUUkst1USNHRRCiGMAjiU/nyWiewDsB6AfFNcB+JCQVYFfI6JFItqXfNZJu3fvFk9/+tOntPKWWmqppScf3XLLLSeEEHtsf2vSo0iJiJ4O4AUA/t74034Aj2q/H05eKxwURHQ9gOsB4OKLL8bBgwenstaWWmqppScjEdHDrr81Hswmoi0A/grAzwshzph/tnzE2nNECHGDEOKAEOLAnj3WQ7GlllpqqSUPavSgIKIu5CHxYSHEX1vechjARdrvFwI4WsfaWmqppZZaktRk1hMB+CMA9wgh3u14200A3ppkP70YwPK4+ERLLbXUUksbS03GKF4K4J8COEREtyWv/XsAFwOAEOJ9AG4GcC2ABwCsAvjx+pfZUksttfTUpiaznr4MewxCf48A8NP1rKilllpqqSUbNR7MbqmlllpqaXNTe1C01FJLLbVUSu1BUUJn14f4q1sOo4kpgLc8fBqHDi/XzjeOBf7XNx7B+nBUO+8Hj5/DF+87XjtfAPjEoWN44sx67XxPrwxw0+3NJPJ97cGT+NZjZkb69CkaxfjI1x/BcBTXzvu+x8/iq98+UTtfALjxtiM4vTJohPek1B4UJfSZux/HL/zl7bjzSP3C9K6P343/8LFDtfO957Ez+Ld/dagR5fU/vvQd/OSf3oJRXO/BPBzF+Kk/uxV/+MUHa+ULAP/fHUfxs3/+TXznxErtvH/lxjvx639z9/g3bjDd+sgS3vHXh/DZux+vnfd7/88D+Jk/+2btxt/y2hA/95Hb8MdffahWvhtF7UFRQqsDaVXfcWSpEd73HDuLQVSv1bWWXHMT3szaIMLqYIRvHz9XK99+FEOIZq453WOHlxrhfcfh5dqV5uogAgDccaSZ+31yZYCjy/V6j8pDP9TAc94Iag+KElKucRMKZDiKMRjFuO/xs7XyHSTX3IQQD0dSYd1R8/0eJofxnUeX6/dmomb32Nn1CA+fXK2Zr7zHTV2z5L1UK19l8B06Uv/BvBHUHhQlpB5u3YoL0BR2zbzVNd9z7Ezt3kw/akiIk3u9OhjhwZq9mSYP5nR/18w7k6ul2pVmUzKtnvOJcwMcq9mb2QhqD4oSUpvqvsfP1h7czSyQpUb4DqKnjjejH4hNHcx3Hanfmxk0djBLWTqzHuGRU/V6M2qPHXoK7bGNoPagKCG1qaJY4J5j9Qa0m7Z8gCaESSqQu4+eqTUjpp8T4qXa+Oq8Vxr0Zm5v6HAEmjuY647N6Ndct/G3EdQeFCWUf7jNbOh7H6vXm9kMQtyv2ZvJXXPdz3nUzP2OY5HGCur2ZjaDXC2vDfHoqbX6+Db0nDeK2oOihPpRjK0zHeze0sOdDSiQS3YvIIpFrUpTWfKX7F7AXUdrDiqPBJ6xewEAcFeNKcnqmp+xewF3Hz2DuEalOYxi7N02g7luiDtrvN8D7ZpXBiM8dLK+9FzlRT1j90JjcgWg3vsd6XJVf7r9pNQeFCU0HMXodQLsXOjh7HpUG18hpLW3d9sMANTKW23ovdtmauWreO/dNgsAOLM+rI/vSF3zLPpRnLP+6uA92w2xY75b6/0eatcMAOdq5S1S3s3sMSVXTeyxmVr5bhS1B0UJDSJ5UIRBgKhO1zzZVAs92bOxTt7K2lvodRDF9WY9DUYxFmZCAGgECmmKdy8MEIbU6DXXur8T3vO9sFa+QLLHGpCrQU6u2vTYJxUNEo+i25AQz/WU4qrXwlW8R6P6s3DmGhTipnj3OgG6DRkj6ppr3d+jEcKAMNMNat3bgNpjzRkjc70QQqBWeHMjqD0oSii19gKqNQtHt7iAzFWvm/ew5s3cj2LMdxMLt8ZrVl5Uxrveg1l6rVQv3yavOZWroNbnrHg3LVcAMKz5gJyU2oOihJS11wlq9ihGalPVb+0NRzHCgNDrBI30XJrtyi1Zp6WpjID5JqGngJqBfxqCnpRcNQE9ZXJVv6fehExvBLUHRQkpa69TNyxgWB+1C3GYXHPN3T1TGCZsSGk2cb9TeLPeg7lvXHPdhlATBtgoFhjFojG5AprZYxtB7UFRQoMoRjcM0AnrhQWUhTvXECzQDakxay+FYZrA6xuAvZqCN809Vi+0KqQxEjZ7zXU+5yZ5bwQ1elAQ0QeI6AkiutPx95cR0TIR3Zb8+5U61zcYxZhJFFcT1t5cYxZuiLBmq15Ze70wTLyZJoPZNeP1TcCbxjU34VE8leSqyPu7K0bR2MzshP4EwHsBfKjkPV8SQrymnuXkaRDF6M0HIGoolW6mfiHuR/JwbEpxZQqk/sDuQoMwTFNe1EIjMMwogzcb2GMzDe6xNkbhQUKILwI41eQayiiz9urFjxuPUWjXXFc/HP2gqD1GMWrQg0ugp7pjFMUU7GaC2U0kiTQRSB+MJKTbDQlACz1Ng15CRLcT0SeI6LmuNxHR9UR0kIgOHj++MeM0U2uvZiy1iJnXi+NKay/Z0DUJUyrEISWpog0ozYaw60bTYxMLt+793YhcRcZB0UAsqhPWK1cbRZv9oLgVwNOEEFcD+F0AH3O9UQhxgxDigBDiwJ49ezaEeZYB1AwM04SbmlajJxu6Lt55a6/+4jNl1QP14sf9hlJFs3TN5lKCG4M3w7D2+Ije5QGoNzV3I2hTHxRCiDNCiHPJzzcD6BLR7rr4D0cxug0ormGTUIhykQOlNOuHnjph/fhxN6TU2mtEaTZc/V/vHhM5uaoL3lRyJSGgoFaDYDiSGZTdmj31jaJNfVAQ0flERMnPL4Jc78m6+Pc1y6eRSuFeQ1WzCRRSJ2/T2quzKty85roqdoUQuVqdJuDNxvaYBm/WdUD2jYSJ2qGnnFx9dx0UjWY9EdGfA3gZgN1EdBjArwLoAoAQ4n0A3gjgXxJRBGANwJtFjdNGBkkG0GAUP2WKcwZRjO3zvdqxVBM/rrPPlB7AB+pTXNKaRlpH0UhTwEb6W41k5pG2xzphHXybC2b3lUHQxij4JIR4ixBinxCiK4S4UAjxR0KI9yWHBIQQ7xVCPFcIcbUQ4sVCiK/WuDajgtTP4jq7PsQDT/Amlylrb7YbIiB/xfXt4+fYLY0HI5GmLgJ+vEexYM8ZGGiwwCRQ37HlNTxxhjeTeFgQYr9nfejwMqvZ23CUh9t8r3l5dYiHTvDmSWxU1tP9j5/FSp/XKlyXK1/ew1HMnpei9thMJ0BngiyzR0+t4sS5Po+31vEA8I9R3P5o/XPGgU0OPTVJurU3ieL6nc/ejx/7w79jfSaDYfx5D6IY1733K3j/l77D/NworaMA/Cyfv771MF773i+zFPZGxSh+8k9vxS/faK3fdFJ/NDkUcujwMl773i/jK98+UfkzBS/Kc4/9p0/cg7f98ddZn9kIr/VcP8KP/O6X8Wd//wibt640fXh/+GsP43Xv/QprbokOb07iUfyzP/46/uPN97A+o9CJzgTQ0999+ySu+72v4LZHl9ifnZTag8JBaeBLWXueUMgtj5zG8hrPqtd5+6ZN3vf4WZzrR2zeKpg9SYzi1kdOQwjgDGMojW7t+RafrQ9HuOvIMv+ak1Ytk8Qobn3kNACweCvF1U06qfrGRm552H+PzXT8U4LvOrKMQRR78BbodrLkAZ89dssjSxjFAqv96mOCM7kib7laWh3g28dXcMbjfut7zGd/++yxjaL2oHCQbtX74sfDUYy7j55hZ3bkPQo/palmEXNhlBSvnwBLVTOBObwL1p6H4rrnmLzX3M9m1p4/3Hb74SUAPIXbL3gUfMV1rh/hgePn2NesMPMwIBD5QSHqOXNbZkuPIkyVps/9viO535wEAFOmJ5Er7qG+MXK1JD/bQCC8PSgclKsUDsgLt77v8bOpMuBsjMzSJO+0yVRZ+25oT6W5Phzh3sfOsnnnYRg//DgVYuZni0LMf9aHlNLkKK4cZu6nuO46sgwh+AVzgyjGTFI34js06Y4jk+0x3xTs5dUhHj65yv5svvrfb4/5GEFAvhM14HcwH/LkvRHUHhQOyqfSBYgFfyqVerAA09JMNhUReUMSh44sAeBbPsORyFl7XAX0rcfOpsLL+aye494JyWuwS3Y48j47NIKrXMW3klj1AE9xpcHsCVKwM8/RT1kD8LeuUwu3+v3Wk0R8U0UPHdHlqjrv/kiXab+q8Mwg8LjfE8Cbx8/2cXR53euzG0HtQeEg09oD+MJ4h7ahB0wXWVl7PpCEbtX7WJqTZKQo5SF5+1l7vlCfj1UPZJXZvlDIXUfPQCGLXlBIYoxMYuGOYsEyZPSDwueQWl4d4qHEqh9wnrNVrnjP647ECNK/rxJv1RQwgTcn8lp95cqzqFPPIqyz3kZRe1A4yMQzAR+l6Wf55ITYA5K497GzqZLmCGEuJdj3cPS8Zt3a82kzvjqIcP8TfMgL0Acm+UEhd2zA4SgbIXpYuLoC4cSERvk9xjVG7jzqv7eBjZQrT3jTQ65OnOvjyNIamy+gt2rx3WN+17xR1B4UDsqgkMy6ZgliFONbj53B9rkuAD4k0Q39rT3lyWyf6/IUl9aYL93QHrDA4ry8Zk6swLT2uErz7qNnEAtgcb7rFVzt5hQX7/P6NfsoTcWbC2+eWR/iOydWsj3GeFb6HguDgB3XUYpr22yHubfle7vaHuNCKXccXtbkyhPe9JjgeCgnVx7wpt5sk817SZOr1qPYNGTmuANgVQsvrw0xHAlcvHMeAB+S0PFjrsV14qwsBrp457yftafjx8xNeeJcP71mb96e1h6grtnX2vPDj0+eG2TXzFh33ovie3Anzw0AQLvfTOhJhzeZ13ziXB/zvRC7t8x4wm2hN7yp7zGuBxcQ0PHMZMzJFTcmZMZlmJ8/ru+x1qPYPJRXXHx30Wzsx7XsM/yY37xsOIrRCWTvew5f9V69HTJXmAZR7DVeM2/t8YVY4eRz3dDL2pvp+EMhg1F2zWrfVOKbg2H4WWbmHuPg9f0Jg9l6Nbt3XMYzRjEcxZpcecJtXtec7LEef4+Zbca5e2zoKVcbRe1B4SDd2ut6KBB16vs0XctZex7psbJ3DqET8hrN2aw9rjBFcTa83tfa84lRqPs73wv5GSmFNuN83tmUOr/02K6H0hxq18z9rO61dj1iFMORQCfgP6vBSBbI6emxnP09igViocuVpxflJVfZ/Z407ZwvV7GXXG0UtQeFg2xBN58ceZ+Hq1t7nYDnFQAZ5t4LefnxZi0DwHdzh6M4naPBVZp5a49vZQJyhgcX/520Y+5wJGQLaWYFvxXq8/AAvZRm4kUB8OrWKzF3QrfDi2/0rXLF96LmPTwKKVfycz7devW2J5zPxrFAFAsjBZu/x1K5aj2KzUNmhgTA9CgSRTfX9VCamuXjg6VGcebmsjyZxNrTW3hwLE0hBIYj4Qe36dfsYe0NdFjAAy7TkxZ8YBg1w8Mn68mXt3q2ao9xvccsYSJgxyiiZFZLl9kKI5Mrv/kf6v5kcsXdY5Knn1xlvFl8tcQY34FggyjGTDcJ/jfQebY9KBykF0OFHu7iMMpbe1yrKUtd9IhRRAn0FASsHHdl7eWhEL4QT2rtdT3w4zz05GftyQJHvgIZjmIJmXHx+lz3WD4MM4nXqrJwAL8UbAk9EbsPWhYHC70SJoaRv0eRlyuPa/b0KHIQ4wTQUy/xWtsYxSYis4UHwIdSAGxM0M0D/smgkAmznjxgAZ/Z06rfEiDTNX2uWfEWorrC1ZW15O2nNKUHxzvUJ80y04Or8nfPWh0PqG+Q7rHAq+gt18LDZ4/5eq0TyhUAzHZ9Y3+Tw5s+ab0bQe1B4SBdgfgozciw9nyDbl6KKxZpcNYnx1025vPJ9PJXXAq+AZS1xxckH95Z7YiuQHi8oyTLrBcyoSejhYf8Lh/oid8qfNIU7Eg7KHgGVBbM9kkVHabwj0eSyEi/Zn5/q5xc+cSiJoQ3OyE/k3GjqD0oHDRpjMIMNHKL9XTLxyeVrqN6Jk2YusiJURSzcOpTXL68Bxrcpnjzc+SF1o7e4357tp8uXLO31+rjwYk0ldlbafrIlQk9sWMU/q1xMrnizfrW5SpIu/X6JA/wD+aNovagcFA/ZwVMUEfhCcPkYxSe0BMzsyOfuuivuOaS7Awl1NV4a+mannn9snYkYPHWhRiAV1dRveqWC4V0Q0KgrZsXo8gbI+w6iglSRXXoiRuLAswiwwmMEV+4zSsuo+SKJxsmvOnTrTeFnkJK4591UqMHBRF9gIieICLrSDKS9B4ieoCI7iCia+pam9Vd9CggS5Um09rrTgCFDONsU/lYe/nBRfzakbQwyNPaC4OAFWdQvJW1J3nzDoqsnQUf9oq0Q8o388gnBTsy9pivMSLTY/nXnCoubxjGJ0ahIEa+XPULcsWHnrphlnhQGd607TFmwsUozhJUnootPP4EwKtK/v5qAJcl/64H8Ac1rAlAZqEGgZ4qOgH0xFQgM5PAMIml6mvt6UN8/NIAySuQrlt7kjf/cFXpj1WVgGnt+QU5JfTEjQmZSQuAX2W2T8FdLuvJC+oT6R7jGVBJHKzjlyparKPgwVZ6woS/XPHqP6x7jBWXyQ6aXocPE24ENXpQCCG+COBUyVuuA/AhIelrABaJaF8da7MrLv/sDG4xlA6FeLvITPc6F8yeIEbhM+vb9KIkb366J9dK1S1cgA/DqI67mXXtqaw9qsL12hH5fdU+G41ixAJ5eHOCzDqe55jBmz6B3Y2TK7+iTgW3Sd48j2LGc4/lWut4DlGblJr2KMbRfgCPar8fTl4rEBFdT0QHiejg8ePHJ2ZsBvsATyy1y7f2CllP3tDT5Gl8HItNCa2qKeD0PTK9KB/eKoAPVMfri9Ye74BTAt8NiB0TMivw9e+rQpGxx9iZXhNWwvuka+ZqRyZICZ7pBCCaTK643XqlXBHbcDTjYNxhZOr+Kmh18FSLUVQgsrxmvUtCiBuEEAeEEAf27NkzMWNzUwG+7RUkllq18K1g7fkEdpWLnARXq2dnFK09nwKwFJKYoIWHD++ctceMUeTrKPiKK8t68o8TAL5xMJ51bXpRvrUj6TTCWmMU2ee7Ab+Gw9xjvCLaLElEfV9VvkBepjmeul7Z7Tu3ZFLa7AfFYQAXab9fCOBoHYxt0JNXCw9mdoatAMynhYeuNH2Kz7zSNTUl4NP3KGvh4ePBZTnuAF9pznjGKPJCzOt7ZKZrAn51K/PMwK5dcfnVUfQ8vdZuSF4xiig2lKYn9OTTrTdKPPVuZ7KsJ+7BrENP3BqOjaLNflDcBOCtSfbTiwEsCyGO1cFYdRQF4BfYNfK9qz5clfqmFJ5fjCKfncF1kbshgYjYlo/iozrA+lbN+nXrjXPQk29GChc/jnJeFLe3Vj4NGpiszThbcWnxEXY31JFIIUZuXKUXBun+4qwbQAq7pPUMHA9MyzLz7darD1yqylsfgqZ4++yxTlK30kQLj07tHDUioj8H8DIAu4noMIBfBdAFACHE+wDcDOBaAA8AWAXw43Wtze6m8iEJbsFdX6tlAPxiFIMoq+IEpGKYTXDs0s9plkvG2z/riV+ZPQnUl4cFqh5Sw4K151fN3k0PR//MI4Af2A2TinD1exWyeRQ+MQo1CVHN6w4CG1Jc5F2QKw+4Le17xLhf/ZEN6uMZM50w64NWdY/1bVCfB9ymvNbVQVT5sxtFjR4UQoi3jPm7APDTNS0nR4MJN5Xa/EpBVy2SKWRI+DTIU91jmetWUAgRefEeata5T9+jSbLMBlpBEuAB9YV+SjM3MrfmGEWUpqhOlq45WQuPbEzwTFDFGBkVr9kTeuoEQeXCSiGETJiY4GCOYoG5btbehnswZ/AmVzY0Y8SjUHAjaLNDT42ROeQE8IMFuNkZBWvPo2p2mGQAdTv8ND7FV/Lm5ZqrDZxV7PpZe50UP+Yozax2BKhe7Ne3Wdde1l7S62mC4UEAv26lG/ina/ZSKMQP3ux4xoQUX59uvUMNeup2qitNvX5Dft4P6svJVU0ynR2OxJarjaL2oHBQ3kXmKR8gj8Vy5hQUrT1eXxmgmJ1Rdd26tQeAjYfqSpOD17usPW7bbN3CZStNTyHOQU9Mj0Jvo+E7ClVlWwGTpGvy1q1qR3paJTzroDD3mEcGkMp68k0J9hpGFuVbeExScOczrMmnI/RGUXtQOMhaAMaCBYxuqI7P/uL/vh1/eTArFSkEV32Kz7TBRYC979HDJ1fw+t//Ck6vDHK81ZoBPiRhDuJxCcPvf/4B/NdPfStbr2Ht+VTCp8HVElhgbTDCm973Vdx1dLmwZl1hcwwCxUfOZnArrk/eeQw//eFbjTXHqXXa8VBcUTITYly65tv/7FZ8/I4sB8S2xzhQiHouObze8vlvPXYGb/yDr2Kln2Hqg1F+j3UCYg1NygK75Qfzuz99L37vcw9kfDdArqI4aycv11L87PLaEK///a/gwePnnLz5cqUF8EsOx/908z344d/6YuXv5VB7UDgohx97VmZ3Qt2CsD/cT9/9OD5/3/Hc54Ci0uQGWPW+RzYlcOjIMr75yBK+9djZ3OdMa89ncNG4Yr8v3nccn7rrcY1vMfNI/75KvBMLtwyvP7K0hm88dBrf+M6pAm/fHPd07UkjRdfh+LUHT+Hjh47llPlwlHlRfoejNGaCgBCUwJufuusxfOn+47nPAf4xCjOAr67FpNsfXcLBh0/jOydWMt6RSAdUKd5+yQPlSvNz9x7Hp+8u7rHJ5Gp8Zt13Tqzgm48s4ZaHT+c+R5QdTtwYhXqvMv5ce+zkygBn14eVv5dD7UHhoMkLwESq+Holc4XXhyOcPNdPfzczJJTiq8pbNRDT+x7ZNtb6UPI5uZLx1vFjgB+jMPF6lxCuD+PcNRezcPgxirRSuORwXB/KjLKThhcFmPMo/HLcy9I1+0kx4+nVPO/J2sQILcZhT3EdxXI87YlzxWue0fD6SXp6AXbrWu2xE/qzHk0WB8vVrTDkyhaXAfgtzlXtCGA/KFx7LJckwoY3s2vulSSJrA9HlbIbfag9KByUx8z5dRTKwlWftykQIQTWhzFO2RSXURhUuQ7DyApxfVZtaJ23Po5UrttvnkUGC7g39NLaMP27DcMFuDEKgXGpi0pZ54R4FCOgLLjpK8Rp99iSwxEATp5zHBQ+BWCjOL1XriBn9pzzyhrI329Ot95IV9YVlGZ+f49SuVK8Wda15s2Uzetej0aFvQ1MFqPQuzIDdn3glqvsmkN2O3q9dsRtyKwPY8y0B0W9ZM/39oSeHA9XbV7bQTFj8q4oTDnXvAQ/Ti2fc3mlaW5on6wn1Z7BJQz9KIYQwOlV6SbbWkoAHoFdLevJdr/XBkpZG15U7pq5dRQa9FRyOK4N1CFl9+C8FJceR3O0dlir4EVxx7CaAXz5Wcv9tu0xSzCbK1cByTWXKc21QYzVwSi97y658tljZXCb1SAYZX3MFG+frKdMrtxe62x3Oiq9PSgctKa5cdlUKq71kVl7tp40uvWhmpMp4VK8uam5VmvPEuTMXORMca0PRpjTNhoXksjqKMoL7pTwqgNSXbOqMPbppKoPD1K/m2Sz9taGo3R+BqCGJnGUdf5wjB2W+XqU5y2EkLyTa+ZCjIp3V/NISq/5XP6aAXjz1iHGTkkgPYM3dd754s+Q68HFenW1u9dT39jfRbnyQQlEvnakxIMz5Uq/ZrZcGVlPLgNsfTjCbKchj4KILieiv1XDhYjoKiL6D1NZzSYhIQTWBqO0qhqQU6lY2TBGu4AyDDcWwNKatK6VElW8U8XHbM+Qb5Dn5q0rzdVhlPYNUrx9qmbDQDUFdGzoKC9Mq45r5s45yA0usilNC/S0OhjlrjlkZuGk0NOYIKfpwfUj2fxRKWvf4KpK1ew5FIh6zmf7UQq9qT2W8Vb3jHtQBOiV9D2ywV5rg2hCuRK5g8KJ1xsHcyZX8ln77LFC48mKxsiqoUvYcqXXjpTGKOJGPYr/AeDfARgCgBDiDgBvnspqNgkNRjGiWOQeLj8zRE+vtT9ctamADA5ZMZRmml9fWYgt0FPJhtaDnKv9zMKVvLkDVrQ+PiUehak0V5P0ybluJ+ULeChNLdBYdjjqsMDqIMpdc4fZFsIMNI7lbR6OysL17KSaQU/2OJi+x5TyKvLmehTFrCcb7zQmpN3vFUNphh5ZZmnauQO2UgF8nfdK0vZi3jiYvaCn0G282SDdlUGUTuRTvLleFJAlTLg6Qq81HMyeF0J83Xit/mYjNVJmcZnWNQ+vz6Anh7UXaQdFavkkStO0risKUw56KgtmRw7Lp5u3fPhZIck1B/YsHBXA13kXPArPSni9dqRMaS6vDVMFb1p7vqmiVXln16wUl9xjqk0ST2lq0JPjgOvre+xcdr/1egB+jEKDnipl1mnQ08BijLDkKg89lRlBOm/Ti+K28BjFAkKYcmXzWovZhGsWufJtjVPWMLPprKcTRHQpkjkQRPRGALV0cG2KTMUFKCyVlwGUs/asHkX2mq409UZvXKVp9h7SX7Pxzh8UeViA21cmikUugG/j29ewbOVFrQ5N6MkPP1bdNQH7/A9dgZzW7vdcToh5HUnNoTKSt/u6lQdnKi6ipJrdE3rqOvoe6XvspHZI6craP0ZRPv/DxOuFENY9xi0+ywfwy5/zKRe8yUyPtclVWTbh+jBOjYEC9MRMCc66MuvQqv1gbhJ6+mkAfwjg2UR0BMDPA/iXU1nNJiHbQdHxqNjVYxS2poA26ElZ9XpjPvl9FWMUaQOx8r5Hivfp1UG6aWVwVfei+NPLxll7fYvicnpRFXnHsUhnBaj21XYoxMa7iB/75rh3g/EKxOVFAZPBm66+Ry6lmefLTMHWU1SrpMcacZl5Y4/x5UpLCbYdjjljxPDguvkYBbcFiC5X9gSVIm89aUHxZqWdG8FswJ7J2B+OMDOlYPbY7rFCiAcBvIKIFgAEQoiz4z7z3U6ptWfCMN7QU4BzURGtc7nIcxYhrpz1FBc3lR0Kka/JNNUBts91MRxNGJeJstoRl3W87oBCgEyBcGMUeu2I+n+c0tQVyHxvPn09ZMYoBhalWXZQ6AYBAEOBcEdkVsl6siiuQVFxAdXvtz6Do8yQUbxXBiOsD0duuWJWKecMsHHP2QE9cWMUEfM5K94X7ZwveFG+jRDH8o7yz3UjyXlQENG/crwOABBCvHsqK9oEpKyPhZl8AIo7uCjXS6dEkADN0hyOcnyzPHUuflzek0bHrk+tDNK1zhuQhD/0ZI9RlAZX03RN5uGoBfAlb7vFlhfiJG3SUJrdgAkL2PD6EpgxVVzDfIxCrZs7IjOFnpyZdUWlaYN/gOrxkUEKt41XXCZvAFiY8Y9RDCJtjzk8XuseG45kxwDPbr26XIVJurxNJvNypXtw2XPmduuN4nztCFA0/lQAf1rpsWUexdbk/2cBeCHktDkAeC2A6XSe2iSkMHMTx+VPw8qUph2vl3zCgDRrLypYXACnM6iWSpfi9XZhUpbNiXN9bJvtAkAhVZQ7uCgLZhMGoxhCiNS4kHyzFNoTmrIOKCuG4s5mKE4Qs9/vNe2aU49iaA9mm+uuwtsFw6iaiTAgnF2Xaap2eNMjRhGWexSqfkDuMR3ezCdqyO/jQU+5AL6t2G+g3+9+eq1zhtJc0xT7eN5ax4Mxh6N+zWtGLCqF25itwjvp/nZVwseaXNnhTe4wshykG9hhL3XNtccohBC/JoT4NQC7AVwjhPgFIcQvAPgeyNnVT1oyaxkAvkehQ0+uucLq4Z6/bTaXNmnyBarjx3oVZ3m+d4zzt80CkFbXqpE+CPCbl+VrR+xegX7Nukcx3+sU4jLc0Z6dCh7cni0zCCjvzUwCwyjoqRNooz0N3io2ou736ZVhBj11/a1rFcAH4Ox7ZLvfJmbOhje1AL5KurAV3PWjbI+dXBkU0nIlb65cZR0Pes5C1ux+572o4uFYXa6ywxFQmYx2mdblahAVU+35WU9a7UjHvu7soGgu6+liAAPt9wGAp09lNZuEsg2dD7qxCrEis72CG3rav2Muh9ebuDUwYXaGQ4Hs3zEHQGLXNszcp4WH7kXZeKsNvX/HHJZWZb+ntWE+CydMoRAe9JTFR9x9j+Z7IXYu9HByRQbxB1Gce8583tKLIsoG2pgKpK89Z0DCXjZjpMNsH5K3NMsD+Pt3zGlKsxjAB/gHM2ePndL2WDF5gFd8lmvfX3I4mnJlM8B85ErydsNeOxd6mO0GOHmub02158uVXjti94RUAL/JrKf/CeDrRPROIvpVAH8P4EMbwZyIXkVE9xLRA0T0DsvfX0ZEy0R0W/LvVzaC7zgys3AAjxjFyMRS7QUyALB/cS5XQWrDj6u7yBr0VJJKt5ZYPkTS2lNrmSQ9Np+RYs8q0a8ZAE6tDgpC3GWmx9qG17vSkWe6IXYtzODkub4Wi5qMtwkLFA7HKH/N+sFsxqO4xWd691kXDEOUWNc5KKQYB6vK22xbArhrR9JrXukXAsqAL7yZyZWCCfN8k8NxcQ5rSRC9EMBnxigK0JMjkC6L3gK5x1YGWB1aPPWQN4zMzKCUr9XrUVTJenoXEX0CwD9MXvpxIcQ3J2VMRCGA3wPwQwAOA/gGEd0khLjbeOuXhBCvmZQfh2yWDzdGIedW6wV3bujpgsXZNE3V1kYD8IOeyvsexViYCbE418Wplb4bM2cFGvMzOCRvtxADCvYy8WO/GIUeSHfFhGa7AWY7IU6tDJyKC+BVwqdzBpQQGzDMunk4rgywNohAWlxG8WbXjqS83fDmbCfEri29XLGfzbquGqPQoafyvkcxdm/poRcGOLkywH4juw3wC+zalKZqJSL5Ggdzsr9N702/lvF889CTO5AeY+tsBzsXeuneBopyBUhvRu2ZMsrVjjgaEqprnlZ6bJVeTxcDOAHgo8m/k8lrk9KLADwghHhQCDEA8BEA123A93qREAK/+L9vx023H3Xixz6964GyClJpgZ+3dVb2e1odWCtXgQmzM6z1DDLneteWGZw8N8i8KB2GYUIhagIYAOe8bhXAv0Czrm21DOr7qtDQgJ5c0/V0pXnSJcQlmUt23sW516alqQ5Hdc0nzvUL9TJq3VUPZiFEDupzzetWRVi7t8zgXD/C+nDkVJqTFNzZAvjrkawU3rWll3hRRevaJ1VUTzu38V637LFVo0ZoErkCZKzAtcdmOtk121KCubx16CmDN10exXSgp7EeBYCPI6nKBjAH4BIA9wJ47oS89wN4VPv9MIB/YHnfS4jodgBHAfxrIcRdti8jousBXA8AF1/MP8eICJ+88zHMdUP0OgFmu3JymCIXfOSioVGl7IIFZjshdiz0AMh6hpV+vtyfmyqqNlBH4eaOgiYlxDvnpeWz0rd7UVwoZNus3FKued26FwVI63plEGFBE2I1sc0XP+513Nbe7i2ZtbdiORx9lKYZwDd5q2s+b+sMwoDkcx7kFZfizT4ctbbZzj3WDbFjXu6xE+f66EfxRDCMPesp/1mZ8YaU9+kVexyMO49C7x7rSv/ODuZkj60OsNqPsC8JMgP+1ej5rCd7TGi2G6AXdnD/4+fSMbB5L4rPW49FAbY9pmIUDXkUQogrhRBXJf8ug/QEvrwBvG0+l3nnbgXwNCHE1QB+F8DHStZ5gxDigBDiwJ49e7wWtGOhh9Orw0LeM6Dw+mobWgiRS+PrOqy9fjTCTDfEjnmZmnpqZYg1S7omwK+j6OUOKUfOdTfA4nwXS6vDQhsNxdsbenLke6sNvW+7tPZsXhTAKz4rQE8OCEcpzcX5Hs6sD3Fu3ZbpxVeandSTKbf25noS6ju9Oix0UZXrr34w6wOT5GcdAfwoTpS13GOPLa8DcFwzG+rL5nUXoRD5+0wnwI6FLk6vuj0430aIripldb/1PebMJvRohFi2bn2PLa0OrKn23Er4XO3ImCSRTTPhTghxK2RdxaR0GMBF2u8XQnoNOq8zQohzyc83A+gS0e4N4G2lxfkeltaGhZxrgIcf6w3EgPJ0zdlukFp7x5bXABSbEQKM9gqWIfJlga8d8z2cXh1YA/g+M7N7xoZ2Yalpqmh6MBfvNze4mmXDBPb5CNEoVZpCAI+dKSpNn/hIETN3Z6TIg7mouBTvSQL4rhjFTCfAYrLHjiwV99gkMEw6r9tMCdb2WCZXco/NdvJKk58qamQAWXgTSQ8OkOnIxTYazLYlhZG57o7QUqa7WBmMcCYZH2A3RqrGR/K1I4CtjmK6WU9joSejQjsAcA2A4463c+gbAC4joksAHIFsXf5/G7zPB/C4EEIQ0YsS/ic3gLeVpLU3wHw3LFp7DCw1a+KVbylRLD6Timv7nLT2ji5ZrD1ulbLWQAxI5nW7inM6ieJaG2rWnp4Nw5+ZndWOlAezt8x2sNALpTdjUZqcjCvTi+qGlKt6V7Q2iFNlDWT3ezIYJi4cjqYCUDj1TEdZmkOEARW8KFfHXTvf5HDMzcx2Ka6wcM0bAW/mei45sttmu9KLUs95rhsakK5Pqmj5wbyWHI7b5rogQrK/iwF8zjAy9Uz1uhV748kYsx3L/bZWwvOhp54TbivGQjaSqsQotmo/R5Axi7+alLEQIiKitwP4FIAQwAeEEHcR0U8mf38fgDcC+JdEFAFYA/BmUTWnzIN2zHfxnRMrWJzvWay96lCI3kBM/9+WnTHXzWIUmUdRtD6qBlcHI9OjKCofZeHO9aTiGkRybnevE6TWpeJdlS8grS49JRiwbOhItrgOA0rdc1mNbuL11SEJE3rqhkEKK+nU12ABILvfZpM6gKc0O5bnnOMbZfDDjvkujiytY75XNEY4gd3UqtcyrlwFd3NajCK7ZlvWU3UvqhNQavTY6lbUQa14LyVxGds1c+eymzEhG+w11w0RBoTtSVbf+jC2xISq9/UaGNCTrW5FBfCVXAHjZLqqN6PBmy5IN2o4PRbA3UKIv9RfIKI3AfhLx/srUwIn3Wy89j7t5/cCeO+kfKrSYgLD7B3MFGIUnMBu6qZ2ipZmT0P7FPS00AvRDQlHE1hgwQILVFYgUX5DSwXi8Ci6IXYk/fCOLq1hwSLEQsjurLoV6OQd51tAy9eKvGcS9zjFroejXC2D5M0P7OqQhGv+hx7YVfd7kkp4ezDbDfUtzvdw19EzAHrpOhR1Qsr1ChrHV+fZLUnX3L2lo1m4bsXlY+GqdRcKwLQsnMX5LmIBHD+7jnnjOXeZbcaHo3zBHWDH65XC3DHfS+Mytv1dXa5ssb/yAD4Ah0wnxkjVPRbH2JJ2vXUliSTQU1PpsZDT7aq89l1Pi/NdnF2PcHa9GGjk4Mcp/BOMqSlIFBcRYftcD0dsbqpHHYVqIAa4rL08FAIgsXKLFpd+PePIDOADtpqCOC/EZ/oQApZgNj+wW9ZeQW+apgK7R2zQk0fygB4P0tejKBPiIIU3bcFsXowiDz11QrLO61ZKU/4LtD02SYwiU9aA/WA2D0cg2WOG58hPwc4X3Mn1FGNCao9tn+ta5Up9nluf1NHhtsLhmAXwF809Zu3fxkjBNuE2R63OTN0xCiJ6NYBrAewnovdof9oGPDkn3GXu+Tqeed6W3N84WOogDShncQLArkB2LSil2bVbe0z8eGBYe11L1pMe+FICdXRpDXuS4J8vbx16cs3r7ifBPkAK8R2HlwHkMXPJmx+jyHWudWaFBFicMzyKbhE/5ihNdT3jAvizCcy4PoxxenU4keIyoScdhgmD7HuVMQLI/W3zovgxivwe61kOZj2Av0PzZi7ZvZB7H0euZDZhlgGkYFzbIaUKGXfMd3HrI0sAUISeGChBAXqyxGXyAfzsmgup9twYRSRyBxRQPGRUAF8v4NxIKvvWowAOAlgHcIv27yYAPzyV1TRM6uEur1mEOOQLca+Tt3xs2RlKyeyY72G5JEOicgFYlGUeKd4FzNzIegIc18zlbYOeLFiqco/z1zxJjMIIrlpwb11Zb53tICB5zfpIUMmXmTxgyXoqHlJZjru+x+xelH/Wk4u32mOL2v22FnV6ZHoBSjbclcKLZXsszLr1juer6jfMrKcib/1wtMmV/Hz1GEUx66m4P/XnnJcru6deOf07ji1yVYw7znSCSh2PfcjpUQghbgdwOxF9WAjxpPQgTNIxY6viqpwhYUBPJdkZakMrBSJ5+7eUkN01s81iaz2yljsoMr62lOCqvFXtiD4zGygejmsDXYg13hsR2NWzzBwBfGXdLSaFhja++neOo8FIpM/ZWXAXyVkIYUDGHjN4W+JJLtILK4FypTnTKd7vSWpH9K61ag2uwspZI4PQZYzo3ZadfGPTc3QkDxiHoyLrHpsEenJmegWY74Vpd9uiXE1Q1FnhcJwGlUFPfyGE+FEA3ySiwhUJIa6a2qoaosUNUlwm9OS29kbahtZ5W+oovAONtvTYTGludygP9dmqvAu1Iy6PwiHEJm+ZUsxLHsgF8Es8Csm7i1MrAwtffmBXQSCued2qAh+QKdiKCgkTHoejiV2b+fV9LSaUM0a6+TRogAdv6l6rLZDe1/aYfp0m/KMrzXF6zkzUcMEw65Hs4AqY12yB+iYpuHMdjh0Zd1yc7+KJs32rF2Vbt5N3VAzgm4fj2mA0tUA2UJ719HPJ/7U25GuSctZeYVPZe7vYSG2gKml8Ogxj401ESZCzuqVpxiicgcZOiJmOtPis1eiMoJvzmi2dVLckHVPHHczcWQFlef1m0zSlsF0eBWcsqLpW17xu1bUWMCxci6VZ+ZotdRT664BUvoPReOuaC4VE5h6z9D3S0zW3J/UMQtjlSvKOx1rEytsqJEzYrGurF+XfbSHzWrU95ggo6wez9aDw6vVkypUtgD+d+ARQDj0dS/5/eGrcNxmVKS5O8Vmhd70lO0NvmiZ5l7vIPI9Ch56CtN+MIjPnesd8D6uDNbfSrKBAXLUjNqWZBfDHQX3cuhUNPy4JZuu8bQFlgNs91kwVdXuOOxZKPDgPj0Jv4QHkn5WpuJTS7ATZSFBAT8Fm1FEUsp7sRYazST3DttmuPS7D8OBsrVrk64Z1nfPUN06u8rUjFrjNmAmheE8iV4C9dsSWgt0U9HQW+d5LlPxOAIQQYtvUVtUQbZnppEpmkhjF0AU9aQ83y7nOQ0+BJXOhw8BSC9CTVWmaG7qLI0trTsunihBHBdd8fADfFZcBeFCfybvbscQojKZpSoiL6ZoeqYud/MFstXAV37kSxcWwcM3D0db3SK/A13nbgugAb3BRMbPOldefPeuyhIkqvJ3Qk4X3uNif4s0xCPJy5Q7gmwdzUZcwEya0+I2rI3RjB4UQYqvrb09WUrjiiXNF7JoVXDVaeNhaO5iKS99UZuYCx7rW0wcVb7PvUXFDOxQII0ZRLACzY+aqUljnCxRhmA4nRjEyakeC4rxus8VBer8tBWCAf0zIdVAovnO9EDOdAP0ozhVhqXVzAspAMbNO561X4AOZ0jT5KniTczCbmXW2OEE3pHQPLc738PDJVWvHA6CiRxHnDTAX1m9mPSmypiNzPAojgD9uHKlbrvxrdQAZEzLjYHoAfxpU6ZuJ6Boi+lki+hkiesHUVrMJyOUuqu6cldL4jFQ6W2uHfgHPtPNVvHnFOdmG7llqCsycaxXQNq1rToyiOAHMlQFU3dqr7JqP4sLhCOSVT9GjUAezI9OLczDr0JMjbVIXYhfsFTLG7ZrQk81rdSkuk6/kXT0GZyrNbsdecKcHV9XBbKtl0K9nHF9AayefxihsSrO4x2wK26foTfE24wR9w1PP5MrhRVXOJswbf9baqGi6HsXYgyIZP/pBALsA7AbwJ0T0H6a2ooZJBTlNq0s93Cr6I93QHXfQzaW4zDYDAD9VtNBewaKs9ZxrJcTFNhrVN3RhAliFTK9ts12oOiR9JKjizbGue8Y1m7zNGEV6MBcOR7vycdFwFKfPGXBUwhtCvDhvD6Tb2q24qAg92faYEcB38AX4lfB5C9eWZZYF8AFdrvzhTVt7GrUeRa4Afieg3B4BuC08REGuygL4QHYw2/Y2UM1rzeRK92bsBaVNZT0peguAFwgh1gGAiP4z5JyI35jaqhqksQGoOF/5aqMUejJaeOSsvcgeXDUtLkA1IONAT+PbK+iKy+Uic1JFbbUMaj2KhBA53kHStG1pbViIy3SZyQNdw4tSryteLiF2pS5ylGbPtPYsrR1UAB/QvZmiMcKNy+gzswHzcLQHV20eBRfeLBoj7liUznuSLLMC9GSpKegbz1n1UVOtcnRideuNiwF8VShowpsmnFyUKwbcZsiV/Nl+MDcNPT0EYFb7fQbAt6eymk1AOxyQBMddLEJPbmtv1rD2rLAAs53F+E2Vtz5cCiQdsOIBPdn6Hg1HArFA4ZAyR4JK3tW7ig5N6MmSDWM2TRv7nCvWjsQCeejJ0dqhCvTEU9ZG1pPyhLR4lAlvuuAftW5eI8S8hVtM17QbI67ALkeubDOzU75GEF3GHYvdoAGw085Ng2Ac7yxhwm10juUb5eOdgD3LrLFgtkZ9AHcR0Wcgs55+CMCXVf8nIcTPTm11DZBq+T1J8ZkLerJbe5KPqmewW3u8oFt+Q9vc1Lz1kdYUuGIUHtCTLTtDWfW697B9voszlpbgvFRRE3oqWppm07TtDmuPE6Mwn7Na9zgPzm1dB5W79Wa8E7xe9T3S95hhXau5J6bikrz9jZGerRLejMssOA5mRmDXLHqzFdzZJr3tmO9aocROSFiPqkJPxaQFxVt1hF4fjtAJtAC+o1aHZXQatSOA3G+bJj1Wo48m/xR9fjpL2Ry0fczDrZadYUBPFix1zcDMAbmxbINHONPerO0VSlqHAG4h9lKaWvGZOa97fWATYjmE3iR+XCbftgTIK00zgD+ujqJKjMKsjpa8LWmTRjGUy3vUW7PPjIM3R/mD2QbDmNBTJwywdbbjhJ44EwXNFOxxXuvGyJU96ylv1Rf32OJcD+f6RWOElellQk8KJYgEkCRWFeXK7kVNIlcACnIFqJjQ9KCnsQeFEOKDU+O+CenlzzkPj55axa6FfCdVnrtoQE8W5WPb0G/73qfjQjUgQiNuBpBp+disDz3QeM3FO/Daqy/A1Rcu5t7HSRUdGtCT+tmuuDLe//iaC3FkabXwfTZPyMnbgJ5sGVdq6pmCuPZum8VbXnQRvv/y/Hx1Towi7bcU5A8pc91me4Uffu75WO1HxZRgDwWSFdwVlWZa9Kbx/hff9ww8b3+xBIrbrbcAPVmK3vSEkJc8Yxded/UFePb5+ax7VozChJ4sKcE2A+xHX3gRVgc2r7U63DawdDwAzLqVvEHw9F0LeMM1+/G9l+7KfZers7KNrNCTIVdpAL/JYDYRvQbArwN4WvL+J23BHQA8+/xt+M//+KrC67b0Qxepw0RBErapVGYWDgD8P//oUuv3cYS4mONetPb6wzjFUQEJhfzuW4pZz5wYhbJwipamO4APAD9y1T7r94WWVhhO3oXgqj3LTD+gwoDwn95QfM6sjBQD/lG89boVswIfAJ5/0SKef9HixLxJrx2xXbNl6tnPveIy6/fxZjMUlaY9gJ+957xts3iPZY+5iuZcfPXP2OZ1pzMhtGt+4/dcaP0+VqNPA9K1xVb6WgNGQCYavPtHn1/4LpbRaXhRirf+nM0A/jSoCvT02wDeAODQNMeQbnZiFQallqYRzM5BIcmGrmAF8Ka9md1ji/O616NRYbqajXwC+LnsI2NetxnAH8fbu22JNZhdLX2Qc81pimqQV5r6vG6zAn/jeAt0g0BrKWHD6/PQUxlxp70V9pgl62mmguJiKc20hYeRjqx9ts/YY5MmiehrAlQAf2OfsxV6MupWsrGzzWY9PQrgzmkcEkT0KiK6l4geIKJ3WP5ORPSe5O93ENE1G72GqsTJhnF1j9UzUjgzbruT5Lg7agoqbegJ0mOBopVqg57KePvXjhStvapN01hQSNqYL2/tjYPbXGSr4HfzNuAfx+FYmTfDuja7x3ZCslbgcw7mKs96YEC6gGrOV+61uojTrbcIPY33Wl3E6dZr1o6oddsC+FUOZl+q4lH8IoCbiegLkBlQAAAhxLsnYUxEIYDfg8yiOgzgG0R0kxDibu1trwZwWfLvHwD4g+T/2okz3EV2e8waiNkUgNr0VQJQvKpZOwwjO35m76niyXCGwFuhJ6OATAlVlWu2pQA6eY/yswxs+PEwiitds+oAW+VgjmzWnoHXp9dcYfIYr7dWnIO8bBCOLdju5G2phXDyNqEnS9+jwUhU3tvmusv4AsU9lpcr+Z7KnnrljrnFQlZ9TYC835znXKW40go9GcV+nD3mS1W++V0AViFrKbZq/yalFwF4QAjxoBBiAOAjAK4z3nMdgA8JSV8DsEhEdlB7ysQK7FraOqjX9fcAedjCRXzrumhp6hbfwIAOXJTBbdUD+GbnWv2a1Rr04K+bt79HYZvXbUJy43hX8hzT63HXrZgdT8fxBapDT2bXWp2f+jkMaGyqreRdDd4cxQKjuJhZFydpvTrvbgW+rMCuBXoyC0rNduBlxGr0WZCrokcxiGLWc67SrsUM4KufffeYL1XxKHYKIV45Bd77IWEtRYdR9BZs79kP4Jj5ZUR0PYDrAeDiiy/e0IUCvBiFbAucV5iA3dqrsqGlEI8qrbOQ494pZgCZtRYumhhLNbIzbJu+jLf3sCYLfGRmg43lXemakxRVHXoysrVs0IGTL8sYyff0skEhpqdVyrviwWx/zioGl6X1ms/ERZwW5wPL/umZe8yyPidvlgEmDLkqysZwFBdSYW3E6pg7Ku4fMyakvKhexWftQ1Uk57NENI2DwnZV5p2r8h75ohA3CCEOCCEO7Nmzx/aWiYjzcKM4LvT7DygvxGbWShlVjVGoBmJmnMBctwkduIgVo7BmPeWtvbQor4p7zhDiyFCItqwnMxusnHe19iFW6MnIMrNBB06+DA+uCD3ZoRDW4cgYUDWuSjkaidz6yvia6+bwNivhzYFOZcTp1ls0Rix7LK52MHO69dqznsjgW/1w9KUq3/zTAD5JRGtEdIaIzhLRmQ3gfRjARdrvFwI46vGeWsiW4uqiQVQUULPNgZm1UkZVp71lFu4YSKIy9FQ9RmEPNOaVj5n7X847y9aqwtusFAaK1l5V6Kmq0rRZuKa1x7FwWQkTDsVlWteVD4qKMQozUcPGWwiZ118FenLNLanMO8wPEMoy0Srusap1FFFseI7Fw7Eq9CR5V2sA6dxjcXGPTRN6GvvNQoitQohACDEnhNiW/L4RNRTfAHAZEV1CRD0AbwZwk/GemwC8Ncl+ejGAZTV5r27iZMPYsh/Mxn4m5llGVesobC0ybNaembXi5JtOexu/oc0WGXLdeWvPtundvKt7M2b7AhdeX1VpVrX2bJlrZiU8B3rixCjM4q5sZnYe9qq6x6rGKGyZVOYeswWdXcQ5HM0WGUAxkM46mBltxteNGglbOnJVSBdA5aFJtvtt7rFBusemBz1ViVGAiHZAZh6lzQGFEF+chLEQIiKitwP4FIAQwAeEEHcR0U8mf38fgJsBXAvgAciA+o9PwnMS4kylWk+qgHWSU9fy0FMV91jxrsoXMIW4aGlyoacqQmy2yJC8aSLoSX1mXAKLmfpqa+FhQnJlZGsVbuVrqVMoBBoZ0BMnsGumn9rmdQ/j6odj1VTR0j2WXCsH/uHEKKwGmNH3iMOb009Mn6MC2OOOVaEnxbuaXNn3WJ5v9ew2Xxr7zUT0LwB8EVKh/1ry/zs3grkQ4mYhxOVCiEuFEO9KXntfckggyXb66eTvVwohDm4EXx9KYRjDuo5GMd7zt/fnesmYmwqQyn6Qs+rzWStlZKuuBoBDh5dx421H0t/7lpx9s3eRLWuljC9gV1z/8+8ewkMnVtLfzRkXQLHvEQd6cvE+tryG93/pwRwkZSpNNwxTPevJpkA+eecxfOOhUzm+AAzeeQXACeC7lOb6cITf/ux9KT/1WmGPGZ4n53B0des9+NAp3Hwoc+Jth2Ou7xF42W2uuddCCLz/Sw/i2PJaxttS0CblSod0ebxtw8gePrmCD/3dQ+nvcSwwMIwRWzbhkAE9uYaR3XjbEdxxeCn93ea1TpJZ50tVvvnnALwQwMNCiB8A8AIAx6e2ok1KrtkMdx09g3d/5j58/t4n0tdsBW2FDCAja6WMXIrrQ3/3EH71prtyfAHT+shXvrKyQhzwz/pwhF++8S7871sO514rHo55xZVCT5UsTQV75XnffOgx/MbH78HjZ2RJjznjAtDjSZMEdov3+zc/eS/+8AtZh31bMZ3ZrtuWtVLG11w3ANzy8Gn89mfvx989eDLHu7DHjNqTYcSDN2177I++/B286+P3ZHyjYnGXWbeS1m9U8hztnvqplQF+4+P34MbbspCkCf8o3r4xIbXHzMv+2DeP4lduvCs1/vpR8TnbPAqzKK+ct/1+/8bH78EHvvyd9Hcr9GTAhHVAT1Wual0bWjQjhPgWgGdNbUWblFwxipWk2djp1WH6Wr+CtceCnhwxitXBCMtrw3TDrdksXCMDyJY54uTrmBWgms2dXs26vtoqcc2+Rzze9tYOq4nwLq1J3tmMi2IwO2ftMYXYlrSwMoiwpD1n28HcC7N53QAPenLuseSal3XeUbFFholdRwzoKXTAmyvJHkv5Wr2o/D6JGIej65pXLXvMNhfanNcdjQTCgCplE7panKsGgqdXJO/smotJIjnecXXjz5WCvdqPcrrEnHGheA+jPF+gYegJwGEiWgTwMQCfIaIb0VDmUZPkilEopbmsbeg1i9IsFsmISu6x4m0X4ghCAGfX5cayWbhmoNHW5dVFaqaECYWow3FJUyBrFiE253WnvBlCbF73ilIgK8OEry3YNxn0ZBs1CQCr/VFOcZXxVutm1Y44YhSKT+5gHtj3mGnhVoUjXKmia4MI5/pReuCXea1qf/tAjOYeW03lSt9jRQPM7Hs0HMUMuXLtseRgXnPvMdu8bh70VPQohBBYHY4MuSoG8M153Zui4E4I8frkx3cS0ecAbAfwyamtaJOSK0aRKi7DChgLCzCzcGz48arGe3G+5xDivLU3ZOZcdwIqpMeqw3HJ9ChsXpRxzVVrR1ztQ9bUIZXwVk3gZmzQk0ftiOLtFGLDcwTyAXwzCO+TAVQ4mPuWPWbpXWUG4SMmvGn1ohLeS2sDnLd11mGM5L1WDvSUyZXLUy/fY4W6FUa9jIu36c24Mo/kZ/XkAc4es8+UEKKqXOWz24DmoaeUhBBfEELclLTceEqRK0axVnFDFx7uKK4kSIA7O8OEgOx4pokfV4d/ADuWumpY9Yp3AQox2yvEnNoRe4xi1TiYs86ZmuKyzP+oWjsieRet68EoxigWWFobprCSUta5AH5gV5qcuhUTklg1DkdA3u/CPAtL3UrlhAkHvKms6aX0fsvf50oOZk5cpmt4YClfqwHmuGYzFsWQqyq8rQF8S+0IP+5YDnkp3na4TRTgzaahp5YwHks1seviQREU0jUru8guKMRQIOtRcUObfY840BMA6wD6VYtHYc64kLzNmoLq8I8ZhE95DzMLF7B3C7W1gK5aO6I+b1rXSnmMYoGzSczAauEaUJ+tENHN1wE9GXvMFsAHitlxg4rV0fKzdngz22NueNOsUuZAT+otbrkaozQtMAxHriRvO+yVyVVJAF/LJhSiOvxji1EovmfWo3T/mTMubLwzmW4PisbJFdi1bmhLemzXzHFn9x4qwgKmAilzkZUgcsv9Q0tR0tqwGKNYj0bFMZeFdM3q1p7rYHZesyZMtk6/HOjJ5lGo5wwASysZb1sAX+fNgZ6cxogRo7AF8BWPSaCncnjT9FotmXVKcanMowrP2lb/IfnmDyjAHsAvFrLyIEZ93Ypce2zOFgeL+c9Zft4yCVFLf1Zz5O1yleedeXCbBHp6KpNrRKa5qWw514C9tUNV6CkMit05AV2BSN59y0Fh4scDRqUwYE8VVcpjdTBKp2vZlGax+IxXOwK4YZgsI6Vo4RKR9GZifu2I5F20rvWDIlOatuecj61woCdXjKKguByzTGx1K5z7XQZvmtZ1WcEdF960BXb1a1YQi/Rax18zR66AIvS0OszDybb6pILnmKbl+lfCV99jeWiVG3f0IWcwm4jOwt6Aj/AkHoXqIlcBmGlx2XKuASkMusXAy3pKNrQQCLQ+iaY3Y8vO6BqeEKdrLZBgqQ4vSvIeYu+20LmhIyNOUN3CLceulTdjs3AB5AYIcXLrJW839GTythVWAplHwWlb4g6u5lOCXYNqrAV3VZWmxcIdRHH6mgk92QL4ygjhQE/yfW6lORjFWB2MsDDTsdYndcJ8ISsPeqoGJ1u9KBNuYzxnQB3Mdi9K8s6edfFwzHvMnDYxvuQ8KIQQGzFz4klDLutDwTDLa0PEsbDmXAOqkZcn9KQF/JRuGCWeC5C3PkzeZnYGF3qyCfGaYfns3TZbCTNnBRqdOe6GheuY4qa3D+HUb6jPFpWHRYijuAiFdPzrVlyB3fSaV5TnWHzOgFReet0KJyW4a/Gi8s8581ptFfiApaiTYdkX5Sq/x7KDwlJwl5MrXuYR4PbgTptelKawzXndbOjJEqPI3W8N3jRbl5vdFoajGEHFbEJfqnwEEdF5RHSx+je1FW1SMh+OIiXEsQDOrkdOWMDcGD7ZGbrSzSuubFOZOdcdAwphQ0+WGIXpUSjetgB+PjuD70W5PTgFwxQD+EAe9uIG8K2ZXrriWtGtPVNZT1a3ArjjMmf7EYaj2Hk4WmNCFaEnFZfR21koCAYwLFzL3gZ0r5UJPVniI9b9bYF0zXG7fnI1zqNwoQRZIN3W2baUt9UYsXmttgC+UbfCKKz0pbHfTkSvI6L7AXwHwBcAPATgE1Nd1SYkV4zCxBVdm0oWBhmWT0WlafNm1qzKuhhEz1pumzCMf6romtO6NgvujLRJS/v1Mr5y3XZL04QFzMwQPW2SCz2N86KUENsr8O1QH6v4rKA0M97La0P3Hivg9SI3z7sSb+267QZBGWbOTwlW7yuLCS2tDjFM0pMLMEzH4rVOIFeAJS7jgDd7GrTKhzfH7DHNmzG91lSmU7mq7kX5UpVv/3UALwZwnxDiEgAvB/CVqa5qE1JI5dYeIA8K9Xux4M7opMqAnmxDaayBL1vTNENxcaGnbhCUxihOrw5TGMydAZQJU9VAoxuGyVKCVZooYPPgMmtvyISezEJBybeoNNesmLlRtxLLArAqtSNOzHyYVyBrDsVlduv1gTcjhzFyWouD2Q4oyW86B/Pp3DWbWU/FwUWcLsFAcdiTCkyf1p6zjbfeMoULPdmGkeleVCrTlgp8czYOB2L0pSpXNRRCnAQQEFEghPgcgOdPdVWbkExMUtHqIMJCkr62tDq05lwDCQzjmeMeWlJzVeXqQi/MWdcFy9rocsmFnqRHUaxGV9d8enWQZj65IImBJkxVoadsaFLGexQLrA9jLPRCRLHAuX6UpS4aKYQ9rbWDD/TkilEs9MJcTMgsAEtbO2h1K5xsK8BmjETa/R5a0zXV532r/21QnzoczT1mK3qTn/Uv6rQdzJlcDTKDwJKCrWcEDnxSsHOQbnbNZ9aH6Z4DUBgdoBeUcqEn2zCyFY336TFwG6DL1SaAngAsEdEWyFbjHyai3wEQjfnMk5JshW+rgxEuWJwDILNSbHn9AHLpmgDPRbY1yFMW1wWLc1o7Czcs4Jv1ZM33HkTYuaWHXifA8qoOhbh4ZzguV3Hp3oyy7NL7rfMuCDF5Zz3ZUkVXtft9uiwuYyhcbqsWwB7MVtd8emXAiFFwBhcV77c6HOU1lwTwLcFVtZ4q5MLr92nP2RnAVwezFkjny1XRi7pgcQ5CAGfWhtYAvuQ9wR6zypWc6bJ3+2za46qsqDNKD6nNAT1dB2ANwP8L2ePp2wBeO81FbVaypbStDXUhHloHjQBF/JgDPdka5OmKa2UwwiCKrbCAmtedFQZtjNKc73awY76bxGXcef2SJ19p2qxrXXEB6qAoBvCBJNBoBFc5TQFdAc7zt8+mDSBdAXzJM4OeOMNs9M8qWssZI0NnAL+nBfBjVTtSMZhtq4TPGSNJ6xJrAL+Tt8xts8TLyLbH1oYRts91U+u6LLtN8hTp/z7ZhIrMPab2t8lX8s4MR37Wk71WZ74bYsd8D6c1aNVpgOmH45ShpypNAVe0Xz84xbVsegqNOAMgH+7522ZBpFxkOQTQipkbFaSc+brqMzpfQFea7g2dU5oJ9MSBQwqKayirRYl6hhCXZ2ewJoCNUVxAljxgF2KCzwwOwGEQDCLMdgPsWujh4ZOrAOwB/EKVMsOLUvBmmUextDrA4nwPwJgAvur/w4U3HcaIMkT6w1HKP+Vr1BSouobqGVf2g3nLTAeL871kbzsyjyztQzgQo/5ZxRfQ99jQGsAH5P1W8A8X3rRleq0NI8z1pAF2ZGk9q8B3xCiy9O/qXWt9qUrW0xuI6H4iWiaiM0R0lojOTHVVm5Sslk9SDLR9ris3VWTHj/W+R0IIDFm964uWj6rfuGC7PJiUwjb5AvkOm9wGYq6mgPO9EIvz3ZwQ264ZyPc9mgSGSYU4veaBNYAveQfaAeVRcGe9Zqm4Tq8Osgp8S6UwYB6O1YXYDOzGscDacIQ9W2fQCQinV4fWCnxAGQTKqmd6UbYYxdC833alWZiZndZRVOdtq2WY64bYsdBNnzNgD+DrvKVcMeHNnFzlr3kp4W2XK62ok+lRlMtVL+ULFONvtm4LmwF6+k0ArxNCbBdCbBNCbJ20KpuIdhLRZ5ID6DPJTG7b+x4iokNEdBsRNTYGVZEZoxBCyGD2TIjFua6EBZw515nyUQ3E2KmisdvyWUqta5vlo21obgWpAz+e73WwONcrD+AbVcpewdUSL0qmihYD+OrzQw3DVddSlbfNIFCH49n1KFWizqaAWnC1Kl+gqEDUvc0O5pKYkG4QpGm5zINZjwkVoD51MOevmYhySQ8bgderauzFuV4iV+7DEdBgGIbStNWtFOVqWOKpU85zBJiZda6DYq6b8gVscmXWrVQ3On2pylU9LoS4Z/zbWPQOAH8rhLgMwN8mv7voB4QQzxdCHNjgNbDJtHz6UYxYyBM/c5Fdlo/EJONYpAqs8lAZS4xCwTD7d2gusiXnWvHOeg9thNKMMN9T1t6wJICfD3LyoCeLF5Vc877FxMJNYkIuj8IMNFYXYnvH3PmexI8B4PEz6wDsrUMA5A5mTvtnc0qdUlzz1j1mqaPQDiigenW0DepbNe53qjQtB7M+klRBT5ziSpt1PWc7HB17TFealTsjW/eYPBwzuZIG2Hi54kJP9kp4KVc9rA1HOJPU6zgD+JrHPG3oaWyMAsBBIvpfkBPu+upFIcRfT8D3OgAvS37+IIDPA/i3E3xfLWSmtKVC3A2xY76L4+f6pcVQgHSNOeMxFV/AEaPYnll7tqZpik9kQE+cwiAbfmxXXA68Ps6UJtejGOYUlxTibbNdbJ3tlAYadYvNJ4Bva28+1+tgcb4LADi2pA4KV467fjhyoKe80lztZ1BmmjwQjRAGVPhe/YBT/3PhTdO6lnGZGQB6TMhyMAdBlq6ZBFer1I4A9lTR1UGE+W6IkMhImLDvsYGH11oWo9i7bRYB6YejzRjJRpL6QE+2avR5fY8t2/dYIUkkqm6A+VKVq9oGYBXAKyGznV4L4DUT8t0rhDgGAMn/5zneJwB8mohuIaLry76QiK4nooNEdPD48eMTLs9OusUGZIprvtfBjoUeTq8MU4yzmHOdKZDUTWXMCgCKeH0vDLBnqxTiU6nStAfdzGD2ZIFdae3tnO8higVOnJVZQFUygLgBfBt+PNcLsXOhlxZiuTJSVG47F3qydetdSxTXzgXpURxdXgNgzzwC8oqLBz0Ze2yo7bH5ZI8NirM/AKm41LxuX+gpbwhFyd6Wiuv0ivt+m5XwnMPR7IMmhIzLKOt6eW2Yzg13N2HMPGbOQDDAHgdbSLzHU2XGiDavmw09lXhROxOvdZwxUmcLjypZTz/u88VE9FkA51v+9EuMr3mpEOIoEZ0HOa/7W0KILzrWeQOAGwDgwIEDwvaeScnEjxUUMtcLsWuhh5MrfWfOtV6lnMI/jOljgJkBFGGuF8p/3RCnzpWk8WmZS9wGYiaWqkaCzvcypXlkSSnN4qwAyZOPpZpdb4E8DLNzoYdTSU2B2TQNyDf240JPusXWS65BZrd1s2s+La+5WHzmXzuSrtsBPe3a0sOtjyxZZxQAeYOC25jPBm+uqoByoriOnxskLfTtmXV6wV1V2AmwxGWSkaBzvQ7meyGEcFvXBaU5YfdYXaZ3LvQSuXJnPa0NfWtHLNXoTrkyY1HFupXGDwoieo/l5WUAB4UQN7o+J4R4Rcl3Pk5E+4QQx4hoH4AnHN9xNPn/CSL6KIAXQRb+NUJmSlteiGewPoxxamVgFSSlIIdxzC96cwR25xNlsWtLDydTa8+F12dZIVwoROerRoLO9zrYtWXMhu4Y1h4n66kEM5/vdrBrYQZHltZAAHYuWIRYy0jxyXoCivGRuV6I3VukB3c0uWZbq2/JM4OebBkzZbxdimvXwkzaJsYWwE/rGbQ4GGdwEZCH+hRm3g0DLM53ccxhEEg+Qd4gqHhAAfnEA0D31MN0jx117DG975EQggX12YaRZTLdSeSqbw3gK97p4ciuo7BXoytdApQYYEbdymaBnmYhW3bcn/y7CsBOAD9BRL/tyfcmAG9Lfn4bgMKBQ0QLRLRV/QwJfd3pyW9DyLR8Vg3rA5AP15V5BEgh4gyfV3wBw9obZlblroUeHj+zbs25lry1jJSo+vB5yTuwe1HdMMWuUyF2tA/R+x5xRkUCprUnFYjy4E4lQmwLNNrgNk4AX/LOH1J6MPuI45pt1h4HeirEKAwvahQLPH5m3RknUDy50JML3lTGyM6FntMgAPJBeK6FW1WuJG+3R5Eejmy50p7zMEKvEyAMCLsWZnAy8VpdcqX2Fhd6ssObI8x1O9i1YByOBblS8U4/48+HqgSznwngB4UQEQAQ0R8A+DSAHwJwyJPvfwbwF0T0EwAeAfCm5LsvAPB+IcS1APYC+GgC4XQA/JkQ4pOe/DaETHdxTcOPd2uWjx3P1GIUXOjJFmjsR5pHMYMHj58DYLf29OEuPopLV5gruuIqWHuOAH4Uew2fB/LpmisDWYXd6wTYuUVCTyGRPYCvwW0DJvRkO5hXEry+1wmwdbbjtHBNKIQLPZkehR4H063rhZmi6OqFWD4zIYC8da28KADYvTDjfM5A3vOUxaSMPWbEKFQsat7w4KwBfOvhOEHtSN/w1M+p+Jvd+BsaKcFcY0QNIxNCJHssxPa5LsKAnHssTcGO/A5mH6pyUOwHsAAJNyH5+QIhxIiI+u6PuSlpMvhyy+tHAVyb/PwggKt9vn9aVGbtAWpDr+OS3QuFz3YtHgW3SnlkWrhd+fh2LvTw5fvt6ZoAcvO6uQ3EzBbQplUPyGsGLAF8DYbxGT6vPpvxzntRw5HAiXMD+zV3tKynVIirp8cC+SyznNLcMpPGKNyzGfjV6ECx1cuaDm8uZHvsygu3O9cdadZ11b5H1hjFMMJ5W2Vq7M6FHm57dAmAY4+FgbdHMc6LAuQ1uwL4gDzgsiJDXuyv4EV1My9qeW2IbkiO2B/lstt4vDMPrhvKVHuRpNoHAWHHfC+Vq2q1I81DT78J4DYi+mMi+hMA3wTw3xI46LPTXNxmIzOlbTUHw8gNPRi58/oBhR8zc9wt6bFrBvSkrGZXvrdvA7EifpxhuLPdEAu9EIMEkw4MpaQfjlxBMou4JO8oZ+0B6n7bA7uZ4lK8mdaeqklIRoLqCkTdb1vxmd4AcqNgGF1puvZYFgfz9yiGhjGi9tjOLdo1W1OwM29beo68a7bFKOa6MtOLyP2c9b5H7NoRyzAy2UYjkyv1d7dcZZ6jfI23x9Rzyhudpkw7PAqthUfjHoUQ4o+I6GbIQDIB+PcqyAzg30xzcZuNuiGlTf+AvLWnZ6G40gcBuaEya2+CGMVghP2LeaUJFLNwFG9V4cttIGbGKMwNvXNLDyun1pwtDgBp7XGHz0veJgyTZTjtTKxrwGXh6gVgfsFsdUjpAWXJO7vfVkgiyFfCs5MHHCnBu7XnbMXMA92j4NaOJBau4UWpw3F37ppdMSEt64njRTniYPO9EGFiXbuSRPR53ek1V/SirDEKbY+poDLgkisD0g14tSOSt0j4ZgF8IL/HCq1xjCA8F970Iee3E9Gzk/+vAbAPwKOQ8YTzk9eeclTIcdesa2lhy9vpalIHSI8iYipN24AVHQrJK01HBakn9GTOJDaVpoJDXAFOIIHbmK1DACnwpuJSQrNrYYzStPY94qWKqs/ptQwAxitsPZDOhJ7MqvDVQYQwIPTCADsqKGsgH9idJFXUDGYrMi1coJiCzfKiwqJBABSVppWv5lGwoSdHC4+qBoEuG9zCSnMYWSZX6pByP2vVPFI/mJvsHvuvAFwP4L9b/iYA/OBUVrSJyQzsrg0iEGWbSKVsuqxMQFp7XBfZPmAlwoJ1U9l4kzf05KpGT3knwlSquGLBhp5S3oYQL8wUvaiyFtAqiM6pHTE7qabXPGNTIK5UUf8MoEK2VTdMIa3tc10srw1LlaYezOYWn5lGwfxM0bp2PeuBZ3C1KFfJQTGT7bEH4PKiskOdK1e2YWRrg1FqCOwes8f0ed3Squd56mrdQL7QD8jkyhbAB/KB9EahJyHE9cn/PzDVFXwXkU1pKiEGpPI64sh60oU4YkJPLstnvmexrm28O6ZHwc16kgqXiAouslLYNiHW53VzMVygmA2zOhxh+5ysEs4pa0vxWVe7Zz61I0AGC+gpwUDmRQHFAL5ctxbkZMxHULz1OJjuOUreMsBqhfq0ok6udW1CIcqgmbd4cC7eKiMuGgnrQVbG2zYwKeWd7DFbkWE+DsaDngBVXZ3nPd+bB1AB3uyQt6duHsyrpqeeHMy2AD6QzeuWhlD1tHNfKoOeXkhE52u/v5WIbiSi9xDRzqmuapNS18gAUv1/FKXWtaPfEiA3RhZo9MMzR7FAP4oLm8rJO8hXKfMsXPleddk6Zg5kwlRWOxLp6ZoTBHZVGw1AzmLYmlicNmHK8fbwooCiEM8bHtyMJYAPIDev26d7rMsg0HmXe3CZ11o9VdSwcId2xeXibU5747fwyMtVjnfJHssliTDb0wBqj9kP5sW5LtTtc6Vg5/st8fdYaowY8ObOEk8dUMaIVjvSYNbTHwIYAAARfT9k7cOHINNkb5jqqjYp2YrPdCGuojT14e3cVLoUzxwWMyQUOfO90xnOTAs3dCnNPG9r0VsiDAOPrCcgn36oeOfud4nS1JvFcQP4hRiFlhIMjBfirh6jYGYA6RlqknfeGMl42+MEgAygs6Gn0O5FmYrLxbuTq1vhK01TrgLKvLWdJQaYHpfhQk/q8+YhpfZYEFDps1ap43GSZVbV8NPXbcKbplw5D4pABtK5XQd8qezbQyHEqeTnHwNwgxDir4QQvwxZhPeUo05AhW6muuLaXWbtaSmu3tBTmkqnFFcn5aewTZfS1Ks4uQV3knd+QyuhLbNwdSjEB3oyg5w2GGY875gNC5gxirWCELsNAsU7SlqdcOaOSN5m1lNkeBQKknArTZkw4RfYHToMgh3zXVCJdZ2H2/jwppmWO9/rpJBumVzplfBpkggLeioaI/k9Ju93aUwojmXSQkV5lnztMYoU3tzi5it5Jx5F2nWgwYOCiJQp83IA/0f7W5VCvScddcwsHGMM584S67qn9T3yhZ6UAlkfyM/rWLGyrl0bWocFuDnuOd5JPykFuWTWXvE79XndPtCTiR+vGRP8yj24bN0+tSOADguYQjwOFghyAWV+Cw8DCunyDsdclTK3Et44HBWfThhgMYkPOQP4sR/01AkCCK2dhdmhdmeZstb6HqVp5wyPQs9kHMXSoJmzyHRpJmPSEXoSeHO9AOm6vSjJW6476zrQHPT05wC+QEQ3AlgD8CUAIKJnIqvSfkqR6aaqTrGKymABPXjFVZrmgJW+miiX462UZnl2Bhd6KvA2JsqpFgvjlKYP9GQbFKUri2qWJh96Mj24fpQvfFL9ntxCTLkCMN7gojz01I/iyntMV1xc3npMR/JV09WKvMcF8IfcAL4Bw/SHrmsuqR2J/eJgMu6YL5rT9/fOkmQN3SvgQk9mJbyqz1LXne1t+7WoupW6oKeyrKd3EdHfQtZQfFoIoXZvAOBnprqqTUomLDAYxdii9dzZXQILqAfpU3CnPGlTcen48+4xgfSsMR8/uKrzVlXYisoUF5C1Dxn6QE9axe4oaQPSCy3WXhkMk+C4kyiugdHwrdcJsG224xbiBM7gwj/pZ/U9FuXvdwZJlCnNSWoKDKUZ5nk/enrNHsAvpAR77LE4Rg9yAJJ+UOwuUdZpLCri93pSvPUUV8AhVyUH82AkoaeqvdsUXyCrrk4P9oT3tlnZ78kZB0uMv7qgp1IISQjxNctr901vOZub9IpbIBHi+YqWj6Z8uNATEeUUiM1a3LnQQ0B2RZwrAGNCT2Zqbt8Y7Tk+OyPIBRo5G1rvM5XGOLR7Vm5da8kDES99UMUoirzzStOmrBXvgQf8I3nnA7sDA8Yph56U4pJ7jFi1I8bhaAkM71roOdM1u0F+j/mliqr7Pcp9vuw5661euN1jFe90b4+kF6XDOKWeulbsxx55a+wxZfwp41H1eyrLesonxjRXcNeSQWbzMrPv/tN2zWPHfBeX7nE3BdTbK3AtEMXbNiHvygu349CRZWsLgW4YJIFVaYH4eBQpb2OC2Gw3xLPP34rLztti/byaK5yN5vTDj22H4/P2b8fifBfnbZu18M0sNu7w+YLisvC+6sLt2DprF59uGGB1EGkBfK7iyoyRoeFRPPO8Ldg628EzShpPqhoIr7iMpuyB/DVfeeF2nDhn7wOaj4PxrOsi7/weW5zv4Wm75vFM5x6jXOzPd2iS7aC58sJtOG/rTAo35vnmoSfOAWXGKJQXpntrz79oOy4dJ1dNQ08tFcnMwjFhgcX5Hr75K6+0flbPzuA2qZPvtShNjfdbX/J0vPUlT3d+VvHmt/DIZwANolFB2X/y57+/5POUPxxZPYBs+HHG+8XP2IXbHPc7B8Mwh89nsFWet37dv/PmF5R+PspVo/PSJs1BUfpz3rttFofe+cNj1i0PZk72T8GjsBgjP/WyZ+KnXmZPeOwkigsAG68PC3ssf81hQPjCv3HX/XaDfPKA7xhW2zX/4LP34uu/tNfx2Sw1dxgLLHi08NC9VlOu3v+2F5Z+Xs96ajI9tiWDrPhx5WChtqlGvOHzgMJS3Ypr3LqBpMOmb3aGxpvl2ieKj1s7oni7MNwqfIHkYGa2YbZ5FKa1V/55f8VlZnqZUF8Z5dI1RzEr+yeDN91xsHLe+cFFfvCmtseYB7vP4CLAEaMI7XBPcd2a8ectV/bDsQpv32abPtQeFAzqBBmEAxStvdLPGjEKjmsueVOptVfOO9nQkWA3ELMpTc6G7gYSr/eBnmwxiqq8e6kXxYdhbDEKzrp7SWsHH+ipEKMwsp7KKK2FiJQxwttjoW2PVTZGZIrrcBQjFjxY1azV6TP3mGr14gM9TSZXReOvOt9yL6oKbylXzRfctWSQmV/fZ1gR+XRNfrfHnNJkbg59Xjc/A6ioNPmDeHxrCgKL4qpo7Wn4sW8fnqGvF5UkPfhCT4qvEIJ1MKczyuPEIGAoTLnOII0TcD04BTWpwjGfKuX8HmMczEbdCq8yO9DkKll7xeelz+vmdo81h5FxjZleeji20NOmo9CSNlnV2gsCSt1cbuALyOAMxRew57NbP5sLuvkVn+WVZjVlLXkT/AvuinAbdyrgMI750NOEiktlmflec9qYj1nZnY+D8aAnYDKPQvFWhXrcpAVAh55Glfc2oOBNve8RF95UfHnQlR7LYu8RMz3WE9LlTsv0pUYOCiJ6ExHdRUQxER0oed+riOheInqAiN5R5xptZMIwXIWvOoNGzKwQIN+8jI3XJ+tWFcY+Oe6Z1SXYBWR6AJ8rxKYXVdnC1Yuh2C08JnvOslmc3+GoMr1Ue3TAT3Fxu9YC+YwrX96qvQwX/gH0+y085Cpr4cHlbe6x6lBfkH6O25W5KFfcuEyQq8B/snoUdwJ4A4Avut5ARCGA3wPwagBXAHgLEV1Rz/LspE8BixIsltvwLbP2mNDTJNZe8r6VfpT7vSpfIJ/1xLH2ugHlNjQLegr98WN1fzP8mAcdARrEyD0oOgTf7DZ1v2Phn7Sg4jIchQkYB7NnHCyDnvxjFNyYUFdTmpzaEcDlRVXzmHMtPNieejFGwZcrfY9NV5U3kh4rhLgHwLisnxcBeEAI8WDy3o8AuA7A3VNfoIP0TqqDkfyZpUC01g5sa2+CwK7itZ56FBPEKLhK04hRcIVpUmtvOPKHnnJwG3PdvlP9ct1Qmc9Zn9ftA2/qnWsHkVS6VQ8bFQfz22MW65q7x2KRdq3lZBOqGiPAX65Uwd1EMQom9KTqVp7U0FNF2g85flXR4eQ1KxHR9UR0kIgOHj9+fCoL0iEJ7qYCMhhG5rhzoadijIIPC/hDT95KM2kf4mtd63wBP2vPN5g98rX2EvzYpxhK581NUZWfD7yhJ9267idQSFWlqw5mvz1mxij4eP0wyQDiBvBzMQpVme2Tgu0xEEx9VvLmZ3opgwD4LoaeiOizRHSn5d91Vb/C8pqwvCb/IMQNQogDQogDe/bs8Vv0GOpq7qJP6qMOw/hATyMDP65q7XULB8VkSpPX/CzzKDjD54GNgUImqh3xTl0MEs+RfzjqLc65XpTkLSEJH+jJhDe5BgGQxSi4cgHkoSfe5wNNrvhxmazjAe955bv1Tja4iH3NRgD/uxZ6EkK8YsKvOAzgIu33CwEcnfA7J6L04Y5E2hKZrUA88vrlZw1rr8O39tQUrUkb5FW16iVv7XBkX7Nejc6zVJXyGYz4tSN6IFx+hyd+7GNMGJk0/M9nSlNvWFmFOkYnVS4UAugJE35Kk5sSDCCd180dmCQ/G+RiUQA/SWQQydkjPpCu98FcKOp86kJP3wBwGRFdQkQ9AG8GcFOTC8qlXHpYewo/9oGe9AErgyjOdfUczzcPC3BrGYBMaXIzUtS8bjnX18PCVdW+zNRFc3ARp4VHEBCIkPPgJlGavIaEmdK09VsazzvrXMsPZmfwpu81+0BPmVxlwVmeXKl+YnzoSR+alHXMrQpvms/ZI9Nr5LnHOmaSyHcp9FRGRPR6IjoM4CUAPk5En0pev4CIbgYAIUQE4O0APgXgHgB/IYS4q4n1KtKF2GfWgB6A4kJPJgzDDaIDvjnuWQDfx9pT87q5bR0U78jX2stVzfqmivrCMIkC8VGak8bBknndXh7cBHusY+wxv0p4vxkeej8xn9qRkWfsr2s850kGgvW5Mp2kUfuknftQU1lPHwXwUcvrRwFcq/1+M4Cba1xaKenWtQq88YNuUmlucXQeLeO9GknoyAczByaPUfhh5kHWpG5CxQV4WHsDpXjqP5hXJyg+G3keFMqjGExacMc82LuFYDZ/j+kjc9mH4wYZBBzekySJFGJ/THhTZUH6jBj2oc0MPW06yilNrxbSGgzDhZ5CvR2yXxaPF/QUFi1cXgsPSmczsKGn0NLCg4kfryZxGa5r3tVgGK61NwlvvSMp14tSvFRRJ7+FRz5G4RPLmgR68pYrrUqZHcA35Cpg1GGYh6MPxKjvb5+uzmqPcWpHfKg9KBgUplgqP8cdSPqzpC08PLBUz1Q69d61JCPFZ8BKztrzgNu4FqrkbemYW/G6wyTO4AOFAPJZ65XwLMw8vd+TVcL73u+0qNMD6vM9HDMPzr+oc+jpRal53f6tcbLnzI0TAH5ylXbr9Uw7V3tqfTBipTH7UntQMKirwwJe1l7W98hHiH27mRZaeHgMWBnlJohxsp78oacwIMQCiJMYB8faIyJ0g0DDj/1TRbnPy+x7xElc0GMU3DYaQFbU6ZcqGuSsa684mE/BnS1G4dX3yG+P+cuVkek1QdyR3w4o82amDTsB7UHBotCGpTKDnKrsng89ZQNWfK291EVmuKldC/TEVSDK2uNCT+lwF48gOiAVyKpH5hFgVIX71hQMRwiD6nMsFF/A36NQ2XE+3WPNlikszHyigruNkis/6CkfUK5uBJmxKK5Mq4ryOOk+6xUHG46mnvEEtAcFi/ItPDzSY7WaAh/oaZLe9YBvRoomxMzKVcVbFYDxrb087OUDXXlDTzrU55k8sOZh7YVajMK3+l/FhLwCuzoM4wGF+NzvXBxsYrmaLJjN4avmdU+yxxQsC/CfM6D2WHtQbCqytfBgj10c8XvXK95ZLQO/aRqgZeF4WIqR3lKCOY9C1QT4KHrJO2Zbe4C8zqxS2CfIGXtZe73U0oy8lDXgD2/2Qq2Fh0+q6KTB1UmMkYnkKvaUK22e/IjXhkPyJk2u/Iy/vmcsCpB7jAur+lB7UDAojVH4pvEpGCbiT7jrGg3yuDnXADIYhgOFaM3L/KCnzPLhZz3lA7scaw+Qh5yvtaeE2MvaC/ytPf1g9t1jat186CmY2Gtd9Sg+y+TK34tSgXAu9NQN8nuM3UgxCDS54kOjk6RBA0quWo9iU5FefOajQLphgDNrEc4NImyf6/J4h9msAF/M/LHlNQBg8Q5JQSE6fsxr4QEAx5bX2desN04beFh7nZBwbHkdAO+aJW/p/flYe+p+e12z1szQi3cQ4LHkmrd53G/f2ejqQHxseQ1EwNYZxh7LQU98r1fN6z5xbuAlVxlvvziYj1wBWRsOnyJDdSj57DEfag8KBtlqCrj59SfO9SEE8Lz923i8NyBG8fiZPvZtn8WuLTOVPxsEhIBUSwm//lYA8MTZPp63f3vlzwH54rOhj7UXBnjibB8A8LwLuLxpgsyjSa45M0Z8W3ioa77Sg3dWcMcfHgTIPfbMPVsw1+MbE1Ku+JXGal73iXP8+21WwrPh0TDA42f66ASEZ52/lfVZNYxs6Ok5AmqP8XSJD7UHBYMmbuGhbQQfIR55Blf19EwuXwDp7Gofa0/HT7m8O4YHxz8o5Oeftmse2+f5ln0ObvPAjwHgKs9rHmlQCidrSvEmAp7rwTuLUYz89/aFfoejb1xGT0vl887Dydw9pu7R5Xu3YrbLi6FNAm/qz+bK/Yssvj7UHhQM6hpZOABTgSQCcf62WZy3bZbHW8ePmfnial43AFzFFCSgqDR5Vbf+h5QZo+AHwwMvvvKzNFGcQBFXcZkxCh8oBAAu3bPFo3usvsf8jRHu4Ti5XMn3hgHhin086zpL//bv6gxMIlf+1eiKfHhzqT0oGBTqm8rD2lNKk6s8AAULKPyYN44UyCzVKy9c9OI91DBzXn695HvRzjnsWOix+QJZfMTXo/AS4iRG4WXhBppVfwETYtRiFF5eVMKbq6wBS4zCU3Fx95jq1ht5Jkwo3j5WvZlx5S9XPjId5OTKJ2GiFwa4fC8P8vKh9qBgUAHP9LT2rvZSXORt7QGZteKrQPIFYJyipISvxwGlF5/JGRxM114dzB6ueVi4Zr7iesbuBWydZQZXg7wxwsfMJ1Fcco+l8+A9DAIfq159XsqVT62OfK+vXAH+wexuynvRi7fuqfNGB8h1P+eCbew1+1B7UDBIx499int6qUex6MFbBuxiTximG5KXVQ9kkIRPMHuiA0rz4IZRzM4XV8LkE+xT7VaUR8GpSZjkcDTbxHChkIw3/35nNS/856zmdV92Hi+QrUhVwvvw7k1wOHbMGIXH/fa16lUq8yQJEz5y5UPtQcEgtalUSht3Uym32AszT4ShH/GtPcX7Ks+gl4IkfKy92a4/3JZrP+1xMM92Q1y6h2/VK956jIJj7alr9lHWoQ49eUAhs90wseo9PQrPOAEAzHZCL8saQDoJ0SdJRMmVz/7Wh5H5oASz3QDP2bfVy6rvmPebJVeJLqkhPgGgmXkU360UpsHVmN1vCQDedOBCPPv8rdjpYdUrSEJVGnN5//cfvRr7F+fYfBVv34yU77tsN37rx67Giy/Z5cUX8E9d/MUffnZqrfF5B95CfOGOefzOm5+PH7piL5vvpPDmW1/yNLzk0l2eVr30ovoe2W0A8N5/cg0uO28Lmy+guvVmeD0nYeIVz9mL97zlBV6eozlRkHvNv/yaK7xbfE8iV5fv3YLf+rGrce2V+7x4c6k9KBg0ac71eVtn8fLn8LKdTN4+LRIA4Hsv3e3FV/H2nUcx0wnx+hdc6MlXg2E8lOYVzEBynrd/1SwAXPf8/V589W69Pl7UBYtzuGACgyAWQH/o51H8o8v3ePEF8nuM2zZ7YaaD1119gTdfIPPguHLlAy9mvOUwMp+sJyLylisfaqEnBqUxCs8snI3grVoa18o7wa59IQl/vpPVUUzK27cCfxLqmumxNd1roDgDut79HTQkV2bCRL17rAm58qFGVkZEbyKiu4goJqIDJe97iIgOEdFtRHSwzjXaKE3X9MyQmIi30XSNg5lPSgo/7o/41t6kfAG9eywfTpmEd9SAEJsxilr3mOG11s17GMcYjEY1y1U+RlG/XIl0kiE3HlUnNQU93QngDQD+sMJ7f0AIcWLK66lEqq3wSE3TqnlTAcBq3y9GMQkpLHUY8do6bARfQMsAYnbnnIx3vo6ijlbOQB7eHI5iLDCL5jaC96rHxLaJeYfaHmtArtYbOhxVe5q6eXOpkYNCCHEPgNos042kHJb6FIKeVAuPOvkq5axmM9Rp7XUNWKAua68TTJYwsRG81xpQmno7iyagp+bkqn5404c278okCQCfJqJbiOj6sjcS0fVEdJCIDh4/fnxqC9JT2uqyMgGtjbNnMHsi3kk2jLzmOq36xNprwOIKtWuuk3euGr1heLPePZbMVq95jzUvV34tPOqmqXkURPRZAOdb/vRLQogbK37NS4UQR4noPACfIaJvCSG+aHujEOIGADcAwIEDB4TXoiuQchfrtvZU8zLf9NjJeFMjmHmTcNskDdsmoQzeFI1g5kBze2wUC4xifgX+pHyB5uWKKLv/m5GmdlAIIV6xAd9xNPn/CSL6KIAXAbAeFHWR7i42ojQVLFCzAhlEsVeR4SRUCK7WyjvID6iq+bqbgDfN+11ncFVVKcei3jhY03Kl4m91Jon40Kb1dYhogYi2qp8BvBIyCN4odRq39hqMUXiMI52EiumadfLOlHVA+S64U+etegDVbIx0wwb3WCpXo5rlKg+3NSdXm1YVA2guPfb1RHQYwEsAfJyIPpW8fgER3Zy8bS+ALxPR7QC+DuDjQohPNrFenVRKm08V50R8jeH1tVp7Cq9nDrOZlExYoO74iBoeVDd2rLr1DmuOgyl4c60R6zrAcBRjWPMe2xxyxW/VUjc1lfX0UQAftbx+FMC1yc8PAri65qWNpVDLhmlCiJsIumVY6qiWQe6KGvWigmzwfd3WXlrg2DC8yWmEOCnpyQPbZutTSybcVrdcjRpIjPGhzb26TUjdoBl3UQ09WhvWH3TTU0Xrds2Bhqy9UHbr7XvM/piYd1LgOBw1U1OQ7rGas/qakSsFbzYhVy309KSlUHVSrTt1sdGq2SDLcW8ymN3Q/a67tUInoIby+hv24NKU4Bqznsxrrj1pwW/uSN3UNgVkUtiUtZds6JV+M9kZckNTQ1CIsnDrbeEByPtdt7UXhpQ+5zq9GQVvNsW7if5W+nMGnhpFhj7UHhRM6oSE9WETBWCS13oDlqbCUoeBaCTHXVnXjRT7DUe148edIEifc90FYAAa491EpldoXHPdvBW8udkPis29uk1I890OTpzrA6jXqp9P5gs0xfvseoT+cFSrsu6FAToB4cTZgfy9RmGa70kb6sS5fu1CPNcNs+dcI+85bY+FAXnPWfCh+V6IM2tR4lHUx3eu26xcAcCJs4M2mP1ko+fs24r7Hj8LoF4hvmT3AnqdoBHez9m3DWf7ER47s14rHBEEhGedvxX3P9HENcvRlvc9frb2g+LZ+h6rUYFcvncriJJrrllxPWffNjx2Zh1n14e13u+FmQ6etmu+MbkCgPufOLvp02M39+o2IV154SLipEFI3RkSV+zbhligdmtPjW6NRf0986+6cHt6v+sUpufs24ZOMsin9mvev72RPbZlpoNL92zxGrU7KamRno3wbuh+NylXXNrcq9uEpM9BbkJpNsH38r3ZTOD6hXgx/bnOYPZsN8Tle6VXUb/SXEx/rpv3VYnyqpvvcy/YBtXBos7nDDQn04vzPVy8c17ybT2KJxddumdLii02Yfk0wbfXCVI3uXbFpQtxQ7zrhgWu2Lct9RibsuzrNka2znbxjN0LkneTxkhT97s9KJ5cFAaE510gH27dAairL1pshC+QWZp1875879ZUadUZSAcyIa77mud6mjdTu9e6KPk2oLiuTnjX/Zyftz/zZup+1k3JFZc29+o2KV3ZkKV56Z4tmOuGjQS+mrJ8pDfTDAR0VWJpNqE0m4KAlDfTBGbelFzlvJmar7v1KJ7EdFVDDzcMCM/bv60ZxdUQJAE0J0yXn78FvTBo9pob8GYuO29Ls3usEd6L6IaEoOaZEM/b35xccagtuPOglz9nL/7F912CF1y8WDvvn/nBy3D8bL92vpeftxU/+/LL8MorbLOopktvfcnTsW/7HGZqLPYDgJlOiF9+7RV4zvlba+ULAD9y5T48fHIljQ3VSb/wymehH41q53v1hYv4qZddipc967zaef/zl16C515Q/73eNtvFL7/mCrzw6Ttq580hEmJqw+AaowMHDoiDBw82vYyWWmqppe8aIqJbhBAHbH/b3P5OSy211FJLjVN7ULTUUksttVRK7UHRUksttdRSKbUHRUsttdRSS6XUyEFBRP+ViL5FRHcQ0UeJaNHxvlcR0b1E9AARvaPmZbbUUksttYTmPIrPAHieEOIqAPcB+HfmG4goBPB7AF4N4AoAbyGiK2pdZUsttdRSS80cFEKITwshouTXrwG40PK2FwF4QAjxoBBiAOAjAK6ra40ttdRSSy1J2gwxin8O4BOW1/cDeFT7/XDympWI6HoiOkhEB48fP77BS2yppZZaeurS1CqzieizAGxlvL8khLgxec8vAYgAfNj2FZbXnNWBQogbANyQfO9xInqYvWhJuwGc8PzsNKldF58269radfGoXReffNb2NNcfpnZQCCFeUfZ3InobgNcAeLmwl4cfBnCR9vuFAI5W5L2n6jot6zroqk5sktp18Wmzrq1dF4/adfFpo9fWVNbTqwD8WwCvE0KsOt72DQCXEdElRNQD8GYAN9W1xpZaaqmlliQ1FaN4L4CtAD5DRLcR0fsAgIguIKKbASAJdr8dwKcA3APgL4QQdzW03pZaaqmlpyw10j1WCPFMx+tHAVyr/X4zgJvrWldCN9TMryq16+LTZl1buy4etevi04au7UnZPballlpqqaWNo82QHttSSy211NImpvagaKmlllpqqZSekgcFEb2JiO4iopiInClkrl5TRLSTiD5DRPcn/2/IeKoq30tEz0oSANS/M0T088nf3klER7S/XVtgMqV1Je97iIgOJbwPcj8/jXUR0UVE9Dkiuid55j+n/W1D79e43mQk6T3J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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "f = 10 # frequency\n", "\n", "t = np.linspace(-1, 1, 200, endpoint=False)\n", "x = np.sin(f * 2 * np.pi * t) - np.sin(f * 4 * np.pi * t) + 0.5*np.cos(f * np.pi * t)\n", "\n", "fig, ax = plt.subplots()\n", "ax.plot(t, x)\n", "ax.set_xlabel('Time (s)')\n", "ax.set_ylabel('Signal amplitude');" ] }, { "cell_type": "code", "execution_count": 88, "id": "5eea1223", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0, 0.5, 'Frequency Domain')" ] }, "execution_count": 88, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "X = fftpack.fft(x)\n", "freqs = fftpack.fftfreq(len(x)) * 100 # 100 is sampling rate\n", "\n", "fig, ax = plt.subplots()\n", "\n", "ax.stem(freqs, np.abs(X))\n", "ax.set_xlim(0, 50)\n", "ax.set_ylim(0, 110)\n", "ax.set_xlabel('Frequency in Hertz (Hz)')\n", "ax.set_ylabel('Frequency Domain')" ] }, { "cell_type": "markdown", "id": "3c40e117", "metadata": {}, "source": [ "Lastly, the Bandwith Theorem shows that the width of a pulse * the width of a frequency spectrum is constant, i.e. $\\Delta F \\Delta t = 1$." ] }, { "cell_type": "code", "execution_count": null, "id": "9000474a", "metadata": {}, "outputs": [], "source": [] } ], "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.9.12" } }, "nbformat": 4, "nbformat_minor": 5 }