Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save willirath/f7787667dc5dfeeb3b021b52eb40a066 to your computer and use it in GitHub Desktop.
Save willirath/f7787667dc5dfeeb3b021b52eb40a066 to your computer and use it in GitHub Desktop.
Rotating velocity vectors on a NEMO grid
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# ToDo\n",
"\n",
"This basically works. We do, however, have a problem wherever the `lon` and `lat` fields are not monotonically rising along coordinate axes."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Rotating velocity vectors\n",
"\n",
"In NEMO, velocities are oriented along the grid rather than in geographical directions. Here's how to construct a rotation.\n",
"\n",
"\n",
"## Vectors on the model grid\n",
"\n",
"At a given grid point, let $\\hat{I}$ and $\\hat{J}$ be the normal vectors spanning the model grid. ($\\hat{I}$ has length $1$ and points towards the next grid point in the zonal ($x$) direction, $\\hat{J}$ has length $1$ and points towards the next grid point in the meridional ($y$) direction.)\n",
"\n",
"As $\\hat{I}^T\\hat{J}=0$, $\\hat{I}^T\\hat{I}=\\hat{J}^T\\hat{J}=1$ and $\\hat{I}\\hat{I}^T+\\hat{J}\\hat{J}^T=\\mathbb{1}_2$, we can decompose any vector $\\vec{A}$ into\n",
"\n",
"$$\n",
"\\vec{A}\n",
"= \\mathbb{1}_2 \\cdot \\vec{A}\n",
"= \\hat{I} \\hat{I}^T \\vec{A} + \\hat{J} \\hat{J}^T \\vec{A}\n",
"= A_I \\hat{I} + A_J \\hat{J}\n",
"$$\n",
"with $A_I=\\hat{I}^T\\vec{A}$ and $A_J=\\hat{J}^T\\vec{A}$\n",
"\n",
"\n",
"## Geographic directions\n",
"\n",
"At any point on the globe, we can define a local coordinate system that is spanned by a set of (geographically!) eastward and northward unit vectors:\n",
"$$\n",
"\\hat{E}=\\left(\\begin{array}{cc}1\\\\0\\end{array}\\right)\n",
"\\qquad\n",
"\\hat{N}=\\left(\\begin{array}{cc}0\\\\1\\end{array}\\right)\n",
"$$\n",
"that (just as $\\hat{I}$ and $\\hat{J}$) satisfy \n",
"$$\\hat{E}^T\\hat{N} = 0$$\n",
"$$\\hat{E}^T\\hat{E} = \\hat{N}^T\\hat{N} = 1$$\n",
"$$\\hat{E}\\hat{E}^T + \\hat{N}\\hat{N}^T = \\mathbb{1}_2$$\n",
"\n",
"So we can also decompose any vector $\\vec{A}$ into components along $\\hat{E}$ and $\\hat{N}$:\n",
"$$\n",
"\\vec{A}\n",
"= \\mathbb{1}_2 \\cdot \\vec{A}\n",
"= \\hat{E} \\hat{E}^T \\vec{A} + \\hat{N} \\hat{N}^T \\vec{A}\n",
"= A_E \\hat{E} + A_N \\hat{N}\n",
"$$\n",
"with $A_E=\\hat{E}^T\\vec{A}$ and $A_N=\\hat{N}^T\\vec{A}$\n",
"\n",
"## Transformation\n",
"\n",
"Combining the two paragraphs, we get\n",
"\n",
"$$A_E = \\hat{E}^T \\hat{I} A_I + \\hat{E}^T \\hat{J} A_J$$\n",
"$$A_N = \\hat{N}^T \\hat{I} A_I + \\hat{N}^T \\hat{J} A_J$$\n",
"\n",
"So what's the components of $\\hat{I}$ and $\\hat{J}$?\n",
"\n",
"$$\n",
"\\hat{I} \\propto \\left(\n",
" \\begin{array}{cc}\n",
" \\frac{\\partial{\\rm lon}}{\\partial x}\\\\\n",
" \\frac{\\partial{\\rm lat}}{\\partial x}\n",
" \\end{array}\n",
"\\right)\n",
"\\qquad\n",
"\\hat{J} \\propto \\left(\n",
" \\begin{array}{cc}\n",
" \\frac{\\partial{\\rm lon}}{\\partial y}\\\\\n",
" \\frac{\\partial{\\rm lat}}{\\partial y}\n",
" \\end{array}\n",
"\\right)\n",
"$$\n",
"\n",
"## Implementation\n",
"\n",
"We're going to first interpolate $\\vec{U}$ onto the F grid points (RR in XGCM's grid def) and then estimate $\\hat{I}$ and $\\hat{J}$ from centered differences of `lat` and `lon`:\n",
"\n",
"$$\n",
"\\hat{I} \\propto \\left(\n",
" \\begin{array}{cc}\n",
" lon^V_{j,i+1} - lon^V_{j,i}\\\\\n",
" lat^V_{j,i+1} - lat^V_{j,i}\n",
" \\end{array}\n",
"\\right)\n",
"\\qquad\n",
"\\hat{J} \\propto \\left(\n",
" \\begin{array}{cc}\n",
" lon^U_{j+1,i} - lon^U_{j,i}\\\\\n",
" lat^U_{j+1,i} - lat^U_{j,i}\n",
" \\end{array}\n",
"\\right)\n",
"$$\n",
"\n",
"So\n",
"\n",
"$$A_E = \\frac{lon^V_{j,i+1}-lon^V_{j,i}}{{\\rm normalization}} A_I + \\frac{lon^U_{j+1,i}-lon^U_{j,i}}{{\\rm normalization}} A_J$$\n",
"\n",
"$$A_N = \\frac{lat^V_{j,i+1}-lat^V_{j,i}}{{\\rm normalization}} A_I + \\frac{lat^U_{j+1,i}-lat^U_{j,i}}{{\\rm normalization}} A_J$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Tech preamble\n",
"\n",
"Import modules and set up a Dask cluster."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"from dask.distributed import Client, wait\n",
"import dask\n",
"from pathlib import Path\n",
"import cmocean\n",
"\n",
"from xorca.lib import load_xorca_dataset\n",
"import xarray as xr"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/opt/tljh/user/envs/py3_euler/lib/python3.7/site-packages/distributed/dashboard/core.py:72: UserWarning: \n",
"Port 8787 is already in use. \n",
"Perhaps you already have a cluster running?\n",
"Hosting the diagnostics dashboard on a random port instead.\n",
" warnings.warn(\"\\n\" + msg)\n"
]
},
{
"data": {
"text/html": [
"<table style=\"border: 2px solid white;\">\n",
"<tr>\n",
"<td style=\"vertical-align: top; border: 0px solid white\">\n",
"<h3 style=\"text-align: left;\">Client</h3>\n",
"<ul style=\"text-align: left; list-style: none; margin: 0; padding: 0;\">\n",
" <li><b>Scheduler: </b>tcp://127.0.0.1:42727</li>\n",
" <li><b>Dashboard: </b><a href='/user/wrath/proxy/41349/status' target='_blank'>/user/wrath/proxy/41349/status</a>\n",
"</ul>\n",
"</td>\n",
"<td style=\"vertical-align: top; border: 0px solid white\">\n",
"<h3 style=\"text-align: left;\">Cluster</h3>\n",
"<ul style=\"text-align: left; list-style:none; margin: 0; padding: 0;\">\n",
" <li><b>Workers: </b>1</li>\n",
" <li><b>Cores: </b>8</li>\n",
" <li><b>Memory: </b>12.00 GB</li>\n",
"</ul>\n",
"</td>\n",
"</tr>\n",
"</table>"
],
"text/plain": [
"<Client: 'tcp://127.0.0.1:42727' processes=1 threads=8, memory=12.00 GB>"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"client = Client(n_workers=1, threads_per_worker=8, memory_limit=12e9)\n",
"client"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Experiment parameters"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"# parameters\n",
"\n",
"global_data_path = Path(\"/data/iAtlantic/\")\n",
"experiment_id = \"VIKING20X.L46-KKG36107B\"\n",
"\n",
"restrict_years = \"201[0-1]\" # restricts to 2010 and 2011"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Find relevant data files"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"data_files = list(sorted(\n",
" (global_data_path / \"data\" / experiment_id).glob(f\"{experiment_id}_1m_{restrict_years}????_{restrict_years}????_grid_*.nc\")\n",
"))\n",
"aux_files = list(sorted(\n",
" (global_data_path / \"mask\" / experiment_id).glob(\"[m,n]*.nc\")\n",
"))"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"found 6 data files\n",
"found 4 aux files\n"
]
}
],
"source": [
"print(f\"found {len(data_files)} data files\")\n",
"print(f\"found {len(aux_files)} aux files\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Open (virtual) dataset"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"with dask.config.set(scheduler='synchronous'):\n",
" ds_xorca = load_xorca_dataset(\n",
" data_files=data_files, aux_files=aux_files,\n",
" decode_cf=True,\n",
" input_ds_chunks={\"time_counter\": 3, \"t\": 3,\n",
" \"z\": 2, \"Z\": 2,\n",
" \"deptht\": None, \"depthu\": None,\n",
" \"depthv\": None, \"depthw\": None,\n",
" \"y\": 600, \"Y\": 600,\n",
" \"x\": 600, \"X\": 600},\n",
" target_ds_chunks={\"t\": 3,\n",
" \"z_c\": 2, \"z_l\": 2,\n",
" \"y_c\": 600, \"y_r\": 600,\n",
" \"x_c\": 600, \"x_r\": 600})"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<pre>&lt;xarray.Dataset&gt;\n",
"Dimensions: (t: 24, x_c: 1440, x_r: 1440, y_c: 1019, y_r: 1019, z_c: 46, z_l: 46)\n",
"Coordinates:\n",
" llon_cr (y_c, x_r) float32 dask.array&lt;chunksize=(600, 600), meta=np.ndarray&gt;\n",
" llat_cc (y_c, x_c) float32 dask.array&lt;chunksize=(600, 600), meta=np.ndarray&gt;\n",
" llat_rr (y_r, x_r) float32 dask.array&lt;chunksize=(600, 600), meta=np.ndarray&gt;\n",
" llat_cr (y_c, x_r) float32 dask.array&lt;chunksize=(600, 600), meta=np.ndarray&gt;\n",
" llon_rc (y_r, x_c) float32 dask.array&lt;chunksize=(600, 600), meta=np.ndarray&gt;\n",
" llat_rc (y_r, x_c) float32 dask.array&lt;chunksize=(600, 600), meta=np.ndarray&gt;\n",
" llon_rr (y_r, x_r) float32 dask.array&lt;chunksize=(600, 600), meta=np.ndarray&gt;\n",
" depth_l (z_l) float64 dask.array&lt;chunksize=(2,), meta=np.ndarray&gt;\n",
" llon_cc (y_c, x_c) float32 dask.array&lt;chunksize=(600, 600), meta=np.ndarray&gt;\n",
" depth_c (z_c) float64 dask.array&lt;chunksize=(2,), meta=np.ndarray&gt;\n",
" * x_c (x_c) int64 1 2 3 4 5 6 7 8 ... 1434 1435 1436 1437 1438 1439 1440\n",
" * z_c (z_c) int64 1 2 3 4 5 6 7 8 9 10 ... 37 38 39 40 41 42 43 44 45 46\n",
" * x_r (x_r) float64 1.5 2.5 3.5 4.5 ... 1.438e+03 1.44e+03 1.44e+03\n",
" * y_c (y_c) int64 1 2 3 4 5 6 7 8 ... 1013 1014 1015 1016 1017 1018 1019\n",
" * y_r (y_r) float64 1.5 2.5 3.5 4.5 ... 1.018e+03 1.018e+03 1.02e+03\n",
" * z_l (z_l) float64 0.5 1.5 2.5 3.5 4.5 5.5 ... 41.5 42.5 43.5 44.5 45.5\n",
" * t (t) datetime64[ns] 2010-01-16T12:00:00 ... 2011-12-16T12:00:00\n",
" e1t (y_c, x_c) float64 dask.array&lt;chunksize=(600, 600), meta=np.ndarray&gt;\n",
" e2t (y_c, x_c) float64 dask.array&lt;chunksize=(600, 600), meta=np.ndarray&gt;\n",
" e3t (z_c, y_c, x_c) float64 dask.array&lt;chunksize=(2, 600, 600), meta=np.ndarray&gt;\n",
" e1u (y_c, x_r) float64 dask.array&lt;chunksize=(600, 600), meta=np.ndarray&gt;\n",
" e2u (y_c, x_r) float64 dask.array&lt;chunksize=(600, 600), meta=np.ndarray&gt;\n",
" e3u (z_c, y_c, x_r) float64 dask.array&lt;chunksize=(2, 600, 600), meta=np.ndarray&gt;\n",
" e1v (y_r, x_c) float64 dask.array&lt;chunksize=(600, 600), meta=np.ndarray&gt;\n",
" e2v (y_r, x_c) float64 dask.array&lt;chunksize=(600, 600), meta=np.ndarray&gt;\n",
" e3v (z_c, y_r, x_c) float64 dask.array&lt;chunksize=(2, 600, 600), meta=np.ndarray&gt;\n",
" e1f (y_r, x_r) float64 dask.array&lt;chunksize=(600, 600), meta=np.ndarray&gt;\n",
" e2f (y_r, x_r) float64 dask.array&lt;chunksize=(600, 600), meta=np.ndarray&gt;\n",
" e3w (z_l, y_c, x_c) float64 dask.array&lt;chunksize=(2, 600, 600), meta=np.ndarray&gt;\n",
" tmask (z_c, y_c, x_c) int8 dask.array&lt;chunksize=(2, 600, 600), meta=np.ndarray&gt;\n",
" umask (z_c, y_c, x_r) int8 dask.array&lt;chunksize=(2, 600, 600), meta=np.ndarray&gt;\n",
" vmask (z_c, y_r, x_c) int8 dask.array&lt;chunksize=(2, 600, 600), meta=np.ndarray&gt;\n",
" fmask (z_c, y_r, x_r) int8 dask.array&lt;chunksize=(2, 600, 600), meta=np.ndarray&gt;\n",
"Data variables:\n",
" sobowlin (t, y_c, x_c) float32 dask.array&lt;chunksize=(3, 600, 600), meta=np.ndarray&gt;\n",
" sohefldo (t, y_c, x_c) float32 dask.array&lt;chunksize=(3, 600, 600), meta=np.ndarray&gt;\n",
" sohefldp (t, y_c, x_c) float32 dask.array&lt;chunksize=(3, 600, 600), meta=np.ndarray&gt;\n",
" somixhgt (t, y_c, x_c) float32 dask.array&lt;chunksize=(3, 600, 600), meta=np.ndarray&gt;\n",
" somxl010 (t, y_c, x_c) float32 dask.array&lt;chunksize=(3, 600, 600), meta=np.ndarray&gt;\n",
" sosaline (t, y_c, x_c) float32 dask.array&lt;chunksize=(3, 600, 600), meta=np.ndarray&gt;\n",
" soshfldo (t, y_c, x_c) float32 dask.array&lt;chunksize=(3, 600, 600), meta=np.ndarray&gt;\n",
" sossheig (t, y_c, x_c) float32 dask.array&lt;chunksize=(3, 600, 600), meta=np.ndarray&gt;\n",
" sosstsst (t, y_c, x_c) float32 dask.array&lt;chunksize=(3, 600, 600), meta=np.ndarray&gt;\n",
" sowafldp (t, y_c, x_c) float32 dask.array&lt;chunksize=(3, 600, 600), meta=np.ndarray&gt;\n",
" sowaflup (t, y_c, x_c) float32 dask.array&lt;chunksize=(3, 600, 600), meta=np.ndarray&gt;\n",
" sowindsp (t, y_c, x_c) float32 dask.array&lt;chunksize=(3, 600, 600), meta=np.ndarray&gt;\n",
" vosaline (t, z_c, y_c, x_c) float32 dask.array&lt;chunksize=(3, 2, 600, 600), meta=np.ndarray&gt;\n",
" votemper (t, z_c, y_c, x_c) float32 dask.array&lt;chunksize=(3, 2, 600, 600), meta=np.ndarray&gt;\n",
" sometauy (t, y_r, x_c) float32 dask.array&lt;chunksize=(3, 600, 600), meta=np.ndarray&gt;\n",
" vomecrty (t, z_c, y_r, x_c) float32 dask.array&lt;chunksize=(3, 2, 600, 600), meta=np.ndarray&gt;\n",
" sozotaux (t, y_c, x_r) float32 dask.array&lt;chunksize=(3, 600, 600), meta=np.ndarray&gt;\n",
" vozocrtx (t, z_c, y_c, x_r) float32 dask.array&lt;chunksize=(3, 2, 600, 600), meta=np.ndarray&gt;</pre>"
],
"text/plain": [
"<xarray.Dataset>\n",
"Dimensions: (t: 24, x_c: 1440, x_r: 1440, y_c: 1019, y_r: 1019, z_c: 46, z_l: 46)\n",
"Coordinates:\n",
" llon_cr (y_c, x_r) float32 dask.array<chunksize=(600, 600), meta=np.ndarray>\n",
" llat_cc (y_c, x_c) float32 dask.array<chunksize=(600, 600), meta=np.ndarray>\n",
" llat_rr (y_r, x_r) float32 dask.array<chunksize=(600, 600), meta=np.ndarray>\n",
" llat_cr (y_c, x_r) float32 dask.array<chunksize=(600, 600), meta=np.ndarray>\n",
" llon_rc (y_r, x_c) float32 dask.array<chunksize=(600, 600), meta=np.ndarray>\n",
" llat_rc (y_r, x_c) float32 dask.array<chunksize=(600, 600), meta=np.ndarray>\n",
" llon_rr (y_r, x_r) float32 dask.array<chunksize=(600, 600), meta=np.ndarray>\n",
" depth_l (z_l) float64 dask.array<chunksize=(2,), meta=np.ndarray>\n",
" llon_cc (y_c, x_c) float32 dask.array<chunksize=(600, 600), meta=np.ndarray>\n",
" depth_c (z_c) float64 dask.array<chunksize=(2,), meta=np.ndarray>\n",
" * x_c (x_c) int64 1 2 3 4 5 6 7 8 ... 1434 1435 1436 1437 1438 1439 1440\n",
" * z_c (z_c) int64 1 2 3 4 5 6 7 8 9 10 ... 37 38 39 40 41 42 43 44 45 46\n",
" * x_r (x_r) float64 1.5 2.5 3.5 4.5 ... 1.438e+03 1.44e+03 1.44e+03\n",
" * y_c (y_c) int64 1 2 3 4 5 6 7 8 ... 1013 1014 1015 1016 1017 1018 1019\n",
" * y_r (y_r) float64 1.5 2.5 3.5 4.5 ... 1.018e+03 1.018e+03 1.02e+03\n",
" * z_l (z_l) float64 0.5 1.5 2.5 3.5 4.5 5.5 ... 41.5 42.5 43.5 44.5 45.5\n",
" * t (t) datetime64[ns] 2010-01-16T12:00:00 ... 2011-12-16T12:00:00\n",
" e1t (y_c, x_c) float64 dask.array<chunksize=(600, 600), meta=np.ndarray>\n",
" e2t (y_c, x_c) float64 dask.array<chunksize=(600, 600), meta=np.ndarray>\n",
" e3t (z_c, y_c, x_c) float64 dask.array<chunksize=(2, 600, 600), meta=np.ndarray>\n",
" e1u (y_c, x_r) float64 dask.array<chunksize=(600, 600), meta=np.ndarray>\n",
" e2u (y_c, x_r) float64 dask.array<chunksize=(600, 600), meta=np.ndarray>\n",
" e3u (z_c, y_c, x_r) float64 dask.array<chunksize=(2, 600, 600), meta=np.ndarray>\n",
" e1v (y_r, x_c) float64 dask.array<chunksize=(600, 600), meta=np.ndarray>\n",
" e2v (y_r, x_c) float64 dask.array<chunksize=(600, 600), meta=np.ndarray>\n",
" e3v (z_c, y_r, x_c) float64 dask.array<chunksize=(2, 600, 600), meta=np.ndarray>\n",
" e1f (y_r, x_r) float64 dask.array<chunksize=(600, 600), meta=np.ndarray>\n",
" e2f (y_r, x_r) float64 dask.array<chunksize=(600, 600), meta=np.ndarray>\n",
" e3w (z_l, y_c, x_c) float64 dask.array<chunksize=(2, 600, 600), meta=np.ndarray>\n",
" tmask (z_c, y_c, x_c) int8 dask.array<chunksize=(2, 600, 600), meta=np.ndarray>\n",
" umask (z_c, y_c, x_r) int8 dask.array<chunksize=(2, 600, 600), meta=np.ndarray>\n",
" vmask (z_c, y_r, x_c) int8 dask.array<chunksize=(2, 600, 600), meta=np.ndarray>\n",
" fmask (z_c, y_r, x_r) int8 dask.array<chunksize=(2, 600, 600), meta=np.ndarray>\n",
"Data variables:\n",
" sobowlin (t, y_c, x_c) float32 dask.array<chunksize=(3, 600, 600), meta=np.ndarray>\n",
" sohefldo (t, y_c, x_c) float32 dask.array<chunksize=(3, 600, 600), meta=np.ndarray>\n",
" sohefldp (t, y_c, x_c) float32 dask.array<chunksize=(3, 600, 600), meta=np.ndarray>\n",
" somixhgt (t, y_c, x_c) float32 dask.array<chunksize=(3, 600, 600), meta=np.ndarray>\n",
" somxl010 (t, y_c, x_c) float32 dask.array<chunksize=(3, 600, 600), meta=np.ndarray>\n",
" sosaline (t, y_c, x_c) float32 dask.array<chunksize=(3, 600, 600), meta=np.ndarray>\n",
" soshfldo (t, y_c, x_c) float32 dask.array<chunksize=(3, 600, 600), meta=np.ndarray>\n",
" sossheig (t, y_c, x_c) float32 dask.array<chunksize=(3, 600, 600), meta=np.ndarray>\n",
" sosstsst (t, y_c, x_c) float32 dask.array<chunksize=(3, 600, 600), meta=np.ndarray>\n",
" sowafldp (t, y_c, x_c) float32 dask.array<chunksize=(3, 600, 600), meta=np.ndarray>\n",
" sowaflup (t, y_c, x_c) float32 dask.array<chunksize=(3, 600, 600), meta=np.ndarray>\n",
" sowindsp (t, y_c, x_c) float32 dask.array<chunksize=(3, 600, 600), meta=np.ndarray>\n",
" vosaline (t, z_c, y_c, x_c) float32 dask.array<chunksize=(3, 2, 600, 600), meta=np.ndarray>\n",
" votemper (t, z_c, y_c, x_c) float32 dask.array<chunksize=(3, 2, 600, 600), meta=np.ndarray>\n",
" sometauy (t, y_r, x_c) float32 dask.array<chunksize=(3, 600, 600), meta=np.ndarray>\n",
" vomecrty (t, z_c, y_r, x_c) float32 dask.array<chunksize=(3, 2, 600, 600), meta=np.ndarray>\n",
" sozotaux (t, y_c, x_r) float32 dask.array<chunksize=(3, 600, 600), meta=np.ndarray>\n",
" vozocrtx (t, z_c, y_c, x_r) float32 dask.array<chunksize=(3, 2, 600, 600), meta=np.ndarray>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"30.462434608 GB\n"
]
}
],
"source": [
"display(ds_xorca)\n",
"print(ds_xorca.nbytes / 1e9, \"GB\")"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<xgcm.Grid>\n",
"Y Axis (not periodic):\n",
" * center y_c --> right\n",
" * right y_r --> center\n",
"X Axis (not periodic):\n",
" * center x_c --> right\n",
" * right x_r --> center\n",
"Z Axis (not periodic):\n",
" * center z_c --> left\n",
" * left z_l --> center"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"from xgcm import Grid\n",
"\n",
"grid = Grid(ds_xorca, periodic=False)\n",
"display(grid)"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [],
"source": [
"U_cr = ds_xorca.vozocrtx\n",
"V_rc = ds_xorca.vomecrty"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<pre>&lt;xarray.DataArray &#x27;mul-3d56ceb7cf6acde6a4969e10fb9d9bb0&#x27; (t: 24, z_c: 46, y_r: 1019, x_r: 1440)&gt;\n",
"dask.array&lt;mul, shape=(24, 46, 1019, 1440), dtype=float32, chunksize=(3, 2, 599, 600), chunktype=numpy.ndarray&gt;\n",
"Coordinates:\n",
" * t (t) datetime64[ns] 2010-01-16T12:00:00 ... 2011-12-16T12:00:00\n",
" * z_c (z_c) int64 1 2 3 4 5 6 7 8 9 10 ... 37 38 39 40 41 42 43 44 45 46\n",
" * y_r (y_r) float64 1.5 2.5 3.5 4.5 ... 1.018e+03 1.018e+03 1.02e+03\n",
" * x_r (x_r) float64 1.5 2.5 3.5 4.5 ... 1.438e+03 1.44e+03 1.44e+03</pre>"
],
"text/plain": [
"<xarray.DataArray 'mul-3d56ceb7cf6acde6a4969e10fb9d9bb0' (t: 24, z_c: 46, y_r: 1019, x_r: 1440)>\n",
"dask.array<mul, shape=(24, 46, 1019, 1440), dtype=float32, chunksize=(3, 2, 599, 600), chunktype=numpy.ndarray>\n",
"Coordinates:\n",
" * t (t) datetime64[ns] 2010-01-16T12:00:00 ... 2011-12-16T12:00:00\n",
" * z_c (z_c) int64 1 2 3 4 5 6 7 8 9 10 ... 37 38 39 40 41 42 43 44 45 46\n",
" * y_r (y_r) float64 1.5 2.5 3.5 4.5 ... 1.018e+03 1.018e+03 1.02e+03\n",
" * x_r (x_r) float64 1.5 2.5 3.5 4.5 ... 1.438e+03 1.44e+03 1.44e+03"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"U_rr = grid.interp(U_cr, \"Y\", to=\"right\", boundary=\"fill\")\n",
"U_rr # That's our A_I"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<pre>&lt;xarray.DataArray &#x27;mul-3ba0f40bd1b41c565c7195fb62d127a5&#x27; (t: 24, z_c: 46, y_r: 1019, x_r: 1440)&gt;\n",
"dask.array&lt;mul, shape=(24, 46, 1019, 1440), dtype=float32, chunksize=(3, 2, 600, 599), chunktype=numpy.ndarray&gt;\n",
"Coordinates:\n",
" * t (t) datetime64[ns] 2010-01-16T12:00:00 ... 2011-12-16T12:00:00\n",
" * z_c (z_c) int64 1 2 3 4 5 6 7 8 9 10 ... 37 38 39 40 41 42 43 44 45 46\n",
" * y_r (y_r) float64 1.5 2.5 3.5 4.5 ... 1.018e+03 1.018e+03 1.02e+03\n",
" * x_r (x_r) float64 1.5 2.5 3.5 4.5 ... 1.438e+03 1.44e+03 1.44e+03</pre>"
],
"text/plain": [
"<xarray.DataArray 'mul-3ba0f40bd1b41c565c7195fb62d127a5' (t: 24, z_c: 46, y_r: 1019, x_r: 1440)>\n",
"dask.array<mul, shape=(24, 46, 1019, 1440), dtype=float32, chunksize=(3, 2, 600, 599), chunktype=numpy.ndarray>\n",
"Coordinates:\n",
" * t (t) datetime64[ns] 2010-01-16T12:00:00 ... 2011-12-16T12:00:00\n",
" * z_c (z_c) int64 1 2 3 4 5 6 7 8 9 10 ... 37 38 39 40 41 42 43 44 45 46\n",
" * y_r (y_r) float64 1.5 2.5 3.5 4.5 ... 1.018e+03 1.018e+03 1.02e+03\n",
" * x_r (x_r) float64 1.5 2.5 3.5 4.5 ... 1.438e+03 1.44e+03 1.44e+03"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"V_rr = grid.interp(V_rc, \"X\", to=\"right\", boundary=\"fill\")\n",
"V_rr # That's our A_J"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$A_E = (lon^V_{j,i+1}-lon^V_{j,i}) A_I + (lon^U_{j+1,i}-lon^U_{j,i}) A_J$$\n",
"$$A_N = (lat^V_{j,i+1}-lat^V_{j,i}) A_I + (lat^U_{j+1,i}-lat^U_{j,i}) A_J$$"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<pre>&lt;xarray.DataArray &#x27;dlon_rc_x&#x27; (y_r: 1019, x_r: 1440)&gt;\n",
"dask.array&lt;mul, shape=(1019, 1440), dtype=float32, chunksize=(600, 599), chunktype=numpy.ndarray&gt;\n",
"Coordinates:\n",
" * y_r (y_r) float64 1.5 2.5 3.5 4.5 ... 1.018e+03 1.018e+03 1.02e+03\n",
" * x_r (x_r) float64 1.5 2.5 3.5 4.5 ... 1.438e+03 1.44e+03 1.44e+03\n",
" llat_rr (y_r, x_r) float32 dask.array&lt;chunksize=(600, 600), meta=np.ndarray&gt;\n",
" llon_rr (y_r, x_r) float32 dask.array&lt;chunksize=(600, 600), meta=np.ndarray&gt;\n",
" e1f (y_r, x_r) float64 dask.array&lt;chunksize=(600, 600), meta=np.ndarray&gt;\n",
" e2f (y_r, x_r) float64 dask.array&lt;chunksize=(600, 600), meta=np.ndarray&gt;</pre>"
],
"text/plain": [
"<xarray.DataArray 'dlon_rc_x' (y_r: 1019, x_r: 1440)>\n",
"dask.array<mul, shape=(1019, 1440), dtype=float32, chunksize=(600, 599), chunktype=numpy.ndarray>\n",
"Coordinates:\n",
" * y_r (y_r) float64 1.5 2.5 3.5 4.5 ... 1.018e+03 1.018e+03 1.02e+03\n",
" * x_r (x_r) float64 1.5 2.5 3.5 4.5 ... 1.438e+03 1.44e+03 1.44e+03\n",
" llat_rr (y_r, x_r) float32 dask.array<chunksize=(600, 600), meta=np.ndarray>\n",
" llon_rr (y_r, x_r) float32 dask.array<chunksize=(600, 600), meta=np.ndarray>\n",
" e1f (y_r, x_r) float64 dask.array<chunksize=(600, 600), meta=np.ndarray>\n",
" e2f (y_r, x_r) float64 dask.array<chunksize=(600, 600), meta=np.ndarray>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"dlon_rc_x = grid.diff(xr.ufuncs.deg2rad(ds_xorca.llon_rc), \"X\", boundary=\"fill\")\n",
"dlon_rc_x *= xr.ufuncs.cos(xr.ufuncs.deg2rad(ds_xorca.llat_rr))\n",
"dlon_rc_x = dlon_rc_x.rename(\"dlon_rc_x\")\n",
"display(dlon_rc_x)"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<pre>&lt;xarray.DataArray &#x27;dlon_cr_y&#x27; (y_r: 1019, x_r: 1440)&gt;\n",
"dask.array&lt;mul, shape=(1019, 1440), dtype=float32, chunksize=(599, 600), chunktype=numpy.ndarray&gt;\n",
"Coordinates:\n",
" * y_r (y_r) float64 1.5 2.5 3.5 4.5 ... 1.018e+03 1.018e+03 1.02e+03\n",
" * x_r (x_r) float64 1.5 2.5 3.5 4.5 ... 1.438e+03 1.44e+03 1.44e+03\n",
" llat_rr (y_r, x_r) float32 dask.array&lt;chunksize=(600, 600), meta=np.ndarray&gt;\n",
" llon_rr (y_r, x_r) float32 dask.array&lt;chunksize=(600, 600), meta=np.ndarray&gt;\n",
" e1f (y_r, x_r) float64 dask.array&lt;chunksize=(600, 600), meta=np.ndarray&gt;\n",
" e2f (y_r, x_r) float64 dask.array&lt;chunksize=(600, 600), meta=np.ndarray&gt;</pre>"
],
"text/plain": [
"<xarray.DataArray 'dlon_cr_y' (y_r: 1019, x_r: 1440)>\n",
"dask.array<mul, shape=(1019, 1440), dtype=float32, chunksize=(599, 600), chunktype=numpy.ndarray>\n",
"Coordinates:\n",
" * y_r (y_r) float64 1.5 2.5 3.5 4.5 ... 1.018e+03 1.018e+03 1.02e+03\n",
" * x_r (x_r) float64 1.5 2.5 3.5 4.5 ... 1.438e+03 1.44e+03 1.44e+03\n",
" llat_rr (y_r, x_r) float32 dask.array<chunksize=(600, 600), meta=np.ndarray>\n",
" llon_rr (y_r, x_r) float32 dask.array<chunksize=(600, 600), meta=np.ndarray>\n",
" e1f (y_r, x_r) float64 dask.array<chunksize=(600, 600), meta=np.ndarray>\n",
" e2f (y_r, x_r) float64 dask.array<chunksize=(600, 600), meta=np.ndarray>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"dlon_cr_y = grid.diff(xr.ufuncs.deg2rad(ds_xorca.llon_cr), \"Y\", boundary=\"fill\")\n",
"dlon_cr_y *= xr.ufuncs.cos(xr.ufuncs.deg2rad(ds_xorca.llat_rr))\n",
"dlon_cr_y = dlon_cr_y.rename(\"dlon_cr_y\")\n",
"display(dlon_cr_y)"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<pre>&lt;xarray.DataArray &#x27;dlat_rc_x&#x27; (y_r: 1019, x_r: 1440)&gt;\n",
"dask.array&lt;sub, shape=(1019, 1440), dtype=float32, chunksize=(600, 599), chunktype=numpy.ndarray&gt;\n",
"Coordinates:\n",
" * y_r (y_r) float64 1.5 2.5 3.5 4.5 ... 1.018e+03 1.018e+03 1.02e+03\n",
" * x_r (x_r) float64 1.5 2.5 3.5 4.5 ... 1.438e+03 1.44e+03 1.44e+03</pre>"
],
"text/plain": [
"<xarray.DataArray 'dlat_rc_x' (y_r: 1019, x_r: 1440)>\n",
"dask.array<sub, shape=(1019, 1440), dtype=float32, chunksize=(600, 599), chunktype=numpy.ndarray>\n",
"Coordinates:\n",
" * y_r (y_r) float64 1.5 2.5 3.5 4.5 ... 1.018e+03 1.018e+03 1.02e+03\n",
" * x_r (x_r) float64 1.5 2.5 3.5 4.5 ... 1.438e+03 1.44e+03 1.44e+03"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"dlat_rc_x = grid.diff(xr.ufuncs.deg2rad(ds_xorca.llat_rc), \"X\", boundary=\"fill\")\n",
"dlat_rc_x = dlat_rc_x.rename(\"dlat_rc_x\")\n",
"display(dlat_rc_x)"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<pre>&lt;xarray.DataArray &#x27;dlat_cr_y&#x27; (y_r: 1019, x_r: 1440)&gt;\n",
"dask.array&lt;sub, shape=(1019, 1440), dtype=float32, chunksize=(599, 600), chunktype=numpy.ndarray&gt;\n",
"Coordinates:\n",
" * y_r (y_r) float64 1.5 2.5 3.5 4.5 ... 1.018e+03 1.018e+03 1.02e+03\n",
" * x_r (x_r) float64 1.5 2.5 3.5 4.5 ... 1.438e+03 1.44e+03 1.44e+03</pre>"
],
"text/plain": [
"<xarray.DataArray 'dlat_cr_y' (y_r: 1019, x_r: 1440)>\n",
"dask.array<sub, shape=(1019, 1440), dtype=float32, chunksize=(599, 600), chunktype=numpy.ndarray>\n",
"Coordinates:\n",
" * y_r (y_r) float64 1.5 2.5 3.5 4.5 ... 1.018e+03 1.018e+03 1.02e+03\n",
" * x_r (x_r) float64 1.5 2.5 3.5 4.5 ... 1.438e+03 1.44e+03 1.44e+03"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"dlat_cr_y = grid.diff(xr.ufuncs.deg2rad(ds_xorca.llat_cr), \"Y\", boundary=\"fill\")\n",
"dlat_cr_y = dlat_cr_y.rename(\"dlat_cr_y\")\n",
"display(dlat_cr_y)"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [],
"source": [
"hat_I_E = dlon_rc_x\n",
"hat_I_N = dlat_rc_x\n",
"hat_I_norm = (hat_I_E ** 2 + hat_I_N ** 2) ** 0.5\n",
"hat_I_E /= hat_I_norm\n",
"hat_I_N /= hat_I_norm"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [],
"source": [
"hat_J_E = dlon_cr_y\n",
"hat_J_N = dlat_cr_y\n",
"hat_J_norm = (hat_J_E ** 2 + hat_J_N ** 2) ** 0.5\n",
"hat_J_E /= hat_J_norm\n",
"hat_J_N /= hat_J_norm"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [],
"source": [
"U_rr_E = hat_I_E * U_rr + hat_J_E * V_rr\n",
"U_rr_N = hat_I_N * U_rr + hat_J_N * V_rr"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [],
"source": [
"speed_rr = (U_rr ** 2 + V_rr ** 2) ** 0.5"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [],
"source": [
"speed_rotated_rr = (U_rr_E ** 2 + U_rr_N ** 2) ** 0.5"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [],
"source": [
"speed_rr = speed_rr.isel(t=0, z_c=0).persist()"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [],
"source": [
"speed_rotated_rr = speed_rotated_rr.isel(t=0, z_c=0).persist()"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<pre>&lt;xarray.DataArray ()&gt;\n",
"array(0.00324547, dtype=float32)\n",
"Coordinates:\n",
" t datetime64[ns] 2010-01-16T12:00:00\n",
" z_c int64 1\n",
" y_r float64 1.002e+03\n",
" x_r float64 1.002e+03</pre>"
],
"text/plain": [
"<xarray.DataArray ()>\n",
"array(0.00324547, dtype=float32)\n",
"Coordinates:\n",
" t datetime64[ns] 2010-01-16T12:00:00\n",
" z_c int64 1\n",
" y_r float64 1.002e+03\n",
" x_r float64 1.002e+03"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"speed_rr.isel(x_r=1000, y_r=1000).load()"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<pre>&lt;xarray.DataArray ()&gt;\n",
"array(0.00324547, dtype=float32)\n",
"Coordinates:\n",
" y_r float64 1.002e+03\n",
" x_r float64 1.002e+03\n",
" llat_rr float32 83.465225\n",
" llon_rr float32 -92.1618\n",
" e1f float64 1.156e+04\n",
" e2f float64 1.104e+04\n",
" t datetime64[ns] 2010-01-16T12:00:00\n",
" z_c int64 1</pre>"
],
"text/plain": [
"<xarray.DataArray ()>\n",
"array(0.00324547, dtype=float32)\n",
"Coordinates:\n",
" y_r float64 1.002e+03\n",
" x_r float64 1.002e+03\n",
" llat_rr float32 83.465225\n",
" llon_rr float32 -92.1618\n",
" e1f float64 1.156e+04\n",
" e2f float64 1.104e+04\n",
" t datetime64[ns] 2010-01-16T12:00:00\n",
" z_c int64 1"
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"speed_rotated_rr.isel(x_r=1000, y_r=1000).load()"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<pre>&lt;xarray.DataArray (y_r: 1019, x_r: 1440)&gt;\n",
"dask.array&lt;getitem, shape=(1019, 1440), dtype=float32, chunksize=(599, 599), chunktype=numpy.ndarray&gt;\n",
"Coordinates:\n",
" t datetime64[ns] 2010-01-16T12:00:00\n",
" z_c int64 1\n",
" * y_r (y_r) float64 1.5 2.5 3.5 4.5 ... 1.018e+03 1.018e+03 1.02e+03\n",
" * x_r (x_r) float64 1.5 2.5 3.5 4.5 ... 1.438e+03 1.44e+03 1.44e+03</pre>"
],
"text/plain": [
"<xarray.DataArray (y_r: 1019, x_r: 1440)>\n",
"dask.array<getitem, shape=(1019, 1440), dtype=float32, chunksize=(599, 599), chunktype=numpy.ndarray>\n",
"Coordinates:\n",
" t datetime64[ns] 2010-01-16T12:00:00\n",
" z_c int64 1\n",
" * y_r (y_r) float64 1.5 2.5 3.5 4.5 ... 1.018e+03 1.018e+03 1.02e+03\n",
" * x_r (x_r) float64 1.5 2.5 3.5 4.5 ... 1.438e+03 1.44e+03 1.44e+03"
]
},
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"speed_rr"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABisAAAR8CAYAAADsLKffAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8li6FKAAAgAElEQVR4nOzde7wlV13n/e8653R3bp17J0JCDE2CEgiDTI+iqA8KmQERwzgPeUAQhEjCSKYFWh10mEEdfcggzaMtKARFUPESlUscEXgG5SbipBvF0AgamgCdQG5059bpy9l7zR9nV7q6uvbeVbVX1bp93q/XfnWfvWvX/tVt1brUWstYawUAAAAAAAAAAODLku8AAAAAAAAAAABA3misAAAAAAAAAAAAXtFYAQAAAAAAAAAAvKKxAgAAAAAAAAAAeEVjBQAAAAAAAAAA8IrGCgAAAAAAAAAA4BWNFQAAAAAAAAAAwCsaKwAAAAAAAAAAgFc0VgAAAETCGHOLMeZpPaz3mcaYTxhj9htjvm6MeZsxZmPp8w3GmLcbY+6dfP6qyvevM8Z8wRgzNsb8WM36Xzn53j2T9WyYE8/U5Y0x1xhjdhpjDhlj3tFg22Yub4w5yRjzG8aYuya/97HJ+39pjLl/8jpijDlc+vstxpj1xpg/nRwTa4x5SmW9P22M+awx5j5jzJeMMT89J84LjTF/bYw5YIz5fPU4G2N+xBjzZWPMA8aY9xpjzpyxrnnH6wnGmF2T39pljHnCvP0YKmPMw4wxNxhjbpschwt9xwQAAACgGxorAAAAcJqkX5L0cEmPkXS+pF8pff7zki6W9M2Svk/Szxhjnl76/DOSfkLSp6srNsb8O0mvlvRUSRdK2izpF6YF0mD52yaxvr3hts1b/jpJZ2ptu8+U9EpJstY+w1p7irX2FEnvkvT64m9r7csm3/2EpBdI+nrdpkh6oaQzJD1d0jXGmOfOiPMPJf29pLMk/RdJf2qM2SRJxpjHSnqrpB+VdK6kA5J+Y8a6fl5TjpcxZr2k90n6/Uls75T0vsn7MRpL+oCk/+A7EAAAAACLobECAAAgAsaY35N0gaQ/nzzd/zOu1m2t/QNr7QestQestfskvU3Sk0uLvFDSf7fW7rPW/tPk8x8rff/N1toPSzpYs/oXSfpta+3uybr/e/m7bZe31r7bWvteSXc33LapyxtjvkXSD0m6ylp7p7V2ZK3d1XC9h621v2qt/YSkUc3nr7fWftpau2qt/YLWGgiefNyK1uJ4tKQnSnqttfZBa+2fSbpJRyvgny/pz621H7PW3i/pv0r64XLvl4pZx+spklYk/aq19pC1dofWGla+f942G2P+n1LvkvsnvVU+Muc7Jxpjtk96hdwz6cFz4rzfaspae7u19jck3ehqnQAAAAD8oLECAAAgAtbaH5X0FUnPmjzd//rqMsaYCyZDOU17/UjDn/teSbsn6zxDaz0uPlP6/DOSHttwXY+t+e65xpizHC2/iO+Q9GVJvzAZBuomY4zzJ/SNMUbS92iyTyfv/U9jzKsnfz5W0h5r7X2lr5X38TH7xFr7RUmHJT16sq5XG2P+5+T/847XYyX9o7XWlj7/RzU4ntbaPy71Nnm4pD1a6xEyyxsk/WtJ36W1nis/o7XeEMdweO4CAAAAiNSK7wAAAADghrX2K5JOX2QdxpjLtNa74Tsmb50y+fee0mL3SJr2VH/VKTXf1eT7db0j2i6/iPMlPU7Sn2mt8v07Jf2FMeZzkx4Jrvy81h4S+p3iDWvtD5Y+r26zJn+fN+fzjZN1XVtZlzT9eM1cVxPGmCVJfyDpI9bat85Z7iWSnmStvXXy9ifrlnVx7gIAAACIGz0rAAAAIEkyxjxJa5XQ/7e19p8nb98/+ffU0qKnSir3Apjl/prvStJ9xpjnl4YU+st5yzeIvzwp9vMbxPagpCOSfmkyrNNHJf21pH/b4LuNGGOu0dqwTM+01h6aslh1m6Vj9/G8z6vrKj5fdF3T/LLWGje2zlnubEknSPpii3UDAAAAyBSNFQAAAPGwsz6cDKVz/4zX1Ap8Y8y3SbpB0ksm80+s/eDavBFfk/SvSov/K5WGNJpjd813b7fW3m2tfVdp0upnzFt+3g+VJ8W21r6rQWz/2HAbOjHGvESTycKttXtnLLpb0ubKHBTlfXzMPjHGbJa0QdI/q6LB8dot6fGToakKj1fD4zmZJPx5WmvQOjJn8bu0No/Joxqst/O5CwAAACANNFYAAADE43ZJm6d9aK39Sqmyvu5VW4FvjHmcpA9I+k/W2j+vWeR3Jb3GGHOGMeZbJb1U0jtK319vjDlBaxM1rzPGnDAZAqj47pXGmEsm8ym8pvzdKb81dXljzMrkt5YlLU9+a+rQpnOW/5jW5gH52clyT9baBNQfnBFfed0bJuuWpPWTdZvJZ8+X9P9Kusxau2fWeia9WP5B0msn6/j3WmtA+LPJIu+S9CxjzPcYY06W9IuS3l2Z46Js1vH6iNYmBN86if+ayft/NYn7KcaY2kaxSYPWr0t6trX2zlnbNNmusaS3S3qjMebhxphlY8x3GmM21Czb6dydxHWC1hpvJKl8TAAAAABEhMYKAACAeLxOa5XQ+40xP+VwvdskbZL026Un2ctP2r9Wa0P5fFnSRyX9irX2A6XPP6S1IZW+S9J1k/9/ryRNlnu91oZX+vLk9dppgTRY/jWT9b9a0gsm/3/NjG2buvykZ8Dlkn5Aa/M2vE3SC621n5+xvrIvTNZ3ntYaOB6U9M2Tz35J0lmSbizt07cUX5wMWfVzpXU9V9IWSfskXau1ngt3TuLcLellWmu0uENrQzD9RGldP1caRkuacbystYclPVtrQ1Pt19qcEs+evC9Jj5D0t1O293JJZ0j6RM3wXdP8lKSbJN0o6RuS/ofcl0Ee1NHhrz4/+RsAAABAZIy1M0cTAAAAAJAJY8xvSfoTa22j3iUAAAAA4AqNFQAAAAAAAAAAwCuGgQIAAADQmTFmN5NiAwAAAFgUPSsAAAAAAAAAAIBX9KwAAAAAAAAAAMARY8wGY8zrjTHrfMcSkxXfAfTl7LPPthdeeKHvMJCZm+64XZeecefsZfZtOu69S885t/F6bj50qi7acG/j9c+Lp+57xXcesFYnGzP1OwfsWPtHJ+vgaJ0eOLheMpLGRjJWspPvLY+1sjLWuqWR1i+NdMG6BxrFM8tIY+0brdf+1ZO0Ol7S6esf1DctH5q9ffedpUs33v3Q35994CydvuFB7T94oi48+W6dMgn3s/efpY0bDunegyfo0o13aSyr21ZP1v1H1mt1vCwjq8ee/I1OcX/2gbMkK5174r06e/mIpu/Zbm7av0mPPG3t2N1y4Cw97uS7j/n8K0dObrz/94+XdNeRU3R4tKJ1SyNdsOEb2mCWJa2dF3ccOVUPHF4vOzKSkZaWxzphZVVnrntAZyyNdNP+TTrhxMM6eHidlpfH2rjuoI7YZR1cXafRoWUtrR/pxJVVLZmxjLEa2yU9cv19x8VhJR20Y51o8mtbv2n/Jj381H06a2l1+jL3na1LN97Vet1jWX3hwJl6zEn7tG+8rDOWRouE+pDyOXbTvk3HpW1V5bTuPivdeWSjDhxer8edcvTcvWn/JG1asjrrpPv18JWDR9c/+W6Rfs37vVDddMftOu2UA8ddn9O2q3qPiH37ga7K18Ks62Bavir2a6e6Xasa687Vk3TXgVPW8mOSTjjxsC7ecM/R79x3lk5Yv3a/Lu4vTdLr8u/db/VQvqmJ20cbdG5NPu3esdGX7zlbl55x59z87cy47j1bl55afy+8Y7Ret993ms485X49fOWATMvc12fvP+uhe1L5vpOCrx45SVZGI7uksTU6uLqi8eFlnXrKg1oxI91z+ESNVpe0fv2qNq4c1N33bdSlZ9ypB+1YXz9ymg4cWafxaGkts7Zs9aiT79RJpfzanaN12r96ko6MlrV+eVVnTfKITVSP6RGNdfOBs/SYk/bpttUTHsoLuHa/lb584ExJeii/v3f1JJ2/cqB2+c8+cHx++9bVE3XeyoNO45pWJvvCwdO1bMY6Y92BmfnFtvaunqRDoxUdGS/ryOqSNFo6Wr5bspKVVtaNtGFlVScuHdHpywcWzqsXZbXqdXbPeEkHxut1cLyutqwgre2f2w6dLmNso3LyrPSuaXk+1vsG4rdr1667rLXHVyohSG963aaDv/LmfXrNq878acl5FVCykh0GasuWLXbnzp2+w0CGNu/Y3vm7e7ZuW+j7QAhGJ4+0dGBZJs3bC1rYs3XbzM9dp3fzfm9eHF2/78K8fVGObdqyPuMHfKi7FuqugyZpTYzXj480lHxqnsYrVjpxLB0xWjqY3wMkSMustK5pGhfjPQNpMMbsstZu8R0H5jPGbHj8JesPvucdD9cPv/g2fWb34fXW2iO+44pBsj0rgBj1XQAsMlUUNNEHayS7YmXGRnbZylojRw/sA70pp4ebd2z3Vvhs01hNwzbgns/rvwvSAAzFLmmtF+19y2v/Bzpy2ZjcNQ2cl843zWOF8KALgLC96XWbDu7bP9aFj1inZz7tZF1z5emHRe+KRuhZAfQgxAKky0weUMeatQKtGa/1FB8vr/1fEr0sMjT0E7ptC4uh9k5oGlfTJ8qB1FWvhUXzOzFcR9Oufxdp6tA94hC+YmTXIi9X/Rtoqkv64itNTu2+gXTQsyIORa+Kj773fJ26cVl3f2Oky67YS++KhmisAHrSV2FuWmaoa8UbhU64YkvPCJSnLSm/h3z4GE6kSYV+23UMbVbMTXrH+Y4f8KFJBVdKQ3tMa6DpI0/XZAg65IXGCnTRNG0tpzMhpMcp3TuQBhor4vDma8+x+/aP9XOvOPOh9/7rtXfpkd+8Tj/+ytvpXTEHw0ABPXFRaTZrfdM+Dy2DByB91fSHtAdAjGJMu2KJedEGFYYyBfIQWppG2gOgrUmvCn30vecf8/4rrjpDl12xVy99lVlH74rZaKwABjLUGONtM3iMfQ7Xiiftvvict+pRf3K132DQm7q0xncBM4W0zEeaHNKwC4Ar1Tko5l1bsZzzsx5K6SP9cDm0VNOx6ZsM7QV/6FGBJlIrY6a2PQD6U8xVcerG5WPeP+vMZeauaIgpsgAAQG8279heW7ijwBcGjgMQj5iv15hjBwAAaMIYs+G637tH11x5Wu3nr7jqDL3pt/fLGLNu4NCiQs8KYECznsgYYkxgCooY0v3jgzx9FyBX3dmrTy2X11n3G3XLw71p+5n0Hzmal+7EkCZ1nZMsJKQ/AFIwrSwfU3oMoF/TelUU6F3RDD0rgIHVddmve881Corom7HHDg1wytIJ/oJBLddpS7Uxovz/eWlOKAW7Ig2uS4tDNS/O6r7vkv5zz0BMYrp+m5qVjqa2rU2RLgHx4HoFkJt5vSoK9K6Yj54VgAddCpk8lYzY/OJdj/EdAqaoGw+8a6EylrQphhjbmNdDpjguVBYgd7PSqNDSr6bX67R5Kxa93rv0vHM9+Ww17WJyWwAhIW8FYJp5vSoK9K6Yj8YKIANkqODD7/7V9+r3L3+zXvC+l/sOBROzKuYWqfDqmsYMVeALqTJySKT9yM2sNCXk62GR2HxtV9/Dlw4xPCoAAIALxpgNj79kvT763vMbLf+Kq87QZVfs1UtfZdZZa4/0HF50aKwAAjVEJR5PhqBvT9rAbSY0Ta75VNKGXBspXAntqXOgi9DTs5BiaxpLnw0JpDmAW9PmFwMAuNO0V0WB3hWzUYsEZIrCIICU5ZDGUeEAHK9akT7rOvGZTsR6/dLjAUAXdUOQxqpuqDoA+Wrbq6JA74rpaKwAAtVnAZBMFQCEa9qT4OWCsaux6cvrBVIRyjldN7dEKLEtykUa1GQdqewv5CX0Hl0hmDb3TixijBlAP9r2qijQu2K6Jd8BADjekJnbakaLjBdcuuj6q3XzFW/1HQbm8Fmg7ivNKZ6oTrGywGVDhYvlgJCEcs1X40gpPXKxHansC6BOSMMoxtCjIaX0EUBejDEbrvu9e3TNlad1+v4rrjpDb/rt/TLGrHMcWtRorAAisUjGsvzduvXs2brtoRcA9D1ZapvPXIixAOw7Pfb9+0AXMV7rMek7XXCxftIuhCKk9CikWGbpM86UH2IB4M+bXrfp4HOetbF1r4pC0bvibW8857Dj0KJmrLW+Y+jFli1b7M6dO32HATQyL9M0dMGLTBxcuvmKt+qi66/2HQY8aJN29Z3uxFiB1dc+qdsXjL2MFHSZINpnHDGpm6TX5VA3s9IlAG7EMgSk6zR62raS50GMjDG7rLVbfMeBh+aqOPjR957fubFCku7+xkiXXbFXn9l9eD1zV6zpbc4KY8zbJf2gpDustY+bvHempD+WdKGkWyRdYa3dN/nsZyVdKWkkaau19oOT9/+1pHdIOlHS+yX9pE21hQVZCi2jGFo8iF8xFBQNFnmYV/CbVinO+M7DmHZ8KLAjdqGkH6HE0TdXaUZdIwiAfoQ0PNUQSE8A9KnrXBVVzF1xvD6HgXqHpKdX3nu1pA9bay+W9OHJ3zLGXCLpuZIeO/nObxhjiqP9m5KuknTx5FVdJ5C0nDKUAOLVZCi5cqGRAuR8rtN/7idAv0jXFsP+Q2pCvu+GHNsiaQHDPQEYwqJzVVQxd8WxemussNZ+TNI3Km9fLumdk/+/U9KzS+//kbX2kLX2S5JulvTtxpiHSTrVWvu3k94Uv1v6DpCEWU+5hpyJBICYUGhlHyAvDKHpVl/DqFCxCAwr1mutnFZM24ZYtw1AfBadq6KKuSuONfQE2+daa78mSZN/z5m8f56kr5aW2zt577zJ/6vv1zLGXGWM2WmM2XnnnXc6DRzoU3UCbBopAKRoXtpG2gcA8SHvCgAAcuG6V0WB3hVHDd1YMU3dmFx2xvu1rLXXWWu3WGu3bNq0yVlwAADAPZ6AA+BCXVoyK31xnfaQlgGoQ9rQXbkHxbQ0ft4yANAH170qCvSuOGroxorbJ0M7afLvHZP390p6RGm58yXdNnn//Jr3geSE8FQamTz0pZhkG2nynXbVqaapIcbYt7pJzAHEqUjTfOYXU8knkhYC8WiS7nRJm0gHAHTRV6+KAr0r1qwM/Hs3SHqRpGsn/76v9P4fGGPeKOnhWptI+39ba0fGmPuMMU+S9HeSXijp1weOGUBJOWOXSqEVQDeuC3p9pCm5F0Zz336kL8dKqhDzX65jKo5R2/WWvzfrOO/Zuu2hdZf/D+Qkx3M/9vQfgF9vet2mg/v2j533qigUvSuuufL0w6ofbSgLvTVWGGP+UNJTJJ1tjNkr6bVaa6S43hhzpaSvSHqOJFlrdxtjrpf0OUmrkl5urR1NVvUfJb1D0omS/nLyAuBYk4wqmTsAAIBj9V3hN/SDItX8XrlSP2Rte9OFvj0A3OKaB7AIY8yGx1+yXh997/nzF17AK68+Q5ddcate+iqzzlp7pNcfC1RvjRXW2udN+eipU5b/ZUm/XPP+TkmPcxgagIq6gi+ZObhWDAV10fVX+w4Fc/RV8TZtzGHX6Q3pF4Ah9dWAMK3RYNbyvnqoufztLmn4Iul+bk+Wo19110KOPRhCQ94QwKL67lVROPOMtd4VL3/Jadn2rhh6GCgACSHjDaSryfXt6mlbl+kIhdE17Aegm1B7ETRNJ2MdrrNufw/R63feAzsx7UOEIfRzpm4+q9BjXlRo6TmA+AzVq6LwiqtOz7p3xdATbAMITOqZUwDtlSvrmkzm2qUSDf1hPwPdlNOypulayPmoIdOCRfdD1+8v8j2GQMVQQk4nAADzvel1mw4+51kbe+9VUSh6V7ztjeccHuQHA0NjBQAAmKtJo0UImlZAxfp7s8RyjACXupzzoVyzbczbTh/XfpH+ud6ffaerXSftBlKQ2/C/KW8bgGEYYzZc93v36JorTxv0d19x1el689vvkTFm3aA/HAAaKwAAgynmrUDYZhXspn3WpHIpxgrCpnxvG4VxwL1yZfy0OXeGVHedz2qkdNFboW7bXTUm1M3JQVoKwBWuZwAuDN2ropBz7woaKwAco+2TuWQCgfzMuu59VzQVhogjlG0FMIwQrvny8Hx95sGqDQddelH0EWN1nW3XPyv+Lg31QCpSO8dT2x4AfvjqVVHItXcFE2wDQAPVyeeKDHAIFRfAkEI65+ueyh1KaI0hm3dsp2AOLCiHiWZ9mLVf2+zzRRop2qy76TKcK0hNKmkg+SEArrzpdZsO7ts/HrxXRaHoXfHyl5x2WJLxEoQH9KwAMuei4Jd6hrDYvronGVPf9j4wFFS82kw4WzdsSN+4HgE0NavyfJoh05jY07Mm8YdSKZrLvCdAEzmkPQDQhO9eFYUce1fQWAGASVmnYL/05y33nOc7BMzgqhLGR2VOuXGxL0NtF+kPMKw2wxz1mQ7Efu33EX9f+yT2fQ30IdbrIta4AYTJ11wVVTnOXUFjBYBBpJp55Mm6bl522q2+Q8Acded2XxNvd9Xlyei+fjMEIccG9GWR8746J0MIXKZfoeS9Zu3bJvs9lO0oq/ay5QEXSGGeq3Vive5miS1eAGELpVdFIbfeFTRWAOhddRilGMQSZ6w23/BS3yGggWkNFnXXR99zJoSQfnSdmLWP3wPgRp8NqiEYOt30nU5P08dxrrsvhXCvAppIOd0DgEWF0quikFvvChorADgxrWBW937ohbjQ40vB0sElPfyS232HgQjEUPETenwA4hBaWuIq/Q1tu4A+pHiep7hNADBPaL0qCjn1rljxHQAAxIYnkQAA8M/H/TjUPEARl+/Kxb572XUR6jEDfAvxegUA3970uk0H9+0fB9OrolD0rnj5S047LMn4jqdP9KwA4ExdV/imy4ZiVlypDxUxtI897r2+Q0ADbc55l9dHDD0qQsP+AvoV6qTafcy94WpOBt95p3m/3VdspMf58X2udxVjzADQl1B7VRRy6V1BzwoATsVcOJvXUAG3dh854DsENFT35N2erdt6uS5CTUNIAwD0xXW613ejStP1+043ff9+cVx9xwEsoq/8nkuh5h0BxCfUXhWFXHpX0LMCgDc8OZ23y9/zSt18xVt9h4EFuL5+m6yvukzoBeiuUt0uAEe5yAeF2GgcQvpVF8O0/R1CvEDIKK8ByEHovSoKOfSuoLECgHdkgIHw1VXmUMEDAP6EPmdHKPm7Jo1CoQ7xBQyB/BwArPWqeM6zNgbbq6JQ9K542xvPOew7lr4wDBSAINBVHghfeTgortU1VEIB/sQwPElKmu7r6nwXs77X5J7S5HdDT4s5VxG68vlZdz2Feg6Hfu0DiIMxZsPjL1mvj773fN+hNPKKq07XZVfcqpe+yqyz1h7xHY9r9KwAgDlCzJin4iMHkx1mER10qQhr872UUVgH4lNMyFt+hapr+uxy3fPWseh6+t7/pNOIxbRrgSF8AaQqll4VhdR7V9BYASAoIWWAQ684SMGP33CVXvP09/gOAxhMDJWSAFBok175aqiorq/JE+Lzvt9XGh1SPhfoKtTzmPwVgC5imauiKuW5KxgGCkBwQuhm7Pv3c/LYDbf6DgEthDKudzWdKA9R1UaxjiEK3tV9RzoDhCGEfEcbLuaNWHTYpaa/49OsmMqfTdvervcVIAXz8kehpJvT5lTj2gXQ1Jtet+ngvv3jaHpVFIreFS9/yWmHJSU1ZAWNFQCC5CMDHEKGO0cv3PVi3yHAM18FSheNHQDiF9L9v66CsI/GA5f5rHk9FVzp0vDSdL1DngOhVPICTYSWP2o6d1pocQMIU2xzVVSlOncFjRUAgrVoQR1x+L5v/hd9aO8TfIcBT2IoSLoaTx2Ae6lW/Ibcu6Hr77Q5Vk0rJKett22MLtYB5GbI9LdLuZAGCwDzxNqrotC2d4Ux5umSfk3SsqTfstZeW/n8WyX9jqQnSvov1to3zPuuMeZMSX8s6UJJt0i6wlq7b5HtorECAODVh/7mCXr+931C7/rr7/YdCgbmugBZFEqHKpxSAAYQgiEaD9r8zqzhY5r8ZpftcZEek6YD9Wblq9o0LHbFA2wA+hB7r4pC094VxphlSW+WdJmkvZJuNMbcYK39XGmxb0jaKunZLb77akkfttZea4x59eTv/7zINjHBNoAoDF2A3LN1G4XWAf3Cpt2+Q8CAXF1fdesoCrGuCrMxFIpJq5C7nK+B0HpTVIfXm7auafcBKiWBOPWZFi0y8T3pCIAZrnzOszZG26uiUPSukPSjcxb9dkk3W2v3WGsPS/ojSZeXF7DW3mGtvVFStdFj1ncvl/TOyf/fqUpDRxc0VgCIRl+Z4HKhuVx4JnM7nF+86zG+Q0AmuhZ2F/1NAP1ylUeIqeFjqN4ErvZJXVpYXnfTCbEBDK/cYDCrITJE5MMATPHCa648zXcMTvynte34z8aYnaXXVZXFzpP01dLfeyfvNTHru+daa78mSZN/z2kbfxWNFQCyRe+JcPzuX32vLn3il3yHgQi1uYabPPEbG9IwwL0Yrqs+GxC6/k7XdJX8GBCf2BosAKDGuth7VRRO3bgkSXdZa7eUXtdVFqub08I2/IlFvtsajRUAgCB8ZveFvkPAAPooxMZeMJ7WuwuAP/OGKPIlpzSi2M5cthdIhc9rNtS0GwACsFfSI0p/ny/pNgffvd0Y8zBJmvx7x4Jx0lgBIB6un4RO5clqAPUWvcZdpBGkMwBiRhoGAACQhBslXWyMeaQxZr2k50q6wcF3b5D0osn/XyTpfYsGSmMFgKxRCA/HnsurvRSB5qY9Ned6wm2XFn1CmicFgWO5vibq5lNw1QOqTW+qJst1nY9nqOGkuiKdA+LU9tp12Wus6Vw4AJATa+2qpGskfVDSP0m63lq72xjzMmPMyyTJGPNNxpi9kl4l6TXGmL3GmFOnfXey6mslXWaM+RdJl03+XsjKoisAgKHs2bqtl8Lw5h3bycgCCWubbrhKZ2atZ16lI4Aw9NkAUn2/uPbb/iZpRljKx4P8JVI2rwwV2nBQAFA11th3CE6MG04fYa19v6T3V957S+n/X9faEE+Nvjt5/25JT20R7lw0VgCISp8NFsX64cdF11/tOwRkzmXa0rWhoinSKsCvPvIi83qINRH6Axihx7eo6rGqbkwvmQ8AACAASURBVC8NS0hNaNd0aPEAANqjsQJAdIoMaJ+NFgDi01dj5jxD/yaFcCBOXa5d8iXx4xgCzXCtAAAkGisARKzPRgsAcRqywYK0B8hTk2s/pUbFJsMa+WosDg37ATkKbegzelcAQNxorAAQvbqCIePBA2EqFyAZfq099hUwWwiVxb6v0z63P+ZKwPI9Z5HKVd/nFxCyrmkE1xUAH0Y2jTkrRrbZnBWxoLECQBLaZIpDqMhAvU/+h+36rj+LsxIEzc0b03tRsV/j0+KPtYIQQDcxp2Oz+GioLu/Lafegafei2I9DdZti3x6Er22+zvU5SX4JAOJGYwUAIBjnLJ/iOwQkItRh4poWoGNvcAFCU76mFr2+Zn0/9Uoyl9sXUi+N4njW9f5zbd42t/3dto0RNF7AN845AMAsS74DAACgcOvoPt8hwBNflUJDahtLefmQtgMI3ax5FVxcS0NUtIVYmTdv36WSTm3esd3rPWnR/djlXpPKsUP4+k7bOJcBIH70rACQlRAL/zjq//qzn9I/X/GbevT1/9F3KPAgpKdsQ8H+ALqp9qSo+1xqny/IOR/RJI1uu19dpPuhzH80r8fCIvG1HR6wy2/Row8uDdFLCQAWNVYacz2ksh0FGisAZIOMchyW6PSXtVQbLFLcJiB0rq878hHNtamkXCTdr85FMeQQR00abvpqSOGeghiQZgIAuqBGCAAABCW1wi2VSkAeXA0xFXIa2GU+hSb7Zd56q/tl3n7qez+2mX+oj3tADkMnAgCAPNFYASAbFMDi8Lwvfb/vEBAAVxVNviv9SHeANPSdloTeSFHWV5x16w2tkaL8O31iziIAAJArhoECkIVYKgAg3XjjxXrkpbfqSzed5zsUBCDmYaFijRvAsYZoqBjKtHRpiMr31PJifd+fuIcMp25fp3a+5iLmfCOA4Y019h2CE8xZAQBAz37wmz6rX6exAg74qCCjkAwgFG2GK5L8VtCSds7W5xwY1d+R8qms57wDACAsDAMFIHm5FLYAAMBiimGEugwnlFN+I6dtBQAAwHDoWQEACM5PnnGLft13EEBLPJ0JxKVJhXtsQ0Atmg71+VT9vJ5usQ3f4iPWIX8zxaG7kBbOUQBIEz0rACQvpoIv1lz8kR/zHQICEkNBlHQGQG7pQB9pc9deLfPs2brtmJeLdaUuhnvvomYdxxyOcexia+AEEJ6Rtcm8UkLPCgBZyG383djZOzbo5Avv1QO3nOo7FARiXoG07toeqgBLQRmIk++ncl39dh9pUNN90+ccCn0em3K85W3IMZ+Y2zZzz07PUPO5AACGQWMFgKzkWhCN0eYz79ZNNFagpK7BYt6QIgBQJ7Thl2L73aqQn3CeF1f583kPt4S6jV1xn5yOfROX1K5NAMgZjRUAskODRRzec9GHdNGnr/YdBgIVyjVM4RiIj68eDa6e4HeR7oSShoaKJ7XT1aWnJgAAGA6NFQCyRINF+H7ytn/jOwQEKITrloorID6+Gyj6iKWrvibP9vG7fcohrSc/fCz2BQDkZaw05npIZTsKNFYAAIL0F594osanrmrpXm5V8C+HSisgVS4rINsMdxRixWdfMYU8DFTIsYVg2r4J8fx1oc1wkgAAYHjUAAEAgrXn6b+ti65nKCj4QwUXgKpYK7/7rpSdtV+oEE5L3XEO/RjHGDMAADmisQIAEKxf23eh7xAAABGbVRlZrryMqdKyS2NJ0/0wb9kmvzNvkmoAAABgGhorAGSJAnQcTlo65DsEZCzGJ6cBdNNm7P6Y0oY2jRR173fJL5HHSsO0ayKm838e5uwAgLyNEpnrIZXtKBhr09qgwpYtW+zOnTt9hwEgUBRM4nHCBffp4Fc2+g4DmUmpMgbI3bR7/qzrvPhOtZeAyx4NTXWtNO7SUNF1fbEgbe9H6OdGrud7rNo0mHJNIzfGmF3W2i2+40iBMWbXXbee90Tfcbhw6JDVeZtv+6S19sm+Y3FhyXcAAADMct7p9/gOAQAQsT1btx1XoTWvgqv6nbp1NP3tRRTf99FIMi2W0DVphEIeul63nCcAAPhDYwWA7FAAicsJy6u+Q0CGSCeA9BQVl7FUundF+hVPw0oKQj3fup4D1e3hXPJrkR5kAIA40VgBAAjaD57zj75DQKYoAAPwyWUlabWXSMpmDdmV+rYPLZf7ZC4NnQCQm7FsMq+UMME2ACBo/+ODP6T/9cNv0NPe/VO+QwEAwJvy3BVtKk27DiWVghy3Gf2qzmMDAADcorECQFD67HpNoQJAW5t3bKeyC0A0+szrkI+CFM954Or+3aWBEIuJ5RwDAPSDxgoAwajLmLbNrE4rSJDpjdu5y+t9hwAAgHdtK0xdVbCSj4IU33nQtSfStDJJdTi12PYHAAAxoLECQFIoNKTpRLPBdwhI3LRKB56kBNBF6vkRKmoRk7a9LOY1WHDuA0AaRjaNuR5S2Y4CE2wDCAaVgpjm4wd9R4AckAYBcCH1iszQ08rQ44sZ+zb96xsAAN9orAAQFApBqPPiG67W07/7732HgYTVDRVBegTAp1AqRafFEWIaGWJMqYlxH9MbAgCAeBibWFeRwpYtW+zOnTt9hwFgAdMm26awkaezH3237vrns3yHgcTFWAkDIAx95U/apksuJwSelhebtYxPpOH9C+l4d9X0PElhW3PAdY+cGGN2WWu3+I4jBcaYXV/b+7An+o7DhUOHrC581Nc/aa19su9YXGDOCgDBIuOJsk894U910T9f7TsMJK7tuNYAIPVbqdllvH1Xv9tkvTy1jti4bNADAMRr7DsAR1LZjgLDQAEAovDoj73QdwgAABwntYr6zTu2J7dNQJ3iPOecBwAgHPSsAABEYfz1E3XKI+/R/V86zXcoiET1ickmFRE8ZQmgjabzOcRQERpDjPOUt4H03K0Uzo865e2id2WcOG4AkBZ6VgCIDpnRfJ2wbtV3CIhI3RAmpB8A+uY6nRki3WpSER3b0+cxxRo69iUAABgKPSsARInxkfPEvBVwgQYLAK5U8yM5pC/Vp5hDzo8xNwHa4DyJF70rAHQxkvUdghOpbEfBWJvWBhW2bNlid+7c6TsMAD0KuXCMfnznd3xef/t33+o7DESGwisA31zkWfpOy9rGWMQTW36Me0J7sR3jRcXSGJeqadcow3kCkjFml7V2i+84UmCM2fWVvd/0RN9xuHDokNXFj7r9k9baJ/uOxQWGgQIQLTKj+dm4ctB3CIgQFQ0AfHKVBvWdlhVD5aWev+KegHliG/IsBxwPAMgHjRUAopZ6gRrH+tDfPEHP/75P+A4DAICkVfNXdY0YMVcexhw7hsN5AgDA8JizAkD0mL8iL7+wabfepe/2HQYAAEmreyCkOvQT+S8ArjH/BIChjBKZGSGV7SjQswJAEnIYtgBrvn/3D/kOAQCA3pGvAYDmSDMBIA00VgAAAABAD1z3PKAngzvsy2bYT/CB8w4A8kVjBYCk8ERN+r5655m+Q0DAZg1bAgB9cz0xb2pzRSAunGvwqc35R14PANJBYwUAICr2jg0y5x70HQYiQeEVwFDKFWuLNlrMS7uoRHaD/QiErbhGyc8B6MM4oVdKmGAbQHKYcDt99vYTfIeACFCwBTAU170pmv6mr3SOvBaAoRRpHfk6AMgDPSsAJInMbNpuvuKtvkNAwCjQAhjSEJX2pGn9odEFAAAgHPSsAJAkCp5p+3eff6bvEBAgKvMAYBjks9LHMUZI6s5H8n0AkCZ6VgBIDoWr9J1/8n7fIQAA4DzPMavyre4z8jxusB+B+HDdAljUSCaJ11jG9650isYKAEB0Pvq3j9Pl33uj7zAAAOisOmRdk6eEZzVYUHEHIDekewCQHhorACSHLsF52P5Nn/YdAgAAM03Lk1QbKdpMqj3rfSruuiHveDz2CWJBugcAaaGxAkCSKGCl7ydv+ze+Q0BAuOYBhGbP1m1Ox1lfpEJu847tzir0UqsY5P4xXZuGNAAAABdorACQLApXabt39QTfIQAA0NhQFb/VxoTy34s2NKTWUIH5OOYAAGBINFYAQEBoYGnu45+6RP/2yf/gOwwAAKYq7uvc3wEAAMIytum8UkJjBYCkzascKJ5yDKESgQqN9h5Y3eA7BAAAjtN24uy265ynr6fhyaPkh2OOPpTLYCGVxwAA/tFYASB5MWR8Y4gxRO/85o/5DgEAgGNwT48LwxzNR0UyXJp1LrU5z2jkAIA0rfgOAAB8qWZsp02EOXQcdZ9TkK73jC/8gO8QAAAZG7KSrG1eYNrym3dsp3IPnRTnDflSzLJo+tLkPCMNA4B00VgBIAvVTO+0DO7QDQOz4qj+TcHweKtjOggCADCk1PIkVHoC3fV5/aSW1gAIz0jGdwhOjHwH4BiNFQAAAAAQMCrs4AvnHgAAGBKPpALISpNxTUMd0oEn/473pZvO0/c86XO+w4AHfUxeCwCh6LOC2EWayVjxadu8Y/tDL2Aarn8AQB/oWQEANULtdsxYwcc7d8O9vkPAwIrrgEIygBQV9/g+7vWkm5iHPCbmIR0BAPSJnhUAECEKCUdde+5nfIcAAIATfVcUUxENoGnPqLrPKYMASMlIJplXSuhZAQARorLhqP//QW5lAACgPSpejxdq72J0M+scn3Wcy71YN+/YzrUCABgMNTwA4Nm0gsK0QgEFyGOdYFZ9h4ABUVgG4FNxD441LXIdN3mSNNFgkbdqOhFregcAiBONFQAQqKaFxNwLlC++4WrfIQAAMlC+1/bxpHHO93KEJ/f8ZSraplU0TAAAfKOxAgASwMTbyEXsTzUDSAfpEVJH/jJt5QYp0jEAORrbNOZ6GFvfEbjFBNsAELlyAZKCBnJBxQmAUJAexYk8E3LQZBJtrgUAQEhorACAxFDgAADAvRTurzSsoIsUzv3U1R2j2I8b6RUA5InGCgCoEVvmuBovT0khdZzfAOAfaXE+ONYAAGAIzFkBAImIrYHFpW95wlf0hX+4wHcYGACVJQB8mHWPJV0CEIKU5qCYV65pO3E4ANQZKY05K0a+A3CMxgoAKMm5wj9mqUyMlatyYbPuGqQwCmBobfIDLirN+sp/lCsv+zLEb8Avjm/YyulP7HmmtmlvIfbtBgAcZaxNbMrwiS1bttidO3f6DgNARCiIxevmK96qi66/2ncYaImCJYDQLJoX6JKuDZn/6DPdjSkfxf2nuZiOa45SOZddnGep7AtgFmPMLmvtFt9xpMAYs2vXlx/xRN9xuHD4kNV3PnrvJ621T/Ydiwv0rACAQPBkYneX/t2P+A4BLVCYBBAiF/fgJkOwpHqvjykfwxAySEEq53As6QYAYBg0VgBAAIrCRkwF/ZAcPsztLBSpFJwBoKpI37hPAwAAxG+kJd8hODFSWqMmUbsDAKLiAQAAuBNqvqKvHgWhbi+Qsph7CJFmAACmSaMJCQAiR4Z9MUfuX+87BABAwlKawNa1GPMwHMPm2FdwafOO7VGmGQCA4dCzAgAQvaX7lvWGZ/6+fuovXuA7lKxRoQEgRvMqzlIa/inndDrnbV8Uw5Siq6HOG65vAEgHjRUAshdK4SuUOGK1zox8h5A1CokAfCnfP9ukRU3uuzGlbb4aVajIzgPHGW1xvgAI3dga3yE4MU5rygqGgQIApOGZJx30HUKW9mzdFlVlHoC0Na0cS6mhopoOz4q7r8pD7gV54BiHJffjUaQ7ue8HAEgNPSsAYA6eJIvDr++/wHcIWaBACMCnJvfjWZPONr2fx5LWTYuTvMuxYjmeIeN8CksM57TrdCiGbQYALI6eFQCyNyvj23emmEy3O189dJbvEJLGk2sAfGtT6VW3bE6VrUNtazFZbk77NkccX3TlKv9IHhQA8kHPCgAYSHUs6eJvnn50490f/XY97yl/oz/8yJN9hxItCoIAUtL13hpLb4VFe48sqvo7Ie2bMu5tiwn1uCIurtOrankKALoYKY05K1KbvZOeFQCg+oxu0/Gfu/xWdX1ktN14164n+Q4hWpyDAHwLoVI0h7QwhP08lByOJ/KT0nnddFvKPbjKaRg9uwAgPTRWAMDEvMaJIYaESqnw4cOeZ/yW7xCCNG8CQs47AL7VVUINrUlaGFJ62WSoqz57X4S0L5qgUrOb2I5zyigr5NXYCgC5YhgoACiZVwAYYsiF6nBRaO4puy/3HUJwpvXiofs8gFDVTZDd9z0x1rRw3n4p9qXr/Ve9h4SeZ6k+iR3r8QZSFNoQewAAv4y11ncMvdiyZYvduXOn7zAAZGRWJrtroZiMe0ubDkl3bvAdxaDqzi0aIgDEIpT7XNv0MpS4u1r0/pD79uci9uOckhzO2UXOtxz2DyBJxphd1totvuNIgTFm18e+9Kgn+o7DhcOHrJ72rXs+aa1NYgJPelYAgCPlTLKrwh1PGrWUWUPFNBTYAMSA+1ucOG5p4/jCF8o9AACJOSsAoBcuJ+em4rkda3xHMBzODQCxKeYNCKlCirS0uZCOG4D0dEmPScMBIC30rACAnrjMOPfRayNVduOqzL3c3gAgFCHet3Ku3Mp524EY5XbNNu1hkdt+AYBcUJsDAJGJZTJLXz741F/TM96TfuGFAhoAtOcq7WS4EgDoTzmNJc8LoC/jRAYcGmvsOwSn0jgqAAAAAIJDhT4AAACApmisAIBI8ZRRvWf+7U/4DqFXe7Zu49gDQEehzZcRm1TuP5wD06VyjFOS6/lKnhcA8kRjBQBEKteCyzx2nOatjQIbgBiFmm65aLQIddv6lut2Az6R7wcA5II5KwAASTnppEN6QBt8hwEAWYulYm3zju1ZVb7ntK0Sc4sAAIDpRjK+Q3Aile0opPn4KQAgWw/ccqrMOYd8h+FUbpVLAAD3cr2XTOuZSCMGAABAeOhZAQBIzuqBFS37DgIAMhVTJXCTCvxie2Ks7I8xZpfKx45eFs2wj8KU+7UMAMgHjRUAECkK3dOZUTrdICmcAoA/5ftsbENGxRRr32I7dsgb5yoAIGc0VgBAxGiwqPfK7/mgfu1Dz/AdxsIorAKITUz3pFSHBsr93lFsf92xLOebct9PCBeNawAwjJFNY3aEkfUdgVs0VgBA5GYVynN1gjniOwQAyE7s96G28Ye0vVRsHq/6QEdRAcy+QgzK5y7nLAAgJ2k0IQEAUDJK4PZGwRQA+rd5x/aHXk2XL//rWpe038f9ItR71Ly4QmpgAprivAUA5CT+2hwAACre8MEffOjpyeoLAOBejJVpocVc3KNiuVeFeG+tHtNUh/rqU0jHEwAA5IfGCgBAcmIvaMceP4C85FT567pBIcQK/9Swb9tjnwEAcjCWSeaVEhorACARFCzXTHuKss0wHwCAZnJLV6vjyC9y75313Tbrze0YtMX+mY68EWYp5585TwAAQ2GCbQBISNdKk9QKIKltDwCEKNe0tpiouVCdyNmV4jdy3c9dsb+aqZt8HGEa+thMu4Y4TwAAQ6BnBQAgqSEoUqikSGEbAADTtbnnMlQUhkDeI1xDHRt6UAAAQkBjBQDgISlVhDzsMXf4DgEAkImh7p91DRcp3bsRDs4rAEDqRlpK4jVOrHo/ra0BAAAA0Lvcn76tbn/u+wNA3JqmYaR1AIC+0VgBADhGKk/SXXTaXb5DAAAkbJGJZ11U+DE0VDfsM8Soz0aCtuumwQIA0CcaKwAASfr4py7R857yN77DAIDkUFHlRsj7sW0jTCwNALHE2beQzz0AAJC3Fd8BAADQl3VLI98hdEJlCgD4UaS/Q05oOy+WoZVj2rxje+M49mzdRiV45Dh+4QopbxhSLACwiJFN4xn+kfUdgVtpHBUAgDMUVP2iAAgAflQnrc5xmKWU8wC5HctZ2BcAACBUNFYAAJL1387+J98htELlAYDQpVqZPSv99Z02d50XA5jF93kNAABQh2GgAADJev4tT/EdQiNUGACIQY4V5j63ufrbxd+u7xkutzGUoaCqw3lxn6039LBn6IbzFwCQExorAADe9VW5sXHlkPN1ukThEwDCE3rFbZt5JHz8nu8K8OpwXpivvJ9CP//hXiiNjAAwtHEiAw6NfQfgWBpHBQDgTF8F+3nrbTM+eNPlPv7VzY3jAwDkqxhqiQo7d2goANLDdQ0A6Bs9KwAAx3H9hNWs9dUVepoWhObFuWH9qsLuWwEAQDs+KguH7s3RVQwxhozGOgAA4BuNFQCARqZVAMwr2M5rUFi0AmTWcBP3fvF0PfbbbtHuv7+w8/r7FEvlDwBQiZkulw8olOeIGPqc4X7aHdc3AAAIBY0VAIBa5YqGWRUAdZ+1ndDSRaX9tPGWv+XUO7RbFy607j6VY6WiBQAwT6gN3eX7GQ0VcaCRIg5DXPPMWwEgRyNrfIfgRNPtMMY8XdKvSVqW9FvW2msrn5vJ5z8g6YCkH7PWftoY8y2S/ri06GZJ/81a+6vGmJ+X9FJJd04++zlr7fsX2BwaKwAA03UtGPmuNCj3tjgyjmd6praNPAAA5I57ZjdUTKOKBgsASJcxZlnSmyVdJmmvpBuNMTdYaz9XWuwZki6evL5D0m9K+g5r7RckPaG0nlslvaf0vf/PWvsGV7HGU4MDAIiWr4qEPVu36c8/vsXLby+CSV4BADHhngX0hwY5AIAD3y7pZmvtHmvtYUl/JOnyyjKXS/pdu+ZTkk43xjysssxTJX3RWvvlvgKlZwUAYBCz5pYY4nd9/DYAAH3wMRSUz/kopqESt51QjhvaCXXoNwBAVM6T9NXS33u11nti3jLnSfpa6b3nSvrDyveuMca8UNJOSdustfsWCZSeFQAA74YqgO3Zuo3CHgAAAAAAmRtpKZmXpHONMTtLr6sqm1s3sYVts4wxZr2kH5L0J6XPf1PSo7Q2TNTXJC38ZASNFQAABIonIAGEgLQoTK6OS9v1hHQ+hBRL3xYZIpLhJeM3xPHjHAGAqN1urd1Sel1X+XyvpEeU/j5f0m0tl3mGpE9ba28v3rDW3m6tHVlrx5LeprXhphZCYwUAYFDVng0+ejrE2ruiqGygMAkAfoVyH+F+kN8+aLO95BkAAMDEjZIuNsY8ctJD4rmSbqgsc4OkF5o1T5J0j7W2PATU81QZAqoyp8W/l/TZRQNlzgoAwOBCqeSJwbRKBsYvBgB/QqoAXvR+ENIcFOgmxPlE4B55PwBAV9baVWPMNZI+KGlZ0tuttbuNMS+bfP4WSe+X9AOSbpZ0QNKLi+8bY06SdJmkqyurfr0x5glaGy7qlprPW6OxAgCQJV8TfgMAEJqYK7lzrLwtV1qXj1usxxD+ce4AyNHYpjHg0Lg688QU1tr3a61BovzeW0r/t5JePuW7BySdVfP+j7YItREaKwAAWYu50YIn7AAgTOW0Ocb7C8LHeQUAAFKURhMSAAAL2rN1W5QV/1RWAEDeYrx3uZLztgND43oDAAyBxgoAAEpibLSgwQIAwtXnPWXWuovJlZveI2K798UW7yK4z0Pq75zn/AIAhITGCgAAauRUCQIAcKfu/uG7krFJwwUVlmHiuEDyn4YAQIpGWkrmlZK0tgYAAId8N1j4/n0AkEiLQte2spHKyXhwrFDI6Vxo0yMMAJAeGisAAIgcFYkA+lYMkUd6M9+0Sjb2HYCQhNggUI4pxPgAAP1b8R0AAAAx2bN120OFp3LFk8sCVXm95d+r+xwAhlakQVQktdfXfQMA+rZ5x3ZvedByekk+GADSRs8KAABmmDb2ePV9VwWnWb/HU80AgDp1w6akfr9IvbEn9e2DX13Pr6HPy7q0jWsDgCsja9J4yfjelU7RswIAAEfqekG0/T4AIG5N0/Jpyw1REefzCWmXUtmOKipjkRvOeQBAgZ4VAAC0MK8w1bX3Q4qVLQCAYbWp8GNseCAuoVynruNouz7yzACQNhorAACYo2vjw6JP1wIA4uIiPR/ynhBK5WcO6oazmbYc0LdF0xlX5ykNFQCAKhorAABooCgcuS4kUegCAPSFewwAAEC9sZaSeaUkra0BACAgPB0JAAgd96r+NRlyq2nPCyAVnO8AgDo0VgAAstO1QqDNE6q+CmBUdgCAH6H2Ygg1Lhy9Z3PfxtBcnHOLrKPvfDgAIF40VgAAshLahKLliopF4wlt2wAAw8s1/Y+p0j+mWBGOnCvrc952AMgNjRUAgGwMUTGwaAVE1+9S6QEAyFH1vhva/TC0eADJXeV/l/ObawIAMMuK7wAAAPDF5VNaPgtedb/NE2gAkK/ivlDcC/Zs3ZZVBeHmHdu93Adz2sdt5Hb+YTrOAwAhGdk0nuEfWd8RuJXGUQEAoINqganrcExDFryqMVLoA4D0+HzqGd2wr+uVG8zQXQr7j2sEANAEjRUAgGzUFfSmVfr7HE+67nfr4pkVHwVCABiO64pEl2l4jveDFCp2Y1Le33u2bjvmhcWlsB8XSYdS2H4AQHMMAwUAyErdUATzKv3nFZL6GN4gx8olAEA/Ur+n+KrMrA63hdkYDqq5mM6pace02AYaKgAAbdBYAQBAonyN2Q0AwFBCuM/lWAFf3e9Nj0N5uRz3WxNDndNDNB51XX8I1zWA9I1lfIfgRCrbUWAYKABAVvoolFHYBoC8ub4PUFGHkHF+9iuVfGXb7WD4MACARGMFAABzzZp4O5UCJQAgLFTYIUScl+gD5xUAoEBjBQAgG5d/4pqF10HjBACgqq+KNirwkCryU2EIIY0JIQYAQDiYswIAkLyiQHzpE92tryhYhTxZJIU/AOhf32ltyPcZ5MPlec75PFsu+bdcthNAuEY2jWf4R9Z3BG7RWAEASMqsAvDdB08a5HdCQAEQQJ9CTwOHktJEuLEqP0CAfrB/h8O+BgDkLo0mJAAANL/ybOP6QwNF4g8TEwLAMIZOa0nbkQIa3abzdY37+F3SMwDANDRWAACy8YV/uEAr5x3wHQYAAADwEN+V90P+vu9tBQCEjcYKAAAQtM07tvMkJhAQrkcgL66uedKO6dg3ADC8kZaS1y7H5wAAIABJREFUeaUkra0BAGStyZNaK8ujASLxI8Un1cqFd9eNFnXrK96j0gDALD7SW9Kl6dg3YeO+GoehhhLlXAAAzMIE2wCApMybhNRaM2A0/SkKk8W2xtRQUT4+0+KedQy7bHOT9dW9H9N+BYbS9LpIsUKKNAFoJ8V0IHXVdI5jCAAYEo0VAIDkVCvyyzasX5WPabbnNaK0XVfd/2NQ15Oha6G4bjkK2ABSEmODdC64v8zG/mmHaxwAgDU0VgAAklXXQLC8NPYSS7nCKdcC/BDb7fo3quujMgFoLuf0zoXqMHgIR47Ho0mvyOpyaCbnvAUNsgB8Gicy6kIq21FgzgoAQFZu/LY/8fr7LgrxKVUE1BVOQy6wMqcF0E7I1zPQBen/7OET0V1O+Yvqtuay3QCA+ehZAQDIyiWffIHvELKUYg8F5rQAmqGHRTfst/BwPI5iX7hVrbgnfwEAyBU9KwAAWTl4/3rfISwshwJsLNtIZQ3QzJ6t26K5rkPCfmuur/SYHnXoE42SAAAci8YKAEDSjqvkuW+dn0AcSaHSKoVtKKs+DUmlFjBdatc/0kZajr5xjgGAPyMtJfEaJ1a9n9bWAABQ45jKsSXrL5BM5VAQr2ugyGG7gdz4uK5JS5pjXyEFNOoCAHJGYwUAICtm1fgOAQCyRkUcYkDDBzDsdcA1BwCQmGAbAJAJxgSOQ0rHiApZIE1MfgvAJdITAACOorECADBXXQVyrAUrYyW7JJmx70jai3WfN5VSQ0VTxTanfmyBKhqQETrOUQylfJ7lnh+gMRjAkMY2jQGHxomNdJ3GUQEADC7EAnx5cuNZkxzbdYndzQPW9DwJ8XzqW3VibiA3VEjN5zptyGGfk54iZiGdvyHFAgDIBz0rAADRm1WYqvvMHIlz3gqeNosLxwvAImioADBPHz00aaQAAPhEzwoAQHbMWYd8hwAAAABkgwZTAEATNFYAAGYK/emq0OPDfCkfw5S3DcgZ13bYOD7IAcNJAsBiRjLJvFLiZRgoY8wrJf24JCvpJkkvlnSSpD+WdKGkWyRdYa3dN1n+ZyVdKWkkaau19oPDRw0AcZlVaFnkyaaQnorqWjA796x7dfudmxxHM4yYJmSm4Lymbjgo9g2AIZXTICaOboZ9BLhXpEVcXwCAaQbvWWGMOU/SVklbrLWPk7Qs6bmSXi3pw9baiyV9ePK3jDGXTD5/rKSnS/oNY8zy0HEDQCxmTSzdZpmQLRr/1+88zWE0fsR+/Or+n7IctxnAYqoNDMULzUxLa2PPAyFti1zjrs7tIdKaaesnjQMA+BoGakXSicaYFa31qLhN0uWS3jn5/J2Snj35/+WS/shae8ha+yVJN0v69oHjBYAotC2gzJuYOrTCvKuYvvjU33EQjX+hHZ+yJrGFHD+AYVAxNZuLSsOc93GRbyi/yp/N+h4wtLbX6rTlYzl/q/HnnFYBAI4afBgoa+2txpg3SPqKpAclfcha+yFjzLnW2q9NlvmaMeacyVfOk/Sp0ir2Tt47jjHmKklXSdIFF1zQ1yYAQPKmFXJ8FSJcF7oe96kfcbo+HIuGinp9Dc0GxI5hiQCgvb7TzSHSZvI/AHwa2zSmch5b3xG45WMYqDO01lvikZIeLulkY8wLZn2l5r3aw2Ctvc5au8Vau2XTpjjHIgeArroUJuoKCKFVGPURz8ED652v0wcKeABSQXrWD/brdOwbhCaHPDgAAPP4aEJ6mqQvWWvvtNYekfRuSd8l6XZjzMMkafLvHZPl90p6ROn752tt2CgAwISrwkSTuS6G1Nfvje9Lo7EixLlJKNh2E+Kwa8DQqDx2a9b+ZF9zv0KYhsrTAwAQKh+NFV+R9CRjzEnGGCPpqZL+SdINkl40WeZFkt43+f8Nkp5rjNlgjHmkpIsl/e+BYwaAYKVaqOkzHrsy7m3dQ5tWyc2EznHiWCF3VKLPN68Rouk8F+zreqTDiMEQQ26SRgAAfBi8scJa+3eS/lTSpyXdNInhOknXSrrMGPMvki6b/C1r7W5J10v6nKQPSHq5tXY0dNwAEKJFCyHF95uuZ6hCS98VBetPPdzr+n0IpXKFgi2ARcWQjoQWY5eJuEO5b4SEfYLUcE4DwHQjmUReaRl8gm1Jsta+VtJrK28f0lovi7rlf1nSL/cdFwBI8UyCO3SPilQaKiRpaXkc1Q29vO9n7Z95nw11DJvGCwDTMOn2bIum5+xbIFzz8mxtr98h84AAACwqjWnPAcCRpnMAlF8+pFrJMNR2Hdl78iC/44qrc435KwAAOIr7FDAcrjcAQBNeelYAQIi6ZqCLp5WK7097cqm6/q5POA2d0V/kSax5+6RuWUwX0z6KKdbQ8AQksIbeFRgC5xhC47JXBQAAsaFnBQDI3dwP1fdmzQnR5TeHLKB0Gf+6rDrB86zeKBS8wuezJ1GO2NfAGhruAOSmjzxA13WSBgNI2dguJfNKCT0rAGSrr8rA6nqbzjEwrzAwdENFE3W9RZrEWX5ynEpZv6Y9xV/uFVNteKLgCmBIofWwIA0E0LdqGcHVcKCkXwCA0KXV9AIADYVU6VEIJaauDRXT3mu7Dgyn3PNnWk8gjhGAEFDB5lbRe5L9CoTPZV7Md77O9+8DAMJHzwoAwEOotMA8nCPDYD8DxytfF74qvLg2AQAAgP7QWAEgOyE/0RNq9+yQxs7FYqoTwtd97uI34F6bCesBAABCFGp5B0B+RonM9TCy1ncITqVxVAAgA31n6qetn4rn9PR5TDlf+sc+BsQQRgAQMfIyAIBp6FkBIBuxZIrnPfneByp84MK8c5ZJ1Zub99QhvSyANaQri2G/AfkJJQ9BDwsAQB16VgDIQmyF8VAaKmLbb/Bn1rnCE9DdNLn+yhOjAzkbIo0hHQOQkln5hyJ/0XcegzwMAKCKxgoAyBgVL3BhXkNFeTkKpf1gvwL9SvV+mep2ATlydT2TpwCQi7FMMq+UMAwUgGSR0Z6OygkMgfNscaRjgH+kZQByQJ4DABACelYASBKZ7cWxD9EE5wmAEPSRFjGEHZCfXK958nMAgFDQWAEgOWS2Z8u1EAb35l1r5c+5LgHEhHslkJeicZL8yrBIawEAVQwDBSApFDDcYD+iTpcCJefScDbv2E6hH1gQ1xCAHA3dUENaCyAEI5vGM/wja32H4FQaRwUARKVoE00KBuxH1KFQGQeuX+Ro0fO+eKI6x3SONAM4KubroUi/2qZjPrY5x7QWANAcPSsAJCHmwsVQaKiAS5wrAFJApRmA2C2ajpGnAwCEhJ4VAKJHBns+KmOON15Jq6vkkLjmAISEexyARcxKQ3LuedUH9iMAYB56VgCIFhWm87UpEOS2P+16K60a32FEJ7fzBAAA5KE6b0M5Hx1L/ifkOGmoABCasU2jPiCV7SjQWAEgOiFnwkNBYWA+s2EkHaCDYROcT/7FWGECxCD3iemHnlQXCFE5Hcg5PVjUrPSE/QoAaIpaGgBRoUA92yLd1HMrRKxsWPUdQvDK59PmHdu5/gLAMQAAAKGZ19hD/gUA0BQ9KwAAD8np6e3llbHGvoMIWG6NVwCQK3pXAOiK/CIAwDV6VgCIBgVpwA+uPf84BsB0XB8A+hR6GkPvVwDoZqSlZF4poWcFgKCR8W6OJ5vaSWsKKrc4l+JWTTc5ngDmoXcFcpfC/DVDX8PT9lddehL7vgUADIfGCgDBotDsTw773voOIFAUJsNGhSJwvEWuC9I8AHCPtBUA0FVa/UQAJIPKuHYoELRnLX0rmuBaDAfHAqjHteEGeQkATZFeAAD6Qs8KAIgYBYUF0LViLioAw9T2KfIUhrYAAGBo5IPqkacAkIpxIg8wprIdBXpWAAgSmWD07fPf/Xu+QwhSMUkjBfQwcVwAt7imABTI/8y2Z+s2ymgAgN7RWAEgWGSI/clhv3/Lx1/oO4Qg5HCsU0NFCgAA/eE+ezzyiwCAodBYASB4RaMFmWS4dOSBdb5D8I5rKl5tjx1PiwL1SAcBNJVqekE5CwAQEhorAAAPyapC84G8p20qCqXZHO/EdD1uHG+kiEo2d6i0BI4qPzBVXBepXR/l7Zm1beQfAKRorKVkXilJa2sAJI1M8rFcF5bK+zeHfW3GviPwL4fjjONx3IGjuB5mS61iFmhqVtoQ23UxLd6692PbNgBAemisAADkyfgOwJ89W7dRQQcAmCrlJ8mBHFWv41nXdd0QvKQDAICh0FgBAMiy4tqeuuo7BG9yPN44FucAUkNFWr8YHgq5KQ+XWTdMaozXA/MAAgBiQGMFgGjMy1iT8UYbyxvybawAJBosAACYJZX7ZCrbAQCujaxJ5pUSGisARKVJg0UOTwy53D4KMAAAYB7yC8hJk/M99fIGAAA+0FgBAMhTYk8f1Mml8Q4AJCoOATTnKn9EugMAgFsrvgMAgK6a9LLgKUBMMx6ZpOfYLo+1DAC54N7fH/YtUtGlgWHehNQhXhs0xgAAYkTPCgAAEhViwRlh4RwBAAAAkKOxNcm8UkLPCgDR4QkfuGDHafesoBIaAOYjT9EOvfYQq0Wv9fI5X7curg0AANygZwWApFEJMV+u+2hp3zqNT131HQYAwLFc72sA2uuSXtAgAQBAf2isAJC8FCstKCQBALCYFPMHANpJJU9dTc9I3wAAsWIYKADZCnUyvL7luM1TJTa2I9BFkSZQsQEAyEkqeeLi/s19HADaGds0nuG31voOwSkaKwBkJ+eMfCqFMlfsiMYKoECjBYC2GKcfMUj5vpbytgEA8kRjBYDkUYDGNGbsOwIgPJt3bKfyA8BMpBEIXZ/n6Kx1D9mAx3UIAEhRGv1dAABz0WgDoGzP1m1UdCBZnNvDYn8DAADABRorAGQl18I0DRX17EpaYzsCbUwb9inXdBLpqTbI0UDXH/IZiFFf6QHXAwDEYSSTzCslDAMFAMiWobECmSuGfJpXYcN8FogZDXL9omIWOQkl/QglDgAAXKNnBQBkgAJNPbPEpBXAPOWKSColAQAx2Lxj+0OvRRWN+k3z03UNpC7z4uTrAQApo7ECQDaqGXsq3QCAtBDAYqg4Req63CfrGjhcXCtcbwCA1NFYAQAJc/lUGYB0zUoj6hp6SVMAAAAAAK4xZwWApOVaoZbrdrdlrUlsKiqgu7bzUhTzXQAAEKqQ7lPkzwEgLGObRm1AKttRoGcFACBbey57u+8QgCiEVNkDAAAAAEgTjRUAkpXr00u5bjcAN0hDALRBmgHMx3UCAEAzNFYAyEZqhYTUtseHR/2vF/sOAYga8+IA+eLaR+yGOn9d/Q69HAEAOWDOCgBJovCMJpizAqhXNx/Fnq3bSFuBjHH9IwVdzmPfjQS+fx8AUjW2aTzDP7bWdwhOpXFUAADoIq17OuBUXYUOFSZAXug9hZhV71kuz+Om1wXXDgAA7dBYAQAJoUDUztL+db5DAII2rcGirtGC9AdIC9c0UrLI+VxumBi68Y6HBAAAuaGxAkBymhYgyPzDMgYUMNe0ihkaLIB0cS3j/7B3/8G2ZXVh4L/rvdfdQINCV2zoadDmYvsDHKLYBVa6ynGGEBuiNpkpDVpaaKwhzkBeLJ8lOKYmM5k4hYkvydwaBDE6g8YUwUyMzBSK2DOajIRId2TQFkg/rp3Q0DS/5Uc33f3eXfPHPYc+77zz++wfa6/9+VTteu/ee869a+1zzl7ftb57rVWTpt7PXS4htezGAAConT0rACphYGF7+ZrjSF+Ut4dN2McC+rPsc9bGYKbPNLVo+7286edv07ZScgKgW8eV7GBZSz2mJCuAqoy1gz3Weu/t6uMIyQrYy/wgzKKkBrC7VW1800mMbeIJyUq43D6fB+0mAJyQrABGo9ZOgIGCPchTwFbmrze1XlehFLu28auet+xzu+3fEn8wZrOfo30/C9pSAHiMZAXAgBko2E9+RLYC9uEaBO1p6/PlcwvbmyYUZjfabvL3AgAnjNIAMF4p910CqJLBUNiPzxCUYz5RAUAdLuVUzVETyQoARiudlqwAAAAAKIFkBQDj9fDpvksAg2TZCmjHweH54u/e9vlnbIbwuQSAWtizAoDxOu67ADBc8wOWswM5BjNhOwZCYXy0lQBwJTMrgGrs0tHXSRi5upZ2hM4sut4enT33pQPYXFuJirY+ixIrsD9t5TCZZQN1Oc6nqjk2kVK6LaX0gZTShZTSaxb8PKWUDic/f29K6XkzP7s3pfRHKaX3pJTunPn+dSmld6SU7pn8+5R9XxfJCoCB0KlpwSl7VgBQr6ZjB7EI7EdSH4A+pJROR8TrIuLFEfHsiPjelNKz5x724oi4eXK8IiJeP/fz/zzn/I0551tmvveaiLgj53xzRNwx+XovkhUAA+EuHqAkrkmwvzY/R+4ABmiHayswQM+PiAs556Oc8yMR8eaIuH3uMbdHxC/nE++KiCenlG5Y83tvj4g3Tf7/poh46b4FtWcFMDqCS77k6uOIL8rbA9C9beORVfvEdGH694/OnouDw/Nf+hdgDFzvgMI9dXZ5poh4Y875jTNf3xgRH5r5+r6IeMHc71j0mBsj4v6IyBHx2ymlHBE/P/O7n5pzvj8iIud8f0rp+n0rIlkBjIogk1n52KYVAHRv03hk1XIx05/1EdvMJy6A9Sz/VJdp0nb+e1Nebyjfca5jPGBSjwdyzreueNiiys6vi73qMbfmnD8ySUa8I6X0/pzzv9q+tOtJVgBV0FFmF6c/fzqOv+xinPqs5hB2saijDuxvSJ8rCQtYb0ifaTa36tonRgIKc19EPGPm66dHxEc2fUzOefrvx1JKvx4ny0r9q4h4IKV0w2RWxQ0R8bF9C2p0BhgFgSLLmF0BQJdWDW7VFq9IZDBWtX2Wx851DKjAuyPi5pTSMyPiwxHxsoj4vrnHvDUiXpVSenOcLBH1Z5MkxLURcSrn/LnJ//9SRPydmee8PCJeO/n3N/YtqGQFMBqCTBaSrACgI7skKuafM/u4LmKbTQZdNy07jIFEBRHeB0BZcs4XU0qvioi3R8TpiPilnPPdKaUfmfz8DRHxtoh4SURciIgHI+KHJk9/akT8ekop4iSX8E9zzr81+dlrI+ItKaUfjoj/GBHfvW9ZJSuAQdu0E6yzzFJpfplGAOjOqgGtRfHLUGKaoZQToGkSFTAMxwu3aBieTeuRc35bnCQkZr/3hpn/54h45YLnHUXEn1/yOz8ZES/corhrnWrylwF0SSeYRtQRnwBQuEVxiwEtgLJt2+d0XQfYj2QFAAA7kziG9SQqAIZHogKge5aBAgbJ4BhNSY/I2wPQnn1ilq73p1j2t4ETiz6TPitMHRyeX/t+WHct934Cxs4IDTA4EhU06rjvAgAwNqUPRjVRvtLrCPs6OnvO+7xiu/Y5Dw7PL33uJr9TXxe6c5xTNUdNzKwAYNTScV0NOwBl23Vw8+jsuc4GsZb9nW3uKjfgBozZJrMs2nguwNBJVgAwavnq40hfNNEQgObND9jvO/jUZcJikUV/e1EdJSqo1ex722Aym9rlmihhAYyVZAUwKLt2fnWcWcrECgA6MJZBJ/EWYyFxwSb2uSZ6jwFj5FZSYDB0fgGAIZkOLhlkgrqt2qcAmuD9Bc07zqeqOWpSV20AAAAK0nSiQuIDAIBaSVYAAAAA7Mnd7wCwH8kKYBD2CfzdgchKue8CAAAAJWhySa+mk1eSYcAYSFYAoyCwY6ljO2wDMCxuxAC6NB3Ar71PNYT6DaGMMBTHOVVz1ESyAijevgGZgI6VzKwAAICF5vtS+lb98xoANZOsAIomEAMAAIaiphkIy+pRS/2GzGsA1EqyAoBxq2vGJAAjYSkoKNvQB5PXlb+mpMxQOf9AjSQrgGIJvuiEZAUAA7RrnHR09pxEB7DSNtcXfbZ+Of+wu+NI1Rw1kawAiiToojPJphUADIe7mYE27XJ9cU3ql3YBqIlkBVAcgRYAwJWaiJEMakF3xvRZG1NdAWjPmb4LADBLkEvn6poxCUAF9omHjs6eE08BjNDB4XnL/AGDJ1kBFEPHml5YBQqAgjQRD80PVomxAMZBwgI2d5zruHOxlnpMWQYKKIJONL05rqthB2AY2liOaVGSQowF/RrTZ3BMdQWgHWZWAL1rM6i1FALrHL30jfHVb/nrfRcDgBGZjU12jVNmYxwzKYCmjLX/VFOdza4AhkyyAuhVF0HhWANuNnPw1v/aNEMABkVyAtjW7HVi3UD2Pv2nIQ6Uu4YClEOyAuiNoJAiVLa+IwD1mh0AFEdB+UoZtJ+/XmySuBhbwgIYn1r2eqilHlNuJgUAACicgT+ga647AHTNzAoAAICWmQkB9GHdtccsCABKYmYFUK3ZoFsAzlLHfRcAhs31FdaTqAD6sOm1p41r1MHh+S8ddM95B4ZKsgLoRR/BkwE1Fjqua31HAMrS1iAgwDJNJgma6EOVfM0quWxAu45zquaoiWQFsLdtg+E+A0IJC+YlMysAGAh3KQPr7LMp9jJHZ8/t3Y8y0wKATdizAtjLtsFmV8HpqmB6+jOBMhERKfddAgBYT9wC4zX/+V/W12n7OnF09pxr0UC4SQ8YKskKoBMlBrWzAVyJ5aMbOUlYANAO8QWwj2XXkOn3h9qfsak3AMtIVgA7mw+IFwXNix4HJcmnItKlvksBQG3EP8A+NrmGNH2d6TKJsKzv2LW2ZousqlcXM2CA9WrZ66GWekxJVgA7WRVg6ZwzKClHRF2NOwAA/dpnwLjP/tS6hEXTg/ulJC2askk92lxOq5bzCIyXDbaBrZWejBCgAQAAQ1R6X6stfda7qf7jNr+niU3L9/n7AKUyswLYWMmB87aBWcl1AQAA2jXtP6zavHrXPsPQB43XzXZoa2bAkPey2LXcs+fSBuYAkhXAhoYUNK0LrodUFzpQ2fqO0LUhDyxAW8QaULbZdmvdkkdjtqqNN7D+mH3fJ/Pvx1XndVGSbezvU9jVcSXLQee+C9CwlHNtVTpxyy235DvvvLPvYkAVhhyE2uybdXKabFsB7EwnGS4n3oDyDKmtKukasu68db05dZt2qUvbZZWUYFZK6a6c8y19l6MGKaW7bvu9s8/ruxxNOH7kYvz2i37unTnnW/suSxPsWQFUbTa4KynoBwAAuqMvsJt1562mAfRt69JF3ad7W9R0ngFWsQwUsFINQX0NdaA9ZlXA/iwFBY8Rd0C5tFe7WXfelu3/MRSbLLsEQDfMrAAGTfAIAJRiqAN1AOtscn1rYgZA0/27g8PzK8u+rl6u61Cv45yqOWoiWQEMnoQF+6isXQcAAAAYJMtAwQDYVGs1d7sAAAC0a77fVWrfdFH/cPq9UssMwAnJCijcfKBlndXLSVSwr3wqIl3quxQADIn4A2jD0K4ty/qmR2fP7VyXffq7m/zNbcul7w3QLctAQcGWBVJDC2KhaHbYhr3pyDMW69Y+B9jVUK8ty8rdxP4VTZQDYJm+95mwZ8ViZlZAoUoItkooAwBACcRFQBtquLasWmJp+r1N67lNgqPtpZ3cjAHQPckKKNC6QK6LoKmGoBk2kS7VdRcCAADDUFufa9kSTtvUc9NloGZ/ZxPnUWICoAySFVCQUoLVUsoBXbAKFADriI2ApvV1XdlnP4lNzCcbSr1+Sk4AlMmeFVCINqbFjsF0LVTnBQAAWKeEwfO+y6DvBGDPilKZWQEF2DdRsej52wagfQfMuxBk04SczK6AfW26ZAMAjN0Q+13bmsYFu9Z1k7ii7RkiAPTDzAoYsIPD80sDtG3XBR2i+XIbKAMAAOjfvn3MTZ6v/wdQH8kKGKBVSYr5xzXxmCERsLKtrCUEYMY0zto03gLYlGvKdpwvgPGxDBR0rIs7TOYfX+sAfq31AgC6Z1AMxkEfgoi6+8nAZmrZ66GWeky5nxQ61HWiouvfBwAwRMtiImuiA01xLdlNm7PcvCYA5ZGsAAZLcEkTbK4NMG6r4gmxBtCEMV9Lmpq9MOZzCDAmkhVQuVXBoWmvEBGSFQCjZfALGBv78QBQMskKGLkhJyyGXHaA2hj4AKB0+g/dazs+ODp7zusK7CTnVM1RE8kKQHAHAADAYO2StNAPBijPmb4LAAAA0CUzgQAAoDxmVkCHSr5zo+SybcPgA0B/XIMBKFUt/R1W8zoDDJtkBXRM8NSMRefRIBlA/1yLAeBy+oDNaDrGsNk4jNtxpGqOmlgGCnowDVZLC4yOzp4rrkwAAACwzL592IPD8xJKAIWQrIDKzQdutQZhkiwA5dDpB6A0s/2FrtsofZVmmF0PUD/LQEGhjs6eayWIXhfMDXFwSYAKUB7XZko2xHgHGCbtYXPaOpfaBIBySFZA4fpIWJROMAkAAOxCX2I/y26q6+q8ttGXHXr/GNjNcU7VHDWxDBQUaD7Qs5fEY3QuAIbDclCUSlwFdKHGa820Ttr35jinAI8xswJ6tM0dKW0tCzUkY68/AAAwDDUmKmbVVr+Dw/NfOpp87LLnzn696P8AY2VmBfRs0wH4LgOXEmdySFQADJPZFQCMTWl9qbb0tWl52zMRVtVr/rXdpiwSEwDrmVkBhdv1jo1VhjZoNLTyAnA5HXIASrXPXfLLft8Y9VHvLv7mpn9j3Xtok9+j3wtgZgUUrY3ga2gB0NDKCwCUbxpfjHVQEcZskwHlXfsgQ7umlDijfugWzSiVqIAy5Uo2pq6lHlOSFVCosQeNJS6PBQAA1G/ZEoa19D0MjG9n19e9lvcLQJckK6AwbQc0pa4dXmKZAIB6GUQCtjGEa8b8rLFFs8jm+11mVzRv14239YkBJCugKKUEiaWUY52hlBMAABiW6eBxKX2OVUsLLUpArPoaAEolWQH0TvBMn1LuuwQAAHC5dX0kfai6eD2he8eV7PVQSz2mTvVdAKB7pdwdBMB4aHsAGBptFwB0y8wKKERJgXCX053dQQIwHtZjBoDLldAulrTcFQDjZmYFFKDrwLCEgLgJtdQDYEwMhgDACf0ZpsRe9VeOAAAgAElEQVRHACckKwAA6JQOOX3zHgT6VlqiorTyALQt51TNURPLQEHPSpxV0XSZ5v/mPr9/+lxTlQEAgCEqNTFQYx9req77qFeffxtgqCQrYORmB/9nv97FpkH3rsH5bNkEfADDZv8KAMZCe9efPpMUff19gCGTrIARK2Xwfz5hsuhnAAAAXWpipsGQEhX6Xs1wHgF2J1kBPetrqm3bSz2t+jvL7jSZv8tWkEcXcopIue9SANAV8QWwjV37a0NKUgCM0XElez3UUo8pyQooQJcJiy6SFOv+xqqlPwwgAIzH7DXfoA4Apdq0jVo1Y7x0+mH9GuJ7BqANp/ouAHDi6Oy5wQUoTSzbNLQ6A9AOgyR0wfsM2NQu/ZQh9ukiXBsBKIeZFcDOpjMk9klQCIwBmDLTgjaINQCWc43sn5gH4DFmVgB7WRXcrruzSGBMCexXAWXSRtAE7yNgFwaPAeqXcyVH3yeyYZIVUJhaAuNa6gFAfww0sw/vHwAAGBbJCmBj62ZKzP58OkCwaKDg4PC8AQSKkVPfJQBW0V6wC+8bYFdju+lqbPUtjfMPcDnJCihQaQHLfJJiVdJidnDAQAEATdCeANCF0vphXRlrvQEojw22gZUErtTOnhUAAOOmzxNXzJAHqN1x1LHMQi31mDKzAgCA4hk8YROWmgQAgOGSrAAaY3AAAOiLOATY1ro9+cbI+eiOcw1wJctAASvNd/wFVABASSQpgG3p06x2dPacaysAvZCsgEIJEAHgcgeH5w0wAbAX7chmStzDYtlrV1IZgeHIuY69Hmqpx5RkBRRoGmyVnLAotVwAwHiIR4BtSFRsb5Nz1sW12GsHMA72rICClXYHaUllAWCcDE4z5b0AUIa2+4nrfv8Q+6lDLDNAFyQroHCldMQFUwAAACzSVn9x09873SxdvxVg2CwDBQUqefknACjVbNtpsAKAWdqF8Zh/rUvrW3svQhmOK9nroZZ6TJlZAYUqLYCZDfBKC/YAYL5tOjg8r70CgA6V1oedKrVcAFzJzAoo2DSoKmWwpZRyADBu2+zpNG27DFTURUwCbEMb0J1SVwloerbFovfUJr/TexFgNTMrYAAENAAAJ0ocBAPgMU32X9u65s/ucbFNeVc9vsaNwAG6ZmYFDIBOOQCsVuqdnGNlRgsAQzLbXi2LJzZp07R7MBw5912CZtRSjynJCiiYQRcAWGybpaDoz/ym55IYAOOw6jpfej93UeJCuwXQDckKKFTpARwADInkRvO2jVVmHz+fxABgPErbm3EVbdRmJHWAptizAgCAQRrCIMdQHBye/9Kx6eOb/Nvz5QCgfpZVqsOidlxbDuxKsgIAAACAzq1KRkhUAG3KOVVz1MQyUAAAMBKzyzSsu+ux6yUd5u/MNEgFAOXaJI7QlgPbMrMCCnV09txlBwBwpW32PrAkwWNWnYv55Ru6WM5h0e/3egGMw6L2Wx+4bH0sGwmMg2QFAACDZrPmbvSxDrVBDoBxmLbfbtYrn7YZaJNkBQAAg7dpwkIHe3i8ZgDjIElRJ+04pep7nwl7ViwmWQEAQBXMsFhtyIMFQy47AOPT9UzELomxgDZJVsAA1BrkAEDTtJmL1XBeut7wG6iDawZdm9/3CecB2JxkBQAAVVk3qD2GDvPs/hI11ne6prlBSGAV1whoh88W0BbJCgAAqjPmhEXNdQPYlMFU+rJu7yztNJThOKdqjppIVgAAMEo1DhbUWCeAbZh1RalqWx7K5wxog2QFFMxdFwDQrpra2ZrqArALg6eUYva9qH0+4TwAm5CsgEJpyAGgG24OGA6vE7CMRAWlWZewqKFN2/ZzJ+YC1pGsgAJpvAFgP7Od50070tpfgOGx7BNDNtbYQ9KCEuRcz1ETyQoAAKqyaNDKQFa9vLYwLtPkhCQFtRj6oP0+n8Oh1x1onmQFAABV2afjO9RO81DLDQAMX1cJi+mMDDMzoF6SFVAYDS4A7G9Re2o5qDp4fQAYijHFHm0nLGrd9wO4nGQFAACjYcmQOnldAaB/2mOGJOdUzbGJlNJtKaUPpJQupJRes+DnKaV0OPn5e1NKz5t8/xkppf8npfS+lNLdKaW/OfOc/yGl9OGU0nsmx0v2fV3O7PsLgOa4KwAAmjPbrm7beT44PK/DXTCvDwC1GXvbNj8eMj0X68ZJxn7eYBMppdMR8bqIeFFE3BcR704pvTXn/CczD3txRNw8OV4QEa+f/HsxIs7lnP9dSulJEXFXSukdM8/9hznnn22qrGZWQCEkKgCgG2NakgEAoEtNJQ7sSwGNen5EXMg5H+WcH4mIN0fE7XOPuT0ifjmfeFdEPDmldEPO+f6c87+LiMg5fy4i3hcRN7ZVUMkKKIAGGADaNd/hre0OvNrqswnxE4zPGK91DN8271ttG9CSGyPiQzNf3xdXJhzWPialdFNEfFNE/NuZb79qsmzUL6WUnrJvQSUrAAAYDYMAAMMkUQFAk/reZ6LhPSuemlK6c+Z4xVx1F21skbd5TErpiRHxf0TEj+acPzv59usj4lkR8Y0RcX9E7N3ZkqwAAAAGaZp8koSCeh2dPSdRweCZXQG07IGc8y0zxxvnfn5fRDxj5uunR8RHNn1MSumqOElU/GrO+V9MH5BzfiDnfCnnfBwRvxAny03txQbbAACMio0Y62JQBwDGbVEsINaDy7w7Im5OKT0zIj4cES+LiO+be8xb42RJpzfHycbaf5Zzvj+llCLiFyPifTnnfzD7hOmeFpMv/0pE/PG+BZWsgJ7pYANAP47OnlvbDk9/rsML0D3XXmqySdxRi7bqus3vXfW4XWa6zD9HgoQhyTlfTCm9KiLeHhGnI+KXcs53p5R+ZPLzN0TE2yLiJRFxISIejIgfmjz91oj4gYj4o5TSeybf++9yzm+LiL+XUvrGOFku6t6I+Ov7lrWXZEVK6ckR8Y8j4hvipDJ/LSI+EBH/LCJuipPKfU/O+dOTx/9kRPxwRFyKiLM557d3X2po3lgCFQAo1aad3tKTFmIKAKiHWaBXavJ8zMd128SC6x7jdRuO+Q0bhmrTekySC2+b+94bZv6fI+KVC573/8bi/Swi5/wDm5d0M33tWfG/RMRv5Zy/LiL+fES8LyJeExF35Jxvjog7Jl9HSunZcTI15TkRcVtE/FxK6XQvpQYAYNQkBQCAXY1pIHu2rvvWu63zdnB4XmwHhek8WZFS+rKI+NY4Wesqcs6P5Jw/ExG3R8SbJg97U0S8dPL/2yPizTnnh3POfxonU1H23qwD+rZNgzimgAYAuqadBQBo3tHZc8UmKtoi+QH76WNmxUFEfDwi/reU0h+mlP5xSunaiHjqdEOOyb/XTx5/Y0R8aOb5902+B4MlUQEA/dqnI6kTCtA+/SBqtel7u6Z4o8m6DOHaUNNrB13rI1lxJiKeFxGvzzl/U0R8ISZLPi2xaE2shctxpZRekVK6M6V058c//vH9SwotkKgAgDJIWAAAJRNvDJfXrnw5p2qOmvSRrLgvIu7LOf/bydf/PE6SFw+klG6IiJj8+7GZxz9j5vlPj4iPLPrFOec35pxvyTnf8hVf8RWtFB66Mpuo0MgBQDumaxXvcoOA9hmgHW7aonbbvMdriDd2/Uwve55rBNSr82RFzvmjEfGhlNLXTr71woj4k4h4a0S8fPK9l0fEb0z+/9aIeFlK6ZqU0jMj4uaI+IMOiwyNsHETAJRrmrDYtvOrbQdolkFIxkLCYvVj1z1+CNcK40CwvTM9/d2/ERG/mlK6OiKOIuKH4iRx8paU0g9HxH+MiO+OiMg5351SekucJDQuRsQrc86X+ik2bG+XhmkIjS4A1GY2YbFN+73rzAwALudaCsvVEG/MxlhN1GXbmK0vNbx20JVekhU55/dExC0LfvTCJY//6Yj46VYLBQAAE0Pp/AIADEnTg/bT3yduY2sLd0QeoFrqMdHHnhUwGhpLABiWXdtubT4AAMuIFWEzkhVQOA0aAHRraAkLsQJQA0ukwHra/OWmS3mWfC3x+sF6khXQApsoAcCwaccBulPy4CKURoyyXsnXFK8frNbXBtt0qMnNi7hSmw2NRgwAhsUGigDApuyR1Z6Sz61xujLknPouQjNqqceEmRUVm7+7v9SL9JC1dU69VgAA65W+3AMArKMdGy9jP3AlMysq5YLXji7Pq9cQAIbJ7IruzMZL03MuhoJhcb2EsmcBDJnzCsNjZsXIuEjvxh4UAABls6QCAEOm/WpHyed1k7IZj2JszKwYmFWdMBev5jiXAMBQuGvwMfMzLZwXKFvJg4jQB21X80o9n5smKmhPzn2XoBm11GNKsmIg5i9QLljrrTtHEj4AQFssBdW/+bjOABAAUAqxIixmGagB0Kna3ibnbH7zcecZAGiS2KIsBgUAqIUYYzPOEwyPZEXh2riwulhfzvkAABiPo7PnJC0AoHJDGOtZVcYhlB/aYBkoqrLNxdxSAABAm7ocEC8lrllW5xLKFmFPCwAYgyG17/N70y4r+5DqNBQ5p76L0Iha6jElWTFSNU6Dd+EGAOjOprFkqTHafDxcajmhZjX2S6ErPj+LDbU9H2q5oWmWgRqxmi6Eu9SlpvoDAJSo9HhrfqYF0L3SrxNQMp+fyzkfMHySFQXr4iLrQg4A0Lw+Br5LG2wfSpx5cHj+S0dEeecRAFaZbcPGzDmAOkhWAABAJQy0b8f5AgCGQMzSgpzqOSoiWVGoLjPCQ84+u4MAAKA8Q4nPFpVzKGUHAIDaSFYUxuD75vY9T0dnz8lMA3TMdZex6DOe8zkDgOHSjm/POBrUQ7KiIH1eXMd0YZ9PUggEALrlustY1Bxf+RwDQFlqjjuA8ZCsKIRGpRuLOtbOPUC3XHcZk77e75IJ3Zm/CWb+ANazwgA0Y6yfozG0t2N9bRmfM30XABecXexyzsbQeAGUTpvHGE3f92KRenltoRkHh+d9nmBPY/sc6V+wq5z7LkEzaqnHlJkVPSvpolpSWQAAatP1ncNtDVSs+71jiynX1XdMA0YA0BUzsqBOkhU9KvGiWmKZFmmq0zeU+gIA9aghYcFq0wEUAykA7EL7vZq2FeolWdGTki+sJZdtH/OdxlrrCQCUb6gJC4Mni83GlmJMAJqwz95H2iJgqKpNVvzRxx7ouwhLaTSaMYbOss0ZAaBeXd5A0UQ8IR5ZT5wP+3GdgStJWHDhe34+LnzPz/ddjPrkio6K2GC7YxqLZh2dPVftORWoA8B4dLUJ97LYafbvrvs5QBtcZ2C5msc+NjHmusPYSFZ0aEgX14PD84MJFsfeaAMA9egiBlv3+2djq6HEgwDAlWpoz433RHzw4uf7LgJ0RrKiAy6sAABsqoSBhSEPagBAjfa5UXNIN6RypX/94MHkf/f3Wg7ogmQFOymhEz1rDLMrxlBHAOAxpcVbAABdMPZxuV/76DdP/vf7vZajNjmnvovQiFrqMVXtBtsRZVzcSijDLjbtFJdUvzF05MdQRwDgcl1twg3QF/0c2Mw+n5UhxBJinsVuu/7uuO36u/suBnTCzAqqUvvsg5rrBgCsNh8H7DJgYbYGAFAKYxybufeLf67vIkBnqp5ZwTjpfAMAAAyD/hvAah/94pfFR7/4ZX0XAzphZkULas4M11w3AIAh2WezzNmYrsmBQrEiALAJMQO9y30XoCG11GPCzIqG1XCxXdRhXbVuYA11HgLnGQCYNxujrYvX2o7lxCoAULZS2upSyjEU9372urj3s9f1XQzohJkVDajtIju/lvEQ6zf0vSvmE0ZDrgsA0L7ZWGGXuGGfWRq7/k0AYHtDH+8Yctn78tGPf3nfRYDOVD+zou2LYM0X2VV34A3BUNc+HWq5AYBhG3LcBwCsZ7xhmL7r2e+N73r2e/suBnSi+mRFRHsdLx268mmIAQA2t2t8u23MdXT23GXPEbMBQP2Mo+3m1df/Xrz6+t/ruxjVyTlVc9TEMlBUzxRJAIDN7bok1L7PGXrMBmxPohJ2s2ubue+yj7vSvu/n//z8zZP/3d9rOaALo5hZQfs0PM1xLgGAvvUVjxi4BIDNzM9SLM10aXFjHPu763M3xV2fu6nvYkAnRpOscHEct5Ib8EVmG/ShlR0AqEOfCQvxDwBspqQ2U4KiHU++6sF48lUP9l0M6MRokhUREhYMj/csANAnAw4AUL6+ExbihXb94HXvjB+87p19F6M+uaKjIqNKVgAAAABAbTadmdh0UkGSon0/ePfL4wfvfnnfxYBO2GCbxvS1UVPNnE8AoATLBiLailUMfADAbnbdfHtT2uju/c5z/0lERHx5z+WALowuWWFAnSGZDwLm37uCBACgT/bYAvahfw7taDthQbc+cfxo30WAzowuWUG7VgWbOrP7W5S8EIAAAH2bjUemsZ7YDwD6s2q8YJNEobGGcnzw0SdP/vfRXstRn9R3ARpSSz1O2LNiDzpem5tt5Ppq8Ib4egkeAIChmd9kU7wCAP3YZRzEZtnl+bVPPj9+7ZPP77sY0IlRJitcdNvl/AIAMEt8CAD92CZhob0u0x0XvjbuuPC1fRcDOjHKZAXUZoizRgAAgHHTj4Fu+KwN28XPXxUXP39V38WATtizAgq26V0N7n4AAGohrgGA9k33rdDuMlq57wI0pJZ6TEhW7MEFfTOLztOijaIBAAAYj002+QWasSgxYVxrGNLpykajYYXRLgPlglwWrwcAQN3EewAA23vB1x3FC77uqO9iQCfMrNiRzlbzpue0rTtrxvSaTc/hmOoMAJTPXdTAPLPuAVb7g7tu7rsI0JnRzqygXAbY9+ccAgClEqcAq7hGAFzu9PUPxenrH+q7GPXJFR0VGXWyQhDUjtk7YZzjfrkrCQAokRgRAMbBuMT+XvzV74sXf/X7+i4GdGLUyQra0UTns+kOrA4xAEBZxGcA0K2uEwcSFc341i9/f3zrl7+/72JAJ0afrNBJKldTr01tr/HR2XNrG3x7VgAAQzDkWGWTmAzYzZCvDVC6ttuuafuojQR2YYNtirbPJow1Briz5+Lo7Lmldayx7gAApdgmPl32WPEarLZPXxBon89nd/704ev7LkKdcuq7BM2opR4TkhU0rum7+ncJUmvt/M3WS2AAANRo1Q0ZfVsUfy0rr1gN9idhAe3Ypa31WezPJx59Yt9FgM5IVsT2AVCpnaeaTc/5qtdpbK/L9H07tnoDAHXZJM7rw/wNOE3MpgC2J2EB7ZBsB0o0+j0rtmVgeDNtnSfLHl1JIAEA1KDUGaTr1t1eFIduEpsu+527rPNd0vmCNoy5vwdtmm8/2mhPfH73d+M1n44br/l038WATphZQeM0RN2wiTYAQLk2uRt81c/XzaBdNMAkLqRmZlhAO3yuynftqYf7LkKVcu67BM2opR5TZlZMCOyHa4yvnWACAKjRweH5YpeF6sN0lsXsuVg188I5o3Zj7PsB/N13vDT+7jte2ncxoBOSFVsQGG2my07SWF+Tab3HWn8AoG4SFlfadHmoRQkOAGDATueTA0ZAsqIBOgJXck7K4bUAAIZsl1hm3/inls20JS0AoAKn8skBI2DPig25g70sXg/nAACo2z7r04uTAKB/2mOKVkv+p5Z6TJhZMWPZRXSbje14TFt3cmnstud9CgAMUdfLQTUZv5YUf5VUFgBgO+nhU5EeNoTLOHinr7HpwLgOwAnnoSxeDwBg6LpKWOzz+zfdABvYn5vXYBh8Vptz/PjjOH78cd/FgE5IVszZ52KqU7KY89IP5x0AqMXB4fnGBj0WxUhNxE2SFABAG9LpHMkG24yEZMUC086QLPD2lp03Hbd2LOoU6ygDAGMh5tnc/OwPAGiL8bSGPXzq5KBZOdVzVMQ7vWEC/xMapvZN32uzSyN4/wEAYyLm3M5svCh2ZMh89qFcPp/NS096NNKTHu27GNAJyQpao4Fq1/wslnXnW2cUAOCEWQYwfPqbwFi8+Ovvjhd//d19FwM6IVnRAh2exwggu+V8AwCsZlbq5ZwDhszyzVAWn8d2/OafPCd+80+e03cxoBOSFbROY9Uv5x8A4HLio8tJWDB0PtNAzZ5704fjuTd9uO9iVCfleo6aSFbQGZ2g9s2f42nQ7o4jAACgZjX3d/TnGALv0fbc+5mnxL2feUrfxYBOnOm7AIzDweH5L02114ABAADQtNll3oZqVX959mdDriP1Mc7TrjOnj/suAnTGzIoWuEgvNr8+8BiCq67rOv/eG8M5BgBgf+JGajKkPvl01sS2syeGVEdgP6dTjtO1rfUDS0hW7Gk2QDA1c3s6Rc3zHgQAYBdjuaGIcRhC/7z08gFl+OyDj4vPPvi4votRn1zRURHJigYMIQgqWa0doj7r5T0JALCaWGk5SQtqUtpnfZdZFKt+F/TN+7B9ly6dikuXDOEyDt7pFKG2ztCi+vRRR0EDAABA/9q6oUyfD+r36BfPxKNftO0w4+CdTjFq2Xx7VVJi+rMa6gkAMGS13SzThtn4fNPzJc4FgIY9aPiW8fBuBwAAAKp1cHh+rwTluiTcst/dVfJu3/rBriSoGbSc+i5BM2qpx4RkBWt1ORtg6LMrNg0QzbAAAGAIth0AFedSqm1mCW37/p19/ND7tLAp7/MOVbaBMqxizwrWWhTUtXnXxhjuCLEBNgBAv8Ri7Zpu0j2G2J5hWdYXa2rj65KvLSWXDVghh4QFo2FmBRuZTitdlLDYJuCpeXpqrfUCAIB9uNOcEtX8nlxVt233oYFFav78lChdrGuZH1hFsoKNLUs0jL3zIcgDAACgT7ssXaUvyy7GPP7Tl2RWRTtqOa+11GNi6TJQKaVTKaU/7rIwlG9ZozTGIGfXae0adgCA/o0xfu2T8w3lsTwxDMPxmRzHZyobkYYlliYrcs7HEfH/pZS+ssPyMAA1r+G5qV07WzXUHQCgBuKy7klYQJlcD6FwOZ0cMALrNti+ISLuTindkVJ66/ToomCUbVEwM5bOx1jqCQAATRNLAwyXxFY/0vHJAWOwLlnxP0bEd0TE34mI8zMHLE1YbNIBGWMDN8Y6AwDAPAkLgOExptGffCZHtgxU83JFR0VWJityzr+36Jj+PKX0b9ovIkNUa8JCxwoAoA7iOoDHDLF/Tne8P/qVLqZIFy0DxTism1mxzuMaKQWDtarB2nUD6lLVVBcAAACAdSQqgC7tm6yobKIJu1jXcK0a5F/23FISA9OESxPlKaVOAAAAAOtIVJQhnzo5YAy81enEkBIWTSYoFv1uAAD6JSbrn9cAyuIzyTyJinKkfHLQsL73mbBnxUJnVv0wpfSqiPjVnPOnlz2k+SIxRNNGbNcAZ9/nN6Xvvw8AQDvEeQCwniQF0Kd1MyueFhHvTim9JaV0W0ppPjnxAy2Viwrt0kHUqQQAAABgrHI6OWAMViYrcs5/KyJujohfjIgfjIh7Ukr/c0rpWZOf/3HrJWRQNtm/oraNtwEAKJ87RcujTwBQjoPD89pKoHcrl4GKiMg555TSRyPioxFxMSKeEhH/PKX0jpzzT7RdQIbn4PD83stBRei8AAAAALRNkoJRqmW6Si31mFg5syKldDaldFdE/L2I+P2I+E9zzv9NRHxzRPxXHZSPgdqkoVuXjGgrq9/3zI7SkjCllQcAoA1injJ5XaB/PofjZTbFMKTjkwPGYN3Mij8XEf9lzvk/zH4z53ycUvqO9orFWEyDoj4aRwHZY/p8HQAA2ibuK9vR2XPiUAAA1u5Z8d/PJypmfva+dorEGHXVgSyho7pNR6zvWSAAAEMnliqfRAVA91x7hyPlkwPGYGWyAvaxbcM3hoH5bRMVs/9v69wIUACAWtUeW9ZALArQPddeeCwJVMNRk7UbbEPXap0Gvm2dujwHNZ5vAGC8JCmGQQwK0D3X3uGpbP9kWMnMClq1ayNoFgEAANRLXA7QPddeoHSSFbSutIRFHwQEAABwQmwM0D3X3uGqcakfWEaygk7s0ihqSAEA2FZNN7wAtM01cxyMr8ACuaKjIpIVdGabxrG2hrTkALDksgEAbENcU75lcb7XDqAdtY2vjFFO9q1gPGywzegcHJ7vvDNUcnDQRNmm57PkegIA0K91seJ8jC62hHZJEtbPdRQYGskKinR09lyrjer0d3cRnG1ajyEO+M+fv9mvh1QPAAD6Y8AUoHn65BUxq4IRkaygWF0M3rc9y2KXsi9K1JSYBFh33tpOOAEAzDLgXb5tXqNFcaSZFwCMUT5V2aYEsIJkBZ3qYwmmvuzTeZod6C91xkWXs1MAAKjXJnHuopizxBt6YEjG1D8fG9fEypzuuwDQHckKitfmHfolB2Yllw0AALqySVxc6g0+ALCvfNVx30WAzpzquwBQozF1ksZUVwAAmiWWBGiW6yowZGZW0Lkmppo2defUUKa9lh5szJavqdd22e8HAGA8to0tzbCA7QylT8xmXPsqZcsKRsTMCgZhNngaQiC1a6eqBvvu1bHN9wEApg4Oz3/pYDiGFucDlEr7V6901XEkS0E1LuVKjk3rm9JtKaUPpJQupJRes+DnKaV0OPn5e1NKz1v33JTSdSmld6SU7pn8+5R9XxfJCnqxSyN6dPbcFR2YWjs0853todZz03Ivem2XPWao5wIA6I4Bm2GZjfEkL6B7rpnD5zWs3KVTJwfsKKV0OiJeFxEvjohnR8T3ppSePfewF0fEzZPjFRHx+g2e+5qIuCPnfHNE3DH5ei/e6fSmqcZ0307MtBxN3o23ze+YL//8c4cWdGybUNrl9ZO4AACo175x3tDiZyiBmWnD5XUbgUfTyQG7e35EXMg5H+WcH4mIN0fE7XOPuT0ifjmfeFdEPDmldMOa594eEW+a/P9NEfHSfQsqWcHgtZFcWPR138HbEAbm+1jGSeICAIB1ZmNGcSMsZ+AbCnQpnRyw3FNTSnfOHK+Y+/mNEfGhma/vm3xvk8eseu5Tc873R0RM/r1+v2rYYJue7buZV5uB1GmscagAACAASURBVLLf3eRm0puouTPVdN1mf58gGwDGq+b4ie1sejPNfOwormTMbLoNhTmWqGhFruS8ntTjgZzzrSsetaiy81u3L3vMJs9tjGQFvdt1X4YSOg3zQdwuZepyX4rp32jr3E3Px6I6zX5//mdtaLuuAECZDLCx6zKjq34mpgRK5No0Dqm1YWFG5L6IeMbM10+PiI9s+JirVzz3gZTSDTnn+ydLRn1s34KmnOt8x1/zlc/IN/74j/ZdDLa0TceixkZ5WUeohoH3EgYOhnz+AID1Sog3qJt4kjFxTS2fa9I4TCcA3Hv2x+/KOd/Sb2nqkFK665n/6Pzz+i5HE/LFi3Hvj7/6natmVqSUzkTEv4+IF0bEhyPi3RHxfTnnu2ce85cj4lUR8ZKIeEFEHOacn7/quSmlvx8Rn8w5vzal9JqIuC7n/BP71MeeFTAAXc6+aEsJQdSQzx8AsJp2ni54nzEmJfThWM7rA2wq53wxThIRb4+I90XEWybJhh9JKf3I5GFvi4ijiLgQEb8QEf/tqudOnvPaiHhRSumeiHjR5Ou9WAaKolgbc7npuRnyNPSu9/tYxPrDAFAf8SNdqmHWM2xKHx2oVi2LDW1Yj5zz2+IkITH7vTfM/D9HxCs3fe7k+5+MkxkXjTGzguIcHJ4X+K9RQ7BYwutcw3kEAABgXPruS9OtfDpHPl3LyDqsJllBscbW+G4ycF7jOZkmLfqq23S2Shd/BwCAeojvGIsa+6FD5vUYn3zNceRrjvsuBnRCsoKiaYSvVPM56Ttp0ebvrvl1AwAYKwkLANp26ppLceqaS30XAzohWUHxDPKOTwlLRDVFBxYAoG7iPcaglv4ZDNFVj7sYVz3uYt/FqE+u6KiIDbYBWqLjCgAwDvObbs/GgQZ5AdjHEx7/SN9FgM5IVjAYtQf529Sv9nMxdXB4fvAD/mN5rQCgTzXEDACwjv4lUDvLQDEIGmS60NQgx3TTbu9bAOiOdpcSTONAqJHrLPTjidc8HE+85uG+iwGdMLMCKFrXd0ruOmXfVH8AAACgadectl9FG1Itez3UUo8JyQqqMr9WLOxjm/dT0+85MzMAYHuWgwIAanOqmlF1WM8yUAzadJq16dZ163vQvo/3lsEWAIA6iOkA2MeDj14dDz56dd/FgE5IVjBoywaxJTBoysHh+d6SJX0naQBgiLSfAO1xje2XMY5x+syDj4/PPPj4vosBnZCsYPDWBUubNOaSGywiEAeAYdKGA1Ar4xbj89AXro6HvmBmReNyRUdF7FlBFaYd0mWN9jaN+aLH6vACAAyLJRUpif3IqInrK3Tr+GHDt4yHdztVme0ACJ7q0cZruS7BBQAAANC7R1PfJYDOSFZQrU3uXDJQXb6mX6P598WqBJc74AAAAK5kdgV06KJkBeNhzwpGbdPNkxcNYtO++fM8fb12TSCse96i320vEwAYLjcdAABDly6lSJckLBrX9z4T9qxYyMwKiO06stOBa3fdt2/V+d32Tp5tXqtFv9vrDQDD5O5fSiCOBGBXqbLBaFjFzArY0r5399OcNl8Dry8A1EO7DtA811boRk4nB4yBZAUwaF0GyO7KBAAAALqUT50cMAbe6lCxsQyuz852WZS8aHKPi7GcUwAAmuHuc2qlbwTdSNlSUG2YntcajppIVkClBI7tcW4BAADoiz7pyFS4iTIsY4NtqNhY7+Iaa70BgOVstE0fxKUAAJuTrIDKTDvhOkbNWDaw4TwDALCKOBGAJpx+6kN9FwE6YxkoKMg+d/sdnT1nAL0lq86nOzQBYDjESADA0Dz62Wvi0c9e03cx6pNTPUdFJCugIE0sT6AT3o5VG3hLWAAAMEtMDrRNP3Q8Tj10Kk49ZAiXcUg517lDyzVf+Yx844//aN/FAAAACmOAhzZJVDAmrqf9c82pX57kKe79Gz9+V875ln5LU4eU0l3P+pl/8Ly+y9GEfPFiHP3UT7wz53xr32VpgrQcAAAA7GnZLFyomfd8/ySM6pdP58in67zZHOZJVgAAAKNicI2meU8BfZKwqFu+Kke+SrKicbmioyJn+i4AAAAAAABXSldf6rsI0BkzK4BqubsEAIC2mVUBQJuuevzFuOrxF/suBnRCsgIAABgdA8w0wfsIKIFrUd2edO0X40nXfrHvYkAnLAMFAAAAAFCgr7j2830XoUqplr0eaqnHhJkVQGNKWnappLIAAFAfdzID0IWvuvbT8VXXfrrvYkAnJCuARh2dPfelowSllAMAKI/BZgBqoN9bt6+59qPxNdd+tO9iQCcsAwW0Zj5gmg4IHJ091+rggEANANjUweF5sQNbkeSCx7h+MtV2P3/Mbr7mgb6LAJ2RrAC2sk8wOvvcLgMZQRMAsIqEBZsSUwLQtaed/rO+i1CnWvZ6qKUeE5aBAjbWdCfeoAAAAMAw6c8xz3uiHR+79KT42KUn9V0M6IRkBQAAAAAA0CvJCmAjbdwhYRo9AFAKcQnreI/AY9xBD935zc88N37zM8/tuxjQCXtWAL3Q2QMAABgeiQro1n/4/HV9F6FKqZK9HnIl9ZgyswJYSzAKAACAviGLzL4vvEea9z033Bnfc8OdfRcDOmFmBQAAAACwFYmJbnzL4+7tuwjQGTMrYIS2CSgEHwAAAMAsYwXd+cVP3Rq/+Klb+y4GdEKyAkZmGlAcnT23NrhoK/iwXwUAUCIxCsByBqeZ8l7o1rs+cVO86xM39V2M+uSKjopIVsBILEtOrAoyauqwz6+hKbgCABapKf4BAIbvzx56XPzZQ4/ruxjQCckKqJyB+cfMnwvnBQBYRMICAHanr92sRx49E488atthxkGyAiq2aYCw7HFjCDDGUEcAYHsSFgBACS4dn4pLx4ZwGQdpOajUtoPwXQ7aH509ZwAAACjeweF5NzYAhJu8OLHJ+2Da19fvb04+Tn0XoU617PVQSz0mpOWgQkMIJNsq4xDqDgAMx8HheYMtABSti3Zqm0TF/P/Zz/FximMJC0ZCsgLojcQCADAUBl0AGCP7YPYvpRwpVXb7PCxhGSigV6aGAgBDMbu0BcBYuOaVra3+tNe9HGfOHPddBOiMZAXQu2kQJGkBAAyBpAUAJWi6D71vu+ZmxHY84XGP9F2EKtUyWaWWekxJVkBlhtxplrSga4JpAABg7IY8jjAGT3n8g30XATpjzwoARkuiAoB92HwbgL5of4AaSVZAJWra9GrXenT9PACACANGY+A1BkrimjQuT3vC5+JpT/hc38WATkhWwAAtGlyvLVjZNvnSxNqaAAC7MssCgDZN25mS25qSyzZk11/zubj+GskKxsGeFTAw00H1say1bx8LAGBIDg7PuwkCgEZ00Q9uqs3SZ2/P9Vd/tu8iQGfMrIABmw0qau8Ud1G/2s8hANANAzYA7EtbwtQLnvDBeMETPth3MaATZlbAwI1pgH3ZLIsxnQN2Z5YOAF0ywwKAXemzMOvbHpf7LgJ0RrICGCwDAGzC+wSAvkhY1MGgIdAl1xzmfeO7Xzb53//UazmqU0sOqJZ6TEhWAIOj0882BPsA9EnCYtjEEeA6Bn373mfdGRERf9RzOaAL9qwAmCEIBwAAoA8SpCzykif+UbzkiVIVjINkBQyIgXQAAAC6ZhC9fUM+x0Mu+xD82Ae/O37sg9/ddzGgE5IVAAAAAKxkQLodB4fnez23XtfyfeIL18YnvnBt38WoTsr1HDWRrICBMKuiO841AADAlQxsN8v5ZBNXn74UV5++1HcxoBOSFQALSFgAAADQlloSFbXUo2TXXv1IXHv1I30XAzohWQEDYOC8H847AMB4GYCDxXw29tP3sk8Mz+lTx3H61HHfxYBOnOm7AMBqBsz7NT3/gkkAgPEQ+wFtcG2BgtSy10Mt9ZiQrIACSVCU5+jsOYElAAAA0KmnPeFzfRcBOmMZKAAAAAA25kYuANpgZgX0zCyK4bAkFAAAAJzQN+7Gr3zV70VExD/tuRzQBTMroCdHZ89JVAyU1w0AoF4G34C2lNiXLLFMXO72e749br/n2/suRn1yRUdFzKyAjgkEAACgTBIVsLmDw/P6tyPmetmd37j57RERcbrnckAXJCugJYK2utlwGwAAgG3pSwIsZxkoaIFEBTXyvgaA3RiUGgavE2zP5wba9/Xv/P74+nd+f9/FgE5IVkDDDOiOx9hea9O8AQAA6qF/Nwy/84LXx++84PV9F6M6Kddz1ESyAhpiw2zGwJ1TAADALH2E7ZUwdrBPGbzm3brx9JPixtNP6rsY0AnJCmhACYEGAABlEiuWz8Ab7MdnCIAmSFYA7MHgAwDAsBlkhWb4LG1HXxLgSpIVsIPZoEKAgfcAAMAwHByev2xA1eAqwHZcN4E2nem7ADBUBqiZNX0/CNwAAMqwKi4TswEwFH/lwl+a/O+eXstRnVo2pq6lHhNmVsAOdG5YRhILAKB/4nUAavEt1x3Ft1x31HcxoBOSFQAAAFRDogJgPdfK4Xj1dRfi1ddd6LsY0InekhUppdMppT9MKf1fk6+vSym9I6V0z+Tfp8w89idTShdSSh9IKX17X2UGAACgXAbfgKFwvQK4Up8zK/5mRLxv5uvXRMQdOeebI+KOydeRUnp2RLwsIp4TEbdFxM+llE53XFa4jKV+WMX7AwAAAKBcKddz1KSXDbZTSk+PiL8cET8dET82+fbtEfFtk/+/KSJ+NyJePfn+m3POD0fEn6aULkTE8yPi33RYZAAAAArk7mQAgDr0NbPiH0XET0TE8cz3nppzvj8iYvLv9ZPv3xgRH5p53H2T710hpfSKlNKdKaU7L33+C82XGmBDZlcAALTr4PC8RAUAQEU6T1aklL4jIj6Wc75r06cs+N7CCS455zfmnG/JOd9y+onX7lxGWMUgNAAA9EuSAhi6IY4tuPYCbetjZsWtEfFdKaV7I+LNEfFfpJT+SUQ8kFK6ISJi8u/HJo+/LyKeMfP8p0fER7orLsBuhhh8AgCUzmAZUAPXMuhZruioSOfJipzzT+acn55zvilONs7+v3PO3x8Rb42Il08e9vKI+I3J/98aES9LKV2TUnpmRNwcEX/QcbEBdnJ09pykBQBAQwzuATUo5VpWSjkApvras2KR10bEi1JK90TEiyZfR8757oh4S0T8SUT8VkS8Mud8qbdSMnoac3YhYQEAsDv7U8Aw+JyuNuRr2VDLDQzLmT7/eM75dyPidyf//2REvHDJ4346In66s4IBAADQO4NjwNDVcB2roQ5D9t1Hf3Hyv3t6LQd0oddkBQzVweF5d8qztaOz5wR5AAAbEjcBQzeE69i0jPNjHEMo+1i87qv+ZURE/Iuey1GdWvZ6qKUeE5IVAB2SsAAAAKjf0Pp9QyvvmFx/+ol9FwE6U9KeFTAoGnJ2ZVYOAABAvYwXAOxGsgIAAKAlblIAxmbsA/Vjrz/APiQrYEM6mgAAAAAwfCnXc9REsgI2NL+ptuQFAAAAMMtYAcDubLANW5hPWAAAAAAAsD8zK2BL1p8EAAAAAGiWmRUAAAAAAIxHLXs91FKPCTMrYAdmVwAAAAAANEeyAgAAAAAA6JVkBezI7AoAAFY5Onuu7yIA9GLM/eUx1512fNOdfzW+6c6/2ncxoBOSFQA9MHgBAAAArPPQw1fHQw9f3Xcx6pMrOioiWQEAAABAo8wwgGa8/9Zfifff+it9FwM6IVkBAADQMLMoASQsoAk/86mvjp/51Ff3XQzohGQF7EHgxT4MYgAAALUbU795THWlO6++7kK8+roLfRcDOiFZAQAAQFEM+EFdfKZhd3/748+Jv/3x5/RdjOqkXM9RE8kK2JOgCwAAmiO+BobItYu2/Mq7/kL8yrv+Qt/FgE5IVgAAADTIUo+7M9gH9ar5811z3ejf0Xf+Qhx95y/0XQzohGQFQE8EtAAAjxEbAUPk2gXQHMkKAACABhm4AlistutjbfWBUckVHRWRrAAAAKBXBvyAoXHdAmieZAUAAAC9MeAHAEBExJm+CwAwRjrlAMBYiYNg3A4Oz8fR2XN9F2MvrmMA7ZCsAAAAaNDQB+EAAGqXKtnroZZ6TFkGChrgrgoAAAAAgN1JVgAAADTErAqA9YZ8w9+Qyw5QOskKAAAAOmGQDwCAZSQrAAAAAOjUEJOXQywzsESu6NhDSum6lNI7Ukr3TP59ypLH3ZZS+kBK6UJK6TUz3//7KaX3p5Tem1L69ZTSkyffvyml9FBK6T2T4w2blEeyAhoiaAEAgOXEy8CQuYYBlXpNRNyRc745Iu6YfH2ZlNLpiHhdRLw4Ip4dEd+bUnr25MfviIhvyDk/NyL+fUT85MxTP5hz/sbJ8SObFEayAqBjglwAqJd2fjHnBVjEtQHW+9lPPSt+9lPP6rsY1Ov2iHjT5P9vioiXLnjM8yPiQs75KOf8SES8efK8yDn/ds754uRx74qIp+9TmDP7PBm43MHh+So2Vdw0YKyhrgAAAPRnCP1oSRX69A2P/1DfRaBuT8053x8RkXO+P6V0/YLH3BgRs2/E+yLiBQse99ci4p/NfP3MlNIfRsRnI+Jv5Zz/9brCSFYAX7JtADZ9fOmBJQAAAOxCooK+3XTm030XoU577vVQjJN6PDWldOfMd9+Yc37j9IuU0u9ExNMWPPunNvwraelffuxv/FREXIyIX5186/6I+Mqc8ydTSt8cEf8ypfScnPNnV/0hyQoYuSYCr9nfIXGxmkAXAABgGPTfKMF3/v4rJ//bdFyZEXog53zrsh/mnP/isp+llB5IKd0wmVVxQ0R8bMHD7ouIZ8x8/fSI+MjM73h5RHxHRLww55wnf/PhiHh48v+7UkofjIiviYjZpMoVJCtgBLoMsCQuAAAAGDqJCkpxz7f97xERcbrfYlCvt0bEyyPitZN/f2PBY94dETenlJ4ZER+OiJdFxPdFRKSUbouIV0fEf5ZzfnD6hJTSV0TEp3LOl1JKBxFxc0QcrSuMDbahcn0GWII7AAAAACjWayPiRSmleyLiRZOvI6X0n6SU3hYRMdlA+1UR8faIeF9EvCXnfPfk+f9rRDwpIt6RUnpPSun/b+/ug2296vuwf5fuBQkQqsFEIEs46GLZNeAEYoxpGDOugTGhGeNkbFdu4iiOpy4d3Avp9SRgu3XblJg0vXm5M7E7xHagCTZRwQ3EVRwL4jTpxFi8GhAKkTjYcJEsxQLbYCwJcVf/uM+BfY/2OWfvc/Z+Xtbz+czsufvss/e+v2fv5zwv6/ustf6P7vEXJvlQKeU3k7w1yStqrZ85rBg9K6BRYwkKpjBZWl/G8p0AAPTJMRAwJbZZMA/LJmGYouMuR631/iQvWvL43UletvDzLUluWfK8r9vnfd+W5G3r1iOsgMY4sBof3wkAMFeOg4Apsc1ijL71A9/T3fupQeuAPhgGChoy1gOrdeo6de7saJfjKFpaFgAAgE0bS098526M1ecfuDyff+DyocuAXggroBFjP7Bapb7F54x9eQAAlhlLoxsAq3P+yZideeY7c+aZ7xy6DOiFYaAAAAAAAEbor1x1b5Lkvx64jubUoQvYkFaWo6NnBTRgKleBTKXOTZnb8gIAAExJa8MQA0ydnhWwQbr9H50DRACAtji+A1Zx6tzZ3s6lbZcAxk1YARuwiQOruRw07T0Q3W+5BT8AwNQ4fvmKuRzbAsNaPL9c3O6scs4JwPgIK2AE5nrw1PJyt7xsAEC7do9hjhO8OA4C1rVu74rF7cyybY7tEHCY0shcD60sxy5zVsAGGOdyPYd9Vjunz0z6M51q3QDA0bXQq+Kwxj+AbTpou7N7fjjl80QADqdnBWzQOleDOMDa394T5RZO/gEApma/IVVWfQ3AuvYb1gnm7FV3f0t3785B64A+CCtgw1ZpXHfQ5TMAABib3d6tyywOD7VsqCjHdsCm2J7Apf75bc/p7v3CoHVAH4QVsAXLDq5cHQIAwNgdFFgkhooCgL6dfOIDQ5fQplbmemhlOTrCCuiJkzkAAKbgsMACAOjPdV/9e0mSjw9cB/RBWAHA6OmZBMCYtTi/ln0vAIzDc5/0qSTJ/ztwHdCHy4YuAOAwp86dncyJ8lTqnJplY2MDwBjYNwEA2/Q3rr4tf+Pq24YuA3ohrAAmQxBAolEIAPri2AsAhnd5eVQuL48auoz21EZujRFWAJMy5pPmMdfWAp8vAAAAQLuEFcDkaLSeL989AGOitx8AsG2fv/BAPn/hgaHLgF4IKwCYlFPnzmocAoAe2N8CwPCuvOyKXHnZFUOXAb0QVgAAALCUwAIAaFGp7dxaIqwAYHIMBwUAAADQFmEFAADAmubU42BOywoAwHCEFQAb4Ep/AAAAADi6k0MXAAAAwHi5KAMAaE4rcz20shwdPSsAmKyd02cMTQFA7+x7AABg84QVwCS5wg8AGMLcggrHXAAA9MUwUMBknTp3ttcGAyfr47O7DuycPuP7AYANs28FAKBPelYAk9bXSbST9fE7bEiouV0JCwDH4dgHAMbh+R/8njz/g98zdBnNKbWdW0uEFcDknTp3dqsn1E7Wp2VZKCGoAAAAYIruu++q3HffVUOXAb0wDBTQjGWhwrJG6lWft99zGY/9vjfhBAAcneMfABiRz2u+ZT6s7UDTdk+2dxuv9zv5Xjb/hRN1AGAuHPcAwDh91R///STJbw9cB/RBWAHMwion4IuBhRP29vhOAdiEZRc4TJH9IgBMwz/7kz+bJLl+4Dqa08pcD60sR0dYAbDAiXubfK8AzIn9HgC042tPPr679zuD1gF9EFYAMEmrXNWqsQaAubHvAwBgqi4bugAAWMfO6TOCCgAGZR8DAACbJ6wAAABoRAvzaQAAbFup7dxaIqwAYFJWnSwdAAAAgOkQVgAwOcIIAIak9wIA0JcH6xfzYP3i0GVAL0ywDcAk7QYWGowAAABo1eXlUUOXAL3RswKASdPLAoA+jT0kt18EgLY8+z035tnvuXHoMqAXelYAAAAAAIzQB7/lLUmSEwPX0ZxWJqZuZTk6elYA0BRXlAKwLWPvVQEAAFMmrACgGYIKAAAAgGkSVgAwOq5cBYBHOnXu7JdvAADQGmEFMGsaxcdr1e9m93kabgBo2d793N7QQogBALCG2tCtISbYBmbvsMbuxUZzjQD92jl95sDPXNgEwNw5NgEAoBXCCoCOhu9xOigsOnXu7KGBBgAAAADjZxgoYNY0co/PuqGR7xCAvuzucwy5BAAAmyesAAAAWNHeeSIAAJieUtu5tURYAcyehobxMBQXAAAAwDwJKwBWJNQYls8fAAAAoF3CCgAAgCPos0eg3ocAALTu5NAFAAAAAABAb1qZ66GV5ejoWQGwAkMQbd9BV4z6/AHgkftKvS0AAGiJsAIgGsPHzHcDABft3SfaRwIA0BJhBcAhNARsnytDAQAAAOZNWAHQWRZKCCq2z/BPALAa4T4AwGaUWpu5tURYAbBA43i/BBUAsDr7RgAAWnZy6AIAxkZDwPa5MhSAqet7X+b4BACA1gkrAOiVoAIAAABW848/96Tu3p2D1gF9EFYA0JtVggpXjgLApewbAWC+fuDxv5sk+cvDltGeVqZ6aGU5OsIKALZu1d4UGmMAAAAA5klYAcBWCSoAAADgaH7wk9/W3TMMFO0TVgCwNYIKAAAAOLp/+/GnD10C9EZYAcBWCCoAAADgeOr9lw9dQpNKI3M9tLIcu4QVAGzcqkEFAExRn/s5oT4AzFt9VGOt0XAAYQUAGyWoAIDjE1IAAEly4j95aOgSoDfCCgA2RlABAAAAm/O1V9+fJNkZuA7og7ACAABgRPSqAADYslZG12plOTrCCgAGozEGgKnZdi9C+0YAYNF3XfPhJMm/HrYM6IWwAoCNMAQUAC3rYz8nqAAA9nrVE34rSfLfD1sG9OKyoQsAYPoEFQAAAAAch54VAAzC1aMATIVeFQAAbSmNzPXQynLsElYAcCxHacDRIAPAVOg9CAAM6fYvfmHoEqA3hoEC4FjWDR4EFQBwKftGAGA/r77r+/Lqu75v6DKgF3pWAHBsyxpZXIkKAAAAx3PrN/5ykuTEwHVAH/SsAGArlgUYrhwFYEoE7wAAjaoN3RqiZwUAWyOcAIDD7Zw+Y58JAMDs6VkBAACwxKlzZ7982za9OAAAmDthBQAAwCEEFgAAsF3CCgAAgJEQWAAAbF+p7dxaIqwAAAAYkZ3TZ4QWAADMjrACAADgEMIDAADYLmEFAADAAQQVAACwfSeHLgAAAAAAAHrTylwPrSxHR88KAAAAAABgUMIKAACAfRgCCgAA+mEYKAAAgD2GDilOnTs76P8PAAB9E1YAAAAsEFQAAGPxtz7zdd29OwetozWlkbkeWlmOXcIKAAAAAIARuu+hq4YuAXojrAAAABgJvSoAgEVnn/L+JMnfG7gO6IOwAgAAYAQEFQDAXk9/5w92935s0DqgD8IKAACAgQkqAIBlPv7if5QkOTFwHc2pjUz20MpydC4bugAAAIA5E1QAAICwAgAA4BLCAwAA6J+wAgAAAACgBzunz2Tn9Jmhy4BRMmcFAAAAAEAP9OAch9LIVA+tLMcuPSsAAAD20JAAAAD9ElYAAAAs0UdgIRQBAICLhBUAAAAAAMCghBUAAAD72GbPB70qAAAGUhu6NcQE2wAAAD0SUgAAq3rPg18cugTojbACAACgJ4IKAGAdN/7zH+nu/eigdUAfhBUAAAA9EFQAAOt63UtvTpL8hYHrgD4IKwAAAAAARujGKz+bRFixaeXC0BVsRivLscsE2wAAAPvYOX1m6BIAAGAWhBUAAAAAAMCghBUAAAD7OHXurLkmAACgB8IKAACAQwgsAAAaUhu6NURYAQAAMHM7p8+YnwMAgEGdHLoAAAAA+rVfMLFz+oxeJAAADELPCgAAgENsotfB2HsumJ8DAIAh6VkBAACwj7EHDEe1G0roSQEAzFFpZK6HVpZjl54VAAAAPRhjKDDGfrBQ3wAAIABJREFUmgAAmCdhBQAAAAAAMCjDQAEAAOxjsefBcYaE0oMBAAAOJqwAAAAAAGA+aiOTPbSyHB3DQAEAAAAAAIMSVgAAAKzgOEM5HWcIKQAAmANhBQAAwIqOG1js3gAAgEuZswIAAAAAgNkojUz10Mpy7NKzAgAAAAAAZqaU8sRSyq2llDu7f5+wz/NeWkr5WCnlrlLKaxYe/59KKZ8upXywu71s4Xev7Z7/sVLKd65Sj7ACAABgRZsawslQUAAAjMBrkryr1npDknd1P1+ilHIiyT9I8meSPCPJ95dSnrHwlL9ba312d7ule80zktyY5JlJXprkp7v3OZCwAgAAYAUCBgAAGvPyJG/q7r8pyXcvec7zktxVa92ptT6U5C3d6w5737fUWh+stX4iyV3d+xxIWAEAALCC40yuvYzwAwA4zCcf/lw++fDnhi6jPbWhW/LkUsp7F24/vMYn8eRa6z1J0v179ZLnXJvkUws/n+8e2/UjpZQPlVJ+fmEYqcNes5SwAgAAYEWbDiwAAA7y2w8/Pr/98OOHLoNxu7fW+tyF2xsWf1lKeWcp5SNLbof1jvjyWyx5bHdq759J8vQkz05yT5KzK7xmXydXLAgAAIAN2zl9RgACAOzr264YugKmrtb64v1+V0q5t5RyTa31nlLKNUnuW/K080meuvDzdUnu7t773oX3+odJfvmw1xxEzwoAAIA1nDp3dqMBg+GgAAAYyDuS3NTdvynJ25c85z1JbiilXF9KeXQuTpz9jiTpAo5dfy7JRxbe98ZSyuWllOuT3JDktsOKEVYAAAAcgcACAGCaSm3ndkyvT/KSUsqdSV7S/ZxSyteUUm5Jklrrw0l+JMm/THJHkptrrbd3r//fSikfLqV8KMl/nuSvdq+5PcnNST6a5FeSvLLW+qXDijEMFAAAwBHtBhabCBt238OwUAAA9KHWen+SFy15/O4kL1v4+ZYktyx53g8c8N6vS/K6derRswIAAAA2RC8ZAICjEVYAAAAck94Q7LIuAAAcjbACAABgA3Yn3j5uY7Ur8wEAmCNhBQAAwIZtIrAQWgAAbEmt7dwaYoJtAACALTl17uxaoYMhhAAAmCs9KwAAALZgN3hYNYAQVAAAMGd6VgAAAAxAOAEAAF8hrAAAANgywQQAwHiURqZ6aGU5dgkrAAAAAABG6Mfu+xPdvTsHrQP6IKwAAAAAABihzzz0uKFLgN4IKwAAAAAARuh5V+0kSf7hwHVAH4QVAAAAAAAj9LLHfXzoEtrUylwPrSxHR1gBAAAAADBCTzlx5dAlQG8uG7oAAAAAAABg3oQVAAAAAADAoAwDBQAAAADAbJRG5npoZTl26VkBAAAAAAAMSlgBAAAAAAAMSlgBAAAAAAAMypwVAAAAAADMx4VGJntoZTk6elYAAAAAAACDElYAAAAAAACDElYAAAAAAACDMmcFAAAAAADz0cpUD60sR0fPCgAAAAAAYFDCCgAAAAAAYFDCCgAAAAAAYFDmrAAAAAAAGKEH6xeHLqFJpZG5HsrQBWyYsAIAAAAAYISe8+s/2N37yUHrgD4IKwAAAAAARuijf/qfJElODFwH9MGcFQAAAAAAwKD0rAAAAAAAGKFnvfu/6u79z4PW0ZzayKQVrSxHR1gBAAAAADBCf+7Uh5IkdwxcB/TBMFAAAAAAAMCg9KwAAAAAABihV3z1rydJ/ubAdUAfhBUAAAAAACN07YnHd/d+Z9A6WlMameqhleXYZRgoAAAAAABgUL2HFaWUp5ZSfq2Uckcp5fZSyqu6x59YSrm1lHJn9+8TFl7z2lLKXaWUj5VSvrPvmgEAAAAAgO0ZomfFw0nO1Fq/Mcnzk7yylPKMJK9J8q5a6w1J3tX9nO53NyZ5ZpKXJvnpUsqJAeoGAAAAAAC2oPewotZ6T631/d39zyW5I8m1SV6e5E3d096U5Lu7+y9P8pZa64O11k8kuSvJ8/qtGgAAAACAJtSGbg0ZdM6KUsrTkjwnyW8keXKt9Z7kYqCR5Oruadcm+dTCy853jy17vx8upby3lPLeL33+D7dVNgAAAAAAsEGDhRWllCuTvC3Jq2utf3DQU5c8tjQzqrW+odb63Frrc09c+bhNlAkAAAAAAGzZIGFFKeVRuRhUvLnW+kvdw/eWUq7pfn9Nkvu6x88neerCy69LcndftQIAAAAAANvVe1hRSilJfi7JHbXWv7Pwq3ckuam7f1OSty88fmMp5fJSyvVJbkhyW1/1AgAAAADQjlJrM7eWnBzg/3xBkh9I8uFSyge7x34syeuT3FxK+aEkn0zyvUlSa729lHJzko8meTjJK2utX+q/bAAAAAAAYBt6Dytqrf9fls9DkSQv2uc1r0vyuq0VBQAAAAAADGawCbYBAAAAAACSYYaBAgAAAACAYVwYuoANaWU5OnpWAAAAAAAAgxJWAAAAAAAAgxJWAAAAAAAAgzJnBQAAAAAAs1FqHbqEjWhlOXbpWQEAAAAAAAxKzwoAAAAAgBH6lg98b3fvbw5aB/RBWAEAAAAAMELvec7/lSQ5MXAd0AdhBQAAAAAA89HKVA+tLEfHnBUAAAAAAMCghBUAAAAAAMCghBUAAAAAAMCgzFkBAAAAAMB81EYme2hlOTp6VgAAAAAAAIPSswIAAAAAYIQ+e+ELQ5cAvRFWAAAAAACM0L974IndvU8PWgf0QVgBAAAAADBCH3nguu7ehwetozWlkakeWlmOXeasAAAAmLGd02eGLgEA2Md9D12V+x66augyoBfCCgAAgBk7de7s0CUAAIBhoAAAAAAAxugJJ02wzXwIKwAAAAAARujVT/xgkuQnB66jObWRyR5aWY6OsAIAAAAAYISuvOyKoUuA3pizAgAAAAAAGJSwAgAAAAAAGJRhoAAAAAAAmI1yYegKNqOV5dilZwUAAAAAADAoYQUAAAAAADAoYQUAAABL7Zw+s9JjAABwXOasAAAA4BIHBRKnzp3tsRIAgC2odegKNqOV5egIKwAAAEjylZBCIAEAQN8MAwUAAICgAgCAQQkrAAAAZs48FAAADM0wUAAAADMlpAAAZqmVqR5aWY6OnhUAAAAzs3P6zL5BhQADAIAhCCsAAAAAAIBBCSsAAABmZJWeEwf1vAAAgG0wZwUAAMBMCCAAAJJS25jsoZXl2CWsAAAAmIFVgopT586u9XwAANgUw0ABAABM2KrDOh3k1LmzlwQVu48BAEBfhBUAAAATtamgAgAAhmYYKAAAgInbDST2Bg+CCgCAJVqZ66GV5ejoWQEAADBRB4UT5pwAAGBK9Kzg2BZPglyZBQAA/Tp17uyRQgrH7gAAjImwgiNzpRYAAAAAAJtgGCiOZL+gQoABAAD9OuoxuGN3AADGRM8KVuZkhqPab8JHAACO5zjH6I7NAGD8PvjQA0OX0KYLQxewIa0sR0dYwUoEFQAA0A5BBQBMw7v/6OndvU8NWgf0QVgBAAAwI4IKAJiOFzzmrqFLgN6Ys4KNO24vjJ3TZ/TkAACALRBUAMC0fNOjH5NvevRjhi4DeqFnBb1aDCEOO1HaOX3GyRQAAAAAsFGl1qFL2IhWlmOXnhUAAAAAAMCghBVsxbJhnPY+dtTnMD16yAAAbJ5jZQAAWmIYKLZmlZOnxaGenGwBAMBqHDsDANAaYQWDG/uJ1t769BIAAGCKHMcCAHRameuhleXoCCtgibEHKAAAzJdjVQBactB+TdAO8yKsgAXrDl3Fenx2AABHJ6QAYOrW3ZftPl9bAsyDsGLkpMv97ZjW2WHaWa5n8bP12QEArO+4QYVjLwCGJnQHDiOs2KLjXkU+lo34WOtwwtWvTa8HelkAAKxmLMfjAHBUx92XaUNg41qZ66GV5egIK0ZqDCckY6jhIJu8Qn/sy3qYVes/6me1rc/HwQYAwMGmfpwKAJval821DeHWP9J8y3xY27dsvw3pQb0EVt2Iz3Ujvddxe1wcZ6e5+B0M0fPjKGM99vn5HOf9rdsAAAAwbdsYpSGZV5vBz//OC7t7dwxaB/RBWDESY7tiamz1rGOx9v12XptcviE+q+MGLMlqO/Yh14NVvkcAgJZN+ZgcALa5H5vTBby/99AVQ5cAvRFW9GDvBnTTDeUHbZzX+b/26yEwZUPuvLbxf28jZJnCzt18JQAAxzOnRh0AaMkLn3RXkuRXB66jOReGLmBDWlmOjrBiixYb/7edJo/pfcZmm2FRX6bWe2PbphS0AAAcRG9SAFjfnPaZr/3q/5Ak+YmB64A+CCt6cOrc2VE3/M7BUJ//Jq5g62POiKnu5A/6bKa6TADAfB00HxoATI32MGBdwgrYslV6AQy9826h98ley5ZJgAEAjMmyY64WjsMAYNuc40ObhBXQk7GfeI69vqPYu0wOZgAAAGBzhhzO0FCKHEepdegSNqKV5dh12dAFAAAAsF0acQAAGDthBTAryya8b7FXCQAAAPRp7/l2n+fay871W/FT9399fur+rx+6DOiFYaB60OrGEqbM3yUAMCTHIgC0YNkk2kPu41oc/vnPPP5DSZKfGLgO6IOeFVvmJAQAAAAA+tFaW9yzH31Fnv3oK4Yuoz21tnNriJ4VW9TaxhFa1dpVFwDAuO2eJywegzh3AGCslu23xu6g/eqUlgPmRs8KAACAnu1tKNFwAgD92J3fwoUCMD56VmyJDR5MR4tjWgIA4+W4A4Cp2Dth9t592NTbvxbr3122/ZbJ/hu2T1gBkEcejDgIAQD6tmySUgAYwn77o5b3U4ctm3aDxrQy18Mxl6OU8sQk/zTJ05L8VpLvq7V+dsnzXprk7yc5keRna62v7x7/p0m+oXvaVyX5vVrrs0spT0tyR5KPdb97d631FYfVI6zYgpY33DAXelsAAEMQWAAwBPue9fU1L8Zfu/c53b07N/aesOA1Sd5Va319KeU13c9/ffEJpZQTSf5BkpckOZ/kPaWUd9RaP1pr/S8Xnnc2ye8vvPTjtdZnr1OMsGKDbNgBAIAxciEGAPRnk0HGVSf+6LjlwEFenuTbu/tvSvKvsyesSPK8JHfVWneSpJTylu51H919QimlJPm+JN9xnGKEFccgnIC2Lfsbd5IPAEzVsnG5AUD71rh93RX3Dl0C4/fkUsp7F35+Q631Dau+ttZ6T5LUWu8ppVy95DnXJvnUws/nk3zrnud8W5J7a62LXYCuL6V8IMkfJPmJWuu/PawYYcUR2IgDAAAAMDXatKbn5z71gu7ebYPW0Zy25qy4t9b6gv2eUkp5Z5KnLPnVj6/4v5Rl//Oen78/yS8u/HxPkq+ttd5fSvnmJP+slPLMWusfHPQfCSsAAAAAoHGCinFYd2jGW7/xl5NcnNUYjqLW+uL9fldKubeUck3Xq+KaJPctedr5JE9d+Pm6JHcvvMfJJH8+yTcv/J8PJnmwu/++UsrHk3x9ksUeII9w2eGLwyIbdpg32wAAAACmxrnsdH32whfy2QtfGLoM2vWOJDd1929K8vYlz3lPkhtKKdeXUh6d5MbudbtenOTf11rP7z5QSvlj3cTcKaWcSnJDkp3DihFWrMGGHUgubgtsDwAAAJgC56/js8538oTLHpsnXPbYLVbDzL0+yUtKKXcmeUn3c0opX1NKuSVJaq0PJ/mRJP8yyR1Jbq613r7wHjfm0iGgkuSFST5USvnNJG9N8opa62cOK8YwUCuwUQeW2dQE3Ot2AQUAAIDDaM+CA1wYuoANOeZy1FrvT/KiJY/fneRlCz/fkuSWfd7jLy957G1J3rZuPXpWAAAAAAAAg9KzAmCDFq9cWaW3xO7z9a4AAPrgeAOgf+ueJ27q/2LctAPAIwkrALZk3YNEByoAwDY5zgDoX5/hgaBierQDwKWEFQAj4kAFAOZtWw1Nji8A2iaomK693519dj9KrUOXsBGtLMcuc1YAAABs2M7pM6NpONLoAQDTMZbjBxiCsAJgZByYAMB0jSmkAGB8Nr2PsN9pk++VuRJWAIyQgxIAmJ7j7r+3sf/XqwJgfJzvsSrrCnNjzopD2CgAQ1m2/dHgAADjdJzzBuccAPNjvkJW9XU3/zfdvR8dtI7mtDLXQyvL0RFWHMBJAzA2i9slB7YAMH3OOQCmaZWLyw7bxgssWMXuelReJaygfcKKPZwsAAAALdAABrBZq4QPR31P22yAhues+Karn7z2awQVwJTsTrhl2wUA43XQfto+HAAAvqLZsGIdGvuAqbMNA4DxGmo/7fgA6MPiRVQtb3f6XraWP0sYhQu1nVtDmg4rVtmw2/gDrbA9A4Bh2AcDAMDxNR1WHMZJBdAa2zUA6M9xriK2zwZg0eJ+wT4CmKvmw4r9NvA2/ECrWu9+DQAAjMOy844Wz0X6Wqa953LbmNAbYMxODl1AH2y8gTnaOX0mp86dHboMACCX7pednwBTt6lG9DGfr4xlWz2WOqA5tZG5HlpZjk7zPSsAAAAAAIBxm0XPCoC50rsCANa3exXrQfvQo1zp6upYmKfFv/0Wjs03uS1bZXs7BNtrgGEIKwAAADomOAW2aciLiTYRmmxru3jQ+27r87KNBxgfYQVA4/SuAIDV7d1nTr0xy3EAjM9+25VN/K3uF0js/T+ntG1rrWcKMBLNzPXQynJcZM4KgBmY0skIAIyJhjHgONY5Dj/qMfvO6TNfvq3y+JRtalla+kwAWqJnBcBMuLISAObJMQD057iN4BrRD3eUnik+V4BpEFYAzMjeg3QNFwAAsBkaxIe1XzDrewGYDmEFwIztHrgLLQBgf6fOndXYBTNnGzANvidgZa3MWdHKcnSEFQAYHgIADjH1wMK+HlYz5b9zAJg6YQUASy2eqGncAACgZUIKABiesAKAJJdecbn3ZE1wAcDcTb0h0/6bOVv297v4NzH1v28AaIWwAoAvW+VE7bCTPQBojYZMaI+/a4CZu9DIXA/mrACAS+l5AUBr9jZk7tf7EAAA2IzLhi4AAABgTPaG8ItB/FRDeSELAABjp2cFAAAwa/v1ogCmTUgHANMirABgoxYn6gYAgD4JKABYSb0wdAWb0cpydIQVAAAA0aMCAACGZM4KADbOFW0ATMneeSmAaXIMCgDTJqwAYCucLALAuNg3AwAwZsIKALZGowgArbFvg3HytwnAWmpt59YQc1YAsFUm3AagFRpDYVz8TQJAW/SsAGDrnEgCMHX2ZTA+LogBgLboWQFAL3YbeZxUAjAlQgoAAOiHsAKAXi02+gguABgrIQVMw6lzZ/29ArC+C43M9dDYnBWGgQIAAAAAAAYlrAAAAAAmSa8KAGiHsAIAACZG4xyAbSEAtMacFQD0zlwVAKvZbYjb3W4uNswd1khnW3s8xsEHAGhYK3M9tLIcHWEFAL3SeAaw3EEN40dpNN85fcY295iWhUQAAMB2GAYKAAAGtq3GcI3sm3Hq3Nkv34BxsH0DgPboWQEAALAiw0NBv/y9AcB8CCsAAACA0RFUALA1rcz10Mhi7DIMFAAAAAAAMChhBQC9coUcwKW2vV203d28Kc9dYX0AAGCsDAMFAAAD0XC8XXs/3ymHDDA3to8AMD/CCgAAYBZ2Tp8RWMDICSkA6EUzc1Y0shwdw0ABAMBA+mo4n2vj37LPd1OfhdADNm+u2yoA4CI9KwDolcYdgGGs2gh4UAP/7u8W32vs2/VT584+Ytk3Vf+y9waOxt8SACCsAKA3Y2/QAujbGBvnDqpp2e/2BhlTc9z6BRZwPP5+AIBdhoECAIABtNZAt3P6zKSXaer1r2Muy8n4WRcBgEV6VgAAQM9abqAb2yTW637WU+8pAlPQ8jYQgIm4cGHoCjajNrIcHWEFAL3Q6AMwH2MJLI7TILpqaKHRFfbn7wMAWIewAgAAejaHeQ6WLd8YAox1HRS8tP4dAgBAn8xZAcDWTbFxCoDNa6lxv6VlAQCAMRBWAAAAvdlWI//e993k/7P4XnOaiBsAoFm1tnNriGGgANgqvSoAlpvDUFD72dacFtv8PKf+XdkfAwAwdsIKAAAeYbFhdq6NnH1MEr34/lNvDF/X3uWd63rWB58tAABTYBgoAAAusc3hdKZijss8tON85r4vGB9/lwDAuoQVAGzUqXNnXcEJcAS2nQAA0JOh55kwZ8VSwgoANmaxoU1oAW2Z6xWyc13uoRzl8/YdwbiYhB4AOCphBQDHJpiAtvh7vpRGt375vAEAYJ6EFQAci0ZNmI85NyL3sexz/nz3WuezsB86nHULAIApODl0AQAATMdio6dG4s3QkEwfdk6f8TcLALDrQiNzPTQ2Z4WwAoAj0eABLGv83K/hvYVthsZegIMJXwGA4xBWALA2jXXQtnUam1Z9bis9MgQWAAAA2yGsAGAtGumA4zoo4BjLNubUubO9XSHc5/81JasGQz671YzlbwsAAPYjrAAAYDSm0HNhGzXuvp+G90v5PGA6/L0CMCW1Xhi6hI1oZTl2XTZ0AQBMw6lzZ0ffgAgc3xgam3ZOnzmwjuP+fhO29f62s2yD9QoAgCkQVgBwKI0cwBCWhQ6LP6/y++Ow7QMAAOiPYaAAAEgyjl4VyxxW12G9LI4TOphPAuBwtpMAwCYIKwAAaNpiI9pRgovF10x1eCnmSw8hAIAlLtShK9iM2shydIQVAADMppH8oOVcpVF3Wz0t5vL50y9BBQAAUyKsAABozOLQRxrBV7fukFHHHWIKoAX2MwDApggrAAAasttopPGoHwILYK7sZwCATRNWAAAAAAAwH63M9dDKcnSEFQAAE+fq1mHpXcEYWSc5LvsWAKBvwgoAgInRgNSebU3cDXAUtkcAwBAuG7oAAMbNlZkwDjunz3z5xvYM+fna3gJjYD8DAAxFzwoA9qXhDIalwWgYQw7rpIcFMCTbHwBm48KFoSvYjNrIcnT0rABgKUEFDEuD0bB8/sDc2O4BAEPTswIAYAQ0Ek3HYb0fTLgNAACwPj0rAHgEjWzQD/NQjNs6343vkLGxTrIux38AwNCEFQBcwokqwMH2awReDDc0FDMG1kMAgH3U2s6tIcIKAIAt04Ni2ha/t3W+w6N859YRYEguWgEAhmTOCgCAAWiUnpbjfF+Lr92vIdD6wLaYQwUAgKkQVgAA9Eij9Lz5/hnC7nontAAAYMyEFQAAW6RxGoCpsM8CYC7qhQtDl7ARtbaxHLvMWQEAADADGqI5jN43AMCQhBUAAFuiYRAYG9slDiOwAACGIqwA4BIaMQCgbfb1AACMkTkrAAAAAACYj1qHrmAzWlmOjrACgEfYe8Wl4QBgfa5cBsZs5/QZ+3cAAEZFWAFAkv0DCQ2uzMXiun6cBjx/M8BUCCwAABgTYQUABzZUaMRgDvYGDAIHAAAA6JcJtgEAAGZKOMte1gkAZuFCbefWED0rAIBZ0ygDzN3udlBvynmzPwQAhiasAABmSaMMwKXMYTFP9ocAwFgIKwCA2dEwA7Dc4vZRcNEe+z8AYMzMWQEAAMAjaNhui+8TABbUC+3cGiKsAAAAYKmd02c0cjdCTxkAYOyEFQDArGh0A1ifbWcbBBYAwJiZswJg5py00joNbACbsbs9dewAAMA2CCsAgGYJKgAAANirXqhDl7ARtbaxHLsMAwUANElQAbAdtq8AAGyDsAJg5jQ40CLrNcB22c5Ok+8NABgzYQUAAABr2zl9RuM3AAAbY84KAAAAAADmo14YuoLNaGU5OnpWAABNcZUvQL9sdwEA2ARhBQAAAMcisBg/3xEAMHbCCgCgGRpiAIZjGzxO5hYBAKZCWAEANEFDDMDwbIvHxfcBAMvVC7WZW0tMsA0ATJqGGIBx2Tl9JqfOnR26jNmyXwQApkrPCgBgsjTIAIyT7fMwfO4AwJQJKwAAANg4Def98nkDAFMnrAAAAGArNKD3w+cMAGuqF9q5HUMp5YmllFtLKXd2/z5hn+f9fCnlvlLKR1Z9fSnltaWUu0opHyulfOcq9QgrAAAA2BoN6dvl8wUAjuE1Sd5Va70hybu6n5d5Y5KXrvr6UsozktyY5Jnd6366lHLisGKEFQAAAGyVBvXt8LkCAMf08iRv6u6/Kcl3L3tSrfXfJPnMGq9/eZK31FofrLV+IsldSZ53WDEnV68bAGA8NNAATMvO6TM5de7s0GU0w34QAI7si3fU9w1dw0bU1CT54jHe4sm11nuSpNZ6Tynl6g29/tok71543vnusQM1G1a8733v+91Sym8PXQds0ZOS/O7QRcCWWc/ZV3nVjw5dwqZYz5kD6zlz0Ot63tB+kGmxPWcOxrqe//GhC2jIn/90PnHN0EVs0HeUUt678PMbaq1v2P2hlPLOJE9Z8rof32JNZclj9bAXNRtW1Fr/2NA1wDaVUt5ba33u0HXANlnPmQPrOXNgPWcOrOfMgfWcObCet6/WeneSu4euY4Pel+Rv7/fLWuuL9/tdKeXeUso1Xa+Ia5Lct+b/vd/rzyd56sLzrssKn7k5KwAAAAAAYH7ekeSm7v5NSd6+ode/I8mNpZTLSynXJ7khyW2HvZmwAgAAAAAA5uf1SV5SSrkzyUu6n1NK+ZpSyi27Tyql/GKSX0/yDaWU86WUHzro9bXW25PcnOSjSX4lyStrrV86rJhmh4GCGXjD4U+BybOeMwfWc+bAes4cWM+ZA+s5c2A9ZzZqrfcnedGSx+9O8rKFn79/ndd3v3tdktetU0+p9dB5LQAAAAAAALbGMFAAAAAAAMCghBUwQqWUp5ZSfq2Uckcp5fZSyqu6x59YSrm1lHJn9+8TFl7z2lLKXaWUj5VSvnO46mE9pZQTpZQPlFJ+ufvZek5TSilfVUp5aynl33fb9f/Mek5rSil/tTtm+Ugp5RdLKVdYz5m6UsrPl1LuK6V8ZOGxtdfrUso3l1I+3P3uXCml9L0ssJ991vO/3R23fKiU8n+XUr5q4XfWcyZn2Xq+8LsfLaXUUsqTFh6znsNAhBUwTg8nOVNr/cYkz0/yylLKM5K8Jsm7aq0YMuAHAAAFi0lEQVQ3JHlX93O6392Y5JlJXprkp0spJwapHNb3qiR3LPxsPac1fz/Jr9Ra/9MkfzIX13frOc0opVyb5HSS59Zan5XkRC6ux9Zzpu6NubiOLjrKev0zSX44yQ3dbe97wpDemEeuk7cmeVat9U8k+Q9JXptYz5m0N2bJOllKeWouTgj8yYXHrOcwIGEFjFCt9Z5a6/u7+5/LxYata5O8PMmbuqe9Kcl3d/dfnuQttdYHa62fSHJXkuf1WzWsr5RyXZL/IsnPLjxsPacZpZSrkrwwyc8lSa31oVrr78V6TntOJnlMKeVkkscmuTvWcyau1vpvknxmz8NrrdellGuSXFVr/fV6ccLI/3PhNTC4Zet5rfVXa60Pdz++O8l13X3rOZO0z/Y8Sf5ukr+WZHFCX+s5DEhYASNXSnlakuck+Y0kT6613pNcDDSSXN097dokn1p42fnuMRi7v5eLB4cXFh6zntOSU0n+Y5J/1A139rOllMfFek5Daq2fTvK/5+JVifck+f1a66/Gek6b1l2vr+3u730cpuKvJPkX3X3rOc0opXxXkk/XWn9zz6+s5zAgYQWMWCnlyiRvS/LqWusfHPTUJY/VJY/BaJRS/myS+2qt71v1JUses54zdieT/KkkP1NrfU6SP0w3ZMg+rOdMTjdm/8uTXJ/ka5I8rpTyFw96yZLHrOdM3X7rtfWdySql/HguDlH85t2HljzNes7klFIem+THk/yPy3695DHrOfREWAEjVUp5VC4GFW+utf5S9/C9XdfDdP/e1z1+PslTF15+XS4OvwBj9oIk31VK+a0kb0nyHaWUfxLrOW05n+R8rfU3up/fmovhhfWclrw4ySdqrf+x1vrFJL+U5E/Hek6b1l2vz+crQ+gsPg6jVkq5KcmfTfIXuiFvEus57Xh6Ll5k8Zvd+eh1Sd5fSnlKrOcwKGEFjFAppeTi+OZ31Fr/zsKv3pHkpu7+TUnevvD4jaWUy0sp1+fiRE+39VUvHEWt9bW11utqrU/LxQnM/lWt9S/Gek5Daq2/k+RTpZRv6B56UZKPxnpOWz6Z5PmllMd2xzAvysX5tqzntGit9bobKupzpZTnd38ff2nhNTBKpZSXJvnrSb6r1vqFhV9Zz2lCrfXDtdara61P685Hzyf5U92xu/UcBnRy6AKApV6Q5AeSfLiU8sHusR9L8vokN5dSfigXGwa+N0lqrbeXUm7OxQawh5O8stb6pf7Lho2wntOa/y7Jm0spj06yk+QHc/GCEes5Tai1/kYp5a1J3p+L6+0HkrwhyZWxnjNhpZRfTPLtSZ5USjmf5CdztOOU/zbJG5M8JhfH/v8XgZHYZz1/bZLLk9x6sU027661vsJ6zlQtW89rrT+37LnWcxhW+UpvPgAAAAAAgP4ZBgoAAAAAABiUsAIAAAAAABiUsAIAAAAAABiUsAIAAAAAABiUsAIAAAAAABiUsAIAADaslHJi6BoAAACmRFgBAAAHKKV8SynlQ6WUK0opjyul3F5KedaS5317KeXXSim/kOTDA5QKAAAwWaXWOnQNAAAwaqWU/zXJFUkek+R8rfWnljzn25P8P0meVWv9RL8VAgAATNvJoQsAAIAJ+F+SvCfJA0lOH/C82wQVAAAA6zMMFAAAHO6JSa5M8vhc7GGxnz/spxwAAIC2CCsAAOBwb0jyPyR5c5K/NXAtAAAAzTEMFAAAHKCU8peSPFxr/YVSyokk/66U8h211n81dG0AAACtMME2AAAAAAAwKMNAAQAAAAAAgzIMFAAArKGU8k1J/vGehx+stX7rEPUAAAC0wDBQAAAAAADAoAwDBQAAAAAADEpYAQAAAAAADEpYAQAAAAAADEpYAQAAAAAADEpYAQAAAAAADEpYAQAAAAAADOr/B6u9LTc8ErM1AAAAAElFTkSuQmCC\n",
"text/plain": [
"<Figure size 2160x1440 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"(\n",
" abs(speed_rr - speed_rotated_rr) \n",
" / (speed_rr)\n",
").plot(\n",
" size=20,\n",
" vmin=-0.1, vmax=0.1\n",
");"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python [conda env:py3_euler]",
"language": "python",
"name": "conda-env-py3_euler-py"
},
"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.7.6"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment