diff --git a/resent.ipynb b/resent.ipynb index 36c748d..a669201 100644 --- a/resent.ipynb +++ b/resent.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": null, + "execution_count": 82, "metadata": {}, "outputs": [], "source": [ @@ -36,17 +36,39 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 83, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "Text(0, 0.5, 'Weight Gradients')" + ] + }, + "execution_count": 83, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], "source": [ "# Choose an activation function\n", - "activation = torch.tanh\n", + "activation = torch.sigmoid\n", "\n", "# Choose a number of iterations\n", "n = 500\n", "\n", - "\n", "# Store the feed-forward steps\n", "w_list = []\n", "z_list = []\n", @@ -56,13 +78,13 @@ "z_obs = torch.tensor([1.0])\n", "\n", "# Initial value\n", - "x = torch.randn((1,),requires_grad=True)\n", + "x = torch.tensor([0.1],requires_grad=True)\n", "z_prev = x\n", "\n", "# Loop over a number of hidden layers\n", "for i in range(n):\n", " # New weight\n", - " w_i = torch.tensor([1.0],requires_grad=True)\n", + " w_i = torch.tensor([0.01],requires_grad=True)\n", "\n", " # Linear transform\n", " a_i = z_prev*w_i\n", @@ -70,7 +92,6 @@ " # Activation\n", " zprime_i = activation(a_i)\n", "\n", - " #TODO: replace the line below with one that would add a skip connection\n", " z_i = zprime_i\n", " # Store forward model stuff\n", " w_list.append(w_i)\n", @@ -102,9 +123,39 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 84, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "500 500\n" + ] + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 84, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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7LXXXvzkJz+ZkNjX13XXXceDDz7YP//5z3+en/3sZzWMSJKmoP5xombUNo5JMGX72NTanXfeyQ033MC9995Le3s7zz//PKtXrx5xmzvuuGNMx/j7v/97nnnmGe6//37a29t59tlnueWWW8YT9rhdd911HH744cybNw+A8847r6bxSNKUVNBxosCKTc0888wzzJo1i/b2dgBmzZrFlltuOWCdV155hUMPPZTLL78cgGnTpgFw88038+Y3v5l3vvOdzJs3j9NOO42+vr4B265atYrLL7+cr33ta/3HePWrX8173vMeAK666ioWLFjA/PnzOeuss/q3mzZtGueccw677bYbe++9N88++ywAJ510EmeccQb77rsv22+/Pddcc03/Nl/+8pfZc889WbhwIeeee25/+5VXXsnChQvZbbfdeN/73scdd9zB9ddfz6c//Wl23313Hn30UU466aT+ff385z9njz32YMGCBZx88smUy2Ugq2Cde+65vP71r2fBggU8/PDDANxyyy3svvvu7L777uyxxx4sX758PE+JJE0d5c5sWsA+NlZsgH/4jwd48OmuCd3nvC035dx3vG7Y5YcccgjnnXceO+20EwcddBDvfe97ectb3tK/fMWKFRx77LGceOKJnHjiiWttf9ddd/Hggw+y7bbbcuihh3LttddyzDHH9C9fsmQJc+bMYdNN137RPv3005x11lncc889bL755hxyyCFcd911HHXUUaxcuZK9996b888/nzPPPJPLL7+cz33uc0CWjN122208/PDDHHHEERxzzDHcdNNN/OEPf+Cuu+4ipcQRRxzBrbfeysyZMzn//PO5/fbbmTVrFi+++CJbbLEFRxxxBIcffviAWCHrzH3SSSfx85//nJ122okTTzyRb3zjG3ziE58AssTv3nvv5etf/zoXXXQR3/rWt7jooou49NJLedOb3sSKFSvo6OgY25MkSVOVFRtNtGnTpnHPPfdw2WWXMXv2bN773veyePHi/uVHHnkkH/jAB4ZMagD22msvtt9+e5qbmznuuOO47bbbRn3su+++m/3335/Zs2fT0tLCCSecwK233gpAW1sbhx9+OABveMMbePzxx/u3O+qoo2hqamLevHn9lZybbrqJm266iT322IPXv/71PPzww/zhD3/gv//7vznmmGOYNWsWAFtsscWIMT3yyCNst9127LTTTgC8//3v748J4Oijj14rpje96U188pOf5OKLL+bll1+mpcU8XZJGpb+PTfESGz8JYMTKymRqbm5m//33Z//992fBggV85zvf4aSTTgKyD+2f/OQnHH/88UNemTO4bfD8DjvswBNPPMHy5cuZPn3gkPQppWFjam1t7d9Xc3MzPT09/csqp7Sq95FS4jOf+Qwf+tCHBuzn4osvHtMVRSPFVH3s6pjOPvtsDjvsMG688Ub23ntvfvazn7HLLruM+piSNGVZsdFEe+SRR/jDH/7QP3/fffex7bbb9s+fd955zJw5k4985CNDbn/XXXfxxz/+kb6+Pn74wx+y3377DVi+8cYbc8opp3DGGWf0d0p+5pln+N73vscb3/hGbrnlFp5//nl6e3u56qqrBpwGG4u3vvWtXHHFFaxYsQKAp556imXLlnHggQdy9dVX88ILLwDw4osvAjB9+vQh+8LssssuPP744yxZsgSA7373u+uM6dFHH2XBggWcddZZLFq0qL/vjSRpHcr5+3ABKzYmNjWyYsUK3v/+9zNv3jwWLlzIgw8+yBe+8IUB63zlK1+hVCpx5plnrrX9Pvvsw9lnn838+fPZbrvteOc737nWOl/60peYPXs28+bNY/78+Rx11FHMnj2b17zmNVxwwQUccMAB7Lbbbrz+9a/nyCOPXK/Hccghh3D88cezzz77sGDBAo455hiWL1/O6173Os455xze8pa3sNtuu/HJT34SgGOPPZYvf/nL7LHHHjz66KP9++no6ODf/u3fePe7382CBQtoamritNNOG/HYX/nKV5g/fz677bYbG220EW9729vW6zFI0pRTLm7FJtZ1CqAIFi1alH7zm98MaHvooYfYddddaxTR+Nx8881cdNFF3HDDDbUOZUpo5NeKJA3p/34W7v0OfPapWkey3iLinpTSosHtVmwkSZpqyp2FrNaAnYcbUqXDsSRJ66VUzHGiwIqNJElTT3k5tE2rdRSTwsRGkqSpJvVBUzFP2pjYSJKkwjCxkSRJhWFiU0MRwac+9an++Ysuumite9mM5Nlnn+Xwww9nt912Y968ebz97W8HssvBK8MiVLv++uu58MILxxTj73//e97+9rezww47sOuuu/Ke97ynfziFWvnHf/zHAfP77rtvjSKRJNUbE5saam9v59prr+X5559fr+0///nPc/DBB/Pb3/6WBx98cJ1JyxFHHMHZZ5896v2XSiUOO+wwPvzhD7NkyRIeeughPvzhD/Pcc8+tV7wTZXBic8cdd9QoEklSvTGxqaGWlhZOPfVU/uVf/mWtZX/605848MADWbhwIQceeCBPPPHEWus888wzbL311v3zCxcuXGudu+++mz322IPHHnuMxYsXc/rppwNw0kkncdppp/GXf/mX7LTTTkPe7O/73/8+++yzD+94xzv62w444ADmz59PqVTiAx/4AAsWLGCPPfbgF7/4BQCLFy/m6KOP5tBDD2XHHXcccNfkadOmcc4557Dbbrux995791d+nnvuOd71rnex5557sueee3L77bcD2d2ZK8dYuHAhP/rRjzj77LN55ZVX2H333TnhhBP69wvZeFOf/vSnmT9/PgsWLOCHP/whkFWw9t9/f4455hh22WUXTjjhhP6xqc4+++z+uz//3d/93bDPlSSpMRSzS/RY/eRs+PPvJnaff7EA3rbu0z4f/ehHWbhw4VrDJpx++umceOKJvP/97+eKK67gjDPO4Lrrrltr2/e+971ccsklHHTQQXzgAx9gyy237F9+xx138LGPfYwf//jHzJkzZ8Bo2QCPP/44t9xyC48++igHHHAAS5YsoaOjo3/5/fffzxve8IYh47700ksB+N3vfsfDDz/MIYccwu9//3sgG/fqf/7nf2hvb2fnnXfmYx/7GNtssw0rV65k77335vzzz+fMM8/k8ssv53Of+xwf//jH+du//Vv2228/nnjiCd761rfy0EMP8cUvfpEZM2bwu99lz81LL73Eu971Li655BLuu+++tWK69tprue+++/jtb3/L888/z5577smb3/zm/7+9+w+uqj7zOP7+EIIJ2wVEBbH4A22WJeAlSmRFHGKxA2IztO5QLNliYYpM1zirUztO67huuzO7s+vOdjTSynSrxnFpg06lW2BGK7DAgCmQCIgUnBU2WkZnQRY0rNUKPPvHPclcQsD8uvfCzec1k7nnPOece588ySTPfM/33i8A27dvZ/fu3Vx22WVMnTqVzZs3U15ezooVK9i7dy+SOHr06Gf+vMzM7NzmEZs8GzJkCHfddRd1dXWnxBsbG6mpqQFg/vz5bNq06bRrZ86cyf79+7n77rvZu3cv1113Xfttoj179rB48WJWrlzJFVdc0elrz507lwEDBlBWVsbVV1/d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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], "source": [ "# Store the feed-forward steps\n", "w_list = []\n", @@ -112,21 +163,19 @@ "a_list = []\n", "\n", "# Make up some data\n", - "z_obs = torch.randn((1,))\n", + "z_obs = torch.tensor([1])\n", "# Initial value\n", - "x = torch.randn((1,),requires_grad=True)\n", + "x = torch.tensor([0.1]) #torch.randn((0.1,), requires_grad=True)\n", "z_prev = x\n", - "# Loop over a number of hidden layers\n", - "\n", "\n", + "# Loop over a number of hidden layers\n", "\n", - "skip1 = #TODO\n", - "skip2 = #TODO \n", - "\n", + "skip1 = 60\n", + "skip2 = 30\n", " \n", - "for i in range(1,n+1):\n", + "for i in range(1, n+1):\n", " # New weight\n", - " w_i = torch.tensor([1.],requires_grad=True)\n", + " w_i = torch.tensor([0.01], requires_grad=True)\n", " \n", " # Linear transform\n", " a_i = w_i*z_prev \n", @@ -137,11 +186,10 @@ " # TODO: replace the line below with one that would add a skip connection\n", " \n", " # use the .add(tensor) method\n", + " z_i = zprime_i.add(z_prev)\n", " \n", " # think about how we would skip multiple layers using MULTIPLE skip lengths in this instance (hint, use branching and the modulus operator)\n", - " \n", - " # We found the results to be VERY non-linear\n", - " \n", + " # We found the results to be VERY non-linear \n", " \n", " # Store forward model stuff\n", " w_list.append(w_i)\n", @@ -163,13 +211,14 @@ "for i in range(len(w_list)):\n", " grad = torch.abs(w_list[i].grad).tolist()[0]\n", " w_grad.append(grad)\n", - "\n", + "print(len(w_list), len(w_grad))\n", "#w_grad = sp.savgol_filter(w_grad,5,3)\n", "plt.semilogy(w_grad,label='Skip Connections')\n", - "plt.semilogy(w_grad_init,labl='No Skip Connections') #compare to previous network\n", + "plt.semilogy(w_grad_init,label='No Skip Connections') #compare to previous network\n", "plt.title('Hidden Layer Gradients of a FNN With Skip Connections')\n", "plt.xlabel('Hidden Layers')\n", - "plt.ylabel('Weight Gradients')\n" + "plt.ylabel('Weight Gradients')\n", + "plt.legend()" ] }, { @@ -196,7 +245,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 85, "metadata": {}, "outputs": [], "source": [ @@ -237,7 +286,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 86, "metadata": {}, "outputs": [], "source": [ @@ -278,7 +327,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 87, "metadata": {}, "outputs": [], "source": [ @@ -311,7 +360,7 @@ " # Compute the loss\n", " loss = criterion(outputs,t[:,0])\n", " # Use backpropagation to compute the derivative of the loss with respect to the parameters\n", - " loss.backward()\n", + " loss.backward(retain_graph=True)\n", " # Use the derivative information to update the parameters\n", " optimizer.step()\n", "\n", @@ -348,7 +397,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 88, "metadata": {}, "outputs": [], "source": [ @@ -356,14 +405,38 @@ "num_classes = 10\n", "device = torch.device('cuda:0' if torch.cuda.is_available() else \"cpu\")\n", "num_epochs = 50 #how long to run the model\n", - "num_layers = 10 #how many convolutions to perform" + "num_layers = 20 #how many convolutions to perform" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 89, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0 2.3133785724639893 Train_Accuracy = 10.7 Test_Accuracy = 9.0\n", + "10 0.47696006298065186 Train_Accuracy = 84.96666666666667 Test_Accuracy = 81.2\n", + "20 0.450020432472229 Train_Accuracy = 87.46666666666667 Test_Accuracy = 84.6\n", + "30 0.4167223274707794 Train_Accuracy = 89.46666666666667 Test_Accuracy = 83.39999999999999\n", + "40 0.19259141385555267 Train_Accuracy = 91.93333333333334 Test_Accuracy = 83.8\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], "source": [ "trainacc_init, testacc_init = train_model(num_epochs, Net(num_input_images, num_layers)) #train the model for a hundred epochs\n", "\n", @@ -382,14 +455,13 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 90, "metadata": {}, "outputs": [], "source": [ "# basic net class\n", - "skip1 = # TODO fill in SKIPS\n", - "skip2 = #\n", - "\n", + "skip1 = 2 # TODO fill in SKIPS\n", + "skip2 = 9 #\n", "\n", "class ResNet(nn.Module):\n", " def __init__(self, num_input_images, num_layers):\n", @@ -399,7 +471,7 @@ " self.num_layers = num_layers\n", " super(ResNet, self).__init__()\n", " self.conv1 = nn.Conv2d(1, 1, 3, padding = 1)\n", - " #self.linearization1 = nn.Linear(28,28)\n", + " # self.linearization1 = nn.Linear(28,28)\n", " self.linearization2 = nn.Linear(5*26*26,10)\n", " self.convout = nn.Conv2d(1, 5, 3)\n", " self.linears = nn.ModuleList([nn.Linear(28,28)])\n", @@ -414,16 +486,13 @@ " # convolution\n", " self.conv1(zprev)\n", " for i in range(1,self.num_layers-1): #loops over a set number of blocks conv to relu\n", - " \n", - " #ai = self.linearization(zprev)\n", " \n", " ai = self.linears[i](zprev)\n", " \n", " # TODO: Implement skip connections in a similar fashion to what was done previously.\n", " # Think carefully about your skip intervals, and what should be used where\n", " # hint: use the lists defined as a class object, the modulus operator, and the .add() method\n", - " \n", - " zi = F.relu(ai)\n", + " zi = F.relu(ai).add(zprev)\n", " zprev = zi\n", " self.z_list.append(zi)\n", " self.a_list.append(ai)\n", @@ -439,9 +508,33 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 91, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0 96.71118927001953 Train_Accuracy = 26.900000000000002 Test_Accuracy = 40.6\n", + "10 1.858709454536438 Train_Accuracy = 87.86666666666667 Test_Accuracy = 81.0\n", + "20 0.24695934355258942 Train_Accuracy = 93.06666666666666 Test_Accuracy = 82.19999999999999\n", + "30 0.20022839307785034 Train_Accuracy = 97.53333333333333 Test_Accuracy = 81.8\n", + "40 0.28797584772109985 Train_Accuracy = 96.43333333333334 Test_Accuracy = 83.8\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAh4AAAIICAYAAAAhTOfMAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8li6FKAAAgAElEQVR4nOzdd3gU1frA8e9udpPspmc3vSeUQACli3QUKYIVf4pd7GDDgl69CsK9FrBgheu1cK9eQYoVBenSBKQTSiCk1002ySbb2/z+GAxEAiQQQjuf59lnsrOzs2eWZeadc95zjkKSJARBEARBEFqD8lwXQBAEQRCES4cIPARBEARBaDUi8BAEQRAEodWIwEMQBEEQhFYjAg9BEARBEFqNCDwEQRAEQWg1qnNdAAC9Xi8lJyef62IIgiAIgtBCtm3bVilJUsRf158XgUdycjJbt24918UQBEEQBKGFKBSK/MbWi6YWQRAEQRBajQg8BEEQBEFoNSLwEARBEASh1YjAQxAEQRCEViMCD0EQBEEQWo0IPARBEARBaDUi8BAEQRAEodWIwEMQBEEQhFYjAg9BEARBEFqNCDwEQRAEQWg1IvAQBEEQBKHViMBDEARBEIRWIwIPQRAEQRBajQg8BEEQBEFoNSLwEARBEASh1Zwy8FAoFJ8rFAqDQqHIPGZduEKhWK5QKA4dWYYd89rfFApFtkKhyFIoFMPOVsEFQRAEQbjwNKXGYw4w/C/rXgBWSpLUFlh55DkKhaIjcBuQceQ9HysUCp8WK60gCIIgCBe0UwYekiStBar+svp64D9H/v4PcMMx6+dJkuSQJCkXyAZ6tVBZBUEQBEG4wJ1ujkeUJEmlAEeWkUfWxwGFx2xXdGSdIAiCIAjnEbfHi8PtafXPbenkUkUj66RGN1QoHlIoFFsVCsXWioqKFi6GIAiCIAh/5fJ4WXuwgr99u5ter63k+x3FrV4G1Wm+r1yhUMRIklSqUChiAMOR9UVAwjHbxQMlje1AkqRPgE8AevTo0WhwIgiCIAjCmXG6vWzIruSXPaUs21eOyeYiwNeHIR2iSI0IbPXynG7g8SNwD/DGkeUPx6z/WqFQvAPEAm2BLWdaSEEQBEEQms7u8rDuUCVL9pSyfH85dXY3QX4qhnaMYkTnGPq31eOvPjd9P04ZeCgUirnAIECvUCiKgMnIAcd8hUJxP1AA3AIgSdJehUIxH9gHuIEJkiS1fgOSIAiCIFzkJEmiwuygwGglz2ilwGghv0r++1B5HVanhxCNmuEZ0YzsHMOVbXT4qc59R1OFJJ37Vo4ePXpIW7duPdfFEARBEITzkqHWzq4iE7uLajhYXke+0UpBlRWr8+i9vVIBsaEaknRa0iICubpDFH3SdKh9zs1YoQqFYpskST3+uv50m1oEQRCES4zT7cVkc2GyOTHZXNRYXQT5q0mLCCA8wBeForH+BYIkSRRV21D7KAnw8yHAV4VSeeLvymRzsafIxK6iGnYX1bCr0ERZrR2Qg4tkfQApugD6pOlICteSpA8gKVxLfJgWX9X5PyC5CDwEQRCEBkpqbLy1LIuSGhsmmxuT1UmNzdXg7vqvQrVqUvUBpEUEkhYZKC8jAkgI156zO+7zQWaxiWmL97E5t+FwWFpfHwL9VAT6qQjwUxHg54NG7UOe0UpupaV+u2Sdll4p4XSJD+GyhFAyYoPR+l7Yl+4Lu/SCIAhCi9peUM1D/92G1emmU2wIcaEaMmKDCdWoCdGoCdWqCdH6EnLkeY3VyeEKC4crzORUmFlzsIIF24rq96dSKkiLCKRnShi9UnT0TgknKtj/HB5h6zDU2Xn714PM31ZIqEbNCyPSCfZXY3G4MR95WP6yLK910DYykDHd4+kSH0KXuFBCtOpzfSgtTgQegiAIAgDfbi/ihW/3EB3sz9wHe9M2KqhJ7xvUvuFzk81FToWZwxUWcirM7Ck28d32Yr7aVABAkk5Lr+RweqWE0ztFR0K45qJpprG7PHy+IZePVmXjcHu5v28Kj1/VlhDNxRdAnC4ReAiCIJwFLo+XaosT7ZHq9POZ1ysx/dcsZv92mCtSw5l1R3fCAnxPe38hGjVdE8Pomlg/fyhuj5d9pbVsya1ic24Vy/eX19eMRAf7c0VqOE9e3Y4UfcAZH8+5IEkSSzLLeO2X/RRV27i6QxQvjkw/J+NknO9ErxZBEIRmkiSJDdlG8owWjGYnlWYHRouDSrMTo9mB0eKkxuoCQKGA9lFBdEsKo3tiGN2SwkjWac+bO3yzw81T83awYr+Bsb0SefW6jFZJUPR6JQ4ZzGzJNbIlr5o1WQY8XolXRnXk1p4J58X38+f18VRlySw2MfWnfWzJq6J9VBAvj+pIv7b61ijiee1EvVpE4CEIgtAMmcUmpvy4l6351fXrQrVqdAG+6AL90Af6ogvwQx/oR3igL0azg2351ewsqKHO4QYgPMCXbomhdE0Mo3tSGF3iQ047YVCSJEpMdrLKajlYbibIX8WAthEkhGtP+d7CKisP/Gcr2RVmXhnVkbv7JJ2zC36pycYz83ex8bCRazpG8cbNXQhvZq2LJEmszjKwu8hU/+9x7L9LiEZ93PE53V4Kq60UGK3kGy3yeBhVVvKMFoqqbDg9XlRKBT5KBWofJT5KBSqlApWPApVSfl5YbSVM68sz17Tj1h4JqC7hZNpjicBDEAThDFRZnLy1LIu5WwoI1/ry3LD2DEmPJCzAt0m9Nv68w99eUM22/Gq2F1STU3G094I+0Je4UA1xYRp5GaohLkxbvy5Eo8ZodpBVVkdWeR0Hy+vIKqvjYLkZ85GA5lgp+gAGtNXTv20EfdJ0BPyluWdLbhWPfLUNt8fLR3d0o3/biDP/ks6Q1yvx2fpcZvyaRahWzVu3XMaAdqcul9crsXRvGR+uymZfae0Jt1MpFYQfCUSC/FQU19goNdnwHnMZ1Pr6kKSTu6cm6rT4q33weL24vRJuj4THK+HyeI8sJTxeL4nhWu7vnyryOP5CBB6CIAinwe3x8vWWAt5edhCzw83dfZJ46up2LXKRqbY42VFYzd7iWoprbPKjWl463N4G2/qplA3WhWrVtI8Kon10EO2igkiPDqJtVBAVdQ7WHqxg7aEKNuUYsbu8qH0UdE8KY0C7CAa0jWBviYm/f59JQpiWT+/pcd7lIewrqeXJeTs4ZDAzrm8Kk4a3b3R4b7fHy4+7Svh4zWGyDWZS9QGMH9yGUV1iqLO7MVocR5vCzM5jnjuptbuIDfEn8UiQkazXkhgegD5QjEfSUkTgIQiC0EybcoxM+XEvB8rq6NtGx+TRGbRrYk+PMyFJEpVm5zGBiJXyWgexoRraRwXRLjqQiEC/U14gHW4PW/OqjwQilew/pjagf1s9H47tdt5217S7PLz+y37+83s+6dFBzLztctKjgwH5uL7dXsysNYcpqLKSHh3EhMFtGNk5Bp+TDMwltC4ReAiCcElzuD3sLjJRWec4MmCTiiB/eRnoKw/g9GfbfEmNjdd+2c/i3aXEhWp4eVQHhmVEX/B3woZaO+sOVWJ3ey6YXITVWQaeW7CbWruLScPao1Iq+NfaHEpNdi6LD+GxIW25Kj3ypCOBCueGCDwEQbikWBxuthdU13ff3FlYg/MvzRd/5a9WEuinotbuRgGMH9SGhwemnrNZPAVZpdnBC4t2s2K/AYBeyeE8NqQN/dvqL/hg8GIm5moRBOGiZrK62JJXVd89M7PYhMcr4aNU0Ck2mHv6JNErRUdcqAar003dkREj5VEjPZjtbixOeQRJXx8lD/RPIT7s1D1DhLNPH+jHv+/uwaoDBoI1anomh5/rIglnQAQegiCcM5nFJspMdoacQVW53eVh9m+HmbXmMA63F18fJZcnhPLowDR6pYTTLSnsvB/ASzg1hULBVR2iznUxhBYg/jcKgtDqvF6JT9blMOPXLDxeiYzYYJ65ph2D20c2uepckiSWZpbxj5/3U1xjY1SXGO68IonLE0JF04ggnMdE4CEIQqsymh08PX8Xvx2sYGTnaAa1j+TDVdmMm7OVbomhPHtNe65sc/JRHw+W1/HqT3vZkG0kPTqIeQ9dwRWpulY6AkEQzoQIPARBaDWbcow8OW8H1VYX027oxJ29E1EoFNzYNY4FW4t4f+Uhbv90M1em6Xh2WHu6HTPXB8iTj81ccZD//p5PoJ+KqddncHuvxAuid4YgCDLRq0UQhLPO45X4aHU2M1ccJEkXwIe3dyUjNuS47ewuD//bXMDHq7MxWpwMSY/kmWva0SE6mAXbCpm+NIsqq5OxvRJ59pr2zR5SWxCE1iO60wqCcE4Yau089c1ONh42csPlsfzjxs6nTPa0ONzM2ZjHv347TK3dTXyYhqJqGz2SwphyXQad4o4PWgRBOL+I7rSCILS6dYcqmPjNTswON9PHdOGW7vFNSh4N8FMxYXAb7rwiic/W5bA+u5Jnr2nP9ZfHinEbBOECJ2o8BEE4bXaXB5PNhcnmosbqosbqrH9+uMLMvD8KaRMRyEd3dGuVocYFQTh/iBoPQRDOmMnm4vP1uSzcVoTR4sDuOvFIoD5KBbf2SGDy6Aw0vqJ7qyAIMhF4CIJwSn8GHJ9vyKXO7mZw+wjaREYTqvUlRKMmVKsmVHP07xCtmkBflZg/QxCE44jAQxCEEzLZXHyxIZfP1ssBx7CMKJ64qm2jPVIEQRCaQgQegnAJsDrdbM2rBiA+TENsqOako3uKgEMQhLNFBB6CcBGSJIn9pXWsPVTBukMV/JFbjdPTMB9DH+hHXJiG+FANcWEa4kLlx96SWj5bn0Ot3c01HeWAQ3RfFQShpYjAQxAuEpVmBxuyK/ntYAXrDlVSUecAoH1UEPdcmUT/thH4qZQU19gorrbJyxob+0trWbG/HMcxU8aLgEMQhLNFBB6CcJ6SJInFu0tZd6gCt0fC5ZXweL24PRJur/zweL24PBK1NhcHyuoACNOq6dc2ggFt9QxoF0FUsH+TPqvS7KS4xkagn4o2kYFn+/AEQbhEicBDEM5Dm3OMvPbLfnYVmQgP8CXAzwe1UomPUoGPUoHaR/5bpVSg8lEQHeLPqC4xDGgXQafYkGb3JlEoFEQE+RER5HeWjkgQhDNhd9vZWbGTLaVbKDYXn3J7CQm3143H68EjeXB73bgl+bnb665fd1fHuxidNroVjuAoEXgIwnnkcIWZN5ccYNm+cqKD/Xnrlsu4sWscPqJbqiCcd2qdtSzIWkBmZeYpt1UpVSQEJZAckkxKcArJIckE+Z54UD2X18Xeyr1sKt3ElrIt7DTsxOV1oVKoiAmMQcGpzwkqpQqVUoWPwqfB334qP/m5QoVWrW3WMbcEEXgIwnnAaHbw3spD/G9zARq1D88Na8+4vili4C1BaAZJkii3liNJEjGBMWftcwxWA1/t+4r5B+djcVlIDk5GpTz55dTpcbIifwVuyV2/LkITQUpICikhKSQHJ5MQlEBebR6bSjexrXwbNrcNBQrSw9O5o8Md9IruRfeo7uckWGhJIvAQhGawONyU19pJjWiZHAi7y8Nn63OZteYwNpeH23sl8uTVbdEHiiYP4dJhdVlZWbASrUpLTGAMsQGxhPiFnHJenmp7NZmVmWQaM9lbuZfMykyMdiMKFAxNGsqDXR4kPTy9xcqZa8plzt45/HT4JzySh2FJw7iv03100HVo0vtdXhdFdUXkmnLrH3m1efyS+wt1zrr67VJCUrg+7Xp6x/SmR1QPQv1DW+wYzgci8BCEJlp/qJLnF+2mxGTj4QFpPD20Hb4q5WntS5Ikvt9ZzPSlWZSa7AztGMXzw9NFUqdwydlSuoXJGydTZC5qsF6j0hAbEFsfiMQExhAdEE2FtYLMykz2GvfW5zooUJAcksyVsVeSoc+g0lbJvAPzWJa/jIHxA3mwy4NcFnHZaZdxT8UePs/8nJUFK/H18eWmtjdxT8Y9JAQlNGs/aqW6vobjWJIkUWWvoqCugLjAOCK1kadd1guBmCROEE7B4nDz+pL9fLWpgFR9AJcnhPLtjmI6xQUz89auzQ4Wsg1m/v79HjblVNElPoSXRnagd6ruLJVeEM5PZqeZd7e9y/yD80kMSuSl3i8R4h9CmbmMEksJJeYSSi2l9csaR039e2MDYsnQZ9BJ34lOuk501HUk0Lfh/8NaZy1z98/ly/1fYnKYuCLmCh7q8hA9onqcsiZFkiRKLaXsNe5l3oF5bCnbQpBvELe1v407OtyBTiP+vzbFiSaJE4GHIJzEphwjzy3cRVG1jfv7pvDssPb4q31YtreM5xftxuby8NK1Hbmzd+IpT2Z2l4eP1xxm9prD+KuVvDCiA7f1TBDzmQiXnPXF63n191cxWA3c1eEuJnSdgEalOel7rC4rZZYyQvxCmnXht7qszM+az5y9czDajXSN7MpDXR6ib2xfFAoFRpuRQzWHyK7OJrsmm0M1hzhccxiLywJApDaSuzvezZh2YwhQB5zRcV9qROAhCM1gc3p4c+kB5mzMI0mnZcaYy+iVEt5gG0OtnWcX7mbtwQquSo/kzTFdTpibsSG7kr9/n0lupYUbLo/lpWs7iq6rwiXH5DAx448Z/HD4B1JDUpnad+oZNYE0h91t57vs7/g883PKLGUkBSdR56yjyl5Vv02oXyhtw9rSJrRN/bKTrhNqH3WrlPFiIwIPQWiirXlVPLtgF3lGK/f0SeL5EelofRtPh/J6Jf7zex6vLzlAsL+KGWMuY3D60fbZSrODfyzex/c7S0jWaZl2Qyf6t41opSMRLiWZlZnMz5qPUqFkWPIwekb3PGVPi8YYrAZ+zfuVrWVbGZQwiNFpo09rP3+1qmAV0zZNo9pezbhO43jkskfw9fE94/02l8vj4qecn/g171eiA6JpE9qmPtDQ+etOWXMpNJ0IPAThFOwuD28vy+LT9bnEhWqYPqYLV6bpm/TerLI6npy3gwNlddzdJ4kXRqTz/Y4S3liyH5vLw6MD0xg/uM1JJ2YThOZyeV2syF/B//b/j10Vu9Cq5G6WVreVcP9whiUPY0TKCC6LuAyl4sSJ0DX2GpYXLGdJ7hK2lm1FQiLcP5wqexXJwclMuHwC1yRfc9J9nEiZpYx3tr7DkrwltA9rz7S+05rcC0S4sInAQxBOoMxkZ/7WQuZtKaDEZOeO3on8bWQHAv2ad5dnd3mY8WsWn63PJcDXB4vTQ++UcP55Y2fRW0VoUVX2KhYeXMg3B77BYDOQGJTI7R1u5/q061EpVawrXseS3CWsLVqLw+MgJiCG4cnDGZEygvTwdBQKBRaXhVUFq1iSu4TfS37HLblJDk5mRMoIhqcMJyU4hVUFq/hw54dk12TTLqwdj13+GIMSBp2yVsDsNLM8fzmLcxbzR9kf+Ch9eKTLI4zrPA61UjRbXCpE4CEIx/B4JdZkGZi7pYBVBwx4JejbRsf4QW3o26ZptRwnsu5QBR+syuaW7vGM6R4vqm6FRkmSxD7jPhYcXMCuil1EaCKIDYwlJiCmwTJSG1nf1HGg6gD/2/8/fsn5BafXyZWxV3JHhzvoF9ev0doIs9PM6sLVLM1bysbijfXBRXJIMr+X/H40KEkZzsiUkbQPa3/c79Xj9bA0bykf7/yYgroCuui78FjXx7gi5ooG27q9bjaWbGTx4cWsKlyFw+MgMSiRUWmjGJ06mvig+LP7hQrnHRF4CAJQXGNj/h+FzN9aSKnJjj7Qj1t6xHNbzwSSdCJjXTj76px1/JLzCwsPLeRA1QE0Kg3do7pTY6+hxFLSINkRwEfhQ6Q2kgB1ANk12WhUGq5Lu46x6WNJC01r8ufW2GtYUbCCpblLKawrZFDCIEakjKBLRJcmNaG4vC5+OvwTs3bNosxSRo+oHjzR7Ql8lb78lPMTS3KXUGWvItQvlGHJwxidNpou+i4i8L6EicBDuOQ43B6qLE6MZid5RguLthXx28EKJGBA2wjG9krgqg5RqH1ObxAwQWgqSZLYXbmbhQcX8mver9jcNtLD0xnTdgwjU0c2mLPD7rZTaimVH+ZSSiwllJpLqbRV0jeuLze0uYEQv5BzdixOj5MFBxfw793/xmg3AuCr9GVgwkBGp46mX1w/0QtEAETgIVxEvF6J8jo7+UYrBUYrRTU2Ks0OjGYHRrMTo8VJpdlBnd3d4H2RQX7c2jOB/+uRQEL4hT3XgXBhqLRVsixvGQsPLeRQ9SE0Kg0jU0ZyS7tb6KjreEHXBtjcNn7I/gG1Us3Q5KEE+waf6yIJ55kTBR5iyHThvFVlcbK7qIaCKiv5Riv5RoscbFRZcbi99dspFRAe4IsuwA9doC+d4kLQBfiiD/RFF+iHLsCXiCA/OseFoBK1G+eNP3McTA4TXSK6HDfy5Lkq06xds/hq31fEBMYcHdMhtC1twtoQGxDbaLAgSRJF5iIOVB1gv3E/WdVZHDAewGAzAJChy2Byn8mMSBlx0QxCpVFpuC39tnNdDOECJAIP4bxjcbj5ZG0On6zNwebyAKBR+5Ck05KiD2BweiSJ4VqSdFqSdQHEhPiLgOIC4ZW87K7YzfL85SzPX06ppRQApUJJeng63aO60z2qO90iuxHmH9aqZXN6nLyy8RV+zvmZ/nH9kZDYVr6Nn3N+rt9Gq9LSJkwORJKDkymzlnGg6gBZVVmYXWZAzslICUmhV0wv0sPT6RXdS3QfFYRjiKYW4bzh9nhZsK2Id5YfpKLOwbWdY7irTxKp+gAigvwu6GrpS5nH62Fnxc76YMNgNaBWqrky9kqGJg0lQhvBDsMOtpVvY3fFbhweBwBtQtvUByHdoroRHRB91spocph4cvWTbCvfxhNdn+CBzg/U/97qnHUcrjnccFjt6kNUO6rRqDS0C2tHenh6/aNNaBv8Vf5nrayCcKEQOR7CeUuSJNZkVfD6kv0cLDfTPSmMF0d2oHtS697xCi3H7XWzvXw7y/KXsbJgJZW2SnyVvvSL68fQ5KEMjB/YIKHyT06Pk73GvWwr38bW8q3sNOw8OmeGJrLBxGAZ+owWSbIsrC1k/MrxFJuL+UfffzAydeQp3yNJErXOWgLVgfgoxaBwgtAYEXgI56XMYhOvL9nPhmwjyTotL4xIZ1hGtKjduAC5vC7+KPuD5fnLWVWwiip7Ff4+/vSP7881SdfQP75/s/Mb3F43WdVZ7CjfQaYxk72Ve8mrzat/PSEooT4I6azvTGd952b1qNhp2MkTq57Ai5f3B79Pt6huzSqfIAgnJpJLhfNKSY2Nt5Zl8d2OYkI1aqaM7sjtvZPwVYlcjbPFK3lRoGjRoM7lcbGpdJMcbBSuwuQwoVFpGBg/kKFJQ+kX1w+t+vR7EKmUKjJ0GWToMurX1Tpr2WfcR2alHIjsqNjBkrwlAAT7BjM0aSgjUkbQI6rHSWsjluYt5aV1LxEdEM3HV39MUnDSaZdTEISmEzUeQqtxuD2sPmDg2+3FrM4yoFAoGNc3hfGD0wj2F/3+zxa3182CgwuYtXMWLq+rwcybfy6bksjplbyYHCaq7FXk1eaxqmAVqwtWU+eqI0AdwKCEQQxNGkrf2L6tnuNQaatkV8UuVuSvYFXBKqxuK3qNnmHJwxiePJzLIi6rD7gkSeLzzM+ZuX0mXSO78t7g91o9kVUQLgWiqUU4JyRJYlt+Nd/uKObn3aWYbC70gX5cf3ks9/VNJj5MjKdxNm0s3sj0P6Zz2HSYHlE9SAtNq0+OrHXW1m+n1+jrZ+n8c3KwYx9Gm5EaRw0eyVP/niDfIAYnDOaapGvoE9vnnMw02hib28baorUszV3K2qK1OL1OYgNiGZ4ynGHJw5ifNZ9FhxYxInkE0/pNw8/H71wXWRAuSiLwEFpVbqWF77YX8d3OYgqrbGjUPgzLiOLGbvH0TdOJ7q9nWY4ph7e3vs3aorUkBCXwTI9nGJIwpMFdf6WtkkPVh+TeGjXZZFdnc9h0GJvbRoA6gHD/cHT+OsL9wwnXhMvLI+sitBF00Xc570eorHPWsbpwdf1EaH8GTg92fpDHuj52WrOtCoLQNCLwEM6YJEnUOdyYrC5qrC5MNhc1Nmf93yabixqrk6xyM7sKa1AooG+anhu7xjGsU3SzZ3u9VNnd9ga1DZIkkRqaSlxg3CkvlCaHidm7ZjPvwDz8Vf483OVhbu9we5NrI7ySF5fXdVHWAlTbq1lZsJIITQQDEwae6+IIwkVPJJcKZ8Tu8vDgf7ey7lDlCbfxVysJ1fgSFeLP30akc/3lcUSHiPEM/qrGXsNe4172GvdSYi45rknD6rY2+j6NSlPfHPJnfkbbsLbo/HW4JTcLshbw8a6PqXPWcXPbm5lw+QR0Gl2zyqZUKC/KoAMgzD+MMe3GnOtiCMIlTwQewil5vRKTFu5m3aFKJgxOI1kXQKjWl1CtmhCNmlCNmmCNGn+1GM/gr6wuK/uM+9hr3EtmZSaZlZkUmYvqX9f56+qbMTrpO6Hz16HT6OqbNcL9w/FK3gYDWP1W9BvfZX9Xv49Qv1D8Vf6UWcroHdObST0n0S6s3bk4XEEQhFMSgYdwSu8sP8iPu0p4fng6jw5q+jTclxK3101RXRG5plzyavPIrslmn3EfOaYcvJI8r0xMQAyd9J0Y024MnfSd6Kjr2OggWo25PPLyBs+NNqOcl3EkUbTCVsFLvV9iYPxAMQaKIAjnNRF4CCc1/49CPlydzdheCTwyMPVcF+ecc3qcHKg6QK4ptz7IyDXlUlBXgNt7dDZcvUZPh/AODE0aWh9k6DX6FiuHTiPXjPSO6d1i+xQEQWgNIvAQTmj9oUpe/G4P/dvqmXp9pwv2TvrPmUN1/rrTGszK5DCxrngdqwtWs754fX0OhkqhIjE4keTgZAYnDCYlJIWUkBSSQ5LFFOGCIAgnIAIPoVFZZXU8+tU22kQG8vEd3VBfgN1f3V43KwtW8t+9/2V35W6UCiVpoWl00nWik14eZrtdaLtGu4SWWcpYXbiaVQWr2Fq2FbfkRuevY2TqSPrF9iMtNI24oDjUyvO7O6kgCML5RgQewnEMtXbGzfkDja8Pn9/bk6ALbFRRi8vCd4e+46v9X1FsLiYhKIGnuz+NxWUhszKTVYWr6pMzfZW+tA9vLw/Lrc+g3FLOqsJV7DPuAyA5OMdS1VUAACAASURBVJm7M+5mSOIQOus7i3EfBEEQzpAIPIQGrE439/9nK9VWJ/Mf7kNsqOZcF6nJyixlfL3/axYeXEidq46ukV15rsdzDEoY1GDOjj+bXvYa97K3Uu5t8uPhH5mXNQ+ALhFdeKrbUwxOHExqiMhrEQRBaEki8BDqebwST8zdwd4SE5/e04NOcWc+5Xhr2G/cz3/2/Ydfc3/Fi5erE6/mnox76BLRpdHtFQoFCUEJJAQlMDx5OAAer4f82nyC/YJbNAlUEARBaEgEHkK9aYv3sWK/ganXZzAkPepcF6dRkiRRYilhW/m2+kd+bT5alZbb0m/jjg53EB8U3+z9+ih9SA0VtRuCIFx8PGYzboMBd3k5boMBV7mh/nnIjTcQNGRIq5ZHBB4CAJ+vz2XOxjzu75fC3X2Sz3Vx6kmSRG5tboNAo8xSBsiTlHWP7M5t7W/jujbXiZ4kgtACJKeT2uXLMa9cSfg996C57LJzXaRLgtdmo/yNN/FLSyP01v9D6Xd6IwhLHg+mn37C9MMPuEvLcBsMeK3Hj4asDApCFRmJp7a2kb2cXWKulkvcrsIa3lqWxbpDlQzLiOLjO7rjo2y9brMer4cqexUGmwGDxUCFrYJyazkV1goMVgP7q/ZTZa8C5FE+u0d1r3+0DWsrkj2F85YkSVR+9DF4vejHP4pCdX7f57lKSqieP5+aBQvxGI2gUqFQKon55z8JGT3qXBfvouZ1OCh69FEsG38HQBUTg/7RRwi98UYU6qYl90teL3XLllHx/gc4c3LwTU3Fr1071FGRqCIjUUVGoYqMrH+u1J79mcHFXC1CAwfKanl72UGW7ysnTKvmxZHp3HNlcosHHXXOOkrMJZRaShssyyxllFnLMNqMDaZaB3m+EL2/nghtBH1j+9Ijugfdo7qTGJR4wY4lIlxaJEnC8OZ0qubMAcC2Zw9x77yNT1DTRqptLZLXi2Xj71TPnYt59WoAAgcNImzsWPw7dqD4qYmUPPccjuxsIp58AoWyeYG+1+mk6vPPMa9fj0qnRxUViToyElVU1JELYQTqqKhWuQieM5IEexbCtjngHwJB0RAcA0HyQ/LXU/zq+1g2/k7M66+jjo7CMHMmZa9MxvjpZ0Q8NoHga69F4dP4lBSSJGH+7Tcq3nsfx/79+KalEffeewQNvbrZ/16tRdR4XGJyKsy8u+IQi3eXEOir4sEBqYzrl9JiM8duLNnIvAPzKDYXU2oupc5V1+B1X6UvMYExxATEEKWNIlIbSaQ2kghtBFHaKCI0Eeg0OlRKERPb9u6leu5cnLl5+Ken49+5E5rOnfFNSTlvTyjnu8rZs3EWFhI1aRI+IWcvedowcybG2f8i7M478WvXlrKp0/BNTCTh44/wTU5u9v7MGzZg/OTfhNx4AyHXX3/GAbjHZKLmu++omTsPZ34+PuHhhI4ZQ9it/4c6Lq5+O8nppGzaP6hZsIDAq64ibvqbKAMCmvQZls1bKJsyBWduLv4ZGXitVtzl5Y1X+wcGoo6LQ3f/OIJHjz7rNxi2Xbsoe+01pEbKAsjBgqMO7CYCOsaje/EtVEnpzf8g42H4+WnIWQO6tuDjC3UlYKuWP8YLxRvDqCvSEN3LQlj3cEi8AqndCMwlflR89C8cBw7g17YN+scfJ2jo0AbfjWXTJipmvodt507UCQlykDJq1AmDlNZ2ohoPEXhcIoqqrby/8hCLthfj66Pkvr7JPDQglVBt06ZLPxWLy8LbW99mwcEFRAdEkx6WTkxgDLEBsQ2W4f7hF3XziCRJ1C7+maqvvsS/XXsCrxpCQJ8+TW6v9Toc1C5ZQvXcudh37Uah0eDfvj32gwfrT5LKgAD8MzLqAxH/Tp1Rx8W2em2Q5HTirqzEVV6O21AhJ65VGI4+r6hAqdHI1bx/3ukeqe7987kyJKTVym3dupX8O+8CQBUbQ9xbb6Ht1q3FP6dy9mwqZr5H6C23ED31VRQKBZYtWyh+4kkkSSJ+5rsE9OnTpH25Kyoof+NNan/+GYVGg2SzETxqFNFTJuMTGNjssnltNio/nkXVl18i2e1ounUjbOxYgoZdg9K38XOBJElUf/kV5W+8gV/btiR8/FGD4OS4MldXY3hzOqbvv0cdH0/05FcI7N+//nWP2SInNhr+THSUfy+2bduw79uHts8VxEyefFoBWlPY9+0j/977UAYEoOncueGLLitU50FNAbgdeBUaLEUSCiWED+mI7sV38IlpQrncDtjwHqx9C1R+cNUr0GMc/Nmt32VHqimi5JV/Urt6E1Fj+xF+RSSYCiHnN7DXgMofKWUgdaY0Kn7cjjOvAP+OHYl46kmUgUFUvP8+1k2bUEVHo3/0UUJvanqzTGsRgcclylBn58NV2czdUoBCoeDO3kk8OiiNiKCWm/p8c+lmXtnwCqWWUu7NuJcJXSdctFOrn4wzP5+yV6di2bgR3+Rk3BUVeC0WFFotgf36EXT1VQQOHNjonbazsJCab76hZuEiPDU1+KamEjZ2LCE3XI9PUBCSx4MzJwfbnkzsmXvk5YED4HIB4BOhJ/yOOwm/684m35GeiOT14qmpOSYD/pjAwmDAZZAz4j1G4/FvVqtRR0TIVel6PV67vf59npqa4zZX+PmdNDCRq+QjUfr7n9ExeR0Ocq+/AcnlIua11yh9+WVcRUXoJ4xH/8gjLXaHaPxiDoY33yT4utHEvv56g/06CwspGj8eR04uUS+9SPjtt59wP5LXS838BRjeeQfJZkP30EPoHrifqjlzqPjwI9SxscS9NaNZiZ/m336jbOo0XMXFBF83Gt24cfinN/0u3rx+A8UTJ6JQq4n/4H203bs3LLMkYfr2WwzTZ+CxWNCNG4f+0UdQapo2FpDk8VAzfz6Gd95FcjjQPfwQugcfPGFAdDrsBw9ScPc9KLQakr/8Ug6gvF44vBL++BQO/goKBbQfCT3vh5RBOHaupfKNv1O7uxKlGsJHdCP8hXfwCY9u/ENy18HiiWA8BBk3wrDX5aaVY4/V66X05ZcxLfqWiKefRv/Qg0df9LihYCMc+AUO/AymAiSvAlNdBpV/uHBVyrXIPjod+ocfIvTWW087EfVsE4HHJabW7uKT33L4bH0uLo+XW3ok8PiQNi06IJjVZeXdbe8yL2seScFJ/KPvP46bRbUxrnIDRY8/ju7BBwgeOrTFynOueJ1Oqj77jMpZs1Go1URMnEjY2NuQPB6smzdTt3Il5pWrcFdUgI8P2p49CbrqKgIHD8aRfYjquXOxrF0HSiVBV11F2O1j0fbufcqaAK/TiSMrC9uePZjXrMGydp18MnroQUJvu61ZJyPJ7aZu+a9Uf/RPbLnV/CXtBpBPdKrIPwOEI0HBXwIEn9DQEzYDeR0O3BUVJwloynGXG5Ds9uPeq46PJ2H2LPzatGnyMR3rz6aPhE8/JbBfXzxmM2VTp1L7409oe/QgdsZ01DExp97RSVR9/TXlU6cRNHw4cW/NaDSZ1GM2U/Lsc5jXrCF07G1Ev/jicXep9qyDlE2ejG3nTrS9exM9eTJ+qSn1r1u3b6f42WdxGyqIeOIJdA/cf9KmN1e5gfLXX6du6VJ809KImTIZbc+ep3WMjpxcih59FGdJCTFTphB6803y+sOHKZs8BevWrWi6dydmymT82raFioOw5jUwG+DORaA+9fnHXVFB+etvUPvLL/impBA9ZQoBvXudVnkblD03l/y77kahVJL01Zf46gNhx5ew9XO5liMgErrfA93vhZDju+TbN/5MxZvTMGeZ8PGT0F13JWGT3kYZFCZvYDHCsr/Drq8hNAmufQfaXn3cfiRJonzaNKq/not+/Hginnj8xIWWJCjPlAOQA4uRivdgytPiDUggdPwrKDtfKwdK5ykReFwi7C4PX23K58PV2dRYXYy+LJZnhrYjWX9md8F/ta18G39f/3eKzcXc0eEOnuj2BBpV04Ka4meepfbnn1EGBJDy7SJ8k5JatGytybJlC2VTXsWZk0PQ8OFE/e1vqKMij9tO8nqxZ2ZSt2IldatW4sw+XP+aKiKC0P/7P0L/7xbUUac/fop1xw65+vX3TaiiouTq15tvOmn1q8tgoGbBAmq+mYfbUIlK6ya4jRq1qgZVTAKqQQ+g7jYSVUQEiha88zwRSZLw1tXhLi+Xa1aOjDdQ9eWX+AQGkrxgPj7Bzes2bc/KIvfmMYSMGkXsG683eM30ww+UvToV1Gpipk0l+JprTqvcNYsWUfrS3wkcPJj499876XcueTxUvPsuxk8/Q3vFFcTPfBef0FC8VisVH31E1Zz/4BMcTOTzk06Yz+GpraX0lcnULV2Kts8VxL7x5nG/O8njoXruPCpmzkRyOtGPfxTduHFn/O/oMZkonjgRy8bfCb/3XhT+fhg/+xylVkvUc88SctNNKGry4bc3Yfc3oPKXmzAG/Q0GvdDkzzGvW0/Z1Km4CgsJuf56Ip+fhCo8/LTK7CwsJP/Ou5DcbpJmPI9f+S+QuQg8DkjqK9dupI8G1am/G9uK+VS8Mx1LjgWVVkI35irCru6JYvWr4KiFK5+AAc+B7/EJs5IkYZg+g6ovviD8/nFEPvts85oaawpg/2LYPEv+O+EKGPJ3SOl/6veeAyLwuMh5vBLfbi/i3eUHKTHZ6d9Wz/PD01t89FG72877O97nq31fERcYx7S+0+gRfdzv6oQsmzZTcO+9hN5yC7XLluEbF0fSvLktWp16LFvmXqrnfk3tL0uQbLZTbq+KiMC/c2c0nTvh37kLmk4Z+ISGHredu7oaw/QZmL77DnVcHNGvvEzgwIFNLpcjNxfLunWoIqMIumpIi7bNWjZtpmLmzPqEM/2E8YSMHl1f7S9JEtY//qB67lzqlq8At5uAeAhrYyZwwgcoOo6CPfNhzevyyS2xj3xyS+7XYmVsLuu2beTfcy8BV/YhYdasxptGvF74y52/5HaTd9tYXCUlpP68GFVY2HFvc+bnU/zMs9gzMwm99VaiXni+yc0DAKafFlMyaRIBV15J/McfNbmmqea77yl75RVUMTHoHnwA46zZuEpKCBlzM5HPPHO0rJIEu+bCiikw+CX5rpwjTRuLFlH2z9dQ+vsT89o/CRo8GJDzGEonT8G+Zw8BV15J9ORXjgb4a96EzbMhoj3EdoO4bhDbFcJTm3z3LLndlL/+BtX/+x8AIddfR+SkSahUdlg7Q65JUKqg5wPQbyL88px81z5hM4SnnGLvR3ntdipnzcb42Wf4BAQQ+Wdg04zkaldpKfl33Im3tprEGzX4uzLBNxC6/J9cvqiMJu/rWNafvsDw3nvYihwo1V78YzRoBlyLf+9BaDp3RhUVdVxQYXjvPYyzZhN2551EvfTi6ec3uZ2w479yDkldKaQOgiEvQ3zTz8WtQQQeFylJklix38CMXw9wsNxMl/gQXhiezpVtWn7Y752Gnby84WXyavO4tf2tPN396WZNMy85neTceBOSw0Hq4p+wbNhA0YTHCLvrLqJferHFyum126ldslRO0NwtJ2gGjxyBOrqRqnSPE6pyoPIQGA/jVMRhNwXgzM2t30SdmIimU6f6gMRZUIhh+nQ8ZjO6++5DP/7RZl2oWoMkSVjWrsXw3ns49sld7CImjMddXS33lMk+jDIkhNCBXQhT/IxvVCiMnQsxxwwzf56d3KrnzaNsyqvoHn6YyIlPNXxx73ew+GlIuhJGvFlfVW78/AsM06cT987bBI8cecJ9S04nFe+/j/HTz/Btk0bcjBn4paef8sJQ++syip9+Gm337iT8a3azfwfW7TsoevxxPEYjvm3SiJkyBW2PY75fe63cK2LPAvALAWcdjJ0H7YbVb+LIyaH46WdwHDhA2J13ovDxkWuIwsOJeuEFgq8defQ4/vhM3l9yf/m3X7oL3EeatvxD5QAkrpsckMR2lbt8nuQiX7tsGaqwMLQdkmH9u3KehOSVg6P+z0Bw7JENS+DDnnLtwu3fNLt5wHHoEKWvvIxtxy78wryEXRFH8DUD8UntLZc38PhaRgDXgS3kPzAej8lM4uBKNO3byLUbXW4F/zMfcFDyerF8O5u6tVuwFdbiOHQI3G5AzrvSdOpcnwRu27Wbyg8/JPSWMUS/+mrL9Exz2eR/0/XvgNUI7UbAkJcguvOp3ytJcg2NQgl+Z6ebtwg8LkLb8qt4/ZcDbM2vJlUfwLPD2jOiU3SL9xKosFYwc/tMfjz8IzEBMUztO5UrYq5o9n6Mn32GYcZbxM/6uP7OrOy116j+75fEf/gBQVcf3x7aHM6CAqq/+QbTwkV4TKbjEjTrmQ2QtUS+A8tZI1e3asJA3w4KN8NtX+OJG4B9715se/Zg370HW2Ym7tLS+l1ounYl+tUp+Ldrd0ZlPtvkQYWWU/HBBzgPy807/p07Ezb2NoID96PcOB3ie8Ft/zvhyfuMTm4tSJIkyl6ZTM2CBcTNfJfg4cPBaYGlL8D2/0JkR6jKlXsODH4RZ8xIcm64iYA+fYj/+KMm/b8wr99AyQsv4KmsRKHRyONM1Ce8Hh13QhUVhau0lJIX/oYmI4PEzz497aReV2kp1i1bCB4xomEzSNFWWHQ/1BTKzRS9H4L/XAeVB+Hen+UL7hFehwPD229T/d8vAQi97VYin366YbNU1lKYNxbaDIXbvgYfFXhcYNgPJduheLu8LN9HfZKPUi2POxEUc2T8idgjz48sAyIgcyFsmg1uG1x2OwycBGGNNJ9u/EDOgbhtLqSfOAhslCQhzb2D2uVrqMqPw15iRqnyEpJsI7SNBf/EaIjrerQGx1GHe82/yP/iAC6rD4n3dUZ780Q5MD2LORFehwPH/v0NksCdubnyRR4aTTpuEY46uRZrwwfgMMlJrX0eB69LvmmoLZWXdaVQVyYHgnVl4LLA8DfhikdatjxHiMDjIlJUbeWNJQdYvLuUyCA/nrq6Hbf0iEft07LdVF0eF//b/z9m756N0+Pknox7eLDzg82q5ajfV1kZh0deS0Dv3iTM+rh+vdfpJH/s7TgLC0n97tuTdtNrjOT1Yv7tNzlBc916OUHz6qsJGzsWbe9eRy82ldlwYDFk/QKFWwAJQhMhfZScwZ7YR173ySD54jphszzYzzHclZXY9uwBr5fAwYMvqLE0JI8H89q1qPR6NO3T4Ifxci3BZWNh9Htyl79TcdTJF5iNR05uqYPkqup2I+SLWCvwOp0U3H0P9qwskj+civ+OV+Xaqv5Pyxfn2mL45Tmkg8so/D0JW6UPqb8sQR19gh4IjXAbjZh++gl3WTluQ8NcE8nhaLCtf0YGiXO+OPHAYB6X/Gikvf/EB+mFDTNh9T/lC/7Nn0LikUC/rhw+vVqupXhgOYQlN3irZcsWlBotms6dGu6zeBvMGSUH1/f+DH4n6YrrskHZHrk2pLb4+IuWo5EhtjNugsEvgr7tiffrccHs/nKwOGFz876TzZ/Akufgmn8g9XkM+549VH/5X2qX/orkcqNNDiKsrY2g0AIUPuBxKMj/LQZnnQ8JH7xNwKBhp/6Ms8RjNmPP3Iunpoagq686uyPY2qph44ewaZYcVBzLx6/x4DF1UMOazhYkAo+LgMXhZtaaw3yyLgelAh4ekMbDA1PR+rb8D3l98Xre3PImebV5DIwfyKSek0gMTjzt/RU9NRHz6tWk/rwY3/iGGePOggJyb7wJvzZtSPrqyybnO7jKyyl5bhLWLVuOT9D0euW7twOL5W5plVnym6K7yMFG+kiI6nT83U/xdvj0Kuh2t3xBvtjUlsDcsfJFZeirciJcc+8AbdVylfrWOVBbJJ/Aetwnf2dBTb/Any5XeTl511+Lwl1Lyo1KfMb+C1KPya+RJGo+fJnSjxYR3cNE2Njb4aqXjwskT/wBNjnI+ksNkCRJeE2m+kDEU2sicMCAEwcduevg24fkQDZ1IKRfKwdpQSdJIK4the8ehtzfoOMN8m9Q85cco4os+Owaubbh/mWgPUXCZVUufDZU7lFy/4qTf35TOOrkAKjuyF1zVEbT8yTy1sOca+XkyyF/b9p7SnbK5U8dLDczHRPwu6urMX37LdVz5+EqKsJHF07o1b2wbNuHI7+U+FmzCOzX9zQO8gJnroCc1aAJPxpsaMJavQeMCDwuYF6vxMLtRcz4NYuKOgc3XB7LpOHpLdo19k+FtYVM3zqdNYVrSApOYlLPSQyIHwBQP5lQc3sVmDdsoPD+B9A/8TgR48c3uk3tkiUUT3wa3QP3E/nss6fcZ93KlZS++BJel4uoF56X5zRQeOWT/YHFclOKuQwUPnJSZPq10H6EXMtxKr++BL9/KN8ZnsOEyhZXsBnm3w1Os3wX3X7Eme3P44ZDv8pByOFVcjJhh9HQ88GzV6VtqYTvx2P7fRX5qyPR9uhBwmefN7iLdFdUcHjUaPzSUki6PR7F1n9DYBSMeEO+mB9brsaaGgz7weuWu1VePUU+YTeHxwVr3oB1b4MuTW7aOLhE7rKJAuJ7yoFv+qiGNQRZS+WaKJdNzlPpeteJv8O8DfDlDRDXHe76HtQnGOfEWiUHKZYKuH85RJwHTYOLHoR938P4TfL3czL2WvhkILjs8Mh6CNA1upnk9WJZv57qr+di/u038PEh/v33CRoy+CwcgNBUIvC4QG3OMTLt531kFtdyeUIor4zuSLfEZp4Im8DqsvLpnk+Zs3cOaqWahy97mLs63IXaR659qFu1mtIXXwSVSh48qGvXJu3X63SSe931SJKX1B9/PGnGf+nkKdR88w0Jn/yLwAEDGt+f3Y5h+gyqv/4a/44diX3zNfzse+Rg49AKOflOHSD3n08fBW2HNv/C4bTAx33kC+mjG5o09kADkiTflerSwOccjiTYWK1PaCKM/QaiOrbsZxkPy+Mh7PhKHnUxooOcxNd+pHy31RJBSM4a+PZhucblmn9QnR9G2SuvED5uHFGTnqvfrOipiZhXrSLl++/l8S+Kt8FPT0HZbjkI6HSTXONTvF1e11hypcMMf/wbtDp5AKjOY5p2DNX5sOgBKNoCXe+U28/9AuXfhGHfkUGhFkPpTnl7fTv5O3Ka5QAuqjOM+bxpAcKehXIOSMaNcPPnxyeBuuzw3+uhZAfc/b0cDJ4P6srhwx5yAHbnohN/r5IkH9/e7+SbgCaW31lUjNdixr99+xYstHA6ROBxgSmssvL6kv38sqeMmBB/XhiRznWXtfyw2G6vmx8P/8hHOz/CYDUwKnUUE7tPJFIrVzN7HQ4MM96i+quv8EtPl+dbKC0letpUQm+44ZT7r/zXJ1S8+y4J//6kwbDJjfHa7eT93624KypI+f6748a0cGRny9n7Bw8Sft99RNw+DOWPD0PFfnnwn/Yj5GAjZcCJ7wCb6vBq+Y6y30T5rrepJAmWvyznQQTFQPcjTRDBZzY4VZO5HZC7Vk6cbazWp/Mtp66aPxNOK+z9Frb8++jFNTDqmG6bR5ZNKYPXC9ZKObcgcxFseF++UI/5HKLlHIayqVOp/nousTNmEDJ6FHUrV1I04TEinnoK/SMPH92Xxw1bPpHzJpxmUGsh5rKTdyct3SUHLCXb5Wr+a98++R165iJ5e4DRM6HTzSfe1lR0JMF5sdz84HVD70fl31pzfrsb3oPlr8hNZtdMa/jdLbxPrlkY84UcbJ1PNs2Sk4L/70voeF3j22z7D/z0hNwkM+C5xrcRzmsi8LiA7Cio5s5PN+OV4JGBaTw0IBWNb8tmQUuSxKqCVby34z1yTbl00Xfh2Z7P0jXyaE2GIzub4meexZGVRfg9dxPxzDN4LRaKJz6NddMmdA/cT8TEiSfM0HaVlHB45LUE9u9H/AcfHPvh8p1meOpx3bgcOTnk3jxG7ikw5wsUKhWSJFHzzXzKX38dZWAgsa+/RqDmoNwk4hcEo9+HdsNP2u3vtHw/QR4/4aE1TUu+8nrgpyflMQy63Cq37WevkGtO0kfJiZjJ/Vq2CUKS5LE2CjfLwUb2CvnC6hsIba46/VqfllC6Gwp+P9qEUXkIOHK+CU06GogERh6feV9bKgdNXvfR/XW/V659OCYpUXI6yR83DvueTBI++YSS557DJyyMlIULGs8VslTKvZr07ZqWEOv1yDU5K6fKQd2AZ6Hvkw2TcZ0WWDJJru2J7yk3Y/0l6fOkbDXyb+VUzQ6NkSR5jIw//g0j34JeR4be/rO5cOg06PtE8/d7tnncchOKrQYe2wK+f+kRVL4P/j1YTqq989ujc5wIFxQReFwgDpTVcuu/NhGqVfP1g1cQdxbyOP4o+4OZ22eyu2I3KSEpPNn1SYYkDqmvTZEkiZoFCyh/7XWUGg0xr79G0KBB9e+XXC7KXnuNmrnzCBw0iNi3ZjQ6YVXR449jXreetF9+Rh17pD9/ZTb8PFG+K9fqoN/TcpX8Mc0ZNd9/T+kLf0M/fjzhd99F6cuvULd8OQH9+hE7+XlUGybLd4ppV8GNs0/cDfRMWavgo95ybcUDq05+oXI74NsHYd8PMGCSnOGvUBzfBKFvLwcgl93a9GTHY5kNRy/kfy6tR+ZMaelan5Zmr5VrQerLvwNMBUdf9ws+cbdNXdoJExjdlZXkjrkFd3k5KBQkf/PN8b06zlRtKfz6N7naX98ORr0rB5Glu2DhOPnfuf8z8sicrd285vXAN3fCwaVw61dybcqSSdDrIRgx/fwdUjv/d/hiuHwOuHry0fVOC3wyWG5Se2T9mSfDCueMCDwuAPlGC2Nm/45SAQsfuZKE8OZ3Wz2ZrKos3t3+LhuKNxCpjWTC5RO4Lu26BlPQe0wm+UK/bBkBV/Yh5o03UEc2fmGv+vpryv/5Gn6pKcR//DG+CQn1r5nXrqXwoYeJmDgR/cMPyRfm9e/KCXcqDfR7Uk4EzVktX2wGPAtd764fsrjkhb9h+uEHVHo97poaIidOJHxQGorvH5EvvldPgSvGt3wtx1/t/Q4W3AtDp8p3uo1xWuQT/+FV/D977hZFNgAAIABJREFUdx4eVXn+f/x9kkx2EhIWZVGiFmULCWF1BxFEFBQXUHEvuLbWtlKXWrVaW3+WqkWqdcWlLlAUtIj9KgJ1Q4EAKggaUXaFLGSffc7vjzMZEjJJZpIZlszndV29QpKZkyeTYj48z33um7P+DCfe3Pgxbjusf9M6x9+1xqpDGTjZKg5s6RdDTbH/l/Vaa3olWE1/uvTxHxUMsq5zZF70X49Iqy4GR4UVLpq7xbMF9q/Ws/XKK8m+/HK6/vY3EVzgforetxpwlW+z6kV++J8VoC942gp7B4urFl48F3ZvsP6unTAeprx86O8ULLjRao5246f76loW3gzrXoErFsBxKg49nCl4HOJ2Vzq46J+fUu3wMO/6E+l9ROQ6yW2v2s4/1v2Dxd8vpkNiB6blTuPSPpeSnNDwX8S1hYXsvG0GnuJiut76K7KvvbZhr4qf1lv39R9zWmCHombFCnbc+msMw6DHrL+TNmwYPqeT7ydMxIiP59i3FmLs/Mw/rfE769z7rL/s+1fMlo/hgwdg+2dW4ePpd8DAKfgcTrZccik+l5MeDz9MSuki+GgmZB1jnfF3b3kYXUSYJrw+1ZpeeeOnjbfD7XvhlcmwczVMfNwqKGzJzkJY9bzVeKmusLElWTn76hF6DLZuC27DL+r2qG4ScKTroBpx1cKHD1t1PL3HwsTZTd5tcUBVF8PzZ1lB6Mq3wuuTcbBUF8Pjg63wfMVC+HIeLLguvNtt5ZCl4HEI21vjYvJTK9hVbufV6SPIO6rxbJBgHN9+i+Prr0np35/EY49tVGuxp3YPz3z5DPOL5pNgJDC171SuGXANmUn7tvh9DgeOjRupXrqU0ueex9azpzVue+B+NQ1VP8ETI6xftLZUOO4Ma0v/+LNw7alk+4034dq+nSPv+QOekhJKZj3OUf94hPTKt6w6iawcqzjvZ0G6k5omfPcBLH3A2orv1BtG3YXvZ+Mxan7EWHi9VcOQf7l1m+GB/oVbucs6cumWB1f9Z98ORdVueHmSNf76wueaLpJrirPKej1bktTh4NRoSPOc1VZtwqF0lOFxWbsch/pOR30rn4HFt1lB46NH9/09O0BN6SR6FDwOUdVOD1Of+YyNP1Xx4jXDOPG40P7lZJomP0w8z5oNABipqaT060dybi7ePsew0Lae50sX4TV9TOo9iRvybqCLLQvnd99ZbcC/Wo99/foGswUyJk7gyHvuaVyvYZrw6mSrLmPCLOtWwU2LrQZCRjz0OgnvUWey86XV1HxeaHUPHXo8Pfuttf7jfPKvrKOUlm5LNU3Y+B/rzoPiTdC1v3VejWmdqedeFO7LGzmrn7d2bSY+bt2lsnerdati9R6r3bi2hEVax+e1Ogb/9KXV8OqGjyEzvA7GcmhS8DgEOdxerpmzipVbynjq8sGc2S/0Iir7hg1sufAiOt90E4m9jsb+1XpqvlyHfeNG4t3WnAVHeiJpAwbSoddxOL/5BsfGjYGWz3EZGQ0GnyXn5jY9kn31HFh0q1WoNtx/i6LPBz+u9fcleAeKN2L6YE/RsVRtdtNr5E5sfUZYgaFrn/BeGJ/XujVx+UOQ1hkmPRXWRMuo8PmsM/Sf1sOUl2DBDVbdxtT5cNTQg7s2kcPdjkKrud2Ex6y7sKRdUPA4xHi8Pm58ZQ3vf72bR6fkMWlQz5afVM9PD/6Z8tdfp/dHH+JMS+TVTa8yZ/0cauwVXJwwnIu9g0jf/BOOr9bj3rWLpOOPbxA0bEcfHdpZeNn38OQp1i/Xyxc0XbxYutmag7LpHczyHRgjb4f8qW0rdqz7/+ahspVd8h08eZI1VC79CKv4rZUjtUVkP6Z56Pxdl4hQ8DiE+Hwmt/37C95cu5P7z+vPlSfmhPV80+Wi6PSRJPfpwYcTE3imZjNlXjunZefyiwHX0rfnKZG5ldLnhTnjrRbSN30aGDUe01Y9C2tehovnWH1IREQkqKaCR5uqdwzD+DUwDasr0FfANUAqMBfIAbYAk03TDKGCLjaYpsn9i77mzbU7+e2Y48MOHQDV//sQ7969zO1czEuVyQyzO/jl3nLyf9gGhe9YD0rJ2tcDofPxMPL28AsUP51l3W0y6WmFjjpDp1n/ExGRVml18DAMowdwC9DPNE27YRjzgEuAfsAHpmk+ZBjGHcAdwO0RWW07sHDdTl74dAvTTjmGX5zxs/Av4Kyi4h9340v28UrfJH6ZdxPXnXCJdddJpX9aZNUufxdI/59XPQvfvW/N6Ogc4tf86StY+iD0O8/qNyEiIhIBbb1fKQFIMQzDjbXTsQu4Exjp//yLwHIUPABwe308tqSIft0yuGt83/D7Dezdiuf5KVR9W87K4R3o3KEjVw64BhKSrd2Mrn2DP2/rCpg7FZ49Ay5+wboVtjkepzWMKyULznlU564iIhIxra78M01zJzAT2Ab8CFSYpvkecIRpmj/6H/MjELTtpWEY1xmGsdowjNXFxcWtXcZhZcGanWwtreU3Y44nLi7MX+ZbV8Azo6j8Yg/4DN7o6+Cm/JsaNQELqteJMH0ZZPSEf10Enz+1r3AzmGUPwp4NcN4h0hhJRETajVYHD8MwsoDzgGOA7kCaYRghtG20mKb5tGmaQ0zTHNKlS5fWLuOw4fL4mLW0iIE9MxndN8zZImv/BS9OgJQsyiv7s6tbEkbvY5h4XBgNq7J6wc//D44/y5rjsOhWq9nQ/rausKaAFlxlPVZERCSC2jLY4UzgB9M0i03TdANvAicBuw3D6Abgf7un7cs8/M0v3MGOvXZ+Peb40I9YfF5ryuRbN0POyThHPYNz03e838/NLQW3NJixEpKkDjDlFWvUe+ELVtfNmtJ9n3dWwYLrrZBy1p/Du7aIiEgI2hI8tgEjDMNINazfpKOBjcDbwFX+x1wFvNW2JR7+nB4vs5cWMejojow8PsTdHUcFvDrFGm097HqY+gali9/HGwfFp/ThzKODtB4PRVycNWBt0tOwY5U1enrPRutz//d7a/jV+f/UHBAREYmKVheXmqb5uWEY84E1gAdYCzwNpAPzDMP4OVY4uTgSCz2czVu1nV0VDv7fRQNb3u1wVMKXc2HFP6xJpOc+CkOuxfR6KV44n6+ONZg+ckbbB2HlTbH6ULx+GTw7BoZNgzUvwsm3WjUhIiIiUdCmu1pM07wXuHe/Dzuxdj8Eqy367GXfMTQni1N+1rnpB+7+2rrt9cu54KqGbvlWcWfOKQCUfLiUxLJqdp3Xh8u7jYjM4o4aCtctg9cutUbWHzEARt0VmWuLiIgEofF/Ufbaym3srnTy6JT8xrsUHhdsfBtWPQfbPoX4JGts/NBp0HNwg4dueHk2ackw/op7IrvAzJ5w7X/hsyeg/wWQkBTZ64uIiNSj4BFFdpeXJ5ZvZsSx2Zx0XL3djvLtVnHnmhehptgaGT/mARh0OaRmN7pOSfE2slZ+y3cnHc2F3QdFfqGJaXDajMhfV0REZD8KHlH0yudbKa5yMvvSemHhi7mw8EYwfXD8OGt347gzmh2m9v6cP5Lvgfyrbj0AqxYREYkeBY8oqXV5eHL5Zk75WWeGH+tvwvX9cnjrJuh1Epz3D+u21Rbsqt5F8vufUXlkB4adNC66ixYREYmyttxOK814acVWSmtc/HpMb+sDuzfA3CusgW2XvBJS6AB46b2H6bPdR9cLp7T9ThYREZGDTMEjCqqdHp7632ZOP74Lg3tlQ8VOq1V5YhpM/TckZ4Z0ne/2fod78fuYBvS8eGqUVy0iIhJ9Ch5R8OKnW9hb6+bXY463+nK8OtnqCjr132GNl3+8cBanr4ekYUOxHXlkFFcsIiJyYKjGI8IqHW6e/vB7RvfpSn63VHj1YijeBJfNgyNzQ77OF8Vf8OOKpXQp99H5wouiuGIREZEDR8Ejwp7/+Acq7G5+fWZv+M+vrILS856An4XXU+3va/7O2K9tGKlJdDizle3RRUREDjE6aomgilo3z330A2P7HcGAoifgi1dh5J0wKLz6jK9Lv+aL7SsZsclHxrhxxKWmRmnFIiIiB5aCRwQ99/H3VDk93NdzDfzv/0H+5XD67WFf582iNzm5KIF4u4vM88+LwkpFREQODgWPCKl1eXhxxVZuzdlG94/usJqCTXgMwrwF1u6x887373BeUQa2Hj1IHTIkSisWERE58BQ8IuTfq3fQ0/Etvyx5ALr2g4tfhHhb2Nd5f+v7HPdNJd2/LibzgkkYzXQ0FREROdyouDQCvD6TDf+bx7+THyE+tZO/V0dGq67131Wv8atFkNS7N51+/vMIr1REROTg0j+n28o0+XbBgzzk+DPuzGPg5/8HGd1adanvy75j1JwvSPHE0eOxR4lLTo7wYkVERA4uBY+28DgxF95I36/+yocJJ5J+w/thNQjb31cz72XAVpOOd/2OpOOOi+BCRUREDg0KHq1VXQwvTsD44jUe81zAttH/ID45vdWXq/j0E362YA3fDO9GzylXRHChIiIihw7VeLTGT1/Ba5dCTQlPdf0DL5QM5NMhR7f6cp7SUrbf9ht+yoLsu++I4EJFREQOLdrxCNfGRfDcWeDzsmPSmzy0vS9XjOhFamLrMpzp87Hr9jswK6t48dIunHxceB1ORUREDicKHqEyTfhwJsydCl1OgOuW8eS3HbDFxXHliTmtvmzpc89R8/HHzDnTYPgpk4mPi4/cmkVERA4xCh6h+s+vYOkDkHsxXLOYUiOL+YU7mDSoB106JLXqkrVr1lL82N/ZM6I3S/LjmNR7UoQXLSIicmhR8AhFbRmseREGXwMXPAO2FP712TacHh/TTj2mVZf0lpez87e/xda9OzPPrGVE9xPpkd4jwgsXERE5tCh4hGLXGutt/0lgGDjcXl5asYUz+nSl9xEdwr6caZrsuuv3eEpKKL7rKrZ4d3PB8RdEds0iIiKHIAWPUOxcCxjQPR+AN9fspLTGxfRTj23V5fa+/DLVS5dyxIwZ/NsoJCspizOOOiOCCxYRETk0KXiEYmchdO4NyZn4fCbPfvQ9uT0yGXFsdtiXcnzzDbv/OpP00aPxXXQ2y7YtY8JxE0iMT4zCwkVERA4tCh4tMU0rePQYDMAHm/bwfUkN0049BiPMybMAex7+K/FpaXR/8E8s+n4RHtPDBb11zCIiIrFBwaMllTuhZk8geDzz0ff06JjC+Nzw57HUrFhBzSef0OmG64nLzOSNojfI75LPcR3VHl1ERGKDgkdLdhZab7sXsG57OSt/KOOak3OwxYf30pmmyZ6/PUJC925kXXopa/esZUvlFu12iIhITFHwaMnOQoizwZEDeOaj7+mQnMAlw8Jvj171f/+HY/16utxyC3FJSbxR9AZptjTOyjkrCosWERE5NCl4tGTnGjgyl+2VXt796kcuG3406UnhtUc33W72PPooSb17kzlhApWuSt7b8h5nH3M2qbbUKC1cRETk0KPg0RyfF3atgx6Dee7jH4gzDK4+KSfsy5S/8Qburdvo8ptfY8TH8+737+LwOrio90WRX7OIiMghTMGjOSVF4KrC130QbxTu4JyB3eiWmRLWJXy1tRT/4x+kDB5M+siRALxR9AYnZJ1Av079orBoERGRQ5eCR3P8haVlHXOpcnoY0isr7EuUvfQy3uISuv72txiGwfqS9Wws28gFvS9o1e24IiIihzMFj+bsLITEDnxvdgfgqOzw6jE8e/dS+uyzpJ9xBqkFg/CZPh5e9TAdkzpy7nHnRmPFIiIihzQFj+bsWgPd89m21wFAr05pYT299Kmn8dXW0vXXtwLw9ua3WbtnLb8Z/BsyEjMivlwREZFDnYJHU9wO+Gk99BjMttIa4gzo0TH0+g73zp3sfeUVMs8/n6TevalwVvDI6kfI75LPeT87L4oLFxEROXQpeDRl93rwua3gUVZLt8wUEhNCf7mKH58NhkGXX/4CgL+v+TuVrkruHnE3cYZedhERiU36DdiUnWustz0Gs7Wsll6dQq/vcHz7LRVvvUXW1KnYunXjy+Ivmf/tfC7rexknZJ8QpQWLiIgc+hQ8mrKzENKPgIzubC+r5egwCkuLH32MuLQ0Ol03Ha/Py58++xNdUrpwU95NUVywiIjIoU/Boyn+ibTVLi8l1S6ODnHHo7awkOply+g0fToJWVnM/WYuG8s2MmPYDNIT06O8aBERkUObgkcw9nIoLYIeBWwvqwUIacfDNE32zPwbCV26kH3lFZTYS3h87eOc2O1EzuqlmSwiIiIKHsH8uM56272AraVW8OiV3fKttNXLlmFfu5bON99MXEoKM1fPxOl1ctfwu9QsTEREBAWP4PwdS+k+iG1lNUBoOx6lTz2N7eij6XjhBaz8cSXvfP8O1w64lpzMnCguVkRE5PCh4BHMzjWQfRykZrOtrJbMFBuZqbZmn+L45hvsX3xB1qWX4omDP33+J3qk92Ba7rQDtGgREZFDX3jz3WPFzjWQcwoAW0tDu6OlfO5cjMREMs8/jxe+fpEfKn7gH6P/QXJCcrRXKyIictjQjsf+KndB1S7oUQBg3Urbwh0tvtpaKt7+Dx3OOos9NjtPffEUo48ezWk9TzsQKxYRETlsKHjsr17jMI/Xx469dnq1sONRuXgxvupqsqZM5qGVD2EYBrcPvf0ALFZEROTwouCxv52FEJcAR+byY4UDj89s8ahl79x5JB53HKu6VrNs+zJuyLuBbundDtCCRUREDh8KHvvbtQa69gNbCtvqeng0c9Ti+PprHF99RdaUyfznh0V0TenKFX2vOFCrFREROawoeNTn88HOtdBjMMC+4NHMjsfeefMwkpLIPO88yh3ldE/vji2++TtgREREYpWCR31lm8FZEQgeW0trscUbdMtMCfpwX00Nlf9ZRMa4ccRnZlLhqqBjUscDuWIREZHDioJHfXWNwwI7HjX0zEolPi5419GKd97BV1NDxylTrPedFWQkZRyQpYqIiByOFDzq27kGbGnQxRpdv62FqbTlc+eR1Ls3KYPyrfed5WQmZR6QpYqIiByOFDzq21kI3fMhLh7TNJttHmZfvwHHhg10nDIFwzBweV3YPXYyExU8REREmqLgUcfjgp++DDQOq7C7qXJ46NXEHS3lc+diJCeTOXECAJWuSgDVeIiIiDRDwaPOng3gdUF3K3jUTaUNtuPhra6m4p13yBg/nvgMq6ajwlkBoKMWERGRZih41GlUWNp0D4/KRYswa2vJmjI58LFyZzmAiktFRESaoeBRZ+caSO0MHY8Gmu7hYZome+fOI6lPH5IHDgx8vG7HQ0ctIiIiTVPwqLOz0KrvMKxbZ7eV1tI5PYnUxIYDfB1ffYVz40aypkzGMPbdZqujFhERkZYpeAA4q6D4m8AxC8DWspqghaV7587FSE0lY8KEBh8PBA/d1SIiItIkBQ+AXesAs0Hw2F5mb3TM4q2qonLxu2SeM5749PQGn6twVZBgJJBmSzsQKxYRETksKXjAvsJS/x0tTo+XXRWNg0fF229j2u10nDyl0SXqupbWP34RERGRhhQ8wJpI27EXpHUCYMdeO6ZJg6MW0zQpnzuP5H79SMkd0OgSFc4K1XeIiIi0QMEDrDta6h2zBLujxb5uHc5vvw3MZdlfhbNC9R0iIiItUPCo2g0V2xsGj9LGPTzK584jLjWVjHPOCXqZCpd2PERERFqi4LF7vfW2W17gQ9vKakmxxdMlPSnwsaolS+gwbhzx6cGLR3XUIiIi0jIFj5pi621G98CH6obD1RWKmqaJr7oa25FHNnkZBQ8REZGWKXjUllpvU7MDH9peVstR9eo7TJcLACM5Oegl3F43tZ5a1XiIiIi0QMGjthSMeEi2Wp2bpsm2stqGd7Q4HADEJScFvUSFS+3SRUREQqHgUVsKqZ0CrdKLq53Y3d4Gd7T4nE4AjMQmgofapYuIiIREwaMuePgFu6PFrAseTex4aDKtiIhIaBQ8assaBI+t/uDRK7tx8IhL0o6HiIhIWyh41JY2KCzdVlaLYUCPrJTAx3wO/45HUvDi0rrgoRoPERGR5il47H/UUlZL98wUkhLiAx8znVZxqZGUGPQSla5KQJNpRUREWhLbwcPna3TUsq2slqOyUxo8LHDU0sTttOXOck2mFRERCUFsBw9nBZjeRjUevbIbBohQjlo0mVZERKRlsR08auqah1nBo9bloaTa2eCOFgDTVVdcGvyoRV1LRUREQhPbwaO2YfAINpUWwOdvINZU59IKlybTioiIhELBAwJ3tQR6eOwXPExHyw3EtOMhIiLSMgUPgLTOwL4dj15NHbU01TJdwUNERCQkCh7Q4KglIzmBjqkNazkCxaVNHbUoeIiIiIREwSMhGWzWDsfW0tpGhaVQr2V6YuPiUk2mFRERCV2MB4+yBgPitpU1vpUWrAZiRlJS0Ntl6ybTasdDRESkZTEePPa1S/f6THbsreWo7MY7Hj6nC6OFOS1qly4iItIyBQ9/fcePFXbcXrNRYSmA6XC0OCBOk2lFRERapuDRQg8PAJ//qCWYcmc5oKMWERGRUCh41AWPJnp4AJhOF0Yzt9KCjlpERERC0abgYRhGR8Mw5huGsckwjI2GYZxoGEa2YRjvG4ZR5H+bFanFRpTXA47yBjseCXEG3TumNHqoddQS/FZaTaYVEREJXVt3PP4O/Nc0zT5AHrARuAP4wDTN3sAH/vcPPfYy660/eGwtq6VnVgrxcY3vXPG5nM0etcQb8ZpMKyIiEoJWBw/DMDKA04DnAEzTdJmmWQ6cB7zof9iLwPltXWRU7NcufXtZLUd3Ch4eTIezxa6lmkwrIiLSsrbseBwLFANzDMNYaxjGs4ZhpAFHmKb5I4D/bdcIrDPyAsHDape+tbSWo7MbH7OA1UBMc1pERETari3BIwEoAJ40TXMQUEMYxyqGYVxnGMZqwzBWFxcXt2EZrVSvXXpFrZsKuzto8zAAn9OpybQiIiIR0JbgsQPYYZrm5/7352MFkd2GYXQD8L/dE+zJpmk+bZrmENM0h3Tp0qUNy2ilesGj7lbaYM3DoK64tHG7dNCOh4iISDhaHTxM0/wJ2G4Yxgn+D40GvgbeBq7yf+wq4K02rTBa6tV4bC2rARpPpa1jFZdqQJyIiEhbJbTx+b8EXjEMIxH4HrgGK8zMMwzj58A24OI2fo3oqC2DxA6QkBTCjoez2T4eCh4iIiKhaVPwME1zHTAkyKdGt+W6B0S9OS3bSmvpnJ5IelLwl8N0OoO2TNdkWhERkfDEbufS/dqlB+tYCmD6fJguV9CjFk2mFRERCY+CB3W30jYRPJxOAIwgxaVqly4iIhKemA8eLo+PHyvsTTcP8wePYC3TNZlWREQkPDEcPMogtRM7y+34zODD4cDq4QEEbZmuybQiIiLhic3g4XaAqxpSs9mx139HS1bTXUuBoC3T63Y8VFwqIiISmtgMHnU9PNI6U17rBqBTevAGYT6HAyBocWndZFrVeIiIiIQmtoNHaicqHVbwyEi2BX2o6XQBTReXajKtiIhI6BQ87B4AMlKaCh7WjkdckFkt5c5yTaYVEREJg4KHw01ifBxJCcFfCp+j6eJSdS0VEREJT4wGjzLrbWonKu1uMlISmty1MF3NBA9NphUREQlLjAaPUsCA5I5UOjx0aKK+A6zJtBD8qKXSWakdDxERkTDEbvBI6QjxCdaOR3LTI2t8geLS4H08FDxERERCF7vBw98uvdLhbrKwFOoVl6rGQ0REpM0UPOzuJm+lhfp9PBoGD02mFRERCV+MBo+yejseHjJSmj5qCfTx2K/GQ5NpRUREwhejwaMUUrOBlnc8TKcDDAPD1vAxmkwrIiISvtgLHqYJtSWQ2hmnx4vT42u2xsPndGIkJTW63VaTaUVERMIXe8HDVQ1eF6R2osrh71razF0tpsPZZGEp6KhFREQkHLEXPBq0S/fPaWnurhaXs8lbaUGTaUVERMIR28EjsOPR3F0tzkaFpaDJtCIiIq0Rg8GjYbt0oPm7WhwO4jSZVkREJCJiMHjU7XhkU+nwB4/mdjxcToykxjsedc3DNJlWREQkdDEcPDpRabeOWpqf1dJ0jYcKS0VERMITm8HDiIfkzH07Hs02EGvirhZNphUREQlbbAaP1E5gGFTa3STEGaTY4pt8uM/ZRHGpJtOKiIiELXaDB/sGxDVXp2E6HBhBikt11CIiIhK+GAwe9ea02D3NNg+DuqOWpotLRUREJHQxGDxKIa3hjkdz6lqm16fJtCIiIq0Te8GjpqTejkfzA+LAv+OR3DB4aDKtiIhI68RW8PD5wF7vqMXhafaOFqjb8Wh41KI5LSIiIq0TW8HDUQ6mLxA8qhzN73iYXi+43Y2KSxU8REREWie2gke9dungLy5tbkCc0wlAXLJ2PERERCIhxoLHvnbpLo8Pu9vb7F0tPn/wMBIb1nhoMq2IiEjrxGjw6ERVoGtpyzsexn7FpZpMKyIi0joxGzwqHXVzWpqfTAs0apmuybQiIiKtE7vBwx7CZFqnCyDoXS2aTCsiIhK+2AseCclgS603IK65oxb/jkdy4xqPjMSM6K1TRESknYqx4FFWb0CcddTS7O20dTUe+x+1uCpU3yEiItIKMRY8Gg6IA5ptIOZzBA8emkwrIiLSOrEbPEKo8QgctQQpLlXwEBERCV+MBY+SBjse8XEGqYnxTT480MdjvwZi5c5yBQ8REZFWiLHgUdqwa2lyQrN3ppiOxg3ENJlWRESk9WIneHjd4KhosOPR3B0tAKarrmX6vuChybQiIiKtFzvBw77XepuaDUCVw9NsfQfUKy6td9SiOS0iIiKtFzvBo17zMLCKS5u7owXqFZcm7ptOq+AhIiLSerEbPBzulnc8nE6IiwPbvscpeIiIiLRe7AYPu6fZOS1gFZcaSUkNClADNR4qLhUREQlb7AaPEHY8TKczaA8P0I6HiIhIa8Rg8MjG7fVR6/K2eFeLz+lo3C7dP5nGAuckAAAgAElEQVQ23ZYerZWKiIi0WzEUPMogKQMSkqhy1M1paam41IWRHLxrqSbTioiIhC+Ggkdp4FbaQLv0lvp4OB3EJTXsWlrhqtBkWhERkVaKneBRU9J4QFwIfTz2P2opd5ZrMq2IiEgrxU7w2K9dOoSy49G4uFSTaUVERFovhoJHWeMdjxYaiDVVXKrgISIi0joxFDxKG3QthZaPWqzi0saTaVXjISIi0jqxETzcdnDX7CsudYRYXOpwNDhqqZtMqxoPERGR1omN4FFbZr3173hUOTzEGZCWGN/s03zOhsWlmkwrIiLSNjESPIINiLO12IvDdDob9PGodFYCCh4iIiKtFZvBw9HynBbwH7Uk7gse5c5yQMFDRESktWIzeNhbntMC4HM1LC7VnBYREZG2iZHgUVfj0RkIcUCcxwMeD0ZSYuBjmkwrIiLSNjESPEoBA1Ksu1Eq7Z4We3iYTidAg5bp2vEQERFpm9gJHilZEGfdxRLKjofPHzzqF5dqMq2IiEjbxEjw2DenBfbd1dIc0+EAaNDHQ5NpRURE2iZGgse+rqUer48alzf0HY/6Ry2aTCsiItImMRI8yho0D4OW57SYgeCxr7i03Fmu+g4REZE2iJHgUdq4XXqLc1r8xaX1bqetdFaqXbqIiEgbtP/gYZr7DYir2/Fo4ajF4d/xSGxc4yEiIiKt0/6Dh6savK56XUvrdjxaOmrxF5cmN5zVohoPERGR1mv/wSNI11IIYccjcDutddTi9rqpcdfoqEVERKQNYid4pFldS+uKS1ua1WLud9SiybQiIiJtFwPBo65d+n5HLS318XDVFZdawUOTaUVERNouBoJH3VGL/64WuxvDgPTE5nc8fP4GYoa/gVhgMq3mtIiIiLRaDAWPuh0PDx2SEoiLa777qOl0AfsaiAXmtCQreIiIiLRWbASPuARIsu5GCaVdOjS+q0WTaUVERNqu/QePGv+cFv98lVAGxIG/j0d8PEaCdSSjybQiIiJt1/6DR73mYWA1EGupXTpYnUv3HxCnybQiIiJtEwPBo6xh8Ah1x8PpCBSWgibTioiIREIMBI99c1ognBoPV6B5GKhrqYiISCTESPCov+PhCWnHw3Q4iEvcN5lWc1pERETarn0HD58P7PuOWjxeH9XO0Go8fC5nwx0PZ4XapYuIiLRR+w4ejnIwfZBqtUuvdvon04a04+HESNZkWhERkUhq38Fj/3bp9tDmtEDdUYsm04qIiERSOw8e+7VLD3FOC4DPta+41OPzUOOuISNJwUNERKQtYiR47DcgLsTiUiPJKi6tdlVbz9OOh4iISJvEVvDwH7WE3kDM2vGoclcB0CGxQxQWKSIiEjtiK3iEsePhczoDDcSqXP7gYVPwEBERaYt2HjxKICEFElMBq3kYhFbjYTocgQFxgeChHQ8REZE2aXPwMAwj3jCMtYZhLPK/n20YxvuGYRT532a1fZmt5Khs1DzMMKBDUih9PFwYdUctCh4iIiIREYkdj18BG+u9fwfwgWmavYEP/O8fHBNnwS1rAu9W2t2kJyUQF9f8vBXTNBsUlyp4iIiIREabgodhGD2Bc4Bn6334POBF/59fBM5vy9dos4R9vThCHRCHxwM+H3H+22krXZWAgoeIiEhbtXXH4zHgd4Cv3seOME3zRwD/267BnmgYxnWGYaw2DGN1cXFxG5cRmkq7J7QeHk4nAEbivhoPA4M0W1pU1yciItLetTp4GIZxLrDHNM3C1jzfNM2nTdMcYprmkC5durR2GWGxdjxCu5UWCLRMr3JVkZ6YTpzRvmtxRUREoq3l38JNOxmYaBjGeCAZyDAM41/AbsMwupmm+aNhGN2APZFYaCRU2t0clZ3a4uNMhwOAuHq306p5mIiISNu1+p/wpmneaZpmT9M0c4BLgKWmaV4OvA1c5X/YVcBbbV5lhFQ5PCHNaQkctdS7q0X1HSIiIm0XjbODh4AxhmEUAWP87x8SKu2hFZfWHbXU9fGodFUqeIiIiERAW45aAkzTXA4s9/+5FBgdietGks9nUu0KsbjUf9RS17m02l1Nz/SeUV2fiIhILIiZaskqpwfTJMTiUhdAg5bp2vEQERFpu5gJHmG1S3c2Li5V8BAREWm72Ake4QyIc9TdTpuM1+el2l2t4CEiIhIBsRM87B4AMlJCOGpx+YtLk5KodlcD6loqIiISCbETPMLa8dhXXKo5LSIiIpETO8HDX+ORGVKNh7+4NDlZwUNERCSCYid4OPxHLSH18fAXlyYmBoKHOpeKiIi0XewED/+OR3pYnUt11CIiIhJJsRM8HG46JCUQH2e0+FjT4YSEBIyEBCpdlYCCh4iISCTETvCwh9a1FKyjlrh6XUtBwUNERCQSYid4ONwhDYgD66jFSN43IM7AIN2WHs3liYiIxITYCR4hDogD66jFSEoErOCRbksnzoiZl0pERCRqYua3aZXDE1LzMLAaiMUlWTsela5K0hO12yEiIhIJMRM8Kh2h73j4HE4NiBMREYmC2AkednfoxaUOhwbEiYiIREFMBA+fz6TK6SEj1OJSl3Y8REREoiEmgke1y4NpEsaOhxMjeV/wUNdSERGRyIiJ4FHXtTTku1qc+4pLteMhIiISOTESPPxzWkK8q8XntI5afKaPane1goeIiEiExEbwcIS/42EkJ1HtrsbEpINNwUNERCQSYiN41B21hHNXS2IS1S61SxcREYmk2AgeDv9RS6h9PPwt0+sm06q4VEREJDJiI3j4dzxCmdVimqZVXJqcpMm0IiIiERYbwcMRRvBwu8E0MRKTAjseapkuIiISGbERPOwe0hLjSYhv+ds1nU4AjOR9wUM7HiIiIpERE8GjyhFeu3SAuKQk1XiIiIhEWEwEj7AGxDldABhJ+4pL02xpUVubiIhILImN4GH3hNw8zHRaOx5GUiKVrkrSbGkkxIX2XBEREWlebASPcHY86o5a/LfTqr5DREQkcmIneIRa47HfUYuCh4iISOTERvCwe8gI4VZa2HfUEpeUaM1pUbt0ERGRiGn3wcPnM8O6q8UXuJ3W2vHQHS0iIiKR0+6DR43Lg88MY0Ccwx88Eq3OpTpqERERiZx2HzwCc1rCvKslzt9ATF1LRUREIqf9B4/AnJbwjlrMRJtV46EdDxERkYiJmeAR7lGLI96Hz/SpxkNERCSC2n/wCPeoxWUFj5o4/06JdjxEREQipv0HjzB3PHz+HY9KrFoPBQ8REZHIaf/Bw+EPHiE3EHNi2GxUe2oABQ8REZFIavfBo8p/1NIhxAZiPqcDo95kWgUPERGRyGn3waPS7iY1MR5bfGjfqulwWs3D3FbwyLCpuFRERCRS2n/wCGNAHFhHLXGJidrxEBERiYL2HzzsnpDvaAGrj0ddu3RADcREREQiqP0Hj1bseBj+rqWpCakkxIUeWkRERKR5sRE8QryjBayW6XGJapcuIiISDe0/eNg9ZIR4RwtYfTw0mVZERCQ62n/wcLhDntMC/qOWJKu4VIWlIiIikdWug4dpmlTa3WEWlzqIS0qm0lWp4CEiIhJh7Tp41Li8+MzQ26UDmE5XoLhUwUNERCSy2nXwCMxpCae41OEgLimJKncVHWwKHiIiIpHUvoOHI7wBcQA+lyvQMl07HiIiIpHVvoOH3ZrTEk6Nh+lw4LHF4TN9uqtFREQkwtp18KgKc8fDNE1MpxN3ggGoXbqIiEiktevgEThqCbHGw3S5AHDFm4CCh4iISKS17+BRd9QSYgMx0+EAwJFgBQ91LhUREYmsdh48rB2PUBuI+ZxOABzxPgDVeIiIiERY+w4eDjcptngSE0L7Nk1/8LDHWTslOmoRERGJrPYdPOyesO9oAaiNV/AQERGJhnY98/2Os/tw48jjQn68z2kVl9YY/iMaNRATERGJqHYdPLLSEslKSwz58abT2vGoMdykJKRgiw+98ZiIiIi0rF0ftYSrrsajOs6p3Q4REZEoUPCox+ewgkel4VR9h4iISBQoeNRjuvzBA7uCh4iISBQoeNTj89/VUmEqeIiIiESDgkc9pv+opZxadS0VERGJAgWPeuqOWvb6atS1VEREJAoUPOqpKy4tM6t11CIiIhIFCh71BFqmx3sUPERERKJAwaMe0+mARBsYhoKHiIhIFCh41ONzuiDJ6nSq4CEiIhJ5Ch71mA4Hps1qk55hU3GpiIhIpCl41ONzOvAlWuNrtOMhIiISeQoe9ZhOF16b9ZIoeIiIiESegkc9psOBxxYPKHiIiIhEg4JHPT6XE7fNABQ8REREokHBox7T4cSdAEnxSSTGJx7s5YiIiLQ7Ch71+JwOnAna7RAREYkWBY96TKcLZ7xPwUNERCRKFDzqMR0OHAoeIiIiUZNwsBdwKPG5nNjjTAUPERGRKFHwqMd0OKmNj1PXUhERkShR8KjHdDqpiUvQjoeIiEiUKHj4mT4fpstFjeFV8BAREYkSFZf6mU4nAI541XiIiIhEi4KHX13wcKmPh4iISNQoePj5FDxERESiTsHDr27Hw63gISIiEjWtDh6GYRxlGMYywzA2GoaxwTCMX/k/nm0YxvuGYRT532ZFbrnR43M4AO14iIiIRFNbdjw8wG9N0+wLjABuNgyjH3AH8IFpmr2BD/zvH/JU4yEiIhJ9rQ4epmn+aJrmGv+fq4CNQA/gPOBF/8NeBM5v6yIPhPpHLRmJaiAmIiISDRGp8TAMIwcYBHwOHGGa5o9ghROgayS+RrT5HP4dD5uhHQ8REZEoaXPwMAwjHXgDuNU0zcownnedYRirDcNYXVxc3NZltJnpsoKHabORFJ90kFcjIiLSPrUpeBiGYcMKHa+Ypvmm/8O7DcPo5v98N2BPsOeapvm0aZpDTNMc0qVLl7YsIyJMf3GpLSXtIK9ERESk/WrLXS0G8Byw0TTNR+p96m3gKv+frwLeav3yDhyf0wVAYmr6QV6JiIhI+9WWWS0nA1cAXxmGsc7/sbuAh4B5hmH8HNgGXNy2JR4YptPa8UhJVWGpiIhItLQ6eJim+TFgNPHp0a297sFS18cjKVWFpSIiItGizqV+pv+oJSVNOx4iIiLRouDhV3fUkpqaeZBXIiIi0n4pePj5nE6ra2mSdjxERESiRcHDz2OvxaWupSIiIlGl4OHnqq2ydjxsKi4VERGJFgUPP5ejRgPiREREokzBw6/uqEXBQ0REJHoUPPw8DjtuBQ8REZGoUvDw8znsKi4VERGJsra0TG9XvA4n7gRDOx4i7Yzb7WbHjh04/N2JRSSykpOT6dmzJzabLaTHK3j4mf4+HumJGhIn0p7s2LGDDh06kJOTgzXbUkQixTRNSktL2bFjB8ccc0xIz9FRSx2nC7fNIDk++WCvREQiyOFw0KlTJ4UOkSgwDINOnTqFtaOo4OFnuNyQmKj/OIm0Q/p7LRI94f79UvDwi3O5ISnxYC9DRNqZ8vJynnjiiVY9d/z48ZSXlzf7mHvuuYclS5a06vrt0a233sqHH37Y5Oevvvpq5s+f3+jj06ZN4+uvv47m0qLqhRdeYNeuXc0+Zvbs2cyZM+cArahpCh5+cW4vhoKHiERYc8HD6/U2+9zFixfTsWPHZh9z//33c+aZZ7Z6fQeDx+OJynXLysr47LPPOO2008J+7rPPPku/fv2isKoDI5Tgce211zJr1qwDtKKmKXj4Jbh9xCWpvkNEIuuOO+5g8+bN5OfnM2PGDJYvX86oUaO47LLLyM3NBeD8889n8ODB9O/fn6effjrw3JycHEpKStiyZQt9+/Zl+vTp9O/fn7Fjx2K324GG/4LPycnh3nvvpaCggNzcXDZt2gRAcXExY8aMoaCggOuvv55evXpRUlLSaK033ngjQ4YMoX///tx7772Bj69atYqTTjqJvLw8hg0bRlVVFV6vl9tuu43c3FwGDhzI448/3mDNAKtXr2bkyJEA3HfffVx33XWMHTuWK6+8ki1btnDqqadSUFBAQUEBn376aeDrPfzww+Tm5pKXlxd4/QoKCgKfLyoqYvDgwY3WP3/+fMaNG9fgte/Xrx8DBw7ktttua/T4P/zhD1x99dX4fD5GjhzJ6tWrAUhPT+e3v/0tBQUFjB49muLi4kbP3b17N5MmTSIvL4+8vLzA+h955BEGDBjAgAEDeOyxxwCa/fmNHDmS22+/nWHDhnH88cfz0UcfAVYonTFjBkOHDmXgwIE89dRTTb4+8+fPZ/Xq1UydOpX8/HzsdnvQ7z01NZWcnBxWrlzZ6Ps5kHRXC2B6vcR7TeJTUg72UkQkiv74nw18vasyotfs1z2Deyf0b/LzDz30EOvXr2fdunUALF++nJUrV7J+/frAXQDPP/882dnZ2O12hg4dyoUXXkinTp0aXKeoqIjXXnuNZ555hsmTJ/PGG29w+eWXN/p6nTt3Zs2aNTzxxBPMnDmTZ599lj/+8Y+cccYZ3Hnnnfz3v/9tEG7qe/DBB8nOzsbr9TJ69Gi+/PJL+vTpw5QpU5g7dy5Dhw6lsrKSlJQUnn76aX744QfWrl1LQkICZWVlLb5WhYWFfPzxx6SkpFBbW8v7779PcnIyRUVFXHrppaxevZp3332XhQsX8vnnn5OamkpZWRnZ2dlkZmaybt068vPzmTNnDldffXWj63/yySdcdNFFgLX7sWDBAjZt2oRhGI2OrH73u99RUVHBnDlzGtUo1NTUUFBQwN/+9jfuv/9+/vjHPzJ79uwGj7nllls4/fTTWbBgAV6vl+rqagoLC5kzZw6ff/45pmkyfPhwTj/9dLKyspr9+Xk8HlauXMnixYv54x//yJIlS3juuefIzMxk1apVOJ1OTj75ZMaOHcumTZuCvj6zZ89m5syZDBkypNnvfciQIXz00UcMGzasxZ9XtGjHA+tWWoCEZAUPEYm+YcOGNbj1cNasWeTl5TFixAi2b99OUVFRo+ccc8wx5OfnAzB48GC2bNkS9NoXXHBBo8d8/PHHXHLJJQCMGzeOrKysoM+dN28eBQUFDBo0iA0bNvD111/zzTff0K1bN4YOHQpARkYGCQkJLFmyhBtuuIGEBOvfr9nZ2S1+3xMnTiTF/w88t9vN9OnTyc3N5eKLLw7UVyxZsoRrrrmG1NTUBtedNm0ac+bMwev1MnfuXC677LJG1//xxx/p0qVLYJ3JyclMmzaNN998M3A9gAceeIDy8nKeeuqpoIWRcXFxTJkyBYDLL7+cjz/+uNFjli5dyo033ghAfHw8mZmZfPzxx0yaNIm0tDTS09O54IILAjsYzf38gv3M3nvvPV566SXy8/MZPnw4paWlFBUVNfn61Nfc9961a9cWj2SiTTsegM8fPGwpaQd5JSISTc3tTBxIaWn7/luzfPlylixZwooVK0hNTWXkyJFBb01MSkoK/Dk+Pj6wVd/U4+Lj4wO1FKZptrimH374gZkzZ7Jq1SqysrK4+uqrcTgcmKYZ9JdzUx9PSEjA5/MBNPo+6n/fjz76KEcccQRffPEFPp+P5OTkZq974YUXBnZuBg8e3GhHCCAlJSXwNRMSEli5ciUffPABr7/+OrNnz2bp0qUADB06lMLCwsBuQUtCvWujude5uZ9fUz+zxx9/nLPOOqvBdf773/+2uJ7mvneHwxEIfweLdjwAV201ALZkBQ8RiawOHTpQVVXV5OcrKirIysoiNTWVTZs28dlnn0V8Daeccgrz5s0DrH9J7927t9FjKisrSUtLIzMzk927d/Puu+8C0KdPH3bt2sWqVasAqKqqwuPxMHbsWP75z38GflHWHbXk5ORQWFgIwBtvvNHkmioqKujWrRtxcXG8/PLLgULbsWPH8vzzz1NbW9vgusnJyZx11lnceOONXHPNNUGv2bdvX7777jsAqqurqaioYPz48Tz22GOBoy6wdn3uuOMOzjnnnKA/G5/PF6ibefXVVznllFMaPWb06NE8+eSTgFWPUVlZyWmnncbChQupra2lpqaGBQsWcOqppzb5GjTnrLPO4sknn8TtdgPw7bffUlNT0+TrU///Z819799++y0DBgxo1ZoiRcEDqKoqBSAxVV1LRSSyOnXqxMknn8yAAQOYMWNGo8+PGzcOj8fDwIED+cMf/sCIESMivoZ7772X9957j4KCAt599126detGhw4Nx0Pk5eUxaNAg+vfvz7XXXsvJJ58MQGJiInPnzuWXv/wleXl5jBkzBofDwbRp0zj66KMZOHAgeXl5vPrqq4Gv9atf/YpTTz2V+Pj4Jtd000038eKLLzJixAi+/fbbwG7IuHHjmDhxIkOGDCE/P5+ZM2cGnjN16lQMw2Ds2LFBr3nOOeewfPlywApI5557LgMHDuT000/n0UcfbfDYiy++mOnTpzNx4sRGu0dpaWls2LCBwYMHs3TpUu65555GX+vvf/87y5YtIzc3l8GDB7NhwwYKCgq4+uqrGTZsGMOHD2fatGkMGjSoydegOdOmTaNfv34UFBQwYMAArr/+ejweT5Ovz9VXX80NN9xAfn5+s9/7J598ctDvgjJC2YKLtiFDhph11cQHw/eFy3BOvYmf7rqCUVfeddDWISKRt3HjRvr27Xuwl3FQOZ1O4uPjSUhIYMWKFdx4440N/hV8uJg5cyYVFRU88MADTT7mlFNOYdGiRS3ehtyc9PR0qqurW/38Q9XatWt55JFHePnllyN+7WB/zwzDKDRNc8j+j1WNB1BTXU4CkJKaebCXIiIScdu2bWPy5Mn4fD4SExN55plnDvaSwjZp0iQ2b94cqFVoyt/+9je2bdvWpuDRXpWUlDQb2g4UBQ/AXlNOByAlTcFDRNqf3r17s3bt2oO9jDZZsGBBSI8bPnx4m79We9ztABgzZszBXgKgGg8AamsrAO14iIiIRJuCB+CotRoKpaUHv7ddREREIkPBA3DWWrcgpSt4iIiIRJWCB/v6eCSrxkNERCSqFDwAt6MGgPh6neVERCKhuem0oXjssccCzaLao8cee4yXXnqpyc/fd999DXp51LnnnntYsmRJNJcWVQsXLgy0iW/KokWLGgzray8UPAC33QoeRrKm04pIZLWH4BGtMfYej4fnn38+6NyVltx///0HvRFWW4QSPM455xzefvvtg/7zjzQFD8Dr71oXpx0PEYmwurHu+fn5gc6lf/3rXwPjzuv+RVtTU8M555xDXl4eAwYMYO7cucyaNYtdu3YxatQoRo0a1eja999/P0OHDmXAgAFcd911gVkh3333HWeeeSZ5eXkUFBSwefNmoPE4daDBOPiSkhJycnIAeOGFF7j44ouZMGECY8eOpbq6mtGjR1NQUEBubi5vvfVWYB0vvfRSoIPpFVdcQVVVFcccc0yg3XdlZSU5OTmB9+ssXbqUgoKCwKC5WbNmBUa51w21q++ZZ57h7LPPxm63c/XVVwfamufk5ARGyw8bNizQNr2+6upqrrnmGnJzcxk4cGCgnftrr71Gbm4uAwYM4Pbbbw88Pj09nd///veB4X27d+8GrA6ht9xyCyeddBLHHntsYA1N/VyDvT6ffvopb7/9NjNmzCA/P5/NmzcH/d4Nw2DkyJEsWrSo0fdzOFMfD8DrdGAagM12sJciItH07h3w01eRveaRuXD2Q01++qGHHmL9+vWBTqHvvfceRUVFrFy5EtM0mThxIh9++CHFxcV0796dd955B7BmmWRmZvLII4+wbNkyOnfu3Ojav/jFLwLtvK+44goWLVrEhAkTmDp1KnfccQeTJk3C4XDg8/mCjptvyYoVK/jyyy/Jzs7G4/GwYMECMjIyKCkpYcSIEUycOJGvv/6aBx98kE8++YTOnTtTVlZGhw4dGDlyJO+88w7nn38+r7/+OhdeeCG2/f4b+8knnzB48OAGr9UPP/xAUlJSozH2s2fP5r333mPhwoUNBq7VycjIYOXKlbz00kvceuutjX5ZP/DAA2RmZvLVV9bPf+/evezatYvbb7+dwsJCsrKyGDt2LAsXLuT888+npqaGESNG8OCDD/K73/2OZ555hrvvvhuwpuB+/PHHbNq0iYkTJ3LRRRc1+XPt1KlTo9cnOzubiRMncu6553LRRRc1+73XjbGfPHlyiz+vw4V2PACfw4HHFh/yBEIRkdZ67733eO+99xg0aBAFBQVs2rSJoqIicnNzWbJkCbfffjsfffQRmZktF7svW7aM4cOHk5uby9KlS9mwYQNVVVXs3LmTSZMmAdZwtdTU1JDGqe9vzJgxgceZpsldd93FwIEDOfPMM9m5cye7d+9m6dKlXHTRRYFgtP8Ye4A5c+YEHexWf4w9wMCBA5k6dSr/+te/ArsgAC+//DLvvvsub7zxRtDQAXDppZcG3q5YsaLR55csWcLNN98ceD8rK4tVq1YxcuRIunTpQkJCAlOnTuXDDz8ErBk15557LtB4jP35559PXFwc/fr1C+yENPVzber12V9T3/uhMMY+0rTjAZhOJz5b08OMRKSdaGZn4kAxTZM777yT66+/vtHnCgsLWbx4MXfeeSdjx44NOpysjsPh4KabbmL16tUcddRR3HfffYEx9k193baMsX/llVcoLi6msLAQm81GTk5O4OsFu+7JJ5/Mli1b+N///ofX6w06EbX+GHuAd955hw8//JC3336bBx54gA0bNgAwYMAA1q1bx44dOzjmmGOCfn/11xBsPcHW2dysMpvNFnh8/XH10HDEfd01mvq5zpo1K6R/1Ab73hMSEg6JMfaRph0PAJcbX6IymIhEXv1x5WCNO3/++ecDbbl37tzJnj172LVrF6mpqVx++eXcdtttrFmzJujz69T9wu7cuTPV1dWBWoOMjAx69uzJwoULAWtAXG1tbZPj1OuPsa9fr7C/iooKunbtis1mY9myZWzduhWwxsPPmzeP0tLSBtcFuPLKK7n00ktDGmPv8/nYvn07o0aN4uGHH6a8vDzwGg0aNIinnnqKiRMnNvmv/7lz5wbennjiiY0+P3bsWGbPnm9AZZ8AABr/SURBVB14f+/evQwfPpz//e9/lJSU4PV6ee211zj99NObfA2a09TPtanXp/7Ptbnv/VAYYx9pMf/b1u11E+/yQGLqwV6KiLRDnTp14uSTT2bAgAGcffbZ/PWvf2Xjxo2BX47p6en861//4rvvvmPGjBnExcVhs9l48sknAbjuuus4++yz6datG8uWLQtct2PHjkyfPp3c3FxycnIYOnRo4HMvv/wy119/Pffccw82m41///vfjBs3jnXr1jFkyBASExMZP348f/7zn7ntttuYPHkyL7/8MmeccUaT38fUqVOZMGFCYBx7nz59AOjfvz+///3vOf3004mPj2fQoEG88MILgefcfffdgWOQ/Z199tlcccUVAHi9Xi6//HIqKiowTZNf//rXDQa9nXLKKcycOZNzzjmH999/v9G1nE4nw4cPx+fz8dprrzX6/N13383NN9/MgAEDiI+P59577+WCCy7gL3/5C6NGjcI0TcaPH895553X5GvQnLFjxwb9uTb1+lxyySVMnz6dWbNm8frrr/Pzn/886Pe+bNky/vKXv7RqTYcqo7mtpgNlyJAhZl1V9YFW5ijj7cmnMNDRmYL3PjwoaxCR6Ak2rlsOjPnz5/PWW281O4Z90qRJPPzww/Tu3bvVXycnJ4fVq1cHLcA9nO3evZvLLruMDz744GAvpUXB/p4ZhlFomuaQ/R8b8zseVa4qEj3q4SEiEkm//OUveffdd1m8eHGzj3vooYf48ccf2xQ82qtt27bxt7/97WAvI+LadfAori2mxl1DfFw8tjgb8UY8CXEJxMfFk2AkkBCXQIWzApsH4tLUw0NEJFIef/zxkB53wgkncMIJJ7Tpa9W/46Q9qX981p606+DxxBdPMP/bpoul6vzJYxKf3L6qhkVERA5F7Tp4XNj7QoYcMQSv6cXj8wT+V/d+3dser71GRnqng71cERGRdq9dB48BnQcwoHPLtyFt5i3i29l90iIiIoci9fEAfE4nRpKKS0VERKJNwQOrc6mRlHiwlyEi7VBbptOOHz++0cyS/R3u4+Ej7dZbbw20PY+0LVu2BG3mtXr1am655ZaofM0DYcuWLbz66qvNPsblcnHaaadFZFKxggdgOhzEacdDRKKgueDh9Xqbfe7ixYsbNNEK5nAcDx+JX17BlJWV8dlnn3HaaadF5fpNGTJkCLNmzTqgXzOSQgkeiYmJjB49OtAhti0UPACfy4XRxOAhEZG2uOOOO9i8eTP5+fnMmDGD5cuXM2rUKC677DJyc3MBa+jY4MGD6d+/P08//XTguTk5OZSUlLBlyxb69u3L9OnT6d+/P2PHjsVutwM0Gg9/7733BkbXb9q0CYDi4mLGjBlDQUEB119/Pb169aKkpKTRWm+88UaGDBlC//79G4x1X7VqFSeddBJ5eXkMGzaMqqoqvF4vt912W2DMfN3ts3VrBmsnYOTIkQDcd999XHfddYwdO5Yrr7ySLVu2cOqpp1JQUEBBQQGffvpp4Os9/PDD5ObmkpeXF3j9CgoKAp8vKipqMNW2zvz58xk3blyD1y/Y61FWVsb555/PwIEDGTFiBF9++WWja23YsIFhw4aRn5/PwIEDKSoqavD577//nkGDBrFq1SqWL18eGCh33333ccUVV3DGGWfQ+/+3d+/RMZ/5A8ffj1wkoXGL9EdpE+dYNDEzQTTEJaQiqiIoW7e0LFrW5Xe6FLUt2upa19bZbi1tXFIlWhV7hG50k5Qo0qRVjUqFCiVBxP5Cisjl+/tjku8mZgbVzETH53WOI/OdmWee5zNfmY/n+8zzaduWtWvXWrQNsHHjRgwGA0ajUd+99fTp04SHh2MwGAgPD+fMmTOA+T2ePn063bt3p02bNvr7nZqaSlhYGM888wzt27dn9OjReu2YzMxMevfuTefOnenfvz/5+fkAnDhxgieffBKj0UinTp04efIkc+bMYd++fZhMJlauXGlz7NHR0WzatMnqeH4Jp15cWnHzJpSXU+82C0e1sjIoK0N5SOIhhLP7a/pfyb6cXatttm/antldZ9u8f/HixWRlZXH48GHA/GGRnp5OVlaWXvAsNjaWpk2bcv36dYKDgxk2bBjNmtX8pl1OTg6bN29m7dq1jBgxgm3btjFmzBiL1/Px8eHrr7/m73//O8uWLeP9999n4cKF9O3bl7lz5/LZZ5/VSG6qW7RoEU2bNqW8vJzw8HCOHDlC+/bt+f3vf098fDzBwcFcuXIFT09P1qxZw6lTp/jmm29wdXWtUaPFlszMTNLS0vD09OTatWvs2bMHDw8PcnJyGDlyJBkZGezevZuEhAQOHTqEl5eXXka+UaNGHD58GJPJxLp163j++ect2t+/f79eZv528Zg/fz5BQUEkJCSQnJxMTEyM/v5UWb16NTNmzGD06NHcvHmT8vJyvRLtDz/8wLPPPsu6deswmUykpqbWeO6RI0c4ePAgP//8M0FBQQwcOJCWLVvq9x89epRFixaxf/9+fHx89NhNnTqVmJgYnnvuOWJjY5k+fbpecyc/P5+0tDSys7OJiorSx/nNN99w9OhRWrZsSWhoKPv37+eJJ55g2rRp7Nixg+bNmxMfH8+8efOIjY1l9OjRzJkzhyFDhnDjxg0qKipYvHgxy5YtY+fOnYB587dbxw7mYn1fffXVHd/nO3HqxKNg+QqK96fxyPLleNjYoKbiRgkA9WTGQwjhIF27dq1RZXXVqlVs374dgJ9++omcnByLxMPf3x+TyQRYlmmvbujQofpjPv30UwDS0tL09iMjI2nSpInV527dupU1a9ZQVlZGfn4+33//PUopWrRooW9m5e3tDZjLzL/44ot6CXdb5d6ri4qK0iutlpaWMnXqVA4fPoyLiwvHjx/X2x03bhxeXl412p0wYQLr1q1jxYoVxMfHk56ebtF+fn4+zZs3v6t4bNu2DYC+fftSWFhIUVERjRo10p/XrVs3Fi1axNmzZxk6dKi+s2pBQQGDBw9m27ZtBAQEWB3n4MGD8fT0xNPTkz59+pCenk50dLR+f3JyMs8884y+xXvVGA8cOKD3cezYsbz88sv6c6Kjo6lXrx6PP/64ngCB+Vxq1aoVACaTidzcXBo3bkxWVhb9+vUDzJf0WrRowdWrVzl37hxDhgwBwMPGjt22xu7i4oK7uztXr17loYcesvrcu+HUiUfD3r0o2pVI7vAR+M5+mSajRlmWRb5pTjzkWy1COL/bzUw4UvVy86mpqXz++eccOHAALy8vwsLCLMrTQ81S7C4uLvqlFluPq17K/W5qcp06dYply5bx1Vdf0aRJE55//vnblr23ddzV1ZWKigoAi3FUH/fKlSt5+OGH+fbbb6moqNA/BG21O2zYMH3mpnPnzhaJGYCnp6fFa95tPG59zVGjRvHEE0+QmJhI//79ef/992nTpg2NGjWidevW7N+/32bicWtbFp87NsZ4u3aqv//V+3/reVFWVoamaQQEBHDgwIEa7V25cuWOrwnWx15VQLCkpMRmwnK3nHqNR4Pu3WmzYwde3UK48MabnP3jVMr+858aj9EqT9J6cqlFCGEHtsraVykqKqJJkyZ4eXmRnZ3NwYMHa70PPXr0YOvWrQAkJSXxn1t+D4L5Q6lBgwY0atSICxcusHv3bgDat29PXl6ePsV+9epVysrKiIiIYPXq1fqHedXlAj8/PzIzMwH0WQVrioqKaNGiBfXq1SMuLk6fzo+IiCA2NpZr167VaNfDw4P+/fszefJkxo0bZ7XNDh06cOLEiTvGo1evXvpahdTUVHx8fPSZnCo//vgjbdq0Yfr06URFRenrQNzd3UlISGDjxo02F2Tu2LGDGzduUFhYSGpqqsXW5+Hh4WzdupXCwsIaY+zevTtbtmwBYNOmTfTo0eOOY7GmXbt2FBQU6IlHaWkpR48exdvbm1atWumXb0pKSrh27ZrFOWpr7IWFhTRv3hw3N7d76lcVp048AFybNqX16tU8/Mpcft63j1ODo/n54CH9/oqSqhkPSTyEELWvWbNmhIaGEhgYyKxZsyzuj4yMpKysDIPBwKuvvkpISEit92H+/PkkJSXRqVMndu/eTYsWLSymyo1GI0FBQQQEBDB+/HhCQ0MB8wdtfHw806ZNw2g00q9fP27cuMGECRN49NFH9QWSVR/C8+fPZ8aMGfTs2RMXFxebfZoyZQobNmwgJCSE48eP67MhkZGRREVF0aVLF0wmE8uWLdOfM3r0aJRSREREWG1z4MCBFustrFmwYAEZGRkYDAbmzJnDhg0bLB4THx9PYGAgJpOJ7OxsYmJi9PsaNGjAzp07WblyJTt27LB4bteuXRk4cCAhISG8+uqrNdZ3AAQEBDBv3jx69+6N0WjkpZdeAsyX3NatW4fBYCAuLo533nnnjmOxxt3dnU8++YTZs2djNBoxmUz64t24uDhWrVqFwWCge/funD9/HoPBgKurK0ajkZUrV9oce0pKCk899dQ99ak6dTdTcPbWpUsXLSMjw+6vc+PYMc699Cdu5ubSbNIkmk/9IyUnT3IqegiPrHoHbxsnsxDit8taue4HTUlJCS4uLri6unLgwAEmT55ssZjyt2DZsmUUFRXxxhtv2HxMjx492Llz5x2/hmwvCxYsoGHDhsycObNOXt+ehg4dyl/+8herRf2s/TtTSmVqmtbl1sc69RqPW3l06ID/tk84/9ZbFP7jH1w7eJAmMeavMcniUiGEszpz5gwjRoygoqICd3d3m1/xvJ8NGTKEkydPkpycfNvHLV++nDNnztRZ4uGsbt68SXR09K+uJAwP2IxHdVd27yb/tflUFBeDpvHo+vU0CHnCoX0QQtifzHgIYX+/ZMbD6dd42OI9YAD+27fjaTQC4OJ9718NEkIIIcTdeaAutdzKvdUjPPZhHDeysqgv/yMSQggh7O6BTjwAlKsrnpWb8gghhBDCvh7YSy1CCCGEcDxJPIQQwo5uV532brz99tv6ZlrO6O2332bjxo12a79hw4YWx/Ly8ixquvyW3O059eSTT1rdLK6uSeIhhBB25AyJh73K2JeVlREbG8uoUaPs0r4tLVu21Cu8/hbd7Tk1duzYX3Xu2YskHkIIYUdVZd1NJpO+c+nSpUsJDg7GYDDo5ed//vlnBg4ciNFoJDAwkPj4eFatWkVeXh59+vShT58+Fm2//vrrBAcHExgYyKRJk/QaHtZKn4NluXmAsLAwqrYzuHTpEn5+fgCsX7+e4cOHM2jQICIiIiguLiY8PFwvMV99x85bS7xfvXoVf39/SktLAfN27H5+fvrtKsnJyXTq1EkvNBcWFsbs2bPp2rUrv/vd79i3bx9grvkybtw4OnbsSFBQECkpKRaxyM/Pp1evXphMJgIDA/XnVrl06RLdunUjMTGR3NxcAgMD9XEOHjyYyMhI2rVrx8KFC62+j5999hmdOnXCaDQSHh4OmLc6j46OxmAwEBISom8tvmDBAsaPH09YWBht2rRh1apVAOTm5tKhQwcmTpxIQEAAERERes2dkydPEhkZSefOnenZsyfZ2eYqyhcuXGDIkCEYjUaMRiNffvmlxTlla+xRUVFs3rzZ6njq0gO/uFQI8eA4/9ZblBzLrtU263doz/+88orN+xcvXkxWVpa+U2hSUhI5OTmkp6ejaRpRUVHs3buXgoICWrZsSWJiIoBeLXXFihWkpKTolUyrmzp1Kq+99hpg/t/tzp07GTRokNXS59bKzd/JgQMHOHLkCE2bNqWsrIzt27fj7e3NpUuXCAkJISoqiu+//96ixPtDDz1EWFgYiYmJREdHs2XLFoYNG2ZR42P//v107ty5xrGysjLS09PZtWsXCxcu5PPPP+fdd98F4LvvviM7O5uIiAiOHz9eo1jZRx99RP/+/Zk3bx7l5eU1ZokuXLhAVFQUb775Jv369bOo7Juenk5WVhZeXl4EBwczcOBAunT57/YTBQUFTJw4kb179+Lv76/Hbv78+QQFBZGQkEBycjIxMTH6+5ydnU1KSgpXr16lXbt2TJ48GYCcnBw2b97M2rVrGTFiBNu2bWPMmDFMmjSJ1atX07ZtWw4dOsSUKVNITk5m+vTp9O7dm+3bt1NeXk5xcbHFObV8+XKrY2/SpAklJSUUFhZaLapXVyTxEEIIB0pKSiIpKYmgoCAAiouLycnJoWfPnsycOZPZs2fz9NNP07Nnzzu2lZKSwpIlS7h27RqXL18mICCAsLAwq6XPbZWbv51+/frpj9M0jVdeeYW9e/dSr149zp07x4ULF2yWeJ8wYQJLliwhOjqadevWWd0tNT8/32LTqepl7KsShLS0NKZNmwaYi9Y99thjHD9+HIPBoD8vODiY8ePHU1paSnR0NKbKbyuWlpYSHh7Ou+++S+/evW2Os+qDeejQoaSlpdVIPA4ePEivXr3w9/evMca0tDS9EF7fvn0pLCykqKgIMNeNqV+/PvXr18fX11cvZe/v76/3rWqMxcXFfPnllwwfPlx/zZLKOmLJycn6GhgXFxcaNWpksW7D1tgBfH19ycvLk8RDCCHqwu1mJhxF0zTmzp3LCy+8YHFfZmYmu3btYu7cuUREROizGdbcuHGDKVOmkJGRQevWrVmwYIFext7W6/6aMvabNm2ioKCAzMxM3Nzc8PPz01/PWruhoaHk5ubyxRdfUF5erl/aqO7XlLG/Va9evdi7dy+JiYmMHTuWWbNmERMTg6urK507d+Zf//qXzcTjXsvYW+tX1eOslau3dvz69etUVFTQuHHje66fY2vsYH5PPT0976lde5E1HkIIYUe3lhzv378/sbGxFBcXA3Du3DkuXrxIXl4eXl5ejBkzhpkzZ/L1119bfX6Vqg9sHx8fiouL9cWStkqf2yo3X72M/e0WXBYVFeHr64ubmxspKSmcPn0asF3iHSAmJoaRI0fWahn748ePc+bMGYuaIadPn8bX15eJEyfyhz/8QY+fUorY2Fiys7NZvHix1fb37NnD5cuXuX79OgkJCXpl3irdunXjiy++4NSpUzXGWL1fqamp+Pj44O3tfcfx3Mrb2xt/f38+/vhjwJzQfPvtt4A5vu+99x4A5eXlXLlyxeKcsDV2TdM4f/68vm7nfiEzHkIIYUfNmjUjNDSUwMBABgwYwNKlSzl27BjdunUDzF/3/PDDDzlx4gSzZs2iXr16uLm56R82kyZNYsCAAbRo0aLGosrGjRszceJEOnbsiJ+fH8HBwfp9cXFxvPDCC7z22mu4ubnx8ccfExkZyeHDh+nSpQvu7u489dRTvPXWW8ycOZMRI0YQFxdH3759bY5j9OjRDBo0SC9X3759e6BmiXcXFxeCgoJYv369/pw///nPjBw50mqbAwYMYOzYsXeM4ZQpU3jxxRfp2LEjrq6urF+/vsbMAZg/+JcuXYqbmxsNGzas8RVdFxcXtmzZwqBBg/D29rYo7d6jRw/Gjh3LiRMnGDVqVI3LLADNmzdnzZo1DB06lIqKCnx9fdmzZw8LFixg3LhxGAwGvLy82LBhwx3HYsumTZuYPHkyb775JqWlpTz77LMYjUbeeecdJk2axAcffICLiwvvvfce3bp1q3FOBQYGWh17ZmYmISEh+uLd+8UDWyROCPFgkCJxdeeTTz5hx44dxMXF2XzMkCFDWLJkCW3btnVgz/5r/fr1ZGRk8Le//a1OXt+eZsyYQVRUlP4tHHv6JUXi7q80SAghhFOYNm0au3fvZteuXbd93OLFi8nPz6+zxMOZBQYGOiTp+KVkxkMI4dRkxkMI+/slMx6yuFQIIYQQDiOJhxDC6d0PM7tCOKtf+u9LEg8hhFPz8PCgsLBQkg8h7EDTNAoLC2vsInsnsrhUCOHUWrVqxdmzZykoKKjrrgjhlDw8PGjVqtVdP14SDyGEU3Nzc9O3uhZC1D251CKEEEIIh5HEQwghhBAOI4mHEEIIIRzmvthATClVAJy2U/M+wCU7tS2sk5g7nsS8bkjcHU9i7nj3GvPHNE1rfuvB+yLxsCelVIa1ndOE/UjMHU9iXjck7o4nMXe82o65XGoRQgghhMNI4iGEEEIIh3kQEo81dd2BB5DE3PEk5nVD4u54EnPHq9WYO/0aDyGEEELcPx6EGQ8hhBBC3CecOvFQSkUqpX5QSp1QSs2p6/44I6VUrFLqolIqq9qxpkqpPUqpnMq/m9RlH52NUqq1UipFKXVMKXVUKTWj8rjE3U6UUh5KqXSl1LeVMV9YeVxibmdKKRel1DdKqZ2VtyXmdqSUylVKfaeUOqyUyqg8Vqsxd9rEQynlArwLDAAeB0YqpR6v2145pfVA5C3H5gD/1jStLfDvytui9pQBf9I0rQMQAvyx8tyWuNtPCdBX0zQjYAIilVIhSMwdYQZwrNptibn99dE0zVTtK7S1GnOnTTyArsAJTdN+1DTtJrAFGFzHfXI6mqbtBS7fcngwsKHy5w1AtEM75eQ0TcvXNO3ryp+vYv6l/AgSd7vRzIorb7pV/tGQmNuVUqoVMBB4v9phibnj1WrMnTnxeAT4qdrts5XHhP09rGlaPpg/JAHfOu6P01JK+QFBwCEk7nZVOeV/GLgI7NE0TWJuf28DLwMV1Y5JzO1LA5KUUplKqUmVx2o15q6/soP3M2XlmHyFRzgNpVRDYBvwv5qmXVHK2ikvaoumaeWASSnVGNiulAqs6z45M6XU08BFTdMylVJhdd2fB0iopml5SilfYI9SKru2X8CZZzzOAq2r3W4F5NVRXx40F5RSLQAq/75Yx/1xOkopN8xJxyZN0z6tPCxxdwBN0/4PSMW8tklibj+hQJRSKhfzpfK+SqkPkZjblaZpeZV/XwS2Y162UKsxd+bE4yugrVLKXynlDjwL/LOO+/Sg+CfwXOXPzwE76rAvTkeZpzY+AI5pmrai2l0SdztRSjWvnOlAKeUJPAlkIzG3G03T5mqa1krTND/Mv7+TNU0bg8TcbpRSDZRSD1X9DEQAWdRyzJ16AzGl1FOYrxG6ALGapi2q4y45HaXUZiAMc/XCC8B8IAHYCjwKnAGGa5p26wJUcY+UUj2AfcB3/Pfa9yuY13lI3O1AKWXAvKjOBfN/2LZqmva6UqoZEnO7q7zUMlPTtKcl5vajlGqDeZYDzEsxPtI0bVFtx9ypEw8hhBBC3F+c+VKLEEIIIe4zkngIIYQQwmEk8RBCCCGEw0jiIYQQQgiHkcRDCCGEEA4jiYcQQgghHEYSDyGEEEI4jCQeQgghhHCY/wdi4+b9dvvSPAAAAABJRU5ErkJggg==\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], "source": [ "trainacc, testacc = train_model(num_epochs, ResNet(num_input_images, num_layers)) #train the model for a hundred epochs\n", "\n", @@ -460,35 +553,36 @@ "**Questions**\n", "\n", "1. What is the vanishing gradient problem, and what is its primary cause?\n", + " Gradients approaching 0. Primary cause(s): bad weight initialization, no communication through layers without skip connections. \n", "\n", "2. What are 4 limitations to optimizing a deep convolutional neural network?\n", + " Time requirements, data requirements, vanishing gradient, hyperparameters.\n", "\n", "3. In terms of how a given block of a network is \"fitted\", what is the key difference between using skip connections and traditional blocks?\n", + " Gradients have a direct connection between block and the previous.\n", "\n", "4. In the context of model hyper-parameters, what additional parameters is added in the res-net implementation?\n", + " Number of layers, learning rate, skip connection frequency?\n", "\n", "5. How do skip connections resolve the \"vanishing gradient\" problem? (Open Ended)\n", + " Gradient connections without scaling between residual blocks.\n", "\n", "6. Give an appropriate anology for how kernels are used to extract features from images (i.e. sanding wood)\n", + " Sanding wood is a great analogy.\n", "\n", "7. Was this a good paper when it was released? Is it a good paper now? What has changed between now and it's initial release point? What other methods are there of solving the vanishing gradient problem? (Open Ended)\n", + " \n", "\n", - "8. What interval of skip connections did you use and where were they applied to? Did you find any #accuracygainz ?" + "8. What interval of skip connections did you use and where were they applied to? Did you find any #accuracygainz ?\n", + " Single interval gave accuracy gains. The conv net skips didn't seem to work." ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": "Python3 (nn)", "language": "python", - "name": "python3" + "name": "nn" }, "language_info": { "codemirror_mode": {