aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sem6/pro/Simulation_book.ipynb463
1 files changed, 463 insertions, 0 deletions
diff --git a/sem6/pro/Simulation_book.ipynb b/sem6/pro/Simulation_book.ipynb
new file mode 100644
index 0000000..8810ed4
--- /dev/null
+++ b/sem6/pro/Simulation_book.ipynb
@@ -0,0 +1,463 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Sine generation"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 73,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "<Figure size 432x288 with 0 Axes>"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "import numpy as np\n",
+ "import matplotlib.pyplot as plt\n",
+ "from scipy.fftpack import fft\n",
+ "from scipy.signal import upfirdn"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 56,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def sine_wave(f, fs, phase, n):\n",
+ " t = np.arange(0, n * 1/f - 1/fs, 1/fs)\n",
+ " g = np.sin(2 * np.pi * f * t + phase)\n",
+ " return (t, g)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 57,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "599, 599\n"
+ ]
+ },
+ {
+ "data": {
+ "text/plain": [
+ "[<matplotlib.lines.Line2D at 0x7f2a4bb3ff10>]"
+ ]
+ },
+ "execution_count": 57,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ "<Figure size 432x288 with 1 Axes>"
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "(t, g) = sine_wave(1, 300, 1/3 * np.pi, 2)\n",
+ "(t2, g2) = sine_wave(10, 300, 1/3 * np.pi, 20)\n",
+ "print(f\"{len(g)}, {len(g2)}\")\n",
+ "\n",
+ "plt.plot(t, g)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# FFT"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 58,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "[<matplotlib.lines.Line2D at 0x7f2a4baa5f10>]"
+ ]
+ },
+ "execution_count": 58,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ "<Figure size 432x288 with 1 Axes>"
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "G = fft(g + g2, len(g))\n",
+ "plt.plot(t, np.abs(G))"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Binary Shift Phase Keying"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 59,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# BPSK modulator at baseband\n",
+ "def bpsk_mod(data, L):\n",
+ " s_bb = upfirdn(h=[1] * L, x=2 * data - 1, up = L)\n",
+ " t = np.arange(start = 0, stop = len(data) * L)\n",
+ " return (t, s_bb)\n",
+ "\n",
+ "def bpsk_demod(r_bb, L):\n",
+ " x = np.real(r_bb)\n",
+ " x = np.convolve(x, np.ones(L))\n",
+ " x = x[L-1:-1:L]\n",
+ " return (x > 0).transpose()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 60,
+ "metadata": {
+ "scrolled": true
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "[<matplotlib.lines.Line2D at 0x7f2a4b9b9220>]"
+ ]
+ },
+ "execution_count": 60,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ "<Figure size 432x288 with 4 Axes>"
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "N = 10\n",
+ "L = 16\n",
+ "Fc = 800\n",
+ "Fs = Fc * L\n",
+ "\n",
+ "data = np.random.randint(2, size=N)\n",
+ "# MOdulate\n",
+ "(t, s_bb) = bpsk_mod(data, L)\n",
+ "# Add to carrier\n",
+ "s = s_bb * np.cos(2 * np.pi * Fc * t / Fs)\n",
+ "\n",
+ "# Demod\n",
+ "data_r = bpsk_demod(s_bb, L)\n",
+ "\n",
+ "fig, ax = plt.subplots(2, 2)\n",
+ "ax[0, 0].plot(t, s_bb)\n",
+ "ax[0, 1].plot(t, s)\n",
+ "ax[1, 0].plot(np.real(s_bb), np.imag(s_bb), 'o')"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# AWGN"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 61,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "from numpy.random import standard_normal"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 62,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def awgn(s, SNRdB, L=1):\n",
+ " # Convert Noise to linear scale\n",
+ " gamma = 10 ** (SNRdB/10)\n",
+ " \n",
+ " # Assumes s is a single dimension\n",
+ " P = L * np.sum(np.abs(s) ** 2) / len(s)\n",
+ " \n",
+ " # Noise density\n",
+ " N0 = P / gamma\n",
+ " \n",
+ " # Assumes real\n",
+ " n = np.sqrt(N0/2) * standard_normal(s.shape)\n",
+ " \n",
+ " # Return original signal with added noise\n",
+ " return s + n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 75,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "Text(0.5, 1.0, 'With noise')"
+ ]
+ },
+ "execution_count": 75,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAaIAAAEkCAYAAABt4jWqAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAAB2N0lEQVR4nO2ddXgc172w37O8YrRYZoiZYoc5aZKGmsTBMqQp3zL3tre3dEtfIYW0KaRNmsRhZnTsGGNmlmTLYlwtn++P2Rntrla80oLO+zx6JO0OnNmZPb/zYyGlRKFQKBSKRGFK9AAUCoVCMbFRgkihUCgUCUUJIoVCoVAkFCWIFAqFQpFQlCBSKBQKRUJRgkihUCgUCUUJIoViDBFCfEsI8dd4bzuEY0khxIx4HEuhGGuEyiNSKIaOEOLDwJeB6UAH8BjwTSllWwKH1QchhARmSikPJnosCsVgKI1IoRgiQogvAz8DvgrkAmcAk4GXhBC2GNtbxneECkVqogSRQjEEhBA5wA+Az0kpn5dS+qSUR4Gb0ITR+4UQ3xdCPCyE+LcQogP4cOi1f4cd54NCiGNCiGYhxHeFEEeFEJeE3jO2FUJMCZnXPiSEOC6EaBJCfDvsOCuEEOuEEG1CiJNCiN/HEoYKRSqgBJFCMTTOAhzAo+EvSim7gOeAS0MvXQs8DOQB94VvK4SYC/wBuB0oQ9OqKgY57znAbOBi4HtCiNNCrweALwJFwJmh9z89/MtSKBKPEkQKxdAoApqklP4Y750MvQ+wTkr5uJQyKKXsidruRuApKeUaKaUX+B4wmJP2B1LKHinlNmAbsAhASrlZSvmOlNIf0sz+DJw/sktTKBKLsmErFEOjCSgSQlhiCKOy0PsANQMcozz8fSmlSwjRPMh568P+dgFZAEKIWcCvgOVABtp3efNgF6FQJCNKI1IohsY6wANcH/6iECITuAJ4JfTSQBrOSaAybF8nUDjC8fwR2IsWGZcDfAsQIzyWQpFQlCBSKIaAlLIdLVjhd0KIy4UQViHEFGA1UAv8awiHeRi4WghxViiw4AeMXHhko4WPdwkh5gCfGuFxFIqEowSRQjFEpJT/h6Z5/AJNCKxHM7VdLKX0DGH/XcDngAfQtKNOoAFN0xouXwFuCx3jL8CDIziGQpEUqIRWhSJBCCGygDY089qRBA9HoUgYSiNSKMYRIcTVQoiMkG/pF8AO4GhiR6VQJBYliBSK8eVa4EToZyZwi1RmCcUER5nmFAqFQpFQlEakUCgUioSS1AmtRUVFcsqUKYkehkKhUCjiwObNm5uklMXRrye1IJoyZQqbNm1K9DAUCoVCEQeEEMdivR4X05wQ4m9CiAYhxM5+3hdCiN8KIQ4KIbYLIZbG47wKhUKhSH3i5SP6B3D5AO9fgRYhNBO4A608iUKhUCgU8THNSSnfDJU76Y9rgXtDYarvCCHyhBBlUsqT8Th/omnq8rD+cAs1rS4EUF2QwcpphRRkqvYwqcTxZhcbjrZwqsON3WJiZkk2p0/JJ8OW1BZsRRhSSnaf7GBrTRut3V6yHVbmV+SwqDIPi1nFZiUr4/UNqyCyKnFt6LU+gkgIcQea1kR1dfW4DG6kHGzo4lcv7eOFXacIBCPD4C0mwRULyvjKZbOYXJiZoBEqhsLaQ038v5cOsOFoS5/3suwWbj69is9dNIO8DLWwSFaCQclj79Zx1+sHOdzY3ef90hwHHztnKh86awo2ixJIycZ4CaJYhR1jJjBJKe8G7gZYvnx5UiY5BYOSP795mF++uA+nzczHz53KFfPLmDEpCyklBxq6eHb7Sf6z4Tgv7KznG1fM4SNnT0EIVRw5mXB5/fz3E7tYvbmWijwn37xiDhfNmURVQQY93gDb69p5bEstf3/7CI+9W8cvVy3iwjmTEj1sRRT17W4+/8C7bDjSwvyKHH52wwLOml5Ecbad9h4fG4+28J8Nx/nRs3t4aFMNv79tKbNLsxM9bEUYcUtoDZnmnpZSzo/x3p+B16WU/wn9vw+4YDDT3PLly2WyRc15/AG+9NA2ntl+kisXlPI/186nKMsec9uGDjffemwHL+9p4Iallfz0hgVYlXkgKWjs9PCRf2xg14kOPnX+dD5/8UwcVnPMbfec7OCLD25lb30n33nvaXz83GnjPFpFf+w60c6H/rZRW1RcPZdVy6owmWIv+F7de4qvPbyDbo+fP75/KRfMVouK8UYIsVlKuTz69fGaFZ8EPhiKnjsDaE9F/5DXH+TOf23mme0n+cYVc7jrtqX9CiGASTkO/vLB5fzXJTN5ZEstn//Pu/gDwXEcsSIWTV0ebr57HQcburjnQ8v52uVz+hVCAKeV5fD4Z87mygWl/O8ze/j9qwfGcbSK/thZ184tf34Hm1nwxGfO5ubTq/sVQgAXzSnh2c+fw9SiTD7+z028sufUOI5WMRDxCt/+D1rjsNlCiFohxMeEEHcKIe4MbfIscBg4iFay/tPxOO94IqXk649s57V9jfzoffO58/zpQzK1CSH4r0tm8Z33nsZzO+v53pO7xmG0iv7o8Qb48N83cKKth3s/upKL5pQMaT+H1czvbl3K+5ZU8IsX9/OfDcfHeKSKgahpcfHBv20gx2ll9afOYmbJ0Extk3IcPPDJM5hbnsOn7tvC5mOtYzxSxVCIV9TcrYO8L4HPxONcieLedcd47N06vnjJLG5fOXnY+3/83Gk0dXn50xuHWFyZx02nV43BKBUDIaXk24/vYNeJDv76weWsmFowrP3NJsHPb1xIc7eX/35iF3PLclhUlTc2g1X0i9sX4FP3bcYXCPLwnWdSkecc1v45Div/+MgKrrvrbT5z3xae/vw5A1o2FGOPclgMgc3HWvnfZ3ZzyWmT+NxFM0Z8nK++ZzZnzyjku0/sZGddexxHqBgK9284zqNb6vj8RTO5+LShaULRWMwmfnPzYoqz7Xz6vi20dnvjPErFYHz/yV3srOvg1zctZlpx1oiOUZBp44/vX0qry8vn//Nun6hXxfiiBNEgdLh9fPb+LZTlOvnlqsUD2qAHw2wS/OaWJeRn2Pj0fVtwef1xHKliIPbWd/CDJ3dz/qxivnDxzFEdKz/Txh9uX0pjp4evrN6GqmA/fjyxtY4HNtbwmQunc8nckS0mdOaV5/LD6+az9lAzv1N+v4SiBNEg/Oy5vZzqcPO7W5eQm2Ed9fGKsuz85pbFHG9x8euX9sdhhIrBCAQlX39kB9kOC7++eXSLCZ1FVXl87fLZvLK3gae2p1zcTUrS0u3lB0/tZml1Hl+6dHZcjnnT8iquXVzOXa8dZP+pzrgcUzF8lCAagI1HW7hv/XE+evbUuPoCVk4r5NYV1dyz5ogy0Y0D/1p3lG01bXzv6rlxrXbxkbOnsrAyl/95ahdtLmWiG2v+95nddLp9/PSGhZjjsJjQ+d5Vc8m0W/jmozsIKhNdQlCCqB88/gDffHQHFXlOvnjprLgf/xtXzKEwy87XH9muQrrHkBNtPfz8hX2cP6uYaxaVx/XYZpPgp9cvpNXl48fP7onrsRWRvHWgkUe31HHn+dOZNcQIuaFSmGXnO++dy+ZjrdynoiETghJE/XDv2mMcbOjif6+bT6Y9/gUocp1WfnDNPHad6OA/G2sG30ExIn7y3F4CUvK/180fk8oWc8tz+MS503hoUy1ba9rifnwF+ANB/vvJXUwtyuQzF448WGggblhawdkzCvn583uVdpsAlCCKQZvLy+9ePcD5s4rHtKTLFfNLWTGlgN+8vJ8ujwpciDfbatp4atsJPnHuNKoKMsbsPJ+9aAZFWTZ+8uweFbgwBjy4qYbDjd1884qBE49HgxCC7141l06Pn7teOzgm51D0jxJEMfjD64fo9Pj5xhVzxvQ8Qgi+eeUcmrq8/OXNw2N6romGlJKfPLeHwkwbd5w3tiV5suwWvnDxTNYfaeHVvQ1jeq6JRrfHz69fOsDpU/K5dJRRcoMxpzSHG5dW8s+1x6hpcY3puRSRKEEURW2ri3+sPcoNSys5rSxnzM+3pDqfKxeU8pe3DtPQ6R7z800UXt/XyDuHW/jCJTPJdow+2nEwbllRzdSiTH763F7l84sjf33rCE1dHr555WnjUjT4S5fNQgj4lYpoHVeUIIrit68cQABfGoMAhf746nvm4PUHuetVZRKIB1JK/u+FfUwpzODWFePTSsRqNvG198zmQEMXj289MS7nTHdau73c/eYhrphfytLq/HE5Z1muk4+eM5XH3q1jX70K5x4vlCAKo6bFxaNb6rhtZTXlwywbMhqmFmVyw9JKHthYo7SiOPDyngb2nOzgC5fMHNdq55fPL+W0shz+8NpBlakfB/7+9hG6vYFxXRQCfPK8aWTazPxe+YrGDSWIwvjzm4cwCTHmPoVYfOqC6fgCQf761pFxP3c6IaXk968eoLogg6sXxjdcezCEEHzuohkcburm2R0qyXU0dLh9/H3tUa6YXzrkgqbxIi/DxgfOnMLT209wqLFrXM89UVGCKMSpDjcPbazlhmWVlOWOnzakM6Uok6sXlfPvd47RouqXjZi3DjSxrbadT10wPSGtoS+fV8r04kx+/+pBlRw5Cv617hidbv+YhWsPxsfOmYrNbOKPrx9KyPknGkoQhbj7zcMEpORT509P2Bg+c+EMXN4Af1ujtKKR8vtXD1KW6+D6pRUJOb/JJPjMhTPYd6qTl1S/mxHh8vr561uHuXB2MfMrchMyhuJsO7euqOaxd+tUBN04oAQR0N7j4z8bjnPtonKqC8cu32QwZpVk8555JfzrnWOqIOoI2HK8lQ1HW7jjvGnYLWOTbzIUrllUTlWBk7tVSP6IWL2pllaXj8+OotJ9PPjk+dMwCbhHLQzHnHg1xrtcCLFPCHFQCPGNGO9fIIRoF0JsDf18Lx7njRcPbDiOyxtIihbQnzh3Gu09Ph7ZXJvooaQc96w5Qo7Dwk3LE9vryWI28ZGzprL5WKuqtjBMAkHJ394+wpLqPJZNHl6/qHhTluvkqoXlrN5UQ4fbl9CxpDujFkRCCDNwF3AFMBe4VQgxN8amb0kpF4d+/me0540XvkCQf649ypnTCplbPvZ5Q4OxbHI+i6ry+NvbR5WPYRjUtrp4fmc9t66oHpOSTMPlptOryLZb1Gp6mLyy5xTHml187JypiR4KoPmKur0BHtygynCNJfHQiFYAB6WUh6WUXuAB4No4HHdceG5nPSfa3Unz4Ash+Ng5UznS1K2y9IfBP9ceBeBDZ01J6Dh0suwWbj69imd3nKSurSfRw0kZ7llzhIo8J5fPK030UACYX5HLiqkF/GPtUZWoPIbEQxBVAOHLhdrQa9GcKYTYJoR4TggxLw7nHTVSSu5Zc4SpRZlcNIY15YbLFfNLKct1qNX0EOny+HlgQw1XzC8d1/yvwfjQWVOQUnJvSEgqBmZnXTvrj7TwobMmJyTisT8+ds5U6tp6eH5XfaKHkrbE427HqrsRbVPaAkyWUi4Cfgc83u/BhLhDCLFJCLGpsbExDsPrn2217WyraeMjZ0+JS7O0eGE1m/jQWVNYd7hZZXcPgce21NLp8SeNVqtTVZDB5fNL+c+G47h9gUQPJ+n5x9qjZNjM3Hz6+FTDGCqXnFbC5MIM/vH20UQPJW2JhyCqBcK9w5VARI0TKWWHlLIr9PezgFUIURTrYFLKu6WUy6WUy4uLi+MwvP65751jZNrMXL+0ckzPMxJuWl6FzWLi/vXHEj2UpEZKyX3rj7OgIpcl41QGZjh84IwpdLj9PK26uA5Iu8vHU9tOcN2SCnKdY18bcDiYTYLbV1az6VirWhiOEfEQRBuBmUKIqUIIG3AL8GT4BkKIUhGqWCiEWBE6b3Mczj1i2l0+ntp+gmuXVJCVBM7taAoybbx3QRmPbqmjW7WI6JfNx1rZW9/J7SuTaxWtc8a0AqYVZ/Lvd9SCYiAe2VKLxx/ktnGqDThcblxWhc1s4j61MBwTRi2IpJR+4LPAC8Ae4CEp5S4hxJ1CiDtDm90I7BRCbAN+C9wiE9y45ZEttbh9waSdwABuX1lNp8fPU9tUEc3+uG/9cbLtFq5ZPL7lfIaKEILbV05ma02bagvfD5pWe4zFVXkJS2AdjIJMG1cuKFULwzEiLh5BKeWzUspZUsrpUsofhV77k5TyT6G/fy+lnCelXCSlPENKuTYe5x3FeLlv/TGWVOcxrzw5H3zQQrnnlGZz33rVvjgWLd1entlxkuuXVpBhSz6tVufGpZXYLSbuV22oY/LO4RYONXbz/jMmJ3ooA/L+MybTpRaGY0LyhKaMI+uPaA/+7SuT+8HXVtPV7KhrZ3ttW6KHk3Q8srkWrz/IbUl+H3MzrFy9qJwn3q1TnXhjcN/6Y+Q4LFy1sCzRQxmQZZPzmV2iFoZjwYQURP9+JzUefIDrllSQYTMrH0MUwaCm1Z4+JZ/ZpeNbnXkk3L6ymm5vgMferUv0UJKKxk4PL+yq58ZlVWPWBjxeCCG4/QxtYbhNVcyIKxNOEKXSgw+Q7bBy7eJyntx2gvYeVWZEZ+2hZo42u5Jeq9VZXJXH3LIc7nvnGAl2jyYVqzfX4AtIbktiX2041y2pwGk1q6CFODPhBJH+4N9+Rmo8+AC3r5yM2xfksS2q/pzOfeuPUZBp44oFyZGBPxhCCN5/xmT21ney5XhbooeTFASDkv9sOM6Z0wqZMSkr0cMZEjkOK9ctUQvDeDOhBJGUktWbalkxpYDpxanx4INWZmRBRS4PbVKCCLQghZf3nOJ9SyoSWmV7uFyzuByn1czqTapuGcA7h5upaenhlhWJLVI7XG45vRq3L8jT21XQQryYUIJo87FWjjR1s2p58iWwDsaq5ZXsPtmhQoCBJ7bW4QvIlLuPWXYLVy4o4+ntJ1WbD+DhzbVkOyy8J0nqyg2VhZW5zCrJYrVaGMaNCSWIVm+qJcNm5soFyR+kEM01i8qxWUw8rNpDsHpTLQsqcplTmvhq6cPlpuWVdHn8PLdjYtct63T7eHbnSa5eVJ4SvtpwhBDctLyKrTVtHDilKi3EgwkjiFxeP09vP8F7F5QlRZuA4ZKXYeOyuSU8vrUOj3/i1i3bdaKd3Sc7Uk4b0lkxtYDJhRms3jyxzXPPbD+J2xdk1bLUvI/XLanAYhKsVgvDuDBhBNFzO+rp9gZYleCmaaNh1fIq2lw+Xt49cdtDrN5Ui81s4ppFyVlJYTCEEKxaVsk7h1s43jxxW1Cv3lzLjElZLK7KS/RQRkRRlp2L5kzi0S21+FR7iFEzYQTR6s01TCnM4PQpyVcYc6icM6OIslzHhF1Ne/1Bnthax6XzSsjLsCV6OCPm+qWVCAEPT9D7eKixi83HWlm1rJJQCcqUZNXyKpq6vLy+b2y7BEwEJoQgOt7s4p3DLdyY4g++2SS4YWklb+5vpL7dnejhjDuv7DlFq8vHjSlqztEpz3Ny7sxiHt5cS2ACduF9eHMtZpPgfUtitS1LHS6YXUxRlp2HVBTkqJkQgujhzTUIQVK2exguNy6rJCi1oq0TjYc311KSY+e8mWPbHmQ8WLWskhPtbtYeakr0UMaVQFDy6JZazp9VzKQcR6KHMyqsZhPXL63gtb0NNHZ6Ej2clCbtBVEwKHlkSx3nzChKqu6dI2VKUSYrphawelPNhMrQb+h08/r+Rq5fWok5iZoYjpRL55aQ67ROuNywtw40cqrDk7JBCtGsWlaJPyh5XJVuGhVpL4jWHmqmrq2Hm1I4SCGam5ZXcbTZxaZjrYkeyrjx2JY6AkGZNhOYw2rmusXlvLCrnnbXxMnQX725lvwMKxefVpLoocSFmSXZLKnO46EJtjCMN2kviFZvriHHYeHSuenx4ANcuaCUTJuZhzZODNu0lJLVm2tZNjmfaSlUEWMwVi2vwusP8uS2ibGabnN5eWnXKa5dXIHNkj5Tz6plVRxo6GJbrUo2Hynp8zTEoL3Hx/M767l2cUXKJc0NRIbNwlULy3lmx8kJ0aRra00bBxu60kYb0plXnsNpZTkTxjz35LYTeAPBlM0B64+rFpXhsJpU0MIoiIsgEkJcLoTYJ4Q4KIT4Roz3hRDit6H3twshlsbjvIPx9PYTePzp9+CDVvLH5Q3w7I6TiR7KmLN6cy0Oq4n3pkDbjuGg5xTtqGtnX336Z+iv3lTLaWU5Sd2MciTkOKxcMb+Mp7adwO2buMnmo2HUgkgIYQbuAq4A5gK3CiHmRm12BTAz9HMH8MfRnncorN5Uy+ySbBYkafvh0bBscj5TizLTPrPb7Qvw1LYTXDG/jGyHNdHDiTvXLi7XMvTTfDW9t76DHXXtaafV6ty4rJJOt58Xdk3s0k0jJR4a0QrgoJTysJTSCzwAXBu1zbXAvVLjHSBPCDGmy9sDpzrZWtPGquWpnTvUH0IIblxWyYYjLRxr7k70cMaMF3bV0+n2p+0EVphl5+LTJvH41rq0ztB/eFMtVrPguhTPHeqPM6cVUpHnVLUgR0g8BFEFEL6cqw29NtxtABBC3CGE2CSE2NTYOPKMZYfVzO0rq9P2wQe4fmkFJkFaP/wPb66lMt/JGdMKEz2UMWPVMi1D/7W96Vm6yRcI8vjWOi6eU0JBZupWxBgIk0lww7JK1hxsoq6tJ9HDSTniIYhiqRvRcYxD2UZ7Ucq7pZTLpZTLi4tHnrhYVZDBj963gKIs+4iPkeyU5To5Z2Yxj6Rphn5dWw9rDjZxw9JKTGmQO9QfeoZ+uppZX9vbQFOXNy19teGsWlaJlPBomt7HsSQegqgWCE/SqQSiO0YNZRvFCNAz9Ncdak70UOLOo5trkZKUL+kzGJawDP2mrvTL0F+9uZbibDvnz0r9ihgDUVWQwRnTCnh4S63KKRom8RBEG4GZQoipQggbcAvwZNQ2TwIfDEXPnQG0SynTP9xrHLh0bgk5DkvaFUINBrXcoTOnFVJVkJHo4Yw56Zqh39jp4bW9DVy/pAKLOa2zRQDNzHqs2cXGoxMn2TwejPrJkFL6gc8CLwB7gIeklLuEEHcKIe4MbfYscBg4CPwF+PRoz6vQcFjNXLu4gud31tPekz4Z+huOtnC8xZX25hydmSXZLKrK4+HN6bWafvzdOvzB1OumO1KuCCWbp1sU5Fib/uOyRJFSPiulnCWlnC6l/FHotT9JKf8U+ltKKT8Ten+BlHJTPM6r0Fi1vBKPP8jT29PH2rl6Uy1ZdgtXzE+v3KGBWLWskr31neys60j0UOKClJKHNtWwpDqPGZOyEz2ccSHDZuG9C8vSKtm8w+3jjJ+8whNbx05bT39deQKwoCKXWSVZrE6TDP0uj59nd5zk6kVlOG3pUxFjMK5eqLWDTxcz67badg40dLFqWfrUeRwKq5ZXpVWy+dPbTtLY6WFyYeaYnUMJojRAy9CvCpXCSf0M/We2n6DHl9rddEdCboaV98wr5YmtJ9KiHfzqTTU4rCauWjRxtFqA5aFk83RJq3hoUw2zSrJYVDl2hQGUIEoTrltSgdkk0iIEePWmWqYXZ7IkRdtIj4ZVyypp70n9dvBuX4AnQxUxctKwIsZA6Mnm64+kfjv4/aHCADctrxrTwgBKEKUJxdl2Lpw9iUe31OFP4Qz9Q41dbDrWOuYPfrJydpq0gzcqYkyQIIVo3rekIi3awa/eVIPFNPYVMZQgSiNWLa+ksdPDmwdGXpEi0RhtpJemb0WMgUiXdvAPbarRKmJMTd+KGANRnufknBlFPLKljmCKJpv7AkEe3VLHxadNGvPCAEoQpREXzZlEYaYtZYMW/IEgj2yu5cLZxUzKTu020qNBbwf/6LupeR9rWlysPdTMqmVVaV0RYzBWLa+irq2HtSmabP7q3gaau73j0lRUCaI0wmo2cd2SCl7ec4qWbm+ihzNs3jrQREOnhxsnWJRVNFOKMlkxpYCHN6VmTtEjWzQBesOyianV6lyW4snmqzfVjFtFDCWI0owbl1XiC0ieHMOY/7HioU01FGTauGjOpEQPJeHcuLySw03dbDneluihDItgULJ6Uy1nTS+kMj/9K2IMhMNq5prF5Ty/s54Od2olmzd0uHltXyM3LK0cl4oYShClGaeV5TC/Quv6mUqr6eYuDy/vOcX7lqRXG+mRcuWCMpzW1MvQX3e4mbq2nnEx56QCNy6rwuMP8tS21Eo2f2RLHYFxrIihvvFpyC2nV7P7ZAfbatsTPZQh8/DmWnwByc2nqwkMIMtu4ZpF5Ty57URKrabvX3+cXKeWD6WARZW5zCnN5v71x1NmYRgMSv6z4TgrphQwvThrXM6pBFEact2SCjJtZu5751iihzIkgkHJ/RuOs2JqAbNKJkYpmKFw+xnVuLwBnkiRQqgNnW5e2FXPqmWVOKwTpyLGQAghuP2Myew6kToLwzUHmzje4uL2M6rH7ZxKEKUhWXYL1y6p4KntJ2h3Jf9qes3BJo41u7h95fg9+KnAwso8FlTkcl+KrKZXb6rFH5Tcqu5jBNctLicjhRaG960/RkGmjcvnj59WqwRRmnL7ymrcvqARwZTMJOLBTxVuX1nN3vpONh9L7rYCgaDk/vXHOWt64biZc1KFbIeVaxenxsKwvt3Ny3saWLW8Ertl/LRaJYjSlHnluSypzuO+9ceSejWdqAc/VbhmcTnZdgv3rT+e6KEMyBv7G6hr6+H2lZMTPZSkJFUWhg9sPE4gKLltxfhqtUoQpTG3r5zMocZu1h9pSfRQ+kV/8G9foSawWGTYLFy/tIJndpxM6tyw+945TnG2ncvmlSR6KEnJ/IpcFlcl98LQHwjywIYazptVPKaVtmMxKkEkhCgQQrwkhDgQ+p3fz3ZHhRA7hBBbhRCqF9E4cdXCMnIcybuaDn/wqwsnds7JQNy2cjJev1Z1IhmpbXXx6r4Gbl5ehXUCdGEdKbevrE7qheGrexuo73AnxFc72qfmG8ArUsqZwCuh//vjQinlYinl8lGeUzFEHFYzNy6r4vmdWj+RZOOVBD74qcTs0mxOn5LPfeuPJWXdsgc2aLlOt6xQofcDcdXCcnIcFv6dpEEL/15/nJIcOxcnIKF8tILoWuCfob//CVw3yuMp4sztZ1TjC2h5AcnGP9cepSzXkZAHP9V4/xmTOdrs4o0kK2jr9gX4z4bjXDR70oSvpDAYTpu+MKxPuoK2hxq7eHN/I7euqB6XSgrRjPaMJVLKkwCh3/3NKBJ4UQixWQhxx0AHFELcIYTYJITY1NiYXF+6VGR6cRYXzi7m3nXHkqrZ2q4T7aw91MyHzpqSkAc/1bhifhmlOQ7ueetIoocSwRNb62ju9vKxc6YmeigpwYfPmkJQSv657miihxLB39YcwWYxJSzYZNAZQAjxshBiZ4yfa4dxnrOllEuBK4DPCCHO629DKeXdUsrlUsrlxcVjX2xvIvCxc6bR1OXhya3JU2bkb2uO4rSaufV0ZZYbCjaLiQ+eNZk1B5vYW9+R6OEAIKXknjVHmFOazZnTJ2a7h+FSXZjBZXNLuX/9cVxef6KHA0Brt5dHttRy3eJyirPHtt1DfwwqiKSUl0gp58f4eQI4JYQoAwj9jtlWUkp5IvS7AXgMWBG/S1AMxtkzCplTms09a44kRcROQ6ebp7adYNXySnIzJlb3ztFw24pqnFYzf1uTHFrRmoNN7D/VxcfOmTohmxiOlI+fO5X2Hh+PbEmOihn3bziO2xfkownUakdrE3kS+FDo7w8BT0RvIITIFEJk638DlwE7R3lexTAQQvDRs6eyt76TdUnQG+Xf647hCwb5yNnKnDMc8jJs3LCsgse3nqCpK/HBJ/esOUJRlp1rFpcneigpxbLJ+SyqzOXva44kPPjE6w9y77qjnDOjiDmlOQkbx2gF0U+BS4UQB4BLQ/8jhCgXQjwb2qYEWCOE2AZsAJ6RUj4/yvMqhsk1i8spyrLxxzcOJXQc3R4/975zjIvnlDC1aHxzFdKBj549FV8gyN/fTqxWtOdkB6/va+SDZ05WicjDRAjBx86dxuGmbl7cfSqhY3liax2nOjx87NzELgpHJYiklM1SyoullDNDv1tCr5+QUl4Z+vuwlHJR6GeelPJH8Ri4Yng4rGY+fu403jrQxLaatoSN4771x2hz+fj0hdMTNoZUZlpxFlfOL+Petcdo70lcuZi7XjtIlt3CB89Uicgj4cr5pUwpzOCu1w4mzFweCEr+8Poh5pblcME4NL8bCBWuNIF4/xmTyXVa+f1rBxNyfrcvwN1vHuGcGUUsrY6Z+6wYAp+5cAadHj/3rj2akPMfauzimR0n+cCZk8nLsCVkDKmOxWzi0xfMYEddO2/sT0x08DM7TnKkqZvPXTQj4T4+JYgmEFl2Cx89eyov7T7FnpPjH3n14MYamro8fPaiGeN+7nRibnkOl5w2iXvePkK3Z/wjr/7w2iHsFpMK2R4l1y2poCLPye9eHX+tKBiU3PXqQWZMykqK3lFKEE0wPnzWFLLsFn7/6vhqRR5/gD+9cYjTp+SzcmrBuJ47HfnMhTNoc/n41zhn6R9vdvH41jpuWzGZoqzEhPqmCzaLiTvPn8bmY63jHkT04u5T7DvVyWcvnIHJlPiIRyWIJhi5GVY+cvYUntlxkh3j2KjrX+uOcbLdzecvnplwM0A6sKQ6n/NnFfPH1w+Na2uBX760D6tZcMd508btnOnMquVVlOU6+NkL+8ZNK/IHgvzixX1MK8rkqoVl43LOwVCCaAJyx3nTKMi08eNn94zLw9/e4+P3rx3k3JlFnDtTJSnHi69fPocOt48/vDE+2u2O2nae2HqCj549ldJcx7icM91xWM188dJZbKtp49kd9eNyztWbaznY0MXXLp+dNFVNkmMUinEl22Hl8xfNYN3hZl4fB0fpH18/RHuPj69fPmfMzzWRmFuew/uWVPD3t49S19YzpueSUvKT5/aQn2HlzgtUxGM8uWFpJbNLsvm/F/bi9QfH9Fwur59fv7SfpdV5SeEb0lGCaIJy28rJTC7M4GfP7SUwhkl1J9p6+NvbR3jf4grmV+SO2XkmKl++bDYAv3xx35ie5439jaw91MznL55JjkNVw4gnZpPgG1fO4Vizi/vXj63P7563jtDQ6eFbV56WVCZyJYgmKDaLia9fPoe99Z38YwzDgL//5C4E8KXLZo3ZOSYyFXlOPnr2VB7dUsf6w2Pj8Hb7Anz/yV1MKcxQHVjHiAtmFXP2jEJ++dJ+GjrGpjL38WYXd71+kMvnlbJ8SnIFDClBNIG5Yn4pF84u5pcv7qO21RX34z+/8yQv7j7FFy+dpVoEjCGfv3gGlflOvvnYjjGpsP7bVw5wtNnFj963AJtFTRljgRCCH147H48/yA+e2h3340sp+fbjOzALwX9fMzfuxx8t6qmawAgh+OF18wH47uM74xq40N7j43tP7OK0shyVbzLGZNgs/Oh9Czjc2M1dr8W3hNOekx3c/eZhblhaydkziuJ6bEUk04qz+PxFM3hmx0lejnPpn8fereOtA0187fI5lOU643rseKAE0QSnMj+DL182m9f2Nca1GvAPn95NU5eHn16/QLWPHgfOn1XMdYvL+ePrB9lZF5+wfI8/wNce3k6O08p33ntaXI6pGJg7zpvO7JJsvvP4Tlq6vXE5Zn27mx8+vZsl1Xm8/4zkNK2qGULBh8+awsqpBXzn8R1xqbjw4MbjPLy5ls9cOINFVXmjH6BiSHzv6nkUZdn51H2b45Jb9MOnd7Ojrp2fXL+A/ExVymc8sFlM/PKmRbR0e/nCA++OOpDI6w/y6fs24/UH+fmNizAnQfJqLJQgUmA2CX532xJyHFY+9e/NdLhHPontrGvnu0/s4pwZRfzXJSpAYTwpyLTxh9uXUt/u5osPbR1Vi4FHt9Ty73eO88nzpyVVmO9EYH5FLj+4dh5vHWjiN68cGNWxfvLcHrYcb+NnNy5kxqSsOI0w/ihBpABgUraDP9y+lNrWHj53/7sjymeob3fzyX9tpjDTxm9uWZy0q690Zkl1Pt+7ai6v7m3g/14YWUj35mMtfOuxHaycWsBXQ+HhivHlltOrWLWskt++coCnt4+ss/KDG4/z97eP8tGzp3LVwuTuGaUEkcJg+ZQC/ve6+byxv5HP/+fdYUVg1be7uf2v79De4+PuDyynUNUhSxjvP2Myt6+s5k9vHOI3Lx8YVhDKu8db+fDfN1KW6+Su25cmTeb9REMPJDp9Sj5ffHArL+waXtWFR7fU8o1Hd3D+rGK+eWXyJ5KP6ikTQqwSQuwSQgSFEMsH2O5yIcQ+IcRBIcQ3RnNOxdhyy4pqvnfVXJ7fVc+H/raBxs7BO4HuqG3nhj+u5VSHh799+HQWVKrE1UQihOB/rp3PDUsr+fXL+/nWYztx+wZfVDy34yS3/WU9BZk2/vWxFaqoaYJxWM3c8+HTmVeey6f+vZl71hwZdFERDEp+98oBvvTQNs6cVsif3r8sJYKFxGhCdoUQpwFB4M/AV6SUm2JsYwb2o3VwrQU2ArdKKQcNll++fLnctKnPIRXjwGPv1vKNR3aQ7bDyzSvmcO3i8j6r4y6Pn7vfOMSf3jhMUZaNuz+4XFVPSCKCQckvXtzHH14/xOySbL539VzOml7YJ6P+ZHsPP39hH49uqWNxVR5/+eByirOVEEoWXF4/X3hgKy/tPsV5s4r57ntPY2ZJdp/tdp1o53+e2s36Iy1ct7icn924MOm65wohNksp+ygtoxJEYQd/nf4F0ZnA96WU7wn9/00AKeVPBjuuEkSJZW99B19/ZAfbatooz3Vw4ZxJTC3KxB+U7D7RwSt7TtHtDXDNonJ+cM08FVmVpLy69xTffXwXdW09zCnN5tyZRZTlOuny+Hn3eCtvHmjCLASfOG8qX7h4lkpaTUKklPxz7VF++eJ+Oj1+Vk4tYOXUAvIzbTR1eVh3qJktx9vIy9AWjjctr0qqEj46iRRENwKXSyk/Hvr/A8BKKeVn+znWHcAdANXV1cuOHRvffiuKSIJByUt7TvHgxhrWH26m26uZeCZl2zlvVjEfPHMyCyvzEjtIxaC4fQEe3VLHY+/WsrWmDV9A+95PK8rk4tMm8cEzp1BVoKpfJDvNXR7uX3+cZ3acZN+pTqQEk9AK4F61sJxbT68mNyN5awGOWBAJIV4GYsVvfltK+URom9fpXxCtAt4TJYhWSCk/N9iglUaUXEgp6ejxY7UIMmyWRA9HMUICQUlHjw+nzYzDmlymG8XQ8fqDdHn8ZDssKeEHgv4F0aCziZTyklGeuxaoCvu/EhhZPKIioQghknq1pRgaZpNQZtQ0wGYxUWBJj/s4HmJ0IzBTCDFVCGEDbgGeHIfzKhQKhSIFGG349vuEELXAmcAzQogXQq+XCyGeBZBS+oHPAi8Ae4CHpJS7RjdshUKhUKQLcQlWGCuEEI3AaKMVioCmOAwnWUn36wN1jemCusb0YDTXOFlKWRz9YlILongghNgUyzmWLqT79YG6xnRBXWN6MBbXmBqhFgqFQqFIW5QgUigUCkVCmQiC6O5ED2CMSffrA3WN6YK6xvQg7teY9j4ihUKhUCQ3E0EjUigUCkUSowSRQqFQKBJKygqiwXocCY3fht7fLoRYOtR9k4VRXuNRIcQOIcRWIUTSFuwbwjXOEUKsE0J4hBBfGc6+ycIorzFd7uPtoWd0uxBirRBi0VD3TQZGeX3pcg+vDV3fViHEJiHEOUPdd1CklCn3A5iBQ8A0wAZsA+ZGbXMl8BwggDOA9UPdNxl+RnONofeOAkWJvo44XOMk4HTgR2iFdYe8bzL8jOYa0+w+ngXkh/6+IpW+j6O5vjS7h1n0xhUsBPbG6x6mqka0AjgopTwspfQCDwDXRm1zLXCv1HgHyBNClA1x32RgNNeYKgx6jVLKBinlRsA33H2ThNFcY6owlGtcK6VsDf37Dlrx4yHtmwSM5vpShaFcY5cMSR4gE5BD3XcwUlUQVQA1Yf/Xhl4byjZD2TcZGM01gvaQvCiE2Bzq8ZSMjOZepNN9HIh0vI8fQ9PkR7JvIhjN9UEa3cNQfdG9wDPAR4ez70CkalOZWK0Ho+PQ+9tmKPsmA6O5RoCzpZQnhBCTgJeEEHullG/GdYSjZzT3Ip3u40Ck1X0UQlyINlHr/oVUuI+juT5Io3sopXwMeEwIcR7wQ+CSoe47EKmqEQ2lx1F/26RKf6TRXCNSSv13A/AYmvqcbIzmXqTTfeyXdLqPQoiFwF+Ba6WUzcPZN8GM5vrS6h7qhATpdCFE0XD37e+AKfeDpskdBqbS6xybF7XNe4l05G8Y6r7J8DPKa8wEssP+XovWrj3h1zXcawzb9vtEBiukzX0c4BrT5j4C1cBB4KyRfj4pen3pdA9n0BussBSoC809o76HCf8ARvHBXQnsR4vW+HbotTuBO0N/C+Cu0Ps7gOUD7ZuMPyO9RrTolW2hn10pfo2laCuuDqAt9HdOmt3HmNeYZvfxr0ArsDX0s2mgfZPtZ6TXl2b38Ouha9gKrAPOidc9VCV+FAqFQpFQUtVHpFAkDCHEuUKIfQO8P0UIIYUQYx4MJIR4TgjxobE+j0IxlihBpJjwCCG+KUKt7cNeO9DPa7dIKd+SUs4Oe/2oEOKS8RpvOFLKK6SU/0zEuRWKeKEEkUIBbwJnCyHMAEKIUsAKLI16bUZoW4VCEUeUIFIoYCOa4Fkc+v884DVgX9Rrh6SWD3KBEKIWQAjxL7SIqaeEEF1CiK+FHfd2IcRxIUSTEOLb/Z1cCPEPIcRdQohnhBCdQoj1QojpYe+fJYTYKIRoD/0+K+y914UQHw/9PUMI8UZouyYhxINh280RQrwkhGgJ1QS7acSflkIRZ5QgUkx4pFaWZD2asCH0+y1gTdRrfbQhKeUHgOPA1VLKLCnl/4W9fQ4wG7gY+J4Q4rQBhnEr8AMgHy0M+EcAQogCtCz23wKFwK+AZ4QQhTGO8UPgxdAxKoHfhY6RCbwE3I9W1+5W4A9CiHkDjEehGDeUIFIoNN6gV+iciyaI3op67Y1hHvMHUsoeKaUevrtogG0flVJukFL6gfvo1cTeCxyQUv5LSumXUv4H2AtcHeMYPmAyUC6ldEsp14Revwo4KqX8e+gYW4BHgBuHeT0KxZigBJFCofEmcI4QIh8ollIeQEs+PCv02nyG7x+qD/vbhVa9eLjblgPHorY9RuxaXl9Dyy3bIITYJYTQa4FNBlYKIdr0H+B2tPwlhSLhpGqtOYUi3qwDcoE7gLcBpJQdQogToddOSCmP9LPvWCbjnUATJOFUA8/3GYSU9cAnAEK9Yl4WQryJVpDyDSnlpWM4ToVixCiNSKEApJQ9wCbgS2gmOZ01odcG0oZOoWXQjwXPArOEELcJISxCiJuBucDT0RsKIVYJIfT2A61oAjIQ2naWEOIDQghr6Of0QXxWCsW4oQSRQtHLG2jO/DVhr70Vem0gQfQT4Dshs9dXBthu2EiteOZVwJeBZjTz21VSyqYYm58OrBdCdAFPAl+QUh6RUnYClwG3oGlY9cDPAHs8x6pQjBRV4kehUCgUCUVpRAqFQqFIKEoQKRQKhSKhKEGkUCgUioSiBJFCoVAoEkpS5xEVFRXJKVOmJHoYCoVCoYgDmzdvbpJSFke/ntSCaMqUKWzatCnRw1AoFApFHBBCRFcJAZRpTqFQKBQJRgkihUKhUCQUJYgUCkVa8Pi7dXz94e2JHoZiBChBpFAo0oK1h5p4bufJRA9DMQKUIFIoFGmB1x/E7Q8mehiKEaAEkUKhSAs8/iBef5BgUNXPTDWUIFIoFGmBJ6QNeZRWlHIoQaRQKNICb0gAuX2BBI9EMVyUIFJMWB7ceJyfv7A30cNQxAmPXxNAPUoQpRxKECkmLC/vaeDZHfWJHoYiTniURpSyKEGkmLC4fQE8atJKG3pNc8pHlGqMmyASQlQJIV4TQuwRQuwSQnxhvM6tUMTC4w8qx3YaYWhEfrW4SDXGs+ipH/iylHKLECIb2CyEeElKuXscx6BQGHh8ASWI0ghdu1WmudRj3DQiKeVJKeWW0N+dwB6gYrzOr1BEo+edKNIDbyAUvq1McylHQnxEQogpwBJgfYz37hBCbBJCbGpsbBz3sSkmDm5fAG9AJUCmC7oAUhpR6jHugkgIkQU8AvyXlLIj+n0p5d1SyuVSyuXFxX36JykUcUM3y+kr6XCe31nP5mOtxv9SSg6c6hy3sSmGj/IRpS7jKoiEEFY0IXSflPLR8Ty3QhGNvnKO9hMFgpI7/72ZG/641nht49FWLv31m+yt77N2UiQBUkpjQaGi5lKP8YyaE8A9wB4p5a/G67wKRX/0loSJXEHvOdlX2Jxs7wGgtqWnz+tba9rGZoCKIRO+mFCmudRjPDWis4EPABcJIbaGfq4cx/OPmvYeH+0uX6KHoYgDUspejShqBb3+SAsARVk247WOHu2+t7i8Edv+7tWD3HGvamefaCIFkdKIUo1xC9+WUq4BxHidbyz4xiPb6fEF+MdHViR6KIpR4g9K9BiFaB/R+sPNAGTae78eHW4/AK3dkYKoocNDU5eHYFBiMqX0453ShEc/qhI/qYeqrDAMTnW4OdbsisuxDjV28aWHtuKL4ShXjD3h5ptojWhTKEihMyR8oH+NqM3lJSgjt1WMP+HmVVUtI/VQgmgYuH1Bmjo9Md/r9viHJVRe39fIo1vqqGvtGXxjRdwJN+WET2K+QJCWkNbTFS6I3CFB1BUpiHTB1NYT+boivmw62sJr+xr6fV/5iFIbJYiGgdsfoNPjj/mgX/37NfzsuaFXcm7u0gRal0etpBNB+D0MN+t0h+5HUZYdbyBobNfREzLNRWlEuqmuVfkOx5TfvXqQnzy7p9/3vcpHlNIoQTQM3F5tUmqJ8hP0eAMcbuzmuZ31SDm05Ej9GMqkkxgiNaLev/WFQVmuA+i9P4ZGFHbvA0FJe8hkFy2gFEPnvvXHeHRL7YDbtPX4jM86FhEakcojSjmUIBoG7tDD3tQVaZ6rbdX8RnVtPRxu6gbgSFM3d/5rMz3e2F+KppCJR2lEiSHCRzSgINImv16B0zsZdvT4jICHNiWIRswfXjvEtx/bSUOHu99tOnt8hlYai3C/kDLNpR5KEPWD1x/ksXdrI8q/6A94c5SfoKa1N4Dhzf1aWaJ1h5p5fld9vwmQLd26aU6ZdBJBfz4i3S9UnufU/g8JJiNYIUwjCteC2pRpbkS4fQHq2nro8QX4f68c6He79h4fPb5Av7UBwyMfw01zPd4AN/95Hf/ZcDxuY27q8nD/+vgdT6EEUb+8tq+BLz64jTdCgiU876SvRqQFHBRk2gxBpK+gT7bHXuXFcogrxo/+fESdIcFT2sc0p/1u7/EZQSnhgkj5iEbG0WbNgmAzm1h7sKnP+9tq2mjt9hrfJ91EGo0e+ZhhM0fc228/voP1R1p4YBBB1NTl4SfP7uFPbxzSjucP8IfXD/ZJdgZ4atsJvvXYDhr7CVxSDB8liPqhpkXTct45ouWU+AK9eSdN0RpRiwu7xcTl80vZeLQVfyBofHFOtMWOitO1qk5lmksI/fmIumOY5qSUdPT4yA7lFenaT0t376SoTHMj43CjJohml2b3CTIIBiU3372O37xyAH/oy9cRw09U2+qiMbQ4zHVaI0zoj26pA6A4297vGL744FZW/Ohl/vzmYX4aCjh6+2AT//f8PtYfbumzvf6MdKvvbtwYz35ESU8wKAlIidVsoi4kQPQHMdwB2hylEdW09FCZ7+TMaYXcv/44u050DKgReULRd6A0okQRnjsU7l/Q70dZrmaae+dwCzUtPfiDkslFGeys66DV5aU4225oRDazSZnmRsiRkE91Tmk2x1tcSClxeQNk2i00d3tx+4IR5u3ogIWaFhfn/t9rxv+5TqtxPw81dBmvDxQU9MyOk5w5vZC8DBvP7jiJLxA00ipi+XC7Q37fbq/67sYLpRGF8fVHtrPg+y9oduvQg7ijrp3uqJDt5u6+PqKqggxWTisAYP2RZmPlptco06ltdbHuULPxvwpWSAzhJpdw/0J0sMI/1h7lR6Gw4cmFmUCvWVUP3Z5cmBFhpjvR1oNfJSoPiUONXZTmOCjMstPjC/DAxhrm/fcL1LS4aOh0h7bpNrbvCBMoUkq++ODWiOPlOKxGZYXDYUKuP0HkC2g9qVZOLeScGUVICQ2dHmpDC9FYC0U9AKm/QCTF8JnwgigYlFz7+zU8t+MkqzfX4vYF+cUL+6hr6yHTZiYQlGw53hqxgo7lI6rMdzIp28G04kzWH24xbNkn2iI1om8+uoOP/7O3Nll/X5C3DjRy8S9f59P3bTYitxTxI1IjCvMRhe5HSY6jzz5TCjOAXrNqq8uHzWyiIt9paERuX4CzfvoqX3t4+5iNPZ040tTN1KJMnFYzXn/Q8LFuOtZCQ8gHE+6LCdeIGjs9RhUMnRyn1Vg0Hmrowm4xMbs0m85+goJcHm3bTLvF8AvWt/cMrBHppjkliOLGhBVEer7PnvoOttW2883HdjCvPAeAf647yrFmF2dMKwQ0QROuEYX7iA42dNHe42NqURYAS6vz2VHXHmaa69WIPP4AG4+2GPZu6F8Q/f7VgxxrdvHsjnq21bTH45InJM9sP8m5//dqn4ra4abWaB9Rps2MzWIiw2aO2GdhZR42i4ktx1vZXtvGlmOt5GVYyc+wGRqRri09+m7dWF1SWnGkqZspRZk4bdpUVJSl+XKONbto7OgbDBDuI9oX6g+lLxAg5CMKLSwONXYxrTiLHIe1j2ajazNdIfNaps1saMH17R7DNB9LELl8ukakrBnxYkIKojf2N7LwBy/S4fax5oAWqbOwMo8uj5+8DCu+gKTL4zcEU5vLZ6j7k7Lt1Lf3GILsT28cwmE1cd3icgDKcx00dXmMVXNDp8eIstp6vC3CIVuUZY8Zvn3gVCfrj7Rw0+lVQF/znkLjhV31A2bbA2w8qvl4bvrzuojK6eFaULRpTi92mu2IdKGW5DhYObWAF3fXc8vd77DhaIvxzOjHDvcVuX2BISc4g5Yg+8jmWgITpGNsl8dPm8tHdUEGTqsm9P1B7V4caeo2THPhhGtE+09pPqCzZxQZr+WGaUSHm7qZVpxJtsNCp9tv3IvX9zWw6H9epL7dbWg3mXYLZTmaX/DkIBqRywhWUBpRvJiQgujAqU463X7qWntYEwoZzbCa6fb4uXD2JCyhKsrTJ2Vhs5hoc3kNAbKoKo9Wl49THR5Odbh5/N06bl1RTWFoJVeS6yAo4UR7Dw6rCSm1YqkA6w43IwSUhsw+kwszYj7oj2+tw2ISfO6iGQDU9xMCPtF5cdcp/vXOsQG30Se2TrefAw29HVb1ySrLbokIVuj0+Mly6ILIGnGsHIeF82cVU9PSg8sb4KzphXzk7CnkZ9jo9Pjx+oMRNeeW/fAlvvzQtiFfz4YjLXx59TbeOtA45H1SGX2yr8h34ggJIt3asK++0zDNhRMevr2/vpOCTBtzSrMBEAKyHBY8fq00U02Li+nFWWQ7rPiD0tB83z7YhNcfZGddu/H9y7JbyHFacFrNIf+Udu5YFgtXSJtyqcTZuDEhBZH+8J1o62FDqPdMp8dHp9vPpBw7i6ryAKjIc5KfYaXV5TUmruWT8wEtiOHtg034g5JVy6qMY5dka0JGSphdkh06jyZI1h5sZl55Du+ZV0KGzUx5njOmM/REm5vSXAdluU4KM22cmOCCqLXby9cf3o4ryhTS7fHj8gYGzKQPX7WGf44efxCT0PJOIioruP1GmHZW6Pf5s7SW9blOq/H3yqkF3P+JM/jqe+ZQEUp+Pd7SHaF1dXsDwzLR6ZOsnjqQ7tS1addZkefEGTKD6qbNgw1dfVIfCjNtfUxzs0qyjNBsu8VkaFZ7TnYQlDC9ONNYWOif7/ZazdR9sLErQiMSQlCa62DL8TbjHDE1Iq8yzcWbiSmIQpP/5mOtxiTU0u3D4w+Sbbdw1nTNN1SZn0Ge00aby2dMdkuq8zEJ2FnXzsajLeQ4LMaKDHoTIQFWTNWi6N493kprt5dNx1o4f1YxX37PbFbfeSbZDovxoN/853U8sbUuNBYvhZlaU7ayPAf1E9w0t/5IMw9uqjEmEB09fDa69l84nW4/lfkhk0vYxOb2BXBYzThCTnLjmGEaUY7TSkWekz9/YBmPfOosCrPszJiUxWcunM6333uasc/s0P3fV99lmI4+evZU5pRmYxL0Ww0gGn1SrJ0gFdl1jagy32kIEP1e+oOStYeaDT9dtt1CXobVKPMjpeTAqU5ml2QbfiW7xUxF6F6/uPsUALNKsskJ3c9Ot59gULKzLiSIGrqMhUqmXTtPaY6DHXW9z1lXjEAhfUGkTHPxI60FkZSSu9881Me0pU/+u05oDuySHLsx2WfZLXz8nGn87tYllOY6yMuwaoIoNJnkZ1iZXpzFzrp2NhxpYfmUgoiGaOHRVjMnZTOrJIs1B5t4ZW8DQQnvmVdKjsPKvPJcsu2a7drtC7D+SAubQxFArS4v+SFBVJrj7Lc6w0TBqG4QlUOiT9wDCaJuj5/SHAdZdkvE5+jxB7FbTNgspj615jJt2sT16Qum8/1r5uGwmlkW0oSFEHz1PXNYWJln7DNjUhYmAfvqO2gLjfEr75nFJ86dRlBGloAaCP16hrp9qlPb2oPNbKI4y24IoqYuD3kZVoTQNA99kZfjtJLrtPYmire76fYGmBkmiGwWE6eFtn9y6wnMJsG04kxDs+1y+znc1G1Eu2mCSA9W0LbJz+w1x07px3RuaERhmvhtf3mHX7+0P06fzMQjrQVRY5eHHz+7l2d3nIx4XU8m3R2KpJo5Kdso0ZJpt5CbYeXqRVrwQX6GjbaeXtOcw2pmfkUuG460cKixm9OnFEQcuzDTZviYcpxWzplRzPojLTy17QSlOQ4WVOQa22bZNXu2Hp6qT6jNXV4KMkIaUa5DCaKoMjs6+oQQndcVTrdXCz7QPse+GpHdYorIKep092pEZ0wr5NK5JYOOz2E1M6Uok731nbSFQrqdVjNTi7W8o6NN3YMcQaMrtMKeKBpRbVsP5XkOTCaBI6T5dLr9zCjOMqwSc0MBQzlOKzlOKyfae3j7YJOhTVUXZESY5qYWZWILJaRPK8rEbjEbvr5Ot58ddW2AZq041NBlaNV6gMqCijwAfnDNPGZMyjbuSTixKitsq2njYFgCrWJ4pLUg0iOjon0LumlOFwAzJmUZ70VHSuVlWGl1+QyHtsNq5qzphYYw05NYdUwmwaTQFyPXaeXcmUV4/UHe2N/IlQvKEKJXe9InPN0noIcAt7q8FOgaUa6D9h6fcQ0/eW4PK370Mt99fOfwP5AUJbrwaPTregHZ/vbNclgoy3PG1IjsMTSibPvwC47MKc1m/6lO2nu85GZYEUIwNZQAe2SIgki/xxPGR9TaY5jSHJbeUHmnzcwV88sACAS10Opcp4Usu4XDjd3c/tf1bK9tA7SFWqZdCzKwW0xYzCbj+zwrpB0ZGpHHx47aDpxWM5fPK6XT4zdKDOnbfOycqWz6ziV86KwpIdN5X9NcjxG+3fu7exBfpWJg0lsQ+fVSHJEPSLi6nZ9hNfwxAFn2yEipvAxbRNScw2pi1fIqXvvKBfzzoytYEgpsCKck5CfKdVo5Y1ohZ0wr4FMXTOer75kdsZ2+UtNNMS3dmi/K5Q0Ypjk9t+GHT+/mcGMXm4620tDp4cGNNRMmzFdP6I0ueOky+kP1n/Db5faTZbNQnuuISC7WNaJw05yUUssjGoEgml2Sw7EWFyfa3OQ6tfuan2kjL8M6ZEGkP5etLl/aVdyQUkaEsgeCkrq2HiPQwxmWs5Vps3DjskpuOb2KT5w7lZJcBwWZtohKBu8c1qqTlIX2L8q2YQsJszllmgDSg4WyjWAFTSOaW55j+PW217ZhEtr3GjTznm7qy7Jb+gQTef1BfAHtOnRtSk9w70lTQdTY6WHJ/7zIY+8O3DNqNKR1rTldeESX4gh/uEpyHIZmAkT8DZqg8gWkYf7Rw0ynFmUytSgz5nn18OzcDCtOm5kH7jgz5nb6KqymRTMztHZ7DfNcgSGItC/afzbU4AiFmIOW+3Kqw220K0hnen1EUZptPxrRh/62gQtmF/ORs6cagiXHaaGpy4PHH8BuMYdpRGbDr+PxB/EHZZ9nYCjMLs1GSthyvNWYAAGmFGYOWRCFm3rqWnuMyTId+OWL+1l/pJnVd55FTYuLi3/1Bl5/kIo8LRlV9xGBFsnosJr56Q0LAfjVTYvJdljwByTTJ2Vx95uH2XCkhWy7xfgOFWfZCckHw6+kf345oQVfu8vHzroObj69yhCABxq6yLRZIiwVOlmhYKKWbi9Zdgs2iyliLtEXQnqod7oKoi6Pf8yry08MjcgTewIDzfQVni+SZe9rmgOt7IfZJLCaB//I9IAFfWXcH/pK7ViYaS5aEE0v7hV2JiFweQPGiu34BDHh6GZQXSN6afcptte2GdFo4cEKHn+ANw80suFIC8GgpNsbIMthoTxXj5xz899P7OSN/Y3YQ+acdpeX1/c1GMcfiWlOn/Q63X7jmQGYXpzFvvrOiL5WoPmNoks3hUdhpZt57kBDJ3tOanlc+0914vUHOXdmEVcsKAUiBZEzqqLF4qo8phdnMbs0m69cNhshNO2mLK83MOjO86fzyfOmAXDB7EnMK88xUi30iLittW30+AIsrMw1vqOd7v414Cy7BV9ActEvX+cvbx0GIgud6oJI14jStUV5dEDHWJDegsjwEUWuVMIngNIcR4RfqK+PSBMIJ9vdOCxD+7jOm1XEhbOLyYz6QkWjfxn2hoImPP6gUVpEF0STchzs/eHlFGfbcXn9uLx+TguZHo43p9dk1R/RUXPfe2Inv3ixN0IpXBDVtvYYScT6pJFlNxuT1vee3MU/12lJsMebXditZo42u/jw3zfyq9AxZ5YMXxOpLsgwzDu5zl5T7xnTCmju9rK3vjeZ1uMPcPXv1vC7Vw9GHKPL4zdW6nX9tA9JVTrdfrpCxYN13+xPrl/ArNBn7bD1frcGMo3aLCZjUVGa22sNuGxeKVcu0PxKs0qyeebz5xpJ5hazVq5J73e0sDIXp81shHXrgioafS5oc/mMElGuGBqRfj3p6iMKT/odK9JbEPn7BitIqZXvsYWESkmOI2IFHP0lyAtpNfUdbsMsNxgXzSnh7x9ZEVPdD6c8NDkeauyNttEjb/Izeiczh9Ws2as9mv9oenEWZpOYOBpRlI+o0+2nNuzawwWRLpxPdXjCckQsLJ9cwOKqPN7c38h5s4q5dG4JHzhzMrYwDfeBjTVUF2SwIioSciiYTcKYVMM1ovNCCbBvhlVL2HKsjU6Pv0+Ulcvrp6rAic1s4kQK5451uH3cevc7EdGC+mKiudtrTNzhPYJsZhN6FoRzkO9ZVYEmgMpz+xam7Y8su4VWl48Mm9moC6kvBPubYMM1AD2S0eXtnZRd0T6iNC2CGp70O1aktSDSVyjhwQo9vgBBqa1gIdI0J4RW6iccPWigvn3ogmioZNgs5GdYCbfa6EIpPIBC29ZMl9uHyxsg12mlPM+RtoLotX0NRlQU9Pr0Onq0hMQuj9+YGEwiMnz7WKjjZ0On24h4yrJbcNrMrL7zTP7fzYv5zc2L+csHl/OZC2f0mfxuWl4ZkRc2HHTfULhJtiTHwZzSbKOqNMCag9rf0fevyxMgy26lJNee0mWd9tV3su5ws5EXB72LieYuD41dHnKdVuxhkXJCCOMeRBebjSb8uztUdD/OtYvLMYfur75/v6Y5R7gg0u6VrgUVZdlweQO8sKveeBbdMbq5gla6KdUq6Ld0e9l4VKs606UE0eiIpRHpk9qUUGhtaViwQpbN0mcS0le3Hn8QuzX+H1d0sMGhxm5MQsubCCfTZjHqcGXYzFQXZKStIPrhU7v5fy8fMP7vzSPyGfW99EKlZbnOCI1I97f5AtIIAtFXvFazieuWVBiLC+it4Pzdq+Zy64oqbls5ecTj1v1E4RoRaFrRpqOtxsJozUEt4qu21RURSaYFVpgpy3Vysi11BZHeODK8QKmhEXVpGlGsjqm6b2iogqg8d/iBOl+5rDdydVKoHFdGP76PcEtJU5eXHm/AmEuKsuw0dnr45L8288gWLZoslkb021cOcNOf13HvuoFrIiYbP352D7f95R26PX7DsqBMcyNED1YIt+vqju/L5pbw+YtmcOb0QsMWHCtaKs9pQwzRZDASdJ+AHml3qKGLvAybsWrTybSbDZNGht1CdUFm2jm0dbo8/og6Y4ZprsfXJ5y2qkDrBaQ3ogv/THTtcqCVnB58cuWCUn5y/ULDNzcSdEEUHaSybHI+3kCQXSc66HT72FHbRlGWHbcvaLS4BowIv7JcByc7Utc0p2uobeGCyNNrxmrq8lCc1VcQOQyNaOAJr2oEGtFDnzyThz55puE30vbXw7Rjf6/1+UD/Lta2usI0ot7j6GsJjz8YEZRytKmbX4WqLaRSK/keb4DndpzEF5Bsq20LM83Ff/7TSXNBFNKIwqKR9JVZUbaNL102G4fV3CuIYkxYNovJMLnE2zQHvRrRtFB0XJfHH3MyzLBbDFt0ps3MnNJsmru9fOGBd402E+lCjzdgOOsDocg3k9Ams+hcosVVWmTUtlAdumPNLmOSOBSVrBiL3926hL99eLkRlDIaTp9SwCfOncp5M4sjXtdzzbbWtHG4sZugxKjYEC44u71+suwWynKd1Le7+0TapQotIc29PTT5evwBI8JR9xHF1IiGaJq7YNYkPnzWlD5VTQZixdQCo/ajju4jGihqDnoLHde29hhzSVF27OclPDlar7oPqdWJ+cXd9YY7Y8ux1l7TnIqaGxm6KSSWaS48cdVuMWMzm/rNH9HrjNmGELo9XHSNSG9DDbAorI6ZTpbNYjTUy7BZuHVFNZ88bxpPbD3Bm/sb2VnX3qeCxHB64SQLUkpcvoARZaV/CUpyHEjZtyXGFfNLMZsEr+49RTAoOd7i4vQp2v06HNKIBhJE5XlOLpozeBmfoeCwmvn2e+dGmP5Ai3wsy3VogqhJG5NexVs3H/oDQdy+IJk2TSMKz11LNfRx66a58FYKzV2eQU1z0eHb0eRmWPn+NfMG3W4wBgtWKM11MKskiw+cqZlra1pdEaa5cPS5ITyXKPy6o3PgkplX9zZQnG1nWnEmW45rGlGGzTxi3+lQGFdBJIS4XAixTwhxUAjxjbE+X3j4tj4phzuww8l2WPp9IHVBNBY+GV0jCg9O+Pi5U/tsl2GPTPizWUx86bJZOK1m/vrWEa763Rp+E/KruH0BvvjgVi765Rsppy15A0GjYsTJth5DEOkCO7o1QFmug9On5PPKngZaXF48/iBLqvOAXo1oLJ2sQ2VxVR7bQhqR2SQ4e4ZWS01/pvQVqOYj0ibI03/0Mj9/YW9iBjwKok1z4RNyTUsP3d5ATEGkWxzG634NphFl2Cy8+MXzee+CMuwWE7WtPcZ90k18Z4bqEeoarjuit5V2/QWZtgh/WbLT0u2lIs/J8sn5bDneGtEscqwYN0EkhDADdwFXAHOBW4UQc8fynLqa7A9Kw7mtfymi84W0ciyx1W1dEI1Fbocewp2XYcVuMZHtsHBaWU6f7bIiQsy1L6zdotW9Wxcqd6Lbr3/10n4ee7eOI03dfVpkJzvhDt+6th7DP6TXJIsWRJl2CxfPKWFvfacRaVeVn0FBps0wZY6lk3WoLK7K43iLiw1HWqjKd5LtsFKSYzdMcxGdQsOc8He9digh4x0NeqULvVtteMSYHhwSy0ekm+bGwhcbC13gR88F0QghmFacxZNbT/Du8VZMAsMnOaUok798cDmXzdMEUbhGpGtBFXnOPiblZKajx0eO08qiqjzaXD72n+oc8+/QeGpEK4CDUsrDUkov8ABw7VieMLyqstGjvp/krF/ftJivhkXUhKNH6cwMK44aL6ZPyqIiz8n8ilze+ebFvPPNi2NuF+7ADf/7/Nm9/gj9C3W4sZv8UOTWlrAQ2lQgPLDkZLvbWDjommN0k0Cn1cyCSq2i+bpDmkCelGM3VrvhdcQSid7Oev2RFqM0VFmuk/qQHyFCEIVVDFhUmUuq0dwV2zSXZbcY5Y5G4yOKFyU5Dn576xKuW1wx6LY/v3EhQsDLezSzle7HPSd0X3Vtrscb4GBDJz97fq+RgF2R50yoRuT1B7n0V2/w/M6Tg2+MVrVCSxHRvnNHmrrHNFABxlcQVQA1Yf/Xhl4bM8JLbugqteEjiloFLajMpbowI+ZxhBC8+dULeeiTsWvGjYYch5W3v3ERZ0wrJD/TNoDjNLIopM5lc0uZEhq3fr0dPT5mlWRTlutgc1i3yZFQ2+ri2rveNkJyh8Lhxi4jn2e4hAuiE209xv2KZZrT7db6e1tr2gAtLPfCkIAOSgZNLB4P5pXnMC0kgKYVawua/FCvK+h9PrPsZqMFSKrS10ek/Z4c9v0ayEc0nqbUaxaV9/HpxWJ+RS4vfel8nvjM2Tz12XO4ZlE5T3zmbN67UKvmoAsijz/Aszvq+ePrhzja7MJuMVGcbe9TOX48qWvr4UBDV0Tn2YHo6PGR47AYWmuryzemgQowvoIo1mzQx5suhLhDCLFJCLGpsbExxi5DJ1wjcoX1IMrPsA6pZlw41YUZQ3pgx4oIjShMKJXmOnj9qxdSlGUzrrfD7SPXaWVpdf6oNaI9JzvZVtNmmFSGwjcf3cF/P7lrROfriRBEbsOkoWulx0KVEywmYUxYJTkOhMDorFmcbedzF80c0fnHCiEEV4V6XOkRknkZNqP1h64RZYRy2bZ891Ium1vSpzxVsiOlpFX3Ebm8BIPS6COlC5+zZxQaVSjC0Sfz0QYhjBVZdguLqvKYlONACMGisMr7TkMjChqLi6PN3WQ7tIZ+HW5/woKHdPOvnv4xEFJKOtyaaW5STu9iIZ1Mc7VAVdj/lcCJ6I2klHdLKZdLKZcXFxdHvz0swkMpXd4Ax5q7eWFXPbesqB7VcRNB+CoxlunCbjEbGlF7yMa7dHI+dW09/PDp3SOug6UHO0Tn7wxEq8s7YlNEeFHJ4y3dxpdnWnEmQsCJdq2r56Rsu1HLz2bRuny6fUFynVYcVjNOm5nXvnLBmGixI+XGpZVMK8pk5VQtUCEvw0p7aNKKNhkXZNrIdljjKog63T7uXXd0SBPi6k01/d5Dty/AB+5Zz776vouTjh4//qCkLNdBUEKX1288Ox8/ZxofOXsKf/3g6X3y5CDMNDdOPqJ4YggiX4C2Hk0QH23qJsehVX7X0xASgd5mpqFz8CTpHl8AX0CS47BSmGk3Ko+kTbACsBGYKYSYKoSwAbcAT47lCT0Rpjk//1x7DIvJxEfOmjKWpx0TdButEJFNxHQcVpNRYqS9R9OIbj69isvnlXLPmiNGQMNw8UUFeQyFbk9gxHW39P3OnVnExqOt/Oql/cyvyKE810lxlh0pNbNqtBlTt2eXhK3iphZl9skdSSTVhRm8+pULjMZteU4bnR4/vkAwZj2vDJu5T0j+aHhx1ym+98QuI5qwP443u/jqw9v5+D83Rrx+tKmb/3t+L9tq2njrQBPfeHR7xPvBoORQKDxd1/raXT7j2TljWgH/fXX/YddTizKoLsjAMgZpEmON7od0+wLG4qK520t2qMU5kDA/kZ4i0NAxuEakB1jkOC2YTcKIDkwbQSSl9AOfBV4A9gAPSSlHZr8ZIm5/wJDoLk+AnXXtLA6p1qmG/iBkWGPH89stZjy+IL5A0KhHl2W38OXLZgHDEyTh6ImIw0nI06ssjwRdA/j65XNYObUAKeH/3bwEk0kYUU6ZdjOLqvIiogv16EO9bEsqkJ+pTVBtLh9Pbz9JjsMSIUgz7Oa4a0TQty1KNC0hc+HGo60R2tPVv1/DH14/ZJjaTkUFjjywsYbr/7AWgGmhwqLtPT463Vqx0cEEzPvPmMzrX7lg6BeURDjCNKLWsCoKOQ6L0Q9pNH6iI03dg963aAJBycajLYZG1DgEP69uCteFp95tur/qE/FiXJceUspnpZSzpJTTpZQ/GuvzeXxBIyTb5QtQ2+qisiA1G8npzsKMflYmDqsJjz9gPOz6g6QLsOiH+Imtddxy97pBzTR6N8rBBJGUkh88tYs9Jzvo9vgHbRL2v0/v5msPb+vzuq4B5Dis3PuxFbz+1V4NQi/pkmW38uP3LeAXqxYZ++l1xybFcIInK/qz+eLuel7d28CnL5wR6Qu0WvD4g0PuxNvQ4eYrq7f1uwjQTUPdg2hZrWGJtHr7imBQGosZfWV/KsrnoBdzBYxFQltIIxqKj0EIMaZJk2OJruW5fYGI0kbZDsuINKJDjV188cGtePxaDuR1d73NPWuODGtMz+44yao/rePVPQ2Adi90P/Lhxq6Yx9PnD1146t+ntNGIEoHHHzDCmNt7fNR3uKnMjx0Zl+zoprn+Qls1H1HAeNhznHqvldiC6J3DLbxzuMUIH+4Pb1gAxEA0d3v5+9tHeXr7CfxBOeBKfm99B39dc4SHNvVtPawLMKfNjN1iNsKwobdbbazGdbppLpW0Xb3FyP3rj5NhM/PhKJOxfq+Hap5be6iZhzfXxvTdQK9WHF7yKhbhK/qXd58CYOeJduM1vW5atIA8cKqLC2cX89Rnz2F5qLpFW4+XTo9v0FydVEfXiMJNc6BN6HoB4+FoRG8fbOKxd+vYdaIDjz9Ie48vorjvUNhwRKue3eMLYA+1vdF9rveuO8YPn97dx4Suf89zDI1o4OoT8SLNBVHQiPc/1NBFUEJVfoprRP2EUWoaUdAQRIZGFJrMuqMmHz3Zc+/JgaPhDI0oNIm1ubwx/T96pNCJUNXogUxzP32ut1qA1x9Z+cEVVmEgGkMjijGpGYIohTQivefUvvpOphRm9qllqEdHDtU8pwuI/rbXFyOuqHsjpYzQjPW20LZQNYGHN9dy5782h52nd0LVfYhuX4BDjV0sqMxjQWVuhBbQ6fZHdEFOR/SmmS5vfDQifdFw4FSnYY3Qv3ePv1vHJ+7dFLH9ibaeiChhIKINx8JQPpouiPTFSvSYjIVs6DtWrDSi0eP2BQzzh/7Bp65GFNJw+tGIHFZNI9Lt9/rDbzGbsFtMfcwxhiDqZ/WsE12R4va/rufnL+zrs117KFJIz/PxBWTM8kLba9t4fV+jkVMSHcmjT6KxAjLKBugfM6VIO15lCi009HYR/qA0mr2F06sRDVEQhSaRHl9sDUqf0FxR2vH/PrOHD9yzofc4Li8mobU5b+zy8NCmGgJS8v4zqkPn6V2Z14V68eyr7yQoYW7IJKdfW1Onl+Yur2GZSFcsZhM2s4nmLm+EppjtsPb6iIbhp9W/b/vqu4xFoG4tePtgEy/vOWUUxQ0EJe/59Zv8c+1RGjrcnGzvodvjZ299BytDwTpnTNMiNRs6PUgpjXSMaEHUG6wQ0ohylCAaNR5/kGy7BatZsP+ULohSZ6IKx2YxYTWLfn1EdosJty8YtqLp/eJr3V37E0QDlwAywrdD+59sd1Mfo0WBoRGFdRaNpRX94bVDZDssfDlUxeJUVCRPj9ePs5+ADN00F8tMMKc0h4c+eSYXnxafAqbjQXjfIj1PKhxd+312x0m+P4S8LP3e9ye49HsYHUa8o7ad3WGloFq6veRl2CjJ0XrunOpws3JqIe9bUgn0akzQ2/9J339euSaI7BYzpTla88aaFlfM60s37FYTJ6MCOHIcFsMs+aNndvPI5r7m6FjoNTH3h2lE+veppduLlL3Cqsvtp9Pj53BjN197ZDt3/nsL22raCEr41AXTefTTZ3HbSm0R0dCpNSZsiUo61unPR5RWwQrjjd7Mrio/g+ZuL+awyKtUJNNuGVAj8vgDfUxz+n76Kvj7T+7irtcO0tSpPYj9+RN0esO3eyOuBjLNhVfHjhWw8Mb+Rq5bXMGMUHWBUx19NaL+/GCD1QZbMbUgZn5KspJlt2AJjTe2INI+h0e21PKPtUcHTUjUfRP9+YC63LE1opMdPbS6vMa9bnP5yMuwUpxlp6HTzcl2N6W5DiNEOdwHorcD31ev1SMLX+hVF2SwvVZri141AQSR02o2FmnlxrNqNRZVQQnfeXwne0528OuX9g8YKGRoROGmudD3qbeorPZb9+ucbHdzpKmbnXXtvHmgCSFgSXU+S6vzKc6yIwQ0drgjvvN9BJHbh9OqFVUGmFeeS2mOgxnFfROQ40l6CyJfALvFzK2hBNayXEdK5ijoFGfZ+5Sf19FMc8HeFU2UIOryaNE3j2yu5ZHNtfT4AjisJg42dPXx04Sjv9fp9uMPBPH4gzEFjO7g1n1K0LdjpTe0b0mO3fD3nOpw4/UHuWfNEe19b6DfPJNJOXYybOaU8gMNhBDC0IpiTdS6INJbUW8+1jJgBF2boRHFNgHp5lmXL8De+g48/gDBoORUuwcpMVbJrS4v+Rk2irPtnOrw4PUHKclxGEmb+r3OtJkNh/ipDk1YhZdTqi7M4ECDllc0ETQip81sLMSmhyI99UXTZy+cgc1swmISPLSpht+8coBDjd385c3DMe+Xvmho7PQYFdrDNSLoW8uvvt3NyTY3gaDkvvXHWFCRG2GiL8y00djljRBEzV0efvfKAQ6ELEYdPX4j0Am05/Kdb13cb/mzeJG6s/IQcIc0olXLK3FYTSlrltP5+0dOj2h1HI5mmtPCt+0WU4TjO9Nmptvjp7a1R1PhQ6vYJVX5+IOS2tb+21uEh2/rTu5YGlEsR2y0wNK1qmyHlfwMKzazifoON2/ub+SHT+/mzf2NA2pEdouZ575wLu8/Y+TtvJMN3YcZWxBpE4K+GPjj64eY+73nOdgQW4s1THNRn3u7y0ddWN2+k209XPXbNTz+bh0tLq/hB9Q1rlaXzxBEOqU5DuOZ0rXfqxeV89q+Bty+AM3d3j4NHcOFz1hPZMmAw2KmKVTwVa8rqAdpfOU9s/n6FXPo9PiNmm8/fnYPP3p2D8/vrO/TBLHT7TdyIPUainrllBajhFJkLb+DjV0RPl290K5OjsNKh9vHwYYuQ7t9ZW8Dv3xpP5f++k3WH27WyvskILAkbQWRlBKvP4jdYiYvw8YvVi1Kuvpjw6UyP4Pcfpy+dqsZj1+rc5UT1ao6026h2+tn14lIf9D8Cs2e3zCAySf8wdYFUCyNKDySSqdvaGhv1rYQgkk5dk61uzkaKpB6pKkbly+Ac4ACi5NjRJelMnlOK0L0FnUNJ1ogb6ttx+MP8tLuhpjH0qPmoj/3nz6/hw/es94w8RxrceEPSho7PRGmVN1v2NqtBReEJweX5vZqRG0uLxaT4MoFZbi8AdYcaKK5y0NRVqQgCi9yOhE0IkfY/ZpfoUWphSco6xG7eruSV/dq93HXiQ4u+fUb/PH13pYfnR6/EVh1JFQJo8cXwO0LGPdR14D1/6O15bOnRwqibKeVTreflm4v1QUZCIGhCYEW/q+XBxtv0lYQ6XXm9Pj5qxaW91khpBP6dTZ1eSL8Q6D5Iro9fnaH5YKAZv+FXj/NfeuPRTyYAL6wygrRtupw2oagEUU7QktzHJzq8BiFTA83dePy+FOy1thIyc+0RWgb4YSH6usWL5vZFJE4GghKQ2PSNaLoUP1Djd0cb3EZJhw9srHT7Y9wrvdqRF7yM6M0otzeMXZ7AzisZs6YVki2w8IrextoiaER6VpeUZa937SDdMIZ1m7kmsXlvPBf5xmV1qFXK4x2DT2z/SSHG7vZcrw33LrT7TMEuW6a6/EGInKJ9Fbs0VVTphVnYrOYjFwunRyHhY4eHx1uH3lOG9l2ixFs4rCaaOh00+ry9Zk/xoO0fTp0QZROq+eB0K+zobOvIMqwmen2BNh9skN7GEMPrh7h1NDhweX18+3HdnLz8ip+duNCY1/dgR0ISuNL0OPt61NqC0uC1HH7NL/U8RYXkwsz+yTLleQ42HOyA2tIiB5t6sblDVCWm96hvuF8+oLpRv+eaMI1oltXVFOe66Cpy8v9G47j9mnC4HP/2UJDh4eHPnmmIYiiw7dPtPWEwuk1AaVrwJ0eP/VhUY5NXVqOmMcf1IIVQoJICC16yhzm/3FYTdgsJmZMyuJwYxdtPT4KMiN9d5NDgqg6RauZDJdL55byzmHNZ2a3mJldGungrwpLHZlenMmhxm4mZduNpPLw1ildYQEeJ0P3yO2LFESxGg+C1lutvcfXZ+7Ldlg40daD12+mPM9BTqgqeKbNzJSiTE51eDjR1sPSUIfj8SR9NaLQalzXFNId3eZb3+HuI4gyDY2og/NmFRufiWbmMnGqw83RJm1ltC1kNtAJDz7QNadYYdmxTHMub4AXd5/i/J+/ztcf3m5sY2hEuQ5Otrs53Kg5tI80ddPjC/Qbop6OLKnO55K5sUPOwzuVLqrM5bMXzeT82cV4/UE2HtUCF97c38SmY608uKnGuFfh4duBoIwwv0HvirwrpBFZTAKn1Uxjp4d3a7RVeUGYj6gw047VbMJkEsazYw/leVXkOdl9ogMp6WOaK8i0kWW3TAizHMBHz57C1y6fzc3Lq2K+n2m3GJ/Rly6dzfVLKvjEudOM9481uwgGteTiLref/AytYKpucdN9cTq6FSI8PynTZmZhZS7nzerbuSDbrpnm9DYPuWELwpIcB4cau2jv8RndkMeTtP3GR5vm0h19Ymjq8hgZ+zpZdgtdXi3X4OZJ2Rxs6KK+w43NYqIkx8GpTo/ROfNAQ1dE5Fp4Kw19QnN5td4q4RFSbT1eLSgibBLs8QY43K4d98FNNXR5e31EAMsn53PPmiPUtvZgt2iBC9kOy4QyzQ2EKSQgenwBCkPahq7FHm3qpiDTRpfHj81iisgzcnkD+AJBLCZBY6cHfz+Rdp1uH/XtgpIcBxaz4G9vH+Fvb2v1x/IybGTazDitZkpzezUdR8gXqS98KvKcdIZMttGmOSEEv7llcYSvKJ0RQvDpC2YMuE1lfgZNXV7Om1XEexeWGeY4u0WrjFLf4SY/w4Y/KMmyWynMtIVpugGjDTtERs2ZhBYeXp7n7LcRZLbDQqfbj9UsyHH0CiK9o7Hus4rlrxxr0naW1std2CfIpKZPDFLSJ4s9024xVsGV+U7mlecypVCL6inJdtDQ0RswEAhKdp/s9SWFV0fQTTpBqYUUbw/TntpcPsOUkBFWADK8o+ruULCErhGdN6vYyFfQM7873f6kbYyWCPTPsjC0ktZ7xDR2eth0VJvEPnTm5IgFQ7vLx8ofv8LjW+uoa4tMPg7Ps+ryaBpRWa4jIi3AJGBmSRZCCEpzHUZBWejV0nSzT3nYpFWY2Tes/uLTSpgxaWxzUFKJ6cVZlOc6jGi6uWU5LK3O42PnTAW0ZnqdoWTWLIclQrgHJdS3a9/BijxnhGkuP0Pz+ZQPIERynFZ6fAE6Pf4YGlHvvUtE9Zm0FUR6qKNjgmhE4SVxojvJhtdtq8h38oNr5/H3D58OaKuhhpBGpE8y22sjBZG+wGoISz695e53uOb3b+PyavlFnW6/sfLVTTo9vgB1bT1G2Zdjzd2YTcKYXDPtFs4JBZBcMLvXlFCYwE64yYYulHVBYTYJCjLtNHZ52Hi0hfJcB9curjC2t5oFx1q6aen2srOuw/Av6ISbzzrdfho63UzKsWM1azf50xdM59CPr2R6yMn+i1WL+Nrlc4x99AWPLojCV8+FWeq+DcbXr5jNPz+6wvjfYTXz6KfPNiofHGvuDSrJiRJEAHVtLiwmQVWB0yirpdXys3DVorJ+zbzQm9MkpXbscEFUGlYsOBFpLmlsmptYGpE9LGIn2jQX3m++Mt+plcgJLYB0lfxIUzcLKnM52tTNjihBlJ9ho6XbG1GpW19pv76v0ahnVR0WJXWs2YXLG6CutYfTynI41eGmudtLXih0W+e6JRWsPdTEVQvLqWvtYfqkLN63pHdinejo9y58ki/O1krv7K3vZMnk/Ii+TKW5DqMRWn2H29BIddPPpGyHUVapy+On2+OnINNmONkvm1cacX+WTY6MvDLaecfUiJQgGoxJ2Y6YPbP08lXffHSHUXcwy27pI9zrWnvIz7SRn2HjYChZuNPtI9th5SfXL2QgwgvPhmtEk7LtRpV7m1nrdjzepK26MK88lze+egGnR4UwpivhETKxTHOgraZLo9oklOTYcXkD7KhrZ1pRJnPLcyIKoXoD0ngww808utbzzI6ThtO0ulBP4rNgs5jo8WoaUUW+03jQo5PlrllUzpbvXkpxtp3vXDWXW1dUT5hIx6HgtJlxWE0R4c/F2XZqW3uoa+thenFWhLmtLMyMVt/u5kSbm2y7hamhBMtwE0y7y0ery0dhpp2fXL+A82YVszCU/9IfDsM01+sjAi2yLi9DCaKREm4p0BcS2Q5rDI2oh8JMG3kZVuN7p2tEgxG+TXh7Cj1YAaAsz5GQnlBpK4gcVjOTCzMnRP4CRAZlRJvm9CKhpTl9SxzpD6DXH2RKUSazS7I52NiFP+Qb8vqDRjkevcUD9GZ3v7qngaaQ76gyz4lJaILPaTVT0+rC4w9Skec0JsDw8iE6E+UejYRMu7mP76U4y87+U51I2auF6pFalXmRgqiurYfyPKfRpym8X5MeZFCYZeM980q596MrBp2EdE1ItzTkOC1k2S3kZ9hSqs5fMvLgHWfyxUtmGf9n2S1GSLyuvdS19lCQaSPXaaPd5UNKOeTGgxGCyGmJEkTaeRIRqABpLIgmGpEaUaQg0vvaxArL1H0Bk7LtXLWwjFkl2Xj9QSPRzRcIkmk3k+u0RmRu63/3+AJGxF1+po1cp5UchyaIdNOBJohia0SKgZldkmP0ktEpzrYbIb26X+7H1y9g/bcujliEnOrQimBWFTgpCWmwser0Ra+6B8LwEYV8kkIIyvMcyiwXBxZU5nLrit7Q72yHxfhcdd9etzdAYZadvAwr3kAQlzdgmOYGI/y7l+OwclppNtkOC9OKMynItGEzmxImiNRSNE2IDFboW1kBIlfLOvMrcln/rYuZlG1HCEFbaaj8fH0n04uz8AWCmt04296nnpzuqzgSirjLc1r51c2LmVyQwfrDLYYgCl+RK0E0PL539dw+r4ULE10jMpu0MOzwJFh/UHKwoYsr55cCWjSc7p/IsJmNfKPhCaJI0xzAOTOK8QaG1jNJMTDhGmt2WLBCcbadQ6FSP4WZNiPqdVtN25BNc+HfvVynlfkVuez4/nuM1/73ffOZXz6waXasUIIoTQgPVshzRkfNhQRRP9Ew4e24Z0zKQgit/PwVC8rw+YNYzSaKsmwcjCpxNqUwQxNEoS9IXoaVC4smAdqEpa/aNR9R/6Y5xfDQ/XN2S1/HcqzQ97nluSybnM+S6nxD+FTlZxjN0WKFXfdHdPg2xBaWitGjmeZ0QdT7HS3ItHH+rGKcVjNPbT9Jl9dvdFQdiGgfUTQ39ZOIOx4o01yaoGtEWXaLkZujU5RlY0l1HmcNodaew2pmSmGm0UjQG5BYLSYjfDh8JTw5tCo72tyNEJFROfqEWF2QQa7TSkl2b38WxejQBVF1QUYfn46eDGwL8wXOK8+hONvOhXMmGWba8I6ww9GI7DE0IkV8ueu2pbx3YRkWs4nyPKdWSimsZl1Bpg2nzcxFcybxyJZapBza9yorJIi072pyLQjV05Qm6BpRtFkOtKoLj336bCNpdDCmF2cZZrVw0xxErp71WmJHm13kOKwRzmq9Ltn5oVIjesCDMs2NnnBBFI1eHkmvc5brtEZowno4uJ60KETfKMuBMDSiGK3cFfHhvQvLuOu2pYAmdN7++kVcs7jceF/3G12zuNwoeDsUwWI1m3BazWTZLQmJjBsIJYjSBD1qLjpQYSRU5jupa+0xWmlYzcLQiMITIvVqwl5/sM9ktitU6VsXROWhiLriNGlql0j0z3CgZnqzSrKxmARzy3Ii8oLmludwzaJyLj5NM6HmOa3DahYZndCqGHuKs+0RnZl1DfayuSX85pbFvGdeCWdOH9oiM9thScrFYHLpZ4oRI4RWkDIeuRyV+U66vQE6evyaRhTmiygM80mU5Gjto92+ILlR59VrzulfkIJMG49/5mxmlahyL6Ml227hk+dP470Lyvq8pwui4mw7l5xWwtkzIieoLLuF3966hJpQVORwzHIQ7iNSa9jxJLzXkZ7kKoTg2sUVEZU1BiPHacWahF2qlSBKIxxWMwXDMLP0h54tX9OqNVCzhpnm8jK0Rm5SamafggwbJ9rd5EVV/L7/4ys52NhlBEoALKzMG/XYFNoE9M0rTov5ntOqfd5FWTa+ccWcmNtAbyTlcAIVoFcTmigVS5KFcFNodLuN4aCHaScbShClEVcuKOOMaQWjPo6eS6A3rNOi5rSHPyuUrOryBshxWsnTBVGUADxrRtGQgiMU8SW6SGp/6I7r4WpEyjSXGKxmgdkkkFL2WfQNhx+/bz6mfqpzJxIliNKIn1y/IC7H0TUivSK3zWyiKFubsJyh1gAub4Bcp9UIjoiHb0oxemaXZnPrimrOmdG3H004uuN6uIVKo2vNKcYHIbSWIHaLaVSBBslaCV0JIkUfirJs2C0mo2KC1SwozLST7bBQmuPAaTNj7hFk2syGTyoR7YUVfXFYzUNekPzk+gXMLc8ZfMOo42u/k8+8k+44rKa0XfApQaTogxCCijwnR0OCyGYxY7OYePlL55OfYeP+9cfJcWhVtPVouWjTnCL5uW4EVc5jJbQqxgeH1TxsU2qqoJY1ipiU5zkN05zeq6Ykx4HNYsJpMxsakL5CU4JoYrBiWgEfOnMyCwap0q2IP5X5TmZMyhp8wxRkXDQiIcTPgasBL3AI+IiUsm08zq0YGRV5TtYcbALoU6nBGaPAanRZIUV6kuOw8oNr5yd6GBOSv394BaY0VR3G67JeAuZLKRcC+4FvjtN5FSNEr4QA9Mk7+PSFM/ivS2YCvZUclEakUIwtTpsZe5pWtBgXjUhK+WLYv+8AN47HeRUjJ7wQanTegV4tAbTKy7euqIroEqpQKBTDIRGK3keB5/p7UwhxhxBikxBiU2Nj4zgOSxFOaW5v0pzV0v9jUpxt5yfXL1TOa4VCMWLiphEJIV4GSmO89W0p5ROhbb4N+IH7+juOlPJu4G6A5cuXy/62U4wtk7LDTXPJlwCnUCjSh7gJIinlJQO9L4T4EHAVcLGUUgmYJGcg05xCoVDEk/GKmrsc+DpwvpTSNR7nVIyO8NbPyVgkUaFQpA/jNcP8HsgGXhJCbBVC/GmczqsYIeFlRKLDtxUKhSKejFfU3IzxOI9ibFAakUKhGEvUDKMYFOUjUigUY4maYRT9opvkrBYVNadQKMYOJYgU/aL3JVIxjgqFYixR1bcV/fKPj5zOAxtrKAsr96NQKBTxRgkiRb9MLszk65f3325aoVAo4oEyzSkUCoUioShBpFAoFIqEogSRQqFQKBKKSOayb0KIRuDYKA9TBDTFYTjJSrpfH6hrTBfUNaYHo7nGyVLK4ugXk1oQxQMhxCYp5fJEj2OsSPfrA3WN6YK6xvRgLK5RmeYUCoVCkVCUIFIoFApFQpkIgujuRA9gjEn36wN1jemCusb0IO7XmPY+IoVCoVAkNxNBI1IoFApFEqMEkUKhUCgSSsoKIiHE5UKIfUKIg0KIb8R4Xwghfht6f7sQYulQ900WRnmNR4UQO0IdcTeN78iHzhCucY4QYp0QwiOE+Mpw9k0WRnmN6XIfbw89o9uFEGuFEIuGum8yMMrrS5d7eG3o+rYKITYJIc4Z6r6DIqVMuR/ADBwCpgE2YBswN2qbK4HnAAGcAawf6r7J8DOaawy9dxQoSvR1xOEaJwGnAz8CvjKcfZPhZzTXmGb38SwgP/T3Fan0fRzN9aXZPcyiN65gIbA3XvcwVTWiFcBBKeVhKaUXeAC4Nmqba4F7pcY7QJ4QomyI+yYDo7nGVGHQa5RSNkgpNwK+4e6bJIzmGlOFoVzjWilla+jfd4DKoe6bBIzm+lKFoVxjlwxJHiATkEPddzBSVRBVADVh/9eGXhvKNkPZNxkYzTWC9pC8KITYLIS4Y8xGOTpGcy/S6T4ORDrex4+hafIj2TcRjOb6II3uoRDifUKIvcAzwEeHs+9ApGo/oli9q6Pj0PvbZij7JgOjuUaAs6WUJ4QQk4CXhBB7pZRvxnWEo2c09yKd7uNApNV9FEJciDZR6/6FVLiPo7k+SKN7KKV8DHhMCHEe8EPgkqHuOxCpqhHVAlVh/1cCJ4a4zVD2TQZGc41IKfXfDcBjaOpzsjGae5FO97Ff0uk+CiEWAn8FrpVSNg9n3wQzmutLq3uoExKk04UQRcPdt78DptwPmiZ3GJhKr3NsXtQ27yXSkb9hqPsmw88orzETyA77ey1weaKvaSTXGLbt94kMVkib+zjANabNfQSqgYPAWSP9fFL0+tLpHs6gN1hhKVAXmntGfQ8T/gGM4oO7EtiPFq3x7dBrdwJ3hv4WwF2h93cAywfaNxl/RnqNaNEr20I/u1L8GkvRVlwdQFvo75w0u48xrzHN7uNfgVZga+hn00D7JtvPSK8vze7h10PXsBVYB5wTr3uoSvwoFAqFIqGkqo9IoVAoFGmCEkQKhUKhSChKECkUCoUioShBpFAoFIqEogSRQqFQKBKKEkQKhUKhSChKECkUCoUiofx/Z9ypA4G4ArUAAAAASUVORK5CYII=\n",
+ "text/plain": [
+ "<Figure size 432x288 with 2 Axes>"
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "f = 10\n",
+ "L = 100 # Oversampling\n",
+ "fs = f * L\n",
+ "(t, sine) = sine_wave(10, fs, 0, 3)\n",
+ "sine_n = awgn(sine, 20, L=L)\n",
+ "\n",
+ "fig, ax = plt.subplots(2, 1)\n",
+ "fig.tight_layout()\n",
+ "ax[0].plot(t, sine)\n",
+ "ax[0].set_title(\"Original\")\n",
+ "ax[1].plot(t, sine_n)\n",
+ "ax[1].set_title(\"With noise\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Reyleigh"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 64,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def reyleigh_fading(N):\n",
+ " \"\"\"\n",
+ " Generate reyleigh flat fading channel.\n",
+ " Here the power distribution P_{av} = \\sigma^2.\n",
+ " \n",
+ " Parameters:\n",
+ " N: Number of samples to generate\n",
+ " Returns (abs_h):\n",
+ " abs_h: Reyleigh fading samples\n",
+ " \"\"\"\n",
+ " \n",
+ " h = 1/np.sqrt(2) * (standard_normal(N) + 1j * standard_normal(N))\n",
+ " return np.abs(h)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 76,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "Text(0.5, 1.0, 'Noise')"
+ ]
+ },
+ "execution_count": 76,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ "<Figure size 432x288 with 3 Axes>"
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "f = 10\n",
+ "L = 100 # Oversampling\n",
+ "fs = f * L\n",
+ "(t, sine) = sine_wave(10, fs, 0, 3)\n",
+ "rey = reyleigh_fading(len(sine))\n",
+ "faded = rey * sine\n",
+ "\n",
+ "fig, ax = plt.subplots(3, 1)\n",
+ "fig.tight_layout()\n",
+ "ax[0].plot(t, sine)\n",
+ "ax[0].set_title(\"Original\")\n",
+ "ax[1].plot(t, faded)\n",
+ "ax[1].set_title(\"Reyleigh\")\n",
+ "\n",
+ "# LETS ADD SOME NOISE\n",
+ "with_noise = awgn(faded, 30, L=L)\n",
+ "received = with_noise / rey\n",
+ "ax[2].plot(t, received)\n",
+ "ax[2].set_title(\"Noise\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Rician"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 66,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def rician_fading(kdB, N):\n",
+ " \"\"\"\n",
+ " Generate Rician flat fading channel.\n",
+ " \n",
+ " Parameters:\n",
+ " kdB: Rician K factor in dB\n",
+ " N: Number of samples to generate\n",
+ " \"\"\"\n",
+ " K = 10**(kdB/10)\n",
+ " mean = np.sqrt(K / (2 * (K+1)))\n",
+ " sigma = np.sqrt(1 / (2 * (K+1)))\n",
+ " h = (sigma * standard_normal(N) + mean) + 1j * (sigma * standard_normal(N) + mean)\n",
+ " return np.abs(h)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 77,
+ "metadata": {
+ "scrolled": false
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "Text(0.5, 1.0, 'After')"
+ ]
+ },
+ "execution_count": 77,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ "<Figure size 432x288 with 2 Axes>"
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "f = 10\n",
+ "L = 100 # Oversampling\n",
+ "fs = f * L\n",
+ "(t, sine) = sine_wave(10, fs, 0, 5)\n",
+ "rey = rician_fading(-10, len(sine))\n",
+ "faded = rey * sine\n",
+ "# Yo add the noise\n",
+ "with_noise = awgn(faded, 25, L=L)\n",
+ "received = with_noise / rey\n",
+ "\n",
+ "fig, ax = plt.subplots(2, 1)\n",
+ "fig.tight_layout()\n",
+ "ax[0].plot(t, sine)\n",
+ "ax[0].set_title(\"Original\")\n",
+ "ax[1].plot(t, received)\n",
+ "ax[1].set_title(\"After\")"
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 3",
+ "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.1"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}