{ "cells": [ { "cell_type": "markdown", "metadata": { "id": "FuoCYvFP3rz2" }, "source": [ "# 인공 신경망" ] }, { "cell_type": "markdown", "metadata": { "id": "Abp3s6mi3rz9" }, "source": [ "\n", " \n", "
\n", " 구글 코랩에서 실행하기\n", "
" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "id": "C23oqM6GsYQF" }, "outputs": [], "source": [ "# 실행마다 동일한 결과를 얻기 위해 케라스에 랜덤 시드를 사용하고 텐서플로 연산을 결정적으로 만듭니다.\n", "import tensorflow as tf\n", "\n", "tf.keras.utils.set_random_seed(42)\n", "tf.config.experimental.enable_op_determinism()" ] }, { "cell_type": "markdown", "metadata": { "id": "u5msa4prlifV" }, "source": [ "## 패션 MNIST" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "id": "fMTyGYIMqUE9", "outputId": "b62fb5aa-b9e8-4021-de1b-a28f3ff2f2a0", "colab": { "base_uri": "https://localhost:8080/" } }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/train-labels-idx1-ubyte.gz\n", "29515/29515 [==============================] - 0s 0us/step\n", "Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/train-images-idx3-ubyte.gz\n", "26421880/26421880 [==============================] - 0s 0us/step\n", "Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/t10k-labels-idx1-ubyte.gz\n", "5148/5148 [==============================] - 0s 0us/step\n", "Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/t10k-images-idx3-ubyte.gz\n", "4422102/4422102 [==============================] - 0s 0us/step\n" ] } ], "source": [ "from tensorflow import keras\n", "\n", "(train_input, train_target), (test_input, test_target) = keras.datasets.fashion_mnist.load_data()" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "2-r-EgKgqYkK", "outputId": "09d5e63f-d6bc-403e-a8c9-c13550b6fb4e" }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "(60000, 28, 28) (60000,)\n" ] } ], "source": [ "print(train_input.shape, train_target.shape)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "LAJGYTkFrS6p", "outputId": "0a18e2cf-8b24-44d6-ebd3-21d1533a7b54" }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "(10000, 28, 28) (10000,)\n" ] } ], "source": [ "print(test_input.shape, test_target.shape)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 102 }, "id": "lAYiLboglZIz", "outputId": "8322fcd0-f6b1-4988-b922-39a7e02ef8c0" }, "outputs": [ { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "iVBORw0KGgoAAAANSUhEUgAAAxoAAABVCAYAAADOppJ2AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAB6QUlEQVR4nO19aXMc2ZXdqX3fUYV9495kL6RaUkvdo9E6WmZsWV5mYhzhCMf4kyMctv/G/AN/8QeHHfZMOOzxIsWoRyNLI6mb090Su6mmSDZBEjsKSxVq37f0B8R5uPWQBYAk0ESx80QgAFRlZWW+fO++u5x7r80wDAMWLFiwYMGCBQsWLFiwcIKwP+8LsGDBggULFixYsGDBwosHy9CwYMGCBQsWLFiwYMHCicMyNCxYsGDBggULFixYsHDisAwNCxYsWLBgwYIFCxYsnDgsQ8OCBQsWLFiwYMGCBQsnDsvQsGDBggULFixYsGDBwonDMjQsWLBgwYIFCxYsWLBw4rAMDQsWLFiwYMGCBQsWLJw4nM/7Aiw8G3K5HHZ2dvDo0SP8t//231AoFHD9+nXMzs5iZGQEk5OTcDgccDqdsNvtsNvtsNlsKBQK2NraQqFQwIcffoh8Po9YLIZoNIrLly/jD/7gDxAMBuH3++F0vjjTpNfroVwuo9ls4ne/+x0+/PBDjIyM4M0330Q0GkU4HIbX6z3WuZrNJlZXV1GpVJDJZJDL5TA5OYkbN27A6/XC4XDAZrOd8h2dLur1OrLZLGq1Gh4+fIhsNotHjx7h3r17cDgcCAaD8Pl8+MIXvoD5+XmMjIxgamoK7XYbm5ubqFQq+Pjjj7G0tITNzU0sLCyg2+3C5XLB7Xbjxo0beOmllzA/P4/f+73fg8/ne963fKbR6XRQKBTQbrcRDocRCASe9yWdKuR6XV1dxeLiIjY3N/GLX/wC5XIZPp8PLpcL0WgUo6OjcDgccLlcAPbmbrPZRDabxdLSElwuF+bn5xGPx/Gd73wHb731FhwOB9xu93O+SwvPA+xVfFwZXSqV8ODBAzSbTYyMjCAYDCIYDCISiZieo1KpIJfLoVqtYnl5GfV6Ha+88gouXrx4ovdhwcJZx4ujQb7AMAxD/XS7XQBAt9uFYRio1WpoNBpotVrodrvodrvodDpotVqo1+uo1+twOByw2+3qt91uR6PRUD/8XK/XQ7fbRbPZRLVahc1mg2EYB4wUp9MJm802tEo0x4g/rVYLjUYD9XpdKSmHgRtUs9lUY9hqtdT4dToddLtdNV7DhF6vp+ZZr9dDo9FAs9lEq9VCu91Gp9NBr9dTxxuGgV6vh3a7rcawWq2i3W6jXq+j0Wig3W6j3W6rz9lsNjU2vV4PnU4HzWYTtVoNANR7DocDDofjuYzDSaDX66HVaqn5ImG32+FyuY61jvg8OI71eh3tdlutSyrXwzbXdHAuUbb1ej30ej1lMHCddTodAFDvU341m004nU619ngs16PD4VBj2Wg0UKvV1PFyTnJMLbz4MFszXK+UgZxj1WoVtVpNySp+dpBDqVqtqs/U63XUajVUq1VUKhXl/KOcG/a1a8HCYbAZZrughTOFYrGIUqmEYrGI5eVlVKtVrK6uolgsotlsotlsolAo4P79+2g0GojFYggEAn3CjIKMGymNCcMwlJLs9Xrh8Xjg9XoRCoXgdDoRCoXgdruRTCaRTCYxMjKCq1evIhAIIBqNHtv7/7whFdqHDx9id3cXt2/fxnvvvQePx4Px8XH4fD6EQiF4PB5lWAFQSgcVFm4+rVYLOzs7aszD4TBSqRQuX76McDiMubk5hMPh53nbT4R2u42NjQ2Uy2UsLS1haWmpT8HN5/PKkCiVSn2fdbvdyjDgxsk5VygUUC6X1fjb7XZ4PB64XC41bl6vF+FwWD2LYDCIa9eu4dq1a0O7Ca+srOAnP/kJSqWScgQwkpNMJvHWW28hEokgGAwO9KrX63W0Wi3cvXsXP/vZz5TS0u12EYlEEAqFcOHCBXzjG99AIBBQ632YYBgGms0m2u02lpaWsLy8jEqlgs3NTeUEoCFLxW1jY0M5UmhgMPLKdUvDloawx+PB6Ogo/H4/xsbGkEql4HQ64fP54Ha71Xvnzp3D7OwsnE4n3G730I2nhaMxKJrR6XSU8+7Ro0fI5XJYXl7Go0ePUK/Xkclk0Ol04PV64XQ64XK54PF4TL+j3W6j2Wyi0+mgUqmg2+0ikUggGo1iYmICn/vc5xCNRvHSSy8hFosdeq3WHLQwzLAiGkOAer2O3d1dbG5u4sMPP0Qul8OHH36Izc1NZTjQS9ftdrG9vd0XmTgM3GB9Pp9SDsvlMra3t9Hr9RCJRODxeHDhwgWcO3cO8/PzSCQSiMfjCAQCQ2NoGIahFN3t7W1sbGxgcXERjx49Qq/Xw/3792G32/sMDSptVGAajUafh7TVaqFQKKDT6eDq1as4f/48ut0ufD4fotEoxsbGhsrQ6HQ6yGQyyGQy+M1vfoP3338fNptNKcGdTgeGYSgPOudcu91GOp1GsVhErVZDuVyG2+1GIpGAx+NRXjufz4dwOKwUOKfTiUKhgN3dXdTrdRQKBbhcLly9ehUjIyOIRCK4du3acx6Vp0cmk8HPfvYzbG1toVarodVqwev1wu/349KlS7h48SKcTic8Ho+poUEnQLVaxcLCAv7qr/4K5XIZ7XYbhmEgEokgHA7jrbfewhtvvAGPxzOU3lHeJ+lRt27dQiaTwf3791X0ptfrKSONxn673UY2m1WGXLPZ7DsvIxN+vx/RaBSdTge7u7soFotYX19Xxoff71fPJB6Pw+VyYWxsDIZhvBCRIgvHR7fbVTJsYWEBKysr+M1vfoN33nlHRdWexjfLvZWsAsq1yclJTE9PDzQ0+F2WsWFhmGEZGmcMMrT/8OFDlUuxvb2NQqGAxcVFVCoVNBoN5XWX1CiGeenB9/l8fXQE0gMotFwul/LoAXsC0e/3Ix6PwzAMlWvQbDaRyWRgGAZ+9atfIRQKYWZmBtFoFFNTU5idnT3TgpAGA5UVl8uFiYkJXL9+XXlPJd2HY0bQmNPPGYlE4HK5MD4+jsnJSZXTcpbHQgcNsHK5jPX1dWxsbKgoDeeMpLU4nU4111wul6JYud1utFotxGIx2O12hMPhvgiH1+tFMBhUvHin06miQ4FAQEXR3G43Op0O1tfXcevWLUQiEczOzg4ll57jRs88HQArKyv427/9W0SjUUQiEfh8PgSDQcRiMbTbbWQyGUXRaDabuHPnDmq1Gtrttlq/hmEoJVyO87CA865areL27dvY2dnB6uoqtre3UalUlJHrcrmUgSspTaR1JhKJPkODY0BqmdvtVo4Ut9sNu92OTqejIr68lt3dXTQaDdy9exeNRgPhcBgzMzPwer2Ix+NW/tALCsMw8PDhQzx69Ai1Wg27u7uo1Wp48OABMpkM0um0mn+MXpDKLB1SMvJNp0yv1+uj4zHKViqV8PHHH2NtbQ31eh3JZFLlfMRiMVy8eFE5aV5k0slpGVC9Xg+VSgXNZhN+vx+BQADdbhf1el3pNcehSX9WUCgU8PDhQ3S7XYyPjyMUCsHn8ymZx3nLaPGTwjI0zhioiGSzWfzoRz/C/fv3sb29rUK25Cdz03W5XAdyKLhwaWxQEaRiKBVhM46ox+NBMBhU18NFS0rNb37zG3g8Hpw7dw4jIyP49re/jenp6TPNa6bC0ev14PF44PP5cOXKFVy5cgXpdBp/8zd/g93dXZRKJZV3wXA3DQyv16sUZLfbDb/fj8uXLyMWi+HKlSu4fPmyOn6YlL5Wq4VcLofd3V3cvXsXi4uL8Hq9GB8f78sz4A/nmFR4PR6PouIRkkJls9mUUctNV/LiqQwahqGSf+/evYuVlRVcuHABqVRqqA0NcrRprG1ubuKjjz6CzWZThv7s7CyuXr2KSqWCDz74AIVCQTkIuA7tdruibcgoJg3oYQLn3ebmJv7yL/8Sd+/eVZQ6yjYaBlK+UbmTY0GjBdjfDHkeGrOkxXA+Mx+JeVpra2swDAPLy8t45513MDk5ibfeeguJRAKvvvqqZWgMOaRskrLZMAy8++67+C//5b+oaD4N106no+SX0+mE3+8HAGXgcy+x2+0IBAKKEUB6Y6vV6jNw2+02ut0udnZ28Pbbb8PhcODtt9+G1+vF7OwsZmdnce3aNUxMTCijhtf6pMnrZx1me8pJgcyOfD6P8fFx+P1+tNtt7O7uotvtIplMWoaGQDqdxl/91V+h0Wjga1/7Gubn55FMJhVjhfsQ5e6TYigNDZkY3Wq1FOf7aa2ts4R6vY7NzU3s7OyoSkaMYHBzlLkD+gYM7AsiJpxSEZGGhjxOX+A8lxQC3JD5u9froVAowDAMlEolNJtNuFyuoVq8jHAw34TzqdFoHDhWCnmn06koMPF4HLFYTHlM7Xa78mINy4bQbDaxu7uLXC7XRw3Q5xMhjQcm2Ho8nr77lp+R0TNy3uWclQnNpKvQW18qlVAul1GpVBQf+iwbtDrk+uT6BaDmmmEYaDQacDqdGB8fRzgcVkox8zNouEouuBy7YZprEo1GAzs7O9jZ2UGlUkG9XldGBD3I0hEi71WfN4SUg9wUWaCBHmjOWRYjkMYIn0e320WpVEImk1GOmhdN0fuso9vtIpvNolqtYmNjA5lMBtVqVeWTcZ/TK5PpMo5yj0aJnCe6TsL9gfKt3W4D2FsLfr8fbrcbsVgM6+vraDabiMViQ0NPfhKcdJRGFhyh4yCXyyGfz6t1TgcuI+h0pn4W1zPHivvr8vIyNjY20Gq1sLW1BZ/PB6/Xi7GxsRP5vqE0NFj9Jp/PI51Ow+124/z582riSEireRiqAC0uLuIv/uIvVMnaQqGgyogCBxcFjQ3dQ8PfvG8qwoR+vNnCpxea30Nhy2MzmQx2dnawvLyMdDqNYDCIkZGRM18Ol15lGkaJRAJvvvkmyuUyfv3rX2NpaQmNRkMpz9wMmCzP/ItYLIY33ngDyWQS3W4XxWJRce6Hidu9s7ODn//85yiVSqjVaggGgweeITdGPnu9klkoFEIgEFDGAB0Bemhcn2fSW8hqQaFQCMBeEQSu8bt37yIWi+H8+fOIx+OnPCInAyYayyRtOkSonLTbbZWHMT09jT/5kz/B9vY21tbW4HK5VE4Bo0EcS85flhcelrkmkU6n8aMf/QjZbBaVSkVRyBg50BV7aWDwfc5JGiSSQibpfs1mUxl5NGR0OSkNwV6vh3w+j5s3byIWi2F+fl4ljw+TM8XCPvQ1UigU8F//63/F3bt3ce/ePaytranoA+mbXKd0bsiKe6xsplP2pBHCuSqZCJSP0njp9XpYX19XP7VaDWNjY/gn/+Sf4OrVq6bX/yLhWe8tm81ia2sL1WoV2WxWOWzL5bLKuWF03u/340//9E8Rj8c/ExXmaNhSfnY6HSVzf/azn+Hv/u7vkM1m8cknnwDYczxOTU3hm9/8Js6fPz/Q4fgkONMaoRl/T4a6q9UqcrkcvF7vwDKS/MwwgNEB9ivI5/NoNpvKutS9KBSC/Kx+nzIioXOb5bFmn9WjHVLxtNlsqtxfq9VSHmfJQT3rkEqMx+NBMplEIBBQyo5UZlqtFgAoj1MoFFKRjJGREYyMjCCfz6NUKvV5XocFjUYDmUwG5XK5r1KZDhlRk5E1AMqwcrvd8Hq9B5RAYN/Ak3NEr1AlzwVARZhKpZKiyAwLZI6B9MYzyshNjtGNQCCAubk5uFwuRCIRBAIBFAoFAOjjgkvvPPNlhhHVahXr6+uKzsBoK+9H5kTpc0SWIAX2qaRAf9UpGrz6vDNzujCKQgOZewx/t9vtFyJqbgEqSrW4uIg7d+6ogg2MVuvRCkLP26PyCuzPSVbgkxENKbdkVI7nZP5AvV6HzWbDgwcPUCqVUCqVhi5CfhwclXsidRKdOiZpjzxPpVLB7u4uKpUK0um06v9Ew4ORSQAIh8OK5jssuuFhGEQJNDuGe3ClUkGhUMDy8jJu376NcrmMnZ0dOBwObG9vw+l0olwu9z2DZxmrM2to6BOt2+0q7jabf5FHz7KkhUJBebz8fj9isZjyuPI8Zt8j/x60oE87bF4sFlEul7G1taWUVlZMMaMxUYljjwOZ8H3YvZht1jRadA40v1+PmsgkN5vNhq2tLdy6dQsTExNIJBJnnivOHAvDMFQ99EAgAL/fjy9+8Yu4ePEiarUaKpWK4nUbhoFwOAy/349QKKQqKnk8HlV5ieM4bIhGo3j11VdVQlihUFCVkBgNA9CnIMsfYJ+mYhiGqnTGTZlceTMDTHr+qChyLJ1OJyKRCFKpFC5evIhYLGYatTyrYCM59rKRuTtcYxIyWhSJRBCNRpWck9xYqWRL+sWwgDKrXC4rjyMNMCpvwP7coCJmpuTLeSipVsB+OepOp3OgWpCUjTKqJh0F0uBYW1tDKBTC+Pg4pqenXyil77OGUqmEjY0NVXlwbW0N3W5XFaqQ+xx7rOjgXCRtmzhs3+W+SaNDHuNwOFTE3G63Y2VlBZVKBQsLC4hGo4jH40gmky/UvDvsXnK5nIowUafI5XIoFovY3d3Fo0ePVLEbh8OBjY0NpNPpPj2GNNuLFy/iC1/4gmIjMLdS6obDADNFX0ZjJTVUvk+ZxkIHuVwOf/M3f4Pl5WUsLCwo45aVRH//939flZaXOqGZ4/+4OLOGhg4aGtVqFQ8ePMAnn3yi+Lnk2FerVaUgx+NxRKNRAIdbeWbefd1DaGZdnyQMw1AWJakStVoNgUBA0Xe4+Uo6AJNMi8ViX9KurBAgjRRORP27eS4uPEn/oQDUx0VOOiYR1+t1fP7znz/x8TlJUKFwuVyKB+/xeFTZVZYZrFarKBaLSiFiDfRQKASv16uqWNDjyTGU3pZhQTgcxuXLl7G7u4ulpSXVOI/Krd/vVwoceci6kkyPsl4CUlJaDov0SO48eyrY7XYEg0HE43HMzs6q9TwscDqdCAaDqpqW9MJxXMyEt8PhUFW4HA6Hml9SgZFNJ4dtvjFCwJ9Go6GqwJBPrXt8qaDp60saBlL5A/ar/8h8GDn2ZrltsoIQv4td7qkITk1NvVAK32cN7NS9traGdDqNra0t1ZMGONg4Ul+j0kCVlcv4WX0tyqiI7oySc46FDVgunNz5VCoFm82GZDJ5amPyvDBoHRWLRTx48EA5aAKBAFZWVrCxsYFHjx7h5z//OZrNJqLRKDweD7a2tpDJZODz+VS5/unpaUSjUczMzOD69esIh8OYnp4e6pwXMyaKLhOpp0kZabPZ0Gw2sbm5iY2NDfzkJz/BnTt3lI5Ip148Hsfrr7+ON998E8Fg8IBMfVqcWUNDV+7ZMKxQKGBnZwfb29uKptFsNrGzs6MsM5vNhmKxiEajAZ/Ph5GREbWIpbI8aJKblTE9TTD0l8lkVKUZGfaXxgOP54NPJpPKwyY3USo2vBfZuE+/H11ZYcSE4dx2u93HS9Y3+nK5jHQ6jXA4PBTUFn0MqEzIKA05tHLR0tvEaj/SSBu0GQ0D3G43otEoDMNAPB5XyZDlclk1cNQNVpZZld2pKbBkXo9U6oB9A5XvURGU0TqOaSqVQjKZxNTU1FDy4tnwkrRCrhmOJceNY9FqtVRkUyrbcr7qTgOO/zDNNyr+5LezVLeElEXSwJAOF+BoXjznEuktHGtpuOkeO+ZuUSa0222170xPT5/+AFk4Vezu7uLWrVvY2NhAtVpVZWS5d0mZJuebvmc8qfKlU4DkXsPX+TeNl08++UTlpE5PTx+oGvksXuazAtLYqKsYhoF8Po9MJgMAqrrc5uYmMpkM2u02xsfHAUAZFfPz82g2m0r3YYUwt9utIhuGYajqm6weOcyQsg/o1wslOH82NzfxwQcfYHNzU1FyOeeCwSAuXbqkqOA+n+9E99wzO9LcWDhwzWYTy8vL2N7exv3793H//n3VGM3r9aLT6cDv9ysvFjsNh0IhfOlLX1IlzliejjBTOqX3C0Cf8nRa95rJZPDgwQNsbGyosnoyxEqBJIWU0+nElStXcP36dXg8HtXTIRwOw+fzoV6vK959OBxW1Xw4IeWGzA2VlX42NjZQKBTw7rvvYmNjQ/WH4BhJZDIZ7O7uwm63H2iadRZBxUJyuWu1Wt8idTqdqlwhPemkcLDfhoTuYR0m+P1+TE9PIxKJYH5+Hg6HA4uLi1hdXVVriLQpKm7sp0EvtKyARgoMX5MKH+lDNPo7nQ7a7XafAkgj9/z58/i93/s9eL3eoSwtyg7g3W5XJYASNptNNZ/jxliv15FOp1UVN2CfmsG1J72tTCwd1Jn4LIJUJFITyUPX+eoyCiGpUDqtSp5XNz7MIoxm+SzSULPZbCohnXPRMAysra2hXC5jenp6qKJHn1XI+aDL46WlJfzn//yfsbOzA5ttr28UlVAamTLCKiuS6bQqoJ/+aQa5z+jKofwMjWpgr/BIr9fD22+/rSi+N27c6It06km+wwo23mTBhl6vh5WVFTx8+BDtdhtLS0sqZ6DRaCAQCOD69esIBAK4ePEiotEokskkRkZGUKlUsLGxoWRpuVxWbIVer4dcLqd67wyboWHmJCbM5BqPrdfrqFQquH37Nv7jf/yPyGazSq5yfqdSKXzve9/DxMSEGtOTNGCHZqSpDFYqFdRqNaXoMQzGngfSMGEiVS6XUwp4p9PpS6zUlaFOp4NqtdpXClYmd52W94CdkfndwGBOHrBPNQkGgxgdHVX1vPma1+tVFB8qNVQEpRcP2O/4TAWP/SZksyz5HHgdkk4ja9SzGdYweFqkASc3J7PEUT1UyfeG4T4PA41Wt9utwqdra2toNpvK6JX0Ev1HGhnAvuLGNaaPlU5dkXQgAGqz9/v9CAaDqiTusIFGAteeDrkOHQ4H6vU61tfXVXEFNpeS+S/AwVLLwxbRYM8LyhsaTpIKxv+Bfq8tx0zPp9AhPcVmIBVLUrL4OWnscE4y8iKPtXB2Yfb8qTuwX1K1WlUV9hi90imK+tw6bJ0dFeVg/pFuZBw2f+v1OprNprp2WYFymEFDjYV96HXn3kqdhWMAQO1FLpdLNTiMxWJqzyJzpV6vq0JB9XpdRUwcDgfa7baiCQ0rdH1F10t0iinnOp06tVqtrxcT2RuxWEyVUz5pw/XMGhpSKQb2Jlk6ncbKygo2NzeRzWYRCATQ6/WUR8/r9WJychKpVAq1Wg25XA6FQgHFYhEej0dRMfx+P0ZGRuDxeFTH11wup6oUpNNpdDodjI+Pq0Ss8fFx2Gx7ScMnjV6vh7W1Ndy6dQuFQuEATQrYFzzcfGn8zMzM4Ctf+QparZbq6Ly7u4tOp4OJiQm89NJLqNVq+N3vfodqtYp4PI5QKNTHQeVmSmMlGo3ipZdeQiaTwXvvvYeVlZW+4zmRSTNoNBooFArI5/PY2dlRAuCseqHNFDY92b3b7aokVfk5+WMWCpfUn2GDz+fD5z73OVy5cgVbW1vY3d1Fu91Wa4RKMwBliDMsLb3uQL+RLLn3erUQRgqpZDqdTszOziIUCqlO68OmSBOsHlWv1/uEt14NiSH+e/fu4c///M9VPhrHJBqN9kUTOf/YNPKsF1+QMAwDhUIBa2tryGazysHDXA0ZhZDlaDnHOA+j0aiqAEcHC40PGl/8nKRGUY4xsTSfz2NpaUnNPRoatVpNGUROp1PlkQwDNdTCHqSy1O128c477+DmzZt4+PAhDMNQ1RxpaDBfj/mKwH4ehq54PWtelJnjhudlVJhrnMrigwcPkEqllId+WJ1cXPP5fB5bW1sA9ulqzAudnp7Gl7/8ZRQKBXz00UfY3d1VjtOZmRl87WtfU05UAKrEN/U86nE2mw25XA7lclkZLx6PR1WYPGvQo7JmaLfbqNVqfQ1bG42Gyifd2dlBu91GtVpVjIF2u61yXvx+P8LhMNxut6KvMpdlfHz8VPS2M2to6APNzbdYLPY1d2KIsVqtKgWPeRusblIsFmEYhtrMQqGQCpGTn8nmTKVSCaurq8orT4UqkUicahnJSqWC7e1ttdlSMZOhUZlzwTEKBoOYmJhAtVrF5uamivywDjdpP7VaDYVCQdEC6EmQ3nkKL7/fr3jxeqlXaXDIevUsQ8rvZmLdWYVOY+FvGdE4ylgYxI/VoyPDAofDoag+wWBQ9XhoNpuw2+3KM09lTvYtMEuK5PyVHnnduOVGTk8MvU2JROJAFZhhAyMaXq+3L4Kjc7I5ltlsFouLi0quMRl+UPKifA7DNEakTsn+AzJ6oNOg+EPDyufzIRaLKUcRvdKcn6S+SBoMZRg914FAQBW5oFInI7S8HjpVzErkWhge9Ho9bGxs4Le//S12dnb61p2sdqfv8YPk+6D3joI0WPQondwvZB6XzbaXyJvP5+H1eg9QtoYN1CHq9Try+TzsdruidgP7FbhSqVRfLh8NiXA4jKmpKQQCAZRKJRWl4Gd9Pl8f5bLRaKBcLivnA/XDs4pB84tykboWDQ7+ZuNdshFKpVKfjre7u9tHt5V90bxeL4LBIILB4KmkCZxZQ4MolUrY3d3F6uoqNjY2sLW1hXa7rTYVDmShUFAbRiaT6aMlsJGY2+1Gu91WtZadTic2NjbgcDhUR1AACIVCMAwDm5ubWFlZwfnz51Xy0GlYwYaxV3Vqe3sbwL7yBexTeCQ/mf9LhW1nZwc//OEPsbm5qTbT1dVVlEol5HI5/PSnP0U+n8e5c+cwMTGhvAly80wkEiqawY6Q0hvI8+qRALfbrQTFzs4OvF4vQqHQmTU2aGTRY0xlQ3qLzSIWZoaDpJJJhWTYKBb6M71x4wb+5b/8l6hUKtjZ2TlQP14mTNIoZqUomUDPCJgZTcBsfJxOJyYnJzE9PY1EIjG0mymwn+dD+WNmEMiEU9LE+LqkCLHCHj1UVECGreKUzWbD2NiYqvDGZHkm5lYqFVQqFUSjUVy6dEl537xer2qkxkqDDoejL6lTX6+EmVNhfHxcyV16Tt955x2sr6+rcrjAPq+ee4Oem2VhOGAYBorFItbW1pRTkvJa0juBfuNWn0s67emkDE9duaSji0ZvsVjE5uamkgFnHWZrjq9z/2XkiNENSfPZ2trCwsIC7HY7RkdHMTk5ifHxcaRSKUUVt9lsSi5QOWY0sl6vq4apVMorlQo2Nzdht9tVTiJbI5wV6LoHqfzNZhP37t1DOp1Go9FQfUA4T/L5PCqVinIOtlot7OzsoNlsKhYLu89zP5YFR/RiL8e9VuB4Bu+ZNzRY4m11dRXr6+vY3t5Gs9nsqxTBxEFgr6IEsNcbYHZ2VnXmZT8IPgTmdDDBiIMdCoUwNzcHu92O27dvY21tDZ1OB4lEAi6XC1euXDnxe+SGt7W1Ba/Xi1gs1pc7IOkEBDmNFDrZbBY/+tGPsLCwoGgs6+vrqFQqyOVyePvtt5HL5fDyyy9jbm4OGxsbuHv3riqdCQCTk5NIJpOo1Wr4gz/4AwD9JXJZaUj3xPBZuFwuZDIZOJ3OM1udRQo6yQNnyFovQcrPDDI2ZAREKtayp8lZh5xbVGCvX7+Oc+fO4dGjR/jf//t/o1QqqePpLZaUMwo8WdlNKsEyCZzfOcjQmJqawsWLF0/7tk8dDFMHAoG+HCmC84vGBA12GfnhGNETRZ4xI67DBhoao6OjOHfuHK5du4ZSqYT3338fm5ub2NnZQTabxdzcHP7wD/8Q8XgcY2NjB3jplI8cCyZus5gHf8v36BRxOp195c/pVFpaWsL6+rraH1jsgFFilsMelnVtoR+FQgEbGxt9TjvKa7OcPAn5mvz7abjs+rn0/QbYdyTSsUD9gIriWccgAw2Auifm1HY6HRQKBTQaDTx+/BjpdBoLCwu4efMmRkdH8e///b/HtWvXcPHiRczOzvaNlR7tlY0PGd3ga9VqFffv30e328Urr7yCsbExFTk/Kw4t3dHZ6XRQKpVQLBbxy1/+Erdu3VL5YjS0AGBrawuFQgFerxfRaBStVksZJfPz85ienlbNnyk3Jf2d8/C4jis96nwUzryhkc/n1eSrVCp9zdH4IID+xEqbzYZGo6FK3AJQ3T6pCPF/WtX86XQ62NraQq/XQyaTQS6XQ7fbVZzgk4RhGIpuJJOvpeeTCrDOW5beZGAvCnPjxg2MjIyoJPapqSmkUikEAgF86UtfQrVaxfz8PEZHRzE6OopEIqE2YmDPo+rz+TA2NqbOTR6+NEg43vJvemaLxSJ8Pp8y/M4izCz3w7ygZkbGINqUPP+wQDceAajygKTasSkcFTauG71ijzRMZclQnTolwWMZ0h3mCioSVGxZKpU8fxpbR0V5Bik38rVhy18xDAPZbBaFQgHNZlPRWdmk0DD2eOmJREJVsfvkk08OyBMzg1XmvnAz1SlPnJ+kDtCYqFQqSCaTeO2119BoNNQ1kfZGz+nMzMwLMz+PwmEy7lnOCTwf2g/Xi4wi8nWz6xlUgEGnNT/pNZj9Peg16iy1Wg2bm5uIRCIHyu+fRQwyoID+JpsAlKFRq9XgdruV/kFq5OzsLEZGRhAIBI5ce4ysywRzlhlvt9sYGxtTVQAZMWq1Wsp59ryh78OUPd1uFzMzM6jX68pBSicvABXRcLvdivacy+XQbDYVbZ79i3he9nny+XxIJpPw+XwDC5cQT6vXnHlDY3l5GT/84Q9RKBSwvr5uWlZUGhlUftj0jpsKN2TynicnJ+HxeFQTNk78UqmEu3fvolqtYnt7G6VSSXWL1kvjPiva7TYymYxqDMfGXtKAkPQoeukA9NExAGBmZgb/9t/+WxUytNvtKtLjcrnwT//pP1WbKku96VQhJgBPTk6q6g1MmpIdfKVCSUEI7HGvV1ZWUK1W8frrr5/oWJ0kzO4d2FdaaMTqhoWZcSIVPZ73OPkdZw26cGFzslgshlQqBafTqTYDAEog6dWjSPGRY0yFTgo6PWIkG2+eBYF/EmDjPb/fj3q9jmw2q6p6APuRDKkom/Xw4XqT1bu4/swSVc8yer0ePv74Y3zwwQdqrbEJ3vT0NCYnJ1WeHY2S//k//yfu3r0LYH/N0WBjvXcmeerGl26EMHmSyeB+v19FN77xjW/gu9/9rpLBkqJFWcv/XwRIz6muDB63dOqTGA6UCc/LQGYeD5VQYN9JNsjQAPr7asnKemaGhtm+wdflMRJc17L/FR2opIPv7Ozg/fffR6/XGwr6nq4wy9flegL2ciiWl5dRLpfx0ksvYWZmBpFIBOPj46rgA/OtjgKpU9VqFfV6HY1GA+FwGJFIBCMjI6qkeDweV8UeqtUq7Hb7mWgIq681l8uFeDyOSCSC73znO3jrrbdU/zi5bulM0Z16zWYT/+E//Af8xV/8hTKqXC6Xoq/OzMxgfn4eFy5cQDKZRDgcVoa0mQNMp1gfF2fe0GDYkFVYzBa33EzkBG82m7DZbCpEJ98jT5NWMgeNZWYrlQqazSYMw1BW5UnXq+92uyiVSsraPEz46kouJ5mkNCUSCbRaLSU42UeDngEZZtS59DRiWq0WPB6PSqaXx8rN28yjQ4oBqx2cZegeKv11eW9mVvygTcbsO4YR0nDgBihpBmZzUd9M+b8+1/T3+T+9/8OkOB8GGUHVKXWDvKhPen6djjUMYDK4jDzIUrf0SpICQZlCueNwONBoNOB0OtFsNtW8YQL9IMWRZS71PYWRNMp5Gi5ut1vtD3Lecp8ZpkiSGcz2lOOAz4u5LEzmPavVz2RvnkGy3Ox/KdekvKcTz0z+S4fAoD1CrlczpxY/y8+TLknFeVj2lUHziWuUOVb8YW4n+2JMTU09ca8LyllJh+O6NgwDsVhMlfCnMk796ayCziTmqnk8nmM7vVutlqKdUq5KOi6dzzT8uFfJNTBovr1Q1ClSOGiJUfHXqRjchKQxIjtoAvuCg5UKbDYb1tbW+iZzvV5XSdKpVAoTExMYGRk5lYlYrVbxwQcfYHl5GY8fP1b3SIOGQknSm2QSrsPhQLlcxurqKnq9HgqFQl+iM0OITqcT1WpVfZbnofLIzZ1diVkajd1wyU9mIhrH2DD2KndwUddqNWxsbCjF4KyC1y6TmqXxpBuuxwlxc9EOG5XlOJCGKBPKpCeFEQndA8h1Jau7UHDp4+RyuVTVixfFY8yQfbVaVd44qUDoxriZQOd40VnCv1kNT1bOGwbYbHs5GteuXUOxWMTGxgba7TYePXoEm82Gra0tbG9vIx6P4+WXX4bX68X169fx6quvot1uq1r65XK5T/abGVxcz3qEwzAMXLlyRRkYLJP5+PFjLCwsKNnIZP5ut4vFxUUUCgV89atfxXe/+90+r+KLADN6i5mi3Ov18PjxY5XP8uGHHyIYDOLP/uzPcPXq1UO/Q3f2fRpgM7hyuYzd3V2V1C97/Mi9zGazKWVMlkymviDL3uoRH2mIEDKyPeh1fUxowMn5KxkZww4qtSMjIwgGg2i1WpiZmVGlvMnW4PrW9bjDwJwG9hwh/Zd9xcLhsDqW1Zq4z6dSqdO65WeGzbaf+K5HwQEM1Dt4X5cuXcLu7i4eP36sDC2/349SqYSHDx/C6/X2RfkGOQ35vdQtDcM4VjL9mTc0bDZbn8VFJZsTEUDfRkylXHqhZKTDMAyVTAPscdvkg2NnbJvNhunpaUSj0T7F6iTRarWwvr6OR48eIZ/Pqy7BhC6YJLeRQqfRaCCfzwOAiiSw1BmpGOQ6S6oFx5AeAMPYbw7EcGKxWES1WlV0LVq79KqwYoRURFlGjpP2rEEPAeqRGp1KBQzeFPXFOIze5eOCz1iGaIGDG6mkjclGfrogpPCSVIQXNUfDjPcqlbhBNDuzDUXOT47ZMJW3tdn2SnInk0kYxl4SdrfbRaFQQLvdVkosS3PH43FcunQJiURCye1Go6EqqtDwkPcvIyMyB0/OuVQqpboDezweNBoN3Lp1C9vb233UKTq5bt++jc3NTYyPj+PrX//6QEX8RYJZhLbX6yGbzWJpaQmffPIJ/t//+3+IxWL4/ve/f6zx+LTHq9fr9e1lzWZTOUVoaOj5O9Qn5JzhvJHGhKQymt0fjQT53iDvsL4PMQIjyzO/SHKRTj565lnlkpDFHZ5knfV6PdXWQOqOdByw30axWES9XlfK8jBAlmI201UGGRqBQADJZFIVyeC52B+o0Wio5tZHgXOY43xcnHlDA9ivsCQHV49aUAhQuSH/DjjoSZERkEGUJGCPO8gE9NOYjE6nEyMjIxgfH1dl3WSUhsYQQ9X0+koF7ZNPPlGfo3Dib6C/g7cuEHXqFKMg3GTb7TYKhYISqkyslJOb3myv1wu/34/JyUnFKTyr0J85XyP0DeGo0KEcY46/nnA4rCAvncmxuoDT8zSAfi+LHmnknJMNp6gMMp/BrPHfMCt0XK+yIpf+vj7HdK+S9KQS5Jw/Kb3geaLX62FxcRE3b95EpVLB7u5uHweeHWpdLhc2NjaQyWSwtLSkIqfMO2NSpG7Ycr7poLzkez6fT801VmJhNJcGr9frRSKRALAng6enpzE/P6+SJod5TgKDefSGYWB7exv5fL5vD9za2kKtVsPa2hq2t7eRyWTUmP/6179GsVjE5cuXceHCBdOxodwol8tYWlpCu93G/Pw8RkZGTvU+db1BKmWMxptFr3XjXnew8Dw6zUR3DgD9ieXyuoB+I0PKTp6TERXSp16EfYXQ5bvu5OPfxzU22LyOfdb0cee5qOsAMJXJwwCzaBpwkPrHCLLNZsPHH3/cV3qfdLxyuawK/uhOwU6no1IJPvnkE2xtbfWtlT/+4z8+8lrP/A5FxY3GhjQOqNxxs2A5M6/XqzqDD0pq4XmkRSu9F/Tw0/I9DbhcLoyOjqpaySzBlslkVPiU991qteDz+VRzKgqn27dv48c//nHfeaXhpQsw3VDQhStDlUyuTCaTqimiTPCVY0mKCOkOiUQCsVjsVMbsJKAbGvJ/PUx4lIEpNwan06lK6ZHHO2zQBT8rUzCHSDc0dG8xgAO16akQ0igF9ruF22w25T0MBoMIhUIHDGB9jg4jJLXuMOjKn4yU6fxveuM5lsOAXq+HTz75BD/5yU8A7OexsAiA2+1GKpVCq9XC0tISms0m1tfX+8orS/nGMTXbcGWyvYy8kqvMijSkVzAJld3o7Xa7kn8jIyPodru4ePHisarfDAMGratut9sXaU+n08jn87h165Zq+iWrEna7XfzqV7/Cxx9/jB/84Ac4f/78QEODPRPef/991Go1+Hy+UzU05DM3U2KpX+h7oTRYzaKJ+vkJfY0SZCSYgfNZN4TkvKZxXa1WXxhD4zCHn+7MPK7DicngrGBl1h8L2O+lBWCoHDUSZutXzkeu0YmJCVy/fl2V/OV8J909n8+rPGFS5OV5WcEqn8/j7bffxq1bt1R/I7vdPtyGhrQ8maSsK9BSKEijg5sPvfByw9GjGNLiZaiTLdhtNpv6/kqlgk6nc6Ce+7OAEQ0AypCoVqvY3d1VDWYYVSgUCgea+HGjZRKeGT1F583rC47HSW8MS8tJXrms7BKPx1XUw263K/4je5dEIhEEAoETG6eTAJ+9VHqfJUqle6HlWNPz+qRh37MISWnSw7aySpKMLMrjaHToxogZp1Q3jk8jinjWcdz5wnEaJtoU4fP5EIlEFM8XgKIxsHMvcyAYnWW1Jz2CLSOzOsxyM+S+QgOXCgmTLdvtNnZ2dtDr9bC9vQ23241SqYRms4lUKqXKSA5TbowZOLZsAEbnVqvVwieffILHjx+rXD3uf9xz9Pw+liuuVCoDv69Wq6FcLiObzSKfzyva22mCVZoqlUofdYQwczLJOSUjZkc96+MYn7rRojv5dEeopDrTeVWtVlGtVlW/rGGF2R4K7MtAM+fBUeCcpP5EQ5JyhdRc/WfYcNSYSEdVMBjEyMgIIpGIyrMlOwXYbxpbLpdVLw6n04lcLodMJoNarabymzY3N1EoFFTl1uNGg87ELJWLjgNEjxMFHUurMkteD5NzMdLLxwhBr9dTJRClAkgBR+oBDQqHw4GxsbE+T1g+n8fKygo8Hg9efvnlE7vvQCCA119/vc+YolHTarXUQ75z5w7u3r2rOpu2Wi0V9qcHmNEc0sYO8xaYjb98DjQigP3mOiwBeeXKFfyzf/bPVMSCz4zjz7rzNNbOCrjhMLHdLIwOHC+KYaYM2+17dbibzaZKWmUkTnIrhw1utxvxeBwAlPdSUqE4X7iOuAYZ2WFEggoxhbo0POQYDqPQPw4G0VTk+7o3T/+MPjcp64aJxmO32zE1NYXPfe5zyOVyWFpa6su5mJmZQSqVQjAYVMmZpVIJjUYDgUBAJXPqTiMqFHxPQhomsmgBnVFUuCl379y5g9/97neIRqPIZDKw2WxYWlpCoVBAtVrF3NwcwuEwJiYmzmylpaPA4h/VahWrq6t48OCBKixSKpXw4MEDrK2twev1qgINDocD8XhczTlG/NlozTAMZDKZgfJzc3MT9+7dw/b2NhYWFmAYxqGGyUmAfbHS6bQqliJlsVxrlF9cTzRM5B6nQzpOCM4rXbbp32lWcYrOG85l5ngZhgGPxwPDMLCxsQGXy4WpqakzUZL1WaCPqRxrswjUUZC5ovfu3UMmk8Hc3BwuXryIkZER1Q+NjgI6GYZFfh4F3QnPiEYymUQ6nVa9irg/A1DOlcePH6NQKCASicDj8eCnP/0pfvSjHylKlSys8Nprr+Ef/+N/fKBh4iCcCUMD6F/whmEoZU0qbHzfjArF9+TreshUvi4NG9I8er29pnk0TOjdMQzjVDrC2u32AxES8jBbrRYCgYCigO3s7AAA1tbWlCXKjZNWOss7Smv1uJ576aWWHXFJVyOFJhaLYW5uTimfw4JB84HvPYug0Y1k+fqwe+U5x2TlD46h5DbzWGB/o5WOAD2a8VnEcebYceYiZeSwbo5Msq5Wq8rgpLy32+3w+/2qozoVDtbTp6Ehewvpypn0QgP7RQlsNltfh3bmVDWbTXU+br6sFFYul2Gz2VAoFFRTLJkDN0zgeiRFolAooFgsYmdnB+l0GuVyGevr68pzubOzo3pMsQIX9waPx9MXjaDyIsddGoHdbhfFYhFbW1vI5/Nq/vLZDVLknxW8X0ZPdOeSLpOkTqDTmHQ86foz01vM9iKdHi6Vb5bEL5VKZ7op7kngsMj2YVQqjh3zi8rlMkqlksrF0p+lWXR9mKHfiywfLKORcr3Ssc2optfrxcbGBhYXF/sK+7APkcfjQSqVOrZD+UwYGrpC1u12sbS0hK2tLWVltdtt5bHXBRoAtegMY6+qFHnyfE2WrKOA43dRGFUqFfj9fsXDzWazqFQqqnzXp8GNZL4JqUusvBCJRLCwsICHDx/2ZfvTGHA4HIpeZqZMS+j3ISk//KykXLXbbUQiEczPz2N8fHwovfM6te44pWgHvWe2SXCDINWI9I9h95YwUsOIhb7p6tEdKhVUxFh5id3F+TrntV45bhgVuOPiMMNTp/bIMZYJetLb12w2USqVTsUJclowjL1k4K2tLWVosJutx+PB6Ogo5ubmVDPTZrOJTCaj6EqMIOjGhBzbQWOhe/qoQNO7OT09jbGxMWxubmJ9fV01+WKkttls4sqVKxgdHYXf7/9U5aCuWOnR/KNkDKPm2WwWv/71r5HL5XD//n1sbW2hXq+jVCqpNWgYhuqLQVnJfaXdbiMUCqk9MZ/Pw+Vy4aWXXkI0GlWJ4PSYNptNLC4uIpfL4b333sPPf/5zpFIpfOtb31LdnldXVxEOhxGPx09NVsq1JUGD08xRxM8B+4UGzKheHLcnoXxSJ7HZbAcchHolLM6zbreL3d1dvP/++1hbW0MoFDrTJVlPCnp0Y5BzGdgvXtJsNjE6Oqqe7dramnIwuN1uVKtV1UCVuQbDjOPMObfbjWg0quYY12er1cLCwgIymYza6+12OzKZjNpbOA/Hxsbg8/lUNG1oIxrA3iaSzWaxsrKCnZ0dVVWJIU25qCWFioqy3W5XjYR0AaN7LHguetRsNhtGR0dVSJKbDK/rtEEPMgDVT4MWJGtD65uOVN50T4yZl13+ln9L7xJf55iyTX0kEhlqQ4M/T0vT4biaeaL4nl6OeZghx83Ms6d7/3RPCSkJDPtz/cqICHDQk/ei4bjKh84HN1NeOObMcZBNmIYBLKdIxwjnh8PhQDgcxsjICIrFItLpNKrVKra3t1UyuJxrElLODVL4zCJsHo8HkUgEwWBQ0StYzIIKNav9AcD4+DgikYhpyeJPG3qFosNAh1E+n8fHH3+MdDqNW7duYWVlpa8EKKklpEzJXDPuD+yYzgiU2+3G3NwcpqamkEqlYLPZ+rour62tYX19Hb/97W/x3nvv4bXXXsP58+cxOzuLer2OXC4Hh8OBWCx2KobGUYbncQo06NEIGWHQXz8K+vyU16AbGrquUqvV8PjxY1QqFbz11ltHfteLAn2P4Ws6OB/ZM4OUyHw+rwxZJkSXy2WV+/W81/KzQOp0+r4hIYslGYahIn1skXD//v0+HTcQCPQVvrDb95oGUj7SIX4cPFdDQwoA6ZWx2fYSWOLxOILBoPLsm23EMjIhlSL+z2QpOYCy6ZzkZXIzWV1dRT6fRzAYxOzsLKampjA6OvqpJF7JhWQW4uOmwHsaFF7luYgnFeD6Zi55+GZCd5jAe+v1eidiNMmNYNgrgpgZUVxXHo9H0QqlN1gKav4t+cdUPGw2G3w+H3q9nqKryJyrFx1HRTP49yAKnpR9drtdbZbDFtGQhgZz8Zi4aRgGfD6f6ncgK+zJ8sCDEnTNNlo5ttIZxZ9Go6Eij5TxUlF2Op0qAsdmYL1e71OPVuoK1qBk2WaziXw+35fnl8lksLW1hVwuhwcPHijDjYU9ZPUuKrr03svvs9lsqNVqKqeGCcksfVur1fDgwQMV/Wi329jd3UW1WsXs7Cz+1b/6V5iZmcHo6KhSYk4zsV5GsvX9VBoM3D/1PV7fB+VcehJZL+cco0OyEpUcdzpVef3yPniuYd9nngaHKdHMv6zX6wiHw/B4PAiFQiqvYGtrC4lEAru7u6o4APd/GhvDjkFROWJqagrf//73sb29jQ8++ADb29uq71okEsErr7wCt9ut9Bgmg1Nu2u12xGIxTE1NPbFT4LkbGlzs8kHb7XZEo1G0221Eo9E+ThnQr2BTsWbiFpUWdj6Ux9O4IC+XgoX5DbTOHjx4AK/Xi69//eu4fPkyLl68iNnZ2U/N0JA5GHqonxWApEJ4GhxD6T2gl17vQqwfMywGh6Q5nRQkV3zYoXuHGTb1+XwIBAKK68k5wY0cgCokQCHODZH0PuklBaBCtcNOMTsKMnIjoUdy9cirPE6uNbvdrrzB3DSHBaxiwnnQbrdRLBaVEUAFQS8wwMoxQL83X+YEAeYJuny/2Wz2UQE6nQ7q9bpyoDDxlvtDsViE0+lURSRyuZxqbvVplbkdFMEZpBzVajUsLy+jWCyqRoMPHjzAb3/7W7WHMOdudHS0bwwbjYZyxLF3E50HdCqUSiXs7u7C4/GoPXZpaQmdTge//OUvUa/X+yK7o6OjCIfD+MM//EP88R//cZ+zyuPxoN1uq/OcNPhMZdU8jqkcQ2loSe/5Sa8radTIKC6viQ4Z7rNkZXC+0onKtfJZw6A9olQqYWdnB4ZhIJFIKJpPIBDA48eP8fDhQ/R6PaTTaeXsYCnXSCQy9NW7jgPqsel0Gtvb28pZUCwWMTMzgx/84AeIx+OqrcJ7772HX/ziFypybrfbVZfxVCr1RLLvREfXzKv2JKFEotvtYmdnB4uLi8hms33Je7w5KopctGYNrQ7ztg/yhPV6e51E6V2jEvRphtf0a5PVZSSNZZBSIiGpPoc9CxkV4ef0iJM+BsNoZJwW9PF9UcZDUiZkDg9fazabyqCgQsj32eiS1dzoAOB7FGBUalh1TXqrh8VT/zSQCoaZAXLUHJK9doYJnDtmkVtGyiTtlXjSNcU9woyGIiHLPOpFD3idrFjISAepgM8bjLK0Wi0VUSgUCnj06BEqlYqKYpB+DOxHHWUUlgos71fOTUJGzWUJa16HbAQWDAYxPj4Or9erqogFAgGUy2VVyZFjahgGksmkeu7HpWMcBzQOt7e3UavV+u5F3pOcj9IpcJLPWOosZu/ptCAZKQfQlwzu8Xhe+GTwo9Dr7VVOazabyGazyGazfYYD9x9GzoH9nhlkh9AAfREiGkeBVeU2NzdRLpfR6XQwOjqKyclJXLp0CZOTk4hEIirSzNwVqWOzVC4bRx8Xz2xoSE+bmXA6LNFqkOLebDbx4x//GG+//Taq1aryStDrqVe7oSIuv9tm2+Mwy4GSCrcUmnLzaTabyOVy8Hq96HQ6iiryaUGnkAFQnrNEIqEqUVE4ynCvHko/jI5hBp06IJ+jTFLXjZFhUKqp/OqJ8mYKjY5BCorZd/CccoyGYXwI3StMo4Chaa5Hp9OJZrOJcrnc52Vnh3h6hVlogWV+JZVRRhntdrtqsCkpGy/SBnBYNGPQ8fI5yEgusOe5ZinHYfNu8t4lZYkRaUbMaHxKZwnv0ywR3ExJ041W6ammEsLPMS+BtBXSCmw2m5qn9XodhUJBKX2fxt5wmCOnXq/jww8/xNbWFu7du4d79+6hXq9jd3cXnU5H5TX2ej1MTEwoQw6Aqsqjw8yTL8eWFEqubRpgAJBIJOD3+3HlyhX8yZ/8CRKJhKJarq6u4ic/+Ql2dnbw/vvvo1qtIhgMwuv14stf/jL+6I/+CG63G9PT0yc2dpVKBTdv3sSdO3ewvLysImPUS/j8yYrgeJ20k8PMYOMPaSkslsFoMY1kGhosn37//n1sbm4il8ud2PWdZQxyaNZqNXzwwQdIp9OoVCqoVqsYHR3F5z//edhsNjx8+BDlchnAPh1/dnYWbrcb+XwetVoNyWSyr+T1sEJn+Zjhww8/xJ//+Z9jZ2dHUSv/xb/4F/jTP/1TBAIBJBIJJYd7vR5WVlZUqXrOyQsXLuDzn/88IpHIpx/RkItIV9oOU7SkFS89pZVKBel0Go8fP1aVRqRHnQaEBKMeeudrac1KSAVGD5XSUzCoH8VpQx8v2UBPevvk8SehzB4V8XjaBOqzhEFRt0HP+EnG1kyR1BX3YYS8D2mo6V5MYN9YNQxDbZysbCGVHHluYL8qjllTrWGGlG26XORvMweNPE53HAD7jhRSj86Cd/1JoUdR+RrljJTJZs4T/fcgQ85s7Zl9zixfiFQWSQGUOX6nATODaNDcqVaryGQySKfTWFxcxMLCQp8DgJVhSB+SY8v7kTCLyso5qEc05H7Ltc9E3JmZGSQSCXWOlZUVpNNpbGxsYGFhAeVyGbFYDH6/H3Nzc6qy2Emi0+kojj6NxkHzQY43Xztp6A5Ofo98zlKppg7Dz7C3GP/+LEB/Htx3ZO5Ro9FAo9GA3+9XkTkmgdP5xXwMRoNoNJ8G9fx5Qte5mSuVyWRw//59ZLNZRCIReL1eTE5O4rXXXjvg0DMMA36/vy+XjUUxYrEYvF7v6UY0zBRcKp+DlDizCyI9qlKpYHt7G+l0WiWZlctlPHr0SAlHn8/Xdw5ya+X3M+RNJUd6sLkgpcdZJq/yPW4eNGg2NjZw584duFwuXLt27VPzrnJj5T3ze2losMEgJ5SeIDnIOBq0YRHSyyM9qNJSHlaaFJ+vHDczo0nem+4pNTun2Wc5RvRGDVP3ZjMj1+/3o9PpIJlMotlsIhQKqcY/9DjLstGcP1RoGGalsJKfkzlHrIDxIuS5AHslt8lnJydYVnUbZFAdZaCSqtZut9UGO0yGxiBnFDd+v9+vkhL1/klHGe5m8kk3aGS0QyqWPp8PoVBIRbEpW3VHFA3n0xhzwzBUvw72nWAZYxrufPb1eh2NRgMrKyt9eROysIkcK1k+VUYhJHVEN3zNcgqkgsycFnpCZSfxYrHYl1xaLBZVR3Cfz6eowL1eD1tbW/jggw/gdDrx0ksvndh4drtdlMtl5HI5ReHkHgfsl9lmJS2Ol67cnlSEQ44v9x9SUikfpOKrO2MBIBwOq+pgnwVwH6nVamg0Gtjc3MSdO3dQKpWwsrKCSqWidLZSqYR79+7B4/Gg1+upHEJGrMrlsorCPa9qU4cZsjqb5bjQdQ+i2+3iF7/4Bd577z2sr69jdHQUMzMz+M53voP5+Xm8+uqrB8aAcpFywm63IxKJIBKJIBQKqQaeT4KnimjoibRPMzi9Xg+7u7vI5XJYWFjA3bt3+7ilpVLpQAKg3KilkUFDg0JLGg20/PUNSiZ+Af0eDYbSstkslpaWMDc396lv5LoXifcnLUzp6RjkGT3smehCVBotsqyhPNewKMw66BmSHjjg4KZiFjY/7NkfpvjolUWGEaRDkbPJuuO6ocH5Wa/XlTeVSgk9qjJRnF3DQ6EQAoGA6jJMutWLgE6no5pFMQlZ9zbp0N/n/7qnk3JNNhUdFpitLd4zK5nRmSILYxyFQd54YL8Mupm85zGyqpqk/OqKNitlnZahwRr/6XQaCwsLqFar2NzcVPk43W4XjUZDdbpmMzo5dqR01ev1vnLSMtdKJtRLZ5U+16RTRu6/HFc5nuVyGbu7u9je3sb9+/cB7Df5CgQCSkFmI0Aqffl8Hp988smJJ+XS+CmXy30OScmg6PV6yjijcWvm7DjJvU/u23wmMgdOh5zHgUBAlV3+rMBms6leZ2tra3j33XcVZdQwDFWKleWU2VAuEAio58zCDzLn5dPWZ3TnpZmuJvWxZ0Wv18OdO3fwf/7P/1Hlq8fHx/EP/sE/wI0bNwZ+RupKNptNFYLx+/1PlUP1VKt6kOIkm3WRAlGv1/uqWDQaDeXhW15eVl2vNzc3Ua1WUa1WlReLQkdWiGINZNlPAtgPD8lrYV+JYDCoPC5UjlhOkcq1rmwCe/xONot6nhu5nHi6sn9cpVh/3cyjOMhDP0xKzGE46j5OUujI+TTM48cSmQzXh8PhAx2abbb97uGNRgPBYLCPVkXaH3M0uLHLHCh65h0OBxqNBprNZl8502EEDY1yuayqdukV4/R1yP8HJY5KLzObolUqFWSzWTgcjqFTQPSN1ul0wu/3q8iX7hiQn9MdXLq3XV97HNNBETPpuNKvDUDf66exph88eIBut4vFxUXFwU+n02g2mygUCsqg5B4mI4eyAaluQAH70Wq9MzCdBJLuaBZR0ymT/FuWUueP9LTzOfV6vT66hYzMnEajTuog9XpdfYd0LuqRbbmvDnq+gxx4usNu0HFm0WKdPSAp4rLwDT9PnYpV0D5NnJTyq59T/18+F95vq9XCw4cPsby8jJ2dHdhse3m7jUYDvV4P4+PjuHDhgqo26nK5VJlblr11Op1qPjA36NOWlUcZEycR0QCgykzncjns7u4iGo0imUzi6tWrSKVSiMfjA88l13Kv11MGSiwWe+oo2hMbGocNgGwAUiwW0Wq1sLOzo5JIqbj/9re/RalUwtbWFiqVSp/HSNKXSJFiozo2SpJGA70BtVoN7XZbCVwaGi6XC7FYrC+bPp/PI51OK54eAEXhkAp9NptViXWfppfVbIylZ0n3spkJOPm54xof+nfp59UVn5MKJ3+a0BfRcaIVxz3voO8aZtRqNayurqJarcLj8SAejyMSiSAajfbVp2fJTDoT2FyKRgXXMz3VxWJROQKIarWKXq+nlHO/36/KXh4WOTqrYFfrTCajhLXP51Pyy0y5orJs5syhUsn3SM1ic9NWq4X5+fmhMTT0NcjmqKQvUYYfJr/0Yh5mhpscaz1Kwc9TwZM5cPK88nkcJTeeFr/85S/R6XRU4jKjFfL6uY6opPM1GQkwjL1CDHKMGO2Q4NhIpU7P/5Pfw9ep4Mr8IJlUPYi/TUOHij4AVXXupJVmro1SqaSifnSGSDo1n7+MYMm93kzZl6/rOaH6/cq/paEqv1NWjuPzJXVPPiM6F5hr8mlWnTIzPk/ynPybhhfXIauGlctl3Lx5Ezdv3oTX61W5RzQ0Ll++jH/4D/9hHx2Kv5mjQ+oUAOUwO63+LYfhaY2J454XAIrFIn70ox/h4cOHAPYajV6/fh3//J//c0Qikb6ohP5cpV7darXg8XgwOjqKVCr11GWon9jQYNi42Wyq+u0UvNVqVfFXyYWjsk4rPJfLoVAooFqtKs6dLiilZ0mGvJmoTYHFPA0JKQR5LKMd/JHeQuk9kBOAwpAGzFkADTHdy3dSyrKOJ6UrnHV82kq/mVd1WMB1Lctm2u32Pu48FQTpDZRlQOl1pddUUiWazWbfuuLf3W4X1WoVxWIRdrv91OrrfxpgQiLLZZtxgp+EWkelA9iXUS6XC91uF7lcDh6PB1NTUyd+HycNM28wIb3zfP+w9XOcTdtM4RskP6XRc5TxctJgpcNgMIhQKKT2Lz3hXzfQdINVXp9UInSDwczQ1YsxSEODRoJUyHWKrfytP5vDcuKYaHpS1CkmTZNRQdCgkrQxaXSaUcIl+PlB7z8JdENXGn26Ai5l7CAnxYsA3enM5pOFQgGNRqNvn3E6nUgkErDb7YjH4yp5WYesMiaf3fPuCM5IHvVMYK/CKIsfHWd+6UYC9fJMJoN8Po9yuYxUKoVEIoFUKoVQKHSsPVU6mW22/UpzT8sweKJV3ev1kMlkkMvl8PDhQ9y8ebMvjFev15UHhsKHHYClN5OLnyVTZTUaDhzzJEKhEGKxGKrVKhYWFlCr1ZBKpZRHlZ4bbgyyUy7DbltbW8rwYfg5FAohFAodqNlOKkiv11OUqedNnSLoCWaSHe9ZCk7A3EI9DuSGIQ05yfEdVv780ygIh42f2RjLMZI/Z2HuHAX9fur1uuKKk9ZIYc4Sn73eXulbYK/DcCAQ6OuHwRKbzNGgcSIVFKLX2+/S/uDBA6yvr+OVV15RHUiHyaAlKpUKHj58qOqWE7qiKI0NqVTo96zPI8qvVquFmzdvYmJiAlNTU6rSz1mHvr5kUq7H4zkwR8wiqlQYSI3Rz6/TE/RzyO+mI4qRFTN5J+k+J72u33zzTXS7XczNzSGbzSKfz2N9fR2NRgOZTEaVo2Xkj04zGU046proER8UTZPUKV1mctxk+VUaH7LghZy78hgqVixHz88ZhoGRkRHVmfgkUCqV8PjxYywvLysZJaMKND7k9TN/TEYRZL4O55LulHwa0FlqGEZfSV1gT5ehnsIxkwaRzKP5tHAaMlgaFYSkyzPf591338Xm5iZsNhuuXLmCSqWC3d1dhEIhfO9738O5c+eUwXHU93Eus6fT82zUx4IJOzs7+Pjjj2EYBt544w1MTU3B6/Wq3GRCjpM0xoD93jirq6t49913kclksL6+jmq1ihs3buBb3/oWgsEgfD7fgevQn6tu1DocDsTjcYyMjBy4puPiiUbZMPYy//P5PDY2NnD//n1UKhXV/IPcanmhXBDsvK0vUpnILQeSr/t8PkSjUSWo6BHVJ770BMiQot1uV9fUbrdVgzGv16s8tFSq+TkZpuT3nQXQk8x70MfsJKGP77B65iUGhbhP6tzSiyg3rGEcN65nRiNJP5DUg06no6KapOvQ0JCVcprNJrxeL1qtVl+FJLnJSGdDsVhUdEtdURwmdDodRd+Q0dej1tJhhq0EC2Wwgh97mwwDBj1TRrGlE0XfYI86lxxnqfDKHA6z80gFk4ax/qxO03kwMjKizssGdzLPgFREqSTLCLdOs+E9yR+eR79+6WjjfqdHRYD+ceOa1yMC+h5Po4TfQSVPGi6hUAjxePzEDI12u41yuazkk7z+QRE1fdzMDFuz3xLHlVXSaJDGmB61GHTtw7inDII04uS4MP8sk8lge3sbiUQCiUQCvd5eISGHw4HJyUlcvHjx2N8h957TqAap71fSKNSdFrVaTVWLW15eBrDXvTsej6siLMf5Ps5VYL8pXz6fVxGgRCKBCxcuPPX98FrMIhrH3Z+PbWhQSP32t7/FBx98gI2NDaTTaeUFonVFgUMhJB8sBSIfMK0wadnSkqeASKVSuHz5soqaFAoFZDIZLC0tHWgAxkFNpVJwu90IBAJ9npRGo6E8FBR+ZkKZ90BP7FkpI8fJJEN+0qqVOMoLr4dk+ZqsZCUXolmYnBgmRVA+30EekGe5P/lZ5iuxD8pZhr757u7uYmlpCfl8HtFotK/aBBVc0p8MYy/hOxwOK/qkpAH4/X6EQiFUKhXU63UAUB1ZdS8yAGWQFAoFZLNZ1Uht2Kp3NRoNbGxsYHNzE81m8wDfm2tJyh9Gfw9bv2zwBUAZF+vr6wAwNIbGUaBCr1edMnMWDFK6dAVG0l6o3EmHAAuWeL1eJBIJRfWVJaoHJYqfJMLhMLxeLyKRCMbHx5VBL0vaMqrYbrdVtTbJLmCelFR0eJ9cn9z/GKGQ3no9r0r+ZhIt8z643+uKm05PktFyrmc+m8nJSVy4cOHEij/IPYzQ6dgE91AadGZ73KAItlRe5XfpCpiuaJoZZtSJ6PSUUXGef1gZBUdBN942Nzfx3nvvoVwuo91uIxAIoNlsIp1OI5VK4R/9o3+k1sdxz28Yhtp/pB76tBhkiFM57/V6WFhYwNLSkjImmMPEoie1Wg2FQgEPHjyAYRjIZrNIJpN466238M1vfvNAvzcdnMvM80mn07h79y5sNhu++MUvIplM4tKlS+o6Za6XmUPGMAyV/sAcSp/Ph8nJSUxPT6sS0Pp9H4UnMjQ6nQ4WFhbw85//XJWjZGhFKqwUSnJgpKeEg2emONBrX6vVVOWZ+fl5NJvNvlbzGxsbKilIGg7xeFzV+qWHaHt7G7VaTQlHXiPQTxeS3lUAilZFIfxp4bDv0heHFGCHKWKDJsUgRUduOlJBGmZBJzcL3cCS7x8Hh3mnpeLSarWeOtz4PFEoFLCysoJut4tQKNRXFpMeSXpTGdEIBoOmDcBoKNAosdlsKnlclhpkMYZqtaryvAqFAoLB4ED+7VkGk8G3t7dVw0Lds2aGQWtMep2l8sE8Grfb/cIYGtK7rnuX5fgNGktpZMjX5G/dYcPvc7vdiEajAIBcLmeqZJ4GeL0sX0pFXt4D11y1WlXVG1lwpVAooFgsqmIslD+Dxovyz+v1IhAIKIcIS6iyJwcLGPA32QnS0OBveS+DSgAzgsHvo7PwJPdY3ZEJ7BuXeqUsjisT07nPmSmicr+Q9zooqqYfp0ecaOhJxddms/WVw5Z6yTA59Z4E+n1ls1n85je/QavVQiQSQTAYRKFQQKlUwtzcHL7xjW8gEok80blpZPM5POt+MsjpKuXE0tISbt68ieXlZbzzzjtot9sIhUJKJ6Dxk8lkYBgGFhcX4fP5EAwG8fWvf/1Qw5tznA76arWKnZ0dPHz4ELFYDK+99hquXbvW1zRTBgN03Yf/y4Iu3KtHR0cxPj5+IL/jxCMaKysrqNfryGaziuPp9Xr7FF25EcqKTsC+R9xms6FerysFnl4SljOkhc+ISD6fx0cffaRqbwcCAdRqNUSjUVWWj4MO7Cf+9Ho95HI5lWtBK02Gz4H+kryEnoxFbwcAU47bpwXpBTHbQA+DvlnK33qkwyzZbRA3eVgEn/TonYaiID2mehToNL2fpwUqKxQ0ujdNz0Mh9M0ROGjYSW8jOePAfhdmygO+x4142ECFkLXbj1orZkrzoM9IBYn0NOa+6crMWYOu8AHm907jluCmexzZp2+g8rVBn+M1sMQuuf2HebNPEnpZWCpGEjJKwT0yFoshEAjA5/MhHA4foFnp16vfjzRopOHA/ZVOPEY4bLZ9dgLnNYtF6DJCH69er6fKYHOd83t4/yyd/SzweDxIJBIoFAoHCs3Iv3XFkK9L1sUgY0PmLlJpNTNEdAxyTnGuyiibvM6zBs5F6YSSLQWelAlCpzCrgnJvqVarcDgcSKVSuHjxIs6fP2967kGyk69TL9WjS08Lfe7oz4lGBA0kphZQ1yXa7bZqfEnmTT6fx9bWFgKBACKRyKEGR6/Xw/LyMpaWlpBOp5FIJDAyMoJIJIJAINBHcTSToRI0NJhbTVkQjUafidp4bEPj7//+79FqtVQYyO/3q1q8zGNguEU+UIKTkpUEbDabKlEmM+35IGiprays4PHjx5iensaf/dmfYWpqCi+//DKazaby4shciu3tbWSzWZRKJayurqpQKIWBXs2EC0SCE0ZSrsh5e96GBoU9cLDknhxvXfDxR0/aMzuPmWAjV5gegWGD9ARLg8NM4ANPbkDpmxaAPgE8TDAMA6VSCevr6/D7/ZiYmFDKPu+FORoyuZufNTOudEODygWrinS7XeVV5Xvtdhu5XE5tvsOGdruNQqGAfD6v6CZ6REOfZzIpftAcpCFB2cYk4VAopJq3STlx1uByuVT1Mulxl+NCpYX3ojtGzMZGf00q1nqenVQkdXqRz+dDPB5X1Zakh/s0E3G5t9Czzlwn+V3yb5/Pp/Zhu93e10tKp3hJb7p+LulokwaBLiulYkn6Fdc/FRPpUNT3Wvk8SR9h1IEKlc1mOxFDIxwO4/z586pXj4QeUdDHiv9LPcTMCJbjxHPReWJmnPK37nTQnw2fh2Qq6DTv5w3DMJSsYQVRJnDb7XacP3/+0F4NZuh0Ovj4449x+/ZtVCoVFb3LZDIAgLfeegvf/va34XK5TBOl9T1COmQ5L/U8p2fBUfLVMAwUCgWsra1ha2tL6ap03nFOOBwONUdJf0yn07hz5w5GRkbw8ssvH1opqt1u491338Vf//VfIxAI4Ny5cxgfH8fExASSyWTfXD+q9Llh7OVhs/w8Hfyzs7OYm5s7/apTsjQs0P8QGQHgouQiGRRmJGQeAH94Dt5Qu91WjfyYWCnDPPToUTjTapQ8s8OUx+N4EGkcnQXqhln49DhelONAbuB2+8HGVmbJacNkdMhNFDDnWD4NdAONP6fl+TxNyE3OzAOq0yMGKUHyM/qmaqYQSuHPz0hlc5jGkONCQ1Pel3zf7HPEIKVZ/k/DRc5nyj5Goc4a5OZqxlnXo6hm46TLnac1QgcpbqQGcvz0/eM0o6LA4Yql/J/HyHzDQbkkuoec9wHsO0TkMZQBMiorI2WDfnh+eQ26zjAoMnSS1CDqBoclVPM4PS9Kd8TJcTyOgXvc65PQdYuT8rqfFmg4Mp+OTfUYqeKcOe7YUP6Xy2XkcjmVc9Dr9RSNMBqNPpMRymvW58TTgtFG3usgqiMLqegOOR5HecNzOhwOVKtVbG1twWazDTSKWGyECfPZbFZF8kZGRlTxpSeFlAfU0SV7iHgSGXhsQyMcDqPVaiEWiyGRSMBms/VVmCLf0m6393FD+RCYOEoLifkUekMuUp94g/QqNJtN/I//8T/gdrsRj8cRDAZRqVSQy+WUt51Gh14v3KwaBjc6XcGR4IZWr9exs7MDj8eD+fn5Yw/uSUMX4GYYtLh1r+GgSaK/LsdpGJU+goJbLnQABzahJ4X+LHTjeZjGqtvtqhBvr9dT9ESuEb2/AbDvZJDzA+g3Svg3N3/plaaQNYy9AhBOp1OFe7nxBAKBoRpHbsDValVVvmGOifQQS6qJrgRSXsm1Kj3Qdrsd4+PjSCaTyGQyqokXm/elUimkUqnncPeDIXMuCP7tdrv7cuik8SnHghgUjTWDrszyeDOFuNfrwefzIZFIoFKpqOvWvaOnqQRKOvGg/C5pAPCH9yK56NJg0K9ZRmcGRcfN3mdEihQ4nkv/HjPDhmPJPZ77OyMaJ+XMy+fzuHv3LhYXFxU1U9K/KF8o6/x+f59uQJhFLQjKL7Nxk5+X4yijFtI4HHS8PDef71lweHa7Xezu7qJcLqNUKqFcLqvr83g8SgbKgj2HnatcLqNarWJ9fR0PHz5UUbNkMokf/OAHmJubO1bit27wSshGsSeRy7awsADD2Iv+N5tNpFIpXLhwQc1pACqXmRUUSUXy+/1wu91KZ2ahFY/Hg1arhdXVVfz3//7fce3aNbz66qumBlYmk8H/+l//C2tra3j//feRTqdx+fJlfOc730EikXjiiBKwN++oTzNfTc+35nFPgmMbGnIgPB5Pn4JOBYR8TkntkYoq6Uv0FrHzL0PEwP7koJem2+2qifvo0SN0Oh2MjY0hkUigWq0qQ0N2BqcgYY8O6UmRCc40ivi9Zh4MAIrzelbK3A7aVA97+BSYg7ycZkqx7qkaRDMbFpgZWYd5qo4DM+NU3zyGBXQI1Ot19Hr7Hb35zLm2zTZe6VSQ0NeVPgdlZRhJtxzmiAYLWjCiKmud6/ei89qJQfNRjr3f70cikUC9Xlebea1WQ7lcPnai5KcJaWTp92dWIOQ40UB9LPXX9P/ld+vXwLFl4jP3PP18p0mf4nUd5VDq9XoHnHn8rLwXmdys71+6oWEWRTEz7mgkMDFc7h2ScqUn8utREZkL4vf7EQwGT2w/aTQaqheJ7ALOa+eP3nld3/N0Q4vgs6HBoEOOiZmzQL5v9nkpXwdFep5nxIOUTTZzZR6Fz+dT48k5dZxzkQrPAiCcPwAwPz+Pl19++cjz6Eag/h6vmVGNZ0U+n0ev11ON8RwOB6anpwHsR9QY5ZGFUKgns1eGzFGmI65UKmFnZwehUMi0JLxh7BVNefDggerVVK1W4XK5MDMzg3g8/lSVLjnuekTjWdflsQ2NUCjUV+rVzNsik/e48XGisesp0L+YZShLemmYiCepHKxQQSHCh0dBBewZQqQUcIC8Xm9fd0ip3OglAJmTIUPJvV4P29vbR/LbThu6sNIF4GEe9MM2x0EhYrnx8NmcBLfxeUA+y6OU4adVIKSRwZAnucvDgF6vp7zwspiD3Gxl8QS5nqUSyXPJKi5SCZRrnZXj6F2UCgqrXzA0b1bd5iyiUqkcUHLkepJUEqA/ukZniey7IY/hZ+x2O2q1GrLZLMrlsjJuisUistks4vH4wOjm84SZ4QlAVTSSyr0ur/TP6jBT5uRv/W/+z+fCnBG3241EIoFsNtt3Pt0Iep6gwgLsG2lyzMgBN4taEPp48bw65PzkMRw3GYHSr0F/DmbPUkY2TnKulstlLC4uYmNjQ+kSNC4kY4KG/sWLF3H9+nVks1l89NFHygMtlS153WYGq9kYy/c5hlKWAlC6RjQaRSQSQaVSQaFQQKfT6aPF6WDUlBGmTxNOpxPJZBLhcFhRgzgnnU4nIpGIuvajUCwW8ctf/hKbm5u4d+8ecrkc5ufncePGDYyPjyMWix15juPMHbZHYNn5ZwXl+61bt/DgwQMkk0m899576nkYhoEPPvhAdTXnWuFv7m108NHQ4P7abrexvr6Od955BysrK5ienkY8Hsf6+joWFhawsbGBe/fuYXt7Gx6PB3NzcxgbG0MgEFB94p4UhmGo/iV08p/E2nxiQ4PRC/apAKCUKT5AlsQjLYIVRuQiA/atTCojcpBlFIQCioupXq+jVCqpByqTy+iJ4qZtt+91F6c3VqdRSYODtCuG1wgmJD3PLpKELszMlOajPm8GfbMgKGSp+A1rFSUqsGZVs3QP1tOAn5cRMyrjw2JoGIahmgix2Q/Qz+Xmb90rJA0E/pAuKb2l/AzPSSeAbPypF46gQJbJo2cZlUoF29vbquodcDC/BcCBdSyTciVtSFdoKLOq1SrsdruqNd/tdpWhQc/aWYKZwk8Pt8/nUwnzhJxLg6IQx/1Os8iRvvYZhSKlgR7206ZKPQ2koWHhIMrlMlZWVvoMDWkg0YPM1y5duoTvfe97uHfvHm7fvq2Shnu9vdLdNIB5vJynZnunmUHLuUznA/dy0r6j0Sii0Wjfccy10iPklK/VahU+n+9TNzQcDgeSyWTf9QBPxwwolUr41a9+hUePHmFzcxO5XA6vvfYavvnNbyKRSBzL0Djsu/nMut0uCoUCarVaX1PnpwUNiN/85jf45S9/qZpLy0ifzCvW0wJYXKfZbKq9QhqyhmFgfX0d7777LsbGxvDmm28CAD7++GP89V//NXZ3d3H37l3U63VcunQJk5OTytB42r5ddPIzGX8QdepJ9aUnytFoNpsYGRlBMplUhoXcCJgIw2iHtN54UdKjSchQjR42ljcoF5ssw8fvlB4W6YGQYThCGhoOh6PPsODiZgIPBdNZEuzyAR9mbJgZD4MiG2bn4vnMPIzDBrPrP8pLepxz6h4uzl0mdsm5ddYhDVneEyM0UhmWeQaD1qx0FkgPJgBVBpE0FXrFgP1eAfTq0wEwDBW8GNLe2dlBqVRSMkkfJxnl4X3pXmGdoqZXXyLlQOa9kH4wTP00uHeYGRo6zLzyeuTGLKKhn0vSOwjOOY/H03ct+meHWQZ+ViD3fLNcEqB/nwwEAhgbG0M+n8fU1BS8Xi92d3f7aInAvrNFKv9mRsagfVSv8GWz2VT+1ujoKGZmZuB2u7G4uHhgDUung2EYil7DnNXnEb00DANbW1vY2tpSDiiHw4FEIoFAIKB6wphBdsXe2trC7u4uXC4XRkdHkUgkEA6HEQwGn5mGrEeMT4qKOzExgUajoXq3kYrH/ctms6k9jToq55KMWjBypTueyApYW1tDpVKB2+1GOp3GwsKCqqxKA4b5IaOjo888XrwuAIrmNQjHnXPH1pynp6fRarXw0ksvoV6vY2VlBbdv30av11PRDpapJecMgOJAcuHrUQu5oXIT1kvEAVDKPiMU0hulK0PS8OH3yvwNhvdsNptqSkRvFo/pdrvI5/OoVquqwdDzpk4RT6rw60bGcfIsJGdVJksO6yZLD5E0aGVky8wgO+55qXAD/QmCTAI7qzQWHXItynXE0KmMNnANSzqiXI+GsZdURkEr1x2T/xwOB0ZHR5FMJpV3rtfrqd4ZFMC1Wg2VSkXldZ1lGMZeLfg7d+5gdXUVbrdb1ZSnbJMlW6V8kjKP648RIdm5mZ9lpEf2e8hms/D5fCiXy89tDI6CTiWRycCykZWUc0wGlxEfuWaPu7akckjFg/8zCdLv9yMcDiMQCCiD7qhIsoWzBc4Vrh3OK5bBB/oN0YmJCdy4cQOhUAirq6tIp9O4ffs2tra2VJEZmTwuI/26wapHIeUPqdn83+12Y3R0FMFgEJ/73Ofwxhtv4O7du7h16xaq1Wqf80qet9vtKh3s0qVLJ6JgPg16vR7+/u//Hj/84Q9V4rPX68VXv/pVzM/P4/z587h69appFHplZQW/+tWvsLKyglu3biGbzeL111/HpUuXcO3aNczMzMDv95/IfTFCXK/XUa1WT4QC/uabb6Jer+Ojjz7C48ePUS6XkclklC4rwZxhynxG6uv1uoroAv3pB4ZhoFwu491334XNZsNPf/rTvv2We7XP58ONGzfw7W9/G6lU6oCD5En0Dl5bvV6HYRiKITQoD+m4OLahwYuPRCJIJpMolUoIBAKqsgCAA8oGX5ORCiaTyiRT6enjDenl5uj9lO/Lm9U54HJg5ObEB6R7Dc28VrxeKgtnxdAw85gctfHpyvSgUNhRGNYNls9aRraeNZoxCNLrNGxUMzPKIoUblV7pJJBGBiEjGmabsE4po3NCjheFtfRADQsFrdVqoVKpKGEtx0NXnoH9ecKQOznOdrsd+XwelUpFyT9p1EoZxvNzk5DJh2cRZhuxLCkrIfcFfV+R8l4/p1x3+j4h9xE9AndYBHvYo7qfJZjtkYOcZVQEw+EwRkdHYbPZsLOzA2C/a3i73VZrmkax9P4SuiyUOR6BQEApl2RkjI+PIxQK9Xnyj2oySIcMqUDPMiel113/TjNmib7OqtUqMpmM6lbv8XiwtbWFYDCIsbGxvog2x7PX66FYLGJzcxOZTEYVNuA4RKNRRdt5VkinxUkyMwKBAOx2O/x+P3w+nyqiot+vrhNLx4XUjXms1H273a5ywPEY9p6TrJxQKISRkRHlhH/S8ZE6i3TAyOJOz4IneopOpxMvv/wypqensbq6irm5OeTzefzud79T3n+WwZTNtyi0dcVeT7jWb97MItMVRt1oOCyU7vV6FZeRyUss0cvPMcGKkZpoNIpLly7hC1/4wlPz3k4KnFROp/NAQ0SzY/WIkKTE8JjjfKce0dBDxGdVmZFgzelqtdrnxdTHUHrkDxtffQx1o9hut8Pn8ykFahjGyDD2+ZkMAbMUH7BX0ajRaPTRmmR9bVmpgmFj5mnIIhGdTgfZbBbdbheTk5MIh8MIhULw+/3q2bAEIdehTi86y+DGm8vlFA+XCfaUXVzHNptNVW25ceMGvvnNbyIajeLChQuw2+34T//pP+Fv//ZvYbfblVNHGmYA+iJH2WxW5W0MAyg/QqEQ4vG48vrJuSXzNxjZMXOU6GvxsLnCPYdGGedls9lUNfsZ0eD5ZTXFYTF6P8uQkdVGo6FyLQ6bF6Ojo/jud7+LZrOJb3/728qw0J0mnG9kQgCDixBwLutOGblPOJ1O1TqANBlC15tI21pbW1Ndm5+FUrqwsABg3+iW3eCZ+6rnF8j1QAZLr9dDLpcDAHzwwQdYXl6G3W7HhQsX4PV64fP5YBgGNjY2kM/ncevWLfz85z9HvV5HIpHA+Pg4vva1r+HrX/864vH4iTp2pdPsuEnqx4HNttcFPZFIqB5uNJio8/KnUqkc0FHJujHTQ/isuf/K58NnEQwGEQgEkEqlMDEx8cTFUjivJb2Q0RbKZRo1wH7xJGk8HwdPZGjYbDZVn93v96PX26vGtLy8rLoe1ut1tSHICaor/jQ0JK2KNzJo0KVBwuOksTJIOTTz5OtGDgUHDQ0AinuXSCQwNTV1JgwNM7rPoGN1j55eNcVM+TVTnOX4mT2bYQC9vXoVKLPNQVdUzDylhxlrHOvDvLRnEVxPrBYlhaFcN6QSsEGR5D8D6DtWVpWT3njZZZ70RSZo8lpkh+TD1vdZA8th08iiMiLlmJw3zHeLxWK4ceMGUqkUXnvtNTgcDvzkJz9RRpqkqsk5TEOOlaho1Jxl6HLG4/Eow5zvc/Nj/gaTtHVZBpj3HTFTvviepPBScSO9gsVFqOyZecYtnG1Iw1PmgMoIoBkCgQAuXrx45PkZ3TXr3s7vJ2SFK8q6wxCPxw/kf/A+gH2Fs1wuY2trC+Vy+ZnmJKuryR4jrPDZ7XbVPkZdjnJcZ6sYhqHaAKTTaZTLZWxvb6PRaKh7NwwDxWIR29vb2NjYwOLiIhwOB6amppBIJHDu3DlcvXrVNAH+JCANpZMA98dAIKB6TtFAoPFFPVfuYwCUnmwYxoHG0nJceb26gcQqfYFAAMFg8ECvjePco1wPXB+SvsWqU9LZzPyTJ8FTx6VCoRDm5uaQSCTgdDpRKBSws7OD3d1dFAoFrK6uKk+bNCakUSB/myl/wP7DkK9z0vd6PbVopbdJBx8aNw9pjfN7I5EIYrGYmohOpxOzs7OIx+O4dOnSmUoEB45WdnXjQE4oSb3QQ6KHbarD4lE2A5+5nCdmnGs9CmR2v4d5VKUBTWNjmAwNM+oNlTsaa1TQ5FoBoAQQe+243W513KB5Q4FMZVKGmXleev15vrOOWCyG+fl5OBwOPHz4sC9ZmzBzjkjKju4VHVRxS0Y5XS4XwuEwRkZGzmQui37/Un7RoNDpZDRUufnJBHq5GUvjw8wgNXMe2Gy2PsNZ8rdJ05WyU+YnDbMs/CxgfHwc3/jGN7CysoJHjx4hl8v1GRzSwfg0iic/c5QHmefVq1weBuaERiKRvn3b6XSq9WCz2RCNRjE5OYloNPpMijOTikkPM8s3kY5jcvZ5L1tbWyrh+/LlyzAMAxMTEwiHw/D7/VhfX4dhGKp7+OLiIjKZDHZ2djA6OopIJIIvfelLSKVSmJ6e7tPNzJwKTwrKl0AggKmpKTSbTVUx9Vlht9sxNzeHL37xi7DZbLh9+7bqCSKLJfFHOoqp20onu6TBSv1M1+M6nQ6CwSBef/11jI+PY2Ji4qnvQZdjPD/bRnBfPuwzR+HY2rOu1JLuYBgGXn31VfR6PSwuLmJtbQ337t3D+vp6H2WAYSXeCM8phbjk4vL7fD5fX0UF8tFYGYoTkf+bbQDys1wgNDh47PT0NM6fP6+qT/j9fpw7dw4jIyN913WWoHsT9Pf4+zAvznEjFMPkUTaDpGJQiSENQy5iYH9cKRD0OSXng3yPnuZWq6W8ACcZpj1t9Hp7DY2q1WpfxTWZqCapBPQ4S0ODx7daLXg8HqUcms0duRZZ6UcaGDIayqIMZ72Pi81mw8jICK5cuQLDMOD1ehU9k+B8oDHHtcmxkHXLZdUqPSGUikuv11MKwMjICFKp1HOrQnMUBskQ6TXlcbLMMUuV0/ggvZXjoedoDJJTMoLidruVp9Fut6seMtLQ4N7E66Zh8ixUFQunj5mZGSQSCTx48AA//OEPsbi4qKKjurw3cxwdBa5F2fvlpECHQSQSQalU6qsAJCsaxeNx5Qx9lrUuG89VKhW1B7CPkaTKuFwuBIPBvvXWbDZV8YREIgGHw4HJyUlEIhH4/X4sLi6iUqng8ePHqFar2NjYQKFQgMvlwtTUFCYnJ/Htb38bU1NTSKVSfdFF6Uh4WtBACgaDmJubQ6fTGVgJ62nOfenSJcTjcZRKJTidTtTrddUpHdiTOZRvzMvh3JHOIxYhklXJ+FvqKaQVe71evPnmm7h48SJmZmbUNR3mgNahO2BkRINFOtj4mu8/jQ74TG566UkyDENx1aampvDKK6+gXC4r72i1WlXJMtJbarfbFbWAD0Fa/YFAAOFwuG/CsaM4r0EqPGb5HjIBkAtE50COjY1hYmICPp8PiURCcQrPUiRDWsF66Ts9MgH0RywY8tQ9pXIR67/5t5m3f9jARQOgTzE2U1zlwiaOWrR6RTXOZb1k51mH7DWi03TkPJBUKL2Sj3Qc8N75Gtc6lUeZxzFoQ6GCNyyJ9aFQCOPj49je3gbQXy6QhtRh80mOg4wY6e/LceEzovw9qY30pGCm2OmRCDkmLpcLsVgM3W4XwWBQGQYej0fRncyqnvG79O/WX5dNtei4IgXhOOt1GObhZxkOhwMejweRSARXr15VVSTZiIwyPhKJ9OWhPSmOmgdPoyC7XC5Eo1FVUIINhDnfmYg+Pj6OqakpxcR4WqRSKXS7Xfh8PtVjol6vqwpZcv1Imc41LeljdCxRF2NeX7VaRaVSQa1WU4ZUOBxGPB7H2NgYYrFY39o7CQODoHxgbqCs1HcS5/Z6vQiHw5idncWXv/xl1Yeq0+moruEyL5l7AA04Gg961EKnIkvHcjAYRDAYRDwef+ou4PLc8jvYS4t79knsu8fWoo964DabTVVNOHfuHN544w01WEwSyufzaLfbqFQqAPabddGTxMQm2VyPORLy+/V68se5Pv0+9OOpwHORUKk/S3C5XIhEIioEyUUtDSm5QOkVMDMw5N9Soez1egfCuzzOzIgbFvh8PkxPT6tuypyLMhFKCmu+DhwsV2gGXXg5HA5Eo1GMjo6eSRqLGSjwyO+n50V27Ab265FzvUg6mgwbc33bbDb1eqVSUeudjYrYc0IPFUuFmlHRs06dstlsqkMrjVhWhel2u32RWCrLcm7pc83j8SAUCinvIl9nQQjKgVqthkgkguvXr+ONN97A2NjYmYtocAOV0UXp0ZObWSQSwSuvvIJCoaDWqXQwcWzNFCwzLx2hR4oqlYpqcDU/P68q3nDukbLGv3m+YY7ufhZAeT4zM4N/9+/+HXZ3d/GXf/mX+PGPfwwAql/KlStXMDIygsnJySf2AMsfs88Oeu2ovSQYDOLy5csIBoMol8tqDTQaDfj9fkxPTyORSOBrX/savvKVr6iE7afFW2+9BWCfuiOjrPyfjJRWq4VSqaSi251OB+VyWel01BFoWJTLZbXXlkolAFB0r7m5Obz88ssIBoOYmppSTZ45Nielf9HpV6lU8O6776JUKuFrX/vaiZzbZtujsIXDYfzRH/0RvvzlL6NSqeDhw4fI5/N499138dFHH6FUKmFzc1M51HhdhFkxJLPvAoBkMonJyUnMz8/j8uXLuHDhwjM1bJTzkfk1jx8/hs/ng9/v7zM2n3ZPOVF3PZV1dkiUiEajyOVyqvSjYRjw+/3K0CiVSnC73aragDQ0njU0+KKAiohMBpcTUuZgcNLogtHMS0BlR+bS6BUThp2bzARPwzBUDoFOKTMzovTIhoQ+PtLDT+8rFcthAJ+9Hl2Q1BEep889s9dkZSS9Wos8N5OZ9e/hOTimJ5nEd5rgcye9NBgMqrHV16s+rvr60terXmWPXjE2xmLlGtLdzhLMlHN5f/J9l8ul8v9YAY0bH9C/VnVjQ47hYd8nEzbl8zLbtOUzsIyM4QCrJk1PTyMWiyEejx8opMJSoU+qqJlFzXTZNMgAGXQ+HsscjWAw2LcP07HINU5v9rNCTyI2AyMrLPbT6XQUvUrmPlLO0SFUq9XUmuNeGIlEFMVzbGwMPp+vrxDESUMmgLOi0klScBlx5vNgQjybEabTabhcLuUgBvqj/7q8Okp2scrUyMgIgsHgM8n6QZEj6jJMBjdzUD8JPjVekMzKp5edXgdWZuGNSc+8fpOfZTCUyUVPuhmrQ0jLE+hXSg5bWDov2uv1qnrM5OoXi0Vks1mMjo4eSKIehufDkK/NZsOVK1cwNTWF3d1dZDIZVdaS46Qre4OqpgH7C5WVJ8LhMMbHx+Hz+TAyMgKv1ztUORos6kABJterXrCBERAZEQoGgxgdHUWlUkGhUFAlanu9vTK1Fy5cUB5+epMZIaFCyefk9/sRDAaRSqVw/vx5tfkOC+bn5/Fv/s2/wcbGBv7v//2/uH//vhpHuTlzbTLaGwgE1DGNRkN5EJvNZh/NiMmb58+fx7e+9S1MTEzgpZdeOvHSkCcBri3ZmFA6NhqNBmq1mqKYjYyM4Ctf+YqSP8xDkbIKOLwQhv63PJ6/ufYdDgfi8bhSPPVz8zxs+mVWacjC2QNzOlksgTl0pB6XSiV4PJ6+ppcyJ8Ks+ALQb9w+qbdXP07up1TI2X+CDevokPH7/fj85z+PyclJpFKpJxmKZwIp7VwfspqS3m3bMAxVNISVHmW1omAwqHQMVtg6TYq61+tFPB7H1NQU3njjDZTL5VMdO7fbraLaiUQCX/3qV1VD2k6ng2KxiGaziXw+j0KhgHq9rqI+NN5kyXIAysBwuVyqDHoikUAymTzw/U+ij0kGD6/9+vXrCIfDiEajyniiTJQsjyfBp2Zo0Mtn4elBIciFzRKjwP4GqCcTyQ1y0MZIRVpu/EyWp0Am7YV5Njw/fw+DsUHlbmxsTEVtmPgsvepSsdYTcIF+Cgjf9/l8Khlufn5eccqHxcgA9jY8Vt5hZHKQkcq5xflGZZAJyaTF6O/FYjFFX2OlIZ6Pc5teeq/Xq8r2McF5mGRIMpnEN77xDaTTady8eVN5JDlvpLcS2HckSCWWlAk90uRwONSGFI/H8dZbb2FiYgITExNnlqono6JAv1eP8ozvBQIBXLp06Xle7gHwWmX5ZwtnG+TQy7wBKsekhUoDV1bAPCwS/aweXh1yD2UOQ61WUxX/ACgnzNzcHGZnZ48ViTgpSMfIWYyWHgYybeLxOM6dO4dqtXqqY+d0OpFIJADs0cQkOp0Otra2UKvVkE6nVXni9fV1NBoN5PN5RcOu1WoA9pksTK5//fXX8a1vfetAFO5p9DBJCeW1T09Pw+fzIRaLKWcp990zb2hYeHZwsZBf2mw2VVIjOZN6GE4vaasrzDovnNQiWrCsOjE1NYXp6WmMj4/3JWwNi5EhwfuNRCKYnp5WXk0qejQ6qPCZRTj0hkbsDhoMBpX3Z9jGxev14pVXXkEymVR8eLfbrag/iUQCtVpNGZ1erxdjY2N9yYHRaBTJZFKV3qvX6wiHw33NC1utFsLhMOr1OpLJJOLxOJLJJBKJBHq9njqWIfVIJKIKMwzTmDKp02az4fvf/z4uX76sIpJyrm1vb6NUKmF2dhbj4+OKMmS32zExMYGXX35ZGRxutxuTk5Pw+XyqyeH58+dx4cIFlSR6FsHodK/XQzAYVM/U6/XC6/VidHQUIyMjJ1Z28iTg9/sxPz+vKniRjz0yMoJIJDI0lEgL+7lTX/rSl5Qx4Xa7MT09jUgkgqmpqQPRiucla+i4Yo4b5R4j52ZUFwtHIxgM4pVXXkGr1VKGwKcNRv0ZtQ8Gg2g0GhgfH1cRDTpdZMd5RvhdLhcuXrxoKntOYk44HA6MjIz0FcfQI3tP4zy1DI0hAjdkt9utKAjcqA/jgLMChxSgMtyrJ5GT02gYexUIOp0OpqamMDExgdHR0T5axjAKPC5SKrcEq2S0Wi3V+EwmvXH8qOTR88SynLL76zDC7/fjK1/5iqLtDEq0LRaLyOVy8Hg8qpwhQ8CyeMOFCxcO5AXJ3CLyQPmaTiHgb93rMizweDxIpVJIJpP41//6X6tEu9XVVVSrVeXZWlhYwPb2Nl566SWcO3dOccYNw8D58+fx1ltvqY7twWAQn//855FMJnHx4kXMzs4qw/cszz16ltkBOZVKqXKjXq8XMzMzSCaTiEQiz/tSFcLhMF555RVks1nV5T2ZTGJqakpF7SwMB+x2O65evaooeFTaotGoyuOQORLA89vbeH2BQKDP2OA+TifWMO69zxOxWAy///u/r2j7zwOMTAB7+oee2zgoPwM42FPpNOBwODA+Po7x8XH1nScRvbMk5ZBBKl78TQqGnrgslTl64A+LaOiGBoUyv4fK54si4HQFVua76F1QZYRCJidzE+Dxwwx6nenBkFEuvg/sh6L5w3HguEh60GcdXFOMNPj9flWi1e12KzqELIAhjS8aEZyTjAqxk/ZZigAcF1LO6P1BzJIS+ZnncZ0cc3nNlpI3nJB9aqjAk+L6vGW3Pp9OmpplYX89P2/oeWJnDaexb9sMi2hqwYIFCxYsWLBgwYKFE4blcrRgwYIFCxYsWLBgwcKJwzI0LFiwYMGCBQsWLFiwcOKwDA0LFixYsGDBggULFiycOCxDw4IFCxYsWLBgwYIFCycOy9CwYMGCBQsWLFiwYMHCicMyNCxYsGDBggULFixYsHDisAwNCxYsWLBgwYIFCxYsnDgsQ8OCBQsWLFiwYMGCBQsnDsvQsGDBggULFixYsGDBwonj/wMVme3mqUQ45QAAAABJRU5ErkJggg==\n" }, "metadata": {} } ], "source": [ "import matplotlib.pyplot as plt\n", "\n", "fig, axs = plt.subplots(1, 10, figsize=(10,10))\n", "for i in range(10):\n", " axs[i].imshow(train_input[i], cmap='gray_r')\n", " axs[i].axis('off')\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "SZjVIoyqmVy-", "outputId": "ca9a6dfe-f474-46f4-d86e-30b1d1b036bc" }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "[9, 0, 0, 3, 0, 2, 7, 2, 5, 5]\n" ] } ], "source": [ "print([train_target[i] for i in range(10)])" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "Rx32OX7NqNnD", "outputId": "ec5bdaee-a3e0-4d25-8956-df58f176d099" }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "(array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9], dtype=uint8), array([6000, 6000, 6000, 6000, 6000, 6000, 6000, 6000, 6000, 6000]))\n" ] } ], "source": [ "import numpy as np\n", "\n", "print(np.unique(train_target, return_counts=True))" ] }, { "cell_type": "markdown", "metadata": { "id": "lrhnk0zXYj5e" }, "source": [ "## 로지스틱 회귀로 패션 아이템 분류하기" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "id": "2HSAg_UFNH52" }, "outputs": [], "source": [ "train_scaled = train_input / 255.0\n", "train_scaled = train_scaled.reshape(-1, 28*28)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "kwOFVfpxxuLU", "outputId": "20e571b6-ac3d-4081-835e-07a3f41624c1" }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "(60000, 784)\n" ] } ], "source": [ "print(train_scaled.shape)" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "Ui3iJlfLNLzr", "outputId": "f80e1380-162c-4e3e-83d5-e6b2ba297602" }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "0.8196000000000001\n" ] } ], "source": [ "from sklearn.model_selection import cross_validate\n", "from sklearn.linear_model import SGDClassifier\n", "\n", "sc = SGDClassifier(loss='log_loss', max_iter=5, random_state=42)\n", "\n", "scores = cross_validate(sc, train_scaled, train_target, n_jobs=-1)\n", "print(np.mean(scores['test_score']))" ] }, { "cell_type": "markdown", "metadata": { "id": "Y0W7D4ED3r0B", "tags": [] }, "source": [ "## 인공신경망" ] }, { "cell_type": "markdown", "metadata": { "id": "zaFtnKmzcQeJ" }, "source": [ "### 텐서플로와 케라스" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "id": "_WOZURhzcTAi" }, "outputs": [], "source": [ "import tensorflow as tf" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "id": "rbKFPAUucVkV" }, "outputs": [], "source": [ "from tensorflow import keras" ] }, { "cell_type": "markdown", "metadata": { "id": "YdNdad0mcoGD" }, "source": [ "## 인공신경망으로 모델 만들기" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "id": "4smUJC1hOWTF" }, "outputs": [], "source": [ "from sklearn.model_selection import train_test_split\n", "\n", "train_scaled, val_scaled, train_target, val_target = train_test_split(\n", " train_scaled, train_target, test_size=0.2, random_state=42)" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "G9OwZTRorHWQ", "outputId": "2db56a54-4f8c-44f0-8802-1feea9db84bd" }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "(48000, 784) (48000,)\n" ] } ], "source": [ "print(train_scaled.shape, train_target.shape)" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "Van_eJ7BOo-y", "outputId": "ed8d9ff2-fe96-4f34-e25a-389c5857b211" }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "(12000, 784) (12000,)\n" ] } ], "source": [ "print(val_scaled.shape, val_target.shape)" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "id": "DEXlpF_8gmJv" }, "outputs": [], "source": [ "dense = keras.layers.Dense(10, activation='softmax', input_shape=(784,))" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "id": "k8mtAypNPIz7" }, "outputs": [], "source": [ "model = keras.Sequential(dense)" ] }, { "cell_type": "markdown", "metadata": { "id": "xPTmHpMe3r0D" }, "source": [ "## 인공신경망으로 패션 아이템 분류하기" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "id": "VqJ5dpwwPWPr" }, "outputs": [], "source": [ "model.compile(loss='sparse_categorical_crossentropy', metrics='accuracy')" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "JLLytXw7UcvB", "outputId": "fc61d6e9-de3e-40da-a898-4c3cc9895d42" }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "[7 3 5 8 6 9 3 3 9 9]\n" ] } ], "source": [ "print(train_target[:10])" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "KiZnrOgQP4ps", "outputId": "773cb57d-f629-4ad6-d39a-4549ee3a53e4" }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Epoch 1/5\n", "1500/1500 [==============================] - 8s 2ms/step - loss: 0.6069 - accuracy: 0.7947\n", "Epoch 2/5\n", "1500/1500 [==============================] - 5s 3ms/step - loss: 0.4742 - accuracy: 0.8382\n", "Epoch 3/5\n", "1500/1500 [==============================] - 4s 3ms/step - loss: 0.4508 - accuracy: 0.8474\n", "Epoch 4/5\n", "1500/1500 [==============================] - 3s 2ms/step - loss: 0.4367 - accuracy: 0.8527\n", "Epoch 5/5\n", "1500/1500 [==============================] - 3s 2ms/step - loss: 0.4280 - accuracy: 0.8555\n" ] }, { "output_type": "execute_result", "data": { "text/plain": [ "" ] }, "metadata": {}, "execution_count": 20 } ], "source": [ "model.fit(train_scaled, train_target, epochs=5)" ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "OdXPQEXOQIFm", "outputId": "33dd5098-2e84-41a5-a5eb-8096528ea58f" }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "375/375 [==============================] - 1s 2ms/step - loss: 0.4526 - accuracy: 0.8465\n" ] }, { "output_type": "execute_result", "data": { "text/plain": [ "[0.45262548327445984, 0.8464999794960022]" ] }, "metadata": {}, "execution_count": 21 } ], "source": [ "model.evaluate(val_scaled, val_target)" ] } ], "metadata": { "accelerator": "GPU", "colab": { "name": "7-1 인공 신경망.ipynb", "provenance": [], "gpuType": "T4" }, "kernelspec": { "display_name": "Python 3", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.3" } }, "nbformat": 4, "nbformat_minor": 0 }