Files
ORB-SLAM3_Linux/Examples/Monocular/jupyter notebook/.ipynb_checkpoints/playground-checkpoint.ipynb
Ivan bbabd50d1e v1
2022-06-25 19:31:12 +03:00

1595 lines
217 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"cells": [
{
"cell_type": "code",
"execution_count": 52,
"id": "c1261718",
"metadata": {},
"outputs": [],
"source": [
"import matplotlib.pyplot as plt\n",
"import numpy as np\n",
"import pandas as pd\n",
"from IPython.display import display\n",
"from datetime import datetime, timedelta"
]
},
{
"cell_type": "markdown",
"id": "a2c7019e",
"metadata": {},
"source": [
"# Импорт"
]
},
{
"cell_type": "code",
"execution_count": 53,
"id": "f7f35a46",
"metadata": {},
"outputs": [],
"source": [
"table = pd.read_csv(\"../results/lost_lot.txt\", sep=\" \")"
]
},
{
"cell_type": "code",
"execution_count": 54,
"id": "31554771",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>x</th>\n",
" <th>y</th>\n",
" <th>z</th>\n",
" <th>cnt</th>\n",
" <th>mapId</th>\n",
" <th>lost_flag</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0.000</td>\n",
" <td>-54.100</td>\n",
" <td>0.0000</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>0.000</td>\n",
" <td>-54.100</td>\n",
" <td>0.0000</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>0.000</td>\n",
" <td>-54.100</td>\n",
" <td>0.0000</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>0.000</td>\n",
" <td>-54.100</td>\n",
" <td>0.0000</td>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>0.000</td>\n",
" <td>-54.100</td>\n",
" <td>0.0000</td>\n",
" <td>4</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2486</th>\n",
" <td>-109.273</td>\n",
" <td>-128.201</td>\n",
" <td>-54.9652</td>\n",
" <td>2486</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2487</th>\n",
" <td>-109.274</td>\n",
" <td>-128.202</td>\n",
" <td>-54.9577</td>\n",
" <td>2487</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2488</th>\n",
" <td>-109.273</td>\n",
" <td>-128.201</td>\n",
" <td>-54.9716</td>\n",
" <td>2488</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2489</th>\n",
" <td>-109.275</td>\n",
" <td>-128.204</td>\n",
" <td>-54.9620</td>\n",
" <td>2489</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2490</th>\n",
" <td>-109.274</td>\n",
" <td>-128.204</td>\n",
" <td>-54.9550</td>\n",
" <td>2490</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>2491 rows × 6 columns</p>\n",
"</div>"
],
"text/plain": [
" x y z cnt mapId lost_flag\n",
"0 0.000 -54.100 0.0000 0 0 1\n",
"1 0.000 -54.100 0.0000 1 0 1\n",
"2 0.000 -54.100 0.0000 2 0 1\n",
"3 0.000 -54.100 0.0000 3 0 1\n",
"4 0.000 -54.100 0.0000 4 0 1\n",
"... ... ... ... ... ... ...\n",
"2486 -109.273 -128.201 -54.9652 2486 0 0\n",
"2487 -109.274 -128.202 -54.9577 2487 0 0\n",
"2488 -109.273 -128.201 -54.9716 2488 0 0\n",
"2489 -109.275 -128.204 -54.9620 2489 0 0\n",
"2490 -109.274 -128.204 -54.9550 2490 0 0\n",
"\n",
"[2491 rows x 6 columns]"
]
},
"execution_count": 54,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"table"
]
},
{
"cell_type": "code",
"execution_count": 55,
"id": "e6758882",
"metadata": {},
"outputs": [],
"source": [
"x = table[\"y\"].values\n",
"x = -x\n",
"# v = np.vstack([ np.vstack([table[\"v1\"].values, table[\"v2\"].values]), table[\"v3\"].values ])\n",
"# v = v.T"
]
},
{
"cell_type": "code",
"execution_count": 56,
"id": "b68c60ea",
"metadata": {},
"outputs": [],
"source": [
"def plot_x(x, name):\n",
" fig = plt.figure(figsize=(15,5))\n",
" ax = fig.add_subplot(1,1,1)\n",
" ax.set_aspect(\"equal\")\n",
" ax.grid()\n",
" ax.plot(x)\n",
" fig.savefig(fname=name, dpi=300, format=\"png\", bbox_inches='tight', pad_inches=0.0)"
]
},
{
"cell_type": "code",
"execution_count": 57,
"id": "c2be84f7",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 1080x360 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plot_x(x, \"lol.png\")"
]
},
{
"cell_type": "code",
"execution_count": 58,
"id": "78b9f075",
"metadata": {},
"outputs": [],
"source": [
"ground_truth = pd.read_csv(\"../working_data/camera1-2020-10-14---19-38-42---093390448.txt\", sep=\" \")"
]
},
{
"cell_type": "code",
"execution_count": 59,
"id": "bf3224e5",
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>date</th>\n",
" <th>time</th>\n",
" <th>c2</th>\n",
" <th>x</th>\n",
" <th>y</th>\n",
" <th>z</th>\n",
" <th>name</th>\n",
" <th>xc</th>\n",
" <th>yc</th>\n",
" <th>zc</th>\n",
" <th>namez</th>\n",
" <th>numberz</th>\n",
" <th>namef</th>\n",
" <th>numberf</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>2020-10-14</td>\n",
" <td>17:38:25.098326</td>\n",
" <td>C255</td>\n",
" <td>-54.098907</td>\n",
" <td>-7.159363</td>\n",
" <td>0.0</td>\n",
" <td>COORDS</td>\n",
" <td>(0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0)</td>\n",
" <td>ZOOM</td>\n",
" <td>1365</td>\n",
" <td>FOCUS</td>\n",
" <td>4095</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>2020-10-14</td>\n",
" <td>17:38:25.118190</td>\n",
" <td>C255</td>\n",
" <td>-54.098907</td>\n",
" <td>-7.159363</td>\n",
" <td>0.0</td>\n",
" <td>COORDS</td>\n",
" <td>(0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0)</td>\n",
" <td>ZOOM</td>\n",
" <td>1365</td>\n",
" <td>FOCUS</td>\n",
" <td>4095</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>2020-10-14</td>\n",
" <td>17:38:25.138118</td>\n",
" <td>C255</td>\n",
" <td>-54.098907</td>\n",
" <td>-7.159363</td>\n",
" <td>0.0</td>\n",
" <td>COORDS</td>\n",
" <td>(0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0)</td>\n",
" <td>ZOOM</td>\n",
" <td>1365</td>\n",
" <td>FOCUS</td>\n",
" <td>4095</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>2020-10-14</td>\n",
" <td>17:38:25.158897</td>\n",
" <td>C255</td>\n",
" <td>-54.098907</td>\n",
" <td>-7.159363</td>\n",
" <td>0.0</td>\n",
" <td>COORDS</td>\n",
" <td>(0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0)</td>\n",
" <td>ZOOM</td>\n",
" <td>1365</td>\n",
" <td>FOCUS</td>\n",
" <td>4095</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>2020-10-14</td>\n",
" <td>17:38:25.177813</td>\n",
" <td>C255</td>\n",
" <td>-54.098907</td>\n",
" <td>-7.159363</td>\n",
" <td>0.0</td>\n",
" <td>COORDS</td>\n",
" <td>(0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0)</td>\n",
" <td>ZOOM</td>\n",
" <td>1365</td>\n",
" <td>FOCUS</td>\n",
" <td>4095</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>37699</th>\n",
" <td>2020-10-14</td>\n",
" <td>17:50:59.079517</td>\n",
" <td>C255</td>\n",
" <td>39.291199</td>\n",
" <td>-2.818695</td>\n",
" <td>0.0</td>\n",
" <td>COORDS</td>\n",
" <td>(0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0)</td>\n",
" <td>ZOOM</td>\n",
" <td>1365</td>\n",
" <td>FOCUS</td>\n",
" <td>4095</td>\n",
" </tr>\n",
" <tr>\n",
" <th>37700</th>\n",
" <td>2020-10-14</td>\n",
" <td>17:50:59.103463</td>\n",
" <td>C255</td>\n",
" <td>39.291199</td>\n",
" <td>-2.818695</td>\n",
" <td>0.0</td>\n",
" <td>COORDS</td>\n",
" <td>(0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0)</td>\n",
" <td>ZOOM</td>\n",
" <td>1365</td>\n",
" <td>FOCUS</td>\n",
" <td>4095</td>\n",
" </tr>\n",
" <tr>\n",
" <th>37701</th>\n",
" <td>2020-10-14</td>\n",
" <td>17:50:59.120408</td>\n",
" <td>C255</td>\n",
" <td>39.291199</td>\n",
" <td>-2.818695</td>\n",
" <td>0.0</td>\n",
" <td>COORDS</td>\n",
" <td>(0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0)</td>\n",
" <td>ZOOM</td>\n",
" <td>1365</td>\n",
" <td>FOCUS</td>\n",
" <td>4095</td>\n",
" </tr>\n",
" <tr>\n",
" <th>37702</th>\n",
" <td>2020-10-14</td>\n",
" <td>17:50:59.143372</td>\n",
" <td>C255</td>\n",
" <td>39.291199</td>\n",
" <td>-2.818695</td>\n",
" <td>0.0</td>\n",
" <td>COORDS</td>\n",
" <td>(0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0)</td>\n",
" <td>ZOOM</td>\n",
" <td>1365</td>\n",
" <td>FOCUS</td>\n",
" <td>4095</td>\n",
" </tr>\n",
" <tr>\n",
" <th>37703</th>\n",
" <td>2020-10-14</td>\n",
" <td>17:50:59.160309</td>\n",
" <td>C255</td>\n",
" <td>39.291199</td>\n",
" <td>-2.818695</td>\n",
" <td>0.0</td>\n",
" <td>COORDS</td>\n",
" <td>(0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0)</td>\n",
" <td>ZOOM</td>\n",
" <td>1365</td>\n",
" <td>FOCUS</td>\n",
" <td>4095</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>37704 rows × 14 columns</p>\n",
"</div>"
],
"text/plain": [
" date time c2 x y z name \\\n",
"0 2020-10-14 17:38:25.098326 C255 -54.098907 -7.159363 0.0 COORDS \n",
"1 2020-10-14 17:38:25.118190 C255 -54.098907 -7.159363 0.0 COORDS \n",
"2 2020-10-14 17:38:25.138118 C255 -54.098907 -7.159363 0.0 COORDS \n",
"3 2020-10-14 17:38:25.158897 C255 -54.098907 -7.159363 0.0 COORDS \n",
"4 2020-10-14 17:38:25.177813 C255 -54.098907 -7.159363 0.0 COORDS \n",
"... ... ... ... ... ... ... ... \n",
"37699 2020-10-14 17:50:59.079517 C255 39.291199 -2.818695 0.0 COORDS \n",
"37700 2020-10-14 17:50:59.103463 C255 39.291199 -2.818695 0.0 COORDS \n",
"37701 2020-10-14 17:50:59.120408 C255 39.291199 -2.818695 0.0 COORDS \n",
"37702 2020-10-14 17:50:59.143372 C255 39.291199 -2.818695 0.0 COORDS \n",
"37703 2020-10-14 17:50:59.160309 C255 39.291199 -2.818695 0.0 COORDS \n",
"\n",
" xc yc zc namez numberz namef numberf \n",
"0 (0.0 0.0 0.0) ZOOM 1365 FOCUS 4095 \n",
"1 (0.0 0.0 0.0) ZOOM 1365 FOCUS 4095 \n",
"2 (0.0 0.0 0.0) ZOOM 1365 FOCUS 4095 \n",
"3 (0.0 0.0 0.0) ZOOM 1365 FOCUS 4095 \n",
"4 (0.0 0.0 0.0) ZOOM 1365 FOCUS 4095 \n",
"... ... ... ... ... ... ... ... \n",
"37699 (0.0 0.0 0.0) ZOOM 1365 FOCUS 4095 \n",
"37700 (0.0 0.0 0.0) ZOOM 1365 FOCUS 4095 \n",
"37701 (0.0 0.0 0.0) ZOOM 1365 FOCUS 4095 \n",
"37702 (0.0 0.0 0.0) ZOOM 1365 FOCUS 4095 \n",
"37703 (0.0 0.0 0.0) ZOOM 1365 FOCUS 4095 \n",
"\n",
"[37704 rows x 14 columns]"
]
},
"execution_count": 59,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"ground_truth"
]
},
{
"cell_type": "markdown",
"id": "a9fc22bf",
"metadata": {},
"source": [
"# Обработка"
]
},
{
"cell_type": "code",
"execution_count": 60,
"id": "096f42fd",
"metadata": {},
"outputs": [],
"source": [
"true_x = ground_truth[\"x\"].values"
]
},
{
"cell_type": "code",
"execution_count": 61,
"id": "9b4fc811",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"17.835578"
]
},
"execution_count": 61,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Time difference between video start and inertial start. \n",
"video_start = datetime(2020, 10, 14, 17, 38, 25, 98326)\n",
"inertial_start = datetime(2020, 10, 14, 17, 38, 42, 933904)\n",
"delta = inertial_start - video_start\n",
"delta.total_seconds()"
]
},
{
"cell_type": "code",
"execution_count": 62,
"id": "211eb76c",
"metadata": {},
"outputs": [],
"source": [
"# Let's create the timestamps \n",
"time_x = table['cnt'].values / 30\n",
"time_x = time_x[351:]\n",
"\n",
"# We could write ground_truth.index.values[:5000], but it's the same as np.arange(0, 5000) which is much faster.\n",
"time_true_x = np.arange(0, 6000) / 50"
]
},
{
"cell_type": "code",
"execution_count": 63,
"id": "657c7996",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([11.7 , 11.73333333, 11.76666667, ..., 82.93333333,\n",
" 82.96666667, 83. ])"
]
},
"execution_count": 63,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"time_x"
]
},
{
"cell_type": "code",
"execution_count": 64,
"id": "829b1cd5",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([0.0000e+00, 2.0000e-02, 4.0000e-02, ..., 1.1994e+02, 1.1996e+02,\n",
" 1.1998e+02])"
]
},
"execution_count": 64,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"time_true_x"
]
},
{
"cell_type": "code",
"execution_count": 65,
"id": "4aa5e965",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"6000"
]
},
"execution_count": 65,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"time_true_x.shape[0]"
]
},
{
"cell_type": "code",
"execution_count": 66,
"id": "1ba08e13",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(36862,)"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"(5108,)"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# If inertial data starts with 17.835578 seconds earlier, we need to start estimating from 17th second.\n",
"time_true_x = time_true_x - 17.835578\n",
"new_idxs = np.where(time_true_x >= 0)\n",
"time_true_x = time_true_x[new_idxs]\n",
"\n",
"# We have to skew not only the time, but also the \"true_x\" values. \n",
"fps_diff = 6000 - time_true_x.shape[0]\n",
"true_x = true_x[fps_diff - 50:]\n",
"\n",
"display(true_x.shape)\n",
"display(time_true_x.shape)"
]
},
{
"cell_type": "code",
"execution_count": 67,
"id": "38dd8be1",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"30.784421999999996"
]
},
"execution_count": 67,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"n = np.where(time_true_x <= 30.8)[0][-1]\n",
"time_true_x[n]"
]
},
{
"cell_type": "code",
"execution_count": 68,
"id": "05599d28",
"metadata": {},
"outputs": [],
"source": [
"true_x_indexes = []\n",
"for time in time_x:\n",
" # Take the last element which is smaller than current time\n",
" nearest_el_idx = np.where(time_true_x <= time)[0][-1]\n",
" true_x_indexes.append(nearest_el_idx)\n"
]
},
{
"cell_type": "code",
"execution_count": 69,
"id": "1c1f84b6",
"metadata": {},
"outputs": [],
"source": [
"true_values = true_x[true_x_indexes]"
]
},
{
"cell_type": "code",
"execution_count": 70,
"id": "7ac96655",
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"array([ 54.1 , 54.1 , 54.1 , ..., 128.201, 128.204, 128.204])"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"array([-55.52749634, -55.52749634, -55.52749634, ..., -60.05496216,\n",
" -60.05496216, -60.05496216])"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"-109.62749633789063"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# x values and true_values are a bit skewed. We need to correct the initial angle of these both graphs. \n",
"display(x)\n",
"display(true_values)\n",
"display(true_values[0] - x[0])"
]
},
{
"cell_type": "code",
"execution_count": 71,
"id": "9b153d1f",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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ooEHgXOBnsCDJSceItXkdX7fjwGecx+Tu1hrPwNwn0uMAjq4t5lmjAnQeYc4rAD4q7W2PdALGO/ufzoeexAVdRXTE8iw1m601h4DEoFhDmcSOVPDgDfcr98ArijV/qYtthiIMsY0dCCf+Dlr7ffA/hOaz7TfXgx8Za3db609AHxF2SfYIlWinH5cnmFAorU2z1q7Ccig+JxD5x3iGGvtTmvtMvfrQ8AaoDE6HnsUFXUV0xjYVur9dnebiKeywJfGmGRjzFh3W31r7U73611Affdr9W/xZGfab9WfxVNNcN+a9lqpbyvUj8WjGWOaA12Bn9Dx2KOoqBPxD32ttd0oviVivDGmf+mFtngYXA2FK15F/Va82HSgJdAF2Ak842gakdNgjKkJfADcZa3NLr1Mx2PnqairmB1Ak1LvY91tIh7JWrvD/TMTSKL4Vp7dJbdVun9muldX/xZPdqb9Vv1ZPI61dre1ttBaWwS8TPExGdSPxUMZY4IoLujettZ+6G7W8diDqKirmJ+BeGNMnDEmmOKHmj9yOJNImYwx4caYiJLXwEVAKsV9tmTkqZuAue7XHwE3ukev6gVklbq9QsRpZ9pv5wEXGWNqu29xu8jdJuKYE55THk7xMRmK+/EoY0wNY0wcxQNNLEHnHeIgY4wBXgXWWGufLbVIx2MPEuh0AG9krS0wxkyguCMGAK9Za1c7HEukPPWBpOJjMoHAO9baL4wxPwOzjDE3A1uAq93rfwZcSvED+keAMdUfWQSMMe8CA4C6xpjtFI+aNoUz6LfW2v3GmEcpPikGeMRae7qDVoictXL68QBjTBeKb1fbDIwDsNauNsbMAtIoHnFwvLW20L0fnXeIU/oANwApxpgV7rb70fHYo5jiW2BFRERERETEG+n2SxERERERES+mok5ERERERMSLqagTERERERHxYirqREREREREvJiKOhERERERES+mok5ERERERMSLqagTERERERHxYirqREREREREvNj/B55f6zAs0vLFAAAAAElFTkSuQmCC\n",
"text/plain": [
"<Figure size 1080x360 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plot_x(true_values, \"true values\")"
]
},
{
"cell_type": "code",
"execution_count": 75,
"id": "3c309ad2",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 1080x360 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plot_x(true_values[500:700], \"true_values\")"
]
},
{
"cell_type": "code",
"execution_count": 76,
"id": "29ce3413",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 1080x360 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plot_x(-x[351:351+500], \"estimated values\")"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "1ac5cc99",
"metadata": {},
"outputs": [],
"source": [
"plot_x(-x[351:], \"estimated values\")"
]
},
{
"cell_type": "markdown",
"id": "50c3d3a5",
"metadata": {},
"source": [
"# Обработаем ошибки двух видов в оценке ORB_SLAM3:\n",
"1. \"Потеря\" оси поворота\n",
"2. Абсолютные значения измерения градусов. Необходимо использовать данные векторов для определения направления. "
]
},
{
"cell_type": "code",
"execution_count": 18,
"id": "d0169c07",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 1080x360 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plot_x(x, \"non_processed.png\")"
]
},
{
"cell_type": "code",
"execution_count": 378,
"id": "1fdff1a1",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Found the loss!, it's index is: 262 It's value is -0.23901899999999998 Diff is 59.363440999999995 Last el is: 59.124421999999996\n",
"Found the loss!, it's index is: 613 It's value is 54.307081 Diff is -65.23194000000001 Last el is: -10.924859000000012\n",
"Found the loss!, it's index is: 948 It's value is -6.737921000000014 Diff is 60.698122 Last el is: 53.960200999999984\n",
"Found the loss!, it's index is: 1350 It's value is 32.04612299999998 Diff is 15.20409 Last el is: 47.25021299999998\n",
"Found the loss!, it's index is: 1443 It's value is 68.75605299999998 Diff is -96.60524000000001 Last el is: -27.84918700000003\n",
"Found the loss!, it's index is: 1686 It's value is -62.86792700000003 Diff is 18.065399999999997 Last el is: -44.80252700000003\n"
]
},
{
"data": {
"text/plain": [
"<matplotlib.legend.Legend at 0x7f95625fadf0>"
]
},
"execution_count": 378,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA3UAAACECAYAAAA3KAIBAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8rg+JYAAAACXBIWXMAAAsTAAALEwEAmpwYAABDF0lEQVR4nO3dd3hURdvA4d9sKpDQQyih95LQQg1VpImAIiqINFFApFhQ8VVfsaAgqHS7FEEBUV8FC4gfSBGkBgwdpAXpPUACm53vj1kgQBI2ZXOym+e+rr2yOWfO2Sc72TJnZp5RWmuEEEIIIYQQQngmm9UBCCGEEEIIIYRIP2nUCSGEEEIIIYQHk0adEEIIIYQQQngwadQJIYQQQgghhAeTRp0QQgghhBBCeDBp1AkhhBBCCCGEB8uURp1S6gul1HGlVEySbQWVUr8ppXY7fxZwbldKqYlKqT1KqS1KqTqZEYMQQgghhBBC5ESZ1VM3HWh3y7YRwO9a64rA787fAdoDFZ23/sCHmRSDEEIIIYQQQuQ4mdKo01ovB07fsrkzMMN5fwZwX5LtM7WxBsivlCqWGXEIIYQQQgghRE7j68Zzh2qtjzjvHwVCnfdLAIeSlIt1bjtCCgoXLqzLlCnjjhgz5OLFi+TJk8fqMHI0qQPrSR1YT+rAelIH1pM6sJY8/9aTOrCeu+tgw4YNJ7XWIcntc2ej7jqttVZK6bQco5TqjxmeSWhoKOPGjXNLbBkRFxdHUFCQ1WHkaFIH1pM6sJ7UgfWkDqwndWAtef6tJ3VgPXfXQcuWLQ+ktM+djbpjSqliWusjzuGVx53bDwMlk5QLc267idb6E+ATgMjISN2iRQs3hpo+y5YtIzvGlZNIHVhP6sB6UgfWkzqwntSBteT5t57UgfWsrAN3LmnwI9Dbeb838EOS7b2cWTAbAueSDNMUQgghRJppwA4k3HK7kuR2NcnN7rwlJrk5ktx0kpsQQojsLlN66pRSXwMtgMJKqVjgNWA0ME8p1Q84ADzkLP4zcA+wB7gE9M2MGIQQQoicxQG8CXyGmZ6e1dQtPzNyP+PHNWniAHyct2rA3cAgoEiy0QshhDfJlEad1rp7CrtaJVNWA09lxuMKIYQQOZMGXgHewawU1BfwwzRoVJIypHL/TvvdeY7Mf+wjR2IpWTIM00MZDbwBjAGewTR+fRAiJ7l69SqxsbHEx8dbHUqOkS9fPrZv357h8wQGBhIWFoafn5/Lx2RJohQhsocjQAxwhtSHFKk0bnfHvvQckx+IwnyxE0J4t28wDbp+wKek/p6RM+zdu4ySJVsk2bITeAvzPK0C5gPJJo0TwivFxsYSHBxMmTJlUEreI7LChQsXCA4OztA5tNacOnWK2NhYypYt6/Jx0qgTOcT7wMuAt1+tqgEsBQpbHYgQwm32A8OA2sDHSIMuJZWBLzGzQ4YAEcB3QCMLYxIi68THx0uDzgMppShUqBAnTpxI03HSqBM5wA/Ac0An58+CpDwMJ6UevNR69jJ7X3rPtw1z1f4ezFVp6bETwvtcm8EQB0xHhhS6oh9QE+gGNAXeA4YijWGRE0iDzjOlp96kUSe83C6gB+YDfT7e3dCphXlJPwxMAIZbGo0Qwh3ew+QbG4fpeRKuiQRWYxp4TwN/YhLMZGyYlBAidT4+PoSHh2O326latSozZswgd+7cVoflkpEjRxIUFMTw4al/nwoKCiIuLi7F/WfPnuWrr75i0KBBmR3iTdy5pIEQFruKuaJtAxbg3Q26ax4E7gVeAP6yOBYhRObahUku3RGT/EOkTQhm+OVbwDygPpDxhAZCiJTlypWL6OhoYmJi8Pf356OPPrppv91utyiyrHP27FmmTp3q9seRRp3wYu8CSzBXtEveoay3UMBsoCjwBHDO2nCEEJnEDjwABAITkY/v9PLFzK9egkmeVQ/TwBNCuFvTpk3Zs2cPy5Yto2nTpnTq1Ilq1aoRHx9P3759CQ8Pp3bt2ixduhSAxMREhg8fTo0aNYiIiGDSpEkAbNiwgebNm1O3bl3atm3LkSNmueuJEydSrVo1IiIi6NatGwB//PEHtWrVolatWtSuXZsLFy4AMHbsWOrVq0dERASvvfba9RhHjRpFpUqVaNKkCTt37kz279i3bx+NGjUiPDycV1555fr2uLg4OnbsSJ06dQgPD+eHH8wS3SNGjGDv3r3UqlWL559/nri4OFq1anVbuYyS4ZfCS63BXI19AOhvcSxZLS9mWFFH4FXMF0AhhGd7BZO99zugjLWheIVWmHnIHTFD1v/CZMn0tzIoIbyW3W7nl19+oV27dgBs3LiRmJgYypYty3vvvYdSir///psdO3bQpk0bdu3axbRp09i/fz/R0dH4+vpy+vRprl69ypAhQ/jhhx8ICQlh7ty5vPzyy3zxxReMHj2affv2ERAQwNmzZwEYN24cU6ZMISoqiri4OAIDA1m8eDG7d+9m7dq1aK3p1KkTy5cvJ0+ePMyZM4fo6Gjsdjt16tShbt26t/0tw4YN48knn6RXr15MmTLl+vbAwEBmz55NiRIlOHnyJA0bNqRTp06MHj2amJgYoqOjrz8X33//PXnz5r2pXEbnP0qjTnihq8DjmAVnJ1kci1XuAQYAk4G7gPssjUYIkRF/YdZb64O8ljNTccwFwCGYDMkbgFlAmJVBCeEWry/YyrZ/z2fqOasVz8trHaunWuby5cvUqlULMD11/fr1488//6R+/frX0/WvXLmSIUOGAFClShVKly7Nrl27WLJkCQMHDsTX1zRXChYsSExMDDExMbRu3RowvXnFihUDICIigh49enDfffdx3333ARAVFcWzzz5Ljx496NKlC2FhYSxevJjFixdTu3ZtwPSw7d69mwsXLnD//fdfn/PXqVOnZP+mVatW8e233wLQs2dPXnzxRcAsRfD666+zZs0abDYbhw8f5tixY7cdr7XmP//5D8uXL7+pXNGiRe/8pKdCGnXCCw0GtgLfA8UsjsVKYzGJAQYDzYEC1oYjhEiHM5gRB8Uwve6SyS5z+QEfAQ0xjbuGmGUQWloZlBBe49qculvlyZMnXefTWlO9enVWr159276ffvqJ5cuXs2DBAkaNGsXff//NiBEj6NChAz///DNRUVEsWrQIrTUvvfQSAwYMuOn48ePHuxxHcr1qs2fP5tSpU2zYsAE/Pz/KlCmT7MLvs2fP5sSJE3csl1bSqBNe5nfgE0wSgfusDcVyeYCpmAbdo8BP1oYjhEgjjUl69C+mR0kyNbpPH24se9AWeBuzBI40ooV3uFOPmpWaNm3K7Nmzueuuu9i1axcHDx6kcuXKtG7dmo8//piWLVteH35ZuXJlTpw4werVq2nUqBFXr15l165dVK1alUOHDtGyZUuaNGnCnDlziIuL49SpU4SHhxMeHs66devYsWMHbdu25dVXX6VHjx4EBQVx+PBh/Pz8aNasGX369OGll17CbrezYMGC2xp+YHr/5syZw6OPPsrs2bOvbz937hyFCxfGz8+PpUuXcuDAAQCCg4Ovz+W7Vq5IkSK3lcsoadQJL3IB84FcCXjd4liyi0aYeSLDgWlAX2vDEUKkwTzM/NjnMJkahXvV5sayB89jlj2YBXhG+nUhPNWgQYN48sknCQ8Px9fXl+nTpxMQEMDjjz/Orl27iIiIwM/PjyeeeILBgwczf/58hg4dyrlz57Db7Tz99NNUqlSJRx99lHPnzqG1ZujQoeTPn59XX32VpUuXYrPZqF69Ou3btycgIIDt27fTqFEjwCxJMGvWLOrUqcPDDz9MzZo1KVKkCPXq1Us23gkTJvDII48wZswYOnfufH17jx49uOeeewgPDycyMpIqVaoAUKhQIaKioqhRowbt27fnxRdfpGPHjreVyyildWqLGWcPkZGRev369VaHcZtly5bRokULq8PI0W6ugw2YtYjmAg9ZFlP2cwVoDawDdpLZmUDldWA9qQPrZX4d7MNclCmOee3eeZHxExcS+GbDIY6ei8emFL42hY9NoZTCpsDmHC50Pv4qDudnv0rSE3VtNFHSvqnkhhjdKHf7scnx9VH4KJVqGZUJPWIHDhygdOnSN20L9LNRMTSYOqUKEBIc4OKZHJg5jC8D5TCjHCpnOD5vJ+9D1ru1DrZv307VqlWtCygHunDhAsHBmTOqIrn6U0pt0FpHJldeeuqEF7ni/JnX0iiyH39gBlAVMzdnFTljzT4hPJXGzIW9CMzElQbdV38d5I2FW4m/6iBfLj8cWmNP1Gg0Dm3moTg0OLQmb6AfvjZ1/ZHA7E/6u9l2876b9icpmPQctzYCtdbYHZpER8oXkDPr0rLWGrV/703brj1ubn8fBjQrT89GpSmY504ZLm3AS5je0W6YYZkzMFkyhRAie5JGnfAiV50/pcFyuzLAF8AjwHjM0CIhRPY0DvgZk+yoxh1LHzh1kTcXbqN8SBBvdK5B3dI5MylScj1FFxPsbP33PNNW7eODJbv4bOU/fN67HvXLFnThjK2AjZiRH90wQzNHY9YKFEKI7EVWLxVeRBp1qesGdAJexCRdEEJkPzuAkZjX6rN3LJ3o0Az4cgNKwYc96ubYBl1K8gT4Ur9sQT58tC5fP9GQoABf+k5by9drD6bae3hDSWAZ8BQwATOU/aAbIxZCiPSRRp3wItKoS53CTPovCjwBnLM2HCHELa4CXTGJOSbgykf0tFX72HH0Ah3Ci1GqkCT0SE2j8oWYN6ARpQvl4aXv/ub5bzbjcKlhF4BZ8/MrYD1mWObv7gxVCCHSTBp1wotca9Tdab5EThaMGYa5DXjV4liEEDf7L2aNzU8xQ6ZTd+x8PKN/2UHNkvl5u0u4m2PzDiUL5ubHwVE82rAU3206zOMz13PsvKvrQ3XHDMcMxix7MIbMmxEohBAZI3PqhBe5ligl9Z46rTVbYs+x5fA54uLtqZZNKVtbSnnakiufUla31DLBJV8+hfMksy1PgA8tKhchNG9ycz/aAQMwV55bAvenLRAhRAadBWYDxwA7kIjJdvkNphe9c4pHJjXh993YHZoPHqqJn49co3WVr4+NNzvXoEhwIO//tovOk1fxZb/6VAx1JWNdVWAT0BMYAfyFWS4mnxsjFkKIO5NGnfAidx5+qbXm1R9imLXG++dEBAf4smBIE8oUzpPM3nGYSf9DgGZAoSyNTQjrXMIMoUskSd7GW263brvT75rChWOAMy4ccwiTbOOUc5svJrtlXsx6dGNwZcHr7zfF8tVfB3mkQSnKhQS59qeL65RSDG1VkcgyBRg0eyMPfryakR2rc1/tEi4cHQR8B7wLvIJZSmc+JkumEOKaU6dO0apVKwCOHj2Kj48PISEhAKxduxZ//6wfWdWiRQvGjRtHZGSyqwJ4NGnUCS9y50bduMU7mbXmIA/UCePZNpUolEpq65SWcNQpDLdJrnxKA3NSWh8y5fIp7Uh+84aDpxn81SZe+HYL8wY0SqZEbuBDoDnQC7MOkxA5wUhMVsnMVePOSSqTaIG5sFIHVxpwtzpy7jJvLNhGLj8fBrUon+bjxQ2Nyxfmq8cb0nvaWp6eG83FK3Z6NCh95wNRmKRT9TDvoY0x76m93BitEJ6lUKFCREdHAzBy5EiCgoIYPnz49f12ux1fX2mKZBZ5JoUXSb1Rt2rPSaYs3UuxfIG82zUCH1vGF7vNru6qEsqQuyoy5tcdfPzHXgY0T+6LX0PgbWA48DnQL0tjFMIafwERwETn7+qW263bXCuzfv0GIiPruXCeAKAs6WnMXfP5in1ciLfz69NNCSsgyVEyqlrxvPzxfAv6TV/Py9/HsPXf87zSoSq5/V35inQXZtRDL6A38Cfmf0vmdguRnD59+hAYGMimTZuIiooib968NzX2atSowcKFCylTpgyzZs1i4sSJXLlyhQYNGjB16lR8fG6s2/nrr7/y+eef88033wBmWZNx48axcOFCnnzySdatW8fly5fp2rUrr7/++m2xBAUFERcXB8D8+fNZuHAh06dP58SJEwwcOJCDB82orvHjxxMVFcUff/zBsGHDANPbv3z58kxbaDwzSKNOeJFrc+pu/zDVWvPC/C0UyuPP/Ccbe3WD7pp+Tcrya8wR3vllBzVK5COqQuFkSg3B9NINxvQeyFV/4c2OYIZe9sX0UmeeuLhzZMXwu6U7j/PZyn3cG1GMCkWyz5cJT5fb35fPekfy3x+28tVfB9l59AJf9qvvYsOuJPAr8B/gfWAd8AMQ5saIhfBcsbGx/Pnnn/j4+DBy5Mhky2zfvp25c+eyatUq/Pz8GDRoELNnz6ZXrxu94XfffTf9+/fn4sWL5MmTh7lz59KtWzcARo0aRcGCBUlMTKRVq1Zs2bKFiIgIl+IbNmwYzzzzDE2aNOHgwYO0bduW7du3M27cOKZMmUJUVBRxcXEEBmavNSulUSe8SMo9dQu3HOHw2cu82zWCEvlzZW1YFvH3tTHjsfrUfvM33ly4jZ+GNk2mMesPzASqYebWfQBUJi1XmXPnPgBsd6Hkrb0dNhe33bo9t/MmRFokYnqj7cDT1oaSTscvxNNv+jpsCl7rWN3qcLxOngBf3nuoJjVL5uO/P2yl9fvLGfNABE0qJndB7FYBwHtAI0yvXTgm8c3dboxYiLR4GojO5HPWAsan+agHH3zwph635Pz+++9s2LCBevXqAXD58mWKFClyUxlfX1/atWvHggUL6Nq1Kz/99BPvvvsuAPPmzeOTTz7Bbrdz5MgRtm3b5nKjbsmSJWzbtu367+fPnycuLo6oqCieffZZevToQZcuXQgLy14XbqRRJ7xI8o26f07EMeTrTVQsEkSnmsWzPiwL5c/tz5gHInhh/hYWbT3KPeHFkikVBqwAOgIPp/kx6tfPYJBp5ovpYRyHrMoiXPcx8Atm/bcKFseSPq//uA2Hho971iUkOMDqcLxWr0ZlKJYvF8/OjabPtLVM7VGHNtWLunh0V0yDriNmofK3MFkyU/8CK0ROkifPjQRuvr6+OByO67/Hx5slRrTW9O7dm3feeSfVc3Xr1o3JkydTsGBBIiMjCQ4OZt++fYwbN45169ZRoEAB+vTpc/28SSXNKp50v8PhYM2aNbf1xI0YMYIOHTrw888/ExUVxaJFi6hSpUra/ng3kkad8CK3N+oS7Ik8MzcagGdaVyLQL+d9sHaqWZxPl//DoNkbmTegEfXLFkymVE1gBxADHMT0arhm69atVK9+p16DW7MLXrs50rFtI6ZHMRi4fYy8ELfbhMks2RJzQcDzRB86yy8xR3i8SVnautzAEOnVuloovz/XnO6frqH/lxvoXr8kb90X7uLQ/cqYHpHemOyYa4HPgBD3BSzEHY23OoBklSlThoULFwKwceNG9u3bB0CrVq3o3LkzzzzzDEWKFOH06dNcuHCB0qVvTmTUvHlzHnvsMT799NPrQy/Pnz9Pnjx5yJcvH8eOHeOXX36hRYsWtz12aGgo27dvp3Llynz//ffX58e1adOGSZMm8fzzzwMQHR1NrVq12Lt3L+Hh4YSHh7Nu3Tp27NghjToh3OP2OXXfbjjM5thzfPBwzRR6qbxfoJ8PHzxci3snrWTUz9v5/snG2JL9YpIbqO+8ue7EiWWY+XhZRWOGYb4BtMckfBEiJQnAIMySAV+TkQQlVolLsDPk643ky+XHQMl2mWWK5A3kuyejeO6bzXy99hDHzycwpUcdFy8O5gbmYb5IvwhEYdYmrOe+gIXwQA888AAzZ86kevXqNGjQgEqVKgFQrVo13nrrLdq0aYPD4cDPz48pU6bc1qjz8fHh3nvvZfr06cyYMQOAmjVrUrt2bapUqULJkiWJiopK9rFHjx7NvffeS0hICJGRkdeTpkycOJGnnnqKiIgI7HY7zZo146OPPmL8+PEsXboUm81G9erVad++vRufmbSTRp3wItd66swH7uUriYz8cSvViuWlc01X1h7yXjVK5OOt+2rwyv9i+H7TYR6om73GgaeNwmSXWwT0wWSeK2BlQCJbewVYA8wCQi2OJX1G/bSNQ6cv8597qlA4SIZdZqV8uf34tFddPliym4m/76bluGV81juS6sVdWWxcAc9gGnLdMBe/JiKZhkVOlFJClFy5crF48eJk9z388MM8/PCdp4VMnjyZyZMn37Rt+vTpyZZdtmzZ9ftdu3ala9eut5UpXLgwc+fOvW37pEmT7hiLlWRCivAiVzFDLxUOh6bPtLVcSXTw0j1VUuiZyll6NChF6UK5ef+3XZy7dPXOB2RrQZgEL7sxX9qFSM4yTE/JY0APSyNJrx1Hz/P12kP0aVyG/s2kl84KSimebV2Jjx6ty6mLV+j28Rq2/nsuDWdogsm6Wh94HHiCGyNLhBAic0ijTniRa406+HzlPv7ad5qeDUvTJNlU/jmPUop37g/n8NnL3DNxBQ5HSiuae4pWmGF1UzHDnIRI6hKmJ7ccMMbaUDLgle9jyOPvw+C7PDO5izdpV6MoPw9tgo+PosPElXy4bC9au/o+WhT4DbMu6GeYYeOH3BWqECIHkkad8CJ7AT8Onb7E+7/tonap/LzRufpN2Y1yusYVCjOgWTkOn73M/A2xVoeTCcYBdTGpmo9ZG4rIZh4DDmCyXnrmhZ33f9vF+gNnGNqqogy7zCYqFAnml2FNqRmWjzG/7uDdRTuxJzrufCBgZryMxSx1sBeIAJIfdiaEEGllWaNOKdVOKbVTKbVHKTXCqjiEt1gH/A+HozNPzFzP5auJvNGphjTokjG8bWVqhuVjwu+7uXzF9SyX2VMA8CFwFpNpztN7H0Xm+AGYC7xG1ibxyTyr955i0v/tpl6ZAvRsVPrOB4gsUyxfLuY/2Zj2NYry4bK93DNxBccv3J4uPWVdMfM8w4C2mCy+nv5eLLIr13uTRXaSnnqzpFGnlPIBpmBS11UDuiulqlkRi/AGZ4FH0DqU1xcMYMfRC/SNKkN4mCsT2XMePx8bQ1tV5PDZyzwzN5pEjx+GWQ8YhUmc8qHFsQjrHQEexawV5pnXC+MS7Ly+YCsFcvsz47H65PaXnGbZjZ+Pjak96vCfe6qw53gcvT5fm8aGXVVgFWau50jgXuCkGyIVOVlgYCCnTp2Shp2H0Vpz6tSp29bJuxOrPinqA3u01v8AKKXmAJ2BbakeJUSyXkXrvYxd9CEzVp/hnvCivNJBrhGkplXVUB6OLMnc9Yf4ePleBrXw9Pk6g4FfMfNVOgDSs5Ez2THz6K4A3wNp+0DMavZEB99siOX37cc4ej6eK3YHV+wO9p+6BMDE7rWlQZeNKaXo36w8JQvkZticaJq9u5RPe0XStKKr69HlBb4EGgFDgUhgvvOnEBkXFhZGbGwsJ06csDqUHCM+Pj7NjbHkBAYGEhaWtkzlVn1alODmGcKxQAOLYhEeLCTkD2Ayx873Y+qyMEa0r8LA5pIhzhWjHwjnRFwC7y3exQN1wgjNm72/AKfOD/gUc/W7EybTnF+qRwhvNBUzR2kykPz7wM6jF/h2YyyJDs21i9eaG/fBXCXV1+/fvF87t10/UpvfjxxN4OeTm28rd/1M+to2fX3/gVOXiD50ltKFclM+JIgAXxt+PjYalS9Mm+qhtKxcJONPiXC79uHFKFEgF49NX0e/6et5u0s4HWsWI8DXlfXsFPAUZsRBJ8x6dpMxWTJl+oDIGD8/P8qWLWt1GDnKsmXLqF27tiWPrazoklVKdQXaaa0fd/7eE2igtR6cpEx/oD9AaGho3Tlz5mR5nHcSFxdHUFCQ1WHkWP7+J6hd+0mu2gvQadIHnI5XjGueG38f+SB01dGLDl5acZkqBW08XTeQgHQ8d9npdVC48HJq1HiNffv6cuBAL6vDyTLuqQMHfn5nsdmucGNqqk72Z/r2Z+TY2/cHBe2hUqX3OXOmDlu2vEtyX4jPxDv4z8rLJCSCv3PywbXjr5VOOg1XJT2LunZfXS930yNoBzab7aZjr99P4TFsQMPivnQu7yfzfzOB1e9FZxMcvPNXPMcuaSoXsNEvPIAiuV2f5eLre54aNf5L/vybOXKkPbt3D8Xh8JyLbVY//0LqIDtwdx20bNlyg9Y62e58qxp1jYCRWuu2zt9fAtBav5Nc+cjISL1+/fosjNA1y5Yto0WLFlaHkYN1JDFxCR8t/4Kxi/LyfNvKPNXS04cRZr0pS/cwdtFO+jQuw8hO1dN8fPZ6HWjgYUx2udWYtOHeL3PrIAHTc/AlnreWVgNMT13e2/bYEx3cN3UVMYfPM+r+GvRokLlDdLPX6yBnyg51kGBPZMaf+3lv8S6uJjp4rk1aP5ccwEuYLJl1ga8Bz/hcyw7Pf04ndWA9d9eBUirFRp1Vwy/XARWVUmWBw0A34BGLYhEeaTKwkHXbnmDsory0qBzCE03LWR2URxrUojzLd51g7rpD9GxUmvIhnnyVTwGfAysx2TDXAAUsjcizaKAL8DNm+FdNII9zn3Ljz8w4Ry7MIs/Jp/7/6e8jxBw+z4Rutehcq0SyZYTIqABfH/o3K0/HmsV5YuZ6xi7ayddrD/LM3ZXoUqeECz2yNsy6ig0wi5Q3BKYBHd0cuRDC01nSqNNa25VSgzHp6nyAL7TWW62IRXii/cCLaN2O0Ys7ExTgy4c96uLvK8supodSivcfrkXLccsYv2Q3E7vV8vChYMHAbOBu4BVMol3hmimYBt1YTNIZ73AyLoFhc6IpWTAX7WsUszockQMUy5eL/w2KYvZfB/li1T6e+2Yz24+c5+UOVV18f+2CMzk4cB+m9+5NZJ6dECIlln0L1lr/rLWupLUur7UeZVUcwtPYMYlSbSzc8jLRJ2BAs3Lk8ndlQrpISYn8uXi8SVkWbP6X0b/usDqcTNASGIRJnDHX4lg8xS7gWcy6Wc9YHEvmSXRo+k1fB8CbnWvIxR+RZXx9bPRuXIbfnmnOPeFF+WzlPvp/uYFj511d+qAKsAKzRMcozIWqs26KVgjh6eTTTXiYUcAWjpz7kBfmx+GjoE9UGauD8gpP312JyqHBfLZiH3tPxFkdTiZ4D6iDaaD8a3Es2d1l4AHMEMYZmAEU3mHWmgNsjj3HkLsq0LySq6nmhcg8/r42JnWvw8Dm5flt2zEe+ng1/5697OLRQcB0zAWq5UB1YKObIhVCeDJp1AkPsg54HXiY4d+Ux9dH8U7TXAQHSur6zODva+Oz3pHk9vdh2JxNbIk9y8UE+x1vCXbNpSt2Ll9J5PKVROKv3nxLsN+4XVuH62qiudmdt0SHJtGhcThvWutMWCzVH/gYOI+ZtpuY4efIe70DxACzgFCLY8k85y5d5cNlewkvkY/n2lT28GHFwpP52BQj2ldh9uMNOH4+gU6TV/Hz30dcPFoBT2LmCivMUr8fcyMTrBBCWJcoRYg0Oov5Yl6E37a9wao9u3mudSWK+By2OC7vUrJgbt6+P5xn50XTafIq1w9cssh9QSVxa2r4gnkC6BtVhkEtyqfwhT0SM0+sDyaT3GvA/e4P1KP8jpmr8wjelIzB4dB0+3QNR8/HM75bLavDEQKAqAqFmf1EA56ctYGnvtrImC4RPFSvpItHNwA2YebZDcQkgpqImUcshMjppFEnPMQrwD7+PfszT8zcTYn8uRjYojyrVkijLrN1rFmcZhVDWLL9GKcuJty0T+ub1/HSGvb+s5dy5crftA1uLLqcXIfb9QWYkyzUfGvZW4+/sd7zjUKLth5j7KKdFMzjT/f6pVL4i3phMiJ2B15EGnVJncT0AJQDPrM4lsw1Y/V+th85T9OKhWlYrpDV4QhxXZ1SBVjybHN6fbGWF77dwso9J3mnSzh5Alz5ShaCyTH3GmY6wmbMsgeV3RixEMITSKNOeID5wBS0HsSTs4NR6ixjHojAz0dGD7tLvtx+PFA3zKWyy/QhWjQvf+eCbjCkVUUe/ng1Y37dQedaxcntn9xbmsL08i4GfsvaALO95zDZZH/DzKfzDofPXub9xbtoUqEwM/rWtzocIW4THOjH9D71efOnbczfEMvB05f4+omGLib98gHeAhoBPbix7MF97gtYCJHtSaNOZHOHgKeBmvz894tsPvQ3b91XgyYVC1scl8gO/HxsDG9bmUc+/Ys+09Yxo2/9VL4U5cIkBBHGLGAmpveyebIlEh2aCb/v5pe/j3Al0YGfj42riQ5sSpnV5RQpzlNLbmtyRVUKKdpdnf526+Nrrdlx9AK5/X14oV1lbDaZRyeyp3y5/Rj3YE0iwvLx3x+20nb8ciZ2r02tkvldPEMHIBqTEfp+YASmsec9iY6EEK6TRp3I5gYBZ4k98zVPffU3lUKDeKCOaz1IImdoXL4wQ+6qwKT/28OM1fsZmGKvoTTqbjiGuVjSGJN8KHlfrt7PxN93U79sQYIDfAnws+HnY0NrcGid7NBauDF09qZtyQ7DzeDxKcRdq2R+Hm1Ymhol8qVQQojso1ejMhTNG8hz8zbT/ZM1TOtbLw1DhssAf2Hm2I3GJBT7GjNMUwiRk0ijTmRjk4CFXLG/wxMzzZaRnarLmnTiNs+1qcyaf04xfskuutQuQZG8gcmUCsQ06jQ5ewFfDTwEXAQ+xMw3vN3Gg2cYuWAbDcoWZE7/hpI5Ugg3alO9KD8Py0u3T9bQ7ZM1DGhWjhfbVXGxpzkQs+xBI8zFmjqYaQsN3BavECL7kUlJIpvaB7wEtGfeuq5sP3KeqT3q0Li8DLsUyXunSzjxVx1MXbY3hRK5MA2aq1kYVXY0EbPe1UQgItkSl67YeXLWBgBG3V9DGnRCZIGSBXPz4+AoGpQtyMfL/2H4/M1cTXSk4QwDgKWY5VyaAZORZQ+EyDmkUSeyITtmwrcPFxLGM+bXvVQvnpf2NYpaHJfIzioUCaZ7/VJM/3M/01btS6bEtUQgOXkI5i7geaA98FiKpd5fvIvjFxKY0K0WFYpIunQhskqhoAC+fqIhfRqX4buNh2n9/h/sP3kxDWdoCPwJ3A0MwWT9TcvxQghPJY06kQ29CWzB4fic7p8c40KCnTc6V5feAnFHI9pVoXi+QMYv2c2/Z29tvOX0Rt1loAvmefiClJIpHDh1ka/XHqR9jaJ0rlUiC+MTQgDYbIrXOlZjbNcIYs9cputHq4k5fC4NZwgFfgDeAOZi1ujc5Y5QhRDZiDTqRDazDtOo687kpRHEHD5Pn8ZlqFOqgNWBCQ+QL7cfn/aO5NIVOx/eNgzz2jy7+KwOK5t4G9gKfAUk3+t9+UoiHSauJN7uYES7qlkZnBAiCaUUD0aWZP6TjbE7HNw7aSVTlu65vsbnnfkCr2KWcjkK1Aa+c1e4QohsQBp1Ihs5A3QFQjl5YQLT/zxAs0ohvNaxmvTSCZdVL56PjjWLM/uvA3y/KTbJnpzcU/c7JtV5D0wa9OT994cY4hLs9GlchlKFcmdVcEKIFNQqmZ/FTzejTqn8jF20k9G/7sCepnl2rYEYoBLwAGbZA5lnJ4Q3kkadyCY05sMmlkTHtzzx5S7OXrrC8DaVpEEn0uz1TtXJE+DLC/O3cD7+WmKUnNqoO4FJoFAO+CzFUqv3nuKbDbE8WDeMV++tllXBCSHuoEjeQL4Z2JiONYvz8R//cN/UVZy4kJCGM4Rhlj14GBgD/OSWOIUQ1pJGncgm5gGfAEOZuboYmw6e5a4qoUSE5bc4LuGJggP9+LBHXa4mat7+abtz67U1yzZZFZZFngcOYlKeJ7fUA5y7dJX+M9eTL5cfz7etnIWxCSFc4WNTTOxWixHtq7DjyAUe/ewvNh86m4Yz+APTAD/gPSQLsBDeR9apS6f9J7dx2OcrftqyAKUUPkqhlMJmA4WNFDuXUlxsN6UD0rY9pfPExYey5/hdaHwomjeQLnXCyBOQXar/AGZtndocPPUGb/+8giYVCvNJz7oWxyU8WVSFQnQIL8Y3G2J5qF5J6pRqAkQCg4GWmJ4rbzcTmAG8ADRNtsTlK4n0nraWCwl2xjwQnsIaf0IIqymlGNi8PBVCgnhmbjT3TV3F2K416Vo3zMUz5MKMiHkT8x44F5BkSEJ4i+zyrd7jJNh306Ppp1aHkSbr91ej9xdvcfGKPz/9fYSvHm/o4sKm7jYIiAO+YPj8GAJ8fRjTNSKbxCY8lVKK1ztX5/92HKfL1D/531NR1Cr5P6Ay0A9YhLl67a3+BZ4FojBf4pL34+bDRB86y2sdq/FwvVJZFZwQIp3urhbKr880o9/0dTw/fzP7TsYxtFVFAnyTz2h7szeACsBTmKyYX2MaeEIITyeNunSqXLQDK1b8RNOmt179Tm0Cckr7smL7j0SW6cfWN35n+qrnGLlgG0PnbGJCt9r4WNp4eh/4GRjHx38Es3bfYZ5qWZ4S+XPd6UAh7qhwUABv3VeD577ZzHuLdzLzsfooNQmzRtt4TA+WN9JAN8z8wamk1Hi9mGBnzK87qRwaTJ/GZbIuPCFEhpTIn4t5Axsx5KtNTFm6ly2x5/ikZyS5/F1p2PUCIjBr2LUGRmHeC+VCqriTLcCXwG7M54y3J92ZipmT6hmkUZduviQm5gY8ZWHexzDpzN+nd+O2rN1fnIVbjnB31VDuq23V8IvdmJTL97Lj6GO8u2g14SXyMahFBYviEd7ogbphHL+QwJhfd/DXvtM0LNcX+B7zv9cEaGxtgG4xHliBmacakWyJA6cuMuDLDZy+eIXPekdKQiIhPEzeQD+m963H1GV7GbtoJw9+/Cdvdq5BbZeWAKoFrAL6Y4Zk/gnMwnO+04ispTGfKy86f6+MWetU4d0XAzxr7qk06nKUt4ElKNWPyd03U3/facb8uoN2NYoS6OfK1b3MZAfuBwLQeiLvLd6Lj1JM61svG831E96iZ6PSfLriH56ctYHvBkVRtvA0zLpNT2K+zOSxNsBMtQPzwdsBczHndlpr3ly4nYOnLzGpe21ZB1IID6WU4qmWFQgJDuCF+Vvo/ukaPny0Li0rF3Hh6IKYJGXvY3rqagILgOpujFh4nmPA48BCzOfKDKCQpRGJ5Mm35xwlALPwcCQ220DGdv2EvtPXM3fdIXpn+dCr/2J6Dr9j5mrFb9uOMbhlBQoHBWRxHCInCArwZUK3WvSZto5Ok1cy+/EGRIRNxlxY6AZ8Q0qZIT3LKcyHbm7gc8yV1JtprXnx2y0s2X6MQS3K07Fm8SyOUQiR2R6KLEnTioXp/cVa+k1fx6AWFXi2dSUX5qbbgOFAPcw6dnWBL4BH3BxxTnIeM2zRDiRyY8hiaj/TV6Zw4RjMmr+Z8RhngN8w88/B9NQNxbt75jybNOpynOqYidIv0LxSExqWa8JrP24lf24/OtfKqmGYa4F3gJ7sOX43o39Zhb+vjcebls2ixxc5UdOKIcwf2Ij7p/7JU19t5I/hHbHZJgBDgFBMFjg/kmsIGemZL5vavsw7X716FzG9jYeAeMxi46HJHj112V7mrY+lRP5cPNu6UiqPI4TwJMXy5WJO/0YM+Xojk5fu4ej5eMY8EOHivPnmwN+YC109gNXAu9xY31Ok3QVMZu+vyar1UWvUyOwzhgFPYBLaVcnsk4tMJo26HOk5YCU220g+eGg5jUbDuMU7aV0tlNz+7v6XOIO5GlgMmMyYX3fi66NYPLQZ+XN7cyZCkR3ULlWAUffX4OXvY/h4+T882WIwUBWT2vs0Zvx8ag2q1L4cpWdf5pzv0qUT5MkTAjTCZPZsmOxRx87HM/H33TQoW5CpPerg6yNLlQrhTQrm8WdWvwa8uXA7X6zax/Yj55n8SB3KFnZliHkxYCUma+4kzJqeXwJywTXttgJdMbkD+gGdMBfebNw8Dy21n2kvs379BiIjI9NwntT2BWH+J6RnzlNIoy5HsgETgXoUy9+H6X0X0WfaJr5cfYABzcu78XE1Zq7Pv8CfrNpzhd+2HWNg8/KULJjbjY8rxA2P1C/Fws1HmLp0Dy2rhFClaCugldVhZcjWrcto0aJFqmW01gz5ahMJdgevdKhGIRnqLIRXUkrx6r1VKRuSh1f/F8ODH/3JnP6NqFAkyIWjfTHfDxpjemgaY+ZQtXFjxN7ma0wCmiBMdu+se+7i4s5hkuCInEgu0+ZYpTGZ8WJoUfkDIksXYPL/7WH7kfNufMx5wKfAMI6dr0mPz/6iYB5/nr67ohsfU4ibXVu/DgXtJ6zgxIUEq0PKEh/+sZe1+0/zVMvyhIflszocIYQbKaXo2bA0C4c0IcHu4J6JK5i2al8aztANWAPkB+7BLHvg7enrM8qOmXP2CCbpzGqkMSyykjTqcrTOmIxG4xjfLZ6LV+z0+OwvriY63PBY+zFjy2sBYxn+zWYA3uxcw4LMmyKnqxQazLgHa6I1fPzHXqvDcbu9J+IYt2gnDcoW5LnWla0ORwiRRWqUyMfCIU2oEBLE6wu28cFvu7C7/BlfHTMH/n7gFcwQQnde+PVkRzBL5EzCzNP+DShjZUAiB5JGXY6mgPeA4oQV6ME7XUpy+uIVPl3xTyY/jgaeAuKAGazbf44Vu08yvE0lOkQUy+THEsI1basX5d6IYkz/cz+HTl+yOhy3mvx/e9DAhG61XciGJ4TwJqUL5eG7QY3pEFGMCb/vpv2EFcSecfU9LxgzymYc8CvmwmyMmyL1VH8A4UA0MBszfFUSzIisJ3Pqcry8wI9AfR6K/ICFWwbwyfJ/eCiyZCYuL/AeZlz5OOISqjHgy6UUzRtIjwalM+n8QqTPi+2qsHTHcbp9soYFQ5pQMI/3JetZvPUo3286zGNRZSmazxuWbRBCpFWgnw+Tu9fm7qpFeGbuZpq9u5RvBjaibumCLhytMAnW6mKGFkZiplL0dGPEnsCB+X7zIqZX7g9y0hp/8VcTWbH7JKfiEqhVKj+Bvq6NulJJriuqJElYrm1XCmxKoZTZb3Pmc1GoG/uc5dT1cua+TUH8VQdnLl1JPYY7xmhKlMifC39fz+n/kkadwLxRv4BSo3mrc1Najy/GfVNW8ePgzPiSuwt4DehIouNpnp6zkdMXr/Bm5+oU8MIv0MKzlCyYmxHtq/DqD1sZu2gn73QJtzqkTHX47GVe/HYLfj6K/s3KWR2OEMJCSinurx1Gvlx+PDZ9PQ98uJpHG5bilQ7VXJwG0QIzHPNRoBewCrN2WU68WHQakwzlW8xUli8xvZo5w8aDZxg8eyP/nou3OhS3WvJscxcTDGUP0qgTTm8Biyhd+EXGdv2WYXMuMOPP/TyToXWs7JjlCwKBCfy+/QRLth9nWKuK9GxUJjOCFiLDejYqw5p/TvP12oN0rVvCxSvXnmHsrzu4fDWRX4Y1lV46IQQAd1UJZfVLd/H6j9uYteYgC7ccYW7/RlQu6kqjJAyzGPXLmF6qDcA35Kz5Y5swPZZ7gDHA8+SktP/fb4rl5e9jyBvox4RutShbOA/7Tl7Eoe+cSCdpkVuLO7Q2qXg0aDQObcpcu49zv9bOstq5hPr1++anTSmK5E3/SLOkcWXkPFbIUKNOKfUgMBKz0FN9rfX6JPtewizOkQgM1Vovcm5vB0zArPD7mdZ6dEZiEJnFB/gKqE/nWmNYsHkkU5ftoWej0hkYhvkKZuz9t9gTS/P2z38QEhzA4LsqZFrUQmSGt7uEs2L3CXp/sY7hbSpRunCe2z6idQq/6CS/pPSBlfRYnWSHTqYsKZ3vpnPc/PjbjtiJ2/LvTdtX7j7J/6L/pVej0lQoknOuIAsh7qxYvlx81LMuH/2xl9G/7KDt+OU8FlWWlztUdWGx8gDMHLtGmCGYdTFp/HPC6JuZmBwBQcBioKW14WSRBHsiGw6c4ZPl/7Bs5wlK5M/FrMcbXF//MCIsv7UBCiDjPXUxQBfg46QblVLVMPlwqwPFgSVKqWtdPlOA1kAssE4p9aPWelsG4xCZogqmjf4c73SpT71Rkbwwfwuf9KybjkWKV2CuYPUB7uel77aw/9QlJnavjZ8seCyymXy5/JjWtz5PzFzPyAUe+na0edNtm1pWDuHVe6tZEIwQwhMMaFaOikWCGPWTWaz8n5NxvP9QLRenXjyASd3fAWhH6dJ9gWZ4Zw6+q8Aw4EMgCpM8pniazuBwaHYeu8DmQ2dZu/80sacvk5j0Il8qF/y08xfN7T1cSV24cJngv1emKa47ib+aSOyZy1y+moi/j42n767I403LERQgg/2ymwzViNZ6O9yYUJhEZ2CO1joB2KeU2gPUd+7bo7X+x3ncHGdZD/0W5Y2eAVYSEjyG1zvN5LUfj/P6gm28eV+NNJzjNNADKA9MZOGWI3yzIZZG5QrRvkZRt0QtREbVLV2A9S/fzfaj57lid+DQN0/ohpsH2CR937t5e9Lyt08Cv9X1yeEplHXlfOvWraN+vXo3bQ8O9CM0rwy5FEKkTClFq6qhNKsUwqiftjP9z/20GLuUCd1q07JKERfOUAGT9bE3Zct+ARwHpgOF3Bd0ljsIPIiZTzgU00vp5/LRDodmxZ6TzF5zgMXbjgEQ6GcjokR+Av1sd/ycuPZZcz05CMl+7wbAdiWOQsGZO2TQ38dG04ohNC5fiIblC0ljLhtzV82UwKxaeU2scxvAoVu2N3BTDCJdFGZ0bFN6NRrAFfvjrNqbh39O7KJcSF7n/uvXkJLcrv1+FfOGdwRYTVxCLt5fvIFKoUHMeKy+9NKJbM1mU1Qv7nkLc/8bZKNiqAyxFEKkj5+PjZGdqtOqahFe+3Erfaevo2XlECZ2r01w4J0aMLmAeezZM5gKFT4FGmJS+9dP/bBs7zwwBzNnTmOmqHRP81leX7CVGasPANC7UWn6RpWlZMHcLgxzTbtly5bRokW9TD+v8AxK32Fio1JqCZBc98rLWusfnGWWAcOvzalTSk0G1mitZzl//xz4xXlcO631487tPYEGWuvByTxuf0xqIUJDQ+vOmTMn7X+dm8XFxREU5DlZcdIiMPBfIiJGkDv3oTsXvsVVey6itw5j16HWTItJYM9ZB8PqBFC7SOZfQ/DmOvAUUgfWkzqwntSB9aQOMse5BM2U6Hh2nXFQKtjG03UDKBh45wuycXFxlCixl6pV38Hf/zSnT9fnypWCaO3MSQ/cMjsZpW69MHzrvmvbU9t387Hp3Zd0v5/fOfLm3YbNdpVz52qwfftLxMenbbhlQqLm878TWHs0kZYlfWlf1o8iud17YVteA9Zzdx20bNlyg9Y6Mrl9d2zUuSKZRt1LAFrrd5y/L8JM1gIYqbVum1y5lERGRur169enVsQS5opIC6vDcCMN7Gbtvt1M+r+dXL5ix2ZzZhnSyllCXb8PZvveE2Gcj7/xD92jQSlG3e+eVPHeXwfZn9SB9aQOrCd1YD2pg8y1cMu/DJsTDcDoLuE8GFky1fI3nv/jwBuYa/kXMeu5ObjRsEvuZ2r7MruMK2WDgcbA/c6faWuM/Xv2Mr2+WMue43E8FBnG2/eHpyM3QdrJa8B67q4DpVSKjTp3Db/8EfhKKfU+ZiZpRcxgZAVUVEqVBQ5jkqk84qYYRIYpoBL1y1bik57tWLXnJBev2LmaqG9PXZvMtQEfm6J2qfyUC5GrRkIIIYQnuTeiOOEl8vHsvM08P38L6/ef4cX2VVxIolIEmJwVIWZLW/89R7/p6zlz6QrvP1ST+2uXSHEOnBCZKaNLGtwPTAJCgJ+UUtFa67Za661KqXmYBCh24CmtdaLzmMGYRU58gC+01lsz9BeILJHL34e7q4VaHYYQQgghskjpQnmY1a8BA2dtYO76Q6zcc5J5AxtRIn8uq0PLln6IPswL87eggc97R9K0YojVIYkcJEN9wVrr77XWYVrrAK116LVhlc59o7TW5bXWlbXWvyTZ/rPWupJz36iMPL4QQgghhHCfXP4+TO9bj2fursSx8/G0HLeM6av2kRnTd7xFokMz5tcdPD03mqrF8rL46WbSoBNZTlIRCiGEEEKIFCmlGHZ3ReYNbERIUAAjF2zjpe/+xp7osDo0yyXYE+k3Yx0fLttLg7IFmdmvPmWci3ILkZWkUSeEEEIIIe6oTqkCrHihJV3qlGDOukM0H7uMTQfPWB2Wpd5auJ1lO08won0Vvn6iIXnvuASEEO4hjTohhBBCCOESm00xrmtNRncJ59TFBLp9soYfog9bHZZlVu05ScNyBRnYvLwkRBGWkkadEEIIIYRwmc2m6Fa/FL8905yQ4ACGzYlmSnQ8CfZEq0PLMokOzZsLt/HPyYs0KFvI6nCEkEadEEIIIYRIu5IFc7P4mWZ0q1eSdUcTeeTTv9gSe9bqsNzuit3B4K828vnKfXSsWZweDUpZHZIQ0qgTQgghhBDpk9vfl9EPRPBwZX82HDjD/VP/ZOmO41aH5TZHzl2m0+SV/BJzlKF3VWBS99oUyRtodVhCSKNOCCGEEEJkTPuyfvw4OIoCuf3o/+V6npq9kePn460OK1MdPRdPj8/+4sCpS4zuEs4zrStZHZIQ10mjTgghhBBCZFhEWH5+GtqUGiXy8dPfR+j60WpOXEiwOqwMS7An8tmKf+g0eSWHz1zms96RdKtfShKjiGzF1+oAhBBCCCGEdwjNG8i3AxvzS8xRhs3ZROfJK+kaWZKQIH8SHZrYM5dJ1BqbUtgU2JQC50+F86fZhAa0Bo1Z6NzcT7LN+bvDoW/arjVoffM2hzb3ub4fHLeU4bZtcOx8PJsPnSXB7iCydAGevrsSURUKW/DMCpE6adQJIYQQQohMY7MpOkQUo0AeP179XwyT/m+3s0EF/r42AnxspjGmtfPGTQ0qhzYNL5WksXeNafCZVt+tjUDlLKuU836S7TYFkHTbjXNf63G7vi3Jcfly+dGlThgtKofQumooNpv0zonsSRp1QgghhBAi0zUuX5jfn2vBFbuDc5evYlOQN5cffj4y+0eIzCaNOiGEEEII4Tb+vjZCggOsDkMIryaXSoQQQgghhBDCg0mjTgghhBBCCCE8mNLXZq5mY0qpE8ABq+NIRmHgpNVB5HBSB9aTOrCe1IH1pA6sJ3VgLXn+rSd1YD1310FprXVIcjs8olGXXSml1mutI62OIyeTOrCe1IH1pA6sJ3VgPakDa8nzbz2pA+tZWQcy/FIIIYQQQgghPJg06oQQQgghhBDCg0mjLmM+sToAIXWQDUgdWE/qwHpSB9aTOrCWPP/WkzqwnmV1IHPqhBBCCCGEEMKDSU+dEEIIIYQQQngwadSlk1KqnVJqp1Jqj1JqhNXxeCulVEml1FKl1Dal1Fal1DDn9pFKqcNKqWjn7Z4kx7zkrJedSqm21kXvHZRS+5VSfzuf5/XObQWVUr8ppXY7fxZwbldKqYnO53+LUqqOtdF7PqVU5ST/59FKqfNKqaflNeBeSqkvlFLHlVIxSbal+f9eKdXbWX63Uqq3FX+Lp0qhDsYqpXY4n+fvlVL5ndvLKKUuJ3k9fJTkmLrO97A9znpSFvw5HimFOkjze498Z0q/FOpgbpLnf79SKtq5XV4HmSyV76HZ7/NAay23NN4AH2AvUA7wBzYD1ayOyxtvQDGgjvN+MLALqAaMBIYnU76asz4CgLLOevKx+u/w5BuwHyh8y7Z3gRHO+yOAMc779wC/AApoCPxldfzedHO+9xwFSstrwO3PdTOgDhCTZFua/u+BgsA/zp8FnPcLWP23ecothTpoA/g6749JUgdlkpa75TxrnfWinPXU3uq/zVNuKdRBmt575DtT5tfBLfvfA/7rvC+vg8x//lP6HprtPg+kpy596gN7tNb/aK2vAHOAzhbH5JW01ke01hud9y8A24ESqRzSGZijtU7QWu8D9mDqS2SuzsAM5/0ZwH1Jts/Uxhogv1KqmAXxeatWwF6t9YFUyshrIBNorZcDp2/ZnNb/+7bAb1rr01rrM8BvQDu3B+8lkqsDrfVirbXd+esaICy1czjrIa/Weo0236xmcqPexB2k8DpISUrvPfKdKQNSqwNnb9tDwNepnUNeB+mXyvfQbPd5II269CkBHEryeyypNzREJlBKlQFqA385Nw12dm1/ca3bG6kbd9DAYqXUBqVUf+e2UK31Eef9o0Co8748/+7VjZs/vOU1kLXS+n8vdeFej2GuiF9TVim1SSn1h1KqqXNbCczzfo3UQeZIy3uPvA7cpylwTGu9O8k2eR24yS3fQ7Pd54E06oRHUEoFAd8CT2utzwMfAuWBWsARzPAD4R5NtNZ1gPbAU0qpZkl3Oq/6SRpdN1NK+QOdgG+cm+Q1YCH5v7eWUuplwA7Mdm46ApTSWtcGngW+UkrltSo+LyfvPdlHd26+0CevAzdJ5nvoddnl80AadelzGCiZ5Pcw5zbhBkopP8wLabbW+jsArfUxrXWi1toBfMqN4WVSN5lMa33Y+fM48D3muT52bVil8+dxZ3F5/t2nPbBRa30M5DVgkbT+30tduIFSqg9wL9DD+WUK55C/U877GzBzuCphnu+kQzSlDjIoHe898jpwA6WUL9AFmHttm7wO3CO576Fkw88DadSlzzqgolKqrPPqeTfgR4tj8krO8eKfA9u11u8n2Z50ntb9wLWsUD8C3ZRSAUqpskBFzORgkQ5KqTxKqeBr9zFJCmIwz/O1zE29gR+c938EejmzPzUEziUZniAy5qYrsvIasERa/+8XAW2UUgWcQ9TaOLeJdFJKtQNeADpprS8l2R6ilPJx3i+H+b//x1kP55VSDZ2fJ724UW8iHdLx3iPfmdzjbmCH1vr6sEp5HWS+lL6Hkg0/D3wz82Q5hdbarpQajKkMH+ALrfVWi8PyVlFAT+Bv5UzZC/wH6K6UqoXp7t4PDADQWm9VSs0DtmGG5jyltU7M4pi9SSjwvXlPwxf4Smv9q1JqHTBPKdUPOICZqA3wMybz0x7gEtA360P2Ps4GdWuc/+dO78prwH2UUl8DLYDCSqlY4DVgNGn4v9dan1ZKvYn5Ugvwhtba1aQTOV4KdfASJrvib873pTVa64GYDIFvKKWuAg5gYJLnehAwHciFmYOXdB6eSEUKddAire898p0p/ZKrA63159w+xxrkdeAOKX0PzXafB8o5ckEIIYQQQgghhAeS4ZdCCCGEEEII4cGkUSeEEEIIIYQQHkwadUIIIYQQQgjhwaRRJ4QQQgghhBAeTBp1QgghhBBCCOHBpFEnhBBCCCGEEB5MGnVCCCGEEEII4cGkUSeEEEIIIYQQHuz/AQVB0b0DsRg6AAAAAElFTkSuQmCC\n",
"text/plain": [
"<Figure size 1080x720 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# ----------- PROCESS THE AXIS LOSS ----------------\n",
"fig = plt.figure(figsize=(15, 10))\n",
"ax1 = fig.add_subplot(3, 1, 1)\n",
"\n",
"skew = 0 # to what value skew the elements. \n",
"\n",
"# x_copy = np.copy(x)\n",
"x_copy = np.copy(values[:1966])\n",
"\n",
"# Process points in the cycle to easily refactor it to C++ code afterwards. \n",
"for i in range(1, len(x_copy)):\n",
" x_copy[i] += skew\n",
" diff = (x_copy[i-1] - x_copy[i])\n",
" if abs(diff) > 10: \n",
" print(\"Found the loss!, it's index is:\", i, f\"It's value is {x_copy[i]}\", f\"Diff is {diff}\", f\"Last el is: {x_copy[i-1]}\")\n",
" \n",
" # --- Метод восстановления потерянных кадров по скорости, но он не всегда хорошо отрабатывает. ---\n",
"# lost_frames = table[\"frame\"][i-1] - table[\"frame\"][i-2]\n",
"# if lost_frames > 1:\n",
"# print(f\"Found lost frames! The difference is {lost_frames} \\n\")\n",
"# speed = x_copy[i-2] - x_copy[i-3]\n",
"# lost_degr = speed * lost_frames\n",
"# diff += lost_degr\n",
" # ----------------------------- Метод восстановления потерянных кадров. --------------------------\n",
" \n",
" x_copy[i] += diff\n",
" skew += diff\n",
" accum.append(x[i])\n",
"\n",
"ax1.set_aspect('equal')\n",
"ax1.grid()\n",
"ax1.plot(x_copy - 55, label=\"Processed data\")\n",
"# ax1.plot(x, label=\"Non processed data\", color='green', lw=4)\n",
"ax1.plot(true_values, label=\"True values\", color='yellow')\n",
"# ax1.plot(values, label=\"Processed points of mirror\", color=\"black\")\n",
"ax1.legend()\n",
"\n",
"\n",
"# Точки \"потерь\": 261, 612, 947, 1349 (исследовать точку), 1442, 1685\n",
"# Точки оцененны довольно правильно. \n",
"\n",
"# Важное замечение: мы обработали значения углов, при этом значения направлений вращения осей, мы \n",
"# мы никак не трогали.\n",
"\n",
"# ----------- PROCESS THE AXIS LOSS ----------------"
]
},
{
"cell_type": "code",
"execution_count": 379,
"id": "29828ad3",
"metadata": {},
"outputs": [],
"source": [
"fig.savefig(fname=\"v2.png\", dpi=300, format=\"png\", bbox_inches='tight', pad_inches=0.0)"
]
},
{
"cell_type": "code",
"execution_count": 366,
"id": "187d52b0",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"-0.242259"
]
},
"execution_count": 366,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Если нашли потерю оси \"loss\", то кроме простого восстановления, учтём количество потерянных кадров, и к\n",
"# последнему количеству градусов добавим еще потерянные градусы с учетом последней скорости.\n",
"x[261]"
]
},
{
"cell_type": "code",
"execution_count": 367,
"id": "fca978c4",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([44.631222, 47.540522, 48.614122, 50.517022, 50.463622, 52.605922,\n",
" 54.224922, 56.913522, 57.963822, 59.124422])"
]
},
"execution_count": 367,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"x_copy[252:262]"
]
},
{
"cell_type": "code",
"execution_count": 368,
"id": "4dc24395",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(1966,)"
]
},
"execution_count": 368,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"x.shape"
]
},
{
"cell_type": "code",
"execution_count": 369,
"id": "a4e7b7a8",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(1966,)"
]
},
"execution_count": 369,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"x_copy.shape"
]
},
{
"cell_type": "code",
"execution_count": 20,
"id": "9db9e018",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Found inverse val. It's index is: 2 It's value is -0.262416 Last element is -0.111895\n",
"Accumulated elements. Array's length: 5\n",
"Mode 1 is: [-1. -1. -1.]; Mode 2 is: [-1. -1. -1.];\n",
"Found inverse val. It's index is: 8 It's value is -0.329805 Last element is -0.314004\n",
"Accumulated elements. Array's length: 5\n",
"Mode 1 is: [-1. -1. -1.]; Mode 2 is: [-1. -1. -1.];\n",
"Found inverse val. It's index is: 14 It's value is -0.330989 Last element is -0.330989\n",
"Accumulated elements. Array's length: 5\n",
"Mode 1 is: [-1. -1. -1.]; Mode 2 is: [-1. -1. -1.];\n",
"Found inverse val. It's index is: 20 It's value is -0.333345 Last element is -0.332169\n",
"Accumulated elements. Array's length: 5\n",
"Mode 1 is: [-1. -1. -1.]; Mode 2 is: [-1. -1. -1.];\n",
"Found inverse val. It's index is: 27 It's value is -0.334516 Last element is -0.332169\n",
"Accumulated elements. Array's length: 5\n",
"Mode 1 is: [-1. -1. -1.]; Mode 2 is: [-1. -1. -1.];\n",
"Found inverse val. It's index is: 33 It's value is -0.333345 Last element is -0.325025\n",
"Accumulated elements. Array's length: 5\n",
"Mode 1 is: [-1. -1. -1.]; Mode 2 is: [-1. -1. -1.];\n",
"Found inverse val. It's index is: 40 It's value is -0.333345 Last element is -0.333345\n",
"Accumulated elements. Array's length: 5\n",
"Mode 1 is: [-1. -1. -1.]; Mode 2 is: [-1. -1. -1.];\n",
"Found inverse val. It's index is: 47 It's value is -0.332169 Last element is -0.328616\n",
"Accumulated elements. Array's length: 5\n",
"Mode 1 is: [-1. -1. -1.]; Mode 2 is: [-1. -1. -1.];\n",
"Found inverse val. It's index is: 53 It's value is -0.333345 Last element is -0.329805\n",
"Accumulated elements. Array's length: 5\n",
"Mode 1 is: [-1. -1. -1.]; Mode 2 is: [-1. -1. -1.];\n",
"Found inverse val. It's index is: 59 It's value is -0.325025 Last element is -0.325025\n",
"Accumulated elements. Array's length: 5\n",
"Mode 1 is: [-1. -1. -1.]; Mode 2 is: [-1. -1. -1.];\n",
"Found inverse val. It's index is: 65 It's value is -0.327423 Last element is -0.326226\n",
"Accumulated elements. Array's length: 5\n",
"Mode 1 is: [-1. -1. -1.]; Mode 2 is: [-1. -1. -1.];\n",
"Found inverse val. It's index is: 71 It's value is -0.333345 Last element is -0.332169\n",
"Accumulated elements. Array's length: 5\n",
"Mode 1 is: [-1. -1. -1.]; Mode 2 is: [-1. -1. -1.];\n",
"Found inverse val. It's index is: 78 It's value is -0.336848 Last element is -0.333345\n",
"Accumulated elements. Array's length: 5\n",
"Mode 1 is: [-1. -1. -1.]; Mode 2 is: [-1. -1. -1.];\n",
"Found inverse val. It's index is: 84 It's value is -0.326226 Last element is -0.325025\n",
"Accumulated elements. Array's length: 5\n",
"Mode 1 is: [-1. -1. -1.]; Mode 2 is: [-1. -1. -1.];\n",
"Found inverse val. It's index is: 90 It's value is -0.323819 Last element is -0.323819\n",
"Accumulated elements. Array's length: 5\n",
"Mode 1 is: [-1. -1. -1.]; Mode 2 is: [-1. -1. -1.];\n",
"Found inverse val. It's index is: 96 It's value is -0.328616 Last element is -0.327423\n",
"Accumulated elements. Array's length: 5\n",
"Mode 1 is: [-1. -1. -1.]; Mode 2 is: [-1. -1. -1.];\n",
"Found inverse val. It's index is: 102 It's value is -0.333345 Last element is -0.329805\n",
"Accumulated elements. Array's length: 5\n",
"Mode 1 is: [-1. -1. -1.]; Mode 2 is: [-1. -1. -1.];\n",
"Found inverse val. It's index is: 108 It's value is -0.326226 Last element is -0.321393\n",
"Accumulated elements. Array's length: 5\n",
"Mode 1 is: [-1. -1. -1.]; Mode 2 is: [-1. -1. -1.];\n",
"Found inverse val. It's index is: 114 It's value is -0.323819 Last element is -0.323819\n",
"Accumulated elements. Array's length: 5\n",
"Mode 1 is: [-1. -1. -1.]; Mode 2 is: [-1. -1. -1.];\n",
"Found inverse val. It's index is: 120 It's value is -3.2299 Last element is -1.30882\n",
"Accumulated elements. Array's length: 5\n",
"Mode 1 is: [-1. -1. -1.]; Mode 2 is: [-1. -1. -1.];\n",
"Found inverse val. It's index is: 222 It's value is -2.50708 Last element is -0.481278\n",
"Accumulated elements. Array's length: 5\n",
"Mode 1 is: [-1. -1. -1.]; Mode 2 is: [-1. 1. 1.];\n",
"Mirror the values. \n",
"\n",
"Found inverse val. It's index is: 263 It's value is -3.48907 Last element is -1.10347\n",
"Accumulated elements. Array's length: 5\n",
"Mode 1 is: [-1. 1. 1.]; Mode 2 is: [-1. 1. 1.];\n",
"Found inverse val. It's index is: 456 It's value is -0.794182 Last element is -0.685786\n",
"Accumulated elements. Array's length: 5\n",
"Mode 1 is: [-1. 1. 1.]; Mode 2 is: [-1. -1. 1.];\n",
"Mirror the values. \n",
"\n",
"Found inverse val. It's index is: 790 It's value is -3.21215 Last element is -1.00473\n",
"Accumulated elements. Array's length: 5\n",
"Mode 1 is: [ 1. 1. -1.]; Mode 2 is: [1. 1. 1.];\n",
"Mirror the values. \n",
"\n",
"Found inverse val. It's index is: 950 It's value is -0.302581 Last element is -0.299984\n",
"Accumulated elements. Array's length: 5\n",
"Mode 1 is: [-1. 1. 1.]; Mode 2 is: [-1. 1. 1.];\n",
"Found inverse val. It's index is: 956 It's value is -0.365803 Last element is -0.356047\n",
"Accumulated elements. Array's length: 5\n",
"Mode 1 is: [-1. 1. 1.]; Mode 2 is: [-1. 1. 1.];\n",
"Found inverse val. It's index is: 963 It's value is -0.353842 Last element is -0.346015\n",
"Accumulated elements. Array's length: 5\n",
"Mode 1 is: [-1. 1. 1.]; Mode 2 is: [-1. 1. 1.];\n",
"Found inverse val. It's index is: 970 It's value is -0.329805 Last element is -0.318949\n",
"Accumulated elements. Array's length: 5\n",
"Mode 1 is: [-1. 1. 1.]; Mode 2 is: [-1. 1. 1.];\n",
"Found inverse val. It's index is: 976 It's value is -0.330989 Last element is -0.328616\n",
"Accumulated elements. Array's length: 5\n",
"Mode 1 is: [-1. 1. 1.]; Mode 2 is: [-1. 1. 1.];\n",
"Found inverse val. It's index is: 984 It's value is -0.312755 Last element is -0.311502\n",
"Accumulated elements. Array's length: 5\n",
"Mode 1 is: [-1. 1. 1.]; Mode 2 is: [-1. 1. 1.];\n",
"Found inverse val. It's index is: 991 It's value is -0.338007 Last element is -0.311502\n",
"Accumulated elements. Array's length: 5\n",
"Mode 1 is: [-1. 1. 1.]; Mode 2 is: [-1. 1. 1.];\n",
"Found inverse val. It's index is: 998 It's value is -0.336848 Last element is -0.335684\n",
"Accumulated elements. Array's length: 5\n",
"Mode 1 is: [-1. 1. 1.]; Mode 2 is: [-1. 1. 1.];\n",
"Found inverse val. It's index is: 1005 It's value is -0.321393 Last element is -0.316486\n",
"Accumulated elements. Array's length: 5\n",
"Mode 1 is: [-1. 1. 1.]; Mode 2 is: [-1. 1. 1.];\n",
"Found inverse val. It's index is: 1011 It's value is -0.323819 Last element is -0.321393\n",
"Accumulated elements. Array's length: 5\n",
"Mode 1 is: [-1. 1. 1.]; Mode 2 is: [-1. 1. 1.];\n",
"Found inverse val. It's index is: 1019 It's value is -0.332169 Last element is -0.323819\n",
"Accumulated elements. Array's length: 5\n",
"Mode 1 is: [-1. 1. 1.]; Mode 2 is: [-1. 1. 1.];\n",
"Found inverse val. It's index is: 1028 It's value is -0.303872 Last element is -0.303872\n",
"Accumulated elements. Array's length: 5\n",
"Mode 1 is: [-1. 1. 1.]; Mode 2 is: [-1. 1. 1.];\n",
"Found inverse val. It's index is: 1035 It's value is -0.65664 Last element is -0.299984\n",
"Accumulated elements. Array's length: 5\n",
"Mode 1 is: [-1. 1. 1.]; Mode 2 is: [-1. 1. 1.];\n",
"Found inverse val. It's index is: 1041 It's value is -3.65587 Last element is -3.44253\n",
"Accumulated elements. Array's length: 5\n",
"Mode 1 is: [-1. 1. 1.]; Mode 2 is: [-1. 1. 1.];\n",
"Found inverse val. It's index is: 1048 It's value is -3.66357 Last element is -3.65469\n",
"Accumulated elements. Array's length: 5\n",
"Mode 1 is: [-1. 1. 1.]; Mode 2 is: [-1. 1. 1.];\n",
"Found inverse val. It's index is: 1339 It's value is -0.695418 Last element is -0.406341\n",
"Accumulated elements. Array's length: 5\n",
"Mode 1 is: [-1. 1. 1.]; Mode 2 is: [-1. -1. -1.];\n",
"Mirror the values. \n",
"\n",
"Found inverse val. It's index is: 1444 It's value is -2.80811 Last element is -2.78853\n",
"Accumulated elements. Array's length: 5\n",
"Mode 1 is: [-1. -1. -1.]; Mode 2 is: [-1. -1. -1.];\n"
]
},
{
"data": {
"text/plain": [
"<matplotlib.legend.Legend at 0x7f26e203e790>"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABn0AAADDCAYAAABH9dRjAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8rg+JYAAAACXBIWXMAAAsTAAALEwEAmpwYAACv+0lEQVR4nOzdd3gUVRfA4d9sSw8kofcmvffepSpNQEWQIiAoICoKoigqKiooIih8IoKKgqKI9KIgvUuJ9N4hlFRSdnfm+2OSkJBNSNlkU877PHmyO3Nn5mxYdmfm3HuuomkaQgghhBBCCCGEEEIIIYQQImczuDoAIYQQQgghhBBCCCGEEEIIkXGS9BFCCCGEEEIIIYQQQgghhMgFJOkjhBBCCCGEEEIIIYQQQgiRC0jSRwghhBBCCCGEEEIIIYQQIheQpI8QQgghhBBCCCGEEEIIIUQuIEkfIYQQQgghhBBCCCGEEEKIXMApSR9FUeYrinJTUZTABMv8FUXZoCjKqdjffrHLFUVRZiqKclpRlMOKotR1RgxCCCGEEEIIIYQQQgghhBB5mbNG+iwAOj2wbALwl6ZpjwB/xT4H6Aw8EvszHPjaSTEIIYQQQgghhBBCCCGEEELkWU5J+miatgW488Di7sDC2McLgR4Jln+v6XYB+RVFKeqMOIQQQgghhBBCCCGEEEIIIfKqzJzTp7CmaddiH18HCsc+Lg5cStDucuwyIYQQQgghhBBCCCGEEEIIkU6mrDiIpmmaoihaWrZRFGU4evk3PDw86pUsWTJTYstNVFXFYMjMPJ4Qrifvc5FXyHtd5AXyPhd5hbzXRV4g73ORV8h7XeQF8j4XeUVOf6+fPHnylqZpBR9cnplJnxuKohTVNO1abPm2m7HLrwAJMzglYpclomna/4D/AdSvX1/bt29fJoaaO2zevJnWrVu7OgwhMpW8z0VeIe91kRfI+1zkFfJeF3mBvM9FXiHvdZEXyPtc5BU5/b2uKMoFR8szM431JzAw9vFAYHmC5c8qusZASIIycEIIIYQQQgghhBBCCCGEECIdnDLSR1GUn4HWQAFFUS4D7wBTgV8URXkOuAD0jW2+GugCnAbuAYOdEYMQQgghhBBCCCGEEEIIIURe5pSkj6ZpTyezqp2DthrwojOOK4QQQgghhBBCCCGEEEIIIXSZOaePEEIIIYQQQgghhBBCCCEewmq1cvnyZaKiolwdSp6RL18+jh075uowHsrd3Z0SJUpgNptT1V6SPkIIIYQQQgghnOgS8DtwC4gGYgDtIdso2Xh9do4ts9enftsyZc4Dfz+wLgAoDlSJ/XnY/oQQQoi86/Lly/j4+FCmTBkURb4zs0JYWBg+Pj6uDiNFmqZx+/ZtLl++TNmyZVO1jSR9hBBCCCGEEEI4wRngefQb/xr6DX43wAIYUtjuYQkhV67PzrFl9vq0bVu69MO2LwC0B54BOqC/L4QQQggRJyoqShI+IglFUQgICCAoKCjV20jSRwghhBBCCCFEBgWj38i/C0wG+gPlXBiPyGr//LOZ1q1bJ1iioY/2ugz8C2wFlgOLgQrAJ0APZPSPEEIIcZ8kfIQjaX1fpNTdSgghhBBCCCGEeIgoYDBwAVgFvI0kfISezCkI1AGGAN8BV4E/0Ef59Ir9ueei+IQQQgjxIKPRSO3atalevTp9+vTh3r2c8z09efJkpk2b9tB23t7eKa4PDg7mq6++clZYLiFJHyGEEEIIIYQQGTAS/Ub+dKCJa0MR2Zw70B04BHyKPvLnUSDQlUEJIYQQIpaHhwcHDx4kMDAQi8XCnDlzEq232Wwuiizr5Iakj5R3E0IIQJ9w+Ax678PIFNqld6JbWee8db5AK/SbBkIIIYRwrV3AAuB14CXXhiJyEBMwDiiNPgqoPrAEPSEkhBBC5G1lJqzK9GOcn9r1oW1atGjB4cOH2bx5M5MmTcLPz4/jx49z+PBhRo4cyb59+zCZTHz22We0adMGu93O+PHjWbt2LQaDgWHDhjF69Gj279/PK6+8Qnh4OAUKFGDBggUULVqUmTNnMmfOHEwmE1WrVmXx4sX8888/vPSSfk6pKApbtmzBx8eHTz/9lF9++YXo6Gh69uzJu+++C8AHH3zAwoULKVSoECVLlqRevXpJXse5c+fo168f4eHhdO9+/1wjPDycxx9/nNDQUKxWK1OmTKF79+5MmDCBM2fOULt2bR599FHeeecdunfvzt27dxO1y84k6SOEyONCgeHoF5ki5/AG3gfGujgOIYQQIi+LAEYBxYBJLo5F5Ex9gNbA48ATwMvo53jSuUcIIYRwJZvNxpo1a+jUqRMABw4cIDAwkLJlyzJ9+nQUReHIkSMcP36cDh06cPLkSb777jvOnz/PwYMHMZlM3LlzB6vVyujRo1m+fDkFCxZkyZIlvPnmm8yfP5+pU6dy7tw53NzcCA4OBmDatGnMnj2bZs2aER4ejru7O+vXr+fUqVPs2bMHTdPo1q0bW7ZswcvLi8WLF3Pw4EFsNht169Z1mPR56aWXGDlyJM8++yyzZ8+OX+7u7s6iRYsoXrw4t27donHjxnTr1o2pU6cSGBjIwYMH4/8Wy5Ytw9fXN1G77Dz/kiR9hBB52BGgE3ADeAtoAxRFTyg4oqWwL1mXdesuAzPRbwr4A8+m0FYIIYQQmUMDegD/Ar+S/PmTEA9TENiInkCcDuxHLxfo68KYhBBCiLwpMjKS2rVrA/pIn+eee44dO3bQsGFDypYtC8C2bdsYPXo0AJUrV6Z06dKcPHmSjRs3MmLECEwmPeXg7+9PYGAggYGBPProowDY7XaKFi0KQM2aNXnmmWfo0aMHPXr0AKBZs2a88sorPPPMM/Tq1YsSJUqwfv161q9fT506dQB9hM6pU6cICwujZ8+eeHp6AtCtWzeHr2n79u389ttvAAwYMIDx48cDoGka7777Lrt27cJgMHDlyhVu3LiRZHtN05g4cSJbtmxJ1K5IkSIZ+ltnJkn6CCHyKCt6ssAObAcauTYckQbVgHaxPyMBP/TeoUIIIYTIOr+g36ifDfRycSwi5/NGLxPYAf0cvTLwHdDRhTEJIYQQeU/cnD4P8vLyStf+NE2jWrVq7Ny5M8m6VatWsWXLFlasWMEHH3zAkSNHmDBhAl27dmX16tU0a9aMdevWoWkab7zxBs8//3yi7WfMmJHqOByNylm0aBG3b99m//79mM1mypQpQ1RUlMN2QUFBD22XnRhcHYAQQrjGh8BB4Gsk4ZMTmYDF6DcE+qHPxSSEEEKIrBGGPh9LHeD5h7QVIi36Af+gj/55HFgIqC6NSAghhBCJtWjRgkWLFgFw8uRJLl68SKVKlXj00UeZO3cuNpsNgDt37lCpUiWCgoLikz5Wq5X//vsPVVW5dOkSbdq04eOPPyYkJITw8HDOnDlDjRo1GD9+PA0aNOD48eN07NiR+fPnEx4eDsCVK1e4efMmLVu25I8//iAyMpKwsDBWrFjhMN5mzZqxePFigPi4AUJCQihQoABms5lNmzZx4cIFAHx8fAgLC0vUrlChQknaZWcy0kcIkQd9BUxGv6js6dpQRAYURZ+LqRowHvjBteEIIYQQeUI0+mjbq8DPgNG14YhcqBmwBegGDEJ/n/0GpK+HsRBCCJHTnJ/a1dUhpOiFF15g5MiR1KhRA5PJxIIFC3Bzc2Po0KGcPHmSmjVrYjabGTZsGKNGjWLp0qWMGTOGkJAQbDYbY8eOpWLFivTv35+QkBA0TWPMmDHkz5+fSZMmsWnTJgwGA9WqVaNz5864ublx7NgxmjRpAoC3tzc//vgjdevW5cknn6RWrVoUKlSIBg0aOIz3iy++oF+/fnz88cd07949fvkzzzxDly5dqFGjBvXr16dy5coABAQE0KxZM6pXr07nzp0ZP348jz/+eJJ22ZmiaSnNm5A91K9fX9u3b5+rw8j2Nm/eTOvWrV0dhhCZKuPv86tAJfSLyRWA2RlhCZd6E33k1iL0RF7uIJ/pIi+Q97nIK3LXe/1jYAJ6x4u+Lo5FZCfOf59bgTnAWKBB7OPaTty/EOmTuz7ThXBM3ueucezYMapUqeLqMPKUsLAwfHx8XB1Gqjh6fyiKsl/TtPoPtpXybkKIPGYCEINef14SPrnDRKAFMAB9MmkhhBBCZI5rwBT0ERiS8BGZzQyMBn4FjqOXZP7DlQEJIYQQQuQIkvQRQuQhH6CXAHsVKO/iWITzeAF/AgHAGCD7j2AVQgghcp47QFf0zjOfuTgWkbf0As6gzyH1BPr5XqRLIxJCCCGEyM4k6SOEyCMOAm8DTwPvujYUkQnyoyf1tgFzXRuKEEIIkSu9CRwGliGdZ0TWCwA2AkOAWUAnIMSlEQkhhBBCZFeS9BFC5AEaeo9AP6SsW242BH1i6ZHAShfHIoQQQuQmh4D/AS8CXVwci8i7vIFv0Odx3AE8Aqx2aURCCCGEENmRJH2EELmchj6Pz1bgQ/TEj8idjMAqoCr6hL/RLo1GCCGEyB2uAs+gn0NNdm0oQgD6yP3tQHGgOzAPsLs0IiGEEEKI7ESSPkKIXG4V8AkwNPZH5G5uwAz0uu+fuDYUIYQQIsfTgOeA88BipPOMyD4aAv8AzYFhQGcg3KURCSGEEEJkF5L0EULkYtHAy0Bl9LJu8pGXNzwK9EWfw+lbF8cihBBC5GSrgLXA+0B7F8cixIN80ef5+Qr4C2gL7HNpREIIIUROpygKr776avzzadOmMXnyZNcFlE2cP3+e6tWrP7TdoEGDWLp0aYptFixYwNWrV50VmkNyB1QIkUupwKvAafSRHxaXRiOy2g9Aa2AcEOTaUIQQQogc6RL6nIiVgVEujkWI5BjR53P8DTgLNAOWuTQiIYQQIidzc3Pj999/59atWy45vt2e+0u2StJHCCHS7Wv00T1jgY6uDUW4gAX93z8MeMvFsQghhBA5jQ3oCtxGHzVrdm04QjxUD+AkUBfojZ4IinRlQEIIIUSOZDKZGD58OJ9//nmSdefPn6dt27bUrFmTdu3acfHiRUAf3TJmzBiaNm1KuXLlHI50OX/+PJUrV+aZZ56hSpUq9O7dm3v37gFQpkwZxo8fT926dfn111/5+eefqVGjBtWrV2f8+PHx+1i7di1169alVq1atGvXDoCIiAiGDBlCw4YNqVOnDsuXLwfgv//+o2HDhtSuXZuaNWty6tQpIiIi6Nq1K7Vq1aJ69eosWbIEgP3799OqVSvq1atHx44duXbtWvzyWrVqUatWLWbPnu3w76VpGqNGjaJSpUq0b9+emzdvxq977733aNCgAdWrV2f48OFomsbSpUvZt28fzzzzDLVr1yYyMtJhu4wyZXgPQgiR7dwGJqGXePjMxbEI16kKjEYf6fUI+qgfIYQQuc3x66HcDI2mdqn8+LpLcsI55gBHgKVAUxfHIkRq+aOXexuPXvLtKLAcyO/CmIQQQoj0Gbt2LAevH3TqPmsXqc2MTjMe2u7FF1+kZs2avP7664mWjx49moEDBzJw4EDmz5/PmDFj+OOPPwC4du0a27Zt4/jx43Tr1o3evXsn2e+JEyf49ttvadasGUOGDOGrr75i3Dj9Xk1AQAAHDhzg6tWrNG7cmP379+Pn50eHDh34448/aNasGcOGDWPLli2ULVuWO3fuAPDBBx/Qtm1b5s+fT3BwMA0bNqR9+/bMmTOHl156iWeeeYaYmBjsdjurV6+mWLFirFq1CoCQkBCsViujR49m+fLlFCxYkCVLlvDmm28yf/58Bg8ezKxZs2jZsiWvvfaaw7/VsmXLOHHiBEePHuXGjRtUrVqVIUOGADBq1CjefvttAAYMGMDKlSvp3bs3s2bNYtq0adSvXz/Zdo8//vhD/51SIiN9hBC5Qni0jQ9XH6PfN9sJvDIYTQsFvgAUV4cmXOpj4AngDeC4i2MRQgjhbFNWHqXTjK08O38PXb7YyqU791wdUi5wAX1evLZALxfHIkRaeQGzgJ+AHUA5YLVLIxJCCCFyGl9fX5599llmzpyZaPnOnTvp168foCcntm3bFr+uR48eGAwGqlatyo0bNxzut2TJkjRr1gyA/v37J9r+ySefBGDv3r20bt2aggULYjKZeOaZZ9iyZQu7du2iZcuWlC1bFgB/f38A1q9fz9SpU6lduzatW7cmKiqKixcv0qRJEz788EM+/vhjLly4gIeHBzVq1GDDhg2MHz+erVu3ki9fPk6dOkVgYCCPPvootWvXZsqUKVy+fJng4GCCg4Np2bJl/Ot1ZMuWLTz99NMYjUaKFStG27Zt49dt2rSJRo0aUaNGDf7++2/+++8/h/tIbbu0kJE+QogcLzzaxlP/20nglVDGd1pA9eIr+OvY87Sr8vAJ1kRuZ0Hv6bkRvdTfGiQRKIQQucMPuy4wb9u5+OeX70by/c7zvNm1qgujyulCgObocyN+iXxnipzrKaAiMAzojv5+HorcAhFCCJFTpGZETmYaO3YsdevWZfDgwalq7+bmFv84ufJkiqIk+9zLyysdUerH+u2336hUqVKi5VWqVKFRo0asWrWKLl26MHfuXNq2bcuBAwdYvXo1b731Fu3ataNDhw5Uq1aNnTt3Jto+ODg4XfHEiYqK4oUXXmDfvn2ULFmSyZMnExUVle52aSVnPEKIHE1VNUb8sJ/AK6GU8LvB0BbLWLq/HR+s6sW/b7s6OpE9FAImAy/H/n7XlcEIIYRwgo1HbzDpj8Aky49eC3VBNLnJ+8AV9BESzk2eWe0qG47e4Pj1MDRNw2hQMMZe6GuApoGGpv/WtKTLEjwn7j6CAgoKiqKnpxQFDIqCp8WEu1kvahF3zyFukwdvQtxfryXT3vH6hOKOqwCqBmoa67DHbW9UFAwGJf616L+V+LgTxqQleC0JY3zwb5UwFE1LvD7hNo4k+yqS2eDchRj2x5xI+voAk9GAyahgNui/PcxGyhfyprS/J4V83ZM7UgbVBTYBPdHn+Pk99sc7k44nhBBC5B7+/v707duXb7/9Nr5cWdOmTVm8eDEDBgxg0aJFtGjRIk37vHjxIjt37qRJkyb89NNPNG/ePEmbhg0bMmbMGG7duoWfnx8///wzo0ePpnHjxrzwwgucO3cuvrybv78/HTt25Msvv+TLL79EURT+/fdf6tSpw9mzZylXrhxjxozh4sWLHD58mMqVK+Pv70///v3Jnz8/8+bN48UXXyQoKCg+LqvVysmTJ6lWrRr58+dn27ZtNG/enEWLFjl8TS1btmTu3LkMHDiQmzdvsmnTJvr16xefuClQoADh4eEsXbo0vuSdj48PYWFhACm2ywhJ+gghcrQ/Dl5h2+lbAFQoeAmz0c5PuzsRHGl1cWQiexkF/Au8B7RCL1kjhBAiJzoTFM6rvx5yuG776dtZHE1ucgy9NO4QoLHT9hoebWPe1rPM2HjKafsU2diZ02nexNfdRPNHCvB0w1I0r1AgSS/gjPEFNgDz0BM/rYDZOPM9LoQQQuRWr776KrNmzYp//uWXXzJ48GA+/fRTChYsyHfffZem/VWqVInZs2czZMgQqlatysiRI5O0KVq0KFOnTqVNmzZomkbXrl3p3r07AP/73//o1asXqqpSqFAhNmzYwKRJkxg7diw1a9ZEVVXKli3LypUr+eWXX/jhhx8wm80UKVKEiRMnsnfvXl577TUMBgNms5mvv/4ai8XC0qVLGTNmDCEhIdhsNsaOHUu1atX47rvvGDJkCIqi0KFDB4evqWfPnvz9999UrVqVUqVK0aRJEwDy58/PsGHDqF69OkWKFKFBgwbx2wwaNIgRI0bg4eHBzp07k22XEUpyw62yk/r162v79u1zdRjZ3ubNm2ndurWrwxAiUz34Pu87dyd7zumTt7Wvspt5A9/nsS9nEHilAmc+7ILRIGVJRJwo9F7LXugJoOzd70E+00VeIO9zkVYxNpUuM7dy+ma4w/U1iudjxeikPQZdLfu/1y8CDQErevKnkFP2+tPui3y24SS3wqOdsj+R+1Ut6ssnvWtSvXi+TNj7cmAEcAf4GZmzSqRX9v9MFyLj5H3uGseOHaNKlSquDiNTnD9/nscee4zAwKSj9V0pLCwMHx8fV4eRKo7eH4qi7Nc0rf6DbQ2ZHYyiKOcVRTmiKMpBRVH2xS7zVxRlg6Iop2J/+2V2HEKI3OfgpeD4hA+AyWgDwGY36r9V1SVxiezKHZgOBALjSaFoiRBCiGxq/dHrySZ8AExG6eyRPq8CocAWnJXw+evYDSYuOyIJH5EmR6+F8tiX2+g+eztHLoc4ee/dgaNAPaAP8Bxwz8nHEEIIIYRwvUxP+sRqo2la7QRZpwnAX5qmPQL8FftcCCFSLTLGTo/Z2xMts8Qmfax2fQSHXZWb+uJBPdBLe3wGpG0YshBCCNcKuWdl9M//pthGvvvTYxOwFHgDqOaUPdpVjU/XJZ3bRYjUOnQpmCfm7GDziZtO3rMferm3Mejngh0BKQsphBBCZLYyZcpku1E+uZmratt0B1rHPl4IbEbvdi2EEA8VEW2jznsbkiw3PZD0sdrlxo94kIJex/0Q+s2tJ4DMKB8ihBDC2T7feDLZCefj2OS7P42OAE8BZYBxTtvrFxtPcvx6mMN1BbzdeKxmUXw9zNhjR2UrKCiK/i2tKHGPEy4jfp4XQ+x6TQMNLf49oWn6Y5uqERFtw2qP3fcD88PEPVVQHnh+f33cNvFbprCNBqixx9Y0DYNB0WNM5d9KQ38tqqZhV7X4xKWmafFjkjWNRH+fhK8l4d8pYfxKbIAJY1aS2YYU4k1ueh1HW5w/r0+s/CBV07DZNayqis2uYbOrXAmO5NTNcC7cTn6kTYxNZdj3+/jqmXo8WrVwsu3Szgv4HGgC9AfKAj8BjznxGEIIIYQQrpMVSR8NWK8oigbM1TTtf0BhTdOuxa6/DjjzDE4Ikct9tfk0MfakpdtMBjtwv7yb9PYVjinATKABejmb/5F1A1+FEEKkx9rAayzYcf6h7aS0a1qowFD078U1gIdT9no7PJqZf592uO6Lp2rTuXpRLCb53s2NNm++QuvWj6Rpm3sxNr7bfp5vtp4l+J41yXqrXWPY9/t4plEpJnapgpebM29h9AUqA0PQR4N/jj7nj9mJxxBCCCGEyHqK9rDuchk9gKIU1zTtiqIohdDHUY8G/tQ0LX+CNnc1TfN7YLvhwHCAwoUL11u8eHGmxpkbhIeH4+3t7eowhMhUB6+EMytQwebgo+uZRqv5oOdXNPjge4LC/JnRxoP8bnJTQThWrtz/KFXqZ86dG8SFCwNdHU4S8pku8gJ5n4vUuBGhMn5rZKraFvFSmNrCM5MjSrvs+F4vUmQtlSt/zLFjb3DjRgen7DParvH8BscjN16t50aNgq4qNCGyQkbe55E2jT9OxbDugi3ZNh4meL2BO2XzGdMbokNG4z2qVXsHf/993L1bh8DAKdjt2e9zRGQf2fEzXQhnk/e5a+TLl48KFSq4Oow8xW63YzQ699wis5w+fZqQkMRzHrZp02Z/gil14mX6WbemaVdif99UFGUZ0BC4oShKUU3TrimKUhRIUqg3dkTQ/wDq16+vtW7dOrNDzfE2b96M/J1EbqZpGhM/WIMtmWS1+YHybg0bNaFYfuf0WhW5UStApWzZxZQt+w56aZvsQz7TRV4g73PxMFFWOwO+3Q0kTfqUL+jFmaCIRMvc3D2y5Xsq+73X9wDfAE2oUmUKVao4p5PMR6uPAWeTLO9euxij+9RxyjFE9pXR93nn9nD6ZhgdPt+CowH7kTb4eF8Mvz7flBolnF2etzPwHX5+w2nRYiJ6OeBmTj6GyC2y32e6EM4n73PXOHbsGD4+Pq4OI08JCwvLMX9zd3d36tRJ3Tl1pnaBVxTFS1EUn7jHQAcgEPgTiOtWPRBYnplxCCFyhwMXg7kanvQK0NfdRICXJX5OH1ts0kfKu4mUKcA09K/CsehlboQQQmQn87aeZe/5uw7XvfJopSTLZE6f1LgH9Eaf0+57nHVJuPvsbeZuSZrwARjUtIxTjiFyvwqFfNg9sT0l/Bx33Iqyqjz1v50cvhzs5CMr6GXe/gBuA22ApU4+hhBCCJG93b59m9q1a1O7dm2KFClC8eLF45/HxMS4JKbWrVuzb98+lxw7J8vsukeFgW2KohxC7062StO0tcBU4FFFUU4B7WOfCyFEsuyqxjt/BiZZXsLPgz1vtsfH3YQ5dk4fa+ycPjZJ+oiHKgG8i9734AUXxyKEECIhVdWSncdnaq8a1Cvtl2S5zOmTGlOBS8ACwDnlQ2x2lXFLDzlc17CMP7VL5nfKcUTeUNDHjT9HNadTtSIO10fE2Ok2azuv/XqIiOjky8Glz2PAEfS5H/sCz6InSoUQQojcLyAggIMHD3Lw4EFGjBjByy+/HP/cYrFgszn7e1dklkxN+miadlbTtFqxP9U0TfsgdvltTdPaaZr2iKZp7TVNu5OZcQghcr7fD1wm8EpokuUvtK6Au9mI0aDcH+mj6iN9bHa58SNS41X0kT5zgV2uDUUIIUS8aetPcCs8aY/ChUMa8lTDUhgNSpJ1Msr3YTYCnwBPAy2dttctp4K4dMfxvEvfDW6AoiT9txIiJf5eFr7uX5dxHSom2+bX/Zfp+dV2QiKtTj56fmA98BrwI9ARCHLyMYQQQoicYdCgQYwYMYJGjRrx+uuvM3nyZKZNmxa/vnr16pw/fx6AH3/8kYYNG1K7dm2ef/557HZ7on2tXbuWPn36xD/fvHkzjz32GAAjR46kfv36VKtWjXfeecdhLAnnmVq6dCmDBg0CICgoiCeeeIIGDRrQoEEDtm/fDsA///wTP1KpTp06hIWFZfjvkVPITJpCiGzv2LVQXlt6OMlyfy8LXWsUBcBkMGAy2lFVBbuq57NlpI9IHQV4H/gFGI2e+MkZk/gJIURudepGGF9tPpNkeetKBWlVsSAAJgdJH/nuT8kR9FEMFYDpTttrlNXOeyuOJlle2NeNTeNa42mRS06RPoqiMKrtI3SsVoReX+8gLCpp7+KTN8LpPGMLv73QlKL5nDmXpxfwMVAP6A+UBX4GHnfiMYQQQoiUjAUOOnmftYEZad7q8uXL7NixA6PRyOTJkx22OXbsGEuWLGH79u2YzWZeeOEFFi1axLPPPhvfpn379gwfPpyIiAi8vLxYsmQJTz31FAAffPAB/v7+2O122rVrx+HDh6lZs2aq4nvppZd4+eWXad68ORcvXqRjx44cO3aMadOmMXv2bJo1a0Z4eDju7u5pfu05VWaXdxNCiAyJsakMXei4dudbXauQz9MMgMmoYDHasKpG9Jv40ttXpIU38CmwD+gHyHtHCCFc5UZoFI9+vsXhuoEJ5oYxGR2M9JE5fRJQASsQAaxET/jkB/4GijrtKO+vPMr520nLX01+vJokfIRTPFLYh6UjmlLY183h+qshUTz+5TYu382MMmx9gUNAFaAn8DngmjkNhBBCCFfp06cPRmPKnWP/+usv9u/fT4MGDahduzZ//fUXZ88mnu/RZDLRqVMnVqxYgc1mY9WqVXTv3h2AX375hbp161KnTh3+++8/jh5N2qkoORs3bmTUqFHUrl2bbt26ERoaSnh4OM2aNeOVV15h5syZBAcHYzLlnXPTvPNKhRA50utLD3ElOGm5kHIFvOhZp3j8c1NseTeb/f7HmlXKu4k06QecBSYBT6Bf5AshhMhqrzsY3QvQrnIh2lQqFP/cZEjafy3vjfQ5A7wN7AWuAnbAFvv7wb9FYWANUAhnWX7wCot2X0yyvJS/J22rOO84QlQq4sO6sS0Z+N1eDl0KTrL+VngMzT/exNMNS/Fe92qYjc7s31oFPVnaB3gFWAH8Afg68RhCCCHEg2a4OoB4Xl5e8Y9NJhNqgnk0o6KiANA0jYEDB/LRRx+luK+nnnqKWbNm4e/vT/369fHx8eHcuXNMmzaNvXv34ufnx6BBg+L3m1DCksEJ16uqyq5du5KM5JkwYQJdu3Zl9erVNGvWjHXr1lG5cuW0vfgcSpI+Qohsa+PRG/xx8KrDda92qJTow95oUDAZ7NjU+z0PMjrSJyLaRuCVEO5Z7WiahqqCqmmomv5lpmpxzzU07f46/XnCxw+2j3ueuE3c6zAqCgaDglHRnxtilzkqh685eInJvWpHbfX2SVdoWoL9aElbKACKQlxIigJxz/THDyxX7m8X9++mxK2PX5f4NSZpl8z+id3Ox81ErZL58XLLyFfbG8BvwDj0HtGeGdiXEEKItFq44zz/nHQ8d8b7Paoneu5oTh+bmpc6fKxFn5tHBR5F/94yxf4YY3/iHtcC2gMWpx39ZmgU43495HDdx0/UxM0kpVKFc+X3tPDbiCa8+ushlidzjfDznosE34vhq2fqOnkuKR/0pOn3wHNAE+BLoK0TjyGEEEJkf2XKlGHlypUAHDhwgHPnzgHQrl07unfvzssvv0yhQoW4c+cOYWFhlC5dOtH2rVq1YsiQIXzzzTfxpd1CQ0Px8vIiX7583LhxgzVr1tC6deskxy5cuDDHjh2jUqVKLFu2DB8fHwA6dOjAl19+yWuvvQbAwYMHqV27NmfOnKFGjRrUqFGDvXv3cvz4cUn6CCGEq321+bTD5SNaladrzcRlSUxGA2ajjRibOX5Zenv7ngkK58u/TrH+6A3uxdgfvoHIVmqVyMekx6pSv4x/OrY2ol/AtwCeApbizBtkQgghknczNIoPVh9zuK5XneIUy594vo64OX3KBFyhb/0NGBQttlfAP6k4WlrPEdLSPmnb8uUvoZdYc1Yse4FtQCX05E+ZNO4jY1RVY/xvh7E6KKfXpFwATcoHZGk8Iu8wGQ188VQd2lYuxEuLDzpssybwOhOXBfJhz+pOTvwowECgCPAi0BFYiD5aXAghhMgbnnjiCb7//nuqVatGo0aNqFixIgBVq1ZlypQpdOjQAVVVMZvNzJ49O0nSx2g08thjj7FgwQIWLlwIQK1atahTpw6VK1emZMmSNGvWzOGxp06dymOPPUbBggWpX78+4eHhAMycOZMXX3yRmjVrYrPZaNmyJXPmzGHGjBls2rQJg8FAtWrV6Ny5cyb+ZbIXSfoIIbKlX/Ze4sDF4CTLO5YxMaFz0qy8yaBgNtoSjfSxpaOu/43QKPrO2cntCKnVnVMduhzCs/P3sPallpQKSM9InebATGAM+nDq150ZnhBCCAc0TWPUT/8SY0s6Uqd8QS+m9KyeZLnBoI/0HNZiGc80XkuU1RK7L4PD0bFJpfVmcPrbFytmR+9Y4Kz9l0L/jhoBOJ7nJDOtOHyVTSccj8h6+dGKWRyNyIu61y6On6eFF386QFiULcn6n/dc5NytcOYPapAJc0t1BA4A3YBngN+BBehzRAohhBC5w+TJkx0u9/DwYP369Q7XPfnkkzz55JMP3fesWbOYNWtWomULFixw2Hbz5s3xj3v37k3v3r2TtClQoABLlixJsvzLL798aCy5lSR9hBDZzu3waF7/LWk9/4I+bjxZyfENE6ODOX3SWuLlXoyNUT8dkIRPLnAvxs5zC/fyx4vN0lnubTSwAXgfGIAzJ7wWQuRsJ66HserINQ5eCubE9VDcTEYK+bgRabVjUBQ8zEbcLUbcTAZUVcOm6uU80yOlHuoppQeS2yzlbRyvTc9xUtrScalSjY3Hbjps37VmUWY9XSfZ+MwGA9WKn2HHmZr0++ZDAE5O6YzF5Mz5PDJu69bNDktU5FQ/7rrgcPn8QfVpWDY9I22FSLuWFQuyekwLWnyyyeH6XWfvUPXtdcx4sjY9EswF6hy+6OXePgHeAy6jjxAv4eTjCCGEEEKknSR9hBDZSmiUlXpTNjpcN7ptBQzR5x2uMxkUzAY7Vnv65vTRNI2Xlxxk7/m7aYpXZF+nbobzydrjvNs9ae/w1PkMqAYMQu/B6ZViayFE7qZpGh+uPsY3W88lWXfxzj0XRJT7GRSY2KVKiskvi0mlcpEL/LCrS/yyjM7pJ1K26vA1h+dLn/WtRdvKhV0QkcjLSvp7cubDLoxZ/C+rDl9z2GbskoNcvnuPUW0fcfLRPYB30OfMegqoAPwE9HLycYQQQggh0kaSPkKIbGXmxlMOl9cskY/+jUqzZct5h+tNRgMmow1ropE+qbvpo2kaE347wrr/bjhcX6tkfvw9zRgUBUVRMChgUBQMBmKf31+mxK1L8DzRNg7b6Ms0DVRNw67qP3GP434nR3HQmzrZXt7J3jdzvA8l0WP9mYaGpt2fgUDvwK7FP47r0O6onUb8SjT0v33c1ve305fHv+IE2yW3/8t3Izl2LTTJa1i0+yJj21fEzys98/JUAGYDzwOvAHPTsQ8hRG7x7bZzDhM+IvP0rleC4g/M4/OgioUu4W6O4b8r5eOXWVUVj4eWUhPpceRyCC/+dCDJ8rIFvOjp9JEUQqSO0aAw6+k6uJkM/H7gisM209afxN1sZGiLcpkQQQ/gGHqptz7oI39eQU8KCSGEEEJkPUn6CCGyjQ1HbzBvm+Mbaq91rITBkHxP3/tz+iRI+qRyTp+Vh6+xZN8lh+v+N6AeHaoVSdV+hGvtOH2LfvN2J1pmUzUGfbeHP15sls6JfIeiX8R/hj7ip0mG4xRC5Dznb0Uwbf0JV4eRpzxZv6TDeXwe9GzTZcTYTOw9Xy1+mT0dc/qJhzt3K4LHZ21zuO7ZJqXT+T0rhHMoisL0PrUoE+DFZxtOOmwzZdUxfjtwhY961aB2yfxOjqAsemngAcBbwDpgBZDPyccRQgiR22maJudVIgktjSXDs1exayFEnqWqGu+vPOpwXZcaRWheoUCK2xsNCmZj4vJuqZnT59ytCF5fmnT+IIBBTctIwicHaVqhAE/UTVpH/dDlEKq/s44oqz2de56MXp99IHA8/QEKIXIkq13lhUUHiLKmbZ44kT5eFiOj2lTgo141MBsfdqmyix511jN/W3euBBeKX5rakb4i9eLKGzpSr7QfAxqXzuKIhEhKURTGtHuE7wY3SLbNsWuh9P56B2sDHZeCyxgv9JLAPwM7gYboiSAhhBAiddzd3bl9+3aab/CL3E3TNG7fvo27u3uqt5GRPkKIbGHR7gsO50RoVNafmU8lP4FzHLPRgMlgw5agvFtqavq/u+I/IpNJBrzQurzD5SL7GtGqHCsOXSXGnvjmbESMnenrT/Bm16rp2KsP8CN6uY5W6D03a2c0VCFEDqBpGr3n7OSog/KRVYv6MqBJaTwtRrzdTPh7WTAoCpFWO5FWO9FWO0aDAZNBwWBwVIgz9hgpHDvZuFIMOrnFKewvuW1SOFBKMSQXe0rbGBWFMgW8KFvAC2MKI3vvOwv0JygsgC//fjLRGpnTx/l+2nORDUcdl8Gd9FhVTA9N0AmRddpUKsTW19vQbvo/Sc4JQU8Mj/jxAPMH1c+keaieAgoAo4AuwAL00m9CCCFEykqUKMHly5cJCgpydSh5RlRUVJqSKa7i7u5OiRJJOzonR5I+QgiXuxIcydQ1SUdQVC/uy6KhjVJ1I+H+SJ/Ul3e7GxHD5hOOv0hXjm5OId/s/6EvEnuksA/vdq/GG78fSbLu+50XGN3uEXzdzenYcytgC9AGqIM+8qca4J2gjfKQx2kbnl216k3SP49QeoaCZ8U2ZvRerwMBz3QcT4is9d328xy6FJxkua+7ifmDGlAkn3xPuIaGXnLzNm8ue5+ImMSfJ1YHN3lF+kXb7Hy6znF5wyfqlsiEMllCZFxJf0/2T2pPv292c+RKiMM2QxbsY1qfWvSul/obKKnXHtgDdAP6A7+idyLyTmkjIYQQeZzZbKZs2bKuDiNP2bx5M3Xq1HF1GE4nSR8hhEuFRllpNvVvh+ueb1k+1T1H9Tl9rIRH37/x87DyLh+tcVymZPfEdhSWhE+O9XTDUvx9/GaSHsnRNpU3fj/C7H5107nnykAg8B1wCDgKXI5dl/C95uhx2nude3vfAxxPRpyy9PRwz6pt7qH3dn0H+AHomI59CJE1roVEMmOj43kh3u9RXRI+LvULsBWYy4kbj6B/ttwnI32c6/sdFwi+Z02yvHe9Enzau6YLIhIidXzczfw6ogkz/zrFV5vPOGwz7tdDzNh4kgWDG1ChkI+TI/AF1gLTgbfRE0GLgTJOPo4QQgghRGKS9BFCuNTLiw86XF6rZH46V0/9fDomo4LJaMem3p/Tx57CnD7HroXyy77LSZYPalpGEj65wMyn6lDl7bVJlq86fI3nWwZTs0T+dO45ABiXkdBSbc+ezbRu3TpLjpW1tgEvoJfLOwBUcG04QjigqhovLDpAaJQtybryBb14vGYxF0QldCeAl9FHXT6H0bA1SQuZ08d5rgRH8tmGpMnPNpUKMq1PLRdEJETauJuNvN6pMs0rFKDfvN0O21y+G0nHGVtZMao5VYv5OjsC4E30EeJPA5WAn4AnnHwcIYQQQoj7pPiyEMJlFu+5yF/HbzpcN/Op2mmqD28yGDAbE8/pY02mvNuN0Cg6f5H0JpGiQK+6xVN9TJF9eViMrHmpBSYH80LM3XLWBRGJ+5oDq9BPQQYC4a4NRwgHdp69zb8Xgx2um/FkHQypmnNGOF808BhgQx91acRsSHquICN9nEPTNPrO2elw7sPBzaTsiMhZmlYowJ6J7fBxc9zv1a5q9J27k8BkSsFlXA/gFFAf6AtMBiIz6VhCCCGEyOsk6SOEcIkLtyOYvOI/h+uGNi9L6QCvNO3PaFAwGexY7QlH+iS96aNpGi8uOuBwH0/ULZGBESAiu6lS1JdBTcskWb7q8DUW7b6Q9QGJBEqiz1e0G+hN+krFCZE57KrGJ2uTzjMHsGdiO2qUyJfFEYn7ZgCn0efF0EeZGB0k4GwpjPQVqffFX6e4Epz0pnTDsv40r1DABREJkTGFfN3Z+GorqhR1PJonPNrGY19u4+c9F9G0zDg3KQGsRx/l8y56mdvMSjIJIYQQIi+TpI8QwiUW7b5IlDXpTZn8nmZe71Q5zfvTy7vZsCYY6eOovMvnG0+x78LdJMstRgOTulZN83FF9ja63SNYHIwYe3NZIHP/cVzbXWSVJ9Fr3K8Dlrs4FiHu+2HneQ5dTnoTblqfWhSS8p8udAx4H31S9A7xS01GB0mfZEb6itQ7fj2UWX+fdrhuep9aMtpN5FiFfd1ZMaoZfeuXSLbNG78focvMbQSFRWdCBF7o85ItAXYB9dDn/RFCCCGEcB5J+gghstyV4Ei+3XYuyfIGZfw48NajWExp/2gyGRS9vJuaIOljT5xUOnE9jFl/n3K4fd8GJcjnaU7zcUX2ls/DzNAWjkvQfLz2OBdv33O4TmSVF9Fr3L8ChLo4FiFg0/GbTF5xNMlyfy8Lj9Us6oKIhO4W0BL9ZunnidY4HukjSZ+MiIi2Mfz7/Q7/jt1qFaOkv6cLohLCeUxGA5/0rsXPwxon2+bYtVB6zN7O3YiYTIqiL3rHFzf0spU/ZNJxhBBCCJEXSdJHCJHl3lx2xGHptS+frpvunqNGgwGzMXF5twdvVkxffwJH94HKFvDijc5V0nVckf29/GhF6pf2S7Jc1WDhzvNZH5BIwATMAi4CbQGra8MRedqt8GgGL9jrcN07j1fF3Wx0uE5khUnAXWAjUC7RGpnTx/m+33mBi3ccd4p46zE5XxK5R5PyAfw2sgleFsef71eCI+k+ezthUZl1ftIGfbRPS+BZoCsQlknHEkIIIUReIkkfIUSW+nD1MTafCEqyvEuNIhTJl/6yOWaDgslgw5agvFvCmz6bjt9k/dEbSbbrWac4m8a1xiuZSV1Fzmc2GviwVw2H677ddi4TJ+wVqdMa+BnYj54AEiLrhUfb6PblNofrGpb1p3vt4lkckbhvH/A/9JGBST/LZU4f54qy2vl221mH6w5P7kAhHylxKHKXeqX9WTmmBRUKeTtcf/HOPWpMXs+SvZk1z48PsAb4BH3kT3vgZCYcRwghhBB5iSR9hBBZZtupW/xvS9IbCW4mA29mcD4do1GJHelzP3ljTXDT58WfDjg87rvdq2XouCJnqFjYhzn96zlcN239iSyORiTVG+gETAaSJmeFyGxz/znD1ZAoh+uGtyjncLnICifRb4AWQf98SErm9HGuD1Yd41Z40nJWS0c0wdddyuCK3KlsAS/+HNWMeg5GhscZ/9sRxv16OJMSP27Aa8DvwBGgOvBrJhxHCCGEEHmFJH2EEFniekgUL/9y0OG6UW0qUDy/R4b2HzenT8Kkj92uoWkaw77fx70Ye5JthrYoKzcw8pBO1YvQu17SSXs3nwji+HWZT8a1FGAGEIV+gzfYlcGIPOZqcCRfJjNh/dDmZWlftXAWRyR0GvBS7O/tgOObsY5G+kh5t/TZceYWP+y6kGR543L+1C/j74KIhMg6nhYTv41sysyn6yTb5rcDlxmz+GAmfsZ0A84CDYGngImAzD8phBBCiLSTpI8QIku8vTyQoLDoJMu9LEaeblQqw/s3GgyYjDZsauI5fVYcvsYGB2XdfN1NjG1fMcPHFTnLO49XdVi3vdOMrURZkyYGRVaqBKwA/iO5Hv1COJtd1Xjqf7scrpvaqwZvPZaxUagiI1YBa4F3gDLJtjI5LO8mSZ+0unj7Hv2+2e1w3eudKmdxNEK4TrdaxZjepxbJTTO64tBVhi7cm4mJnyLAevSkz1SgI9IZRgghhBBpJUkfIUSmu3TnnsP5dAB+GtaYAt5uGT6G2Qhmoz3RnD5Hr4Yy7tdDDtu/0KYCZqN8BOY1Pu5mBjQp43Bd5UlrCb6XtKSNyEodgOHoc/scdXEsIi+Yvv6EwwnrKxfx4amGGe+QINJrN/AMUAUYlWJLkyHpd7ld5vRJE6td5fXfHJ8vPdukNHVLJV/ySojc6Il6JfjxuUYOk8oAm04EUX7ian7eczGTIvAEFgFL0D8PawGrM+lYQgghhMiN5I6nECJTaZrGG78fcbhu4yutqFUyv1OOU7vkTABuhN4vP7Ln/B1ibElv/OTzMPOME0YXiZxpWIuyBHhZHK6bsupYFkcjkpqCPqlxb+CKi2MRudnawOt8tfmMw3VvywgfF7IBQ4H86CN9HH9exzE6mtNHRvqkyYyNJ9l19k6S5SaDwsCmZbI+ICGygaYVCrBrYrsU27zx+xE+XXc8E6PoA/wF5EMv/bYAveSlEEIIIUTKJOkjhMhUawKvs+30rSTLR7WpQIVC3k46ymGqF5/Jsn9bs3hvh4e2Xv1SC3xkLp88K8DbjS+Tqde+7N8rXHLQ619kpQLAMuAC8KKLYxG51d/HbzDix/0O13WsVpimFQpkcUTivrlAIPA58PAOGg7Lu9nlpmhqhURak01+TuhcmfIFnXWuJkTOU8DbjXMfdaFrzaLJtpm96Qzztp7NxChaoM9r1goYDHQGwjLxeEIIIYTIDSTpI4TINMevh/LCogNJlnuYjfRz2kgbfaJnq92XyX8+j6olna8lof1vtad4fg8nHVvkVE0rFKB/46TvQbuq8eqvh1Cll7iLtQYmAcuBDa4NReQ6EdE2XvnFcSmrAt4Wvngq+Um8RWb7G5gAtAV6pmoLo8zpk26qqjF04V40B3+uqb1qMLRFuawPSohsRlEUZj5Vh6HNyybbZsqqYyzccT4To/AB1qAnwzcC7ZAyuEIIIYRIienhTYQQIu1sdtVhwgfglUcrUsxpiZfXgM0cv/YhIZE+KbYc2/4RApwwf5DIHd7tVp3f9l8h0mpPtHzPuTvsPneHJuUDXBSZ0L0MzANGoN/gSP5mixBpsf7odYLvWR2u+6xvbdzNKXceEJklFOgHlAS+B5KZRf0BZpnTx6GgsGgOXLzLlbuR3InQ56vTEpSFirKqfLvtnMNtu9YoKnNaCZGA0aDw1mNVaVQugGHf73PY5p0//+N/W87y/XMNM2mEnAUYC5QHngZqo8/70ycTjiWEEEKInM5lSR9FUToBXwBGYJ6maVNdFYsQwvkmLjvC2aCIJMsLeFsY3KyMk46yBpgOjODS3QGA457bcfo3Lu2k44rcwGhQ2Pxaa9pN/4fwaFuidZOWB7JubEuHPchFVnEDfgC6AE8Ae9FPGYRIv3sxNqatO+lw3dqxLahcxDeLIxL3vQ/cBFYAxVO9lczpk9idiBg+Wn2MZf9eSdffwaDA6HYVMiEyIXK+R6sW5tDbHWg1bZPDzgNXgiPpPms7f7zYzIllrB/0OHAOfTTkk8Ae4F3AM5OOJ4QQQoicyCVJH0VRjMBs4FHgMrBXUZQ/NU2TMcppNGPjSf69GIzZaCD4ThS/XfsXs1HBbDBgMiqYjQbMRgWT0YDZaCC33b9UUtELVEnFa35YE0WB8gW9aVO5kPQAToVNJ27yy77LDtdN6FwFk9EZlSVj0Hu7VQS+wGRIOgFxQouGNqKAjPIRDyjs6874TpWYtPy/RMtP3wzn/ZVHmdytmosiE7omwFfovf/nA8NcG47I8b7adIYrwZFJlk/vU0sSPi61Dr0v2GCgQZq2dDSnT5RVxWZP32ifjKSLHJVJi2NTNWJs6YspuXPZBxdfvhtJj6+2JzuSLTVe61hZ/i8IkYJ8nmb2TGxPh8//4fztpPNAhkfb6Dt3J78835gKhVKuQpB+BYH1wEj0DnA7gZVA/kw6nhBCCCFyGleN9GkInNY07SyAoiiLge5IYdo0C7wSwj8ng+4vuHHVdcHkAQW83RjdtgIDGpfGkNsyaE4SGWPn4zXHHa4b2rwsveuVcMJRVGAMcBJYDVgc3vSJ81jNojSTSblFMnrXK8mn604QGpV4tM+CHecp5OvGC62lx7NrPYWe+JmIXsNe5pgQaadpGn8cvMKsTaeTrCtf0IsedVI/skQ42zmgB1AV+DjNWzsakfn+yqO8vzIbXlasX+PqCFLUs05xRrYu7+owhMj2LCYDy0c1Z8QP+9l59naS9XciYug/bw8DmpSmW61ilPTPjFE4nsBC9JE//YDqwNexz3OWK8GRzPr7NNdDIuleu7h8JwshhBBO4KqkT3HgUoLnl4FGLoolR4ux610KL7n3B1QUjKCZUDABRhT0x4pmQv/ndnaiwnn7c34KxXl7NGnF8bX15FZ4Ud758z9sqsZzKUzmmZd9vvEk/12/SKhpOT72Lpi0QgC82KY8r3Ws7KSjzI39GQd0BvTyLjZucdvyJfmt/XDTKsW3/qBnDScdV+RGHhYj73WvztglB7EqV4g07sHD3gSzVoRP152g5SMFqV48n6vDzMMU9JsYrYDW6P1DMqtkisiNNE3j9aWH+XX/ZazKdcCKWSsJ6CMoPu1TS0o5utRY9NKNK4G0d9AwGRSilROEmJegEoHeMSQjcsJ7wfGQIiN+eNib4GVvqV8TpJLJoNC7Xgne7S6jW4VIrXweZn4c2og3lx1h8V791oaNW4SalwEQHlGBT9a14n9bzrJgcAPqlPLLpEh6A0WBUegl3+YCQ8gZn2X6PLD9vtnF+dsRKChsOhHErE2n+XNUMzwtMgW1EEIIkV6KllIdgsw6qKL0BjppmjY09vkAoJGmaaMStBkODAcoXLhwvcWLF2d5nDnBx3siOXZH5Y5pHppiBWxo2NGwAnY0xfbAMmdy5nsnO9deV4k2nAHsFIp5Hw+1FhYDvNfMgyJezihTlnucDbbz7q5Irrm9iNVwEU97UwrGTKSUj4F3m7qjpKbW3kNER1+jbdsRhIeX49Chz4i7oLkdqfLC1q3cdJsMQMnIX/AwevJeUw8Ky7+TSIUvDoSwKmQMVsNFjGphikV/hQE3/N0VJjf1wNeStRfP4eHheHtLciOOr+8R6tYdw4ULz3Du3FBXhyOcJCve5/9ctjIv8AZBlo+JNgaCplA0+gssWjlaljAxpLqU/nSVYsWWU7HiDM6cGc6lS0+nax/LT8cw//w3hJp+w02tnqZkR1IZPR9N//YaKd2idbQm6TKr4RJ25Ta+1ifwsw0GoHZBI6V9DTxYWdeggI9FoYS3gXL5DE45RxMir567nLhj54M9wVx3G4dVuQiKnnzOb30WX1sfFBT6V7HQqqQJcyZ1MjAaI6le/S38/A5w925dAgPfx27P/vP8nA22M2n3Ka66j6Rg9CQ81ft9gT9v7YGfe/a8jsur73WRt8j7XOQVOf293qZNm/2aptV/cLmrkj5NgMmapnWMff4GgKZpHzlqX79+fW3fvn1ZGGHO0XfOTvacT3kuE5FxNu5w3W0cRnwoEv0pChYADr3dgXyeZhdHlz3cDI2i4Yd/EWnYx023yRg1f+zKHfxjRvH3iPepVTK/E45i48aNThQuvAk4CCQewdNnwZcsvTAGgHxaW37qM48u1WRElng4m2qj6bxW7L22Ax/b44SZVuBla02A9RUUDPRvXIopPbJ2xNjmzZtp3bp1lh4z+xsA/Ir+/z91Iwc3Hb/Jx2uPE2W1M6xlOfo1LCU3N7ORzH6fW+0qDT7YyEnb20QZDuJr60GIeQmetpZUcZvE6jHNKeTrnmnHFyn5GngBaA+sgthzq7Q6eCmYVv8bTJhxLaWiljoxvpxHQ+W2+UsiTBvwsDfi2TqP0716XczG++eqCgoGxYC/hz/l/cvjbcm5F7gi+8mr5y5Xw65SZ059bt67RqHod3BX6xBk+ZBI4x68bO0pYB0b3/a97tUY0Lh0Jp2LWIH/AS8BtYFvgVqZcBzn2XziJn0XzibI7T0AfK298bMNil+/YlRzapTIfiPu8+p7XeQt8j4XeUVOf68riuIw6eOq8bJ7gUcURSkLXEEv2N/PRbHkaBO7VuFORDRWu8ahI4FUrFQFq13FpmrY7Coxdv133OSxLh9Po2nJz0abnn09rIkTdmPXNL7eDH62wdyyfMxNywcUipmMgkKt99azY0JbiuX3SFXIuZWmaby78ij3DDsJcvsARXOjaNQX3LJ8RrBlDgbLcJwzsegkChf+C3iPBxM+AE83Ks7SC5DPEkBIzN9svvo1Xap94oTjitzur7N/sffaDt5tOYP56ypg0HwIMf+Ep70Fnmojfj9whdc7VcbXXZK8rvUxsAZogZ74Sbnm++W79xi8cBc27S4mCvDmskCuBUcxrmOlFLcTucfkP//j1r1rRLrvxdf2BPltA9DQCDX/Qu+Wxynk2/4he9CA48AJ4DwkGjWtpeJxRuTW/UQDB9ATPV2APyEDo3Nql8xPq4oBrD1nwsfdxL0Ye4YjzMiZanKnuaqqpWs+yOTOUx0t1jQD1T1fxuxXjsPBS5h7eDdzDye/b2+LN01KNGF2l9k8EvBImmMTQsCcfXN4fcPr2FQb33ReyY//eHL+9j0Kxkwk2LSQUPMyDLjhZ30OBQtvL/+Po1dDmfpEzUyIxgy8CJQG+gMNgB+AJzPhWM6hahpKgk/dUPNSrIbLBMSMxkg+Hp+1jZ51ivNqh4qU8Mv+I5eEEEKI7MIlSR9N02yKoowC1qFf5c3XNO0/V8SS09VOMHrCLeg4rWXSw0wxqGkZunxhwR59i7vmbwmyvE9AzMsY8eHt5YHMG9jA1SG61JK9l1hx+Cx33b7DoPlSMGYiRvwIiHmJIO/nqTmnJr/1/Y1eVXpl4CingOlcv96RIkUmOWxhV/UbPZsHb+SltS8x78A8JjSfgL+HfwaOK3I7TdOYs38O+d3zM77FCJ6qGsOjn9sIM60i3LQRz5hG3Iux89yCvfw6oqmrw83jigFbgTrAeODHFFtvOXmLcMPf3LZ8QUDMq3jb2zBr02n+vXSXH4Y0StcNWJEz2Owq4349xO8HT3PD7U3AgLe9AwCNA0YQ4nOB7498xfgWL6bQ2/oa+lwJO7Io6rykIvAaeieOjJRj05X0dyPfdXeOvNYxw/vKLFnbg7AzMfaZ3L53m3PB51A1lYTVHWyqjduRt1l1ahULDi5g8PLBrOu/Di+LVxbFJ0TOZ1NtDPpjEIuOLKJGoRpMaTuFbpW6MrCeyo+7LvDuiqPktz2LqkQSZlrFPeMO8lsH4W1vx+K9l4ixq3zaO7PmlHsMOAd0B55G/x77EMh+/8dVFbTYNHbh6KkEm34k0riLIEs4AdYXMWslWfbvFf46doMfhzaiZon8rg1YCCGEyCFcViBV07TVmqZV1DStvKZpH7gqDiFSo7CvO3MG1COf/XHc7bWJNO4h3LQOgI3HbnI2KNzFEbqOqmp88dcpgiwfYVOuUyDmVdzV6gCMbdOY1f1WATB3/9wMHMUGjAbcOXt2ePKtVBsAHiYP3m75Nnej7lL/f/Wx2p09n5XITWbunskfx//g5cYv42Zyo2JhH/rUK4O37VEijTsJNf4JwN7zd2n60V/E2DI6SbjImCrAOGARsC3FlhHRNuyKXgL1tmU6UYZANDS2n77NnC1nMj1S4RqapjF5xX/8dvAkd83zsRmuUCjmTcxaUQDe6FKNgbUGcuzWMRYcXJDMXvYCzYHDwExgD3ALCH/gJyLBz70EP5FO+oly0k+0k35inPBjRR859QngnNJ6NtWGySATfidkMVoo6lOUpiWb0rxUc1qUbhH/06ZsG3pX7c133b/jh54/sOPSDnou6enqkIXIMVRNZeq2qSw6sogJzSawf/h+ulXqBoDZaGBws7LseqMdT9QtQ4B1FAExr6Ch6eUXDfq5y+8HrrDy8NVMjNIPWAsMBWYBHYC7mXi89LFrGqCfWyuaO0VipuIXM4xow1Guuo3mpmUKdu4SGmWj++ztHLoU7NJ4hRBCiJwie86KJ0Q21KCMPy+3r0rhmCm42SsTYfwbDX1kyWtLD6OqLi+e5xILdpznYugZoowHyG97Bg+1HgCvdazEuI6VaFeuHZNaTmLj2Y1sOLMhnUcZij4w8ENiYpIftWNV9eSOyWCiXbl2fN31a84Fn2PD2fQeV+R2MfYYPt3xKS1Lt2RSy/sjyJ5vWY6C2gA87A25a55HiOl3NFSuhkQxe9NpF0YsdG8AJdF7sAYm28qmaiQcRXDDbQKRht0AfLXpjCTwcqlZf5/m+13HueE2gXDTWixqeTxUfURurzrFaV2pEE9Wf5KKARUZ8ucQVpxY8cAeQtDfWzZgA3qngwZAAHov6YQ/ngl+PBL8uDvpx81JPxYn/Zid8OP85IxVtUrSJ5361+zPlLZT2HB2Aydvn3R1OELkCC+teYlJmybxeMXH+bDdh4nmzYpTJJ87n/WtzfdDGuJtb0uxqNkYycctyyfY0DukbD99K5Mj9USf4+cXYB/6fIjLM/mYaaNfQ8cmfWJvT/nau1M8agGe9mZEGndxyzINO3fRNOg+ezuNPtzInnMyr7EQQgiREkn6CJEGo9tWoEyAJz72x7AaLnLHPAeA/RfusuVUkIujy3rXQ6KYtv4YIaZfQFPwsrUDoGaJfLzQunx8u7GNx1KtYDX6/d6PGHtMGo+yBViIfpN3VIot40b6xF14DakzBH8Pfz7c+iGh0aFpPK7I7W7du0Wx6cW4EnaF4XWHJyrx9EhhHz7oURv/mBdQcCPYPJ9Iw34AFu48j80uyQLX8gI2oSd0RpDcXCN2VSXuRkLRqJmgKYSb9CRweLSNySuksmxucys8mhl/HeWG25tYlYt42zoREPMqAD5uJt7pVg0Afw9/Do04RDm/cnRb3I1JfycsG/omcAP4DWic1S9BpINNtWE2yJxr6TW49mCMipGxa8cSZYtydThCZFv/XvuXCjMrMGvvLEbWH8nSvktTKBGqa1mxIPveao+RfPjFDANFRVWCAbh7L6uqETyBfk1VEugFzCXu/MjVVA20+Fj021Ml/T1oWrYCBa2v4R8ziijDf1x3G0ekYR8aKjdCo+k7dydvLjviusCFEEKIbE6SPkKkgaIo/PJ8E4qY2uNt60S4cQN29NJuszedTlQvPbez2VUaf/QXN+1/E2H6C19bL0wUAGBEq/KJLoD8Pfz5sN2H3Lp3i7Wn16bhKFZgDPpkpI7n8UkUU2zSJ663r8VoYUbHGey6vIsRK0fErxdC0zTe3vQ2tyNv827rd3myetIJbvvWL0mLcpUoGbUIRfMiwvg3AMH3rHyw+lhWhyySKI9en347sNhhC5uqxY/INGtl8LX1ItKwlwjjPwD8vOci/10NyZpwRabTNI2hC/cRxh5iDKcIsI4lwDoKi1YKgE/71CKfx/3EgLvJnY0DNlLUuyjfHPgm9jtiPvAVeieD+q54GSIdpLxbxhT1KcrMzjNZc3oNH279ME+dzwqRWrP2zKL+N/UJiwnj3dbvMr3DdCxGS6q2LeDtxo/PNcKADwCqol8/hkRmZQnqRsBmoC16h5n2gOs7xdk1DZTESZ+aJfLzy/NNmNKjOj72ThSIGYfNcIObbpPjkz8Ai3ZfpNGHGwmLklLeQgghxIMk6SNEGhXydef1TpXwtnUCxUa4SU9i7D1/lwHf7skzZd4+XH0cO2GEmJZgUouQ3zYIgPql/ehcvUiS9h3Ld6SIdxHGrh3LpZBLqTiCit4T7RDwGXq5nJTFzd2T8MbPgFoDGNd0HD8H/kyV2VWwq/ZUHFvkdnP2zeHrfV8zpuEY3m71tsObhYqiMH9QAxQseNvbcc+4jXDjJgAW7jjPpTv3sjpskcRgoB7wIrAryVq7qgF20BQUDOSz9cVNrcgd89doxKBpMObnf/PM53Zut+rINQ5cuk6YaRUGLT9e9lYAVCjkzZHJHejk4LuprF9ZZnWZxY2IG4xb3wlNG45+I0ymm8xJJOmTcS80eIEelXvw/pb36fVLL1eHI0S28v2h7xm3fhwdynfg8IjDvN3qbTzMD782SSifhxmj5g2AGttpMDRLkz4A3sAaYA6wFWiDXvbNdfRzMP08LK68mzG282D/xqX5c1QzPNVmBMS8hJetDTHKaW5a3iPMuAYNOzdCo+n8xVZCsmzUlBBCCJEzSNJHiHTo26Akhdwr42GvT7BpIVGGwwBsO32LkYv25/oekjvP3Gb+jpNcd3sFm+EyXvZ2KOgn59P71nJY5sBsNPPnU39yI+IGT/32VCoSPz8CK4Hp6Mmfh4sv7/ZAiZd3W7/L09Wf5vSd02y/tD1V+xK529f7vqZBsQZ83unzFNt5WIz8NKwR+a0DsWgVCTZ9j4YdVYPPN8rcB65nBH4F8gPPoE9Yf9/9kT76vD4GvMhn64+qhBNuXA/AmaAI2n/2D5ExkhDOya4GRzLqp3+5Y55DlPEQvraeKLH/7rP71cXHPfnSX90qdePZWgN4vOJf2FQP4Gf0G2Mip5Ckj3PM7zafFqVa8MfxPzgffN7V4QjhcqHRoby96W0G/jGQWkVqsaD7Agp7F07XvvJ5mDHEfrfYXTLSJ44JeB74AzgPNCG5EdNZQdW0BOXd9GtIQ4JLyZol8vP9kEZ42x+lgPVVikXPAQzcscwmxLQEDZXLdyOp9d56Plx9LLbDjxBCCCEk6SNEOriZjLzRuQoFYiZg1Apyw/ImYcZVAKz77wb7L9x1cYSZJyTSykuL/yXY+Bs2wzV8rX3xtelJmc7Vi1A6wCvZbRsUb8Abzd9gx6UdNJvfLIVRN2HAeKAhMDbVsT1Y3i2Om8mNuY/Nxc3oxpx9c1C17FHDWrjGxrMbOXLzCM/WehaD8vCvwablC/BkvfL42rpjNwRxz7gDgN8PXOHHXRcyO1zxUGXRa9OfBRIn8eJG+sTd/AdwV2tiUStxxzKHCMM2AM7eimDEj7k/YZ9b2VWNZ+fvIUa5QIRpI962TuSzPQHocylUKuKT4vYmg4l5j9ehXTn45kApIq2eWRG2cCKrapWkjxP4efjxY68fUVB46++35HxJ5GmBNwNpNr8Z7295n9pFarN18NZ0J3wgNukTO9JHU1w10iehrsAZoCnQD3gBiMjyKPRztbjPmthOOobEHQhbVSzIsfc6MatfHcxaMUpG/YyHvREh5p+4aXkbm3ITgP9tOUvXmVtlNL5wuUt37nH0aihRVulUJoRwHUn6CJFOTzUsxRN1yuNvHQmKxl3zd6hEArl7fp9lBy5zIWIHIeYf8bQ1J79tAAbcAPioV42Hbv9mizd5p9U7XAq9xPoz6x20iEKfbPQ6MJO0fExZ1aTl3eL4uPkwptEYfg78mdl7Zqd6nyJ3CYkKodeSXlQpUIX+NfunervXOlbCR2uKWS3LLfNnWBV9pNpbfwTy856LmRWuSLVHgZ7AFGBT/FKbXUNT7CT8HPGymCkSPRWzWo5bblO5a/oBgH9OBrH11K0sjVo4x5x/znAs6BjX3EaDZtDLr8b65tl6qdjDeszGVzh1uxJj1hzlhdUvZF6wIlPYVBtmY/KjuUTqlcpXirdbvc2iI4v4/djvrg5HCJc4cesE9f9Xn0shl1jYYyE7n9uZ6vl7kuPjbsKgeIBmwB6bXImIsWO1uzK5mh9YC4xE70DzKHAnSyPQL5n1v8GD5d0S8rAYeaxmMY5M7kABr3wUjHmD/NZniTIe5Ir7EIJNi1CJ5Pj1MHp+tYPj10Nz7fW4yL4iom28uOgALT7ZRJeZW2n4wUaWH7zi6rCEEHmUJH2EyICJXargqTagcPRUNCWKcONGADadCGLl4Wsujs75QqOszPjrFOGm9Ri0fBSwjkNBoYivO8fe60R+z4dfDCmKwsQWEynsVZgxa8dwM+LmAy0+BTYA89AnHE295Eb6xPm4/cc0Kt6IOfvnyEVAHmRX7UzbMY2wmDC+6/4d+d3zp3rbQr7ujGhZicLR76Ng4oblHaIMgQC88+d/BIVFZ1LUIvW+BMoA3QF9BJZdVQE10Uif1zpWonut0hSMeQ2Dlp9Q0++o6D1Cp2+Qkn05zeHLwUxbf5S75u8AI4VjPsZNqwDAtD61cDMZU94BMcAYoAKPBBxidMOxLDi4gMd+eowYe0wmRy+cRcq7OdeklpMo4VuC7w5+5+pQhMhyuy/vpstPXfAwe3D0xaM8W+tZ3E3uGd6vwaDg62bBgBdq7EgfcPVoH9DnTZ2NXi53P/AIsCzLjm53WN4tadInjo+7mQOTHuXzvvXwtfWhUPR7uNvrEWL+mZuWt9Gwcys8mk4ztlL2jdXsv5C1SSyRdwXfi6HfvN0sDzxIqHE5Mcp5QqNsjPv1kItKOQoh8jpJ+giRAQV93Nj6ehvc1Gq42Wtw1/wNMcpZAL7afMbF0TnftHUnuBF5hHuGPXjZW6Kg32CZ/UxdPCwPu7F2n8Vo4fcnf+fMnTN8vffrBGsuAR8BvYHn0hzfw5I+iqIwrO4wjgYd5ZPtn6R5/yJne/PvN5mydQqVC1SmYfGGad5+XIdKNClTDn/r89gNN7lj/goNjRibygyZ3ycbKA6sQp8MeAigJpnTB8BkUPikd03MWkkKxrwJipUI4z8AHLoUzO8HLrsgdpFec/85yx3jT0Qa9+BnG4C7WgWAdpUL8UTd4qnYw1TgBHppQDfGNx9PMZ9irDq1itWnVmdi5MKZJOnjXEaDkcG1B7P61GoWHFzg6nCEyBKqpjJj1wza/9Aem2pj2ZPLKOZTzKnHyOdpxqB5oXI/6ZN9bgb3AnYA5dGvxb4CbJl+1ETl3TT99tSD5d0c6VW3BL8Mb4KHWpdCMZMJiHmZaOMxblje5J5hNzZuA9Dvm93sPS+JH5G5om12nv5mN3su7+Oa2yvctXzDHfMcAKx2jSOXQ1wcoRAiL5KkjxAZVNLfk0ldq1IwZiJgJNy0AYBj10JZ/9911wbnRH8eusrCnee4ZfkUkxaAr7U3ALVK5KNeab80769pyaa0LtOaRUcWxc7tEwL0R79hOy1dMVrtVoyKESWF3mEDaw+kb7W+TPhrAt8e+BarPbtcaInMdCzoGDN2zaBu0br88eQfKb5HkmMwKHzYqzre9vb4x4zCarhIlOEwAIt2X2SblAbLBsoA04G/gXbk87iEPqfP/dMdo8GAu9nI4ckdcFMrYVEf4Y75a6KVEwB8tuEkqkwCnCOcvhnGyiOXiTBtwMPeMNH8ct8OapCK/+fzgXeAJ9HnNoAi3kW4MPYCRb2L8vmuz+U7Ioew2mVOH2eb2GIibcq04cXVLxJ4M9DV4QiRqS6GXKTbz914ed3L+Fh8+K3vb7Qu09rpx/F1N2PAO9FIn+yT9AGoh14mtz3wYuzv0Ew9ol59QT/vii/vlsq7VI3KBXD2wy5M6VEDb3s7AmJeItpwnCC397np9hYqUUTbVAZ8u5vNJx6sLiGEc9wIjaLSW2s5cu0sN93eRNEsmNTCqEpYfJuwqOz0/zxv0zSNfy/eZe4/Z/hsw0mWH7xCyD3593mQqmrxP5qmSaWcHEqujoRwgueal+WXfZe4c7chEcZ/8LX1wqQVZPgP+1k7tgWVi/i6OsQMORMUzuif9xFi+hmb4QYFYsZhIgCAKT0ePo9PcobVHUa/3/vx3J/PsaCHEb132QKgdLr2l5qeviaDiTld57DhzAaGrhjK7cjbvN7s9XQdT+QMUbYo2n3fjvzu+Vn25DJK5SuV7n1VKOTDd4MaMHDBPULUXwiyTKFo9JeYtSL0/3Y3z7cqR91Sfni7mfQCFbH3nBUUNE3DrmnYVQ1N03s2KgpYTAaHZSyO3rZjPp01iaS0p8Cce/BCPu6UCfDElNqr/BQNA+zABF7t0J121T3p95uR6NiKm6bY3qO+7mbe7FKVKauncNl9MGGmlbhZK3H5biRzt5xlZOvyTohFZBZN03h96WEijFuwK3fwsrcGwGI0ML1vrVTs4S7wOtACWETC/wUmg4l3W7/L8JXDmbx5Mh+0+8D5L0A4lU214WXwcnUYuYq7yZ2vu35N1a+qUuPrGmwbvI1mpZq5OiwhnC48Jpy+v/Yl8GYg0ztM55Umr2TasfJ5mDFoiZM+Pb/awcZXWlGhkHemHTdtvIA16NdkzwOt0Ef9NMmUo9njR2VDXJ/klMq7PchgUBjQuDRVi/oy/HsL5ntlCTP9QYRpM1fdXqRI9CdEWQMY9N1eutYoymsdK1GmgHxfCOdYefgqo376lxjlLEGWT9CwUSTmA0JMvxBlOBTfLiw680fNiZTZ7Coz/z7NzL9OOVzvaTFiU7W4HDRa7APt/qL4xMeD6Y+4T6y4Dmf3n8etVxLcF3CwLtHz+/vRNA09JP3+gcmgYDIaMBsVjAYFk0F/bDIaYtfpyx42WDKl9I1d1bh05x53U5EIUx54Tcnt3xn5ouL5Pdg+oW3Gd5THSNJHCCdQFIUBTcoQuPxJIt3+JcjyIUWip6NgoNOMrdnsRD5tom12Xl96mDDjKkLMi1E0LzzsjQF4sn5JapTIl+59P13jaQ7dOMRf5z5G00DVXsZoeCbd+0vtRM5+Hn5sG7KNxvMas+DgAl5r+lq6Rn6InGH1qdVcC7/GmmfWZCjhE6dN5UI807AyP+ydyhW357lrnkdAzFiMeDP3n7NOiDiBvbudu79szNNipFaJ/IxuW4Em5QMy8H9SQZ+QuCuBVwZTr+Tf1CuWjx2xSR9jgrPgoc3L8eu+y9y924Zw4zq87Y/irtbk47XHKZLPjZ51SmT0ZYlM8um6E+y5eJrb7l/gZq+MZ+z30tMNS+JpSc3p7VvoiZ8vSVj+L86wesNYdWoV8w/O590278ookmzOptowGx7+/S/SplKBSmwfsp0m3zbh23+/laSPyHWCIoKoM7cOV8Ku8FOvn3i6xtOZejw96eNLlPEgkYZ9eKj1AegxezsLhzSgXmn/TD1+6hnQS+UWBQYBLYHvAef/fewaxJd3S0fSJ0690n6seakFQxa6E3ilAt72Dty0vEuQ2xTyW5/BXa3LqiPX2HIqiB+ea0Ttkvmd9RJEHqSqGtM3nGDWptNEGDdy1/wtCmYKxkzErBXDgAeqci++fXiUJH1c6cLtCIYu3MeJm0FEGwKJMP6DTbmNUfPHx94ZRXMn2moD5cGkjpbgmfaQnpJK0t8JN1EVku7AwTaJJCh/iQHFbgSrMXaaBSOKZoqduzbBsgwW9FKJxGo4j2aIG4H5sJgf5mF/t5SZ1OKYyC7fjTmPXMEK4SRPNSjJr/vqsOPa89y2fM41tzEUjn4fI368v/IoC4ekfQ6R7ODrzWfYdfEoIW6LMatlKBT9Lgb0yUyfa1E2w/t/q+WL9K/5GTcirCw7VpiRDdK/L6ua+vIuVQtWZXqH6QxfOZzPdn7Gq01fTf+BRbYVERPBtB3TKOxVmPbl2jttv5O7VWX/hTuE3+5DiPknrrgPwU2tgEWtGHvilfRkSJ+k1g6o8RPWKpgzfGKWca5NeBq0fFi08mgxVdh59jY7z95mRKvyTOhcOYN7LsWyf1+mVsm/8UzwsWAy3n+9BoPCG10qM3BBP6INh7llmUbxqHkoWHh5ySFK+HnSoIycZGY320/f4qvNZwgz/QmKjQDryyhY8HEzMabdI6nYw1T0XstjgORHBQ2sNZDlJ5Yza88sxjYe65zgRaaQOX0yT+MSjRlcezBL/lvCkDpDaF6quatDEiLDNE3jyz1fMnbtWEwGExsHbKRduXaZftx6pf1Y/l9frIYL3HSbjJtdLxEeHp2fJ77eyZLhjWlULiDT40i9zsApoBvwDPAXMANwXmdGx+Xd0nduWsjXnZWjW7DpxE0GfwcB1pe4Y/4fN90mY1JLUCT6I8Ki/Og7ZyeLhjWSczyRbm//GcjCXYe5Y/6Ge6Z/QDNTKGYCHmptAAyaFxr30NBQUAiXkT4uczYonA6fbyGM/dxxm4vNcAVF88CiliPSuEf/9xPZVkDMGLztHVwdRo4lV0dCOInZaGDugHq0/CSYaNsxwk1rCTdtIJ+tL/+cDOLQpWBq5bAeRVa7ysId57llmQpAgZjX4su6zXy6DhUL+2TwCBreliFUKwij15Rg/ZlvGVh7NJ5mz3TtLa03fQbVHsTKUyuZ+PdEhtUbhq9bzi7DJ5J6f8v77Lq8i+97fu/UG4JuJiMf9qxB37n98LQ3IsT0O1bDeUJNvxPfG0h5YByzZgAMsRe0+kWthpWUB1hnNhfX5k3wN7KoFcln7YOn2oQ5/5yhWYUAWjxSMEO7j7ZaAHA337958OCNhDaVCvFE7Sr8fHgEN93e5JJ7P4pGf4FZK86by46w/uVWGYpBOFd4tI3Jf/7HXdN8Qs2/42avjFkrDsDrnSsT4O32kD2cRp/HpzfwWYotu1XqRrdK3Xhl3Su0L9ee6oWqO+MliEwgSZ/M9V6b99h6cStDlg/hxKgTMjpa5GjRtmg6L+rMpvObaFi8IRObT8yShA9A3wYlWf9fXXad/4S75u8IN60lyPIRAdaXMWtFePJ/u5g/qD5tKxfOknhSxxe93NtE9NGx/wErAeckp+yqhqbE9WTXP1vSmfOJ16ZSITaPa82A+R5cvNOEe8Yd3DZ/QZDlQwrEjAd7AfrM2UmVor58N6gBRfK5Z+yAIs+IiLbR4fMtXA6O4JblM6IMh/G19iG/7dn4ERGeFiMhqicoGhpRKHhI0sdFftx1gbf+CCTKEMhNt7cxqgUJiHkVD3tdjOTDTgjRhpOA+kDHTUh5FE7c4ySFzJL5nXSZlszy+4+V+B+F+x1INcWOhk1/jA29Q6kNFFtsqUyVjHXqNGJRy6JgSSa2+6Xvkr+XoDzwLP3xmFSpvJERcnUkhBMVzefBlB41Gf/bKKzKRcKNG/CxPYYBT8b9eohVY1pgMbm6V3/qfb7hJDciTxLjfgb/mBFYNH2unXnP1qd9VWdcjCwDNqIoX9KhfCm+2tuDXkt6sbb/2nTtLa3lXcxGM682eZU/T/zJutPr6FOtT7qOK7Knc3fPMX3ndB6v9Dj9a/Z3+v7rl/Fn0dDGfLIuP/9eTHn+l7heXiIxvYr7XSJMfxNs+oFbls8oHjUPI/kY9dO/bHi5JYV8038hfi826eNhSjhfywMnoYrClJ41+PvETaKtTxJiXkK4cR1+tiGcvBHO5xtO8vKjFdMdg3Cut5Yd4b+gw4S6/YGbvToB1rEA+Hma6V67WCr28CpgAb7AUVm3hIwGI/O7zafczHLU+LoGC7ovYGDtgRl8BSIzpGWkr0i7Er4lmNh8IkP+HMKuy7toUjJz5vYQIrOFRocyes1oNp3fxLRHp/FS45ey9LPD193MomGN+HC1L99tH4WbWpk75rnctEymaPR0DHgxZME+yhXw4vvnGlLCL30d4ZzPA/gcfX6fJ4FywHdArwzv2a4lLl8E+kjsjCpTwIs/X2zOt9vOMWuTfn142/wlN9zepEDMa7hpFTh2LZTGH/3FjCdr06NO8QwfU+Ru/10NYciCvVwPDeeG5U2ijUfxi3keX/vj8W2m9qqBTdV4aYX+f1flHgY8CIt6+Pwownku3bnHW38E8s/JIMKNf3HbPAujWphi0bMw4AFAsXzuuJm9uBUWIHMuJUNRnDMfj3AduToSwsmebFCKjcdusvx4H4Is73PbMoOCMRM5dTOc9Uev81jN1NyUcr3ztyKYvfk4dy3zQTPhaW8BQPsqhZ2U8LkDvALUAEbQrZKJ99q8x6RNkzh5+yQVA9J+kzU9PX2blmxKgEcAU7dPpW3ZtgR4ZqeSCiK9LoZcpPLsythUG0PrDM204zQpH8DvI5vy76Vgtp68xbFroYRGWWMnfEw8+aNB0UeZGBR94kWjomDXNKx21eHJ1N27d/Hz88u02OO4+kQu0urHwUv+eNobcdVtFDfd3qZw9FRCIuGTdSeY1if58lsPExWX9EmQCzYakibevd1MfPl0XQbOtxFjOEe4aSOe9ma4aZWYvek0veuVoKR/drnxknedDQrn94OnueH+Nkb8KBgzASP5AZjVry6+7g9L+o8H/gQ+BlL3XRzgGcC33b6lz699+HDbhzxb61kZ5ZANpXZOP5F+T1R9gpfWvsSYtWPYMmgLHmYPV4ckRJpcCb1Cv9/7se3iNl5t8qrLSjubjQbeebwadUv5MfpnMGoB3LS8wxX34fhbn8fT3oSztyLoMXs7y15ols3OP3oAe4HhQB/0RNBIIP2fv1qCOX2U2M4YRid9z/p5WRjXsRI96hTjqf+5YbjnzU3Lu1x3H4unvSm+1j64aY8wdslBLCYDXWoUdcpxRe6z8egNRv18gLv2/dxxm4XNcAP/mBfwtncGoHbJ/Pw2silGg8Lyg1fiEwuacg+0AMJkTp9MZ1c1jlwJYfGeiyzeewk7wdwxz+WeaStu9uoUsL4S/+/yzbP1eTT2npaqaoRF2TAalfjOgXEfQXGdNhUlwXif2JUPjvXRNO2B53HrtSTX2wnXJX6eeD8GRY8gbp4zm6pis2tYVRW7qumP7Sq22Mc2VcVqTzgPUUqS/5x1NxuoUMgbN1PSDnLx8TmIOeE1UpKZgOTyySUk6SNEJpjWuxYHpt8lOroXoabfsXEbEwG8v/IoLSsWTMWNKde6GxFD62mbCTf+RZTxX/xjRmEkHwCDm5VxwhFigLbANeAH4j6KnqvzHO9sfocpW6awsMfCNN9YS09PX5PBFH9Db/DywSzosQB/D6nvnJNFWiMZvmI4mqax8umVdHmkS6YeT1EU6pbyo24p5yZoNm/eTOvWjZ26z+zq0p17tPhkEwViXuOW21TuGbfibe/A0v2XeeXRihTLn76bi9E2I6oKHgnn9Emm92irigV5oXV5Pv+nH0Fu7xNkmUrx6HnYVCMjF+1n2QvNMBtzzkjN3CbGpjJ04T4ijNtQlWAKR0+NT/j8OaoZNUvkf8getgKfAMPQR/ukXu+qvVnQfQGDlg9i9t7ZjGo4Ku0vQGQqKe+W+XzdfPmx1490X9ydMWvG8Mmjn+DnkfkdE4TIqBh7DF/t/YrXN7yOVbUytd1Uxjcf7+qweLxWMaoV86XnV2YMUZ8RZPmAW5ZPcLfXpVDMu9wKj6Hv3J388nyTbJb4qYk+t09v4CVgKbACYq8V08quavFzXd4v7+bcu4MVCvnw+8im9JkL5rB53DJ/yj3jDqKV0xSNno4RP15YdIDG5fxZMLgh7uaURwKLvGX9f9cZ9sM+gk0/EGr5HQPe5LcOxseuX2O2eKQA3w5sEF9C2tvNhEG7P9IHSFTezWZX2XP+DoFXQoiy6p3/7icZ7o+u0ABV0xMGmqYleq5qCUtsxW2b4Ia7knA5ySxP/P8sYXJCv5EPFy/GsPPesfgb+3FxxXVwjG8fG1/C5XHPiXseu05N8BjtftLg/vb3n5NwfynsO8pm5/ClEMKibWiohJp+J9i0CNDwtDfDL+Z5TOj3eH4b2YR6pe/f7zEYFPJ5OuP+XFZkNVz/2RSf9Er0ciWjk13J1ZEQmSCfp5n3e1Rn2E+PEmpeyl3zPApYx3EjNJqak9ez8422FM2XfXtIvvzLQWKU89w1z8OslsLb3hGALjWK0KxCASccYRZwCPgNaBG/tKhPUd5s8Sbvb3mf1mVaM6TOkDTtNb09fbtX7s6YRmOYvnM6Nb+uydmXzmIxWtK8H5E9fLTtI9afWc/XXb+ma8Wurg5HpEJJf082vtKKdp9pmNRihBvX42Vvh4KRZh//zekPuqRrUl+7CpE2A+4JznZS2s/oto/w/c4L2GKGccttKhHGLXjb2xB4JZRH3lxDx2qFaVDGnxi7yr1oO5FWO3ZVw2RQcDMbsNn1CxSzUUnaS/WB5w/r/ZTchZumwZ2IaMKj7fi4m3AzGUDR28f1QvNxN+PtbsJmV2N7fWnY7CpWVcMe10PMrj92JKW+YSmNDHvw4jMhN5MRk1G5f+Eae8F66XI0m0P/c3gxCxqqCtE2O38cvIpVuUKoZQkmtQRuajUARretkIqEjx0YA5REn4A67RdMT9d4ml+O/sLoNaNpVboVNQrXSPM+ROaxqTZMilzWZLZulbrxWMXHmPfvPAKDAtn53E5XhyTEQ41ZM4a5++fSrmw7JraYSJsybVwdUrxyBb1ZNaY5w773IPDaTELMiwgzreSm5S0KxkziWgi0+GQTU3vVoG/9kk4pe+YcXsBq4HtgKPr13FdA8zTvya5mTnm3B5UK8OTX55vS6+sdGMM/IspwiJuWd7ni/jxFoz/HrBVn19k7VJ60lik9qtO/cWmnxyBylohoGwO+3c3+i3cINS0j1PwLnrZW+FtHYESf27h1pYLMe7Y+pgQdw7zdTCjEJn2Ue6DB5hNBfLT6GP9dDWXX2dvY1BxUM+vcWVdH8FB27hJl+I8Y0zkijH9hN9zCw96I/NYBWLQyAPi6m1g4pCF1nNxRU4jsTK6OhMgknaoVoVKBity7O5Bg80JCtbL42nqjYGDY9/uyba/xLzae4q8TZ7jhPgFNicLH2hUFvRzV5G7VnHCE68C7QGegZ5K177Z+l41nN/Lcn89x5MYRPu/0ear3nJGevu+1eY+7kXeZf3A+SwKXMKDWgHTtR7iWXbXz3cHv6PxIZ56v/7yrwxFpUKGQN083KMU3B3pwx/IVd8xzCbC+gKZB+YmrCXy3I95uafv/bbNrRFqVVI30AfCwGFnzUguafxKFWS3Dbct0rNZzeNu7YNaKsO6/G6z770Z6X6JIzoXzD20So5whyDIVVYmkYMwrKCi4mw0MaPKwmzIaek/kg8BiIH29pS1GCz/0/IEyM8owctVIZnSaQTm/cthVO3bNTgHPApgMJqx2K5G2SO5Z76GgYDKYMBlMyY5c1VLIoiWXRMuqbVLaLj3bPGy7Ql6FMCjpOy+y2mVOn6zybbdvGbBsAOvPrGfnpZ0yv4/ItmyqjZ5LerLy5Epebvwy0ztMz5blOUv4ebLshaa8uOgAG48/j0ktzl3LXG6bv4y/uTzh9yMs+/cK8wc1wCuN50KZRwEGAoWB54A2wEKgX5r2on9nxJYGik36OKu824NKBXiy9812/LjrApOWmygaPZMbbhO46v483rbO5LM+iYkCvPVHIHciYhjT7pFMiUNkfxdv32Pkov0cuXqTu+ZvCTetwcNenwLWV+LLEL7WsRLDW5ZLlPAB8HY3YdC8gPsjfQDmbjmLnWCiDaeIsGxEJSJ+lNv9gmFx73019n+FGv88frniqHyX4/8ziqYk0+bB9vf3qe8/8bJE6+MfO26nJVme+LnmYBuUh+0j8f4S/200NCUq/pVY1PL4xQzG0948/t/qsZpFebNrlWzd8VqIzJBdzhiEyHUMBoVpfWrx5Ny+RNkPEmz+nhjlPAWtrxN4JZS/j9+kY7Uirg4zkdM3w5nx9xGCLB+hco8i0Z/iplYB4NkmpSnkk/4J1XV30ScAjUGvAZ305ERRFBb0WEC779sxc89MXm/2OkV9UldfOSM3fTzNnnzT7Rv2Xt3LyFUjeSTgERqXyBultXILTdMYvmI4l0MvM6PjDFeHI9LhxTYVWHHocay2S4SZVqBgxM/6HAompq8/wTuPpy3xbFc1omzKA3P6pHwjoaS/J6+0r8r0jdO4aZlMqPl3wkwrsaiVMeAGaKhEoSnRaFgBBYPmjqbYARVFM5F0JMnDbl4kGfeT7DNVicJOCAbcUHAj4QWioikouGPQfECxo2FHwwboj8GOpiR8ntwN+PT0PkxpGxMKZh68+NMvdOO2UxMsi3sed2Fnx24IAqBA9Bu4x47y+ahXjVR8Ly0CZgNjgb5peUFJ+Hv4M7vLbIavHE6DbxokWheX4LGqMlFvehX0LEjdonX56Ymf0lxmVcq7ZZ1CXoX4re9vlJ9ZnieXPsmB5w9QwNMZo8CFcJ5/r/3LyFUj2X1lNxOaTWBy68nZMuETx91s5NtBDdh26hb9v1WwW4MJNf1CtOEovrYe+Ni7sfvcHZ6Zt5vFwxtns/JjnYBjQDegP7AWfdSPd6q2tmux5d20+zfOM3NAk6IoDGhShqYVCtB5hgEt+l1CzEsIN60h3LiBItHTcNMq8NmGk+w6e5v5gxpks7+3yGxng8LpM2cn1+4d44b7O6hKMN62DvhbR6OgUMLPg99HNqWQr+NzUB83M4bYTkY2wzVCDEuINpwgxnAKu3IXAIOWH7NaBP2aIWEiJO63gfvn+Ar6ubQCGPT8SKIEUcJz8NSc2z/4OH62GkAhPueT8Boj0fEUeOC5knCd5qhtGvfhoF3SxNj9x0bNH3d7dSxaOe7/raBrzaJM6lqVIvkyeh9LiJxJro6EyER1S/nxRucqvLPyDYIsk7ln3IbdOgwjfkxbd4JWFQtmq5PIRbsvEKr8RbTxCAExL8cnfCoV9uGNzlWccIR3gNPA30ClZFtVDKjIxgEbqTy7MlO3TWVGpxmpulCzqTbMhvTXYzUoBtb1X0eTb5vQ59c+zOg4g2almmFQDKn+0UssZd+LSlfRSzdpyT6+P2Fh0sep2e5GxA2m7ZjG/IPzGd9sPL2q9MrS1yeco6S/J9P71mLYj88QaThAmGkFbmoVvOwtWbTrIi+0rkBBH7dU78+mqkTZFNxN9y9uTMaH//8c3bYC4dFW/rf1PaIMR4gwbsam3MCuRACgaB4YNN/YRIaKRhSK5oGCAQ1bgsQFJL34cnQxltLFWuKxEQbNC7NWHE2JRiU6wTb6j6pEYFOCYnu2mVAwomhxj00omnvsOmN8j9q0SeHvpzlYp2ixyacY7l/QJf2Jv9DT4i5yDbFH039bbOXxUOth1koC8ELr8vSsU+IhsYYD44H6wPSUY0+lAbUG0KF8B7Ze3Mq/1/5FURSK+RTjRvgNYuwxeFm88DR74mHSexLaVNtDE0EP1lSPX57Cd0ly26S0XXq2SWk7Z8ZntVvZenErvx79lY4/duTXPr9SJn+ZZPfxoPSWdxXp423x5s+n/qTxt4354dAPvNzkZVeHJES8eQfmMW79OGLsMYxrMo6P2n/k6pBSrfkjBfjxuUYM+96IR0xdbpk/5a7lGzSrDV9bLw5eCqbVp5vYOaFdNir1BuALrEG/1vsMOAn8CRR66JZ2FfQyrAmSPlnw2soX9Gb7hLb0n+fF8RsViTIc5JblU266vU1AzMt4qg3YceY2lSetZXynyjzfslw2+5uLzHDiehi9v97Bddsmbrl9ipF8BMSMwcveBgWF0gGe/DayKQW8k78e8XE3ocTO6RNsXgCASS2Bu702FrU8Jq047moNDEgiwtm83UxUKepD3VJ+9KxbnMpFfF0dkhAuJUkfITLZoKZl+GHXBdTbL3HVfSR3zQsJsL7EqZvhfLvtHC+2qeDqEAE4fj2U77afJ8KyGbNaCi97WwDaVCrI/EENnJDICETv9TUcfbRPyioVqMTwusOZuWcmbcq2oUflHg/dxhk9fYv6FOX7nt/T+5fe9P61d7r3k5ZEkUExoGkads0eXyrowd/JlctJy8299LSNS2LFtUlPgiYrNSnRhCltp0jiLQfrVL0ovWpX5I+DX3PFbShhxtV42psTY4fxvx3m24H1U/3va1eTlndLzeTABoPCxC5VKOTjzgerLXio9dL7coSTeVmMPNu0DOM6JN9xQGcDRgFX0SeZdl451cLeheldtTe9q6b/O0IkNbrRaP44/gfPLnuWl9e9zLInl6V6Wxnpk/UalWhEvaL1WHhoIWMajcFoyD6dmETetfToUoatGEbzUs31kpxpSB5nF80fKcCvI5ow5md3ztz6jiDLuwSbv0MlHD/bQG6ERlNu4upsmIjwAD4BmgJPAuWABUDK35Vx5d0SdkRJzbmaMxT0cWPVmOZ8u+0cH61RKBz9Abcs0wmyvI+vrQf5bf1RsPDx2uMcuxbKF0/VlmuMXO7D1ce4Yd3KbcssLNojFIp+GyP5AKha1JcFQxqkmPCB2PJu3C8jFhAzFm97+0RtDApULeZLgzL++LiZ9K5bWtw1tT6fp0GJ7SqlKImeGwxx83jefy8mvO5OrspuwvsJCdskGuujJL5ncO7cWcqXKx8/b2jcceOaKPExkihWJXZnD26T8DkJt4k/9v3//0oK25Poud6uaH53KhfxTdc8sELkVnJ1JEQmMxgUNr7SigYfWAmP7k2oeSle9lZ4qHX4bvs5RrYq7/KTdU3TGPzdXkJMvxFtPEp+6+D4k4iPn6jphJPbi+jz9/gC76d6q6+6fsXKUyuZ/+/8VCV9rKpzavq3LN2Sa69eY/2Z9VwIuYCqqUl+NE1zuDw9P3bNHp/8MSpGjAZjkt+O5jlIy1wL6WnrKJETlwB6MCmU8HH84GsHj1PaLiP7cDO60a5cO8r5lZMbf7nA9D61WH7wKr62nty1zCXY9D1+tkH8ffwmgVdCqVEiX6r2Y1M1Im0KHub7I29MhtTd/FcUhWEtyzGsZTlO3wxjw9GbhEZZiYyx42Yy4Gkx4WExYDIYiLap2FU1vqZ3jE194GIq8f+zB/87JvlfmPCizMEqH3cT+TzMhEfbsKlaootEVdUICo/GpmqYDQomowGTQcFkVDAZ4h4bMBsVDIqSbAmVFEdxJLdNMu01INqqYlXV+xessReFZ86c4ZEKFRJduBkM99sYYi8AjQYDVYr6ULWobyq/kz5Gn1tgEiBzjuQUPSr3YGT9kUzfOZ0LwRconT91E2lL0sc1xjQaw8A/BvLW32/lqNEUInf6au9XvLj6RWoXqc2GARtwN+XcXvTVi+djxejm9Ji9HW5O4rZ5BqHmXwE7+W0DUDDz8drjBF4NYXa/uq4O9wE9gH+BYehlVT9Cn1vP8b+HXdXQS7re/27PymlvTUYDz7cqzzONS9N3zk4OXZ/ILcvHseV9V+NnHYaPvSN/HrpKtM3Ol0/XxWLKfvPyioyz2VV2nA3iluVzDHhQIOa1+ITP7H516VozdSXnzUYDlQrnI+LWWAxaPjxVvSSwyaDw8RM1qV48H6UDPLNVxZfkbFYu07p1eVeHIYRIJ7k6EiILGA0Ks56uw9Pz+hFmWkOE8W881DrcCo9hyqpjvP14VZfG9+ovh7gaEkqI+y942Bvga+sBQK86xZOtVZs2o4FrwAYg9XXfjQYjA2oO4NMdnzLvwDyG1h2aYntn3vQxGox0fqSzU/YlhEgbk9HApnGt6fi5gWh7IOGmNeS39UPBwhd/neKbZ+ul6sa/PtIH3M33Uyfp6f1VoZAPFQr5pHk78XCb7Rdp3bysk/d6GfgQ6AW85+R9i8w2ssFIZu+dTffF3dk9dDduppR71Gqa5rROHyJtnq31LJvOb2Lq9qkU9CrI2MZjHXZSESIzhUWHMfCPgSw7voxHyz3K8qeW5+iETxwvNxMbXmnFx2uPM2vzUFQljFDz74SaVuBvHYmPvQOrDl8j2rqXOf3rJZlM3rWqol/39QMmAMuBVYBfkpZ2TUNTVHDBSJ+EvN1MLB/VjH7fGNl7/gvuGXZw1/wdd8xfA3Z87F1Y998NKr61hh+ea5jl8YnMd/ZWBPfs19DM98gX8xxmTZ9/+dcRTWhQJm1zDb7RpQrP/3CPGLuKQYEhzcryRpcqMgpFCJGlstOZgRC5WtMKBWhdsThe9lZEGLcQYdgGwPzt53h5ycFkR2Jkts0nbrL03xPctExGUyLwsXVDwYinxZjmSdMdW49e0zl9va3fbPEmbcu25cXVL7Lv6r4U20pNfyFyj7IFvHip/SN42zqhKhGEGdcBsPHYDeZtPZeqfdhULV1z+oiczIpe1k1Fn8dH5DRl8pdhUa9FHLpxiJYLWnL81vEU26uaPpIvI3P6ifSb0mYKAK+uf5Vlx1Jfkk8IZzh4/SC159Zm+Ynl9KvRj/nd5+Nh9nj4hjnI6x0r0aduVQrFTKZg9FsYNX/umucSbtwEwMZjNxmz+N/YETPZiSewDFgC7Ecv+7YxSSv9Etj1SR/QR2j8OLQRg5uVwVNtSpHoabiplblj+YoQ05L4uRQHfLuHrw5GEWNTH7JHkVPYVY3+83ZjVfRrDIuqd0gqV8ArzQkfgDaVCrHrjXb88FxDdk9sz1uPVZWEjxAiy0nSR4gsNLhZGfysA7FoFbht+ZwY5SwAy/69wqLdF7M8nkt37jF2yUGCzT8QZTyMm70m7mpNAJ5rXpZ8nhm9gXIKfQ6fCsDYdO3Bx82HuY/Nxa7aafBNA/bf3Z9sW6tdevoKkZsMaFIaf1Nd3O11uGv+hpjYC7EPVh/j5z0P/8y0qxqRNvAw3b8olwuu3G4Meo/iD4Ayrg1FpFv3yt3pVqkbe67sYcLGCSm2tak2APn+d5HivsW59dot8rvn55sD37g6HJGHHA06ylNLnyLKFsX6/utZ1GsRJXxLuDosp1MUhWm9a/FJ75p4qo0pEjMVk1aU25bpRBr066LVR65T4c3V/H38houjfZCCXuJtDRADdEQvvXpfXHm3hHP6uPJczc2kd3w8MrkDZfyLUDjmAyxqJYLNP3Dd7RUijP8AsOe6neE/7MNml8RPThd8L4Zn5+/mWtgt7poXgqZg1vTysu2qFEr3fv29LLR4pCAFfVIesSyEEJlFkj5CZKHWlQoxoFEV/GNGoCnRXHMfQ5QhEIAZG08SFmXN0nimrj3O5ei1hJlW4WN7jCIxH6JgxGIyMLR5uQzu3Y5+kh8B/Ayk/2SnnF85dg3dBcDq66uTbSc1/YXIXXzdzbzRuSoFYsaj4M5Nt3eIMhwG4J0//yMoLDrF7R2VdzNJ0icX2w/MRU/8vOLiWERG/fHkH7zU6CVWnVrF9fDrybaTpI/rBXgGMK7JONadWcfXe792dTgil1M1lZUnV9JoXiMuh17mh54/0K5cO1eHlakMBoW+9UsS+G5H3JVCFI3+DJNagpuW9wg2/YTKPTQNhi7cx/KDV1wdrgNtgUNAO2AQ0BsIBUCNnz80wUifbHCu5uNuZstrbehbrzRFoqcSEDMGq3KJW5ZP40dZbT4RRLOP/8YqiZ8c63pIFL3n7GTTmX+54TYem+EKbmplDLH3LqoVS908okIIkR1J0keILPb241Wp4FeTQtHvo2gWgk3fo6FyKzyGSX8EZlkcx66FsvLwJe6av8PNXhU/65D4dZvHtXbCKJ//AQeB2UD9DO4L6herz8j6I9katJWdl3Y6bGNTbVLeRYhc5tkmZWhVoQz+1qHYlTvcMX+NhkaMTeW9lUdT3DZupI+7jPTJA6zoyZ6CyDw+uYOiKDxf73kUFDr+2BGr3XHHGEn6ZA8Tmk+gdZnWfLD1A+yq3dXhiFzqnvUeA5YN4PGfH8dkMBH4QiBty7Z1dVhZxtvNxLH3O1GvVCEKR3+Ip9qYEPNPXHEfilW5jqrBS4sPZtPEjzewAngHfURuW/7f3n3HR1Wsfxz/zJZsQkIvAREFFAsgSBFUFEGxoYh6xQtYQcWOWK6K6LWL3Qv2hogNGyo2VFT0J4ioCCIoCtjonZAEki3z+2MWCJhQ0s5u9vt+vfLazdlz9jyBycnZeWaegUXErJvp42YFOYlyq2aM4d7T2nBVj1ZkRY9hj43jSIu1YFXaA6wLvAHAspwCWgz7kKtem6Fyb0nm/35bwcHDP2XOitksDf2HqFlL/YKbyS68G4Aa6QF6tMz2OEoRkdKrsKSPMeYWY8wiY8yM+FfPIq8NNcbMM8bMNcYcW1ExiCSiUMDP8wM6kRFrR+3whRT455ATeBuAt2cs5ts/Vld4DAWRKGePmka+/ytiZi01Iv/CkEZawMfXQ49kt1plrYX9IzAM6A70KXvAcTd1vYn6ofoMHD+w2DWQtJCzSNV0c6+WZEWPcaMsfX+zwedm/r07czFf/LqixOMisRgbI3ar8m4Bn8a7VD0W6AtMAe4DNCqzqti//v6M6j2KH5f9yMQF/1wLAtzfflDSx2t+n5+LO17MovWLmDBvgtfhSBWUV5hHp6c78fKsl7ny4CuZdfEsmtZq6nVYlS7o9/HahYcw8JB21Cu8lnqF12AJsyxtKAVmLuASP0PH/ZiASYgQcAsu6TMb2IvWu33IP8q7ebSmT3GMMVzRowXThh2FIUB2wXAyooewNjialcH/ESUHi2Xc9EWc8cxUYgm3tpIUZ+y0vzjr2Wnk+75hSegKDAEaFTxEtdhBGPw0qZPB6xcdSlZI9xYikrwquufjIWvtgfGvDwCMMS1xn8xbAccBjxlj/BUch0hCaV4/iy/+042s6DGkRzuQE3gDi+u06PPE15z62GSmzFvJ36vzWbG+gOU5G1mybgPLcjayYn0Bq/MKWZcfZv3GMDkbw6zNL2RV7pb9Fq7J569V+SxYkcu85euZu3Q9cxbn8NOidXz56wr2vXECi3LnsDL4EMFYUzJibibOgC5NaVSzrAmfHFy95gzgCYqO2iqrRtUb8e8m/+aXlb8wc9nMf7yu8m4iVVOL7Oo8d+5BVIt2JRjbgxVpdxM2rtzTE5Pml3jc5pk+Qc30qdrGA+OA4cDZHsci5a1Pyz7UTq/NY989VuyAj00zfYJ+zfT1Wq99etGsVjP6vtmX+atLvjaL7Kol65dw4isnMmfFHMb3Hc+Dxz5YJdfv2VkBv4/berfm4X4dyYx2o0HhbYBhRdrdFJo/AHhl2t/sc+OHzPh7rZehlqAnLunTmX6dh3LNEfNJ8yVWebdtNaiezu/De3LuIftSt/ByMiPdyQtMZGFGf9YFXgLg2z/WMPD5bymIaLZjorLWct9Hv3DduJmsCYxiRdqdBO0eNNo4goDNJuAzPHFme/7v2iPZt2F1r8MVESkTL3pHewNjrbUFwO/GmHlAJ6D4ek0iVdSedTO5+cRWDP3gZJaHbmJp6DrqF9xIgDpM/2st/Z/5psLOHTYLWZl2P4YQ2QXDMfipm5nGBYeXdR0fgNuBZcA3wD7l8H5bO6L+ETwy/xFu+PQG3un7zladPJFYRJ0+IlVU9/0aMPDQ/Xjm61tZFBpInv8zakX68/WCVUyZv5JD96r3j2MiMcuGsCUjEMXNBjFa06fK2QhciRtLdI3HsUhFCAVC/OfQ/3DDZzdw7+R7ue6w67Z6XeXdEkdGMIPPz/mc/R7djxNePoFXT3uVtg3beh2WJLkJ8yZw5UdX8te6v3iq11P02reX1yEljJPa7sbBzevQc0QIk3cdy0I3siQ0hBqR3tSInIyf2pz86GTGXXIo7feo7XW422gOTGDWwl7c3ONTIiaTFz5xr/gSaKZPUcYYbj2pFdGY5aVvriYz2o3VwSdYF3gdQ4gakdOYNNcNsBzYpRnnH96sHCpoSHlxCZ+5PDJpJqvSHibfP5n06IHUCV9MAPc54ulzOtJ93wYeRyoiUj4qeqbPZcaYH40xo4wxm+4yGgN/F9lnYXybSMrp03F36gU7UDN8BmHzJ4syzmZZ2k3k+N8l1/8xef4vyPN/Qa7/c3L9n7vvfV+R75tCvm8q+b5vyPdNIc/3VZH9PiXX/zHr/RNY7/+A9f73yPGPJyfwFusCb7ImMIYloSGEfX9TPdILP24Ey72ntaFeVqiMP9F0YAQwADiojO9VvJrBmow4bgQfzvuQJ79/cqvXwtEwAaNOH5Gq6qYTW1I3fTfSYweQG5hAhJUA9H/6G6bMW/mP/aNRy4aIxeeDoN91DPv9idmRIKURBk4Cfsf97dH1v6q6/rDr6b1vb67/9Hou/+DyrWb8KOmTWPastSdXdL6CuavmMnD8wB0fIFKC9QXrufi9izn+peOZu3Iuj5/wOOe3P9/rsBJOg+rpfH7NERzQoAONNz5Dmm1GTvBNlofuIEYeAP2emlrsfZL3Mhg1+T5+XJJJj+aFm7f6E7gSrzGGO05uzaA2ITJiHWhY8BAZsfasDT5Prv9jLO7v06jJv3Piw1/x67L1HkcsABsKo5z82BQenTSXlWkjyPdNpVb4HBoU3k7Quu7IMQM7KeEjIlWKKa5Mwk4fbMxEoGExLw0DpgIrcUNrbwcaWWsHGmMeAaZaa1+Mv8ezwIfW2je2ee9BwCCA7OzsDmPHji11nKkiNzeXrKwsr8OQXfT14ghP/lhAgZlLbuBj8vxfYs2GijuhNaTH2lI7PJCgbYrBR4dsP5e3Sy/T24ZCSznooPOIRDL5/vsnCIfrlFPAW8vNzSUzM5MrZ17JzHUzObLBkdy0/00AnDrlVLrU68LV+1xdIecWqUy6phfv/QWFvPTbLywNXU9arBnZhfdg4mUk7zosg92ytvQUDPokjxMPP5kHj4vQ+a7RLMupx5M9qhEKKPGTKMrSzhs3foMWLR5l7twrWbLkpHKOTBLNog2LuOD7C9gQ3cCj7R6lZY2WACzMX8hZ357FDfvdwNHZR3scZclS6ZpurWXMn2MY/edoXjjoBXavlrpluFJNebXzqI1y9y9389nyz+jduDeDmg0i3V+2zypV3YaI5cmZBfywIkKe/zNWpT2E39al0caH8VMDgM4N/ZzVMkRWWuLcBz0+YyOHHXQ+F3RaRJtb3qIwGuSiNiEO3i2xE/m5ubmkZWQyYvpGfloVZlnadRT4f8Fna5AWa0H9whvw4QZUDuucTovaWtHAC9ZapiyO8PqvYdYURNzaV/451AoPoGbkXwBkBeGmgzPIzkzgbKNHUuneRVJbsrf17t27f2+t7bjt9jIlfXaWMaYp8J61trUxZiiAtXZ4/LWPgFustSWWd+vYsaP97rvvKjzOZDdp0iS6devmdRhSCj8tWscVY39g/oo8LGFi5GNNAZaC+B6bbkBiWKLxR7dGhVv00ofBH9/P77bZott88f38GPwYtpRAO6VdY+44uTWZZV6k8HTgPVx95mZlfK+SbWrnv676lT6v9+HHZT8y86KZtMluQ71769G3dV8e6flIhZ1fpLLoml68jeEopz0xha+Xvs7qtIfx2RrstvFJ/FTn1HaNefDfB27ed59hH+JrdBI/XRzl3R+P4KrXruKX23sSCuiDd6IofTtfAbQADgY+pDzXj5PElVOQQ/b92fTetzcvnvoiAV+An1f8TMvHWvLKv16hb+u+XodYolS7pi/MWUjT/zXlqOZH8X7/9zUTK0WURzsviBRw5JgjmfL3FG4+4mZu6XZLucSWCmIxy/0fz+WxSfPZ6JvFsrQbSbN7U69wCEHbBIA961bj9YsOoUH1xEiiXfrSdJZzFq+fMYepC1ozaMyN3HnK4fRqu5vXoW1X0bZ+67uzGTX5N3ICb7E2OAaA9GgH6hYOJkBdgn7DJ1ceQdN6mR5GnDo2FEb5ZWkOE2YvZey0v1m7oZANvq9ZE3yOiG8JdQovJSt6HAZDj/0b8ORZHbXmZwlS7d5FUleyt3VjTLFJnwq7+zbGNLLWLol/ewrwU/z5eOBlY8yDwG64T+zTKioOkWTQunFNPhrSlYk/L2f8zEUsWrOB3IIIGwqjFERiGGPwGTdtLhazRK0lGrPEYhZjDH6f+/IZg98HAZ8Pnw/8xuDzuTUsfEX2q5bmp8OetRnQpVk5lHQD+BR4HbiNikz4FLVP3X2YdM4kmo5oyn8++Q8TzphAOBZWp4JIFZce9PP4GR047N61RMKLyAmOY6P/ezKj3Rj3wyJuOGH/zde1SCzG7ytj3P9FS64/chLL1tXFb07w+CeQsluPG2iQB/wPJXxSR41QDQZ3Gsy9U+6ldYPW3Nj1xs3l3YI+remXSHavsTuP9nyUi96/iLE/jeXMNmd6HZIkuLzCPEbPGM21E68lP5zPUyc+pXJuu8jnM1x73H706diE7vdD3fAVrAk+w+LQYDKjh1M3PJg/V+XTc8T/8falXdi9djWvQyYas3w4rybXf1yL2478hbGDhrIs5xVcV1Fy+O+JLWlWL5PhH6RTY8NprA+8zdrAS6xKG0GDwlsJR6Hb/ZPosX82zetnkhUKEAr42BiO8fvKXJavLyAt4CMU8G2evV4aZVkKqUzHluU+rLSHWoht6hOxlsKoJb8gwur8Qv5alU8k5ga3h81CVqWNpMA/h0CsITXD/TcnfA5vUY/HzuighI+IVFkV2Tt6rzHmQFw/9R/AhQDW2tnGmNeAOUAEuNRaG63AOFLEVey99x/AuGJeK+mP2Pb+uO3qMYn6Xrt6jAEOAP4FVG7nQcDv47jWDTmudXEVExPZdKA3sDeVvYh27Yza3N79dq6YcAWf/v4pkVhESR+RFNCkTjVG9m3P4LGQG5hInn8S1aJdMfjo//RUPhrSFWshai2YGHd/dgDNqu/GeYe/jd/3C9DS6x9ByuS/wBfAGGA/j2ORynbP0ffw/ZLvGT1jNMMOH6Y1fRLYBR0u4OFpDzP4w8HEbIzTWp5GtaD3ncySWKKxKB/P/5gL37uQv3P+pkuTLgzuPJjTW53udWhJq1m9TD65sitnj0rnr5x9WR18grzAZ4CPOuFBrMyFIx/4gg8GH8beDap7GmvMWmIWHpxci8V/X8kTZ93Ffo0OA54FzvY0tp1ljOHsQ5rStUV9Ln15OrMXnwrWz5q0p1mWdh11w1cRsNlM/HkZ/Lz1sRZbtqSJAGCJESOfqFlJoW8+hcF5FJr5FPjngA1Qp/ASsqJHb6540qlZHZ4+uyNpAZV0E5Gqq8I+HVlrz9rOa3cCd1bUuVPTK2Rn5/HP/9KSyvdtr6zfrh6TqO9VmmNiQBRohbvR7Lyd9xb373UxUB3XAZdR6REM6jCImyfdzHMzniMSi2ikr0iK6H1gY1765i9WL+xCbuBD1gRGUSdyPr8uy2XSrys4bO96EC+DCX7umXAux7eeQo2MIbhyYCrxlpzmAI/gln3UzIFUdcYBZzBw/EBenvUy+9TdB1DSJxH5jI+nej3Fxe9fzDlvn8Ogdwdx11F30Sa7DZFYhEgsgrVu1rrBbPXoM75/bNv20VpLzMawWKy1mx/zwnnkFeZtjsPEh7Bv6lgt7+9jNrY5Dp/xbf7aGZt+hpiNEbVRorEoMev+dtltPq8UPf+mf4NN28tj27ZMMUP/t91v231mrp5JeH54658RSyQWoTBaSDgaJhwLk1eYx6zls/h11a/MWj6LxesXk52Zzbv93uX4vY/H79Pf6LJqkV2d8ZcdxhVjM5ky/3bWBEaRE3ibmMmjfuFQCiPQ48EvOa5VQ+4/vS1ZZS71XToxa3H3a4Yvf+vAkfc/yfuDn6Fu1jnAr8D1QHKss9C0XibvDz6cyfNW0v8ZiylMZ3XwCRann4/f1sFva2NsBoYQ7jcjnwLfr4AfH2lsKeleGl4ljspy3rIcG2NLyfsoljCY2JaXbZCgbUTNcD8yo90I2sYAtGiQxUVH7MUJbRqRHtR1RkSqNn06qjKWMHlyctcgTAwxXAXCK4CjcbNY9vY0osQ2Bled8Xm8moKfHkinX+t+PPvDsxRGC9XpI5JCzjusGd+8MIioWU1u4ENqRv6Nn+oMeO5bJl7VFZfEB4Of1Xk1eWji2dzc63HgPGC0h5FL6awBBuA6f+7wOBbxUr8D+jF65mgGvDOAc9qeAyjpk6gObXIo0wdN57XZrzHimxFc/fHVXockFW3Wzu2WlZZFkxpNOLTJoZyy3ymctO9JZKUlR+d+sqhfPcSL53Xm1ndn8/zXA/FRg7XB0SwJDaZO+BJCsf2ZMHspP4/M4cMrDqdaWuVfR6Mxl/Qx8YTH0px6/LjwRbrvdwNunPDHwAdAvUqPrbS67F2PsRccwqAxQUIFLdjo+5FC33xiJpcYG4iZHMCHsQGqR3thbABrCtn+YNbtKf063WVb4bssR5f12Pg6xhiMDWAI4rPV8VGTtNheBGwDfGxZt6p+9RDXHrsvfTo2KcN5RUSSiz4diWzFB5wMtAfaAgNxM1g05fqfPgMuxS2i7e1o61u73crEBRP5bfVv6vQRSSHHtMzmmJa78/7PZ7EkNI0VaXeSXXgHhgA9HvwyPvoPNs3qefXbk7i5V03gbuAs4CiPIpfSOQ+YAbxMMnX+SPlLD6Qz7vRxtHmiDc/88AwAQb9m+iYqv89PvwP6cXqr05m1fBa5hbkEfAH8xr95xs62s3Us8Vk8JbxmrZtVU9wMoMxgJplpmRjM5tky1sYfK+B7v/FvntljsZtn6xQ3U6Y4PuPb/B5+n3/zLCfYMpOm6Pk2/Rts2l4e27a17SyjojFsb5/vp39P+3bt/7E94AsQ9AdJ86cR9LnHPWruoRk9lcDnM9zauzWH7l2PQS9YArYeq4KPsCx0LTXC/6J2ZAB/rsrntMe/ZuyFB1MjvXKvpTFL/H6tyCwXkwG8BPwbt4ZfJ2AE0KtSYyuLQ/aqy4dDDmfwK1lM/6v5pnFIUknqZYXYs2419qqfSZe963Fim920dk/K2gjMx/0S2iJfkhz2AOp6HUTSUu+oSLH2AO4DLgAGAyNR4qeofNxo6z1w60h5Wwu3fmZ9PjrzI0585URaN2jtaSwiUnmMMTx2RnuO+18uBasvZXXaI6wKPkzNSD+CtiGbZ/pY16nkPuzdDLyKm9E5A90KJYtPgLeAu3Dr7kmqq1utLj9c+APZ92cDbl0QSWx+n58DGx7odRhSgQrnF9Jljy5ehyHFOLZVQ16/8FAuGJNGaOP+rA4+Tk7wTaJmNXXDVzJnSQ6d7pzIW5d0Yf9GNSotri3l3bZ8nvRtTpieBEwELsGtIfsErrxrcti9djXGXdKFZTkbmbMkh4Wr88ktiJJXEKEgEiXg95ER9NOkTgY1M4IUhGM7ftMSlGneTBkOLi75W9HntYDPuHbiM+7zQJrfR3rQT61qQepXD1E3M22nE+9SVb0PPAl8iuu/kuT0LG4wvpSGejpESnQe8BNuVNERwGnehpNQ7gP+ws2CauRxLE6z2s2Yfclsr8MQkUoW9PsY2a8dPUfmsMY+S17gU8K+hTQqeAC7eVilS/oEfAZIBx4ETsGNIH0drxPXsiOrcAMwmgNXehyLJJIGmQ0Yd/o4Tn3tVPastafX4YiIJLROzeow8aoj6P3IV/jWDWVtcAzrA+/gt3WpFTmTjeEAx4/4P849tCk392pZKZ3mm8u72S33Yv6tznsYMBX3WfxC4E3c4J1aFR5becmukU52jfQd7ygi5SCKGyT2X9wg5QFAFyANN5DbhwZ0J5MDvQ4gqSnpI1IiAzwAfA5cDfQEqnkaUWJ4DxiOm2rf1eNYRESg1W416duxKaOnD2NF2p0U+uYSYSUmnuzZ9Oj3bepQOBm4F7gWeA6X5JfEFMX9/V2A+/ujThPZ2in7n0L4prDKu4qI7IT61UNMGXoUL3z9Bze+k0aMHHKCb1Dgm0PNSB8yYgcxesofrM0v5IHTD6zwklixzSUHi8702XavasDbwCPA9bgBmW8ALSo0NhFJNn8AJwKzcUsQPAOEvAxIxFMa2iqyXX5cabe/gMtQMd6lQH+gFe6mW0QkMVxz7L5kxA6kUcFIsAFWhO6ML4oLm253Alv1IlyDG/U1FFhbqbHKrngWmAaMAo72OBZJVEr4iIjsmrMOacrwU9pQP3I1tQsvpMA/h+WhW8n3TQPg7RmLufSl6cRiFbv2RSwGrrzblns0X7GJpjTgKlzJpvnA/sCYCo1NRJLJD8DhwCLgNdz1QQkfSW1K+ojs0BHAMNxo8Ic8jsVrQ3EL4Y0F6nsci4jIFvWrh5h967EEbSPqhi+n0PcbG3zfAkVn+hTtRDDAw8BK3MzF3EqOWHZsCXADblZpf49jERERqVr6d96DUeceRCP/yTTZ8BrBWBNWhG5jvf8DACbMXspewz7grR8WVlgM0fiaPqZI19T2ZxcdDcwDugHn4Gb+rK+w+EQk0a3FlX/uCERwSxD0QSXcRJT0EdlJdwAnALfhZrukonHAaNwfVE2lF5HEkxkKMGHI4WRGu+Kz1Vkf+Cj+SnxNH/+2N//tcDNJPgWGVFqcsjOWAZ1xC68+jD64iYiIlL/u+zbg3csPw0c1GhY8RHq0PWuCz7Au8AaWGNbCla/O5J4Jv1TI+WPxpM/2y7ttqyFuxs/ZwD3AkbhBPCKSGtYBb+EGhTXArcN9ITAHaONhXCKJRbUQRHbaQ7iyZpcBrwBBb8OpVLNwI+E7Azd6HIuISMn2a1iDHvs15o15PckJvgpsmenz56r8Yo4YAPyGW6usFnAF0KRSYpWSrAX+DawAvkIf3kRERCpO8/pZLLirJ9e8MZPXp1/FqrSRrA2OZl3gdeoVXkO12EE8Pmk+Qb+PK3u0wJjyG4gRi1msiWFs0aTPzrx/CHgeN6K/D9AB1/F7crnFJrLr/gDexSUhc3AzTzaxJTxP3Nf2228JruKN97E4a4Dfcf/OUaA6cDFwLm4wn4gUpaSPyE5rAdyJW/j7atxaP6nAAoOBmsAHuD+sIiKJa/BRLZj4yxnk+78k4ltCjAIAmtfLLOGI23H1nx8AHgTaAzVwHQolJfi3V+O+NK9V1jGJFUPbtmtxybZNCoHvcB+SX8R14oiIiEhF8vkMD/RpS430IM9NuYk8/2esDY5mVdpDUHg51WKHMPLT31i0ZgP3ntZmByXYdp4r72Z3obzbtk4EPgMuAU4FHsON+NcMYalMq3Gzzh4CwvFtWbi1qIrattR0Yr9Wq9ZG4NcKOF9p36c6rozbGcBRwMH8899YRDZR0kdkl/wHN6rgUeA8oK2n0VSO54BJuBvoOt6GIiKyE9o2qcUNx7fk1gk3sSLtdkKxfQBoWDO9hCP8uNGiNwMv4GaXbMSt8xOm5I6D7XUolOa1yjomcWIwJoYr67JJEDejtj9K+IiIiFQeYwy3nNSKQ/aqy4UvGEKxfViRNpwVacPJLryL9Fhr3py+kDenL+T5gZ04Yp+yr/Eai4G7D9hyv7BzM32KOgSYjJvxczHwOvAGULvM8Yns2F/AMbjKAf1wg8n2pCqspjF16iS6devmdRgiUkpK+ojsstuB14BLcetAhLwNp0J9hEtudQUu8DgWEZGdd8Hhzfnyt3ZMnvf05m19Ou6+g6Oa4xI/UllmzNCHSRERkURybKuGfHdjDw4d/hm+gntZErqMZaHrqRE+jRqRf+GnOgOem8Yj/dvT84BGZTpXzFosUTatvwilSfoAVAPeBp4ArgG6AS/jyrOLVJRRwHW4meqf4/pNREQSQ/KnnkUqXR3ctN3JuDUHtle+JpkV4sq67QNMQDliEUkmPp/hqbM6cu1x+9Knw+48eVYHTmm3o6SPiIiIiNTLCjHntmPpvGcTGhWMICN6MDnBN1icfjERVhOzcPkrP/DBrCVlOk+szOXdigoClwPv4db9aAOMLlN8IsWL4QYDnwfsj6sSoISPiCQWJX1ESuVMXM3Wd3A3lVXRg7j6rf8DMrwNRUSkFDJDAS7ptjf39WnLsa0aeh2OiIiISNII+H28MuhgzuzUmvqF11O38Eos+SxNH0KhWUA0ZrnkpemcN/pbFq3dUKpzRGOWf5Z3K2vkRwMLgCOBAcBVQE5Z31QkbjFwEPBf4CzcmlIHeBqRiEhxlPQRKbUrcaM6hgClu8lNXC8AQ4GTgeO9DUVEREREREQqXdDvY/ipbRh+SjuyokeRXTAcgBVp91Jo/gDg01+W0+OBL5gyf+Uuv3/MgiUGdkvXlK/sWR+gHm5w5kBgBC4BtKIc3ldS21SgC25w7Au4mWSqiCIiiUlJH5FSC+JuIBcAPYGIt+GUm9W4RFYX4BVvQxERERERERFP9e+8B9OGHUWTrDbULbyKqFnNktAQVgTvIWyWsiEcpf/T3zBl3q4lflx5txhFu6b8pVrTpzgh4FlgPDAbOBB4s5zeW1LP/cAhQD5uds+ZqEtVRBKZrlAiZXI08AwwCbdoZFVwM7AWeAxI9zYUERERERER8VyD6ulMGNKVVnW70Hjj02TEDiI/8H+sTLubCC7Z0/+Zb3j7h0U7/Z6byrsVXdPHV25Jn01OAL4AdgP6AI9SddfllfK3Alcm8D+49jMfV95NRCSxKekjUmYDgaOAm4Bdn9KeWEYCjwAX4xa+FBEREREREYE6mWm8dXEXTmvXkgaFw6hfMIxC8ydL068iyjoAhrw6g14Pf8XK3IIdvl8sZl15t6JJnwrppeoEfImr0HEZ0A1YUxEnkirlT1wFlJeBa3CVULI8jUhEZGcp6SNSZgZX5m090JvkXSTyN9yNTC/c1GURERERERGRLWpWC/Lg6W25+9QDqBY7hIYF9xElh8XpF7PRNwuAWYvWcfKjk1m1g8RPzIKbdVOkvFu5rOlTnAzgbVyFjqnAEcCMCjqXJL+ngfbAclw5t/sAv6cRiYjsCiV9RMpFK9yoj6+BWz2OpbSuwpVzewqVdRMREREREZHiGGPo22kPJl9/JM1rHkDDgnvw2RosCw1lRfBuLDEWrtnACSO/YuGa/BLfJ2otmBiGLYme8i/vVlQAuBB4H/gL6ACMrsDzSfKJ4Pp0BgFtgcm42T4iIslFSR+RctMHOA9XIu0Xj2PZVcOB93Al6hp6HIuIiIiIiIgkusa1Mhh3yaG0ze5IdsEdVIscQX7gK1YFRxJjA0tzNnLCyK+YvXhdsccXW96tQpM+m/QA/og/DgAuJ3krdkj5WYRLBN4CnA18jBvgKyKSfJT0ESlXdwKZwFkkz/o+XwA3AH2BId6GIiIiIiIiIkkju0Y6715+GD1btqJe+Bqqh08mz/8Zq9L+R4yNrNsQ5oSRX3H+89+SVxDZ6tiYtUCMomWzKq6827ZqAeOBi4DHge7Aiko6tySe/wMOA34HXsXNAAt4GZCISJko6SNSrhoAY4BZuJvHRBcFrgCaAM8CQW/DERERERERkaQS9Pt46uyODD1+f+pEzqdW5Gzy/ZNZEhrCBt/3WGJM/Hk5/Z/5hg2F0c3HRWMu6bN1ebfKjDyES/iMB+YABwCvV2YAkhDuBboCG3Hr95wOVGpDFBEpd0r6iJS7k4AbgTdxNwyJyuLKuc0EHgCqeRuOiIiIiIiIJK2LjtiLZ8/pSH1Op0HBrUTMMpaHbmZdYCwAM/9eS9+np1IQcYmfmOWf5d0qN+sT1xM306Mp8G/gYdwMJKnalgFnAtfhKp8sADp6GpGISHlR0kekQlyNu2G8FFjubSglehG3ls8A4DSPYxEREREREZFkd9T+2bx+4SE0r96FxhufJT3annXBl1kVfAxwiZ+W//2I935cTCQWAyzYyl7Tpzgdgc+BE4HBwOHAao9ikYr3B66c25u4cvcvAhleBiQiUq6U9BGpEBnAM8CfQC8Sb5TQeuBaoBMuTk1dFhERERERkbJr26QW71zahdqhBjQovJHqkRPIDXzA2sBLWMJEY5bLXv6BjeEYrrzblq4pv2dJH3Cf49/CfUb+DjgCmOZhPFIxHgfa4tZh/gy3NrN/u0eIiCQbJX1EKsxRwJO4m8TnPY6lKIubvrwUGIkuAyIiIiIiIlKeGtRIZ9atx3JLrwOpHR5ERvQQ1gVfYUloMLn+iZv3s0TZurybB8FuxQ+cB3wALAYOAUZ5GpGUlzDwX+ASoDPwNe7/V0Sk6vH8z6lI1XYm7ibielySJREMx41sGYK70REREREREREpfwO6NOOWXgfQoHAYdQuvJmpyWBUcyQbfd/E9LEUrT3hX3m1bRwG/Az1wSaALgXWeRiRlsRBoB9wOnItL6u3nZUAiIhWqTEkfY0wfY8xsY0zMGNNxm9eGGmPmGWPmGmOOLbL9uPi2ecaY68tyfpHEZ4BHgVxcvdg8b8PhL+AO4FTgQY9jERERERERkapuQJdmjB5wEPV8R9F449MEbCOWh24h1/85iVXebVs1gPHAZbjZPt1J3DV7pWSf4vpj/gLG4f4vA55GJCJS0co60+cnXO/xl0U3GmNaAn2BVsBxwGPGGL8xxo/rAT8eaAn0i+8rUoW1A94D5uNm2XjFAlfFHx9E6/iIiIiIiIhIZei2bwMmX3ckPqrRqGAEoWhrVgX/B8aydXm3RPucGgIeBt4FfgH2p0GDT70NSXbBPbjZWlHgc+AU1BciIqmgTEkfa+3P1tq5xbzUGxhrrS2w1v4OzMOtGN8JmGetXWCtLQTGxvcVqeK640q93QcU9ytTGQYDbwI3AXt6FIOIiIiIiIikorpZIRbc1ZMzOu1D/cIbqRZz5cYtYQD8CZfwKeo4YAqwHy1b3gE8hEskSGJaBvwbV2q/H65bsoOnEYmIVKaKWtOnMfB3ke8XxreVtF0kBdwLZAJdgJ8r+dyfA4/gEj9DK/ncIiIiIiIiIm4mz12ntOaSrm2oV3g9dQovp3q0JwAHNqnlbXA7dCDwKStXdsFV0TgMWO1pRFKc33H9Lu8C/wVexM3YEhFJHcZau/0djJkINCzmpWHW2nfi+0wCrrHWfhf//hFgqrX2xfj3zwIfxo87zlp7fnz7WUBna+1lxZx3EDAIIDs7u8PYsWN3/adLMbm5uWRlZXkdhmxHRsbftGs3mHC4Bj/+eA8FBcX9apWvrKy5HHDAjUSjIb777hlisfQKP2dFUjuXVKG2LqlA7VxShdq6pAK1c9lV05ZEeGFOAevDkBWEwe3T2ae23+uwdig3N4e99prKvvvez4YNuzF37jXk5LT2OiwhRqNG79G8+TMAzJp1Nzk5WlGitHRNl1SR7G29e/fu31trO267fYdJn51RTNJnKIC1dnj8+4+AW+K732KtPba4/UrSsWNH+91335U5zqpu0qRJdOvWzeswZIe+BHoCeUB7oDOQBvhxiwka3Lo7bPNY3LYdvbYIeAtoAHwEtC3Hn8MbaueSKtTWJRWonUuqUFuXVKB2LqWRVxDhz1X5NKmTQfX0oNfh7JQtbf1z3HLWK4CRwD/GM0ulWIubzTMK+AHoBjwJ7ONdSFWArumSKpK9rRtjik36BCrofOOBl40xDwK7AS2Aabje7BbGmGa43ui+QP8KikEkQXUFZgCv4ibAjcXVAo4CkSL7mWIei9u2vX2q46ad3wjUKqf4RURERERERMouMxSg5W41vA6jlLoDC4AzgMuBV4B/Ae1wgzp98ceibAnPy+u1yjiH13HHgMW4Mm5fA9/Et7UBxuDWU07k9aFERCpemZI+xphTgIeB+sD7xpgZ1tpjrbWzjTGvAXNwvdiXWmuj8WMuw0058AOjrLWzy/QTiCSlvYFh8S8RERERERERST6ZwJvAQ7jZJld7G05KScdVM7kB6AV08jYcEZEEUqakj7X2LVztqOJeuxO4s5jtHwAflOW8IiIiIiIiIiIi3vMD18S/FgB/4WaebKrose2sE1PC8/J6rTLO4XVs2bjlxzWjR0SkOBVV3k1ERERERERERCSFNI9/iYiIeMfndQAiIiIiIiIiIiIiIiJSdkr6iIiIiIiIiIiIiIiIVAFK+oiIiIiIiIiIiIiIiFQBSvqIiIiIiIiIiIiIiIhUAUr6iIiIiIiIiIiIiIiIVAHGWut1DDtkjFkB/Ol1HEmgHrDS6yBEKpjauaQKtXVJBWrnkirU1iUVqJ1LqlBbl1Sgdi6pItnb+p7W2vrbbkyKpI/sHGPMd9bajl7HIVKR1M4lVaitSypQO5dUobYuqUDtXFKF2rqkArVzSRVVta2rvJuIiIiIiIiIiIiIiEgVoKSPiIiIiIiIiIiIiIhIFaCkT9XylNcBiFQCtXNJFWrrkgrUziVVqK1LKlA7l1Shti6pQO1cUkWVbOta00dERERERERERERERKQK0EwfERERERERERERERGRKkBJnyrAGHOcMWauMWaeMeZ6r+MRKQtjTBNjzOfGmDnGmNnGmCvi228xxiwyxsyIf/UscszQePufa4w51rvoRXaeMeYPY8yseHv+Lr6tjjHmE2PMb/HH2vHtxhgzMt7OfzTGtPc2epGdY4zZt8h1e4YxJscYM0TXdEl2xphRxpjlxpifimzb5Wu4Meac+P6/GWPO8eJnEdmeEtr6fcaYX+Lt+S1jTK349qbGmA1Fru1PFDmmQ/y+Z17898F48OOIFKuEdr7L9yrqm5FEV0Jbf7VIO//DGDMjvl3XdElK2+lXTKl7dZV3S3LGGD/wK3A0sBD4FuhnrZ3jaWAipWSMaQQ0stZON8ZUB74HTgZOB3Kttfdvs39L4BWgE7AbMBHYx1obrdTARXaRMeYPoKO1dmWRbfcCq621d8c/KNa21l4X/5B5OdAT6AyMsNZ29iJukdKK37MswrXhAeiaLknMGNMVyAXGWGtbx7ft0jXcGFMH+A7oCFjcPU8Ha+0aD34kkWKV0NaPAT6z1kaMMfcAxNt6U+C9Tftt8z7TgMHAN8AHwEhr7YeV9GOIbFcJ7fwWduFeJf6y+mYkoRXX1rd5/QFgnbX2Nl3TJVltp1/xXFLoXl0zfZJfJ2CetXaBtbYQGAv09jgmkVKz1i6x1k6PP18P/Aw03s4hvYGx1toCa+3vwDzc74VIMuoNPB9//jzuxmTT9jHWmQrUit/IiCSTo4D51to/t7OPrumSFKy1XwKrt9m8q9fwY4FPrLWr4x8ePwGOq/DgRXZBcW3dWvuxtTYS/3YqsPv23iPe3mtYa6daN+p0DFt+P0Q8V8I1vSQl3auob0YS3vbaeny2zum4pGaJdE2XRLedfsWUuldX0if5NQb+LvL9QrbfQS6SNOIjS9rhRo8AXBafajlq0zRM9DsgycsCHxtjvjfGDIpvy7bWLok/Xwpkx5+rnUtV0JetP0Tqmi5Vza5ew9XepSoYCBQd3d3MGPODMeYLY8zh8W2Nce17E7V1SRa7cq+ia7oku8OBZdba34ps0zVdkto2/Yopda+upI+IJCRjTBbwJjDEWpsDPA7sBRwILAEe8C46kXJxmLW2PXA8cGl8qv1m8VFTqsEqVYIxJg04CXg9vknXdKnSdA2XVGCMGQZEgJfim5YAe1hr2wFXAS8bY2p4FZ9IGeleRVJNP7YeoKVruiS1YvoVN0uFe3UlfZLfIqBJke93j28TSVrGmCDuwvyStXYcgLV2mbU2aq2NAU+zpdyPfgckKVlrF8UflwNv4dr0sk1l2+KPy+O7q51LsjsemG6tXQa6pkuVtavXcLV3SVrGmHOBE4Ez4h0nxMtdrYo//x6Yj1vrZBFbl4BTW5eEV4p7FV3TJWkZYwLAqcCrm7bpmi7JrLh+RVLsXl1Jn+T3LdDCGNMsPoq2LzDe45hESi1eR/ZZ4Gdr7YNFthddv+QU4Kf48/FAX2NMyBjTDGgBTKuseEVKwxiTGV9QEGNMJnAMrk2PB86J73YO8E78+XjgbOMcjFtccwkiyWOrkYO6pksVtavX8I+AY4wxteNlg46JbxNJaMaY44BrgZOstflFttc3xvjjz5vjruEL4u09xxhzcPxe/2y2/H6IJKRS3Kuob0aSWQ/gF2vt5rJtuqZLsiqpX5EUu1cPeB2AlI21NmKMuQzX6PzAKGvtbI/DEimLLsBZwCxjzIz4thuAfsaYA3HTL/8ALgSw1s42xrwGzMGVl7jUWhut5JhFdlU28Ja7FyEAvGytnWCM+RZ4zRhzHvAnbiFNgA+AnriFYvOBAZUfskjpxBObRxO/bsfdq2u6JDNjzCtAN6CeMWYhcDNwN7twDbfWrjbG3I7rKAS4zVq7swuJi1SKEtr6UCAEfBK/l5lqrb0I6ArcZowJAzHgoiJt+hJgNJCBWwOo6DpAIp4qoZ1329V7FfXNSKIrrq1ba5/ln2tvgq7pkrxK6ldMqXt1E5+JLSIiIiIiIiIiIiIiIklM5d1ERERERERERERERESqACV9REREREREREREREREqgAlfURERERERERERERERKoAJX1ERERERERERERERESqACV9REREREREREREREREqgAlfURERERERERERERERKoAJX1ERERERERERERERESqACV9REREREREREREREREqoD/B/2RiSZBn+jcAAAAAElFTkSuQmCC\n",
"text/plain": [
"<Figure size 2160x720 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# TODO: После первого отражения, вся траектория изменяется. Соотвественно, далее смена вектора вращения происходит\n",
"# TODO: уже не в нуле. Исправить это.\n",
"\n",
"# TODO: Также, до сих пор не все изменения вектора вращения распознаются верно. Почему-то только 2 значеия обработались\n",
"# TODO: Поисследовать это поведение.\n",
"\n",
"# Реализация пункта 2 из Notion:\n",
"# 1. Анализируем raw данные, а затем записываем уже с учетом всего точки.\n",
"# 2. mirror_point должен изменяться в соотвествии с новыми точками отражения\n",
"\n",
"# TODO: Добавить обработку скачков. Скачки имеют по сути такие же свойства, которые я выбрал для определения точек \n",
"# TODO: точек отражения. Единственное, у скачков еще есть большой гэп. \n",
"\n",
"# ------------ PROCESS THE AXIS VECTOR INFORMATION ---------------\n",
"# На каждом шаге будем проверять текущее значение угла. Также, будем сохранять массив из 5 последних векторов. \n",
"# И брать наиболее встречающийся вектор. \n",
"# Если очередное значение угла где-то близко к нулю (допустим дельта = 2), то возьмём то сохраним следующие \n",
"# 5 векторов после найденного значения и возьмём наиболее встречающийся вектор. Если он отличается от вектора \n",
"# направления до 0, то мы нашли смену направления, и необходимо поменять знак всех оставшихся точек. \n",
"# ------------ PROCESS THE AXIS VECTOR INFORMATION ---------------\n",
"\n",
"def find_mode(arr):\n",
" \"\"\"\n",
" PLEASE GIVE ONLY NUMPY ARRAY.\n",
" \"\"\"\n",
" m, n = arr.shape\n",
" for i in range(m):\n",
" for j in range(n):\n",
" arr[i][j] = 1 if arr[i][j] > 0 else -1\n",
"\n",
" res_mode = stats.mode(arr)\n",
" return res_mode.mode.squeeze()\n",
"\n",
"from scipy import stats\n",
"\n",
"fig = plt.figure(figsize=(30, 10))\n",
"ax1 = fig.add_subplot(3, 1, 1)\n",
"\n",
"skew = 0 # we need this parameter \n",
"accum = [] # accumulate the values and iteratively plot them. \n",
"accum2 = []\n",
"# counter = 0\n",
"counter2 = 0\n",
"# Мода - наиболее часто встречающийся элемент. \n",
"moda_vec = []\n",
"moda_vec2 = []\n",
"\n",
"zero_flag = False\n",
"mirror_flag = False\n",
"mirror_point = 0.0\n",
"last_el = 0.0\n",
"# Здесь сохраняем все значения. \n",
"values = np.array([])\n",
"\n",
"x_copy = np.copy(x)\n",
"# Исправленные значения сохраняем в values.\n",
"values = np.append(values, x_copy[0])\n",
"values = np.append(values, x_copy[1])\n",
"\n",
"# Process points in the cycle to easily refactor it to C++ code afterwards. \n",
"# Представляем, что это цикл \"на лету\"\n",
"for i in range(1, len(v)):\n",
" \n",
" # Сохраняем последние 5 значений векторов.\n",
" if not zero_flag:\n",
" if len(accum) == 5:\n",
" accum.pop(0)\n",
" accum.append(v[i])\n",
" else:\n",
" accum.append(v[i])\n",
" \n",
" # Найдем элемент, который начал расти, а не убывать около нуля\n",
" if not zero_flag:\n",
" if -5 < x_copy[i] < 5:\n",
" # Если нынешний элемент уже не меньше предыдущего, то начался рост в обратную сторону. Ставим True\n",
" if not abs(x_copy[i]) < abs(last_el) and abs(last_el - x_copy[i-2]) < 10:\n",
" print(\"Found inverse val.\", f\"It's index is: {i}\", f\"It's value is {x_copy[i]}\",\n",
" f\"Last element is {last_el}\")\n",
" zero_flag = True\n",
" \n",
" # Если нашли элемент, который начал рост в другую сторону, начнём накапливать значения векторов.\n",
" if zero_flag:\n",
" # Если набрали 5 \n",
" if counter2 == 5:\n",
" # Имеем массивы векторов. Найдём их моды и сравним. \n",
" mode1 = find_mode(np.array(accum))\n",
" mode2 = find_mode(np.array(accum2))\n",
" print(\"Accumulated elements. Array's length: \", len(accum2))\n",
" print(\"Mode 1 is:\", f'{mode1};', f\"Mode 2 is: {mode2};\")\n",
" \n",
" # Если градусы около нуля, а значения векторов поменялись, то отражаем\n",
" if not all(mode1 == mode2):\n",
" # Если мы нашли ту самую точку, то отразим точки, которые мы накопили, и прибавим к ним точку отражения\n",
" # а также изменим точку отражения, и изменим флаг mirror_flag = True\n",
" print(\"Mirror the values. \\n\")\n",
" mirror_point += values[i - 5]\n",
" if mirror_flag:\n",
" mirror_flag = False\n",
" else:\n",
" mirror_flag = True\n",
" values[i - 5:i] = -values[i - 5:i] + mirror_point\n",
" else:\n",
" # Иначе ничего не делаем.\n",
" pass\n",
"\n",
" \n",
" accum2 = []\n",
" zero_flag = False\n",
" counter2 = 0\n",
" else:\n",
" accum2.append(v[i])\n",
" counter2 += 1\n",
" \n",
" last_el = x_copy[i]\n",
" values = np.append(values, x_copy[i])\n",
" values[i] = (-values[i] + mirror_point) if mirror_flag else values[i]\n",
"\n",
"ax1.set_aspect('equal')\n",
"ax1.grid()\n",
"ax1.plot(values, label=\"Processed data\", lw=5)\n",
"ax1.plot(x, label=\"Non processed data\", color='green')\n",
"ax1.plot(true_values, label=\"True values\", color='yellow')\n",
"ax1.legend()"
]
},
{
"cell_type": "code",
"execution_count": 47,
"id": "de7e5817",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"-0.481278"
]
},
"execution_count": 47,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"x_copy[221]"
]
},
{
"cell_type": "code",
"execution_count": 48,
"id": "f9dbf536",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"-2.50708"
]
},
"execution_count": 48,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"x_copy[222]"
]
},
{
"cell_type": "code",
"execution_count": 55,
"id": "381e3ee4",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"59.6057"
]
},
"execution_count": 55,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"x_copy[260]"
]
},
{
"cell_type": "code",
"execution_count": 49,
"id": "bf4c5629",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"True"
]
},
"execution_count": 49,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"not abs(x_copy[222]) < abs(x_copy[221])"
]
},
{
"cell_type": "code",
"execution_count": 52,
"id": "60b6f47c",
"metadata": {
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 1080x360 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plot_x(x_copy)"
]
},
{
"cell_type": "code",
"execution_count": 30,
"id": "340d7fb5",
"metadata": {},
"outputs": [],
"source": [
"fig.savefig(fname=\"processed_data.pdf\", dpi=250, format=\"pdf\")"
]
},
{
"cell_type": "code",
"execution_count": 31,
"id": "19925435",
"metadata": {},
"outputs": [
{
"ename": "KeyboardInterrupt",
"evalue": "",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m/tmp/ipykernel_524362/2733077647.py\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m 17\u001b[0m \u001b[0mcount\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mcap\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcv\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mCAP_PROP_POS_FRAMES\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 18\u001b[0m \u001b[0;31m# I need a high precision, so I use np.array for these purposes\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 19\u001b[0;31m \u001b[0mcurr_time\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0marray\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcount\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdtype\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfloat128\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m/\u001b[0m \u001b[0mfps\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 20\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 21\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;31mKeyboardInterrupt\u001b[0m: "
]
}
],
"source": [
"# PLOTTING ON THE FLY\n",
"# Let's read the video and draw the graph for each frame.\n",
"import cv2 as cv\n",
"video_path = \"../working_data/camera1-2020-10-14---19-38-42---093390448_scaled.mp4\"\n",
"cap = cv.VideoCapture(video_path)\n",
"fps = 30\n",
"plt.ioff\n",
"\n",
"if not cap.isOpened():\n",
" print(\"Error opening video stream or file\")\n",
"\n",
"# At each frame take the number of the current frame, compute it's\n",
"time\n",
"while cap.isOpened():\n",
" # ret stands for \"return\": True of False (Success or not)\n",
" ret, frame = cap.read()\n",
" count = cap.get(cv.CAP_PROP_POS_FRAMES)\n",
" # I need a high precision, so I use np.array for these purposes\n",
" curr_time = np.array(count, dtype=np.float128) / fps\n",
"\n",
"\n",
"\n",
"cap.release()\n",
"cv.destroyAllWindows()"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "6aacce6c",
"metadata": {
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"id": "ee8e544b",
"metadata": {
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [],
"source": []
}
],
"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.8.10"
}
},
"nbformat": 4,
"nbformat_minor": 5
}