{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Import Library" ] }, { "cell_type": "code", "execution_count": 244, "metadata": {}, "outputs": [], "source": [ "import mnist" ] }, { "cell_type": "code", "execution_count": 245, "metadata": {}, "outputs": [], "source": [ "import mlx.core as mx\n", "import mlx.nn as nn\n", "import mlx.optimizers as optim\n", "\n", "from tqdm import tqdm\n", "import numpy as np\n", "import matplotlib.pyplot as plt" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# GAN Architecture" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Generator 👨🏻‍🎨" ] }, { "cell_type": "code", "execution_count": 246, "metadata": {}, "outputs": [], "source": [ "def GenBlock(in_dim:int,out_dim:int):\n", " \n", " return nn.Sequential(\n", " nn.Linear(in_dim,out_dim),\n", " nn.BatchNorm(out_dim),\n", " nn.ReLU()\n", " )" ] }, { "cell_type": "code", "execution_count": 247, "metadata": {}, "outputs": [], "source": [ "class Generator(nn.Module):\n", "\n", " def __init__(self, z_dim:int = 10, im_dim:int = 784, hidden_dim: int = 128):\n", " super(Generator, self).__init__()\n", " # Build the neural network\n", " self.gen = nn.Sequential(\n", " GenBlock(z_dim, hidden_dim),\n", " GenBlock(hidden_dim, hidden_dim * 2),\n", " GenBlock(hidden_dim * 2, hidden_dim * 4),\n", " GenBlock(hidden_dim * 4, hidden_dim * 8),\n", "\n", "\n", " nn.Linear(hidden_dim * 8,im_dim),\n", " nn.Sigmoid()\n", " )\n", " \n", " def __call__(self, noise):\n", "\n", " return self.gen(noise)" ] }, { "cell_type": "code", "execution_count": 248, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Generator(\n", " (gen): Sequential(\n", " (layers.0): Sequential(\n", " (layers.0): Linear(input_dims=100, output_dims=128, bias=True)\n", " (layers.1): BatchNorm(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (layers.2): ReLU()\n", " )\n", " (layers.1): Sequential(\n", " (layers.0): Linear(input_dims=128, output_dims=256, bias=True)\n", " (layers.1): BatchNorm(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (layers.2): ReLU()\n", " )\n", " (layers.2): Sequential(\n", " (layers.0): Linear(input_dims=256, output_dims=512, bias=True)\n", " (layers.1): BatchNorm(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (layers.2): ReLU()\n", " )\n", " (layers.3): Sequential(\n", " (layers.0): Linear(input_dims=512, output_dims=1024, bias=True)\n", " (layers.1): BatchNorm(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (layers.2): ReLU()\n", " )\n", " (layers.4): Linear(input_dims=1024, output_dims=784, bias=True)\n", " (layers.5): Sigmoid()\n", " )\n", ")" ] }, "execution_count": 248, "metadata": {}, "output_type": "execute_result" } ], "source": [ "gen = Generator(100)\n", "gen" ] }, { "cell_type": "code", "execution_count": 249, "metadata": {}, "outputs": [], "source": [ "# make 2D noise with shape n_samples x z_dim\n", "def get_noise(n_samples:list[int], z_dim:int)->list[int]:\n", " return mx.random.normal(shape=(n_samples, z_dim))" ] }, { "cell_type": "code", "execution_count": 250, "metadata": {}, "outputs": [ { "data": { "image/png": "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JNXU1NhNyoXegoICu+nu7rabq1ev2o0kLV++3G5SLrIuXbrUbnbt2mU39fX1diNJd9xxh92cO3fObt5++227KSwstBsp7Weeckl5xowZfb6GJwUAQGAUAACBUQAABEYBABAYBQBAYBQAAIFRAAAERgEAEBgFAEBgFAAAgVEAAARGAQAQ/kcP4s2dO9du3nrrLbuRpFmzZtlNTk6O3QwaNMhutmzZYjff/e537UaSnn32WbuZNGmS3fT29trNnj177EZKOzp3yy232E3K4cIU1dXVSd2PfvQju3niiSfs5rXXXrObhQsX2s3AgQPtRpLOnz9vNyn/fi1btsxuUg7vSVJ5ebndnDx5Mumz+sKTAgAgMAoAgMAoAAACowAACIwCACAwCgCAwCgAAAKjAAAIjAIAIDAKAIDAKAAAAqMAAAj9MplMJpsXbty40X7zAwcO2E1eXp7dSNKOHTvs5rbbbrObgoICu1m9erXdNDY22o0knT171m5Sjtu98847drN06VK7kaSPPvrIblL+N6UcBpw3b57drFmzxm4kqaqqym5S/o7mz59vN8eOHbObq1ev2o0k5eZmfcczpPwNff7zn7ebnTt32o0kjRgxwm7a2trsprm5uc/X8KQAAAiMAgAgMAoAgMAoAAACowAACIwCACAwCgCAwCgAAAKjAAAIjAIAIDAKAIDAKAAAQtaXpVpaWuw379evn93MnTvXbiRp//79drN9+3a7uf/+++1m/fr1dpPqwoUL/5HPSTkm2NPTk/RZ06ZNs5umpia7GTt2rN08/fTTdtPe3m43Utqxw5SDffX19XaTctAt9bue8m9RyvdiypQp/5FGkhoaGuwm5XBhNnhSAAAERgEAEBgFAEBgFAAAgVEAAARGAQAQGAUAQGAUAACBUQAABEYBABAYBQBAYBQAACHrg3h/+tOf7DefNWuW3ezbt89uJKm0tNRuampq7Kajo8NuysrK7CYvL89uJOnIkSN2c/36dbuZOnWq3aT8DUnSnDlz7GbMmDF28+yzz9rNE088YTcbN260G0m6ceOG3dxyyy12k3LIMuW79OMf/9huJOmb3/ym3aQcxEv53a5bt85uJOnMmTN2c+3ataTP6gtPCgCAwCgAAAKjAAAIjAIAIDAKAIDAKAAAAqMAAAiMAgAgMAoAgMAoAAACowAACIwCACAwCgCA0C+TyWSy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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "img = get_noise(28,28)\n", "plt.imshow(img, cmap='gray')\n", "plt.axis('off')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Discriminator 🕵🏻‍♂️" ] }, { "cell_type": "code", "execution_count": 251, "metadata": {}, "outputs": [], "source": [ "def DisBlock(in_dim:int,out_dim:int):\n", " return nn.Sequential(\n", " nn.Linear(in_dim,out_dim),\n", " nn.LeakyReLU(negative_slope=0.2),\n", " )" ] }, { "cell_type": "code", "execution_count": 252, "metadata": {}, "outputs": [], "source": [ "class Discriminator(nn.Module):\n", "\n", " def __init__(self,im_dim:int = 784, hidden_dim:int = 128):\n", " super(Discriminator, self).__init__()\n", "\n", " self.disc = nn.Sequential(\n", " DisBlock(im_dim, hidden_dim * 4),\n", " DisBlock(hidden_dim * 4, hidden_dim * 2),\n", " DisBlock(hidden_dim * 2, hidden_dim),\n", "\n", " nn.Linear(hidden_dim,1),\n", " )\n", " \n", " def __call__(self, noise):\n", " return self.disc(noise)" ] }, { "cell_type": "code", "execution_count": 253, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Discriminator(\n", " (disc): Sequential(\n", " (layers.0): Sequential(\n", " (layers.0): Linear(input_dims=784, output_dims=512, bias=True)\n", " (layers.1): LeakyReLU()\n", " )\n", " (layers.1): Sequential(\n", " (layers.0): Linear(input_dims=512, output_dims=256, bias=True)\n", " (layers.1): LeakyReLU()\n", " )\n", " (layers.2): Sequential(\n", " (layers.0): Linear(input_dims=256, output_dims=128, bias=True)\n", " (layers.1): LeakyReLU()\n", " )\n", " (layers.3): Linear(input_dims=128, output_dims=1, bias=True)\n", " )\n", ")" ] }, "execution_count": 253, "metadata": {}, "output_type": "execute_result" } ], "source": [ "disc = Discriminator()\n", "disc" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Model Training 🏋🏻‍♂️" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Losses" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Discriminator Loss" ] }, { "cell_type": "code", "execution_count": 254, "metadata": {}, "outputs": [], "source": [ "def disc_loss(gen, disc, real, num_images, z_dim):\n", " \n", " noise = mx.array(get_noise(num_images, z_dim))\n", " fake_images = gen(noise)\n", " \n", " fake_disc = disc(fake_images)\n", " \n", " fake_labels = mx.zeros((fake_images.shape[0],1))\n", " \n", " fake_loss = nn.losses.binary_cross_entropy(fake_disc,fake_labels,with_logits=True)\n", " \n", " real_disc = disc(real)\n", " real_labels = mx.ones((real.shape[0],1))\n", "\n", " real_loss = nn.losses.binary_cross_entropy(real_disc,real_labels,with_logits=True)\n", "\n", " disc_loss = (fake_loss + real_loss) / 2.0\n", "\n", " return disc_loss" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Generator Loss" ] }, { "cell_type": "code", "execution_count": 255, "metadata": {}, "outputs": [], "source": [ "def gen_loss(gen, disc, num_images, z_dim):\n", "\n", " noise = mx.array(get_noise(num_images, z_dim))\n", " fake_images = gen(noise)\n", " fake_disc = disc(fake_images)\n", "\n", " fake_labels = mx.ones((fake_images.shape[0],1))\n", " \n", " gen_loss = nn.losses.binary_cross_entropy(fake_disc,fake_labels,with_logits=True)\n", "\n", " return gen_loss" ] }, { "cell_type": "code", "execution_count": 256, "metadata": {}, "outputs": [], "source": [ "# Get only the training images\n", "train_images,*_ = map(np.array, mnist.mnist())" ] }, { "cell_type": "code", "execution_count": 257, "metadata": {}, "outputs": [], "source": [ "# Normalize the images to fall between -1,1\n", "train_images = train_images * 2.0 - 1.0" ] }, { "cell_type": "code", "execution_count": 258, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 258, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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WqRt27Zpz549cT/6pbudD992HG4nXc+HjIhQ7969NXLkSFVVVcU9XlVVpaKiIqNV2Wtra9OXX36pcDhsvRQzhYWFCoVCcefGtWvXVFNT063PDUlqbm5WfX19lzo/nHNauHChtmzZot27d6uwsDDu+e5yPtztONxO2p4Phl8U4cknn3zievXq5f7whz+4EydOuMWLF7t+/fq5M2fOWC/tgXnttddcdXW1O336tNu/f797/vnnXSAQ6PLHoKWlxR05csQdOXLESXJr1qxxR44ccf/5z3+cc86tXLnSBYNBt2XLFnfs2DE3Z84cFw6HXTQaNV55ct3pOLS0tLjXXnvN1dbWurq6Ordnzx43btw49+ijj3ap4/CLX/zCBYNBV11d7RoaGmLb5cuXY/t0h/Phbschk86HjImQc869//77rqCgwPXu3ds99dRTcV+O2B3Mnj3bhcNh16tXL5eXl+dmzpzpjh8/br2slNuzZ4+T1GkrLS11zt34stzly5e7UCjk/H6/mzBhgjt27JjtolPgTsfh8uXLrri42A0YMMD16tXLDRo0yJWWlrqzZ89aLzupbvfnl+QqKytj+3SH8+FuxyGTzgd+lAMAwExGvCcEAOiaiBAAwAwRAgCYIUIAADNECABghggBAMwQIQCAGSIEADBDhAAAZogQAMAMEQIAmCFCAAAz/wdVbyhNmNF0pQAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.imshow(train_images[0].reshape(28,28),cmap='gray')" ] }, { "cell_type": "code", "execution_count": 259, "metadata": {}, "outputs": [], "source": [ "def batch_iterate(batch_size: int, ipt: list[int])-> list[int]:\n", " perm = np.random.permutation(len(ipt))\n", " for s in range(0, len(ipt), batch_size):\n", " ids = perm[s : s + batch_size]\n", " yield ipt[ids]" ] }, { "cell_type": "code", "execution_count": 260, "metadata": {}, "outputs": [], "source": [ "def show_images(imgs:list[int],num_imgs:int = 25):\n", " if (imgs.shape[0] > 0): \n", " fig,axes = plt.subplots(5, 5, figsize=(5, 5))\n", " \n", " for i, ax in enumerate(axes.flat):\n", " img = mx.array(imgs[i]).reshape(28,28)\n", " ax.imshow(img,cmap='gray')\n", " ax.axis('off')\n", " plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### show first batch of images" ] }, { "cell_type": "code", "execution_count": 261, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZcAAAGVCAYAAAAyrrwGAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAD3kklEQVR4nOy9V5OcV5rf+Uvvvc/KyvIFU/CGIIBm03RT3cORZlrqmZGPidjVboQ+xH4B3eyVdLGxitDEhDSSttUT49Q9zSabFvSwBVu+MrMqvfd2L6BzmAVHkCygDN5fRAVIVCIr31Pve57zuP+jGgwGAxQUFBQUFLYR9U5/AAUFBQWF/YdiXBQUFBQUth3FuCgoKCgobDuKcVFQUFBQ2HYU46KgoKCgsO0oxkVBQUFBYdtRjIuCgoKCwrajGBcFBQUFhW1HMS4KCgoKCtuO9mlfqFKpnuXn2FN8F1EDZf2+Rlm/78d3FdVQ1vBrlHvw+/E066d4LgoKCgoK245iXBQUFBQUth3FuCgoKCgobDuKcVFQUFBQ2HYU46KgoKCgsO0oxkVBQUFBYdt56lLk3cSTSgKV2WcKCs+O7SzHVZ7V/c2eMC4ajQa1Ws3IyAjhcBiTyYTP50Ov12O32zEajWQyGdbX16nVaiwtLVGpVOj1evR6vZ3++AoKexaVSoXb7cZms+F0OolEIhiNRnw+HxaL5Tu/by6X48aNG1SrVfL5PLVajU6nQ7vd3sZPr7CT7HrjolKp0Gg0aLVapqamePnll/H5fMzNzWG324lEIrjdbubn53n//fdJJBKUy2U6nQ7NZlMxLgoK3wO1Wo3P5yMajTI5Ocn58+dxu90cO3YMn88nX6dSqaRXMxgMvtEruXPnDn/+53/O5uYmd+7cYXNzk0ajQafTUTyafcKuNS7iZjUYDIRCIWw2G5OTk4yNjeFyufB4PFgsFoxGIxqNBpvNRiQSQavVMjExgVarJZ1Ok06nd/pSFPYwarUao9GIVqvFZrNhs9nQarXyvnsSrVaLZrNJs9mkVCrJA0+3231On/77IzwXETXw+/04nU4sFgsGg0G+bjAY0Ov1GAwGaDQaVCrVFiOhVqu3hNQcDgeTk5NYrVYGgwEOh4NCoUAqlaLdblOpVPbUOik8jGrwlMeE5y19oNFoMBgMeL1efv7znzM5Ocnc3ByHDh2SD7darabT6dDtduVpqVAo8PHHH5NIJPjtb3/LBx98sO0nIUU64vuxl9bPYDAwPj6O0+nk1KlTnD59GqfTyfj4+JbN9UEGgwGJRIJkMsna2hrvv/8+hUKBtbU1CoXC9/pMz1P+xWg08q//9b/mzTffJBAIcPDgQQwGgzS4gna7TalUotvtYjab0ev19Pt9BoMBKpXqIWPcarUolUo0m03W19fJ5/MsLCzwxRdfkMvluHr16vdepyexl+7B3cjTrN+u9Vw0Gg16vR6z2Uw4HGZ8fJxwOIzX62UwGNDtdun1ejQaDZrNJkajEavVSrfbxeVy0Wq1MJvNO30ZzwW1Wo1er0elUskTYq/Xo91uMxgM6Pf73+l9NRrNlg1BnE6/6/vtJYbvP4/Hg9vtJhqNMjMzg9PpZHJyEpPJtGUDFWuvVqsZDAbYbDasVitqtZo7d+6gVqtJp9OUy2X573Y7KpUKq9WK1+vF7XZjt9ulURn+/N1ul3K5LO85ca+0223pyeh0OtRqNWq1GoPBQCAQoNfroVarcTqdNBoNVldXGQwG6PX6nbrkXYlarZZ/ivtMPJv9fl/eT8PPpvg97NR9tmuNi9vtZnp6mtHRUY4cOcKBAwcwGAwUi0WSySSfffYZpVKJUqlEvV7HYrHgcDhotVqsrq5SLpdZW1vbEw/w9yUUCvHmm2/i9Xrx+/3Y7XZu3brFe++9R7lcJpVK0Wg0vtV7qlQqZmZmmJ6eln/Xbre5ceMGm5ub230Ju44DBw7w6quv4na7OXDgAC6Xi1AoRCgUotfrkUwm6XQ6ZDIZyuUyDocDn8+H0WgkGAxiNBrxeDzS+w4Gg+RyOX75y19y/fp1isUimUxm39yfsViM//f//X/J5/OcP3+eAwcOkMlkWFlZQafTSaMciUSIRCLy3wnDYjKZaLVa1Ot14vE4N2/elLnTFz08ptVq8Xq98t4KBALY7Xai0SgajYZYLEaxWJT3VLfblV/i73fkc+/IT30KrFYrU1NTjI6OMjExwdjYmDQm8Xicd955h3Q6TS6Xo16vY7Vacblc9Pt9CoUCnU7nhcm3uFwuXn/9dSYnJ5meniYYDPKb3/yGlZUVUqkUhULhWxsXtVpNJBLh9OnTMhxQq9WIx+MvhHGJRCL83u/9Hn6/nwMHDuB0OuX3isUiGxsbVCoVFhcXSaVShEIh2u02drsdt9uN0WiUOZpQKMTBgwcpFovcvXuXbDZLv98nm83uG+OSyWT4n//zfxKLxaQnvbS0xOeff47RaKTRaBAKhTCZTIyMjMh7SnhGFouFdrtNo9FAp9PhcDhkaE0xLlqcTidOp5MDBw4wOzuL3+/n9OnT6HQ6rl+/TiwWY2Njg4WFBZnbE9V3inF5AKvVSjgcJhAI0O/3qVQq3L17lzt37rC+vk4sFqNQKFCr1Wi1WrTbbdrtNv1+n3q9TrfbpdVq7fRlPBf0ej1utxufz4fJZAIgGAzyyiuvkEgkSKfTlEqlp3ovjUYjy7snJiaYm5uTLnmlUuH69etks1nq9Tq1Wm1fbI46nQ6bzYZerycYDOJyuTh16pQsJKlWq9IjXltbo1qtsrGxQb1el2sbj8dZX1/HaDQyPz+PxWJhcnKSaDSKwWCQhQBHjhxBrVaztLSExWKhVquRSCS+tfF/XgwGAxqNBsViEY1GQzqdRqfTPfS6QqFAt9ul3+/TbDapVCryJK1Wq5mfnycej1MoFIjFYrhcLg4cOCDzMyKP6vF46Ha7nDp1CpfLxcrKCmtra/R6PZlbfVEwm804HA4cDgfnz58nHA4TDAYJhUI4HA6cTidqtRqLxYLZbMbr9crqWIvFglqt5tq1a+j1ehqNBtls9rlWz+5a4+JyuTh69Cgej4der0cmk+G9997jf/yP/0G5XCaRSEhjAo8uhXwRcgMAJpOJ8fFxpqamZBz20KFDjI+Ps7i4yJdffsnq6upTvZder2dkZASPx8P58+f5vd/7PWlcxMm7UqmQTCZlfHyvYzKZiEajuFwu3njjDY4ePcrIyAiHDx+m1+uxurpKoVDgv//3/84vfvELme8bzkGp1WqZWxD5mn/2z/4Z/+Sf/BPcbjdTU1NYLBbeeust3nzzTb766iveffddEokEv/71r3e1cSkUCsTjcarVKr1e75FVcvF4XJYRi/sjHo+ztLREu91meXkZrVaL3W7Hbrdz5MgR/o//4/+QeVSr1YrdbsdqtRIIBFCpVGQyGf72b/+WYrEoDdZ+uN++CbGPud1uDh48yOjoKP/b//a/cfDgQfk9rVaLyWSi2+3idrupVCo4nU6i0ShWq5UjR45gsVj49a9/zbvvvsvGxgZffPEF9Xr9uV3HrjMuwkjo9XpZatzpdOj3+5RKJXlqbrVaL7y7bLFYsNlseL1eTCbTluodnU4nT+TDf/9NqNVq+aBbLBYsFou8obvdLsFgkGg0SrvdZn19fV8YcJ1Oh9frxev1EggEZM5EbGrxeJxcLsfGxoY8iZvNZmlERB+WVquVnnOn06FQKMjGXrPZjNlsxm6343A4ZDl9tVr9Vr+f581gMNiStxsMBvKwMUw6nZbGRTRGigS/OASq1Wp6vR7NZpNUKsXm5qasJDMYDKjVaunBuN1uVCqVLHuG+2HZ/XC/fRN6vR6dTidzVOFwGIfDgdlsplarUavVUKvV8j7L5/Pk83l0Op0shLBYLLjdbpxOJw6Hg2Kx+Mjf27Nk193VJpMJvV6Pw+GQsetMJiPj/SJh9aI3R6pUKl5++WX+wT/4B/LUvR0YDAZGR0eJRCJ4PJ4t3zObzfyjf/SPuHjxIr/4xS+4efPmvjDwLpeLV199lbGxMY4ePcrY2Bg3btzgv/23/0Yul+PevXsUCgU2Nzfp9/v4/X5efvllXC4X4XAYl8uF2+0mHA5TqVT49NNP5eb5f//f/7cMAXm9Xv7xP/7HHDt2DKfTKYsljEbjDq/A4+l0Onz11VcsLS2h1WrR6/WP3KSEQel0OszPz7O6ukq1WpUGp9vtolKpqFarNBoNbt26xZ/92Z/h8/n4wz/8Q06dOoXFYsHpdGIwGBgbGyMQCHDo0CFWV1dlld1+uN+ehEajYXR0lEAgwEsvvcQf/dEfYbVaMRqNbGxscPnyZS5fvgzcPxR1u11u375NIpHA6/USiUQYGRnh2LFjaLVafD4f09PTdLvd536I2VXGRYQUdDqdrKXX6XTU63WKxSKVSoVGo/GtTi+Pqk3fD661SqUiFApx+vRpPB6PzLUM813KEDUaDQ6HA6/X+1Afh2hQHR8f59NPP33uJ6HtRpQNW61WxsfHGR8flzmXRqPB1atXSafT3Lt3j2KxKO9Pi8XC+Pg4fr+f6elp/H4/oVCIqakpCoUClUoFi8XC6uoqly9fxul0Ui6XCYVCvPrqq8B9I+5yuXA4HGi12oeaDncLg8HgWzcjZ7NZstnsQ+8jQtXitH3z5k3cbjfnzp2THpxowrTb7bIM3OPx0Gg09vz99jSo1WocDgd+v5/x8XGOHj2KTqeTyiNra2tcvXoV+Nq4LCwskEwmCYVCsvG80+lID9vlcsmS+OfJrjIug8FAutDVapVyuYxer3+q08pwn4FOp0Oj0ciOYqFN1u/3SaVS1Go1qtUqxWJxVz7QT4vD4WB0dPSRoa90Os3S0hKrq6tPncyH+97JsWPHOHr0KKOjo1uMc6fTYXFxkWw2y/Ly8p72HlUqFRcuXOCVV14hHA5z5MgRWcq+vr4uv0SZsdPp5OjRoxw5cgSPx8OBAwew2WxSKcJms8mH+dixY0QiETqdDhqNhlqtRi6Xo9PpyPcdDAaMjIzQ7/c5d+4cHo+H1dVVEonETi/Nc6HT6VAulwFYW1vj3r17jI2NbZGUga/D5Pu9gdFoNMrc0w9/+ENOnjzJ2NgYg8GAYrHIZ599RiwW4/LlyywtLQHIMKyoji0Wi6ysrKDVaimXyzSbTUwmE8FgkEQi8WJ7LnC/c7fValGtVimVSphMpqfaxMSpUqPRYDabMRgMHDx4kOPHj0t3vt1uMz8/z8bGBslkklKptGeNi0qlwm63Mz4+jk6ne+jhS6VSUqng25QimkwmTp48yYULFx56z06nw61bt7h9+zYLCwt72rio1WpeeeUV/q//6/+SoZ5er8fy8jKpVIqVlRVWV1fpdrvMzMzgdrv52c9+xr/4F/9CehrDm57402w2c/LkSZnw1+l0LCws8Ktf/Yp8Ps/q6iqrq6uEQiEmJiYwmUyyEqjb7b4wxkX0YLTbbVZXV2Xp8dzc3ENr+iJgNBqJRqP4fD7eeOMNfvzjH8sy7GKxyCeffMKNGzdYW1uThxOB+G/hNWu1Wql+IJrQV1dXv1GuaLvZdcZFMNxd+qABUKlUaLVa1Go1NpsNo9EoO/RFWa7RaOTQoUNMTEzIUFu73aZer2M2m+n1eqytre25BKFGo8Hj8WA2m3G73Q9pNgmq1Spra2tsbm7SbDaf+v1FB/CjXGjhUQoV272ISqWShw+LxYJOp5PViPV6XZa6V6tVZmdnUavVHDhwAI/HQzgcRq/XMxgMZLm7KIcXGAwGIpEIBoNBHnY0Go3MO6TTaVZXVzEYDExMTEiPW1SavWiIk/fGxgbRaHTPPY/bhclkYmJignA4LEuMi8Ui8XhcHoZzudwT0wJiXxR7oyiMEgU6Itxbr9efi/r0rjUuT0KUNJpMJhm+ETFKm83G1NSU7NUwGo3yhNntdjl8+DD5fJ6//du/5erVq3suQWixWDh//jxjY2NbShMfJBaLydNypVLZlp/d6/XY2Njgzp07pNPpPbkR6PV6IpEILpcLr9eLSqUin8/zu9/9js3NTd555x3m5+c5efIk/+bf/BsZAhNVN2q1mnK5zOrqKsVikQ8++ICFhQX5/uFwmP/9f//fmZiYeOhnt1otvvrqKynOeOLEied45buTTqfD3bt3SafTeL1eOp2OzPUNHyz3aoThaQkEAvz85z9namoKv99Pr9fjzp07/Pf//t9Jp9N8+eWXsiLvcYgRJHa7XVaciUPO+Pg4R44cwel0srCwQCaTeebXtCeMizjdidOmVquVpXnBYJCRkRGCwaA0LhMTE9hsNgCZROx2uzIZ2+12pdHZa2g0GrxeLyMjI9jt9sdeQ6vVIp/Pb6v4X7/fp9FoUKlUaDabe/KBF96uy+XCZDKhUqlot9tkMhlSqRS5XI58Po9KpZI5gLGxMex2O71ej1arRa1WI5vNksvliMViLC8vy/cXTYSPot/vUy6XyWazVKvVPbl+281gMJBrOqxL9uBr9iui/NpqtcoGSeFNVyqVLU3Q39QLpdPpZEOlyDOLlgSj0YjJZMJkMj238NiuNy6iA9VgMPDyyy8TDAZlkspsNjM2NibDRHa7Hbgfe8zlcrJkOZPJcPPmTVl11mw296TXAvfd5zNnznD+/Hn8fv9zNZBCU2txcZF6vb4nH3qxfgcPHmRmZgaVSkWz2WRtbY1kMsnZs2d5/fXXOXToEIcOHZK9VoPBgIWFBe7du0c8Huf9998nn88Tj8e35LTUavW3CkO+6Gi1WkZHRxkdHSUcDj/3vMBOMzIyIkvgvV4vFotF5ps3Nja4d+8e+Xz+ic2PIgQ2OjrKxYsXiUQiBAIB2TskDlD5fJ5sNvvclEt2vXERpXUGg4EDBw5Ir2R0dBSTyYTL5dqiflyv11leXpaidyJh+N5778kkV7fbJZlM7smEtF6vZ2pqiuPHjz/3ny3i48lk8rn/7O1Cr9czPT3NiRMnZOlmu90ml8tRKBR46aWXOHHihPSIRYVNv98nmUxy7do1lpaWePvttx/pFbrdbmWa4rdArVbj9XrlIXEvRhO+K2JWzszMDGNjYzJ/LELZ+XyejY0NWVX3pPcR63jkyBFCodAW9WpAekKVSuWJobXtZNcZF5EANRgMmEwmrFYrZrMZrVYrPRGDwSBdv2QyKaUhhIilSMi222263S6ZTIa1tTU56a7X6+25sITT6WRkZIRoNCpDfg/S7Xa5c+cOGxsb3Lhx41vdRKIJcGZm5nuNr92tCCFJoSorJEbS6TStVoupqSkCgYDsddHr9WSzWdrtNvF4nHK5zJdffsmVK1fIZDKPNSDdbpd8Pi9L3ofRarWMjY0xOztLJBJ5Ifo2vol+v0+xWGRzc3NLuPBJs3L2G8P7kFiPeDxOPp9/YvJeKEMIw3zs2DFZ2WgwGORhsFgsyjlC1Wr1uUVsdp1x0ev1UvrFZrPhdrtlCAy2NmO1Wi2uXr3K0tISy8vLXL16lUqlQjqdloZEiOkNj0/d6TkH34VgMMiPfvQjRkZG8Hq9j3xNs9nknXfe4Z133iEWi30r9zcSifCjH/2I0dHRbev2301YrVYmJycZHR1lenqaqakpNjY2WFpaotvt8vLLL6NWq5mdnSUcDpPNZlldXSWTyfCrX/1K5lZWVlbo9XqPNdzCGInJisMYDAZOnDjBD3/4QymX/qIjikQajQajo6Pk83mpl/UirY/Yj0Q5+s2bN0kkEo+NrgjlaYvFwssvv8zRo0c5fPgw58+fl+GwXq/H+vo6d+7cYX5+Xhrw51WIs2uMi3DthEy5w+HAZDJhMBhkeZ2gXq+TTCapVCqsr6/Lcj1hVIrFotQe24uhr2F0Op2U3BaqqA+e6rrdLrVajXK5LBPTYiDV06LX67d0jA/T7/elHPpeXU+dTofVasVms2EwGGSiU6yvmGyq1WrpdDqUSiXW19dJp9Mkk0nZF/VNSdV2u83m5iYWi2WLDp7Q5BIHJqFUW6vVKBaL5HK5FzJXMxgMpER8q9WSkYV+v/9CGRfBsPCpXq+X+T7h5Yq/FyXGQj0+FArJFgyNRkOn05FKCLFYjHQ6vUXo93mwK4yLqMc2GAycPHmSAwcOcPLkSaLRKCaT6SHtpaWlJf79v//3crZIuVyWVUziVLlXJv09CbVaTSAQwOv1cubMGd566y1ZQjtMPp/n0qVLJJNJvvjiC+7evSvX4GkRWleBQOCh9a7VasRiMWnQ9yI2m43p6WkikYgM+4nuekG/3yeXy5FOp/noo4/4i7/4iy0b/9Ns/rlcjv/yX/4LVqtVli+nUilZYhsOh5mdnaVSqbC8vMzy8jK/+c1vpMTMi4aQ9Aek7pjYUF9ENBoNkUgErVZLvV5nfn5eTtrV6XRS98/lcsn88/j4uLyXNRqN7L+qVqt88MEH/H//3/9HtVqlWq0+12vZceMyrCdmNBoJBAJMTEwQDAaxWq0PndJVKhWlUokrV66wsrIiZ23sR8QgJY/HQyAQIBqN4nA4Hnpds9lkY2ODeDxONpuVBuBJ0hkP/p3ZbMbpdD6UCATkSb5YLD63ZOB2I8RQh69PFIoIOp0OyWRSVoFdv379Wz+QrVaLxcVFWcocjUZlHkFUPjqdTik/lM1micVirK+vb+v17iXErBbxtR8Ohk/Lo0L04pl3u9243W4ajQZWqxWdTidzdh6Ph8OHD8tDzHBR02AwoNlsUq/X2dzc5N69ezvSk7ajxkVoNolklBjSNDU1hdvtln0FwzMMhKvc7Xa/9el8r6HT6Xj55Zd5/fXXGR8ff6x6rtFoJBwOo9PpOH369BYDNDwidfj1Xq93ixERI41F2fcw9XqdRCLBxsbGnu3MfxKtVkt26H/11VcsLi5y9+7d75X4FJpQYtMIBoN4vV65CdRqNdbX19nc3Ny3h6OnQaPRSO98bGxMDmjT6/VbDkf7sYpMjCfY2NjA7XZTq9Vk/55Op+PkyZOykEnkUXw+n2y98Hq9MkT24Pt2Oh2ZGtgpQ73jxkUkWH/+858TCoUYHR2VnbqibHj4BhPKqcOnnP2KVqvl3Llz/Mt/+S8fK/MC90/goVBINoiGQiH5PZPJxOzs7BaD43K5mJ2d3aKk/KSHuNVqSePyPIcNPS+azSabm5vk83kuX77M1atX2dzc/N5VNWJ+uSg3Fb8juD/VU4R1X+TSZbVajd/vZ2Jigmg0SiAQkAZ4L/ahfVuq1Sqbm5v4/X45n0VM53S73Rw+fBhAygMNC/QOP6vDBqTX69Fut2k2mzuaI90x4yI0nnw+Hy6XC6fTidVqpVKpUK/XKZVKUubbYrGg1+tl4spoNBKJROh2u2xubn4r1d+9hggbPgkhk6/T6Wi1WlvyCAaDAb/fv6V8WWiwPW3CdDgsth83wmazKZOeIiy2HU2iQn7I5/PJEufh381+CP0IXbTh/xYS7yIx/SQMBgNzc3NEIhGCweALl8Rvt9tUq1Wy2Sy3bt2iVCrh9Xql92YwGKSKwXBIutfryVyV1WqVxU9ms1n28YkilJ1iRz0Xr9fL3NwcY2NjjI2NYbVa+eKLL1haWmJpaYnPPvsMjUbD9PQ0LpeLH//4xwQCATweD2+88QaJRIK33357XxuXp8FsNjMxMUG/32d6enrLaWVYzE4gZCGellqtxvLysuwf2m8IbbG1tTVu375NPB6n1+t9r1OfSqXC5/MRCoWYnJzkJz/5CX6/n2AwuI2ffOcRFU2iN81oNHL+/PktIwke53GL6rzR0VE8Ho8cHfFgy4D47/2IOEw3m03+03/6T7jdbo4fP87ExAQ+n4+JiQm63S6rq6tUKhX6/T69Xo9yuSwnwR45ckR25Y+Pj1OtVvn000+5d+8ey8vLL1ZYTDRKWq1W3G43drtdysaXSiUSiYRMcqrVakwmk2yU7Pf76PV6Ke4mEl1i0V9EhO4a8MihYd8V0SdUr9cpl8vUarU9m9B/FO12m1arRbFYJJPJyGmH21USbDAYsNvtOJ1O/H6/jJGLkK/YVPZaaFfMTBKD1qxWK1qtFrPZjMlkIhwOyzlDXq/3id6IVqslGAxKz/vBoWmi2OdRYyX2A+IQU6vV2NzcpFar4fP5MBqN9Pt9rFar9ERENazotheRHaHLJsq4hdSLyCPuFM/duOh0Oim6ePr0aV599VX0ej3lcplkMsmlS5f43e9+R6lUIpfLodFoWFlZIZvNkkwmqdfrmEwmXnrpJQqFAisrK9RqNSlLstce1N1Kv9/n7t27LCwscPPmTW7fvi07qPcDg8GAzz//nA8//JBYLMbVq1e3VUFapVLh9XqZnp6WxRJ2u10qSXz11Vf8+te/plgs7jnP22g0Mjc3J0U9JycnMZlM+P1+WfHpdDplBejjjILIG5hMJmmsHvx+MBjk6NGjaDQaPvvss+dxeTtCo9EgFouh1+vJ5/PYbDZMJhM2m43BYEClUpGFH4PBQM5psdvtshhCpVKxubnJ+vo6CwsL3LlzZ1uFa78tz924aDQaeZITZXWtVot4PE4ul2NhYYFr165teX0mk5HNZu12G71eL93G0dFRgsEgvV6PVCr1vC9n3zIYDEilUty4cYOFhYV9l9saDAasrq7y7rvvks1mWV9f/8YGyW+DKCMPBAL4/X6ZqM7n83Kmi+hh2GuIfgsh437s2DHsdjujo6MyR/BNoZjhhPTjXq9SqXA4HEQiEdLp9HOfpPg8Eb0pwFPtY6Jp0uVyyfCjOLjk83mSyeS2FKV8H577b0sIL05MTBAKhdBqtaTTaT7++GPi8fhDk/hEMgtgdXWVzz77DJ/Px6FDh2ScV1RX7Ee3+bsiejVEqFCUPYq+oFKphFar5fz580xNTe3wp332iDHFQtQPvq7UKZfL2xZSFRMF7XY7p06d4tSpUwQCAfR6Pa1Wi8uXL3Pt2jXm5+f3TBhXVCi53W6i0Sgej4dz584RjUYZGRnB4/FIKffBYECtVpPhvsdtbiLZr9FoMBqNjzUcTqeTaDRKr9fjZz/7Gfl8nrW1NenxZbPZfZuPeRIiNRAIBGTyX4x0EOKUYhrqTvHcjYvJZOLEiROyn0Wn05HJZPjFL37B4uIi+Xx+y+v7/b6MTV+7dg21Wi0nTJpMJiwWi6yWUIzL12xsbPDuu+/Kk/FgMGB9fZ1YLEaxWGRhYQGz2cy/+3f/7oUwLqFQiNdeew2/3y9zdIVCgeXlZVqt1raFUy0WC+fOnWNsbIzXXnuNixcvyrxBJpPh7//+7/nlL38p+7T2AiJHGo1GeeuttwgGg1IfTRSLiKpGIbyYz+dlOeyjNji9Xi+leHw+H1ar9aHXqFQqAoGATGwfOXKEUqnEb37zGzlqu1AovBAlyw9iMpkYHx9ndHRUyr50u11yuZycWLnT6/LcjYtKpcJoNGI2m1GpVDQaDSnd8jg5aCFUWa1WSaVSMgwm5sgHg0Hy+bwcQbvTFnu76Pf7bG5ucuvWLbRarZz1LqbLCTqdDpVKZcvNtLCwwPr6uiwdFpLxmUyGVqslR58+qVS0VquRyWQolUp7Npel1+vRarVyUJIYdy2S+dvVK6XVatHpdFJ5WUh0GAwGqZSczWYplUp7rldIqO+KgVaBQEBOehXhrU6nQy6Xo9VqEYvFpHL040q6zWYzfr9f5hUeZVzg67HbRqMRp9OJVqslFApRq9VoNBpST7BcLr8Q3f2ivN3tdssufrHvNRoNstkshUJhV7QMPHfjIm4Um81Go9FgdXVVDlyqVquPDRWIk7dI8jebTbxeL6dOnWJkZASr1crCwgLlcplSqbRnToVPotls8ud//ue8/fbbuFwuIpGIHJA23LeSTCb56KOPtuRERI5KbJwivNhqtZicnORP//RPGRkZ4dChQ4/82f1+n1u3bvE3f/M31Ov1PbchwtfabB6PRw6i6nQ60ntLp9PbthE5HA5GRkYYHx/nzTff5NChQzgcDlQqFalUikuXLrGxscHm5ua2/LznhTgMWiwWxsfH+eEPfyjLhocT8KlUil/96lekUinu3bvH5uYmzWaTarX6SOPt8/k4efIkHo+H3//933+s0rdAp9PJXrjXX3+dM2fOsLS0xLFjx0gmk7z77ruk02mazeau2FifBSqVimg0yszMDIcPH+bcuXMEg0GMRiO9Xo94PM7vfvc7ksnkN86AeR7siOcilGi73S6NRmPL7JUnITa5YrEoXysst8/nw2Qy0Wq19s2cjH6/L8UNfT4fuVwOu91Op9PZIou/vr7O559/Ti6Xe6r3VavVzMzMMD4+jtPpfOj7QnZHKKruVa9FpVJhsVikqJ9KpZIesJhIuh0/A+6fKD0eDz6fj5GRESKRiMw5VKtVYrEYiURiT1bb6fV6zGYzDoeDQCCA2+2W3xPJ+Hq9zsrKCrFYTM4UEu0DDxpw0XIQCASkDpYoQX7UWIx+vy/zPjqdTsrFwP0qKzH3aS9r3z0NKpUKm81GKBQiGAzi9/vxeDzSEy+Xy2xsbJDL5XaFgd3R8otSqUQmkyGZTH6r+GCj0SCRSKDT6TCZTNJF9Hg8AFJyfz8hlIkNBgP5fH6LVlixWPxWnoVQOBgdHX0oHFEsFvnggw9IJBLcuHFjT4cYNBoNs7OznD17lrm5OXQ6Hd1ul1QqJb3l73N9arVanuJPnz7N7/3e7+Hz+fD7/fT7fb766iuuXbtGPB7n008/lUKVewmtVsuJEyc4fvw4x48f31JaPBgMKJfLFItFlpeXuXHjhowuiKFUD66vUIo+cOAAb731luyJESFyYfQTiQSVSoXV1VVisRgmk0mOAT558qQMOx4/fhy32821a9cwGAzbXvW3WxhuOD179iyRSASj0Uin0+Hu3btsbm5y9epVYrHYlrLlnWRHjIu4OcvlMvF4nHQ6/a1OHGJmhqg8c7lc8qvdbu/LksXh0NTKysqW733bDVJIv0cikYe+VyqV+O1vf8uNGzdYWVnZ88ZlamqKixcv4vP50Ol0Mo8kQmPbYVwCgQBnz57lj//4j6WH1O12uXbtGv/1v/5Xstks9+7de2xyezej1Wo5cuQIb731Fj6fb0uOTqVSSeHF1dVVbt269UR1Z5EjHRkZ4eDBg3L4HXyt5JvL5SgWi3z55ZekUik+/PBDvvjiC5xOJ1NTU/j9fpxOJ8FgEKfTSSQSkeMUBoMBpVJpz4Uev4nhqZOhUIjjx4/jcrnQ6/V0u12Wlpa4ceMGt27dIpFI7ArDAjtgXAaDgXTjgO/UfdvtdqlUKpTL5X3tBj+O77pBjYyMEAqFOHjw4GPHyPZ6PXnC3ot5lmGGRxbY7XYZLv2+U0hFw6DFYuHYsWNEo1FCoRDVapVyuczy8jLFYpEbN27IJP5OqtN+HwaDAblcTh5oJicnpXSQGCOg0+nQ6/XyWRbDvgSik1/0px0+fJipqSnpBYkkvCgNz2azrKyskEwmKRaLMkxbLBZRqVTcuXNHNmiKcJhKpcLpdO7L8chqtVqqJbvdbjlIsdvt0m63SafT0mPcTSHs525c+v2+TPQNBgNZRvxt8iT1ep14PI5KpWJ8fBzYv9pD24VGo+HChQv87Gc/IxwOPzLXAve9wlgsxsLCwo6XMn5fhOLu7OysLKfdDrxeL2+88QbBYJA333yTw4cPy6mo6+vr/D//z//D3bt3qVar1Ov1J45F3u10u11u3rxJo9Hg/PnznDhxQm7gg8EAnU6HxWLBbDZjtVqxWCzU6/UtMX+9Xk80GsXtdvPTn/6Un/zkJ9jtdqxWq5RtEtWMn3/+OZubm7z77rskk0mZF6vX66yurrKxsUGr1eJ3v/ud1DITxQZjY2PcvHlzR9bpWWIwGBgbG8Pn8zE9PU00GpVj3guFAjdu3OD999/f1n6t7WBHjEulUqFQKNDr9TCZTJjNZqlL1G63n2qBhOT+9z2FvgiIMlmXy8Xo6Cgul+uh0KE4BYkSz93iWn9fxAlXIMY1fJtZQKKPQ0xFDQQCcuS0z+fD7XZTrVZJp9NSfmO/DP8SHkU2m5UVncNl8WKWu9lsxuVyUalU0Gq1W/IeQv3c6/Xi9/uldhYgddY6nY7UeBM/a7jiSYza7vV6ZLNZOp2O/N3a7Xb8fv9DumT7BaE07ff7ZftAp9ORY7JFhexuC7s+d+NSrVb5zW9+w/Xr13n11Vd54403sNlsrK+vs7Gxwfz8PLFY7InvodVqZY7lmyS9X3TEqAK73c7s7CwzMzOYTKaH1i0Wi3Ht2jVWVlZ2VI/oWdPpdEgkEiwsLJDL5b7xYRTrZ7VaefXVV/nhD38oK3bEGt69e5dPPvmE//E//ge5XG5fxfzF6OdOp4PD4eDtt9/G6/Vy9OhRPB6P7BSfm5vjT//0T8nn8ywvL0tRRQC73c6FCxcIhUKMjY3hdDrpdDqkUimazSYLCwskk0muX7/O7373OxnyftznERpwQuJfp9MRj8fRarX7au0FNpuNN998k+PHjzM1NYVaraZcLnP16lWSySSxWEx6LS+0cWm1Wty7d49YLMbx48elBPnMzAwWi4VYLPZUxkU0xe3H5P12IrTcRJms3+9/ZAiyWCxy584d4vH4vqy2EfT7fVml+DRlwWL9vF4vL730En/0R38k16/T6bC4uCgT9h9++OGez1M9iJBz6Xa7xONx7ty5QyAQYHR0FLvdLkNTarWal156iWq1itPp3OK5OZ1Ozpw5QyQSkRL9Im9aqVRYWlpieXmZW7dusbCw8MQyWlH2/CD70agIjEYjBw8e5MyZM1KJpNlsEo/H2djY2LXVsTuWcxE9HJcuXZJ9F9FoFI1Gw8TEhJz93O125RQ2Ie89MzPD1NQUwWCQRqMh6+uTySSFQmHPxrefBWLMsRgf+zgymQyXL18mlUrtyV6MR9Hv91lbW+OLL77A4/EQjUYxGAzMzs5KJYf19XV52tNoNHISqtfrJRqNYjKZCAQCWCwWDhw4gEqlkiWy1WqVhYUFUqkUq6uruyrevZ2I3Fsmk+HKlSu43W5UKpWsOBSlxDabDbPZzOzsLH6/X/570S4gqpuKxSKFQoHV1VUKhQK3bt2SjZf7dQ2/C6LVQoTCNBrNloNNqVSiUCjsWvHTHakWE1phN27cQK/XMz09zT/9p/8Ut9vN7Owsm5ubXLp0iXw+T6PRkHLckUiESCTC3NwcR48exe12c+vWLTY2Nrh79y5ra2vUarVdacV3Cp1ORzgcZmJiApfL9diqvEQiwbvvvkupVNo3D3i32+X27dvYbDYOHz4sp5ieOnWK0dFRcrkcn376qcy9iLLbo0ePcuzYMd58800ptSOGrqlUKvL5PB9//DHpdJqFhQXS6TTxeHzPF0A8jk6nI5UNNjY2MJlMrK+v4/V6OXfuHBcuXMDpdMqQaygU2pLPGp6mWqvVpGrv/Pw86XSazz77jFu3br3QM5kehcFgkMrHQtxT5JWazaacQaQYlwcY1gozm81y0lqtVkOj0UhD02q10Gq1aDSaLZ2p/X5fDtgRMV4xMGc3xR13Gq1WK+VPHvRcRBNcs9mUekT7aYMcDAbk83nW19flcDkhmNjr9RgfH+fYsWPymsVBR8xyF+WzQoOsVCpRq9VYW1tjbW2NXC5HJpPZtrHIu51+v0+/30etVlMsFgFkZaFQRhbVn2LdhtdlMBjIDTGTyZBIJMjlco/VFHzRMRqNeL1ePB4PBoMBtVrNYDCQRRD5fH7X6Ig9ih1NWCQSCQqFAvPz89y5cwe73c6JEyeYnJxkenqaM2fOyFOjqJW3WCy02202NjYolUr88pe/5PPPP5fVJeIBULiP2Wzm4sWLXLhwAavVusVzabfbXL58mcXFRa5du7bvHnDRyLi4uIhKpeIf/+N/jMViYXR0lFAohN/v5/d///fl5jfcTyDGOLTbbdbX1ymXy1y+fJmrV6+STqe5du2a9JLFyf5Fue/EmmxsbLC+vs57772H3+/n7NmzcnT56OgosViMGzduSOM9GAxIJBKy+17k93aDDtZuJBgM8uqrrzIyMoLf70ev11Or1aRax+XLl1lfX6dWq+30R30kO2pchCJytVql0+lsUV11uVxMTEzIOS0qlQq9Xi/lT9bX10mn06ytrbG0tESv19tXp+7tYjjn8iBCdl4kBffbyVt0bIuppu12m36/L5v3bDab7JMSiMOJEPpsNBoUCgWZI7h16xaFQoF4PL5rwxHPmuGkujAMhUIBl8tFsVjE7XZjsVhIJpMsLy9vUeZOJBLSqGQyGeWZfQIWi0Xuh8Jz6XQ61Go1KpWK9Fx2K7ui1EqEHBqNBh9//DGLi4tYrVa8Xu+WyiYRHms2m2SzWWq1GktLS3u2+1nh+SGkRILBIIcPH5Y6dMN0u10purixscHt27elcRHVOYlEQvZlKHxNrVbj1q1bmEwm4vE4LpeLQqHw0DREMbDuRfL0vi1iTEQ4HObUqVP4fD7sdrtUKv/0009ZWFjYtR6LYFcYl16vJyuUxLCwp5GDUQyKwtOSy+X48ssvGRkZkdMTH6TX67G8vMzVq1e5evUqf//3f7+lLFu53x5PvV5naWkJgPn5+X3b0PisEarxYoja4cOHZdNzv99naWmJt99+m2w2u+tbBnaFcXkUyo25PQxX5Qk1BCHZ0Ww2WV1d5e7duySTyX19kiyXy3JyoclkeqRMSLvd5sqVKywvL8sTt3IffjeUdfvuiDEDotBGjI5Qq9UyVCvaOXYzu9a4KGwPxWKRX/ziF3zwwQeylNvhcDA5OUm73eaDDz7g3XfflUnp/crGxgb5fB6NRsNf//VfP7L5VpR4irXYrVU4CvsX0X8l+oGWlpYolUpSYl9IZ9VqNcW4KOws3W5XajGJUGOtVpPjd0Up6H5HDO0CtkzsVFDYbQjPpVarkUqlaLfbqNVqTCYThUJBVijudu9QNXjKT/htJPH3O9/ll7pT6zcsdz4cFhOKtCsrK2Qymef6mfbS+u1Gvuumoqzh1+zme1CtVqNSqfB6vYyOjmIwGDCbzWg0GjkWvtvt0mq1dszAPM3PVYzLd2A335h7AWX9vh+Kcfn+KPfg9+Np1m9/DJtXUFBQUNhVKMZFQUFBQWHbUYyLgoKCgsK289Q5FwUFBQUFhadF8VwUFBQUFLYdxbgoKCgoKGw7inFRUFBQUNh2FOOioKCgoLDtKMZFQUFBQWHbUYyLgoKCgsK2oxgXBQUFBYVtRzEuCgoKCgrbjmJcFBQUFBS2HcW4KCgoKChsO4pxUVBQUFDYdhTjoqCgoKCw7SjGRUFBQUFh29E+7QuVKWxfo0yx+34o6/f9UCZRfn+Ue/D7oUyiVFBQUFDYERTjoqCgoKCw7SjGRUFBQUFh21GMi4KCgoLCtvPUCX2FvYlarcZkMqHRaDAYDBgMBnq9Hq1Wi36/T7PZpNPpyNcPBgP5paCgsPOoVCqMRiNarVY+w+LvBYPBgHa7Tb1ep9fr0W636ff7O/WRAcW47FtUKhUqlQqbzcZLL71EIBBgbm6Oubk5CoUCN2/epFgs8tVXX7G2tib/Xb/fp16v0+126ff7O36DKii86JjNZk6ePInP5+Po0aPMzc2h1WrR6/UA9Ho9er0et27d4uOPP6ZQKHDnzh1KpdKOfm7FuOxj1Go1BoOBSCTC5OQk58+f5wc/+AGbm5sYDAZSqRSxWIxMJiP/Ta/Xk56MMDAKCgo7h16vZ2RkhGg0ypkzZ/jBD36ATqfDbDajVqtptVp0Oh1sNhuxWAyDwcDy8vJOf2zFuOxXbDYbPp+PYDDIqVOnOHDgACMjIwBYrVZmZ2cJh8OYzWYuXLgg/12r1WJzc5NarUahUKBQKFCtVtnc3KTVatFqtej1ejt1WQq7FIvFwujoKEajEb1ej1r9dTp3MBjQaDRot9vkcrkthxmFx+NyuRgZGcHn83HhwgUmJibwer2k02lMJhMAOp0OlUqFXq9nbGyMN998k42NDWq1Guvr62SzWfL5/I58fsW47FPsdjvT09OMjY1x8eJF5ubm5ANvs9k4cuQIg8GAl156SeZXBoMBtVqNO3fuUCwWWV1dZW1tjUQiQbvdplKp0O/3FeOi8BA2m40TJ07gcrkwm80yZAP3PeBsNkuj0WB+fp5sNqvk9J4Cj8fDyZMniUQivPHGG8zMzBCPx4nH41gsFoxGo/zS6XRMTU0xPj5OIpEgmUxis9m4deuWYlweh1arxel0YjQasVqtOBwO+b1er8fm5ibFYpFut0u73X6hb1qVSoXFYsFgMDAyMiK9FZvNhkaj2fLa4ZMlQLvdll6Jw+FAp9PRbrcBMBqNFItFSqUSCwsLNJvN53ZNCjuDCKlqNBq5eZlMJpxOp7x3hu8hj8fD7Owsdrsdg8HwkHFxuVw0m015j7ZaLarVKt1ul1arRbfbpdFoUKvVXuhneBiLxUI4HMbn89FoNEin06ysrLCwsIDVaqVer0uP0e12o1Kp0Ol0GAwGXC4XPp8Pk8mESqXakTXd9cbFYrFw8eJFIpEIZ86c4fTp07JKolqt8md/9md89NFHFAoFUqkUvV7vhb05NRoN4+PjjI6Ocu7cOf74j/8Yu92O2+1+7L8ReZVcLsfGxgY6nY5QKITZbGZqaop2u02xWOTs2bOk02n+43/8j0pY4wVAHFCsViujo6N4vV6mp6e5cOECJpMJrVa7xbjodDrsdrv8+wcrmcR91mg0qNfrZLNZrl69SrlcJpFIUCgUWF1dZX5+nm63uxOXvOsIhUK8/vrrGAwG7t69y1dffcWlS5f45JNPsFqtTE1N4fF4+JM/+RNeeuklaVhMJhOHDh3CbrcTi8W4du3ajnz+XW9ctFotbrebYDDI5OQkR44ckTduuVxmZGQEr9crXe/BYEC/338hDYxKpcJqteJ0OvH7/YyOjmKxWGRpsaj+Gv7/drtNt9ulWCySzWYxGAz4fD7gfpWKOIl2Oh3pPYr1f1HWWFyvWq2WG+rwGjzqa6+j0+lwOp04HA6CwSChUIjx8XEOHTqE2WxGp9M90hsW6/IoHa7h+y6ZTFIulykUCsB977harWK1WmWC+kU+KML9vc9kMqFWq+XheX19nZWVFWw2GwCVSoVcLke1WsVkMsnfi91up9lsyqT/TuyJe8K4BINBxsfHcTqdWxbIYDDwk5/8hMOHD/Ppp5/yV3/1V3KxRUjnRULUw9vtdoxGIyqVaktp8cbGBhsbGzSbTfL5PK1Wi2QySalUkuum0+kIBAJYLBaOHTvGoUOH0Gq12Gw2er0ePp9PuunVanXfP/xqtRqLxYJer8fr9eL1etHr9TgcDlQqFZlMhmq1Sr1ep1Qq0el0qFardDqdPb02fr+fP/mTP2FsbAy3243NZsPlcmGz2R7pnXS7XUqlEv1+H71ej1arlX0ZAvF6jUaDy+Xi+PHjNJtN5ubmaDabpNNpfvzjH5PJZHjnnXfY3NykWq1Sq9We+/XvBm7dusV/+A//AZVKRTKZlIU14plOJBIUi0X+7u/+jnv37nH06FFeffVV1Gq1DJVFo1H8fj/NZlP+fp4Xe8K4eDwegsGgPIULdDodp0+f5vTp0wB88sknqNVqyuXyC2tc9Hq9PFnC/dNiq9Wi2WwSj8e5efMm5XKZWCxGtVplYWGBVCpFq9WiXq+jVqux2WyYTCaq1SoWiwW3243X6wXA4XDgdDqB+2HJ/Y5arcZsNmMymQiHw0xNTWGxWAgGg6hUKpaXl8lkMhQKBVQqFc1mk2azKUM7e9XAOJ1OXn31VQ4fPozBYECrffJW0e/3ZQ5FJPRF7mXYCIn/tlgsTE1NAV97NKJCcXV1leXlZRqNBp1O54U1Luvr6ySTSQaDAZ1OZ0vUod1uy/vu008/ZXl5mcFgwNmzZ7FYLPh8PtxuN4FAAJfLRblclgU5z4tdb1yeFr1ej9PppN1uP+Suvyj0ej2SySQajUaGFTQaDfV6nXa7TSKRIB6P02g0yGaztFotCoWCfIh7vZ7s2u/3+xQKBdLpNFqtFo1GI9f4wTDkfkGtVhMMBrcUkBiNRnmwCQaDBINBDAaD9FzcbjflcplarUaxWKTRaJBIJKQnU6lUaLValEolmbTeCzmFarXK9evXqVaruFwuGa4S90qxWKTVasnXt1otWVgjCgB0Op30oAXi7y0WC6FQCIPBgNPpxGw2o9Vq5cZ4/vx5RkZGZLViqVQiFou9UIfGfr8v75Vhw/LgayqVCiqVinw+T7lcBu5Xi4pn1mg0ymKK58m+MS5Wq5VwOIxarWZlZWWnP86O0O12uX37NgsLC3z00Uf8xV/8hQyNie+LOPaDfw7fuJ1OB61WSyKRYGFhAbVaLTuCw+Ewk5OTdLtd1tfX91WTpU6n48iRI8zNzeH3+5mYmMBisTA5OSlzTwaDQaofwNcPvchn1et1FhcXKRaLLC4usry8TD6f5+7du9RqNVKpFJVKZYev9JvJZrP89V//NR6Ph6mpKUZGRigUCsTjcSqVCvPz81tKXEX+bjAYyMOdRqNBpVJtSfzb7XZsNhujo6P8+Mc/xu/3Mzc3J0trDQYDNpuNP/3TP6XZbHL16lXm5+e5d+8ef/VXf/XCGZdvut5+v086nSaTybC2tkYymZQNlQaDQeZN2+32QxWiz5pdb1zEgzz8QD8KsVG+6EnATqezRSvsuyA2S5VKhUajQavVyk3CbDZjs9kwGo3b9Il3DnFNWq0Ws9ksvRNRJCI8Fq/Xi9VqlQn9Xq9Hs9nccp+J5KtWq8Xr9WI0GqnVarRaLUwmE7VaTeZi4P7vqdVq7dp7tdPpkMlk6HQ6mEwmBoMBhUKBjY0NqtUq6XR6i3EZPqgMP6/DG5pKpZLVYjqdTvZPiTCrqHSC+4dFs9mM3+8nHA5TLpfxeDyoVCpqtdoLZWS+CdF3JrTFLBaLfH6F9/hgePJ5sGuNi9jYxOb2qCTiMJVKhbW1NRnuUfh+qFQqgsEgx44dIxQKyfUfHR2l0+lQKBSe+0louxGbWSAQ4JVXXsHr9XLhwgVmZ2flqU8YDY1GI5PL+Xye27dv02g05HuFQiGmpqbQ6/UEg0HUajUjIyOcPXtWhiErlQrvv/8+i4uLrK2tce/evV0rsVOr1bh79y46nY47d+5gNBrpdDoyn1SpVB4peAo8MsciaDabsjJxY2MDs9nM2NiY9JBOnTqF3W5namoKm83G7OwsoVCIsbExAFKpFB9++CFLS0vPYRX2FtVqlXg8TrfbZWxsDIvFgtPpJBqNAnDv3r3n+nl2tXFRq9VoNBr555Msb7vdplwuy6SiwvdHnNodDocMdVitVtxuNxaLZc+OfRWnanGqc7vdzM7OMjIywuzsLJOTkw95yqJXQySdV1ZWZHxbeDPCw3G5XLLhEO57AY1GQ/Z0tNttarWaTMLuxvLlbrcry4S3E2GQqtUqhUIBrVZLOp3G6XTSaDQIBAK0223GxsZQq9U4nU6cTif9fp8DBw5gt9u5evXqjjUG7mZarRblchmr1Sq9Gb1ej91ul82Uz5Nda1xMJhMul0uGKSKRCHa7/aHXCVdcUfHdXlQqlfwdWCwWKeO9sLDAjRs3WF1d3VNrrdfrZYI+Go3idDrx+Xz4/X78fj9nzpzB6XRiMBgolUoyxCDWQaPRkMvlyOVyrK6u8vnnn2/ZfBcXF1lYWMBisRCJRLBarfLLbrcTjUax2+2cPn2aSCTC1NQU0WiUfD7PtWvXKBQKsr/jRWA4jFYqlWi1WszPz9NsNvH5fFQqFUKhENFolEgkgsPh4OjRo4RCIRYWFmTjryjNVbhvuEulElarVR6wzWazLCF/3oVOu9q4BAIBwuEwo6OjjI6OPtLy9no9ut2u/HrRcy7bidlsxu12YzQaGQwG1Ot17ty5wyeffEIymdxTGmMGgwG3243b7eaVV14hGo0yNjYmk/aBQACdTkc+n6dYLFIul8lkMqjVajweDzqdjlwuRzabZWVlhU8//ZRUKiXfX4QgRJjHZrMRDodl8+/Y2Bh2u52zZ88yGAyIxWLMzc2xurpKPp+n2+3KktMXBXEYFGXcmUyGmzdv4vV66XQ6jI2N8corrxCJRHA6nZw4cYJyuczCwgKDwYA7d+6QSqUU4/K/ENWfNpuNbreLSqXaYlyUhP4Q35TM7/f71Go16vU65XKZZrMph2ApfDdEr4zoURC5FmHEq9WqLLndS0bcZDIRDAbxer1EIhEikQherxebzYZOp5MJ9tXVVTY2NqhUKtK4OJ1OdDodzWaTRqNBLpeTfQeCTqdDvV6n3++TzWblf7daLVQqFffu3cPlcuH3+2Wy2uPxUK/XCYfDstLqRe3pGPZkGo0GGxsbDAYDxsbGiEQi0osWTb7j4+MUi0XMZjOtVuuF1xUEZGGK0WiUXorwwHdiX9zVxuWb6PV6xONxNjc3WVxclFLxe+lEvdvQarWyr8HhcMiqMGHAE4kEy8vLe85D9Pv9XLx4kVAoxKuvvsro6KjsuWg2m2SzWcrlMr/85S/56KOPZG4FkIl9j8eD2+0mk8lsSeYDMqQlpDrEBFCDwUAwGCQWi+H3+/mDP/gDjhw5gsPhwGq14vF42NjYYGpqivfee49kMrkTy7MrEAamVCrx8ccfYzKZpHLE+Pg4r776KiaTibNnzzIzM4PRaOTu3btUKhWlkIevhS6DwSB6vV6GHOPxONls9rnvi3vauIju81qtRrPZlDpZCt8dUW5stVqlKq4IX4gS3L2kiiwKQqxWK36/H5/Ph8vlwuFwSG+s3W5TKBTI5/MkEgnW1tao1+sUi0UAOWJWlB+Xy+WHHtThUngR2mo2m+h0OtRqNevr61J2p1arSZVhm82G3++n0+lgtVrRarUvfO5QSMnUajWSySSJRAKTySQLKCwWCzqdDq/Xi8fjkQb9RUdUNhqNRhkCE8UkO1H2vqeNi8L2YzabOX78uJxeaTKZ6HQ6sq9gL5Ufi9JpkbA/f/48LpdLiiQKEcBkMsnHH39MJpNhYWGBYrG4RRtMHFoymYzsXXma3Ihogsvn89y4cUM2EN65c4e5uTnOnj2LTqfj4MGDhEIhlpeXWV1dpVarkclkXmgPXHSnLywsUC6XmZ+fZ21tDa/Xy6uvvsr09DRnzpxBq9WyurrKn/3Zn7G6urrTH3tHMRqNUvZFp9MxGAxkT1KhUFA8F4WdxWAwMD4+zszMDIFAQM7l2Itlx2q1Gq/Xy+TkJNPT0xw4cACLxUK9XqfZbJJIJLh+/TrLy8v8z//5P8lms498H+GRlEqlbzWXXHgf1WqVarWKwWDAbreTSqXQ6/WcOHECnU5HJBLB7XbLqYNarZZcLvdCGxfhCW5sbJBMJllbWyOTycjeK6FN5vV6uXnzJn/5l3+50x95xxFlx0JcFL7uKxI5wOfJnjcu7XZbjlBV+O6IplVRVeX3+zGbzcD9zbXRaNBsNvfEhqfRaDCZTJjNZg4dOsSZM2eYnJwE7jcHLiwsyBLga9eukU6nn0uor9frkU6n6fV6pFIparUaZrNZft5AIMD09DSxWIz19fUXqnLscYgeoFarRS6XQ61WE4/HWV1dRafTyeKTveRRbzci9Gs0GqWMjqg8bDabsuhJCYt9CwaDAc1mk0ql8pAch8K3QxgWq9VKNBplcnJySxNgpVKhXC7viQ1PxOOdTic//OEP+cM//EPpeRWLRS5duiT7dS5fvky3230u19XtdllZWWF9fZ0DBw5QKBQYDAZ4vV5MJhNTU1NyLsfVq1cfKhp4EREeTK1WIxaLSV0zUfJ98OBBLBbLCytWK6o7RR+X0+mU6vHtdptqtUo+n6darSqey7dhWKZ7JyzzfkIYF6PRKHW2hGy/kHsRM2B2O3q9nkAggM/nw+PxyJGwQnYknU6TTCalIvTzvG9EiK3RaFAqldDpdLLE1mq14vP5cDgcL/RJ/FGIghJxGhfqzE+ShNpLiMjB8LUMD/d7Enq9Xiby9Xq9LK0XayVyhIrn8i3odDrcvXuXjz76iFgstidCNrsVIYE+MjJCOBwmFApJ45JOp3nnnXdIJBJsbm7u8Cf9Zvx+P//0n/5TJicnmZubQ6fTkclk+OCDD0gmk7z33nusrq7u6LCzTCbD1atXCYVCuN1uOVZaDHYaHrKlcB9hmOv1uhxlsF+q6sTkT51OJ/v6hGSQGIXxqHtVo9HIg1Q4HMblcqHRaOSYgo2NDbLZrGwwf57saePS7/cpFotsbm4+9ylru4FHNZc+STRQ8CgtK71ej81mw2azySY/8dp6vU48Hicej++JJj+z2SwT+KJUtdFoEI/H5TTOne4nqdfrpNNp9Hq9zBeK9Xe73Yrn8hj6/b48kQ+HMsWzsNeiF0JDUYS1RAGN8GKEUOjwsLAH/73ZbMbpdGK32+W/F/OFRJvGTqzLnjYuLypieJeYbT7896Ojo3JDfVwculqtsra2RqvVkieaSCTCzMwM4XAYh8PBYDBgY2ODVCrF9evXuXPnDul0ek9MnxSnQI/Hs2tHA2xubvLJJ58wPT3Nq6++utMfZ8/Q7XZlybHb7Qbue90zMzM0m01SqRSZTGYHP+HTIZLwc3NznDhxApvNRiQSkcUJKpVKqkRUq1Vu3bolte2Gr0+r1TI9Pc3x48eZnJxEp9NRLpe5deuWVJvYKRTjsscQar46nY7R0VFOnjwpT7l6vZ6XX36ZmZkZdDqdHGz14KklkUhw6dIl2c8hJLqPHj2K3W7fYlxu3LjB/Py8rLDaCydDoTLg8Xh2peIwIHM+okxZ4enodrusra1RKpWYnZ0FvvZUhYDtbjcuIr+i0+k4ceIE/+Jf/AvcbrfsKxNzg0qlkjSWf/VXf8Xq6iq3b9/eMgFWGJdz584RCoXQaDQ0Gg1u3brFrVu3pIzOTrDrjIuw2kajUc5yF8lPMalOJETFeFmR3NuPmEwm6TJ7PB45athoNDI1NcX09LQ0LjqdDr/fj91uf6RkvMBmsxGNRuW44l6vRyAQkFL6oka+Xq+TyWQolUp7Tu7lQRqNBslkklQqtaNFCeL+9ng8RCIRJiYmZH5FJF9rtdqeXutniShLHm4/0Gg02Gw2+VzsdvR6PdPT07hcLtmrY7FYgPvGU9wjQlmi2+0yMzODxWKh2+1uCZWJERji2kWxQ7FYJJ/P76iaxq4zLuJU7nQ6GRsbw+fzkcvlWFxcJBQKEQ6HaTQarK+vy4FD6XR6XyX3BGq1Gr/fj9frZXZ2lh/96Ec4nU4mJydxOByyxl8gjLLQy6pUKo/cpDweD6+//voWUVAxxlitVqPT6WQvxvz8PBsbG3uuj+jB606n03zyySek0+lv1Qi53YjBd8eOHeMf/aN/RDgcxu/3MxgMZCXb5uamImP0GMTMeDETB+43/o6MjDAYDLh9+/YOf8JvxuFw8Cd/8iecOHGCiYkJpqamZKFCo9GQ+5joOXO5XHi9XprNJh9//LHcA/P5PEajkYMHDzI5OUmv16NYLJJOp1leXubevXs7miPddcZF5AqMRiNOpxObzYZKpdoysU/8IqrVqjzB7KeHUZxadDqd1J4Kh8NEo1FcLhfj4+NygJKoABHJvl6vJ0+/xWLxkQZXaFqJskWRm3lwQx4uZdyLJ+nhzyx6dXZymJzQbTMajXg8Huk9CpHBZrNJuVzekW7q3YLwwh9VjCKeC4PBgMFgkNWMGo1Gzs0RCe3dyPBI7WAwKOcKwf37s1gs0m635bMstOY0Gg12ux273S7nW9XrdalcbrfbMRgM1Go1KpUKpVKJarVKvV7f0X1xVxkXcfIW0g5vvPEGLpeLcDiMxWKRrqOQ7kgmk3LQ0H56GIWSrsPh4Kc//Slnz56VMibiwep2uxSLRQqFAu12W96YiUSCfD5PKpViYWHhkTfX2NgYb731Fj6fTxYAPMp4GI1GHA4H5XJ5X1Qv7dTURxFjt1gsvPbaa8zMzHDs2DGOHj2K2WyWM+o3Nze5fv06q6ur++qw9LQYDAbZEPlg173YmI1GIydPniQSifDyyy+j1+vRaDRMT0/jdrv54IMPdm3VmNvtZmpqinA4zOTkJOFwmM3NTW7cuEEymeTSpUsyBN3v94lGoxw9ehS3282pU6dkBMPn88nwmEajYXx8HKPRyJ07d3j77bfl3igM1U6x64yLGD3r8/k4dOiQ9F7EKQW+burL5XI7bp2fBaLD3Ov1cuzYMX74wx/Kme4qlUrW+9dqNTk7JJlMUq/XuX37tpTHuHbt2iNzUUeOHOHgwYN0u128Xu+WB3H4v8XDrNfr90Wj2k4l94eldQ4ePMi5c+eYmJggEolIr1EcFnZKHn03oNPppHEZzv3Bfe9E5B6PHz/OoUOHiEajsuoqEAhgsVgeOa12tyDULyKRCD6fD6fTyeLiInfu3GF5eZlf/epXUrC03+9z8OBBWq0WIyMjzMzM4PV6pcfzKHK5HFeuXCGVSlEqlXZ8X9xVxkUMCgIoFAqyKkLkEQSNRoNYLEY8Ht9XlTYiHu/3+zl//jzhcJjx8XEMBgNarVY2Vi0uLpLP51lZWWFpaUnmV1qtFpubm9LwPnhqEQZrZmaGaDRKOByW/SwPolKpCIfDnDx5Eo/HQ6VSkZufkKLfS4gwo06n2xJifZZYLBbMZjMOh4OpqSncbjdzc3OMjY3hcrlkH0MsFqNcLsvKvFQqte8KVETfhgjFms1m/H6/PEyKPKuYRWK1WmWnudgkRWTjwIEDjI6OypCSmP+yubnJysrKrvRa4H4kIBQKEQgEgPsFM5ubm9y5c4eNjQ2azeaWXpZisShbAEQ0Y3JyUnoqomFSIHqAxFTTnWbXGZdqtUqtViOVShGPx2m327KDWVCpVLh16xZra2v7ao6DkACJRqP87Gc/Y2ZmBofDIT0WuG9YP/roI+7cuSOFF0Ul12Aw2CIZMXz6ValURCIRTp48yezsLIcPH8br9T62E1ytVktl5FgshtFoJJVK8fbbb+9Z4yI0mJ5HtZhKpZKb5fT0NL//+7+Pz+fj8OHDBIPBLb0MX3zxBfF4nPfee49Lly7R6/X2XAHFkxAFIyJ3YLVaCQaDnD17FqfTidvtxm634/P5GBsbk/lWnU5HrVaTAwDb7TZqtZpgMChzsYPBgHQ6zS9+8Qtu3rxJIpHY6ct9LHa7XaowqFQqyuUyS0tLXLp0iXK5TLVa3fLMptNpcrkcer2eq1evYrVa+elPf8o/+Af/AI/Hg8ViwWQyydeLfOtOh8MEu8q4DPOo8cZi8xQjaVut1r4KH5hMJjnnXTyEQg5CjNHN5/Ok02k2NjZkn8TjTinioRaDv0ZGRhgdHSUQCMgBWCJfJSZNajQaOQ9CJKAdDgfBYBBAFgKI0NxewWg0yhBgp9N5oqTGd0GEvjQaDWazGb1eL8cpi5kyHo9HTrWs1WqUSiXS6bRUPxhO6O5FxPMqDKder5fXazabpXcixj2Pjo5is9lwOBxSxVoYkUqlgkajoVgsUq1W5XuLCIYYqiaGvZVKpR0vvf0mRBuB3W6n3+/TbDZlYZLwWoYZPijW63WAJx46LBaLPLgkk0m63a5sNdiJfOOuMy6iCkSM2R2eTSAmqomqn52s/HkWjI6O8tJLLzE5OSlr30VSM5PJcO3aNTY3N/nggw+4ffv2E/shRIza4XBw/vx5RkZGOHv2LKdOnZIPNCBj/Ddu3OB3v/sdTqeTn//85zJ043A45NTEbDbLrVu3SKVSVKtVisXirnC/n4ZIJMI//If/kGQyyW9/+1vi8fi2TtUUitIOh4OTJ0/i8/k4evQohw8fxm63MzIyIoVBAe7evcs777xDMpnkww8/JJ1OUywW95TBHkaEHcX4AL1eLxPSVquVUCiE2WyWOQcRGlOr1VJYMZPJ8OWXX9JqtSgUCrRaLZLJJOl0GqfTyczMDC6XC4vFgsvlkgeucrlMOp3e9eFEl8slG5VzuRzFYpFkMkk2m6Xdbj/2dy+iEN1uV1aQDu8Ngunpaf75P//nbG5uotfrZbuGGBQmDi7beah6ErvKuAwn9EXDpOi9gK8n+7XbbRlb3KunvEchTh5erxej0bilRLher5NKpaQuVjqdfuz7CI9FVN+Mjo4yMTHBxMQEk5OTMgna6XQol8tkMhmWl5e5fPkyXq+Xixcv4nQ6peckkqw6nQ6Px4PNZqPX61GpVHblSN7hkcPixGuxWIhGo/L0LHJSQi32aa9BeNIPetZirR0OB6Ojo4TDYWZnZzl06BB6vV5uBuIhz2azLC4ukkwmWV1dJZfLPbP1eBY8uA6iYEEk44WnODExgd1ul17K2NgY0WhUdtOL3gzRUiAkhjY3N+WY42QyKasnRRMl3C+CEL0h4ms3o9frcblcWK1WeZ1PMydp2CMUz7VWq91y36pUKmw2G5OTkxiNRoLBILVaTUZ5xH0ulKVfOOOi1WqZm5tjamqK06dPMzIyIsMwgMzFiFikKMPdDwwL2A0bVKFCcOfOHd555x3S6TT5fP6R76FWq3G73VitVsbGxjh27Bhut5vTp0/j9/sJhUJyFryoKPn1r3/N9evXZQlzp9Pht7/9Lbdv3+b111/H6XTKjcPhcPCjH/2IsbExlpaWuHHjBqVSibW1NWq12q4xMsVikQ8//JB4PM7hw4eJRqM4HA6OHj3K6OgocF/bK5FIkEgkKJfLrK+vf2MuRiSjrVYr4XAYo9EoVQ1EfsVsNjMzM4Pdbsfv92MwGBgMBpRKJer1Oh9//DFLS0ssLy9z7do12Y+wWxChPeGJPKpKUKPRyHHRbrcbn8+H0WiUfSahUEiGv8LhsDwwajQaMpkMa2trNJtNcrkczWaTtbU1crmcDBOK+0hUgR06dIhQKMTp06ex2+04nU5qtRrXr1+XiuiPmyK6GxEGVYzNflIlpjgYnT17lkgkwvHjxwkGg3Q6HRYWFuj1ejKfZTQasVqt0ksf7nfJZDLMz89TKpW4ffs2qVTqmV/nrjMuBw8e5OLFi0xPTxMKhWTCWcxuyWaz5HI58vn8jnZaPwtEl7yoDBMFDrlcjqWlJT766CM5g+RRqFQq3G43wWCQU6dO8bOf/QyXy0U0GsVqtcqbuNVqEYvFSKVS/O53v+P9998Hvl7jDz74ALvdTjgc5uzZs3JehMPh4JVXXuH06dN89dVX6HQ66dbX6/Vd019QKpX45JNPWFtbw263E4lEcDgcOJ1O2u02Ho9HPmS3bt0imUzK5rPHIdRnLRYLPp+PU6dO4XA4ZAhT9AwN5xlEk2uz2aRUKpHNZvmbv/kbPvjgAxqNxq70/MQBR4S3HtXfpNfrGR0dxeFwMDMzw4EDBzCZTFuGnoVCIXn9wsNotVqsr69z/fp1eSgpl8vMz8+TSCSkByTm8VitVg4fPszLL79MOBzmzJkzmEwmuWHevn2bX/7yl3LW0F5BjMwWzw3wyGdn2Os+ffo0hw4dYm5ujkAgQCqVYnl5WQ6X0+v1cky28J7VarV8z6WlJf7u7/5OKpq8cMZlWIZEbLAPsluFCJ8VImEJ9wX6Op0Oer2efr+P2WyWY3KFUGU0GsXv9zM+Po7L5cJms8lwTD6fJ5/Py/xNJpN5SIyy3+/TaDRQq9Xkcjk2NjZkZ7BWq5X5F5vNhsfjodlsyuT/bvndtFotKVkzPz8vT842mw24nxTVarX4fD4OHDiA3+9Hq9V+owchwrUOh4Pp6WnMZrNUkTaZTDJcK/I4wrsWHnehUGBjY0PmDkXsezesmSAUCslmXafTuaXXRCDK5S0WCyMjI1LNV0gSiVxKpVIhmUzSaDRIJBJUq1WWl5dZXl6mVqtJ2SZAFo74fD4sFgvj4+PY7XZmZ2elXp7o7VpYWCCZTLKwsCAT/nshVyWanS0WCx6PRzZAjo+PU6/XyWazW3JGDoeDQCBAMBiUoVadTkexWCSVSnH37l2KxaJ8/uLxuBzj8OB0zlgsxurqKplM5rl5yrvKuMDXsWuh6PuiIuKpQspFpVIRDAaxWq0MBgNUKhXRaJTx8XHMZrPM0wQCAfmQTkxMoNVq6Xa7NBoNrl27xqeffrpFFfnBUu5ut0s+n6dSqXD37l2+/PJLIpEILpdLVv2Iev3Z2dktN/JuOYGXy2W++OIL9Ho9iUSCDz74gEAgwMzMDDabjYmJCRwOB3Nzc5w/f16u8zd9fnGKF2FCkSMUCraZTEZWLjUaDb766iuuXbtGsVhkZWVFyrsMG5bdhEql4vTp0/zrf/2vcTqdjI6OPlYIUqvVytCZOAiKXhZR0RWPx3nnnXdIpVJ88sknsmtcxPzFfazX6wmHw8zNzfGDH/wAr9cr+6uEQrDIO5ZKJX75y1/y+eefs7m5ydra2o4MwvouVCoVlpeX8fv9HDx4cEux0sbGBh999BHFYlHue+Pj47z55puEQiFeeeUVRkdHyWQyLC0tMT8/z1/+5V/KNe12uzgcDuk9+v3+Lb+7fD7PwsIC9Xr9ueX3dp1xGS5lfJEQCc5ms0m73ZYbj9BaM5vN+Hw+2e+jVqsJh8OMjIzI7wnNKqvVKk/pQlOr2WySTCblNMlUKkWlUnlkdY14UMUIaZvNRrPZRKvVyu8NF1bsttO3KK1utVpkMhk0Gg3tdlt2cNvtdgaDgUw+q1QqaSxE/PpJg9aGCwFEtaIwLq1WS5bEbmxsEIvFKBaLe0b802azyYmGkUgEo9G4xRB8G4YLK9rttvToRF5HrLXVapVJ6JGREdxuN16vF4fDQb1ep16vS6FK4f0lEgmKxeKe0r0TnotoGrXZbHi9XsLhMP1+X3ozYp2FpqDo6zGZTHQ6HXK5nEwPZLNZOZepXq/TbDYxGo20Wq0tPWyiCfrBIWvPkl1nXF5kkskkV65coV6v89prr+HxeAgEAtjtdgKBAAcOHJCbu4jFCpkMkTAVlST5fJ6vvvqKUqnElStX5IlncXFRxvufVDUyGAxIJpPcvHmTUqmEzWbDbDbLTfvatWt8+OGH5PN5ksnkjszo/ib6/T6pVIpyuUwsFmNhYQG9Xo/b7ZY5JIfDIR9mrVbL5OSk7BV4MDQreqvK5bL0RATlcplcLifLY7vdriwD3UvCqjabjZGREXlfCQPa7XZl+PVpiUQi/PSnP6VWq3HmzBnK5TLwdVWo1WqV7ylk871eL71eTypP3Llzh4WFhS1SR0tLS7J8d7fdc08inU7z0UcfEYlEiEajuN1upqencTqdFAoFTp48Sb1el/ddOBzm4MGDGI1GzGYz1WqV69evS/2wXC63pddPHGw0Gg2lUmlLWKzT6ciim+d1L+4q4/KieSsPUq1WicViOJ1OOp0OKpUKq9WK1WrF5/MxPT390Bo97uHKZrOsr6/LkEQsFiOTyTz1ICVRTJBMJtFoNMTjcUwmkzz93Lx5ky+//FL2iuyWkNgw4hqGJYKEl6LVarFYLFsKHbRaLWfPnmVqampL6Eu8V6PRkOOJL1++vEXOXDRFilLP3bgeT4PojTIajTIMKJLywGNzoY/C6XTidDrlMLpWq7WldPtB+RLxc4rFIvfu3SOVSvHVV1/x5ZdfUi6X2dzc3NV9LN9EtVqVoqQiTyT0wmq1GsFgkHa7/ZCxhfv3V6vVIpFIcP36dYrF4kO6iuIQAPc9lZ1mVxgXh8Mh550fOXKEsbExOUdc1LV3Oh0WFxf57LPP5Klmv9FoNMhmsywvL/PrX/+akZERDh48yOjoqAwttNttGbcHHkrGJ5NJGYa5ffu2rMoRvQTfhkKhIP9tvV5Hp9PJwWzDY5L30ulRhGpEDF/0wsD9cM3du3fJ5/PScxlGhAHL5bI8OQvEWuzGXMq3YXFxkb/5m7+RjYpqtZpYLEY6ncblcjE6OirzTMOIfipRSv/giG3RAyMQXlGn0yGdTsuRvuvr63JMr9DPEyf0vWqwBfV6nUQiQaPR4Le//S3Ly8tMTk7KKZqif0xIuKRSKVm2vbGxQblc5quvvpJFErs9z7QrjIvX6+WnP/2p7FCfnp6WcVlRIVKv17l+/Tp/+7d/S7FY3NEhOM+KSqUiQ1b1eh23282/+lf/CqfTuWXWx+LiotT3Gt7I2u02X3zxBQsLC5TLZSkB8V2kToRmUzabRaVS8eWXX275ec/Tvd5uxOm33W4/JHwqrvdxlYriz0et5142KnD/81+7do1KpSLLrHU6HR9//DE3b95kcnKSCxcuYDKZZEJfEAwGeeONN6QO4IOFACJ3A2zxBlutFktLS6ytrTE/P8/7778v712xge7GqrrvglAWMRqNVCoVXC4XP/nJTzCbzdhsNlmRubm5KaMYN27coFAocPXqVTKZjOzz2wuHmF1hXITaqZB3f/DGFYZGTF7cLxLwDyJO1SLx1+/3WVlZ4ebNm7RaLalBJGaIP0i325UyIo/TK/oun0e8937jUQ/nfrzOb4OYcNhut6X+XC6Xo1arkc/nSSQSMiE9/Ay2221u376N0+mUfRdPQ7vd5t69eyQSCeLxOPl8Xnbd7+Q46meBMJDC++31esTjce7cuYPZbCabzcpG01KpxObmpiwIyWQyMvqw2z0WgWrwlObvWW7mBw4c4N/8m3/D2NgYJ0+eZGJiYsvpRsyL/s1vfsPbb79NLBbjww8/lAnC5813OTF8m/UThlSj0ciqGXGCE4J34gZ7cBZLrVaT39+t8elnvX77ne96Yn2aNdTpdPLeMxqNUrm50WhI/TRRzTn8fjqdDrvdvqUs+WmvReQT6vU6lUrluUiU7OQ9KMqvNRqNzEuJCZsqlUrqjIk1EdEbkVPZDQegp1m/XeG5DJcsDrt7w7pFcL/Rym63P1K0bT/R6/VkfmQ/zatR2P10Oh15KHnw8LadQp8vMsP6aPV6nY2NjR3+RM+GXWFcstksv/71r/H5fHJmu9PpJBQKAfcrJUQiu1ar0Wg09nxyT0FBQWE/syuMS6FQ4KOPPsJisWxp4BJDdUQJqEjs76XGKQUFBYUXkV1hXIa7npeXlzGbzSwvL7O2tgbcDw21Wi3m5+dZX18nl8vtirijgoKCgsKj2RUJ/eGfYTabZU286AYWeRhR/y0qqnbKe1ES0t8PZf2+H88yof+ioNyD34+nWb9dZVz2CsqN+f1Q1u/7oRiX749yD34/nmb99m/JlYKCgoLCjqEYFwUFBQWFbUcxLgoKCgoK245iXBQUFBQUth3FuCgoKCgobDtPXS2moKCgoKDwtCiei4KCgoLCtqMYFwUFBQWFbUcxLgoKCgoK245iXBQUFBQUth3FuCgoKCgobDuKcVFQUFBQ2HYU46KgoKCgsO0oxkVBQUFBYdtRjIuCgoKCwrajGBcFBQUFhW1HMS4KCgoKCtuOYlwUFBQUFLYd7dO+UBnx+TXKiNTvh7J+3w9lzPH3R7kHvx/KmGMFBQUFhR1BMS4KCgoKCtuOYlwUFBQUFLadp865KCi86JhMJkwmE06nk5mZGQwGA5VKhXa7TSqVYmVlhV6vt9MfU0FhV6AYFwWFp8TlchEKhTh27Bj/9t/+WzweDysrK2SzWd59913+/M//nEajsdMfU0FhV6AYFwWFJ6BSqTAajeh0OlwuFz6fD7/fTzAYxOPxUKlU6PV6WCwWpZpIQWEIxbgoKDwBs9nMyZMn8fl8TE9PMzU1xcjICDabDbVajUqlYjAYfOfyYAWF/YpiXBQUnoBOpyMcDhONRpmZmWF2dhan04ler1c8FYVdxZPux504/CjGRUHhCWi1WjweD+FwmJGREUZGRjCbzWi1Wvr9PrVajWKxSL1eV7wXhW1Hrf66oFelUuHz+fB6vWi1Wsxm85bvGwwGzGYzGo0GvV6PWq2mXq9Tr9cpFAosLi7SbDbpdDr0+/1n/tkV46Kg8AR0Oh2BQIBoNEo0GmVsbEyGw1qtFrVajXw+T61WU4yLwraiUqnkvSb+OxKJMDc3h8lkwuPxoNV+vYU7HA58Ph8GgwGbzYZWqyWdTpPNZllcXCSXy1EsFhkMBrTb7Wf++RXjss8RCWmNRiO/DAYDdrsdrVaL0WjccoO2Wi02Njao1+u0Wi06nc4Ofvrnj1arRaPRYDabcTgcBINBfD4fLpdLnhQbjQbZbJZqtcry8rKsGHsep0GF/Y8wJg6Hg0AggFarxWq1otfrmZqaYnJyEqPRiMPh2PLsWq1W3G43Wq0Wi8WCRqNBpVJhMBjodDocOnSIQqFAMpmkXC7TarWeqcetGjzlOyvx5a/ZS7pEer2e0dFRrFar/AoGg5w7dw6Xy8XIyAgul0teUyKR4D/+x//IvXv3SCaTpNPpbf9Mu3X9VCoVLpcLi8XC7OwsFy5cwO/3c/HiRUKhEBaLBYvFwvLyMn/5l3/J5uYmn3/+OcvLy9Trdcrl8nPxXhRtse/PbrwHhVHR6XRoNBpOnTrFH/7hH+J2u2Wuz2QyYTAYUKvV0ngINBqNNDbi73u9Hr1ej2KxyOLiIoVCgQ8//JDl5WVisRj37t2j2+1+68/6NOu3KzwXsVBqtXqLG/g0v0xRqTMYDOj3+wwGA3q93pa/fxER66fX63E4HPLLbrcTDoeZmprC4/EwPj6Ox+MB7q+lMD7ZbJZyuYxGo5Fru99RqVRoNBp0Oh12u53R0VHptVitVnQ6HYPBgEajQTweJxaLEY/H2dzc3OmPvisRzzXw0PP8YMjnQcRzK743/FwL+v2+fOb3+v0p1kOtVmM2mzEajfh8PsbHx/H7/Rw+fBiXy/VU79Xv92m1WvT7fdRqNQaDgcFgQCQSwWq1Eg6HqVarFIvFLRWP282OGhdhad1uN0eOHMFut8uTtMlkwm63b0lYPUi/3yeXy1GtVimXyxSLRarVKgsLC5RKJSqVCtVq9Tle0e7BYrHg8Xjw+Xy89dZbjI2NSeNisVgYGRmRCUBxY/X7fRwOBz/5yU84duwY77//Pp988gn1ep1sNvudTjh7CRGLrtfr0uPzeDwyJCG+l0qluH37Nuvr6xSLxZ3+2LsSlUqF3+9namoKo9GI3W5Hr9fL75vNZsLhMEajEZvNhtFopN/vy5N2vV6X/UNms5lCocC9e/doNpvy0JhOp4nFYjSbTTKZDK1Wawev+Puh0+lwu91YrVZ++tOfcvLkSUKhEDMzMxiNRsxm85bXDxtbrVa7pSS+WCxy6dIlMpnMlkOm1WpFrVZz7Ngxjh49yttvv83CwgL1ep12u73tBnrHjYtoTjt+/DjBYJAjR44wOjqK3W4nGAzKkw887JZ2u11WV1fJZrNkMhlisRjZbJZ6vY5Go6HT6bywxkWcfEZHRzl//jyHDx/Gbrdjt9uBrSfD4VOL2WzmzJkz1Ot1crkcS0tLFItF8vn8jlzH86bb7dJut9Fqtfh8Pjwej8xLNRoNWR22vr7O2traC5eTehrEhuZ0Ojl48CA2m41gMLhlg3S5XMzNzWGz2fD7/djtdrrdLp1Oh06nQ6FQoNPp4PF4cLlcxGIx3n//fdm0OhgMWFhYoNPpyIPlXjcuIiH/4x//mD/4gz944uuHjcuwh9jv96lWq1y5coWlpSX5u3C5XBw4cACHw8GRI0cIhUKsra1hMpnkmm83O2pcRIlnNBrl0KFDsvPZbrdjNpsfMiaDweAh19pqtTIYDNDpdBgMBnw+H51Oh2w2y9WrV2m323Q6HXni2U+YTKYtpYcajQafzydv0omJCbxer3ywh084wwz/nVqtxmg0AvcNjcViodFo7Ot4vUqlQqvVotPpmJmZIRQKcfDgQRwOB0ajkVarRavVYnFxkYWFBW7dukW1Wn0oTKNw//4RJ/DZ2VlOnDiBzWbD6XRiMBjk66xWKy6XS6ofwNdhycFggNlsptfrye+ZTCbGxsZoNBryhG6z2XC73ZRKJUZGRigUCmxsbJBOp+n1envG8KtUKiwWCzMzMwSDQZxO50OvEdecy+XI5/M0Gg2ZD52cnMTn88lntFarUSgUyGQy0nBkMhkqlQomk4l4PI7T6eTy5cvU63W63e7+CoupVCrGxsb4wQ9+wNjYGD/60Y/weDzodLqnisWK9/B6vbjdbhl/7XQ6nDp1imq1yl/8xV+Qz+epVquk0+l9F9ZxOp2Ew2EMBoOsZrpw4QKzs7PSuOh0OlktJkKMDxro4T+1Wi02mw2TyYTL5cLpdNJsNp8YntzrqNVqTCYTVquVV199lQsXLhCNRgmHwwAkk0kqlQpvv/02v/rVr8jn8+RyuT2zeT1PNBoNY2NjjI+Pc+HCBf7oj/5ISuM82LMhDjtqtVoeHEW1ngihiYOP0+nkzJkzW57/Xq9Ht9ulVCpx5coVMpkMv/71r/noo49otVr0er1dn4sR1+92u3nllVeIRqOMjIw89DoRMlxaWuLKlSuk02muXbsGwM9//nNOnz4tD0i5XI5YLMbKygrFYpFisSgNt1hjtVpNs9ncYqy3mx1P6Au3zmAwYDKZHumtPAmRBBPodDp5SgoEAvJE02g05Al0vyjXilp3s9mM3+/HYrEQCoUIBAJ4PB6cTqd0lx/0+p7EcGHFkwz9fkGtVksj7HK58Pv9ssxTnICbzSaVSoVsNkutVts399B2M+wFGo1GmTMRz12z2aTZbMrXqtVq9Hr9lpLab3p/UU0l/hTNhQA2mw2dTrdnDpJqtVq2BLjdbhmGHabX68nS4VQqRTweJ5vNkkwmAUilUqTTaenJaTQaLBYLDoeDSqUimyaft5e9Y8ZlMBiQTCa5fPky7XabUqmE1WrFYDBsybN8W9RqNVarFZPJxI9+9CMmJydZWVnhnXfekc1E2Wx2G69kZxCe3+uvv47X6+Xw4cMy/GCxWGSHLrDl9PYoLaxH/d2LFO7R6/Wy83lqaoq5uTl5H4p7M5PJyK/9dEDZToR33O12aTabslGv0WiwuLhIPp/nxo0b3LhxQxoVvV7P5OQkgUDgqX6GTqdjfHwct9uN2WyW/Vqjo6M4nU4CgYAMlZfL5Wd5uduCKGgIhUIcPXqUiYkJbDYb8HVepVwu8+GHHxKPx/n888/5/PPPaTablMtltFot77zzDktLS5w9e5Z/+A//IZFIhDfffJO5uTnee+89qtUqnU5HeinPix31XGq1muwgbTabdLtd6bI9LQ+eqMXJRqfTEY1GZd/CnTt30Gg0JBKJ7b6MHUGtVuN0OhkbGyMQCMjk6IM3z4MGY7hsGx4uERV/9+C/2c+IJjVx8hOl2XDfMDcaDSmjIWLUuz3c8jwR99Bwn8XwSbnf75PP50kmk9y+fZtPPvlE5vaMRiOdTod6vf5UP8tgMGC1WmVIbTg/qFKpMJlMaLVa+f3djlarldfk9XqlBwbI57TRaBCLxVhaWuLevXvcu3dPrq1Wq2VtbY1ms8n4+Li8l8fHx7Fardy6dUuu0fPOO++ocanX62QyGdbW1vjwww9ZXFwkFArhdDpptVoyafpgp7goq9Pr9TIBptVqt5Q6AjKBGIlE+MEPfiANmahE2YvVJTqdjlAohM1m4+DBgxw8eBC73Y7BYNjSE/Cg0ej3+6yurrK6ukqpVGJ5eZlWq4XJZJKnwSNHjshcy+P6E/YTOp1O3kPnz58nHA4TCoUAqFarZLNZstksH3zwAWtraywuLu6JOP7zQqVSEQwGCYfD2O12ZmdnsVqtRCIR3G43k5OT6HQ6arUaqVSK9fV1Njc3yeVyANIIdLtdFhcXn+pnajQarl27Ju95UUovKs2++OILstms7PPY7YiQ2KOEUGu1Gtlslo2NDa5cucLdu3fZ2Nh4qNdHHM5XVlZYXl6WA+3sdjvnzp1DpVKRSCT49NNPqdVqz21ddtxzqdVqqNVq3nvvPbxeLwcPHiQSiVAqlUilUjIsMWwIzGazdH9Pnz6NXq+XVSfDvyCDwYDBYJDGKJvNcvnyZZaXl6nVarTb7T13KhceWTgc5siRIxw+fFgWQQzzqKT90tISv/vd71hbW+O3v/0tlUpFhtFeffVVrFar7Ov4PqHJvYK4L0KhkCwsEUn8crnM8vIy8Xicd999lzt37lCtVvdMLP95oFKpGBkZ4cyZM0SjUX7yk5/g9XpxOBzSk1Cr1ZRKJTY3N1lZWWFjY4NMJkO/35f3ZSwW+1YHmEfd2/D1SX8vGBWBVqvFZDJtCWMLarUasViM1dVVrly5wvXr1x/ar/r9Pul0mkwmw/LyMgsLC/h8Pubm5rDb7fT7fQKBAFevXmV+fv6ZJvAfurZn/hOeApGoarVaaLVayuUy1WpVehjlcnlLjNtgMFCtVjGbzZhMJsrlsixr1ul00jUWyWiNRiPLdj0eD4FAQGpD7TXjIvovRkZGnthk2m63abVadLtdWdCwtLTE+vo6yWRySxhSJF5Frmq/eioPIhL4LpcLh8Mhk8Hw9YOdSCQol8tyvRTuew8i5zE+Pi5LaB0OByaTiVarJRP35XKZbDZLPB4nnU5veeYe/PNFQ61W43A4GB0dJRgMypCiCLvmcjkWFhaIx+NUq9UnGs3BYEA+n+f27dtks1l5UBwMBrJfy2KxUKvVaDQaz6XScVcYl3K5zNWrV9FoNHz22WfodDrZqfso2QdRYaHVavn4449lh/8Pf/hDnE4nExMT0m3W6XRotVrsdjsqlYqjR48yGAy4fv06yWRyT51y4H6F2KlTpzh16hSTk5PA1ye24cR8pVIhkUhQKBS4dOkSm5ub3Lhxg/n5edlpLvpiIpEIExMTTExMyGKAvbYu3xZRYXTkyBFmZmYYHx8nFArJUGoikeDtt9+WXeCVSmXfr8nTYjabeemll4hGo/zgBz/ghz/8IUajEavVSr/f586dOyQSCdbW1rh27RrFYpE7d+5QLBafm/7abkeIyM7OzvLWW28xMjIiCxHq9TqNRoPr16/zn//zfyabzZJKpb7xPW/dukUikcDv95NIJIhGo5w4cYLjx4/TarVkTmZjY+PFMS69Xu87ddKLMsRyuYzD4SCVStHpdAgEAlLcTYTKROmixWLBbrfv2RO6RqPB6XTi9XofajQdDAYyP1UqlWTOYFgDK5/PMxgM5Ho4HA48Ho88dYrczfBGut82AxGuEUlUUc5tMBikLlOlUiGTych4tlId9vW6iWblcDhMMBgkGAyiUqlk2XapVCKdTrOxscHKygqVSkXKNO3FPOd2M1x05HQ6CQaDuFwutFqtfIaFEsTm5iaFQuGp1k0UnHQ6HVKpFCaTiW63u6VYpVqtyt6/Zx0e2xXG5bvS7/floKZOp8Pm5iaBQIC33nqL0dFRJicnGRsbk68f/sXt1Ztcq9USCASYmJiQBlJ8tdttLl26xO3bt0kkEty+fZtarcbGxgbVapVSqcRgMMBkMklBxp/+9KecO3eOUCgkk4qPEhncL6jVaqlldebMGf74j/9YNov2+31u3rxJLBbjs88+Y3l5WfYXKCBLZoPBIK+++ipzc3OEQiFUKhXVapWVlRUKhQLvvPMO169fJ5fLsb6+Lp+5TqejGGnuh2MPHz6M3+/nzJkzHD16FIvFgsFgkI2SS0tL3L59WxqCbxOSFXshQD6fp9vtEgwG+aM/+iNSqRR//dd/zfz8PLVajUql8swMzJ42LsKFrNfrFItFlpaWCIVCTE1NMRgMtpSUiteLKrFOp7MnT+SiBFmULA5rhPV6Pe7evcv777/P6uoq165de6T7K0TyAoEAJ0+e5LXXXnuel7CjCNVZi8XC1NQU58+flwURrVaLWCzG1atXuXfvHqlUikajoYTD/hcmk4lgMMjo6CiHDx/m5MmT8iDSbDaJxWKk02muX7/Ol19++VzHEOwlRFHO+Pg4U1NTjI2NyQIakX8WuZZKpSKbTp8WkWfVaDSy4dflcvHyyy+Ty+W4fv06sVhMhs+fFXvauDwKMXq2UqnIajBx8lar1VgsFlkhtddP5A+6tcMS5E/CYrEwPT1NKBTC4XBseT/YX57KoxA5O6FEIHoJarUaiUSChYUFUqnU99ZcEu8/3Fe0lzdaERYTzZLDHq7Q80ulUlQqFVlMovAw4oAjPGixhkK+SjTtikjDt6Xb7cpm32QySSaTkYU7drudaDTKwYMHWVlZIZPJPDNvct8Zl16vJ/MNjUZjy/eEOmg4HJaKoXuR4WbI73LzORwOXnrpJUZHR/H7/Vvec/hnPOq/9zpCnkR8aTQaedIrFArcunWLzz//XMpmfNehUsNxdZGLGJ45tBd50CgPPz+NRoP19XWpTC5OzHv1Wp8lIm/q8/mwWq0Aslen3W6TTqe/18bfarVYW1tDr9ezuLjI6uqq7DsymUwcP35c5mtv376tGJdvYlijx2az4XA4tqiwCtrt9nMrxXsW9Ho98vk8m5ubcjLisGfmdDoJhUJ0u12pnloqlbbMzDYYDPLfPqjpJDbAbrcrG9P20yah0Wiw2Wx4PB5MJhNw/6QnvN1qtSpzck9zzaK/SnSnDwsEivLudrstN1tR0izKdffSuoqGZlFm3Gw2pZEWxSG1Wg2Px0M+n6der3/n0/d+Rhw8hqWuxL3RaDTkfKrvc3+IA02tViOfz8sGc3H/u91uuUcKw7bdv6d9Y1zEcKyxsTFee+01Dh8+vEWGGu5vIisrK1y+fJn19fU9GUuvVCr83d/9HXfv3pVloOIUaTAYeO211zhx4gSpVIqlpSWZwFtbW5Pv4Xa7cbvduFyuLeqz8PU8iEajIRVVv6nGfq8gwqIvv/wys7OzHDhwALjf03L37l02NzeJx+MUCoWnMqharZapqSmpEiF6FcT8l5mZGSYmJuSI2Wq1SiwWo1AosLKyws2bN+l2u3smyS2S9q1Wi4WFBSwWC36/n0AggNfr5Q/+4A+oVqtMTk5y584dbt++zfvvv68URPwvRFhRp9NhtVpxOp0yLNZsNllbWyOXy3Hnzh1u3br1vQd4CVWOS5cuceDAAQ4cOCClYZxOJ8lkkpGREVkZOXwA3Q72tHEZrmwyGo04HA7cbjeRSIRoNCob4uBrETjR+b8XGyjhvue1urpKu91mZmbmof6fkZERwuEwgUAAh8NBPB7nk08+IZPJAPfXTIxRNRgMWzwXUYLcbDZlrX2z2dyzxQ/DDE/kCwaDjI+P43K5UKlUdDodisUihUJB5gue5r3EoLtQKITP52NsbAy9Xi87ro8dO8bhw4fJZDKYzWZKpRJ6vZ50Ok2lUpFjk4dzMruZTqdDpVKRa5XP52Vvi2iobLfbZDIZut0uxWIRnU4nVXkVtipBi0MI3D/4lstlGZ7drgmn5XKZzc1NfD4f3W5XVktqtVpcLpcc0vYsFDn2lHEZ3iCE1Z+ZmcHv9+P1ehkdHcXr9RIKhWSoApBTFbPZLKurq6yvr1MqlfbkDd/r9chms/T7feLxOPF4HIvFgsvl2rJZicoeg8HAj3/8Yw4ePCjfIxqNMjk5idvtlqJ2wniUy2Xee+89YrEYn3/+OfF4nEajsWdO149Dr9fLqYfT09McOnQIr9crczB2u51qtfqQ3LlIvoqQl0qlwm63MzMzg8Ph4Ny5c0xOTmI2m3E4HFuk4EVFn8ViYWJigkajgd/vp1aryabNXC7HlStXKBQKtNvtXZ0EF6GbXC7HO++8w+3bt7lw4YKchyPk3icmJqTCeblcJp/PMz8/L6eZ7vWDyndFo9HIkHQ0GmV2dhan00mv16NQKHDlyhWpZLAdiK79xcVF3G63HBYmRhyMjIxw7NgxksmkVPHYTvakcREbp9Pp5PXXX+fIkSP4/X7Gx8fR6/UP5RJEmWQqlWJtbY21tbU9m1jtdrvkcjkajQaJRIJ4PI7b7ZanEXFNQu7G6XTyox/9SMqPi81xcnISo9G4RT5GyJS/9957XL9+nXg8TiKR2JPr9CAGgwG3243P52NqaopDhw5tGZBmt9up1+tbvF34OpQ2PHBtdHSU119/nUAgwMWLF5menn7kzxTvL071gsFgwPT0NGNjY6ytrZFMJmVl4243Lr1ej3a7zbvvvitDqhMTE7jdbux2O0ajkbGxMcbGxrBYLHS7XWKxGJubmxSLxT15oNsuhMdiNpuJRqPMzMzINRXGZXV1VUYZvi/CuLRaLUKhEOVyGbvdLg1/JBLh2LFjOBwOrl27JgVFt4tda1xEYlR0BIsKC6fTicvlYnJyErvdzvj4OD6fT3oywxMXq9Uq9XqdZDLJ3bt3SafT0mPZqxvmYDCg3W6jUqmIxWJcvnyZUCiE3W6XCTqhSiBCN3a7fYvbK4zvcD6qUCiwubnJ+vo6qVSKYrH43Oc/PEvEgz08YEogSkCHk5rDmnSRSASn04nNZsNqtcomVjHOQa1Wy/4pMTFQhGH7/b6crChCIiLu7vf7aTabhEIhmbzd7tPjs2DYCG5sbHDt2jXC4bB8PsXJ2GazMTo6KnNTarWabDZLLpfbN/fVd0U8n/1+XxYZiVDjduaoRBGGyO0N5xKFaKbYN4V81Haxa42LEKDU6/UEAgEsFgunTp3i9OnTeDweDh8+jNlsxmw2y5t5OHQxGAxIJBIsLS2xsLDA3/zN38jxn3v59NTv96lUKtRqNd59910+++wz5ubmMJvNUtXX7XbLzVOn0xEOhx+a3zK8VgB3797ll7/8JclkkitXrsg+j/2CSKIKD2+YXq+3pTcKvpZC9/l8vPbaa0xNTTE9Pc309DQ6nQ6z2YxGo8FoNDIYDKhWq1J+SFQjipyVUEQQFULivY8cOYLH42FpaYlAIMDnn3++JwbZiWbkbrfLp59+yuLiInNzc7jdbqLRKF6vF5vNJqMLIhy2vr7ORx99xKVLl+RG96LTarWkuOfCwgJLS0vbWskqhrZVq1Xa7faW/KmYZCtygaLna7sMzK4zLuJkaTKZcDgc8gG32WyEw2Gi0ahUQDabzY98D2GlhcZROp0mlUrJ0ty9jmiWLJVKlEol3G43mUxGVqAItWRxGtHr9Q+NORY3kDjJVCoVNjY2SCaT+1oDSngUvV5vSyOgWC8xHdFkMsn1DAQChEIhRkZGiEQiW7TXRLm2aHwToqCivLnRaGA2m+n3+zIkotPp8Hg8W6YpihP/XmFYILXdbuPxeCgUCjgcDqxWqzS+YoBdKBSi1+vhdDpl6HEvRxC+CyLnMhyOFvfj8GFkOxGe8vDYcoE4ZD7oyW8Xu8a4iFDBgQMH5EN86NAhLBYLgUAAs9ksR9GKSqdH0Wq1WF9fl6NBP/74YzKZDMlkck/3tzyJVCrFL37xCwKBAD/96U85efIkNpsNn8+HRqPZ0iA5rJzc7/fJZDKyxHRlZYVisbjtN/huQHTfw33F4+FQosVi4dChQwSDQRYXF2m32wQCAQ4cOIDH4+HixYtSMblcLsuqKdEBXSwWuXfvHp999pkcgSy+xFgDMQbC5XJhNps5f/48b731Fp1OB4fDgc/nw2Kx7PAqfXtEJVgikeC3v/0toVCIc+fOMTMzg9VqxeVyYTKZOHbsGOPj4ySTSRYWFqhUKmxubu7L5/FxeDweTp48KcOszxqVSkUgEJBFLCI3O2zchTfzLLzIXWNcRIw7HA5z8OBBDhw4wMWLF+Um+WAVz+PodDpSzfbu3btcuXJFNnPtVze8VCpx+fJlHA4HU1NTjIyMAOD1ep/Yed/r9WSNu1izSqWyr8Jhgna7TT6fx2QyyVJPvV4vRzOI6Z5iA5yamuLs2bO4XC5mZ2dxuVxUKhUqlQqNRoNsNku9XpdSMZcvX+Y3v/nNEz0+jUaD3+/HZrPhdDp57bXX6Ha70nvZS56LYNiLvnXrFul0mnA4LCvxhKcSiUTo9XqMjo7K/rN0Ov1CGRer1crExAQjIyOygfdZY7fbGRkZwe/3yxYEkX8VzdJiX9xXTZSiosnlcnHkyBGcTidzc3NyeM5wkn4YEXLodDrkcjk50bJYLFKpVLh37x6FQoG7d+/KWON+dr+FNpZWq5X9KQ/qqj3ouYh/F4/HWVpaemh86n5DeGrtdptcLkcymcRkMuH3+2Wy32KxMDc3J3Mk0Wh0S07l9u3b3Lp1S47tbTabpFIpSqUS6+vr33h4EbmKZrNJq9Wi3W6jVqvx+/0YDAZcLhdGo1GqI+wlWq0Wm5ub1Go1rl+/LvuwRKRBhGUmJyd54403WFpa2lIlt5/vPRGWErniUCgkZV+eBaLvT6/XMzExwZkzZ5iensZkMm0Ji2WzWa5du0YikaBWq23772FHjYvdbicUCnHw4EH+z//z/5TuotVq3ZIzeDAeKJRDq9Uq8/PzxONxNjY2uHfvHtVqlbW1tS0JLNjftfXdblcOsyoWi5RKpS2ClGL9hv9UqVR0u13u3r3LpUuX2NjY2HMb2rdBVDg1m002NjZkSGxychK1Wi1DrRcvXuTcuXNymJPw7gqFAh9//DG//OUvKZVKbGxsyOowETf/pvUbDAayKqxer9NsNrFYLIyNjdHpdAgGg5jNZhla20v3rJh0qtPpaDab3L17l9dee43jx49LeRi1Ws2JEyeYmJjg008/5eOPP/5eGm57BVFsFA6HuXjxIn6/f8vzud2IXJfZbObEiRO89dZbW/ZVQSwW49133yWXy1EsFveH5yI2N4fDwcjICKFQCLfbLRfgcfkUEceu1WpSNXRjY4NEIkEymZSCeSJ0sd9PRMMMd3k/mCh91BoMBgPZrStKYsUMiMeNTt7LiHtBdI5nMhlqtdqW14jih+HwVL/fp1wuUyqVyOVy5PN5qUH2bUM6okdLjOcWFXtCp2sve9jCwML9FoBcLie/RCJfr9djMBhkSbfD4ZDRhv1aQCIQyXMRmnoWz5ho0DQajYTDYRwOhxw/bTabpUK3kPHP5XJyr9wXORfRe6HVajlx4gQ/+9nP8Pv9RCIRrFbrE2UIarWaDEH8/d//Pel0mhs3bhCPx2m1WnL2hjhRvogMG9RHKScPJ/T1ej2vv/46Z8+e5dNPP5VhxlKptO+S+mLzq9VqUlsuFArxyiuvPPFBr9frXL58mbW1Na5evUo8HpdluN8WnU4nY+4iwdpsNpmfnyedTrO2tiYf9L1qZHq9Hslkknw+j81mY2xsjGAwyMWLFwkEArJtIBgMcuzYMZxOJ7du3ZIHm/3IcM+ZaJ94FsYlEolw8uRJfD4fFy5cIBgMEo1GCYfDsiqs2Wzy6aefsrS0xCeffMLm5qYUU91udsRzERIZHo+HqakpnE6nLNF8kGGZ8kajQaVSIZ/PE4vFSCaTxGIxWQX0ovOoKZIPMrxpiQIKuN8M53a76XQ6sglzr25wj0PkPPL5PO12WxZ5iJj4oxDd05lMRp6w+/3+ln6qx/HgNE8x1jYQCOB0OjEYDLRarS2elGi83MsITyyfz8tnUxxWxFobjUY8Hg/1ev2xkYr9hCgDFpv8drzfg18Oh4PR0VFCoRBzc3OMjIxIYwZfV4clk0mWl5dlBe33Fch8HM/duOh0OkZGRnA6nYyPjxMOh2WIYBjRL1Cv12WCfn19nbW1NbLZLDdu3JDS1C86Go0Gs9ksQw0Oh2PLCORhHvf/k5OT/JN/8k+Ix+PUajVWVlYolUr7bn3FMLlut8vCwgIff/wxHo+HmZmZR/ZNGY1GDh06hMfjkR3n9XqdVCpFu92WSgYCEf4QmmRCl0z0zbz22mtMT0/LYoFGo7Glz0BUX+0HcrkcV69eJZ/P89JLL+H1eqVKgs1mY3Z2FqvVyt27d3f6o+4ZRGhR5AstFgujo6NyTpVY01AohNlslqM3hDJ3Pp/nvffe486dO7Ja71kdInfEuITDYUKhkBxW9aBhgfvGpVwuk8vl+PTTT1lfX+fmzZvcvXtXzuTer6XF3xaNRoPFYsFut2Oz2bDZbFsqQ8QJ+8GT9DDRaJTR0VFWV1e5cuWKTCrvV+PSbDZZWVnh888/l9f+KONiMBiYmZkhEong9/uZmpoin89z69YtKaEvOtABeSrXarV4vV5ZAeZ0OnE4HLz22mvMzs7KQWKicGB4rsd+oVAocPPmTZmDqdfrW8JDU1NTWCyWZ5rc3m+IqsZgMMi5c+fw+XycOXOG8fFxKZ4qPCRAGpbV1VU++OADkskkly5dYnl5+ZkfZJ67cVGr1djtdtmd/GDXeKlUknpg9+7dI5/Pc+/ePdLpNIVCQcYH98vpbjvQarWym1x06Is6ejF+ttlsyrUWIYlhfTHxp5CkF93/GxsbO3NRz5DhBtKFhQX532LA13BCX8zJUalUuN1u+v0+NpsNuB/qCQQC0gCLIgmhhedwOLDZbFKR2WQyYTKZZFFBuVyWn0EIO+4ner2eHH6VSqXY2NiQFXF6vR632y3nu9vtdtrt9r7L9T2K4fYAISEkPBGVSkUmk6FcLsuKWa1Wi8PhQK/X4/f78fl8hMNhZmZmcLvdeL1eLBaLvO86nY4MeYlK2s3NTZaWlrbMZ3rWYe8d8VwikQgHDx7E4/E8NMxreXmZ1dVVLl++zF/91V9tqcwRXy9SFdjTYDQaGR0dlYKKk5OTUsCzWq3y5Zdfsrm5KddalETa7XZga5LfbDZz5swZwuEw5XKZu3fv7ru1FlWH9+7dIx6Pc/jwYWZnZxkbG5NCqAKNRoPdbmcwGOBwOBgfH5dCl2LzHA4tDE+iFCEgkWcQpcjlcpmbN2/y2WefkU6n+eSTT2Q56H6i1WrJHN61a9doNBqcOXMGv9+PxWJhenoar9fL1NQUi4uLUjx1Px8cH4weCP3EiYkJfvKTnxCPx3nnnXeYn59Hq9XKaabHjh3D6/UyNzfHoUOHcLvdTE1NbZHQF3mdUqnExx9/LIVtr127RrPZpFgsbhFYfdbsWCmyQGxq4u9Ev0CtViObzUqdq/0ULthuRHGEmMk9nCAVoa1cLifDLw6H47E3l8gVPKkkfL8gyn/z+TypVEqeIEXjrjASwkA8KhH7qBksomFwOHkruqFFl38ulyORSJDNZmXoYr+V44oKPVG0IFoF+v2+nAHTbrdleXa1Wn0mGle7AVHFms/nZRhb3FfCyAQCAQaDAcFgkGQyidFoxGKxYLPZ5EA6oXE3rEc3XGYvClWSyaRs0xAyO89b5fy5G5d2u83i4iLNZhOfz8fRo0e3zJMeGRnBYrFQKpWYmZmRSsYP9iQofE0wGOTnP/85U1NTRKPRLaGubrdLKpVifX0dt9stvcUHK8sebLDcj70uDyJCA4lEgv/yX/4LLpeLEydOyCmV4l4cHx+XobAHEWX1D5Z7D//Z6XTk+IfPPvuM1dVV6bnU63Ups75fT+yNRoOrV68Si8UIhUKcOnUKnU4nlXiFBlmtVtuXxkV4uVeuXOHf/bt/x8jICP/sn/0zOcBPyORcuHCBer3OoUOHyGazsqpWhMMsFovM3Q3fd6JvZW1tjZs3b5JKpXjnnXfY2NiQua6dEAl97sal2+3KYThi+p4IIajVapxOp0xY+Xw+BoMBqVRKMS5PwGazceLECTkTftgTFE2A+XxeJqwfV7L8TWXM+5HBYECxWOTy5csYDAba7TaFQoFQKES/35djjB9nXP7/9s7zOa7zSvNP9+2cc240ciJAMImksuWRLXnGQePa9c7OfJzara3a2v2LZstbs17XeKpmHUbRomSlkRlEAgSIHDvnnPN+0JxX3SBIgiRSA/dXxaJEAiDuxXvved9znvOc3cPW9oLSZ/l8Hl6vF0tLS1hdXcXm5uapdkUg6vU6gsEg0uk0EokE6vU6u2+dA7T2akU4DdCLPRAI4MaNG/B4PHjzzTe71gtNK2232xgYGGDWQJRm3csGi742CZxCoRAbl0FB5jhLCEceXGhMb6VSYV31lIIhZ2ShUIi+vj58//vfRyqVgsPhQCKRQCQSQSQSYUe807rTex46GygpaA8NDbFal8vl6hqJvFeKEsCZu7dke04NuYFAADs7O1AqlZibm3vkeIfO4PKoe9ZoNJjdy8LCAsLhMKLR6Jm5x+R912632QmNXrhCoRBmsxn9/f0oFAqn9sRMPVZkFEunVpvNBofDAbFYzAbP0TsQePRGkFKNxWIRt2/fxvb2Nvx+P1ZWVpDL5VAqlY69Nn3kwaVeryMUCoHjOHi9XgSDQRiNRvbCo19kvZ/P5zE7O4tYLIabN2/i1q1bzDfsrDyc+2GvbnzgWynt+fPn4fF4WHChtNdeNvzHvSCPg84ZLxsbG9jc3GT3qPP35/036N+hl+tZWb+tVovVTsvlMhqNBjulcBwHt9vNToynNbgA3wkc6vU6PvzwQ8zPz+P69evM/Z1OJ/txxy6Xy/D5fIjFYvjNb36DL774oqtYfxJm5RxLQZ8uPJPJwO/3o16vw+12QyKRsCIq+fC02202l2RgYIA19ikUCtYJXK/X2ajQswgZMpZKpa57SPdRqVRCIBB0pR52L7xGo8Gm4lEhMJvNHsflHCu8cOTR0ARNGubHcRwKhcJjpa0UnFUqFWQyGWsq7Qwi9FI8C/b7pDRMp9PgOA4+nw8WiwV6vZ6980gBRs80iUFIbVgul5HL5bCzs4NkMtkllDhJadZjc0Vut9uYn59HqVTC+Pg4bDYbnE4nW4SUZxSLxTh//jzq9TrOnz+Pn//854jH47h//z6y2SybpxEOh7G+vn4mXw6VSgV+v581qOp0uq4xx06nE81mk81x74T+nyZRer1e/NM//RNWV1eRSqWOfffDc3LQ6XQYHByEWq3GyMgItFot7t69i1u3brEA0bleSGGnUqlw4cIFNoBNrVYzqTx5ka2vryMWi52J01y1WsXq6iq2t7exubmJzz77DG63G2+++SbMZjNGRkbgdDrh8/mYjJish9bW1rC+vs56gur1OhuvfdI4Vst9ir5qtZrZxJN8kxamUChkHbw0/CoajaJcLneNLS6VSmxXftYCTKPRQC6XQyaTgcFg6Ep3keTzSR36JGFMpVLw+XzY2to60mvgOfmQbYtOp4PT6YTZbIbP54NCoUCtVgPw3djsVqsFkUjEivUWiwV2ux06nY6dXOjjSOxw1FLZ44LShACYWrBSqWBsbAy1Wg0mkwlarRbJZBI+nw+lUolNiF1cXMTCwgI7KXZ6L540jjW4UNFpeXkZv/nNb2A0GuFwOKDX6+F2uzE1NQWpVPpQgUutVmNiYgLlchkOh4NNwdNoNEin01hbWzt1tiWPI5FI4N1334XNZsP3v/99TE9PQ6VSwWAwsIe4M+AA3f1FAoEA0WgUt27dgt/vRz6fP87L4TmhlEolhMNhNBoNqFQqOJ1OvP766xgcHGR2TdVqFX6/H8lkElarFYODg9DpdLhw4QJMJhP6+/shFArZZiaTycDn82F7exuJROJMnFw6IbFHKBTCjRs3oFKp8PXXX0Or1SKdTiMYDLK0d6PRQCKRYCmyTvHOSeRYgwvVTMrlMj744API5XIMDAzAZrPh0qVL6O/vZ3WDTpRKJQYHB9FutzE0NIRGowGTyYRyuYxwOIxgMHimgksqlcLnn38OrVYLi8UCk8kEk8nE0mN7zXbZ/Wc0lY6XffM8imq1ing8zmoDFosFDocD169fZw2CpVIJ33zzDTY3NzE2NoZXXnkFOp2OpdEIqjskEgmEw2EEAgFks9kT+6I8LGjqaKVSQSwWA/Bwk3mvcqzBhWg2myiVSmg0GojFYqjVapDJZDCZTGwHLpPJ2LTAZrPJJvqRF1Qmk0E6nUY2mz1RRa2joNVqoVKpQCgUYnl5GSKRCBqNBlar9SFVWKcyjP4MAObn5+H3+5HJZFiKg4enE+q2z+VyWFpaQrVahdlshsViYa4a1WoVMpkMBoOBdeB3DkGjEc+JRAKLi4uIx+MIhUIoFArsmT7rnJZ7IGjv80oOu7mOFE6dFiVWqxVKpRJDQ0NsqprVamXHcwCYnp6Gy+XCnTt38P777yOZTGJzc/NQUzvP8sM/7PtH/lVkCtjptLsfqtUqU6bU6/VDTU+cxPvXSzzry+cg7iH1YZjNZiiVSly9ehXXr1+HUChkEljajSuVSmZKeeXKFZhMJkQiEcRiMWxsbOBf/uVfWDGf+n6OKi3Gr8HnYz/370ScXIDvivB06ug0UpTL5cjn82zRUvpLIBDAZDKB4zgkEolDHdl50qEH8yylA3mOHtp8ZDIZlEolxGIxxOPxPftTWq0Wms0marUawuEwG1RFvlfRaJTJaM9atuEscGJOLrshXx2SMorFYpYaoxwlADbFMpVKseE3pVLpUAMMv+t5Pvj793wc58mFIMUXWb7vBZ2eaQKnVCplddZCocDcEEql0pFLafk1+Hzs5/6d2OBykuEX5vPB37/n4yQEl16HX4PPx37u3+n1WuDh4eHhOTb44MLDw8PDc+DwwYWHh4eH58DZd82Fh4eHh4dnv/AnFx4eHh6eA4cPLjw8PDw8Bw4fXHh4eHh4Dhw+uPDw8PDwHDh8cOHh4eHhOXD44MLDw8PDc+DwwYWHh4eH58DhgwsPDw8Pz4HDBxceHh4engOHDy48PDw8PAcOH1x4eHh4eA4cPrjw8PDw8Bw4+x5zzA/K+Q5+0NDzwd+/54MfFvb88Gvw+eCHhfHw8PDwHAt8cOHh4eHhOXD44MLDw8PDc+DwwYWHh4eH58DhgwsPDw8Pz4HDBxceHh4engNn31JkHp6zztNKUZ9VMszDcxrggwsPzx4IhUJwHAeJRAK73Q6VSgWj0QiDwQCZTAaj0QixWMw+ngJJo9FANptFrVbD6uoqNjc3UavVUC6X0Wq1jutyeHiOHD648PDsgVAohFgshlqtxrlz52Cz2TA2NoaxsTEYDAaMj49DLpd3fU673UalUoHP50Mmk8H/+3//D5lMBsViEdVqlQ8uPGcKPrj0IEKhEAKBAEKhEELh3mUzkUgEiUQCgUAAjuMgEAggk8kgk8nQarXQbrfRbrfZfxPNZhOFQgH1eh2NRgPNZpP9W+12G81mk70kT3PaRy6Xw2KxQK/XY3BwEA6HAy6XCyaTCVqtFnK5HFKp9KHPEwgE0Gq1EAqFsFgscDgcSKVSSKVSaDQax3AlJwuNRgO1Wg2ZTAadTgeO41CpVFCr1djHcBwHuVwOjuPYnzUaDVQqFTSbTVQqFdTrdRSLRWSz2VO9Dp8FeuY5joNWq4VGo0GtVkM2m0Wj0UC1Wj2StcgHlx5DIBBAIpGA4zgWLPaqBWg0GlitVojFYigUCojFYng8HvT19aHZbKJUKqHZbD600AqFAu7fv490Oo1cLod8Pg+O49iLNJ/Po1qtotlsotlsHtl1HzVOpxOvv/467HY73nrrLfT19UEqlUIqlYLjuK6UWCdisRg2mw1GoxFXrlxBq9XC+vo6/H4/qtXqEV/FyUIgEGB0dBRXrlyB2+3G9773PSgUCvh8PiSTSfZxcrkc/f39UKlU7M8ymQx2dnZQKpXg8/mQSqWwuLiIr7/+mg/auxAKhdBoNJDL5Xj55ZfxwgsvIBQK4datW8hmswgEAshms4f+ffDB5YRDgYNqABzHsWChUCigUCj2/DyDwQCLxQKJRAKlUgmJRAKXy4X+/n40Gg0UCoWuXSCRzWYRDAa7/m2O46BUKtlJRyAQoFarnergIpPJYLVaYbfb4XA4YLfbAYCd+JrNJjvZtdvtrp+TSCSCSCSCXq+Hw+FAMpmESHR2HjWRSNR1ohYIBOyemM1muN1uDAwMYHJyEiqVCnK5HPF4nH28QqHAyMgI1Go1+7N0Og2pVIp8Pg+BQAClUolIJAKZTMY2SGf1BMNxXFc2QywWQ6PRQKlUwm63Y3BwEGKxGNvb2xCJRMjn82zd0u/1ep2t7YPixK54juMgEonYQysQCNivVquFRqOBVqv1UFrnNCEQCNjDZ7FYMDw8DKVSCYfDAbVaDb1eD51Ot2dqTCqVQqlUskUHfPdiFIlE4DgOrVarK80FACaTCVarlZ1O6vU6pFIpdDodGo0GZmdnEQgEsLW1hQcPHpzaAKPX63Hu3DlYrVYolUoAQKVSQaVSQT6fh8/nQ7lcRjAYZC8+uVwOrVaL69evw2g0wm63QyaToVarQSKRHPMVHQ0ikQjnzp2D2+1mf6ZUKjEzMwOj0QiHwwGbzcZ21hzHwWq1QqPRdH0NmUzW9XUVCgU8Hg9qtRpsNhvK5TL0ej0AIJlM4v79+0eyGz9piMVijI2NwWazQa1Ww2g0QqVSYXR0FDqdDi6XC06nE0NDQxgZGWHrt1KpIB6PIxgMIpVK4ZtvvkEqlUK5XD6wE/aJDS5CoZDVDACwqCwQCLp2iwcdbU8acrkcOp0ObrcbV69ehV6vZ0Vls9kMq9X6WIlsu91mO7tgMIhQKIR2u83SOp2fS4FHp9NBIpGwICSXy2EymVCr1aBWq7GysoJ6vY6lpaVTG1w0Gg36+/thMplY4b5Wq6FYLCKZTGJtbQ3pdBoLCwsIBAJQKpXQaDRwOp0YHR2FXq+H2WyGxWKB1+t9ZBrttMFxHPr7+3Hx4kX2Z0ajET/5yU/g8Xj2/BydTgedTvfYryuVSmGxWLr+rN1uI51Ow+fzYWNj40wGF47j4Ha7MT4+DqvVCo/HA71ejytXrsBoNHZ97MzMTNf/b25uYn5+Hj6fD4FAALVajdVkDoJjDS60qGQyGQwGA4RCIer1Our1OjQaDSwWS9eRj04ztVoNuVyOPezVahWJRAKBQICdaE5DwBGJRJiYmMDk5CQcDgcmJiagUCigUqkgFAqRzWZRKpXYx9PDVigU0Gq1UK/X2emj2WwiEokgGo0+9t6IRCJoNBqIxWLI5XJWeB0cHESr1UIqlUKxWOwqwJ5GaG1JpVKW6lpbW8Pa2hqy2Sy2t7dRLBZZ/l8qlSKVSqHdbqNYLKJer7NU0FmAlHVqtRrDw8OYmppif6dSqdjpbz9Uq1WEQiEUi0X2Z1KpFGq1GiKRCGq1GlKpFDKZDGazGfl8/lQH7846q0ajYaKIvr4+qFQqnDt3Dk6nExqNBiaTCSqVak+xyW5UKhVcLhfEYjGuXLkCh8OB+fl5rK2tHcj3fWwrXyAQwOl0Ynp6GiaTCTMzM1AoFOzl5Xa7MTU1xQqodJKRSqUoFosIhUIol8sIh8PIZDL45ptv8O6776JcLqNSqZyK4CKRSPDmm2/iP//n/wy5XA6NRoNWq4VkMsmunU4iAFCv17GwsACv14tKpYJisciCS6vVQiKRQDqdfuy/STUdkUgEg8EArVYLl8uFl156CRKJBD6fD+l0GqVS6VTc40dRq9WQSqVQr9cRj8fRbDbx29/+Fr/73e/YBqgzPUsp20wmw34+crn8zAQXuVyOvr4+WCwWvPLKK/jhD3/I/o6e3f1SKBTw5z//mdX+ADDVnlqtxuDgIEvVDg4Ootls7utl2qsIhUKmsBsZGcHY2BgGBwfxs5/9DAaDARKJhNVkSUG6n3VnNpuh1+tRKBRgNBqRSCTwy1/+Euvr6wfybB/ryqdCH+1KlEolkyV2yhCpkE15baFQCLPZzI5vCoUCDocDbrcbuVwOkUgElUql5/sKqHBpNBrZqa1arSKdTiOTySAUCiEQCHQFl3A4jGg0imq1yor29ALMZrNPTB0IhUJUq1WIRCK02200Gg1IJBIEAgFIpVIkEglks1mUy+WuzxEIBBCLxRCLxazw33l66jUqlQpisRhKpRJLvyYSCSYpftTDR0IHStee9rQtwXEcVCoVe447hSZUMG61WigUCigUCo+9J6lUCoFAAKFQiP1ZsVhkpyODwcBOQmq1GhqNhmVBDrJmcFzsztRIpVJ2InE6nXA6nbDZbNBqtVCr1ax2WqvVUKvV0Gq1WM10P1Sr1a5MxEGt12MLLtRwlkwmIZPJ2AOZTCYRDAYRiUSwsrICsVjMuqJNJhPMZjMraovFYlitVtTrdQwMDODKlSvw+/345S9/iY2NDdRqtS4lVC8ilUqhUChQLpcRjUYRi8Xwm9/8BisrK8hkMkin011BNJ/Po1wuM6lw5wtuP/ei1WqhUqkwRVg6nUYkEsH29jaEQmFXj0Gz2exSr/X398PhcLC0ZaVSwc7ODjKZzCHeocNhY2MDv/71r1nNSyQSYXV1ld3T3XTuGGkH2RlcT3uAkcvlGBgYgNPphFar7fq7er0Ov9+PXC6HGzdu4JNPPnnsxq9WqyEej6NSqbA/ozStXq/H3/3d3+GFF16ASqXC0NAQ5HI5fvCDH2BoaAizs7NYWVk5tOs8bGhDKZPJoNVqYbPZoNPpcPXqVdhsNng8Hla7SqVSiMfjrDQQiUSwtbWFXC6HtbU15HK5ff2bMpkMLpcLUqkUPp/vwK7lWE8u9XqdpbHoZVgqlZDNZtmDKZFIYLVaoVAomFzOZDJBIpFAoVCwHYxGo4HNZoPZbMbvf/97SCQSlhLqZainolQqIZ/PI51OY2lpCbOzs2wXeNDQjqfRaKBcLiOXyyEWi3V9DKWBqN9GKpUymWmlUoFcLkexWEQ4HD7w7+8oyGQyWFlZYdclk8mQyWQe+VKkUzjtOknVSM2opx0Sguj1+odSVM1mE7lcDolEAgsLC/j444+fOaug0+nw2muvYWhoiNUD6/U6e+Fub28/97UcN2KxuCu4mEwmTExMMOWXw+FALpfD1tYWSqUSMpkMSqUSdnZ2MD8/z9Rfnb1Dj0Or1eLKlSvQaDQHKoo41uCSzWbZzrZarUIikSASibDdeLvdBsdx2N7e7ioY6nQ63LlzB2q1GkNDQ+w0Q42D3//+99Hf34979+7h/v37x3mJB0apVGI1lmw2i0KhcCxFdSosGo1G2Gw26PV6XLhwgfXVGI1GRCIR3L9/H8lksmcluLTRoTSDSCR6aCcoEAigUCggkUjgdDoxMjKCvr4+OBwOyGQyrKysYGNjA/fv3+9KI55GNBoNLl++jIGBgYdUXeVyGQsLC9ja2oLf73+uUxzVDn0+H+RyOQvgkUgEfr8f+Xz+eS/lWCEnDbVajZGREbz11ltMYtxut3H//n18+umnyGaz2NzcZJvzer3OsgzFYvGp1lu1WsXOzg5kMtkTa7JPw7EGl0wmg2w2C5/Ph4WFBQDd+b7O5jTgO9ks5R51Oh3eeustTE1NwePxsKa3t956C4lEAqVSCfPz86ciJVEqlRAMBhEIBJBKpQ7lxPIkBAIBpFIpa8i8ePEiPB4P/sN/+A9wu93s57OyssKa4nq10NpoNNiJg15Yu9cR9SGR/9jbb7/NLF9kMhk2Njbwr//6rwiFQl2qvtOITqfDCy+8gPHx8Yek8aVSCXNzc5ibm8POzs5z/TvNZhPxeBxerxdmsxntdhu1Wg3hcBher3ffqaCTikAgYOKd8fFxvPPOOxCJRGwTfu/ePXz66adIp9PY2trqEi911vee5p1XqVSwtbX11J/3JI5dyvKkgudef1etVtkDn0qlkEwmYTKZAHzXD0N579OCSCSCSqViMkNqgjzMwEkvCaVSCZPJxNIQSqUS/f39GBkZgclkYrumUqmEcrmMra0thEIhxGKxrrx5L0FNqGKxGDqdjqUqOk9iQqEQer0eCoUC4+PjsNvtUCqVyGazLCVIJ/FeFDXsB+q18ng8zJdOLpdDLBYz0QnVUNPp9IEoOXd74gmFQiiVSqjV6p49KRMCgQBqtRpmsxkajYYJayKRCMtcJJNJlrk4qJTrYbxHjj24PAtUvMpms0yTrVarT+0DDIBJMCUSCXuh1Wq1Q1XGUJD2eDz4yU9+wmoqBoMBer0eFosF1WoVXq8Xa2trWF9fh8/nQzAYxN27d1EsFnt2J2k0GjExMQGDwYCrV6/CarXCarV2pXxIIUeiBo1Gg3w+j3v37iEajeKrr77C7OwsU/GcNgQCAV588UW88847UKvVyGaz2NjYQF9fH0wmEx48eIBf//rXiEQiuHv3LuLx+KHUQKVSKfPMi0QiB/71jxJ63i5evIiBgQGIRCKk02l89tlnmJ+fx9bWFra2tnqintyTwYWUTxzHoV6vd0XwTt+nXpciA+iaBUINlFR7ot3LQe46qDBNuV+pVAqj0Qi32w2LxQKXywWtVguFQgG5XM5OLdTEurOzg1gsxqwkei3gUzFeoVDAbDbDbDbD4/EwjzGbzdaV9un0dKL1SLnvVCqFfD5/app6dyMQCKDT6dhLEPh241cqlVAoFJBMJrG9vY14PI5MJnNgdSdqTaDMhFAohEwmg1Kp7Om+IhLIaDQaZuMCfPsOSCQSCIfDSKfTPVO/69mfBA1y6u/vx4ULF+B2u8FxHKrVKmKxGEKhUM/umolGo4FvvvkGKpUKDocD09PTkEgk+OlPf4qZmRncvHkTX331VVd94FmhhU2mgRqNBufOnWOpr4mJCYjFYiQSCSQSCQSDQWxsbKBQKMDr9SKfzyOTyTApNAWWXgrw9LJUKpWYnp7GT37yExgMBgwODkKj0bDi/e7P6fy9WCzi3r17rJn1tAYWQq/XY2hoiHXI12o13LlzBxsbG1heXsby8jKKxeKBpUc5joPNZsPw8DDMZvNTTwc9qYhEIiiVSmi1Wpw/f545RheLRdb34/V6u1wLTjo9GVw63T/NZjP6+/thNBohFArRaDS6uqR7mWazic3NTWbPcPXqVWg0GrzwwgsYGhpCIpHArVu3utxNnxXaeVOntcPhwOuvv8468xUKBbPliEQimJ2dxY0bN9jiPw1pH+ox0Ol06O/vxwsvvACdTgetVrtve5FqtYqtrS0sLS09sVmw1yFBg81mY/enUChgY2MDH374ISKRCILB4IFKsYVCIXQ6HTO/PC11VaFQCLlcDrVaDY/Hg6mpKZRKJXb6TSaTXc7RvcCxBhexWAyJRMIa99rtNqRSKcRiMer1+iPrCWq1mgWUwcFB2O12aDQaJh8lIzvyeupVWq0WotEoe+nfvn0bSqWSORqMjo7ijTfeQCwWw8LCwlPvaoRCIYxGI5RKJSwWC/r6+qDVanHu3DkYDAaYTCaUSiVEIhH4fD4UCgUsLS0hEolgZ2ena7bLaYDjOPT19WF4eBiDg4PsXj/NC4zUPkqlsuc7xXdDElmZTMbUmsPDw8z25sGDB0gmk1heXmY10YM+uQqFQtb/odFoIBAIUKlUsL6+jtXVVSQSiQP9904CEokEHo8HmUwGjUaDlQToFL27l6rZbCKfzzObouOqzRxrcKHu52q1yjqZyeSOzP/2WpwGgwHf+9734HQ6cfnyZYyNjbECVzabxfz8PO7fv99zkX43zWYTOzs78Pl8THlltVrxwx/+EH19fXj55ZcxNDSExcVF+P3+pw4uIpGIdfxeuHABb7/9NlQqFcxmMyQSCbM7efDgAX71q18hFoshGo2yeRCHMQPiOBGLxZiZmcH3vvc9eDwe5tv0NKkXypnr9fpTJz9WqVQYHByEyWTCW2+9hYGBAQwPD4PjOIRCIfz617/G9vY2lpeXEQwGmQXQQSISiWC32zE8PMzqXblcDl9//TXu3r174ovcz4JCocDFixdhMBhQKBSQz+eZt5pAIHjIjqlcLrPNXy6XO73BRaFQdE3vEwqFbDeo0Wig1WpRrVah1+vRbreh1WqhVCpZ5ykV58nnqtlssk58k8nE5KI0+KpcLqNYLLLg1OvQjqRQKDBH41gsBoVCwdwKSA7aaDRY4x/dt70gI0G5XA6z2cwK1eRQTfcykUjA7/fD7/cjHo8jmUwil8v1fLrxcTQaDeaInEqlWIGY+imq1Sor+guFQlaHoftJrtJGo/FAG9JOAkqlEm63G2azGXa7HRaLBe12G8FgkMmNyY7koF0JOtcsjYMg8UA6nT7Qus5x0DlQrbOORxJ4i8WCVquFYrGIQqEAiUTC0oJarbbr2ukdQIPVKCt01BmGQw0uIpEIU1NTGBoaYnlSpVLJ/p9uZuckNApAFEjq9TpSqRTzIaOelpmZGWi1WhgMBgDfvnwDgQD8fj9b5KfJdoPqK2q1Gvl8HjabDS+99BJeffVVyOVy/O3f/i1isRhrVCPLlr12jkqlEh6PBzqdDj/4wQ9w6dIlpgArl8uYnZ1FMpnErVu38M0336BQKCAUCrET5mml0WhgbW2NFfbn5+eZR1ir1WIy0M4R01euXMHAwAD6+vpw7tw5KJVKXL9+HU6nE81mE9vb26fmZDc+Po7//t//O0wmE0wmE6RSKb766iv86U9/YnLjTCZzKC95CmxWq5VNqNzZ2cGdO3ewvb3dk/51ndCmRKvVssZjqVQKvV4PpVKJH/zgBywF3Wg0mI+dQCBg70qiXC5jc3MTmUwGN27cwBdffMGGhB2lwObQggtFYqPRyIYueTweaDQanD9/HiaTqeuh2z0xkf67VqshGo0y+5NIJAK1Wg273Q6FQsEm1lWrVeRyOeRyOZRKpZ7exewFTUHM5XLQarXIZrOYnJyEXC6HwWDAyMgIDAYDYrEYO/GJRKIuSTbtuOlIbbVa4Xa7MTQ0xP6+VqshFAohFAphaWkJc3Nzh5LeOIm0Wi1kMhkEg0Fks1nk83kIhULme7e4uIjFxUV2YqHGPbImos0RyZWpJtDrwYWeTYPBgKmpKdaw3Gw2kclkMD8/zwrOh3WqpWZWSlUC3zon+P1+hMPhnheUkECJro2CBdVbaWDdXux2MSmXy5BKpchkMlhcXGSfe9SuHocSXMgXR6/X4/XXX8fly5dZbr7VauHevXtsYWYyGWi1WoyOjkKpVLJjL0ljqUAql8tZzwUNFyPpcblcxsrKCm7cuMG04KeVRqOBcDiMXC6HTz/9FPl8HhqNBn19fXC73fiLv/gLXL58GdFoFOvr60in07h37x6SySTcbjczv3v11VdhNBoxPDwMiUSCra0t3Lt3D6lUCnNzc0gkEmdCSttJq9VCJBJBuVyGRCKBTCZjJxdKR5JjdKPRQKVSwezsLMLhMFqtFq5du8Z8xmiYk9VqRaVSOZTi9lEgEolw5coVjI+P49q1a5DJZGg0GkgmkygWi/B6vdjZ2Tn0NLTBYMC1a9fgcDhYcDtNUGN4sVjERx99hGg0ypygH1fzo340sVjMlI40UE2tVuPFF1+ERCLB5uYmbty4caTea4cSXFQqFWZmZuByufDqq6/ihRdeYA1VmUwGd+/eRSwWg8/nw87ODlwuF/7yL/8SJpMJBoMBKpWKzTIgO2iaa0KnGhp3HIvFkMvlsLy8jI8++ojZ0J9WKLhQIW9xcRETExP4b//tv8HlcuHcuXNQKBTw+/1YWFiA3+9n0xJdLheuXbuG4eFhvPPOO9Dr9WxX7vf78fvf/x7JZBIbGxvI5XJnJqgQpM7b7QBNdN4PCjJzc3OsyNxoNJjvnclkYmmcTCbDpoP2GmKxGNevX8ePf/xjWK1WSKVSNBoNRKNRJJNJeL1e+Hy+Q0+XkncZ1XxOG5ShSSaT+Oijj3D//n0oFArodLrHqhU7e7NI8anX63H58mVWx3a5XLh9+za+/vrr3g8uHMdBqVRCpVJBJBKh2WwinU5jeXkZ6XQaOzs7SCQSiEajyGazEIvFWFlZYQN/KALbbDY2CIegNAPlGUUiEeRyOWw2G6amppBOp6FUKpHP55klPU0MPE20222WCozFYlhcXEQqlcLw8DDsdjtEIhGsVis4jsO1a9fgdDpx7tw5jI2NwWKxoFarIZvNIhwOI5vNYn19HclkEtls9sC7/nuN/V5751A0gk7cu3/1arMf9bKYTCao1Wo2TC4cDiMQCCCZTB5q0KTalsFggNFohE6nY6mjSqWCTCaDXC53auTwrVaL9bdQev9xa0coFKJQKEAqlSKbzSKXy8FgMMBgMKBUKqHRaLD/N5vNTKZ8FDL5QwkuEokEFosFNpsNHMehWCxicXERv/zlL5nRZLlcZp3l0WgUOzs7zJxRJpNhZmYGP/zhD5mfVSeNRoMVp+RyObRaLV588UX09fUhmUzi5s2biEajWFpawurqKpvK2Is7x8dRKBRQLpeRz+eRSqWg0+nwi1/8Ai+99BLUajUuXryIdruN69evo16vs0me5XKZnfg+/PBDPHjwAMFgEOvr68eqiz8tiEQiZtNP0zl7FaFQCKvVitHRUTYIrVQq4ebNm5ibm8Pa2tqhPVcCgYAp08bGxjA6OgqbzcaCSyaTwfr6ek8bpO6m1WohFoshmUyyAXSPg1SLtKmhxvJMJoOBgQGcP38ek5OTyOVyuHz5MgKBABYXF4/Eg+1QggvJjWUyGTiOYzLOfD7PCqXVapV1hQPf5hwbjQaTfnYW6EghQb+q1SoymQza7XbXmGSHwwG5XA6n0wmO4xCPx9moWmo+6txpUnqNFGpkV0Ino5MOXQs58JJcOR6Ps4VGhVC6VuDbOTqRSITdx2g0ylQ+p2UHSJAHlUgkYrU8EjkcViClNdRZZ+w1qMBMHnJyuZxJ1IvFIpLJJGKx2KEXiaVSKTQaDVQqVZeAB/i2eTCfz7OpqKeFg7Bzovdsq9Vim0qqwxzVZudQgotIJGIyYY1GA6VSCZfLhRdffBHxeByrq6vIZrMwGo0wm83QarUYHh5m3joKhQJWqxUjIyPgOI4FpY2NDWxsbKBUKiGRSIDjOLz22msYGxtjN08ul+O1115DuVzG5OQkvF4vk0nmcjlEIhHkcjn28lWpVJiamoJarUY8HkcqlUImk4Hf7++ZHTxZnVerVbz77ru4c+cOLl++jJ/+9KfQ6XSsZkXpHo7j2Oxtp9PJalSBQOA4L+PAEQqFbKDZ8PAwXnrpJQgEAmxtbSGdTmNlZQWLi4sH6oHWbDaRzWaZutHn87FTei+h0+lw6dIlWK1W9PX1AQDC4TDm5uYQDocxPz+PjY0NFIvFQ0uhCgQCmEwmDA8Pw+FwPGRKSe8EGqnN8y0cx0GlUrG+NdpAq9Xqp7Iyel4O7eRCFhik8jIYDBgaGoJGo2GadKfTiYGBAVitVly7do2NSaUZ0mShQYNylpaWcPPmTRSLRaamsNvtzP7dbDZDJBLBYDCg3W4z37GtrS2WjiuVSqhWqxCLxZBKpTCZTJicnITZbMbW1hYCgQCEQiFCoVDPBJdWq4VqtYpqtcombzabTVy+fBn1eh1msxkKhYJ9PP186vU69Ho9zGYz4vH4qfFpIgQCAbRaLRwOB6ampvDjH/8YAoEA33zzDZvouby8fKAni1arxVKVmUwGqVSqJx265XI5RkZG2IgF4Ns0FHXf+/3+RwofDgqq91itVuh0OpblIEqlEmva5PkOcolWKBQsIJMprVwuP7Ln/FCCS6lUwsrKCsrlMlN8SSQSTE1NoVAowGKxIJfLwWg0wmQyQaPRwOl0QiaTsVnx9IAWi0Wsra2xyWter5f1e4hEIty6dQuxWAx9fX2YnJyESqWCx+NhvlAkW3zttddQKBRw/vz5h04uExMTUKvVsNlsSKfTWFhYwPr6es/thgQCAQvOLpcLDocDarUa6XSaddaTzFar1UKtVmNsbAw6nY65HWQyGXayJCVZryIUCmEwGNDf3w+73c4EJoODgzAYDKjVapDJZKzBrF6vIxQKsYDwLEVP6oSm01CvSrkpd2+z2djGpFKpMDXdYRaEKfNBAe7ixYus1lKr1fDgwQOEQiE8ePCgp9fnQSGVSpn82GAwwOVyYXh4GAMDA9DpdAC+LTskk0kkEokj6wk6lOCSzWZx8+ZNbG1tsZGdSqUSr7zyCjiOYw6+VIyinHij0cDCwgKTKM/OzjJvq2QyyR5aymULBAKEw2GIRCJMTEzgpZdegt1ux49+9CM4nU4oFAro9Xo4nU5MTU2xB7/VanVZLFCnK70MPvjgA7z77rvIZrOHcXsODY7jYLfb4XQ6MT4+jpGREQiFQiwtLSGVSiEWiyEej8PpdOJ73/sedDodrl27BgAIBoO4cOECfD4f/vEf/xEbGxs9X4MRCoVwuVyYnp7G0NAQ9Ho95HI59Ho9Go0GBgcHcfXqVeZAkMvl8Pnnn2NxcZFZaDxtYOicJ0SKxl47tQDfqrTcbjcGBgZYR3yhUMDOzg7rBTosxGIxnE4njEYjrl27hrfeeottBrPZLP74xz/iiy++OBIJ9EmHGnoVCgU8Hg+mp6fhcrlw+fJlDAwMsFNKpVJhDiZH5Xl3KMGl0Wggm81CKBQiEAjAbDZDp9N1FewBsAePbF5qtRpLTQUCAVZopq77vWg2m6hWq0in06yZjXLBNDGRHEQ7hwsRndYzJP3LZDI9+UKgNJDNZoNWq2U2OpFIBKFQiM1iISt/rVYLnU4HhULBOrCr1SoGBwchEAiQSCSQTCZZw2Cv7cAFAgEkEgk7xZLVEKVG0+k0E3yk02nk83kWUPfz8ye3A/oFfLv26T73suU+5e01Gg27Niqg5/P5Q60hUSOqw+GA0WiEVCpFu93uUkbG4/Gevr/PC6nDRCIRzGYzDAYD+vr60NfXx2y2yH+tVqshl8ux9oyjCsiHlhZbX1+HRCJBNBrFxx9/DIvFgpGRka5iEvWhFAoFBINBlMtlNl2xUqmgUCgwM8YnEQqFmN7766+/Zk6iVKx3Op2QSCQPLUZShjUaDczPz2NlZYUNv+o1xGIxGzRETX2RSAS/+93vMDs7y+oyMpkM7733HuvgHRoagt1ux9DQEKuDFYtFfPLJJ/j888+RTqexsbHRkxbydHpVKpXMGuPOnTsIBAK4c+cO/vznP6NWqzFX7kwmg1KptK90Fp0UyThUKBQik8nggw8+wOrqKhYWFnr25SeXy9Hf34+RkRGm0Mrn89jY2EAsFjvUk4vRaMTf/u3f4tKlS7BYLBAIBGwoXSwWw+rqKtbW1lCr1XpyE3gQkBeZWq3Gj370I1y8eJE9w3K5nDWcB4NBeL1e3L9/H+vr64hGo0f2HB9KcKFGHeDb41g4HIbNZkOz2WQa9Xa7jWw2yxp/KA3zrFA9oTNVJpVKoVQqodfrWQF/98NODZb1eh0bGxtYWFhgOfdeQygUsjSgWq1mO5adnR2srq6yF6ZQKITf74dCoYDRaGSSU7I8Ibdb+jySfPdacyWlPMlFl1wdUqkUwuEwtre3sbS09MyD1oRCIVQq1UMjaQOBALPe6UXovtFIbUr1UdPuQcuPqU+D0uRqtRrDw8OYnJwE8F3DMA0BTKVSJ3rKbKdH4kF8rc5eFoLebVqtFn19fRgfH2cjuan9o9VqIZfLsfaEXC53pOKHQ7fcp91FNBpFs9nsSknRTpp6XA6CzqmMm5ubKBaLbG7MXvO1Oz/e7/cjGo32nHS08yUqFArZtX/66aeIRCKIRCJdO3E6rZXLZczPzyMcDmNtbQ0bGxswGo148cUXYTKZMD4+DoVCgdXVVTYTnTqHewHqr+qsn0ilUpw7dw42mw35fB6BQACFQgGRSGTfhU6SdarVarz22mu4dOkSBgYGAHy7prPZ7KG5Ax82Wq0Wer0edrsdEokEzWYT6+vrCAaDWFxcPPCUilgsxujoKOx2OxwOB0ZGRmCz2eByuQAAqVQK2WwWa2tr+P3vf49IJAKv13ug38NBolarodPpUKvVkEqlnut+0cZYq9Xi6tWrzKeuWq1CqVTC6XRCpVJhenoabrcbCoWCpcLJ++2rr77Cp59+inA4fOSqukMPLtSoVi6Xj2xKHBXmd3Z2nnoh9tLOnOh0VCVhgtfrxb/+678inU4jHo93XVenomlpaYn1EywtLTEDTIVCgaGhIczMzMBms2F2dhZisRjlcrlnggsAtvY6g8vY2Bjq9ToCgQCWl5fZrJqnCS6ksLt+/Treeusttmmi3X06ne7J4KLRaOByudjo4maziY2NDdy7dw9ra2sHHlxEIhFGR0dx/vx5XLx4ET/84Q/ZvCfKbvh8PszPz+O3v/0tm2l0UlGpVHA4HCgWi889qItsrdxuN37xi19gYmKC1U40Gg0GBwdZH0vnqaZeryMejyOdTuPOnTv4wx/+cCyqxWOdRHkUnOSFeFCQsken00Eul6NaraJYLCKdTiOTyTxxgXemHaRSKe7fv49MJoOJiQmMjo5CJpPBZDKhWq0iFAod0VU9P+12m6UF9Ho9UwmSOtFut2NmZgaxWAztdpsV9Om0TYV9+n9ylNBoNBgYGIDJZIJWqwXHcV1GrMlkktVweg1yHqfrIg564qharWZS2ampKQwPD8Nms7HsArl4rK2tYX5+Hqurqz0hKrFYLDh//jzK5TJUKtWetSlyOmg0GszJhMQntDY5jmOyYrPZ3NWrRmlschYh4vE4qxfTPBeaCHoc9+3UB5ezgNFoxF/8xV/AYrGwCYixWAxer5eJIp4E+ZRRH4NWq8V/+S//BSMjI1Cr1ZiYmIBWq4XX6+2ZANNsNuH1eiGRSJibLwD28F6+fBnDw8OIxWK4ffs2MpkMQqEQMpkMS6fV63UkEglUKhVmomiz2XD9+nUYjUa4XC6IRCIsLCzgH/7hH5BIJLCxsdGzSiaj0YjR0VH09fUxldhh0NfXh7//+7+Hy+XCxMQEHA4HJBIJOx17vV5kMhn8/ve/x29/+1vW23aSEQgEmJmZwd///d+jVqthc3Nzz1N+rVaDz+dDoVCA1WqF1WqFTCaDVquFRCKBWq2GQqGASqWCwWBgaVg6MVMbxu5O+/v37+N//+//jUQigc3NTaYOO651yAeXUwApR3Q6HUtl0Lje/R7LOxv+0uk0e7nSbp9MGHvJ3bfdbrOXEs0bobqfQCBgI7IFAgFcLhdUKhXrG+is1YjF4oeCi9VqhV6vh0gkYvNagsEgS4f1qoqJ4zhIpVKWYn3Wr0H9a7sdoSl9S3UV2plrtVrm91Yul5l3WSQSOfGpsE7oVEEN3LVajd0PgiZK0kRZh8MBqVTKgotGo2G9K1qtlglR6BmlU3W5XO5yiA+Hw/D7/Ugmk8dSY9kNH1xOAaSw0Wg0bFcO4KlfDhREtFotW+BCoRCVSgWhUAjBYPDYF+zT0G63kUgk0Gg04HQ64fP5mCsEzbsXCoUwGo24dOkS6vU6CyikImw2m6jVamg2m+wlIZfLYTKZIBAIEI/H4ff7sby8zMxDz3JjH7ko0/gMq9XKUl1CoRCTk5MYHx+HwWBgAwJJaUfef8FgEP/3//5frK+vw+v19kxgAQCfz4fPP/+c2dYYDAaYTCbWKQ98u5E7d+4c6vU6MwUVCoUsLSYWi9lzLBAIUK/X2TReGvVeKpWYJHx7exvxeBzhcBjr6+tMJHXc8MHlFEBNolQIpbrC00CfQ2NVVSoV29XX63WmgOqlF2e73UahUECz2UQymUQ6nWapBeC7RjSlUgmlUvnUX79arcLn88Hn8yESiSCbzfZkEX8vnvWFLhQKodFo2MiN4eHhLn+r1157Da+++uqeGx8S/fj9fty+fRuLi4vPdQ1HDZ3619fXu6xzqA/qWaH+q1wuh0AgwMZwb21tIZfLYXZ2Fj6f7wCv5GDgg8spoFqtIhqNQigUYmRkBHa7HaFQCMPDw8xSv1wus+DRmbIwmUxQqVRd/RrDw8PQ6/XweDzI5XJIJBLY3t7uyZMLBUO/348//elPcDgcePvtt5mlydNAKYlSqYRoNIpcLodbt25haWkJa2trPVnA3w05iMfjcZb+UyqVeOGFF+B0OuFyuVAqlZDJZJgyLp/PQyqVMhdeKs5rNBqYzeauk7TD4ej696gulkqlmCotEokglUodx+U/N7FYDAsLC1CpVIhEIlAqlbDb7TAYDMy5/XEbP5LP0yma3M4TiQTK5TIbDU8Dxci14CTCB5dTQKVSgdfrRa1Ww5UrV3D+/Hlks1lcuHCBzeUmE1GpVNp10jl37hxcLhecTiczsZycnIROp2OuvqFQCEtLSwiFQj1XS6AUAZlxejwezMzMoL+//6m/FqXIkskkZmdnEY1G8cEHH+Du3bunZsjazs4O/H4/nE4n5HI5XC4XXn/9dbzyyiusJlKtVlmTKI3R1mg0GB4ehkajYY4Pe52gd9dgyIhycXERs7Oz+OMf/8gUe71IIBBgY8hpE6fX69nmzePxPNbyvtVqIZPJsJk5Xq+XuWp3zgjqhXlBfHA5BVBxUKlUol6vs2I1jTuORCLMY4tsuGUyGaRSKQYHB+FwOGC1WmGxWJgnEXWyBwIBhEKhnjexrNfrKBQKbLSz3+9n6iQalU0vvr1SNiRVJkUZWZFQs2Qv1QUeB53OSJquVCrRaDTYC5GK/QaDARzHodFooN1usxnuSqUSGo2ma6hXJ4VCgXm70dybjY0N+Hw+xONxptDrVfYae02mvMC39+9xwYXk8+VyGel0mqV1exE+uJwCyuUyfD4fG6JWKpVgsVjwox/9CNlsFoODg0ilUnA4HLDb7V06eavVCo1Gw6xf6vU6mzD46aef4quvvkI8Hj+xR+/9UqvV2Byh9957D4uLi7BarbDZbNDpdBgbG2MGl7sffmo4XVxcxO3bt+H3+/HZZ58hnU4jlUo9s33MSaZcLmNnZwelUukhd3CxWAy32w273Y7BwUFUq1VwHMcmzz5Kwtxut7G6uoq5uTkEAgF8+eWXLM1Dzbm95IyxH9rtNorFIhvrEI1Gnyi0ofVGgpJehQ8up4BGo4FCoQCxWMxSYBzHsZ1kJpOBWq1m3fdisZidUGjyZ6cUOZ/PI5lMwu/3Y319HcVisecfekpplUolNmWUThy1Wg12u52lGDof6E4LfWpS8/v92NnZOfF9F88DnYalUilT0FGDn0AggFwuf+TnktJu99cjYYXP58PW1hbu3bvXs/5rTwNdO62/swIfXE4BjUaD9aZ89tlnyGQyUKlUMJlM7OUok8lYvUAikaBarUIgECAQCKBeryOdTiMSiSCfz2NtbQ2ZTAbr6+tIJBI9223eCd0HcuwOhUJYX1+HRqOBXC7HH//4R4jFYojF4ocmHlLg9fl88Pv9Z2KsbrVaRSAQQDqdxvvvv49wOIyRkRG8+uqrj0x5Ad+uxZWVla5G22KxiMXFRSSTSQSDQQSDQVaU5jm9CNr7PM/3UvPcYfMsKZCjuH8ikQjDw8Ow2+1wu92Ymppi46LpxUkGlyqVillyp9NpeL1eLC0tdc0lP6xJlCfx/u3n65+U1Nezfh/Pcg85jmMz7N944w38z//5P6HVah/58dVqFR999BHm5ubYnyWTSfzhD39gPn8n4T6exDXYS+zn/vEnl1NEq9VCoVBAPB4HANaYRblw+kUFfQBIJBIoFouIx+NMslytVh8qTJ52TsIL7yRCadJ4PI7l5WV88MEHj+0JqtVqmJ2dxdbWFvuzfD6PUqnE3+MzBn9yeQZO8q6Hus5pLCypnzrHOgNgrrMURGhgWqdh42Fxku9fL3CUJxfguzUllUqZRc7jvrdKpdKl+Gq1WidObcivwedjP/ePDy7PAL8wnw/+/j0fRx1cTiP8Gnw+9nP/ns4jhIeHh4eHZx/wwYWHh4eH58DhgwsPDw8Pz4HDBxceHh4engOHDy48PDw8PAfOvtViPDw8PDw8+4U/ufDw8PDwHDh8cOHh4eHhOXD44MLDw8PDc+DwwYWHh4eH58DhgwsPDw8Pz4HDBxceHh4engOHDy48PDw8PAcOH1x4eHh4eA4cPrjw8PDw8Bw4fHDh4eHh4Tlw+ODCw8PDw3Pg8MGFh4eHh+fA4YMLDw8PD8+BI9rvB/Lzo7+Dn7/9fPD37/l4ViNz/h5+B78Gn4/93D/+5MLDw8PDc+DwwYWHh4eH58DhgwsPDw8Pz4HDBxceHh4engNn3wV9Hp6zgFAohFAohEwmg1qtBgA0m0202200m000Gg00m01Uq1W0Wi20Wq1j/o55eE4mfHDh4fl3BAIB1Go1FAoFrly5gp/97GcQi8VIpVKoVCqIxWJIJBKIx+OYn59HoVBAuVxGvV4/7m+dh+fEwQcXHp5/RyAQQCqVQqlUor+/H2+88QYkEgnC4TCKxSJ8Ph98Ph8UCgW2trbQaDRQr9fRaDSeWR58Wnhame5Zv19nAT648PD8OxzHoa+vD4ODgxgaGoJKpYJUKkW73UatVoNKpYLD4UAmk0F/fz8KhQKi0Siy2SxCoRA2NjZQrVZRKBTQaDSO+3KOBKvVCpvNBr1ej4mJCSiVyoc+ptlsolQqoVarIZ1OI5VKoVQqIRaLoVqtIpvNolKpHMN3z3OY8MGFh+ff4TgOIyMjuHr1KsbHx6FWq7tqL/39/Wi322i1Wmg0GqjVatjY2EAsFsOtW7dQLBaRz+dRrVbPRHARCASw2+24cuUKhoeH8Td/8zewWq0PfVy9Xkc0GkWpVMLq6ipWV1dZajGTyaDRaPDB5RRyYoOLQCCAUCgEx3FQKpUQi8WQSqWQSqWQSCRQKBTgOI59PB2zq9UqIpEIyuUyKpUKarXacV0CT49BqR2h8FsRZbvdRr1eRzqdRq1WY38vFouhVCohEomg0WjQarXQ19eH6elpZDIZiEQi5HI55PN5FAqFY7uew0IkEkGv10Mul2NgYABDQ0Nwu93spLcbjuOgVqshEolgsVhQLpehUCiQy+WQTqeRyWSQyWTQarX4dNkjEAgErCaoUqkgk8mg0+kgEj36Fd5ut5HL5ZDL5VCr1ZDL5dBsNtl9lslkbB0rlUoIhULU63XU63VUKhX2M3lWTlxw6XyA6eLHx8dhNBrhdrvhcrlgNBoxOTkJuVwO4NubSGqecDiMX/3qV1hfX0cwGEQ4HD7Oy+HpITrXET1k+XweX3zxBcLhMIRCIUQiEaxWKy5fvgyVSgWr1QqHwwG3241r164hmUzixo0bCAQCuHfvHubn54/7sg4M2vCp1Wq8/PLL6Ovrw4svvoiXX34ZcrkcGo1mz8/jOA56vR5arRZ6vR6Tk5PIZDIYHx9HIpFAsVhEPB5Ho9FAtVo94qs6+QgEAojFYohEIkxNTeH8+fNwu9149dVXodVqAexdw2q1Wrh16xbu3buHcDiMb775holQGo0GrFYrJicnodPpMDExAZVKhVgshmQyCa/Xi6+++gqlUumZv+8TF1w4jgPHcSwdoVKpYLPZYDab0dfXh/7+flgsFnYzgO6Xglarhc1mY7ldHp6ngXZtlUoF+XwepVIJ4XAYfr8fIpEIHMeh1Wohk8mg3W5Dq9VCLBZDr9dDp9NBq9XC5XKh2WxCo9FAJBL1vGSZ5NkCgYA9m1arFX19fXA6nXA4HF2nvb0QiURMMAEAEokEpVIJEokEBoMBKpUK5XIZtVqNP73sgqTxUqmUbbIHBgZw7tw56HQ6AHvf92aziUQigVgshlarBa1WyzYItVoNOp0ONpsNBoMB/f390Gg0kMvlkMvlKBQKXZmhZ+FEBReRSITR0VHY7XYMDg7i8uXLUCqVMJvNbGekVqshl8tZobUToVAInU6HN998E+fOncNvf/tbbG9v84uVZ1/U63Xcv38fkUgEZrMZX331FWq1GlZWVpBOp9lLVq1W49atW1Cr1ZiZmYHb7YbD4cDIyAhUKhWmp6fhcDhY2iefzyMcDvecZJk2elSwp3SgyWTC9773PYyOjsJmsz2ToaNMJoPD4YBWq8XPfvYzTE5OYm5uDh9//DGq1SrrLTrLUDDXarV47bXX4HQ6MTMzg5mZGRYIgEcHdKFQiNHRUajVaqRSKUxPT6NUKiGXy6FSqaCvrw9jY2NQKBSwWCyQSCQYGBhgacsbN24gn88/8/d/ooILx3FwuVyYnJzE5cuX8c4770ChUDzy43ffVIFAAJVKhUuXLqFQKODu3bsQCARnfpHy7I9ms4nt7W14vV52cm61Wkin013pGo7jmGQ5k8lgamoKrVYLIyMjUCgUGBgYgMViwcbGBjY2NhCPxxGLxXoquNAOVyQSwWQywe12Qy6XQ6fTwWw2Y2ZmBmNjY8/sFCyRSGAymaDT6fDiiy9ifHwcAPDll1+iXq+j2Wwe5OX0JBRcVCoVLl68iMnJSYyNjWF8fPyhk+Kj3nFOpxNOpxOlUgljY2Oo1WrIZDIol8uw2WzweDxsE9H5s4xEIhCLxc/1/R9ZcJHJZNBqtZBIJDAajVAoFCz9IBKJoFAoIJPJcPnyZYyPj6O/v58Vq2gXU61WUa1WUS6XkUgk0Gw2oVQqIZVKoVarYTAYIBAIIBKJIBaLoVAooNFoUKvVUC6Xz3yQoaIgpRGFQiEMBgOUSiU7GdJD31mYbTQaKJVKqFQq7GVJdYnTBqnB6vU6yuUyWq3WQy+6drvNFE5erxetVgsCgQBWqxUKhQJarRYqlQp2ux2jo6OQSqVMptwra5BOFrRZGxsbY0IayiB0voyazSZrKI1EIkilUqjX6ygWi5BIJHC5XFCpVNBqtQ/VZjiOY+8AvV4PjuOQyWTOvBhHo9HA6XTCbrfD4/HA5XKx1NbTIhKJoFKpUKvVwHEcqtUq1Gp1V8rzoDmy4KLVajE2Nga9Xo+rV6/CZrMhHo8jGo1CoVDAZrNBrVbj4sWLGBgYgEgkgkQiYYqdZrOJZDKJVCqFSCSCW7duoVwuo6+vD0ajEYODg9BqtRAKhZBIJGg2myynmM/nUavVzoQ89HHQTohejiKRCP39/fB4PCyto9frceXKFZhMJvZ5hUIBoVAIiUQC/+t//S/cvHmTFQV75WW5X6g20mq1WP5/9zXS39Xrddy5cwezs7Pw+/1oNpuw2+148803YTabMTk5CZFIhPv37+POnTs9dc/UajUuXboEm82Gv/qrv8K1a9fY5kQoFD6kCqvVakgkEsjn8/jTn/6EBw8eIJlMIhQKQavV4q/+6q/Q39+PsbGxrsBExWqpVAq9Xg+Px4NkMsnqL2cZm82Gl19+GS6XC5cuXcLQ0NAz10GotkWbJ9pcPm9d5XEcenDhOI7lqR0OB/R6Pex2O6xWK8RiMVOF2Ww2KJVK6HQ6KJVKNJtNVCoVNBoN5HI5VKtVRKNRxGIxRKNRhEIhVKtVdrTufAl0/t6r8sbOnUTng/ioj6WCqUQiAcdxbOctFAohl8tZsBaLxcwbSywWw2azsV92ux16vR4WiwUGg4F9fZlMhmazCZFIBLfbzQJNuVw+tbnxvYLKXh9Dp+lMJoNwOAyO41AqlVCtVlkBVqvVQi6Xs81SL2xyqAVAo9GwX500m02WESiVSiiVSgiFQsjlcggGg4hEIkin04hGo6hWq4jH41CpVHC5XHv+WxKJhKlDad2edeg0R0V2iUTyzF+LNgYA2AZzL8hx4iBO2YcaXAQCATQaDcsZ/t3f/R2MRiNLH9RqNdRqNaaG4DgOCoUCjUYD6XQawWAQuVwOCwsLSCQSWF9fx9bWFtNgy2QyjI6Owul0QqfTQSgUsl1luVxGOp1mhdReyOHSAqATBv1OR9fdeVFCJpPBbDZDJpPB4/HAaDTC5/Nhbm4OUqkUV65cgcVigdFohNFoRKlUQiQSAQBMT0/D6XTCYDDAbrdDKpUyFV7n17darTAYDPiv//W/4j/+x/+Id999F//wD/+AUqmEer1+KgPM0xAIBHDjxg243W709/ejVCpBq9ViamoKxWIRHo8HYrEY4XAYuVzuuL/dJyKRSGCxWNimr5Nms4l0Oo1yuYzbt2/jz3/+M/L5PPx+P4rFImKxGLLZLFPeFQoF3Lp1Czs7O9DpdJiZmenqKdJoNFAoFHA4HOjv74dUKsXm5iay2exxXPqJglL8RzEFs91uIxqNIhqNwu/3P/cm6NCDCxU+rVYrzp07B4PBwHbSe0GBoFQqIR6PI5VKYW1tDcFgEMvLy1hdXWUvMq1Wi3a7zZq3qJ5A7rWVSgXFYrFnZKCUcqBCKv1OBbdHFdiUSiUMBgPUajUGBgbY7nBzcxMymQwDAwPo6+uD3W5naUKqFYyMjMDhcECtVsNkMrFF3BksaBcLgEkfV1dXIZFIWDf6WQ8uhUIBPp8P7XYbsViMnahNJhP773w+j0Qicdzf6r4QCASQyWRQKBQQCoXs5ysQCNBqtVAul5HP57Gzs4M7d+4gk8kgEAigUqk8tJlrtVoIh8OsmEw1Kvp61BitUqmg0+lQLBYPNV3TKxxmPWQv2u02W6O5XO6535uHGlyEQiE8Hg9GR0cxMjICpVIJiUTy0JG30Wgw24ytrS3E43H4/X4sLCywF2E+n0cymUS73YZcLofVaoXRaITL5YLVaoVSqezpGdcCgQA2mw19fX2Qy+VwOp2QyWRMdk1Beq9rlEgkTCxhNpuh1WrhdrsxMjICsViMkZERlm7UaDSoVqvQ6/Vot9uwWCxQq9V7dlbz7B8SARQKBWxsbKDVakGtVsPj8bDieKvVYifGk042m8WXX36J5eVl5PN5RKNR6PV6uN1ulMtlfPHFF/B6vZibm2NBhdLYu19KjUYD8XgcpVIJ6+vrmJ+fZ2uUUj0CgQAGgwHnzp2DUqnE559/fhyXfSZptVosvbu8vIxbt25hc3PzuRtaDzW4cByHgYEBXL16lfUA7PUSq9VqSKVSyOVyuH37Nh48eICtrS3cuXOH5f46c+Ak97TZbHC73bBarUca4Q8aSoU5HA5cu3YNJpOJadkpKCgUChgMhsfu6Drzqp33a69707kT7dX7dpKgRslCoYC1tTXk83kMDQ0BAORyOQsuy8vLx/yd7o90Oo3PP/8cUqkUhUIBkUgEQ0NDUCgUyGaz+OSTT3D//n2WRnlcjarRaCAajUIkEmFlZQVzc3NwOp2st4IwGo04f/48ZDLZQ6lZnsOj1WqhWCyiWCziwYMH+Pjjjw/ETPTQC/ok5dyr5lEqlVAsFpFOp7GysoJMJoOtrS2Ew2Hm59T5eTKZjOX/R0ZGYLVamUKMUmLVahWBQADJZBLpdLon0jV0/DUYDBgcHIRer4fZbIZSqYRKpYJcLodMJoNEInnqQND58VTj2gtKJZIoQCgUMsuJ3R9HP9P9FL3PGlQvFIlEyOfzqNfrEIvFcDgcrA+L0kwn/d7RaSyVSiEQCAAAVCoVisUiotEoa8bbb/qEdsj5fJ7JvDshpSelyUj12Qv10sOisw67+9nv3Eju572w++Pp/VsqleD1epHNZuH3+5HL5Q6kdeNQg0u73UapVEI6nUapVHpoMQUCAaysrMDr9eK9995jvja5XO6hvK1AIIDZbIbT6cTExAT+5m/+hqmcyJKj2WwilUrhww8/xObmJpaWlk78A0xSTLFYjMnJSfz85z9nqTAq4lPwfJYTRqdyLpPJIJlM7vlx1LkrEolgNBohk8lgMBiYdxF9jUqlgmq1yl4qvfCSPEoqlQrztXv11VdRKBSgUqnw2muvIR6P4+bNm1heXmazYE46zWYTq6urCAaDkEql+PDDD9FoNBAKhVAoFJ76xZ/P5xEKhaBUKh8qGJOgh1SjOp0OhULhufytepnHPe+71aRPegb3+vhYLIalpSVEIhHcuHED4XAYPp8PoVBoz/6up+XQgwvNt8jn88hkMuyBarfbSCQSiEQiCIVC8Pl8iMViTMYJfFfgFovFzAbBarXCarUyOTNZINCuiNQqgUCgJ1Q5BBVQNRoNpFIpS391Nj7utUPsXFQkc92r6Y+CSyKR2HMhlkolZLNZSKVSyOVyCIXChx5+mmtCzXJ8YHmYVqvFNlJUgyAX4VarBYVCAbFYzPq3Tjq0QazX6xAKhUgmk+wan0VNRKMK9lo/napI+sVLkg+GztICbdwzmQyi0SjC4TC8Xm9XxuggONTg0mw2sbKygng8jrm5OXz55Zcsx9put5FMJhGPx5HL5RCJRNjDCHxbpJbL5VCpVLhw4QLMZjMmJiYwMTEBo9EIi8XSpToLBoNYWFhAIBDA7Owstre3eyK4kLqtVqthZ2cHX3zxBTQaDSwWC0sDUm/K7h86BRyaL1Kv19kuszN1RScMn88Hv9+/Z0CghWc2m/Hzn/+czS7ppNFoYHt7G6FQCDs7O7xS7BF0znypVqsQCARsR261WuFyuZBOpxGJRHri3lGRvnOj86y7WpFIxEwYd+/M6Z7RWq7X6z2j9DwMHrc2OlNh+1lDlUqFDWmj08rGxgbu37+PXC4Hr9eLYrF4oK7UhxpcWq0WAoEAQqEQO4F03hBaSLt3MNQUKJfLodfrcf78eQwMDOD8+fOYnp7eU5abSqXw4MEDBAIB7OzsIBgMHualHSj0oMbjcSwvLzMll1KpZEad1BS5+/PoF6WqZmdnsbS0xHaInQFoa2vrkUaeYrGYzed488039zyVNJtNRKNRpug76w//o6B7Ry9Jal4lCySTycTmw/RCcDlIV2dq5qWm373+rc51fdbXV+eJY/c7cnfW4nHQFNBMJoO5uTmsra1hc3MT8/PzLNtx0GvxSOxfaIHsPkbv7p4XCoUwm81Qq9VwuVwYHx+HXq9nJxeTycQaCWnxhUIhZLNZ3L9/HwsLC0zy2EtQAAiHw7h79y5UKhW8Xi+kUilzP6WGtM77tTu41Gq1rpNLpyyUNOyPWkBSqRQ6nQ56vZ7Zx8tksq6P6QwuJAvn6YYaghUKBftFu/RWq4V8Ps92kGcBSnVRkZ5qKSRs2P2xUqmUndipofqsTamkdKBCoYDRaGSO1PuFaqPU7JpOpxGPx/HgwQNks1ksLCwgHA4zf8bDcjE59OBC3/R+VB8ikQjDw8MYGhrCCy+8gHfeeQcqlQoikairmbDTWHB2dhbLy8uYn5/HJ598gnK53HMDhyjNsLa2hu3tbTYzgyb4yWQyNBoNpuCgHd/u4EKKL7rPe3liPQqFQgG73d71a/fDX6/Xsbm5iW+++QaRSORMq3geBVkdqdVqNt+FGmLJYTkUCj2VyqpXoSZgsVgMg8EAhULB6qUGg+EhJSJlK5RKJbRaLbRaLVOXnSXopEt9RZQi3y/NZpMp8hYWFrC8vIydnR188sknzBGZ6i6H+QyfCMt9sjCXy+WwWCxwu91siM1eN7Uz5dD5MqXaBL2se+1YTWlCgUDAbHEajQYLLnRy6QwulEZ43iFLdHLR6XRdggL6d8jGo1AoMAnqaYBSsBTMqcZF0FqiIjb5XlHtkAxRKW1BFuk6nY4JI6j/JZ/Ps9Hbpzkwy+VylgZUqVTMSkapVMJut7OTy6PUUHQve9UX8FkgqyeO42AymaDRaGCz2aDT6aBWq/flWEDvgkqlwmrZoVCoy+utUCgcWTr7RAQXpVKJkZERGI1G/PjHP8bLL7/M7N/3gjr6S6US69avVqusQ9rn86FYLLI55r0GKToo/UcWNrsXRKfM+HkfQqvVihdffBFOpxNqtbrr7/L5PDY2NhCNRrGxsYFAIIBqtdpTgXsvqHan1+sxPT0NrVaLiYkJOJ3OLqEE+WjNzc3h/v37UCqVcLvdEAgE8Hq9SCQSqNVqqFQqkMvlmJqagsvlgtvthlgsRiqVwvLyMiKRCCKRyKke/yASiTAyMgKn0wmPx4Pz589DpVLB6XSyoKvT6ZhRZSdk218qlVgwPivOyHS6U6lU+NGPfoRLly7B5XLh3LlzzJ3jSZCfYjwex/vvvw+/34+NjQ3s7OygXC4jl8sd6Yb7RAQXmvFis9nQ39+PkZGRx348vXwbjQabjkfGi/l8Hvl8HgKBANVqFaVS6ZEy3pNM5+7tMCWrtHukcdK7u6aB7xwUEokEstksCoVCz93PvaCUjVKphMPhgMlkwrlz5zA0NMSCS61WQywWQ6FQQCwWw+bmJttVchyHdDqNYrEIgUCAer0OqVQKk8kEm83GdufkChyNRp+pN6RXoDSYwWCA2+3G8PAwLly4wGxwntR1T9mGzqzEaVhnT4J63ai/Z2hoCBcuXIBer4fRaHziqYXeFbVajdX0tra2sLm5Ca/XC7/ff0RX0s2xBhfqwrXZbLh+/TqcTidsNtsTP08kEkGr1UKhUIDjONjtdgwMDGB8fBzVapX1y+zs7MDv9yORSGBpaYnp9c/Cgt0PHMexUbMTExOYnJyEXq9/aPpnuVxmqj8KLL268yajRJFIhPHxcUxNTcFiseDy5cvQ6XRwOBwwGAxsjTSbTRiNRjZzfGZmBjKZDEajEQKBANevX0cul0MsFoPX64VOp8Prr7/OZstTUfXu3bsIhUJIpVLHfAcOFkrl6PV6TE5OQqfT4aWXXsLY2Bjz/qNiPtDdzLd7DdHQMKlUCq1WC71ej0ajgWKxeKTXdJSYzWbWu/fiiy/CZDLh8uXLsFqtkMlkT+zzIZFNJpPB5uYm7t69i0QigQcPHiAejx+rs/SxBhexWMx2zC+88AL6+/thtVqf+HkikYjNl+icO0IRnPovFhYWsLKyguXlZaagOkhZZa/DcRycTif6+/sxOTmJ8fFxNtmzk0qlglAohEAg0POnFgouMpkM09PTeOedd2A2m5lh4l5OCPQSnJ6e7vJko91io9HA5uYm7t27B6VSiVdeeQU2m42ttVQqhbm5Ofj9/lMZXKRSKcxmM1599VU4nU689NJLmJiYeKKrxG45LZ18SCVJTtKnFXIdmZycxNDQEP7Tf/pPsNlsTGG4H0hlGggEcOvWLfzud79jJr/HLWw61uDSabv9KHvpzk7nx8nmyEIF+E7Kp9fr4XQ6Ua1WMTExgWQyiZ2dHaRSKT7I4NuHWavVwmKxQKfTMScE+hlQeiKXy7FBbce9YJ8X2mVrtVrYbDaYzWZ27UKhkG1MKEVDKQu6L7RGKVVBn6fVarucrMm7qVAoMEsjKqaeJmicOLlnUDqwc8e9+3l9VPMfBReqwYpEIqawOwjRynFD4hFKHcrlcoyNjeHcuXNwu93MnfxRc5s6oXQ5+YKRjVahUGAy5OPmRNRciL1e9o1GA+FwGIVCgRX79oLmkUilUhgMBkilUgwNDbHcr9lsRiwWwz//8z/j/v37rG/kLMNxHDweDy5evIj+/n6m8qGFTcowr9d7atI6MpkMExMT6Ovrw8WLFzE1NQWxWAyJRMJeZKSGy+fz4DiOea2RRJTy453zdpxOJ0wmE+tzAYBIJILt7W0sLS1hZ2cH8Xi8J6ZQPg1KpRJms5ndT7fbzWb+dNY6O9V0j5qEyHEc5HI57HY7fvGLXyCfz+NXv/oVEokEisUi68voVWjdaLVavPLKK3C73bhy5QquXr0KuVzOVGH78RCs1+vMnPePf/wjPv74YxSLRTYv5yTcp2MNLp0FayrEZ7PZrptbqVTYbG6yhd4L6l4n08dWqwWJRAK1Wo16vQ6n0wmRSMQkoiTp7eWd0PPQuUvU6/Vst9m5qyyXy0ilUuyFSy6/vQydMsiUk+TCZDeSzWaRSCRQqVSQzWbBcRyazSYbM0u/qtUqU5vR6aZTZde5tk/Cg37Q0FpRKBQwm81snLNare7yTiNlHL00d89z2utUQ3OJaMNIKfBsNrtnt3qvQGUAOjW7XC42wG930f5J19fpAkFFfFrDJ4VjDS7U+Le+vo7/83/+T9f8EqJeryMajaJcLqNcLj/ytNHZeDUzM8OUP1RHGB4ehtFoxPT0NCqVCgKBANbX10/lg/8kxGIxNBoN9Ho9RkdHMTMzA5VK1bXAW60W7t27h08//RQ7OzuIxWIoFos9v/OWSCQYGhrC+fPnmXgkm81idXUV2WwWt2/fxsbGBtsFAt82mFIjJO28qYt8bGwMNpsNg4ODuHDhAmsMFAgEsNvtUCgUaLfbuHTpEsLhMLa3tx/pTN0rcBzHnCPefPNN/OxnP4PRaITdbmf9QgCwvr6Ozz77DAAwODgIjUaDvr4+uN3ux3596iMSCoUYGxvDG2+8gXA4jG+++QaFQgHZbPYhK6RewOl04o033oDFYsErr7wCl8vFhCFP6xVGEnpaZ319fWys+0lJ9x9rcKGmwWg0in/7t39jx8ZO/Xuj0UAmk2HNZ4/SvctkMrYLr9VqcDqdMJvNGBsbg1QqZUaXLpcLkUgEhULhzA7JohNL5w5qd72r1WphZ2cHX3/9NTu5nIaeA5FIBIvFgr6+PjYmu1gswufzIRqN4s6dO5ifn0ehUEA6nUar1epKVVDdhYxVX331VTbxc3p6uqvrnHby6XQa/f39EIlEiEajPR9c6MSiVqsxOTmJt956i11354sxFovh5s2bAL5VNdH8JZfL9cRnj4K5zWbDxMQEZDIZtre3IRQKe1Y9Rj6Jdrsdk5OTsNvtXX//NF5hNJ6g0WgwyTL51Z0UTkTNhfoJqLu+s2hMHadPSi+QBUqhUGBjVy9fvtz1MUKhkMkjI5HIifpBHAWU0nG5XHjjjTfgcDjg8Xi65sVQIxvVHKjW1YtpiE6kUilUKhXMZjP7JRQKkUqlEAwGcfv2bTb6gZr36Jp3z3wHvnOlNZvNGBwcZPWWer2OWCyGSqXChADNZhOTk5MwmUyIRqMoFouoVCo96y8mkUjgdrtht9thNpsfMqMl+f/q6iqSySRTPkkkkn11mhN0f8fGxiASibCxsQG5XI5sNtszKjKhUAiXywWz2Yzz58+zDMrjmiJJUEJCGoFAwJwzFAoFGzMCfGeZlc/n8eDBA4TDYdZQftzP7IkJLqVSCQKBYM8TxX5yrNR0VavVsLS0BLVajddee63ruCkSiVj3dSAQOHOzIsiVd2pqCv/jf/wPuN3uh7T0rVYLmUyG5XGpO/2kHLWfFYVCAafTydIybrcbiUQC4XAYy8vLePfdd+H1evf0ZnuUQ7RQKERfXx9mZmZgNpvBcRwbc5xMJqFWq6FUKiGRSPDKK68gn8+zSX+pVKpn/cWkUimmpqYwNjYGj8fDni/aJM7NzWFubg5erxehUAgajQYCgYAJRvaLQCBAX18fXC4X9Ho9vF4vgsEgAoEAotHoYV3egSISiXDu3DlcvnwZk5OTuHLlCkuz7gXJ22u1Gnw+H27dugWO4zA2Nga9Xt81wwr4NmBfvHgRLpcLMpmMnbrJXeI4ORHBheh8mJ/n88nWe69dUud0x7MEjdi1WCwwmUxQq9UPdUxTETaTySCdTrMC/mmY2UIjH+gXx3FMSELTDverHhSLxTCZTDAYDMz7SSgUIpvNslGxsVgMGo2GdV3TkDAytKxUKmx99lqA2at1oPOUR6PLK5VK11wm8hnbvXmkXiHgO6EA1VyoxkWzcNrtNmw2GxvFWygUTuTa7Eyf6nQ6WK1W6PV6pjjcTafBbyKRQCqVYt31ZGBbqVSgUChgsVi6TtJKpRL1eh1GoxFWqxVSqbTrnh4XJyq4HAQymQz9/f2wWCwwGAx79s30mqHl80ILfWxsDK+++iqGhoYe6sKn+5LL5XDnzh34fD5W5D4N94tkrlRwFggESCaTWF1dhdfrfap6ksViwdtvvw2Hw8Hkt+FwGLdv30YwGMQ///M/w+v1MnfksbEx/PVf/zVkMhk8Hg84jsPi4iJrdOu1EwwFkN0GpmTyGYvFsLW1BZFIhIGBAVitVkxOTmJ0dLRr1w18+zIlU0Xa9MlkMthstq7UEd3zXC4HnU6HtbU1PHjwADdv3jz2l+hekOhBrVZjenoar732GrRa7SP9EimlWCwW8f777+Orr75CPB7H1tYWJBIJlpaWYDAY8NOf/hSDg4Nd/w4p9S5duoRMJoNQKIT33nvv2GdanZrg0jkSWavVwmg0PrSQafGfFc8igmTHOp0OHo8HVqsVIpGoa8fX6agai8UQDAaRyWRORREf6LZ/p1NrtVpFLpdjxqBPgtaYSqViqTXKn9NLMhAIYGtrC1tbW+zlIpPJ2FRUuVzODArJxbvXan+Peo5Ifk0miTRygGYE6fV6AN915tOao45yyjjQ16WUNgkInE4n9Ho9+vr6UKlUEA6HT2wGgoIk/bxtNhukUukjv18a005NkYuLi2w8g0QigVQqZelUStvSyVcmk6HdbsNkMqG/v5+NTD9uej64UBObXq+HzWaDzWbD22+/DY/Hg9HR0a6FXKlUsLy8jNnZWWxubp4JGbJUKoXb7YZGo8GFCxdw8eJFaDSah+wlOu257927h7W1NYTD4WP6rk8WFFRGRkYwMjKCwcFB5gMlk8mQTqexurqKjz76CNFoFKlUivUJtVotrK+v4ze/+Q0UCgULJIlEgqV9ei24iEQimEwmOJ1OaLVa9oxRzTObzSIajcLlcuH111+H2WxmNk10rdVqFYlEArlcDh988AHm5uaYpNtoNMJgMLCJlTS1kk42NH6i0Wiw9NxJ2yyqVCpMTk7CarXC4XAwH8RH/azD4TA++OADdgKmse9UO0kkEmw+yxdffAGj0YixsbGuDIROp8PIyAiEQuFDG+vjoKeDC9kpUA58YmIC/f39+P73v4/h4eGuHyTtytfW1nD79m0kEokTtyAPA7FYzObjTE5OsjHRu8nn8/D5fNja2sL8/DxWVlaO4bs9mdCLbXh4GG+++Sb6+vpw5coVqFQqpFIp5HI5bGxs4LPPPmOpIlI90rArr9cLsViM/v5+GAwG5HK5ng0uHMex3bharWZTNjvtglKpFBQKBa5fv85Oap3XSQaz0WgUn376Kf74xz9icnISL730ElwuF6ampqDT6dgz3hlc6vU665Gj4HLSGisVCgXGxsZYo+STXvbRaBS//e1vsbGxwYIu0Wg0mIXQ8vIydDodBgcH0d/f3xVc1Go1hoaG2Ayo4+bQg4tYLO5SRpAa4nle7LTQxGIxBgcHmf0E7RTIgJAWXD6fRyAQQCKRQCQSYdPYTtJiPCw4joNOp4PZbGb3hWi32yiVSmg0GgiFQlhaWkIgEOhZiezj6HSBIP8wKrBT4b1cLnftlum/TSYT5HI5pqen4fF4mIy5Xq9jZ2cHgUAAXq+Xfd3d64rSSAKBgI2DKBaLTDLaa5scCpzFYpFJtikISKVSjI6OMmdkEjJQACAoCGWzWVSrVbTbbRQKBYTDYYhEInZ/dr87yMm7Wq0imUxCq9Wywv5Jqr2IRCJWYJfJZHtuINrtNtLpNCveZzIZppqVy+VoNpuo1+t7pnQBsJRh5/0nAYXJZILVakWhUDi2vqBDDS6kUCJVkkAgQKPRYDLMZ4WKsxqNBn/5l3+Ja9euwW63Y3BwsGuwDpkP+v1+/OEPf0AoFML9+/eZQ/JZCC4SiQR9fX0YGxuDyWR6qFEykUggnU7j5s2b+Kd/+idkMhnE4/Fj/I4Ph2KxiEAgAIFAgGw2i0qlAplMBrfbjWq1yqScBoOBKelIDXbt2jVmi261WtmJI5/P48aNG/jiiy+YY/SjlHVkBROJRBCLxZhxai/OGqIxAjTnpt1uQygUslEGf/3Xf43XXnsNer0eOp2OnTwAsOumoX7kGwgA8Xgcd+/eRSqVQjQahcViYaOPCYlEgqtXrzI3hOXlZSSTSfh8vhMVXJRKJcbHxzEyMgKz2fzIj1tfX8fXX3+Nzc1N+P1+JJNJVquj2hUFm87RBcB3wQX4NlDRRp6yOACwtraGra2tw73YR3DowUUmk0GtVrPIS30EIpGIFQVpZ7efrlTaHdHCtdlscDqdsFgsXYN1aHdVKpWQTqfZFMDT4I+1HziOg0QiYVJYvV7/0FGZdou0eyIPt5P0kB4UlBatVCooFovshUZOBdSn0inTNplM0Ol0cLlcsNls0Gg0UKlUqNVqyOVy7AUbDoeZqu5xa5ik3r0O9aXlcrmuhmfaVZPjr0wmY532tMOmZ56mJnZuNGmSbC6XQyaTQSaTeUjVSMV9cmLWaDTM5+0kQe++x/W0AGD3AwAzr9Tr9dBoNCgWiywVqNPpWJ8auZjsFgdQsKGx3U/bV3TQHGpw4TgOo6OjmJychMViwfDwMBqNBhtkE4lEEAqFUCqVEAqF2PF4LwQCARwOB5xOJ+x2O1544QUYDAZcvnwZHo+n62bTD4zG0m5tbeHLL79EOp3ueeuN/WK32zE9PQ2Hw4FXXnkFw8PDLIdN1Ot1LC0tYW5uDg8ePGC9Cac1uNBGY3Z2FvV6HR6Ph43k7evrQ7VahVQqZTtA2imazWYWmEulEnw+Hz766COEw2H8+c9/hs/nOxVjn/dLpVLBwsICwuEw3G43Wq0We/bo5U/KqN01pUwmg2QyiQcPHuC9995jIhIAXWrFDz/8EA8ePMDbb7/d1dfRic1mw7Vr1+D3+xEMBk9U1/6jUlm7GRkZgVarRSKRwNDQEEqlEqxWK3Q6HXK5HOLxONv00Eh3i8UClUrFVGJ7pWFPAocaXIRCIcxmM4aHh9Hf34+rV6+iXq9DJpMhFApBqVQym/N4PM7yz4+6OVqtFn19fRgYGMDLL78Mk8kEu90OrVbLPobSDI1GA8FgkA1p2tzc7FlPomdBq9ViZGQELpeLFf+IzoatcDiM9fV1FuRPY2ABvkvHUHpMJpPBarWy+snAwMATv0alUkG5XEYikcCdO3fg9/uxs7ODdDp9BFdwcqjX6wiFQshms0wZ10nnbKVOSEGXTCYRCoWwuLiIUCjE/p5+Rvl8HktLS4hGo5iZmXnk96FSqeDxeNBqtfY9XOuooFNE56ltL0wmE0wmE3K5HJRKJarVKhwOB/R6PbLZLCKRCDiOg8ViYSc2mhcEPH/j+WFyqMGl2WxiZ2eH5actFgtkMhkcDgfMZjMcDgfGx8eRzWaxubnJpJt73SiBQICBgQEMDAzAbDYzpQot4lqthlKpxMYb53I53Lt3D8vLy8yO+iwgk8kgFovhcrlw6dIlWK1WZllO1Go1lnagCZOZTOZELtCDplarYX19Hblcjr0EtVotPB4P5HI522lXKhXkcjnmWFCr1RAIBBAIBOD3+7G+vo50On0qxQ9PolNmHQgEsLi4CK1WC4fDsWeTIPWyVCoVzM7O4vbt29jZ2XnkvaOUNnncUdprd3qJPu55BUKHQTabxddff41QKITr168/cTKnWCyGxWJBo9GARqNh40KoWE/uBo9LsRE0VmKvXr+j5FCDS6PRwNLSEjY2NpBMJuF0OmG1WnHx4kWYzWZ2yigUCvB6vUzC+ajgYjabYTKZ2PS7ziN3uVxGPB5HPB7HJ598gkAggHv37mFhYeHEDM85bMgKgkYMfP/734der39ogZXLZfj9ftYBvL29fSr8w/ZDuVzG3NwcxGIxUyt5PB5oNJquojQZoObzeWxtbSGdTuPOnTu4c+cOm3NzEswBjwN6ZsvlMtbX13Hz5k3W4LhXcGk0GojFYshkMvj888/xm9/8hhmjPurrl8tliMVilEolpuLbnWKjfpeTmJJMJBJ47733YDQaodfrMTY21jXBdDfk2E5QzYayMo8LTLsRi8UwGo3I5/Ndytmj5tClyPQA5nI5RCIRAN9OONRqtRCLxZDJZGi1WtDr9U9UkKnVavaipLpKoVBgDVnBYBDJZBKBQACRSITtPM8KQqGQDViiomrncKbdSh2y3XiUhPY0QkV1SscGg0G0220sLS1Br9ezeks6nUYgEEC5XIbP50Mul0MsFmNF7F6UEB80rVYLuVwOfr+fqfCoViUSiVCr1VAul1EsFhEOh5FMJtlUycfdP2pXKJfLyGQyiMViXTt3siPqPN2ctLXbaDRYL1MqlUI8HmcK171qMLuDR6c7wX4hV/h4PI5UKsVGlRwXhx5cSB3m8/nw8ccfsz6UfD4Pu93OBgw5HI4nPqzUf1CpVJBMJlEqlfDNN99ga2uLHc/L5TIbLnbWUhYikQjnz5/HzMwMZmZmmFqHFmitVkO1WsXGxgb+8R//EX6/H36/n7monhVoTa6trSEYDEIqleL9999n94ok8/TSopnk1DNAQfqs0263ma0+DU1zuVzo6+uDyWRCIpFgUuGbN28iHA5jaWkJpVLpsbVValfI5/OYnZ2FWq3GwMAA3njjDfbuoMJ/KBRCPB4/cTZFtVoNkUgE2WwW9+7dg1KpZKOgSexw0M2zwWAQs7OziEQiTB4fDoePLfAeenChNFepVEIkEmHGdnq9HkqlEkajkSkr6MHePTujcw43NRaRZJG8nHZ2drC6usrmZJyFNFgn5KtmMBjgcrlgMBgeUqrQCzObzWJnZwder/dUF/EfBa3JQqHAJMk+n++Yv6vehE5yKpUKsVgMMpmMjc2meSTxeBw+nw+hUAjpdPqJ641OLmR74vf7IZfLUSwWIRQKmYs1jd4uFosn7nknu6lWq4V4PI5QKASFQoFKpdLl+vy0AWavoEybnWw2i1AohHA4zO77cW6wj8z+pVKpsIt99913cfPmTbjdbvT19UGlUrFOVrPZDI1GA4VCAb1ej3q9zhrUyIo6lUphZWUFuVwOOzs7iMfjyOVyKBQKp8LB92lRKpVs5sWlS5eYTLszv9tut+H3+7G2toaFhQXmUnDWAgvPwUJD+gKBAP7lX/6Fjc9WKpXIZrOIxWIolUrw+/0oFotPJRdut9vY2dlBpVLBgwcPMD8/D4lEwuTykUiEbZBOapai2WxiYWEBqVQKg4ODSCQS0Ov1mJqaYgX33b08u6FAVa/XWV2ZrHbo/UhD71ZXV5kjCZUMjosjCy40ACeTySAajUIoFHY5y05MTDD5rN1uZzbSpNIhG+/t7W1EIhHcvn27y8rjLCOXy9Hf38+szaenp5kMkmi324hEIpibm8Pm5uZDDXA8PM8CuWBQk/Jeg/6elXa7zRR6AHDjxo0D+9pHRbPZxMbGBjY2NuD1elEoFFhDLmVrnhRcSJ1XqVTYBrFWq6FQKKBSqeDevXvw+XwsmJOA6bjvz5EbV5JCjNIS8XicSQ0VCgXS6TT0ej3UajXMZjNqtRo2NzeZ5jsSibCu3rNmnf8oOg08O0cWA98G9VgshmKxyBZ5OBw+U0IHnqPjMF9ox/2yfF6oWbxUKuHmzZvY2dmBUql8yNRzN81mk4kggsEggsEgGo0GM0aNRqNseFqnrdBxcyyuyJQfJVWDUCjEwsICe0mS5QHHcUzdQzskCihkmHcSbuJxQxPvqMel88RSKpVw+/Zt+P1+fPnll/i3f/s31gzIw8NzdJCzMcdxuHnzJju57GcmDQWMRqPBMjW0sa7VaqwccJI228dquU8BA8CxSuZOA7uLg7SzIQltKBRii5s/8fHwHD2d77uz4BbS0/NceB5NOBzG/Pw8IpEI3n//fWxvbyORSDD/Nv7Ex8PDc5jwweUUQUGDmla3traYgmR7e/tMKul4eHiOBz64nAJKpRLW19eZCu/u3buIRCJYW1tDJpNBOp0+MUU+Hh6es4Ggvc83Tq+NYj1MnuUlfdj3j2ouND+jUzVyEmSJnZzE+9dLPOvPkr+H38GvwedjP/ePP7mcEijdddI6lXl4eM4m+z658PDw8PDw7JcnC6x5eHh4eHieEj648PDw8PAcOHxw4eHh4eE5cPjgwsPDw8Nz4PDBhYeHh4fnwOGDCw8PDw/PgcMHFx4eHh6eA4cPLjw8PDw8Bw4fXHh4eHh4Dpz/D1otIm3dTkZTAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "X = batch_iterate(25, train_images)\n", "for x in X: \n", " show_images(x)\n", " break" ] }, { "cell_type": "code", "execution_count": 262, "metadata": {}, "outputs": [], "source": [ "z_dim = 64\n", "gen = Generator(z_dim)\n", "mx.eval(gen.parameters())\n", "gen_opt = optim.Adam(learning_rate=lr)\n", "\n", "disc = Discriminator()\n", "mx.eval(disc.parameters())\n", "disc_opt = optim.Adam(learning_rate=lr)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Training Cycle" ] }, { "cell_type": "code", "execution_count": 263, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ " 0%| | 0/200 [00:00