845 lines (844 with data), 159.1 kB
{
"cells": [
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 0
},
"id": "A7xgHxPxd0J_",
"outputId": "f766c139-ac77-4c0c-fd93-e382f61d2188"
},
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Time in seconds since beginning of run: 1705999826.852114\n",
"Tue Jan 23 08:50:26 2024\n"
]
}
],
"source": [
"# This cell is added by sphinx-gallery\n",
"# It can be customized to whatever you like\n",
"%matplotlib inline\n",
"# from google.colab import drive\n",
"# drive.mount('/content/drive')\n",
"# !pip install pennylane\n",
"import time\n",
"seconds = time.time()\n",
"print(\"Time in seconds since beginning of run:\", seconds)\n",
"local_time = time.ctime(seconds)\n",
"print(local_time)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "RWYw4Yy7d0KA"
},
"source": [
"Quanvolutional Neural Networks {#quanvolution}\n",
"==============================\n",
"\n",
"::: {.meta}\n",
":property=\\\"og:description\\\": Train a quantum convolutional neural\n",
"network to classify MNIST images. :property=\\\"og:image\\\":\n",
"<https://pennylane.ai/qml/_static/demonstration_assets//circuit.png>\n",
":::\n",
"\n",
"*Author: Andrea Mari --- Posted: 24 March 2020. Last updated: 15 January\n",
"2021.*\n",
"\n",
"In this demo we implement the *Quanvolutional Neural Network*, a quantum\n",
"machine learning model originally introduced in [Henderson et al.\n",
"(2019)](https://arxiv.org/abs/1904.04767).\n",
"\n",
"{.align-center\n",
"width=\"90.0%\"}\n",
"\n",
"Introduction\n",
"------------\n",
"\n",
"### Classical convolution\n",
"\n",
"The *convolutional neural network* (CNN) is a standard model in\n",
"classical machine learning which is particularly suitable for processing\n",
"images. The model is based on the idea of a *convolution layer* where,\n",
"instead of processing the full input data with a global function, a\n",
"local convolution is applied.\n",
"\n",
"If the input is an image, small local regions are sequentially processed\n",
"with the same kernel. The results obtained for each region are usually\n",
"associated to different channels of a single output pixel. The union of\n",
"all the output pixels produces a new image-like object, which can be\n",
"further processed by additional layers.\n",
"\n",
"### Quantum convolution\n",
"\n",
"One can extend the same idea also to the context of quantum variational\n",
"circuits. A possible approach is given by the following procedure which\n",
"is very similar to the one used in Ref. \\[1\\]. The scheme is also\n",
"represented in the figure at the top of this tutorial.\n",
"\n",
"1. A small region of the input image, in our example a $2 \\times 2$\n",
" square, is embedded into a quantum circuit. In this demo, this is\n",
" achieved with parametrized rotations applied to the qubits\n",
" initialized in the ground state.\n",
"2. A quantum computation, associated to a unitary $U$, is performed on\n",
" the system. The unitary could be generated by a variational quantum\n",
" circuit or, more simply, by a random circuit as proposed in Ref.\n",
" \\[1\\].\n",
"3. The quantum system is finally measured, obtaining a list of\n",
" classical expectation values. The measurement results could also be\n",
" classically post-processed as proposed in Ref. \\[1\\] but, for\n",
" simplicity, in this demo we directly use the raw expectation values.\n",
"4. Analogously to a classical convolution layer, each expectation value\n",
" is mapped to a different channel of a single output pixel.\n",
"5. Iterating the same procedure over different regions, one can scan\n",
" the full input image, producing an output object which will be\n",
" structured as a multi-channel image.\n",
"6. The quantum convolution can be followed by further quantum layers or\n",
" by classical layers.\n",
"\n",
"The main difference with respect to a classical convolution is that a\n",
"quantum circuit can generate highly complex kernels whose computation\n",
"could be, at least in principle, classically intractable.\n",
"\n",
"::: {.note}\n",
"::: {.title}\n",
"Note\n",
":::\n",
"\n",
"In this tutorial we follow the approach of Ref. \\[1\\] in which a fixed\n",
"non-trainable quantum circuit is used as a \\\"quanvolution\\\" kernel,\n",
"while the subsequent classical layers are trained for the classification\n",
"problem of interest. However, by leveraging the ability of PennyLane to\n",
"evaluate gradients of quantum circuits, the quantum kernel could also be\n",
"trained.\n",
":::\n",
"\n",
"General setup\n",
"-------------\n",
"\n",
"This Python code requires *PennyLane* with the *TensorFlow* interface\n",
"and the plotting library *matplotlib*.\n"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"id": "VPbcKloNd0KC"
},
"outputs": [],
"source": [
"import pennylane as qml\n",
"from pennylane import numpy as np\n",
"from pennylane.templates import RandomLayers\n",
"import tensorflow as tf\n",
"from tensorflow import keras\n",
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "ISZAWXDMd0KC"
},
"source": [
"Setting of the main hyper-parameters of the model\n",
"=================================================\n"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"id": "1D5V-v5Vd0KC"
},
"outputs": [],
"source": [
"n_epochs = 30 # Number of optimization epochs\n",
"n_layers = 1 # Number of random layers\n",
"n_train = 50 # Size of the train dataset\n",
"n_test = 30 # Size of the test dataset\n",
"\n",
"SAVE_PATH = \"/content/drive/MyDrive/Colab Notebooks/data/quanvolution\" # Data saving folder\n",
"PREPROCESS = True # If False, skip quantum processing and load data from SAVE_PATH\n",
"np.random.seed(0) # Seed for NumPy random number generator\n",
"tf.random.set_seed(0) # Seed for TensorFlow random number generator"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "avddR0atd0KC"
},
"source": [
"Loading of the MNIST dataset\n",
"============================\n",
"\n",
"We import the MNIST dataset from *Keras*. To speedup the evaluation of\n",
"this demo we use only a small number of training and test images.\n",
"Obviously, better results are achievable when using the full dataset.\n"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"id": "xlhnv1hrd0KC"
},
"outputs": [],
"source": [
"mnist_dataset = keras.datasets.mnist\n",
"(train_images, train_labels), (test_images, test_labels) = mnist_dataset.load_data()\n",
"\n",
"# Reduce dataset size\n",
"train_images = train_images[:n_train]\n",
"train_labels = train_labels[:n_train]\n",
"test_images = test_images[:n_test]\n",
"test_labels = test_labels[:n_test]\n",
"\n",
"# Normalize pixel values within 0 and 1\n",
"train_images = train_images / 255\n",
"test_images = test_images / 255\n",
"\n",
"# Add extra dimension for convolution channels\n",
"train_images = np.array(train_images[..., tf.newaxis], requires_grad=False)\n",
"test_images = np.array(test_images[..., tf.newaxis], requires_grad=False)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "bDVPKQD8d0KD"
},
"source": [
"Quantum circuit as a convolution kernel\n",
"=======================================\n",
"\n",
"We follow the scheme described in the introduction and represented in\n",
"the figure at the top of this demo.\n",
"\n",
"We initialize a PennyLane `default.qubit` device, simulating a system of\n",
"$4$ qubits. The associated `qnode` represents the quantum circuit\n",
"consisting of:\n",
"\n",
"1. an embedding layer of local $R_y$ rotations (with angles scaled by a\n",
" factor of $\\pi$);\n",
"2. a random circuit of `n_layers`;\n",
"3. a final measurement in the computational basis, estimating $4$\n",
" expectation values.\n"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"id": "rD5_3eztd0KD"
},
"outputs": [],
"source": [
"dev = qml.device(\"default.qubit\", wires=4)\n",
"# Random circuit parameters\n",
"rand_params = np.random.uniform(high=2 * np.pi, size=(n_layers, 4))\n",
"\n",
"@qml.qnode(dev)\n",
"def circuit(phi):\n",
" # Encoding of 4 classical input values\n",
" for j in range(4):\n",
" qml.RY(np.pi * phi[j], wires=j)\n",
"\n",
" # Measurement producing 4 classical output values\n",
" return [qml.expval(qml.PauliZ(j)) for j in range(4)]"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "02g-DOe8d0KD"
},
"source": [
"The next function defines the convolution scheme:\n",
"\n",
"1. the image is divided into squares of $2 \\times 2$ pixels;\n",
"2. each square is processed by the quantum circuit;\n",
"3. the $4$ expectation values are mapped into $4$ different channels of\n",
" a single output pixel.\n",
"\n",
"::: {.note}\n",
"::: {.title}\n",
"Note\n",
":::\n",
"\n",
"This process halves the resolution of the input image. In the standard\n",
"language of CNN, this would correspond to a convolution with a\n",
"$2 \\times 2$ *kernel* and a *stride* equal to $2$.\n",
":::\n"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"id": "AEL9cTFEd0KD"
},
"outputs": [],
"source": [
"def quanv(image):\n",
" \"\"\"Convolves the input image with many applications of the same quantum circuit.\"\"\"\n",
" out = np.zeros((14, 14, 4))\n",
"\n",
" # Loop over the coordinates of the top-left pixel of 2X2 squares\n",
" for j in range(0, 28, 2):\n",
" for k in range(0, 28, 2):\n",
" # Process a squared 2x2 region of the image with a quantum circuit\n",
" q_results = circuit(\n",
" [\n",
" image[j, k, 0],\n",
" image[j, k + 1, 0],\n",
" image[j + 1, k, 0],\n",
" image[j + 1, k + 1, 0]\n",
" ]\n",
" )\n",
" # Assign expectation values to different channels of the output pixel (j/2, k/2)\n",
" for c in range(4):\n",
" out[j // 2, k // 2, c] = q_results[c]\n",
" return out"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "N3MmyCQad0KD"
},
"source": [
"Quantum pre-processing of the dataset\n",
"=====================================\n",
"\n",
"Since we are not going to train the quantum convolution layer, it is\n",
"more efficient to apply it as a \\\"pre-processing\\\" layer to all the\n",
"images of our dataset. Later an entirely classical model will be\n",
"directly trained and tested on the pre-processed dataset, avoiding\n",
"unnecessary repetitions of quantum computations.\n",
"\n",
"The pre-processed images will be saved in the folder `SAVE_PATH`. Once\n",
"saved, they can be directly loaded by setting `PREPROCESS = False`,\n",
"otherwise the quantum convolution is evaluated at each run of the code.\n"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 0
},
"id": "c3oexS3hd0KD",
"outputId": "e4e73496-5506-40eb-b2a0-c24cc514d53b"
},
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Quantum pre-processing of train images:\n",
"\n",
"Quantum pre-processing of test images:\n"
]
}
],
"source": [
"if PREPROCESS == True:\n",
" q_train_images = []\n",
" print(\"Quantum pre-processing of train images:\")\n",
" for idx, img in enumerate(train_images):\n",
" print(\"{}/{} \".format(idx + 1, n_train), end=\"\\r\")\n",
" q_train_images.append(quanv(img))\n",
" q_train_images = np.asarray(q_train_images)\n",
"\n",
" q_test_images = []\n",
" print(\"\\nQuantum pre-processing of test images:\")\n",
" for idx, img in enumerate(test_images):\n",
" print(\"{}/{} \".format(idx + 1, n_test), end=\"\\r\")\n",
" q_test_images.append(quanv(img))\n",
" q_test_images = np.asarray(q_test_images)\n",
"\n",
" # Save pre-processed images\n",
" np.save(SAVE_PATH + \"q_train_images.npy\", q_train_images)\n",
" np.save(SAVE_PATH + \"q_test_images.npy\", q_test_images)\n",
"\n",
"\n",
"# Load pre-processed images\n",
"q_train_images = np.load(SAVE_PATH + \"q_train_images.npy\")\n",
"q_test_images = np.load(SAVE_PATH + \"q_test_images.npy\")"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "kJYilWS1d0KE"
},
"source": [
"Let us visualize the effect of the quantum convolution layer on a batch\n",
"of samples:\n"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 1000
},
"id": "2ckiL7srd0KE",
"outputId": "b9299d75-e8ab-418b-a745-a851fa1b7af3"
},
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 1000x1000 with 20 Axes>"
],
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA6QAAAPdCAYAAACdkqXUAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAACIPklEQVR4nOzdfVxUdf7//+eAggqionkRmpR4kYA6pNnysSUt3dpWV900L8psc7VW3bIoLbWPVpuWUWuZ5cVXLcuNT/bJrMxc14+V6ZoKGl5gpmjFapk6JV4hML8/+sk2zmDnwBkPc+Zxv926ybzOy/e8CN/g0zNzjsvr9XoFAAAAAMBFFmH3AAAAAACA8EQgBQAAAADYgkAKAAAAALAFgRQAAAAAYAsCKQAAAADAFgRSAAAAAIAtCKQAAAAAAFsQSAEAAAAAtiCQAgAAAABsQSAFAAAAANiiWgfSwsJCjRw5Ul27dlX37t01Y8YMlZWV2T0WAAAAAMAK3mqsX79+3kmTJnl//PFHb0FBgbdXr17eBQsWGP79krySvJdffrm3pKTEe/nll5fXnPQfn1/1+g+VF6pfc6f/mXb654fKC8Wvt9P/PIfD54jKCdWvt9P/PDv98zOi2p4hzcvLU35+vjIzM1W3bl0lJiZq+PDhys7ONr1W/fr1FRkZqfr161s/aDXA5wencfrXnM8PTuL0r7fTPz8pPD5H/IfTv958fqGnht0DVGTHjh1KSEhQvXr1ymvJyckqKChQUVGRYmNjf3GNyy+/XPXr11e7du0kqfxXp+Hzqz5yc3PtHgEAAAAIGdU2kHo8HsXFxfnUzoXTY8eOGQqke/bsUWRkZPnjJUuWWDtkNcPnZz+Xy2X3CAAAAEDIqLaBVJJ+erl75bVu3br8DOmSJUs0ZMgQ5efnWzRd9cHnBwAAACAUVdtAGh8fL4/H41PzeDxyuVyKj483tEZBQYHP4/z8fEe/pJLPDwAAAEAoqbYXNUpJSdHBgwd19OjR8lpeXp6SkpIUExNj42QAAAAAACtU20Davn17paamKisrS0VFRdq7d68WLlyowYMH2z0aAAAAAMAC1TaQStLzzz+v7777Tv/1X/+lYcOGqW/fvhoyZIjdYwEAAAAALFBt30MqSU2bNtW8efPsHgMAAAAAEATV+gwpAAAAAMC5CKQAAAAAAFsQSAEAAAAAtiCQAgAAAABsQSAFAAAAANiCQAoAAAAAsAWBFAAAAABgCwIpAAAAAMAWBFIAAAAAgC0IpAAAAAAAWxBIAQAAAAC2IJACAAAAAGxRw+4BAADBc9VVV/nVxowZE7B32LBhAeuvvvqqX+2FF14I2JuTk2NiOgAAEO44QwoAAAAAsAWBFAAAAABgCwIpAAAAAMAWBFIAAAAAgC24qFEYiYyM9KvVq1evyutWdIGUOnXqBKy3bdvWrzZ69OiAvc8884waNGggSXryySd17NgxDR48OGDv6dOnA9anT5/uV5s6dWrAXiBUderUKWD9H//4h18tLi4uYK/X6w1Yv/322/1qffr0CdjbsGHDCiYEUB1df/31SkpKkiRdffXVio+P1+uvvx6wNyMjI2B99+7dQZsPcLpJkyb51Sr6e2pExH/OJZ67iOB1110XsPejjz6q+nAXCWdIAQAAAAC2IJACAAAAAGxBIAUAAAAA2IJACgAAAACwBYEUAAAAAGALrrJbzVx22WUB61FRUX619PR0SVLLli0lSb/73e+Umpqqbt26BVyjfv36frU//OEPlZy08r755hu/2vPPPx+wt1+/fuUf9+rVS5J0/PjxgL3btm0LWA+lq4wBv+Tqq68OWH/rrbcC1gNdSbuiq+lWtLeKi4v9ahVdTfeaa65RmzZtJEmpqamKjo4uvxKgkXWBc37961/71Sr6c/f2228HexzH6tKliy699FJJUnJysho0aKBNmzbZPBXgPMOHDw9YHz9+vF+trKzsgmtFRESU91T0Mz2UcIYUAAAAAGALAikAAAAAwBYEUgAAAACALQikAAAAAABbcFEjm3Tq1Clgfc2aNQHrgS5Mcr4pU6ZUYSLrVfSG7EmTJvnVioqKAva+/vrruuKKK/TMM8/ooYce0r59+3Tw4MGAvceOHQtY3717t8GJAXvUqVMnYD0tLc2v9tprrwXsbdasWZXn2LNnT8D6008/7Vd74403AvZ++umn5R8vXLhQUuA9L0nTpk0zOyLCyHXXXedXa926dcBeLmr0yyIiAp+DuPzyy8svFnXppZcqOjq6/GKJ53O5XEGbD3C6ivZVrVq1LvIk1Q9nSAEAAAAAtiCQAgAAAABsQSAFAAAAANiCQAoAAAAAsAWBFAAAAABgC66ya5OvvvoqYP3IkSMB60ausmuljRs3Bqx7PB6/Wvfu3QP2FhcXB6wvXrzY1Cxut1vST1cgzs3NNfV7gVAwZ86cgPXBgwdf1DkCXdVXkmJjY/1qH330UcDeQFdG7dChQ5XmQngaNmyYX23Dhg02TOIMFV2J+09/+lP5x/3795dU8dW88/PzrR8McJgbbrghYH3s2LGG16hor/3ud79TcnKy3n//ffXu3Vs7duzQt99+W6k5qxPOkAIAAAAAbEEgBQAAAADYgkAKAAAAALAFgRQAAAAAYAsCKQAAAADAFlxl1yZHjx4NWH/wwQcD1n/3u9/51c5dcbZ58+aaMGGCnn76aX3zzTd6/vnnDc+xdevWgPWePXsGrJ84ccKvlpycHLD33nvvNTwHEA6uuuoqSVLbtm0lSVdeeaUiIiJ08803B+x3uVyG167oqrfvvvuuX+2ZZ54J2Pvvf/87YD3Q1a2PHTsWsLdHjx7lH0dE/PRvnmY+D+Ccc39+YI358+cb7t2zZ08QJwGco1u3bn61hQsXBuw1c8eMGTNmBKwfOHBA8fHxkqSDBw/qwIEDhteszvhuDwAAAACwBYEUAAAAAGALAikAAAAAwBYEUgAAAACALWy/qNEnn3yi8ePHq2vXrnruued8jq1YsUIvvfSSvvnmG11++eW6//77A7552EmWLVsWsL5mzRq/2vHjxyVJbrdbEyZM0Jtvvqnc3Fx17Ngx4Bp33XWXX62ii5sEunhRRXbs2BGwPnLkSMNrAE7TqVMnv9o//vEPSVJkZKQk6aWXXlJpaani4uICruH1ev1qH3zwQcDewYMHB6xnZGT41SZNmhSwt6KLnhw+fNivtm3btoC9ZWVlkn66IM25jyu6aFNaWlrAek5OTsA6nKlDhw4B602aNLnIkzibmQuqnPteBeDC7rjjDr/apZdeamqNtWvX+tVeffXVyo4UkmwNpPPmzdPSpUvVsmVLv2O7du3S+PHjNWvWLF1zzTX68MMPNWbMGK1cuVJNmza1YVoAAAAAgJVsfcludHR0hYH0zTffVEZGhjIyMhQdHa0+ffqoTZs2Wr58uQ2TAgAAAACsZusZ0mHDhlV4bMeOHX4vNWvfvr3y8vIMr3/55Zerfv36ateunSSV/xqKYmNj/WrnXlZ7/ufXsGFDw+smJiYGrLvdbpMTBk8off0C3a8RAAAAQGC2v4e0Ih6Px+/9DvXq1dOXX35peI09e/aUv1dLkpYsWWLZfNXR66+/bvr3PPnkk6bqdgqFr5/L5bJ7BAAAACBkVNtAKgW+oIcZrVu3Lj9DumTJEg0ZMkT5+fkWTXdx/dIZ0tdff11Dhw5Vfn6+Jk6cGHCNvn37+tUqurjJypUrKz+sxZzw9QMAAADgr9oG0gYNGsjj8fjUPB6P4uPjDa9RUFDg8zg/P9+RL6k8F9x37dql3Nxc7du3z/Dv7dmzZ8D6U089FbB+7qqZdnDq1w+hrU2bNgHrDz74oF/t/Fd9nPuHpu+//z7gGgcPHvSrvfLKKwF7i4qKAtbff/99Q7Vgql27dsD6Aw88ELA+dOjQYI6Daua3v/1twHpFf27wywJdofjyyy83/PsLCwutHAcIeY0aNQpY/+Mf/+hXq+jvyufnmnOeeOKJSs/lFNX2PqQpKSnavn27Ty0vL6/CW5oAAAAAAEJLtQ2kAwcO1Pr167V27VqdOXNGS5cu1f79+9WnTx+7RwMAAAAAWMDWl+ympqZKkkpKSiRJq1evlvTTmdA2bdromWee0bRp01RYWKikpCTNmTNHl1xyiW3zAgAAAACsU6lAevvtt2vx4sV+9ePHj2vo0KGG7xX6S7dw6dWrl3r16lWZEQEAAAAA1ZypQPr111/rwIED2rp1qz799FO/q+Du27dP+/fvt3I+AAAAAIBDmQqkubm5mjZtmkpKSnTXXXcF7Pn9739vyWCovClTpgSsX3XVVX61jIyMgL033HBDwPqqVasqPRcQyqKjowPWn3nmmYD1QFcOPX78uCQpIiJCdevW1YkTJ1RWVqZhw4YFXGPz5s1+NSddefSyyy6zewRUA23btjXcu2PHjiBO4hyBvi8FuvKuJH3xxReKjo5WYmKiDhw4oDNnzpR/rwLCTWJiYsD6W2+9VeW1X3jhhYD1//u//6vy2qHOVCDt06ePevfurQ4dOgS8T2Xt2rVN3ZYFAAAAABC+TL+H1OVyacOGDeX3zwMAAAAAoDIqdVGjP//5zxc8/uqrr1ZqGAAAAABA+KhUIG3YsKFcLlf549LSUhUUFOjw4cO6+eabLRsOAAAAAOBclQqkzz33XMD6a6+9Jo/HU5V5YIETJ04ErP/pT3/yq+Xk5ATsnTdvXsB6oDdeB7rwiiS9+OKLAevnX50ZCAVutztgPdDFiypy7qJvrVu31rx583T//fdrz549+uijjyyZEXC6TZs22T1C0MXFxfnVbrzxxoC9t912W8C6mVvmPf7440pMTNQTTzyh+fPna//+/fxdDmGror3WoUMHw2v885//DFifOXNmpWYKBxFWLnbrrbfqjTfesHJJAAAAAIBDWRpIDx06pJMnT1q5JAAAAADAoSr1kt0HHnjAr3bq1Cnl5OQEvNclAAAAAADnq1Qg/e677/xqtWrVUt++fQO+TxEAAAAAgPNVKpAuXrzY6jkAAAAAAGGmUoFUkr766iutWrVKhw4dksvlUkJCgnr16qVLL73Uyvlgob179/rVhg8fHrB34cKFAeu33367oZokxcTEBKwHuk/twYMHA/YC1cWzzz4bsP7zW2D9XKAr556r/fjjj5KkLVu2KDc316IJq4eIiAi/j8vKyuwaBw4THx8ftLU7duzoV3O5XGrbtq0kqW3btuVXib/hhhsCrtG8eXO/WlRUVMDeoUOHBqz/fA+dc+rUqYC9GzduDFg/c+aMX61GjcB/5duyZUv5+rt27dLOnTsD9gFO07dvX7/a9OnTTa2xbt06v9odd9wRsPeHH34wtXY4qVQgXbFihR544AHVrVtXzZo1k9fr1cGDBzVjxgw9//zzuv76662eEwAAAADgMJUKpM8884zGjRunESNGlP9LXmlpqebOnasnn3ySQAoAAAAA+EWVuu3LkSNHNHz4cJ+XlURGRuquu+7S4cOHLRsOAAAAAOBclQqkrVq1Cviev0OHDqlNmzZVHgoAAAAA4HyVesnumDFjNH78eA0bNkytWrVSaWmp9u/fr8WLF+uPf/yjCgoKynsvv/xyy4YFAAAAADhHpQLpn//8Z0nS1q1by68wee7Kc1u3bi1/7HK5tGvXLgvGRLC8/fbbAet79uwJWA90pdGK3jP85JNPBqy3bNnSr/bXv/41YG9hYWHAOhBMv/vd7/xqnTp1Cth77nvf+ZYvX27lSCHj3BV1IyIiyj+u6P/RuZ8XCG8VXUE20J+bl19+OWDvI488UuU5OnTo4Ff7+VW0lyxZUv5xSUlJwDVOnjzpV6voqrULFiwIWN+8ebNfLdBVuyXp22+/DVj/5ptv/Gq1a9cO2Jufn19+rKCgQPn5+QH7gFCVmJgYsP7WW29Vee19+/b51Sral6hYpQJpoNt2AAAAAABgRqUC6dVXX231HAAAAACAMFOpQOrxeDRv3jzt2bNHp0+f9jnmcrn0yiuvWDIcAAAAAMC5KhVIJ0yYoJycHKWlpalRo0ZWzwQAAAAACAOVCqSbNm3SsmXL1KJFC6vnQTWxffv2gPWBAwf61Xr37h2wd+HChQHro0aN8qu1bt06YG/Pnj0rGhEImkAX/4iKigrY+9133wWsZ2dnWzqTnaKjo/1qU6ZMMfz716xZE7D+8MMPV3YkOMi5CyWe78CBA3619PT0oM3x1Vdf+dWWLVumyy67TFOmTNHUqVPLeyq6YOO//vWvoM0XyMiRIwPWL7nkEr9aoIuvAOFg/PjxAevnLrxXFdOnT6/yGqjkfUhjYmLUtGlTq2cBAAAAAISRSgXSwYMH64033rB6FgAAAABAGKn0RY1ef/11vf3222rZsqUiInxzbVZWliXDAQAAAACcq1KBdOfOnbr88sslSd9//72lAwEAAAAAwkOlAunixYutngMAAAAAEGZMBdJBgwYZ6uP9pc7l8Xj8ahX9A8X8+fMD1mvU8P9j9+tf/zpg73XXXVd+Bd7OnTurXr16Wrt2rbFhgYvgzJkzAesHDx68yJNUXaCr6UrSpEmT/GoPPvhgwN5vvvlGNWvWVLNmzfTtt9/q7NmzFb6No6ioqPLDwvGeeuopu0eQJLndbk2ZMkXLly9Xbm6u3eP4uP766w33vvXWW0GcBLBfp06dJElt27Yt/9Xr9apXr15VXvudd94JWN+9e3eV14bJQHruZboAAAAAAFSVqUA6bdq0YM0BAAAAAAgzlbrtCwAAAAAAVUUgBQAAAADYgkAKAAAAALBFpW77Aufr0KFDwPott9ziV+vSpUvA3kBX063Izp07A9Y//vhjHT9+XJKUk5NT7a5wCCxfvtzuEUw7dyXC81V05dxbb73Vr1bRFQf/8Ic/yO12KycnRzfffDN7Fqgm3n77bbtHAIJq1apVkv7z98/Zs2erpKREDRo0MLzGv/71r4D14cOHV3k+VIwzpAAAAAAAWxBIAQAAAAC2IJACAAAAAGxBIAUAAAAA2IKLGoWRtm3b+tXGjBkTsLd///4B602bNq3yHKWlpX61gwcPBuwtKytTWVmZ38dAMLlcLkM1Serbt2/A+r333mvlSJU2btw4v9rkyZMD9tarVy9g/fXXX/erDRs2rGqDAQBgoYYNG/o8PvczzczfHWfPnh2wXlRUVPnB8Is4QwoAAAAAsAWBFAAAAABgCwIpAAAAAMAWBFIAAAAAgC1sDaSFhYUaPXq0unbtqvT0dE2YMEE//vijJGnXrl267bbbdNVVV6lXr15asGCBnaMCAAAAACxm61V27777bqWkpGjNmjU6fvy4Ro8eraeeekqTJ0/WqFGjNHDgQM2dO1cFBQX64x//qObNm6tXr152jlytnLvibaNGjcp/bdq0qQYPHhywP9AVdRMTE4M23+bNmwPW//rXv/rVli9fHrQ5ALO8Xq+hmlTxlaeff/55v9q5f1g7d8Xrtm3byuv16siRIwHXuOaaa/xqt99+e8Dejh07Bqw3b97cr/bVV18F7P3www8D1iu66iCA6inQVcHbtGkTsPdf//pXsMcBLLdw4UK/WkRExAUfG7F+/fpKz4TKs+0M6Y8//qiUlBQ98MADiomJUdOmTdWvXz9t3rxZa9eu1dmzZ3XPPfeoTp06Sk5O1oABA5SdnW3XuAAAAAAAi9l2hjQuLk7Tpk3zqR08eFCNGzfWjh071LZtW0VGRpYfa9++vd58801Tz3H55Zerfv36ateunSSV/+oU586MJiUl+fyakJAQsD8qKuriDPb/q1OnTsD6FVdc4Vdzu90VrhNKX7/c3Fy7RwAAAABChq0v2f25vLw8vfbaa3rppZf0wQcfKC4uzud4/fr15fF4VFZWZvgU/J49e3xC7ZIlSyydubqpbi+rS0lJCVh/7rnnKrVeKHz9Ar1MCgAAAEBg1SKQbtmyRffcc48eeOABpaen64MPPgjYZ/Yv+61bty4/Q7pkyRINGTJE+fn5VoxcLfz8DOns2bP15z//WV9++aV+85vfBOy/9dZb/WqXXnpp0ObbuXNnwPr/+3//z6/20UcfVbiOU79+AAAAQLizPZCuWbNGDz74oCZPnqy+fftKkuLj47V//36fPo/Ho/r165t6g3JBQYHP4/z8/Gr/ksomTZoErLdv396v9re//U2SVKtWLUlSZmamTp8+HdSXtm7cuNGvNmPGjIC977zzTsB6WVlZpZ47FL5+CD8/fxXGz/35z3/2q/3hD3+QJNWsWVPSTxc+Onv2bPnVxc/XunXrKs8X6AIN//d//xew99FHH63y8wGwX6CLsFXmAi+A3Tp16hSwfsMNN/jVfv73y4iIiPLHxcXFAdd48cUX/WrffvttJaZEVdn63SknJ0fjx4/XzJkzy8Oo9NNLPXfv3q2SkpLyWl5eXoVXkQQAAAAAhB7bAmlJSYkmTZqkzMxMdevWzedYRkaGYmNj9dJLL+nUqVPatm2bli5dWuHtTAAAAAAAoce2QLp161bt3btXTzzxhFJTU33+O3z4sF5++WWtX79eV199te677z6NGzdO1113nV3jAgAAAAAsZtt7SDt37qzdu3dfsOfvf//7RZoGAAAAAHCx8Q53AAAAAIAtbL/KbjiIj4/3q82ZMydgb0VXE7viiit+8XkSExPNjCUp8BU4JSkrKytg/cMPP/SrnTp1yvTzAtXZhg0b/GqbNm0K2NulSxfD6zZt2tTnccOGDSVVfHXtQI4cORKw/sYbbwSs33vvvYbXBuBcv/rVrwLWFy1adHEHAUyoX79+wPr5P08vpLCwMGA9MzOzMiMhCDhDCgAAAACwBYEUAAAAAGALAikAAAAAwBYEUgAAAACALQikAAAAAABbcJXdSuratatf7cEHHwzYe/XVV/vVEhISLJ/pnJMnTwasP//88361J598MmDviRMnLJ0JCCXffPONX61///4Be0eNGhWwPmnSpCrPMXPmTL/aSy+9FLD3yy+/rPLzAXAGl8tl9wgAYBhnSAEAAAAAtiCQAgAAAABsQSAFAAAAANiCQAoAAAAAsAUXNaqkfv36GaqZtXPnzoD19957z69WUlIiSWratKlGjBihBQsW6NChQ8rKygq4hsfjqfJ8QLg6ePBgwPqUKVNM1SXJ7XYrJydHnTt3Vm5urgXTAQhHH3zwQcD6gAEDLvIkQHDk5+cHrK9fv96v1q1bt2CPgyDhDCkAAAAAwBYEUgAAAACALQikAAAAAABbEEgBAAAAALYgkAIAAAAAbMFVditpwoQJhmoXg9vt1ogRIzR79myu2AkAQJhYtGiRqToQag4dOhSwnpGRUeHv4Ur2oYczpAAAAAAAWxBIAQAAAAC2IJACAAAAAGxBIAUAAAAA2IJACgAAAACwBYEUAAAAAGALAikAAAAAwBYEUgAAAACALQikAAAAAABbEEgBAAAAALYgkAIAAAAAbEEgBQAAAADYgkAKAAAAALAFgRQAAAAAYAsCKQAAAADAFgRSAAAAAIAtXF6v12v3EAAAAACA8MMZUgAAAACALQikAAAAAABbEEgBAAAAALYgkAIAAAAAbEEgBQAAAADYgkAKAAAAALAFgRQAAAAAYAsCKQAAAADAFgRSAAAAAIAtCKQAAAAAAFs4OpAWFhZq5MiR6tq1q7p3764ZM2aorKzM7rGq5JNPPlF6errGjRvnd2zFihXq3bu33G63+vfvr3Xr1tkwYdUUFhZq9OjR6tq1q9LT0zVhwgT9+OOPkqRdu3bptttu01VXXaVevXppwYIFNk8Lq7Fn2bMILezZ0Nqz7FewZ9mz1ZLXwfr16+edNGmS98cff/QWFBR4e/Xq5V2wYIHdY1Xa3Llzvb169fIOGjTIe9999/kc27lzpzclJcW7du1a7+nTp73vvPOOt2PHjt6DBw/aNG3l/O53v/NOmDDBW1RU5D148KC3f//+3kceecR76tQp77XXXut94YUXvCdOnPBu377de/XVV3s//PBDu0eGhdiz7FmEFvZsaO1Z9ivYs+zZ6sixZ0jz8vKUn5+vzMxM1a1bV4mJiRo+fLiys7PtHq3SoqOjtXTpUrVs2dLv2JtvvqmMjAxlZGQoOjpaffr0UZs2bbR8+XIbJq2cH3/8USkpKXrggQcUExOjpk2bql+/ftq8ebPWrl2rs2fP6p577lGdOnWUnJysAQMGhPTXE77Ys+xZhBb2bGjtWfYr2LPs2erKsYF0x44dSkhIUL169cprycnJKigoUFFRkY2TVd6wYcNUt27dgMd27Nih9u3b+9Tat2+vvLy8izGaJeLi4jRt2jQ1atSovHbw4EE1btxYO3bsUNu2bRUZGVl+rH379tq+fbsdoyII2LPsWYQW9mxo7Vn2K9iz7NnqyrGB1OPxKC4uzqd2bgMeO3bMjpGCyuPx+HyDkX76fEP5c83Ly9Nrr72me+65J+DXs379+vJ4PCH/3gf8hD3LnkVoYc+G9p5lv4Yf9ix7trpybCCVJK/Xa/cIF5WTPt8tW7borrvu0gMPPKD09PQK+1wu10WcCsHmpD/DRjjp82XPhicn/Rk2wimfL/s1fDnlz7BRTvl8nb5nHRtI4+Pj5fF4fGoej0cul0vx8fH2DBVEDRo0CPj5huLnumbNGo0cOVKPPPKIhg0bJumnr+f5/6Ll8XhUv359RUQ49o9xWGHPsmcRWtizobln2a/hiz3Lnq2uQm9ig1JSUnTw4EEdPXq0vJaXl6ekpCTFxMTYOFlwpKSk+L1uPC8vTx07drRposrJycnR+PHjNXPmTPXt27e8npKSot27d6ukpKS8FoqfHyrGng3NP9Ps2fDFng29P9Ps1/DGng29P9fhsmcdG0jbt2+v1NRUZWVlqaioSHv37tXChQs1ePBgu0cLioEDB2r9+vVau3atzpw5o6VLl2r//v3q06eP3aMZVlJSokmTJikzM1PdunXzOZaRkaHY2Fi99NJLOnXqlLZt26alS5c69usZjtiz7FmEFvZsaO1Z9ivYs+zZ6srldcqLqwM4dOiQJk+erM8++0yxsbEaNGiQxowZE7Kvr05NTZWk8n8NqVGjhiSVXy1s1apVysrKUmFhoZKSkjRx4kR16dLFnmErYfPmzRo6dKiioqL8jq1cuVInTpzQf//3f2v79u1q1KiR/vSnP2nIkCE2TIpgYc+yZxFa2LOhs2fZr5DYs+zZ6snRgRQAAAAAUH059iW7AAAAAIDqjUAKAAAAALAFgRQAAAAAYAsCKQAAAADAFgRSAAAAAIAtCKQAAAAAAFsQSAEAAAAAtiCQAgAAAABsQSAFAAAAANiCQAoAAAAAsAWBFAAAAABgCwIpAAAAAMAWBFIAAAAAgC0IpAAAAAAAWxBIAQAAAAC2IJACAAAAAGxBIAUAAAAA2IJACgAAAACwBYEUAAAAAGCLah1ICwsLNXLkSHXt2lXdu3fXjBkzVFZWZvdYAAAAAAAL1LB7gAsZO3askpOTtXr1ah05ckSjRo1So0aNdOedd9o9GgAAAACgiqrtGdK8vDzl5+crMzNTdevWVWJiooYPH67s7Gy7RwMAAAAAWKDaBtIdO3YoISFB9erVK68lJyeroKBARUVFNk4GAAAAALBCtQ2kHo9HcXFxPrVz4fTYsWN2jAQAAAAAsFC1DaSS5PV67R4BAAAAABAk1TaQxsfHy+Px+NQ8Ho9cLpfi4+PtGQoAAAAAYJlqG0hTUlJ08OBBHT16tLyWl5enpKQkxcTE2DgZAAAAAMAK1TaQtm/fXqmpqcrKylJRUZH27t2rhQsXavDgwXaPBgAAAACwgMtbjd+oeejQIU2ePFmfffaZYmNjNWjQII0ZM0Yul8vu0QAAAAAAVVStAykAAAAAwLmq7Ut2AQAAAADORiAFAAAAANiCQAoAAAAAsAWBFAAAAABgCwIpAAAAAMAWBFIAAAAAgC0IpAAAAAAAWxBIAQAAAAC2IJACAAAAAGxBIAUAAAAA2KKG3QMAAC6uvn37Bm3tZcuWBW1tAADgPJwhBQAAAADYgkAKAAAAALAFgRQAAAAAYAsCKQAAAADAFgRSAAAAAIAtCKQAAAAAAFsQSAEAAAAAtiCQAgAAAABsQSAFAAAAANiCQAoAAAAAsEUNuweAr9OnTxvuXb16tV8tLi5Ov/71r/Xxxx/rxx9/9Dn2zDPPGF77o48+MtxrVq1atQz3nv//w+12KycnR2lpacrNzfU5lpiYaHjdgoICw71AKDCzr86cOWNq7Ro1jP+o+Oqrr3we16xZU82aNdPBgwd19uxZn2OXXXaZqTkQXvbu3Wu4t1WrVkGcxNl+/neDxo0ba9iwYXr11Vf13Xff+fWOHDnS8LpxcXGWzAc4XUSE8fODXq/X5/GF/l58fm91xhlSAAAAAIAtDP2z96xZsyq1+JgxYyr1+wAAAAAAzmcokL744ovq3LmzqYW3bNlCIAUAAAAAVMhQIK1Zs6YWL15sauEOHTpUaiAAAAAAQHgw9B7Sypzp5OwoAAAAAOBCDJ0hPXdVtWPHjumdd97R1q1bdeTIEUnSJZdcorS0NPXp08fnimpmrsQGAAAAAAg/hq+ym5eXpxtvvFFz5szR8ePH1aRJEzVp0kQ//PCDXnjhBd10003as2dPMGcFAAAAADiI4ZvLPfPMMxoyZIjGjBmjyMhIn2Nnz57VjBkzNG3aNC1YsMDyIQEAAAAAzmP4DGl+fr5GjhzpF0alny569Je//MXvhqwAAAAAAFTEcCCtVauWfvzxxwqPFxUVqWbNmpYMBQAAAABwPpfX6/UaaXzggQd0+PBhPfTQQ0pOTpbL5ZIkeb1e5eXlacaMGUpISND06dODOrDT1a1b13BvUVGRX83tdisnJ0dpaWlVOmN92WWXGe796quvTK1t8I8cEPbOfZ+127Jlywz39u3b1+fxhb4n8b0AFxIbG2u4N9DPQxjz8+8zv/R3CPYs8Mt27txpqj85Odlw78mTJ30eu1wu1apVS6dPn/bbn7Vr1zY1h50Mv4d00qRJuvfee3XLLbeoRo0a5cHp+PHjKi0t1a9//WtNmjQpaIMCAAAAAJzFcCBt0KCBXn31Ve3Zs0dbt27VsWPHJEkNGzaU2+3WFVdcEbQhAQAAAADOYziQntO6dWu1bt06GLMAAAAAAMKI4YsaAQAAAABgJQIpAAAAAMAWBFIAAAAAgC0IpAAAAAAAW1gWSHNycrRu3TqrlgMAAAAAOJzpq+xWZOLEidq/f7927dpl1ZIAAAAAAAezLJAuWrRIJSUlVi0HAAAAAHA4ywJpkyZNrFoqrB0/ftySdXJycvxqLpfL8O8/cOCAJXMA+I/IyEifx263W5s3b1bnzp2Vm5tbpbXLysoM9z7zzDOm1v79739vdhxDvv32W8O9/IwJPydOnLB7BAAwLTk52VR/u3btDPfWrl07YL1WrVqmnrO6MR1Iy8rKtHr1an3xxRcqLi72O37//fdbMhgAAAAAwNlMB9KpU6cqOztbDRs2VHR0tM8xl8tlaSBt27atatas6XNmb+DAgZo8ebJlzwEAAAAAsIfpQPruu+9qzpw5ysjICMY8flauXKnmzZtflOcCAAAAAFw8pm/7EhkZqWuvvTYYswAAAAAAwojpM6Q9e/bUxo0b9atf/SoY8/jJyspSbm6uioqKdNNNN2nChAmKiYm5KM/tNG632+4RAAAAAKCcoUC6bNmy8o9TU1P12GOPqXv37mrRooUiIv5zktXlcmngwIGWDdepUyelp6frqaee0tdff6377rtPU6dO1dNPP23Zc4STQFfeBQAAAAC7GAqkEyZM8KsVFBT41awOpNnZ2eUft2rVSpmZmbrnnnv0xBNPKCoqyrLnCRdpaWmGewmvAAAAAILNUCDNz88P9hyGNG/eXKWlpTpy5IiaNWtm9zghp6r3OQQAAAAAK5m+qJEkff755zpw4ED5461bt2rbtm2WDSVJO3fu1PTp031qe/fuVVRUlBo3bmzpcwEAAAAALj7TgXTVqlUaMmSIvvjii/JaQUGBbrvtNq1atcqywRo2bKjs7GzNnTtXxcXFKigo0MyZM3XrrbcqMjLSsucBAAAAANjDdCCdPXu2nn76afXs2bO81q9fP/3tb3/TrFmzLBusSZMmmjt3rtasWaOuXbtq0KBBuvbaa/Xggw9a9hwAAAAAAPuYvu3LgQMHdOONN/rVr7vuOmVmZloy1DldunTRG2+8Yema4axNmzaGe7dv3264NyUlpTLjAI7QpUuXoK1dUlJiuNflchnurS7/sHfNNdcY7g10IT0Agf32t7813BsXF1f+cWxsbPmvP68D4a5p06ZBW3vXrl1BWztUmD5D2rhxY+Xl5fnVN27cqAYNGlgyFAAAAADA+UyfIR0yZIhGjhypPn36qEWLFiorK9O+ffv0/vvvW36GFAAAAADgXKYD6R133KE6depoyZIlWrp0qSIjI5WYmKiJEyeqf//+wZgRAAAAAOBAhgLp1q1b1alTp/LHAwYM0IABA0z9HgAAAAAAfs7Qe0jvuOMO0wtX5vcAAAAAAMKHoTOkJSUlpm/pUlpaWqmBAAAAAADhwVAgTUtL08aNG00t7Ha7KzUQAAAAACA8GAqkixcvDvYcAAAAAIAwY/o+pAAAAAAAWIFACgAAAACwhen7kCJ07d6923BvZGSk4d6ysjJTc5w5c8Zwb1RUlKm1gYtt8+bNhnu9Xm+V1wBw8Xz33Xc+j2vUqKH4+HgdPXpUJSUlfv2TJ082vPa8efMM95r5mSyZu7DksWPHyj+OiPjpPMX7779v+mc7EGo2bNhguPfbb7813FtcXFyZccIaZ0gBAAAAALYwHUgnTJgQsF5UVKS77767ygMBAAAAAMKD4ZfsejweHTt2TCtWrNDdd9/t99KzvXv36tNPP7V8QAAAAACAMxkOpO+//76efPJJlZWV6aabbvI77vV6lZ6ebulwAAAAAADnMhxIhw4dqt69eys9PV0LFizwO167dm1deeWVlg4HAAAAAHAuU1fZjYuL01tvvaW2bdsGax4AAAAAQJgwfduXRYsWXfD4tGnTKjsLAAAAACCMmA6k+/bt83lcWlqqr7/+WhEREXK73ZYNBgAAAABwNtOBNDs7269WWlqq5557Ts2bN7dkKAAAAACA85m+D2kgkZGRGj16tObOnWvFcgAAAACAMGD6DGlFTp48qWPHjlm1HGxWWlpquPe9994ztXZ0dLTh3vPvdwtcDB999JHh3qioqCBO4mznvwUE+LmsrCzDvV27dg3KDOPHj/d5XL9+ffXo0UNbt26Vx+Px658zZ47htc30muVyuQz31qtXz69Wt25dK8cBqqVg3a6yZs2aQVnXyUwH0meffdavdurUKa1bt07t2rWzZCgAAAAAgPOZDqSBzobVqlVLSUlJuv/++y0ZCgAAAADgfKYD6Zo1a4IxBwAAAAAgzFTqPaQnTpzQxx9/rEOHDsnlcikhIUHdunVT7dq1rZ4PAAAAAOBQpgPpxo0bdffdd+vUqVOKjY2V1+vViRMnFBsbq/nz56tTp05BGBMAAAAA4DSmb/vy6KOPql+/ftqwYYM2b96sLVu2aP369br55pv1yCOPBGNGAAAAAIADmQ6kBw8e1IMPPqgGDRqU1+Lj4/XQQw+psLDQ0uEAAAAAAM5lOpA2b95cRUVFfvWTJ0+qRYsWlgwFAAAAAHA+04F04sSJevTRR7Vt2zYVFRXphx9+0LZt2zRlyhRlZmaquLi4/D8AAAAAACpi+qJGo0aNUklJidauXetT93q9freE2bVrV5WGAwAAAAA4l+lA+vjjjwdjDgAAAABAmHF5vV6vmd+wdOlS3XLLLX71kydPasmSJRoxYoRlw8E+33//veHeG264wdTa27ZtM9xr8o8nYImPPvrIcO9rr71muHfevHmVGcdyhw8fNtXfuHFjw73sWcB+LpfLcC97Fk5Rs2ZNv5rb7dZnn32mq6++Wrm5uT7HSkpKDK9dVlZmuNfM/sNPTL+HtKIzpMePH9fzzz9f5YEAAAAAAOHB8Et2FyxYoAULFqi4uFjdunXzO15UVKRmzZpZOhwAAAAAwLkMB9JBgwYpMTFRY8eO1aBBg/yO165dW7169bJ0OAAAAACAcxkOpHXq1FGPHj30yCOPaOjQocGcCQAAAAAQBkxfZTcmJkbLli2r8Hjfvn2rMA4AAAAAIFyYDqQTJkwIvFCNGqpVqxaBFAAAAABgiOlA+vnnn/s8Li0t1b59+zR37lwNGzbMssEAAAAAAM5m+rYvUVFRPv/Vrl1bycnJmjx5sh577LFgzAgAAAAAcCDTgbQicXFxOnDggFXLAQAAAAAczvRLdtetW+dXO336tFasWKGmTZtaMhQAAAAAwPlMB9IRI0bI5XLJ6/X61OvXr6/p06dbNhh+2dmzZwPWa9asGfBYgwYNDK994sSJSs/1SzZu3Bi0tYGLbf78+YZ7n3zySZ/HNWrUUIMGDXTs2DGVlJT49e/cudPw2jfeeKPhXpfLZbhXkr766itT/QAAXGyBfo6eq5WUlAQ8bpTZn5swx3Qg/ec//+lXq1WrluLj4/liAQAAAAAMM/0e0oSEBCUkJKh27dqKiYlRQkKCGjZsWOkw+sknnyg9PV3jxo3zO7ZixQr17t1bbrdb/fv3D/hyYQAAAABAaDJ1hvTEiRP629/+pnfffVc//PCDJKlhw4bq37+/Ro8erejoaFNPPm/ePC1dulQtW7b0O7Zr1y6NHz9es2bN0jXXXKMPP/xQY8aM0cqVK3mvKgAAAAA4gOFAeubMGd1+++06evSobrvtNrVr106nTp3Svn37tGzZMm3atEmvvvqqatasafjJo6OjtXTpUv31r3/VmTNnfI69+eabysjIUEZGhiSpT58+eu2117R8+XKNHDnS8HPgPzp27Gi499SpU0Gbo06dOkFbGwAAAEDoMBxIX3nlFUnSe++9p9jYWJ9jd911l4YPH67XX39dw4cPN/zkw4YNq/DYjh07ysPoOe3bt1deXp7h9Z3uQuE/0LFPP/00mOMAAAAAgCmGA+nKlSv18MMP+4VRSYqNjdX48eM1ffp0U4H0Qjwej+rVq+dTq1evnr788ktL1ncCs1fZve666wyvHcwzpK+++qrh3pSUlKDNAQAAAMBehgPpgQMHlJaWVuFxt9ut/fv3WzFTufNvLYOq2bZtm+HeYN725eTJk0FbGwAAAEDoMHyV3bKyMkVEVNweERGhsrIyS4aSfrpnpsfj8al5PB7Fx8db9hwAAAAAAPsYDqSXXnqp8vPzKzy+fft2NWvWzJKhpJ9eqrl9+3afWl5enqkL8wAAAAAAqi/DgbRHjx569tlnA54FPXv2rGbMmKGePXtaNtjAgQO1fv16rV27VmfOnNHSpUu1f/9+9enTx7LnAAAAAADYx+U1+EZNj8ejfv36KTY2Vn/84x/VqlUrlZaWas+ePZo/f768Xq/+93//V3Xr1jX85KmpqZKkkpISSVKNGj+9pfXclXRXrVqlrKwsFRYWKikpSRMnTlSXLl1MfYLVQWlpqeHe+vXrG+4tKiryq7ndbuXk5CgtLU25ubmG1zrf+vXrDff+6le/qvTzANXR+behupBatWpV+nms2q+SNGLECMO98+bNq9JzAajeXC6X4V6u14HqbM+ePYZ727Rp41e70M9Z/uxXH4YvalS/fn0tWbJEU6ZM0cSJE+X1euX1ehUZGanrr79ekyZNMhVGJf3iLVx69eqlXr16mVoTAAAAABAaDAdSSWrWrJnmzJmjH374QQcOHJAkXXHFFQFvBQMAAAAAwIWYCqTn1KtXTx06dLB6FgAAAABAGDF8USMAAAAAAKxEIAUAAAAA2IJACgAAAACwBYEUAAAAAGALAikAAAAAwBYEUgAAAACALQikAAAAAABbVOo+pJDuv/9+w73PPfec4d4GDRoY7p0wYYJf7dJLL5Uk3XnnnfrNb37jc2zatGmG1wbCWXR0tOFer9db5efLycmp8hoAADhNYmKi3SPgIuAMKQAAAADAFgRSAAAAAIAtCKQAAAAAAFsQSAEAAAAAtiCQAgAAAABsQSAFAAAAANiCQAoAAAAAsAWBFAAAAABgCwIpAAAAAMAWBFIAAAAAgC0IpAAAAAAAW7i8Xq/X7iEAAAAAAOGHM6QAAAAAAFsQSAEAAAAAtiCQAgAAAABsQSAFAAAAANiCQAoAAAAAsAWBFAAAAABgCwIpAAAAAMAWBFIAAAAAgC0IpAAAAAAAWxBIAQAAAAC2IJACAAAAAGxBIAUAAAAA2IJACgAAAACwBYEUAAAAAGALAikAAAAAwBYEUgAAAACALQikAAAAAABbEEgBAAAAALYgkAIAAAAAbEEgBQAAAADYgkAKAAAAALBF2ATSwsJCjRw5Ul27dlX37t01Y8YMlZWV2T2WZdq2bauUlBSlpqaW//f444/bPVaVfPLJJ0pPT9e4ceP8jq1YsUK9e/eW2+1W//79tW7dOhsmRDCxZ0MPeza8sWdDD3s2vLFnQ49T92wNuwe4WMaOHavk5GStXr1aR44c0ahRo9SoUSPdeeeddo9mmZUrV6p58+Z2j2GJefPmaenSpWrZsqXfsV27dmn8+PGaNWuWrrnmGn344YcaM2aMVq5cqaZNm9owLYKBPRta2LNgz4YW9izYs6HFyXs2LM6Q5uXlKT8/X5mZmapbt64SExM1fPhwZWdn2z0aKhAdHV3hpnvzzTeVkZGhjIwMRUdHq0+fPmrTpo2WL19uw6QIBvZs6GHPhjf2bOhhz4Y39mzocfKeDYtAumPHDiUkJKhevXrlteTkZBUUFKioqMjGyayVlZWl6667Tp07d9bkyZN14sQJu0eqtGHDhqlu3boBj+3YsUPt27f3qbVv3155eXkXYzRcBOzZ0MOeDW/s2dDDng1v7NnQ4+Q9GxaB1OPxKC4uzqd2bgMeO3bMjpEs16lTJ6Wnp2vVqlXKzs7W1q1bNXXqVLvHCgqPx+PzDVT66evplK8l2LNOw551Pvass7BnnY896yyhvmfDIpBKktfrtXuEoMrOztaAAQMUFRWlVq1aKTMzU++9956Ki4vtHi0onP71hPO/xuxZOI3Tv8bsWTiN07/G7NnQERaBND4+Xh6Px6fm8XjkcrkUHx9vz1BB1rx5c5WWlurIkSN2j2K5Bg0aBPx6OvVrGY7Ys87CnnU+9qyzsGedjz3rLKG+Z8MikKakpOjgwYM6evRoeS0vL09JSUmKiYmxcTJr7Ny5U9OnT/ep7d27V1FRUWrcuLFNUwVPSkqKtm/f7lPLy8tTx44dbZoIVmPPOgt71vnYs87CnnU+9qyzhPqeDYtA2r59e6WmpiorK0tFRUXau3evFi5cqMGDB9s9miUaNmyo7OxszZ07V8XFxSooKNDMmTN16623KjIy0u7xLDdw4ECtX79ea9eu1ZkzZ7R06VLt379fffr0sXs0WIQ96yzsWedjzzoLe9b52LPOEup71uUN5Rccm3Do0CFNnjxZn332mWJjYzVo0CCNGTNGLpfL7tEssWnTJmVlZWn37t2KiopSv379NG7cOEVHR9s9WqWkpqZKkkpKSiRJNWr8dMvcc1cLW7VqlbKyslRYWKikpCRNnDhRXbp0sWdYBAV7NrSwZ8GeDS3sWbBnQ4uT92zYBFIAAAAAQPUSFi/ZBQAAAABUPwRSAAAAAIAtCKQAAAAAAFsQSAEAAAAAtiCQAgAAAABsQSAFAAAAANiCQAoAAAAAsAWBFAAAAABgCwIpAAAAAMAWBFIAAAAAgC0IpAAAAAAAWxBIAQAAAAC2IJACAAAAAGxBIAUAAAAA2IJACgAAAACwBYEUAAAAAGALAikAAAAAwBYEUgAAAACALQikAAAAAABbVOtAWlhYqJEjR6pr167q3r27ZsyYobKyMrvHAgAAAABYoIbdA1zI2LFjlZycrNWrV+vIkSMaNWqUGjVqpDvvvNPu0QAAAAAAVVRtz5Dm5eUpPz9fmZmZqlu3rhITEzV8+HBlZ2fbPRoAAAAAwALVNpDu2LFDCQkJqlevXnktOTlZBQUFKioqsnEyAAAAAIAVqm0g9Xg8iouL86mdC6fHjh2zYyQAAAAAgIWqbSCVJK/Xa/cIAAAAAIAgqbaBND4+Xh6Px6fm8XjkcrkUHx9vz1AAAAAAAMtU20CakpKigwcP6ujRo+W1vLw8JSUlKSYmxsbJAAAAAABWqLaBtH379kpNTVVWVpaKioq0d+9eLVy4UIMHD7Z7NAAAAACABVzeavxGzUOHDmny5Mn67LPPFBsbq0GDBmnMmDFyuVx2jwYAAAAAqKJqHUgBAAAAAM5VbV+yCwAAAABwNgIpAAAAAMAWBFIAAAAAgC0IpAAAAAAAWxBIAQAAAAC2IJACAAAAAGxBIAUAAAAA2IJACgAAAACwBYEUAAAAAGCLGnYPAACoukOHDhnubdasWdDWbtKkiam1AQBAeOMMKQAAAADAFgRSAAAAAIAtCKQAAAAAAFsQSAEAAAAAtiCQAgAAAABsQSAFAAAAANiCQAoAAAAAsAWBFAAAAABgCwIpAAAAAMAWBFIAAAAAgC1cXq/Xa/cQ+I+ioiLDvXfddZdf7fLLL9f06dM1YcIEFRQU+Bz7n//5nyrPZ4Vu3boZ7v300099Hrvdbm3ZskVXXXWVcnNzfY7t3r3b8LqtW7c23AvY5ZtvvjHc26JFC8O9ERHm/i2yrKzMcC8/UmCV9evXG+5NT08P4iTOdtVVV5V/3K5dO73++usaOnSo8vPz/Xq3bNlyMUcDQtI777xjqr9v376Ge7/88kufx1FRUWrRooW+/vprFRcX+xxr1aqVqTnsxBlSAAAAAIAtahhpmjVrVqUWHzNmTKV+HwAAAADA+QwF0hdffFGdO3c2tfCWLVsIpAAAAACAChkKpDVr1tTixYtNLdyhQ4dKDQQAAAAACA+G3kNamTOdnB0FAAAAAFyIoUA6cuRIQ4s9+uijpn8PAAAAACA8WXqVXbOXOQYAAAAAhC9D7yGV5HdvGwAAAAAAqsJwIO3QoYNcLlcwZwEAAAAAhBHDgbRdu3Zq1aqVunXrFvC41+v1eQ8pAAAAAAAX4vJ6vV4jjfn5+frTn/6kt99+W40aNQrY07FjR23bts3SAZ2gtLTUcG+NGob/jSAgt9utnJwcpaWlKTc3t9LrdOrUyXCv2a95WVmZyWkAZ/jtb3/r87hVq1Z64YUXNHbsWO3du9ev/4MPPrhYo11Qu3btDPc2b97c53FSUpJeeukl3XPPPfryyy99jv3jH/+wZD440/n75UJWrFgRxElCz5kzZwz3/uEPfyj/uFWrVpo5c6buvffegN+T3nvvPUvmA5zM7N/l69WrZ7j3yJEjZscJCYYvatSuXTvdc889F/ymbzDbAgAAAABg/CW7kjRkyJALHv/888+rNAwAAAAAIHxYetsXAAAAAACMIpACAAAAAGxBIAUAAAAA2IJACgAAAACwBYEUAAAAAGALywJpTk6O1q1bZ9VyAAAAAACHM3fn1guYOHGi9u/fr127dlm1JAAAAADAwSwLpIsWLVJJSYlVywEAAAAAHM6yQNqkSROrlnKcyMhIw71lZWWGewcNGuRXu/zyyyVJvXr1UuvWrX2O3XXXXYbX7tWrl+FeIJwdPnzYcO8HH3zg89jtdkuSPv30U+Xm5vr1d+7c2fDac+bMMdzboUMHw72SVKOG8R8VERG+7wQ5evSoJOmzzz4L+DkifHz//fd2jxA22rRpY7j352+3qlmzpiTp4Ycf1tmzZy2fCwhVAwcONNxbWlpqau0jR46YHcdxTAfSsrIyrV69Wl988YWKi4v9jt9///2WDAYAAAAAcDbTgXTq1KnKzs5Ww4YNFR0d7XPM5XIRSAEAAAAAhpgOpO+++67mzJmjjIyMYMzjo23btqpZs6ZcLld5beDAgZo8eXLQnxsAAAAAEFymA2lkZKSuvfbaYMwS0MqVK9W8efOL9nwAAAAAgIvD9H1Ie/bsqY0bNwZjFgAAAABAGDF0hnTZsmXlH6empuqxxx5T9+7d1aJFC58rKrpcLlNXoTIiKytLubm5Kioq0k033aQJEyYoJibG0ucIVeeuqPtzl156qc+vP1e3bt2gzwQAAAAARhkKpBMmTPCrFRQU+NWsDqSdOnVSenq6nnrqKX399de67777NHXqVD399NOWPUd18/P3y/6S6dOnV3jsL3/5ixXjAAAAAEDQGAqk+fn5wZ4joOzs7PKPW7VqpczMTN1zzz164oknFBUVZctMweb1eg33Pvzww361Sy+9VH/5y1/0/PPP69///rfPsd///veG1/7Vr35luBcAAAAAKsP0RY0k6fPPP1e9evXUsmVLSdLWrVvlcrnUsWNHS4c7X/PmzVVaWqojR46oWbNmQX2uUBDoLPU5//73v/2OHz9+PNgjAQAAAIBhpi9qtGrVKg0ZMkRffPFFea2goEC33XabVq1aZdlgO3fu9HtJ6t69exUVFaXGjRtb9jwAAAAAAHuYPkM6e/ZsPf300+rZs2d5rV+/foqLi9PMmTPVq1cvSwZr2LChsrOzFR8fr+HDh6uwsFAzZ87UrbfeqsjISEueAwAAAABgH5fXzJsWJbndbm3ZssXn6rqSVFpaqs6dOys3N9ey4TZt2qSsrCzt3r1bUVFR6tevn8aNG6fo6GjLniOUVfSlc7lcAY+d/zWrzNoAfJm5ENnnn3/u87hWrVpq3bq19uzZo9OnT/v1t2nTxvDa1eX74vn/P9xut3JycpSWlub384HvM+Glb9++pvq7detmuDczM9PkNM5m5vtSaWmpz+OIiAiVlZUF7DXz9wigujt16pTh3jp16hjufeyxx0zNMXnyZFP9TmT6DGnjxo2Vl5fn937RjRs3qkGDBpYNJkldunTRG2+8YemaAAAAAIDqwXQgHTJkiEaOHKk+ffqoRYsWKisr0759+/T+++/zL5QAAAAAAMNMB9I77rhDderU0ZIlS7R06VJFRkYqMTFREydOVP/+/YMxIwAAAADAgQwF0q1bt6pTp07ljwcMGKABAwaY+j0AAAAAAPycoXen33HHHaYXrszvAQAAAACED0NnSEtKSjRr1ixTC59/1TYAAAAAAH7OUCBNS0vTxo0bTS3sdrsrNRAAAAAAIDwYCqSLFy8O9hwAAAAAgDDDHY4BAAAAALYgkAIAAAAAbGH6PqSoPlwul6ljn376qSVrny8rK8twryTdf//9pvqBi61ly5aGe9u0aWO4NzU1NWC9devWhtcAwkXnzp2Dsu73339vuPfvf/+7z+NLLrlEgwYN0htvvKHDhw/79X/22WeG13799dcN91511VWGe82KiPA/NxGoBjhNbGys4d5WrVoZ7p08eXJlxglrfMcBAAAAANjCdCCdMGFCwHpRUZHuvvvuKg8EAAAAAAgPhl+y6/F4dOzYMa1YsUJ33323vF6vz/G9e/eaekkoAAAAACC8GQ6k77//vp588kmVlZXppptu8jvu9XqVnp5u6XAAAAAAAOcyHEiHDh2q3r17Kz09XQsWLPA7Xrt2bV155ZWWDgcAAAAAcC5TV9mNi4vTW2+9pbZt2wZrHgAAAABAmDB925dFixZd8Pi0adMqOwsAAAAAIIyYDqT79u3zeVxaWqqvv/5aERERcrvdlg0GAAAAAHA204E0Ozvbr1ZaWqrnnntOzZs3t2QoAAAAAIDzmb4PaSCRkZEaPXq05s6da8VyAAAAAIAwYPoMaUVOnjypY8eOWbUcgsDMbXlKS0sN90ZGRpqa4//9v/9nuHfHjh2m1gas8NVXXxnuPXPmTBAnqR4efPBBw73Jyck+j1u1alX+a3FxsaVzIbQsW7bMVH/Xrl2DM4gJS5cu9Xlcs2ZNSdJ1112ns2fP+vWPHTvW8NqLFy823PvGG28Y7pWkESNGmOoHnOC2227zqyUmJuqJJ57QpEmTtH//fp9jZWVlhtfOycmp6ni4ANOB9Nlnn/WrnTp1SuvWrVO7du0sGQoAAAAA4HymA+l7773nV6tVq5aSkpJ0//33WzIUAAAAAMD5TAfSNWvWBGMOAAAAAECYqdR7SE+cOKGPP/5Yhw4dksvlUkJCgrp166batWtbPR8AAAAAwKFMB9KNGzfq7rvv1qlTpxQbGyuv16sTJ04oNjZW8+fPV6dOnYIwJgAAAADAaUzf9uXRRx9Vv379tGHDBm3evFlbtmzR+vXrdfPNN+uRRx4JxowAAAAAAAcyHUgPHjyoBx98UA0aNCivxcfH66GHHlJhYaGlwwEAAAAAnMt0IG3evLmKior86idPnlSLFi0sGQoAAAAA4HymA+nEiRP16KOPatu2bSoqKtIPP/ygbdu2acqUKcrMzFRxcXH5fwAAAAAAVMT0RY1GjRqlkpISrV271qfu9Xr9bgmza9euKg0HAAAAAHAu04H08ccfD8YcAAAAAIAw4/J6vV4zv2Hp0qW65ZZb/OonT57UkiVLNGLECMuGg30mT55suPeJJ54wtfYll1xiuPe7774ztTZgBZfLZbjX5LfQauE3v/mNqf4TJ04Y7l23bp3ZcQD8gh49epjqX7RokeHeyy67zOQ0QPUU6Ge32+1WTk6O0tLSlJub63MsMTHR8NoFBQVVHQ8XYPo9pBWdIT1+/Lief/75Kg8EAAAAAAgPhl+yu2DBAi1YsEDFxcXq1q2b3/GioiI1a9bM0uEAAAAAAM5lOJAOGjRIiYmJGjt2rAYNGuR3vHbt2urVq5elwwEAAAAAnMtwIK1Tp4569OihRx55REOHDg3mTAAAAACAMGD6KrsxMTFatmxZhcf79u1bhXEAAAAAAOHCdCCdMGFC4IVq1FCtWrUIpAAAAAAAQ0wH0s8//9zncWlpqfbt26e5c+dq2LBhlg0GAAAAAHA207d9iYqK8vmvdu3aSk5O1uTJk/XYY48FY0YAAAAAgAOZDqQViYuL04EDB6xaDgAAAADgcKZfsrtu3Tq/2unTp7VixQo1bdrUkqEAAAAAAM5nOpCOGDFCLpdLXq/Xp16/fn1Nnz7dssHwy2bPnu1Xa9SokQYOHKj/+Z//0ffff+9zbPTo0UGZIyEhwVT/N998E5Q5ADuMGDHCcO+sWbN8HrtcLkVHR+vMmTN+31Ml6dprrzW89ubNmw333nDDDYZ7pcD/EAmg+jr/eh8XctlllwVxEqBqgnmx1J07dwZtbZhjOpD+85//9KvVqlVL8fHxcrlclgwFAAAAAHA+0+8hTUhIUEJCgmrXrq2YmBglJCSoYcOGlQ6jn3zyidLT0zVu3Di/YytWrFDv3r3ldrvVv39//pUeAAAAABzE1BnSEydO6G9/+5veffdd/fDDD5Kkhg0bqn///ho9erSio6NNPfm8efO0dOlStWzZ0u/Yrl27NH78eM2aNUvXXHONPvzwQ40ZM0YrV67kvaoAAAAA4ACGz5CeOXNGt99+u/7xj3/otttu0wsvvKCnn35aAwYM0Lvvvqvhw4fr7Nmzpp48Ojq6wkD65ptvKiMjQxkZGYqOjlafPn3Upk0bLV++3NRzAAAAAACqJ8NnSF955RVJ0nvvvafY2FifY3fddZeGDx+u119/XcOHDzf85MOGDavw2I4dO5SRkeFTa9++vfLy8gyv73SNGjXyq9WvX9/n159zu91BmaNx48ZBWRcAAACAsxkOpCtXrtTDDz/sF0YlKTY2VuPHj9f06dNNBdIL8Xg8qlevnk+tXr16+vLLLy1Z3wkGDhxY4bFevXqZ6gcAAACAi81wID1w4IDS0tIqPO52u7V//34rZioX6DYI+I//+Z//8avVr19fvXr10qpVq+TxeHyOBeu2PGbPkK5cuTIocwAAAAAILYYDaVlZmSIiKn7LaUREhMrKyiwZSpIaNGjgF6g8Ho/i4+Mte45Qd/59Rn/O4/H4Hc/NzQ3KHGbvQwoAAAAAkomLGl166aXKz8+v8Pj27dvVrFkzS4aSpJSUFG3fvt2nlpeXp44dO1r2HAAAAAAA+xgOpD169NCzzz4b8Czo2bNnNWPGDPXs2dOywQYOHKj169dr7dq1OnPmjJYuXar9+/erT58+lj0HAAAAAMA+Lq/BN2p6PB7169dPsbGx+uMf/6hWrVqptLRUe/bs0fz58+X1evW///u/qlu3ruEnT01NlSSVlJRIkmrU+OkVxOeupLtq1SplZWWpsLBQSUlJmjhxorp06WLqE6wOzr9a8IV8/PHHVXout9utnJwcpaWl+b1ENzEx0fA6BQUFVZoDCGWXXXaZ4d6vv/660s9zof0q/ed7ohFmb7sFIHT06NHDVH+TJk0M9/797383Ow5w0bhcLsO9MTExfrWOHTvq008/1X/9139p27ZtPseKioqqPB+sYfhvO/Xr19eSJUs0ZcoUTZw4UV6vV16vV5GRkbr++us1adIkU2FU0i/ewqVXr14BrxYLAAAAAAh9xv/5XVKzZs00Z84c/fDDDzpw4IAk6Yorrgh4KxgAAAAAAC7EVCA9p169eurQoYPVswAAAAAAwojhixoBAAAAAGAlAikAAAAAwBYEUgAAAACALQikAAAAAABbEEgBAAAAALYgkAIAAAAAbEEgBQAAAADYolL3IYXkcrmCsm5mZqbh3qeeeqrCY5s3b/arRUTw7w+AEV999dVFfb6cnJyL+nwAQsu9995rqv+NN94I0iTAxdWqVSvDvYcOHQriJAgmEgoAAAAAwBYEUgAAAACALQikAAAAAABbEEgBAAAAALYgkAIAAAAAbEEgBQAAAADYgkAKAAAAALAFgRQAAAAAYAsCKQAAAADAFgRSAAAAAIAtCKQAAAAAAFu4vF6v1+4hAAAAAADhhzOkAAAAAABbEEgBAAAAALYgkAIAAAAAbEEgBQAAAADYgkAKAAAAALAFgRQAAAAAYAsCKQAAAADAFgRSAAAAAIAtCKQAAAAAAFsQSAEAAAAAtiCQAgAAAABsQSAFAAAAANiCQAoAAAAAsAWBFAAAAABgCwIpAAAAAMAWBFIAAAAAgC0IpAAAAAAAWxBIAQAAAAC2IJACAAAAAGxBIAUAAAAA2IJACgAAAACwBYEUAAAAAGCLsAmkhYWFGjlypLp27aru3btrxowZKisrs3ssy7Rt21YpKSlKTU0t/+/xxx+3e6wq+eSTT5Senq5x48b5HVuxYoV69+4tt9ut/v37a926dTZMiGBiz4Ye9mx4Y8+GHvZseGPPhh6n7tkadg9wsYwdO1bJyclavXq1jhw5olGjRqlRo0a688477R7NMitXrlTz5s3tHsMS8+bN09KlS9WyZUu/Y7t27dL48eM1a9YsXXPNNfrwww81ZswYrVy5Uk2bNrVhWgQDeza0sGfBng0t7FmwZ0OLk/dsWJwhzcvLU35+vjIzM1W3bl0lJiZq+PDhys7Otns0VCA6OrrCTffmm28qIyNDGRkZio6OVp8+fdSmTRstX77chkkRDOzZ0MOeDW/s2dDDng1v7NnQ4+Q9GxaBdMeOHUpISFC9evXKa8nJySooKFBRUZGNk1krKytL1113nTp37qzJkyfrxIkTdo9UacOGDVPdunUDHtuxY4fat2/vU2vfvr3y8vIuxmi4CNizoYc9G97Ys6GHPRve2LOhx8l7NiwCqcfjUVxcnE/t3AY8duyYHSNZrlOnTkpPT9eqVauUnZ2trVu3aurUqXaPFRQej8fnG6j009fTKV9LsGedhj3rfOxZZ2HPOh971llCfc+GRSCVJK/Xa/cIQZWdna0BAwYoKipKrVq1UmZmpt577z0VFxfbPVpQOP3rCed/jdmzcBqnf43Zs3Aap3+N2bOhIywCaXx8vDwej0/N4/HI5XIpPj7enqGCrHnz5iotLdWRI0fsHsVyDRo0CPj1dOrXMhyxZ52FPet87FlnYc86H3vWWUJ9z4ZFIE1JSdHBgwd19OjR8lpeXp6SkpIUExNj42TW2Llzp6ZPn+5T27t3r6KiotS4cWObpgqelJQUbd++3aeWl5enjh072jQRrMaedRb2rPOxZ52FPet87FlnCfU9GxaBtH379kpNTVVWVpaKioq0d+9eLVy4UIMHD7Z7NEs0bNhQ2dnZmjt3roqLi1VQUKCZM2fq1ltvVWRkpN3jWW7gwIFav3691q5dqzNnzmjp0qXav3+/+vTpY/dosAh71lnYs87HnnUW9qzzsWedJdT3rMsbyi84NuHQoUOaPHmyPvvsM8XGxmrQoEEaM2aMXC6X3aNZYtOmTcrKytLu3bsVFRWlfv36ady4cYqOjrZ7tEpJTU2VJJWUlEiSatT46Za5564WtmrVKmVlZamwsFBJSUmaOHGiunTpYs+wCAr2bGhhz4I9G1rYs2DPhhYn79mwCaQAAAAAgOolLF6yCwAAAACofgikAAAAAABbEEgBAAAAALYgkAIAAAAAbEEgBQAAAADYgkAKAAAAALAFgRQAAAAAYAsCKQAAAADAFgRSAAAAAIAtCKQAAAAAAFsQSAEAAAAAtiCQAgAAAABsQSAFAAAAANiCQAoAAAAAsAWBFAAAAABgCwIpAAAAAMAWBFIAAAAAgC0IpAAAAAAAW1TrQFpYWKiRI0eqa9eu6t69u2bMmKGysjK7xwIAAAAAWKCG3QNcyNixY5WcnKzVq1fryJEjGjVqlBo1aqQ777zT7tEAAAAAAFVUbc+Q5uXlKT8/X5mZmapbt64SExM1fPhwZWdn2z0aAAAAAMAC1TaQ7tixQwkJCapXr155LTk5WQUFBSoqKrJxMgAAAACAFaptIPV4PIqLi/OpnQunx44ds2MkAAAAAICFqm0glSSv12v3CAAAAACAIKm2gTQ+Pl4ej8en5vF45HK5FB8fb89QAAAAAADLVNtAmpKSooMHD+ro0aPltby8PCUlJSkmJsbGyQAAAAAAVqi2gbR9+/ZKTU1VVlaWioqKtHfvXi1cuFCDBw+2ezQAAAAAgAVc3mr8Rs1Dhw5p8uTJ+uyzzxQbG6tBgwZpzJgxcrlcdo8GAAAAAKiiah1IAQAAAADOVW1fsgsAAAAAcDYCKQAAAADAFgRSAAAAAIAtCKQAAAAAAFsQSAEAAAAAtiCQAgAAAABsQSAFAAAAANiCQAoAAAAAsAWBFAAAAABgCwIpAAAAAMAWNeweANVTaWmp4d4nn3zS1NorVqww3Fu3bl2fx0lJSZo9e7b+/Oc/68svv/Q59o9//MPwul6v13AvEAoOHz5suLdx48ZBm4O9BYSWXbt2lX9cq1YtXX755SooKNDp06f9ehMSEgyvGxcXZ8l8gNOZ+Xv0xIkTfR673W7l5OQoLS1Nubm5PsdC6ecxZ0gBAAAAALYgkAIAAAAAbEEgBQAAAADYgkAKAAAAALAFgRQAAAAAYAsCKQAAAADAFgRSAAAAAIAtCKQAAAAAAFsQSAEAAAAAtiCQAgAAAABsUcPuAeArMjLScG9ZWZlfze12KycnR2lpacrNzbVyNMu8++67hnvr16/v8zgmJkaS9Kc//UknTpzwObZ06dIqzwZUJwUFBYZ7r7jiiqDN8dFHHxnudblcPo8v9D3J6/VaMh+c6fHHHzfcO3ny5CBO4myPPfZY+ceJiYmaNm2a5s6dq/379/v1vvzyyxdxMiA8TJw40e4RbMcZUgAAAACALQydIZ01a1alFh8zZkylfh8AAAAAwPkMBdIXX3xRnTt3NrXwli1bCKQAAAAAgAoZCqQ1a9bU4sWLTS3coUOHSg0EAAAAAAgPht5DWpkznZwdBQAAAABciKFAOnLkSEnSwYMHtWLFCuXk5ATse/TRR/1+DwAAAAAAgRi+yu769et100036f7779fQoUN1zz336PTp0z4977zzjuUDAgAAAACcyXAgnTlzpoYNG6YtW7bof//3f1VYWKjRo0ertLS0vId7ygEAAAAAjDIcSPft26cxY8YoJiZGV155pV5//XX9+9//1tNPP13ec/4N0QEAAAAAqIjhQBodHa1Tp06VP65bt65mz56tt99+W2+//bYkzpACAAAAAIxzeQ2myHHjxikiIkIPP/ywGjVqVF7fsGGDRo8erXvvvVfPPvustm3bFrRhw8GGDRsM9+7evduvFh8frz59+mj58uU6evSoz7E777zT8NplZWWGez0ej+FeSWrQoIGpfsApDh065PO4Ro0aatSokb7//nuVlJT49Tdr1szw2m3atDHc+8UXXxjulaTDhw8b7r3kkkt8HrvdbuXk5CgtLU25ubk+x/hHTFxITEyM4d4TJ04EcRJn+/mr2y60XyX2LGBErVq1TPWfOXPGcK9T96DhM6SZmZnKy8vTs88+61P/1a9+pZdfflmLFi1ScXGx5QMCAAAAAJyphtHGhIQEvffeewH/pfzqq6/W+++/r9WrV1s6HAAAAADAuQyfIZWkqKgoJSQkBDxWp04d9enTx5KhAAAAAADOZyqQAgAAAABgFQIpAAAAAMAWBFIAAAAAgC0IpAAAAAAAW1gWSHNycrRu3TqrlgMAAAAAOJzh2778kokTJ2r//v3atWuXVUsCAAAAABzMskC6aNEilZSUWLUcAAAAAMDhLAukTZo0sWqpsParX/3Kkt5A94S98847Da/tcrkM9zZo0MBwL+A0x48fN9zbrFkzn8dut1s5OTnq1auXcnNz/fobNWpkeO3du3cb7q0ufvOb3xju/fDDD4M4CaqjkydP2j1CyDp79qzdIwCOUlpaarj3zJkzptbm1aWVCKRlZWVavXq1vvjiCxUXF/sdv//++y0ZDAAAAADgbKYD6dSpU5Wdna2GDRsqOjra55jL5bI0kLZt21Y1a9b0OVs3cOBATZ482bLnAAAAAADYw3QgfffddzVnzhxlZGQEYx4/K1euVPPmzS/KcwEAAAAALh7Tt32JjIzUtddeG4xZAAAAAABhxPQZ0p49e2rjxo2mLr5TFVlZWcrNzVVRUZFuuukmTZgwQTExMRfluZ3G7XbbPQIAAAAAlDMUSJctW1b+cWpqqh577DF1795dLVq0UETEf06yulwuDRw40LLhOnXqpPT0dD311FP6+uuvdd9992nq1Kl6+umnLXuOcJKTk2P3CAAAAABQzlAgnTBhgl+toKDAr2Z1IM3Ozi7/uFWrVsrMzNQ999yjJ554QlFRUZY9T7hIS0sz3Et4BQAAABBshgJpfn5+sOcwpHnz5iotLdWRI0f87ueHXxboPocAAAAAYBfTFzWSpM8//1wHDhwof7x161Zt27bNsqEkaefOnZo+fbpPbe/evYqKilLjxo0tfS4AAAAAwMVnOpCuWrVKQ4YM0RdffFFeKygo0G233aZVq1ZZNljDhg2VnZ2tuXPnqri4WAUFBZo5c6ZuvfVWRUZGWvY8AAAAAAB7mA6ks2fP1tNPP62ePXuW1/r166e//e1vmjVrlmWDNWnSRHPnztWaNWvUtWtXDRo0SNdee60efPBBy54DAAAAAGAf07d9OXDggG688Ua/+nXXXafMzExLhjqnS5cueuONNyxdM5wdP37ccG/t2rUN986ePdvUHHfeeaepfqA6i4uLM9y7Z88en8fR0dGSpHfeeUdnzpzx609KSqracNXcz19pA6Bi//d//2eqv0ePHoZ7P/jgg/KPz30/mzVrln788UdTzwk4WY0axiNTSkqKqbXbtWtndhzHMX2GtHHjxsrLy/Orb9y4UQ0aNLBkKAAAAACA85k+QzpkyBCNHDlSffr0UYsWLVRWVqZ9+/bp/ffft/wMKQAAAADAuUwH0jvuuEN16tTRkiVLtHTpUkVGRioxMVETJ05U//79gzEjAAAAAMCBDAXSrVu3qlOnTuWPBwwYoAEDBpj6PQAAAAAA/Jyh95DecccdpheuzO8BAAAAAIQPQ2dIS0pKTN/SpbS0tFIDAQAAAADCg6FAmpaWpo0bN5pa2O12V2ogAAAAAEB4MBRIFy9eHOw5AAAAAABhxvR9SAEAAAAAsAKBFAAAAABgC9P3IUXoio2NNdz7zTffGO5t1KiRqTnWrFljuJeXi8MOmzdvDsq6SUlJAestWrQIyvNVd9ddd53dI8AhGjduHJR1Dx8+7PPY7XYrJydHaWlpys3N9euPiDD+7/x/+tOfDPfOnDnTcK8k1ahh/K93N954o18tPT3d1PMBocjlcgVl3by8vKCs62ScIQUAAAAA2MJ0IJ0wYULAelFRke6+++4qDwQAAAAACA+GX9Ph8Xh07NgxrVixQnfffbe8Xq/P8b179+rTTz+1fEAAAAAAgDMZDqTvv/++nnzySZWVlemmm27yO+71ennPAQAAAADAMMOBdOjQoerdu7fS09O1YMECv+O1a9fWlVdeaelwAAAAAADnMnWV3bi4OL311ltq27ZtsOYBAAAAAIQJ07d9WbRo0QWPT5s2rbKzAAAAAADCiOlAum/fPp/HpaWl+vrrrxURESG3223ZYAAAAAAAZzMdSLOzs/1qpaWleu6559S8eXNLhgIAAAAAOJ/p+5AGEhkZqdGjR2vu3LlWLAcAAAAACAOmz5BW5OTJkzp27JhVy8FmDRs2NNx7/j1pf4nL5TLc++ijj/o8jo6O1mWXXaavvvpKZ86c8TnWunVrU3MAFTlx4oTh3tq1awdxkurhkUceMdxbq1Ytn8fR0dHlv55/bOHChVUfDo5l9mfLxZSTk2P3CBdUUlJi9wjARXf48GG/Wo0aNdSgQQMdO3asSvuiW7duVRkNv8B0IH322Wf9aqdOndK6devUrl07S4YCAAAAADif6UD63nvv+dVq1aqlpKQk3X///ZYMBQAAAABwPtOBdM2aNcGYAwAAAAAQZir1HtITJ07o448/1qFDh+RyuZSQkKBu3bqFxXupAAAAAADWMB1IN27cqLvvvlunTp1SbGysvF6vTpw4odjYWM2fP1+dOnUKwpgAAAAAAKcxfduXRx99VP369dOGDRu0efNmbdmyRevXr9fNN99s6kqMAAAAAIDwZjqQHjx4UA8++KAaNGhQXouPj9dDDz2kwsJCS4cDAAAAADiX6UDavHlzFRUV+dVPnjypFi1aWDIUAAAAAMD5TAfSiRMn6tFHH9W2bdtUVFSkH374Qdu2bdOUKVOUmZmp4uLi8v8AAAAAAKiI6YsajRo1SiUlJVq7dq1P3ev1+t0SZteuXVUaDgAAAADgXKYD6eOPPx6MOQAAAAAAYcZ0IC0tLdUtt9ziVz958qSWLFmiESNGWDIYrPfjjz8a7r3kkksM9wbz5dmtW7cOWL/sssuC9pxAWVmZ4V6v1xvESYIjMjLSVP9NN91kuPfUqVMB6xs2bDD1nAAAmNG4cWO/mtvtVk5Ojq6//nrl5uZWeu1PPvmkKqPhF5h+D2lFZ0iPHz+u559/vsoDAQAAAADCg+EzpAsWLNCCBQtUXFysbt26+R0vKipSs2bNLB0OAAAAAOBchgPpoEGDlJiYqLFjx2rQoEF+x2vXrq1evXpZOhwAAAAAwLkMB9I6deqoR48eeuSRRzR06NBgzgQAAAAACAOmL2oUExOjZcuWVXi8b9++VRgHAAAAABAuTAfSCRMmBF6oRg3VqlWLQAoAAAAAMMR0IP388899HpeWlmrfvn2aO3euhg0bZtlgAAAAAABnM33bl6ioKJ//ateureTkZE2ePFmPPfZYMGYEAAAAADiQ6UBakbi4OB04cMCq5QAAAAAADmf6Jbvr1q3zq50+fVorVqxQ06ZNLRkKAAAAAOB8pgPpiBEj5HK55PV6fer169fX9OnTLRssXJ09e9Zwb+PGjf1qHTp00EcffaSMjAy/9/t6PJ6qjhfQp59+aqo/PT09KHMAVomIMP7ikdOnTxvujY6O9nncqVMnbdy4UV27dtXWrVv9+ouLiw2vbcakSZNM9T/++ONBmQMAgAs5fPhw0NYeM2ZM0NaGOaYD6T//+U+/Wq1atRQfHy+Xy2XJUAAAAAAA5zP9HtKEhAQlJCSodu3aiomJUUJCgho2bFjpMPrJJ58oPT1d48aN8zu2YsUK9e7dW263W/379w/4cmEAAAAAQGgydYb0xIkT+tvf/qZ3331XP/zwgySpYcOG6t+/v0aPHu33crRfMm/ePC1dulQtW7b0O7Zr1y6NHz9es2bN0jXXXKMPP/xQY8aM0cqVK3mvKgAAAAA4gOFAeubMGd1+++06evSobrvtNrVr106nTp3Svn37tGzZMm3atEmvvvqqatasafjJo6OjtXTpUv31r3/VmTNnfI69+eabysjIUEZGhiSpT58+eu2117R8+XKNHDnS8HM4WYcOHfxqrVu39vn1544fPx6UOWJiYoKyLgAAAABnMxxIX3nlFUnSe++9p9jYWJ9jd911l4YPH67XX39dw4cPN/zkw4YNq/DYjh07ysPoOe3bt1deXp7h9UORmUD/0UcfVXhs/vz5VowDAAAAAEFjOJCuXLlSDz/8sF8YlaTY2FiNHz9e06dPNxVIL8Tj8ahevXo+tXr16unLL7+0ZP3qysxVdm+44Qa/WuvWrTV//nyNGDFCe/bs8TkWrDOkCxcuNNXfsWPHoMwBAAAAILQYDqQHDhxQWlpahcfdbrf2799vxUzlzr+1DHydf1uXn9uzZ89Fu+3LiRMngrIuAAAAAGczfJXdsrKyC96bLyIiQmVlZZYMJUkNGjTwC1Aej0fx8fGWPQcAAAAAwD6GA+mll16q/Pz8Co9v375dzZo1s2QoSUpJSdH27dt9anl5ebzcEwAAAAAcwnAg7dGjh5599tmAZ0HPnj2rGTNmqGfPnpYNNnDgQK1fv15r167VmTNntHTpUu3fv199+vSx7DkAAAAAAPYx/B7Su+66S/369dPvf/97/fGPf1SrVq1UWlqqPXv2aP78+fJ6vRoxYoSpJ09NTZUklZSUSJJWr14t6aczoW3atNEzzzyjadOmqbCwUElJSZozZ44uueQSU88RLN98843h3kC3YKnI6dOnKzNOuXMXLjp+/LjfS57Hjx9veJ3p06dXaQ4glJ1/he8L+e///m/DvVOnTvV5fO4iZmfPnlVxcbFf/z333GN47dmzZxvuBQAgFATr+ieS9MILLwRtbZhjOJDWr19fS5Ys0ZQpUzRx4kR5vV55vV5FRkbq+uuv16RJk1S3bl1TT/5Lt3Dp1auXevXqZWpNAAAAAEBoMBxIJalZs2aaM2eOfvjhBx04cECSdMUVVwS8FQwAAAAAABdiKpCeU69ePXXo0MHqWQAAAAAAYcTwRY0AAAAAALASgRQAAAAAYAsCKQAAAADAFgRSAAAAAIAtCKQAAAAAAFsQSAEAAAAAtiCQAgAAAABs4fJ6vV67hwAAAAAAhB/OkAIAAAAAbEEgBQAAAADYgkAKAAAAALAFgRQAAAAAYAsCKQAAAADAFgRSAAAAAIAtCKQAAAAAAFsQSAEAAAAAtiCQAgAAAABsQSAFAAAAANiCQAoAAAAAsAWBFAAAAABgCwIpAAAAAMAWBFIAAAAAgC0IpAAAAAAAWxBIAQAAAAC2IJACAAAAAGxBIAUAAAAA2IJACgAAAACwBYEUAAAAAGALAikAAAAAwBYEUgAAAACALQikAAAAAABbEEgBAAAAALYgkAIAAAAAbEEgBQAAAADYgkAKAAAAALAFgRQAAAAAYAsCKQAAAADAFgRSAAAAAIAtCKQAAAAAAFsQSAEAAAAAtiCQAgAAAABsETaBtLCwUCNHjlTXrl3VvXt3zZgxQ2VlZXaPZZm2bdsqJSVFqamp5f89/vjjdo9VJZ988onS09M1btw4v2MrVqxQ79695Xa71b9/f61bt86GCRFM7NnQw54Nb+zZ0MOeDW/s2dDj1D1bw+4BLpaxY8cqOTlZq1ev1pEjRzRq1Cg1atRId955p92jWWblypVq3ry53WNYYt68eVq6dKlatmzpd2zXrl0aP368Zs2apWuuuUYffvihxowZo5UrV6pp06Y2TItgYM+GFvYs2LOhhT0L9mxocfKeDYszpHl5ecrPz1dmZqbq1q2rxMREDR8+XNnZ2XaPhgpER0dXuOnefPNNZWRkKCMjQ9HR0erTp4/atGmj5cuX2zApgoE9G3rYs+GNPRt62LPhjT0bepy8Z8MikO7YsUMJCQmqV69eeS05OVkFBQUqKiqycTJrZWVl6brrrlPnzp01efJknThxwu6RKm3YsGGqW7duwGM7duxQ+/btfWrt27dXXl7exRgNFwF7NvSwZ8Mbezb0sGfDG3s29Dh5z4ZFIPV4PIqLi/OpnduAx44ds2Mky3Xq1Enp6elatWqVsrOztXXrVk2dOtXusYLC4/H4fAOVfvp6OuVrCfas07BnnY896yzsWedjzzpLqO/ZsAikkuT1eu0eIaiys7M1YMAARUVFqVWrVsrMzNR7772n4uJiu0cLCqd/PeH8rzF7Fk7j9K8xexZO4/SvMXs2dIRFII2Pj5fH4/GpeTweuVwuxcfH2zNUkDVv3lylpaU6cuSI3aNYrkGDBgG/nk79WoYj9qyzsGedjz3rLOxZ52PPOkuo79mwCKQpKSk6ePCgjh49Wl7Ly8tTUlKSYmJibJzMGjt37tT06dN9anv37lVUVJQaN25s01TBk5KSou3bt/vU8vLy1LFjR5smgtXYs87CnnU+9qyzsGedjz3rLKG+Z8MikLZv316pqanKyspSUVGR9u7dq4ULF2rw4MF2j2aJhg0bKjs7W3PnzlVxcbEKCgo0c+ZM3XrrrYqMjLR7PMsNHDhQ69ev19q1a3XmzBktXbpU+/fvV58+feweDRZhzzoLe9b52LPOwp51Pvass4T6nnV5Q/kFxyYcOnRIkydP1meffabY2FgNGjRIY8aMkcvlsns0S2zatElZWVnavXu3oqKi1K9fP40bN07R0dF2j1YpqampkqSSkhJJUo0aP90y99zVwlatWqWsrCwVFhYqKSlJEydOVJcuXewZFkHBng0t7FmwZ0MLexbs2dDi5D0bNoEUAAAAAFC9hMVLdgEAAAAA1Q+BFAAAAABgCwIpAAAAAMAWBFIAAAAAgC0IpAAAAAAAWxBIAQAAAAC2IJACAAAAAGxBIAUAAAAA2IJACgAAAACwBYEUAAAAAGALAikAAAAAwBYEUgAAAACALQikAAAAAABbEEgBAAAAALYgkAIAAAAAbEEgBQAAAADYgkAKAAAAALAFgRQAAAAAYAsCKQAAAADAFtU6kBYWFmrkyJHq2rWrunfvrhkzZqisrMzusQBUgD0LhBb2LBA62K9wqhp2D3AhY8eOVXJyslavXq0jR45o1KhRatSoke688067RwMQAHsWCC3sWSB0sF/hVNX2DGleXp7y8/OVmZmpunXrKjExUcOHD1d2drbdowEIgD0LhBb2LBA62K9wsmobSHfs2KGEhATVq1evvJacnKyCggIVFRXZOBmAQNizQGhhzwKhg/0KJ6u2gdTj8SguLs6ndm4THjt2zI6RAFwAexYILexZIHSwX+Fk1TaQSpLX67V7BAAmsGeB0MKeBUIH+xVOVW0DaXx8vDwej0/N4/HI5XIpPj7enqEAVIg9C4QW9iwQOtivcLJqG0hTUlJ08OBBHT16tLyWl5enpKQkxcTE2DgZgEDYs0BoYc8CoYP9CiertoG0ffv2Sk1NVVZWloqKirR3714tXLhQgwcPtns0AAGwZ4HQwp4FQgf7FU7m8lbjF6QfOnRIkydP1meffabY2FgNGjRIY8aMkcvlsns0AAGwZ4HQwp4FQgf7FU5VrQMpAAAAAMC5qu1LdgEAAAAAzkYgBQAAAADYgkAKAAAAALAFgRQAAAAAYAsCKQAAAADAFgRSAAAAAIAtCKQAAAAAAFsQSAEAAAAAtiCQAgAAAABsUcPuAXDxlJaWBmXdBx980FT/9OnTDfdGR0f7PHa73crJyVFaWppyc3N9jk2ZMsXwuv/93/9tuBcIBZGRkYZ7y8rKgrZ2SUmJqbUB2CsqKqr8406dOumzzz7T1Vdfra1bt/r1FhcXX8TJgPDgcrkM9+7Zs8fncXR0tFq0aKGvv/5aZ86c8TmWlJRkyXwXA2dIAQAAAAC2IJACAAAAAGxBIAUAAAAA2IJACgAAAACwBYEUAAAAAGALAikAAAAAwBYEUgAAAACALQikAAAAAABbEEgBAAAAALYgkAIAAAAAbFHD7gHCwXfffWe4t0mTJlV6LrfbrZycHKWlpSk3N7dKawVL//79Dfd+9dVXPo9r1qwpSVqxYoXOnj3rc6xFixZVHw6oRurUqWO4t6yszHDvpZdeamqOf//734Z7n3rqKZ/HTZo00fDhw7Vo0SJ9++23PsfGjx9vag6El9/+9reGe1esWBHESZwtLi6u/OPY2NjyX39eB2Dc1KlTg7a2y+Wq1LHqjjOkAAAAAABbGDpDOmvWrEotPmbMmEr9PgAAAACA8xkKpC+++KI6d+5sauEtW7YQSAEAAAAAFTIUSGvWrKnFixebWrhDhw6VGggAAAAAEB4MvYe0Mmc6OTsKAAAAALgQQ2dIR44cKUnas2ePdu/erfT0dMXHx2vfvn36+9//rho1aqhnz55KS0vz+z0AAAAAAARi+LYvq1ev1r333qvS0lI1bdpUCxYs0ODBg9WkSROdPXtWr776ql588UVdd911QRwXAAAAAOAUhm/7MnfuXI0ePVqbNm3SjTfeqIcffliDBw/W8uXL9cEHH+iBBx7Qyy+/HMxZAQAAAAAOYjiQ7t+/XyNGjFDdunU1cuRIff755xo2bFj58aFDh2rfvn1BGRIAAAAA4DyGA6nL5VJZWZkkKT4+XjVq1FB8fHz58bNnz+rs2bPWTwgAAAAAcCTD7yFNTk7W/PnzNXr0aLlcLm3YsMHn+KxZs7jVSwUaN25suPcPf/iD4d633nrL1BxNmjQx3Hvo0CHDvbfeequpObp162aqP5CmTZtWeQ3gYouMjPR57Ha7tXnzZnXu3Fm5ubl+/ef+EdCIF1980XDvuHHjDPdK0r/+9S/DvQ8//LDP49atW2v48OHasGGD9uzZ43Ns/PjxpuYAYEynTp0M9953333lH5/72TpkyBD16NHD4qmA0FVQUGC4d8qUKabWfvfddw33tmrVKmC9RYsWpp6zujEcSP/yl7/ozjvvVNOmTXXLLbcoNja2/NjNN9+sgwcP6pVXXgnKkAAAAAAA5zEcSDt16qQPP/xQJSUlfseGDx+ua665JuTTOQAAAADg4jEcSKWKX3o6YMAAS4YBAAAAAIQPwxc1AgAAAADASgRSAAAAAIAtCKQAAAAAAFsQSAEAAAAAtrAskObk5GjdunVWLQcAAAAAcDhTV9m9kIkTJ2r//v3atWuXVUsCAAAAABzMskC6aNGigPcoBQAAAAAgEJfX6/XaPQQq5y9/+YtfrXnz5nrooYf09NNP65tvvvE59uGHHxpee/fu3VWeDwgHv/nNbwz3rlmzxuex2+3WZ599pquvvlq5ubl+/f/85z8Nr/3rX//acG8wuVwun8dut1s5OTlKS0vz+xz58RNennnmGVP95++XC1mxYoXZcRwtKirKcO+PP/5Y/rHL5VJ0dLTOnDkTcH/WqlXLkvmAUHP+z7YLiYyMNLU2J/QqcYa0rKxMq1ev1hdffKHi4mK/4/fff78lgwEAAAAAnM10IJ06daqys7PVsGFDRUdH+xxzuVwEUgAAAACAIaYD6bvvvqs5c+YoIyMjGPP4aNu2rWrWrOlzmnzgwIGaPHly0J8bgHnsWSC0sGeB0MF+hVOZDqSRkZG69tprgzFLQCtXrlTz5s0v2vMBqBr2LBBa2LNA6GC/wolM34e0Z8+e2rhxYzBmAQAAAACEEUNnSJctW1b+cWpqqh577DF1795dLVq0UETEfzKty+XSwIEDLR0wKytLubm5Kioq0k033aQJEyYoJibG0ucIVYH+haxJkyY+v/5c+/btgz4TEG57NikpyXDvsWPHfB63bdvW59fzxcbGVn4wm7jdbp/H7dq18/kV1c/F2rONGzc21d+qVSvLZwgXnTp1Mtz785d/nvvYzBVFcXGF28/Y6uL8n20XYvYquzB42xejf5FwuVzatWtXlYc659Zbb9Utt9yi3//+9/r6669133336corr9TTTz9t2XMAsA57Fggt7FkgdLBf4VQhdR/Sjz76SPfcc4+2bt1q6h5bThXoG1CTJk10xx136JVXXtG3337rc2zDhg2G13777berPB8QDnt29OjRhns3bdrk87ht27ZavHixbr/99oD3/n355ZcNr52Wlma4N5jOn6Ndu3ZasmSJhgwZovz8fJ9jOTk5F3M0GBDMPfvqq6+a6j9/v1zICy+8YHYcR7v66qsN937yySflH7tcLkVFRam4uDjgfUjPv7sC7BUOP2OrCzM/Y82eITXzvc6pTF/USJI+//xz1atXTy1btpQkbd26VS6XSx07drR0uPM1b95cpaWlOnLkiJo1axbU5woF33zzTYXHvv32W7/jO3fuDPZIgI9w2LNffvml4d7c3NyA9d27dwc8VlRUVOm57FLR55ifn1/hMVQfwdyz3333nan+vXv3Wvr84WTr1q2GewMFT6/XG7CO6iUcfsZWF2Z+fvGSXfNMX9Ro1apVGjJkiL744ovyWkFBgW677TatWrXKssF27typ6dOn+9T27t2rqKgo0+9DARB87FkgtLBngdDBfoWTmT5DOnv2bD399NPq2bNnea1fv36Ki4vTzJkz1atXL0sGa9iwobKzsxUfH6/hw4ersLBQM2fO1K233sq/PADVEHsWCC3sWSB0sF/hZKbfQ+p2u7Vlyxafq+tKUmlpqTp37mzpS7I2bdqkrKws7d69W1FRUerXr5/GjRvHexgq6fyv2YX07t3bcO8777xTmXHgQE7Zs1999ZXh3nNvXTAiHF4Cd/7VOd1ut3JycpSWlub38yEc/n9Udxdzz/bt29dU/7Rp0wz3XnnllSansZ+ZP/9m3hMq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+AuZhc1CSYcXpCcSCe3YsUN5eXl68803tWrVKk1MTKi/v1/Nzc1KJpP69ttv0z4jNZ3y8nJJ0p07dyRJCxbcvYL43jeGdXV1KRaLaXh4WCUlJWpsbNSGDRtc/QOz5aWXXnK8Nls3Lg6FQmnbIpGIfv31Vz3//PNplyZMTEzM6tiAnzPrxnSX/TzI7f2X/1ckElF3d7cqKyunvJTo77//dnwsN6+9CIag5DUItmzZ4mr9448/7njtN99843YcZAmZTefm/Whubm7atoqKCv3888968cUX0z4aMzo6Ouv54A3HnyFdvHixWlpa9MEHH6ixsVHJZFLJZFLz58/XK6+8ovfff9/1G6L/91XV27Zt07Zt21wdE0D2kFnAP8gr4C9kFkHluJBKd7959dixY7p586aGhoYkSU8//fSUt4IBAAAAAGA6rgrpPQUFBXruuee8ngUAAAAAECCOv9QIAAAAAAAvUUgBAAAAAEZQSAEAAAAARlBIAQAAAABGUEgBAAAAAEZQSAEAAAAARlBIAQAAAABGhJLJZNL0EAAAAACA4OEMKQAAAADACAopAAAAAMAICikAAAAAwAgKKQAAAADACAopAAAAAMAICikAAAAAwAgKKQAAAADACAopAAAAAMAICikAAAAAwAgKKQAAAADACAopAAAAAMAICikAAAAAwAgKKQAAAADACAopAAAAAMAICikAAAAAwAgKKQAAAADACAopAAAAAMAICikAAAAAwAgKKQAAAADACAopAAAAAMAICikAAAAAwAgKKQAAAADACAopAAAAAMAICikAAAAAwAgKKQAAAADACAopAAAAAMAICikAAAAAwAgKKQAAAADACAopAAAAAMAICikAAAAAwAgKKQAAAADACAopAAAAAMAICikAAAAAwAgKKQAAAADAiMAU0uHhYb399tvauHGjXn75ZR05ckSTk5Omx/LMs88+q7KyMpWXl9//9dFHH5kea1bOnj2rqqoq1dfXp+3r6OjQ9u3bFYlEVFNTo3PnzhmYENlEZv2HzAYbmfUfMhtsZNZ/bM3sAtMDzJV3331X69at0w8//KCRkREdPHhQjz76qPbv3296NM90dnZq+fLlpsfwxPHjx9XW1qYVK1ak7bt69aoaGhp09OhRbdq0SadPn1ZdXZ06Ozu1dOlSA9MiG8isv5BZkFl/IbMgs/5ic2YDcYY0Ho+rr69Phw4dUn5+vlauXKna2lq1traaHg0ZhMPhjKE7ceKEotGootGowuGwqqurtXr1ap08edLApMgGMus/ZDbYyKz/kNlgI7P+Y3NmA1FIe3t7VVxcrIKCgvvb1q1bp4GBAY2OjhqczFuxWEybN2/WCy+8oMOHD+vWrVumR5qxffv2KT8/f8p9vb29Ki0tTdlWWlqqeDw+F6NhDpBZ/yGzwUZm/YfMBhuZ9R+bMxuIQppIJLRo0aKUbfcCeOPGDRMjeW79+vWqqqpSV1eXWltbdenSJX344Yemx8qKRCKR8gIq3X0+bXkuQWZtQ2btR2btQmbtR2bt4vfMBqKQSlIymTQ9Qla1trZq586dysnJ0apVq3To0CG1t7drfHzc9GhZYfvzCfufYzIL29j+HJNZ2Mb255jM+kcgCmlhYaESiUTKtkQioVAopMLCQjNDZdny5cs1MTGhkZER06N4bsmSJVM+n7Y+l0FEZu1CZu1HZu1CZu1HZu3i98wGopCWlZXpjz/+0F9//XV/WzweV0lJiXJzcw1O5o0rV66oqakpZdv169eVk5Ojxx57zNBU2VNWVqaenp6UbfF4XBUVFYYmgtfIrF3IrP3IrF3IrP3IrF38ntlAFNLS0lKVl5crFotpdHRU169f15dffqk9e/aYHs0TRUVFam1t1RdffKHx8XENDAzos88+02uvvab58+ebHs9zu3bt0vnz53XmzBmNjY2pra1Ng4ODqq6uNj0aPEJm7UJm7Udm7UJm7Udm7eL3zIaSfr7g2IU///xThw8f1oULF5SXl6fdu3errq5OoVDI9GieuHjxomKxmH7//Xfl5ORox44dqq+vVzgcNj3ajJSXl0uS7ty5I0lasODuLXPvfVtYV1eXYrGYhoeHVVJSosbGRm3YsMHMsMgKMusvZBZk1l/ILMisv9ic2cAUUgAAAADAwyUQl+wCAAAAAB4+FFIAAAAAgBEUUgAAAACAERRSAAAAAIARFFIAAAAAgBEUUgAAAACAERRSAAAAAIARFFIAAAAAgBEUUgAAAACAERRSAAAAAIARFFIAAAAAgBH/ATimlPuzghrFAAAAAElFTkSuQmCC\n"
},
"metadata": {}
}
],
"source": [
"n_samples = 4\n",
"n_channels = 4\n",
"fig, axes = plt.subplots(1 + n_channels, n_samples, figsize=(10, 10))\n",
"for k in range(n_samples):\n",
" axes[0, 0].set_ylabel(\"Input\")\n",
" if k != 0:\n",
" axes[0, k].yaxis.set_visible(False)\n",
" axes[0, k].imshow(train_images[k, :, :, 0], cmap=\"gray\")\n",
"\n",
" # Plot all output channels\n",
" for c in range(n_channels):\n",
" axes[c + 1, 0].set_ylabel(\"Output [ch. {}]\".format(c))\n",
" if k != 0:\n",
" axes[c, k].yaxis.set_visible(False)\n",
" axes[c + 1, k].imshow(q_train_images[k, :, :, c], cmap=\"gray\")\n",
"\n",
"plt.tight_layout()\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "rCnk_yy0d0KE"
},
"source": [
"Below each input image, the $4$ output channels generated by the quantum\n",
"convolution are visualized in gray scale.\n",
"\n",
"One can clearly notice the downsampling of the resolution and some local\n",
"distortion introduced by the quantum kernel. On the other hand the\n",
"global shape of the image is preserved, as expected for a convolution\n",
"layer.\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "vCjr6WvXd0KE"
},
"source": [
"Hybrid quantum-classical model\n",
"==============================\n",
"\n",
"After the application of the quantum convolution layer we feed the\n",
"resulting features into a classical neural network that will be trained\n",
"to classify the $10$ different digits of the MNIST dataset.\n",
"\n",
"We use a very simple model: just a fully connected layer with 10 output\n",
"nodes with a final *softmax* activation function.\n",
"\n",
"The model is compiled with a *stochastic-gradient-descent* optimizer,\n",
"and a *cross-entropy* loss function.\n"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {
"id": "PHtPdynad0KE"
},
"outputs": [],
"source": [
"def MyModel():\n",
" \"\"\"Initializes and returns a custom Keras model\n",
" which is ready to be trained.\"\"\"\n",
" model = keras.models.Sequential([\n",
" keras.layers.Flatten(),\n",
" keras.layers.Dense(10, activation=\"softmax\")\n",
" ])\n",
"\n",
" model.compile(\n",
" optimizer='adam',\n",
" loss=\"sparse_categorical_crossentropy\",\n",
" metrics=[\"accuracy\"],\n",
" )\n",
" return model"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "WlOj9hwGd0KE"
},
"source": [
"Training\n",
"========\n",
"\n",
"We first initialize an instance of the model, then we train and validate\n",
"it with the dataset that has been already pre-processed by a quantum\n",
"convolution.\n"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 0
},
"id": "Zj8fE8uhd0KF",
"outputId": "8d6cea55-ee25-451a-d2b5-aeaf0608a126"
},
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Epoch 1/30\n",
"13/13 - 1s - loss: 2.7776 - accuracy: 0.2200 - val_loss: 2.3704 - val_accuracy: 0.2667 - 585ms/epoch - 45ms/step\n",
"Epoch 2/30\n",
"13/13 - 0s - loss: 1.9611 - accuracy: 0.3200 - val_loss: 1.9885 - val_accuracy: 0.3333 - 58ms/epoch - 4ms/step\n",
"Epoch 3/30\n",
"13/13 - 0s - loss: 1.5096 - accuracy: 0.4800 - val_loss: 1.9108 - val_accuracy: 0.3000 - 55ms/epoch - 4ms/step\n",
"Epoch 4/30\n",
"13/13 - 0s - loss: 1.0571 - accuracy: 0.7400 - val_loss: 1.6136 - val_accuracy: 0.5667 - 59ms/epoch - 5ms/step\n",
"Epoch 5/30\n",
"13/13 - 0s - loss: 0.8874 - accuracy: 0.7800 - val_loss: 1.4982 - val_accuracy: 0.5333 - 58ms/epoch - 4ms/step\n",
"Epoch 6/30\n",
"13/13 - 0s - loss: 0.7217 - accuracy: 0.8600 - val_loss: 1.4832 - val_accuracy: 0.5000 - 54ms/epoch - 4ms/step\n",
"Epoch 7/30\n",
"13/13 - 0s - loss: 0.5457 - accuracy: 0.8800 - val_loss: 1.4132 - val_accuracy: 0.5333 - 56ms/epoch - 4ms/step\n",
"Epoch 8/30\n",
"13/13 - 0s - loss: 0.4317 - accuracy: 0.9800 - val_loss: 1.3039 - val_accuracy: 0.6333 - 62ms/epoch - 5ms/step\n",
"Epoch 9/30\n",
"13/13 - 0s - loss: 0.3786 - accuracy: 1.0000 - val_loss: 1.2814 - val_accuracy: 0.6333 - 58ms/epoch - 4ms/step\n",
"Epoch 10/30\n",
"13/13 - 0s - loss: 0.3043 - accuracy: 1.0000 - val_loss: 1.2817 - val_accuracy: 0.6333 - 58ms/epoch - 4ms/step\n",
"Epoch 11/30\n",
"13/13 - 0s - loss: 0.2796 - accuracy: 1.0000 - val_loss: 1.2345 - val_accuracy: 0.6333 - 59ms/epoch - 5ms/step\n",
"Epoch 12/30\n",
"13/13 - 0s - loss: 0.2428 - accuracy: 1.0000 - val_loss: 1.2815 - val_accuracy: 0.6000 - 57ms/epoch - 4ms/step\n",
"Epoch 13/30\n",
"13/13 - 0s - loss: 0.2093 - accuracy: 1.0000 - val_loss: 1.2018 - val_accuracy: 0.6333 - 62ms/epoch - 5ms/step\n",
"Epoch 14/30\n",
"13/13 - 0s - loss: 0.1930 - accuracy: 1.0000 - val_loss: 1.1698 - val_accuracy: 0.6333 - 58ms/epoch - 4ms/step\n",
"Epoch 15/30\n",
"13/13 - 0s - loss: 0.1598 - accuracy: 1.0000 - val_loss: 1.1518 - val_accuracy: 0.6333 - 57ms/epoch - 4ms/step\n",
"Epoch 16/30\n",
"13/13 - 0s - loss: 0.1418 - accuracy: 1.0000 - val_loss: 1.1739 - val_accuracy: 0.6667 - 57ms/epoch - 4ms/step\n",
"Epoch 17/30\n",
"13/13 - 0s - loss: 0.1352 - accuracy: 1.0000 - val_loss: 1.1626 - val_accuracy: 0.6333 - 56ms/epoch - 4ms/step\n",
"Epoch 18/30\n",
"13/13 - 0s - loss: 0.1173 - accuracy: 1.0000 - val_loss: 1.1437 - val_accuracy: 0.6333 - 60ms/epoch - 5ms/step\n",
"Epoch 19/30\n",
"13/13 - 0s - loss: 0.1075 - accuracy: 1.0000 - val_loss: 1.1467 - val_accuracy: 0.6333 - 54ms/epoch - 4ms/step\n",
"Epoch 20/30\n",
"13/13 - 0s - loss: 0.1004 - accuracy: 1.0000 - val_loss: 1.1139 - val_accuracy: 0.6333 - 57ms/epoch - 4ms/step\n",
"Epoch 21/30\n",
"13/13 - 0s - loss: 0.0918 - accuracy: 1.0000 - val_loss: 1.1457 - val_accuracy: 0.6333 - 56ms/epoch - 4ms/step\n",
"Epoch 22/30\n",
"13/13 - 0s - loss: 0.0840 - accuracy: 1.0000 - val_loss: 1.1236 - val_accuracy: 0.6667 - 57ms/epoch - 4ms/step\n",
"Epoch 23/30\n",
"13/13 - 0s - loss: 0.0800 - accuracy: 1.0000 - val_loss: 1.0942 - val_accuracy: 0.6667 - 64ms/epoch - 5ms/step\n",
"Epoch 24/30\n",
"13/13 - 0s - loss: 0.0736 - accuracy: 1.0000 - val_loss: 1.0913 - val_accuracy: 0.6333 - 59ms/epoch - 5ms/step\n",
"Epoch 25/30\n",
"13/13 - 0s - loss: 0.0710 - accuracy: 1.0000 - val_loss: 1.1068 - val_accuracy: 0.6333 - 57ms/epoch - 4ms/step\n",
"Epoch 26/30\n",
"13/13 - 0s - loss: 0.0639 - accuracy: 1.0000 - val_loss: 1.0926 - val_accuracy: 0.6333 - 57ms/epoch - 4ms/step\n",
"Epoch 27/30\n",
"13/13 - 0s - loss: 0.0614 - accuracy: 1.0000 - val_loss: 1.0782 - val_accuracy: 0.6667 - 57ms/epoch - 4ms/step\n",
"Epoch 28/30\n",
"13/13 - 0s - loss: 0.0602 - accuracy: 1.0000 - val_loss: 1.0928 - val_accuracy: 0.6333 - 55ms/epoch - 4ms/step\n",
"Epoch 29/30\n",
"13/13 - 0s - loss: 0.0552 - accuracy: 1.0000 - val_loss: 1.0953 - val_accuracy: 0.6333 - 57ms/epoch - 4ms/step\n",
"Epoch 30/30\n",
"13/13 - 0s - loss: 0.0516 - accuracy: 1.0000 - val_loss: 1.0844 - val_accuracy: 0.6333 - 61ms/epoch - 5ms/step\n"
]
}
],
"source": [
"q_model = MyModel()\n",
"\n",
"q_history = q_model.fit(\n",
" q_train_images,\n",
" train_labels,\n",
" validation_data=(q_test_images, test_labels),\n",
" batch_size=4,\n",
" epochs=n_epochs,\n",
" verbose=2,\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "ZrgNg_sSd0KF"
},
"source": [
"In order to compare the results achievable with and without the quantum\n",
"convolution layer, we initialize also a \\\"classical\\\" instance of the\n",
"model that will be directly trained and validated with the raw MNIST\n",
"images (i.e., without quantum pre-processing).\n"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 0
},
"id": "xVJR8xXcd0KF",
"outputId": "75d562bc-4568-4e8d-d9c0-e2ffe272dd2d"
},
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Epoch 1/30\n",
"13/13 - 1s - loss: 2.4342 - accuracy: 0.1000 - val_loss: 2.1449 - val_accuracy: 0.2667 - 580ms/epoch - 45ms/step\n",
"Epoch 2/30\n",
"13/13 - 0s - loss: 2.0374 - accuracy: 0.2800 - val_loss: 1.9944 - val_accuracy: 0.3000 - 57ms/epoch - 4ms/step\n",
"Epoch 3/30\n",
"13/13 - 0s - loss: 1.7458 - accuracy: 0.5400 - val_loss: 1.8590 - val_accuracy: 0.4000 - 57ms/epoch - 4ms/step\n",
"Epoch 4/30\n",
"13/13 - 0s - loss: 1.4931 - accuracy: 0.7600 - val_loss: 1.7312 - val_accuracy: 0.5000 - 61ms/epoch - 5ms/step\n",
"Epoch 5/30\n",
"13/13 - 0s - loss: 1.2770 - accuracy: 0.8200 - val_loss: 1.6117 - val_accuracy: 0.5333 - 57ms/epoch - 4ms/step\n",
"Epoch 6/30\n",
"13/13 - 0s - loss: 1.1068 - accuracy: 0.8400 - val_loss: 1.5176 - val_accuracy: 0.5667 - 58ms/epoch - 4ms/step\n",
"Epoch 7/30\n",
"13/13 - 0s - loss: 0.9601 - accuracy: 0.9000 - val_loss: 1.4477 - val_accuracy: 0.6000 - 59ms/epoch - 5ms/step\n",
"Epoch 8/30\n",
"13/13 - 0s - loss: 0.8390 - accuracy: 0.9400 - val_loss: 1.3751 - val_accuracy: 0.6333 - 55ms/epoch - 4ms/step\n",
"Epoch 9/30\n",
"13/13 - 0s - loss: 0.7391 - accuracy: 0.9400 - val_loss: 1.3201 - val_accuracy: 0.6333 - 56ms/epoch - 4ms/step\n",
"Epoch 10/30\n",
"13/13 - 0s - loss: 0.6566 - accuracy: 0.9600 - val_loss: 1.2794 - val_accuracy: 0.7000 - 57ms/epoch - 4ms/step\n",
"Epoch 11/30\n",
"13/13 - 0s - loss: 0.5912 - accuracy: 0.9800 - val_loss: 1.2360 - val_accuracy: 0.7333 - 57ms/epoch - 4ms/step\n",
"Epoch 12/30\n",
"13/13 - 0s - loss: 0.5323 - accuracy: 0.9800 - val_loss: 1.2235 - val_accuracy: 0.7333 - 57ms/epoch - 4ms/step\n",
"Epoch 13/30\n",
"13/13 - 0s - loss: 0.4822 - accuracy: 1.0000 - val_loss: 1.1919 - val_accuracy: 0.7333 - 56ms/epoch - 4ms/step\n",
"Epoch 14/30\n",
"13/13 - 0s - loss: 0.4357 - accuracy: 1.0000 - val_loss: 1.1519 - val_accuracy: 0.7333 - 54ms/epoch - 4ms/step\n",
"Epoch 15/30\n",
"13/13 - 0s - loss: 0.3958 - accuracy: 1.0000 - val_loss: 1.1277 - val_accuracy: 0.7333 - 57ms/epoch - 4ms/step\n",
"Epoch 16/30\n",
"13/13 - 0s - loss: 0.3631 - accuracy: 1.0000 - val_loss: 1.1117 - val_accuracy: 0.7333 - 57ms/epoch - 4ms/step\n",
"Epoch 17/30\n",
"13/13 - 0s - loss: 0.3344 - accuracy: 1.0000 - val_loss: 1.0957 - val_accuracy: 0.7000 - 56ms/epoch - 4ms/step\n",
"Epoch 18/30\n",
"13/13 - 0s - loss: 0.3089 - accuracy: 1.0000 - val_loss: 1.0740 - val_accuracy: 0.7000 - 55ms/epoch - 4ms/step\n",
"Epoch 19/30\n",
"13/13 - 0s - loss: 0.2829 - accuracy: 1.0000 - val_loss: 1.0683 - val_accuracy: 0.7000 - 55ms/epoch - 4ms/step\n",
"Epoch 20/30\n",
"13/13 - 0s - loss: 0.2635 - accuracy: 1.0000 - val_loss: 1.0488 - val_accuracy: 0.7000 - 54ms/epoch - 4ms/step\n",
"Epoch 21/30\n",
"13/13 - 0s - loss: 0.2447 - accuracy: 1.0000 - val_loss: 1.0453 - val_accuracy: 0.7000 - 61ms/epoch - 5ms/step\n",
"Epoch 22/30\n",
"13/13 - 0s - loss: 0.2274 - accuracy: 1.0000 - val_loss: 1.0327 - val_accuracy: 0.7000 - 57ms/epoch - 4ms/step\n",
"Epoch 23/30\n",
"13/13 - 0s - loss: 0.2122 - accuracy: 1.0000 - val_loss: 1.0217 - val_accuracy: 0.7000 - 55ms/epoch - 4ms/step\n",
"Epoch 24/30\n",
"13/13 - 0s - loss: 0.1985 - accuracy: 1.0000 - val_loss: 1.0131 - val_accuracy: 0.7000 - 54ms/epoch - 4ms/step\n",
"Epoch 25/30\n",
"13/13 - 0s - loss: 0.1875 - accuracy: 1.0000 - val_loss: 1.0078 - val_accuracy: 0.7000 - 54ms/epoch - 4ms/step\n",
"Epoch 26/30\n",
"13/13 - 0s - loss: 0.1751 - accuracy: 1.0000 - val_loss: 1.0015 - val_accuracy: 0.7000 - 57ms/epoch - 4ms/step\n",
"Epoch 27/30\n",
"13/13 - 0s - loss: 0.1657 - accuracy: 1.0000 - val_loss: 0.9918 - val_accuracy: 0.7000 - 57ms/epoch - 4ms/step\n",
"Epoch 28/30\n",
"13/13 - 0s - loss: 0.1569 - accuracy: 1.0000 - val_loss: 0.9861 - val_accuracy: 0.7000 - 56ms/epoch - 4ms/step\n",
"Epoch 29/30\n",
"13/13 - 0s - loss: 0.1478 - accuracy: 1.0000 - val_loss: 0.9845 - val_accuracy: 0.7000 - 57ms/epoch - 4ms/step\n",
"Epoch 30/30\n",
"13/13 - 0s - loss: 0.1392 - accuracy: 1.0000 - val_loss: 0.9797 - val_accuracy: 0.7000 - 58ms/epoch - 4ms/step\n"
]
}
],
"source": [
"c_model = MyModel()\n",
"\n",
"c_history = c_model.fit(\n",
" train_images,\n",
" train_labels,\n",
" validation_data=(test_images, test_labels),\n",
" batch_size=4,\n",
" epochs=n_epochs,\n",
" verbose=2,\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "oXLGIhPJd0KF"
},
"source": [
"Results\n",
"=======\n",
"\n",
"We can finally plot the test accuracy and the test loss with respect to\n",
"the number of training epochs.\n"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 963
},
"id": "fwDEhq0Qd0KF",
"outputId": "ca6d5545-8ad2-49e3-e24d-59d922811c94"
},
"outputs": [
{
"output_type": "stream",
"name": "stderr",
"text": [
"<ipython-input-25-c3ef9ba498fb>:3: MatplotlibDeprecationWarning: The seaborn styles shipped by Matplotlib are deprecated since 3.6, as they no longer correspond to the styles shipped by seaborn. However, they will remain available as 'seaborn-v0_8-<style>'. Alternatively, directly use the seaborn API instead.\n",
" plt.style.use(\"seaborn\")\n"
]
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 600x900 with 2 Axes>"
],
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAk0AAAN5CAYAAAAVZg9XAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAADi+ElEQVR4nOzdd1xT1/sH8E8SIOzlAMUFbkXrBpW6leWuttpq66qjaltHrbXiqta2am3VausotWqrX61aFeveAipaW9zIcCC4AJFNkvv7Iz+iKeuGJATk8369fAk395775EkgD+eee45EEAQBRERERFQkqakDICIiIioPWDQRERERicCiiYiIiEgEFk1EREREIrBoIiIiIhKBRRMRERGRCCyaiIiIiERg0UREREQkAosmIiIiIhFYNBERERGJYPKi6fTp0+jQoQOmTJlS5H4qlQrLly9H9+7d0bZtW4wePRr37t0rpSiJiIioojNp0bRu3TosXLgQtWvXLnbfLVu2YO/evVi7di2OHz+OOnXqYOLEieDSeURERFQaTFo0yeVy7NixQ1TRtG3bNowYMQJ169aFra0tpkyZgujoaPzzzz+lECkRERFVdCYtmt59913Y2dkVu19WVhZu376NJk2aaLbZ2tqidu3aiIyMNGaIRERERADKwJgmMZ49ewZBEODg4KC13cHBAcnJyaLb4aU8IiIiKikzUwegC32LnqSkdEilEgNF84JMJoW9vRVSUzOhVKoM3n5FwTzqjzk0DOZRf8yhYTCP+hOTQycnG1FtlYuiydHREVKpFCkpKVrbU1JSUKlSJdHtqFQCVCrj9TYplSooFHxT64t51B9zaBjMo/6YQ8NgHvVniByWi8tzcrkc9evXx9WrVzXbUlNTcffuXTRv3tyEkREREVFFUWaLpocPH8LPz08zF9PQoUPx66+/Ijo6GmlpaVi6dCkaN26MZs2amThSIiIiqghMenkur+BRKBQAgCNHjgAAIiMjkZubi9jYWOTk5AAAhgwZgsePH2P48OFIT0+Hl5cXVq1aZZrAiYiIqMKRCBXolrLHj58bpV0zMymcnGyQnJzOa856YB71xxwaBvOoP+bQMJhH/YnJYZUqxU9/BJThy3NEREREZQmLJiIiIiIRWDQRERERicCiiYiIiEgEFk1EREREIrBoIiIiIhKBRRMREZWIIABhYTLs2mWG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dXXFunXrCnzs5s2bmq8LmvCSiIiIqDRx4gciIiIiEVg0EREREYnAoomIiIhIBBZNRERERCKwaCIiIiISgUUTERERkQgsmoiIiIhEYNFEREREJAKLJiIiIiIRWDQRERERicCiiYiIiEgEFk1EREREIrBoIiIiIhKBRRMRERGRCCyaiIiIiERg0UREREQkAosmIiIiIhFYNBERERGJwKKJiIiISAQWTUREREQisGgiIiIiEoFFExEREZEILJqIiIiIRGDRRERERCQCiyYiIiIiEVg0EREREYnAoomIiIhIBBZNRERERCKwaCIiIiISgUUTERERkQgsmoiIiIhEYNFEREREJAKLJiIiIiIRWDQRERERicCiiYiIiEgEFk1EREREIrBoIiIiIhKBRRMRERGRCCyaiIiIiERg0UREREQkAosmIiIiIhFYNBERERGJwKKJiIiISAQWTUREREQisGgiIiIiEoFFExEREZEILJqIiIiIRGDRRERERCQCiyYiIiIiEVg0EREREYnAoomIiIhIBBZNRERERCKwaCIiIiISgUUTERERkQgsmoiIiIhEYNFEREREJAKLJiIiIiIRWDQRERERicCiiYiIiEgEFk1EREREIrBoIiIiIhKBRRMRERGRCCyaiIiIiERg0UREREQkAosmIiIiIhFMWjTFx8dj7Nix8PLyQteuXbFkyRKoVKoC9/3111/h6+uLVq1aYejQobhy5UopR0tEREQVmUmLpsmTJ8PFxQVHjhxBcHAwjhw5go0bN+bb79ixY1i5ciW++eYbhIaGomvXrhg/fjwyMjJMEDURERFVRCYrmiIjI3Hjxg1Mnz4ddnZ2qFOnDkaMGIFt27bl23fbtm0YOHAgXnvtNVhaWmLMmDEAgOPHj5d22ERERFRBmZnqxFevXoWbmxscHBw025o2bYrY2FikpaXB1tZWa9+AgADN91KpFI0bN0ZkZCQCAwNFn1MqlUAqlRjmCbxEJpNq/U8lwzzqjzk0DOZRf8yhYTCP+jNkDk1WNKWkpMDe3l5rW14BlZycrFU0paSkaBVXefsmJyfrdM5KlWyL30kP9vZWRm2/omAe9cccGgbzqD/m0DCYR/0ZIocmLV0FQTDKvkRERESGZrKiydnZGSkpKVrbUlJSIJFI4OzsrLXdycmpwH3/ux8RERGRsZisaPL09ERCQgKSkpI02yIjI1GvXj3Y2Njk2/fq1aua75VKJa5du4bXXnut1OIlIiKiis1kRVOTJk3QrFkzLFu2DGlpaYiOjkZwcDCGDh0KAPDz80NERAQAYOjQodi9ezcuX76MzMxMrFmzBhYWFujSpYupwiciIqIKxmQDwQFgxYoVCAoKQseOHWFra4shQ4bg7bffBgDExsZq5mHq1KkTpk6dio8//hhPnz5Fs2bNsHbtWlhaWpoyfCIiIqpAJAJHWBMREREVixM/EBEREYnAoomIiIhIBBZNRERERCKwaCIiIiISgUUTERERkQgsmvQUHx+PsWPHwsvLC127dsWSJUugUqlMHVa507BhQ3h6eqJZs2aaf1988YWpwyrzTp8+jQ4dOmDKlCn5Htu/fz/69OmDli1bYuDAgThz5owJIiz7Csvhzp070ahRI633ZLNmzfDvv/+aKNKyKz4+HhMnToSXlxc6dOiAmTNnIjU1FQBw/fp1DBs2DK1bt0avXr3w888/mzjasquwPN6/fx8NGzbM917csGGDqUMuc27cuIH33nsPrVu3RocOHfDxxx/j8ePHAICwsDAMGjQIrVq1QmBgIPbs2aP7CQTSy4ABA4TZs2cLqampQmxsrNCrVy/h559/NnVY5U6DBg2Ee/fumTqMcmXt2rVCr169hCFDhggff/yx1mPXrl0TPD09hRMnTghZWVnCn3/+Kbz22mtCQkKCiaItm4rK4R9//CEMGzbMRJGVL7179xZmzpwppKWlCQkJCcLAgQOFWbNmCZmZmcLrr78urFy5UkhPTxeuXLkitGvXTjh48KCpQy6TCsvjvXv3hAYNGpg6vDIvOztbaN++vbBq1SohOztbePr0qTBs2DDhgw8+EB4+fCi0aNFC2L59u5CVlSWcPXtWaN68ufDvv//qdA72NOkhMjISN27cwPTp02FnZ4c6depgxIgR2LZtm6lDowpALpdjx44dqF27dr7Htm/fjs6dO6Nz586Qy+Xo27cvGjRoULK/rF5hReWQxElNTYWnpyemTZsGGxsbuLq6YsCAAYiIiMCJEyeQm5uLCRMmwNraGk2bNsXgwYP5O7IAReWRxMnMzMSUKVMwbtw4WFhYwNnZGT179kRUVBT27t2LOnXqYNCgQZDL5ejQoQO6deuG7du363QOFk16uHr1Ktzc3ODg4KDZ1rRpU8TGxiItLc2EkZVPy5YtQ5cuXdCmTRsEBQUhPT3d1CGVae+++y7s7OwKfOzq1ato0qSJ1rYmTZogMjKyNEIrN4rKIQAkJCRg5MiRaNu2Lbp3744///yzFKMrH+zt7bF48WJUrlxZsy0hIQFVq1bF1atX0bBhQ8hkMs1jTZo0wZUrV0wRaplWVB7zzJgxAz4+PvD29sayZcuQm5trilDLLAcHBwwePBhmZurFTmJiYrBr1y74+/sX+jtR1/ciiyY9pKSkwN7eXmtbXgGVnJxsipDKrRYtWqBDhw44dOgQtm3bhsuXL2P+/PmmDqvcSklJ0SrmAfV7k+9L8ZydnVGnTh188sknOHv2LKZOnYpZs2YhLCzM1KGVaZGRkdi8eTMmTJhQ4O9IR0dHpKSkcOxnMV7Oo4WFBVq2bImePXvi+PHjWLt2Lfbs2YPVq1ebOswyKT4+Hp6enggICECzZs3w4YcfFvpe1PV3IosmPQlchcYgtm3bhsGDB8PCwgJ169bF9OnTsW/fPuTk5Jg6tHKL7039dOnSBevXr0eTJk1gYWGBwMBA9OzZEzt37jR1aGXWxYsXMXr0aEybNg0dOnQodD+JRFKKUZU//81j1apVsXXrVvTs2RPm5uZo3rw5xo0bx/diIdzc3BAZGYkDBw4gLi4OM2bMMFjbLJr04OzsjJSUFK1tKSkpkEgkcHZ2Nk1Qr4gaNWpAqVTi6dOnpg6lXHJycirwvcn3pX7c3Nzw6NEjU4dRJh07dgxjx47FrFmz8O677wJQ/47871/yKSkpcHR0hFTKj5+CFJTHgri5ueHJkyf846gQEokEderUwZQpU7Bv3z6YmZnl+52YnJys8+9Evmv14OnpiYSEBCQlJWm2RUZGol69erCxsTFhZOXLtWvX8NVXX2lti46OhoWFhdb1fBLP09Mz37X6yMhIvPbaayaKqPz5/fffsX//fq1t0dHRqFmzpokiKrsuXbqETz/9FN9//z369++v2e7p6YmbN29CoVBotvF9WLjC8hgWFoY1a9Zo7RsTEwM3Nzf22r0kLCwMvr6+Wpd+84rz5s2b5/udeOXKFZ3fiyya9NCkSRM0a9YMy5YtQ1paGqKjoxEcHIyhQ4eaOrRypVKlSti2bRvWrl2LnJwcxMbG4vvvv8dbb72lNYCUxHvzzTcRGhqKEydOIDs7Gzt27EBcXBz69u1r6tDKjZycHHzxxReIjIxEbm4u9u3bh1OnTmHIkCGmDq1MUSgUmD17NqZPnw4fHx+txzp37gxbW1usWbMGmZmZ+Oeff7Bjxw7+jixAUXm0s7PDDz/8gD///BO5ubmIjIzEhg0bmMf/8PT0RFpaGpYsWYLMzEwkJSVh5cqVaNOmDYYOHYr4+Hhs374d2dnZOHnyJE6ePIk333xTp3NIBPbt6SUxMRFBQUE4f/48bG1tMWTIEEyaNInVv44uXLiAZcuW4ebNm7CwsMCAAQMwZcoUyOVyU4dWZjVr1gwANH/F590xkneH3KFDh7Bs2TLEx8ejXr16+Pzzz9G2bVvTBFtGFZVDQRCwZs0a7NixA48fP0aNGjUwY8YMdO3a1WTxlkURERF45513YGFhke+xAwcOID09HXPnzsWVK1dQuXJlvP/++3j77bdNEGnZVlwer127hlWrViEuLg52dnYYPnw43n//fV7m/I+bN29i4cKF+Pfff2FtbQ1vb2/MnDkTLi4uuHDhAhYuXIjo6Gi4ublh2rRp6NWrl07ts2giIiIiEoElKhEREZEILJqIiIiIRGDRRERERCQCiyYiIiIiEVg0EREREYnAoomIiIhIBBZNRERERCKwaCIiEmHnzp1o2LChqcMgIhMyM3UARETFGT58OCIiIjQzdv/X1q1b0bRp01KOiogqGhZNRFQu+Pn5Yfny5aYOg4gqMF6eI6JXQrdu3bB8+XJ89tlnaNu2LVq2bInPP/8cOTk5mn0iIiIwdOhQtG3bFq1bt8aECRNw9+5dzeNPnz7FJ598Ai8vL3h5eWHixImIj4/XOk9kZCTeeOMNNG/eHF26dMGRI0dK7TkSkWmxaCKiV8Zvv/2G9u3bIzQ0FBs3bsSRI0fwww8/AADu3LmDESNGoEuXLjh16hQOHTqE3NxcjBkzBkqlEgAwadIkPHv2DH/99ReOHj0KmUyG8ePH4+UlOjdu3IjVq1fj/PnzaNOmDWbNmqVVmBHRq4uX54ioXDhw4ECBvTpt27bFzz//DABo1qwZ+vbtCwBo3rw5evfujUOHDmHKlCnYunUr3NzcMHbsWEgkElhZWWH69Ono168fLl26BDs7O1y6dAk7d+6Es7MzAODzzz/HxYsXtYqi999/Hy4uLgCAPn36YO/evXj06BFq1Khh7BQQkYmxaCKickHMmKZ69eppfV+zZk0kJiYCUPc01a9fHxKJRPN43bp1AQB3796FjY2N5pg8Li4uCAgI0GqzVq1amq8tLS0BANnZ2bo+HSIqh3h5joheGXmX2fIIgqApkgoqbPIuu0kkEshkMgCASqUq8hxSKX9tElVU/OknoldGXFyc1vd3795F9erVAQDu7u64deuW1vikW7duaR6rU6cOACA6Olrz+OPHj7FhwwY8f/7cuIETUbnAoomIXhn//PMP/vrrL+Tk5ODff//F/v374efnBwAYNGgQ4uPjsXbtWuTk5ODRo0dYsmQJGjVqhBYtWqB+/fpo27Ytli9fjocPHyI9PR3Lli3DH3/8AVtbWxM/MyIqCzimiYjKhcIGggPAhAkTAAADBgzAqVOnMGfOHCgUCvTp0wfjxo0DADRq1AirV6/GDz/8gLVr18LGxgYdOnTA8uXLNZfwfvjhByxYsAABAQGQyWRo3bo1fvrpJ61xUERUcUmEl/uqiYjKqW7duiEgIADTp083dShE9Iri5TkiIiIiEVg0EREREYnAy3NEREREIrCniYiIiEgEFk1EREREIrBoIiIiIhKBRRMRERGRCCyaiIiIiERg0UREREQkAosmIiIiIhFYNBERERGJwKKJiIiISAQWTUREREQisGgiIiIiEoFFExEREZEILJqIiIiIRDAzdQCl6fHj50ZpVyqVwNnZBklJ6VCpBKOcoyJgHvXHHBoG86g/5tAwmEf9iclhlSp24toyZGAVlVQqgUQigVQqMXUo5RrzqD/m0DCYR/0xh4bBPOrPkDlk0UREREQkAosmIiIiIhFYNBERERGJwKKJiIiISAQWTUREREQisGgiIiIiEoFFExEREZEILJqIiIiIRGDRRERERCQCiyYiIiIiEVg0EREREYnAoomIiIhIBBZNRERUIoIAhIXJsGuXGcLCZBAKXkDepLp164ALF8ILfGzQoD7YvXtHKUdUtl26FAEfnzbIzs42dShlEosmIiLSWUiIGby8bNCvnzXGjbNCv37W8PKyQUiImVHON3r0cKxe/b3Wtps3b8DHpw1OnjymtX379q3o188XgiDg2LFQtG3rrdn/woVzRonP2H77bTMUCoWpw6jwWDQREZFOQkLMMHq0JeLitD9C4uKkGD3a0iiFk5dX+3wFz4UL4bCyssaFC+e1tkdEnEO7du0hkUj+E/efiIjQ3rc8SEpKwsqVy6FUKk0dSoVnnD8JiIioXElNBaKiiv87WhCAWbPkUKkkBT6uUknw+edyVK+eDQcHIDVVisI+6+vXV8HeXlx8Xl4dsGlTMJKTk+Hk5AQAiIg4D3//QJw//6KYUigUuHz5Ej75ZBYAwMenDZYuXYGwsDPYtWsHpFIpTpw4im3bdgMAMjIyMHv2DISHh8LBwRGffz4PrVq1KTCGrVs3Y/PmX6BQKODrG4C0tDRIpVJ8/vk8LFo0Dzk52Zg/fzEAIDs7G927d8SKFT+iVas2SElJwdKli3H58iUoFLnw9GyOTz6ZBRcXV02cixZ9g61btyAq6iaqV3fD7Nnz4eLigv79AyAIAvz9u2L69M+QkPAA586FYe3aXzSx9e3ri/HjJyEgoA8WLZoHS0srKJUKHD58EI6OTpgzZwEuX/4b27ZtAQB88MGHCAjoU2zeb9y4hhUrvkVMzG2Ym1ugc+eu+PjjT6BQKNC3ry/mzPkCPj6dNPt/9NEENGniiXHjJuLixQtYu3Y1YmKiYWNjg/7938CIEWMAABs2/ISbN6/D0tIK4eGhOHTopJi3gcmxp4mIqIJLTQVat7aFv79Nsf8CAmyQkFD0R8eDB1L4+lrB2xvo1cuq0LZat7ZFaqq4GJs29YSNjQ0iItQFUk5ODiIj/8HgwUPx+PFDJCYmAgCuX7+KzMxMtGvnrXX8lCkz8NprLTFkyDBNwQQA+/b9iXfeeQ8hIUfRokVLfP/90gLPHxcXi1WrvsMnn8zCnj2HUK9eA5w6dUJc8ABWr/4eGRnp2L59D3bu3A8AWLFimdY+W7b8is8+C8K+fUdQuXJVrF27GpUqVcKGDRsAAH/9dVxUoQMAx44dQseOnbBv32HUrl0bc+fOglKpwK5d+zFo0FtYsWIZVCpVse3MmfMZWrdui5CQo1i37lecPXsau3fvgKWlJbp06YbDh//S7PvsWQouX76EXr388ejRQ8ycOQ39+7+BAweOY9myldi9+w8cOnRAs//Vq5Fo2bI1/vrrWEGnLpNYNBERUZlnZmaGNm3aaS7R/fvvZVSpUhU1a9aCp2dzTTEVEXEejRo1gb29g6h2fXw6oXHjppDL5ejUqRvu3r1T4H6nT59EvXoN0LlzN1hYWKBPn/6oXr266PinT/8MixYtgZWVFaytrfH6611w48Z1rX18fQNQq1YdWFpawsenE+7ciRPd/n/VqFELHTu+DrlcjnbtvJGSkoJ33nkP5ubm6NjxdaSlpSE5OanYdn755Te8++4oyGQyuLq64rXXWmri9vMLxJkzp5CRkQ5AnSMPj7pwd/fAkSMH4e7uAX//3pDJZKhbtx76938DBw/u17QtlcrQv/8bkMlkJX6epY2X54iIKjh7e+DixTRRl+ciI6WYMcOq2P2WLctGx45ypKZmQqksuEdDl8tzgPoSXXDwOgDq4qh167YAgNat2yIi4jx69+6HiIjz8PJqL7rNatXcNF/L5XLk5uYWuN/jxw9RrVo1rW01atQUfZ779+9h1arluHbtKnJysqFUKuHg4Ki1z8tFmKWlpV53sFWt6qL52sLCAo6OjjA3N///7+UA1L11xYmIuIBfflmHe/fuQqlUQqFQoGvX7gCAli1bw9HRCSdPHoe/f2+cOnUcPXv6AwDi4+/jxo1r6Natg6YtQRBQq1ZtrRj/O+6srDNp0RQfH48vv/wSERERkMlk6NSpE2bNmgX7In6K0tPTERgYCG9vb3z11VelGC0R0avL3h5o3br4yzWtWqmwerUq3yDwl7m7qzBihALOznIkJ6ugUBTfrhheXu3x9dcLcedOHC5evIChQ4f/f0xtsWPHNmRmZuLq1UhMmPCh6DbFfmYXNJ2CSlX4HAsvX/pSqVSYMeNjvPZaC/z++044OTlh377dWLt2zX9iKfnFH5VKe+CYVCr5z/e6t33nThyCgj7FpElT0Ldvf8jllvjiiyDNXXwSiQS9evnj8OGD6Ny5Ky5ditCMJZPL5fD27ohvvlleaPvlqYcpj0kvz40fPx729vY4duwYdu7ciaioKHz99ddFHrNy5UqkpaWVUoRERPQyiQSYOzcbUmnBBYNUKmDOnGzRxYguqlZ1gbu7B8LCziAq6qZmwHajRo2RlZWF/fv3wNraBk2aNDX4uStXrozExAStbbGxMZqvLSwskJWVpfk+Pv6+5uukpCQkJiZg0KAhmkHsN2/eLHEsFhZyZGe/OFdaWhqePXtW4vYKc+vWDVhYWGDw4CGQyy0hCAJu3dKO298/EJcuXUBIyF40bdoMVapUBQC4udVATMxtCC9Vm0+fPhHVu1WWmaynKTU1FZ6enpg2bRpsbGxgY2ODAQMGYNOmTYUec+PGDezbtw8DBgzA8+fPdT6nVCrJV30bgkwm1fqfSoZ51B9zaBjMY9H69VNBJsvGvHkWiIl5kSMPDxXmzctB794qo+WwffuO2LVrBzw86qJyZWcAgJmZBVq2bInt239Hu3ZesLDQ/miTySQwM5PC0tISiYkPkJGRprmiIZVKYWYm1eynbi9/zJ06dcb69T8iNPQUOnToiN27dyEp6SkkEnXbtWrVxqlTx5GU9BjW1tbYtm0zZDIZZDIpKld2hpWVFa5du4IGDRrgxIljuH37JtLT05GTkwVra2utONVxSTT5s7S0BAA8eHAPNWrURO3atXHnThzu3ImBm1sNrF+/BtbWNpBK1cdLJBJNXHnP8eXnlfc8ZTJpvuea93qZmUlRo4YbsrOzERMTBVfXati48WdYWFjg6dMnkMnU5/Dw8ECDBo2wfv2P+PjjqZr2/Pz88dNPq7Fp0894++3hePr0CWbMmAo/vwAMHz4CUqkEEknBuTY0Q74XTVY02dvbY/HixVrbEhISULVq1QL3FwQB8+bNw5QpU/DgwYMSFU3OzjZGvX5qb1/8dX4qHvOoP+bQMJjHwg0fDgwbBpw+DSQkANWrAz4+Ukgkllr7GTqHPXt2w2+/bcLIkSPh5GSj2d6p0+tYvPgMJk6cqLUdAGxtLeHkZIO33hqM2bNn4803+yM0NBQymRTW1haa/W1t1bH/93gAaNeuJT777DN8++03WLAgDf3790fnzp0gl5vByckG7777Ni5fjsBbbw1E1apVMXv2bJw6dQJ2dpaoUsUB8+fPx5IlS7Bu3RoEBgZizZrVGDZsGN58sz/Onj2rFScA2NjIIZVKYG9vhcaNG6Nly5YYNWo4pkyZgvfeew+hoScxduxI2NraYsqUKfj3379hYyOHk5MN5HIzAEpNW9bWFpDJpJrvk5LUr4mDg1W+52pn9yIHnTp1wDvvvIMPPngfVlZWmDBhAgICfDFhwgQsWDAb3333HQBg0KCB+OqrrzBgQF/Y2dlojl+zZjW++eYb/PLLBjg7O6Nfv36YOHE8ZDIZrKwsYGYmKzDXxmKI96JEEMrGxPeRkZEYNmwY1qxZgw4dOuR7fOvWrfjzzz/x22+/YdWqVYiPj9d5TNPTp2lG62myt7cqcsAjFY951B9zaBjMo/4qQg5nz54JCws55syZb7RzlIc8rlu3BvHx8Zg3b6GpQymQmByKLd7KxN1zFy9exIQJEzBt2rQCC6anT5/i+++/xy+//KJXT5FKJRQ5cK8kBAEIDZXi+XPAzg5o21ZllGv5FYlSabiBoxUVc2gYzKP+XuUcCoIAQRBK5fmV1TxeuRKJbdu2YtWqtWUyvpcZIocmL5qOHTuGTz75BEFBQejfv3+B+3z11Vfo378/GjZsWLrBFSMkxAzz58tfuovECnXqqDB3bjYCA7lGEBERvbqmTp2M6OhbmDTpY9SrV9/U4ZQKk16eu3TpEsaNG4fly5fDx8en0P0aNmwIe3t7zWC2rKwsqFQqWFtb49w58YsvPn6s+ziowuStvVTQUgJSqYANG7JYOOnIzEx9zT05Ob3M/8VSVjGHhsE86o85NAzmUX9iclilip24tgwZmC4UCgVmz56N6dOnF1gwvffee3jrrbcQEBCAkye116QJDg5GYmIiPvvss9IKV4sgAPPnF7320oIFcgQEKHipjoiI6BVhsqLp8uXLiI6OxsKFC7FwofbgsQMHDuDevXuaeSdcXV21Hre1tYWVlVW+7aUlPFxW5MRuABAbK8W5czJ4e3NVaiIioleByYqmNm3aFDm517FjhS/gN3nyZGOEJFpiorjuI7H7ERERUdnHmdtKwNVV3DAwsfsRERFR2ceiqQS8vZWoU6foAXnu7ip4efHSHBER0auCRVMJmHLtJSIiIjINFk0lFBiowIYNWXB31+5xqlxZxekGiKhCEAQBYQ/OYlfUDoQ9OIsyssCElm7dOuDChfACHxs0qA92795RyhFVLK9ajlk06SEwUIHw8HTs25cJBwf1tv79FSyYiOiVFxKzF15bWqDfbn+MOzwK/Xb7w2tLC4TE7DXK+UaPHo7Vq7/X2nbz5g34+LTByZPaNw5t374V/fr5QhAEHDsWirZtvTX7X7ggfm4/fcTH38fx40dK5Vy6unjxAm7cuGbqMMolFk16kkiADh1UaNdO/f2NG0wpEb3aQmL2YvTB4YhLjdXaHpcai9EHhxulcPLyap+v4LlwIRxWVta4cOG81vaIiHNo1659vmW3QkL+RESE9r7GcvLkcZw4cbRUzqWrbdu2sGgqIX7CG0izZur/r12Togz2UBMRFSk1+xkuPrxQ7L+IxPOYdfoTqISCb4ZRCSp8fnoGLiScx7n75xCRWHhbqdnPRMfn5dUBt29HITk5WbMtIuI8/P0DtQohhUKBy5cvwcurPQDAx6cNwsNDsXz5N9i1awe2bt2Mt97qr9k/IyMDs2fPQI8ePnjjjd64dClC81hMTDQ+/HA8/Py6IDCwO5YuXYzs7GwAwIYNP2Hs2BFaMfbt64v9+/fit9824ccfV+L48aPo1q0DlMr8NwVFRd3CiBFvo1u3jhg7dgT27t0NH582AIBLlyLg49NGcy5AvTjwokXzNN9v27YFb77ZDz17vo533hmk1du2aNE8LF/+DVau/Bb+/t3Qu3cPbNmyEQDw6adTEBp6BsuXL8FHH01AQsID+Pi0wZ07cZrj16xZiUmTxmpi6dWrM86cOYlBg/qgZ89OWLduDW7cuIb33huKnj1fx6xZn0ChKP4KS3Z2Nr7+eiH69fNFr16d8cEHYxATcxsAsHjxAnz++Sda+x84EIKBAwOhUqmQmvoMCxYEoV8/X/Ts2QkzZ07F48ePAEDzHHbt2gF//244fPhAsbGUlMnXnntVNG+u/j8pSYpHjyRwcWHlRETlQ2r2M7Te3AzPslMM0t6D9Hj4bu9W7H4OckdcHBYJe7lDsfs2beoJGxsbREScQ8+efsjJyUFk5D+YNm0mQkL2IDExEa6urrh+/SoyMzPRrp231vFTpsxAdPRtNG3aDBMmvJjrb9++PxEUtABBQV/gm28W4vvvl2Ljxq3IycnB1KmT4OcXiCVLvsOTJ0/w6adTsGHDj/jgg4+KjPXtt4cjNjYaOTnZmD9/cYH7LFnyJWrXroPVq9fj4cNEzJs3q9gc5Ll8+RJ++ukHrF//K9zd6+Kvv/Zh/vwg/PFHSzg5OQEAjhw5iEmTpmDv3kM4eHA/vvlmEXx9A/H118sxaFAfDBv2Hvr3H4SEhAfFni8rKxMREeexefN2nDhxFIsWzUN0dBS++241nj9PxYgRQ3HmzEl06dK9yHZ+++1XXLt2BZs2/Q9WVtb49tuvsXDhPPz882b4+QVi2rTJSEtLg62tLQDg5Mlj6NGjF6RSKRYtmgeZzAybNm2HTCbF0qVf4csv52P58h807f/990Xs2LEH1tY2onOpK/Y0GUheTxMAXL3KtBIRGZKZmRnatGmnuUT377+XUaVKVdSsWQuens0REaHeHhFxHo0aNYG9ffGFGAD4+HRC48ZNIZfL0alTN9y9ewcAEB4eiqysTIwaNRZyuSXc3Gpg4MA3cfToYb2fy9OnT3Dt2hUMG/YerK2t4e7uAX//3qKPb968Bf788yA8POpBIpH8fxGZjdjYaM0+1aq5wd+/N8zMzNC9ey8olUrcu3enRPGqVCoMHDgYlpaW6NixEwRBQJcu3eHk5IRatWqjVq06uHfvXrHtDB8+EmvWbIC9vQPMzc3RtWsPREdHQaFQoEWLVqhUqTJOnFCPA8vMzMT58+Ho2dMfyclJOHv2NMaNmwh7e3vY2Nhi/PhJuHDhHJ4+faJp388vEDY2tvkuyxoSe5oMpEkT9VQDKpUE165J0a0b52giovLBXu6Ai8MiEZVyq9h9Ix//ixmnphS737Ku36OjhxdSn2dCqSz4Ul59xwaiepnyeHl1QHDwOgDq4qh167YAgNat2yIi4jx69+6HiIjzmktzYlSr5qb5Wi6XIzc3FwCQkBCP6tXdYGFhoXm8Ro2aePgwESqVfgvn5l1WcnWt/lLbtUQfr1Kp8Msv63D8+FGkpLy4XJmTk6P5ulq1F21bWloCgNblPl1VrapetiwvH1WqVNU8ZmFhgZyc4ttOTk7Cd98tweXLl5CRkQFBEKBUKqFUKmFmZoZevfxx6NAB9O7dH+HhZ1G9uhvq12+AK1ciAQAjR76t1Z5MJsOjRw/h6KjuXSuNpdVYNBmIpSVQt66AqCgJrl+XAcg1dUhERKLZyx3Q2qVtsfu1qtoGqy+vyDcI/GXuDh4Y4TkKzs62Ra4srysvr/b4+uuFuHMnDhcvXsDQocPVMbVqix07tiEzMxNXr0ZiwoQPRbdZWKdETk7Bv8OL6sVQqcT9sVzQ1AxCIWPEXrT94vHg4HU4duwIvv76W9Sr1wCCIKBzZy+t/aXSkve2FFQU/vd5l6Q3Z+7cWbCwsEBw8G+oWtUFERHn8fHHH2ge9/MLxKZNwXjy5DFOnTqBXr38AaiLWQDYtWs/HBwc87Wbd4lRJjN+ScPrSAbUtKn6jXbtGtNKRK8miUSCuR0WQiop+PecVCLFnPZfGOUSSdWqLnB390BY2BlERd1Eq1bqgdONGjVGVlYW9u9Xj2dp0qSp3udyc6uBBw/iNT1PAHDnThyqVasOqVQKCws5srOzNI+lpaVpFpkvTuXKVQAAiYkJmm0xMS8urVlYqIuEl9u/f/++5uvr16/Cx6czGjRoBKlUilu3buj47F7I6znKynpxrvj4+4Xtrpfr16+ib9+BqFrVBQDyxV2zZi00btwUBw/uR2joafTsqS6a8nIeHX1bs69CocCTJ4+NEmdR+OluQE2aqIumqCgpctnRRESvqECPPtjguwnuDh5a290dPLDBdxMCPfoY7dxeXh2wc+d2uLt7wNHREYB6vFOLFi3xv//9jrZt20EqLfijTS63RELCA6SmphZ7Hm/vDjAzM0Nw8Drk5OTg7t04bN/+u2bsUc2aNXHnThxiYm4jOzsL69athrW19UvnkuPhw4d4/vx5vjvLqlSpivr1G+D33zchMzMTcXGxOHToL83j1atXh0wmw/HjR6FQKLBr1y48epSoedzVtRpu376FrKwsxMbGYMuWjbC1tcWTJ49E5VAulyM+Ph5paWlwdHSCra0tTp48BqVSifPnw3H1aqSodnTl6loN165dgUKhQHh4KM6fV086+nLx4+cXiF9//Rn16jXQXG6ztbVF9+69sGbNCjx69BDZ2Vn48cdV+PjjiaU+oSqLJgPK62nKyZEgOpqpJaJXV6BHH4S//Tf+7P8X1vYMxp7+BxD+9t9GLZgA9SW6Bw/i0aqV9qXE1q3bIj7+Pry8OhR6bEBAH4SHh2Lo0AEFTgPwMmtra3zzzXe4fPkS+vTpiWnTPoKvbwCGDx8JAPDx6YwuXbpj/PjRGDJkIBo1agJX12qa43v29MO9e3cwaFBvPHnyJF/7QUELcPfuHfTu3QOLFs3FG2+8pXnM2bkSxo+fjHXr1sDPrxuuX7+OHj16aR5/991RUCqVCAzsji+/nIdRo8bB378Pli9fgjNnThadQAB9+vTHzp3/w6RJYyGTyTB16kz89dc++Pl1+f/b/AcX20ZJTJ06AydPHoe/fzfs27cb8+d/iSZNPDF69DAkJT0FAHTv3gs5OTno2dNP69gpUz6Bm1tNDB/+Jvr180dcXAy++mqZUQd9F0QilMV5743k8ePnRmnXzEwKJycbXL6cgZYt1X9p/PRTJgYM4MzgusjLoyHHQFQ0zKFhMI/6Yw51Ex4eiunTP8SZMxFa2ytaHuPj72PkyHewa1cIbGxsDdKmmBxWqWInqi12hxhQzZoCbG3VNSjHNREREYmXlpaGJUu+RP/+Aw1WMBkaP9kNSCoFGjVSV7HqO+iIiIioOIcOHUD//n5wcHDEqFHjTB1OoTjlgIE1aaJERISMPU1ERCSat3eHfJfmKpJevfzQq5df8TuaGD/ZDSzvDrr796UQcYMGERERlRMsmgwsr2gCgGvXeImOiIjoVcGiycAaN35xGysv0REREb06+KluYA4OgJtb3mBwppeIiOhVwU91I8i7RMfLc0RERK8OFk1GkHeJ7vp1KSrO1KFERESvNhZNRpDX05SWJsG9e6U7xTsREREZB4smI2jc+MUddBzXRERE9GrgJ7oR1Kungrl53nIqHNdERET0KmDRZATm5kD9+ryDjoiI6FXCT3QjeXEHHVNMRET0KuAnupE0aaK+gy46WoqsLBMHQ0RERHpj0WQkeT1NSqUEUVFMMxERUXnHT3MjeXkNuqtXmWYiIqLyjp/mRuLiIsDJSX0H3fXrvIOOiIiovGPRZCQSyYtxTRwMTkREVP7x09yI8ia55LQDRERE5R8/zY0ob1zTo0dSPHnC5VSIiIjKMxZNRpS3cC/A3iYiIqLyzqSf5PHx8Zg4cSK8vLzQoUMHzJw5E6mpqQXue+jQIfTt2xctW7aEr68v/ve//5VytLpr2FAFiSRvORUWTUREROWZST/Jx48fD3t7exw7dgw7d+5EVFQUvv7663z7/fvvv5g+fTo+/PBDXLhwAbNmzcKCBQsQERFhgqjFs7UFatfOu4OORRMREVF5ZmaqE6empsLT0xPTpk2DjY0NbGxsMGDAAGzatCnfvikpKRg3bhx69OgBAOjcuTMaNGiAiIgItGnTRvQ5pVIJpFLDjy2SyaRa/7/M01OFuDgprl+XwcyMhVNRisojicMcGgbzqD/m0DCYR/0ZMocmK5rs7e2xePFirW0JCQmoWrVqvn07deqETp06ab5XKBR4/PgxXFxcdDqns7MNJBLjDci2t7fKt61VK2DfPuDGDRns7W0g45RNxSooj6Qb5tAwmEf9MYeGwTzqzxA5NFnR9F+RkZHYvHkz1qxZU+y+S5cuhbW1NQICAnQ6R1JSutF6muztrZCamgmlUqX1mIeHDIAlMjOBS5cyUK+eYPDzvyqKyiOJwxwaBvOoP+bQMJhH/YnJoZOTjai2ykTRdPHiRUyYMAHTpk1Dhw4dCt1PEAQsXboU+/btw6+//gq5XK7TeVQqASqV8YoWpVIFhUL7BWnU6MX5IiMlqFNH+d/D6D8KyiPphjk0DOZRf8yhYTCP+jNEDk1+kfTYsWMYO3YsZs2ahXfffbfQ/VQqFWbOnIljx47h999/h4eHRylGWXK1awuwsuIddEREROWdST/FL126hE8//RTff/89+vfvX+S+X375JaKiovD777+jZs2apROgAchkQKNG6sqWRRMREVH5ZbJPcYVCgdmzZ2P69Onw8fHJ9/h7772H/fv3A1BfvtuzZw/Wrl0LR0fHUo5Uf3mTXHLhXiIiovLLZGOaLl++jOjoaCxcuBALFy7UeuzAgQO4d+8enj17BgD4448/8Pz5c3Tt2lVrv7Zt2+Lnn38utZhLKm85lbg4KdLS1PM3ERERUfkiEQShwtzO9fjxc6O0a2YmhZOTDZKT0wscZHb6tAxvvGENAPjrr3S0bs3BfAUpLo9UPObQMJhH/TGHhsE86k9MDqtUsRPXliEDq4gEQUBo/Bk8j0+GHZzQtmr7fHNBNW784kW6dk3GoomIiKgcYtGkh5CYvZgfOhtxqbGabXXs3TG3w0IEevTRbKtcWUDVqio8eiTlcipERETlFD/BSygkZi9GHxyuVTABQFxqLEYfHI6QmL1a2/PGNfEOOiIiovKJn+AlIAgC5ofOhkoo+DKbSlBhQVgQXh4ulneJ7vp1GSrOKDIiIqJXB4umEghPCM3Xw/Rfsc9icC4hTPN9kybqaQeSkyVITDTe+ndERERkHCyaSiAxPUHn/fIuzwG8REdERFQe8dO7BFxtqum8X4MGKshkecupcJJLIiKi8oZFUwl4V+uAOvbuRe7j7uABr2rtNd/L5UC9ehwMTkREVF7x07sEJBIJ5nZYCKmk4PRJJVLMaf9FofM1cdoBIiKi8oef3iUU6NEHG3w3wd3BI99jXWp205qnKU/euKaoKClyc40eIhERERkQiyY9BHr0Qfjbf2PfGwew9Y2t/9fefcdHVaV/HP/cmfSQAKF3QlW6UkICCrirIB07q2DBguWni6i4oiIIoiusqyuoIDawIyhVFF0EIRRFlA6GhBpCSwikz8z9/ZElGkiZzEwyM+H79uUrZObMnWee3Mk8Oefcc+jT6CoA4o+s5VT2yQvan9u4Ny/P4PfflXoRERF/ok9uNxmGQVyDntzc7mae65m/8XCWLYv3ts25oK2uoBMREfFf+uT2oPa1OnBFw94AzNk6i2xbdqH7GzY0iYjIv4JO85pERET8iz65PezBTv8HwPGsY3yx57NC9xnGH0N0WnZARETEv6ho8rA+jf7KJVGXAvDGr/+5YKsVXUEnIiLin/TJ7WGGYXB/x/zepj2pu/n+wLeF7j83r+nwYQtpaRUdnYiIiLhKRVM5uK7VjdQOqwPAG1teL3TfnyeD79ypIToRERF/oaKpHARbg7m7/X0ArDn8A78d31Jw37k5TaAr6ERERPyJPrXLye1t7yIsIAyAmVv+U3B7ZCQ0aqTtVERERPyNPrXLSfWQKIZfehsAX/2+gMNnDhXc98dkcA3PiYiI+AsVTeXo3g4PYDEs2E07s357o+D2Nm3yh+h27rTgcBT3aBEREfElKprKUXTVZvSPzt+Dbu6O90jPOQ380dOUkWFw8KBR7ONFRETEd6hoKmcP/G+xy7N5Z5i38wPg/O1UNEQnIiLiD1Q0lbMudbvRtW4MALN/e4M8ex7NmjkICtJ2KiIiIv5En9gV4IFODwNw+OwhFiUsJDAQWrXSFXQiIiL+RJ/YFaBf0/40jYwG4I1fX8c0TW2nIiIi4mf0iV0BrBYrozs9BMBvx7ew9siagivoEhIsZGV5MzoRERFxhoqmCnJL61upHlwdgJm/vFbQ0+RwGOzZox+DiIiIr9OndQUJCwzjznZ3A7DywDeENNpRcJ+G6ERERHyfPq0r0J3t7yXIEgTAZwf/Q40a+b1N27dr2QERERFfp6KpAtUJq8ONrW8BYP6eT2je8QigniYRERF/oE/rCja6Y/6E8FxHLnmXzQS07ICIiIg/0Kd1BWsddQl/bXwNALsj34LATE6csHDsmLZTERER8WUqmrzggcvyF7vMNE9Bp/cADdGJiIj4On1Se0GP+lfQvmbH/G9i/wWGXUWTiIiIj9MntRcYhlGwkS9RCdB6kTbuFRER8XEqmrxkcPNh1A9vkP9N3DT1NImIiPg4r35SHz58mAcffJCYmBji4uJ48sknSU9PL7LtsmXLGDRoEJdddhnXXXcdP/74YwVH61mB1kDu7fhA/jeN17E99C3m75pP/JG1mKbp3eBERETkAl4tmkaPHk1kZCTff/89CxYsYO/evbz00ksXtNu5cyfjxo3jscceY/369dxxxx089NBDHD161AtRe85tl44kkBAAbP0e5IHv72LIl9cS82Enlu5b7OXoRERE5M8CvPXE6enptGvXjrFjxxIeHk54eDjDhg1j7ty5F7T9/PPP6dWrF7169QJg8ODBzJs3j0WLFnHvvfc6/ZwWi4HF4vlL+61WS6Gvzlq3fw155Fxwe1J6Ind9PYL3B8xjYPPBHonRH7iaR/mDcugZyqP7lEPPUB7d58kceq1oioyMZOrUqYVuS05Opnbt2he03b59e0HBdE6bNm3YunVrmZ4zKiocwyi/9ZAiI0OdbmuaJk98+wxQ9FCciYNx3z7LbZ1vKdeYfVFZ8ihFUw49Q3l0n3LoGcqj+zyRQ68VTefbunUr8+bN44033rjgvrS0NKpWrVrotqpVq/L777+X6TlOncoot56myMhQ0tOzsNsdTj1m7aEfOZqbUGKb5NzfWbbtW+Ia9vBEmD7PlTxKYcqhZyiP7lMOPUN5dJ8zOaxePdypY/lE0fTzzz9z//33M3bsWOLi4ops44nJ0Q6HicNRfpOs7XYHNptzJ/Wqzc7Nx/ph81G61b243ihlyaMUTTn0DOXRfcqhZyiP7vNEDr0+SPr9999z77338tRTTzFy5Mgi21SvXp20tLRCt6WlpREVFVUBEZaT9PrOtTvjZDsREREpV14tmjZv3sy4ceN49dVXGTp0aLHt2rVrx7Zt2wrdtnXrVjp27FjOEZafKxrHwanmJTc62YKejWMrJiAREREpkdeKJpvNxtNPP81jjz1Gz549L7j/9ttvZ9myZQDcdNNNrFu3jlWrVpGTk8P8+fNJSkpi8GD/vbIsNtZBrS0vgaOYH4HDQu3fXqR7d3XHioiI+AKvFU1btmwhISGByZMn0759+0L/Hz58mIMHD3L69GkAWrVqxbRp05g6dSqdO3dm3rx5vPXWW9SqVctb4bvNMOCfd/bH+PxzONniwgZ7+9O38SAusgvnREREfJZhXkTLTx8/fqZcjhsQYKF69XBSUzPKPMls6dIAJk4KIsmxFqokQ5c3IXoV5IVg/CeBuTOrcc019nKJ29e4k0fJpxx6hvLoPuXQM5RH9zmTw1q1Ipw7licDk7IbMMBG//421q/vQkqKQU7VZjy8MwYzMBsz9mXuvfdffPllJp066c0iIiLiTV6/ek7yh+piY+0MHWrj5j6XMLj5sPw7urxJpuUot94ayoEDGqcTERHxJhVNPmhs13EYGBCYDT1f4vhxC8OHh3LeqgsiIiJSgVQ0+aBLoi5lSIv83iZrzJsQcYS9e63cfnsoORduVSciIiIVQEWTjxrb5UkMDOxGDm3ufQGA+PgAHnkkBIemN4mIiFQ4FU0+qnXUJQxtcR0ACdXepteg/QAsWBDI1KlB3gxNRETkoqSiyYc92iV/blOOPYemt06lU6f8pQdefTWY998P9HJ0IiIiFxcVTT6sddQlDGt5PQCf7H2P6bMTaNw4f2xu3LhgVq60ejM8ERGRi4qKJh/3aOc/eps+OjCdjz/Oolo1E4fD4O67Q/n1V/0IRUREKoI+cX1cq6jWDGt5AwBzt79HlXqH+OCDLIKCTDIzjYI1nOLjrSxcGEB8vJWLZ413ERGRiqOiyQ+M7TIOi2Eh15HLq5un0727nddfzwbg2DELsbHhDBkSxn33hTJkSBgxMeEsXarF3kVERDxJRZMfaFm9FcNa5Pc2zdvxPkfOHmboUBs33pgHQF5e4dXCk5IsjBoVosJJRETEg1Q0+Ynze5tMEzZtKn4iuMNhMGlSsIbqREREPERFk59oUb0l17W8EYAPd3zA4tXJJCWV/ONLTLSwYYOusBMREfEEFU1+ZGyXJwp6m+YmTnfqMUePaqNfERERT1DR5EeaV2vJ9S1vAmBt1nsQebDUx9Stq/E5ERERT1DR5Gce7fI4FsOCzcwlov8LJbaNjnYQE2OvoMhEREQqNxVNfqZ5tZbc0OpmADIvmYNRbX+R7SwWk2efzcHQ6JyIiIhHqGjyQ492zu9tspNH76cnEx3tKHR/zZoO5szJZsAAm5ciFBERqXxUNPmhZtVaFPQ2/Zj5Pp9/u5OvvsqkevX84qlvX5sKJhEREQ9T0eSnHu3yBFbDSp4jj9c2/4vYWDtXXpk/f6mk9ZtERETENSqa/FSzqs0Leps+2vkBX/2+gJAuH0OT1ezZYyE11csBioiIVDIqmvzYmC6PY8GCzbRxzzd38Kn9drizFzzckjdWLfV2eCIiIpWKiiY/tvPkDkyKWIcpKoFXj9zK0n2LKz4oERGRSkpFk58yTZOJ654uumgCTMPBpPhnMLX5nIiIiEeoaPJT65PXkZSeWGKbxNP72JAcX0ERiYiIVG4qmvzU0Yxkj7YTERGRkqlo8lN1w+t5tJ2IiIiUTEWTn+peL46mkdEltgnPbkFMvdgKikhERKRyU9HkpwzDYELcZCxGMT9Ch4XAVS8C2nxORETEE1Q0+bEBzQYxp+9coqs2u/DOE61IW38dhw6paBIREfGEAG8HIO4Z0GwQ/aMHsj55HSkZR1l7ZA3vb38Hau+ClsvZuLEPjRppHzoRERF3qaepEjAMg9j6PRja8nomxr3wx+Tvv/yDjZvU0yQiIuIJKpoqmbDAMB7r8mT+N3V/49vk+d4NSEREpJJQ0VQJDb/kNqLMFgAcajmBU6dzvRyRiIiI/1PRVAkFWgO5u9mz+d9E7ePl7z7wbkAiIiKVgIqmSuqB3oMxki8H4JPklzibd9bLEYmIiPg3rxdNa9asIS4ujjFjxpTYLjs7m0mTJnHllVdy+eWXc+ONN7Ju3boKitL/hIVaaLF/MgAZRgqzf33DyxGJiIj4N68WTbNnz2by5Mk0adKk1LavvfYaP/30E5999hkbN25k2LBhPPDAA5w8ebICIvVPf212FST2AeD1La9yKlu5EhERcZVX12kKDg5m/vz5TJkyhZycnBLbbt++nSuuuIK6desCcP311zNx4kQSExOpUaOGU89nsRhYLJ6/BN9qtRT66itiu5u88Y+pcE93zuSm8/qWfzOp5xRvh1UsX82jP1EOPUN5dJ9y6BnKo/s8mUOvFk0jR450um2fPn349NNPufnmm6lTpw7z58+ndu3atGnTxuljREWFYxjlt25RZGRouR3bFddcA4yMgR3XQZsFzP71Tcb1eoyGkQ29HVqJfC2P/kg59Azl0X3KoWcoj+7zRA79ZkXwO+64g507d3L11VcDUK1aNWbMmEFYWJjTxzh1KqPcepoiI0NJT8/Cbnd4/PiuCgqC6OhQEr+fjHHpl+TYc3jqm2d49S+vezu0IvlqHv2JcugZyqP7lEPPUB7d50wOq1cPd+pYflM0zZw5k127drF8+XLq1avHsmXLGD16NIsWLaJ+/fpOHcPhMHE4zHKL0W53YLP51kndtaudxM8uJWzv7WS0epcPd3zA6A4P0bJ6K2+HVixfzKO/UQ49Q3l0n3LoGcqj+zyRQ78ZJJ07dy533303zZo1IzQ0lOuvv56GDRuyYsUKb4fm07p2tQOQsfQ5gizBOEwHL26c7OWoRERE/I/fFE0OhwO73V7ottxcrXRdmm7d/pez043pHXYfAIsTvuSXlJ+9GJWIiIj/8dmiKSUlhX79+nHw4EEArrrqKt5//30OHjxIbm4uX375JQcOHKBXr15ejtS3tW7tIDIyf0iyXsI4qgRGADBlwyRvhiUiIuJ3vDqnqX379gDYbDYAVq5cCcDWrVvJy8sjMTGxoDdp/Pjx/Otf/+K2227jzJkzREdHM2PGDJo1a+ad4P2ExQJdutj5/vsAtm2sw4ODHualjVNYfei//HDwv/Rq1MfbIYqIiPgFwzTN8psZ7WOOHz9TLscNCLBQvXo4qakZPjlR71//CuLFF4MJDDT5dedRrvyiAyeyTtCp1mWsuGFVuS7DUBa+nkd/oBx6hvLoPuXQM5RH9zmTw1q1Ipw6ls8Oz4nnnJsMnpdn8PuOqjza+QkAthz/hSX7FnkzNBEREb+houkicNlldqzW/A7FjRutjGh7J40j8reumbphEjaHzZvhiYiI+AUVTReBKlWgbdv8LslNm6wEW4N5ottTAPyetpdPd33kzfBERET8gstFU3p6esG/MzIyWLlyJb///rtHghLPO7f0wKZNFkwTrm95E5dG5W9B8/KmqWTZsrwZnoiIiM9zqWhauXIlffrkX3WVm5vLTTfdxOOPP87QoUNZtmyZRwMUzzg3r+nUKQsJCQZWi5Wnuk8A4EjGYSasHc/CvfOJP7KWi+jaABEREae5VDTNnDmTCRPyP3C//vprzp49y5o1a5g1axZvv/22RwMUzyhY5JL8ITqAa5r0o0W1lgC8t/1t7vv2LoZ8eS0xH3Zi6b7FXolTRETEV7lUNCUlJTFw4EAAfvjhBwYMGECVKlWIjY3lwIEDHg1QPKNBA5P69fPnNW3cmF80LUtcwr60hAvaJqUnMmrFCBVOIiIif+JS0RQUFITNZsPhcLBhwwZ69OgBQE5OjoZ2fNi53qaNG62YpsnEdU/joOg1Kxymg0nxz+jnKSIi8j8urQh++eWXM2HCBAIDAzFNk27dugHwySef0KpVK48GKJ7TtaudL78MZO9eK9/sXkdSemKJ7RNP72NDcjzd68dVUIQiIiK+y6WepvHjx3P8+HF2797NtGnTCAwM5NSpU8yYMYPHHnvM0zGKh/x5XtP67SlOPeZoRnJ5hSMiIuJXXOppatCgwQUTvqOioli9ejWhoaEeCUw8r00bB2FhJpmZBim/NwAnVo2vG16v/AMTERHxAy71NJ09e5ZXXnml4PvPPvuMIUOGMH78eFJTUz0WnHhWYCBcfnl+b9Ohdb1oGhldYvvoqs2IqRdbEaGJiIj4PJeKpilTprBp0yYAEhISmDRpEldddRU5OTm89NJLHg1QPOvcek1bfgng6W6TsRjFnwLjYyb4zGa+IiIi3ubS8Nzq1atZuHAhAEuWLKFHjx488sgjpKWlMWjQII8GKJ51bl5TdrZBw7NDmNN3LpPinyHx9L4L2mo+k4iIyB9c6mnKzMykdu3aAMTHxxesDl6tWjXOnDnjuejE47p0KbzI5YBmg1j/t1/4auhyZl39Ll8OWUbHmp0AmPbTi5zKPumlSEVERHyLS0VTnTp12LVrF0lJSWzdupWePXsCsG/fPiIjIz0aoHhW1apwySV/rNcEYBgGsfV7MLTl9cQ16MnkK/4JQFpOGtM2vei1WEVERHyJS0XTiBEjuOmmmxgyZAh9+/alYcOGnDlzhkceeYT+/ft7OkbxsHPzmjZtslLU2pUx9bozpPl1ALy77W32nNpdkeGJiIj4JJfmNN166620bduWM2fO0L17dwDCwsIYMGAAd999t0cDFM/r2tXO3Llw9KiFgwcNGje+sHJ6JnYiXyctJceew3PrxvPRwPleiFRERMR3uNTTBNCpUydatmzJL7/8wqZNmzh16hSjR48mIMClOkwqUFGb956vcWQTRnd8CICVB77h+wMrKyQ2ERERX+VS0XTq1CnuuOMO+vTpw8iRIxkxYgRXXnklDz74IFlZWZ6OUTwsOtqkZs3Cm/cW5ZHLH6VWaP6E/wlrn8LmsFVIfCIiIr7IpaJp6tSppKen8/rrr7NixQqWL1/Ov//9bw4dOsSrr77q6RjFwwzjj3lNJRVNVYIieCrmWQB2p+7igx3vVkh8IiIivsilounHH3/k9ddf5y9/+QtNmjQhOjqavn378tprr7FypYZx/MG5omnnTgslrRJxyyW30q5mBwD+uXEKp3PSKiA6ERER3+NS0ZSbm1uwTtOfNWjQQNuo+Ilz85ocDoOffy6+t8lqsfJ8j6kAnMo+xfSf/lkh8YmIiPgal4qmpk2bsnz58gtuX7ZsGY0aNXI7KCl/HTo4CArKv2quuMng5/RocAX9o/NXep+z9S32pf1e7vGJiIj4GpcudRs9ejQPP/wwX375Ja1atQJg9+7drF+/nhdeeMGjAUr5CAmBjh0dbNpkLXFe0zkT4p7n2/1fk+fI47n4Z/jg2o8rIEoRERHf4VJP09VXX837779PeHg48fHxrFq1iuDgYN58802GDh3q4RClvJyb1/Tzz1bs9pLbRldtxj0d7gfg68SlrDn0Q3mHJyIi4lNcXlSpW7dudOvW7YLbY2NjiY+PdysoqRjdutmZORPOnjXYudNCu3aOEts/2vlxPtv9ESeyTvDM2n/w3Y1rsFpK76USERGpDFxe3LI4GRkZnj6klJPzN+8tTWRwVZ7oOh6AHSe38dGuueUWm4iIiK/xeNFkGIanDynlpHZtk+jo0he5/LPb2tzOpVFtAJi64XnO5KaXW3wiIiK+xONFk/iXc0sPONPTBBBgCWBij/zJ/ieyjvPvn6eXW2wiIiK+REXTRe7cZPADByykpDjXS9i70VVc06QfAG/9OoP96UnlFZ6IiIjPKNNE8LFjx5baxmbT/mT+5M+b927caGXQIOd+fs/FTeH7gyvJdeQyKf5Z5vT9oLxCFBER8QllKpqOHTtWapvLL7/c5WCk4rVq5SAy0iQ93eCjjwKpWdOke3c7pU1Na1G9JXe1u4dZv73B4oQviT+8Fgw4mpFM3fB6dK8Xp/ltIiJSqZSpaJo7V1dLVTbLlweQl5f/7+++C+C77wJo2tTBhAk5DBhQcq/T2C7j+Gz3x6TlpHHj4iHkOnIL7msaGc2EuMkMaDaoPMMXERGpMJrTdBFbujSAUaNCyMoq3COUlGRh1KgQli4tuaauHhLFgOjBAIUKJoCk9ERGrRjB0n2LPRu0iIiIl6houkiZJkycGIzDUfQQmsNhMGlSMKZZ0jFM1h5ZU+z9DtPBpPhnMEs6iIiIiJ9Q0XSRWr/eSlJSyT/+xEQLGzYUvxTB+uR1JKUnlnyM0/vYkKwV4kVExP95vWhas2YNcXFxjBkzptS2mzdv5rrrrqNDhw5cc801LF6soR9XHT3q3CTtktodzUh27hhOthMREfFlXi2aZs+ezeTJk2nSpEmpbY8dO8bo0aMZOXIkmzZtYvz48bz11lukpaWVf6CVUN26zg2ZldSubng9547hZDsRERFf5vKGvZ4QHBzM/PnzmTJlCjk5OSW2/eyzz7j88ssZOnQoAL169aJXr15lej6LxcBi8fxl8FarpdBXf9CzZ/4WKomJxcfcrJmDHj1MDKPoNj0b9SS6ajMST+8r/hhVm9OjUQ+nlh/wxzz6GuXQM5RH9ymHnqE8us+TOfRq0TRy5Ein2/7888+0aNGCBx54gA0bNtCwYUOeeOIJevTo4fQxoqLCy3XtoMjI0HI7dnmYPh1uuAEcjqLvf+klC1FR4SUfo+80bvj8BhzmhQcxMJjW92WioqqUKS5/y6MvUg49Q3l0n3LoGcqj+zyRQ68WTWVx9OhRduzYwSuvvMK0adN4//33efDBB1mxYgV16tRx6hinTmWUW09TZGQo6elZ2O3FVCA+qHdveO89K889F8S+fRdW4Pv25ZCaWvJaTb3rXsN7/efx3I/PsO90QqH7gq3BNA5pTmpqhlPx+GsefYly6BnKo/uUQ89QHt3nTA6rVy+5g+AcvymaTNOkV69exMXFAXDffffx0UcfsWrVKm6++WanjuFwmDgc5Xf5u93uwGbzr5O6Xz8HffvmsX69lZQUg1q1TJ55Jpht26y88EIQgwblUbNmyTnr12QgfRsPYH3yOlIyjnI6N40nVz9Gtj2be76+k8XDviHIGuR0TP6YR1+jHHqG8ug+5dAzlEf3eSKHfjNIWqtWLSIjIwu+t1gs1K9fn+PHj3sxqsrBMCA21s7QoTZ69LAzdWr+/LLTpw2mTnWu2DEMg9j6PRja8npubzuKJ7s9DcAvxzbzz40vlFvsIiIiFcVviqbmzZuzc+fOgu9N0+TIkSM0aNDAi1FVTjExdm64IX9vlXnzAtmypeynyUOX/Z2eDa4E4D+/vMKaQz94NEYREZGK5rNFU0pKCv369ePgwYMA3HTTTWzZsoWFCxeSk5PDnDlzyMnJ4a9//auXI62cJkzIITzcxDQNnnoqpNjJ4sWxWqzM+MssokKiMDF5YOU9nMw6WT7BioiIVACvFk3t27enffv2fPXVV3z99dcF3wPk5eWRmJhIbm7+nmZt2rThX//6F2+++SZdunRhyZIlvP3220RERHjzJVRadeqYjB2bP0z3009WPv+87NPf6lWpzyt9ZgCQknmUv//3AW2pIiIifsswL6JPsePHz5TLcQMCLFSvHk5qakalmqiXmwu9eoWTkGChVi0H69dn4EqNOm71o7y77W0Apl4xjVHt7y2yXWXNY0VSDj1DeXSfcugZyqP7nMlhrVrOfbj57PCceF9QEEyZkg3A8eMWpk0Lduk4z8VN4dKoNvn/XjeeHSe3eyxGERGRiqKiSUp01VV2+vXLnxQ+e3Yge/eW/ZQJDQjlzavfIdgaTI49h9Hf3kWWLcvToYqIiJQrFU1SqkmTcggONrHZDMaPD8aVAd1La7ThubgpAOw6tZMJa5/ycJQiIiLlS0WTlKppU5MHHsifkL9qVQDLl7u2Jupd7e6hX9P+ALy3fQ7L9i3xWIwiIiLlTUWTOOXhh3Np0CB/At2zzwaT5cLommEYvNJnBnXD6wEw5r8Pknz2iCfDFBERKTcqmsQp4eHw3HP5SxAcOGBh5kznt0X5sxqhNZjxl1kYGKTmpPLgd/did9g9GaqIiEi5UNEkThs82EaPHvkb+L72WhAHD7q2+fEVDXvxf5eNAeDHw6t5/Zd/eypEERGRcqOiSZxmGDBlSg5Wq0lWlsFzz7m2BAHAuG7jubx2ZwBe3DiZn45uZN3hH/lk2yesO/yjFsEUERGfo6JJyqRNGwd33pm/BMHixYGsXm116TiB1kDeuHoOVQIjsJt2Bi/sx8Av+jH8i+EM/KIfMR92Yum+xZ4MXURExC0qmqTMnngihxo18ieFP/10MHl5rh0numozhl9yGwA201bovqT0REatGKHCSUREfIaKJimzatVg/Pj8JQh27bLy7ruBLh3HNE2+3f91sfc7TAeT4p/RUJ2IiPgEFU3ikuHD8+jYMf+qt3/+M5jjx8s+KXx98jqS0hNLbJN4eh8bkuNdilFERMSTVDSJS6xWmDo1f1+69HSDyZODiI+3snBhAPHxVqdWDT+akezUcznbTkREpDypaBKXdeni4Oab8yc0ffxxEEOGhHHffaEMGRJGTEw4S5eWvHL4uUUuS+NsOxERkfKkokncEhtrAy7sVkpKsjBqVEiJhVP3enE0jYwu8fgNqjQkpl6su2GKiIi4TUWTuMw04d//DgaKns/kcBhMmlT8Br+GYTAhbjIWo/jT8EzuGRLSfvdAtCIiIu5R0SQuW7/eSlJSyadQYqKFadOCOHTIKLJ4GtBsEA/U/JCA9BaFbrdk1QYgPfc01y0aSOLpfR6LW0RExBWubVcvAhw96twVcy+/HMzLLwdTt66Dzp3tdOlip0sXBx062Pn++wBm/t/NOBw3Q5M1UCUZztTHcaAnRpdZmANHczQjmeu/GsRXw5bTKKJxOb8qERGRoqloEpfVrVu29ZOOHrWwdKmFpUvz13UKCDCxWPKH8QDYf2Wh9uZP91GjVi4nYx7m0NmDXPfVQL4aupz6VRp4JH4REZGy0PCcuKx7dztNmzpKbBMd7WDt2rO89loWI0fm0qaNHYslv9iy2Qxyc0vurTq5/P+4s8ELAOxPT+L6RYNIyTjqmRcgIiJSBiqaxGWGARMm5BQUQeezWEyefTaHli1NbrnFxrRpOaxalcnvv5/liy8yGTLEuf1XYs2/81TMswAkpP3ODYsGcyLrhMdeh4iIiDNUNIlbBgywMWdONtHRhXucoqMdzJmTzYABtgseU6UKXHGFnbvucq5oqlvX5O+dH2Nsl3EA7E7dxQ2LBnMq+6T7L0BERMRJmtMkbhswwEb//jbWr7eSkmJQt65JTIwdo5R54ueG90q6Aq9JEwcxMfnbtTzR9Sly7bn855dX2HFyGzctHsYXgxdRNbiaB1+NiIhI0dTTJB5hGBAba2foUBvdu5deMJ17TEnDewBBQSYZGefaGzzd/Tnu6/AAAL8d38ItS67jTG66J16CiIhIiVQ0iVcVN7wXEZFfSO3da2XkyFCysvJvNwyDST2mcme7uwH4OeUn/rb0Rs7kniH+yFoW7p1P/JG1mM5sficiIlIGhnkRfbocP36mXI4bEGChevVwUlMzsNlKvppMimaasGlTAGfPhhIRkcVll9l45JEQPv88f3mCPn1sfPBBFsHB+e0dpoPHVj3CvJ3vAxBiDSHbnl1wvKaR0UyIm8yAZoMq/LV4k85Fz1Ae3acceoby6D5nclirVoRTx1JPk/gEw4C4OAc33wyxsQ4CAuDVV7MLrrD7738DuPvuUHJz89tbDAvTer9KXL2eAIUKJoCk9ERGrRjB0n2LK/R1iIhI5aWiSXxWQADMnJnNtdfmF04rVgQwenQItv9dkGdgcCTjcLGPd5gOJsU/o6E6ERHxCBVN4tMCA2HWrGz++tf8SmnJkkAeeigEux3WJ68jKT2xxMcnnt7HhuT4ighVREQqORVN4vOCg+Gdd7K48sr8wmnBgkAefTSE5LPJTj3+aIZz7UREREqiokn8QkgIvP9+FrGx+YXTxx8HsnCuc5v31g2vV56hiYjIRUJFk/iN8HD48MMsOnfOX+xyxVtXEWlrVuJjqgdHEVMvtiLCExGRSk5Fk/iVKlXgk08y6djRDhikz5+GYRZ/GqfmnOLd7W9XXIAiIlJpqWgSv1O1Knz2WSZt2thh1zDMT+djSW1RqE3AmaZUsdQE4MnVY5m/51NvhCoiIpWI9p4Tv1S9Osyfn8Vf/xrKkV3DcOwaCk3WQJVkOFMf24GeZNT4nchHepLuOMb/fTeaiKBI+ja91tuhi4iIn1JPk/itGjVMrNZzm9wZsP9K2H4zHLgCMDBPtiTiyxVUDaqG3bRz94qR/Hh4tTdDFhERP6aiSfzW+vVWDh4s+RQ+vLkT45suICwgjBx7DiOW3cIvKT9XUIQiIlKZeL1oWrNmDXFxcYwZM8bpx2zfvp02bdqwYMGCcoxMfN3Ro0bpjYBqZ7vz3rUfEWQJIiPvLLcsuY5dp3aWc3QiIlLZeLVomj17NpMnT6ZJkyZOP8bhcDBhwgTCwsLKMTLxB3XrOrc9St26Jr0bXcWbV7+DxbCQmpPKTYuHsj89qXwDFBGRSsWrE8GDg4OZP38+U6ZMIScnx6nHfPzxx0RERHDppZeW+fksFgOLxbneibKwWi2FvopryprHnj1NoqMdJCYW375ZMwc9epgYhoWhrYeSaZ/JQytHczQjmRsXDWHZjd9SN7yuR+L3BToXPUN5dJ9y6BnKo/s8mUOvFk0jR44sU/vjx48zY8YM5s2bx4QJE8r8fFFR4RiG54umcyIjQ8vt2BeTsuRx+nS44QZwOIq+/6WXLERFhRd8/2CP+8izZjFmxRiS0hO5afFQfrjjB6JCo9wN26foXPQM5dF9yqFnKI/u80QO/WrJgalTp3LjjTfSrFnJq0AX59SpjHLraYqMDCU9PQu7vZhPbymVK3ns3Rvee8/Kc88FsW/fhX9F7NmTQ2qqrdBtt7e+h+TUY/xz41S2HdvG1e/3ZeGwxVQJrEL8kbUkZyRTL7wesfV7lGuRXR50LnqG8ug+5dAzlEf3OZPD6tXDi7z9fH5TNK1du5YtW7bwwgsvuHwMh8PE4XBuHowr7HYHNptOaneVNY/9+jno2zeP9eutpKQY1Kpl8txzwfz6q5UpU4Lo3z+PBg0K/9zHdn6S1KxUZm99k80pP9Hvs7+SacsoNM+paWQ0E+ImM6DZIE+9tAqjc9EzlEf3KYeeoTy6zxM59ItB0tzcXCZNmsSzzz5LSEiIt8MRH2QYEBtrZ+hQGz162Jk+PRuLxSQz0+Cpp4KLaG/wfM8Xubn13wDYeWr7BRPDk9ITGbViBEv3La6IlyAiIj7OL4qmLVu2sH//fsaNG0dMTAwxMTFs3ryZ559/nvvvv9/b4YkP6tDBwT335AGwfHkgX39tvaCNxbDwr97/ISyg+CsxHaaDSfHPYJrl10MpIiL+wWeH51JSUrj99tuZPXs2nTp1YtWqVYXuf+SRR7j22msZPHiwdwIUnzduXA6LFwdw5IiFf/wjhJ49M6hSpXCbn1I2kmnLLPE4iaf3sSE5nu7148oxWhER8XVeLZrat28PgM2WP1F35cqVAGzdupW8vDwSExPJzc0lKCiIunULXxYeFBREZGQkUVGV66on8ZwqVWDKlBzuvDOUw4ctvPxyMBMnFl7a4mhGslPHcradiIhUXl4tmrZu3VrsfQ0bNmT37t3F3j937tzyCEkqmf79bfTta2PFigBmzQrkhhvyaN/+j4mAdcPrOXUcZ9uJiEjl5RdzmkRcZRjwwgvZhIWZ2O0Gjz8egt3+x/3d68XRNDK6xGPUDK1FTL3Yco5URER8nYomqfQaNTJ54on8YbnNm628/35gwX2GYTAhbjIWo/i3woms4zz94zjy7HnlHquIiPguFU1yUbj33jzats3vYpoyJZiUlD8WrRzQbBBz+s4lumrhRVMbVGlIzZBaAMze+iY3LxnGyayTFRe0iIj4FBVNclEICIBp07IxDJMzZwyeeabw2k0Dmg1i/d9+4auhy5l19bssGvo1m0dsZ83wjVzRoBcAPx5eTd/5vdl2ovi5eCIiUnmpaJKLRufODm6/PX+I7csvA/n++8JrNxmGQWz9HgxteT3d68dhGAY1Qmvw6aCF3Nshfz2wA2f2M3DB1Sz6fWGFxy8iIt6lokkuKuPH51C7dv7Vc088EUJmyUs0ARBgCWByz5d47ao3CLYGk2nL5O5vbueF9ZOwO+ylH0BERCoFFU1yUalaFZ5/Pn9S+IEDFl55Jcjpx95yya18NXR5wfID/948jZHLbyE95zQApmkSf2QtC/fOJ/7IWq0iLiJSyahokovO0KE2evfOX1B1xowgdu1y/m1weZ0ufHvDD3Su0xWAb/evoN8XVzHnt7eI+bATQ768lvu+vYshX15LzIedtG+diEgloqJJLjqGAS+9lE1IiInNZvD448E4yrDxdZ3wunw5dBm3XjoSgN/T9vKPHx8nKT2xUDtt+CsiUrmoaJKLUnS0yaOP5gKwYUMAH38cWMojCgu2BvOv3v/hhZ4vl9hOG/6KiFQeKprkovXAA7m0bp0/kXvSpGCOHzeIj7eycGEA8fFWSqtzDMOgbc12pT7PuQ1/RUTEv3l17zkRbwoKgpdfzmHw4DBSUw1iYsI5e/aPRS+bNnUwYUIOAwbYij2GNvwVEbl4qKdJLmrdu9u54or8tZv+XDABJCVZGDUqhKVLi//bQhv+iohcPFQ0yUXNNGH/fmux9zscBpMmBRc7VOfMhr8As397k8NnDrkapoiI+AAVTXJRW7/eyoEDJb8NEhMtbNhQdGHlzIa/AIv3fUmPj7vw2uZXyLXnuhyviIh4j4omuagdPWqU3gjYu7f4t0pxG/5GV23GjL/MYlT7e7EYFjJtmUxeP4Hen8ay6uD3bsUtIiIVzzAvomuhjx8/Uy7HDQiwUL16OKmpGdhsZVjwRwrxRh7j460MGRJWajuLxaRnTzuDB9vo399GzZoXvm0cDpN3vlvPvuMpNKtVl7v+EoPFkl+UbT3xG/9Y/Rgbj64vaD+o+VAmxb1Ag4iG5z3+6P8e373g8c5yN4emmd/7dvSoQd26Jt272zHKFkKloPe0+5RDz1Ae3edMDmvVinDqWCqaPEAntWd4I4+mCTEx4SQlOd/parWaxMXZGTTIxoABNmrVMlm6NICJE4MLHef8q+9M0+Sz3R8zMf4ZTmQdByAsIIwxnR/nVEILZu97DltkQsHjA9KbM7r5ZJ69cYDTsbmTQ2dew8VC72n3KYeeoTy6T0WTi1Q0+TZv5XHp0gBGjQrB4biwS8ViMZk4MYfTpw0WLw5g927rBfe3auVg924Lpln04+fMyS5UdJzOSeOfG19gzrZZOMz/vU4TKKpHx2HhoTofOl04uZrD0nJw/muo7PSedp9y6BnKo/tUNLlIRZNv82Yely4NYNKkYBIT/+hliY528OyzhXtZdu+2sGhRAIsXB7BrV/FX3f1ZRITJ4MH5yxo4HAammd/DdSrwV36u9winwteV+PiA9BYceuJnp4bqXMmhM71t0dEO1q/PuGiG6vSedp9y6BnKo/tUNLlIRZNv83Yez83nSUnJn88TE1PyfJ49eyzMnBnIRx8Fuf6kTX6AO3uX2mxqq28Y9dfupbZzJYfOzutatCiT7t3tTh3T33n7XKwMlEPPUB7d58miSSuCi/yPYUBsrPNFQatWDnr1svPRR6W3bdDAQWSkiWGAxZL/XIYBR6IOc8KJ59p3/KjTcZVVYqJz3UfOXmkoIlJZqWgScUPdus511L7xRnaRvTRvf1uTp/aW/ngjK6qsoTll3TorU6YEO9XW2dcqIlJZaZ0mETd0726nadOSu8yjox3ExBTdg3XXX7oTkN681OeZdfgR/u9f67B5aC52djZMmBDMsGGhHD9e+q+Bpk2Lfw0iIhcLFU0ibjAMmDAhB4ul6F4Yi8Xk2Wdzip0bZbEYjG4+GRzFvBXPHbZGAp+G9KP904+wZXeaWzFv3Wqhb98w3ngjCNM0qFbN5P77i38NAPXqaS6FiIiKJhE3DRhgY86cbKKjCxcW0dEOpy7Vf/bGATxU50MC0lsUuj0gvQUP1vqYSR3fJiC3BgAnG7/LNV915dE5i3A4yjZcZrfDa68F0a9fGDt35l/516ePjdWrM5g4MbfI1xAWlv8c8fEB/Otfbkx4FxGpBHT1nAfo6gbP8Pc8lvXqu/OdWxE88UT+iuJ3XvXHiuIpZ08w/L3xbLN8XNC+5smBfHzbNDpG1y+4rbgcJiUZPPRQCBs35k9jDAszmTAhhzvuyCsU4/mvoW1bO0OGhLFtW36R9eabWVx3XeVfr8nfz0VfoBx6hvLoPi054CIVTb5NeSzdO6u/5+n1j2Crsj//htwIRtSdxMs33wmmwXv/3cDh9JM0iKzBHX1iMAyDefMCeeaZYDIz86ujzp3tzJiRRbNmzr31jxwx6NcvjKNHLQQFmXzxRValn9+kc9F9yqFnKI/uU9HkIhVNvk15dM7JM2e56Y0X2Rr2Oljy8xSS0Yo8Mwt7lYMF7QLSm9Nwx0skfX19/vcBJmPH5vLII7kElPG62d9+szB4cBiZmQY1ajhYvjyTpk0r768OnYvuUw49Q3l0nyeLJs1pEvEzNSKq8N0Tk3mxxSoCTnYAIDt8T6GCCcAWmUBSt5vgkoW0bGln2bJMxo4te8EE0KGDgzffzMIwTE6etHDrraGcPu2JVyMi4j9UNIn4qbv6deKX+7+HktZwsjgw+j7BN99k0KlT6X+lmqZJ/JG1LNw7n/gja/lzR3S/fnYmTswBYO9eK3fdFUpentsvQ0TEb2hxSxE/tviXnyH0VIltzOq/0+vTWK5qHkvbmu1pW6Mdl9ZoS3hgeKF2S/ctZuK6p0lKTyy4rWlkNBPiJjOg2SAA7rsvj4QEC++/H8SaNQGMGxfM9OnFL6kgIlKZqGgS8WPObq9yIHsH723fUfC9gUF01Wa0rdmeNjXakpWXxetb/o3DLNwblZSeyKgVI5jTdy4Dmg3CMOCFF3LYv9/CqlUBzJsXRPPmDh58UF1OIlL5qWgS8WPNatWFtNLbtQ7rRrpxiOSMIwCYmOw7ncC+0wksTviyxMc6TAeT4p+hf/RADMMgMBDefjuLAQPC2L3byqRJwTRtapa6HpWIiL/TnCYRP+bMNiwB6S34YeS3/Hr7LnbdlciCIUt4vsdUbrnkVtrX7EiAUfrfTomn97EhOb7g+8hI+PDDLGrWdGCaBg88EMKvv+rXiYhUbvotJ+LHSt2GxWFhdPPnCxbJjAqpQc8GV3Jfxwd57ao3+O6mNbx21RtOPdevx7cU+r5xY5MPPsgiONgkK8vgtttCOXTIID7eysKFAcTHW7l4FjQRkYuBiiYRP1fSNiwP1fmQZ28cUOLjG0Q0dOp5nln7JHevuJ1fj/1ScFuXLg5efz0bgJQUC927hzNkSBj33RfKkCFhxMSEs3SpZgGISOXg9cUt16xZw7hx44iJieGVV14ptp3D4WDmzJksWLCA1NRUWrVqxeOPP06XLl2cfi4tbunblEf3OBwm7/13A0fOnKJBZA1u792toIepJKZpEvNhp0JXzZXmioa9efiyMVzZsDeGYXD//SF88UUgYEKTNRBxBM7Uh/1XYLHg1B58vkTnovuUQ89QHt3nycUtvfon4OzZs5k/fz5NmjQpte17773HF198waxZs2jSpAlvvfUWDz74IN999x1VqlSpgGhFfJvFYnBv37gy/4I1DIMJcZMZtWLEBVfPAVgMCy9f+W/2pO1m7vb3yLRlsObQKtYcWkWHWp14qNPf+Wnz3+CShXDN4xCV8MeDTzXH8c3LTJo0hP79bVqaQET8mld7mj744AOGDRvGlClTyMnJKbGn6b333qNOnTpce+21AGRkZHD55Zfz8ccfc/nllzv1fCdPnnXqL++yslotREaGkp6ehd2uvwRcpTy6z50cLklYxHM/PsO+038UPc2qNue5ns8zsPlgAFKzTzHnt9m8tWUmJ7NP/vHgM3WgyjEwivh14rDAZ/NZOr0fsbH+8XPVueg+5dAzlEf3OZPD6tXDi7z9fF4fngN48sknSy2azpeQkED//v357rvvaNjQuTkZpmli6E9dkWKZpsmaA2tIPpNM/Yj69Gzcs8j3TGZeJu/+8i7T4qeRlJZU+oFPtmB2hz3cfbfefyLiv/xyhmZubi7jx49n8ODBThdMAKdOZainyYcpj+7zRA7bR3amfWT+v9PSMott97eWd3BT89t4eP5LfHJ0askHrfE7D760hs2bY3nggTwaNPD632rFMk3YsCGA06eDqVo1h5gYDSu6Qu9nz1Ae3efJnia/K5rOnj3Lgw8+iNVqZeLEiWV6rMNh4nCU3y9ru92hiXoeoDy6r+JyaKF3u5Z84sTC5LnBybzxRiBvvx3AjTfm8dBDubRoUfj9aJqwfr2Vo0cN6tY16d7dXqEFy9KlAUycGExS0rkLi4Np2jSQCRNy/Goiuy/R+9kzlEf3eSKHfrXkwKlTp7jtttuIiIhgzpw5hIWFeTskkYtevSr1nGrX+XITwzDJyzP46KMgevQI5667QtiyJf/X0NKlAcTEeG/JgqVLAxg1KuRPBVO+pCQLo0aFaOkEEfGfoiknJ4f77ruPtm3b8tprrxESEuLtkEQE6F4vjqaR0aW2297qTu6ZN4HhI9IJDDQxTYMlSwK55ppwevUK82rBYpowcWIwDkfR3VoOh8GkScFOLdZpmmiBT5FKymeLppSUFPr168fBgwcBeOeddwgMDOT555/HYvHZsEUuOueWLLAYRb8vjf/9l23PZtbe51l7WUdeXvQpo+/PITw8v6LYudPqkYLFVevXWy8o2M6XmGhhwwZriW283VsmIuXLq9VH+/btad++PV999RVff/11wfcAeXl5JCYmkpubC8AXX3zBr7/+SseOHQvatW/fnpkzZ3rzJYgIMKDZIOb0nUt01WaFbo+u2ox3+s3j+5vWEle/JwAH0pP4+4bh7O4ygPmrfuFvf8st9fjOFCyuOnbM4NNPnStq7rgjhOHDQ3nuuWA+/jiAzZstnD2bf5+G90QqP59YcqCiaEVw36Y8us/bOTRNk/XJ60jJOErd8HrE1IstWLLANE2++n0Bz617miMZhwEItATSJ/Qhvhk/EXIjKGpFcch//NCheYwenUvHjg6sJdRPzkwmP3LEYOnSAJYsCWD9eium6d5s84YNHZw8aZCVVfxxoqMdrF+fcdFcieftc7GyUB7d58kVwVU0eYBOas9QHt3nDznMyMvg1Z+nM3PLa+Q6/tfLdKYebL8JWi25YEVxvnkZdg0ruKlqVZMePWxceaWdXr1sNGtmFhQiF179Bk2bOpgwIYd27ewsWRLAkiWB/PzzhVVXYGD+JPXi1KjhYMAAG3v3Wti928KpU2XvqF+0KJPu3e1lflxZefsqRNOETZsCOHMmlIiILLp21bINrvKH97SvU9HkIhVNvk15dJ8/5XDf6QSe/fEffLP/65IbOiwELPwcx/ZhRc57ql/fwZVX2omMdPD220HFzI0yOddj9Wft29sZNMjGwIF57N5tZdSokCIfb7GYhfbPM004ftxg924Le/ZYWL48gNWrSx9+69rVxogRefTpY6dOneJ/9bpT9JRUOFbEsgnefv7Kxp/e075KRZOLVDT5NuXRff6Yw2+Tvmbksluxk1dsm9oBzVl782bi4/OLk9WrrezZ49ocp86d7QwcmMeAATaaNi3862/p0gAmTQomMfGPD/zoaAfPPlvyB358vJUhQ8q2BEqbNnb69LHTp4+NmBg7wcF/xOBq0XFuXpUzhV958PbzV0b++J72NSqaXKSiybcpj+7zxxzGH1nLkC+vLbXdoqFf071+XMH3yckGa9ZYWb06gJUrrU4Nl82Zk8mgQSUPj50bWjp7Nn9oqUuX0oeWTBNiYsJLvAIvIsKkalWTQ4cubBMWZhIXZ6d2bQeffBJY5qIjLw8yMuAvfwnn4MHiYyjPeVXO5OBim9flCf74nvY1niyadDmHiHjV0Yxkp9o9sfpRHuj0fwxoNoiIoEjq1TO56SYbN91kY8GCAEaPDi31GHZ76Z/WhgFxcQ6qV4fUVAc2JzpGDAMmTMgpsZfltdey6d/fRkKCwX//G8B//xvA2rVWsrIMMjMNVq4s+dexw2Fw//0htGzpICsLMjPzH5eRQYlzsf7s3FWI5TGvqizLNlTEvC6R8qAFj0TEq+qGO7ei+K5TO3j4+/tp+24L7l5xO8sTl5Jrz59IXq/enzvMTWiyGtp9kv+VP+6rW7f8OtYHDLAxZ0420dGF/5KNjnYU9BAZBrRoYXLPPXl89FEWu3ef5fPPM3nggVyaNCm9kMjONti61crvv1s5csRCWprhdMF0ztGj5dPNk5zs3HHnzQvg0KHS22qRUPFFGp7zAHWfeoby6D5/zKFpmsR82Imk9MRi21QLrk714Ookpu877/ZqDGo+jOtb3sQjw/7K/pDFcM3jRV6BF50zxOmhIXfyeG4Sd0pK/iTumBjnJnEvXBjAffeV3lsWE2OjdWsH4eH5w3phYflfk5MNXnstuNTH9+hhY9KkHNq398z5YbPBl18G8NJLQezf7/w8s8suszNgQP4k/GbNLpxbpsnk+fzxPe1rNKfJRSqafJvy6D5/zeHSfYsZtWIEDvPCmC2GhTl959I/eiBbjm3mi72fsXDvFxzPOlaoXRVLDc7aT4FRxK80h4WH6nzIszcOcCoeb+TR2cnkxS1b4Mycoj+7+mobf/97Dl27uvb6MjPh448DmTkzqMR5VH8WFGSSm3thBdmmjZ2BA20MHGgjIcGiyeR/4q/vaV+ioslFKpp8m/LoPn/O4dJ9i5kU/wyJp//oTYqu2oxnY59nQLNBhdraHDbWHPqBL/Z+xtJ9i8nIO1vq8aOrNmP9334pWGyzOKZpsulYPGdIJYLqdK0dW+pjPMETE6lLu3rtr3+18eOPAWRm/nH/FVfYGDMmlx49/ugRK2nJg9RUeOedIN5+O5CTJwtfZdirl40PPih5Inu7dvb/LSwayE8/lX29rIttMrk/v6d9hYomF6lo8m3Ko/v8PYclrShenMy8TF7/5d9M++nFUo//aOcnGNHmDhpENCzy/qX7FjNx3dOFhgqbRkYzIW7yBYVbefDEJfulLZtw4oTBrFmBzJkTxJkzfzxPly52xozJITfXKHJo7OGHc9i928rcuYGFiq6OHe08/HAu/fvbsFrLtmxDcrLBsmX5K7PHxxe//+D5KmqRUF/g7+9pX6CiyUUqmnyb8ui+izWHC/fO575v73K6fcMqjehWrzsx9WLpXi+O1lGXsDxxaalDhBVVOLmyVtSfOTOv6vRpmDMniFmzAs9brqHohUDPv/3KK208/HAuV1xx4bFdWbbhxAmDF14IYt68oFJf36xZWQwd6vtDdJ5Ymf1ifU97koomF6lo8m3Ko/su1hw6u9ZTcSKDqpLnyCXLllVsG2eH9zzB1cnkrjh7Fj74IJAZM4I4fry0uUkmgwblF0sdO5Z8frlyLjo7r+uxx3IYMyaXwECnDusVnprMfrG+pz1JRZOLVDT5NuXRfRdrDp25Ai+6ajM+7P8ZG5LXs+FoPBuS4wvNn3LG+QtsFhfL+uR1HM1Ipm54PbrXi6uQQstdP/xg5cYbXZ+Ifj5XzsWyTGavV8/BnXfmMWJEHjVq+NbHmCdXRvf397S390EEFU0uU9Hk25RH913MOXTmCrzzh9dSMlPYmLyeD3e+z/cHVpb6HL0a9WH4JbcRUze2yHlR3p4T5Q5nlzxwdmjM1XOxpILDMExq1DA5ceKPoiokxOT66/O455482rT543nc/bB29fGmCd26hbN/v/sro/vCxsf+vA/iOSqaXKSiybcpj+672HNYlivw/syV4b1GEY3pVvd/86Lqx/F76h7u/uZ2r8+JcpW7Sx6cz51zsaR5Xf362fjmmwBmzw7kxx8Lr6Les6eNe+7Jw2aD5593/cO6rB/2x44ZbNpkZdMmK999Z2X37tLXqxo+PJchQ2x06mQnKsr9GMqDP++D+Gcqmlykosm3KY/uUw5duwLPmeG9sIBwQgNCOJl9ssj7LVhwUHzOK3JOlCs8vXecu+eiM/O6tm+38PbbgcyfH0hOzp/vLHoyuzMf1qV92M+enU3z5g42bbKycWN+oeTs2ljFadLEwWWX2f/3v4MjRwweeMC7BYc7RY8nz6WKmkyvoqkIKpp8m/LoPuXQdc4usJmQ9jsbkuPZcDSe9UfWlVhonc+ZOVHe5K9zcU6eNJg7N5A5cwJJSSm5gKle3cHYsbkFK6qHhv6xqnpICIwcGVrkpsrnGIaJaRb9qV2likmLFna2bCl9W9eAABObrbhP/+KuYMxX3gWHM0VPtWoObr7ZRk5O/vY+WVl/fD12zGDXrtJ72z79NJM+fYrvtazIyfQqmoqgosm3KY/uUw7d48rwXkrGUf7zy7+Z9dvMUo9/66UjeTLmGeqE1SmxnTcnk3tiyQPwzrm4Zo2V668vfYjRU5o0cdCtm52uXfP/v+QSBxaLc70sq1dnsGuXhc2brWzZYuWXXyzs3m0ptiA73+zZmQweXHwR5ErBkZ4Omzdb+fLLAD76qPSlHzyhYUMHLVs6aNUq///8f9uJj6/YAl5FUxFUNPk25dF9yqH7zq0IfpY0IqhOl9rdSy1YyjInysCgW73u9I8eRP9mA2kS2bTQ/b4wmdwTSx5441x0djK7u0aPzuXBB3OpU6foj09Xe+zOnoUZM4KYPr30PQQBatZ0cPnlfwztXX65nWrVnHv+vn1t7NyZX7T9/LOVzZst7N3rfNEG+b12UVH5k/FDQyE0NL+3LiMD1q0rvbetJBaLWeJip54eKlbRVAQVTb5NeXSfcugZZc2jM3OiAi2B5DnyLri9fc2ODGg2iP7NBpGQupdR34x0ezK5Lyx74Mv79y1cmEnHjnYyMw0yMyn4+tNPVp59NqTUxzszGd7VHjtnX0NxoqMdHDtmkJFR/M87JMTEMCArq+g2VquJ3V76+eLOPoh16zp46KFc9u7NL9b27LEUuirSGZ68KEFFUxFUNPk25dF9yqFnuJJHZ+ZEta5+CcsSF7N03yJ+Obb5wue1BGIrorA6x5nJ5L7QUwXeORfdnYDs6cnwrvTYORNDw4YOnnwyhy1brGzebGXbNkuRGyE7q3FjB5075/dUde5sp21bB716le8+iEX1tqWmwp49Vj77LIC5cz23MryKJhepaPJtyqP7lEPPcHmNoTLMiTp85hDLE5ewdN9i4pPXFllsFeXJbk8T1+AKaobUpGZoTaoGVysoolxZq6q8eOtcdHcyuy9cKl/WGHJyYMcOS8F8pA0bSh8a698/j+HD87j8cge1al1YBlTEPojF8cbyFyqaiqCiybcpj+5TDj3DnTy6suTBiawTvLjheT7Y8W7ZY7UEUCOkJlEhNUg8vY9su29sBePNc9HdyeyemgzvDl8oOCpqH8SiHlPRy1+oaCqCiibfpjy6Tzn0DK/Mx3Fz/zxnfTVkObENepTYxhNzorx9Lro7mb0i9/8rKYaybnzsC0OMnlDRy1+oaCqCiibfpjy6Tzn0DO/Mxyl9MnnTyGjmD17EyawTnMw+wYmsExzPOs7JrBNsTvmJ9cnrSn2eGiE1GdR8CH9tcg09GlxJeGB4ofs9MSfq3BWIZ0glgup0rV16b5sUzaX5dT4wxOgJFbn8hYqmIqho8m3Ko/uUQ8/w2nwcN+YkudJTFWwNJrZ+D/7S+Gr+2uQadp3c6fbVe74yEb2ycGcPP28PMXpCRS1/oaKpCCqafJvy6D7l0DO8Oh/Hxf3znOmpqhVai9h6PVl16HvSc09fcH+AEYDNLP4DtbQ5Ub40Eb2ycG9+nfeHGH2BiiYXqWjybcqj+5RDz/B2Hl2ZTA7OFy02h42fUjbx3f5v+O7At2w78ZvTsQ2/5DYuiWpDlaAqVAn83/9BEYQHVuGO5X/j0NmDxT62LBPRfWGtKV/g7XOxMlDR5CIVTb5NeXSfcugZ/pxHV3qqjmYkM23Tiy5dvVdWnw9aRK9GvUtsoyG+P/jzuegrVDS5SEWTb1Me3acceoa/59GVnipn50SFBoSRbcvCxLWPDgODVtVb07Zme9rV7EDbGu1oV7MDtcJqARriO5+/n4u+wJNFk3ubw4iIiM8xDIPY+iUvK3C+7vXiaBoZXeKcqHPDawCZtkzO5p0lI/cMZ/POsuFIPOPXjiv1eUxMdqfuYnfqLhbs/bzg9tphdWhbox2bU34qdqFPh+lgUvwz9I8eWGoRqOE9KQ8qmkREBMMwmBA3ucRenmdjny8oPMIDw/OXKwirA+TvoTd765slFl11w+txT/v72XFyG9tPbmVv6h7sZv4Ci8cyUziWmVJqnImn97HuyI/0aHBFsW00vCflRcNzHqDuU89QHt2nHHrGxZxHV6/eO/fYsgytZduy2X1qJ9tObGX7ya2sOvhffk/bU2qMVsNKq+qtaVm9Na2qt6Z11CW0rN6a5tVasHL/Nx4Z3vOVnqqL+Vz0FM1pcpGKJt+mPLpPOfSMiz2Prl69B+4VXe6uim5gYLVYsTlcXzYBPNdTVRlWVq8MVDS5SEWTb1Me3acceoby6J5zK4KfJY0IqtOldnenlxkoba2p2mF1GNXuXvak7mZv2h72pu4my1b8fntF6R89kK51u9M4sgmNIxrTKLIx1YOjMAzDYxPRPVV46Vx0n4omF6lo8m3Ko/uUQ89QHt3n8krWZSxaHKaDg2cOsDd1N1/s+Zwv9n7mUrxVAiNoWKUR+88kkWXLLLadsz1Vnhoi1HY07lPR5CIVTb5NeXSfcugZyqP73Mmhq0N8zg7v1Q6tw8nsEwWT0MuqedUWNIpsTFRIDaJCovK/htagRkgNqgdH8fB/7+fI2cPFPr4ihwilkhVNa9asYdy4ccTExPDKK68U287hcPDqq6+yZMkS0tPT6dChA8899xyNGjVy+rlUNPk25dF9yqFnKI/uczeHrsyrcmZ471zBYnPYSM44wsEzBziQvp8DZ/az9vAapzY99oSHOj1C9/px1A6rQ+2wOtQMrUWQNQjwbE+VL0xm97ZKUzTNnj2b+fPnExUVRd26dUssmubOncu7777L7NmzqVOnDq+88gqbNm3iq6++cvokUNHk25RH9ymHnqE8uq8yb3rcq+FVWC0WTmWd5FT2KU5ln+JsnvufL1EhUdQKrc3+9CSy7dnFtvO3yezeVmkWtwwODmb+/PlMmTKFnJycEtt++umn3HHHHTRv3hyAMWPGEBMTw6+//kqnTp2cej6LxcBi8fwP22q1FPoqrlEe3acceoby6D5v5XBIqyFYrfN47sdn2Hc6oeD2ZlWb81zP5xnYfHCxj+3ZqCfRVZsVGhY8X7OqzVkw7MI/1nNsOZzKPsX3B1byfyvvdyn2cwVYaRJP72P40uvoVq87zas1J7pac5pVbUa1kOoALElYVGThmJSeyKgVI3iv/7wS83DOkoRFTPjx6QuGSSf2nOzU4yG/6Io/spbkjGTqhdcjtn6PCi+6PHkuen14DuDJJ58kJyen2J6m7OxsOnXqxLx58+jSpUvB7f3792f48OGMGDHCqecxTdPvKmQRESk70zRZc2ANyWeSqR9Rn56Nezr1+3/hzoXc8PkNxfZUzb9xPsMuHVbi87b8T0sSUhOKbdMiqgU/3/MzKRkpHD17tND/6w6uY9X+VU69xvNFhUbRonoLdpzYwdncsyU+/56H9pSYD3fzcO4Yj3/7eKFcNK/enJevfrnUx55z7ud45MwR6kfU54rGV3j1c9wvVgQ/ffo0pmlStWrVQrdXrVqV1NRUp49z6lRGufU0RUaGkp6ehd2urnxXKY/uUw49Q3l0ny/ksH1kZ9pH5v87La34K+L+rHfda3ivf/E9Vb3rXkNqakaJx5gQ9zx3LLuthJXVJ2HPslLTUp+akfVpF/nH/evq/OhU0dQksgkpGSmFhvFOZZ1iY9bGUh/7+6nfufKd3lwadSk1QmtSK6xW/tfQWtQMq0WNkBqMXTG2xO1sHlvxOL3qXF1sAbMkYVGROUhITeCGz29wqrfLEz1d4Ny5WL16uFPH8oui6Rx3O8UcDhOHo/w61ux2h+Y/eIDy6D7l0DOUR/f5Yw77NRlI38YDipyI7sxr6ddkIHP6zi32CsB+TQYWe5yutWOd3gPQxCQl4yj7TieQeHofiaf38ePh1fxy7OdSY/zx0Gp+PLS61HbF2Xc6gRFLhtMosglBliACrYEEW4IJtAYRaATw783TSiy6Jqx5mr6NBxRbdBU3Ny3x9D7uWHabSxs3e+Jc9IuiqVq1algsFtLS0grdnpaWRo0aNbwTlIiIVFqubHr8ZwOaDaJ/9MAyXwFYlj0ADQzqValPvSr1C/bic3Yye6tqrch25HIi8ziZtpJ7zoqzLHGJS48DSEzfR7O3G1AztCbVg6tTLaR6wddqQdV4f8c7Htm42dP8omgKDg6mZcuWbN++nW7dugGQnp7OgQMH6NChg5ejExERuZCrhdeAZoNK7KkqqYele704p3qq1gzfVFBwZOZlcjL7BCezTnAi6zjrj8Tz2i//KjXOeuH1sBoB5DpyybPnkmPPJc+RS54jz6nXmZF3loy8s+wnyan2f5Z4eh8bkuPpXj+uzI91h88WTSkpKdx+++3Mnj2bRo0aMXz4cGbNmsWVV15JnTp1mDZtGpdeeint27f3dqgiIiIeda6nqqzb0ZSlp+qcsMAwwgIb0yiiMQB/aXwNixIWOjVEWFQ86w7/yNCv+pf6Gm9u/TeqBFUhNTuVtJxU0rJTSc1J5VhGChlO9H4dzUgutY2nebVoOlfw2Gz5myuuXLkSgK1bt5KXl0diYiK5ubkA3HLLLRw/fpwRI0aQkZFBTEwMr7/+uncCFxERKWeGYRDXoGeZ17typ6fq3POWtfD6s9j6PZzq7XrtqjeKPIazQ4x1w+uV2sbTfGLJgYqixS19m/LoPuXQM5RH9ymHnuFOHl1ZVf3PXN3O5txjXV1ktCwruzvzeirN4pYiIiJSPrw1mf3cY13t7XK3p6s8qWgSERGRIrlTeHmr6CpPKppERESkXHir6CovKppERETEJ7k7xOhp2o1SRERExAkqmkREREScoKJJRERExAkqmkREREScoKJJRERExAkqmkREREScoKJJRERExAkqmkREREScoKJJRERExAkqmkREREScYJimaXo7CBERERFfp54mERERESeoaBIRERFxgoomERERESeoaBIRERFxgoomERERESeoaBIRERFxgoomERERESeoaBIRERFxgoomERERESeoaBIRERFxgoomNx0+fJh7772XmJgY+vTpw8svv4zD4fB2WH6ndevWtGvXjvbt2xf8//zzz3s7LJ+3Zs0a4uLiGDNmzAX3LVu2jEGDBnHZZZdx3XXX8eOPP3ohQt9XXA4XLFjAJZdcUuicbN++Pb/99puXIvVdhw8f5sEHHyQmJoa4uDiefPJJ0tPTAdi5cye33XYbnTt35pprruGdd97xcrS+q7g8Hjp0iNatW19wLs6ZM8fbIfucXbt2cfvtt9O5c2fi4uL4+9//zvHjxwGIj4/nhhtu4PLLL2fAgAEsWrSo7E9giluGDRtmPv3002Z6erqZmJhoXnPNNeY777zj7bD8TqtWrcyDBw96Owy/MmvWLPOaa64xb7nlFvPvf/97oft27NhhtmvXzly1apWZnZ1tfvXVV2bHjh3N5ORkL0Xrm0rK4RdffGHedtttXorMvwwcONB88sknzbNnz5rJycnmddddZz711FNmVlaWecUVV5j/+c9/zIyMDHPbtm1mt27dzBUrVng7ZJ9UXB4PHjxotmrVytvh+bycnBwzNjbWfP31182cnBzz5MmT5m233WY+8MADZkpKitmpUyfz888/N7Ozs821a9eaHTp0MH/77bcyPYd6mtywdetWdu3axWOPPUZERARNmzbljjvu4NNPP/V2aHIRCA4OZv78+TRp0uSC+z7//HN69epFr169CA4OZvDgwbRq1cq1v6wqsZJyKM5JT0+nXbt2jB07lvDwcOrWrcuwYcP46aefWLVqFXl5edx///2EhYXRtm1bbrzxRv2OLEJJeRTnZGVlMWbMGO677z6CgoKIiori6quvZu/evSxevJimTZtyww03EBwcTFxcHFdddRWff/55mZ5DRZMbtm/fToMGDahatWrBbW3btiUxMZGzZ896MTL/NH36dHr37k2XLl145plnyMjI8HZIPm3kyJFEREQUed/27dtp06ZNodvatGnD1q1bKyI0v1FSDgGSk5O588476dq1K3/5y1/46quvKjA6/xAZGcnUqVOpWbNmwW3JycnUrl2b7du307p1a6xWa8F9bdq0Ydu2bd4I1aeVlMdznnjiCXr27En37t2ZPn06eXl53gjVZ1WtWpUbb7yRgIAAAPbt28fChQu59tpri/2dWNZzUUWTG9LS0oiMjCx027kCKjU11Rsh+a1OnToRFxfHN998w6effsqWLVuYOHGit8PyW2lpaYWKecg/N3VeOi8qKoqmTZvy+OOPs3btWh599FGeeuop4uPjvR2aT9u6dSvz5s3j/vvvL/J3ZLVq1UhLS9Pcz1L8OY9BQUFcdtllXH311fz3v/9l1qxZLFq0iJkzZ3o7TJ90+PBh2rVrR//+/Wnfvj0PP/xwsediWX8nqmhyk2ma3g6hUvj000+58cYbCQoKonnz5jz22GMsWbKE3Nxcb4fmt3Ruuqd37968/fbbtGnThqCgIAYMGMDVV1/NggULvB2az/r5558ZNWoUY8eOJS4urth2hmFUYFT+5/w81q5dm08++YSrr76awMBAOnTowH333adzsRgNGjRg69atfP311yQlJfHEE0947NgqmtwQFRVFWlpaodvS0tIwDIOoqCjvBFVJNGzYELvdzsmTJ70dil+qXr16keemzkv3NGjQgGPHjnk7DJ/0/fffc++99/LUU08xcuRIIP935Pl/yaelpVGtWjUsFn38FKWoPBalQYMGnDhxQn8cFcMwDJo2bcqYMWNYsmQJAQEBF/xOTE1NLfPvRJ21bmjXrh3JycmcOnWq4LatW7fSokULwsPDvRiZf9mxYwcvvvhiodsSEhIICgoqNJ4vzmvXrt0FY/Vbt26lY8eOXorI/3z88ccsW7as0G0JCQk0atTISxH5rs2bNzNu3DheffVVhg4dWnB7u3bt2L17NzabreA2nYfFKy6P8fHxvPHGG4Xa7tu3jwYNGqjX7k/i4+Pp27dvoaHfc8V5hw4dLviduG3btjKfiyqa3NCmTRvat2/P9OnTOXv2LAkJCbz77rsMHz7c26H5lRo1avDpp58ya9YscnNzSUxM5NVXX+Xmm28uNIFUnHfTTTexbt06Vq1aRU5ODvPnzycpKYnBgwd7OzS/kZuby/PPP8/WrVvJy8tjyZIlrF69mltuucXbofkUm83G008/zWOPPUbPnj0L3derVy+qVKnCG2+8QVZWFr/++ivz58/X78gilJTHiIgIZsyYwVdffUVeXh5bt25lzpw5yuN52rVrx9mzZ3n55ZfJysri1KlT/Oc//6FLly4MHz6cw4cP8/nnn5OTk8MPP/zADz/8wE033VSm5zBM9e255ejRozzzzDNs3LiRKlWqcMstt/DQQw+p+i+jTZs2MX36dHbv3k1QUBDDhg1jzJgxBAcHezs0n9W+fXuAgr/iz10xcu4KuW+++Ybp06dz+PBhWrRowfjx4+natat3gvVRJeXQNE3eeOMN5s+fz/Hjx2nYsCFPPPEEffr08Vq8vuinn37i1ltvJSgo6IL7vv76azIyMpgwYQLbtm2jZs2a3HPPPfztb3/zQqS+rbQ87tixg9dff52kpCQiIiIYMWIE99xzj4Y5z7N7924mT57Mb7/9RlhYGN27d+fJJ5+kTp06bNq0icmTJ5OQkECDBg0YO3Ys11xzTZmOr6JJRERExAkqUUVEREScoKJJRERExAkqmkREREScoKJJRERExAkqmkREREScoKJJRERExAkqmkREREScoKJJRERExAkqmkREnLBgwQJat27t7TBExIsCvB2AiEhpRowYwU8//VSwzcn5PvnkE9q2bVvBUYnIxUZFk4j4hX79+vHKK694OwwRuYhpeE5EKoWrrrqKV155hX/84x907dqVyy67jPHjx5Obm1vQ5qeffmL48OF07dqVzp07c//993PgwIGC+0+ePMnjjz9OTEwMMTExPPjggxw+fLjQ82zdupXrr7+eDh060Lt3b1auXFlhr1FEvEtFk4hUGh999BGxsbGsW7eO999/n5UrVzJjxgwA9u/fzx133EHv3r1ZvXo133zzDXl5edx9993Y7XYAHnroIU6fPs3y5cv57rvvsFqtjB49mj/va/7+++8zc+ZMNm7cSJcuXXjqqacKFWYiUnlpeE5E/MLXX39dZK9O165deeeddwBo3749gwcPBqBDhw4MHDiQb775hjFjxvDJJ5/QoEED7r33XgzDIDQ0lMcee4whQ4awefNmIiIi2Lx5MwsWLCAqKgqA8ePH8/PPPxcqiu655x7q1KkDwKBBg1i8eDHHjh2jYcOG5Z0CEfEyFU0i4hecmdPUokWLQt83atSIo0ePAvk9TS1btsQwjIL7mzdvDsCBAwcIDw8veMw5derUoX///oWO2bhx44J/h4SEAJCTk1PWlyMifkjDcyJSaZwbZjvHNM2CIqmowubcsJthGFitVgAcDkeJz2Gx6NemyMVK734RqTSSkpIKfX/gwAHq168PQHR0NHv27Ck0P2nPnj0F9zVt2hSAhISEgvuPHz/OnDlzOHPmTPkGLiJ+QUWTiFQav/76K8uXLyc3N5fffvuNZcuW0a9fPwBuuOEGDh8+zKxZs8jNzeXYsWO8/PLLXHLJJXTq1ImWLVvStWtXXnnlFVJSUsjIyGD69Ol88cUXVKlSxcuvTER8geY0iYhfKG4iOMD9998PwLBhw1i9ejXPPvssNpuNQYMGcd999wFwySWXMHPmTGbMmMGsWbMIDw8nLi6OV155pWAIb8aMGUyaNIn+/ftjtVrp3Lkzb731VqF5UCJy8TLMP/dVi4j4qauuuor+/fvz2GOPeTsUEamkNDwnIiIi4gQVTSIiIiJO0PCciIiIiBPU0yQiIiLiBBVNIiIiIk5Q0SQiIiLiBBVNIiIiIk5Q0SQiIiLiBBVNIiIiIk5Q0SQiIiLiBBVNIiIiIk74fwzM04OTQRMKAAAAAElFTkSuQmCC\n"
},
"metadata": {}
}
],
"source": [
"import matplotlib.pyplot as plt\n",
"\n",
"plt.style.use(\"seaborn\")\n",
"fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(6, 9))\n",
"\n",
"ax1.plot(q_history.history[\"val_accuracy\"], \"-ob\", label=\"With quantum layer\")\n",
"ax1.plot(c_history.history[\"val_accuracy\"], \"-og\", label=\"Without quantum layer\")\n",
"ax1.set_ylabel(\"Accuracy\")\n",
"ax1.set_ylim([0, 1])\n",
"ax1.set_xlabel(\"Epoch\")\n",
"ax1.legend()\n",
"\n",
"ax2.plot(q_history.history[\"val_loss\"], \"-ob\", label=\"With quantum layer\")\n",
"ax2.plot(c_history.history[\"val_loss\"], \"-og\", label=\"Without quantum layer\")\n",
"ax2.set_ylabel(\"Loss\")\n",
"ax2.set_ylim(top=2.5)\n",
"ax2.set_xlabel(\"Epoch\")\n",
"ax2.legend()\n",
"plt.tight_layout()\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "eFIiSMV9d0KF"
},
"source": [
"References\n",
"==========\n",
"\n",
"1. Maxwell Henderson, Samriddhi Shakya, Shashindra Pradhan, Tristan\n",
" Cook. \\\"Quanvolutional Neural Networks: Powering Image Recognition\n",
" with Quantum Circuits.\\\"\n",
" [arXiv:1904.04767](https://arxiv.org/abs/1904.04767), 2019.\n",
"\n",
"About the author\n",
"================\n"
]
},
{
"cell_type": "code",
"source": [
"seconds = time.time()\n",
"print(\"Time in seconds since end of run:\", seconds)\n",
"local_time = time.ctime(seconds)\n",
"print(local_time)"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 0
},
"id": "DN7xl_1qggGu",
"outputId": "d1303df3-2e5b-4a1b-f05c-4e70e633dec3"
},
"execution_count": 26,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Time in seconds since end of run: 1705999910.1195595\n",
"Tue Jan 23 08:51:50 2024\n"
]
}
]
}
],
"metadata": {
"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.10.13"
},
"colab": {
"provenance": [],
"machine_shape": "hm"
}
},
"nbformat": 4,
"nbformat_minor": 0
}