Files
cas-pml/SL/aufgaben/WS1/notebooks/4.1 Validierung und mehr - Sampling und Resampling.ipynb
T

637 lines
84 KiB
Plaintext

{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"tags": []
},
"source": [
"# Feature Engineering\n",
"# Klassifikation\n",
"# Regression\n",
"# Validierung und mehr\n",
"## Sampling und Resampling\n",
"### Zufallszahlen"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[0.35658611 0.32115772 0.73244105 0.47420685 0.42538704 0.39097839\n",
" 0.69053781 0.04376361 0.0040773 0.96732824]\n"
]
}
],
"source": [
"## generate n uniform distribute random numbers\n",
"import numpy as np\n",
"n = 10\n",
"print(np.random.rand(n))"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[0.19151945 0.62210877 0.43772774 0.78535858 0.77997581 0.27259261\n",
" 0.27646426 0.80187218 0.95813935 0.87593263]\n",
"[0.19151945 0.62210877 0.43772774 0.78535858 0.77997581 0.27259261\n",
" 0.27646426 0.80187218 0.95813935 0.87593263]\n"
]
}
],
"source": [
"## demonstrate np.random.seed()\n",
"np.random.seed(1234); print(np.random.rand(n))\n",
"np.random.seed(1234); print(np.random.rand(n))"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"ExecuteTime": {
"end_time": "2020-04-14T21:29:32.116248Z",
"start_time": "2020-04-14T21:29:31.551653Z"
}
},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAjYAAAG1CAYAAADqer7eAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAAL1NJREFUeJzt3Ql4VOW9x/H/LFkJkQQJQSlLsWxXWURi8AqlPIr6tGoBvZX1ioqouCCluGBVQJEq7lQrsmkRhVtQRFvx0kUtltWqtwIKFhGBEIFgjCGBJHOf/4sTZ0KEEM6ZmfPm+3meYSZnhnfevLOcX97lHF8oFAoJAACABfzxrgAAAIBTCDYAAMAaBBsAAGANgg0AALAGwQYAAFiDYAMAAKxBsAEAANYg2AAAAGsQbADARRwDFYgtgg0A1yxZskQ6dOggX3zxhfm5oqJCbr/9dunevbuceeaZsmrVKklkWvcnn3zS3NbfQX/W36munnrqKZk9e7aLNQRQE8EGgGv69u0rCxculJycHPPzO++8Iy+//LJceeWV8swzz8gZZ5whXqG/g/4u+jvV1eOPPy4HDhxwtV4AogVr/AwAjsnOzjaXsP3795vrgQMHyg9+8APxkuTkZOnWrVu8qwHgGOixAXDUIZgw/Vm3h+mQkva8LF68WC644AI5/fTT5dJLL5W333671qEofbxe1HnnnSfDhw83t8vLy+W3v/2tXHjhhaYHp3///jJz5kypqqqqLkcfO378eLn55ptNuBg5cmT10NAbb7whN9xwg9l+zjnnmOGfkpISufPOO6VHjx5m20MPPXTMuS5r1qyRX/ziF9K1a1fz+7z77rtR99ccitL6Pfroo9KvXz/zu+v1ww8/LIcOHapuQzVjxozq29qG559/vtmWl5cn5557rnz11Vf1fJUA1IYeGwD19q9//UsKCwtN4MjIyDBDLzfddJMJNyeddFLUYzV85ObmytNPP2127G3btjVh47rrrpP3339fbrzxRunYsaOsXr1aHnvsMdm+fbtMmTKl+v//6U9/kksuucT8/8jQc9ddd8mwYcNM+PnDH/5g6vDqq6+aQKPPs3z5cpk1a5YJHxdddFGtv8dHH30kV111leTn58sTTzxhQsy4ceOO+rs/++yz8uKLL8ptt91mep8++OADE3SSkpJMe+iwlQalyy67TC6//PLq/7dz50556623zGO1B6tmOwE4MQQbAPX29ddfmx6MVq1amZ/T09NNyNBJwdrrEUkfE35cp06dpGXLlmYHrz0jjzzyiPz0pz819/3nf/6npKammoAyYsQI+dGPfmS2a2CYNGmSGRJS4QnJvXv3lrFjx5rb+tjXXntNmjZtKnfffbfZpmFl2bJl8t57731vsNH5Pvp/NDTp86isrCy59dZbj9rDo2Fp0KBB5mftgUlLS5PGjRubn8PDVhrmIoewdAK1hqGzzjqrHi0O4FgYigJQbzp/JhxWwjtxVdcJsxoOgsGgGYaKpD0z4fvDfvjDH1aHmki6wirs5JNPNtddunSp3ubz+UyviIaw77N+/XoTkMKhRumQWCAQ+N7/c/bZZ8vKlStlyJAhpkdoy5YtJtTpcNyxaLAD4A6CDYB60x6KSBoiVORQ0dHo/BLtGakZIJo1a2auI8NIo0aNai1Dh8Bq0p6j4xGuRyQNXDW3RbrmmmtMr1BZWZlMnz7d9Dj97Gc/q9MS9u/7XQCcOIINgFpVVlZG/VxaWur4c2hPSlFR0RHPpfN21NGChZOaNGkie/bsidqm83+ONrHX7/fL0KFDzVCc9tw88MADcvDgQTPHSK8BxAfBBkCtvSC7d++O2qZzVJym81J0zomubIqkk3+VrmqKhV69epkJz5FDaHrMnfAKp9pcccUVct9995nbOj9Hl7Br0CkuLjarssLhB0BsMXkYwBH0IHSvv/66WfrcunVr0yuxbds2x5+nT58+Zq6KrmzSIKWronReja44GjBggJx22mkSC2PGjJEVK1bI1VdfbYaY9u3bZ1ZmRc65qalnz54yZ84cM69H5/lo/efOnWvCWvjYPZmZmSYQrl279nsnC+tzff755+Z3rW1YDcDx4c8JAEe444475Cc/+Yn85je/MUuXdc7KL3/5S8efR+fk6Iok7f2YN2+eXHvttab3RpdaT506VWKlTZs2Mn/+fDPXR1dC6bFwdOXS0ZZi33LLLWapuh7HR8PQtGnTzHFpdLl4mN6vS+JHjRolu3btqrWcv/3tb2ZZuC45B3DifCHO0AYAACxBjw0AALAGwQYAAFiDYAMAAKxBsAEAANYg2AAAAGsQbAAAgDUINgAAwBoN8sjDeuieqirnD9/j9/tcKRfRaOfYoJ1jh7aODdrZ2+2s5YZPtHs0DTLYaIPv2/eNo2UGg37JymokxcWlUlFRtzMb4/jRzrFBO8cObR0btLP32zk7u5EEAscONgxFAQAAaxBsAACANQg2AADAGgQbAABgDYINAACwBsEGAABYg2ADAACsQbABAADWINgAAABrEGwAAIA1CDYAAMAaBBsAAGANgg0AALAGwQYAAFiDYAMAAKwRjHcFAADwOr/fZy5Oq6oKmQvqjmADAMAJ0EDTJCtdAn7nB0Eqq6pkf1Ep4eY4EGwAADjBYKOhZsEbG6VwX6lj5eZkp8uQCzuZ8gk2dUewAQDAARpqdnxZEu9qNHhMHgYAANagxwYA4jg5NBDg70vASQQbAIjj5FCl8yd8PudDE9AQJUSweeWVV2TmzJmyfft2adWqldx4441y0UUXmfu++OILmTJliqxdu1bS09Plsssuk5tuukkCgUC8qw2ggXBrcqhq3rSRDL6goyu9QUBDFPdgs3TpUpk4caLceeed0rt3b3n99ddl3LhxkpubK6effrpcffXV0qZNG3nppZfk888/N4/1+/1y8803x7vqABoYNyaH0lMDWBRsQqGQPP744zJixAgZOnSo2Xb99dfLunXrZM2aNbJjxw7ZuXOnLFq0SE466SRp37697N27Vx588EG57rrrJDk5OZ7VBwAACSaus9a2bt1qwsvFF18ctX327NkyevRoE3D+4z/+w4SasPz8fCkpKZGNGzfGocYAACCRBeMdbFRpaakZctqwYYO0bNnS9Nr069dPCgoKzJBUpJycHHO9a9cu6dq1a72fOxj0u7KyISkp4MoqB51cqD1cDV24bVlJ4i7aOVq4HXTYyPGho2+L0zk2Tn8vITbvabfeH+GyvPQ5DCTAd0dcg432vKjbbrvNTBgeP368LF++XG644QaZO3eulJWVSWZmZtT/SUlJMdfl5eX1fl79AsnKaiRuhI+MjFTHyw2XzeTC72RmpsW7Cg0C7RxNv6yDQWcXLoRXWrn13YHYvaedfn+Ew4EXP4eZcaxzXINNUlKSudbemgEDBpjbnTp1Mj03GmxSU1Pl4MGDUf8nHGh0hdSJhITiYmdXNmhPjX4xvbh8k+OrJvSw2rpqorj4gFRWVklDph90/cDQFu6inWtvD22LiopKx88FpEpKyuTQIWfLRmze0269P8L19NLnMOBiO2u5dekJimuwad68ubnWScGRTjvtNPnb3/4meXl58sknn0TdV1hYGPV/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NtgMHz7cDEXpWb7Dag5NMccGAAB4Itg8//zzR2wrLS2VdevWydKlS+XJJ590om4AAADuB5u8vLxat/ft29csAX/66aflmWeeqU/RAAAAsT1A39GcddZZsmbNGqeLBQAAiH2w+ctf/iKNGjVyulgAAAB3hqJGjBhxxDY9YF9BQYHs2LFDRo0aVZ9iAQAAYh9sIldDhfn9fmnfvr2MHj1aBg0adGK1AgAAiFWw+f3vf+98TQAAAOIRbMLefvttM1G4uLhYsrOzpUePHtK7d+8TrRMAAEDsgs3BgwflhhtukL///e8SCAQkKytLioqKzBLv/Px8c52cnFy/GgEAAMRyVZQegG/9+vXy4IMPyocffmgCzgcffCAPPPCAvP/+++Y4NgAAAJ4INq+99prceOONcskll5geGxUMBuXnP/+52b5s2TKn6wkAAOBOsNm3b5907ty51vt0++7du+tTLAAAQOyDTatWrcxQ1Ped+btFixYnVisAAIBYBZsrrrjCTBCeNWuW7Nq1Sw4dOmSun332WXM5nuPY7N27V371q1+ZScfdu3eXa6+9Vj799NOos4QPGzZMunXrJv369av1BJwAAAD1XhU1ePBg2bBhg0yfPl0efvjhqAP3DRgwwISTuhozZow5avHMmTPNqRgef/xxufLKK+XNN9+UsrIyGTlypAk0kyZNMhOT9Vofx0EAAQCAY8u977//frnqqqvMcWy++uor8fl8ct5550m7du3qXI7+v1NPPdUcrViPWqx0Gfmll14qmzdvln/84x+SlJQkkydPNpOTtext27aZEESwAQAAJzQU9fHHH5tAMXfuXPOzBg3tvRkyZIjpaRk3bpxs3bq1zuWddNJJpscnHGp0UvK8efMkNzdXTjvtNFm3bp3k5eWZUBOmQ1afffaZ7Nmz53iqDgAAGoA699h88cUX5uSXqamp0rZt26j7tFdlwoQJJvBoyHnllVekefPmx1WRX//617Jo0SJzYD89Dk56ero5qWY49ITl5OSYa53Tc/LJJ0t9BYPOntjc7/cdvuET03vlpOryPFS2a3WOLMordaado4umnWsUXsvzNOD2iMV72it19nI7+/0+x/ezjgcbHf5p0qSJvPjii+b0CZHS0tLMvJif/vSncvnll5uJxXffffdxVeS///u/5Re/+IW88MILZt7NggULzBybmkcwTklJMdfl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",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"## important random distributions\n",
"\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"sns.set()\n",
"\n",
"x_uniform = np.random.rand(1000) ## uniform distribution\n",
"sns.histplot(x_uniform, kde=False, bins=20).set_title('uniform distr.')\n",
"plt.show()\n",
"\n",
"x_norm = np.random.randn(1000) ## normal distribution\n",
"sns.histplot(x_norm, kde=False, bins=20).set_title('normal distr.')\n",
"plt.show()"
]
},
{
"cell_type": "raw",
"metadata": {},
"source": [
"## shapiro test\n",
"from scipy.stats import kstest\n",
"print(kstest(x_uniform, 'uniform'))\n",
"print(kstest(x_norm, 'uniform'))\n",
"print(kstest(x_norm, 'norm'))\n",
"print(kstest(x_uniform, 'norm'))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Einfaches Sampling"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"jp-MarkdownHeadingCollapsed": true,
"tags": []
},
"outputs": [],
"source": [
"## prepare\n",
"import pandas as pd\n",
"import numpy as np\n",
"datapath = '../3_data'\n",
"from os import chdir; chdir(datapath)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Implementierungsmöglichkeit mit Zufallszahlen"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(6578, 21)\n",
"(3290, 21)\n"
]
}
],
"source": [
"## shuffle data frame\n",
"data = pd.read_csv('bank_data.csv', sep=';')\n",
"\n",
"## add a random column to data frame\n",
"np.random.seed(1234) ## optional\n",
"data['rnd_col'] = np.random.rand(len(data))\n",
"\n",
"## sort data frame by random column and remove random column from data frame\n",
"data = data.sort_values(by=['rnd_col'])\n",
"data.drop('rnd_col', axis=1, inplace=True)\n",
"\n",
"## draw first n rows as sample\n",
"n = int(data.shape[0] * 2 / 3) ## 2/3 fraction of data frame\n",
"data_smpl = data.iloc[0:n,]\n",
"\n",
"## check result\n",
"print(data_smpl.shape)\n",
"#print(data_smpl.iloc[:5,:5])\n",
"\n",
"## notice row indices\n",
"\n",
"## the remaining for test\n",
"data_remain = data.iloc[n:,]\n",
"print(data_remain.shape)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Implementierungsmöglichkeit mit einem Index"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(6578, 21)\n",
"(3290, 21)\n"
]
}
],
"source": [
"## read data\n",
"data = pd.read_csv('bank_data.csv', sep=';')\n",
"\n",
"## define sample_size\n",
"prop = 2 / 3\n",
"smpl_size = int(len(data) * prop)\n",
"\n",
"## create index range for all rows of data\n",
"idx = range(len(data))\n",
"#print(idx)\n",
"\n",
"## create index for train set\n",
"np.random.seed(1234) ## optional\n",
"idx_smpl = np.random.choice(idx, smpl_size, replace=False)\n",
"#print(idx_smpl[:10])\n",
"\n",
"## apply index sample for fitering\n",
"data_smpl = data.iloc[idx_smpl, ]\n",
"\n",
"## apply index sample for inverse fitering\n",
"data_ramain = data.iloc[data.index.difference(idx_smpl)]\n",
"\n",
"## check\n",
"print(data_smpl.shape)\n",
"print(data_remain.shape)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Mit der Methode `.sample()` von Pandas Data Frame"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(6579, 21)\n"
]
}
],
"source": [
"## load data\n",
"data = pd.read_csv('bank_data.csv', sep=';')\n",
"\n",
"## sample\n",
"data_smpl = data.sample(frac=2/3, random_state=1234)\n",
"print(data_smpl.shape)"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(9868, 21)\n",
" age job marital education default housing loan \\\n",
"5702 38.0 admin. single university.degree no yes no \n",
"13 56.0 blue collar married basic.4y unknown no no \n",
"6996 43.0 management married university.degree no yes no \n",
"9022 41.0 technician married university.degree no yes no \n",
"1627 28.0 technician single basic.9y no yes no \n",
"\n",
" contact month day_of_week ... campaign pdays previous poutcome \\\n",
"5702 telephone jun tue ... 1 999 0 NaN \n",
"13 cellular jul tue ... 1 999 0 NaN \n",
"6996 cellular nov tue ... 4 999 0 NaN \n",
"9022 cellular aug tue ... 3 999 0 NaN \n",
"1627 cellular may tue ... 1 999 0 NaN \n",
"\n",
" emp.var.rate cons.price.idx cons.conf.idx euribor3m nr.employed y \n",
"5702 -2.9 92.963 -40.8 1.099 5076.2 no \n",
"13 1.4 93.918 -42.7 4.961 5228.1 yes \n",
"6996 -0.1 93.200 -42.0 4.153 5195.8 no \n",
"9022 1.4 93.444 -36.1 4.968 5228.1 no \n",
"1627 NaN NaN NaN 1.291 5099.1 yes \n",
"\n",
"[5 rows x 21 columns]\n"
]
}
],
"source": [
"## shuffle\n",
"data_smpl = data.sample(frac=1)\n",
"print(data_smpl.shape)\n",
"print(data_smpl.head())"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"5828 6\n",
"1896 6\n",
"8338 5\n",
"6761 5\n",
"7049 5\n",
" ..\n",
"6838 1\n",
"9105 1\n",
"6318 1\n",
"8500 1\n",
"9629 1\n",
"Name: count, Length: 4857, dtype: int64\n"
]
}
],
"source": [
"## sample with replace=True\n",
"data_smpl = data.sample(frac=2 / 3, replace=True, random_state=1234)\n",
"print(data_smpl.index.value_counts())"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAkMAAAG1CAYAAAD6GvACAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAAZ6lJREFUeJzt3Qd4HNX1NvB3yvZVt5p7xQ0wGGwgYMAUQ0IJIZBA6D0NhxbAfwzBlAChBTCEJOAQWshH7yWmN3dTbYN7t2Sra7V1Zr7n3t2VJVu4Sprdnff3sMzs7Gh1rdHuHt177rmKZVkWiIiIiBxKtbsBRERERHZiMERERESOxmCIiIiIHI3BEBERETkagyEiIiJyNAZDRERE5GgMhoiIiMjRGAwRERGRozEYIiIiIkfT7W5AthCFuk3TecW6VVVx5L87k/GaZBZej8zDa5JZVBuvh/jeiqJs9zwGQztIXMja2hCcRNdVFBUF0NjYgkTCtLs5xGuScXg9Mg+vSWbRbb4excUBaNr2gyEOkxEREZGjMRgiIiIiR2MwRERERI7GYIiIiIgcjQnUREREO8A0TRhGwu5mZBXTVBCJaIjFojCMzp1Rpmk6VLVz+nQYDBEREW2ntEpjYy3C4Wa7m5KVNm1SZSDZFXy+IPLzi3do+vy2MBgiIiLahnQgFAwWwe327PYHr9NomtLpvUIiQBW9Tc3NdfJ+QUHJbj0fgyEiIqIfYJpGayAUDObb3ZysrTWU6IIaQyIwFURAlJdXtFtDZkygJiIi+gGGYbT74KXMkr4uu5vLxWCIiIhoOzg0ltvXhcEQERERORqDISIiInI0BkNEREQOsGjRApxxxikYP/4gTJ36122eO2/eHBxyyP5Yv36dvP/731+MW2+9EbmKs8mIiIgc4PHH/wVdd+HJJ59FMBi0uzkZhcEQkZg+a1n4sslAddREL6+Kfj4NeToTJokodzQ1NWLIkD3Qq1dvu5uScRgMkePFTAsf1iawKpKsg7EmamBmg4GxBRr2yuNLhIg6LvqX6Nw6gjtM/J22s7OoTjnlBGzYsF7uv/XW66ioqMS+++6H667bPPQlhsIqK3u2O+YUfKcnRzMsC29sjKMmbkEDMCKoYWPMxIaYhVkNBkwLGJXPlwkRtQ+EXtsYR3XMnmio3K3guFLXTgVE//zn45g06UqUlZXjD3+4Etdff22XtjHb8F2eHG1F2JSBkEcFjunhQqk7OadgfmMC8xoNzGk0oCnAnuwhIqI2sm0QvaioCLquw+PxoKSkR6ctcJor+A5PjraoOVlddkRAaw2EhH1TvUEiIBI9ROKxchExEZHjiR4Z0TOTTcNktG0MhsixauPJ4TDxljI0KAbJ2tsnT0N93MKysIn3a+P4WbkbHpVvQESUDEZcSm4uPeJE/FOX4PReoX4+FQExFtbBm93BRTrydQUhA/ioNiFzBYiIsp3L5UIoFGq9b5om1q1bA6diMESOnUG2pCU5e2x4YOteoTS3qmB8sS5fKGK22bepAIqIKJvtuefemD17JmbM+Axr1qzGvffeiaamZjgVh8nIkVZHTMQtoEBXUOnZdl93D7eKAwp1fF6fwOwGQ+YOtc0vIiLKNqeddgbWrl0jZ5W53S4cd9xPcdRRExzb+61YTv2X7yTDMFFbu7lL0Ql0XUVRUQB1dSEkEslelFzxaV0ci0ImRgY1HFi4/b8JxMvkvdqEnH2WpwEnlbtlr1F3y+Vrko14PXL/msTjMdTUrEdJSSVcLnentNGJ1yTRRa+P7V2f4uIANG37f7zyz1typHR9EFGvY0eI/KFDinSIPOsmQwRTzB8iIsoVDIbIkflCtfFUMLQT0+XFTLLDi11y9pmYYZbOOSIiouzGYIgc2yskhrv8Hcwi2xYRPI3OTyZcf1afQEOcARERUbZjMESOUxVNBjC7WkRx7zxNJl2Lgmsf1SXkIq9ERJS9GAyR41TFUsHQLs4IUxUFhxa5ZME10cv0DafbExFlNQZD5CiiF2djapisbDtT6rclqCuts9DmNhio43AZEVHWYjBEjiIWZRXDW2ISWZFY4Gc3DPGr6ONVIcKgzzi7jIgoazEYIkfmC5V51N1e6FB8/Y8KdYh0arHGmSjkSERE2YfBEDlKekp92Q7WF9qR4bKRYloaIKtTM5maiCj7MBgiR6kXY2QACndyiEyNrIUaWdfhY6PyNIiJaeK5vw+xd4iIaEfceuuN+P3vL0Ym4Npk5Bgip6c+1TNUIKaCbY8Zg3/ZX+Cpfgl66Ht5yPD1R7TsBIQGTgL0oDwmluXYJ0/DzAYDXzQlsEdAlTPOiIgoO7BniBwjbEIuzirCFLFA67Yo8QYUzD8FgeV/kYGQpWjypoVXwL/yARTNPAxa01et5w8PavCqQMhILgJLRETZgz1D5BjpXqE8XYG2jZ4bJV6PwjnHQW/+GqYWRPOwOxErPQ5QVLhq3kfwu2ugtyxG0awjUT/6FSSKDpLPN8Sv4etmAwubDfTzJfOIiIgyxeeff4pHHnkYK1Ysg8/nx0EHHYxLL70C+fn5+OijD/DEE//C8uVLYZom+vcfiEsu+R0OOOAg+bViOGv48JGoqdmEjz/+AH6/H+eddxEGDhyMe+75C1avXokhQ4biuutuRJ8+fbF+/TqceuqJmDx5Cp5++nGsWbMGgwcPwe9/fxn23nufDtu3cWM1pk69FzNnfg5V1bDXXnvj97+/XD5fV2PPEDnGjuYLBRbfkAyE3GVo2P8NRHueActVCEvPR6z8p6g78FPESo6AYkZR8OXpUFuWyq8bJlZxBbA2aqEx9b2IKEeJyRJGyJ7bLkzUqK+vx3XX/RHHHXcinnrqOfz5z3fiiy/m46GH7sOiRQsxefLVOProY/D44//F3//+LxQVFePmm29APB5vfY5nn/0PBg/eA4899h+MG3c47r33Ttx99+2YOPEKPPjgP2Wg9PDDD7T7viK4OffcCzBt2pPo168/Lr/8d1i3bu1W7QuHw7j00kvk/gMP/ANTp/4dBQWFuPjic2WQ1NXYM0SO0ZAKULY1ROaq/QS+tY/J/ca9H0cif+u/YCx3CRpGPY3COT+Bq3GeHE6rH/s+8l2F6OVRZDC0qNnA2FRRRiLKMZaFwtkT4GqYacu3jxceiPr93xb1PXb4azZurEIsFkN5eQUqKirl7Y477oFhiAr6Fi6//Gr87GentJ5/6qmn4aqrJqK2tkZ+jSB6fn71q7Pk/skn/wIvvfQ8fv7zX2L06P3lsfHjj5K9Rm2dcca5mDDhWCQSJq65ZjLmzp2NV155Eb/+9e/bnffuu2+jubkJ119/M3Q9+d557bXXY/78ufL8Cy5IBkpdhe/W5Bj1qSrRhT+UPG1EEFw4Ue6Ge52HeNGPfvjJND8a9vkvimYdAb1lKQKLb0TziL/K3qG10QQWtxjYr0Db5nAcEWWxLHtti0DmqKOOwTXXXI6Skh4YM+YA/OhH43DooYfL4CMvrwBPPvkYVq5cgTVrVmPJkuSkETFklta7d5/WfZ/PJ7e9evVuPebxeNr1JAnpQEkQ32fYsBFYtmzJVu377rvv0NjYiB//eHy74yKAE23qagyGyDG21zPkXftv6C1LYLgrEBoyZbvPZ3nK0bTnP1A458fwrZ2GSOUv0bfwQPjUZLL2+qiF3t7sesMkoh2gKMmeGbPFnu+v+ncpGLvxxltx/vkXYcaMzzB79kzcfPP1Mn/n3HMvxJVXXipziMR90ZMTiUQwadJV7b4+3WPT1vaK1275NaZpQFW3ztCxLBN9+/bD7bffs9Vj6cCrKzEYIkeImZac6fWDPUOWCd/qh+Vuy8A/yhyhHREvOhjhXufKobW8hRNRd+An6OtT8V3IxKqwgd5iihkR5R4RBGgBZItvv/1GDkVNnHgl+vbtj1/84ld45503cdNN18PlcmHffffHrbfe2Xr+c889I7e7u8zQwoXfYujQPeS+6DX67rtFOOGEk7Y6b8CAQXjrrdcRDOahsDD5/ptIJHDjjf+H8eOPxpFHHo2uxHdqclSvkIhNPOrWwZC7Zroc7jL1AkQqT9+p5xa9SCLZWg99B9/qf6JvKgBaFTG5XhkRZYRAIIAXXngWDz10vxwGE0NV7777Dnr37ivzh5YuXYwvv/xCzgJ7/fVX5KwzYcthr531z38+hE8//RjLly/DbbfdJBOlTzzx5K3OO+aYnyA/v0AmcovATQyN3XLLn2Qv1qBBg9HV2DNEjtAQ3/ZMMt+q5As/0vOs1mKKO8pyFSE0+AbkLfg9/CvuRa9e50JXXLInSiwM26OTlv4gItpV/fsPkD0///rXP/Hii8/KoarRo8fg7rvvRzAYRF1dLa655rLUuQMxadINstdI9OyIWWC76mc/OxX3338vNmxYj5Ej98LUqf9Ajx49tjpPtEE89uCDf8WVV/4ehmFi6NBhuPfeB2Xbu5pi8U/XHSIuTG1tCE6i6yqKigKoqwvJmQDZbE5DAl82GRgWUHFwkavdY1poMYo/2w8WFNQe/AVM/y688My4fA5RlLF5yC14Le83WBE2ZWXq/Qo672+OXLomuYDXI/evSTweQ03NepSUVMLlcndKG51gfarO0P33P4yxY8d22etje9enuDgATdv+IBiHyQhOT572rntKbmM9jt21QEhQXQgNvEbuit6h/q6W1qEyIiLKbLYHQ2La3v33349x48Zhn332wUUXXYTVq1f/4Pl1dXW48sorMWbMGBltTpkyRY5BdkRMyTvhhBNw7bXXduG/gLI6GLIsuKtflrvRyl/s1veIVvwSCd9AqPEaDKv5t1z2ozZuoYkFGImIMprtwdBDDz2Ep59+GjfffDOeeeYZGRxdeOGFMpDpyMSJE7Fy5Uo89thjuO+++/Dhhx/ixhtv7PDcv/zlL/j++2StBHIuMRLcnNi8FEdbWmiRTJy2FDdiPSbs3jdSdYT7X578PmsfQYUr2Su0hr1DROQwlZU98cknc9rVGcpktgZDIuCZNm2aDHAOP/xwDBsmkqVEotUGvPPOO1udP3/+fMyaNQt33HEHRo4ciYMOOgg33XQTXn75ZVRVVbU79+OPP8abb76JIUOGdOO/iDJRzEou0CoEtfbBkKf6leQ5JUfA0vN2+3tFKk+FqRfK3KG9Iu/JY+ujDIaIiDKZrcHQokWLEAqFZFCTJhaMGzFiBGbPnr3V+XPmzEFpaSkGDRrUekwMlYmiT3Pnzm09Vltbi0mTJsnepqKiom74l1AmS/cKiRnv+hbT6t3Vr8pttOzEzvlmmh+RXmfL3SEb/9kaDHGeAhFR5rJ1ar3oARIqKyvbHS8rK2t9rC3R+7PluW63WxZoWr9+feux6667DuPHj8cRRxyBf/3rX506S8FJ0hn4O5KJn8nCsc1DZG2vodqyHK6mr2ApGszKn3Ta9Y33vxjWygeQV/ceehQvwSb3YDRbCopcu//8uXJNcgWvR+5fE9NMPg//oNk16QLVYtsVP8L0dRHXe3few20NhtKJzyKgaUusb9LQ0NDh+Vuemz4/Go3KfZF3tHTpUtx9992d2lZVVeR0TSfKz+/6UuhdaUlc/J7FUOx3tb+GG5JDsUrZYSgs79d537BoJNDreGDtqzik+XG8VHwT6lUdA4s67+eY7dck1/B65O41MQyvnLptGDHoOq/zruqqPxjC4Zh87h498qFpWnYGQ16vtzV3KL0viMCmo7VIxDkdJVaL8/1+P5YtW4Y777wTjz76qLzfmUzTQmOjTevQ2ET8gok3lMbGsKyzlK2qm5K/Mx7TlLVH0oKr34KoONRSNAHRNsc7g15xDvLWvoqBNc9CLboeS2rDGKDv/s8wV65JruD1cMY18XoDaGiog2FYcLs9212PizYTPyrRmSA+QzuzZ0j0CMViUTQ31yMQCKKxMdLheeJ3YUcCMVuDofSQV3V1Nfr27dt6XNwfOnToVudXVFRg+vTp7Y6J4Ki+vl4Orb3xxhsyB+m8885rfVwsNjdv3jy8/fbbMgF7dzi1qJp4Q8nmf3tTKnvar7a5hmYcet1ncjdSOA5GJ//7EoXjEXCXwh3biAHN72OtNgHxuNFpb6LZfk1yDa9Hbl+TYLBIfpg3N9d1yvM5jaqqcqZ4V/D5gvL67O61tjUYErPHRAnumTNntgZDjY2NWLBgAc4888ytzhe1he666y45tb5fv+SwhphdJuy333740Y9+JOsKtXXVVVfJIEpsydkJ1ME2Pah64zwoRgimqxhGcGTnf1PVhUjFL+Bf9SD2avwvluZNQF3CQnFHi8QSUUYTf8QUFJQgL68IhpGwuzlZRdPEz86PhoYW2bPWuc+ty0CrM9gaDIn8HxH0iACnuLgYvXr1ksNcIniZMGECDMOQM8Py8vLkENmoUaMwevRoXH755bK2UEtLC2644QacdNJJKC8vl8+ZXu02TXydWKAuHTyR8zSlXoB5babVu+s+ltt40SGA0jVj2ZGep8tgaEjTW/AY9Vgf7YHi9iuBEFEWER+8qsolOXaGSGoWn8PhsJHRvae2T4EQNYZOOeUUTJ48GaeffrpMgBI5Py6XS84QO+SQQ+TwVzo6nzp1Knr37o1zzjkHl112GQ499NAfLLpIFDctpMv8BNsUXHTVJoOhWNG4LvveRnAvJIIjoVkxDG98GVWsN0RElJG4UOsO4kKt2flBXhc38UJVHGLh+LN6eZIHzSh6vN8XihlG7UEzYARHdNn39624H8HFk7HadyBeHPgqTqt071beUC5ck1zC65F5eE0yi27z9eBCrURt84Xa9ArpDfNkIGS6esAIDO/S7x8t/5nc9g7PhBLdgJDRpd+OiIh2AYMhymnNxtbLcLjrPpLbWPG4zRXBuojp64N4wRgosDC06TVUxfiXKhFRpmEwRDmtOZU83S5fqH6G3MaLDu6WNqR7h4Y1vYJq5g0REWUcBkPkrGn1lgW9IbmOXaJgTLe0IVr2U7nt0zIDjaHNy8YQEVFmYDBEzugZSg2TqeFlUBP1sFSPnOnVHcRQWTR/fzlUVlb7mpzhRkREmYPBEDkqgdqV7hXK2xvoxnoh8dRQ2dCmV7ExtXAsERFlBgZDlLMMy0JLusZQqmdIVJ4W4vmju7Ut0fITWofKalpqu/V7ExHRtjEYopzVYmz+JfemftNbe4YK9uvWtpi+/gj5hkGFAfemd7r1exMR0bYxGKKc1ZLKF/JryerlcnHWpi/lsUR+9wZDQrjHT+S2R93bcsVlIiLKDAyGKOeDoUB6iKx5ARQzAlMvhOEf1O3tUct/LLf9m99FXSzW7d+fiIg6xmCIclaotWconS+UGiLL37fLFmfdFqNwf4T1UnjNRkQ3fdbt35+IiDrGYIhyPmeoNRhqSCVPd3O+UCtFQ03h0XLXtym5+DAREdmPwRDlrJZUPZ9AquCi3vSF3Ca6eSZZW9HSZN5QWd1bsgAkERHZj8EQOSCBOpU83bxI3k/k7Wlbm7zlRyCheFAQX4lE40Lb2kFERJsxGKKclV4hXgRDWstiKFYMppYH09vPtja5XUGsDY6T+0bV67a1g4iINmMwRDlJTF1v7RlSxRDZN3LfyBvZ5SvVb09tcXJWWWDTW7a2g4iIkhgMUU6KW0BqJQ7ZM6Q3fyv3u2s9sm0xehwrt4WhOVBiG+1uDhGR4zEYopyU7hVyK4BLVaA3fS3vJ/L2srllQGFeL6z3jpILt7o2sneIiMhuDIYo5/OFBC2DeobydQUr845J3qniFHsiIrsxGKLcX4ojVgMtul7eN4IjbG5ZcmmQhpJk3lCw7n3AiNjdJCIiR2MwRDm/FIfenEqe9g2ApechE3gLR6FJr4BmtsBV97HdzSEicjQGQ5TzS3Fszheyr77Qliq8KpYEJ8h998a37W4OEZGjMRiinF+KY/NMsswJhop0Bavykktz6CKJmtWoiYhsw2CIcj5nSGvKnOTptnlDkaLDZDVqd3QVtFCyOjYREXU/BkOU2+uSqRb00HcZkzzdVpk/iJX+Q+S+exOHyoiI7MJgiHKOKatPJ/fz46uhmGFYihuGrz8ySYWnbd4Q6w0REdmFwRDlnIgJiH4hUWEoEP5eHjMCgwFVRyYpdol6Q8m8IVf9DCjxWrubRETkSAyGKGfzhXwq4EoNkSUCw5BpVEVBIK8fqj3DocCEe9N0u5tERORIDIYoh5OnFWjpfKHAHshEPT0KlgaTvUPMGyIisgeDIco56Xwhn5hWn5qlZWRgz5DQy6u2CYb+B5gJu5tEROQ4DIYo54RTM8l8qgUtlMwZSgSGIhMV6grqAvsjrBVBTdTD1TDL7iYRETkOgyHK2WGyIqMaaqIBFtRkAnUGEvWGKn1uLA0cKe9zqIyIqPsxGKKcE04NkxXHUjPJ/AMA1YNM1dPTZqiMU+yJiLodgyHK2YKLhZF08nRmDpG1zRtaHhwPExr00EKo4RV2N4mIyFEYDFHOCaeGyYKtNYYyM3k6Tcx683qKsdp/oLzvqX7N7iYRETkKgyHKKZZltQ6T+VPBUCJDp9Vv2Tv0fd5P5L6n+lW7m0NE5CgMhiinxCwgFQvB3ZIdw2RCX6+KxalgSBfVqKPVdjeJiMgxGAxRbg6RmY3QYsmAwggMQaYr9ygIu3tjvXcUFFjwbHzD7iYRETkGgyHKyYKLFYllcmu4y2Hp+ch0mqK0Gypzc6iMiKjbMBiinCy4WJZYKreGPzPrC/3QUNn3ecfJfXfth1ASjXY3iYjIERgMUU4WXCyJpnqGMrTYYkd6e1XUuPdAjXswFCsG96Z37G4SEZEjMBiinJKeSVYQy76eIbGWWqmn7VAZp9gTEXUHBkOUkwUX86PZFwxtNVQmeoaMiN1NIiLKeQyGKPdmk1kW/JHsDYbWe/dBk14J1WiGu/YDu5tERJTzGAxRzg2TBYxq6EZTcoFWf39kkyKXgoAueod+LO9zqIyIqOsxGKKcGyYrTuULmb6+Gb1A6w+tYt+nzVCZZ+PrgJUuI0lERF2BwRDlDMOyEDWBoizNF2o7VLbafxAiWiHUeA1cdZ/Z3SQiopzGYIhybiZZSSw5rT6RpcFQpVeForrwfTA5VOapesHuJhER5TQGQ5RzBRdL40uzrsZQW7qoRu1RsSD/ZHnfU/UiYMbtbhYRUc5iMEQ5ty5ZURbWGNqSyBtaGTgEYb0UarwW7tr37W4SEVHOYjBEObUumWIZyI8tl/cN/yBkqz4+FZaiY0HeifK+Z8NzdjeJiChnMRiinBomy4+vhWbFYSlumN7eyFYBUY3arbQOlckp9kaL3c0iIspJDIYop9YlK4yvkPuGrx+gaMhm/X0q1vrGoMndVxZg9Gx8y+4mERHlJAZDlFPDZIWxVDDkH4Bs18+risJD+CbvZ/K+Z/1/7G4SEVFOYjBEOTVMVtTaM5T9wVCBS5UVqb8uOE3ed9dMhxKtsrtZREQ5h8EQ5dYwWSp52syBniGhv1dFrWcwNgbGyORw97r/2t0kIqKcw2CIcoJlWbLoYmFsZc70DKXzhoR5ecneIc+aJ+VCtERE1HkYDFFOiFmAabVNoM6NYEgMk+VpwIL8n8JUvdCaFwB18+xuFhFRTmEwRDkzROYzauE1mzbPJssBYuHWgX4NUa0AqwqSi7di6aN2N4uIKKcwGKKcIIfI0r1Cnp6A5kOuGOhPvkxn5J2RPLD8SSDRbG+jiIhyCIMhypmeoaJYbg2RpRW7VBTqClb4D0HYOwhINMG9/lm7m0VElDMYDFFOaDGtnKox1GHvkKJgQfHZ8r5n1TS7m0RElDMYDFHODZOZvv7INYP8yWranwZ+CUt1Q2+cD72BidRERJ2BwRDlhFweJhPydQU9XApa9BLUliUrUnvXMJGaiKgzMBiinKk+3ZpAnYPDZMKgVCL1zIJz5da74VkosRqbW0VElP0YDFFOiMbDyEtsyNmeIWGwX5Mv2K+U/RDJ2xeKGYF37WN2N4uIKOsxGKKc4AmneoW0fFiuYuQir6agXyqRelHpxfKYb/U/ATNud9OIiLKa7cGQaZq4//77MW7cOOyzzz646KKLsHr16h88v66uDldeeSXGjBmDsWPHYsqUKQiHw62PG4Yhn2/8+PHYe++9cfLJJ+ODDz7opn8N2SFhWQi0nUmmKMhVQ4O63H7sOQGGuwxadB081a/Y3SwioqxmezD00EMP4emnn8bNN9+MZ555RgZHF154IWKxWIfnT5w4EStXrsRjjz2G++67Dx9++CFuvPHG1sfFsf/85z/405/+hNdffx1HH300fvvb3+Kbb77pxn8Vdadcn0nWVh+fiqCuIgQPNpSfJ4/5Vj7A9cqIiLI1GBIBz7Rp02SAc/jhh2PYsGG49957sWHDBrzzzjtbnT9//nzMmjULd9xxB0aOHImDDjoIN910E15++WVUVVXJc+LxOK677jr5fH369MFvfvMbBAIBzJgxw4Z/IXX3TDLTPxC5TFUU7FnikfufFZwHS/XB1TgPrtoP7W4aEVHWsjUYWrRoEUKhkAxq0vLz8zFixAjMnj17q/PnzJmD0tJSDBo0qPWYGCoT6zfNnTtX3r/mmmtw/PHHy/1IJIInnnhCDqMdcMAB3fJvIptmkuXwtPotjSrxyu1SowQNlckijP4V99jcKiKi7JVMQLCJ6AESKisr2x0vKytrfawt0fuz5blutxuFhYVYv359u+OvvPIKrr76aliWhUsvvRR77bXXbrdX120fVexWmqa222aqiGW2DpMhb2BOXydxLfI9Gvr6NKwKG5hX+juMX/co3LUfwNM8F0bhGLub6CjZ8hpxEl6TzKJlyfWwNRhKJz6LgKYtj8eDhoaGDs/f8tz0+dFotN0xkWD90ksv4dNPP8U999yD4uJi/OpXv9rltqqqgqKiAJwoPz+zFz21WhpRGFsl9/Mq9wQCuX+dxlYGsGpZI75K9MTh/c+Esvwx5K/+KzDgJbub5kiZ/hpxIl6TzJKf4dfD1mDI6/W25g6l9wUR2Ph8W//gxDkdJVaL8/1+f7tjogdJ3EQekki4fvTRR3crGDJNC42NLXAS2QuR70NjYxiGYSJThetWQEMcpuJCQ7QIiIWQ69ekBxLI0xU0JSx8WfQ77LP831DWvIyGVbNg5o20u5mOkS2vESfhNcksms3XQ3zvHemVsjUYSg95VVdXo2/fvq3Hxf2hQ4dudX5FRQWmT5/e7pgIjurr6+XQWiKRkNPoRc5Rz549W88Rz/XCCy/sdnsTCWe+sMQvcCb/29WWZXIb8fRDwhDT6jO3rZ3FMi0MC6iY3WBgTmIAhpedCG/1y/AsvQdNe/7T7uY5Tqa/RpyI1ySzGBl+PWwdxBO9NsFgEDNnzmw91tjYiAULFshhri2JYyKXSPT0pInZZcJ+++0HTdNw/fXXy6n1bX355ZcYPHhwl/5byP6Ci3FfPzjJHn4NYvnWmriFtb0ul8c8G56D2rLc7qYREWUVW4Mhkf9z5pln4q677sK7774rZ5ddfvnlsgdowoQJsoDixo0b5awwYdSoURg9erQ856uvvpLT5W+44QacdNJJKC8vl7PKzj//fDz++ON49dVXsWLFCvzjH//Aa6+9JpOoKTf5o8kPf8OX29PqO6pIPTC1Xtk8dS/ESo6CYhnwr7jP7qYREWUVW4fJBFFjSAxvTZ48WQY9ovdH5Pe4XC6sWbMGRx55JG677TZZSVoEO1OnTpVVp8855xyZOH3sscdi0qRJrc93wQUXyK994IEH5AyzgQMHyorU4nko95iWhWA0NZMsRxdo3ZbhQQ2LW0wsbzFR1/cKlNdMh3fdE2gZcDlMh/WUERHtKsUSc89ph8Y7a2tzNzG3I2KKuphBV1cXytix3rBhwf3ZOFREvkL9qP8gXnYcnHZNXqmKYWPcwv75Gg5d/HO4a99HpPI0NO35D7ubm/Oy4TXiNLwmmUW3+XoUFwd2KIE6syf+E21HS8JsLbiY69Wnt9U7JCwMGWgafIPc96z/L7Smb21uGRFRdmAwRFktGq2F12yU+4ZDh4UG+FV4VSBkAMvd+yBS/jMosBBYMsXuphERZQUGQ5TdWpK9Qi16OaC1rzXlFLqiYI9AsndoQbOBlkGTYSkaPJvegl73ud3NIyLKeAyGKKsp4WSNoRav85Kn2xqWCobWRS3Uugch0jO5ZllwyZ+4oj0R0XYwGKKs5krVGIo4PBgS1aj7irEymTtkomXgNbBUL1z1M+De9JbdzSMiymgMhiireSLJGkNxb384XTqRenHIQNRdiXDf38j7MnfIMmxuHRFR5mIwRFnNnwqGTAfWGNpSL4+CfF1BzAKWtpho6X8ZTL0QevMCeNc8ZnfziIgyFoMhymrpgouWQ6fVtyWKkg4PJF/SC0KGDIRCg/5P3g8svQlKrMbmFhIRZSYGQ5S1rEQYwcR6ua8F2DMkDAlo0BSgLm6hKmYh0vtCJIIjocbrEFh6i93NIyLKSAyGKGtZ4eSCvVE1CI+nxO7mZASPqmBQar0yMc0eqo7moXfK+94106A3fmFzC4mIMg+DIcpaRnNyWn2Duz9cO1Bu3SlGpKbZrwibaDEsxIsPQaTiFFmIMbjoKsDiEgVERG3xE4SylhVOJk83uTlE1laJW0WZW4Q+wHeiLDWA0JBbYGkBuBpmwbP+GbubSESUURgMUdbSWpLBUIuH0+q3NCK9XlmzAcOyYHp7IjTganksuPgGKPEGm1tIRJQ5GAxR1nKleoYiPvYMbWmAT4VIHQqbwPKW5LBYuN9vkfAPhhqrhp/J1ERErRgMUdbyRJLT6hMsuLgVVUyzT/UOfdtswBJLcqgeNA+7Wx7zrf4H9IZ5NreSiCgzMBii7GSZ8EVXyV2DPUMdGiqm2QPYFLdQLSoxikrdJeMRqTg1mUy98DLATNjdTCIi2zEYoqykRtdBs6IwoEP197a7ORnJp22eZv+NmGaf0rzHbbIgo6vpC/jW/MPGFhIRZQYGQ5TVydMNrj7w6S67m5OxRuZtnmZfG0/mDlmeMoSGTJH7/iW3QI2stbWNRER2YzBEWUlLJU/Xu/vLRGHqWLFLRX9f8gc0v3Fz71Ck1zmIFxwA1WhG8LvkLDMiIqfixwhlJaUlWXCxzt1fDgfRDxudv7l3qCaWKrioqGga/ldYig5P9atwb3zT3kYSEdmIwRBlp5bkTLJG1wB4+Vu8TUUuFYNSvUNz2/QOGXkjEe73e7kvK1MbIdvaSERkp136GKmqqur8lhDtBDWVMxT29pOrtdO27ZuvQfyUVkdMrApvDohCA6+B4e0LLbIagaW32dpGIqKsCobGjx+PCy+8EG+88QZisVjnt4poO9yRZDAU83Ja/Y4ocKnYM1V36OO6BMJGcqo9tACah90ld32rHoTW9LWdzSQiyp5g6LbbboNpmrjqqqtwyCGHYMqUKfj6a76JUvdQ4nXQE/Vy3/Sx4OKOGl2goUhXEDGBT+sSyUKMIqAsPRbRsp9CsQzkyYVcU4ESEZFD7FIw9NOf/hTTpk3D+++/j/PPPx8zZszAqaeeiuOPP14e37RpU+e3lGiLafXNWhk87qDdzckauqLgsGJdvuhXRkyZP5QOiJqH3gZL9cFV/zk8Vc/b3VQiom61W6mn5eXl+PWvf40333wTzz//PIqKinDnnXfi8MMPx6WXXoovv/yy81pKtMW0ejGTLKAzX2hnV7Q/oFCX+182GZjRkAyITG9vtAy4Uh4PfH89k6mJyFF2ex7OnDlzcP311+OCCy7A3LlzcfDBB+Paa69FOBzG6aefjscee6xzWkqUooZXtNYYCiTTYGgnV7Q/KBUQLWg28NamOOrjJlr6XQrD2w9adC38y++1u5lERN0m+Y64k1auXImXX34Zr7zyCtauXYtevXrhrLPOwsknn4zKykp5zplnnilziv72t7/h3HPP7ex2k4Olh8nqXf1RwhpDuxwQuZRk7tC6qIUXquLYM+jCQUNuRvHXZ8O/cirCfS6W1aqJiHLdLgVDxxxzDDweD4466ijcfPPNOOiggzo8b+DAgVixIvlXPFFXVJ/uw2Bolw0JaCj3qJhRn5BT7r9uNrBUPRbnB/dHsHkOAsvvaF3lnogolylWOoNyJzz11FM48cQTkZeXB6cwDBO1tc7Ko9B1FUVFAdTVhZBIpCoXZ4Cij0ZAj67BE/3ewIQhB0N1UJ2hrromovaQCIqaDKBv6FP8atVJsjp17Y/mwPQP7LTvk2sy9TXiZLwmmUW3+XoUFwegaWrX5Ay9/fbbqK6u7vCxRYsW4YQTTtiVpyXaPjMqc1qEqK+/owKhrtTXp+HkCjf2ztOwKnAwlgaOgGIl4Ftyq91NIyLKnGEykSid7kSaNWsWZs+ejdra2q3OE9PtV69e3bmtJErRwiuhwEJUDUB1l9rdnJybej+mQEe5W8FnkeswaPl78Fc9i1DjRCB/lN3NIyKyPxh69tlnZdK0WPpA3EShxS2lgyVRb4ioK2ipBVpF8nRA56JkXdVLFOy3HxbV/AzDGl9EfOEUaGOfZy8cEeWsHQ6GJk+ejJ///Ocy4DnnnHNwww03YPDgwe3OUVUV+fn5GDJkSFe0lajdtHo/k6e7TLFLRc3Q62HMfhU9G6dj5pqPMLDPYXY3i4jI3mBIJEuPHTtW7j/++OMYOXIkAoFA17SKaHszyUTPEGsMdamSwsHYWHE2KjZMQ++VN6Gq9B2Ue/lDJyIHB0MvvfQSDjvsMFllet26dfK2LSeddFJntI+owxpDovp0EXuGupxrj2thVD2NXuHZmLvqHRQPPhYulT93InJoMCSqSv+///f/ZDAk9rdF5BQxGKKu7hnqzWCoy5meCoR7X4Dg6gexX9VfMKvHkTi42G13s4iI7AmG3n33XZSWlrbuE3U7y4SWyhkSPUPMGeoekQGXwb92GnpF5uKT6umoDhyLMg+T14nIgcGQWHKjo/20RCKB5uZmFBYWdl7riNpQo+uhmFGY0NDo6g0/01e6heUpR6T3BfCvmopDNt6JNwqPxInlbs4uI6KcsUt/3onAZ+rUqXj11Vfl/ZkzZ8oFWsWyHGKmWUNDQ2e3k6i1V6jB1QdeTYfGD+Nu09L/MpiqT/YOFdRPx6IQK/sSkcODofvvv18uwNrY2Cjv33LLLbJHaNKkSVi1ahXuvpvrGVHnU9MLtLr7I8ghsm4lFmyN9LlQ7oveobn1cbQYO72SDxFR7gRDr7/+Oq644gqcccYZWLp0KRYvXozf/OY3OPvss3H55Zfjvffe6/yWkuNp4WTBxTpXfwR1BkPdraXfH2CpPvSMzEPv5ncxqyFhd5OIiOwLhsS6ZKNGJcvzf/DBB7LY4qGHHirvV1RUoKmpqXNaR9TBtHr2DNnXOxRu7R36C5aGDKyPcriMiBwaDJWVlWHNmjVyX/QCDR8+HMXFxfL+/PnzZUBE1JXT6tkzZF/uULJ3aD4Ghqbjs7oEzNQyPEREjgqGxNpjt912Gy644ALMnTtXLtMh3HrrrXjggQe4aj11aTAkptXncSaZLSx3KcJ9LpL7h278C+rjJr5tNuxuFhFR9wdDl112Gc4//3xZXPHKK6/Er371K3n866+/lsdF/hBRZ1Li9VDjdXK/3t2PPUM2aukvcof8qIh8gUHN/8P8RgMhJlMTkRPqDLUlgqBLLrlE3tp65plnOqtdRB1Oqw9ppYirQeYMZUDvkH/lfTi85k48Gjwas+sTOLzEZXfTiIi6LxgSRJL0jBkz0NLSIley3xKX46DOpLYZIvOq4PpYNmvpPxG+1f9EaTjZO7RUmYChUROVrExNRE4Jhj7++GNMnDgR4XC4w8e5Nhl12UwykTzNXqHM6B3qezH8K/6Ko2r/gqXBo/F5XQInlbtYmZqInBEMiaKKAwcOlEUWy8vL5dR6oq6ktaRqDLkHMF8oQ7T0mwjfqn+gqOVLDG95BwsDx2BBs4E983a5w5mIyBa79K4lCi0+9NBD2H///Tu/RUQd0FqWym2deyB7hjKE5e7R2jt0RM2dWOifgHmNBgb6NS6iS0RZZZe6dHr27CkXZSXq9urT7gHIY89QRvUOWVoAeaEvsX/La4hbwGxWpiYiJwRDYhbZgw8+2Fp4kahLGSFo0fVyt1b2DNndIGrbO9TS7/dy/9DqKdDMCJa0mNjAytRElOvDZGK1+qqqKhx99NGy8rTX690qgXr69Omd1UZyuHS+UFgrRlQrZM5QBlal9q59HO7ISvy4+Z94Lf9SfF6fwE/LmExNRDkcDInlNrjkBnV3MFTrGiC3zBnKMFoAocF/Qv63v8aIDffik8AvUItyLAyZGMluPCLK1WBILMVBZEfytChj42aNoYwTrTwN8dX/gKtxHk6uuQHTyv6OeQ0JDPSp8DF4JaIMt1tz4sWssscffxx33XWXHDabM2cOE6up03EmWRZQVDQPvxcWVJTVvIBR4f8hZgFzG5lMTUQ52jNkmiZuuOEGPP/887L6tMgR+vGPfyyn269atQpPPvkkh9Goa2oMMRjKWIn8fRHu9zv4Vz6AI9dfjYX9PsZ3oSCGBUz0cLMWGRFlrl16hxJBj0iivuWWW/Dpp5+2Lsfxxz/+UQZK9957b2e3kxws3TMkZpLlM3k6o4UG/R8MX3+4o2twUs1keWxGfaLDJXuIiLI6GBI9QmI5jp///OcoLCxsPT58+HB5XARIRJ0i0QwttqG1Z4jBUIbTAmga8SAsKBhY8xRGNL6IqpiF5WFOtSeiHAuGNm3aJAOfjojlORobG3e3XUSSllqgNT2tnsFQ5osXj0PLgKvk/o83XImC2ErMakggYbJ3iIhyKBjq168fPvzwww4fmzVrlnycqLOHyAQGQ9mhZeAkxAvGwmU04dS15yAWb8ZXTYbdzSIi6rwE6nPOOUcmUMfjcYwfP14mUK9cuRIzZ87EtGnTcO211+7K0xJtcyaZqFgTYNma7KDqaNz7MRTNPBw9It/ihLW/w8vKvzAkoHE5FSLKjWDo1FNPRW1tLf72t7/h6aeflseuuOIKuFwuXHjhhTj99NM7u53k9JlkruSaZCLwpuxgenujYdRTKJxzHPZofgOHVd+I2b6bcUQPt91NIyLa/WBIuOiii3DCCSfIYTFd15GXl4dRo0a1S6gm2l2cSZbdEoUHoGnkVOR/czHG1v4NYa0I64NXo9LLqfZElMXB0GuvvYZnnnkGX375JRKJZEE1sTbZ6NGjZY/QUUcd1RXtJIdqW2OoB4OhrK1O3RzbhOD3/4fDNv4Zn7ryUT7iN1y3jIiyLxgyDANXXnkl3nrrLTlj7LjjjkOPHj1k/ZANGzbIHqJLL70UP/3pT3H77bd3bavJgdPqB2IQg6GsFe73exixOhSsuBMHr7sWiz0aCgdfYneziIh2LhgSuUHvvPMOrrvuOpx55plb5W6IYEn0GP35z3/G/vvvj1NOOWWHnlcUaZw6dSqeffZZNDU1YcyYMTI5u0+fPh2eX1dXJ4s9fvTRR7INIii7+uqr4fP5Wp9PJHGL5xNLhPTq1QvnnnuuzHOi7KKF06vVlyCqFXCYLMvFBk/GqmgYfddPxZDlf0SdW0Wi70V2N4uIaMen1r/00ks47bTTcNZZZ3WYxKppGs444wz84he/wIsvvrhT1axFoHXzzTfLYEoEMyIJOxaLdXi+KOooZq499thjuO++++QU/xtvvLH18b///e/y9oc//AGvvPIKzj77bPm4aD9l6Wr17uRq9QyGspyiwDPiFnzR47fybtF3V8K7+lG7W0VEtOPB0PLly3HooYdu97xx48bh+++/36HnFAGP6MURAc7hhx+OYcOGyaU8xLCb6IXa0vz58+Vw3B133IGRI0fioIMOwk033YSXX35Z9gIJ//nPf3D++efjJz/5Cfr27Ytf/vKXcuhO9BRRduG0+tyjqiqUYbdiZnEyIMpbdDkDIiLKnmAoHA6joKBgu+cVFRUhFArt0HMuWrRIniuCmrT8/HyMGDECs2fP3ur8OXPmoLS0FIMGDWo9NnbsWNlTNXfuXNmrJAKln/3sZ1u9AbMqdhbPJHMN5LT6HNLTp2FZ35swq/g3mwOiNdPsbhYROdgO5wyJRGkxFLY9IvDY0UUZRQ+QUFlZ2e54WVlZ62Ntid6fLc91u91yOv/69evl924bWAnr1q3D66+/Lof4dpeuO2s6sKap7bbdTQ9vnklW4FIc9/PPxGvSWX7Uw43/F50i3lkwtvZh5C28DKqqINb3AmSTXLkeuYTXJLNoWXI9drnOUGcQvU3pgKYtj8eDhoaGDs/f8tz0+dFotMM11EQ9pJKSEvzmN8m/QneVeKMuKgrAifLzk8np3a41GBqIPkG3Y3/+GXVNOkkRgINNDe9ZN8GlAPvWPIzAt39AIOAFBl+MbJPt1yMX8ZpklvwMvx47FQyJRORgMLjNc5qbm3f4+UR9onTuUHpfEIFNenbYlud3lFgtzvf7/e2OLVu2DBdffLGc5fb444/L4bfdYZoWGhtb4CQikhe/wI2NYRhGN686nmhCUWTzavVDDAN1dTs2/JrLbL0mnWwPt4Wv3CreLr0J+TowqOphYNYlCIWiiPU9H9kgl65HruA1ySyazddDfO8d6ZXa4WBITHkXtjcEFggE5NT6HZEe8qqurpbJzmni/tChQ7c6v6KiAtOnT293TARH9fX1cmgtTeQPiZ4gUQ/pkUcekdvOkEg484UlfoG7+9+uNS1tN60+T3Puzz9TrklXOLhQx+sb43i26CZcoCkoXfc3+L/9AxJaEWLlP0W2yJXrkUt4TTKLkeHXY4eDoSeeeKLTv7mYPSZ6msQCr+lgSCQ6L1iwQNYy6iggu+uuu+TU+n79+sljYnaZsN9++8ntV199JafmiyRssXba7vYIkb3J0zWp1eoLOa0+J1V4VAwLqFgUMvHfoik4T4khsPZR5H9zEeo9FXI5DyKirmZrRpPI/xFBjwhw3n33XTm77PLLL5c9QBMmTJBDXBs3bkQkEpHni7XPxLIf4hwR9MyYMUMWaDzppJNk749YHuSqq66SOUKiCrYYPhNfL25iYVnKHnrrtPoB8KiAT2MwlKvGFOgIakCzqWB6xZ8R7XEsFDOCgi9OgxpeYXfziMgBbE2gFkSNIRHETJ48WQY9ovfn0Ucfhcvlwpo1a3DkkUfitttuw8knnyynVotq1VOmTME555wjE6ePPfZYTJo0ST6XCJBEr5Gw5RppohL1e++9Z8u/kXae2rpa/UD2CuU4t6pgXJELb26KY2GLiv57PIoR0ePgavoCBV+cgbqx/wO09jmBRESdSbF2dB68w4nxztpaZyXwiqnsYgaXSFzu7rHewtkT4KqfgZd6/QNW5c9xSJGrW79/prLzmnS1z+riWBgy4VOBUwqqUTnncKixjYiU/xxNe02TFawzTS5fj2zFa5JZdJuvR3FxYIcSqDN74j85lhZKVjGvdQ9hz5BDjC3UUaQrCJvAey3laNjr37AUHd6q5+Fd80+7m0dEOYzBEGUcJVYDNV4LCwpq3QNR6OKvqRPoioLxJTpEetjaqIW5+oEIDblZPhb8/jpoTd/a3UQiylH8lKGM7RVqcPVBQvXL3gJyhiKXigMLkqmMcxsNLCn7NaI9JkAxo8j/+nzASBZqJSLqTAyGKOPorUNkg2R1Yj8XaHWUoQEVe/hViGTG9+sSWD/0IZjuMuihhQh+/392N4+IchCDIco4WksyGKpJ5QtxgVZnEdf7oCIdPVwKoibwTlMh6kb8XT7mW/Mo3NWv2t1EIsoxDIYo42ihxXJb4xmCQtE1RI7MHzqyxAWvCtTGLbynHYpQv4nysbxvfwc1stbuJhJRDmEwRJk9k4zBkGMFdQVHFLsgfgOWtpiYU3Ed4vn7Qk3UI+/b34q1gexuIhHlCAZDlFnMKLRU1eEaz2BOq3e4Sq+KsQXJpLEZjSqW7fFPWKoP7tr34V3zqN3NI6IcwWCIMorWsgwKTETVPIS0Mk6rJ4wMahjkSyZUvxnuh9pBN8rjwe8nt1YqJyLaHfykoYwcIhPJ0y5VkavVk7OJhOpDinQUuxRETOAl33mIFo2DYrYg/9vfAJZhdxOJKMsxGKKMorekk6cHo8jFmWSUpKvJhGq3AmyMK/ig9/0wtSBc9Z/Dt/Ihu5tHRFmOwRBlbM+Q6AkgSsvXRYXq5Bp18xO9sbT/rXI/sPQmaM2LbG4dEWUzBkOUsTPJipkvRFvo7VWxX35y7PRF1+loKjpaVqfO+/YSwIzb3TwiylL8tKHMYVltagwNZs8QdWhUnoZ+XhWmouC/pffA0AvhapwP/4p77G4aEWUpBkOUMdToBqhGE0xoqHf1lzlDRFsSeWSHFicTqjdpFfig8nZ53L/sDuiNX9rdPCLKQgyGKOOW4ah394Pf5YFbZTBEHRO/G0elKlTPDpyMlYUnQLESqeGyqN3NI6Isw2CIMkbrEBnzhWgH5OkKji5xQVMVvFT6F0T0UujNCxBY+me7m0ZEWYafOJQxOJOMdlaZR5UBUUzvgdcr7pLHfCvug14/0+6mEVEWYTBEGUNPDZPVpmoMEe2IXl4VR5ToWJr3E3xd8AtZwTz4zSWAEbK7aUSUJRgMUQYOkw1GiZu/mrTj+vo0HNPDhY8r/4xGvRKu8DKYC/9kd7OIKEvwE4cygxGCFlktdxs8Q7gMB+20nl4Vx1aW4uM+98v75ev/gW9WvIuwwdXtiWjbGAxRRtBalspti1YCn6+Ey3DQLidVjx40AavKzpP3Ry+/FK+srcHikAHLYlBERB1jMEQZQW9NnmaxRdo9uqLAN/JWxLz9UJBYg3EbrsdHdQm8symOpgQDIiLaGoMhyqyZZB5Oq6dOoAfRsufDsKBgVMNTGNL0DtZELbxYFcP3Ia5yT0Tt8VOHMmxNMvYMUeeIFx2McN/fyf2fVl+Bvmod4hbwcV0CSxgQEVEbDIYoI6jtCi4yGKLOERp8PRKBPaDHqnDypv/DiGAyM18Mm60OMyAioiQGQ2Q/y2jNGQr7hnAZDuo8mg9NIx+GpWjwVj2HwyKvYJBfhcgceq82gUbmEBERgyHKBFrLMqhWFHHFBz0wwO7mUI5JFOyPlv5XyP28RVfg0EA9KtwKRBz0eX2Cs8yIiMEQ2U9rXii3mzxDUexmgSHqfC0Dr0EiuCfUeC0KFk/GwUW6fPNbEzGxImza3TwishmDIbKdWFxT2OgZxnwh6hqqG00j7pOzy7zr/4PSpk+wd6qy54yGBGIme4eInIzBENlOSwVDmzzDuSYZdZlEwRhEep8v94MLL8OoYEJWOm8xgIXNTKYmcjIGQ2Q7NTVMVuMdhnydwRB1ndDgP8Fwl0NvWYK8NY9g33xdHl8QMmAyd4jIsRgMkb3MKFwtS+RuPDACKpfhoC5kuQrRMvgGue9f9hcMcjXApyZ7h5Yzd4jIsRgMka200BIoMBBR8+H1VdrdHHKASM9fIREcATVRj7wVd2N4qvbQN01cv4zIqRgMUeYkT7v560jdQNEQGnKT3PWt+jtGqmsgwqFNcQvVMQZDRE7ETx+ylRZKT6sfzjXJqNvESo5GrPgwKFYMxavvk4UYhYVcpoPIkfjpQ7ZSmzb3DHEmGXUbRUHLgKvlrnfdkxjh2iT3V4VNJDhURuQ4DIYoI6bVN/mGw6sxGKLuEy86BPGCMVDMKPqs/xsCGuRCrqIQIxE5C4Mhso8RgjuyQu6awWF2t4Yc2Tt0ldz1rXkUQ1zNcn9ZC4MhIqdhMES20ZsXyW2zVgq/r8zu5pADxXock5xZZjRh3/rH5bHVERNxVqQmchQGQ5QBa5INR7GbQ2RkA0VFuM9v5G7JhseQp4qcIQ6VETkNgyGyfVq9XKCVlafJJpGKn8PU86GHl2P/xKfy2DIWYCRyFAZDZJ82PUMFnElGdtGDiFb8Qu4Or/m33K6NmDA4q4zIMRgMkW30VDAUCQyHxmU4yEbh1AKueTWvo9iokrPKWICRyDkYDJEtlHgd3LF1ct/K40wyspeRt2dymr2VwIHN/23tHSIiZ2AwRLbQUjPJGvTeyPcW2N0cIkR6ni23g+pfkFsGQ0TOwWCIbF+TrIjJ05QBouUnwFJcCLR8i5Lod3KtsojBoTIiJ2AwRLZQ0zPJvGJaPX8NyX6WqxixkiPl/ujmF+V2XZS9Q0ROwE8hskdqTbJ67zCk1sgksl204hS5HdbwImBZHCojcgh+DFH3syy4U6vVxwPDoHAmGWWIaOlPYKk+BKLLUB75CmujJixOsSfKeQyGqNupsSq4ErUwoULhTDLKtJpDpT+WuyMbX0TIAJoMuxtFRF2NwRB1O63pa7mtdQ9Cocdvd3OI2omWnyS3Q5vflNsq5g0R5TwGQ9Tt9FQwVO3dE8WsPE0ZJl5yJCzFjYLYMhRHl6AqxmCIKNcxGKJupzQmg6Eqz54o5LR6yjCWnod48SFyf3DzW6iKMmeIKNcxGCLbhsmaA3vCpTIYoswT7ZHMGxrS9DbqExaiJgMiolzGYIi6l9ECT3hJcjdvL7tbQ9ShWCqJuld4FryJWuYNEeU4BkPU7ZWnFZho1krh81fY3RyiDpm+vkgE94QKE4NC07loK1GOYzBENiVPj2TyNGW0aOmxcju46W1sYM8QUU5jMETdSmv6Sm6rvXuh2MVfP8pcsR7HyG3/0EeoiSZgsPgiUc7ipxF1K6XxG7nd5B2JPM3u1hD9sET+fjD1AvjMepRGvkQNh8qIchaDIeo+lgl3czIYigb34jIclNlUHfHiQ+XugND72Mh6Q0Q5i8EQdRutZRk0M4S44oUWHGx3c4i2K1Z8hNz2D32ITXH2DBHlKgZD1G30pi/kdqNnBIrcbrubQ7RdsZJkMNSrZTYawo12N4eIugiDIeo2euOXcrvBOwpFnElGWcD0D0DcNwAaEiho/BQxFl8kykkMhqjbqI3z5XaDnEnGYIiyQyLVOyTyhmo4VEaUkxgMUfewLLiakj1DDYFR8HAZDsqyobJ+oY+wiUnURDmJwRB1CzW8AlqiAQnFDSs4wu7mEO2weNHBsKCgR2wxmkJVdjeHiHIxGDJNE/fffz/GjRuHffbZBxdddBFWr179g+fX1dXhyiuvxJgxYzB27FhMmTIF4XC4w3Pnzp2L4cOHd2HraeeTp4ej0OOxuzlEO8xyFSMcGCn3vfWf2t0cIsrFYOihhx7C008/jZtvvhnPPPOMDI4uvPBCxGKxDs+fOHEiVq5cicceewz33XcfPvzwQ9x4440dBkK//e1v5fOR/VyNX7QmTzNfiLKNUXSI3PZo/pQr2BPlIFuDIRHwTJs2TQY4hx9+OIYNG4Z7770XGzZswDvvvLPV+fPnz8esWbNwxx13YOTIkTjooINw00034eWXX0ZVVbL7OpFI4LbbbsM555yDXr162fCvoo7obYIhziSjbGOWjJPbvqHPWImaKAfZGgwtWrQIoVBIBjVp+fn5GDFiBGbPnr3V+XPmzEFpaSkGDRrUekwMlYlKxqInSGhpaZFf+8gjj+DMM8/spn8JbZNlQUsFQxu9e6NQZzBE2SVe+CO5LY19h3rmDRHlHN3Oby56gITKysp2x8vKylofa0v0/mx5rtvtRmFhIdavX98aTL3wwgtyP73tLLpu+6hit9I0td12V6ktK6El6mDAhXhwBNwuLkpm9zWhnaSXotk/AsGWBXDVfwa9/FR5mNcj8/CaZBYtS66HrcFQOvFZBDRteTweNDQ0dHj+luemz49Go13YUkBVFRQVBeBE+fm+3XuCpgVys9EzDGX5eY79OWbUNaGd1lB2OLBigSy+WFR0brvHeD0yD69JZsnP8OthazDk9Xpbc4fS+4IIbHy+rX9w4pyOEqvF+X6/v0vbapoWGhtb4CQikhe/wI2NYRjGriei+9Z+CnF11/tGIwgDdXWhTm2nk3TWNaGdZxaIobKHUNr0KaprmuFSFV6PDMRrklk0m6+H+N470itlazCUHvKqrq5G3759W4+L+0OHDt3q/IqKCkyfPr3dMREc1dfXy6G1rpZIOPOFJX6Bd+ffrtbPkdv1vn1RqSmO/Tlm0jWhnacUHiy3ZdGFWNRYjZJgaetjvB6Zh9cksxgZfj1sHcQTs8eCwSBmzpzZeqyxsRELFiyQdYS2JI6JXCIxtT5NzC4T9ttvv25qNe0Uy4CeWoZjnXc0p9VT1rLcJajzJuuWGTWsN0SUS2wNhkT+j5jxddddd+Hdd9+Vs8suv/xy2QM0YcIEGIaBjRs3IhKJyPNHjRqF0aNHy3O++uorzJgxAzfccANOOukklJeX2/lPoR+ghb6DaoQQVQNo9u0BX2bn0BFtU0N+snfIW/+x3U0hok5k+0eTqDF0yimnYPLkyTj99NOhaRoeffRRuFwuOUPskEMOwRtvvCHPFVPop06dit69e8s6QpdddhkOPfTQDosuUmZwNSRLHmzw7oMity6vIVG2iqeKLxY2fmZ3U4ioEymWZbGC2A6Od9bWOivxV5QSEDO/RMLzro71BhdcBt/aaZhRcik2DpyCAwttTVPLep1xTWjXibXJBn42RO5XH7ocrkApr0eG4Wsks+g2X4/i4sAOJVDb3jNEuU1vTPYMrffuy3whynoBfxk2eZKTOxI1n9jdHCLqJAyGqOsYYejN38jddb7RXIaDsp6qKNgYTOYNKbVMoibKFQyGqMvoTV9CsQw0a2Vo0nuiiMtwUA5oKkgGQ/569gwR5QoGQ9RlXPXJ9eVEscUClwpdZTBE2c9MJVHnh7+FEqu1uzlE1AkYDFGXcTXMkNs1/rEcIqOckR8sxyb3ECiwoHGojCgnMBiirmFZcNUni2mu8Y1FCYMhyhFiuHe1PzlUBiZRE+UEBkPUJdTwcqixahiKGxu8oxgMUc4Qw72b8sQ6ZYBWy+KLRLmAwRB1iXSvkAiEDNWLYjd/1Sh3hFPrlPmavwZi9XY3h4h2Ez+hqEtsHiIbA68K+PmbRjkkEKhEjXuQzBvCRg6VEWU7fkRRl3A1JIOhtb4xcoiMy3BQLil2qVjtTw6VoeoDu5tDRLuJwRB1OiVeD615gdxf6x8jPziIcokI8FelkqjNqg/tbg4R7SZ+SlGn0xvmyOGDRnd/hPRylLjZK0S5xaeJStTJniGlbh4Qb7C7SUS0GxgMUadz1SdX9F7tGyu3nElGucgT6IVa1wAoMKHXJWtqEVF2YjBEnc5dlyxEt9J/EDQFyOcyHJSDRJCfzhty1TKJmiibMRiizmW0yGEyYZX/RyjWFbm4JVFO5g0FksGQznpDRFmNwRB1KlfDbChWHGFXJepdA1DMfCHKUcVteoa0xvlQEk12N4mIdhGDIepUrtRfyOtFcqmioAdnklGOEsO/Le7eqHf1g2IZ0OuZN0SUrfhJRZ3KlcoXWuJNTjsuZc8Q5ShRO6vErcrh4La5ckSUfRgMUecxwnKYTFju+xFE3jRXq6dcJspGpIMhVx2TqImyFYMh6uR8oRhirgrUuQfKBFMmT1Mu6+HeXIlab5wHGCG7m0REu4DBEHUaV10yX6harOitKCjl4qyU48QwWYO7LxpdfaBYCQ6VEWUpflpRp3HXvC+3y32HyC3zhcgJM8rEb/mywGHyviv1GiCi7MJgiDptPTK9ca7c/9Z3uNyyZ4hyna4qKPFqWJEKhty1DIaIshE/rajThsjE9OKobwjqXX3gVYGgZneriLpeuU/HCv+hsKBAb14ANbrB7iYR0U5iMESdwl3zntxuLBjf2iskph4T5boyn4aIXow6/yh535V6LRBR9mAwRJ3CXfOu3K4IpIfIGAiRc3qGhOWp330OlRFlHwZDtNvUlmXQwitgKS586z5IHmO+EDlFWSoY+s6XyhsSSdSWZXOriGhn8BOLOm2ILFJwAOoQlLNrytkzRA7hd6kIaMBa3xiYqh9qrBpa8zd2N4uIdgKDIdpt7prpcludnxwm6OFW4FIZDJFzlHpUGKoHtfnJshKeTW/b3SQi2gkMhmj3GC2t9YW+D0yQ254e/lqRs5SlhoVX5B0jt+6Nb9rcIiLaGfzUot3irv0QihmG4e2DReoweayCwRA5THnqd/4r/9FyqzfMgRLbaHOriGhH8VOLdot74xty21zyY4TMZDVe5guRE4fJxG99tVqJaN4oKLDg3sihMqJswWCIdp1lwr3xLbm7uuDY1in1zBcipxG/80Wu5O/9psLka8GziUNlRNmCwRDtMrFKtxargqnl4TtPckp9JYfIyKHKUj2iy9J5Q5veBYyIza0ioh3BTy7a7SGyWMmRWBdP1lphMEROla6ttVTfC4anEorZInPqiCjz8ZOLdo1lwVP9qtytK/4xQgYgliJjvhA5vWdoYwKIlh4n9z1VL9rcKiLaEQyGaJdozd9CD30HS/VgYSA5LNDLq8pVvImcqEBXIOIhwwKqS06Wx9wbX+NQGVEWYDBEu8S74Xm5jZUcjaXxoNzv5+OvEzmXWJg4vSbfSt8BMDy9oCYa4d70jt1NI6Lt4KcX7doQWVUyGKovPRk1cUtOK+7j5a8TOVu63tD6GBCt+Lnc9254zuZWEdH28NOLdm0WmViYVfVjUSBZZE7kCvk0DpGRs/VKBUPrIibC5clgyL3pLSiJRptbRkTbwmCIdponNUQWLf0xVsR9cp9DZETJdfnESFnMAjZ49kbCPxiKGYE7NdmAiDITP8Fo55gJeFLd/s1lJ2ND1JL7/XxiLhmRs6mKgp6p4eK1MQvRytPkvm/NYza3jIi2hcEQ7RSRDKrFNsB09cC3viMhQqESl4I8nUNkRG0XKl4bMRHpdTYsRYerYSa0pq/sbhoR/QAGQ7RTvGv/LbfhnqdjYThZaHGPAHuFiNJEiQmhOmYh4ipHtOxEed+3+lGbW0ZEP4TBEO0wNbIO7k3JxSfXlp6F+oQF0SE02M9fI6K0fF1BngbZa7ohaiLS+0J53Lv+v1DiDXY3j4g6wE8x2mHe9U9DgYl44UH4yhokjw30qXCz0CJRh71Da6MW4kUHIxEYJpfn8K570u6mEVEHGAzRjrEMeNckh8iaep6D5S2m3B/KITKiHwyGVoQNiFdKuM8l8r5vxX2AEba5dUS0JQZDtEPE1GAtshKmqxhfBo6HAaDYtbniLhFtJgqQipdGiyGGyixEep0Jw9tbTj7wrZlmd/OIaAsMhmj7LAt+8RetmE7f+yJ82eKR+yODmlyCgIja0xQFA1O5dItFRKR60DLgannfv+IewAjZ3EIiaovBEG2XXvcZXI1zYalezCs6HxEzmSTKxGmiHzbYnxxCXhE2ETctRHqeAcPXH2psI3yrHra7eUTUBj/NaLs8y++X21Dl6ZgXKZb7o/M1WWCOiDpW5lbkHw0JKxkQQXUhNHCSfCyw7C9QW5bb3UQiSmEwRNtWOxfu6tchlmKdX/xrucxAoa5gAJffINomMYSc7j1dIobKxBI2lachVnQoFDOMvIUT5RA0EdmPn2i0bV8k/5JtKjsVnycGyv39CtgrRLQzQ2Xrohaqo6aIkNA04j5Yqg/u2g9bi5gSkb0YDNEP0je9D2z4HyzFhbeKr5FThHt7VfRLTRsmom0Ty9QMSfUOzW5IwLIsmP5BCA2aLI8Fv/sj9PpZNreSiPipRh2zTPi+/5PcXVdxHpYpfeFSgIMLdc4gI9oJo/N1iP6hDTELq8XsA1F3qN9vES39CRQzioIvT4caXml3M4kcjcEQdUh03+sN82BqAbycd5k8tn+BjiAXZCXaKeI1M1KszyF7hwyYIk9I0dC45yNIBPeSs8sK5v4Uassyu5tK5FgMhmgramQ9AotvkPszyv8PjVopenoUDA/w14VoV+ydp0EsZi/W8/ukLjlcBj2Ihn3/C8PbF3p4GYpmHQW9YY7dTSVyJH660VZEHoOaaECNf198nH8BgpqC8cUuDo8R7SKPquCwIh3iFbS4xcT8xuTsMtPbG/VjpyOeNwpqfBMKZ0+Af8nNgBGxu8lEjsJgiNrxrHsKnupXYCo6Xiq/F6qqYUKZG16NgRDR7ujj0/CjQl3uz28y8FldXBZjND0VaNj/DUTLfgrFSiCw/E4Ufz4W3tWPcB0zom7CYIhaaU1fI2/h5XL/k5KrsNE7Esf1y0Op6N8not02LKjJgqXCwpCJF6tiWBwyEFeDaBz1BBr2fgKGuxxaeAXyFl2Bko+GIu+bi+GuehFqZJ3dzSfKWck/U8jxlHgt8r88E4oZwdLAkfisx+UYV+zCiCIP6uoSdjePKGfsm6+jzK3i47o4mgzgo7oEPq8H+vpUVASOR8UBR6C86ikEVk2FFlkF7/pn5E0w3WVI+AfD9PWViyZbegEsVwFMvUCuf2Ypblnp2lLdgNLR1gVLC8JylQAq3/6J0vhqICDRjIJ5p0APL0eDqw9e7fkQ9i9wYUQ+fz2IukIvr4qTy934ttnA9yEDzQawtMWUN8ANTTsPRUPOweDYHAxqeA09mj6GN7QAaqwa7lg1UP/Zbn1/UVHechXL4EoM0xmBwUj4h8AIDIHh30PmMokCkUROwU87pzMiyP/idLga5yCsFeHZ3k9hnx5lckV6Iuo6blWRvUT75GmyBtH6iIn1UROb4pZcz2xTQsUmdSxmFI0FigCXGULv+HfoZaxEqbEWhWhA0GqAlmiQEx5gxqFYMcCMAVYCitiaMShWvN1jihESoRCUeA3UeA0QWgjUvt+ubYarBLH80Ujkj4YhtgX7wfKU2fazIupqDIYcTInVIDj/NHgaZyKqBvBsn2cwonIvDAkwECLqLmKWZqVH3JK5eWLavRg+q42bqI1ZqI2Lm4kmBLDcMxrLMbrd1xe5FJS7FTn0Vu5RIUoabWvmZ8JMoCW8CeFwFWKRjUB4DVyhJfBHlqAgugRFsWXQ4jXw1fwPELeUkLs3mgP7Ipo/GkrhaHiK9oXiKuzCnwxR92Ew5FBa80L4558Ob2QZImoBXun7BPbpe0DrGzIR2UMEMmKEOl/X0N+3+XjMTAdGFjbGTFRFTRk01cUteVsUSla3FpXi83UFfk2R+6oC2dMkvr4xYckhOdnVJG/DAPE92nwfzYygPLoAFeH5qIzMQ2X4C5TEFiMQWyNvqHsVSBXMrncPQoMIkPL2hhIcCj1vKLyBftA1/kFF2YXBkNNYJtyr/o7g4hugWVHUu/rifwOewf69Rsp1lIgoc4fVKjziJu4lg40Ww0K1DIwsVMVM1MQsxC2gJm7J2w8RQVKBLoIuZfPWpciaYm7VDU05CKZ1oAyiagwLKyMNQMOXcDfOQ7B5Popb5qMgvgqFsaXyhrrnWp87rvhQ5xmERu8eaPHugZi3NxKePjB9vWF5e8Otu2XdJbHEYXrLhZ/JbgyGHERUt3UtvBbBpuTCkGLW2NIhD2Jcj0pofDMiyjqi96e/b3MPkiGG2BIWGhIWxDJoso6ReO0ryV4iEfSImwhAtldEVQQobgUoVhUUu4qAvMMBiBsQtSysDG9CvG4u1MZ5cIUWIhD+HvnRpXBZYZRFvpG3jhK3m/UyNOq90ejqhQ2u3mjWKxBxlSPmKkfCXY6EpwK6Kx8eTZFVu71qcutJbUXJMzXVvuQWspilvCmAaVqIGRYSpiWHHFkslrIiGDJNE1OnTsWzzz6LpqYmjBkzBjfccAP69OnT4fl1dXW45ZZb8NFHH8lf8uOOOw5XX301fL7N/bxvvvkmHnjgAaxZswYDBw7ENddcg4MOOgiODoKW3Yvgplfl/Zjix+cVNyB/0CXY18fubKJcIf6oKXSJW9d+H/He6/eXAv5jgV7HymNi9K3WiMMMr0SicREQ+g5ayzK4Iqvhja2FN7oGuhVGXqJK3npF5v7g84v3qGa9HCG9XG7FrT51P6SXIqIVIKoWIKLlI6bmIaF4AKXNEP+qZAVvzTIQUKLIQzPyrQbkmfXIs0TieT0CRj28ZgO8ZiNcqSR0Rd4aoSSaZJJ5u9l3ej4sVyEsvRCmqxCmpxKGKHHg7ZfcenqyXEEWs/3KPfTQQ3j66adx++23o6KiAnfeeScuvPBCvPrqq3C73VudP3HiRITDYTz22GNobGzEddddh5aWFtxxxx3y8RkzZuCPf/yjDJAOPvhgPPfcc7j44ovx0ksvYdCgQXBScrSn6kXoa5+Gr2nzekdfF5yG9f2vx549esMl/qQiIuokiuaCFhwsb8Dx8pgIKUQd7bDopYnXQIushhpZk9yG1wDR9VAiG6DGqqDHqqAZTXBbLSiOL5e3HWVCg6G4ZPV81TJkGoAq+8W6h6VoMD29koGRrx+MdJDk6w/D10+WMBAL9FJmUiy5YqA9YrEYDjzwQFx11VX41a9+JY+JAGfcuHG49dZbcfzxyRdT2vz583HaaafhjTfeaA1sPvnkExk8ffjhhygvL8cFF1yAvLw8/PWvf239OvE1e+yxB2666aZdbqthmKitDSGTgx9ddFc3zIVe8z7cDTOhpN4IDLjwbcHPsaryUgytGIlC144lSeu6iqKiAOrqQkgkuu9NhX4Yr0lm4fXoAkYIanQDtGiV3KqxDVDT+/L+plTvTaonp00Pzg8RPTsJvRBxrRAxrRBhcVMLEFIL0Cx6mNQCRGVvU77sbYqrAVhtFmgQ76Ueo1H2JPnNBgTNOuQn1qEgthrBuEgsXw1NlC7YBlNxIezug4inD+KeSpjuclieCijeCujeCmjecpjeSkALIJfoNr9GiosD0DQ1s3uGFi1ahFAo1G4IKz8/HyNGjMDs2bO3CobmzJmD0tLSdj08Y8eOlV22c+fOxbHHHot58+bh2muvbfd1BxxwAN555x1kLVEbJPXiV+MNUKProIRXQQmvlltX89fwRFZs9WVVnj3xTcEv0VR+CvYorsQBbs4UI6IMpwVg+gfJ23ZZJhSjOVVHSdRTikFXDRQUFaC+MYGEpSercmv+dsNo4oMvL3UzLQstBhAyrDa31P1E8n7UEvlY225HMFGNgvhKFMTXyG1hbBUK4qtlonl+fA00K45AdJm8bYsY9ou6yxF3VSDhLpWVxmW1cXcJTL1Y1oCSw3UiaNL9sqK4IvZVD1Q1mUeltMmlap9TxdGAjAyGNmzYILeVlZXtjpeVlbU+1lZVVdVW54qhtMLCQqxfv172KokhMzHctiPPtzPEL5mIMDtTMsBpTnUkp19pVuo/OUqdPK/1sfzUTeRTHbDV8xnQYSgeJFQPTNWHfFXHYaoiXwS71L7UFxYU+GBf/yG1xWuSWXg9MoEIaba4JqqKfJ/Z6dck/U4tnrfNO7ZM1LZQAmB467G2IpZ4HzegWiJoMwDLkIvyimPivripYh8WRHKIe6db1QwL4rNEltNMhT7pR9P7qaio3THAULyy4G7qjN2jdHy3MWZAC3hTcyA7JiYziyT5ziY+uzM+GBK5P8KWuUEejwcNDQ0dnt9RHpE4PxqNIhKJ/ODzicd3h4iotc5euV0rBDwdFy3ble+kpW4790LaPlVlj1Km4TXJLLwemSfzrklXvDtv1ibk2SkiCPB0QXuyja2/LV6vtzV3qC0RuLSdHdb2/C3PTZ/v9/tl0LMzz0dERERkazCUHvKqrq5ud1zcF8nQWxLDX1ueKwKf+vp6ORQmhstEULSjz0dERERkazA0bNgwBINBzJw5s/WYyPtZsGCBrDe0JXFM5P6sXJmqBQ9g1qxkAcH99ttPDmWNHj269ViaeP7999+/S/8tRERElJ1szRkSuT1nnnkm7rrrLhQXF6NXr16yzpDoAZowYQIMw0Btba2cKi+GyEaNGiWDncsvvxw33nijTJYWBRpPOumk1p6f8847T9YVEjPSDj30UDz//PNYuHChnKpPRERElFF1hgQR8Nxzzz144YUXZAJ0ugJ17969ZQXpI488ErfddhtOPvlkeX5NTQ2mTJmCjz/+WOYIien0kyZNas0XEkSBRVHMUfQiDR48WBZhdHIFaiIiIsrgYIiIiIjITpk295CIiIioWzEYIiIiIkdjMERERESOxmCIiIiIHI3BEBERETkagyEiIiJyNAZDRERE5GgMhkiu7SYKXYqK3aLC9+mnn445c+a0Pv7555/LopeiArgocvn666/b2l4nWb58Ofbdd19ZlDRNVFQXldv32WcfHHHEEXj88cdtbaNTiGKuP/nJT7DXXnvhuOOOw5tvvtn6mCgQe8kll8jXzyGHHIK//vWvsqAsdZ1EIoH77rsP48ePl6+RM844A1988UXr43yddJ+///3vOOuss9od297P3zRN3H///Rg3bpw856KLLsLq1athG1F0kZztvPPOs44//nhr9uzZ1rJly6wpU6ZYe++9t7V06VJryZIl1l577WXdc889cv+RRx6xRowYYX322Wd2NzvnxWIx6+STT7b22GMP6/nnn5fHamtrrQMOOMCaNGmSvB7PPfecvD5iS13npZdekr/3Tz75pLVy5UrroYcesoYNG2bNmzdPXqcJEyZYF198sfXdd99Z//vf/6yxY8da9913n93Nzmn333+/dfDBB1sff/yxtWLFCuu6666z9ttvP6uqqoqvk2705JNPytfCmWee2XpsR37+DzzwgDzn/ffftxYuXGidf/758nUUjUZt+XcwGHI48SYiPmznzJnTesw0Teuoo46y/vrXv1rXX3+9dcopp7T7miuuuEL+4lLXuvvuu62zzz67XTD08MMPW4cccogVj8fbnSfeRKhriNfD+PHjrdtvv73dcfEaENfj1Vdftfbcc0+rvr6+9bFnnnnGGj16tG1v7E5w4oknWrfddlvr/aamJvlaefvtt/k66QYbNmywLrnkEmufffaxjj322HbB0PZ+/uJ1se+++1pPPfVU6+MNDQ3yj3DxerIDh8kcrqioCP/4xz9k13+aoijy1tjYKIfLtlzX7cADD8TcuXNFIG1Di51h9uzZ+O9//4vbb7+93XFxPcaOHQtd19tdjxUrVmDTpk02tNQZQ5Vr167FCSec0O74o48+KofGxDUZOXIkCgoK2l2T5uZmOVRAXaOkpATvv/++HKIUQ5Li9SIW/x42bBhfJ93g22+/hcvlwiuvvCJTKNra3s9/0aJFCIVC7T5b8vPz5QLr4r3PDgyGHE78Ah522GHyTSTt7bffxsqVK+VYrljstqKiot3XlJWVIRwOo66uzoYW5z4RhF599dWYPHkyKisr2z32Q9dDWL9+fbe200nBkNDS0oILLrhAvoGfeuqpeO+99+RxXhN7XHfddfLDWCzmLf6Yu/fee2UOSt++fXlNusERRxyBBx54AH369Nnqse39/MXjwpbvb+Kc9GPdjcEQtTNv3jxMmjQJEyZMwOGHH45IJNIuUBLS92OxmE2tzG033nijTAjdsidC6Oh6eDweuY1Go93WRicRPTzCNddcg+OPPx7Tpk3DwQcfjN/+9rdycgGviT2WLFmCvLw8PPjgg7JXSEzyuOqqq2RvHK+JvSLb+fmLP6aFjs6x6/ps7sMix5s+fbp8MxEzYu66667WX84tg570fZ/PZ0s7c33GkuhifvXVVzt83Ov1bnU90m8efr+/W9roNKL3QRC9Qj/72c/k/vDhw7FgwQL861//4jWxgehduPLKK/HYY49h//33l8dE75AIkERvBa+Jvbzb+fmLxwVxTno/fY5dnyvsGSLpySefxKWXXiqnqT788MOtUbzoxqyurm53rrgvfqHFX2XUuZ5//nnU1NTIXjnROyRuwp/+9CdceOGFsuu5o+shlJeX29LmXJf+ue6xxx7tjg8ePFjmq/CadL8vv/wS8Xi8Xa6jIHJXxBA/r4m9Krbz808Pj3V0jl3Xh8EQ4emnn8bNN98s63Tcc8897bouxV9ds2bNanf+jBkzZO+RqvLXp7OJHrk33nhD9hClb8LEiRNx6623YsyYMTJ5vW0NG3E9BgwYIBNKqfOJ5OhAICA/gNv6/vvvZX6KuCailyg9nJa+JuJrRDIvdb50Psp333231TXp378/Xyc2G7Odn794XQSDQcycObNdrqR4HYmvtYUtc9goY4i6QiNHjrR+97vfWdXV1e1ujY2N1vfffy8fv/POO2W9iEcffZR1hrpZ26n1mzZtssaMGWNdc8011uLFi+VxUb/jhRdesLuZOe3BBx+UU4HFtN+2dYZmzJhhRSIRWYriggsukPVS0nWGRB0V6hqGYVinn366nNL9+eefW8uXL7fuvfdea/jw4dYXX3zB10k3u+aaa9pNrd+Rn7+oXSdeJ9OnT29XZ0jU7bKDIv5nTxhGmUAMiYlZGB0R+RFiavdHH32EO++8U06L7N27txxOE5V4qXsMHToUt912m0wQFb766ivZSyT+iiotLcX5558vK71S1xL5QWI4uaqqCoMGDZKvg6OOOko+JoZmpkyZIvO9xBT7U045RT7O3tOu09DQICt9f/DBB3JfDGNeccUVckq3wNdJ97n22mtl+Yknnnii9dj2fv6i10iMRIjq+iLhWvQIiZUQxGeMHRgMERERkaPxzxYiIiJyNAZDRERE5GgMhoiIiMjRGAwRERGRozEYIiIiIkdjMERERESOxmCIiIiIHI3BEBERETkagyEiIiJyNAZDRERE5GgMhogop4h1ju6++25MmDABe+65J0aPHo3zzjsPCxcubD3nxRdflOvr7bXXXjjxxBPx+eefY8SIEXKdpLR169a1rnU1atQonHPOOXKdJSLKPQyGiCinXH311Xj++edx8cUXY9q0aZg0aRIWL16MK6+8EmIpxpdeekkuLCmCpIceegjHHHMMfvvb38qFI9Nqa2tx2mmn4dtvv8X1118vgyvTNHHGGWdg6dKltv77iKjz6V3wnEREtojFYgiFQpg8ebLs+RFEz05zczNuv/12bNq0Cffddx/Gjx+PW265RT4+btw4uFwuGfCk/fvf/0Z9fT3+85//oFevXvLYoYceKp9TfP39999v07+QiLoCe4aIKGe43W48+uijMmipqqrCjBkz8Mwzz+D999+Xjy9fvlwOfx177LHtvu64445rd18Mmw0fPhzl5eVIJBLypqqqDIg+++yzbv03EVHXY88QEeWUjz/+GH/+85+xbNkyBAIBDBs2DH6/Xz4meoCEkpKSdl/To0ePdvdFr9DKlSsxcuTIDr9HOByGz+frsn8DEXUvBkNElDNWrVqF3/3udzjqqKPw97//HX369IGiKHjqqadkkJTOC6qpqWn3dVvez8vLk8NrIv/oh3qgiCh3cJiMiHLGN998g2g0KpOn+/btKwMhQQRCQllZmTz+v//9r93XvfPOO+3ui0BIDKkNGDBAzjhL315++WU899xz0DStG/9VRNTVGAwRUc4Qw1q6ruPOO+/Ep59+KnOFLr30UnzwwQetw1sTJ07E9OnT8ac//QmffPIJHnnkEZkULYi8IOHcc8+Vs8fE9o033pA5RGJW2RNPPCEDJCLKLYol5poSEeWIt956C1OnTpVDZgUFBdhnn31w9tln46yzzpIBjZge/9///lcmWotk6iFDhshj1113HR544AFZn0gQXy9mmIlASPQ29e/fXz7HKaecYvc/kYg6GYMhInKU1157TRZYHDhwYOsx0XN0ySWXyGEwkXBNRM7CYIiIHEXkE4nCiZdddhkqKyvlrDFRN0jkEolhMCJyHgZDROQodXV1cvjro48+kpWmxbR6UYVa5BKJqfhE5DwMhoiIiMjROJuMiIiIHI3BEBERETkagyEiIiJyNAZDRERE5GgMhoiIiMjRGAwRERGRozEYIiIiIkdjMERERESOxmCIiIiI4GT/H2VEAhJicBjVAAAAAElFTkSuQmCC",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"## expermiental comparison of population and random sample\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns; sns.set()\n",
"bank_full_data = pd.read_csv('bank-additional-full.csv', sep=';')\n",
"frac = 0.1\n",
"bank_smpl_data = bank_full_data.sample(frac=frac, random_state=1234)\n",
"\n",
"sns.kdeplot(bank_full_data['age'], color='skyblue', label='full')\n",
"sns.kdeplot(bank_smpl_data['age'], color='orange', label='sample')\n",
"plt.legend()\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Test - Train - Split"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(6578, 21)\n",
"(3290, 21)\n"
]
}
],
"source": [
"## two outputs\n",
"from sklearn.model_selection import train_test_split\n",
"train, test = train_test_split(data, train_size=2/3, random_state=1234)\n",
"\n",
"print(train.shape)\n",
"print(test.shape)"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(6578, 20)\n",
"(6578,)\n",
"(3290, 20)\n",
"(3290,)\n"
]
}
],
"source": [
"## four outputs (two inputs)\n",
"X = data.drop('y', axis=1)\n",
"y = data['y']\n",
"\n",
"from sklearn.model_selection import train_test_split\n",
"\n",
"X_train, X_test, y_train, y_test, = train_test_split(\n",
" X, y, train_size=2/3, random_state=1234)\n",
"\n",
"print(X_train.shape)\n",
"print(y_train.shape)\n",
"print(X_test.shape)\n",
"print(y_test.shape)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Geschichtetes Sampling"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"y\n",
"no 0.529287\n",
"yes 0.470713\n",
"Name: proportion, dtype: float64\n",
"y\n",
"no 0.527364\n",
"yes 0.472636\n",
"Name: proportion, dtype: float64\n",
"y\n",
"no 0.52934\n",
"yes 0.47066\n",
"Name: proportion, dtype: float64\n"
]
}
],
"source": [
"data = pd.read_csv('bank_data.csv', sep=';')\n",
"X = data.drop('y', axis=1)\n",
"y = data['y']\n",
"\n",
"print(y.value_counts(normalize=True))\n",
"\n",
"from sklearn.model_selection import train_test_split\n",
"X_train_str, X_test_str, y_train_str, y_test_str, = train_test_split(\n",
" X,\n",
" y,\n",
" train_size=2/3,\n",
" random_state=1234)\n",
"print(y_train_str.value_counts(normalize=True))\n",
"\n",
"X_train_str, X_test_str, y_train_str, y_test_str, = train_test_split(\n",
" X,\n",
" y,\n",
" train_size=2/3,\n",
" stratify=y, ## stratifizieren aufgrund von y\n",
" random_state=1234)\n",
"print(y_train_str.value_counts(normalize=True))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Externes Sampling\n",
"#### Sequentielles Sampling"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(4049, 21)\n"
]
}
],
"source": [
"import numpy as np\n",
"import csv\n",
"smpl_prop = 0.1 ## proportion of pop for sample\n",
"rows = []\n",
"with open('bank-additional-full.csv', 'r') as f:\n",
" csv_reader = csv.reader(f, delimiter=';', quoting=csv.QUOTE_NONE)\n",
" header = next(csv_reader) ## pick header\n",
" for row in csv_reader: ## iterate over each row after the header in the csv\n",
" if np.random.rand() < smpl_prop: ## conditinal add row to rows\n",
" rows.append(row)\n",
"data = pd.DataFrame(rows, columns=header) ## rows to pandas.DataFrame\n",
"print(data.shape)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Reservoir Sampling"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"scrolled": true,
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(1000, 21)\n"
]
}
],
"source": [
"data = pd.read_csv('bank-additional-full.csv', sep=';')\n",
"\n",
"from sklearn.utils.random import sample_without_replacement\n",
"smpl = sample_without_replacement(data.shape[0], 1000, \n",
" method = 'reservoir_sampling')\n",
"smpl_data = data.iloc[smpl,:]\n",
"print(smpl_data.shape)"
]
}
],
"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.13.0"
},
"toc": {
"base_numbering": "4.1",
"nav_menu": {
"height": "189px",
"width": "303.333px"
},
"number_sections": true,
"sideBar": true,
"skip_h1_title": false,
"title_cell": "4.1 Validierung und mehr - Sampling und Resampling",
"title_sidebar": "Contents",
"toc_cell": true,
"toc_position": {
"height": "calc(100% - 180px)",
"left": "10px",
"top": "150px",
"width": "182px"
},
"toc_section_display": true,
"toc_window_display": true
},
"toc-autonumbering": true,
"varInspector": {
"cols": {
"lenName": 16,
"lenType": 16,
"lenVar": 40
},
"kernels_config": {
"python": {
"delete_cmd_postfix": "",
"delete_cmd_prefix": "del ",
"library": "var_list.py",
"varRefreshCmd": "print(var_dic_list())"
},
"r": {
"delete_cmd_postfix": ") ",
"delete_cmd_prefix": "rm(",
"library": "var_list.r",
"varRefreshCmd": "cat(var_dic_list()) "
}
},
"position": {
"height": "298.85px",
"left": "782px",
"right": "20px",
"top": "120px",
"width": "350px"
},
"types_to_exclude": [
"module",
"function",
"builtin_function_or_method",
"instance",
"_Feature"
],
"window_display": false
}
},
"nbformat": 4,
"nbformat_minor": 4
}