{ "cells": [ { "cell_type": "markdown", "id": "41d3d48b", "metadata": {}, "source": [ "# Regresion Models: Prediction of the value of Tesla's stock" ] }, { "cell_type": "markdown", "id": "4f95381b", "metadata": {}, "source": [ "## Abstract" ] }, { "cell_type": "markdown", "id": "50ceeae9", "metadata": {}, "source": [ "Starting with a data set containing close to a year of historical data related to Tesla's stock movements, in this notebook we will attempt to predict the next five days' worth of this stock. The dataset was downloaded from the Yahoo! Finance (for historical Tesla data: click here).
\n", "Different prediction models were used: simple linear model, simple polynomial model and multiple linear model. All models come with indicators like R2 and RMSE." ] }, { "cell_type": "markdown", "id": "8fb9ed14", "metadata": {}, "source": [ "## 1. Exploratory Data Analysis" ] }, { "cell_type": "markdown", "id": "00b0d4f4", "metadata": {}, "source": [ "### 1.1. Getting the Dataset" ] }, { "cell_type": "markdown", "id": "4808a1ca", "metadata": {}, "source": [ "#### Libreries" ] }, { "cell_type": "code", "execution_count": 1, "id": "265913e8", "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import pandas as pd\n", "from matplotlib import pyplot as plt\n", "from sklearn.metrics import mean_squared_error, r2_score\n", "from sklearn.linear_model import LinearRegression\n", "from sklearn.preprocessing import PolynomialFeatures\n", "from math import sqrt" ] }, { "cell_type": "markdown", "id": "449a5069", "metadata": {}, "source": [ "#### The dataset" ] }, { "cell_type": "code", "execution_count": 2, "id": "d7499986", "metadata": {}, "outputs": [], "source": [ "# The complete dataset\n", "data=pd.read_csv('datasets/TSLA.csv')\n", "# Drop of columns: 'Date' y 'Adj Close'\n", "ds=data.drop(['Adj Close'], axis=1)\n", "# Number of days of prediction\n", "periodos=5\n", "# Global Dataset train and test\n", "dsTrain=ds.iloc[:(len(ds)-periodos),:]\n", "dsTest=ds.iloc[(len(ds)-periodos):,:]\n", "# Simple Data Train: For linear and Polynomial models\n", "dsTrainS=dsTrain.drop(['Open','High','Low','Volume'], axis=1)\n", "# Simple Data Test:\n", "dsTestS=dsTest.drop(['Open','High','Low','Volume'], axis=1)" ] }, { "cell_type": "markdown", "id": "466f02ea", "metadata": {}, "source": [ "### 1.2. Univariate Analysis" ] }, { "cell_type": "code", "execution_count": 3, "id": "672df446", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
DateOpenHighLowCloseAdj CloseVolume
02021-03-15694.090027713.179993684.039978707.940002707.94000229335600
12021-03-16703.349976707.919983671.000000676.880005676.88000532195700
22021-03-17656.869995703.729980651.010010701.809998701.80999840372500
32021-03-18684.289978689.229980652.000000653.159973653.15997333224800
42021-03-19646.599976657.229980624.619995654.869995654.86999542894000
........................
2482022-03-08795.530029849.989990782.169983824.400024824.40002426799700
2492022-03-09839.479980860.559998832.010010858.969971858.96997119728000
2502022-03-10851.450012854.450012810.359985838.299988838.29998819549500
2512022-03-11840.200012843.799988793.770020795.349976795.34997622272800
2522022-03-14780.609985800.699890756.344971783.020020783.0200208910193
\n", "

253 rows × 7 columns

\n", "
" ], "text/plain": [ " Date Open High Low Close Adj Close \\\n", "0 2021-03-15 694.090027 713.179993 684.039978 707.940002 707.940002 \n", "1 2021-03-16 703.349976 707.919983 671.000000 676.880005 676.880005 \n", "2 2021-03-17 656.869995 703.729980 651.010010 701.809998 701.809998 \n", "3 2021-03-18 684.289978 689.229980 652.000000 653.159973 653.159973 \n", "4 2021-03-19 646.599976 657.229980 624.619995 654.869995 654.869995 \n", ".. ... ... ... ... ... ... \n", "248 2022-03-08 795.530029 849.989990 782.169983 824.400024 824.400024 \n", "249 2022-03-09 839.479980 860.559998 832.010010 858.969971 858.969971 \n", "250 2022-03-10 851.450012 854.450012 810.359985 838.299988 838.299988 \n", "251 2022-03-11 840.200012 843.799988 793.770020 795.349976 795.349976 \n", "252 2022-03-14 780.609985 800.699890 756.344971 783.020020 783.020020 \n", "\n", " Volume \n", "0 29335600 \n", "1 32195700 \n", "2 40372500 \n", "3 33224800 \n", "4 42894000 \n", ".. ... \n", "248 26799700 \n", "249 19728000 \n", "250 19549500 \n", "251 22272800 \n", "252 8910193 \n", "\n", "[253 rows x 7 columns]" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data" ] }, { "cell_type": "code", "execution_count": 4, "id": "dad391cb", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Hystograms of independent variables\n", "ds.hist(figsize=(10,8))\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 5, "id": "26a61205", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "ds.plot(kind='box', subplots=True, layout=(2,3), sharex=False, sharey=False,figsize=(10,8))\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "01944927", "metadata": {}, "source": [ "Note than there are a couple of abnormal data shown in the graphic of Volume (small circles)" ] }, { "cell_type": "code", "execution_count": 6, "id": "aac576e1", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " Open High Low Close Volume\n", "Open 1.000000 0.995803 0.993779 0.987110 0.107676\n", "High 0.995803 1.000000 0.994400 0.994272 0.147882\n", "Low 0.993779 0.994400 1.000000 0.995196 0.073231\n", "Close 0.987110 0.994272 0.995196 1.000000 0.116150\n", "Volume 0.107676 0.147882 0.073231 0.116150 1.000000\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Correlation Matrix\n", "import seaborn as sns\n", "correlacion=ds.corr()\n", "print(correlacion)\n", "sns.heatmap(correlacion)\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "0e670662", "metadata": {}, "source": [ "## 2. Regresion Models" ] }, { "cell_type": "markdown", "id": "b9912d3a", "metadata": {}, "source": [ "The variable to predict is the stock's closing value. For each model, the following will be carried out: training (and graphs as far as possible), obtaining metrics and predicting the value of the action for the following days. The result of the predictions is compared with the actual results in order to understand the quality of the predictions." ] }, { "cell_type": "markdown", "id": "6da40d5b", "metadata": {}, "source": [ "### 2.1. Simple Linear Regresion Model" ] }, { "cell_type": "code", "execution_count": 7, "id": "2d32fe76", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "LinearRegression()" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "x=np.array([])\n", "y=np.array([])\n", "for i in range(len(dsTrainS)):\n", " x=np.append(x,i)\n", " y=np.append(y,dsTrainS.iloc[i,1])\n", "# Training:\n", "modelo = LinearRegression() # instance of LinearRegression\n", "modelo.fit(x.reshape(-1,1), y.reshape(-1,1))" ] }, { "cell_type": "markdown", "id": "de9887eb", "metadata": {}, "source": [ "#### Graphics of the Model" ] }, { "cell_type": "code", "execution_count": 8, "id": "12a64f5c", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "def graficar(df):\n", " campos=df.columns.tolist()\n", " x=np.array([])\n", " y=np.array([])\n", " for i in range(len(df)):\n", " x=np.append(x,i)\n", " y=np.append(y,df.iloc[i,1])\n", " modelo = LinearRegression() \n", " modelo.fit(x.reshape(-1,1), y.reshape(-1,1))\n", " y_pred=np.array([])\n", " y_pred=np.append(y_pred,modelo.predict(x.reshape(-1,1))) \n", " plt.figure(figsize=(9,6))\n", " plt.plot(x, y_pred, label=\"Simple Linear Model\",color = \"red\")\n", " plt.scatter(x,y,label='datos', color='blue')\n", " plt.title(\"Tesla's Stoc: Close value prediction\")\n", " plt.xlabel('Day')\n", " plt.ylabel(campos[1])\n", " return\n", "graficar(dsTrainS)" ] }, { "cell_type": "markdown", "id": "4c6a4831", "metadata": {}, "source": [ "#### Formula & Metrics:" ] }, { "cell_type": "code", "execution_count": 10, "id": "e06c1a4a", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Formula: y = 1.835x + 580.94\n", "Testing:\n", "R2= 0.5713974508525748\n", "RMSE= 220.07654723628073\n" ] } ], "source": [ "# Formula: y = mx + b\n", "m=round(modelo.coef_[0][0],3)\n", "b=round(modelo.intercept_[0],2)\n", "formula='y = '+str(m)+'x + '+str(b)\n", "print('Formula: ',formula) \n", "# Testing of the model:\n", "print('Testing:')\n", "x=np.array([])\n", "y=np.array([])\n", "for i in range(len(dsTrainS)):\n", " x=np.append(x,i)\n", " y=np.append(y,dsTrainS.iloc[i,1])\n", "y_pred=np.array([])\n", "y_pred=np.append(y_pred.reshape(-1,1),modelo.predict(x.reshape(-1,1))) \n", "r2=r2_score(y.reshape(-1,1),y_pred.reshape(-1,1))\n", "print('R2=',r2)\n", "# RMSE\n", "xPlus=np.array([])\n", "yPlus=np.array([])\n", "for i in range(len(dsTest)):\n", " xPlus=np.append(xPlus,i+len(dsTrain))\n", " yPlus=np.append(yPlus,dsTest.iloc[i,1])\n", "y_predPlus=np.array([])\n", "y_predPlus=np.append(y_predPlus,modelo.predict(xPlus.reshape(-1,1))) \n", "RMSE=sqrt(mean_squared_error(yPlus, y_predPlus))\n", "print('RMSE=',RMSE)" ] }, { "cell_type": "markdown", "id": "6745ddbb", "metadata": {}, "source": [ "#### Predictions" ] }, { "cell_type": "markdown", "id": "17394e80", "metadata": {}, "source": [ "Historic data is painted in grey, Real \"future\" data in blue, and in red: the predictions." ] }, { "cell_type": "code", "execution_count": 11, "id": "60fdffde", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "def graphicPrediction(dsTrain,dsTest):\n", " campos=dsTrain.columns.tolist()\n", " x=np.array([])\n", " y=np.array([])\n", " xPlus=np.array([])\n", " yPlus=np.array([])\n", " for i in range(len(dsTrain)):\n", " x=np.append(x,i)\n", " y=np.append(y,dsTrain.iloc[i,1])\n", " for i in range(len(dsTest)):\n", " xPlus=np.append(xPlus,i+len(dsTrain))\n", " yPlus=np.append(yPlus,dsTest.iloc[i,1])\n", " modelo = LinearRegression() \n", " modelo.fit(x.reshape(-1,1), y.reshape(-1,1))\n", " y_pred=np.array([])\n", " y_predPlus=np.array([])\n", " y_pred=np.append(y_pred,modelo.predict(x.reshape(-1,1))) \n", " y_predPlus=np.append(y_predPlus,modelo.predict(xPlus.reshape(-1,1))) \n", " plt.figure(figsize=(9,6))\n", " plt.plot(x, y_pred, label=\"Simple Linear Model\",color = \"red\")\n", " plt.scatter(x,y,label='Train data', color='grey')\n", " plt.scatter(xPlus, y_predPlus, label=\"Predictions\",color = \"red\")\n", " plt.scatter(xPlus,yPlus,label='Test data', color='blue')\n", " plt.title(\"Tesla's Stoc: Close value prediction\")\n", " plt.xlabel('Day')\n", " plt.ylabel(campos[1])\n", " return\n", "graphicPrediction(dsTrainS,dsTest)" ] }, { "cell_type": "markdown", "id": "783cbb69", "metadata": {}, "source": [ "### 2.2. Simple Polynomial Regression Model" ] }, { "cell_type": "markdown", "id": "6b1315b3", "metadata": {}, "source": [ "Simple polynomial Regresion Models are polynomic functions (just in one variable) with degree > 1. We will fit the model with Training data. A graph (describing data and the model) is presented." ] }, { "cell_type": "code", "execution_count": 15, "id": "38b23dbb", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Polynomial approximation of degree: 4\n", "Formula: \n", "y=696.19+-0.544*x(exp 1)+-0.043*x(exp 2)+0.001*x(exp 3)+-0.0*x(exp 4)\n" ] } ], "source": [ "grado=4\n", "print('Polynomial approximation of degree: ',grado)\n", "poli = PolynomialFeatures(degree=grado, include_bias=False)\n", "x_poli = poli.fit_transform(x.reshape(-1,1))\n", "modelo = LinearRegression()\n", "modelo.fit(x_poli, y.reshape(-1,1))\n", "# Formula: y = a + b1x1 + b2x2 + ... + bnxn\n", "x=np.array([])\n", "y=np.array([])\n", "for i in range(len(dsTrain)):\n", " x=np.append(x,i)\n", " y=np.append(y,dsTrain.iloc[i,1])\n", "m=(modelo.coef_[0])\n", "b=round(modelo.intercept_[0],2)\n", "formula='y='+str(b)\n", "for i in range(len(m)):\n", " formula=str(formula)+'+'+str(round(m[i],3))+'*x(exp '+str(i+1)+')'\n", "print('Formula: ') \n", "print(formula) " ] }, { "cell_type": "markdown", "id": "a1994c8b", "metadata": {}, "source": [ "#### Graphics of the model" ] }, { "cell_type": "code", "execution_count": 16, "id": "1954a3b1", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjMAAAGDCAYAAADecJEqAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAABTZElEQVR4nO3dd3xb1fnH8c9jZ4AJK06gkOEApYzwYwYoHUDLpow0FAoYCKPs3w9aOhihZTUtdDMKFCglYBOgZRYIe5YVwiahFGgmBAgJOyHDfn5/HClRZF1JtiVdXfn7fr30kn11de+RrOQ+Ouc5zzF3R0RERCSp6uJugIiIiEh3KJgRERGRRFMwIyIiIommYEZEREQSTcGMiIiIJJqCGREREUk0BTMiCWdm15jZL1M/f9PMXu/m8Sab2Y45tl9qZud059hZxzvbzFqK3PcRM/tBqc6dcdxpZrZzqY+bOvYwM3Mz61WGYw81s8/MrL7UxxZJIgUzIhWQumguSF2A3jOzv5lZv1Kfx90fd/cNunmM4e7+SOY2MzsG+MLdz+rOsaV4ZvYVM/u7mX1gZh+b2ctmdoqZ1bv7DHfv5+5tcbdTpBoomBGpnL3dvR+wJbA1cGb2DuX4Fl8K7n6Fu58SdzuqRbn/Tma2HvAMMBP4H3dfFdgfGAGs3M1jd2i7engk6RTMiFSYu78NTAA2AUgNRZxoZm8Ab6S27WVmL5rZR2b2pJltmn6+mW1hZs+b2admdiOwQsZjO5rZrIzfh5jZLWY2x8zmmtklGY8dbWavpY4zxcy2TG1fOvRiZn3N7E9m9k7q9icz65t5LjP7sZm9b2azzeyIqNdtZuuY2aOp890PDMh6/Kup1/qRmb2Ua6grxzHXTvV49c96fz4ws95mtp6ZPZR67R+YWauZrRZxrGJe66lm9i7wtxzPrzez36XO81/gO1mPr2pmf029T2+b2S/zBBHnAE+6+ynuPhvA3V9394Pd/aPsIax8xzazw83sCTP7o5nNA862MDR5mZndbWafA99KvZc3pz4rU83spELvv0i1UDAjUmFmNgTYE3ghY/NIYFtg41RQcTVwLNAI/AW4I3Wx7QPcBlwH9Af+DuwXcZ564E5gOjAMGATckHpsf+Bs4DBgFWAfYG6Ow4wBvgpsDmwGbMPyPUpfAlZNHfso4M9mtnrES78eeI4QxJwHjM5o6yDgLuCXqdf1E+BmMxsYcSwA3P0d4CmWfw8OBv7h7osBA34NrA1sBAxJve5cinmt/YEm4Jgczz8a2AvYgtCD8r2sx8cBS4Avp/bZFYjKA9oZ+EfEY7kUOva2wH+BNYCxqW0Hp35eGXgS+CfwEuFvuRPwQzPbrRNtEImPu+umm25lvgHTgM+AjwjBxaXAiqnHHPh2xr6XAedlPf91YAdge+AdwDIeexL4ZernHYFZqZ+3A+YAvXK0517g5Dxt3Tn181vAnhmP7QZMyzjXgszjA+8DX81xzKGEi+1KGduuB1pSP58KXJejjaNTPz8C/CCivT8AHkr9bIShme0j9h0JvNDF17oIWCHP3/gh4LiM33dN/W17AWsCC9N/89TjBwEPRxxrMbB7nnMNK/bYwOHAjKznXwNcm/H7tjn2OR34W9z/dnTTrZhbVY7Pi9Soke7+QMRjMzN+bgJGm9n/ZWzrQ+hdcOBtd89cIXZ6xDGHANPdfUnEY28V0ea1s44/PbUtbW7W8ecDuRKb1wY+dPfPs441JPVzE7C/me2d8Xhv4OEi2vgP4GIzWxtYn/AePQ5gZmsAFwHfJPRA1AEfRhyn0Gud4+5f5GnH2iz/d8w8VhPh9cw2s/S2uqz9M80F1spzrkzFHDvXebI/c2ub2UcZ2+pJvY8i1U7BjEh1yAxOZgJj3X1s9k5mtgMwyMwsI6AZSu7AZCYw1Mx65QhoZgLrFdGudwgXuskZ53qniOdlmw2sbmYrZQQ0Q1n2umcSemaO7uyBPeSQ3AccQBhKGp/x3vw6dY5N3X2umY0ELsl9pIKv1Ts8Y3mzWRacpZ+fNpPQezIgIrjM9gBh6KxDbk4OxRw7V9uzP3NT3X39Is4nUnWUMyNSfa4EjjOzbS1Yycy+Y2YrE/JDlgAnmVkvMxtFyO3IZSLhAnt+6hgrmNnXU49dBfzEzLZKnePLZtaU4xjjgTPNbKCZDQB+ARRVGyaTu08HJgHnmFkfM/sGkNkL0wLsbWa7pRJpV0gl3Q4u8hTXE/J/9kv9nLYyqeG9VF7OT/Mco7uv9SbC32VwKm/otPQDHpJ47wN+b2armFldKjl5h4hjnQV8zcx+a2ZfAkj9jVqyE5i7cOxcJgKfpBKcV0z9DTYxs607cQyR2CiYEaky7j6JkEx6CWFI5E1C3gPuvggYlfr9Q+D7wC0Rx2kjBAxfBmYAs1L74+5/JyR/Xg98Skgq7p/jML8kBCEvA68Az6e2dcXBhNyMeYSL9bUZbZ0J7AucQcjzmUkIPIr9P+oOwhDTe+7+Usb2cwhT4T8mJBjnfK9SuvtaryTk+byUem72uQ4jDBdOIfzt/kHEUJK7v0XIeRoGTDazj4GbU+37NMdTij52xPnSn5XNganAB4SAd9VijyESJ1t+6F1EREQkWdQzIyIiIommYEZEREQSTcGMiIiIJJqCGREREUk0BTMiIiKSaDVbNG/AgAE+bNiwuJshIiIiJfDcc8994O4512ur2WBm2LBhTJo0Ke5miIiISAmYWdTSLRpmEhERkWRTMCMiIiKJpmBGREREEk3BjIiIiCSaghkRERFJNAUzIiIikmgKZkRERCTRFMyIiIhIoimYERERkURTMCMiUuNaW2HYMKirC/etrXG3SKS0anY5AxERCYHLMcfA/Pnh9+nTw+8Azc3xtUuklNQzIyJSw8aMWRbIpM2fH7aL1AoFMyIiNWzGjM5tF0kiBTMiIjVs6NDc2+vqlDsjtUPBjIhIDRs7FhoaOm5vawu5MwpopBYomBERqWHNzXDFFVBf3/Ex5c5IrVAwIyJS45qbob0992PKnZFaoGBGRKRGZdaXqYv43z4qp0YkSVRnRkSkBmXXl2lr67hPQ0PIqRFJOvXMiIjUiMyemNGjO9aXgZA7YwZNTSGXRoXzpBaoZ0ZEpAYU0xMDIXcmKn9GJKnUMyMiUgNyVfrNRTkyUovKFsyY2dVm9r6ZvZqx7bdm9m8ze9nMbjWz1TIeO93M3jSz181st4ztW5nZK6nHLjIzK1ebRUSSqphZScqRkVpVzp6Za4Dds7bdD2zi7psC/wFOBzCzjYEDgeGp51xqZumqCJcBxwDrp27ZxxQR6fGielyUI1M8rS6eXGULZtz9MWBe1rb73H1J6tengcGpn/cFbnD3he4+FXgT2MbM1gJWcfen3N2Ba4GR5WqziEhS5ar029AA48aFHJlp0xTI5JPOOZo+HdyXrS6ugCYZ4syZORKYkPp5EDAz47FZqW2DUj9nbxcRkQzpSr9NTeqJ6QqtLp5sscxmMrMxwBIgHfPmyoPxPNujjnsMYUiKocpyE5EeprlZwUtXaXXxZKt4z4yZjQb2AppTQ0cQelyGZOw2GHgntX1wju05ufsV7j7C3UcMHDiwtA0XEZGaFfX9V9+Lk6GiwYyZ7Q6cCuzj7pkdencAB5pZXzNbh5DoO9HdZwOfmtlXU7OYDgNur2SbRUSk9kXlHGn2VzKUc2r2eOApYAMzm2VmRwGXACsD95vZi2Z2OYC7TwZuAqYA9wAnunu65NPxwFWEpOC3WJZnIyIiUhLKOUo2WzbSU1tGjBjhkyZNirsZIiIiUgJm9py7j8j1mCoAi4iISKIpmBEREZFEUzAjIiIiiaZgRkRERBJNwYyISI3RGkPS08RSAVhERMojvcZQujR/eo0h0DRjqV3qmRERqSFaY0h6IgUzIiI1RGsMSU+kYEZEpIYUWmNI+TRSixTMiIjUkHxrDKXzaaZPB/dl+TQKaCTpFMyIiNSQfGsMKZ9GapWCGRGRGtPcDNOmQXt7uE/PYip1Po2GrKRaKJgREekhCuXTdIaGrKSaKJgREekh8uXTdJaGrKSaKJgREekh8uXTdFatTgHX0FkyqQKwiEgP0txcmkrAQ4eGoaVc25NK1ZOTSz0zIiLSacUOWSWpp0NDZ8mlYEZERDqtmCGrpCUJ1+rQWU9g7h53G8pixIgRPmnSpLibISLSYw0blnsoqqkpTBmvNklrb09jZs+5+4hcj6lnRkREyiJpPR2lnO0llaVgRkREOqWYPJjW1vB4LtWaJFzK2V5SWZrNJCIiRStmxk96n7a2js+v9p6OUs32kspSzoyIiBStmLySqH3q62HcOAUL0jXKmRERkZIoJg8map/2dgUyUh4KZkREpGjFrO9UyjWgRIqhYEZERIpWzIwfzQqSSlMwIyIiRStmxo9mBUmlKQFYREREqp4SgEVERKRmKZgREZGSSNKiklJbFMyIiCRcNQQRSVtUUmqLghkRkQSrliBizJhlVYHT5s8P20XKTcGMiEiCVUMQ0dqau+IvVO+iklJbFMyIiCRY3CtTp3uGotR6obxqGOITBTMiIokWd7XdXD1DabVeKK9ahvhEwYyISKLFXW03Xw9QrRfKq4YhPgnKFsyY2dVm9r6ZvZqxbX8zm2xm7WY2Imv/083sTTN73cx2y9i+lZm9knrsIjOzcrVZRCRp4q62G9UD1NRU24EMxD/EJ8uUs2fmGmD3rG2vAqOAxzI3mtnGwIHA8NRzLjWz+tTDlwHHAOunbtnHFBHp0ZqbYdq0sCr1tGmVDSLi7hmKU9xDfLJM2YIZd38MmJe17TV3fz3H7vsCN7j7QnefCrwJbGNmawGruPtTHtZduBYYWa42i4hItFzJrsX2DNViomxPDuSqTbXkzAwCZmb8Piu1bVDq5+ztOZnZMWY2ycwmzZkzpywNFRHpifIluxbqGYo7UbZcgVTcQ3yyTLUEM7nyYDzP9pzc/Qp3H+HuIwYOHFiyxomI9HTdSXaNM1G23IFUnEN8sky1BDOzgCEZvw8G3kltH5xju4iIVEh3i+LFmSgbFUiNHl0bQ10SVEswcwdwoJn1NbN1CIm+E919NvCpmX01NYvpMOD2OBsqItKTlKIoXpyJslEBU1sbHHIIDBiQO6ipxRyfWlbOqdnjgaeADcxslpkdZWbfNbNZwHbAXWZ2L4C7TwZuAqYA9wAnuntb6lDHA1cRkoLfAiaUq80iIrK8UhTFy5UoC/DZZ+UPEgoFTHPndhx2ijvHRzrPwiSh2jNixAifNGlS3M0QEUm0urpwQc+lpSV3su+YMaFHZOjQEMg0N4ftJ58cgodMDQ3lTZpNByZRAVlaU1PIeYHQE5NrWC1zH6k8M3vO3UfkfEzBjIiIROnMhT1X4JAZrMQVJLS2hhyZtrbofcxCEi9EB3CZ+0jl5QtmqiVnRkREOqkSeR2dqaVSaNZSXInAzc0wblzuoa60zOEoFcNLHgUzIiIJVKm8js7UUikUrMQZJKRfR2Njx8eygzMVw0seBTMiIglUydotxdZSKRSsxB0kNDfDBx+EXJ98wZmK4SWPghkRkQSqxkUOCwUr1RIkpIOz664Lvx96aMdhOhXDSxYFMyIiCVSNeR3FBCv5goRK1nbR9OvaomBGRCSBSjVkU+oAoqs9GuUKLqJeX5xLLEjpKZgREUmgUgzZ5Aog8lXFLadyBBf5AqRih+migiFVCK4uqjMjItJDRdV9gfIXs8tWktouixeHFzR1KkydysU/nUHbJ5+xAl+wAl9QRzsfsjrtq/bnw7pGXvpwCC+xGdNpIr2ucWbNm6i6OaNHh6neUfV0pDxUNE9ERDrIV90XKlvxtksF9T76CB5+GJ5+Gp56CiZNggULlj68hHo+ox9fsAIL6YtjrMZHrMbHyx3mY1bhZTblyV47sPmY77Dbz7eB+vrINtXX5y7ApwrB5aVgRkREOsjXMwOVrXhbqHrwUjNnwu23h9sjj8CSJdC7N2y5JWy3HWy6Kay7LqyzDut+cxBTZ9R3ONd6Qxfz5rMfcs9lU3n0opcYPO8ltuJ5RvAsvWjji5UHsMKo77D9uKN4nG+Q7rUpRBWCyytfMIO71+Rtq622chERidbS4t7Q4B76ZzreGhvdm5rczcJ9S0v525PzfF984X7jje4777yscRtu6H7qqe6PP+6+YEHRr6+hYfnXkbnPaszz7zPex9c3+8KGVd3BX2YTP54/ez8+iXyf0rempvK+Pz0dMMkjrvmxBx3luimYEREprKUlBC3ZF+bevd379MkfCJTdO++4/+xn7gMGLIsWzjnH/bXXij5EZICU0tSUOzDZYMjn/uTRf/XnbUt38Lms7j/hN74C83PuX/H3pgfKF8xomElERDqsdv3ZZx1XuIby5IVkn/vCk95i39d/A9dcE4aRRo4MY1A77xwSVkqoUOJxa4vz959O5Jh3z2FPJjCTwZzFOYxjNO0sa0uuFcSltJQzIyIinVKplaMzc2UGMYvz+DmHcS306kX9UUfAT38K661XuhNm6Uzi8YFfeoQfvXcq2zKRiWzNEfyNKQxfum92UDZ2rAKcUtKq2SIi0imVqjA8Zgz0mv8xYzmDN1ifgxjPn/ghX11zGlx+eVkDGehc8cG9f78j317xaQ5kPOswlefZkl/0/jW/OneJKgrHTMGMiIh0UJFFIdvb2Wn61bzJlzmDX3Mz+7EBr/MTfs9z76xVwhNF60zxweZmuOJK4+mmA9mEyTzQsA/nLD6Dgy/5Gn/52VuqKBwjDTOJiEhOZR02mTwZjjsO/vUvHucb/JA/8TxbLX04MTVb/v53OPZY5n0IBzGe+9htuYc1Xbt0NMwkIiKdVpaVoxcuhDPOgM03hylTeOrov7LHio8uF8iUvAeonPbfHyZN4r3eg7mbPfkpvwGWdRLEufBnT6JgRkQkgRK5NtCLL8KIEfDrX4fI6N//ZrsrjuQvV9Z1a42p2K27Li9d9hS31n+P33Aq13MwfViYrKAs4TTMJCKSMEVXy60WS5bAb34DZ58dVrG86irYc8+4W1VyrS3O2/93Pj/76AweW2FX3rnkFg48aqW4m1UzNMwkIlJDyrHCdFrJe3xmzoQddwyNGzUKXnmlJgMZgOZDjJ99eDr89a9sv+gBDvzbbmH9KCk7BTMiIgkzY0bnther5NOL77or5Ma89FI4yA03QGNj9xpZhbIDwBMmHckJ/W9g0RMTeXXNb/OPy+bE3cSap2EmEZGE6dIK05U87uLFIcn3d7+DzTYLM37WX7/rDatiuYb80nZnArcwirdsfaZc/hgHHLNaxdtXSzTMJCJSQ8pVA6YkPT7vvx+WHfjd7+D44+Hpp2sikIkafss15Jd2D3uwD3fwFf83w07aO3pH6TYFMyIiCZB5MR0zBkaPLq7QWzHHS1+cu13197nnwmyliRPDYkWXXgorrFB8o6pUvuG3QoHeA+xCM62MWPgEHHBA6LWSktMwk4hIlSv17KWo440eDePGdfE8118PRx0FAwfCbbfBllt2vmFVKt/wG+R+LNsZ/S9n7Lzj4dBDwwKadepL6CwNM4mIJFipZy9FHe/uu4sv7b+UO5x1Vthp221h0qSaCmQg//BbriG/bA0NsPFFx8G558J114Up6lJSCmZERKpc1MV0+vSuzTTKd3HuVNXfRYvg8MPDRfqII+D++2GNNTrfoAjVUhgw3/BbrrWdjj8+IiA880w48kg47zy45ZaKvoaa5+41edtqq61cRKQWNDW5hy6QjreGBveWltIcr6mpEwf58EP3b387PPG889zb2zvVhpaWcD6zcJ/9Glpawmvr7msthZK25Ysv3Lfd1n2lldxfeaXkba1lwCSPuOarZ0ZEpMrlG8roynBTMbOh8vaKzJgB3/gGPP54GDY588zQDVGkYurZlLMwYGd1ZmXtgvr2Db0yK68M++4L8+aVvL09kRKARUQSoLUVDjkk92NdWZk534rYeROON34BvvOd8OCtt8K3vtXp11JMPZu6uhDoZKuZVaifeipURt5hB5gwAerr425R1VMCsIhIwjU3L5s9k60rKzPny42J6hW57cePhwtw797wxBNdCmQgfw5QWneniVdLvk2k7baDSy4JeUa//W3crUk8BTMiIglRrmJ52XIFG7tyL+Pe2w3WWisEMsOHd/n4UQGJ2bKgozuvteTLMpTLD34Qas/8/Ofw7LNxtybRFMyIiCRESXM38sgONkZxM/9kb6b23gAeewwGD+7W8ceOzZ1i4x56hdJDYPPnLxt96cxrraZ8m7zM4PLLQ4DY3AyffRZ3ixKrbMGMmV1tZu+b2asZ2/qb2f1m9kbqfvWMx043szfN7HUz2y1j+1Zm9krqsYvMOpFlJiJSYzo1dbqLMntFDmMcN3EAz9VtzeRLHi7J1Ovm5tz5MLCsFyU95NTWtqxHptjXWq6FOMti9dVDteS33oKTT467NYlVzp6Za4Dds7adBjzo7usDD6Z+x8w2Bg4Ehqeec6mZpbOhLgOOAdZP3bKPKSIiJZTuAfr56pcwjsN5coVvM/2K+0q6UGJU/k99ffd7Vbq9LEOlbb89nH46XH11WJRTOq1swYy7PwZkzznbFxiX+nkcMDJj+w3uvtDdpwJvAtuY2VrAKu7+VGqO+bUZzxERkTJpfv+PnPvh/8HIkXzzw39y4FErlfT4UTkxbW259+9Mr0qlcouKVVQy8llnwTbbhIp7c+ZUuIXJV+mcmTXdfTZA6j7dXzkImJmx36zUtkGpn7O3i4hIufzxj3DKKfC978FNN5Vlscio/J9SzNiqVG5RIa2tMGBAmFJfMBm5d+/QM/PJJ/CjH1W2oTWgWhKAc+XBeJ7tuQ9idoyZTTKzSXMU2YqIdN6f/hQCmf32C4tH9u5dtlPlyv8pVa9KJXKL8knPqJo7t+NjkcNmw4fDGWeEJ0+YUPY21pJKBzPvpYaOSN2/n9o+CxiSsd9g4J3U9sE5tufk7le4+wh3HzFw4MCSNlxEpOZddFHoFdhvPxg/vqyBTJRq6VXprlwzqjJFDpudfjpstBEcd5xmN3VCpYOZO4DRqZ9HA7dnbD/QzPqa2TqERN+JqaGoT83sq6lZTIdlPEdERErl4ovDbJpRo2ILZNLi7lUphUI5PpHDZn37wlVXwcyZYZkIKUo5p2aPB54CNjCzWWZ2FHA+sIuZvQHskvodd58M3ARMAe4BTnT3dBrY8cBVhKTgtwD1vYmIlNKll8JJJ8F3vws33BBrIFMr8uX4FBw2+9rX4IQTQk/ZM8+UvG21SGsziYj0ZOPGweGHwz77hGnBffrE3aKakGt9K4DGRrjwwiJ6mz75JAw3DRoETz8dpkL1cFqbSUREOrr5ZjjySNh55zBrSYFMyeTK/WlpgQ8+KHLYbJVV4IILwjIH111X9vYmnXpmRER6onvvhb33hq23hvvug5VKW0dGSqC9PQw5TZ8O//kPrLxy3C2KlXpmRERkmX/9K+THDB8Od92VqECm6lfDLqW6ujAm9e678Ktfxd2aqqZgRkSkJ3n+efjOd0KG6r33wmqrxd2ioiVmNexS2nZbOOww+MMfwvpNkpOCGRGRnuLf/4bddguLGz7wQEkWjaykxKyGXWq//nWYYfaTn8TdkqqlYEZEpCd4550QyNTVhUBm8ODCz6kyiVoNu5TWXjtEbLfdBo8+GndrqpKCGRGRWvfRR7D77jBvXiiT/+Uvx92iLkncatil9MMfhqDmjDPCGJssR8GMiEgt++ILGDkyDDHdcgtsuWXcLeq0dNLv9OlhmnOmOFfDrqgVV4Sf/xyefBLuvjvu1lQdBTMiIrWqrQ0OPTQMTVxzDeyyS9wt6rTMpF8InRLpgCap6zZ12VFHwbrrhiGn9va4W1NVFMyIiNQi9zA08Y9/wO9/DwcfHHeLuiRX0q97CGSSum5Tl/XuDeeeCy+9FKo1y1IKZkREatEFF8All8CPfwynnBJ3a7osKrl3+vQan5Id5cADYZNNwpDT4sVxt6ZqKJgREak111wDp58eemN+85u4W9Mt+ZJ7a77GTC719SFJ6I03wrpaAiiYERGpLRMmwA9+ENZb+tvfEr9A4dixIck3lx5RYyaXvfcOxfTOPRcWLYq7NVUh2Z9yERFZ5sUX4YADYNNNw8ylGlg4Mr1gY5SarzGTixmcdRbMnBlWrxQFMyIiNWHWrLBMwWqrwZ131tSihM3NIeE3lx5RYyaX3XeHLbaA888Ps9Z6OAUzIiJJ9+mnYejh00/DwpFrrx13i0ou13BTj6kxk4tZKKD3xhthxloPp2BGRCTJliwJM1xeeSVM191007hbVBbp4aampnAd73E1ZnIZNQo23DCsqN3DqwIrmBERSSp3OPnkUBH2z38Oay/VsObmUFumvT2ZNWbSlYzr6sJ9t2di1dXBaafByy+HHrkeTMGMiEhS/elPcOml8NOfwrHHxt0aySOzkrF7uC/J1PKDDw6R0dixPbp3RsGMiEgS3XZbKIi3334hCVSAMvR+lEiuSsYlmVreuzf87Gfw9NPwyCPdPFhyKZgREUmaSZPCN/Ktt4Zrr018LZlSKVvvRwnkq2ScK/jqVFB2xBGw5prw29+WtM1JYl6j3VIjRozwSZMmxd0MEZHSmjkTttkGVlghfBtfc824W1Q10itrZ0uv4xSnqLaZLT861NAAo0eH4r6ZPTkNDQUSns87D37xC5gyBTbaqJRNrxpm9py7j8j1mMJ5EZGkmD8fRo6Ezz8PtWQUyCzXg5ErWIDqKKyXa2p5diAD4U98xRW5h6RGj87TQ3PssbT17kvLNhdV3RBbJSiYERFJAnc46ih44QW4/noYPjzuFsUue1gpSjUU1ktPLW9sXLYtqs1RNfDa2qKHzVrvX4Pr2g9h1GfjWN3nVtUQWyUomBERSYLzz4cbboBf/xr22ivu1sSutTX0VGT3YGSrtsJ6CxYU3qe+PvqxqKThMWPg920n08ACjubKvPvWIgUzIiLV7o47wlXp4IPDzJUeLt0jk6+KfzUW1ss1oylbQ0N4bVGLa0LuYbMZM+BV/ocH2In/5RJ6sThy31qkYEZEpJpNnhyuxlttBVddFa7SPVyhoKCpqToL6+ULLDKDr0svDfdRPTT9+y8/0+mEE5ZNaPsjP2Iwb/M9whIH6SG2dG6RGfTqFe5rKa9Gs5lERKrV3Llh5tL8+fDsszB4cNwtqgp1ddH5JgVn/cSos7Ot0j1QmYFb794hEFm0KPc5jHZeYyM+ZlW+teIzXHFlCH6zj5NWze9XNs1mEhFJmsWLYf/9w2rYt96qQCZDVEJvfX11X5hzzWgC+Oyz3D0kudajWmWV6EAGwKnjQk5mG57llp89TXNz/p6sWsmrUTAjIlKNTjkFHn44XM2++tW4W1NVolbQHjeuegMZyD2jCUIHXNTMo+z1qObNK3yeazmMT1iZ3aZeDhTOm6mFvJqighkLDjGzX6R+H2pm25S3aSIiPdSVV8Ill4TlCkaPjrs1VSfJK2g3N0O/fh23F9tDUsw088/pxx39muGmm2DevILPqYap691VbM/MpcB2wEGp3z8F/lyWFomI9GSPPw4nngi77w4XXBB3a6pWklfQjuoJKaaHJGqoKlNDA6x++nHwxRdw7bV5n1NtU9e7qthgZlt3PxH4AsDdPwT6lK1VIiI90fTpYeHIddaB8eOhvr5qF06UrovqCSmmhyRXr9Txx3fspfrOGZvBttvCX/5C88G+9DmwbJZUknq0Cik2mFlsZvWAA5jZQKC9bK0SEelpPv8c9t03ZHfecQestlpVL5woXReV81NsD0m6V+q668Lvl4fUGK67LquX6rjj4N//hsceW/ocd1iyJNwnrUcrn2KDmYuAW4E1zGws8C/gV2VrlYhIT9LeHnJjXnkl9MhssAGQexZKrcw+6ck6m/OTq3cuKtA94YRl+274iwNY2LAa/OUvlXtxMSm6zoyZbQjsBBjwoLu/Vs6GdZfqzIhIYpx7Lpx1FvzudyHpNyWqnopZiH+k9uWqNdPQACuuGGZBZctevPLPvU7mWL+M+ndmwRprlL/BZdTtOjNmth4w1d3/DLwK7GJmq3WjQSeb2atmNtnMfpja1t/M7jezN1L3q2fsf7qZvWlmr5vZbl09r4hI1bnllhDIHHZYmI6doTu5FT1NreYWRfXO5QpkoGPwe8mSY6lvWwzXXFOW9lWLYoeZbgbazOzLwFXAOsD1XTmhmW0CHA1sA2wG7GVm6wOnEXp81gceTP2OmW0MHAgMB3YHLk3l74iIJNvLL4cgJpWomb1UQXdzK3qKWs4t6m4NmNfYmMf4ZhjHqtGK/1B8MNPu7kuAUcCF7v4jYK0unnMj4Gl3n5865qPAd4F9gXGpfcYBI1M/7wvc4O4L3X0q8CYhEBIRSa45c2CffWDVVUOF3xVW6LBLkuupVFIt5xZF9cI1NnYMdKOW7bq18Wh46y34179K27gq0pnZTAcBhwF3prb17uI5XwW2N7NGM2sA9gSGAGu6+2yA1H16cG8QMDPj+bNS2zows2PMbJKZTZozZ04XmyciUmaLFsH3vgfvvgu33QZrdfxumB42OfTQ8HuHmSqyVHfqtlS7qN65Cy/sGOged1zufbe9YFSo1FfDQ03FBjNHEIrmjXX3qWa2DtDSlROmEocvAO4H7gFeApbkeUquWDNnX5m7X+HuI9x9xMCBA7vSPBGR8jv5ZHjsMfjrX2HrrTs8XMvDJuVQy7lFmb1zEGrEZPY6ZRYOTK+2nd2Td+BRK8EBB4SKwJ9/HtdLKauighl3nwL8BHgllfMyy93P7+pJ3f2v7r6lu28PzAPeAN4zs7UAUvfvp3afRei5SRsMvNPVc4uIxOqyy0JhkFNPjexmqeVhk3Ko9dyi5uZlr7GtLWyLCnAjKyMffnhY0fKWWyrX8Aoqamq2me1IyGOZRugpGQKMdvfHunRSszXc/X0zGwrcR+j1OQOY6+7nm9lpQH93/5mZDSckG28DrE1IDl7f3dvynUNTs0Wk6jz8MOy6K+y2G9x++7JSrFk0JbvzWltDsDdjRuiRGTu2tobkhg0LAUy2pqYQtBTkDl/+cqgu/cADJW5dZeSbml1sMPMccLC7v576/SvAeHffqosNehxoBBYDp7j7g2bWCNwEDAVmAPu7+7zU/mOAIwnDUT909wmFzqFgRkSqytSpYUhpjTXg6adhlVUid+32hUtqTkkC3HPPhbPPDp/F9LhVgnS7zgzQOx3IALj7f+h6AjDu/k1339jdN3P3B1Pb5rr7Tu6+fup+Xsb+Y919PXffoJhARkSkqnz6aZi51N4elirIE8hA7Q+bSOeVJC/osMNCRJReB6GGFBvMTDKzv5rZjqnblcBz5WyYiEhNaG8PF5EpU+DGG0NXfwGaki3ZShLgDhsG3/oWjBvXrZoz1VigsNhg5nhgMnAScDIwBTiuXI0SEakZZ58dpl//4Q+wyy5FPy0ykVN6pJIFuIcfDm++CU8+2aV2VOtMu2JnMy109z+4+yh3/667/9HdF5a7cSIiiXbTTXDeeXDkkXDSSXG3RhKuKwFudi/KDYv3g379ePPMa7rUu1KtM+3yJgCb2StE1HQBcPdNy9GoUlACsIjE6oUX4Otfhy22gIcegr59426R9DBRi1Q+NPhQ1v/PXXyJd1lMn6Xbi+npiXOmXXcSgEcBJwB7Z93+N/WYiIhke+892HffUHP+llsUyEgsonpRfvnmQfTnQ3bj3uW2R/WuZPbu1EVEDXEXKCwUzPwR+MTdp2fegPmpx0REJNPChbDffvDBB6GWzJprFnxKNSZUSvJFLedwT/sufEAjBzG+4P7ZOTJtOSq8VcNMu0LBzDB3fzl7o7tPAoaVpUUiIknlDieeCE88EdbB2XLLgk/JlVB56KGh216BjXRHVG+J1/fmH3yPfbmdBj7Pu3+u3h0I9R6raaZdoWCm4zKuy6xYyoaIiCTeJZeE9ZbGjAlr4RQh18UinZNQLTNFJJmipnMfcwzc2vcgVmI+e/PPpdtz9a5E9e60tVXX4qeFgplnzezo7I1mdhSqMyMisswDD8CPfhRyZc49t+inFVrZuRpmikgyRU3nvvRSOOzKbzK7fhAHMT5v70q+XJhqCrQLzWZaE7gVWMSy4GUE0Af4rru/W/YWdpFmM4lIxbz5JmyzDay9Njz1FKy8ctFPjVq6IJPWZJLOKmqtqh//GC6+OCSsr7565HGyZ0RlquQSG12ezeTu77n714BzCItMTgPOcfftqjmQERGpmE8+CUsVmIWlCjoRyEBxiZNxzxSRZCm6sN1BB8Hixfzsy7dEJp+ne3eiFOpZrJSiFppMIvXMiEjZtbWFYaV77oH77w+l4rtgwACYOzf3Y8XW/xBJK3ah0tYWZ9vDvsI0b2IXwkraUZ+3alj8tBQLTYqISLYzz4S77oKLLupyIANw4YUdEzUhlKlRICOdFdVbkr19zJnGeD+Qb/EwaxIGW6JytKp98VMFMyIiXTF+PJx/fui/P/74bh0qV6JmS0soVaNARjqr2BW2Z8yA8RxEPe3sx83Lbc9W7YufaphJRKSzJk2Cb34Ttt46zGLq0yfuFoksFbWMQXbwkR46mszGvMuX2ImHgMoOHXWGhplEREpl9mwYOTJU9r35ZgUyUlKlqAZdbC9KeujoZvZjBx5lAHOqauioM3rF3QARkcT44gsYNQo+/BCefBIGDoy7RVJDsntU0rOQoPPDOc3NhZ+Tfvz6n46ifvYvOaL/HWx20VFVM3TUGeqZEREphjsceyw8/TRcey1stlm3D6k1mSRT1MKQ5Sya2NwMd729OayzDr/Z9uZEBjKgYEZEpDi/+10IYs45Jywk2U1F1wKRHqPYWUglZxY+0w88AB99VNRTqi0QVzAjIlLInXfCqaeG9ZZ+/vOSHDKOb+FS3YqdhVQWo0bB4sXhs15ArkD8kENCvaS4ghoFMyIi+bz6aqiUuuWW8Le/hW+xJRDbt3CpWrHWctl227Acxy23FNw1aiXtuXPj611UMCMiEmXOHNh777BEwe23565s10WxfguXqhRrLZe6utA7c8898PnneXfNF3DH1buoYEZEJJdFi+B73wtTsW+7DQYNKunhq72iqsSjuTnUeGlvD/cVTcjdbz9YsAAmTMi7W6GAO47eRQUzIiLZ3OHEE+Gxx+Dqq8OK2CVW7RVVpbKqIqH2G98IiS8FhppyBeKZ4uhdVJ0ZEZFsF18MV10FZ5wBBx9cttMUUwtEal8p68t0S69eoSDkjTfCwoXQt2/O3dJtOvnkjgukxtW7qJ4ZEZFM990HP/pRWA37vPPibo30AFU1s23kSPj0U3jkkby7NTeHtcNaWqqjd1HBjIhI2uuvh+nXm2wS/peu03+RUn5xz2zLHOLa4Phvs6RvA/zzn0U9N9Ycnwz6lyoiAmGJgr33Dmst3XEH9OsXd4ukh4hzZlt2zZj/zFyRCUt24fMb/hk2JISCGRGRxYtDj8y0aXDrraG/vIyqItlTqkacM9tyDXHd1rY3K82dAS+/XP4GlIiCGRGRU04JpdyvuAK+/vWynkrLGEi2OGe25RrKuovvhB+KHGqqBuYJ6kbqjBEjRvikSZPiboaIVLvLLoMTToAf/zisv1Rmw4aFACZbU1PoGBKppKjP4wt9tmXzzYFnnqlwi6KZ2XPuPiLXY+qZEZGe65574P/+D77zHbjggrKfrrU194UDtIyBxCNqiIt994GJE9l68OxEDIcqmBGRnumVV0KezP/8D9xwA9TXl/V06eGlKFrGQOIQNcT19hZ7A7DZ23clYjhUw0wi0vPMnh0W1mtrC93ogweX9XStrTB6dDhdLg0Nqv4r1WVYk/PojGG8yOaM5Pal2+McDtUwk4hI2uefwz77wLx5cOedFQlkjjkmOpABBTJSfWbMNP7J3uzC/azAgmXbI4ZD456hF0swY2Y/MrPJZvaqmY03sxXMrL+Z3W9mb6TuV8/Y/3Qze9PMXjez3eJos4jUgPZ2OPRQeP55GD8ettii7KfMNfU1U1OTAhmpLq2tISj5J3vTwAJ24sGlj+UaDq2GGXoVD2bMbBBwEjDC3TcB6oEDgdOAB919feDB1O+Y2capx4cDuwOXmll5B7dFpDademqoI/OHP4QCeRWQL7FXq2RLtcnsSXyEHfmUfuxNmKId9XmthuUY4hpm6gWsaGa9gAbgHWBfYFzq8XHAyNTP+wI3uPtCd58KvAmUfglbEaltf/lLmHp94olw0kkVO21UYm99vYaXpPpkBiaL6Mt97Mqe3E19nUd+XuNejgFiCGbc/W3gd8AMYDbwsbvfB6zp7rNT+8wG1kg9ZRAwM+MQs1LbRESKc++9IYjZYw/405/CtI0KiZr6Om6cAhmpPtkByD3szhBmsWH7lMjPa5zLMaTFMcy0OqG3ZR1gbWAlMzsk31NybMs5BcvMjjGzSWY2ac6cOd1vrIgk36uvwv77w/DhcOON0KtXWU+XmQg5YACcfHL4ppue+R3nysIihWQHIPewOwAHrn5P5HPiXI4hLY5hpp2Bqe4+x90XA7cAXwPeM7O1AFL376f2nwUMyXj+YMKwVAfufoW7j3D3EQMHDizbCxCRhHj33VAQr1+/MHNp5ZWLelpXZ2ZkJ0LOnRtuEHIQ0v/BK5CRapUdmMxiCFNsOEetPSHyOXEux5AWRzAzA/iqmTWYmQE7Aa8BdwCjU/uMhqUT2+8ADjSzvma2DrA+MLHCbRaRpPnss5Dk+8EHYY2ZIUMKP4fuzcwoNHOp0kmRIp2VKzBhj91Z643Hw7+pPM+bNi1MGJw2rfIBeyxF88zsHOD7wBLgBeAHQD/gJmAoIeDZ393npfYfAxyZ2v+H7h4dIqaoaJ5ID7Z4Mey7b8iVue22Ts1c6s7aSXV1IQDKxyz8hy+SGA8+CDvvHL4U7LVXbM3IVzSvvIPHEdz9LOCsrM0LCb00ufYfC2gCo4gU5g7HHQcTJoQZTJ2cgt3VmRnp2hz5iuOBli2QBPrGN8LY0z33xBrM5BNLMCMiUjbnnANXXw0//3n+xZAiDB2au2emri7chg5dltg4ZkzY16xwjwyE/VRXRhKnb1/49rfDFwT3is4GLJaWMxCR2nHVVSGYOeKIcN8FuWZmQOhxSefQHHEEHHnksqCn2NF6dyX/SkLtsQf897/w5ptxtyQnBTMiUhvuuisML+2+exhe6uK3x8wEyCiLF8OiRZ0/dr5jilS13cMUbe6JnqIdJwUzIpJ8zz4LBxwAm20Gf/879O7dpcOkp2QfemiYuNGnT+maqKULJNHWXRfWX1/BjIhIWbz5Zqgls+aaoXemX78uHSZXjZiu9L6k9e4NjY3x1d0QKbndd4eHH4Yvvoi7JR0omBGR5HrvvfAfbHt7+Mb4pS91+VCFasR0RmMj/O1vocRNXHU3REpujz1gwQJ49NG4W9KBghkRSaaPPoLddoPZs0P9i698pVuHK8WieE1N0NISghgFL1JzdtghjL3ef3/cLelAU7NFJHnmzw/1Y6ZMCYHMdtt1+5BRU7KLUUxBPZHEa2iAr389FNGrMuqZEZFkWbw4JPs+8QRcd13onSmBXFOy03kvED05Som9UiuKWpNs553hxRehyhZzVjCTYF1dDE8ksdrb4fDDQ6LvZZfB979fskPnWpMmnffiHuKm9NRqrYAttaboNcl23jncP/RQxduYTyxrM1VCra/NlP7gZSYsNjToP1apYe5w0klwySWhK+SMMzr19NbWkOQ7Y8ayKr76tyISFL0mWVtb6K7cf3+48soKtS7ItzaTemYSKtfMC63IKzXt3HNDIHPKKXD66QV3T/dcmoXey0MO6dpK2CI9QdFrktXXw7e+BQ88UPY2dYaCmYTq6mJ4Iol08cVw9tlhiOl3v6P1elsaqPTqFe4zh1ozu8wh93IDmcG/hmylp4taADXn9p13Dt01//1vOZvUKZrNlFBRMy+0Iq/UnOuuC8NLI0dy/beu5KSBxty5yx5Or1Kd7m2B4mvGTJ8OAwaw3PEyj6NhKOkpxo7NnbqQM7k9nTfzwANdWsy1HNQzk1C5Zl5oVoXUnBtvDL0xO+3E+H3Gc/TxvZYLPLKle1uK7aE0I+fxNGQrPU2uBPjIHMyvfAUGDaqqoSYlACeYEhqlpt1yS5iC/bWvwYQJDBu+UlF1YMyKqxljln+1a7MweUpEcjj8cLjzTnj//TA+WwFKAK5Rzc1h2FLl0qXm3HknHHggbLNNmIa90kpF97b07x8WicynsTF/IAMashXJa+edQ7fmSy/F3RJAwUyPoiRHSYT77oP99gsrYE+YACuvDBQfXMyd23HoKP3FMXO5gXTNmFw0ZCtSwE47hfsqGWpSMNNDFF0QSSRODz8M++4LG28M994Lq6669KFceWKwLFCJqtALMGRI+Nxn9mBGHa+xUfWaRApaa63w71TBjJRaZl2N7OmqUXVpTj5ZvTVSJf71L9hrL1hvvbCQXf/+yz2cK0GxpSXMZmpqyj9sFDVEteKKy35ubNQikSKdsvPO8Pjj8MUXcbdEwUytyK6rkT1dNSoZcu5c9dZIFXjmGdhzTxgyhJtPeJBhIwbkDLCj8sQKJftmD1Gl/71kDkctWFCC1yHSk+y0U/iHM3Fi3C1RMFMr8tXVmD9/2VoyhWhKqlTcU0/BrrvCGmtwy4kPcthP11wuwD700PAFMKoHsbU1/xBTrvwXVdAWKYFvfjP843vkkbhbomCmFrS2Fv5m2taWOz8gF1URlop5/PGlgcytJz3MAT8a1CHIcIcHH4zuQRwzJnqIKSr/RRW0RUpg9dVh880VzEj3pbvLC0kXQErnGzQ2RpcG0JRUqYiHH4bdd4dBg7jl5Ec55PQhS4dHC8nsRckXgOTKf2lt1WdfpGR22CH0ri5cGGszFMwkXDFl29Pd7Ol8g+uuC8OcuQqCaUqqVMT994ccmXXWgUcf5ZTfrV3U8gOZ0kFMVACSa+p1OvjPFTTpsy/SBTvuGBKAY86bUTCTcIW6xXOVpI4KgOrrNSVVKmDCBNh771AS/eGHYc01uzS8kw5iOrO0hz77IiVWJXkzCmYSLt+30uy6GmlRF472dv1nLoV1q/jibbfByJEwfDg89BAMHAh0fngnM1jpzJoy+uyLlFj//qHA5aOPxtoMBTMJ19kFJ5UvIN3RreKL11wTKvtusUUotNXYuPShqAJ2ueRK6i12aY+oz7g++yLdsMMO8OSTsebNKJhJuGK+lWYW0zv0UOULSNd1eUrzhRfCEUeEuhQPPBBmQWSIKojX0tJxW3eK2mm1eZEy2HHHkIj57LOxNUGrZte49DfpfMmV9fUwbpy62aWwurroadA5t7vD2WfDueeGXpnWVujbt5xNLEirzYuU2Lx5MGBA+Hd+5pllO41Wze6hWlth9OjCs52ULyDQMRfmhBM65sZEDceY5Rhqam8P62Wcey4ceSTccEPsgQxotXmRkuvfHzbdNNa8GQUzNSrfFNRsyheQE04IQ5CZuTCXXdYxN2bPPXNX23XPGmpatChE0hdfDD/+MVx1VVgwjOKCJhFJmB12gCeeCP/2Y6BgpkYVU38GCucLdGvmilStzDyquroQuBQacZ4/P+S1RO23dKbQxx/Dd74TElzGjoXf/hbMaG0NPdGHHFI4aNLnTCRhYs6bUTDTCUm6sOer25H+Zp1vCit0c+aKVK3sRUk7kzaXr6dv6FDg7bdh++1DzYlrroEzzgCzpT0/mQs7RtEaSSIJtP324T6moSYFM0VK2oU9auiovj5UAM6uQZMrUNNifLWp2F67zmhogEuOexW++lWYOhXuvjsMMxE+S5df3rmgSWskiSRMY2PIm4mpeJ6CmSJFXdgPOSSeXppCvURRU1BzzVqKCtSiFq/UhSbZSv33a2qC23/4MHud/43QdfPYY7DLLksfz7cQZBTlcYkk0P77w3rrxXNud6/oDdgAeDHj9gnwQ6A/cD/wRup+9YznnA68CbwO7FbMebbaaisvJTP38F9y7ltDg3tLS0lPGamlJZyv0PlbWtybmkLbm5qi29fUlPs11dfn3t7UVN7XJ+UV9ffOvJm577RT9Gcgcz+/9lr33r3dN97Yffr0Ducr9G8nzn9LIpIcwCSPuObHWmfGzOqBt4FtgROBee5+vpmdRghmTjWzjYHxwDbA2sADwFfcPe88nVLXmRk2LLqnIq2pKQzdlFtUW7p6/ny1Qxoalu+RamjQGjZJV6j20EorwQorhNIR/fvDp5/mnqBQRxuXrDKG4z+5ICT/3XJLh2J4UNy/nbTGxlBfT58vEclWzXVmdgLecvfpwL7AuNT2ccDI1M/7Aje4+0J3n0roodmm0g0tptx6pYZfos7T1fPnW9+p2DVvJDkyq+1CyKOC8Pvxx4fAdu7c5e9XWmn5Y/TjU+6o/24IZI49Fu67L2cgA51bqqBfP32+RKTz4g5mDiT0ugCs6e6zAVL3a6S2DwJmZjxnVmpbB2Z2jJlNMrNJc+bMKWlDm5vhqksXscPabwC5uzEqNc5f6vVloi42n30W7lVgrPakC8e5w5IlyxLC7767Y4/N4sVhSnV6aYFhTGNi76+zh98d6shcdhn07p33XNlBcRTlY4lIV8QWzJhZH2Af4O+Fds2xLWc04e5XuPsIdx8xMLUabykdtOELPPLOV/iioT8P1u3CWM5gJLcyiFk0rOglWd8ls/5Hr17hPjvBt9Try6QvNhnr/gHhW3k1z9iS0svX69fcDNNa/sXUgduw0UozqbtnAvzv/+auopclu+puVECjxF8R6Yo4e2b2AJ539/dSv79nZmsBpO7fT22fBQzJeN5g4J2KtTLTOuvAlVfS95AD2HzIXH7Kb7mVUcxiCO+vOJTmew6Fq68OU1O7ILv+R7qmR/Y08GIWl+ys5ubQxZ9NU7ELS1L9oUIie/2GOFxyCXz722E46ZlnlpuxlFbse6EFH0WkpKIyg8t9A24Ajsj4/bfAaamfTwN+k/p5OPAS0BdYB/gvUF/o+KWezZTT/PnuTz3lftFF7gcc4D5w4PJTfo44wv3GG90//LCowxWaZVLuWURRs07MynveJCt2Zlm1KDTDLdfrGbDiZ/7frzWHX/bay33evJzHa2x079On+Pei2Nl2IiLu+WczxRXINABzgVUztjUCDxKmZj8I9M94bAzwFmFq9h7FnKMiwUy29nb3V191v/hi91Gj3Fdf3ZfOcd5xR/ff/tZ9ypSwXw7FTGEt53/8UcFUY6MuOlGi3rPOBp6VuLB3ZUr/jmu/7h8O3iT88stfure15T2epvKLSLnkC2ZinZpdTqWemt0lbW2hO/7OO+Guu+Dll8P2L38Z9tsvFBjacsulOQedmcJajinSuabs9u4dmpc5NVfTs5eJmtZuFvJDipHrfS/He9zpKf233AKHHw59+sD48R2GlYr9vHbmvRARiZJvanYsPTOVuMXSM1PI9Onul13mvuuuy6qRrbuu+89+5j5xordc117UN91yfuPN7iFobNS37VzS71Mxf6NCvSyl6t0ppOhhxC++cP/Rj8KDW2+dsxBevuNl3+rr1asnIt1HtQ0zVeJWlcFMpg8+cP/rX9133929V6/wpxg2zCfv+RPfY60XHNoLVl+F8l0cCl2se3IeTbHDK5m3urro4KYSuUotLUVWdH7tNffNNw8PnHhiCGwiFBPMZd+qOZ9IRKqbgpkSKktuw9y57ldf7b7nnqEsPLhvson7BRe4z5qV96JRjotDMRfrntwz05WLeL6/Wbl7ZvL9PZe2pb3d/corw4bGRvc77ujScXv3Dk8303IYIlJaCmZKpCIzVz74wP3SS923287TX8/f2WRn/0Gfcb4Sn1bk4lDMxbqxsed+w+7sWkOF/mbl/lzlW3urpcXD7KTvfS9s3Gkn97ffLvrYUcF9S0v0a+/JvXoi0nUKZkqkUrkNS/3nP/7Sd3/h03ut4w7+GQ1+LYf4LtzrdSwp28WhMxfrxkb344/vWbOdutszk+tvVs7ZTHmHse69133w4DDUecEFy81W6qpCPXvqmRGRrlAwUyLF5DZ05aKU79ttuCi0+9d53C/nGJ/Hau7gs1jbf8Vp/hX+HUvPTL5bredFdCVnptgLejmCmlx/z1X4yK/v94Pwy4Ybuk+c2P0T5TlfT/lsiEj5KJgpkUI9M10ZLsj3nFzn68sC34+/+x3s5YsJSQnvr7+d+1/+4v7RRyV5neW8WNeKfAm16QC3sxf0cg03ZR93Nyb4TBvsbVbnfuqp7gsWdO8EvnwQlu9zoUBGRLpKwUyJFLrYdGUYKt9z8l0YzNxHDJ7tzx30W/fhw8PGFVZwP+igMHSwZEm3X2sxU7Tzta/WFeqpywxI04FPvt6Wcg5jtrS4bzLkI/8rR7qDf7T2Ru7PPNP9A7uK54lIZSiYKaF8wwD5go+oC1i+5xRd46W93f3ZZ8NU2nTV4cGD3c84w/3110v2uuOugVNtSh18lG2Kdnt7+AN+6Uthjvjpp5ekNyatmGFJDS+JSHcpmKmQruQK5HtO796dW+vG3UNdkJtuCtO808VNvvY19yuu6PYwVEtLcT00PeXC1dlhoUL5MMUGR53Kq5k8OSylAaEA3qRJXXy10Qr1IPaEpHARKT8FMxXSlVkchZ7TrXWR3nnH/Te/cd9oo3CwFVd0b252v//+bg1D5Zt2m68XqhYVG1hEBT6ZM8GKWaixmACqpcV9oyGf+gX8zBfRy79YafWQU1WCmUq5VHyWn4j0SApmKqCY8vZRwwVlr8nR3h5mqxx/vPtqq4UDDxniPmaM+3/+06VD9tQLWFdnG0W9X9m9GplF5zrTe5OuGdNybZsf1edan8Fgd/CrONKHrvh+WQPMpK0cLiLJpGCmjIodeil0oa9YcLBggfuNN7rvsceyYahvfMP9qqvcP/646MP0xAtYd15zZ2r3pIOYXEFTvuPs1fc+f7l+M3fwZ9nKt+OJigWZlVj1W0R6NgUzZdKZpNjuTNEum7ffDoXSNtzQlw5DHXKI+wMPFDUk0dMuYN0JODtbuyfX56qxMXfgvBkv+D3s6g7+Fuv49xnvRlvpe/hERGKUL5ix8HjtGTFihE+aNKms5xg2DKZPz7+PGQwdCmPHQnNz/n1bW2HMGJgxo/jnlIQ7TJwI11wD48fDxx+HBoweHW7rrVeBRlS/urrwVmUzg/b2/M9tbYVjjoH58wufp74e2tpyP9a7dzjfokWwEVMYw1gOYjwfsjrn8XMu43gW0bfD85qaYNq0wucWEalWZvacu4/I+ZiCma6LurilJfICsmAB3HFHCGzuuy9cpb/5TTj8cNh/f1h55bhbGJuo4LXYv3M6WM0XADc0FA54NuNFzuSXjOIW5tPAJfwv53MaH7Nazv3Nwue0qamCAbKISInlC2bqKt2YWjJ0aPRjDQ3hwpE4K64I3/8+TJgQuoh+/Wt4/3046ij40pdCT83DDxfuiqhBY8eGv2umzvydm5tD0NPYmPvx+nq44ooQdOSyNRO5nX14kS3YhfsZyxiGMY3TOT8ykIFlAff06aF3qLW1uPaKiCSFgpluyHVxg3CxuuKKGvgGPGgQnHYavPYaPPUUHHoo3H47fPvbsO66cOaZ8OKL+bunakhz87Jgwyzcd/bv3NoKn3zScXufPjBuXDhW5ueqF4vZn5t4jG8ykW35Ok9wJufRxHR+wXnMZUCnXsP8+aF3SESklmiYqZuKyXOJLRemHBYsgNtuC8NQDzwQemjWXRf22y/cttkmXOklp6ihqsZG+OCDZb//49L3+c9PruCwBZczmLd5i3X5MydyJUfzGd0b6ismx0dEpNooZyZGuRI/GxpqpOdmzpzQU3PzzfDgg7B4MQweDKNGhcDma1+DXr3ibmVVyZtEvLgNHnoodNH8/e+waBH3sisX839MYA/aqe/wvMbGEF8Wk1iclshcLhHp8ZQzE6MxYzpeaNJd/a2t4Zt6XV24T1wuw8CB8IMfhPya99+Ha6+FrbaCv/wFdtghPP7974denHffjbu1VSFXntXGTObSlU8ND+66K9x1Fxx9NLz2Gsc23ctd7JUzkGlogAsvDIFxfceHc0psLpeISB7qmSmzfDOesmeu1EyPzWefwT33hCBnwgSYPTts33JL2GMP2HPPMBzVA3ttWlvhmKOdYQumsA938D3+wVY8T3t9L+r23AMOOwz22gtWWGHZ/jmmdDc2hkAm/VkpZup39nNERJIkX89M7MXtynWLY22mbC0tocx8VPn5HrEcQHu7+wsvuI8dGyoNp6sOr7xyWAzzggvcn3nGffHigodKdJG+xYvdH3nE/ZRT/JM11lv6B3+hz9b+7KEXur/3XuRTO7P+U+Y6T/mWRRARSRpUNK/y8n1TzldLJMnJmUUlOn/4Idx/f5je/cgj8O9/h+39+sHXvw5f/Wrotdl66zBMlXHsROUeLVkSZno98gg8+ig8/ngoRtinD+y0E+yzD+y9d5gxJiIiBSkBOAZRs1bq60N+Z1TxtKQmZ3Y52Hj3XXjssXDRf+wxmDJl2bjcOuuEwGaLLTji95vw0JxNmMFQYNlsqexZQLFwh5kz4YUXQgDzzDPwr3/Bp5+Gx7/ylZBDtOuusNtuPbrwoIhIVymYiUGh0veJ62kooLvVcZf69FN4/vmwvMLEiSEwmDlz6cOfsDJT2JjJDOe/rMtU1uHDVYZx9NhhjDrhS+GNL4HsXqY994QH71xA/cxpbDvwv5ywx3/ZevW34JVXQgAzb154ohlsuGEIXtK3tdYqSZtERHoyBTMxKObiXkv1Z7qzblFBH37I9zaaTON7k9mEVxnOZDZmCl/iveV2a+vdl/rBa8OAAWGIasCAcGtsDJFi374hsTZ9X1cXppMvWhRuixfDwoW89OiHPHH7XFZd8gED+IBG5rIWsxnEO8udb0nfBnptOhy22AI23zzc/8//wEordfMFi4hItnzBTM+bTlIhY8d27Hnp3TtM9KmrWxa8JHFIKZehQ3MHb/mWfChW692r88iSbzCXbyy3fUXm08R0hjGNdZjKZitO5divzQ7jTu+9B5Mnh1o4nSnCAmwGNLEqHzCAuTTyHmvyMpvyX9Zd7taw5kCmTVSBQBGRuCmYKZN0D0u656V//zCCMndu2J5eJydz3yTLFbyZheGZ7siXSL2ABv7NRvybjcL5PoVjW3Ic5IsvQmW5hQvDz198AQsXcvc/2/jjpX2ZMbs3Awf14ZTT+jDqwD70HrgqS+hdsG02s+AuIiJSARpmqpCS5ZRUsRNOgMsvX364qbt5QFHvWy6deS+jcpZGj+74GkpxPhER6R5VAK4CM2Z0bnsS3X13xyCguwsbFvv+dLaybVRl5iuuKC6QUSVdEZHqoWCmQqJyR+rqEriMQYRyBGxR71tjY+dXr04vH2EW3dvT1la4TTWzKrqISI1QMFMhY8eGb/PZ2trCcEctBDRRgUd3koBzvW/pNYmmTQszpaZNKy6QOeaYwkNW+dY4amqClpaQX6xARkSkeiiYqZDm5ugFAbs7FFMtogKPzg7HZC7AOWZMyGOJ6oWJWqwze/vJJxee1NTQEAKeXK+hpaW4oElERCpPCcAVVtZ6LFWgu7Vzil1YMWrfdBLvuHGdnpHN8ceHvJ/p00PQ2dYWgqck1/8REakVVVc0z8xWA64CNgEcOBJ4HbgRGAZMAw5w9w9T+58OHAW0ASe5+72FzlGtwUxPmNXUHflmL2XPjMq3ZEQxuS+ZGhvD7O1aqcgsIlJrqnE204XAPe6+IaFG2WvAacCD7r4+8GDqd8xsY+BAYDiwO3CpmeXJbKhupRqKqVX5koWzh+Oi9u1sINO7d1j/MtfsploY/hMRqXUVD2bMbBVge+CvAO6+yN0/AvYFxqV2GweMTP28L3CDuy9096nAm8A2lWxzKaVzZzo7E6enKJQsnBnAdCexOL2EU2Nj/iG+Wpo6LyJSq+LomVkXmAP8zcxeMLOrzGwlYE13nw2Qul8jtf8gILPW6qzUtsRqbu7cTJyeJGrWV1pmAFNo33yGDAm5S/36hWWZijmfiIhUpziCmV7AlsBl7r4F8DmpIaUIuRa/yZnoY2bHmNkkM5s0Z86c7rdUKi7dc9XY2PGx7OG47F6uzkj3uOTredHwn4hIMsQRzMwCZrn7M6nf/0EIbt4zs7UAUvfvZ+w/JOP5gyFr+eIUd7/C3Ue4+4iBAweWpfFSnOyp0SeckHsKdS7NzaGWS0tL4eG4zF6upqbi25fucYnqeamv1/CfiEhSVDyYcfd3gZlmtkFq007AFOAOYHRq22jg9tTPdwAHmllfM1sHWB+YWMEmSydlFqhzD/eXXbb878UUCuzscFyuYafevaFPn+W3Zfa4RCVkjxunQEZEJCnims30f0Crmb0MbA78Cjgf2MXM3gB2Sf2Ou08GbiIEPPcAJ7p7J+erSCXlWvcoW+ZMoajCd52VK7n6b3+Dq6+O7uFRQraISPKpaJ6UXFRhwGxmcN11uQvfKaAQEZFM1VhnRmpYsTOAhg6NXr169OjaWK9KRETKT8GMlFwxU6bTeSv5Ct/VygKcIiJSXgpmpORy5aEcf/yy2Ub19ct6X/INR6kCr4iIFKNX3A2Q2tTc3DHnJXthyGKWHVAFXhERKUQ9M1JWmTOVRo/u/ErWxebflGpGlIiIJI96ZqRsutITk6nYCrzZ50nXsQHNiBIR6QnUMyNlU0y9mUyNjV2r9xI1I0r5NiIiPYN6ZqRsOpPv0tAAF17YtZ6UqPMo30ZEpGdQz4yUTb51j7Lv0z0pXcl1iTqPVrwWEekZFMxI2eRb98g93Dc0LMulKXbNpmLPoxWvRUR6BgUzUjaF1j0qVa6L1lcSEenZtDaTxCZqDSezsFK2iIhImtZmkqqkXBcRESkFBTMSG+W6iIhIKSiYkdgo10VEREpBdWYkVrnWcBIREekM9cyIiIhIoimYERERkURTMCMiIiKJpmBGREREEk3BjIiIiCSaghkRERFJNAUzIiIikmgKZkRERCTRFMyIiIhIoimYERERkUQzd4+7DWVhZnOA6WU6/ADggzIdWzrS+11Zer8rT+95Zen9rrxSvOdN7j4w1wM1G8yUk5lNcvcRcbejp9D7XVl6vytP73ll6f2uvHK/5xpmEhERkURTMCMiIiKJpmCma66IuwE9jN7vytL7XXl6zytL73fllfU9V86MiIiIJJp6ZkRERCTRFMx0gpntbmavm9mbZnZa3O2pRWY2zcxeMbMXzWxSalt/M7vfzN5I3a8edzuTzMyuNrP3zezVjG2R77GZnZ76zL9uZrvF0+rkini/zzazt1Of8xfNbM+Mx/R+d4OZDTGzh83sNTObbGYnp7brM14med7zin3ONcxUJDOrB/4D7ALMAp4FDnL3KbE2rMaY2TRghLt/kLHtN8A8dz8/FUSu7u6nxtXGpDOz7YHPgGvdfZPUtpzvsZltDIwHtgHWBh4AvuLubTE1P3Ei3u+zgc/c/XdZ++r97iYzWwtYy92fN7OVgeeAkcDh6DNeFnne8wOo0OdcPTPF2wZ4093/6+6LgBuAfWNuU0+xLzAu9fM4wj8S6SJ3fwyYl7U56j3eF7jB3Re6+1TgTcK/BSlSxPsdRe93N7n7bHd/PvXzp8BrwCD0GS+bPO95lJK/5wpmijcImJnx+yzy/7Gkaxy4z8yeM7NjUtvWdPfZEP7RAGvE1rraFfUe63NfPv9rZi+nhqHSQx56v0vIzIYBWwDPoM94RWS951Chz7mCmeJZjm0aoyu9r7v7lsAewImpLnqJjz735XEZsB6wOTAb+H1qu97vEjGzfsDNwA/d/ZN8u+bYpve8C3K85xX7nCuYKd4sYEjG74OBd2JqS81y93dS9+8DtxK6Ht9Ljcmmx2bfj6+FNSvqPdbnvgzc/T13b3P3duBKlnWx6/0uATPrTbiotrr7LanN+oyXUa73vJKfcwUzxXsWWN/M1jGzPsCBwB0xt6mmmNlKqeQxzGwlYFfgVcL7PDq122jg9nhaWNOi3uM7gAPNrK+ZrQOsD0yMoX01JX1RTfku4XMOer+7zcwM+Cvwmrv/IeMhfcbLJOo9r+TnvFd3ntyTuPsSM/tf4F6gHrja3SfH3KxasyZwa/h3QS/gene/x8yeBW4ys6OAGcD+MbYx8cxsPLAjMMDMZgFnAeeT4z1298lmdhMwBVgCnKhZHp0T8X7vaGabE7rWpwHHgt7vEvk6cCjwipm9mNp2BvqMl1PUe35QpT7nmpotIiIiiaZhJhEREUk0BTMiIiKSaApmREREJNEUzIiIiEiiKZgRkUQzs2FmdlDc7RCR+CiYEZGqZmZtqRV3J5vZS2Z2ipnVpR6rB/4MPB9vK0UkTpqaLSJVzcw+c/d+qZ/XAK4HnnD3s8xsA2ANd3881kaKSKzUMyMiiZFa5uIYwuJ1BqwFnApgZtuY2ZNm9kLqfoM42yoilaMKwCKSKO7+39QwU/bq6f8Gtk9V694Z+BWwX8UbKCIVp2BGRJIo16q7qwLjzGx9Qvn03pVtkojERcNMIpIoZrYu0EbH1dPPAx52902AvYEVKt02EYmHghkRSQwzGwhcDlziHWcvrAq8nfr58Eq2S0TipWEmEal2K6ZW4u1NWGH3OuAPOfb7DWGY6RTgoco1T0TipqnZIiIikmgaZhIREZFEUzAjIiIiiaZgRkRERBJNwYyIiIgkmoIZERERSTQFMyIiIpJoCmZEREQk0RTMiIiISKL9PxBx2fmoo3gmAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "def graphics(df,grado):\n", " campos=df.columns.tolist()\n", " x=np.array([])\n", " y=np.array([])\n", " for i in range(len(df)):\n", " x=np.append(x,i)\n", " y=np.append(y,df.iloc[i,1])\n", " poli = PolynomialFeatures(degree=grado, include_bias=False)\n", " x_poli = poli.fit_transform(x.reshape(-1,1))\n", " modelo = LinearRegression()\n", " modelo.fit(x_poli, y.reshape(-1,1))\n", " y_pred=np.array([])\n", " x_poli = poli.fit_transform(x.reshape(-1,1))\n", " y_pred=np.append(y_pred,modelo.predict(x_poli))\n", " plt.figure(figsize=(9,6))\n", " plt.plot(x, y_pred, label=\"Modelo Polinomial\",color = \"red\")\n", " plt.scatter(x,y,label='datos', color='blue')\n", " plt.title('Predicción del valor de Cierre')\n", " plt.xlabel('Día')\n", " plt.ylabel(campos[1])\n", " return\n", "graphics(dsTrainS,grado)" ] }, { "cell_type": "markdown", "id": "db2e27bb", "metadata": {}, "source": [ "#### Evaluación del modelo" ] }, { "cell_type": "code", "execution_count": 17, "id": "e66d60a9", "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Evaluación:\n", "R2= 0.8493253294763463\n", "RMSE= 164.4043707205846\n" ] } ], "source": [ "# Evaluación del modelo:\n", "print('Evaluación:')\n", "x=np.array([])\n", "y=np.array([])\n", "for i in range(len(dsTrain)):\n", " x=np.append(x,i)\n", " y=np.append(y,dsTrain.iloc[i,1])\n", "y_pred=np.array([])\n", "x_poli = poli.fit_transform(x.reshape(-1,1))\n", "y_pred=np.append(y_pred,modelo.predict(x_poli))\n", "xPlus=np.array([])\n", "yPlus=np.array([])\n", "for i in range(len(dsTest)):\n", " xPlus=np.append(xPlus,i+len(dsTrain))\n", " yPlus=np.append(yPlus,dsTest.iloc[i,1])\n", "y_predPlus=np.array([])\n", "x_poli = poli.fit_transform(xPlus.reshape(-1,1))\n", "y_predPlus=np.append(y_predPlus,modelo.predict(x_poli))\n", "# R2:\n", "r2 = r2_score(y.reshape(-1,1),y_pred.reshape(-1,1))\n", "print('R2=',r2)\n", "# RMSE:\n", "RMSE=sqrt(mean_squared_error(yPlus, y_predPlus))\n", "print('RMSE=',RMSE)" ] }, { "cell_type": "markdown", "id": "62f7eee8", "metadata": {}, "source": [ "#### Graficar Predicciones" ] }, { "cell_type": "code", "execution_count": 18, "id": "3ac1ee86", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "def graficarPrediccion(dsTrain,dsTest,grado):\n", " campos=dsTrain.columns.tolist()\n", " x=np.array([])\n", " y=np.array([])\n", " xPlus=np.array([])\n", " yPlus=np.array([])\n", " for i in range(len(dsTrain)):\n", " x=np.append(x,i)\n", " y=np.append(y,dsTrain.iloc[i,1])\n", " for i in range(len(dsTest)):\n", " xPlus=np.append(xPlus,i+len(dsTrain))\n", " yPlus=np.append(yPlus,dsTest.iloc[i,1]) \n", " poli = PolynomialFeatures(degree=grado, include_bias=False)\n", " x_poli = poli.fit_transform(x.reshape(-1,1))\n", " modelo = LinearRegression()\n", " modelo.fit(x_poli, y.reshape(-1,1))\n", " y_pred=np.array([])\n", " y_pred=np.append(y_pred,modelo.predict(x_poli))\n", " x_poliPlus = poli.fit_transform(xPlus.reshape(-1,1))\n", " y_predPlus=np.array([])\n", " y_predPlus=np.append(y_predPlus,modelo.predict(x_poliPlus))\n", " plt.figure(figsize=(9,6))\n", " plt.plot(x, y_pred, label=\"Model: Simple-Polynomial\",color = \"red\")\n", " plt.scatter(x,y,label='Train data', color='grey')\n", " plt.scatter(xPlus, y_predPlus, label=\"Predicciones\",color = \"red\")\n", " plt.scatter(xPlus,yPlus,label='Test data', color='blue')\n", " plt.title(\"Tesla's Stoc: Close value prediction\")\n", " plt.xlabel('Day')\n", " plt.ylabel(campos[1])\n", " return\n", "graficarPrediccion(dsTrainS,dsTest,grado)" ] }, { "cell_type": "markdown", "id": "bab9265e", "metadata": {}, "source": [ "### 2.3. Multiple Linear Regression" ] }, { "cell_type": "markdown", "id": "b9d7525c", "metadata": {}, "source": [ "Multiple Linear Regression Models are linear models that uses several variables. In this way, the contribution of other variables can be used." ] }, { "cell_type": "markdown", "id": "3526e137", "metadata": {}, "source": [ "#### The Model" ] }, { "cell_type": "code", "execution_count": 19, "id": "b9c97ae4", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Formula: \n", "Close=-0.69*Open+0.84*High+0.85*Low+0.0*Volume+-0.75\n" ] } ], "source": [ "Y=dsTrain['Close'].values\n", "x=(dsTrain.drop(['Date','Close'], axis=1))\n", "X=x.values\n", "camposX=x.columns.tolist()\n", "# Training\n", "modelo_RLM = LinearRegression() # instance de LinearRegression\n", "modelo_RLM.fit(X, Y)\n", "# Formula\n", "coefs=[]\n", "for i in range(len(camposX)):\n", " a=round(modelo_RLM.coef_[i],2)\n", " coefs.append(a)\n", "c=round(modelo_RLM.intercept_,2)\n", "formula='Close'+'='\n", "for i in range(len(camposX)):\n", " formula=formula+str(coefs[i])+'*'+str(camposX[i])+'+'\n", "formula=formula+str(c) \n", "print('Formula: ')\n", "print(formula)" ] }, { "cell_type": "markdown", "id": "acfa36c1", "metadata": {}, "source": [ "#### Testing the model" ] }, { "cell_type": "code", "execution_count": 21, "id": "875c2af1", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Testing:\n", "R2= 0.9959497035353914\n", "RMSE= 10.64978412291781\n", "\n", "Real_Values= [824.400024 858.969971 838.299988 795.349976 783.02002 ]\n", "Predicted_values= [830.92269877 851.487741 819.60409567 804.42711211 776.96777516]\n" ] } ], "source": [ "# Test:\n", "# R2\n", "print('Testing:')\n", "r2=modelo_RLM.score(X,Y)\n", "print('R2=',r2)\n", "# RMSE\n", "y_plus=dsTest['Close'].values\n", "x_plus=(dsTest.drop(['Date','Close'], axis=1))\n", "X_plus=x_plus.values\n", "y_pred=np.array([])\n", "y_pred=np.append(y_pred,modelo_RLM.predict(X_plus)) \n", "RMSE=sqrt(mean_squared_error(y_plus, y_pred))\n", "print('RMSE=',RMSE)\n", "print('')\n", "print('Real_Values=',y_plus)\n", "print('Predicted_values=',y_pred)" ] }, { "cell_type": "markdown", "id": "2f2a477e", "metadata": {}, "source": [ "## 3. Conclussion" ] }, { "cell_type": "markdown", "id": "698b38ad", "metadata": {}, "source": [ "The model that shows better indicators of the prediction of the closing value of the stocks of Tesla is the Multiple Linear Regresion Model with incredible indicators:" ] }, { "cell_type": "code", "execution_count": 22, "id": "34ab5ffa", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "R2= 0.9959497035353914 - RMSE= 10.64978412291781\n" ] } ], "source": [ "print('R2=',r2,' - RMSE=',RMSE)" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.9.7" } }, "nbformat": 4, "nbformat_minor": 5 }