{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Transfer Learning with VGG16\n", "\n", "In this notebook, I will go over steps to retrain VGG16 net for the skin cancer dataset." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Using TensorFlow backend.\n" ] } ], "source": [ "import os\n", "from glob import glob\n", "\n", "import pandas as pd\n", "import numpy as np\n", "from sklearn.model_selection import train_test_split\n", "from keras.utils.np_utils import to_categorical # convert to one-hot-encoding\n", "\n", "from keras.preprocessing.image import ImageDataGenerator\n", "from keras import layers\n", "from keras import Model\n", "from keras.applications.vgg16 import VGG16, preprocess_input\n", "from keras.optimizers import Adam\n", "from keras.callbacks import ReduceLROnPlateau, EarlyStopping\n", "\n", "\n", "%matplotlib inline\n", "import matplotlib.pyplot as plt" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Load in the Dataset" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "X_train = np.load(\"/floyd/input/skin_cancer_192_256/256_192_train.npy\")" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "y_train = np.load(\"/floyd/input/skin_cancer_192_256/train_labels.npy\")" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "X_val = np.load(\"/floyd/input/skin_cancer_192_256/256_192_val.npy\")" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "y_val = np.load(\"/floyd/input/skin_cancer_192_256/val_labels.npy\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Reshape the Dataset" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "((8111, 192, 256, 3), (902, 192, 256, 3))" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X_train.shape, X_val.shape" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "((8111,), (902,))" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "y_train.shape, y_val.shape" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "y_train = to_categorical(y_train)\n", "y_val = to_categorical(y_val)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "((8111, 7), (902, 7))" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "y_train.shape, y_val.shape" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Load in Pretrained VGG16 Model" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "pre_trained_model = VGG16(input_shape=(192, 256, 3), include_top=False, weights=\"imagenet\")" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "input_1\n", "block1_conv1\n", "block1_conv2\n", "block1_pool\n", "block2_conv1\n", "block2_conv2\n", "block2_pool\n", "block3_conv1\n", "block3_conv2\n", "block3_conv3\n", "block3_pool\n", "block4_conv1\n", "block4_conv2\n", "block4_conv3\n", "block4_pool\n", "block5_conv1\n", "block5_conv2\n", "block5_conv3\n", "block5_pool\n", "19\n" ] } ], "source": [ "for layer in pre_trained_model.layers:\n", " print(layer.name)\n", " layer.trainable = False\n", " \n", "print(len(pre_trained_model.layers))" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "last layer output shape: (None, 6, 8, 512)\n" ] } ], "source": [ "last_layer = pre_trained_model.get_layer('block5_pool')\n", "print('last layer output shape:', last_layer.output_shape)\n", "last_output = last_layer.output" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Define the Model" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "# Flatten the output layer to 1 dimension\n", "x = layers.GlobalMaxPooling2D()(last_output)\n", "# Add a fully connected layer with 512 hidden units and ReLU activation\n", "x = layers.Dense(512, activation='relu')(x)\n", "# Add a dropout rate of 0.5\n", "x = layers.Dropout(0.5)(x)\n", "# Add a final sigmoid layer for classification\n", "x = layers.Dense(7, activation='softmax')(x)\n", "\n", "# Configure and compile the model\n", "\n", "model = Model(pre_trained_model.input, x)\n", "optimizer = Adam(lr=0.0001, beta_1=0.9, beta_2=0.999, epsilon=None, decay=0.0, amsgrad=True)\n", "model.compile(loss='categorical_crossentropy',\n", " optimizer=optimizer,\n", " metrics=['accuracy'])" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "_________________________________________________________________\n", "Layer (type) Output Shape Param # \n", "=================================================================\n", "input_1 (InputLayer) (None, 192, 256, 3) 0 \n", "_________________________________________________________________\n", "block1_conv1 (Conv2D) (None, 192, 256, 64) 1792 \n", "_________________________________________________________________\n", "block1_conv2 (Conv2D) (None, 192, 256, 64) 36928 \n", "_________________________________________________________________\n", "block1_pool (MaxPooling2D) (None, 96, 128, 64) 0 \n", "_________________________________________________________________\n", "block2_conv1 (Conv2D) (None, 96, 128, 128) 73856 \n", "_________________________________________________________________\n", "block2_conv2 (Conv2D) (None, 96, 128, 128) 147584 \n", "_________________________________________________________________\n", "block2_pool (MaxPooling2D) (None, 48, 64, 128) 0 \n", "_________________________________________________________________\n", "block3_conv1 (Conv2D) (None, 48, 64, 256) 295168 \n", "_________________________________________________________________\n", "block3_conv2 (Conv2D) (None, 48, 64, 256) 590080 \n", "_________________________________________________________________\n", "block3_conv3 (Conv2D) (None, 48, 64, 256) 590080 \n", "_________________________________________________________________\n", "block3_pool (MaxPooling2D) (None, 24, 32, 256) 0 \n", "_________________________________________________________________\n", "block4_conv1 (Conv2D) (None, 24, 32, 512) 1180160 \n", "_________________________________________________________________\n", "block4_conv2 (Conv2D) (None, 24, 32, 512) 2359808 \n", "_________________________________________________________________\n", "block4_conv3 (Conv2D) (None, 24, 32, 512) 2359808 \n", "_________________________________________________________________\n", "block4_pool (MaxPooling2D) (None, 12, 16, 512) 0 \n", "_________________________________________________________________\n", "block5_conv1 (Conv2D) (None, 12, 16, 512) 2359808 \n", "_________________________________________________________________\n", "block5_conv2 (Conv2D) (None, 12, 16, 512) 2359808 \n", "_________________________________________________________________\n", "block5_conv3 (Conv2D) (None, 12, 16, 512) 2359808 \n", "_________________________________________________________________\n", "block5_pool (MaxPooling2D) (None, 6, 8, 512) 0 \n", "_________________________________________________________________\n", "global_max_pooling2d_1 (Glob (None, 512) 0 \n", "_________________________________________________________________\n", "dense_1 (Dense) (None, 512) 262656 \n", "_________________________________________________________________\n", "dropout_1 (Dropout) (None, 512) 0 \n", "_________________________________________________________________\n", "dense_2 (Dense) (None, 7) 3591 \n", "=================================================================\n", "Total params: 14,980,935\n", "Trainable params: 266,247\n", "Non-trainable params: 14,714,688\n", "_________________________________________________________________\n" ] } ], "source": [ "model.summary()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Training" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Feature-Extraction\n", "\n", "If performing fine tuning directly would result in a huge gradient, so it's better that we perform 3 epochs of feature extraction first so that weights of the final fully connected layer aren't completely random. The intuition for this is that if we don't perform feature-extraction, then the gradient will be too large and will change the pretrained weights too much." ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "train_datagen = ImageDataGenerator(rotation_range=60, width_shift_range=0.2, height_shift_range=0.2,\n", " shear_range=0.2, zoom_range=0.2, fill_mode='nearest')\n", "\n", "train_datagen.fit(X_train)\n", "\n", "val_datagen = ImageDataGenerator()\n", "val_datagen.fit(X_val)" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Epoch 1/3\n", "126/126 [==============================] - 91s 720ms/step - loss: 1.2934 - acc: 0.6207 - val_loss: 1.0926 - val_acc: 0.6652\n", "Epoch 2/3\n", "126/126 [==============================] - 84s 667ms/step - loss: 1.0835 - acc: 0.6666 - val_loss: 0.9895 - val_acc: 0.6674\n", "Epoch 3/3\n", "126/126 [==============================] - 85s 676ms/step - loss: 1.0268 - acc: 0.6686 - val_loss: 1.0094 - val_acc: 0.6588\n" ] } ], "source": [ "batch_size = 64\n", "epochs = 3\n", "history = model.fit_generator(train_datagen.flow(X_train,y_train, batch_size=batch_size),\n", " epochs = epochs, validation_data = val_datagen.flow(X_val, y_val),\n", " verbose = 1, steps_per_epoch=(X_train.shape[0] // batch_size), \n", " validation_steps=(X_val.shape[0] // batch_size))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Fine Tuning Model" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's fine tune the last convolutional block of VGG net. I only use learning_rate = 0.0001 with very high momentum = 0.9 and train for 35 epochs only so that the original weights of pretrained VGG net won't be changed too much. learning_rate_reduction function is used and will halve the learning_rate whenever the validation accuracy plateaus for 3 epochs. " ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [], "source": [ "for layer in model.layers[:15]:\n", " layer.trainable = False\n", "\n", "for layer in model.layers[15:]:\n", " layer.trainable = True" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [], "source": [ "optimizer = Adam(lr=0.0001, beta_1=0.9, beta_2=0.999, epsilon=None, decay=0.0, amsgrad=False)\n", "model.compile(loss='categorical_crossentropy',\n", " optimizer=optimizer,\n", " metrics=['acc'])" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "_________________________________________________________________\n", "Layer (type) Output Shape Param # \n", "=================================================================\n", "input_1 (InputLayer) (None, 192, 256, 3) 0 \n", "_________________________________________________________________\n", "block1_conv1 (Conv2D) (None, 192, 256, 64) 1792 \n", "_________________________________________________________________\n", "block1_conv2 (Conv2D) (None, 192, 256, 64) 36928 \n", "_________________________________________________________________\n", "block1_pool (MaxPooling2D) (None, 96, 128, 64) 0 \n", "_________________________________________________________________\n", "block2_conv1 (Conv2D) (None, 96, 128, 128) 73856 \n", "_________________________________________________________________\n", "block2_conv2 (Conv2D) (None, 96, 128, 128) 147584 \n", "_________________________________________________________________\n", "block2_pool (MaxPooling2D) (None, 48, 64, 128) 0 \n", "_________________________________________________________________\n", "block3_conv1 (Conv2D) (None, 48, 64, 256) 295168 \n", "_________________________________________________________________\n", "block3_conv2 (Conv2D) (None, 48, 64, 256) 590080 \n", "_________________________________________________________________\n", "block3_conv3 (Conv2D) (None, 48, 64, 256) 590080 \n", "_________________________________________________________________\n", "block3_pool (MaxPooling2D) (None, 24, 32, 256) 0 \n", "_________________________________________________________________\n", "block4_conv1 (Conv2D) (None, 24, 32, 512) 1180160 \n", "_________________________________________________________________\n", "block4_conv2 (Conv2D) (None, 24, 32, 512) 2359808 \n", "_________________________________________________________________\n", "block4_conv3 (Conv2D) (None, 24, 32, 512) 2359808 \n", "_________________________________________________________________\n", "block4_pool (MaxPooling2D) (None, 12, 16, 512) 0 \n", "_________________________________________________________________\n", "block5_conv1 (Conv2D) (None, 12, 16, 512) 2359808 \n", "_________________________________________________________________\n", "block5_conv2 (Conv2D) (None, 12, 16, 512) 2359808 \n", "_________________________________________________________________\n", "block5_conv3 (Conv2D) (None, 12, 16, 512) 2359808 \n", "_________________________________________________________________\n", "block5_pool (MaxPooling2D) (None, 6, 8, 512) 0 \n", "_________________________________________________________________\n", "global_max_pooling2d_1 (Glob (None, 512) 0 \n", "_________________________________________________________________\n", "dense_1 (Dense) (None, 512) 262656 \n", "_________________________________________________________________\n", "dropout_1 (Dropout) (None, 512) 0 \n", "_________________________________________________________________\n", "dense_2 (Dense) (None, 7) 3591 \n", "=================================================================\n", "Total params: 14,980,935\n", "Trainable params: 7,345,671\n", "Non-trainable params: 7,635,264\n", "_________________________________________________________________\n" ] } ], "source": [ "model.summary()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "By setting the last convolutional block to trainable, we are now retraining for half of the hyperparameters" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [], "source": [ "learning_rate_reduction = ReduceLROnPlateau(monitor='val_acc', patience=3, verbose=1, factor=0.5, \n", " min_lr=0.000001, cooldown=3)" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Epoch 1/30\n", "126/126 [==============================] - 89s 707ms/step - loss: 0.8724 - acc: 0.6997 - val_loss: 0.8149 - val_acc: 0.6964\n", "Epoch 2/30\n", "126/126 [==============================] - 85s 673ms/step - loss: 0.7467 - acc: 0.7335 - val_loss: 0.7273 - val_acc: 0.7455\n", "Epoch 3/30\n", "126/126 [==============================] - 85s 675ms/step - loss: 0.6952 - acc: 0.7509 - val_loss: 0.7164 - val_acc: 0.7204\n", "Epoch 4/30\n", "126/126 [==============================] - 85s 673ms/step - loss: 0.6655 - acc: 0.7574 - val_loss: 0.6854 - val_acc: 0.7321\n", "Epoch 5/30\n", "126/126 [==============================] - 85s 671ms/step - loss: 0.6438 - acc: 0.7679 - val_loss: 0.7434 - val_acc: 0.7204\n", "\n", "Epoch 00005: ReduceLROnPlateau reducing learning rate to 4.999999873689376e-05.\n", "Epoch 6/30\n", "126/126 [==============================] - 85s 675ms/step - loss: 0.5844 - acc: 0.7890 - val_loss: 0.6247 - val_acc: 0.7679\n", "Epoch 7/30\n", "126/126 [==============================] - 85s 674ms/step - loss: 0.5567 - acc: 0.7952 - val_loss: 0.6581 - val_acc: 0.7630\n", "Epoch 8/30\n", "126/126 [==============================] - 85s 673ms/step - loss: 0.5384 - acc: 0.8118 - val_loss: 0.6658 - val_acc: 0.7433\n", "Epoch 9/30\n", "126/126 [==============================] - 85s 672ms/step - loss: 0.5195 - acc: 0.8128 - val_loss: 0.6387 - val_acc: 0.7512\n", "Epoch 10/30\n", "126/126 [==============================] - 85s 671ms/step - loss: 0.4959 - acc: 0.8204 - val_loss: 0.6632 - val_acc: 0.7656\n", "\n", "Epoch 00010: ReduceLROnPlateau reducing learning rate to 2.499999936844688e-05.\n", "Epoch 11/30\n", "126/126 [==============================] - 84s 668ms/step - loss: 0.4635 - acc: 0.8326 - val_loss: 0.5599 - val_acc: 0.8081\n", "Epoch 12/30\n", "126/126 [==============================] - 85s 677ms/step - loss: 0.4443 - acc: 0.8375 - val_loss: 0.5841 - val_acc: 0.7768\n", "Epoch 13/30\n", "126/126 [==============================] - 85s 672ms/step - loss: 0.4209 - acc: 0.8483 - val_loss: 0.6649 - val_acc: 0.7630\n", "Epoch 14/30\n", "126/126 [==============================] - 85s 673ms/step - loss: 0.4305 - acc: 0.8447 - val_loss: 0.6284 - val_acc: 0.7679\n", "Epoch 15/30\n", "126/126 [==============================] - 85s 671ms/step - loss: 0.4073 - acc: 0.8541 - val_loss: 0.5224 - val_acc: 0.8057\n", "\n", "Epoch 00015: ReduceLROnPlateau reducing learning rate to 1.249999968422344e-05.\n", "Epoch 16/30\n", "126/126 [==============================] - 85s 675ms/step - loss: 0.3870 - acc: 0.8643 - val_loss: 0.6117 - val_acc: 0.7835\n", "Epoch 17/30\n", "126/126 [==============================] - 84s 670ms/step - loss: 0.3837 - acc: 0.8614 - val_loss: 0.6959 - val_acc: 0.7441\n", "Epoch 18/30\n", "126/126 [==============================] - 85s 671ms/step - loss: 0.3686 - acc: 0.8670 - val_loss: 0.6199 - val_acc: 0.7879\n", "Epoch 19/30\n", "126/126 [==============================] - 84s 669ms/step - loss: 0.3640 - acc: 0.8684 - val_loss: 0.5730 - val_acc: 0.7938\n", "Epoch 20/30\n", "126/126 [==============================] - 85s 672ms/step - loss: 0.3728 - acc: 0.8668 - val_loss: 0.6003 - val_acc: 0.7879\n", "\n", "Epoch 00020: ReduceLROnPlateau reducing learning rate to 6.24999984211172e-06.\n", "Epoch 21/30\n", "126/126 [==============================] - 84s 667ms/step - loss: 0.3528 - acc: 0.8719 - val_loss: 0.6376 - val_acc: 0.7867\n", "Epoch 22/30\n", "126/126 [==============================] - 84s 669ms/step - loss: 0.3489 - acc: 0.8782 - val_loss: 0.5459 - val_acc: 0.7924\n", "Epoch 23/30\n", "126/126 [==============================] - 84s 669ms/step - loss: 0.3394 - acc: 0.8805 - val_loss: 0.6392 - val_acc: 0.7915\n", "Epoch 24/30\n", "126/126 [==============================] - 85s 672ms/step - loss: 0.3297 - acc: 0.8820 - val_loss: 0.6104 - val_acc: 0.7835\n", "Epoch 25/30\n", "126/126 [==============================] - 85s 671ms/step - loss: 0.3306 - acc: 0.8801 - val_loss: 0.5705 - val_acc: 0.7986\n", "\n", "Epoch 00025: ReduceLROnPlateau reducing learning rate to 3.12499992105586e-06.\n", "Epoch 26/30\n", "126/126 [==============================] - 85s 672ms/step - loss: 0.3186 - acc: 0.8865 - val_loss: 0.6038 - val_acc: 0.7902\n", "Epoch 27/30\n", "126/126 [==============================] - 84s 669ms/step - loss: 0.3278 - acc: 0.8864 - val_loss: 0.5933 - val_acc: 0.7891\n", "Epoch 28/30\n", "126/126 [==============================] - 84s 670ms/step - loss: 0.3245 - acc: 0.8833 - val_loss: 0.5795 - val_acc: 0.7812\n", "Epoch 29/30\n", "126/126 [==============================] - 84s 667ms/step - loss: 0.3197 - acc: 0.8885 - val_loss: 0.5836 - val_acc: 0.7915\n", "Epoch 30/30\n", "126/126 [==============================] - 84s 669ms/step - loss: 0.3140 - acc: 0.8892 - val_loss: 0.6024 - val_acc: 0.7946\n", "\n", "Epoch 00030: ReduceLROnPlateau reducing learning rate to 1.56249996052793e-06.\n" ] } ], "source": [ "batch_size = 64\n", "epochs = 30\n", "history = model.fit_generator(train_datagen.flow(X_train,y_train, batch_size=batch_size),\n", " epochs = epochs, validation_data = val_datagen.flow(X_val, y_val),\n", " verbose = 1, steps_per_epoch=(X_train.shape[0] // batch_size),\n", " validation_steps=(X_val.shape[0] // batch_size), callbacks=[learning_rate_reduction])" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "902/902 [==============================] - 8s 9ms/step\n", "Validation: accuracy = 0.798226 ; loss_v = 0.650197\n" ] } ], "source": [ "loss_val, acc_val = model.evaluate(X_val, y_val, verbose=1)\n", "print(\"Validation: accuracy = %f ; loss_v = %f\" % (acc_val, loss_val))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Our model clearly overfits the training dataset. But we do observe some improvement with validation accuracy, which is clearly better than the baseline model! Having around 3% improvement from the baseline model justifies some more training time. This improvement proves that weights of pretrained model learned from ImageNet generalize to our dataset, which is completely different from ImageNet. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Testing" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [], "source": [ "X_test = np.load(\"/floyd/input/skin_cancer_192_256/256_192_test.npy\")" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [], "source": [ "y_test = np.load(\"/floyd/input/skin_cancer_192_256/test_labels.npy\")\n", "y_test = to_categorical(y_test)" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1002/1002 [==============================] - 9s 9ms/step\n", "Test: accuracy = 0.796407 ; loss = 0.708095\n" ] } ], "source": [ "loss_test, acc_test = model.evaluate(X_test, y_test, verbose=1)\n", "print(\"Test: accuracy = %f ; loss = %f\" % (acc_test, loss_test))" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [], "source": [ "model.save(\"VGG16.h5\")" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0.5,1,'Training and validation loss')" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAX0AAAEICAYAAACzliQjAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvIxREBQAAIABJREFUeJzs3Xd4lFX2wPHvSSOFlkILLaEJSAtSpaqoiAoWVGwrNhR721W32N11/bmuvS9WiojYUUAFQXov0gIBQgglJJQkpOf+/rgTGELKJJlkMpPzeZ48mXnLzHkncOZ97z3vvWKMQSmlVN3g5+kAlFJK1RxN+kopVYdo0ldKqTpEk75SStUhmvSVUqoO0aSvlFJ1iCb9OkhE/EUkQ0TauHNbTxKRDiLi9vpjERkhIrucnm8VkSGubFuJ9/pARP5a2f2VckWApwNQ5RORDKenoUAOUOB4focxZnJFXs8YUwDUd/e2dYEx5gx3vI6I3AbcYIwZ7vTat7njtZUqiyZ9L2CMOZF0HWeStxljfi5texEJMMbk10RsSpVH/z3WLtq84wNE5DkR+VxEpopIOnCDiAwUkaUickRE9onIayIS6Ng+QESMiMQ4nn/mWP+jiKSLyBIRia3oto71F4nINhE5KiKvi8giERlfStyuxHiHiGwXkcMi8prTvv4i8l8RSRWRBGBkGZ/P30RkWrFlb4rIy47Ht4nIZsfx7HCchZf2WkkiMtzxOFREPnXE9gdwVrFt/y4iCY7X/UNERjuWdwfeAIY4ms4OOX22Tzntf6fj2FNF5GsRaeHKZ1ORz7koHhH5WUTSRGS/iPzF6X3+4fhMjonIShGJLqkpTUR+L/o7Oz7PBY73SQP+LiIdRWSe4z0OOT63Rk77t3UcY4pj/asiEuyIuYvTdi1E5LiIRJZ2vKocxhj98aIfYBcwotiy54Bc4FLsF3kI0Bfoj72aawdsA+5xbB8AGCDG8fwz4BDQBwgEPgc+q8S2TYF0YIxj3UNAHjC+lGNxJcZvgEZADJBWdOzAPcAfQCsgElhg/zmX+D7tgAwgzOm1DwJ9HM8vdWwjwLlAFtDDsW4EsMvptZKA4Y7HLwHzgXCgLbCp2LZXAy0cf5PrHDE0c6y7DZhfLM7PgKccjy9wxNgLCAbeAn515bOp4OfcCDgA3A/UAxoC/RzrHgfWAR0dx9ALiAA6FP+sgd+L/s6OY8sHJgL+2H+PnYDzgCDHv5NFwEtOx7PR8XmGObYf5Fj3HvC80/s8DHzl6f+H3vzj8QD0p4J/sNKT/q/l7PcI8IXjcUmJ/B2nbUcDGyux7S3AQqd1AuyjlKTvYowDnNbPBB5xPF6AbeYqWjeqeCIq9tpLgescjy8Ctpax7ffA3Y7HZSX9ROe/BXCX87YlvO5G4GLH4/KS/sfAP53WNcT247Qq77Op4Od8I7CilO12FMVbbLkrST+hnBjGFr0vMATYD/iXsN0gYCcgjudrgSvc/f+qLv1o847v2OP8REQ6i8gPjsv1Y8AzQFQZ++93enycsjtvS9s22jkOY/+XJpX2Ii7G6NJ7AbvLiBdgCnCt4/F1judFcVwiIsscTQ9HsGfZZX1WRVqUFYOIjBeRdY4miiNAZxdfF+zxnXg9Y8wx4DDQ0mkbl/5m5XzOrbHJvSRlrStP8X+PzUVkuojsdcTwUbEYdhlbNHAKY8wi7FXDYBHpBrQBfqhkTApt0/clxcsV38WeWXYwxjQEnsCeeVenfdgzUQBERDg1SRVXlRj3YZNFkfJKSqcDI0SkJbb5aYojxhBgBvAvbNNLY2COi3HsLy0GEWkHvI1t4oh0vO4Wp9ctr7w0GdtkVPR6DbDNSHtdiKu4sj7nPUD7UvYrbV2mI6ZQp2XNi21T/Pj+ja066+6IYXyxGNqKiH8pcXwC3IC9KplujMkpZTvlAk36vqsBcBTIdHSE3VED7/k90FtELhWRAGw7cZNqinE68ICItHR06j1a1sbGmP3YJoiPsE078Y5V9bDtzClAgYhcgm17djWGv4pIY7H3MdzjtK4+NvGlYL//bsee6Rc5ALRy7lAtZipwq4j0EJF62C+lhcaYUq+cylDW5/wt0EZE7hGReiLSUET6OdZ9ADwnIu3F6iUiEdgvu/3YggF/EZmA0xdUGTFkAkdFpDW2ianIEiAV+KfYzvEQERnktP5TbHPQddgvAFUFmvR918PATdiO1XexHa7VyhhzALgGeBn7n7g9sAZ7hufuGN8GfgE2ACuwZ+vlmYJtoz/RtGOMOQI8CHyF7Qwdi/3ycsWT2CuOXcCPOCUkY8x64HVguWObM4BlTvvOBeKBAyLi3ExTtP9P2GaYrxz7twGudzGu4kr9nI0xR4HzgSuxX0TbgGGO1f8HfI39nI9hO1WDHc12twN/xXbqdyh2bCV5EuiH/fL5FvjSKYZ84BKgC/asPxH7dyhavwv7d84xxiyu4LGrYoo6R5RyO8flejIw1hiz0NPxKO8lIp9gO4ef8nQs3k5vzlJuJSIjsZUyWdiSvzzs2a5SleLoHxkDdPd0LL5Am3eUuw0GErBt2RcCl2vHm6osEfkX9l6BfxpjEj0djy/Q5h2llKpD9ExfKaXqkFrXph8VFWViYmI8HYZSSnmVVatWHTLGlFUiDdTCpB8TE8PKlSs9HYZSSnkVESnvrnRAm3eUUqpO0aSvlFJ1iCZ9pZSqQ2pdm35J8vLySEpKIjs729Oh+Izg4GBatWpFYGBpQ78opXyRVyT9pKQkGjRoQExMDHbgRlUVxhhSU1NJSkoiNja2/B2UUj7DK5p3srOziYyM1ITvJiJCZGSkXjkpVQd5RdIHNOG7mX6eStVNXtG8o5RSvii/oJCkw1nsPJRJwqFMQgL9ua5/efMBVY0mfRcdOXKEKVOmcNddd1Vov1GjRjFlyhQaN25c6jZPPPEEQ4cOZcSIEVUNUylVA+IPpLNlfzohgf6EBPkTHOhPSKA/oUGnPg/0t1fUKRk57EyxiX3noUwSUjLZeSiDxLTj5BWcHP+sd5vGmvRriyNHjvDWW2+dlvTz8/MJCCj9Y5w1a1a5r/3MM89UOT6lVPXbnZrJy3O38e26ZFwZq9LfT/D3E3LzC08sCwrwIyYylA5N63PBmc2JjQqjXVQY7ZrUJzy0+qvpNOm76LHHHmPHjh306tWLwMBAgoODCQ8PZ8uWLWzbto3LLruMPXv2kJ2dzf3338+ECROAk8NKZGRkcNFFFzF48GAWL15My5Yt+eabbwgJCWH8+PFccskljB07lpiYGG666Sa+++478vLy+OKLL+jcuTMpKSlcd911JCcnM3DgQObOncuqVauIinJ1nm2lVGUdOJbNa7/E8/mKPQT4C3cOa8/ontHkFRSSlVtAVl4B2XkFHHc8zsq1z7PyCsjNL6Rl4xBim9SnXVQY0Y1D8PfzXJ+a1yX9p7/7g03Jx9z6ml2jG/LkpWeWuc0LL7zAxo0bWbt2LfPnz+fiiy9m48aNJ0oeJ02aREREBFlZWfTt25crr7ySyMjIU14jPj6eqVOn8v7773P11Vfz5ZdfcsMNN5z2XlFRUaxevZq33nqLl156iQ8++ICnn36ac889l8cff5yffvqJ//3vf+77AJRSJTpyPJe3f9vBx4t3kV9guLZfG+49twNNGwZ7OrRK87qkX1v069fvlBr31157ja+++gqAPXv2EB8ff1rSj42NpVevXgCcddZZ7Nq1q8TXvuKKK05sM3PmTAB+//33E68/cuRIwsPD3Xo8SqmTjufm8+GiXbzz2w4ycvIZ0zOaB8/vRNvIME+HVmVel/TLOyOvKWFhJ//48+fP5+eff2bJkiWEhoYyfPjwEmvg69Wrd+Kxv78/WVlZJb520Xb+/v7k5+e7OXKlVGly8wuZujyR13/dzqGMHEZ0acojF55B5+YNPR2a23hd0veUBg0akJ6eXuK6o0ePEh4eTmhoKFu2bGHp0qVuf/9BgwYxffp0Hn30UebMmcPhw4fd/h5K1SWHM3NPVNPsPJRBQkoma/ccYd/RbPrHRvDujb05q22Ep8N0O036LoqMjGTQoEF069aNkJAQmjVrdmLdyJEjeeedd+jSpQtnnHEGAwYMcPv7P/nkk1x77bV8+umnDBw4kObNm9OgQQO3v49Svmb/0WzWJB4mwalUcuehTA4fzzuxTYCf0CYilG4tG/HClT0Y2jHKZ29gdGmOXBEZCbwK+AMfGGNeKLa+LTAJaAKkATcYY5Ic624C/u7Y9DljzMdlvVefPn1M8UlUNm/eTJcuXVw6IF+Vk5ODv78/AQEBLFmyhIkTJ7J27doqvaZ+rspXHc7MZdbGfXyzNpkVu9JOlFc2a1iPdlH1iW1iyyRjHaWSrcJDCPT3mgEKSiQiq4wxfcrbrtwzfRHxB94EzgeSgBUi8q0xZpPTZi8BnxhjPhaRc4F/ATeKSATwJNAHMMAqx77aNlFBiYmJXH311RQWFhIUFMT777/v6ZCUqlUycvKZu2k/365NZmH8IfILDe2bhPHgiE6cc0ZT2jUJI6yeNm648gn0A7YbYxIARGQaMAZwTvpdgYccj+cBXzseXwjMNcakOfadC4wEplY99LqlY8eOrFmzxtNhKFWr5OQXMH9rCt+uS+aXzQfIzrM18bcOiWV0z2i6tmjos800leVK0m8J7HF6ngT0L7bNOuAKbBPQ5UADEYksZd+WlY5WKaWA7QfT+WDhTn7YsI/07Hwiw4K4uk9rRveMpnebcPw8ePNTbeeua51HgDdEZDywANgLFLi6s4hMACYAtGlTveNOKKW817YD6bz2Szw/bNhHSKA/F3Vrwehe0QxqH0mAl7fJ1xRXkv5eoLXT81aOZScYY5KxZ/qISH3gSmPMERHZCwwvtu/84m9gjHkPeA9sR67r4Sul6oJtB9J59Zd4Zm3YR2igPxOHtee2Ie2ICAvydGhex5WkvwLoKCKx2GQ/DrjOeQMRiQLSjDGFwOPYSh6A2cA/RaTo9tELHOuVUqpcW/fbM/tZG22yv2t4e24b3I5wTfaVVu71kDEmH7gHm8A3A9ONMX+IyDMiMtqx2XBgq4hsA5oBzzv2TQOexX5xrACeKerU9XX169cHIDk5mbFjx5a4zfDhwylenlrcK6+8wvHjx088HzVqFEeOHHFfoErVQlv2H+Ouyau48JUF/LYthbuHd+D3R8/lzxd21oRfRS616RtjZgGzii17wunxDGBGKftO4uSZf50THR3NjBklfjQueeWVV7jhhhsIDQ0FXBuqWSlvczQrj72Hs0g6fJyv1+5l1ob91K8XwL3nduDWwbE0DtVE7y5atOqixx57jNatW3P33XcD8NRTTxEQEMC8efM4fPgweXl5PPfcc4wZM+aU/Xbt2sUll1zCxo0bycrK4uabb2bdunV07tz5lLF3Jk6cyIoVK8jKymLs2LE8/fTTvPbaayQnJ3POOecQFRXFvHnzTgzVHBUVxcsvv8ykSfb79LbbbuOBBx5g165dpQ7hrFRV5eQXsGrXYX6LT2HBtkOkpGcTHhpERJj9CQ8LIjIs6JRlEWFBNAgO4FBGDnuPZLP3cBZ7jxwn2fE4+UgW6Tknx5jSZF+9vC/p//gY7N/g3tds3h0ueqHMTa655hoeeOCBE0l/+vTpzJ49m/vuu4+GDRty6NAhBgwYwOjRo0utC3777bcJDQ1l8+bNrF+/nt69e59Y9/zzzxMREUFBQQHnnXce69ev57777uPll19m3rx5p42bv2rVKj788EOWLVuGMYb+/fszbNgwwsPDXR7CWSlX7DqUyYL4FH7bmsKShFSO5xYQ6C+c1TacXq2bc+R4LqmZuWw/mEFaZi6Hj+dSWE45RqOQQKIbh9A6IpSB7SOJbhxMy8ahRDcOpmOzBtTXm6iqjX6yLoqLi+PgwYMkJyeTkpJCeHg4zZs358EHH2TBggX4+fmxd+9eDhw4QPPmzUt8jQULFnDfffcB0KNHD3r06HFi3fTp03nvvffIz89n3759bNq06ZT1xf3+++9cfvnlJ0b7vOKKK1i4cCGjR492eQhnpUqSkZPPkh2pLNiWwoL4FHan2j6lNhGhXNm7FUM7NWFg+8hSE3NhoeFoVh5px3NJy7Q/x7LyiKpfj5bhIUQ3DtGk7kHe98mXc0Zena666ipmzJjB/v37ueaaa5g8eTIpKSmsWrWKwMBAYmJiShxSuTw7d+7kpZdeYsWKFYSHhzN+/PhKvU4RV4dwVt4tLTOXSb/v5PyuzejZuvQ5mF11PDeft+fv4L0FCeTkFxIa5M/AdpHcOjiWoR2bEBPl2ljyfn5CuKOpp32TKoel3Mz7kr4HXXPNNdx+++0cOnSI3377jenTp9O0aVMCAwOZN28eu3fvLnP/oUOHMmXKFM4991w2btzI+vXrATh27BhhYWE0atSIAwcO8OOPPzJ8+HDg5JDOxZt3hgwZwvjx43nssccwxvDVV1/x6aefVstxq9pn3Z4j3DV5NXuPZPHGvO1c3L0FD1/QiXZN6lf4tYwxfLM2mRd+3ML+Y9mM7hnNuH6tOattOPUC/KsheuVJmvQr4MwzzyQ9PZ2WLVvSokULrr/+ei699FK6d+9Onz596Ny5c5n7T5w4kZtvvpkuXbrQpUsXzjrrLAB69uxJXFwcnTt3pnXr1gwaNOjEPhMmTGDkyJFER0czb968E8t79+7N+PHj6devH2A7cuPi4rQpx8cZY5iyPJGnv91Ekwb1mDZhAEt2pPL+wgR++mM/4/q25v7zOro8nd+6PUd4+rs/WJ14hB6tGvHm9XE+OYa8OsmloZVrkg6tXHP0c/UuWbkF/P3rjXy5OolhnZrw6rheJ6pbUtJzeP3XeKYsSyTQ349bB8cyYVg7GgYHlvhaB49l8+LsrcxYlURU/Xo8OvIMruzdSses8WJuG1pZKeV5u1MzufOz1WzZf4z7z+vI/ed1PCVBN2lQj2fGdOOWQbH8Z+423pi3ncnLdnP3OR24cWDbE8002XkFTFq0kzd/3U5egeHOYe25+5z2NCjly0H5Hk36StVyP286wIPT1+InwqTxfTnnjKalbhsTFcbr18YxYUg7Xpy9hed+2MyHi3bx0PmdCKsXwD9nbSYx7Tjnd23G30Z1cblzVvkOr0n6xhgdF9uNaluznjpdQaHh5blbeXPeDrq1bMjb159F64hQl/bt3qoRn97an4XxKfz7py08/MU6ADo2rc+nt/ZjSEctq6mrvCLpBwcHk5qaSmRkpCZ+NzDGkJqaSnCwa519qualZuRw/7S1/L79EOP6tuap0WcSHFjxSpohHZswqH0UczbtJzOngDG9onUI4jrOK5J+q1atSEpKIiUlxdOh+Izg4GBatWrl6TBUCVbsSuP+qWs4lJnLi1f24Oq+rcvfqQx+fsLIbi3cFJ3ydl6R9AMDA4mNjfV0GEpVq4PHsnnhpy3MXL2XVuEhzJx4Nt1aNvJ0WMrHeEXSV8qX5eYX8tHinbz2y3Zy8wu5a3h77j6ng07iraqF/qtSyoN+25bC09/9QUJKJud1bso/LumqFTWqWmnSV8oDElOP88z3m/h58wFiIkP5cHxfzulceimmUu6iSV+pGnQ8N5+35u3gvYUJBPgJj47szC2DY3SMG1VjNOkrVUO+X5/M8z9sZt/RbC7rFc3jo7rQzMUxcpRyF036SlWz/IJCnv1+Ex8v2U3XFg157do4+sbooGbKMzTpK1WNMnLyuXfKauZtTeH2IbE8dlEX/HVQM+VBmvSVqib7jmZxy0cr2XYgnecu68YNA9p6OiSlNOkrVR027j3KLR+t4HhuAZPG92VYJx3rRtUOmvSVcrOfNx3g3qlriAgLYsbEfnRu3tDTISl1giZ9pdzEGMOHi3bx7A+b6N6yER/c1IemDbQ6R9UumvSVcoP8gkKe+X4TnyzZzYVnNuOVa+IICdLae1X7aNJXqooycvK5Z8pq5m9NYcLQdjw2srNOO6hqLU36SlXBvqNZ3PzhCuIPZvD85d24vr9W6KjaTZO+UpW0KfkYN3+0nMwcrdBR3kOTvlKVsGBbCndNXk39egF8cedAurTQCh3lHTTpK1VB01fu4a8zN9ChaX0+vLkvLRqFeDokpVymSV8pFxljeOXneF79JZ4hHaN46/reNAgO9HRYSlWIJn2lXJBXUMjjMzcwY1USY89qxb+u6E6gTjCuvJAmfaXKkZ6dx12TV7Mw/hD3n9eRB0Z0RERLMpV30qSvVBn2H81m/IfL2X4wgxfH9uDqPq09HZJSVeLS9amIjBSRrSKyXUQeK2F9GxGZJyJrRGS9iIxyLI8RkSwRWev4ecfdB6BUddmy/xiXv7WIPWnHmTS+ryZ85RPKPdMXEX/gTeB8IAlYISLfGmM2OW32d2C6MeZtEekKzAJiHOt2GGN6uTdspaqHMYac/EKW7UzjnsmrCa3nz/Q7B3JmdCNPh6aUW7jSvNMP2G6MSQAQkWnAGMA56RugqFC5EZDsziCVqqqs3AKmLE9kxc40svIKyMotsL+dHzt+FzmjWQM+vLkv0Y21JFP5DleSfktgj9PzJKB/sW2eAuaIyL1AGDDCaV2siKwBjgF/N8YsLP4GIjIBmADQpk0bl4NXqjzZeQVMXZ7IW/N3kJKeQ7uoMBqEBBIS6EdU/SBCgvwJCQwgJMiPkEB/+xMUQMOQAC7tGU1DLclUPsZdHbnXAh8ZY/4jIgOBT0WkG7APaGOMSRWRs4CvReRMY8wx552NMe8B7wH06dPHuCkmVYfl5BcwfcUe3py3g/3HsukfG8Eb18bRv12kp0NTyqNcSfp7AecerFaOZc5uBUYCGGOWiEgwEGWMOQjkOJavEpEdQCdgZVUDV6okufmFzFiVxBu/xpN8NJs+bcN5+eqeDGwfqWWWSuFa0l8BdBSRWGyyHwdcV2ybROA84CMR6QIEAyki0gRIM8YUiEg7oCOQ4LbolXLILyhk5uq9vPZrPEmHs+jVujEvXNmDIR2jNNkr5aTcpG+MyReRe4DZgD8wyRjzh4g8A6w0xnwLPAy8LyIPYjt1xxtjjIgMBZ4RkTygELjTGJNWbUej6qRv1u7l5bnb2J16nO4tG/HsmG4MP6OJJnulSiDG1K4m9D59+piVK7X1R7lmwbYU/jRpOV1aNOSh8zsxoktTTfaqThKRVcaYPuVtp3fkKq9ljOGlOVtp2TiEb+4eRFCAjoWjVHn0f4nyWrP/OMD6pKPcP6KjJnylXKT/U5RXKig0vDx3K+2ahHFFXEtPh+M7co/DD49A+gFPR6KqiSZ95ZW+XbeXbQcyeHBEJwJ0iGP3SZgPK96H+NmejkRVE/3forxOXkEh/50bT5cWDbm4ewtPh+NbEpfY32k7PRuHqjaa9JXX+WJlEolpx3nkgk74+WmljlslLrW/D+/yaBiq+mjSV14lO6+A13+NJ65NY87t3NTT4fiWvCxIXmMfa9L3WZr0lVeZvCyRfUez+fMFZ2g9vrvtXQ2FedCwlSZ9H6ZJX3mNzJx83pq3nbPbR3J2hyhPh+N7itrze1wFWWmQfdSz8ahqoUlfeY2PFu8iNTOXRy48w9Oh+KbEpdCkC0TH2ed6tu+TNOkrr3D0eB7v/raDEV2a0rtNuKfD8T2FBbBnObQZAOExdpkmfZ+kSV95hfcW7uBYdj4Pna9n+dXi4CbIOQptBmrS93Ga9FWtdygjhw8X7eKSHi3oGt2w/B1UxRWVarYZAMGNICRCk76P0qSvar235u0gO6+AB8/v5OlQfFfiEmgQDY0d05WGx+gNWj5Kk76q1fYdzeKzZbu5sncr2jep7+lwfJMxsHuJPcsvKoMNj9EzfR+lSV/Vaq/9sh1jDPeP6OjpUHzX0T2Qnmzb84tExNrlBfmei0tVC036qtbanZrJFyv3cF2/NrQKD/V0OL6rqD2/rVPSD4+Bwnw4Vnw6bOXtNOmrWuuVn+MJ8BfuPreDp0PxbYlLoF5DaNr15LITFTzaru9rdOYsVasUFhoyc/PZuj+dr9fuZcLQdjRtEOzpsHxb4lJo3Q/8/E8u07JNn6VJX9WYrNwCPlmyi+QjWaRn53MsO49j2fkcy8ojPTuf9Ow80nPyKZq2uUG9AO4c2t6jMfu8rMO2Rr/bFacub9gS/AI16fsgTfqqRiSkZHDX5NVs2Z9Oo5BAGoYE0KBeIA2CA2gdEUqD4AAaBgee8rtvbAThYUGeDt237Vlufzt34oI962/cRpO+D9Kkr6rdrA37+MuM9QT6Cx/f0o9hnZp4OiRVJHGJPaOP7n36Oi3b9EnakauqTV5BIc9+v4m7Jq+mQ9P6/HDfEE34tU3iUojuBUElVEfpDVpVdzwNpt8EqTs8HckJeqavqsW+o1ncM2UNq3YfZvzZMfx1VBeCAvQco1bJy4a9q6D/HSWvD4+B7CO23T9EB7mrlE3fwKav4WgS3DIb/D2fcvV/oXK73+MPcfFrv7Nl3zHeuC6Op0afqQm/NkpeAwW5p7fnFzlRwbO7xkLyOfFzISAY9q6Exa96OhpAk75yo8JCw2u/xHPjpGVE1Q/im3sGc0mPaE+HpUpTNGlK6/4lr4+Itb+1Xb9y8nMgYT70uh7OvBzm/Qv2b/B0VNq8o9zjcGYuD3y+lt+2pXBZr2j+eUV3QoP0n1etlrgUojpBWCmzkDVua3/rDVqVs3sR5GVCpwuhVV/YtQi+uhNu/xUC6nksLD3TV1VijGFhfAoXv7aQJTtSee6ybvz3ml6a8Gu7wkLYs9QOslaa4IYQGqln+pW1bY5t2okZAqERMPp1OLARfvu3R8PSpK8qpbDQ8NPGfVz25iJu/N9y/PyEGRMHcsOAtjphuTdI2WLnwG1zdtnb1XTZ5rppMOfvkHu85t6zSOoOmHGL7XR1h/g5NuEXVUadMRLiboDf/wt7VrjnPSpBT8dUheTkF/DNmmTeWbCDhJRM2kSE8vzl3biydyuCA/3LfwFVOxS155d1pg826e9dVe3hAHaI51+fh6OJsP0XuPoTiKqh0VWPJcMnl9n3btwWRjxZtddL3QFpO6D/nacuv/BfkPAbfH0n3LGw5FLZaqZn+solGTn5vL8ggaEvzuMvX64nJNCf16+N49eHh3F9/7aa8L1N4lKo3/xkhU5pwmPhSA0NsZyyxSYAG4BsAAAgAElEQVTdXtdDxgF4bzhsmFH975uZahN+1mFoeiZsnMGJsUAqK36O/d3x/FOXBzeEy96C1O3wy9NVe49K0jN9VabUjBw+WryLjxfv4lh2PgPbRfJ/Y3sypGOUNuN4s8Slp06aUprwGDAFdmz9omqe6rJttv19zt/sz4xb4MtbbYfohf+CwGoYeC8nHSaPtU1YN86EI4nw9URIWmEHoausbbNtJ3lJn1nsUHsFsOwdOGMUtBtW+fepBE36qkRZuQW8OHsLU5cnkp1XyIVnNuPOYe2Ja6M36Xi9o0n2jHrg3eVv6zzaZnUn/fg50Kw7NGppn4//Hn59Fha9apuYrvrYvTHkZcO062DfOrjmM4gZDNnHwP8Be4VR2aSfk2G/qPpNKH2b856E7T/DN3fDxMX2CqCGuNS8IyIjRWSriGwXkcdKWN9GROaJyBoRWS8io5zWPe7Yb6uIXOjO4FX1SM3I4boPlvLR4l1c0iOanx8ayrs39tGEX1MKC22Nd3VxngS9PDU1xHLWYRtXpwtOLvMPhPOfgXFT7fu/Oww2f+ee9yvIt1cROxfY5pbOjpQV3NCWWP4xs/JNWjt/sze9dbyg9G2CQuGyd+wkNbMfr9z7VFK5SV9E/IE3gYuArsC1ItK12GZ/B6YbY+KAccBbjn27Op6fCYwE3nK8nqqldh7K5Iq3F7Mp+RhvX9+bl67qSYemDTwdVt2Rlw0fXwLvDq2+xJ+4FILqQ7Nu5W/bMBr8g6o/6e/41TYjdSzhvLDzKNvpGdkePr8Bfvor5OdW/r0KC+G7+2DL9zDy39Bz3Knru4+FzBTYtaByrx8/B4IalH6nc5HWfWHQA7DmM9j6U+XeqxJcOdPvB2w3xiQYY3KBacCYYtsYoOj6pBGQ7Hg8BphmjMkxxuwEtjteT9VCq3Yf5sq3F3MsK48ptw9gZLcWng6pbjHGXu7vXmQ7NZe9Uz3vk7jE3izkyjgwJ4ZYruYbtOLnQkgEtOpT8vrwtnDLT9DvDlj6Jnw0ynYwV5QxMOdvsHYyDH8cBtx5+jYdL7AziW34snKvHz8X2g+HABeGBR/+mP3y/e4+OzhbDXAl6bcEnD/dJMcyZ08BN4hIEjALuLcC+yIiE0RkpYisTElJcTF05U4/bdzPde8vpUFwADPvGsRZbbUpp8bN/5etHDnvCeg0En77P8g46N73yDoCB/4o/yzUWXXX6hcW2kTZYcSps3cVF1APRr0IV30EB7fAu0Ng9t/slUthoWvvteAlWPqW7Ugd9mjJ2wSGQOdLYPO39sqrIg5stE02JV2xlCSgHlz+jk34PzxUsfeqJHeVbF4LfGSMaQWMAj4VEZdf2xjznjGmjzGmT5MmOvRuTftw0U4mTl5FlxYNmTnxbGKjwjwdUt2zbpq9UzPuBhj8EFzwPORn245Md0paARjX2vOLVHfST14Nxw/ZtnRXnHk53PEbtOoHy96FSRfCf86A7+63Xx6lNYstfx/mPQc9xtlqoLIql7pfCTnHYPvcih1LaaWaZWne3Z7x//EVbKzE1UUFuZKY9wKtnZ63cixzdiswHcAYswQIBqJc3Fd5SGGh4dnvN/H0d5s4v0szpt4+gMj6jjFBcjJg2vX2rFBVr12L4Jt77N2bF//XJqOoDnbI49Wf2uoSd0lcAuJfejNKScJj7N27WYfdF4ezbbNB/KD9ua7vE9kerp8Of9kBV/4PYgbZipvJY+HF9rbcc+NMW5IJsH46zHrElkiOeQP8ykl9scMhNAo2fFHBY5kDLXpCg+YV22/QA7bJbcFLrl+1VJIrJZsrgI4iEotN2OOA64ptkwicB3wkIl2wST8F+BaYIiIvA9FAR2C5m2JXVZCdV8CDn6/lx437GX92DP+4pCv+fk5nPpu/sx1dTbtCszM9F6ivS90Bn19vE+s1n57aDjz0z7BuKvz0OIz/ofyaelckLrVJKagCV3PhTqNtVse4+vGz7Vl7aETF9w1uZDteu4+1TTE7F8CW72DLLHvW7B8EbQfBroX2S3Xsh7YqqDz+AfaKYs2ntozTlZLK42mQtByGPFLx4/APgLGTbAd7eV9IVVTuqxtj8oF7gNnAZmyVzh8i8oyIjHZs9jBwu4isA6YC4431B/YKYBPwE3C3MaagOg5EuS4tM5frP1jGjxv38/eLu/DkpcUSPsCG6fZ38pqaD7CuOJ4Gk68CxJ61Fk+oIY3h3L/bjt1N31T9/fJzbL1723LG2ymuqGyzOmbRSt9vr2Q6lVHe6KrAYPs6o1+HR7bBzT/ZWvnDO+10kOOmVOwGr+5X2Sa2rbNc237Hr2AKyy7VLEvjNpX74qsgl27OMsbMwnbQOi97wunxJmBQKfs+DzxfhRiVG+1OzWT8hyvYeySLN6/rzcU9SqjQST9gxwEXf5v0jXHPWaY6KT/Xlh8e3QN/+hYi2pW8Xe+bYMX/YO4/bOduVe5K3bfOJrGKtOeDrZyB6mnXP9EG7uZbePz8oe1A+3NhJdNP637QqI1t4ile1lmS+Dl2VNKWJcw3XIvo2Dt1yIJtKYx+YxGHj+cy+bb+JSd8sDemmELoc4vtYDum3TBuZYwt0du9CMa8ZRNTafz8YeS/7PAAS96o2vuemDSlgkm/XgPbvl0dSX/bbGjYsnY2IYpAtytgxzzIPFT2toUFrlUg1QKa9OsAYwxvz9/B+A+X06JRMN/cPYi+MWVcRq7/3Lb79rjGPtcmHvda+JJtqx/+OPS4qvztY4faEsKFL8OxfZV/38SlENkB6leiQq46KniKZpbqeEHtvZLsfpW9aWzT12Vvt3c1ZKVVvmmnBmnS93GZOfncM2UN//5pC6O6t2DmXWfTNrKMTrxD222S7341NO92solHucfGL+HX5+wXaml14iW54DkozINfnqnc+xYWnhxkrTIiYt1/g9buxZCb4Xqppic0OxOadC5/tM/4SlQgeYgmfR+261Aml7+1iB837uOvozrz+rVx5c9otWE6INDtSnuTStOukLy2RuL1eXuWw1cT7Y1Ro1+v2NltRCwMuAvWTanc+Pap8fZMtCI3ZTkLj7EDtRXkVW7/ksTPBf969kqmthKBbmNt01hZdwDHz7FzDddAR2xVadL3UfO2HmT0G79zMD2HT27pz4Sh7csfCtkYW88cOxQaOtr7o3ue7MxVlZd+AKZea8eyuWZy5eZIHfoIhDW1JZwV/XucmDSlCknfFNqOZ3eJnw2xQypWPuoJ3a+0v0u7caqoAqkiN2R5kCZ9H2OM4Y1f47nloxW0Cg/lu3sGM7hjKRNfF7d3lb2E73H1yWXRcfYM0Z3/2euin5+yd3heOw3CIiv3GvUa2CEa9ixz/c5NY2Drj7D4DQhrUnqVUHncPdpm6g47kYgXtIET0Q5anmWHyChJvOOuXXdXIFUTTfo+JCMnnzs/W8VLc7Yxpmc0X048m9YRFZiObf10e7nd5dKTy6Lj7G9t16+8xGW2WWbg3dC0c9Veq9f1tpN97hNlzyNbWGhr+98dAlPH2aF+R79R+Q7Tohu03FWrf6JU0wuSPtgmnv0bIGXr6evia3EFUgk06fuIHSkZXPbmIn7efJB/XNKV/17Ti5CgCpSOFeTbUs0zRtq7HIs0PRP8AjTpV1ZhAfz4Z2gQXbk7NYvz84ORL9gy2sWvlfx+G2bA22fD9D/ZL4bL3oZ7V9m/bWU1aOHeIZbLmlmqNup2BSCnd+jm58KO+bZpp7ZWIBWjSd8HfLN2L5e9sYi0zFw+vbUftw6OrfhUhgnz7Rji3a8+dXlgsHbmVsXqj2177wXPQr367nnNtmfbIQJ+f8V2roL90l47Bd7sZycHwdgxae5ZAb2uc23ogbL4+dkJw92R9ItmlvKWs3ywY+nEDjl9/tzEJZCb7lXHotMlerGMnHye+GYjM1fvpXebxrx2bRytwivQnONs/ef2DL+kzqjoXrDpW70zt6KOp8Evz0LbwbYayp3Of8a21c/5B7QbDgv/A0d22+kGr/oYuox2/xgu7qrVT5hvm5tqc6lmSbpfBd/ea696i+66jZ9jr4Bia3ae26rQM30vtSbxMKNeXcjXa/Zy/3kdmX7HwMon/NxM2PIDdL2s5KqS6DjIPlL9sydVt8xUOwpiytaKj5NeGfOet5/bRf92/5dl4zZw9r22Se67+2yp4LipcOdCOPOy6hm0qyjpV7WSK362naSkspVEntLlUvALPLWJJ36OHdDNXVdxNUDP9L1MQaHh7fnb+e/P8TRvGMzndwws++5aV2yZBXmZp1btOCvqzN231nvaYIvLOgwfnOv0xSXQqLU9noh2J38i29vkFhhStffbtx5WToK+t9ub3KrD4AftWDqxw6HDedV/FRYRayuQsg5Xvh79xMxS51S9yammhYTbK+E/ZtrmuiOJcGibHa7Ei2jS9yLJR7J44PO1LN+ZxqU9o3nusm40CnHDf5wN06FhK2hTyuiLTbvaM5zkNbYt2dsUFsJXd8LRvbad2xTaksG0BPuz6RtbluqscRs70UaXSyr+fsbAj3+xSeKcapz0OijM3qlbU06Ube6sfNLfvwHS93lNeeNpuo+1o27uXgwHN9tlXtSeD5r0vcasDft47Mv1FBQa/nNVT67o3bLinbUlyTwE23+xTQWlNQkE1LPlaN7ambvwP7DtJxj1kv1PW5Ksw44vgZ329+bvYPqNtswx7vqKvd+GL2wH3+jXq2f8eU9xrtVveVblXiN+tv3tJTcynabTRRAYZv/Gx/ZCRHt7dehFNOnXcpk5+Tzz3SY+X7mHnq0a8eq4OGLcOZ3hH1/ZAaVKa9opEh1nZyLyts7c7b/YtvXuV0Pf20rfLiTcJrKiZDbgLjv08Td32VmjBt7l2vvlpNvO1eje0OuGqsdfmzR2wxDL2+bYz6Z+U7eEVOOCQqHzKHt1mJcFfW/1dEQVph25tdim5GNc+vrvTF+1h7uGt2fGxLPdm/DB3pDV9MzybyyJ7gU5R+1ZsLc4vNuWLzbtCpe+UrEvq3r14brPbefd7Mdh3j9d68D87UXI2A+j/q/aZ0CqcfXq27t6K3uDVmaqnaPXy5pDTtP9KttBX5DjlVcsPvav0nes23OEce8tITM3nym3DeAvIzsT6O/mP1dagp3ezZXhfZ07c71BXra9Oamw0E5DWJnxXQLqwdiP7Bn7b/+GHx8te/7SlG2w9G07uXlF5qD1JuGxlT/T3/4zYNwzS5YntTvHXhkGhtnKHS+jzTu10OrEw9z0v+U0Dgtk6u0DKl+KWZ6i0rNupbRzO2vSxQ7RkLzG/TXn1eHHP9svqHFTq9bm6h9gJ9IOaWwnMck+AmPePL3yxBj46VEIDIXznqpS6LVaeIwdorky4mfbAeNaxLk1pBoXEGSnsczJqNzAeR6mSb+WWbU7jZsmrSCyfhBTbx9AdOMqlg6WpmhEzbaDoHHr8rcPCPKeztzVn9ifIQ/b9teqErFVMiGN7Vj4Oel2gm3nqQu3/GDnSB35QuUmKfEW4TH2rtT83FMncS9PQb490+98iW80e5XVP1TL+cCn7ztW7ErjT/9bTpMG9Zg2oRoTPtiz4NR42z7pqug4O6RAWU0cnpa8Bn54xN6les7f3Pe6IjD0z7YCaOssmDwWso/ZdXlZtt2/aVdbl+/LKjvEctJy2yHu7e35PkDP9GuJZQmp3PzRCpo3Cmbq7QNo1jDYTo+34CVHB6TYmXmk+G8/u84/yA4KNfgB18oE139ha++7jnE9yOg4WPk/2xcQ1aGyh1p9jqfB53+ylSFXTqqeuUr73W6Hq/jqTvhkNFz/Jax4396oc9P3tjnIlznX6lek2WzbbDtwX/tzqiUs5Tof/xfqHRbvOMStH62kZXgIU27rT9OGwXaGoqVv2btE2w2zZ1em0DbLnHhcCDieZ6TAoldh5Ycw+H7of2fpnZeFBXY89o4XVOwmm+he9ve+tTWT9AvyXL9rs7AAvrzNVs7c8lPlx6x3RY+r7TACX9wEky60Z71nXm4H5PJ1RXdkV7QzN36OHXbBeQRX5RGa9D1s0fZD3PrxCtpEhDL5tgE0aeDoGNr+sx318tLXXG+X3r8Rfn3WzqO67F0Y9hfofdPpiXPnApscXanacdakMwQEO+bQdaHzt7JyMuyNUQm/QbOutq67ZW/7u2mXkr8Ifvs37PgFLn218jcOVcQZI+GGL2HKOHu1VZN3xnpS/ea2Q78iSf9QPBzcVHc+o1pOk74HLdiWwu2frCQ2KozJt/Unsr5TJcDayRAaVbE64ObdbG357iXwy9Pww8N2xqRz/mYrboo60DZ8AUENoFMFx1f3D4Tm3at3bP3sozD5KkhaCWfdZJPLpm/sEMVgv3Ra9Dz1iyA13ib9XjfYL7maEjMY7vjNVvQ0alVz7+tJfn4QXoEhlo2BWX+2/94q0n+kqo0mfQ+Zt/Ugd3y6ivZN6jP5tv5EhDlVQmSmwtafoN+Eyg1K1XYg3PyjHdjql6dh5m226ee8J2wTxKZvbVt+ZQYVa9EL1k21nbnursI4ngafXQn718NVH57sbzDG9iMkr4G9qyF5tf0SWPb2yX2b94CLX6r5u4W97BZ8twiPgbRdrm274QtImGc7wBs0r86olIs06XvAL5sPMPGz1XRsZhN+49BipW8bZ0Bhnp38orJE7E0wHUbYUQF/fRamXGX7CHLTK960UyQ6znZcpm6HJp0qH19xmYfg08vssMfXfAZnXHRynYhNrpHtTzYrFeRDyhb7BZCy1fZhVHVkTOWa8Fh7NVnekBzH0+wk7i37eN1IlL5Mk34NMsbw6dLdPPv9Jrq0aMint/SnUWgJZ/JrJ9szV3cMyevnZxNll9Gw5hM7TEDjthBTyU7Hos7c5DXuS/rpB2wlzOHdduLwDueVv49/gP18qmvYYlW68Bh74nA8rewO87lP2IHs/vRN9VRSqUrRpF9Djufm89eZG/h6bTLndm7Kf6/pVfKwyPs32lr4kf92bwABQfaGkl432FmLKvufMOoMCAixFTw9r6l6XEf32oR/bB9c/0XdqIDxds6jbZaW9HctgjWfwqD79Yu5ltGkXwMSUjKY+Nlqth1M5+HzO3H3OR3w8yvlsnjdVFs/X12dXoHBp95JWlH+AdCih3s6cw/vho8vtWeDN34FbfpX/TVV9XOu1W9VQqVUfg58d7+9ohz2WI2GpsqnSb+a/bRxP3/+Yh0B/sLHN/djaKcybtEvyLNz1Xa6sHrrzKuqRS9Y85mtja/sFUPqDvh4NORm2Mv/ojlHVe0XXjTEcimjbf7+iq2ouv5LOxSxqlV0GIZqkl9QyAs/buHOz1bRrkkY3983pOyEDydr83tVcNKOmhYdZ6dXPBRfuf1TtsKHoyA/C8Z/rwnf2wSFQf1mJZdtHoqHhS/ZEuGOI2o8NFU+PdOvBinpOdw3dQ1LElK5rn8bnry0K/UCXDgjrkxtvicUDbOcvAaadq7Yvvs3widj7BXC+FkV31/VDuExtnnOmTHw/YO2imrkCx4JS5VPz/TdbNXuw1zy+kJWJx7mpat68s/Lu7uW8Itq83tcU/snjI7qaMcSr+jY+kf22Db8gHqa8L1deMzpZ/prp8CuhXD+M947M1Yd4FLSF5GRIrJVRLaLyGk9MyLyXxFZ6/jZJiJHnNYVOK371p3B1ybGGD5evItx7y2hXoA/X901iLFnVeAuTXfU5tcUP/+Kd+YaA98/YDv5bvqudg7YplwXHgNHk+zfE+x9FnP+ZsfXifuTR0NTZSu3eUdE/IE3gfOBJGCFiHxrjNlUtI0x5kGn7e8FnGdJyDLG9HJfyLXP8dx8Hp+5gW/WJjOiS1P+c3Up5ZhlcWdtfk2IjrODuxXkuzay5PrPbZ/FRS/WzbtYfU14DGDs1VtUB5j9Nztm0iWv+MZ4+T7MlTb9fsB2Y0wCgIhMA8YAm0rZ/lrgSfeEV/slpGRw52er2H4wg0cu6MRdw8soxyxNddXmV6cWvWxH7KFtdlC0smQchJ8eg9YDfH+8+boi3Gm0zaN7YP00O9+ANtnVeq58JbcEnGdMSHIsO42ItAVigV+dFgeLyEoRWSoil5Wy3wTHNitTUlJcDN3zftq4j9FvLOJQRi6f3NKfe87tWPGED9Vfm18dnDtzyzPrEcg9DqNf17NAX1FUq5+yGX54CCLaw5BHPBqSco27/weOA2YYYwqclrU1xvQBrgNeEZHTru2NMe8ZY/oYY/o0aVL7p5rLLyjkX7M2c+dnq2nftD7f3zuYwR2jKvdi3lKbX1xkBwiqX35n7qZv7SiZwx9171g9yrPqN7Mjni74PzsY3iX/rdpNf6rGuNK8sxdwnkS1lWNZScYBdzsvMMbsdfxOEJH52Pb+HRWOtJZISc/h3qmrWZqQxg0D2vCPS1wsxyyNt9TmF+fnZ4c4LutMP+uwPctv3h3Ovq/mYlPVz8/P3nF7aCv0vNZO9KO8gitn+iuAjiISKyJB2MR+WhWOiHQGwoElTsvCRaSe43EUMIjS+wJqvZW70rj4tYWs3XOEl6/uyXOXuViOWZa1kyGsSe2vzS9JdBzs32A7c0sy+++2qmPMm7W/DFVVXJNOEBIBFzzv6UhUBZR7pm+MyReRe4DZgD8wyRjzh4g8A6w0xhR9AYwDphljjNPuXYB3RaQQ+wXzgnPVT62XfQz+dwFmyEN8eKwv/5y1mVbhIXx8Sz+6tGhY9dcvqs3vf4d3JsUWvSA/2w5xXLzqaPsvsPYzGPyQvSJQvmfUfyDvuHc1SyrX7sg1xswCZhVb9kSx50+VsN9ioHsV4vOsHb9CymbyvrqHadnPcE6XPrx0Vc+Kl2OWpqg2v+e17nm9mubcmeuc9HMy4LsHILIjDHvUM7Gp6tegmacjUJWgpRRlyNs6hwzCOFIYwueN3+Ldqzq5L+GDbdpp0dN7avOLi2hnJwgv3q7/yzO2jG/MG9q5p1Qto0m/NMaQu/kn5hd0J+nc1wnP3oPfDw/YO0vdoag239s6cJ0VdeY6V/AkLoXl79mpHtsM8FxsSqkSadIvRdqOlYTlpZIWPYzew0bbycU3fgkrPnDPGxTV5ncb657X85ToXvYLrCAP8rLhm3ugUWs7H69SqtbRpF+KFXM/B2D4xY6xcAY/BB0vgNl/tZNzV0VRbf4ZI72/Eyw6Dgpy4OBmWPCiHUf90legXn1PR6aUKoEm/RJsP5hO5L7f2BvamTZtYuxCPz+4/F17U8oXN9ka9Eq/gZfW5pekhWNYpdUf28kzel3v2hy3SimP0KRfgte/X0acxBPe8+JTV4RGwFUf2flcv76r8u37RbX5HXxgkomIdlCvkW32CouCC7VmW6naTJN+MUsTUjHb5+EvhtAzR52+Qas+cMFzsHUWLH6tYi+enwOLX4etP3rHuPmuELHt+gCjXoKQcM/Go5Qqk86c5cQYY8fUCd6ACY5EouNK3rD/HZC4GH5+Glr1hbZnl/fC8MdMu/2R3fYMf9AD7j8ATxl4N8QMhq6jPR2JUqocmvSdfL9+HxuSDnNuw/VIhwtKn/RbxI4YuX8DzLgF7lgI9UsZKC5xqR1rfO9KaNYNbpjpe23enS60P0qpWk+bdxxy8gt4cfYWLo3aT73cw7ZSpyzBjeDqT2yH7szboLDg1PWpO+DzG2HShXBsrx1/5o4FvpfwlVJeRZO+w+SliexJy+LBmF0gftD+3PJ3at4dRv0fJMyH3160y46nwY+PwZv97fgz5/wN7l0FcTeUfuWglFI1RJt3gKNZebz2azxDOkYRk7bIttOHRri2c9yNsHsJ/PZvyEqDdZ9Dbjr0/hMM/6uOT6KUqlX0TB94e/4Ojmbl8dehkXYcmYoMcywCF/8Hmnaxww+06Q8TF8Olr2rCV0rVOnX+TH/vkSwmLdrJ5b1a0iVzuV1YXnt+cUGh8Kdv4UgitDrL/UEqpZSb1Pkz/f/M2QrAwxeeAfFzoX5zaN6j4i9Uv4kmfKVUrVenk/4fyUf5as1ebh4UQ8sGgbDjF+g4wjbZKKWUD6rTSf+FH7fQKCSQu4Z3gKQVkH204k07SinlReps0l+wLYWF8Ye499yOdmKU+DngFwDthns6NKWUqjZ1MukXFBr+OWszrSNCuGFAG7swfi60GWhvulJKKR9VJ5P+12v2smV/On+5sDP1AvzhWDIc2FCxUk2llPJCdS7pFxYa3py/na4tGnJx9xZ2Yfxc+1vb85VSPq7OJf15Ww+SkJLJHcPa4efnqNKJn2On+GvS2bPBKaVUNatzSf+9BQlENwpmVNFZfn6uHTun4/laqqmU8nl1KulvSDrKsp1p3DwolkB/x6EnLoHcDG3aUUrVCXUq6b+/MIEG9QIY16/1yYXxc8A/CGKHei4wpZSqIXUm6e89ksUPG/Yxrl9rGgQ7TVMYPxfaDoKgMM8Fp5RSNaTOJP0Pf98JwPhBsScXHt4Fh7Zq045Sqs6oE0n/WHYe01bs4ZIeLWjZOOTkCi3VVErVMXUi6U9bnkhGTj63D2l36or4uRAeC5HtPROYUkrVMJ9P+nkFhXy4aBcD20XSraXTEAt52bBzgT3L11JNpVQd4fNJ/4f1+9h3NJvbh8aeumL375CfpU07Sqk6xaeTvjGG9xcm0L5JGMM7NT11ZfxcCAiBmEGeCU4ppTzAp5P+koRU/kg+xu1DnIZcKBI/x9bmB4aUvLNSSvkgl5K+iIwUka0isl1EHith/X9FZK3jZ5uIHHFad5OIxDt+bnJn8OV5f0ECUfWDuCyu5akrUndAWoKOqqmUqnPKnRhdRPyBN4HzgSRghYh8a4zZVLSNMeZBp+3vBeIcjyOAJ4E+gAFWOfY97NajKEH8gXTmbU3hwRGdCA70P3Xlttn2tyZ9pVQd48qZfj9guzEmwRiTC0wDxpSx/bXAVMfjC4G5xpg0R6KfC4ysSsCu+mDhTuoF+HHjwLanrsjLhqVvQ3QchMfURChKKVVruJL0WwJ7nJ4nOZadRkTaArHArxXZV0VLeNQAAAb6SURBVEQmiMhKEVmZkpLiStxlSknP4as1exl7VisiwoJOXbnsHTiaCCOervL7KKWUt3F3R+44YIYxpqAiOxlj3jPG9DHG9GnSpEmVg/h0yS7yCgu5dXCxMs3MQ7DwP9BpJLQbVuX3UUopb+NK0t8LOA1LSSvHspKM42TTTkX3dYus3AI+XbqbEV2a0a5J/VNXzn8BcjPh/GerMwSllKq1XEn6K4COIhIrIkHYxP5t8Y1EpDMQDixxWjwbuEBEwkUkHLjAsazazFidxOHjeacPuZCyDVZOgj43Q5NO1RmCUkrVWuVW7xhj8kXkHmyy9gcmGWP+EJFngJXGmKIvgHHANGOMcdo3TUSexX5xADxjjElz7yGcVFBomPT7Tnq2bkzfmPBTV859wg6fPPzx6np7pZSq9cpN+gDGmFnArGLLnij2/KlS9p0ETKpkfBXy8+YD7DyUyRvXxSHO4+nsXADbfoQRT0FYVE2EopRStZJP3ZH7wcIEWjYOYeSZzU8uLCyE2X+DRm2g/0TPBaeUUrWAzyT9nYcyWbn7MLcOjiXA3+mw1k+D/ethxJMQGOy5AJVSqhZwqXnHG8RGhTHv4eE0aVDv5MLc4/DLs9DyLOh2peeCU0qpWsJnkj5ATFSxeW6XvAHpyXDVhzpmvlJK4UPNO6dJ3w+/vwJdRkObAZ6ORimlagXfTfq/PgcFuXC+DreglFJFfDPp798Iaz6DfhMgol352yulVB3he0nfGJjzdwhuBEMf8XQ0SilVq/he0t/+MyTMg2GPQmiEp6NRSqlaxbeSfkG+PcuPaAd9b/N0NEopVev4VMkmaz6BlC1w9acQEFT+9kopVcf4zpl+9jGY909oczZ0udTT0SilVK3kO2f6ecehdX8Y8pDeiKWUUqXwnaTfoDmMm+zpKJRSqlbzneYdpZRS5dKkr5RSdYgmfaWUqkM06SulVB2iSV8ppeoQTfpKKVWHaNJXSqk6RJO+UkrVIWKM8XQMpxCRFGB3FV4iCjjkpnBqA187HvC9Y/K14wHfOyZfOx44/ZjaGmOalLdTrUv6VSUiK40xfTwdh7v42vGA7x2Trx0P+N4x+drxQOWPSZt3lFKqDtGkr5RSdYgvJv33PB2Am/na8YDvHZOvHQ/43jH52vFAJY/J59r0lVJKlc4Xz/SVUkqVQpO+UkrVIT6T9EVkpIhsFZHtIvKYp+NxBxHZJSIbRGStiKz0dDwVJSKTROSgiGx0WhYhInNFJN7xO9yTMVZUKcf0lIjsdfyd1orIKE/GWBEi0lpE5onIJhH5Q0Tudyz3yr9TGcfjzX+jYBFZLiLrHMf0tGN5rIgsc+S8z0XEpYnBfaJNX0T8gW3A+UASsAK41hizyaOBVZGI7AL6GGO88qYSERkKZACfGGO6OZa9CKQZY15wfDmHG2Me9WScFVHKMT0FZBhjXvJkbJUhIi2AFsaY1SLSAFgFXAaMxwv/TmUcz9V4799IgDBjTIaIBAK/A/cDDwEzjTHTROQdYJ0x5u3yXs9XzvT7AduNMQnGmFxgGjDGwzHVecaYBUBascVjgI8djz/G/of0GqUck9cyxuwzxqx2PE4HNgMt8dK/UxnH47WMleF4Guj4McC5wAzHcpf/Rr6S9FsCe5yeJ+Hlf2gHA8wRkVUiMsHTwbhJM2PMPsfj/UAzTwbjRveIyHpH849XNIUUJyIxQBywDB/4OxU7HvDiv5GI+IvIWuAgMBfYARwxxuQ7NnE55/lK0vdVg40xvYGLgLsdTQs+w9i2Re9vX4T/b+fuXaOIojAO/w4JgiRFEOyihSGQStIKFqnshSAJCCltrW0EwVKxswix84NANMk/kCKlRQqFtDYhbKpgZ5G8FvcsbJGPjRsY78z7NDs7szPcy2FfhnOHeQ/MAPPAIfCm2eFcXURMAhvAc0m/B4/VWKcz5lN1jSSdSJoHpimdjbl/vVZbQv8AuDPwfTr3VU3SQX4eAd8oxa5dL/uu/f7rUcPjGZmkXv4pT4FVKqtT9ok3gI+Svubuaut01nxqr1GfpGNgB3gATEXEeB4aOvPaEvrfgdlczb4BLAHbDY9pJBExkQtRRMQE8Aj4efFZVdgGVnJ7BdhqcCzXoh+O6TEV1SkXCdeAfUlvBw5VWafz5lN5jW5HxFRu36Q8sLJPCf/F/NnQNWrF0zsA+QjWO2AM+CDpdcNDGklE3KPc3QOMA59qm1NEfAYWKK+A7QEvgU1gHbhLeYX2E0nVLIyeM6cFSttAwC/g2UA//L8WEQ+BXeAHcJq7X1D64NXV6YL5LFNvje5TFmrHKDfq65JeZUZ8AW4Be8BTSX8uvV5bQt/MzC7XlvaOmZkNwaFvZtYhDn0zsw5x6JuZdYhD38ysQxz6ZmYd4tA3M+uQv1vzI6her7EIAAAAAElFTkSuQmCC\n", "text/plain": [ "<Figure size 432x288 with 1 Axes>" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "<Figure size 432x288 with 1 Axes>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Retrieve a list of accuracy results on training and test data\n", "# sets for each training epoch\n", "acc = history.history['acc']\n", "val_acc = history.history['val_acc']\n", "\n", "# Retrieve a list of list results on training and test data\n", "# sets for each training epoch\n", "loss = history.history['loss']\n", "val_loss = history.history['val_loss']\n", "\n", "# Get number of epochs\n", "epochs = range(len(acc))\n", "\n", "# Plot training and validation accuracy per epoch\n", "plt.plot(epochs, acc, label = \"training\")\n", "plt.plot(epochs, val_acc, label = \"validation\")\n", "plt.legend(loc=\"upper left\")\n", "plt.title('Training and validation accuracy')\n", "\n", "plt.figure()\n", "\n", "# Plot training and validation loss per epoch\n", "plt.plot(epochs, loss, label = \"training\")\n", "plt.plot(epochs, val_loss, label = \"validation\")\n", "plt.legend(loc=\"upper right\")\n", "plt.title('Training and validation loss')" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.4" } }, "nbformat": 4, "nbformat_minor": 2 }