{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## Importing libraries" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import os\n", "import numpy as np\n", "import pandas as pd\n", "import matplotlib.pyplot as plt\n", "import random\n", "from sklearn.neighbors import NearestNeighbors\n", "import math" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "import random\n", "from scipy import ndarray" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "import LoGAN" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Import dataset" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "from collections import Counter\n", "from imblearn.datasets import fetch_datasets\n", "from sklearn.manifold import TSNE" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "def createTrainParameters():\n", " data = fetch_datasets()['yeast_me2']\n", " labels = data.target\n", " features = data.data\n", " label_1 = list(np.where(labels == 1)[0])\n", " label_0 = list(np.where(labels == -1)[0])\n", " features_1 = features[label_1]\n", " features_0 = features[label_0]\n", " \n", " ttData = LoGAN.TrainTestData(\n", " features0=features_0,\n", " features1=features_1,\n", " trainFactor=2/3)\n", " \n", " data_embedded_min = TSNE(perplexity=.1).fit_transform(ttData.features_1_trn)\n", "\n", " result_min = pd.DataFrame(data=data_embedded_min, columns=['t-SNE0', 't-SNE1'])\n", " \n", " min_t = np.asmatrix(result_min)\n", " min_t = min_t[0:len(ttData.features_1_trn)]\n", " min_t = min_t[:, [0,1]]\n", " \n", " parameters = LoGAN.GanTrainParameters(\n", " n_feat=len(features[1]),\n", " batch_size=30,\n", " min_t=min_t,\n", " features_0_trn=ttData.features_0_trn,\n", " features_1_trn=ttData.features_1_trn\n", " )\n", " \n", " return (data, labels, features, parameters, ttData)\n", "\n", "(data, labels, features, params, ttData) = createTrainParameters()" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "gan = LoGAN.GAN(n_feat=params.n_feat)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Creating label and feature matrices" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(1484,)" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "labels.shape" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(1484, 8)" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "features.shape" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Dividing data into training and testing datasets" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(990, 8)" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ttData.trainData.shape" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(990,)" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ttData.trainLabels.shape" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(494, 8)" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ttData.testData.shape" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(494,)" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ttData.testLabels.shape" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Defining ML models" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "def lr(X_train,y_train,X_test,y_test):\n", " from sklearn import metrics\n", " from sklearn.linear_model import LogisticRegression\n", " from sklearn.metrics import confusion_matrix\n", " from sklearn.metrics import average_precision_score\n", " from sklearn.metrics import f1_score\n", " from sklearn.metrics import balanced_accuracy_score\n", " logreg = LogisticRegression(C=1e5, solver='lbfgs', multi_class='multinomial', class_weight={0: 1, 1: 1.3})\n", " logreg.fit(X_train, y_train)\n", " y_pred= logreg.predict(X_test)\n", " con_mat=confusion_matrix(y_test,y_pred)\n", " bal_acc=balanced_accuracy_score(y_test,y_pred)\n", " tn, fp, fn, tp = con_mat.ravel()\n", " print('tn, fp, fn, tp:', tn, fp, fn, tp)\n", " prob_lr = logreg.predict_proba(X_test)\n", " aps_lr=average_precision_score(y_test, prob_lr[:,1]) \n", " print('average_pr_score:',aps_lr)\n", " f1 = f1_score(y_test, y_pred)\n", " print('f1 score:', f1)\n", " print('balanced accuracy:', bal_acc)\n", " print(con_mat)\n", " return(aps_lr,f1, prob_lr,con_mat)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## LoRAS training" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "num_samples = 30 #kneighbours\n", "num_RACOS = (ttData.nFeatures0 - ttData.nFeatures1) // ttData.nFeatures1\n", "nb_list = LoGAN.Neb_grps(params.min_t, num_samples)" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "(918, 8)" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tLoRAS_set = np.asarray([\n", " gan.noise.tLoRAS(params.features_1_trn[nb], num_samples, num_RACOS)\n", " for nb in nb_list\n", " ])\n", "\n", "tLoRAS_1 = np.reshape(tLoRAS_set, (len(params.features_1_trn) * num_RACOS, params.n_feat))\n", "tLoRAS_1.shape" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [], "source": [ "tLoRAS_train = np.concatenate((tLoRAS_1, params.features_1_trn, params.features_0_trn))\n", "tLoRAS_labels = np.concatenate((\n", " np.zeros(len(tLoRAS_1))+1,\n", " np.zeros(len(params.features_1_trn))+1,\n", " np.zeros(len(params.features_0_trn))\n", " ))" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "tn, fp, fn, tp: 6 11 418 59\n", "average_pr_score: 0.9146395911815266\n", "f1 score: 0.21572212065813529\n", "balanced accuracy: 0.2383154519669503\n", "[[ 6 11]\n", " [418 59]]\n" ] } ], "source": [ "aps_lr_tLoRAS, f1_lr_tLoRAS, prob_lr_tLoRAS, mat_lr_tLoRAS = lr(\n", " tLoRAS_train,\n", " tLoRAS_labels,\n", " ttData.testData,\n", " ttData.testLabels)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### LoGAN prototype" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [], "source": [ "#import numpy as np\n", "#import pandas as pd\n", "#import matplotlib.pyplot as plt\n", "%matplotlib inline\n", "#import keras\n", "#from keras.layers import Dense, Dropout, Input\n", "#from keras.models import Model,Sequential\n", "#from keras.datasets import mnist\n", "#from tqdm import tqdm\n", "#from keras.layers.advanced_activations import LeakyReLU\n", "#from keras.optimizers import Adam\n", "#from keras.optimizers import RMSprop\n", "#from keras import losses" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(34, 8)" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "params.features_1_trn.shape" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "scrolled": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Model: \"sequential_2\"\n", "_________________________________________________________________\n", "Layer (type) Output Shape Param # \n", "=================================================================\n", "dense_8 (Dense) (None, 25) 225 \n", "_________________________________________________________________\n", "leaky_re_lu_6 (LeakyReLU) (None, 25) 0 \n", "_________________________________________________________________\n", "dense_9 (Dense) (None, 256) 6656 \n", "_________________________________________________________________\n", "leaky_re_lu_7 (LeakyReLU) (None, 256) 0 \n", "_________________________________________________________________\n", "dense_10 (Dense) (None, 512) 131584 \n", "_________________________________________________________________\n", "leaky_re_lu_8 (LeakyReLU) (None, 512) 0 \n", "_________________________________________________________________\n", "dense_11 (Dense) (None, 256) 131328 \n", "_________________________________________________________________\n", "leaky_re_lu_9 (LeakyReLU) (None, 256) 0 \n", "_________________________________________________________________\n", "dense_12 (Dense) (None, 25) 6425 \n", "_________________________________________________________________\n", "leaky_re_lu_10 (LeakyReLU) (None, 25) 0 \n", "_________________________________________________________________\n", "dense_13 (Dense) (None, 8) 208 \n", "=================================================================\n", "Total params: 276,426\n", "Trainable params: 276,426\n", "Non-trainable params: 0\n", "_________________________________________________________________\n" ] } ], "source": [ "gan.generator.summary()" ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Model: \"sequential\"\n", "_________________________________________________________________\n", "Layer (type) Output Shape Param # \n", "=================================================================\n", "dense (Dense) (None, 1024) 9216 \n", "_________________________________________________________________\n", "leaky_re_lu (LeakyReLU) (None, 1024) 0 \n", "_________________________________________________________________\n", "dropout (Dropout) (None, 1024) 0 \n", "_________________________________________________________________\n", "dense_1 (Dense) (None, 512) 524800 \n", "_________________________________________________________________\n", "leaky_re_lu_1 (LeakyReLU) (None, 512) 0 \n", "_________________________________________________________________\n", "dropout_1 (Dropout) (None, 512) 0 \n", "_________________________________________________________________\n", "dense_2 (Dense) (None, 256) 131328 \n", "_________________________________________________________________\n", "leaky_re_lu_2 (LeakyReLU) (None, 256) 0 \n", "_________________________________________________________________\n", "dense_3 (Dense) (None, 1) 257 \n", "=================================================================\n", "Total params: 665,601\n", "Trainable params: 0\n", "Non-trainable params: 665,601\n", "_________________________________________________________________\n" ] } ], "source": [ "gan.discriminator_min.summary()" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Model: \"sequential_1\"\n", "_________________________________________________________________\n", "Layer (type) Output Shape Param # \n", "=================================================================\n", "dense_4 (Dense) (None, 1024) 9216 \n", "_________________________________________________________________\n", "leaky_re_lu_3 (LeakyReLU) (None, 1024) 0 \n", "_________________________________________________________________\n", "dropout_2 (Dropout) (None, 1024) 0 \n", "_________________________________________________________________\n", "dense_5 (Dense) (None, 512) 524800 \n", "_________________________________________________________________\n", "leaky_re_lu_4 (LeakyReLU) (None, 512) 0 \n", "_________________________________________________________________\n", "dropout_3 (Dropout) (None, 512) 0 \n", "_________________________________________________________________\n", "dense_6 (Dense) (None, 256) 131328 \n", "_________________________________________________________________\n", "leaky_re_lu_5 (LeakyReLU) (None, 256) 0 \n", "_________________________________________________________________\n", "dense_7 (Dense) (None, 1) 257 \n", "=================================================================\n", "Total params: 665,601\n", "Trainable params: 0\n", "Non-trainable params: 665,601\n", "_________________________________________________________________\n" ] } ], "source": [ "gan.discriminator_maj.summary()" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Model: \"model\"\n", "__________________________________________________________________________________________________\n", "Layer (type) Output Shape Param # Connected to \n", "==================================================================================================\n", "input_1 (InputLayer) [(None, 8)] 0 \n", "__________________________________________________________________________________________________\n", "sequential_2 (Sequential) (None, 8) 276426 input_1[0][0] \n", "__________________________________________________________________________________________________\n", "sequential (Sequential) (None, 1) 665601 sequential_2[0][0] \n", "__________________________________________________________________________________________________\n", "sequential_1 (Sequential) (None, 1) 665601 sequential_2[0][0] \n", "==================================================================================================\n", "Total params: 1,607,628\n", "Trainable params: 276,426\n", "Non-trainable params: 1,331,202\n", "__________________________________________________________________________________________________\n" ] } ], "source": [ "gan.gan.summary()" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "\r", " 0%| | 0/30 [00:00" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plotCloud(ttData.trainData, ttData.trainLabels)" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plotCloud(tLoRAS_train, tLoRAS_labels)" ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAWkAAAFpCAYAAABee9lOAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAABIQElEQVR4nO3de3xT9f0/8NdJ2tKWXmhLuCMIrFWKLTDuAiKMDSqV20StFC8wmKL4BfkJWi6KAsqXjc2vysCpYGdF7kOQDVY2hxsXcawdOC5iaaFAqW2hF4pJk/P749OcJmmSJm0up83r+XjwgCYn53w+OeWdT96fmyTLsgwiIlIljb8LQEREjjFIExGpGIM0EZGKMUgTEakYgzQRkYoxSBMRqViQvwugNiUllTCZ/DMqMSYmHGVlt/xybX8L1LoHar0B1r2s7BZ0usgGj2VLWkWCgrT+LoLfBGrdA7XeAOvuKgZpIiIVY5AmIlIxBmkiIhVjkCYiUjEGaSIiFeMQPBfIsozKypuorq6EyWT02nWuX9fAZDJ57fy2NBotwsIiEBERDUmSfHZdInIdg7QLysqKIUkSYmPbQ6sN8lpACwrSoKbGN0FalmUYjTWoqLiBsrJixMa288l1icg9THe4QK+/jTZt4hAUFNxiWpySJCEoKBht2sRBr7/t7+IQkQMM0i6RIUkt860S9eK+D0Rq1TIjDxFRC8EgTUSkYgzSLVRm5oeYOHEcxoy5Fy+99ALKykr9XSQihTH7IIqn/hzG7IP+LorqMUi3QPv27cFHH32IBQsW4Xe/+wAVFRV45ZUMfxeLSGHKykTNd3kwZWX6uyiq55cgfeDAATz++OP48Y9/jISEhHrP5+TkYMqUKbjnnnuQkpKCL774wun5ampqsHr1agwePBj9+/fHSy+9hFu3AnMJRADYseNTPPLIY7jvvvvxox8l4KWXluHrr7/Cd9996++iEQEANGnpCOrRA5q0dH8XRfX8EqSrq6sxZMgQzJ49u95zZWVl+MUvfoH+/ftj165dmDhxIp599llcvHjR4fneffdd7Nu3D7/5zW+wadMm5Obm4rXXXvNiDdRLr9fj22/Po3//AcpjnTt3QceOnfDNN6f8WDKiOtoxY6HbsQ3aMWP9XRTV80uQnjhxIp5++mn07du33nOfffYZIiIikJGRgV69emHOnDlISkrCp59+avdcJpMJWVlZmD9/PoYOHYqkpCQsWbIEe/bsQXl5uZdroj7l5TdhMpkQExNr9XibNm1QVlbmp1IRUWOpLiedm5uLwYMHW00aGTp0KHJycuwef+nSJZSVlWHIkCHKY4MGDYIsyzh9+rTXy+sOY/ZBGGbO8GpniSxzzHNL5IvfHVIn1U0LLy0txd133231WExMDEpKSuweb348Li5OeUyr1SI6Otrha5yJi4uo99j16xoEBTX986zmk0zI+fmQP/kDgn72M7vHNPU6cXGx0Gg0KC+/YXWuGzduIC4uzu75NRqNS9v4eJsayuAPrtS7eFsW5EsF0G77BLpHpvigVL4RqPcccL3uqgvS7rYEPd1ytLfHoclk8siaGtKj6ZCyMiE9Ot3u+TyxdodGE4RevX6Er746jqSkfgCAK1cKcfXqFdx1V2+75zeZTCgurmjSdZtKp4v0exn8wdV6Gx9Kg5yVCeNDj7aY9ylQ7zlQV3dXArXqgnRcXBxKS63H9JaVlVm1lC21bdsWgGhRd+7cGQBgNBpx8+ZNh6/xF+2YsT7pKJkyZRreeuvXiI9PQIcOnfB///dr9O8/AD169PL6tck7fPW7Q+qjupx0UlISjh07ZvXY0aNHkZycbPf4rl27IiYmxuo1X331FSRJQu/evb1aVrWaMGEi0tOfwNq1q/HLXz6J8PBwvPLKSn8Xi1oo5su9yy8t6Rs3buDq1asoKCgAAPz3v/8FAPTs2ROpqal4++23sXLlSjzyyCPIzs5GTk4OXn/9deX1jz/+OMaOHYvp06dDo9Hg0Ucfxbp169CpUyeEh4dj5cqVePDBBxEdHe2P6qlCevqTSE9/0t/FoABgyhJ9LaasTLb2vcAvQfrQoUN46aWXlJ8nTZoEAMjOzkaXLl2wceNGrFixAp988gm6du2Kt99+G927d1eON4/oMJs7dy6qqqowb948GAwG/OxnP8PSpUt9VR2igGDMPghTViY0aelWwViTlq487uw4ahxJ5pgtK/Y6Dq9dy0eHDt28fm1fLvpvyVf1cyZQO5GaU70NM2dAzs+H1K0bgt//qMnHNae6e5o7HYeqy0kTkTpp0tIhdevW4FRuV48j16hudAcRqZOrI0w4EsWz2JImauY4uqJlY5AmauYsR1dYYvBuGRikiZo5RzlgR8GbmhfmpImaOUc5YNuhcdQ8MUgTtVDswGsZmO4gIlIxtqRboC++OISdO7fhzJlvUFVVhS+/POHvIhFRI7El3QLdvn0b/fsPwPTpT/i7KETURGxJt0A/+1kKAOBf/2ILmqi5Y0uaiEjFGKSJmglOTglMDNI+dORCCV7aeQpHLri/9yIRJ6cEJgZpH9qTcxWFN6qxJ+eqv4tCzRBXlwtM7Dj0oQeTO2JPzlU8mNzR30WhZoiTUwITg7QPDe0Zh6E9vb85bnn5TRQVXUNh4WUAwPnzZwEA3bv3QHBwsNevT0SewyDdAn355d+xatWrys9PPvkYAGDbtj3o2LGTv4pFRI3AIN0CpaSkIiUl1d/FICIPYMchEZGKMUgTEakYgzQRkYoxSBMRqRiDtItkWfZ3EbyipdaLqKVgkHaBVhsEg0Hv72J4hcGgh1bLQT5EasUg7YKIiDa4caMYev0PLablKcsy9PofcONGMSIi2vi7OETkAJtQLggLaw0AuHnzexiNNV67jkajgclk8tr5bWm1QYiMjFHqR0TqwyDtorCw1l4PZjpdJIqLK7x6DSJqXpjuICJSMQZpIiIVY5AmIlIxVeakR48ejcLCwnqPb9u2DUlJSVaPXb58GWPGjLF6LDIyEidOcBNWImr+VBmkt2/fDqPRqPz88ccfY+fOnejTp4/D12zbtg0dO4rF9DUafkEgopZBlUE6NjbW6ue//vWvSE1NdRp8Y2NjodPpvF00IiKfUn2T89y5czhz5gwmTZrk9Ljp06dj+PDhmD17Ns6dO+ebwhEReZkkq3wK3Zo1a3DkyBHs2rXL7vOlpaXYt28f+vXrB71ej82bN+PIkSP4/PPP0bZtWx+XlojIs1QdpE0mE0aNGoWnnnoKTzzxhEuvMRqNSElJwUMPPYRZs2a5fc2SkkqYTP55SwJ5Mkug1j1Q6w2w7sXFFdDpIhs8VtXpjiNHjqCkpAQTJkxw+TVarRYJCQl2R4cQETU3qg7Su3fvxr333utW2kKWZVy4cAGdOnHDVSJq/lQbpG/duoW//OUvmDhxotXjubm5GDduHIqKigAA+/fvx969e5GXl4ezZ89iyZIluHbtGlJTuRErETV/qhyCBwAHDhyARqOpN1GluroaeXl5MBgMAABJkvDuu++isLAQoaGhSExMxObNm9GhQwd/FJuIyKNU3XHoD+w49I9ArXug1htg3VtExyERUaBjkCYiUjEGaSIiFWOQJiJSMQZpIiIVY5AmIlIxBmkiIhVjkCYiUjEGaSIiFWOQJiKFMfsgDDNnwJh90N9FoVoM0kSkMGVlQs7Phykr099FoVoM0kQEQLSi5bIyICoKmrR0fxeHajFIExEA0YpGeTmkmBhox4z1d3GoFoM0EQEANGnpkLp1YytaZVS7njQR+ZZ2zFi2oFWILWkiG4Z1a6EfPgiGdWv9XRQiBmkiW/KOrUBVlfibyM8YpIlsSFOnAa1bi7+J/Iw5aSIbwfMXAvMX+rsYRADYkiYiUjUGaSIiFWOQJmpGuLZG4GGQJmpGXF1bg8G85WCQJmpGXJ0VyIWSWg6O7iBqRlydFahJS4cpK5NTvFsABmmiFohTvFsOpjuIiFSMQZqISMUYpImIVIxBmohIxRikiYhUTJVBevHixUhISLD6s2nTJqevycvLQ3p6OpKSkjB69Gjs3LnTN4UlIvIi1Q7BGz9+PDIyMpSfIyIiHB5rMBgwZ84c9O7dG9u3b0dOTg6WLVuGLl26YNCgQb4oLhGRV6g2SIeGhkKn07l07N///ncUFRVh9+7dCA8PR3x8PL766iv84Q9/YJAmomZNlekOADh06BCGDBmC1NRUbNiwATU1NQ6Pzc3NRVJSEsLDw5XHhg4dipycHF8UlYjIa1TZkh45ciRSUlLQvn17nD59GmvWrEFVVRUWLFhg9/jS0lLExcVZPRYbG4uSkhK3rx0X5zit4gs6XaRfr+9PgVr3QK03wLq7QpVBOiUlRfl3QkICNBoNXn31VcyfPx+SJNU7XpZlj127pKQSJpPnzucOnS4SxcUVfrm2vwVq3QO13gDrXlxc4VKgVm26w1JiYiJu3bqFsrIyu8/HxcXVazXba10TuYpLfZJaNIsgff78eYSFhSEmJsbu80lJScjNzUV1dbXy2NGjR5GcnOyrIlILw6U+SS1UGaRXr16NnJwcXL58GQcOHMDq1avx8MMPK6mO3NxcjBs3DkVFRQCAESNGoF27dsjIyMD58+exfft27Nu3D9OnT/dnNagZc3XdZiJvU2VO+ttvv8WcOXNQWVmJTp064eGHH8bs2bOV56urq5GXlweDwQAACAkJwYYNG7B8+XJMmTIFOp0OK1as4PA7ajQu9UlqIcme7HVrAdhx6B+BWvdArTfAureojkMiokDFIE1EpGIM0kREKsYgTUSkYgzSREQqxiBNRKRiDNJERCrGIE1EpGIM0kREKsYgTUSkYgzSREQqxiBNRKRiDNJERCrGIE1EpGIM0kREKsYgTUSkYgzSREQqxiBNRKRiDNJERCrGIE1EpGIM0kREKsYgTUSkYgzSREQqxiBNRKRiDNJERCrGIE1EpGIM0kREKsYgTUSkYh4J0rdu3cJXX33liVMREZEFjwTpgoICzJgxwxOnIiIiC0x3EBGpWJArB/Xp08fb5SAiIjtcCtJBQUF49NFHER8fb/f5wsJCvPPOOx4r1Pr16/GnP/0J+fn5iIqKwk9/+lPMnz8frVu3tnv85cuXMWbMGKvHIiMjceLECY+ViYjIH1wK0vHx8ejUqRMmT55s9/kzZ854NEifPHkSs2bNQmJiIkpKSrB06VJUVVVh9erVTl+3bds2dOzYEQCg0TCTQ0TNn0tBum/fvsjPz3f4fHh4OAYMGOCxQm3cuFH5d48ePfD8889j+fLlDb4uNjYWOp3OY+UgIvI3l4L0yy+/7PT5O+64A5mZmR4pkD1lZWWIjIxs8Ljp06ejpqYGvXv3xsKFCx2mZ4iImgtJlmXZEycqKCjAHXfc4YlTWamoqMDkyZMxZcoUPPPMM3aPKS0txb59+9CvXz/o9Xps3rwZR44cweeff462bdt6vExERL7SpCBdU1ODAwcO4NNPP8VXX32Fb775xpNlg16vx+zZsyFJEt577z0EBbnU8IfRaERKSgoeeughzJo1y61rlpRUwmTyyOeW23S6SBQXV/jl2v4WqHUP1HoDrHtxcQV0uoYzBK5FPRsXL17E1q1bsXv3btTU1OD+++/H+vXrG3Mqh2pqajB//nxUVVVh06ZNLgdoANBqtUhISEBhYaFHy0RE5GsuRz6DwYADBw5gy5YtOHnyJIYNG4YbN25g9+7dHs/9mkwmLFq0CAUFBcjMzHQ49M4RWZZx4cIF3HPPPR4tF7UMxuyDMGVlQpOWDu2Ysf4uTqMZ1q2FvGMrpKnTEDx/ob+LQ17i0ji1N998EyNHjsT69etx33334a9//Ss2btwISZK8MtRt6dKlOHbsGNasWQODwYDi4mIUFxfDaDQCAHJzczFu3DgUFRUBAPbv34+9e/ciLy8PZ8+exZIlS3Dt2jWkpqZ6vGzU/JmyMiHn58OU5b3Obl+Qd2wFqqrE39RiudSS3rx5M375y1/i2Wef9cn44+3btwMAJk2aZPV4dnY2unTpgurqauTl5cFgMAAAJEnCu+++i8LCQoSGhiIxMRGbN29Ghw4dvF5WUgd3WseatHTl2OZMmjpNaUlTy+VSx+H777+Pbdu2obKyEqmpqZg8eTLi4+ORmJiIP/7xj+jVq5cvyuoT7Dj0j6bW3TBzBuT8fEjduiH4/Y8afR5fp0J4zwO77h7rOJw5cyZmzpyJo0ePYuvWrZg6dSp69eoFWZZx69atJheYqLHMQRV9kiABjW4dm/O7CG8NmEwwZWU263w1tRxuje4YMmQIhgwZgtLSUuzYsQO3bt1CWloaBg4cqAx5I/Ilc35ZAprUgjbnd/HDD0CrVkCfJM8VkqgJGpVgjo2NxS9+8Qv8+c9/xnvvvYeoqCisWLHC02UjapAmLR1St25Nzi9LU6cBrVsDMbFAaBhwKtdDJSRqGo/NOCwtLUVsbKwnTuVXzEn7h1rqzpy077DuruWkXWpJf/PNN5g+fToqKuq/oeXl5UhPT0dxcbH7JSVSGe2YsQh+/yPmo0k1XArSH374IQYOHGh3kaOoqCgMGjQIH374occLR0QU6FwK0jk5OfjJT37i8PkxY8bg66+/9lihiPzBsG4t9MMHwbBurVeO9wRj9kHop6RCPyUVxuyDjTqHP8pNjedSkL527RratGnj8Pno6Ghl9h9Rc+XuDD5/zPgzZWUCBflAQeNnTHKmYvPiUpCOjIxEQUGBw+cLCgpcWu+ZSM3MIzwsZ/AZsw/CMHOG3VarveNdYVi3FvqBydAPSMKNlSvdeq0mLR24oxtwh/0RLc7K29Ryk3+4NLrjueeeQ0hICH71q1/ZfX7BggXQ6/V4++23PV5AX+PoDv9Qa909NZMRqBs5Ip8+Bdy+DQCQIiOheeV1t0eUWC6upElKVl6vjBu3Ka8aF5VS6z33BY+P7njqqafwpz/9Ca+++qpVWqOoqAivvPIK/vznP+Opp55qfImJVMpT47CBuok3CGlVe3INwtMfa9SCT5YpC+Oa1ZC/PgHjmtUOy9tSFpUKRC4F6X79+mHFihXYsWMHRo0ahYEDB2LgwIEYNWoUdu7ciVdeeQX9+/f3dlmJXOLKV35XzwHAY0PyzAEUbdsCbXWQ+vVHm4yMRn0QWKUsbpSJB2+UORxC6OgannivyLvcmsxSVFSEHTt2oLi4GLIs484778S4cePQvn17b5bRp5ju8A936t7QV3fbFEVjvuo7SnN4Im1geY4Oj0xp8j1v7LrSxuyDMC7PACQJUnxCk9M57uLvuwcXWLpx4wYWL16Mw4cPw2QyITk5GWvXrkWXLl2aXFgid1l+dbcXKG2XIjW+8xZQkA9jWVmDgdWYfVAcX1kJREU5TRs0Nkhrx4z1aF44eP5CoBGL/puyMgFJA8imZrFsqxrz6r7gUrpj3bp1yMnJwXPPPYcXX3wRJSUlWL58ubfLRmRXQ+mBpswaVIa4lZZAiolxOW3gKk+Mc3bnWs5SGZq0dEjx8dC+urJZBL1Azau71JI+fPgwVq5cidGjRwMARowYgQcffBAGgwHBwcFeLSCRLXdbotq581xe5F+Tlg5jWZnyb3vXBkTAMOXmAKdy7bbsHLX6lA+BmhoYF/4Prqx9A5qFi12qj7styYZa/ZZ1sfxZrVrKZg3uciknnZiYiEOHDlnlnpOTk7F//3506tTJqwX0Neak/cMfdW/s12dzvhq3q4HQMEjdukGOjAL+/jdg5CiE/OZtccy5s4AsW7VUlXRK3neA+b9e+w6QunRxWg5j9kEYMxYBej3Q/U6E7PzMI/XzRP6+sWXg77sHh+AZjcZ6LWaNRqPsOUjUHLny9dleykCTlg5ERYkNAsx567//DTCZxN/mY2QZkDRW59eOGYuQnZ9BmvEkIEniwRtlDZfjnbfE2GqTyeX6OUv7KKNX+iRZpW88nVII1BSFJ7m86P/zzz9vFaj1ej0WLVqE0NBQ5bEPPvjAs6UjcpPlTi04lav8ba8l58rXZ3spA+2YseLx8nIlb20cOUppSZuPMb8efZKUgGguS/D8hTAmJUO77RPoQ8OBE8ch374N/fBBVqM0lPpUVgIaDRAcDO3ceQ3W31xfZ2kXe5slmN8Tc5kbalE31PIO1BSFJ7mU7njppZdcOtnq1aubXCB/Y7rDPzxVdyXNUFUFhISI9EDrCEjx8UowsgwsAKyCum2wsReElJQFoARMy59tg5V+SqrIQwcFAcHBVikQnS4ShSNGiefN30xbt0bIl8fr6pOfD0RFQYqJcVpmw7q1kDd/IFrod/aAdu682iF2Gqv6O6tXQzMX3TmuIfx99+AQvJYQfEldPJn7tDyXJi1dBKZWrcRWWCGt6g0xs2wdy5cuAdeLgNwcILoNjO+8JQJuVZWYLDLivnrXM2VlAsXFgCxSD8Z33gK+uyD+/fKLwKo1Vq1YfP89UFNTl6qQJFFGAHhkSu1JTaKlHBSkrKlhzD4I+fJloKIc0gOpyvRv+dIloLQEOH0KiIisK3Ped+Jcte0uMcROsjvEzl7nq+X74qwF7Opx5BmN2j6LyKyxM9Y8mau0TUloX10JqXcipPQnICUm1htiZjWMrvymeFCWxWxAQLRqi64BBfmQszLFlOs3V1m9HrJJjNBYngGUlNQVRq9X6mSero2K8tqCykCnzoBWC0hS3aiKufOA8HAgvDWkPvdAk5Qs3tN33gJKvgf0esgffQjjiwsgnzwJlJWK80VFW5fZLLoNtHPniXLq2gHt6k82c5Zrl2tHtzjKZ1u+f9wkwfsYpKlJGhtsPbkmhu25zIEjeP5CuwFEO2ZsXe51yDAgNBSIjRNBZ+48scpc+w7ib3M20BzMlYtqRUdeZSVw80bd4yEh0KSli7Wai66Jx2RZHB/aSqRDXl0JKT7BqrzS1Gki8PdJqlvjA6grgyyLdIjJKNImJhOg04mAWlUlOjEBMdqkVy8AdUPrUF5e7/7Yu2/aMWMhxcTYPd72/WNg9h23dgsnstXYr7tNnXVnmxdWgi7QYE4ZsOg469YNSOyjBCzb4KP/n2dFh+CQYVavrRe0JUn8MRphys2B/GlW3XPh4ZDu7m23DNXRYcCA4aKTMzQM8uEvRNAtLRF/dO2AqOi66wUFidSJLAP//UakSADxQRMRARgMkMvKxHtTXi5y2XY+DB3dN6Yv1IdBmprE01Oc7bENyObRFeav+ObgbG/ihikrE/I3p2H8f/NhSn9CyeuiTxIkAOiTJAJjVBTkyCjoh/QHoqKhXfSyOE9BvgiEFukETVo6jJcuibSDwSAeNLd2TSbIH31YN7wOACIigT5JMC5eCKMsQ3psBnAqF3J+Pip//wGMN6tFnrmyQqRCSr6vy18XXQOio2tzy7II0GFholV9d2+guloEdVkWQbqqSpQ1Ns4qJWHL3n2z7VB1ZXQHeR/THeQX7uSybXcjMWYfFF/zW0eIoNYnqW6FudqhY+bzatLSRQeiySSW9XznLcg5/4Z8+AsEv/+RCNAX84ArhcA/DosUxvUiGJdniHNcvSIC46UC5bym3BzgVhWktHRIjz+ldPghONg6OANKS1fO3CQCek0N5I8+hHz+PHDzBgz5+eIDqLREXKd1a5HiiI6uO0dVlfV5q6tFh2j+RWjnzoPUpUtdUL9RJnLfgNKidrW/wDIFwvHN6sEgTW5xJ7g6O9YcBIzvvAXDzBmo3r/f4fG2u5GIdEM5YKwBIqMgH/6irgVY20I1B3NTVqYYuxwR4XgnEpNJBHJzqxio69irXZwfBgPknH+LIG9ey/nTLOBUruigTO4L7RtroV37G+DOHkD3OyE9/hSkfv3rrmEmyyJ9YTBAvn5ddDzW1IghgxDfFkK+OAL06CmCf1xboPud4gPJ7HY18INedFzWTkgBIM4RHCTOfzHP6oPN8r21+173SRLntfjQa0zaIxCXP/VmnRmkyS3utLCcHau0fAHla7+j482z9MxToZXUQLfuIqhUVloNCTOPUDC+85bIO1eUI+TL4wiev1C0PJP7ijHE5v9Q7dqLIXtBQaLlm9hHBNI+ScB999cVpKZGDLWrqhIBM6QV5K+/FumNPklKCsE8dlretQPyv0+KIX6OGI11oz9u3QK+uwBjxiIYsw+K4X+hoSKtAdR1YpoZ9KKFfSpX5NLnzhM5bHN+PCTE6oPN8r21/dmYfVB8+Ega4FRuvc5Bd7/5BFor3Jt1ZpAmt7jTwnJ2rBIE5s6D1K0bImY95TBlYaasf/x9MaA3AN+cBm5Vi/WQa1+n/Ccpvi5SGBbLjSrbV0VGiUC4eCFw6ZI4NqQ2SLeOAPIvApIk1mju1r1+xWRZBEH9DwBELlresVVZ4c74/+aLYF5+s26CCgAEh9h5kzT1g6/eIOpR25mIo/8U57OdEm5+bZ+kurx9Qb5o/d++DQwZJkZr2LkXtj87G1Ntft7VIOTJkTvNhTfr7Nai/4GAMw79I+LElyhbv9HhLDYlQNcYxVA1SapLRfToiZCdn9XNztNoRCAPaQXYLgBWXi7yv/bWwOjRU/x99SpQfQsICgaCtCIVIssi52xOiWg0ACQAsmix9uwlPjQc/XeKbgOpVy+RS7+Y53wNjuBgSGnp1pNXLFvjWq0I/sHBYshdfDwAQM75t2jtK29qhLIA1ImX12FPzlU8mNwRQ3vG1bukvc5Z2+c9vZZzIP++e3yBJfKt1Lf/We8PABy5UIKXdp7CkQslDZzBOU+dpyHufEWu/P37VikL21aJaOlpgCAttKvWQLvyTRFUe/SENOI+EaAjo0T6AxAt4iCtSE18dwG4eFH8+3a1SB+Ehoogh9oOuaAg0aqPiREBGgBqDLWL4tcGYq1WjKwIDQVahYoxyyYTpIfTgAvfOg7Q4eFAnMU47O53imF1wcHQdOwIjBptfbwsQz78hUjXfHPaOkAHB4sy9OgJaIOAygoRxPskAbEWwVejER8uGg00aenYk3MVhTeqsSfnqtX9Ma9tDcDhGOlAXWxfLVQdpDds2IDhw4cjOTkZzzzzDEpKHAeVvLw8pKenIykpCaNHj8bOnTt9WNKmS337nxiy/E9I/e1hAPb/s9v7j9YYnjpPQ+x9RXYUuCNmzXT6ddG8QL00dZoyDVo7d57IU9d2FuLEcZEeiIhQjlX2/zMZxXC2ykqguFgE+a53AO3bAz16QvvmrwBATMM2Cw4Gfqhtrev1ouVeXS2G1Bn0ymFy5qa6zWUBESCj29T9fOsWUHxdGR4YsvMzSD/6ERAaClNZmUhRjBotgn9UtOgkBcTj1dV155EkoOsdYgbl3HniQ0iSgNISMUrlVpUI4BER4kPFYBDfKAAktI/ADzUmJLSPsLo/lqNmHH1lD8Qcs5qoNkjv2LEDv/vd77B8+XJs2bIFFRUVWLBggd1jDQYD5syZg7i4OGzfvh1PP/00li1bhuPHj/u41O6xbSlDRm2e0f7xDyZ3RNktA05dKa97TSM8mNwRnduE4cHkjo0+hyvs5Zgd/YcPGz9e6ahyNBtOk5YuOrcu5gEX85RhcubrSFOnQerWDdq58+qG1/3wQ/2Cld9URohIXbogZOdnMOXmwLjwf2pnCUriPoSGWo+oAERQ/L7YOq0QEiI2l23VSswsbKurC+5msqzMRNQP6S9ayJWVIvhfvAicOA7tyjcR8vcjCNn5mQjCsTZpiVahyqp75unv6H6nCOqVleLDwGAQHaE9xaxDmEwwZizCmTOX0CpIgzNnLin3Qo6MEmmT8Nb1pnhbfpgGYo5ZTVSbk548eTLuv/9+zJsnesovXbqEn/zkJ/jss88QX5uDM8vOzsaCBQtw5MgRhIeHAwBefPFF3L59G2+99ZZb1/VlTrp+oJVFgJYA5Wu4E589O6zBY9TAcmF5yxltll+ddbpIXHl5uRjWFtIKaNu2Xm5UPyVVBDStRgTP4BBldbcjF0rq5Vz1U1KVhY+sREVDmjxVWcpUPvyF9SL8QUEiQEZEQBpxH+T9+8TEFaOxfi45OhowGiFNnQZNUrLI614pBG7XdioCoqwRESJFUny97joajQjwRqP40/1Ocb1Ps+py7ubOwZGjIFWUO0w56Kek1tUhNFTU4Va1+Aah0eLYfZPx+YhpSDm8FYP/84XYqODsGWUhKfOqe/bumbc2qGVOuhnnpPV6Pc6cOYMhQ4Yoj3Xt2hWdO3dGTk5OveNzc3ORlJSkBGgAGDp0qN1j1a126JQLAbo5cXVBHnnHVhGYym/a3V9QnEwCYmJFWsCgF7lYOEjhmNMGtiorRWAGcPS/V7C091Qcu6OveO/btRevq64GrhdBk5QM7aKXISUlixaymSSJdEhlpRgz/fFHdavn6Q3ig0QcKALwzZsit2weGRIVDbTVIeiOrkBYuAj+lZUiQJvTKsp6HSbgb4eUYX72aOfOq5vwoteLVE/37qI+3btj2IQRWD2lD4ZNGKF8u4E2SFxjwCCn98wsEMc/q4Eqp4WXlZXBZDIhLs76615sbCxKS0vrHV9aWmr3WGc5bEfi4iIaPkgldLpIDFn+Z+Xno6/+zI+lceKRKXVLcjrResZ0VH24GZo2bdDm6dkIs2ll3Bg3FlUfbgbKSsSsOpMJcuYmBLcOwfTJM/Hp0QI8POQO6HSRqN6/H6Vf/LXuxeY1LyQJCAmGNkgD+VIB9o1MwdWwWOwbmIrxS58GAJSv+V/UGPRASAi02z4BIEO+VABtmzaQ20RDrqyAqbSsbtQHoMxKFFPDjaIFrNXW/lz3zUzTsSPavPYqwsaPx7X7R6PmwnfKMD1NkAamsNC6USs25MxNiBgxBGHjx9d7rjo6DDfat4fp++8htW2L4KLLMBRfR3j6Y2iTkVHvXhRP/Tn0t6qA4GCE3L5Vv0Vn554Vb8sS78O2T6Bz4X66wpWWZEvlat1VGaTd5cmMjS/THeZ0RUP5ZUdpDduvis3xq6M5Tx3z9GwYZs9DyGwxyaRs/UaUHT5qvaj9sRMi52oyiTTB7duALKPqg01InD0PK1LvBiDeB8P6jdajLWpqgFGjlZQBAMhZmUhNbIe9cjtMkIJQtn6jGCJXXg506gwpJgbGhx4FAJjeeQumm+Vi2nZoOBBcKYK0JIkPgJhYcZ2S78XfMkSw1mpFnlo2ARERMIWFK3WTCy5ZjaM21ZiAyqr6b5J5yF2rVihbvxGVA4bXO8SwfiNkQw3QqhXkykro/3QAAFD10R9gmD1Pea/Nw+ykEfcB10VZjQ896tLvjvGhNMhZmS4f3xCmOzy46L+vxcTEQKPRoKSkBD179lQeLy0tRWxsbL3j4+LikG9e2tHiWNvWdXOV+vY//ZZ/tpfr9STzBIyba9ZCu1UEH1NWpthd5eS/gNatlVERljt5a+fOE2s8Xy8SqQMbmrR0GE/9p67jMCwMUkW5VX5VO2Ys7gVwLyx2dKkWk2Og0UBTO3NQ6cAs+V78uaMbpPgEZWcUOTJKrPthNa0cIp1g/ndsO0hdu0IuE/sZ4uwZkS4xt5o1mtqp4rUdkpZjsoNDgG5ivLdcVqasHyLv2Fq31VafJHHOAYPEKBdzYO/WXVkoSdmcQKMFYmJc2szWki8W06L6VJmTDgkJwV133YVjx44pj126dAmFhYVITk6ud3xSUhJyc3NRbTFc6ejRo3aPVTt3g/Fnzw5T/niDT4brmWQYLxVYL4oky2K0RO2oCMB6erh2zFhoF72sTEDRT0m1WpfClJUJ6ZHHxPPt2gMdOzmcyWh1TZMsgmNpiVjz4p23xEL7BflizHRNjTL8TpOULIL+iePWARoQZQ8NBRLuEj+XlYpgDohNbAcMEhsNxMSIlnhISO0CTQAgietoNLWLN2lxbOQkLO3zEI6FtBcfYub1Q3ZsBQCRY799GyjIF6M+wsKAyEgg/6L1SBmNBggJdvpeeApz2J6hyiANAI899hg+/PBD/OUvf8GZM2eQkZGBwYMHIz4+Hrm5uRg3bhyKisQg/xEjRqBdu3bIyMjA+fPnsX37duzbtw/Tp0/3W/mb8gvqzaDrrsYM13On7mJXkjAgOMRqPWixCL5ct5i9vdeaF6kvLVHG+gJ143pxKlc8bzKJvy0WX7ItKwBxzeAgMcb5jtrOtSuFyqQVZWz0pUuQz52F8c1V0A8fBNROvQZQtyKeLIsx2/kXawO7QaxLXXxdtP4L8oHQMGh0OkjJfcWEGF078Se0lRgJEhIiRnxMnYa9pcG4GqHD3viRolytxVhoe4tGKbvTxCeI5zUayKdPiW8A/fqLMeI278U/dh3CotXb8Y9dh9y6n5bP2R7H8dWeocp0BwD8/Oc/R0lJCV555RVUVFRg2LBheO211wAA1dXVyMvLg6G29RISEoINGzZg+fLlmDJlCnQ6HVasWIFBg+r3WvuK7ZZOjaGGQD20Z5zbaQ5X6660eKdOQ/DZb5T8LwAxPK6mRmnR2juPsmRp7XA5y3UpbDeaNf/7n5/ux96uA/HgrkO4d/JoJd1iLCsTgTykFWCsgXbuPBFczOttdOosWqenT9UNiyu/KdIpt27h2I8GY2/8SEy4eRaD/30IGDAIUkW5GOK3f584dsgw0eqWRNtI6tYN0U/PRuWA4SLIbflYBPOISMBkVFIZhpkzMKEqBHvjR+LBfl2AvX8RqYzOXYBTuTBmH1TKa/mtw/ye6XdsFeU8cRzBFkPtLI/fc6YUV4Mi8NmZUtxr736eO6fsy2hv8wR7a3pzAwHPUO04aX/xVMdhY6bS2utAVEOgNnO1Tq4eZzkWt9OeXbi2ZafVf2pna0nYvt7VsbyLVm/H1aDW6FhRjFX3daxblKg20KPwsmih1m5vZVsPy8433NFNBN0Bg7A0ahCuRurQsaIYE/KOYG/vMZg07f56H3C2741OF4lrW3aKAGhevD80FIiIVOpl+xplUlBtJ6ez+huzD4rcfWmJaH3HxSmr9Fme8x+7DmHPqSJMuPQVhj08vt7uNmLXcQlSfILDXcdtz9kQdhy61nHIIG3DnwssqT1Ie2qCg7kzcoJ0HYP2boImLR3R0WEo/Z8FgKRRJqg0xJ0PQnNwPRZxB/Z2G4QJ5w9jSGt93YJO5lEdWq3Ys9Bidxbb6ygLOUVFidZ3nyQc/e8V7O30Y0z47p/Y+6PhuNq2Kzq3b4PVU/o4DLKatHR0eGQKrjw4GfK5c7WLOgUBOh1QWCgmsHTrbt1B2ED9HZb1drXSSSkl9wWAevfStl6Ozgu4F4wdYZBuxqM7SJ0a+vrqatA0d0bubdMO99YGiMpfPulwqUzL8x7v3h+79x3HhH9sx5Ahd9sN5vbKYV6nYjDyMbiywCoI1Wud1uaNjYtegDGurVj/Q5KUr/vKSIkrhZCLrwNnz2BwaBgGf/OlyEPHxWFfpy5IObwVxuir9dI/VimCR6ZYf1AUXxfLpwLAieOQTxyv6yC0CdJmptwcZUswecdWoMZoVVbludoJPPbSQADqRohoNJBrF1oyv3+W6RNzMLdNQ3EhJu9gS9qGL1rSjn6Z1dKyaOx/Nldb2vaG9VkuVXq0XIs9Z0rx4F2xuHfyaKvzLh32C1wpqUDHm0V47Yv1+Hrz/nrnstciBBpOn5jr/s/1H2Nvwn2YcOovGJx/sm5/wdAwSImJCH7/o9ohe+cA2SQ652qnmJvHdZuyMnFU3xp7e4/Bg3fFKt8YlHJUVgIREYh9eRFu3qyum61Y8n3duiCjRlu1pM1Ll5rvi35KqkjVBAWJPPbt2uGDVVVidIlWKxZjchBIATj9hmB7/5Wdbizqafm8u9+01PL77g9sSaucJzoVG8uVANzY8rnaUWSvMzJs/Hhlksae1dutOrEsz/vA3oPYG9ETE05nQ5o6TWmV//Fv32DAqvegSUu3apk62gXcEe2Ysdh3MRRXb9zC3n7jMfj21bp9A/U/KNPQLVuo9gIWAOw9fhNX23TAXrmN8o3BMHOGSKvcrgZMJrEjjaGmbqNb88xIjUaM656/EAaIKfPGXTuAygox/nvVGnF8TY34ExVdN0b67t5iJ/GQkHr30NWOPnvBWcmBA3aDMDsKvYMtaRstvSXtSmvHH19bLev+j12H8NmZUqTWtqQty2QZFI9374/MowUAgEdP7FIWDrLaKMCF1rNh3VocPfpf7L3355j0gBgRZNk6r9twoEasO/3qSgCwzmXbaX0qnXHnv8TgygKlw8745iqxYFNMLGJXvVbXkoaYCWhOSyj/Ni8SZW7Ra7SQ+vUTKYzNH4jnQkMhJfapyz9LGqtWvr18uLkOrnbwOmphNxZb0uw4bJSWvjOLWvOGDdXdMr1g/gr/0s5TKLxRjc5twvB6be63MV/B9cMHYel9T+Nqmw7o3LMrVk/pU++YuhEOmrqdUGoDl1ij+roIlL0TrTvizLulaDRAeDi0r66EMWOR6MQLDUXnC+eVett+EMnmtaaNRhGgR45SWtzmIXfy1ydEAaOioV2+ot4Hmb1dbpxxpTPSUxikme4gO/w1tbcx/9EtX6NJS8c/N24RueK9hzEMQMrhw9jXZyweTO4Bbc8+9YeNvfOWyPHevq2kKeyRpk7DhKNfYt+9P7c7aefIhRLsudkRE154wyq3bC6b8eUXRQu3ulqZtm01jb2yUrScb1XDuGZ1Xc65pgbV+/cD5nHStcPccPaMOOb2bTGxpnbYnGVLGKjtwDx9SqxJ3batVSepbaepZQrCsG6t6GCsHcstR0YBJ44rrW7zmGhTbo4S7L21XCk1jC1pGy29Je0vDbVo7dXd9mv2kuRHcdUYhI63yvDatleAoGBIycl2z2fVig0KErPtnHSG1WuBr1sLecvHQJsYLJv2Kq5IoejcJsxuK1v/s9Fis4DgYLGXoZ06Kp18Wq2YSWhexzkxEfjdB6K8p0+LzQIio8QO4rIMRERYrfVs+z46GnLX0DcHVFWJD4TYOPFBVruEqjTjydpdwy06S720pnRL/n1vSLNfT5rqq7eLSzPTmN09lJ1dIFILE/KOoHO3jpjw1R5xQI3B6XZbuKMbjiXdj6UTX8Kxtj+yO0XZ0dRl2TxLr+gaHjh10OnUeO2LL0H68QBIFjvRmPcONE+R1s6dJ6Z/P/KYmK6d/gSk+AREzHqqrrxBWpFLvlUlpodHRIjtwpzskmK7Prfl846mc0tTp4nV/EaOEuWNql1TRAZwKtdqSrm3dmQxZh9E8dSfc10PF7AlbUOtLWnL4KymCS6W3Elp2A7Dc1R3e51/+v95VqyDMXIUvn7uVaer9Jnz1p3k23jtn+85bUkf795fOdeP/2858MVfgagoaJetcDgt3WEePOffAMTEEWetUMuhh4D9YYL28vGucHVInKsdrJ5kmDkD+PY8ZKPRrTq1FGxJk1+4s6COq6vrmbIycax1Fywd+DiOd+8PAAj5zdvQ/u86SBXl+OPfvnF6HvMCURNH9VY60ixbb5YtUcsySRXlQFxbSL1+5NJQRcBisaY+SWLK+B2OW7Tmx24sXQ45598wvrlKDIWr3VzXcp9B9EkS61FLEkxZmWKfxMH9oL9vmFVr3Zar3160Y8bWjTx55y0Y1q21Kq9t+Z3Vx9WWsSYtXSxaVVsncowtaRtqbUn7k6trSnurJf1y7Xhj8zRroK6VeOye+/D5iGkurXfdUMvSskyDLv6rwbrUmwmZdQATTn6OwbhhtVazvesq+fabN8SiSkFBQJsYu8fY7g1pfPnFunWyg4IabK1bltdyIo3lGh7KSBJArB1ikYu2Lb+z+rjSajfXIzo6TPkWwZa0YxzdQQ2ybGE6C4TujBxxdXU97ZixmNS9LniamYPWsAkjMGJMbeCuHbVgb50Ly9coqYXagHF8whP4rDQYD5w6iNcnjIC2Zx+gZ8N1sazvH98/jKut2mDv3aMx+L87nV7X8jHpahBM167X7nsYZfcYy+nrAGBsEyM6KrVapbXuCvPUeMvVBQGLoYS1e0JKI+5TRnXYK7+z+jRUFstvH2F7dtndZcYRtQ4f9Ta2pG0EWkvalV98b+/OAnim7sqoBZvdr53mjvPzsXTMc7gaGo2ON4sw4eY5l1vmluc+qm2LvR36YsLZLzBs9iMuB5GIE1/WLizlfIU5q+F3DmY5OruX1qvhtQbi2tpdDc/bbBeXcuee+2IHc19hTppc5koeeWjPOKye0sdrAdqRIxdK8NLOUzhywbUNhc2jFmwXwje+85bI+5qXGK1lztk+eFcsOkWFYsLNc9jXZ6xbO9GY37/B35/H64V/cStAA2I6vLLBgc1Ybtt7Y/4Zp3Kt0gyuLLJvysoEvi8Wrei4tnW72zjZvd2SKzlnV45x9Xr2NGaEUEvAIN0ELWF7IDX/4jvrXLT33gfPX4iQL4/bTXXYY55wMmjvJqzsfhsj1q3AxFG93dqJxvz+aefOa3ywO5ULSBrIO7Zad9r1SRJTvC3WC7G8V7ZB2dm91KSli/HZGq1L9bIts3F5BuRz5+p1klrWw52O48ZoSoBvzhikm8Dbv5S+oOZffGdbdzl67+21vs1jlM1f752dx9G3BkcfyO6+f/bKrUlLV0ZvyDu21j1/KlcsfVq7+4ptWkIZR167XyEAh2XRjhkL7co3IfXrZ/d9cFZHU1ZmvWVkHdWjoTHa5D4G6SZQcyu0JXCWZnH03ttrfTsNpDatVUc89YFsr9zaMWPtTiCxPNbe9c31crZ3o6PhhvaOc1RHTVo6pPgEq/HMjuphPn9LaMCoBTsObQRax6FaeKru7nZyNmbomCtD8lxdnMjVett2Glr+bV41r94EGBfqJSbKnBU7l9usmNcUrrxf/H3nKniNwiDtH96uu6Og4clhXa6MH7a9nu2Mw4bKYnehfzvrazQ0EsTyOMvV/RpzDstj3Xkf+fvO0R1ECkdfvz2Zk7eXAmios6/y9+8rP7uVIoiKhtStm8P1NZylQsyUyS2tIwCdrt45zOWRt3xsd3SM1bkcjKBhbrrpGKQpIPii/8BewHe2ABIARMyaaTcH7fAa5k7QRS8j+P2PEDx/od3heGbOzqlMbin5HlJMTL0PKqVjsk1M494QtIzOdX/jjEMKCK7MhvTFjDbbcpi3DXP12o7qYRkMrbbLys2BfPYMTLk5doOwsaxM+beja9nu5mK3XLWbENge4+pMRHKMOWkbzEn7hy/r3tAMRF/NaDNmH4R2WxaMD6W5vYOKvXPZyx9bzsLUvrpSVdOq+fvOnDSphKfzkq6ez9m4X4dDzXw4pNKUlYma7/KUwNmUazvKQVvOwvRV6oF5aM9ikCav83RwcPV87gZjX0/s0aSlI6hHD6Vl64lr29bNchamryabMA/tWQzS5HWebqG6ej5fBWN31xgB6tITEbOe8uiHgrMJKwDqTTYxvvOWW8HaleDOSV6exZy0Deak/aM5191y13J7eyDaY85/h/TqCfzuA6+Wz16uXRl+d6UQCA6utwKfO+dqiKM+gOZ8z5uKOWkiH3K2xogjmrR0ICoKxtISr+duHbZsrxcpG85arrHtrKXcmFYy0x9Nw5a0DbakPcPd4Wwtqe6uMsycAelSAeSud/h8fWTL6eCWa3I0dYSLO1PjA/Gem7ElTX7H1lPDLDsO/XFt6NoB7drXe7wp+WRnC0GpYdhfc6TKIL1+/XpMnDgRffv2xciRI/H666+jqqrK4fGXL19GQkKC1Z8BAwb4sMRki51HDdOOGQvdjm1+CV7aMWMhxcQA5eUeDai8756nyhmHJ0+exKxZs5CYmIiSkhIsXboUVVVVWL16tdPXbdu2DR07irygRqPKz5+A4c5+h+4K1L3uPM0bswGt9mLkffIIVUayjRs3IjU1FT169MDAgQPx/PPPIzs7u8HXxcbGQqfTQafTIS7Ot1s9ke8ESirF25NCGttqdrVcgXKfvE2VQdpWWVkZIiMbTrBPnz4dw4cPx+zZs3Hu3DkflIz8IVC+Uqs1yLlarkC5T96m+tEdFRUVmDx5MqZMmYJnnnnG7jGlpaXYt28f+vXrB71ej82bN+PIkSP4/PPP0bZtWx+XmMgzqvfvR+XvP0DErKcQNn68v4ujUGu5WiqfBunFixdj165dDp+fPHky3njjDeVnvV6P2bNnQ5IkvPfeewgKci2FbjQakZKSgoceegizZs1yq4wcgucfgVr3QK03wLq7OgTPpx2HGRkZeOGFFxw+Hxoaqvy7pqYG8+fPR1VVFTZt2uRygAYArVaLhIQEFBYWNqm8RET+5tMgHRkZ6VJu2WQyYdGiRSgoKEBmZiZat27t1nVkWcaFCxdwzz33NLaoRB7BEQ7UVKrsOFy6dCmOHTuGNWvWwGAwoLi4GMXFxTAajQCA3NxcjBs3DkVFRQCA/fv3Y+/evcjLy8PZs2exZMkSXLt2Dampqf6sBpFHO/+aOtrDU6NFLM/DZUm9T5VBevv27SguLsakSZMwfPhw5c/Vq1cBANXV1cjLy4PBYAAASJKEd999F5MmTcKMGTNw9epVbN68GR06dPBnNYgaHOFQvX+/y0HOXsB3J0h66gPD8jzeGoHC4F9H9aM7fI0dh/4RsHX/5ZPQf/udS2tl2KZOnO307crrG8t2O63GntPZPff1Ljm+ptqOQyJnAjF/GzFrJsrWb3RpLLHtLE5TVmbtKnamRr2+sWzP4417xb0R67AlbYMtaf/Q6SJx5cHJLbr1BNT/IGrKPW/uH2qB/vvOVfCo2QmEGWqezOFydbnAwCBNqhEIQacxH0TsRAtsDNJEPtSYDyK1ruHRGPzAcR+DNDUrgfifvCWlgVrSB46vMEhTs9Lc/5M35kOmJaWBWtIHjq8wSFOz0tz/kzf3D5mmakkfOL7CcdLUrHhzxxdf4PhfcheDNJEPNfcPGfI9pjuIVCgQO0jJPgZpIhXydO6aQb/5YpAmUiFPd5CqocOSHxSNwyBNpEKeHgXhiaDvKMhy93DvYpAmCgCeCPqOgix3D/cuBmkicomjIOtq8OUY6cbhEDwicomj4YMcVuhdbEkTEakYgzQRkYoxSBMRqRiDNBGRijFIExGpGIM0EZGKMUgTEakYgzR5BddpIPIMBmnyCq7TQGrQEhoLDNLkFVyngdSgJTQWGKTJK7hOQ8vVnFqnLaGxwLU7iMgtlq1TtX8It4R1RdiSJiK3tITWaXPCljQRuaUltE6bE1W2pBcvXoyEhASrP5s2bXL6mry8PKSnpyMpKQmjR4/Gzp07fVNYIiIvUm1Levz48cjIyFB+joiIcHiswWDAnDlz0Lt3b2zfvh05OTlYtmwZunTpgkGDBvmiuEREXqHaIB0aGgqdTufSsX//+99RVFSE3bt3Izw8HPHx8fjqq6/whz/8gUGaiJo1VaY7AODQoUMYMmQIUlNTsWHDBtTU1Dg8Njc3F0lJSQgPD1ceGzp0KHJycnxRVCIir1FlS3rkyJFISUlB+/btcfr0aaxZswZVVVVYsGCB3eNLS0sRFxdn9VhsbCxKSkp8UVwiIq/xaZBevHgxdu3a5fD5yZMn44033kBKSoryWEJCAjQaDV599VXMnz8fkiTVe50syx4rY1yc49y3L+h0kX69vj8Fat0Dtd4A6+4KnwbpjIwMvPDCCw6fDw0Ntft4YmIibt26hbKyMsTGxtZ7Pi4uDvn5+VaP2Wtdu6KkpBImk+eCvjt0ukgUF1f45dr+Fqh1D9R6A6x7cXGFS4Hap0E6MjISkZHuf3KeP38eYWFhiImJsft8UlISNm3ahOrqaoSFhQEAjh49iuTk5CaVl4jI31TZcbh69Wrk5OTg8uXLOHDgAFavXo2HH35YSXXk5uZi3LhxKCoqAgCMGDEC7dq1Q0ZGBs6fP4/t27dj3759mD59uj+rQUTUZKrsOPz2228xZ84cVFZWolOnTnj44Ycxe/Zs5fnq6mrk5eXBYDAAAEJCQrBhwwYsX74cU6ZMgU6nw4oVKzj8joiaPUn2ZK9bC8CctH8Eat0Dtd4A6+5qTlqV6Q4iIhIYpImIVIxBmohIxRikiYhUjEGaiEjFGKSJiFSMQZqISMUYpImIVIxBmohIxRikiYhUjEGaiEjFGKSJyG+M2QdhmDkDxuyD/i6KajFIE5HfmLIyIefnw5SV6e+iqBaDNBH5jSYtHVK3btCkpfu7KKqlyvWkiSgwaMeMhXbMWH8XQ9XYkiYiUjEGaSIiFWOQJiJSMQZpIiIVY5AmIlIxBmkiIhVjkCYiUjEGaSIiFWOQJiJSMQZpIiIV47RwGxqNFNDX96dArXug1htg3V0hybIse7ksRETUSEx3EBGpGIM0EZGKMUgTEakYgzQRkYoxSBMRqRiDNBGRijFIExGpGIM0EZGKMUgTEakYgzQRkYoxSKvM+vXrMXHiRPTt2xcjR47E66+/jqqqKn8Xy2s2bNiA4cOHIzk5Gc888wxKSkr8XSSvC7R77MzcuXORkJCAY8eO+bsoPnP69Gk8/vjjSE5OxsCBA/H88887PZ4LLKnMyZMnMWvWLCQmJqKkpARLly5FVVUVVq9e7e+iedyOHTvwu9/9DmvWrEGXLl2watUqLFiwAJs3b/Z30bwqkO6xM7t370Z1dbW/i+FTFy5cwOOPP44nnngCS5YsgUajwYULF5y/SCZV+/zzz+WBAwf6uxheMWnSJPm3v/2t8nNBQYEcHx8vnz171o+l8r2WfI8duXbtmjxq1Ci5sLBQjo+Pl48ePervIvnEs88+K7/88stuvYbpDpUrKytDZGSkv4vhcXq9HmfOnMGQIUOUx7p27YrOnTsjJyfHjyXzvZZ6j53JyMjAnDlz0KlTJ38XxWeMRiMOHz6MTp06IT09Hffeey+eeuopnDt3zunrGKRVrKKiAh988AGmTp3q76J4XFlZGUwmE+Li4qwej42NRWlpqZ9K5Xst+R47smXLFtTU1OCRRx7xd1F8qrS0FNXV1fj973+PBx54ABs3bkT79u3x5JNPorKy0uHrmJP2kcWLF2PXrl0On588eTLeeOMN5We9Xo/nnnsOXbt2xezZs31RRPKxQLzHV65cwdtvv40tW7b4uyg+ZzKZAADjxo1TPqBWrFiBkSNH4m9/+xsmTJhg93UM0j6SkZGBF154weHzoaGhyr9ramowf/58VFVVYdOmTQgKanm3KSYmBhqNBiUlJejZs6fyeGlpKWJjY/1YMt8IhHtszzfffIPvv/8eP/3pT60ef+KJJzB58mSsWrXKTyXzvpiYGGi1Wtx5553KY8HBwejatSuuXr3q8HWB8ZuhApGRkS7lHU0mExYtWoSCggJkZmaidevWPiid74WEhOCuu+7CsWPHMGjQIADApUuXUFhYiOTkZD+XzrsC5R7bM2TIEOzZs8fqsdTUVLz++usYPny4n0rlGyEhIbj77ruRn5+vPFZTU4PCwkKnuXkGaZVZunQpjh07hvfeew8GgwHFxcUARK5Wq9X6uXSe9dhjj2HVqlW4++67lSF4gwcPRnx8vL+L5lWBdI9tRURE2L2/Xbp0Qfv27f1QIt964oknkJGRgcGDB+Oee+5BZmYmNBoNRo0a5fA13ONQZRISEuw+np2djS5duvi4NN63YcMGZGZmoqKiAsOGDcNrr72Gtm3b+rtYXhVo97ghCQkJ+OijjzB48GB/F8UnNm3ahA8//BDl5eVISkrC0qVL0atXL4fHM0gTEakYh+AREakYgzQRkYoxSBMRqRiDNBGRijFIExGpGIM0EZGKMUgTEakYgzQFtMWLFyMhIQEJCQno3bs37r//fixbtgxlZWXKMSdPnsSzzz6LYcOG4Z577sFPfvITLFy4EKdPn653vvfffx933323wwX8KysrsWTJEgwePBh9+/bFrFmzUFBQ4LX6UfPHIE0Bb8CAAfjyyy9x6NAhZGRk4MCBA1i0aBEAsXvMY489hqCgIKxduxaff/451q1bh86dO2PlypX1zrV161bMmTMHu3fvhl6vr/f8iy++iCNHjuC3v/0tsrKyIMsynnzySdy+fdvr9aRmyvN7DxA1H4sWLZIff/xxq8feffdd+a677pKvXbsm9+nTR166dKnd1964ccPq5yNHjshDhw6VDQaDnJKSIu/Zs8fq+e+++06Oj4+XDx8+bHWOxMREeceOHZ6pELU4bEkT2QgNDYXJZML27duh1+vxzDPP2D0uOjra6udPP/0UqampCAoKwqRJk7B161ar5//1r38hODgYQ4cOtTpHUlISvv76a89XhFoEBmkiC99++y0+/vhjJCcno7i4GBEREejQoUODrystLcXBgwcxefJkAMDEiRPxr3/9C999951yTHFxMdq0aVNvpbu2bdsqK+ER2WKQpoB3/Phx9OvXD0lJSZgwYQK6du2KX/3qV5DdWHtsx44d6NmzJ+666y4AQLt27TBs2DBs27bNpddLktSoslPLx/WkKeAlJSXhzTffhFarRbt27RASEgIAuPPOO1FZWYlr1645bU3Lsozt27cjPz8fvXv3Vh43mUz4z3/+g/nz5yMkJAQ6nQ43btyA0Wi0ak2XlJSge/fuXqsfNW9sSVPACw0NRbdu3dClSxclQAPA+PHjERISgnfffdfu627evAkAOHr0KC5duoRPPvkEu3fvtvpTU1ODgwcPAgD69+8Pg8GAo0ePKucoLy9HTk4OfvzjH3uxhtScsSVN5ED79u2xbNkyLFu2DBUVFZg2bRq6du2KmzdvIjs7G8eOHcPHH3+MLVu2YODAgejXr1+9c4wePRqffvopHnjgAdx5550YM2YMXnnlFaxcuRKRkZH49a9/jfbt2yMlJcUPNaTmgC1pIiceeughZGZm4ocffsCCBQswbtw4zJs3D5cvX8aSJUtQUlKC7OxsjB8/3u7rU1JScPz4cVy8eBEAsGbNGgwaNAjPPvssHnnkEZhMJnzwwQdWGxETWeLOLEREKsaWNBGRijFIExGpGIM0EZGKMUgTEakYgzQRkYoxSBMRqRiDNBGRijFIExGpGIM0EZGK/X/vHI4hx66kfwAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plotCloud(LoGAN_train, LoGAN_lab)" ] } ], "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.8.5" } }, "nbformat": 4, "nbformat_minor": 2 }