@@ -89,24 +100,27 @@ PASEOS allows simulating the effect of onboard and operational constraints on us
### pip / conda
-`conda` support will follow in the near future.
+The recommended way to install PASEOS is via [conda](https://docs.conda.io/en/latest/) / [mamba](https://github.com/conda-forge/miniforge#mambaforge) using
+
+```
-On Linux you can install via `pip` using
+conda install paseos -c conda-forge
```
-pip install paseos
+Alternatively, on Linux you can install via `pip` using
```
-This requires `Python 3.8.16` due to [pykep's limited support of pip](https://esa.github.io/pykep/installation.html).
+pip install paseos
-On Windows / OS X or if you encounter problems, please consider [setting up a dedicated](https://conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html#creating-an-environment-from-an-environment-yml-file) `conda` environment to install dependencies with the provided `environment.yml`
+```
+The pip version requires `Python 3.8.16` due to [pykep's limited support of pip](https://esa.github.io/pykep/installation.html).
### Building from source
-For now, first of all clone the [GitHub](https://github.com/aidotse/PASEOS.git) repository as follows ([Git](https://git-scm.com/) required):
+To build from source, first of all clone the [GitHub](https://github.com/aidotse/PASEOS.git) repository as follows ([Git](https://git-scm.com/) required):
```
git clone https://github.com/aidotse/PASEOS.git
@@ -132,7 +146,9 @@ Alternatively, you can install PASEOS by using [pip](https://www.pypy.org/) as f
cd PASEOS
pip install -e .
```
+
### Using Docker
+
Two [Docker](https://www.docker.com/) images are available:
* [paseos](https://hub.docker.com/r/gabrielemeoni/paseos): corresponding to the latest release.
* [paseos-nightly](https://hub.docker.com/r/gabrielemeoni/paseos-nightly): based on the latest commit on the branch `main`.
@@ -149,6 +165,7 @@ Comprehensive, self-contained examples can also be found in the `examples` folde
* Modelling distributed learning on heterogeneous data in a constellation
* Using PASEOS with MPI to run PASEOS on supercomputers
* Using PASEOS to model the task of onboard satellite volcanic eruptions detection
+* An example showing how total ionizing dose could be considered using a PASEOS [custom property](#customproperty)
The following are small snippets on specific topics.
@@ -174,7 +191,7 @@ sat_actor = ActorBuilder.get_actor_scaffold(name="mySat",
#### Local and Known Actors
-Once you have instantiated a [PASEOS simulation](#initializing-paseos) to know how to create an instance of PASEOS)), you can add other PASEOS [actors](#actor) ([Known actors](#known-actors)) to the simulation. You can use this, e.g., to facilitate communications between actors and to automatically monitor communication windows.
+Once you have instantiated a [PASEOS simulation](#initializing-paseos) you can add other PASEOS [actors](#actor) ([Known actors](#known-actors)) to the simulation. You can use this, e.g., to study communications between actors and to automatically monitor communication windows.
The next code snippet will add both a [SpacecraftActor](#spacecraftactor) and a [GroundstationActor](#ground-stationactor) (`other_sat`). An orbit is set for `other_sat`, which is placed around Earth at position `(x,y,z)=(-10000,0,0)` and velocity `(vx,vy,vz)=(0,-8000,0)` at epoch `epoch=pk.epoch(0)`.
The latter (`grndStation`) will be placed at coordinates `(lat,lon)=(79.002723, 14.642972)` and elevation of 0 m. You cannot add a power device and an orbit to a `GroundstationActor`.
@@ -182,18 +199,18 @@ The latter (`grndStation`) will be placed at coordinates `(lat,lon)=(79.002723,
import pykep as pk
import paseos
from paseos import ActorBuilder, SpacecraftActor, GroundstationActor
-# Define an actor of type SpacecraftActor of name mySat
-# (that will be the local actor)
+# Define the local actor as a SpacecraftActor of name mySat and its orbit
local_actor = ActorBuilder.get_actor_scaffold(name="mySat",
actor_type=SpacecraftActor,
epoch=pk.epoch(0))
-# Let's set the orbit of local_actor.
-ActorBuilder.set_orbit(actor=local_actor,
- position=[10000000, 0, 0],
- velocity=[0, 8000.0, 0],
- epoch=pk.epoch(0),
- central_body=pk.epoch(0))
+ActorBuilder.set_orbit(
+ actor=local_actor,
+ position=[10000000, 0, 0],
+ velocity=[0, 8000.0, 0],
+ epoch=pk.epoch(0),
+ central_body=pk.planet.jpl_lp("earth"), # use Earth from pykep
+)
# Initialize PASEOS simulation
sim = paseos.init_sim(local_actor)
@@ -207,7 +224,7 @@ other_spacraft_actor = ActorBuilder.get_actor_scaffold(name="other_sat",
ActorBuilder.set_orbit(actor=other_spacraft_actor,
position=[-10000000, 0, 0],
velocity=[0, -8000.0, 0],
- epoch=pk.epoch(0), central_body=pk.epoch(0))
+ epoch=pk.epoch(0), central_body=earth)
#Create GroundstationActor
grndStation = GroundstationActor(name="grndStation", epoch=pk.epoch(0))
@@ -230,7 +247,11 @@ sim.add_known_actor(grndStation)
#### Set an orbit for a PASEOS SpacecraftActor
-Once you have defined a [SpacecraftActor](#spacecraftactor), you can assign a [Keplerian orbit](https://en.wikipedia.org/wiki/Kepler_orbit) to it. To this aim, you need to define the central body the [SpacecraftActor](#spacecraftactor) is orbiting around and specify its position and velocity (in the central body's [inertial frame](https://en.wikipedia.org/wiki/Inertial_frame_of_reference)) and an epoch. In this case, we will use `Earth` as a central body.
+Once you have defined a [SpacecraftActor](#spacecraftactor), you can assign a [Keplerian orbit](https://en.wikipedia.org/wiki/Kepler_orbit) or use [SGP4 (Earth orbit only)](https://en.wikipedia.org/wiki/Simplified_perturbations_models).
+
+##### Keplerian Orbit
+
+To this aim, you need to define the central body the [SpacecraftActor](#spacecraftactor) is orbiting around and specify its position and velocity (in the central body's [inertial frame](https://en.wikipedia.org/wiki/Inertial_frame_of_reference)) and an epoch. In this case, we will use `Earth` as a central body.
```py
import pykep as pk
@@ -250,6 +271,61 @@ ActorBuilder.set_orbit(actor=sat_actor,
epoch=pk.epoch(0), central_body=earth)
```
+##### SGP4 / Two-line element (TLE)
+
+For using SGP4 / [Two-line element (TLE)](https://en.wikipedia.org/wiki/Two-line_element_set) you need to specify the TLE of the [SpacecraftActor](#spacecraftactor). In this case, we will use the TLE of the [Sentinel-2A](https://en.wikipedia.org/wiki/Sentinel-2) satellite from [celestrak](https://celestrak.com/).
+
+```py
+from paseos import ActorBuilder, SpacecraftActor
+# Define an actor of type SpacecraftActor
+sat_actor = ActorBuilder.get_actor_scaffold(name="Sentinel-2A",
+ actor_type=SpacecraftActor,
+ epoch=pk.epoch(0))
+
+# Specify your TLE
+line1 = "1 40697U 15028A 23188.15862373 .00000171 00000+0 81941-4 0 9994"
+line2 = "2 40697 98.5695 262.3977 0001349 91.8221 268.3116 14.30817084419867"
+
+# Set the orbit of the actor
+ActorBuilder.set_TLE(sat_actor, line1, line2)
+```
+
+##### Custom Propagators
+
+You can define any kind of function you would like to determine actor positions and velocities. This allows integrating more sophisticated propagators such as [orekit](https://www.orekit.org/). A dedicated example on this topic can be found in the `examples` folder.
+
+In short, you need to define a propagator function that returns the position and velocity of the actor at a given time. The function shall take the current epoch as arguments. You can then set the propagator function with
+
+```py
+import pykep as pk
+from paseos import ActorBuilder, SpacecraftActor
+# Create a SpacecraftActor
+starting_epoch = pk.epoch(42)
+my_sat = ActorBuilder.get_actor_scaffold(
+ name="my_sat", actor_type=SpacecraftActor, epoch=starting_epoch
+)
+
+# Define a custom propagator function that just returns a sinus position
+def my_propagator(epoch: pk.epoch):
+ position,velocity = your_external_propagator(epoch)
+ return position,velocity
+
+# Set the custom propagator
+ActorBuilder.set_custom_orbit(my_sat, my_propagator, starting_epoch)
+```
+
+##### Accessing the orbit
+You can access the orbit of a [SpacecraftActor](#spacecraftactor) with
+
+```py
+# Position, velocity and altitude can be accessed like this
+t0 = pk.epoch("2022-06-16 00:00:00.000") # Define the time (epoch)
+print(sat_actor.get_position(t0))
+print(sat_actor.get_position_velocity(t0))
+print(sat_actor.get_altitude(t0))
+```
+
+
#### How to add a communication device
The following code snippet shows how to add a communication device to a [SpacecraftActors] (#spacecraftactor). A communication device is needed to model the communication between [SpacecraftActors] (#spacecraftactor) or a [SpacecraftActor](#spacecraftactor) and [GroundstationActor](#ground-stationactor). Currently, given the maximum transmission data rate of a communication device, PASEOS calculates the maximum data that can be transmitted by multiplying the transmission data rate by the length of the communication window. The latter is calculated by taking the period for which two actors are in line-of-sight into account.
@@ -313,7 +389,7 @@ The model is only available for a [SpacecraftActor](#spacecraftactor) and (like
The following parameters have to be specified for this:
-- Spacecraft mass [kg], initial temperature [K], emissive area (for heat disspiation) and thermal capacity [J / (kg * K)]
+- Spacecraft mass [kg], initial temperature [K], emissive area (for heat dissipation) and thermal capacity [J / (kg * K)]
- Spacecraft absorptance of Sun light, infrared light. [0 to 1]
- Spacecraft area [m^2] facing Sun and central body, respectively
- Solar irradiance in this orbit [W] (defaults to 1360W)
@@ -329,7 +405,7 @@ my_actor = ActorBuilder.get_actor_scaffold("my_actor", SpacecraftActor, pk.epoch
ActorBuilder.set_thermal_model(
actor=my_actor,
actor_mass=50.0, # Setting mass to 50kg
- actor_initial_temperature_in_K=273.15, # Setting initialtemperature to 0°C
+ actor_initial_temperature_in_K=273.15, # Setting initial temperature to 0°C
actor_sun_absorptance=1.0, # Depending on material, define absorptance
actor_infrared_absorptance=1.0, # Depending on material, define absorptance
actor_sun_facing_area=1.0, # Area in m2
@@ -382,6 +458,127 @@ mask = paseos_instance.model_data_corruption(data_shape=your_data_shape,
exposure_time_in_s=your_time)
```
+#### Custom Modelling
+
+Beyond the default supported physical quantities (power, thermal, etc.) it possible to model any type of parameter by using custom properties. These are defined by a name, an update function and an initial value. The initial value is used to initialize the property. As for the other physical models, you can specify an update rate via the `cfg.sim.dt` [cfg parameter](#using-the-cfg).
+
+Custom properties are automatically logged in the [operations monitor](##monitoring-simulation-status).
+Below is a simple example tracking actor altitude.
+
+```py
+import pykep as pk
+from paseos import ActorBuilder, SpacecraftActor
+
+# Define the local actor as a SpacecraftActor of name mySat and some orbit
+local_actor = ActorBuilder.get_actor_scaffold(
+ name="mySat", actor_type=SpacecraftActor, epoch=pk.epoch(0)
+)
+
+ActorBuilder.set_orbit(
+ actor=local_actor,
+ position=[10000000, 0, 0],
+ velocity=[0, 8000.0, 0],
+ epoch=pk.epoch(0),
+ central_body=pk.planet.jpl_lp("earth"), # use Earth from pykep
+)
+
+
+# Define the update function for the custom property
+# PASEOS will always pass you the actor, the time step and the current power consumption
+# The function shall return the new value of the custom property
+def update_function(actor, dt, power_consumption):
+ return actor.get_altitude() # get current altitude
+
+
+# Add the custom property to the actor, defining name, update fn and initial value
+ActorBuilder.add_custom_property(
+ actor=local_actor,
+ property_name="altitude",
+ update_function=update_function,
+ initial_value=local_actor.get_altitude(),
+)
+
+# One can easily access the property at any point with
+print(local_actor.get_custom_property("altitude"))
+```
+
+#### Custom Central Bodies
+
+In most examples here you will see Earth via the pykep API being used as a spherical, central body for Keplerian orbits. For Keplerian orbits around spherical bodies, you can simply use pykep with an type of [pykep planet](https://esa.github.io/pykep/documentation/planets.html) just as the above examples used Earth. E.g.
+
+```py
+import pykep as pk
+from paseos import ActorBuilder, SpacecraftActor
+# Define an actor of type SpacecraftActor of name mySat
+sat_actor = ActorBuilder.get_actor_scaffold(name="mySat",
+ actor_type=SpacecraftActor,
+ epoch=pk.epoch(0))
+
+# Define the central body as Mars by using pykep APIs.
+mars = pk.planet.jpl_lp("mars")
+
+# Let's set the orbit of sat_actor.
+ActorBuilder.set_orbit(actor=sat_actor,
+ position=[10000000, 1, 1],
+ velocity=[1, 1000.0, 1],
+ epoch=pk.epoch(0),
+ central_body=mars)
+```
+
+However, you can also use any other central body defined via a mesh. This is especially useful in conjunction with [custom propagators](#custom-propagators). To use a custom central body, you need to define a mesh and add it to the simulation configuration. The following example shows how to do this for the comet 67P/Churyumov–Gerasimenko.
+
+We assume `polyhedral_propagator` to be a custom propagator as explained in [Custom Propagators](#custom-propagators).
+
+To correctly compute eclipses, we also need to know the orbit of the custom central body around the Sun. In this case we use the [orbital elements](https://en.wikipedia.org/wiki/Orbital_elements) one [can find online for 67P/Churyumov–Gerasimenko](https://en.wikipedia.org/wiki/67P/Churyumov–Gerasimenko).
+
+```py
+import pykep as pk
+from paseos import ActorBuilder, SpacecraftActor
+
+# Define the epoch and orbital elements
+epoch = pk.epoch(2460000.5, "jd")
+elements = (3.457 * pk.AU, 0.64989, 3.8719 * pk.DEG2RAD, 36.33 * pk.DEG2RAD, 22.15 * pk.DEG2RAD, 73.57 * pk.DEG2RAD)
+
+# Create a planet object from pykep for 67P
+comet = pk.planet.keplerian(epoch, elements, pk.MU_SUN, 666.19868, 2000, 2000, "67P")
+
+# Load the 67P mesh with pickle
+with open(mesh_path, "rb") as f:
+ mesh_points, mesh_triangles = pickle.load(f)
+ mesh_points = np.array(mesh_points)
+ mesh_triangles = np.array(mesh_triangles)
+
+# Define local actor
+my_sat = ActorBuilder.get_actor_scaffold("my_sat", SpacecraftActor, epoch=epoch)
+
+# Set the custom propagator
+ActorBuilder.set_custom_orbit(my_sat, polyhedral_propagator, epoch)
+
+# Set the mesh
+ActorBuilder.set_central_body(my_sat, comet, (mesh_points, mesh_triangles))
+
+# Below computations will now use the mesh instead spherical approximations
+print(my_sat.is_in_eclipse())
+print(my_sat.is_in_line_of_sight(some_other_actor))
+
+# You could even specify a rotation of the central body.
+# Set a rotation period of 1 second around the z axis
+ActorBuilder.set_central_body(
+ my_sat,
+ comet,
+ (mesh_points, mesh_triangles),
+ rotation_declination=90,
+ rotation_right_ascension=0,
+ rotation_period=1,
+)
+
+```
+
+This is particularly useful if you want to use a central body that is not included in pykep or if you want to use a central body that is not a planet (e.g. an asteroid).
+
+N.B. `get_altitude` computes the altitude above [0,0,0] in the central body's frame, thus is not affected by the central body's rotation or mesh.
+N.B. #2 Any custom central body still has to orbit the Sun for PASEOS to function correctly.
+
### Simulation Settings
#### Initializing PASEOS
@@ -394,20 +591,17 @@ We will now show how to create an instance of PASEOS. An instance of PASEOS shal
import pykep as pk
import paseos
from paseos import ActorBuilder, SpacecraftActor
-# Define an actor of type SpacecraftActor of name mySat
-# (that will be the local actor)
+# Define the local actor as a SpacecraftActor of name mySat and its orbit
local_actor = ActorBuilder.get_actor_scaffold(name="mySat",
actor_type=SpacecraftActor,
epoch=pk.epoch(0))
-# Define the central body as Earth by using pykep APIs.
-earth = pk.planet.jpl_lp("earth")
-
-# Let's set the orbit of local_actor.
-ActorBuilder.set_orbit(actor=local_actor,
- position=[10000000, 0, 0],
- velocity=[0, 8000.0, 0],
- epoch=pk.epoch(0),
- central_body=earth)
+ActorBuilder.set_orbit(
+ actor=local_actor,
+ position=[10000000, 0, 0],
+ velocity=[0, 8000.0, 0],
+ epoch=pk.epoch(0),
+ central_body=pk.planet.jpl_lp("earth"), # use Earth from pykep
+)
# initialize PASEOS simulation
sim = paseos.init_sim(local_actor)
@@ -430,23 +624,21 @@ from paseos import ActorBuilder, SpacecraftActor
#please, refer to https://esa.github.io/pykep/documentation/core.html#pykep.epoch
today = pk.epoch_from_string('2022-06-16 00:00:00.000')
-# Define an actor of type SpacecraftActor of name mySat
-# (that will be the local actor)
+# Define the local actor as a SpacecraftActor of name mySat
# pk.epoch is set to today
local_actor = ActorBuilder.get_actor_scaffold(name="mySat",
actor_type=SpacecraftActor,
epoch=today)
-# Define the central body as Earth by using pykep APIs.
-earth = pk.planet.jpl_lp("earth")
-
# Let's set the orbit of local_actor.
# pk.epoch is set to today
-ActorBuilder.set_orbit(actor=local_actor,
- position=[10000000, 0, 0],
- velocity=[0, 8000.0, 0],
- epoch=today,
- central_body=earth)
+ActorBuilder.set_orbit(
+ actor=local_actor,
+ position=[10000000, 0, 0],
+ velocity=[0, 8000.0, 0],
+ epoch=pk.epoch(0),
+ central_body=pk.planet.jpl_lp("earth"), # use Earth from pykep
+)
# Loading cfg to modify defaults
cfg=load_default_cfg()
@@ -488,19 +680,19 @@ Alternatively, you can rely on an event-based mode where PASEOS will simulate th
earth = pk.planet.jpl_lp("earth")
# Define a satellite with some orbit and simple power model
- my_sat = ActorBuilder.get_actor_scaffold("MySat", SpacecraftActor, pk.epoch(0))
- ActorBuilder.set_orbit(sat1, [10000000, 0, 0], [0, 8000.0, 0], pk.epoch(0), earth)
- ActorBuilder.set_power_devices(sat1, 500, 1000, 1)
+ local_actor = ActorBuilder.get_actor_scaffold("MySat", SpacecraftActor, pk.epoch(0))
+ ActorBuilder.set_orbit(local_actor, [10000000, 0, 0], [0, 8000.0, 0], pk.epoch(0), earth)
+ ActorBuilder.set_power_devices(local_actor, 500, 1000, 1)
# Abort when sat is at 10% battery
def constraint_func():
- return sat1.state_of_charge > 0.1
+ return local_actor.state_of_charge > 0.1
# Set some settings to control evaluation of the constraint
cfg = load_default_cfg() # loading cfg to modify defaults
cfg.sim.dt = 0.1 # setting timestep of physical models (power, thermal, ...)
cfg.sim.activity_timestep = 1.0 # how often constraint func is evaluated
- sim = paseos.init_sim(sat1, cfg) # Init simulation
+ sim = paseos.init_sim(local_actor, cfg) # Init simulation
# Advance for a long time, will interrupt much sooner due to constraint function
sim.advance_time(3600, 10, constraint_function=constraint_func)
@@ -529,21 +721,18 @@ import pykep as pk
import paseos
from paseos import ActorBuilder, SpacecraftActor
import asyncio
-# Define an actor of type SpacecraftActor of name mySat
-# (that will be the local actor)
+# Define the local actor as a SpacecraftActor of name mySat and its orbit
local_actor = ActorBuilder.get_actor_scaffold(name="mySat",
actor_type=SpacecraftActor,
epoch=pk.epoch(0))
-# Define the central body as Earth by using pykep APIs.
-earth = pk.planet.jpl_lp("earth")
-
-# Let's set the orbit of sat_actor.
-ActorBuilder.set_orbit(actor=local_actor,
- position=[10000000, 0, 0],
- velocity=[0, 8000.0, 0],
- epoch=pk.epoch(0),
- central_body=earth)
+ActorBuilder.set_orbit(
+ actor=local_actor,
+ position=[10000000, 0, 0],
+ velocity=[0, 8000.0, 0],
+ epoch=pk.epoch(0),
+ central_body=pk.planet.jpl_lp("earth"), # use Earth from pykep
+)
# Add a power device
ActorBuilder.set_power_devices(actor=local_actor,
@@ -594,21 +783,18 @@ import pykep as pk
import paseos
from paseos import ActorBuilder, SpacecraftActor
import asyncio
-# Define an actor of type SpacecraftActor of name mySat
-# (that will be the local actor)
+# Define the local actor as a SpacecraftActor of name mySat and its orbit
local_actor = ActorBuilder.get_actor_scaffold(name="mySat",
actor_type=SpacecraftActor,
epoch=pk.epoch(0))
-# Define the central body as Earth by using pykep APIs.
-earth = pk.planet.jpl_lp("earth")
-
-# Let's set the orbit of sat_actor.
-ActorBuilder.set_orbit(actor=local_actor,
- position=[10000000, 0, 0],
- velocity=[0, 8000.0, 0],
- epoch=pk.epoch(0),
- entral_body=earth)
+ActorBuilder.set_orbit(
+ actor=local_actor,
+ position=[10000000, 0, 0],
+ velocity=[0, 8000.0, 0],
+ epoch=pk.epoch(0),
+ central_body=pk.planet.jpl_lp("earth"), # use Earth from pykep
+)
# Add a power device
ActorBuilder.set_power_devices(actor=local_actor,
@@ -665,21 +851,18 @@ import pykep as pk
import paseos
from paseos import ActorBuilder, SpacecraftActor
import asyncio
-# Define an actor of type SpacecraftActor of name mySat
-# (that will be the local actor)
+# Define the local actor as a SpacecraftActor of name mySat and its orbit
local_actor = ActorBuilder.get_actor_scaffold(name="mySat",
actor_type=SpacecraftActor,
epoch=pk.epoch(0))
-# Define the central body as Earth by using pykep APIs.
-earth = pk.planet.jpl_lp("earth")
-
-# Let's set the orbit of sat_actor.
-ActorBuilder.set_orbit(actor=local_actor,
- position=[10000000, 0, 0],
- velocity=[0, 8000.0, 0],
- epoch=pk.epoch(0),
- central_body=earth)
+ActorBuilder.set_orbit(
+ actor=local_actor,
+ position=[10000000, 0, 0],
+ velocity=[0, 8000.0, 0],
+ epoch=pk.epoch(0),
+ central_body=pk.planet.jpl_lp("earth"), # use Earth from pykep
+)
# Add a power device
ActorBuilder.set_power_devices(actor=local_actor,
@@ -734,21 +917,18 @@ import pykep as pk
import paseos
from paseos import ActorBuilder, SpacecraftActor
import asyncio
-# Define an actor of type SpacecraftActor of name mySat
-# (that will be the local actor)
+# Define the local actor as a SpacecraftActor of name mySat and its orbit
local_actor = ActorBuilder.get_actor_scaffold(name="mySat",
actor_type=SpacecraftActor,
epoch=pk.epoch(0))
-# Define the central body as Earth by using pykep APIs.
-earth = pk.planet.jpl_lp("earth")
-
-# Let's set the orbit of sat_actor.
-ActorBuilder.set_orbit(actor=local_actor,
- position=[10000000, 0, 0],
- velocity=[0, 8000.0, 0],
- epoch=pk.epoch(0),
- central_body=earth)
+ActorBuilder.set_orbit(
+ actor=local_actor,
+ position=[10000000, 0, 0],
+ velocity=[0, 8000.0, 0],
+ epoch=pk.epoch(0),
+ central_body=pk.planet.jpl_lp("earth"), # use Earth from pykep
+)
# Add a power device
ActorBuilder.set_power_devices(actor=local_actor,
@@ -823,7 +1003,7 @@ state_of_charge = instance.monitor["state_of_charge"]
#### Writing Simulation Results to a File
-To evaluate your results, you will likely want to track the operational parameters, such as actor battery status, currently running activitiy etc. of actors over the course of your simulation. By default, PASEOS will log the current actor status every 10 seconds, however you can change that rate by editing the default configuration, as explained in [How to use the cfg](#how-to-use-the-cfg). You can save the current log to a \*.csv file at any point.
+To evaluate your results, you will likely want to track the operational parameters, such as actor battery status, currently running activity etc. of actors over the course of your simulation. By default, PASEOS will log the current actor status every 10 seconds, however you can change that rate by editing the default configuration, as explained in [How to use the cfg](#how-to-use-the-cfg). You can save the current log to a \*.csv file at any point.
```py
cfg = load_default_cfg() # loading cfg to modify defaults
@@ -835,10 +1015,98 @@ paseos_instance = paseos.init_sim(my_local_actor, cfg) # initialize paseos insta
paseos_instance.save_status_log_csv("output.csv")
```
+### Wrapping Other Software and Tools
+
+PASEOS is designed to allow easily wrapping other software and tools to, e.g., use more sophisticated models for specific aspects of interest to the user. There are three ways to do this:
+
+* [Via Activities](#via-activities) - An [activity](#simple-activity) using an external software is registered and executed as any other [activity](#activity), e.g. to perform some computations while tracking runtime of that operation.
+* [Via Constraint Functions](#via-constraint-functions) - A [constraint function](#constraint-function) using an external software. This is useful to use a more sophisticated model to check whether, e.g., a physical constraint modelled outside of PASEOS is met.
+* [Via Custom Properties](#via-custom-properties) - A [custom property](#custom-property) using an external software. This is useful to, e.g., use a more sophisticated model for a physical quantity such as total ionization dose or current channel bandwidth.
+
+#### Via Activities
+
+The wrapping via activities is quite straight forward. Follow the [instructions on registering and performing activities](#simple-activity) and make use of your external software inside the activity function.
+
+```py
+import my_external_software
+#Activity function
+async def activity_function_A(args):
+ my_external_software.complex_task_to_model()
+ await asyncio.sleep(0.01)
+```
+
+#### Via Constraint Functions
+
+Inside constraint functions, external software can be used to check whether a constraint is met or not. This works both for [activity constraints](#constraint-function) and for [constraints in event-based mode](#event-based-mode).
+
+
+The constraint function should return `True` if the constraint is met and `False` otherwise.
+
+```py
+import pykep as pk
+from paseos import ActorBuilder, SpacecraftActor
+
+import my_complex_radiation_model
+
+# Defining a local actor
+local_actor = ActorBuilder.get_actor_scaffold("MySat", SpacecraftActor, pk.epoch(0))
+
+def constraint_func():
+ t = local_actor.local_time
+ device_has_failed = my_complex_radiation_model.check_for_device_failure(t)
+ return not device_has_failed
+
+# Can be passed either with event-based mode, will run until constraint is not met
+sim.advance_time(3600, 10, constraint_function=constraint_func)
+
+# (...)
+
+# or via activity constraints, will run until constraint is not met
+# N.B: this is an excerpt follow the #constraint-function link for more details
+sim.register_activity(
+ "activity_A_with_constraint_function",
+ activity_function=activity_function_A,
+ power_consumption_in_watt=10,
+ constraint_function=constraint_func
+)
+```
+
+#### Via Custom Properties
+
+Finally, [custom properties](#custom-modelling) can be used to wrap external software. This is useful to use a more sophisticated model for a physical quantity, e.g. one could use a simulator like [ns-3](https://www.nsnam.org/) to model the current channel bandwidth.
+
+For more details see [custom properties](#custom-modelling).
+
+```py
+import my_channel_model
+
+# Will be automatically called during PASEOS simulation
+def update_function(actor, dt, power_consumption):
+ # Get the current channel bandwidth from the external model
+ channel_bandwidth = my_channel_model.get_channel_bandwidth(actor)
+ return channel_bandwidth
+
+# Add the custom property to the actor, defining name, update fn and initial value
+ActorBuilder.add_custom_property(
+ actor=local_actor,
+ property_name="channel_bandwidth",
+ update_function=update_function,
+ initial_value=1000,
+)
+
+# (... run simulation)
+
+# One can easily access the property at any point with
+print(local_actor.get_custom_property("channel_bandwidth"))
+
+```
+
+
## Glossary
@@ -859,6 +1127,10 @@ paseos_instance.save_status_log_csv("output.csv")
A constraint function is an asynchronous function that can be used by the PASEOS user to specify some constraints that shall be met during the execution of an activity.
+- ### Custom Property
+
+ Users can define their own physical quantity to track parameters not natively simulated by PASEOS. This is described in detail [above](#custom-modelling) and in a dedicated example notebook on modelling total ionizing dose.
+
- ### GroundstationActor
`PASEOS actor` emulating a ground station.
@@ -878,6 +1150,34 @@ paseos_instance.save_status_log_csv("output.csv")
- ### SpacecraftActor
PASEOS [actor](#actor) emulating a spacecraft or a satellite.
+### Physical Model Parameters
+
+Description of the physical model parameters and default values in PASEOS with indications on sensitivity of parameters and suggested ranges.
+
+| Name | Datatype | Description | Default | Suggested Range | Sensitivity |
+| :-------------------------------: | :------: | :-------------------------------------------------------------------------: | :--------: | :-------------: | :---------: |
+| Battery Level [Ws] | float | Current battery level | - | > 0 | high |
+| Maximum Battery Level [Ws] | float | Maximum battery level | - | > 0 | high |
+| Charging Rate [W] | float | Charging rate of the battery | - | > 0 | high |
+| Power Device Type | enum | Type of power device. Can be either "SolarPanel" or "RTG" | SolarPanel | - | medium |
+| Data Corruption Events [Hz] | float | Rate of single bit of data being corrupted, i.e. a Single Event Upset (SEU) | - | >= 0 | low |
+| Restart Events [Hz] | float | Rate of device restart being triggered | - | >= 0 | medium |
+| Failure Events [Hz] | float | Rate of complete device failure due to a Single Event Latch-Up (SEL) | - | >= 0 | high |
+| Mass [kg] | float | Actor's mass | - | > 0 | low |
+| Initial Temperature [K] | float | Actor's initial temperature | - | >= 0 | medium |
+| Sun Absorptance | float | Actor's absorptance of solar light | - | [0,1] | high |
+| Infrared Absorptance | float | Actor's absportance of infrared light | - | [0,1] | medium |
+| Sun-Facing Area [$m^2$] | float | Actor's area facing the sun | - | >= 0 | high |
+| Central Body-Facing Area [$m^2$] | float | Actor's area facing central body | - | >= 0 | medium |
+| Emissive Area [$m^2$] | float | Actor's area emitting (radiating) heat | - | >= 0 | high |
+| Thermal Capacity [$J / (kg * K)$] | float | Actor's thermal capacity | - | >= 0 | low |
+| Body Solar Irradiance [W] | float | Irradiance from the sun | 1360 | >= 0 | medium |
+| Body Surface Temperature [K] | float | Central body surface temperature | 288 | >= 0 | low |
+| Body Emissivity | float | Central body emissivity in infrared | 0.6 | [0,1] | medium |
+| Body Reflectance | float | Central body reflectance of sunlight | 0.3 | [0,1] | medium |
+| Heat Conversion Ratio [-] | float | Conversion ratio for activities, 0 leads to know heat-up due to activity | 0.5 | [0,1] | high |
+
+
## Contributing
The `PASEOS` project is open to contributions. To contribute, you can open an [issue](https://github.com/gomezzz/MSMatch/issues) to report a bug or to request a new feature. If you prefer discussing new ideas and applications, you can contact us via email (please, refer to [Contact](#contact)).
@@ -898,7 +1198,7 @@ Distributed under the GPL-3.0 License.
Created by $\Phi$[-lab@Sweden](https://www.ai.se/en/data-factory/f-lab-sweden).
- Pablo Gómez - pablo.gomez at esa.int, pablo.gomez at ai.se
-- Gabriele Meoni - gabriele.meoni at esa.int, gabriele.meoni at ai.se
+- Gabriele Meoni - gabriele.meoni at esa.int, g.meoni at tudelft.nl
- Johan Östman - johan.ostman at ai.se
- Vinutha Magal Shreenath - vinutha at ai.se
diff --git a/environment.yml b/environment.yml
index fcdd166c..4a6c4891 100644
--- a/environment.yml
+++ b/environment.yml
@@ -8,6 +8,7 @@ dependencies:
- numpy==1.23.5 # core non-optional depedency
- myst-parser # for markdown math in docs
- pykep>=2.6 # core non-optional dependency
+ - pyquaternion>=0.9.9 # core non-optional dependency
- pytest # for tests
- pytest-asyncio # for tests involving activities
- python>=3.8 # core non-optional dependency
diff --git a/examples/Constellation_example/constellation_example_utils.py b/examples/Constellation_example/constellation_example_utils.py
index a75d86b2..1fb578f6 100644
--- a/examples/Constellation_example/constellation_example_utils.py
+++ b/examples/Constellation_example/constellation_example_utils.py
@@ -18,7 +18,6 @@ def get_closest_entry(df, t, id):
def get_analysis_df(df, timestep=60, orbital_period=1):
-
t = np.round(np.linspace(0, df.Time.max(), int(df.Time.max() // timestep)))
sats = df.ID.unique()
df["known_actors"] = pd.Categorical(df.known_actors)
diff --git a/examples/Learning_example/simple_neural_network.py b/examples/Learning_example/simple_neural_network.py
index 5cb7f301..41e867d7 100644
--- a/examples/Learning_example/simple_neural_network.py
+++ b/examples/Learning_example/simple_neural_network.py
@@ -57,9 +57,7 @@ def __len__(self):
# Instantiate training and test data
X, y = make_circles(n_samples=10000, noise=0.05, random_state=26)
- X_train, X_test, y_train, y_test = train_test_split(
- X, y, test_size=0.33, random_state=26
- )
+ X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=26)
# divide the training set so none of the peers have the same data
if self.node_id == 1:
@@ -75,12 +73,8 @@ def __len__(self):
# Create dataloaders
train_data = Data(X_train, y_train)
test_data = Data(X_test, y_test)
- self.train_dataloader = DataLoader(
- dataset=train_data, batch_size=64, shuffle=True
- )
- self.test_dataloader = DataLoader(
- dataset=test_data, batch_size=64, shuffle=True
- )
+ self.train_dataloader = DataLoader(dataset=train_data, batch_size=64, shuffle=True)
+ self.test_dataloader = DataLoader(dataset=test_data, batch_size=64, shuffle=True)
def forward(self, x):
"""Do inference on model
diff --git a/examples/Learning_example/simple_node.py b/examples/Learning_example/simple_node.py
index 33eb70a7..8269601a 100644
--- a/examples/Learning_example/simple_node.py
+++ b/examples/Learning_example/simple_node.py
@@ -13,13 +13,10 @@ class Node:
"""
def __init__(self, node_id, pos_and_vel, paseos_cfg, power_consumption_in_watt):
-
# Create PASEOS instance to node
earth = pk.planet.jpl_lp("earth")
self.node_id = node_id
- sat = ActorBuilder.get_actor_scaffold(
- f"sat{node_id}", SpacecraftActor, pk.epoch(0)
- )
+ sat = ActorBuilder.get_actor_scaffold(f"sat{node_id}", SpacecraftActor, pk.epoch(0))
ActorBuilder.set_orbit(sat, pos_and_vel[0], pos_and_vel[1], pk.epoch(0), earth)
ActorBuilder.set_power_devices(
actor=sat,
@@ -37,8 +34,7 @@ def __init__(self, node_id, pos_and_vel, paseos_cfg, power_consumption_in_watt):
transmit_bits = self.model_size()
self.transmit_duration = transmit_bits / (
- 1000
- * self.paseos.local_actor.communication_devices["link"].bandwidth_in_kbps
+ 1000 * self.paseos.local_actor.communication_devices["link"].bandwidth_in_kbps
)
self.current_activity = "train"
@@ -70,9 +66,7 @@ def model_size(self):
# Return model parameters as a list of NumPy ndarrays
bytestream = b"" # Empty byte represenation
for _, val in self.model.state_dict().items(): # go over each layer
- bytestream += (
- val.cpu().numpy().tobytes()
- ) # convert layer to bytes and concatenate
+ bytestream += val.cpu().numpy().tobytes() # convert layer to bytes and concatenate
return len(bytestream) * 8
def local_time(self):
@@ -112,9 +106,7 @@ def transmission_is_feasible(self, target_node):
target_actor = target_node.paseos.local_actor
local_actor = self.paseos.local_actor
- transmit_end = pk.epoch(
- self.local_time().mjd2000 + self.transmit_duration * pk.SEC2DAY
- )
+ transmit_end = pk.epoch(self.local_time().mjd2000 + self.transmit_duration * pk.SEC2DAY)
los_end = local_actor.is_in_line_of_sight(target_actor, transmit_end)
return los_end
diff --git a/examples/MPI_example/mpi_example.py b/examples/MPI_example/mpi_example.py
index 1370c35e..a9f6ad4d 100644
--- a/examples/MPI_example/mpi_example.py
+++ b/examples/MPI_example/mpi_example.py
@@ -26,9 +26,7 @@
try:
from mpi4py import MPI
except:
- print(
- "This example requires mpi4py. Please install with conda install mpi4py -c conda-forge"
- )
+ print("This example requires mpi4py. Please install with conda install mpi4py -c conda-forge")
import pykep as pk
import paseos
@@ -44,9 +42,7 @@
# Now we will initialize MPI, for more details please refer to the mpi4py docs.
# In MPI "rank" indicates the index of the compute node (so 0-3 in our example).
comm = MPI.COMM_WORLD
-assert (
- comm.Get_size() == 4
-), "Please run the example with mpiexec -n 4 python mpi_example.py"
+assert comm.Get_size() == 4, "Please run the example with mpiexec -n 4 python mpi_example.py"
rank = comm.Get_rank()
other_ranks = [x for x in range(4) if x != rank]
print(f"Started rank {rank}, other ranks are {other_ranks}")
@@ -65,9 +61,7 @@
planet_list, sats_pos_and_v, _ = get_constellation(
altitude, inclination, nSats, nPlanes, t0, verbose=False
)
-print(
- f"Rank {rank} set up its orbit with altitude={altitude}m and inclination={inclination}deg"
-)
+print(f"Rank {rank} set up its orbit with altitude={altitude}m and inclination={inclination}deg")
############ PASEOS INIT #############
# We will now initialize the PASEOS instance on each rank
@@ -78,9 +72,7 @@
local_actor = ActorBuilder.get_actor_scaffold(
name="Sat_" + str(rank), actor_type=SpacecraftActor, epoch=t0
)
-ActorBuilder.set_orbit(
- actor=local_actor, position=pos, velocity=v, epoch=t0, central_body=earth
-)
+ActorBuilder.set_orbit(actor=local_actor, position=pos, velocity=v, epoch=t0, central_body=earth)
paseos_instance = paseos.init_sim(local_actor=local_actor)
print(f"Rank {rank} set up its PASEOS instance for its local actor {local_actor}")
@@ -97,6 +89,7 @@
# Let's define the variable to track the actors we see
total_seen_actors = 0
+
# We will (ab)use PASEOS constraint function to track all the actors
# we see in an evaluation window (see timestep below).
# Turn on SHOW_ALL_WINDOWS if you want to see each window
@@ -135,7 +128,6 @@ def constraint_func(verbose=SHOW_ALL_WINDOWS):
# Run until end of simulation
while t <= simulation_time:
-
# Advance the simulation state of this rank
# Note how we pass the "constraint_func" to tell paseos
# to track windows
@@ -147,9 +139,7 @@ def constraint_func(verbose=SHOW_ALL_WINDOWS):
sys.stdout.flush() # update prints to better see parallelism
# Exchange actors between all ranks
- exchange_actors(
- comm, paseos_instance, local_actor, other_ranks, rank, verbose=SHOW_ALL_COMMS
- )
+ exchange_actors(comm, paseos_instance, local_actor, other_ranks, rank, verbose=SHOW_ALL_COMMS)
# Wait until all ranks finished
print(f"Rank {rank} finished the simulation. Waiting for all to finish.")
diff --git a/examples/MPI_example/mpi_utility_func.py b/examples/MPI_example/mpi_utility_func.py
index 71c67fed..4952af79 100644
--- a/examples/MPI_example/mpi_utility_func.py
+++ b/examples/MPI_example/mpi_utility_func.py
@@ -48,9 +48,7 @@ def _parse_actor_data(actor_data):
return actor
-def exchange_actors(
- comm, paseos_instance, local_actor, other_ranks, rank, verbose=False
-):
+def exchange_actors(comm, paseos_instance, local_actor, other_ranks, rank, verbose=False):
"""This function exchanges the states of various actors among all MPI ranks.
Args:
@@ -69,9 +67,7 @@ def exchange_actors(
# Send local actor to other ranks
for i in other_ranks:
actor_data = _encode_actor(local_actor)
- send_requests.append(
- comm.isend(actor_data, dest=i, tag=int(str(rank) + str(i)))
- )
+ send_requests.append(comm.isend(actor_data, dest=i, tag=int(str(rank) + str(i))))
# Receive from other ranks
for i in other_ranks:
diff --git a/examples/Orekit_example/orekit_integration.ipynb b/examples/Orekit_example/orekit_integration.ipynb
new file mode 100644
index 00000000..631e1ae0
--- /dev/null
+++ b/examples/Orekit_example/orekit_integration.ipynb
@@ -0,0 +1,256 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# PASEOS Orekit integration example\n",
+ "\n",
+ "This example requires an [orekit installation](https://gitlab.orekit.org/orekit-labs/python-wrapper/-/wikis/installation) via conda. (Note that orekit requires Java)\n",
+ "\n",
+ "It showcases how to adapt an example from the [orekit documentation](https://gitlab.orekit.org/orekit-labs/python-wrapper/-/blob/master/examples/Example_numerical_prop.ipynb ) to utilize orekit for position and velocity calculations inside PASEOS.\n",
+ "\n",
+ "Additionally, you will need to place the orekit [data](https://gitlab.orekit.org/orekit/orekit-data) as `orekit-data.zip` in the same folder as this notebook. (N.B. don't decompress the zip file)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "%load_ext autoreload\n",
+ "%autoreload 2\n",
+ "import sys\n",
+ "\n",
+ "sys.path.append(\"..\")\n",
+ "sys.path.append(\"../..\")\n",
+ "\n",
+ "import paseos\n",
+ "from paseos import ActorBuilder, SpacecraftActor\n",
+ "\n",
+ "import pykep as pk\n",
+ "import matplotlib.pyplot as plt\n",
+ "\n",
+ "import orekit\n",
+ "\n",
+ "from orekit.pyhelpers import setup_orekit_curdir\n",
+ "from orekit_propagator import OrekitPropagator\n",
+ "from org.orekit.time import AbsoluteDate, TimeScalesFactory\n",
+ "from orekit.pyhelpers import absolutedate_to_datetime\n",
+ "\n",
+ "\n",
+ "# Initialize the orekit virtual machine and set the current directory\n",
+ "vm = orekit.initVM()\n",
+ "setup_orekit_curdir()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Initialize the propagator"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Set a start date\n",
+ "utc = TimeScalesFactory.getUTC()\n",
+ "epoch = AbsoluteDate(2020, 1, 1, 0, 0, 00.000, utc)\n",
+ "\n",
+ "# Let's define some orbit and a satellite mass of 1000 kg\n",
+ "# We use an orbit with a semi-major axis of 10000 km, a eccentricity of 0.75 and an inclination of 1e-4°\n",
+ "orbital_elements = [10000000.0, 0.75, 0.0001, 0.0, 0.0, 0.0]\n",
+ "satellite_mass = 1000.0\n",
+ "\n",
+ "# Initialize the propagator\n",
+ "propagator = OrekitPropagator(orbital_elements, epoch, satellite_mass)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Check the orbit propagation"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAA90AAAHqCAYAAAAZLi26AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/av/WaAAAACXBIWXMAAA9hAAAPYQGoP6dpAADMUklEQVR4nOzdd3hTZRsG8DtJ23TvTSdllQ1lWJYgZW8QBSpb0E8QAQXFgbhAcLIEURkquFiiQKFskMreUGahpaV7pDNNk/P9kSZQW6BA05Ok9++6ctme8yZ5UmqT57zv+zwSQRAEEBEREREREVGVk4odABEREREREZG5YtJNREREREREZCBMuomIiIiIiIgMhEk3ERERERERkYEw6SYiIiIiIiIyECbdRERERERERAbCpJuIiIiIiIjIQJh0ExERERERERkIk24iIiIiIiIiA2HSTURERERUAYlEgjlz5hjksW/evAmJRILVq1cb5PHNxZw5cyCRSKrt+Qz5b041F5NuIiIiIjJp/fv3h62tLXJzc+87JjIyElZWVsjIyKjGyB7Ntm3bmPBVwty5c7F582axwyCqNCbdRERERGTSIiMjUVhYiE2bNlV4vqCgAH/++Sd69uwJNze3ao6uYoGBgSgsLMTIkSP1x7Zt24YPPvhAxKiMz7vvvovCwsIyx5h0k6lh0k1EREREJq1///5wcHDAunXrKjz/559/Ij8/H5GRkdUc2f1JJBJYW1tDJpOJHYpRs7CwgLW1tdhhED0RJt1EREREZNJsbGwwePBg7N69G6mpqeXOr1u3Dg4ODujfvz8AIDs7G1OnToW/vz/kcjnq1KmD+fPnQ6PRPPS5Tp06hV69esHR0RH29vbo2rUr/v3333LjsrOzMW3aNAQFBUEul8PPzw+jRo1Ceno6gPJ7useMGYOlS5cC0CbkupsgCAgKCsKAAQPKPUdRURGcnJzw0ksvPTBmiUSCyZMn448//kDDhg1hY2OD8PBwnDt3DgDw7bffok6dOrC2tkbnzp1x8+bNMvc/ePAghg4dioCAAMjlcvj7+2PatGnlZqAB6J/D2toajRs3xqZNmzBmzBgEBQXpx+he++eff44VK1YgJCQEcrkcrVu3xrFjx8o83n/3dEskEuTn52PNmjX6n9GYMWP0P8N7n+d+jwEASqUS06ZNg4eHh/534/bt2xX+/BITEzFu3Dh4eXlBLpejUaNGWLly5f1+3ETlWIgdABERERHRk4qMjMSaNWvw+++/Y/LkyfrjmZmZ2LFjB4YPHw4bGxsUFBTg6aefRmJiIl566SUEBATg8OHDmDVrFu7cuYOvv/76vs9x4cIFdOzYEY6Ojpg5cyYsLS3x7bffonPnzti/fz/atm0LAMjLy0PHjh1x6dIljBs3Di1btkR6ejq2bNmC27dvw93dvdxjv/TSS0hKSkJ0dDR++ukn/XGJRIIXXngBCxYsQGZmJlxdXfXn/vrrLygUCrzwwgsP/fkcPHgQW7ZswaRJkwAA8+bNQ9++fTFz5kx88803eOWVV5CVlYUFCxZg3Lhx2LNnj/6+f/zxBwoKCvC///0Pbm5uOHr0KBYvXozbt2/jjz/+0I/bunUrnn/+eTRp0gTz5s1DVlYWxo8fj1q1alUY07p165Cbm4uXXnoJEokECxYswODBg3Hjxg1YWlpWeJ+ffvoJL774Itq0aYOJEycCAEJCQh76+v/rxRdfxM8//4wRI0agXbt22LNnD/r06VNuXEpKCp566in9hQsPDw9s374d48ePh0KhwNSpUx/5uakGEoiIiIiITFxJSYng4+MjhIeHlzm+fPlyAYCwY8cOQRAE4aOPPhLs7OyEK1eulBn31ltvCTKZTIiPj9cfAyC8//77+u8HDhwoWFlZCdevX9cfS0pKEhwcHIROnTrpj82ePVsAIGzcuLFcnBqNRhAEQYiLixMACKtWrdKfmzRpklDRx/PLly8LAIRly5aVOd6/f38hKChI/5j3A0CQy+VCXFyc/ti3334rABC8vb0FhUKhPz5r1iwBQJmxBQUF5R5z3rx5gkQiEW7duqU/1qRJE8HPz0/Izc3VH9u3b58AQAgMDNQf0712Nzc3ITMzU3/8zz//FAAIf/31l/7Y+++/X+5nYmdnJ4wePbpcTKNHjy7zPPd7jNOnTwsAhFdeeaXMuBEjRpT7Nx8/frzg4+MjpKenlxk7bNgwwcnJqcKfDdF/cXk5EREREZk8mUyGYcOGISYmpszy6HXr1sHLywtdu3YFoJ217dixI1xcXJCenq6/RUREQK1W48CBAxU+vlqtxs6dOzFw4EDUrl1bf9zHxwcjRozAoUOHoFAoAAAbNmxAs2bNMGjQoHKP8zjtr+rVq4e2bdti7dq1+mOZmZnYvn07IiMjK/WYXbt2LbP0WjcrP2TIEDg4OJQ7fuPGDf0xGxsb/df5+flIT09Hu3btIAgCTp06BQBISkrCuXPnMGrUKNjb2+vHP/3002jSpEmFMT3//PNwcXHRf9+xY8dyz20I27ZtAwBMmTKlzPH/zloLgoANGzagX79+EAShzO9Ljx49kJOTg5MnTxo0VjIPTLqJiIiIyCzoCqXpCqrdvn0bBw8exLBhw/QFy65evYqoqCh4eHiUuUVERABAhXvCASAtLQ0FBQWoX79+uXOhoaHQaDRISEgAAFy/fh2NGzeu0tc2atQo/PPPP7h16xYA7cUDlUpVpvr5gwQEBJT53snJCQDg7+9f4fGsrCz9sfj4eIwZMwaurq6wt7eHh4cHnn76aQBATk4OAOjjqlOnTrnnruhYRTHpEvB7n9sQbt26BalUWm5Z+n//bdPS0pCdnY0VK1aU+30ZO3YsgPv/vhDdi3u6iYiIiMgshIWFoUGDBvjll1/w9ttv45dffoEgCGWqlms0GnTr1g0zZ86s8DHq1atXXeE+kmHDhmHatGlYu3Yt3n77bfz8889o1apVhRcBKnK/Kun3Oy4IAgDtDH+3bt2QmZmJN998Ew0aNICdnR0SExMxZsyYShWfe9SYdM/9qO43469Wqx/r8XSv7YUXXsDo0aMrHNO0adPHemyqWZh0ExEREZHZiIyMxHvvvYezZ89i3bp1qFu3Llq3bq0/HxISgry8PP3MdmV5eHjA1tYWly9fLncuNjYWUqlUP2scEhKC8+fPP3LsD1om7urqij59+mDt2rWIjIzEP//888Cib1Xl3LlzuHLlCtasWYNRo0bpj0dHR5cZFxgYCAC4du1auceo6NiTuN/PycXFBdnZ2eWO62bhdQIDA6HRaHD9+vUyFy3++2+rq2yuVqsf+feF6F5cXk5EREREZkM3qz179mycPn26XG/u5557DjExMdixY0e5+2ZnZ6OkpKTCx5XJZOjevTv+/PPPMnvGU1JSsG7dOnTo0AGOjo4AtPukz5w5g02bNpV7nAfN4trZ2enjqMjIkSNx8eJFzJgxQ7+H3dB0s9H3xi0IAhYuXFhmnK+vLxo3bowff/wReXl5+uP79+/XtyarKnZ2dhX+jEJCQpCTk4OzZ8/qj925c6fcv0OvXr0AAIsWLSpz/L8XMWQyGYYMGYINGzZUeBElLS3tMV8B1TSc6SYiIiIisxEcHIx27drhzz//BIBySfeMGTOwZcsW9O3bF2PGjEFYWBjy8/Nx7tw5rF+/Hjdv3qywpRcAfPzxx4iOjkaHDh3wyiuvwMLCAt9++y2USiUWLFhQ5jnWr1+PoUOHYty4cQgLC0NmZia2bNmC5cuXo1mzZhU+flhYGABtga8ePXqUS6z79OkDNzc3/PHHH+jVqxc8PT2f6GdVGQ0aNEBISAjeeOMNJCYmwtHRERs2bKhw3/XcuXMxYMAAtG/fHmPHjkVWVhaWLFmCxo0bl0nEn1RYWBh27dqFL7/8Er6+vggODkbbtm0xbNgwvPnmmxg0aBCmTJmCgoICLFu2DPXq1StT8Kx58+YYPnw4vvnmG+Tk5KBdu3bYvXt3hTPyn376Kfbu3Yu2bdtiwoQJaNiwITIzM3Hy5Ens2rULmZmZVfa6yHxxppuIiIiIzIou0W7Tpk25Il62trbYv38/ZsyYgX379uG1117Dp59+iqtXr+KDDz7QFxKrSKNGjXDw4EE0btwY8+bNwwcffIDAwEB9UqZjb2+PgwcP4n//+x+2bduGKVOm4JtvvkH9+vXh5+d338cfPHgwXn31VURFRWHkyJEYPnx4mfNWVlZ4/vnnAaDSBdSelKWlJf766y80b95c/5rr1q2LH3/8sdzYfv364ZdffkFxcTHeeustbNy4EatXr0b9+vVhbW1dZTF9+eWXCAsLw7vvvovhw4dj2bJlAAA3Nzds2rQJtra2mDlzJtasWYN58+ahX79+5R5j5cqVmDJlCqKiojBz5kyoVCps3bq13DgvLy8cPXoUY8eOxcaNGzF58mQsXLgQmZmZmD9/fpW9JjJvEuFxKxUQEREREVG1mjZtGn744QckJyfD1tZW7HAqpXnz5vDw8Ci3D5yopuBMNxERERGRCSgqKsLPP/+MIUOGGGXCrVKpyu2J37dvH86cOYPOnTuLExSREeCebiIiIiIiI5aamopdu3Zh/fr1yMjIwGuvvSZ2SBVKTExEREQEXnjhBfj6+iI2NhbLly+Ht7c3Xn75ZbHDIxINk24iIiIiIiN28eJFREZGwtPTE4sWLULz5s3FDqlCLi4uCAsLw/fff4+0tDTY2dmhT58++PTTT+Hm5iZ2eESi4Z5uIiIiIiIiIgPhnm4iIiIiIiIiA2HSTURERERERGQg3NNNREREJk2j0SApKQkODg6QSCRih0NERDWEIAjIzc2Fr68vpNL7z2cz6SYiIiKTlpSUBH9/f7HDICKiGiohIQF+fn73Pc+km4iIiEyag4MDAO2HHkdHR5GjISKimkKhUMDf31//PnQ/TLqJiIjIpOmWlDs6OjLpJiKiavewrU0spEZERERERERkIEy6iYiIiIiIiAyESTcRERERERGRgTDpJiIiIiIiIjIQJt1EREREREREBsKkm4iIiIiIiMhAmHQTERERERERGQiTbiIiIiIiIiIDYdJNREREREREZCBMuomIiIiIiIgMhEk3ERERERERkYEw6SYiIiIiIiIyECbdRERERERERAbCpJuIiIiIiIjIQCzEDoCIiIjIGGTmF+PErSxYWUjxdD0PscMhIiIzwZluIiIiIgC7LqZgwo/HsXzfdbFDISIiM8Kkm4iIiAhAQ19HAMCFpBwIgiByNEREZC6YdBMREREBqOflAEuZBIqiEtzOKhQ7HCIiMhNMuomIiIgAWFlIUc/LAYB2tpuIiKgqMOkmIiIiKtXY1wkAcD5RIXIkRET0OL47cAMf/30RJWqN2KHosXo5ERERUanGtRzx23HgPGe6iYhMTpFKjXnbL0EjAPbWFpgaUU/skABwppuIiIhIr2HpTPeFJM50ExGZmuScImhK62Au2n0Vx25mihtQKSbdRERERKVCfRwglQBpuUqkKorEDoeIiB5BUvbdIpgaAZj662nkFKpEjEiLSTcRERFRKVsrC9T2sAfA2W4iIlOTWJp0twxwRqCbLRKzC/H2pnOit4Fk0k1ERER0j8al/brPJ3JfNxGRKUnK1q5QquflgIXDWsBCKsHWs3fwx4nbosbFpJuIiIjoHo1rcV83EZEp0i0v93W2QXN/Z0zvri2k9nX0FTHDYtJNREREdK+GupluVjAnIjIpSTl3k24AeL6Vf+nxIhSXiNdCjEk3ERER0T0alVYwv51ViOyCYpGjISKiykrUz3RbAwBc7axgKZMAANLylKLFxaSbiIiI6B5ONpbwd9XOklzkEnMiIpMgCIJ+eXmt0pluiUQCTwdtAp6cI15HCibdRERENdCBAwfQr18/+Pr6QiKRYPPmzeXGXLp0Cf3794eTkxPs7OzQunVrxMfH688XFRVh0qRJcHNzg729PYYMGYKUlJQyjxEfH48+ffrA1tYWnp6emDFjBkpKSsqM2bdvH1q2bAm5XI46depg9erVhnjJj6Rx6Ww3l5gTEZmGrAIVilTaJeTeTtb647qvxWwDyaSbiIioBsrPz0ezZs2wdOnSCs9fv34dHTp0QIMGDbBv3z6cPXsW7733Hqyt736QmTZtGv766y/88ccf2L9/P5KSkjB48GD9ebVajT59+qC4uBiHDx/GmjVrsHr1asyePVs/Ji4uDn369EGXLl1w+vRpTJ06FS+++CJ27NhhuBdfCSymRkRkWhKztLPcHg5yyC1k+uNejnIAQIqISbeFaM9MREREounVqxd69ep13/PvvPMOevfujQULFuiPhYSE6L/OycnBDz/8gHXr1uGZZ54BAKxatQqhoaH4999/8dRTT2Hnzp24ePEidu3aBS8vLzRv3hwfffQR3nzzTcyZMwdWVlZYvnw5goOD8cUXXwAAQkNDcejQIXz11Vfo0aOHgV79wzVk2zAiIpOSmF22iJqOfnm5gnu6iYiIyEhoNBps3boV9erVQ48ePeDp6Ym2bduWWYJ+4sQJqFQqRERE6I81aNAAAQEBiImJAQDExMSgSZMm8PLy0o/p0aMHFAoFLly4oB9z72PoxugeQyy65eU30vNRUFzykNFERCQ23X5uv/8k3VxeTkREREYnNTUVeXl5+PTTT9GzZ0/s3LkTgwYNwuDBg7F//34AQHJyMqysrODs7Fzmvl5eXkhOTtaPuTfh1p3XnXvQGIVCgcLCwgrjUyqVUCgUZW5VzcNBDk8HOQQBuHSHS8yJiIxd0n8ql+vol5fnMukmIiIiI6HRaAvRDBgwANOmTUPz5s3x1ltvoW/fvli+fLnI0QHz5s2Dk5OT/ubv72+Q59Ht6z6fyKSbiMjY/bdHt44Xq5cTERGRsXF3d4eFhQUaNmxY5nhoaKi+erm3tzeKi4uRnZ1dZkxKSgq8vb31Y/5bzVz3/cPGODo6wsam7AcnnVmzZiEnJ0d/S0hIeLwX+hChPg4AgCspuQZ5fCIiqjqJ2dqkulzSrV9ezj3dREREZCSsrKzQunVrXL58uczxK1euIDAwEAAQFhYGS0tL7N69W3/+8uXLiI+PR3h4OAAgPDwc586dQ2pqqn5MdHQ0HB0d9Ql9eHh4mcfQjdE9RkXkcjkcHR3L3AzB20n7wS0tV7wPakREVDn/7dGt4+WoTbpzlSXIV4pTo4PVy4mIiGqgvLw8XLt2Tf99XFwcTp8+DVdXVwQEBGDGjBl4/vnn0alTJ3Tp0gVRUVH466+/sG/fPgCAk5MTxo8fj+nTp8PV1RWOjo549dVXER4ejqeeegoA0L17dzRs2BAjR47EggULkJycjHfffReTJk2CXK7dY/fyyy9jyZIlmDlzJsaNG4c9e/bg999/x9atW6v9Z/JfHvZWAIC0PCbdRETGTFmi1l8g/e9Mt73cAnZWMuQXq5GiKEJtD/tqj48z3URUaWPGjIG9feX+UEkkEsyZM8ewARHRYzt+/DhatGiBFi1aAACmT5+OFi1a6HtoDxo0CMuXL8eCBQvQpEkTfP/999iwYQM6dOigf4yvvvoKffv2xZAhQ9CpUyd4e3tj48aN+vMymQx///03ZDIZwsPD8cILL2DUqFH48MMP9WOCg4OxdetWREdHo1mzZvjiiy/w/fffi9ouTMfDQXthIJ1JNxGRUdPt17a2lMLF1rLced0S8xSRlphzppuohrhw4QLmzZuHvXv3Ij09HW5ubujSpQvefvttNGrUyODPf/jwYezcuRNTp04tV+2YiKpf586dIQjCA8eMGzcO48aNu+95a2trLF26FEuXLr3vmMDAQGzbtu2hsZw6derBAYvA3V6bdKflKiEIAiQSicgRERFRRe7t0V3R32ovB2vcSMtHikhtw5h0E9UAGzduxPDhw+Hq6orx48cjODgYN2/exA8//ID169fj119/xaBBg6r0OQsLC2FhcfdPzOHDh/HBBx9gzJgxTLqJyCToku4ilQb5xWrYy/mxiYjIGCWVFlH7735uHW/9TDeTbiIygOvXr2PkyJGoXbs2Dhw4AA8PD/251157DR07dsTIkSNx9uxZ1K5du8LHyM/Ph52d3SM9r7W19cMHEREZMTu5BWytZCgo1u4VZNJNRGSc7ldETcdT16tbpOXl3NNNZOY+++wzFBQUYMWKFWUSbkDbFujbb79Ffn4+FixYAACYM2cOJBIJLl68iBEjRsDFxaXMHk4AuHHjBnr06AE7Ozv4+vriww8/LLdM9d493XPmzMGMGTMAaPdvSiQSSCQS3Lx50zAvmoioinBfNxGR8UvMqrhHt46uVzdnuonIIP766y8EBQWhY8eOFZ7v1KkTgoKCylUKHjp0KOrWrYu5c+eWSajVajV69uyJp556CgsWLEBUVBTef/99lJSUlCmOdK/BgwfjypUr+OWXX/DVV1/B3d0dAMpdBCAiMjbu9nLcyihg2zAiIiOWlPPgpJvLy4nIYHJycpCUlIQBAwY8cFzTpk2xZcsW5Obm6o81a9YM69atKze2qKgIPXv2xKJFiwAAr7zyCvr164f58+djypQp+oT6v4/fsmVL/PLLLxg4cCCCgoKe7IUREVUTD3vOdBMRGbu7hdQq3t7oVbq8PFmkpJvLy4nMmC6JdnBweOA43XmFQqE/9vLLL993/OTJk/VfSyQSTJ48GcXFxdi1a9eThEtEZHTcHUp7dXOmm4jIKAmC8PA93aXLy1MVyod27jCEGpl0HzhwAP369YOvry8kEgk2b978yI8hCAI+//xz1KtXD3K5HLVq1cInn3xS9cESPQFdMn3vDHZFKkrOg4ODKxwrlUrLFVyrV68eAHCPNhGZHQ977Qc1znQTERmnrAIVilQaAHeXkf+XrpBasVqD7AJVtcWmUyOXl+fn56NZs2YYN24cBg8e/FiP8dprr2Hnzp34/PPP0aRJE2RmZiIzM7OKIyV6Mk5OTvDx8cHZs2cfOO7s2bOoVasWHB0d9cdsbCq+UkhEVJNwppuIyLjpZrk9HOSQW8gqHCO3kMHVzgqZ+cVIVhTBxc6qOkOsmTPdvXr1wscff3zfvsRKpRJvvPEGatWqBTs7O7Rt2xb79u3Tn7906RKWLVuGP//8E/3790dwcDDCwsLQrVu3anoFRJXXt29fxMXF4dChQxWeP3jwIG7evIm+fftW6vE0Gg1u3LhR5tiVK1cA4IF7tSUSSeUCJiIyIro93Wl5xSJHQkREFbm7n/vBE0aeDrq2YdW/r7tGJt0PM3nyZMTExODXX3/F2bNnMXToUPTs2RNXr14FoK0GXbt2bfz9998IDg5GUFAQXnzxRc50k1GaMWMGbGxs8NJLLyEjI6PMuczMTLz88suwtbXVt/SqjCVLlui/FgQBS5YsgaWlJbp27Xrf++j6fGdnZz/aCyAiEpG7rmUYZ7qJiIzS3f3cFS8t1xGzgnmNXF7+IPHx8Vi1ahXi4+Ph6+sLAHjjjTcQFRWFVatWYe7cubhx4wZu3bqFP/74Az/++CPUajWmTZuGZ599Fnv27BH5FRCVVbduXaxZswaRkZFo0qQJxo8fj+DgYNy8eRM//PAD0tPT8csvvyAkJKRSj2dtbY2oqCiMHj0abdu2xfbt27F161a8/fbbD2wBFhYWBgB45513MGzYMFhaWqJfv376ZJyIyBjdnenWFt/hqh0iIuPysCJqOnd7dVf/RVQm3f9x7tw5qNVqfWEoHaVSCTc3NwDa5bVKpRI//vijftwPP/yAsLAwXL58GfXr16/2uIkeZOjQoWjQoAHmzZunT7Td3NzQpUsXvP3222jcuHGlH0smkyEqKgr/+9//MGPGDDg4OOD999/H7NmzH3i/1q1b46OPPsLy5csRFRUFjUaDuLg4Jt1EZNQ8Sme6i0s0yFWWwNHaUuSIiIjoXknZ2pnrhy0v9+JMt/HIy8uDTCbDiRMnIJOV3Yhvb28PAPDx8YGFhUWZxDw0NBSAdqacSTcZoyZNmlTYd/u/5syZgzlz5lR4bvXq1Vi9ejUAYMeOHQ98nIraMbz77rt49913HxoDEZGxsLaUwUFugVxlCdJylUy6iYiMjG5Pt4/TQ5JuR/H2dDPp/o8WLVpArVYjNTUVHTt2rHBM+/btUVJSguvXr+uX5OoKSQUGBlZbrERERGR47g5y5CpLkJ6rRIiHvdjhEBHRPXTdJXRJ9f1weXk1y8vLw7Vr1/Tfx8XF4fTp03B1dUW9evUQGRmJUaNG4YsvvkCLFi2QlpaG3bt3o2nTpujTpw8iIiLQsmVLjBs3Dl9//TU0Gg0mTZqEbt26lVuWTkRERKbNw16OuPR8pLFXNxGRUREEQf+32d3+wUm3mIXUamT18uPHj6NFixZo0aIFAGD69Olo0aKFfk/qqlWrMGrUKLz++uuoX78+Bg4ciGPHjiEgIAAAIJVK8ddff8Hd3R2dOnVCnz59EBoail9//VW010RERESGoevVzQrmRETGJVdZguISDYC7NTjux7N0Jjw9T4kStcbgsd2rRs50d+7cucL9pjqWlpb44IMP8MEHH9x3jK+vLzZs2GCI8IiIiMiI3FvBnIiIjIfuYqi93ALWlrIHjnWzk0MmlUCtEZCeV6yf+a4ONXKmm4iIiKiydEsW03OLRY6EiIjulZ6n/bvsbm/10LEyqQSepbPhydW8xJxJNxEREdED6JYscqabiMi4pFdyP7eOp6M4+7qZdBMRERE9gH6mm0k3EZFRedSk26v0ImpqNSfdNWpPt0ajQVJSEhwcHCCRSMQOh4iIaghBEJCbmwtfX19IpbzebWr0M90spEZEZFR0e7p1BS8fRrePu7qXl9eopDspKQn+/v5ih0FERDVUQkIC/Pz8xA6DHpG7w92ZbkEQeOGeiMhIpOn3dFdypttRnF7dNSrpdnBwAKD90OPo6ChyNEREVFMoFAr4+/vr34fItOgK9KjUAnIKVXC2rdyMChERGZZuBdLD2oXpeIm0p7tGJd26K9OOjo5MuomIqNpxhtQ0yS1kcLS2gKKoBOl5SibdRERG4lH3dNf2sMMzDTzR1M/JkGGVU6OSbiIiIqLH4eEgh6KoBKm5StTx5IoFIiJj8KhJd8sAF6wc09qQIVWI1VyIiIiIHuJuBXP26iYiMgaCIOiTbo9KJt1iYdJNRERE9BCsYE5EZFzyi9UoUmkAVL56uViYdBMRERE9BHt1ExEZF127MFsrGWytjHvXNJNuIiIioofgTDcRkXF51P3cYmLSTURERPQQHpzpJiIyKneTbuNeWg4w6SYiIiJ6KM50ExEZl7TSwpac6SYiIiIyA9zTTURkXHR7ut0djD/pNu4d50RUJZQlauQVlSC3qAR5yhIoilRlvs8tUiFXWfp9UQkKitXQCAJKNALUGg3UGqHsTRBQohb0YwQBsJRJILeQQW4hhdxSevdri9KvLe/5unSMk40lXO3kcLUr/a+tFRysLSCVSsT+kRERlaGb6U7PK4ZGI/DvFBGRyExpTzeTbiITlqcsQaqiCCkKJVJzi5CWq0RqrhKpiiLtf3OVSFEUIbeoROxQK00mlcDF1gqudpZwsbWCm71V6ffam5u9HH4uNghwtYWbnRUkEn7wJSLDcyvdM6jWCMguVMHVzvj3EBIRmbO7PbqN/+8xk24iI1ZcokFidiFuZeTjVkYBbmUUID4zHzczCpCUXYiCYvUjPZ6dlQz21hZwsLaEvdwCDtbam/bru8dsrGSwlEohlUpgIZXo/yuTSiCTSCCTaf+rOyeVSFCi1kBZooGyRK39r+qer0s0UKru+bpEjcJiNXIKVcgsUCEzX4msfBXylCVQawSk5ykrtYTTxlKGAFdb+Lvawt9Vm4jrv3exhY2V7HF/9EREZVjKpHCxtURWgQppuUom3UREItPV2OBMNxE9lCAISFYUITY5F1dTcnEzowDxGQW4lZmPxKxCaIQH399ebgFPBzk8HOTwdLSGl4Mcno5yeDpYw7P0a3d7ORysLSEz8uWQyhI1sgtUyMgrRlZBMTLz795036fmKnE7swB3FEUoVKlxOSUXl1NyK3w8Dwc5/F3uJuMhnvZo5OuEYHc7o/9ZEJHxcbeXI6tAhfQ8JerDQexwiIhqtHRdITXu6a5aiYmJePPNN7F9+3YUFBSgTp06WLVqFVq1aiV2aESVkqcsweXkXFxOzkVssgKxpV/nFKruex8bSxkC3bRJY5C7HQJcbRHoZgs/F1t4Ocpha2VS/xs/kNxCBi9HGbwcrR86VlmiRlJ2EeIzCxCfWYDbpf/V3XKLSpCWq0RarhIn47PL3NfGUoYGPg5o5OuIhj5OaOTriPreDrC25Mw4Ed2fh4McV1PzWMGciMgIcE+3AWRlZaF9+/bo0qULtm/fDg8PD1y9ehUuLi5ih0ZUoZxCFc4kZONUfDbOJ+UgNlmBhMzCCsfKpBLUdrdDPW8H1C5NrIPc7RDoagsPBzn3LVdAbiFDsLsdgt3tKjyfU6DSJ+AJWQW4lZGP2ORcxN7JRaFKjVPx2n8bHZlUghAPOzTydUJDH0dtQu7rCGdbLiElIq27xdSYdBMRiamguES/zdKDM91VZ/78+fD398eqVav0x4KDg0WMiOiuErUGscm5OJWQjdPx2TiVkIUbafkVjvVylKO+tyMaeDuggbcD6ns7oI6nPeQWnGWtSk62lmhi64Qmfk5ljqs1AuLS83EhKQcX7yhwMUmBC0kKZOYX40pKHq6k5GHTqUT9+FrONgj1cURzfyeEh7ihqZ8zLGXstkhUE3mUzqakcqabiEhU6bnapeXWllLYmUANH5NJurds2YIePXpg6NCh2L9/P2rVqoVXXnkFEyZMuO99lEollMq7b4wKhaI6QqUaILdIhaNxmTgal4lT8dk4m5iNIpWm3LhAN1u08HdGUz9nhPpoE20XFt8RlUwqQR1Pe9TxtMeA5rUAaPfVpyiU2kS8NAm/eEeB+MwCJGYXIjG7ELsupQAAbK1kaB3kivAQN7QLcUMjXyfuDyeqIXSzKVxeTkQkrrR7lpabwopQk0m6b9y4gWXLlmH69Ol4++23cezYMUyZMgVWVlYYPXp0hfeZN28ePvjgg2qOlMxRQXEJjt/MQsyNDBy+noHziTlQ/6fCmYO1BZr7O6OFvzOaBzijub8Lq9uaCIlEAm8na3g7WaNrqJf+uKJIhUtJCpxPUuD4zUz8eyMDWQUq7L+Shv1X0gBo/93bBrshPMQN4bXd0MDbgf17icwUk24iIuNgSvu5ARNKujUaDVq1aoW5c+cCAFq0aIHz589j+fLl9026Z82ahenTp+u/VygU8Pf3r5Z4ybQpS7R7fg9fz8C/1zNwKiELKnXZJDvIzRZP1XZDWKALWgQ4o7a7PZMtM+NobYm2td3QtrYbxncIhkYjIDY5FzE3MhBzPR1HbmQit6gEuy6l6GfCXWwt8VRt7Sx4eIgbQjzsTeIKLNU8Bw4cwGeffYYTJ07gzp072LRpEwYOHFjh2JdffhnffvstvvrqK0ydOlV/PDMzE6+++ir++usvSKVSDBkyBAsXLoS9vb1+zNmzZzFp0iQcO3YMHh4eePXVVzFz5swyj//HH3/gvffew82bN1G3bl3Mnz8fvXv3NsTLfiKeDtoij6m5RSJHQkRUszHpNhAfHx80bNiwzLHQ0FBs2LDhvveRy+WQy03jH4LEl5pbhH2xadgdm4JDV9OR/58e2L5O1ggPcdfOaIa4oZazjUiRklikUgkalhZYG98hGGqNgAtJOTh8PQMx1zNw7GYmsgpU2H4+GdvPJwPQzoyF13ZDp3oe6BbqBSdbS5FfBZFWfn4+mjVrhnHjxmHw4MH3Hbdp0yb8+++/8PX1LXcuMjISd+7cQXR0NFQqFcaOHYuJEydi3bp1ALQXu7t3746IiAgsX74c586dw7hx4+Ds7IyJEycCAA4fPozhw4dj3rx56Nu3L9atW4eBAwfi5MmTaNy4sWFe/GPiTDcRkXHQ7en2cDCNVaUmk3S3b98ely9fLnPsypUrCAwMFCkiMnUajYDzSTnYE5uKPbGpOHs7p8x5d3srhIe4o13p3t0AV1vOWFIZMqkETf20e/ZffjoEKrUGZ29nI+a6dhvCiVtZSMtVYsuZJGw5kwRLmQQd6rijdxMfdG/ozQScRNWrVy/06tXrgWMSExPx6quvYseOHejTp0+Zc5cuXUJUVBSOHTumb925ePFi9O7dG59//jl8fX2xdu1aFBcXY+XKlbCyskKjRo1w+vRpfPnll/qke+HChejZsydmzJgBAPjoo48QHR2NJUuWYPny5QZ45Y9Pl3RnFahQXKKBlQWLKhIRiYEz3QYybdo0tGvXDnPnzsVzzz2Ho0ePYsWKFVixYoXYoZEJKS7R4NC1NOw4n4I9l1PLzVY09XPCMw088UwDTzT2deJycXokljIpwgJdERboisnP1EWRSo3TCdk4fC0dOy+mIDY5F3svp2Hv5TS8LTvHBJyMmkajwciRIzFjxgw0atSo3PmYmBg4OzvrE24AiIiIgFQqxZEjRzBo0CDExMSgU6dOsLK6OxPRo0cPzJ8/H1lZWXBxcUFMTEyZrWC6MZs3b75vbGIVSnW2sYSFVIISjYCMfCV8nLjiiYhIDEy6DaR169bYtGkTZs2ahQ8//BDBwcH4+uuvERkZKXZoZOSKSzT453o6tp69g50XkqEoKtGfs7OSoUNdd3Rt4IXO9T3g6WgtYqRkbqwtZXiqthuequ2G6d3r41pqHradu4OtZ+/gcgoTcDJu8+fPh4WFBaZMmVLh+eTkZHh6epY5ZmFhAVdXVyQnJ+vH/Le9p5eXl/6ci4sLkpOT9cfuHaN7jIqIVShVKpXAw0GOOzlFSFUw6SYiEguTbgPq27cv+vbtK3YYZAJUag0OX8/A1rNJ2HEhBTmFKv05Dwc5ejX2RreGXmgT7Mr+2FRt6njaY0rXupjStS6upeZi69lkbDtXcQLep6kvujX0gpMNE3CqfidOnMDChQtx8uRJo9xWI2ahVF3SzX3dRETiSc/T7ul2t+eebqJqJQgCTsZnYf2JRGw/fwfZBXcTbXd7OXo38UafJj5oFeTKvsokujqeDngtwgGvRdw/AbeUSdCxrgd6N/FhAk7V6uDBg0hNTUVAQID+mFqtxuuvv46vv/4aN2/ehLe3N1JTU8vcr6SkBJmZmfD29gYAeHt7IyUlpcwY3fcPG6M7XxExC6V6lM6q6HrEEhFR9dNd+HR34Ew3UbW4k1OIjScTseHEbdxIz9cfd7OzQq8m3ujTxBdtgplok/GqKAHfei4JV1Ly9IX+LGUSRIR6YUy7ILQJdjXK2UcyHyNHjkRERESZYz169MDIkSMxduxYAEB4eDiys7Nx4sQJhIWFAQD27NkDjUaDtm3b6se88847UKlUsLTUXjSKjo5G/fr14eLioh+ze/fuMq3IoqOjER4ebuiX+Vg8HVnBnIhITEUqNfKU2u2iXF5OZEBFKjV2XkzB+hO3cehqGjSlLbRtLGXo3cQHg1vWQttgV1jIWFmWTMuDEnBdK7JQH0eMbReE/s19YW3J7RH0ePLy8nDt2jX993FxcTh9+jRcXV0REBAANze3MuMtLS3h7e2N+vXrA9C27ezZsycmTJiA5cuXQ6VSYfLkyRg2bJi+vdiIESPwwQcfYPz48XjzzTdx/vx5LFy4EF999ZX+cV977TU8/fTT+OKLL9CnTx/8+uuvOH78uNEWStXNdLNXNxGROHQXPa1kUjham0Y6axpREpW6nJyLn/69iT9PJyH3noJobYJd8WyYH3o38YG9nL/WZB7uTcBjkxX4MeYWNp68jUt3FJi54Szmbb+E4W0C8MJTgfBl33h6RMePH0eXLl303+v2SI8ePRqrV6+u1GOsXbsWkydPRteuXSGVSjFkyBAsWrRIf97JyQk7d+7EpEmTEBYWBnd3d8yePVvfLgwA2rVrh3Xr1uHdd9/F22+/jbp162Lz5s1G16Nbh726iYjEdbeImpXJrPyTCIIgiB1EdVEoFHByckJOTg4cHR3FDocqSaXWYOeFFKyJuYmjcZn647WcbTCkZS0MCfNDoJudiBESVZ/sgmL8fjwBaw7fQmJ2IQBtv/Cejbwxpn0QWgW6mMwbUE3C9x/Dqs6fb9T5O3j555NoGeCMja+0N+hzERFRedEXUzDhx+No6ueELZM7iBpLZd9/OCVIRitVUYR1R+Pxy9F4pCi0V7RkUgm6N/RCZNtAtAtxYx9tqnGcba0wsVMIxneojV2XUrDqnzj8eyMTW8/dwdZzd9DI1xFj2gWhXzMuPScyBA8HbWvJVM50ExGJQjfT7WEi+7kBJt1khE7GZ2HloThEnU9GSelmbXd7OYa38ceItgHsi0oE7QWoHo280aORNy7dUWDN4ZvYdCoRF5IUmLH+LD7dHosRbQMQ2TYQ3k7sP09UVTzvWV4uCAJXlhARVbP0XNPq0Q0w6SYjodEI2Hs5Fd/uv4GjN+8uIW8V6IKR4YHo1dgHVhYsikZUkVAfR3w6pCne7NkAvx5LwE8xN5GUU4TFe65h2b7r6NXEB2PaBaFlgDMTBKInpNvTrSzRIFdZAkdrtvIjIqpO+j3dDqbRoxtg0k0iKy7RYMuZJKw4cB1XUvIAAJYyCQY2r4Ux7YPQyNdJ5AiJTIeLnRX+1zkEEzoGI/piClYd1tZB+OtMEv46k4Smfk76peeWrOxP9FisLWVwsLZAblEJ0nKVTLqJiKpZWh5nuokqJU9Zgl+PxuOHQ3G4k6Ntu2Ivt0Bk2wCMbR/M5bBET8BCJkWvJj7o1cQHF5JysObwTWw+nYSzt3Mw/fczWLL3Gmb1CkVEqCdnvokeg4eDHLlFJUhVKBHiYS92OERENUpyae7g7Wg6+QKTbqpW+coS/BhzC98euI7sAhUA7YeXce2DEflUAGcMiKpYI18nLHi2Gd7qFYpfjsZj5aE43EjLx4Qfj+Op2q54p3dDNPHjihKiR+FhL8eNtHz9bAsREVUfXYFlTybdRGUVFqvx87+3sHz/dWTkFwMAgt3t8FKn2hjUshbkFqyyTGRIrnZWmNSlDkaFB2LZvuv44ZC26nm/JYcwqEUtzOhRn72+iSqJvbqJiMQhCAJSc0tnuk1oZSyTbjKoIpUa647E45t91/VFD4LcbPFaRF30b1YLMrb8IqpWDtaWmNmzASKfCsTnOy5j06lEbDqViG3n7mB8h2D8r3MIHLjihOiBPEvbhjHpJiKqXlkFKqjU2u5GbBlGNV6JWoNfjyVg8Z6r+iUgfi42mNK1Lga3qAULFnEiElUtZxt89XxzjGsfjI+3XsSRuEx8s+86fjuWgKnd6mF4a3/+f0p0H7qZbt1sCxERVY8UhfbvrpudlUl1NmLSTVVKEATsiU3F3G2XcD0tH4D2w/3kZ+rg2TA/VkwmMjJN/Jzw68SnsOtSKuZtu4Qb6fl4b/N5rP4nDm/3DsUzDVhsjei/uLyciEgcyaVJtynt5waYdFMVOp+Yg0+2XkLMjQwA2j2kU56pg+FtA7hnm8iISSQSdGvohc71PbDuSDy+3nUF19PyMX7NcbQLccPbvUPRuBaLrRHpeDLpJiISRWpp0u3laDpLywEm3VQFkrIL8fmOy9h4KhEAYGUhxbj2wXilSwirkROZEEuZFKPbBWFQy1pYuvcaVv1zE4evZ6DfkkMY3MIPb/SoBx8nFlsj4kw3EZE4dNtWTaldGMCkm55AkUqNFQduYOnea1CWaAAAA5v74o0e9eHnYitydET0uBytLTGrVyheaBuIz3ZcxpYzSdhw8ja2nkvCix1q4+XOIbCX8+2Dai5d0p1ZUAyVWsOtU0RE1SSFy8upJtl/JQ3v/3keNzMKAABtgl3xbp9QNPVzFjcwIqoy/q62WDS8BcZ1CMYnWy/i2M0sLNl7Db8ei8e0bvXwfCsWW6OaydXWCjKpBGqNgMz8YniZ2Ic/IiJTpZvp5vJyMmtJ2YX46O+L2H4+GYB2X9u7fRuiX1MfFlsiMlPN/Z3x+0vh2HEhBZ9uv4SbGQV4Z9N5/Ho0AUtGtECgm53YIRJVK6lUAnd7K6QolEjLVTLpJiKqJrqZbi8H0/q7y6SbKkWl1uCHQ3FYtPsqCorVkEklGNMuCFMj6rKnL1ENIJFI0LOxN55p4Im1R27h611XcS4xB30WHcLcwU3Qv5mv2CESVSsPBzlSFMrStmEsNEhEVB30SbeJXexk0k0PdT4xBzPWn8WlOwoAQOsgF3w4oDFCfRxFjoyIqpuVhRRj2wejRyNvvPbrKRy7mYUpv5xCzPV0zO7bCDZW7FRANYOHPYupERFVpxK1Bul5pcvLnUxreTk349F9KUvU+GLnZQxc+g8u3VHA2dYSnz3bFL+/FM6Em6iG83W2wS8TnsKrz9SBRAL8cjQBA5YewtWUXLFDI6oWnqVLG5l0ExFVj4z8YmgEQCaVwM2OSTeZgTMJ2ei3+BAW77mGEo2AXo29ET3taQxt5c+920QEALCQSfF69/r4aVxbuNvLcSUlD/2WHMLvxxIgCILY4REZFNuGERFVr+Qc7dJyD3s5ZFLTykeYdFMZyhI1Pt0ei0Hf/IMrKXlws7PCN5EtseyFMP0HDCKie3Wo645tr3VAhzruKFJpMHPDWUz77TTylCVih0ZkMLr3xFQm3URE1eLufm7Ty0mYdJPe1ZRcDFx6GMv3X4dGAPo380X09KfRu4mP2KERkZHzdLDGj+PaYEaP+pBJJdh8Ogn9Fh/C+cQcsUMjMgjOdBMRVa+UXF27MNMqogYw6SYAgiDgp39voe/iQ7h0RwFXOyt8OzIMi4a3gKudldjhEZGJkEolmNSlDn6d+BR8nKwRl56Pwd8cxo8xN7ncnMyOpy7pzmPSTURUHVJNtHI5YMJJ96effgqJRIKpU6eKHYpJy8wvxoQfT+C9zeehLNGgY113RL3WET0aeYsdGhGZqNZBrtg2pSMiQj1RrNZg9p8X8PLPJ5BToBI7NKIqo19erlDyohIRUTXg8vJqduzYMXz77bdo2rSp2KGYtH+upaPn1wew61IKLGUSvNsnFGvGtoGnCV49IiLj4mJnhe9GtcJ7fRvCUibBjgsp6L3oIE7GZ4kdGlGV0CXdhSo18ovVIkdDRGT+khXalUWmmKuYXNKdl5eHyMhIfPfdd3BxcRE7HJOk0QhYuvcaRv5wBKm5SoR42GHTK+3xYsfakJpYJUAiMl4SiQTjOwRjw//aIcDVFonZhXhueYy2boSGM4Nk2mytLGAvtwDAfd1ERNWBy8ur0aRJk9CnTx9ERESIHYpJyilUYeJPx/HZjsvQCMDQMD/8/WpHNK7lJHZoRGSmmvo54+8pHdC3qQ9KNAI+3R6LsauPIYN7YcnE6fZ169rYEBGR4eiWl3ubYNJtIXYAj+LXX3/FyZMncezYsUqNVyqVUCrvfqhTKBSGCs0kXExS4H9rT+BWRgGsLKT4sH8jDGsTIHZYRFQDOFpbYvHwFmhfxx1ztlzA/itp6LXwIBYOa4HwEDexwyN6LD7O1riRno87OYVih0JEZNaUJWpkldaG4Z5uA0pISMBrr72GtWvXwtq6clc35s2bBycnJ/3N39/fwFEar02nbmPwsn9wK6MAtZxtsOHldky4iahaSSQSDG8TgD8nt0cdT3uk5iox4vt/8WX0Fai53JxMkI+TDQDgDme6iYgMKrV0P7eVhRRONpYiR/PoTCbpPnHiBFJTU9GyZUtYWFjAwsIC+/fvx6JFi2BhYQG1unwRk1mzZiEnJ0d/S0hIECFycWk0AuZHxWLab2dQpNLg6Xoe+PvVDmjix+XkRCSOBt6O2DK5PZ5r5QdBABbtvoo3/jjDfd5kcnydtUl3YjZnuomIDOneyuUSienVoDKZ5eVdu3bFuXPnyhwbO3YsGjRogDfffBMymazcfeRyOeRy01t+UFUKiksw/bcziLqQDACY3KUOpnWrBxmLpRGRyGytLLDg2WZ4qrYbZqw/i02nEmFjJcMnAxub5Jsp1Uy+TtqVd3eYdBMRGVRK6Uy3l4Pp7ecGTCjpdnBwQOPGjcscs7Ozg5ubW7njpC3q8uKPx3A+UQErmRTzn22CQS38xA6LiKiMwS39YCGT4rVfT2HdkXjYWsrwTp9QJt5kEnQz3UnZXF5ORGRI+pluJybdZCTOJ+Zg/JpjSFEo4WpnhRUjw9AqyFXssIiIKtS/mS+KitWYueEsvj8UBzu5BaZ1qyd2WEQP5eus/fCXxEJqREQGlZJbmnRzprv67du3T+wQjM6hq+mY+NNxFBSrUdfTHivHtIa/q63YYRERPdBzrf2RX1yCD/66iIW7r8JOLsPETiFih0X0QLpCarlFJcgtUsHB2vSK+xARmQJdITVTrFwOmFAhNXq4befuYOzqoygoVqN9HTdseKUdE24iMhlj2wdjRo/6AIC522Lx07+3RI6I6MHs5Bb6KrqsYE5EZDjJObpCaqY5082k20ysPXILk9adhEotoHcTb6wc0xqOvOJORCZmUpc6eKWzdob7vc3nseHEbZEjInowVjAnIjI83fJyT850kxgEQcDi3VfxzqbzEAQgsm0AFg9vCblF+WruRESmYEaP+hjTLkj79foz2H7ujrgBET3A3QrmnOkmIjIU3fJyb850U3UTBAGfRsXii+grAIApz9TBxwMbsyUYEZk0iUSC2X0b4rlWftAIwJRfT2FvbKrYYRFV6G4Fc850ExEZQp6yBHnKEgCAJ5Nuqk6CIODT7bH4dv8NAMDsvg0xvXt9ttkhIrMglUowb3BT9G3qA5VawMs/n0DM9QyxwyIqh0k3EZFh6dqF2cstYC83zTrgTLpNkCAImLc9Ft8e0CbcHw1ohHEdgkWOioioasmkEnz1fHNEhHpCWaLB+DXHcDI+S+ywiMpg2zAiIsPSJd2mup8bYNJtcnQJ94p7Eu6R4UHiBkVEZCCWMimWjGiJ9nXcUFCsxpiVR3EhKUfssIj07s50c083EZEh6NuFmWiPboBJt8mZH3WZCTcR1SjWljJ8N6oVWgW6QFFUglE/HMW11FyxwzJ5Bw4cQL9+/eDr6wuJRILNmzfrz6lUKrz55pto0qQJ7Ozs4Ovri1GjRiEpKanMY2RmZiIyMhKOjo5wdnbG+PHjkZeXV2bM2bNn0bFjR1hbW8Pf3x8LFiwoF8sff/yBBg0awNraGk2aNMG2bdsM8poNwae0kFpyThE0GkHkaIiIzI+uJaO3E5NuqgbL91/H8v3XATDhJqKaxdbKAivHtkbjWo7IyC9G5PdHEJ9RIHZYJi0/Px/NmjXD0qVLy50rKCjAyZMn8d577+HkyZPYuHEjLl++jP79+5cZFxkZiQsXLiA6Ohp///03Dhw4gIkTJ+rPKxQKdO/eHYGBgThx4gQ+++wzzJkzBytWrNCPOXz4MIYPH47x48fj1KlTGDhwIAYOHIjz588b7sVXIS9Ha0glQLFag/R8pdjhEBGZndtZ2vd7PxcbkSN5fBJBEGrMZVmFQgEnJyfk5OTA0dFR7HAeye/HEjBzw1kAwKxeDfDS0yEiR0REVP0y84vx/LcxuJqaBz8XG/zxcjh8nIz/TdjY338kEgk2bdqEgQMH3nfMsWPH0KZNG9y6dQsBAQG4dOkSGjZsiGPHjqFVq1YAgKioKPTu3Ru3b9+Gr68vli1bhnfeeQfJycmwsrICALz11lvYvHkzYmNjAQDPP/888vPz8ffff+uf66mnnkLz5s2xfPnySsUv9s/3qbm7kawowp+T2qOZv3O1Pz8RkTkbvfIo9l9Jw/whTfB86wCxwymjsu8/nOk2ATsuJOOtjdqE+6VOtZlwE1GN5WpnhbUvtkWgmy1uZxUi8rsjSMvl7GJ1yMnJgUQigbOzMwAgJiYGzs7O+oQbACIiIiCVSnHkyBH9mE6dOukTbgDo0aMHLl++jKysLP2YiIiIMs/Vo0cPxMTEGPgVVR19MTVWMCciqnIJpTPd/i62Ikfy+Jh0G7l/b2Tg1V9OQSMAz7Xyw1u9GogdEhGRqDwdrbH2xbbwdbLGjfR8jPzhCLILisUOy6wVFRXhzTffxPDhw/VX8pOTk+Hp6VlmnIWFBVxdXZGcnKwf4+XlVWaM7vuHjdGdr4hSqYRCoShzE5OPrphaDoupERFVJUEQkJilvaDpx6SbDOFGWh4m/ngcxSUadG/ohbmDmrAPNxERtG+8ayc8BXd7OWKTczF61THkKUvEDsssqVQqPPfccxAEAcuWLRM7HADAvHnz4OTkpL/5+/uLGk8t9uomIjKItFwllCUaSCWAjzMLqVEVyy4oxvg1x6EoKkHLAGcsGt4CFjL+cxER6QS722Hti23hbGuJMwnZGLf6GIpUarHDMiu6hPvWrVuIjo4us1/N29sbqampZcaXlJQgMzMT3t7e+jEpKSllxui+f9gY3fmKzJo1Czk5OfpbQkLC47/IKqCrYH6HvbqJiKpUQukst4+TDSxNOBcy3cjNmEqtwf9+Pom49HzUcrbBtyNbwdpSJnZYRERGp763A34c1wb2cgscjcvE0r3XxA7JbOgS7qtXr2LXrl1wc3Mrcz48PBzZ2dk4ceKE/tiePXug0WjQtm1b/ZgDBw5ApVLpx0RHR6N+/fpwcXHRj9m9e3eZx46OjkZ4ePh9Y5PL5XB0dCxzE5OuV3cie3UTEVUpXeXyWiZcuRxg0m10BEHAe5vPI+ZGBuysZPhhTCt4OMjFDouIyGg19XPGgmebAgBWHLihf4OmB8vLy8Pp06dx+vRpAEBcXBxOnz6N+Ph4qFQqPPvsszh+/DjWrl0LtVqN5ORkJCcno7hYu38+NDQUPXv2xIQJE3D06FH8888/mDx5MoYNGwZfX18AwIgRI2BlZYXx48fjwoUL+O2337Bw4UJMnz5dH8drr72GqKgofPHFF4iNjcWcOXNw/PhxTJ48udp/Jo/Lt7SC/h0uLyciqlK3S2e6TbmIGsCk2+j8GHMLvx5LgFQCLB7RAg28ja+1DBGRsenV2Bttg12hLNFg3vZYscMxCcePH0eLFi3QokULAMD06dPRokULzJ49G4mJidiyZQtu376N5s2bw8fHR387fPiw/jHWrl2LBg0aoGvXrujduzc6dOhQpge3k5MTdu7cibi4OISFheH111/H7Nmzy/TybteuHdatW4cVK1agWbNmWL9+PTZv3ozGjRtX3w/jCemql6fmKqEs4RYHIqKqYg49ugHAQuwA6K5T8Vn4eOtFAMCsXqF4poHXQ+5BRESAts/07H4N0XfxIWw9ewejwzPRJthV7LCMWufOnSEIwn3PP+icjqurK9atW/fAMU2bNsXBgwcfOGbo0KEYOnToQ5/PWLnaWUFuIYWyRIOUHCUC3Ex7RoaIyFgkZJbOdLua9t9VznQbiaz8YkxaexIqtYBejb3xYsdgsUMiIjIpjXydMKy1tor1h39fgEbz8KSRqCpIJBL9vu4kFlMjIqoy5jLTzaTbCGg0Aqb+dhpJOUUIdrfDgmebsjUYEdFjeL17fTjILXA+UYH1J26LHQ7VILoK5mwbRkRUNdQaAYnZnOmmKrJ07zXsv5IGa0spvolsCQdrS7FDIiIySe72crzatQ4AYMGOy8gtUj3kHkRVQzfTfSeHFcyJiKpCam4RVGoBFlIJvEy8sDSTbpGdis/C17uvAgA+GtAYoT4snEZE9CTGtAtGkJst0vOUeHPDWXzw1wWkKpgIkWH5ls50J3Kmm4ioSuj2c/s4W8PChHt0A0y6RVVQXILpv5+BWiOgfzNfDG3lL3ZIREQmz8pCinf6NAQAbDuXjFX/3MTPR+JFjorMnX6mm0k3EVGV0O3nNvV2YQCTblHN3XYJcen58Ha0xkcDTKc1ChGRsYsI9USHOu7679cducVWTmRQPrpCatlcVUFEVBV0PbpNvYgawKRbNHtjU/Hzv9qZly+eawYnW+7jJiKqKhKJBO/1baj/Pj2vGH+duSNiRGTuapX26mb1ciKiqpGQyZluegKKIhXe3HAWADCufTDa3zMbQ0REVaO+twNGPhWo//77gzcq1Xua6HHolpfnFpUgp4AF/IiInpR+ptuVM930GBZExSI1V4lgdzvM7Flf7HCIiMzWtG719F/HJufi2M0sEaMhc2ZrZQGP0uq6tzLzRY6GiMj0JXBPNz2uE7eysLa0oM8ngxrD2lImckRERObL1c4Ks+9ZZr6otFsEkSEEu9kBAOLSmXQTET2JErVG34LRj0l39Zk3bx5at24NBwcHeHp6YuDAgbh8+bLYYT0SlVqDtzeegyAAz4b5oV0Il5UTERnayPC7S8wPXUvXV0MlqmqBbtoPhjfT+TtGRPQk7uQUQa0RYCWTwtPEe3QDJpR079+/H5MmTcK///6L6OhoqFQqdO/eHfn5pnM1+buDN3A5JReudlZ4p3eo2OEQEdUIljIpVo1trf/+w78uihjNo3N1dX2km5ubG27duiV22DVSkLt2pvtmhul8NiEiMka6/dy1XGwglUpEjubJWYgdQGVFRUWV+X716tXw9PTEiRMn0KlTJ5GiqrxURRGW7LkGAHi3Tyhc7KxEjoiIqOboUt9T//XOiykoKC6BrZVpvAVmZ2fj66+/hpOT00PHCoKAV155BWo126OJIZhJNxFRldCtSjOHdmGACSXd/5WTkwNAOwNwP0qlEkqlUv+9QqEweFz38/nOyygoVqNFgDMGtaglWhxERDVV9LRO6PbVAQDA9N/OYPnIMJEjqrxhw4bB09Pz4QMBvPrqqwaOhu7n7vJyJt1ERE8iQd+j2/T3cwMmtLz8XhqNBlOnTkX79u3RuHHj+46bN28enJyc9Dd/f/9qjPKuC0k5+OPEbQDAe30bQiIx/SUSRESmpq6Xg/7rqAvJUKk1IkZTeRqNptIJNwDk5uaidu3aBoyI7ieotJBaVoGKbcOIiJ6Auc10m2TSPWnSJJw/fx6//vrrA8fNmjULOTk5+ltCQkI1RXiXIAj4ZOslCALQr5kvWga4VHsMRESkdejNLvqvX1l7UsRIyBzZyS30BX/iuMSciOix3c7UznT7u3KmWxSTJ0/G33//jb1798LPz++BY+VyORwdHcvcqtu+K2k4fD0DVhZSvMme3EREovJzsYVFaUGW6IspyC4oFjmiR7NmzRps3bpV//3MmTPh7OyMdu3asXiakdAVU7vFpJuI6LFxplskgiBg8uTJ2LRpE/bs2YPg4GCxQ3ooQRDwdfQVAMCYdkFmsyeBiMiURU29W3xz6m+nxQvkMcydOxc2NtoPIDExMVi6dCkWLFgAd3d3TJs2TeToCACCSvd1s1c3EdHjKS7R4I5C26Pb30zyJ5MppDZp0iSsW7cOf/75JxwcHJCcnAwAcHJy0n8AMTb7LqfhzO0c2FjKMLET99cRERmDOp72sJJJUazWYN/lNFxLzUUdT4eH39EIJCQkoE6dOgCAzZs3Y8iQIZg4cSLat2+Pzp07ixscAbinbRiTbiKix3InpxCCAMgtpHC3N4+OTyYz071s2TLk5OSgc+fO8PHx0d9+++03sUOrkCAI+HqXdpZ7VHgg3O1Nv6k7EZG5+GFMK/3XM9efFTGSR2Nvb4+MjAwAwM6dO9GtWzcAgLW1NQoLC8UMjUoFlxZTi8soEDkSIiLTFJ95d2m5uRSgNpmZbkEQxA7hkdw7yz2Bs9xEREalQx13WMokUKkFnIzPxt7YVHRpUPkK4WLp1q0bXnzxRbRo0QJXrlxB7969AQAXLlxAUFCQuMERAO7pJiJ6UjfStH8/a3vYixxJ1TGZmW5Ts2z/dQDASM5yExEZHYlEgjn9G+m/X7L3mojRVN7SpUsRHh6OtLQ0bNiwAW5ubgCAEydOYPjw4SJHR8DdXt3ZBSqTK9RHRGQMrqXmAdBuBzMXJjPTbUrOJ+bgaFwmLKQSjGtv/AXfiIhqosEt/PDOpvMAgBO3sqDWCJBJjXMZ28qVK9G/f3+4u7tjyZIl5c5/8MEHIkRFFbG1soCXoxwpCiXi0vPRIsA89iMSEVWX62napDuEM930ICsPxQEA+jT1gbeTtcjREBFRRWysZJjQ8e6F0bj0PBGjebCff/4Zfn5+aNeuHebPn4/Y2FixQ6IHCHLTLTHnvm4iokd1N+m2EzmSqsOku4qlKorw19kkAMD4DpzlJiIyZmPuWY204WSiiJE82J49e3Dnzh288sorOHHiBNq0aYO6devi9ddfx4EDB6DRaMQOke6hS7rZNoyI6NHkFqmQolACAELMaHk5k+4q9vOReKjUAloFuqCpn7PY4RAR0QPUcr7bcnLZvusiRvJwLi4ueOGFF/D7778jPT0dixcvRmFhISIjI+Hp6YlRo0Zh/fr1yM9noic2fdswFlMjInok10uLqHk6yOFobSlyNFWHSXcVUmsE/HE8AQAwul2QuMEQEVGlPBvmp/86M980Cl9ZWVmhZ8+e+Oabb5CQkICoqCgEBQXho48+wpdffil2eDVesLu2mBp7dRMRPZrrqea3nxtg0l2l/rmWjjs5RXCysUS3hl5ih0NERJUwKjxQ//UvR+NFjOTxtWrVCh9++CHOnDmDt956S+xwary7M93c001E9Cj0+7k9zWc/N8Dq5VXqjxO3AQADmvvC2lImcjRERFQZ9bwc9F9/tuMyJnaqDUuZcV6TFgQB69evx969e5GamlpmL7dEIsGGDRtgaWk+y/FMVaCr9sNiTqEKWfnFcLFjBXMiosowx8rlAGe6q0xOgQo7LiQDAIaG+YscDRERVZa1pQy176mQuv18sojRPNjUqVMxcuRIxMXFwd7eHk5OTvqbo6Oj2OFRKRsrGbwdtd1L4rivm4io0syxRzfAme4qs+38HRSXaNDA2wGNa/GDDxGRKWnu74wbpcVbVv0Th/7NfEWOqGI//fQTNm7ciN69e4sdCj1EkLstkhVFuJmej5YBLmKHQ0Rk9FRqjb7VIme6qUJRpTMj/Zr5QiKRiBwNERE9ika+TvqvT8Vn49ztHBGjuT8nJyfUrl1b7DCoEoK5r5uI6JHEZxagRCPA9p7VQuaCSXcVyClU4fD1dABAz8beIkdDRESPqpFv2RVKF5KMM+meM2cOPvjgAxQWFoodCj1EYGmvblYwJyKqHF3l8toedpBKzWsSk8vLq8De2FSo1ALqetqb3VIIIqKaoOF/km5FkUqkSB7sueeewy+//AJPT08EBQWVK5p28uRJkSKj/wpyY69uIqJHca20iFodM8ynmHRXAd3Scs5yExGZJkdrSwS42iI+U7sUOKfQOJPu0aNH48SJE3jhhRfg5eXF7UxGrE5pu5trqXnQaASzm7UhIqpq11O1FynNcRKTSfcTUqk1OHg1DQDQvSGTbiIiU9XI11GfdCsKS0SOpmJbt27Fjh070KFDB7FDoYcIcrODlYUUBcVq3M4qRICbrdghEREZtbs9us0v6eae7id09nY28ovVcLG1LLcnkIiITMe9f8ONdabb39+frcFMhIVMql8ieSlZIXI0RETGTRAEs+3RDTDpfmKHrmYAAMJD3Lh0jIjIhN1bwdxY93R/8cUXmDlzJm7evCl2KFQJDbwdAACXk3NFjoSIyLil5SqRW1QCqUTbctHccHn5E/qntGp5uxB3kSMhIqInce9Md3JOkYiR3N8LL7yAgoIChISEwNbWtlwhtczMTJEio4rUZ9JNRFQpuiJqAa62kFvIRI6m6lUq6VYoHn1ZVE1Y/lZYrMap+CwAQIc6TLqJiEyZ5z09QWONNEn6+uuvxQ6BHkEDH+1noVguLycieqDraeZbRA2oZNLt7Oz8SBVSJRIJrly5gtq1az92YKbgQlIOVGoBHg5yBLJAChGRyfN0kCM1Vyl2GPc1evRosUOgR6BbXh6Xno8ilRrWluY3e0NEVBV0PbrNsYga8Ah7utevX489e/Y89LZ7925YWVkZMmajceZ2DgCgmZ8T27YQEZmB8BA3sUMo51FXm+XmVm6W/sCBA+jXrx98fX0hkUiwefPmMucFQcDs2bPh4+MDGxsbRERE4OrVq2XGZGZmIjIyEo6OjnB2dsb48eORl5dXZszZs2fRsWNHWFtbw9/fHwsWLCgXyx9//IEGDRrA2toaTZo0wbZt2x7pNRsrTwc5nG0toRG0rcOIiKhi1824RzdQyZnuwMBAdOrUCW5ulfswUrt27XL7zMzR2dvZAICmfs6ixkFERFWjXYgb/jydBABGMzPp4uKCO3fuwNPTs1Lja9WqhdOnTz90tVl+fj6aNWuGcePGYfDgweXOL1iwAIsWLcKaNWsQHByM9957Dz169MDFixdhba1dih8ZGYk7d+4gOjoaKpUKY8eOxcSJE7Fu3ToA2gsG3bt3R0REBJYvX45z585h3LhxcHZ2xsSJEwEAhw8fxvDhwzFv3jz07dsX69atw8CBA3Hy5Ek0btz4UX5URkcikaC+lwOOxGUiNjkXjWs5PfxOREQ10N2ZbjuRIzGMSiXdcXFxj/Sg58+ff6xgTM3Z0pnupn58EyUiMgdtgu9eXM7IL0YtZxsRo9ESBAHff/897O0rd/Vfpapc5fVevXqhV69e933Or7/+Gu+++y4GDBgAAPjxxx/h5eWFzZs3Y9iwYbh06RKioqJw7NgxtGrVCgCwePFi9O7dG59//jl8fX2xdu1aFBcXY+XKlbCyskKjRo1w+vRpfPnll/qke+HChejZsydmzJgBAPjoo48QHR2NJUuWYPny5ZV6Lcasgbc26b7Mfd1ERBXKV5YgqbSAaW33GjzTTeXlKUsQl67d8M+ZbiIi8xDoerc+x8lbWUaRdAcEBOC7776r9Hhvb+8nXm0WFxeH5ORkRERE6I85OTmhbdu2iImJwbBhwxATEwNnZ2d9wg0AERERkEqlOHLkCAYNGoSYmBh06tSpzLazHj16YP78+cjKyoKLiwtiYmIwffr0Ms/fo0ePcsvd76VUKqFU3t17/zgFX6tLfW9dMTXjLM5HRCQ2XbFJL0c5XOzMc5vyYyXdx44dw969e5GamgqNRlPm3JdfflklgRm7uNIKe+72VnA1018OIqKaRiq9W58j5kYG+jXzFTEaLTF6cicnJwMAvLy8yhz38vLSn0tOTi635N3CwgKurq5lxgQHB5d7DN05FxcXJCcnP/B5KjJv3jx88MEHj/HKql8DH7YNIyJ6kAtJ2qS7ka/5rh5+5KR77ty5ePfdd1G/fn14eXmVKSBWk4qJ3UjX7jsw1yUQREQ1Xcz1DLFDoPuYNWtWmdlxhUIBf39/ESO6v3pe2qQ7NVeJzPxiXqgnIvqPC4m6pNt8W04/ctK9cOFCrFy5EmPGjDFAOKZDt7Q82N08N/sTEdV0ur/zNZG3tzcAICUlBT4+PvrjKSkpaN68uX5MampqmfuVlJQgMzNTf39vb2+kpKSUGaP7/mFjdOcrIpfLIZfLH+OVVT97uQX8XW2QkFmI2GQF2oW4ix0SEZFRuXBHWyfLnJPuSrcM099BKkX79u0NEUulLF26FEFBQbC2tkbbtm1x9OhRUeLQJ90eTLqJiMxJkNvdfd0ajSBiJOIJDg6Gt7c3du/erT+mUChw5MgRhIeHAwDCw8ORnZ2NEydO6Mfs2bMHGo0Gbdu21Y85cOBAmeJu0dHRqF+/PlxcXPRj7n0e3Rjd85iD+l7aD5JcYk5EVFZxiQZXkrUriM15efkjJ93Tpk3D0qVLDRHLQ/3222+YPn063n//fZw8eRLNmjVDjx49yl1prw4JmQUAyhbdISIi09cy0EX/dUJWgYiRGFZeXh5Onz6N06dPA9AWTzt9+jTi4+MhkUgwdepUfPzxx9iyZQvOnTuHUaNGwdfXFwMHDgQAhIaGomfPnpgwYQKOHj2Kf/75B5MnT8awYcPg66vdCz9ixAhYWVlh/PjxuHDhAn777TcsXLiwzNLw1157DVFRUfjiiy8QGxuLOXPm4Pjx45g8eXJ1/0gMpoE393UTEVXkamouitUaOFpbwM9F/OKlhvLIy8vfeOMN9OnTByEhIWjYsGG5CqkbN26ssuD+68svv8SECRMwduxYAMDy5cuxdetWrFy5Em+99ZbBnrciaXnaqqmejtbV+rxERGRYbvfsub2QpECgm3muaDp+/Di6dOmi/16XCI8ePRqrV6/GzJkzkZ+fj4kTJyI7OxsdOnRAVFSUvkc3AKxduxaTJ09G165dIZVKMWTIECxatEh/3snJCTt37sSkSZMQFhYGd3d3zJ49W98uDADatWuHdevW4d1338Xbb7+NunXrYvPmzSbfo/teumJqrGBORFSWrohaQ19Hs64P9shJ95QpU7B371506dIFbm5u1fbDKS4uxokTJzBr1iz9MalUioiICMTExFR4H0O1FBEEAamK0qTbwTT2lBERUeU42dy9mHwhKQe9m/g8YHT1CgoKwrhx4zBmzBgEBAQ80WN17twZgnD/5fMSiQQffvghPvzww/uOcXV1xbp16x74PE2bNsXBgwcfOGbo0KEYOnTogwM2YbqZ7ispudBohDJV8omIarKLNaByOfAYSfeaNWuwYcMG9OnTxxDx3Fd6ejrUanWFbUViY2MrvI+hWorkKkugLNG2SnO3Z9JNRGROHMsk3cbV/3nq1KlYvXo1PvzwQ3Tp0gXjx4/HoEGDTKaoWE0V5GYHKwspCorVSMgqMNvVE0REj+pCkvkXUQMeY0+3q6srQkJCDBFLlZs1axZycnL0t4SEhCp53LRc7Sy3vdwCNlayKnlMIiIyDvfOdA9u6SdiJOVNnToVp0+fxtGjRxEaGopXX30VPj4+mDx5Mk6ePCl2eHQfFjIp6nhoW4xyiTkRkZZGI9SYme5HTrrnzJmD999/HwUF1Vtcxt3dHTKZ7JHaisjlcjg6Opa5VYXcohIAZT+YERGReXC01v5tb1zLEf2b+YocTcVatmyJRYsWISkpCe+//z6+//57tG7dGs2bN8fKlSsfuGycxMFiakREZd3KLEB+sRpyCylCzLwj1CMvL1+0aBGuX78OLy8vBAUFlSukZqgr7VZWVggLC8Pu3bv1lVM1Gg12795d7RVOC4vVAMBZbiIiM+Roo31rzClUPWSkeFQqFTZt2oRVq1YhOjoaTz31FMaPH4/bt2/j7bffxq5dux6615qqVwMfB+AUcOmOcW1ZICISi25peQNvB1jIHnku2KQ8ctKtS3jFMH36dIwePRqtWrVCmzZt8PXXXyM/P19fzby6FKlKk25LJt1EROZGt4pJUVgiciTlnTx5EqtWrcIvv/wCqVSKUaNG4auvvkKDBg30YwYNGoTWrVuLGCVVpHEt7dLJs7dzRI6EiMg43K1cbt5Ly4HHSLrff/99Q8RRKc8//zzS0tIwe/ZsJCcno3nz5oiKiipXXM3QCpl0ExGZLd3yckWRyugqTbdu3RrdunXDsmXLMHDgwHKrzQAgODgYw4YNEyE6epCmfs6QSIDE7EKk5hbB04EtR4moZtMl3Y1rmXcRNeAxkm6xTZ48udqXk/+XbqZbbmneyyCIiGoiXfVyQQDyikv0SbgxuHHjBgIDAx84xs7ODqtWraqmiKiy7OUWqOtpjyspeTiTkINuDZl0E1HNJQgCLuorl5v/THelskZXV1ekp6dX+kEDAgJw69atxw7K2ElLe5OzTg0RkfmxtpTBykL79qgwsn3dXbp0QUZGRrnj2dnZqF27tggR0aNo5ucMADidkCVuIEREIkvNVSI9rxgyqURfaNKcVWqmOzs7G9u3b4eTU+WuQmRkZECtVj9RYMbMQqZNuks0GpEjISIiQ3C0tkR6nhI5hSr4uYgdzV03b96s8P1VqVQiMTFRhIjoUTQPcMYfJ27jTAL3dRNRzXY+Uft3MMTDDtY1YMtupZeXjx492pBxmBSL0v19JWpOdRMRmSMnGwuk5ymNppjali1b9F/v2LGjzEVwtVqN3bt3IygoSITI6FHoZrrP3M42unoBRETV6UIN6c+tU6mkW8MZ3TJkUu2ywxINk24iInOk29dtLG3DdJ1DJBJJuYvglpaWCAoKwhdffCFCZPQo6ns7wNpSityiEtxIz0cdT3uxQyIiEsUF/X5u8y+iBphgITVjoNvrpyuoRkRE5kW3oqmg2DhmunUXv4ODg3Hs2DG4u7uLHBE9DkuZFI19nXD8VhbOJGQz6SaiGut8oq5dWM1Iull++zE4G9kMCBERVZ08ZYl+z21TP+Na9hYXF8eE28Q193cGAJxOyBY1DiIisaQqipCYXQipBGhSy7jeZw2FM92PwcXWCgCQXcCkm4jI3By6moZitQaBbrYI8RB/JnLRokWYOHEirK2tsWjRogeOnTJlSjVFRY+rWWnSfeZ2tqhxEBGJ5fgtbQeH+t6OcDCitpyGVOmkOykpCb6+voaMxWQ422l/OQpVahSp1DWi4h4RUU2x+1IqAOCZBp6QSMQvdPXVV18hMjIS1tbW+Oqrr+47TiKRMOk2AbqZ7kt3FPwMQUQ10onSpLtVoBG1BzGwSifdjRo1wtKlSzFixAhDxmMSHOQWkEklUGsEZBeo4O3EN0wiInOg0QjYe1mbdEeEeokcjVZcXFyFX5Np8nOxgZudFTLyi3HxjgItA2rOh04iIuDuTHdYDUq6K72n+5NPPsFLL72EoUOHIjMz05AxGT2JRAJPBzkAIFlRJHI0RERUVc7czkZ6XjEc5BZoHeQqdjhkhiQSyd0l5tzXTUQ1TGGxGhdKe3Qz6a7AK6+8grNnzyIjIwMNGzbEX3/9Zci4jJ6fiw0AICGzQORIiIioquiWlneq56HvVGFMhgwZgvnz55c7vmDBAgwdOlSEiOhxsJgaEdVUZ29no0QjwMtRrs+naoJHKqQWHByMPXv2YMmSJRg8eDBCQ0NhYVH2IU6ePFmlARorfxdbHLuZhYQsJt1EROZi16UUAEDXUE+RI6nYgQMHMGfOnHLHe/XqxT7dJoQz3URUUx3X7+d2NYq6KdXlkauX37p1Cxs3boSLiwsGDBhQLumuKfxcbQEACZmFIkdCRERVITG7ELHJuZBKgM71jTPpzsvLg5WVVbnjlpaWUCgUIkREj6NZaSu6mxkFyMovhotd+X9TIiJzpCui1rIGLS0HHjHp/u677/D6668jIiICFy5cgIeHh6HiMnr+pcshbmXkixwJERFVhT2ls9wtA1zgaqRJUJMmTfDbb79h9uzZZY7/+uuvaNiwoUhR0aNytrVCsLsd4tLzceZ2ttFe5CEiqkoajYCT8TWvcjnwCEl3z549cfToUSxZsgSjRo0yZEwmoZ6XAwDgcnIuBEGoUcsjiIjM0a7S/dxdjaRqeUXee+89DB48GNevX8czzzwDANi9ezd++eUX/PHHHyJHR4+imZ8T4tLzcTKeSTcR1Qw30vOQXaCCtaUUDX0dxQ6nWlU66Var1Th79iz8/PwMGY/JqO/tAKkEyMgvRmquEl6O1mKHREREjylfWYKY6xkAjHc/NwD069cPmzdvxty5c7F+/XrY2NigadOm2LVrF55++mmxw6NH0CbYDZtPJ+HfGxlih0JEVC2O39TOcjfzc4alzPiKlRpSpZPu6OhoQ8ZhcqwtZajtYY9rqXm4eEfBpJuIyIQdupaOYrUG/q42qOtpL3Y4D9SnTx/06dNH7DDoCT1VW9uS7nR8NopUalhbykSOiIjIsHT7uVsF1ayl5cAjtAyj8kJ9tMsiLt1h8RoiIlO2R7e0vIGXSWwXOnHiBH7++Wf8/PPPOHXqlNjh0GMIdreDl6McxWqNfo8jEZE5O3FP5fKahkn3E2hUuheBLT+IiEyXRiNgd6xuP7fxLi0HgNTUVDzzzDNo3bo1pkyZgilTpiAsLAxdu3ZFWlqa2OHRI5BIJHiqthsA4N/rXGJOROYtI0+JG+naAtQtApzFDUYETLqfQOsg7VWao3GZEARB5GiIiOhxnE3MQXqeEvZyC7QNdhM7nAd69dVXkZubiwsXLiAzMxOZmZk4f/48FAoFpkyZInZ49Ij0SfeNTJEjISIyrJPx2QCAup72cLY1zg4hhlQzm2xXkSa1nGBtKUVWgQrXUvNQt7SiORERmQ5dq7BO9dxhZWHc16KjoqKwa9cuhIaG6o81bNgQS5cuRffu3UWMjB5HeGnSfSohC4XFathYcV83EZmn47e0Fxdr4n5ugDPdT8TKQoqWAdpfnCNxvEpNRGSKdK3CnmlgvK3CdDQaDSwtLcsdt7S0hEajESEiehKBbrbwdrSGSi1wXzcRmbWjpbmSLneqaZh0P6E2wdol5mz5QURkepKyC3HxjgISCdClvofY4TzUM888g9deew1JSUn6Y4mJiZg2bRq6du0qYmT0OCQSCcJDdEvM+TmCiMxTTqFKXwOrfR13cYMRCZPuJ9Sh9Bfn4NV0lKg5y0BEZEr2lBZQa+HvDDd7ucjRPNySJUugUCgQFBSEkJAQhISEIDg4GAqFAosXLxY7PHoMutZhMSymRkRmKuZ6BjQCUNvDDr7ONmKHIwru6X5CLQJc4GJriawCFU7cykLb2sZdhIeIiO7aXbqfu2uo8S8tBwB/f3+cPHkSu3btQmxsLAAgNDQUERERIkdGj0tXTO3M7WwUFJfA1oofzYjIvBy6pu2u0bGGznIDTLqfmEwqQZf6nth4KhG7Y1OZdBMRmYiC4hL8Uzq7GGEiSTegXZLcrVs3dOvWTexQqAoEuNrC18kaSTlFOHkrGx3q1twPpURknv65pn2v7VDX+LdxGQqT7irQNdRLm3RfSsHbvUMffgciIhLdP9cyUFyiQS1nG9Tzshc7nPtatGhRpceybZjp0fXr3ngqETE30pl0E5FZuZ1VgLj0fMikEv12mprIJJLumzdv4qOPPsKePXuQnJwMX19fvPDCC3jnnXdgZSV+n7eO9dxhKZPgelo+rqTkoh5bhxERGT3d0vKIUE9IJBKRo7m/r776qlLjJBIJk24T9VSINulmv24iMjeHrqYDAJr7O8PBunz3jZrCJJLu2NhYaDQafPvtt6hTpw7Onz+PCRMmID8/H59//rnY4cHR2hKd63si+mIKNp9KxMyeDcQOiYiIHkCjEfRF1Ix9P3dcXJzYIZCB6fp1n0nIRr6yBHZyk/h4RkT0UAevaZPuDjV4PzdgItXLe/bsiVWrVqF79+6oXbs2+vfvjzfeeAMbN24UOzS9gc1rAQD+PJ0EjUYQORoiInqQ80k5SM1Vws5KhrYmuNytuLgYly9fRklJidihUBXwc7FBLWcblGgEHLvJ2W4iMg8ajYDDpUl3xxq+dcYkku6K5OTkwNXVeD4odQ31hIPcAonZhTh+K0vscIiI6AF2XdLOcnes6wG5hUzkaCqvoKAA48ePh62tLRo1aoT4+HgAwKuvvopPP/1U5OjocUkkEv0s0L7LaSJHQ0RUNS7eUSCrQAV7uQWa+TuLHY6oTDLpvnbtGhYvXoyXXnrpgeOUSiUUCkWZm6FYW8rQq4k3AGDjydsGex4iInpye2J1rcI8RY7k0cyaNQtnzpzBvn37YG1trT8eERGB3377TcTI6El1aaD9Xdx7ORWCwBVzRGT6Dpbu536qthssZSaZdlYZUV/9W2+9BYlE8sCbrg+pTmJiInr27ImhQ4diwoQJD3z8efPmwcnJSX/z9/c35MvB4JZ+AIAtZ5KgKFIZ9LmIiOjxJOcU4XyiAhLJ3UTHVGzevBlLlixBhw4dyhR/a9SoEa5fvy5iZPSkOtTVFmW9lVGAG+n5YodDRPTE9P25a/jSckDkpPv111/HpUuXHnirXbu2fnxSUhK6dOmCdu3aYcWKFQ99/FmzZiEnJ0d/S0hIMOTLQdtgV9TzskdBsRobTnC2m4jIGG08pf373NzfGe72cpGjeTRpaWnw9Cx/oSA/P7/KK7Cr1Wq89957CA4Oho2NDUJCQvDRRx+VmYUVBAGzZ8+Gj48PbGxsEBERgatXr5Z5nMzMTERGRsLR0RHOzs4YP3488vLyyow5e/YsOnbsCGtra/j7+2PBggVV+lpMgb3cAm2DtQXV9pYW+SMiMlVFKjWO3dRuuW1fw4uoASIn3R4eHmjQoMEDb7qWYImJiejcuTPCwsKwatUqSKUPD10ul8PR0bHMzZAkEglGhgcBAH6KucWCakRERuZWRj4W7dYmhcPbBIgczaNr1aoVtm7dqv9el2h///33CA8Pr9Lnmj9/PpYtW4YlS5bg0qVLmD9/PhYsWIDFixfrxyxYsACLFi3C8uXLceTIEdjZ2aFHjx4oKirSj4mMjMSFCxcQHR2Nv//+GwcOHMDEiRP15xUKBbp3747AwECcOHECn332GebMmVOpi+vmRrfyYg+TbiIycUfjMlFcooGPkzVCPOzEDkd0JtGTQpdwBwYG4vPPP0da2t0iI97e3iJGVt6gFrUwf3ssbqTn45/r6ehY10PskIiICNpZ2bc2nEORSoPw2m4YGuYndkiPbO7cuejVqxcuXryIkpISLFy4EBcvXsThw4exf//+Kn2uw4cPY8CAAejTpw8AICgoCL/88guOHj0KQPvz/Prrr/Huu+9iwIABAIAff/wRXl5e2Lx5M4YNG4ZLly4hKioKx44dQ6tWrQAAixcvRu/evfH555/D19cXa9euRXFxMVauXAkrKys0atQIp0+fxpdfflkmOa8JnmngiY/+vohjNzORW6Sq0T1tici0Hbiizdc61HGv8pVYpsgkdrRHR0fj2rVr2L17N/z8/ODj46O/GRt7uQWeLf0g9/1B9lYlIjIWvxxNQMyNDFhbSvHpkCYm9SHg/PnzAIAOHTrg9OnTKCkpQZMmTbBz5054enoiJiYGYWFhVfqc7dq1w+7du3HlyhUAwJkzZ3Do0CH06tULgLZ/eHJyMiIiIvT3cXJyQtu2bRETEwMAiImJgbOzsz7hBrRF36RSKY4cOaIf06lTJ/3KNgDo0aMHLl++jKysmtUNJNjdDsHudlCpBfxT2maHiMjUCIKA6EvagqXPmFjtFEMxiZnuMWPGYMyYMWKHUWnj2gfjp39vYf+VNJy7nYMmfk5ih0REVKPdySnEvG2XAABvdK+PQDfTWurWtGlTtG7dGi+++CKGDRuG7777zuDP+dZbb0GhUKBBgwaQyWRQq9X45JNPEBkZCQBITk4GAHh5eZW5n5eXl/5ccnJyuT3oFhYWcHV1LTMmODi43GPozrm4uJSLTalUQqlU6r83ZHeS6talvifi0uOwJzYVPRsb3+QCEdHDXE3Nw62MAlhZSNGpHlf9AiYy021qAtxs0b+ZLwBg6d5rIkdDRFSzCYKAdzedR66yBM39nTG2ffDD72Rk9u/fj0aNGuH111+Hj48PxowZg4MHDxr0OX///XesXbsW69atw8mTJ7FmzRp8/vnnWLNmjUGftzKquztJderSQPsBde/lNNaGISKTtPOC9qJqhzrusJObxByvwTHpNpBXOocAAKIuJONKSq7I0RAR1VxbziRhd2wqLGUSLHi2KWRS01lWrtOxY0esXLkSd+7cweLFixEXF4enn34a9erVw/z58/WzxlVpxowZeOuttzBs2DA0adIEI0eOxLRp0zBv3jwAd2uqpKSklLlfSkqK/py3tzdSU8sWBSspKUFmZmaZMRU9xr3P8V/V3Z2kOrUJdoWtlQxpuUpcSDKfGXwiqjmiL2r/hndr6PWQkTUHk24DqevlgF6NtR8WluzhbDcRkRgy8pSYs+UCAODVZ+qinpeDyBE9GTs7O4wdOxb79+/HlStXMHToUCxduhQBAQHo379/lT5XQUFBuU4hMpkMGo0GABAcHAxvb2/s3r1bf16hUODIkSP6Surh4eHIzs7GiRMn9GP27NkDjUaDtm3b6sccOHAAKpVKPyY6Ohr169evcGk5UP3dSaqT3EKGDqXtdVjFnIhMTXJOEc7czoFEAnQN5X5uHSbdBjT5mToAtLMs5xNzRI6GiKjmmfPXRWQVqNDA2wEvPx0idjhVqk6dOnj77bfx7rvvwsHBoUwrsarQr18/fPLJJ9i6dStu3ryJTZs24csvv8SgQYMAaNuVTZ06FR9//DG2bNmCc+fOYdSoUfD19cXAgQMBAKGhoejZsycmTJiAo0eP4p9//sHkyZMxbNgw+Ppqt2GNGDECVlZWGD9+PC5cuIDffvsNCxcuxPTp06v09ZgSXeGhvZeZdBORadEVUGvh7wxPB2uRozEeXGRvQI18nTCguS/+PJ2E+VGx+Gl8W7FDIiKqMaIvpuCvM0mQSoAFzzaFlYX5XGc+cOAAVq5ciQ0bNkAqleK5557D+PHjq/Q5Fi9ejPfeew+vvPIKUlNT4evri5deegmzZ8/Wj5k5cyby8/MxceJEZGdno0OHDoiKioK19d0PWmvXrsXkyZPRtWtXSKVSDBkyBIsWLdKfd3Jyws6dOzFp0iSEhYXB3d0ds2fPrnHtwu6l69d95nY20nKV8HCQixwREVHl6JaWd29kXG2dxSYRBKHGVOlQKBRwcnJCTk5OtS1FS8gsQNcv9qNYrcGP49qwgh8RUTXIKVSh+1f7kaJQ4qWna2NWr1BR46mK95+kpCSsXr0aq1evxrVr19CuXTuMHz8ezz33HOzsTKsae1UT4/3d0AYsOYQzt3Pw0cDGGPlUoNjhEBE9lKJIhbCPoqFSC9j9+tMI8bAXOySDq+z7j/lc9jdS/q62GBmufbOctz0WalYiJSIyuHnbLiFFoUSwux2mRdQTO5wn1qtXLwQGBmLx4sUYNGgQLl26hEOHDmHs2LE1PuE2V32aatuFbTt7R+RIiIgqZ//lNKjUAmp72NWIhPtRMOmuBpO71IGDtQUu3VHg12PxYodDRGTW/rmWjl+PaatZfzq4CawtZSJH9OQsLS2xfv163L59G/Pnz0f9+vXFDokMrFdpj+4jcRlIzS0SORoioofTLy1vyKXl/8Wkuxq42FlhejftTMv87bFIz1OKHBERkXkqKC7BWxvPAgBGPhWItrXdRI6oamzZsgUDBgyATGb6FxCocvxdbdHM3xkaAdhxvupbwhERVaXiEg32lnZcYKuw8ph0V5ORTwWioY8jFEUlmLctVuxwiIjM0uc7riAhsxC+TtZ4s1cDscMheiJ9mmhni7ae4xJzIjJu/97IQK6yBO72crTwdxY7HKPDpLuaWMik+GRQY0gkwIaTt3HkRobYIRERmZUTt7Kw6nAcAGDu4Cawl7NBB5m23k10S8wzucSciIzaljNJAIAejbwglUpEjsb4MOmuRi0CXDCsdQAA4O1N51CkUoscERGReVCWqPHmhrMQBGBwy1roXN9T7JCInpifiy2a+ztDEIAoLjEnIiNVpFLr/0YNaF5L5GiME5PuavZmz/pwt5fjelo+voy+InY4RERmYcmea7iWmgd3eyvM7ttQ7HCIqkyf0tnuraxiTkRGak9sKvKUJajlbINWgS5ih2OUmHRXM2dbK3w6uAkA4LuDN3A0LlPkiIiITNvFJAWW7bsOAPhwQGM421qJHBFR1elVuq/76M1MpCq4xJyIjM+fpxMBAP2a+XJp+X0w6RZBREMvDA3zgyAAb/xxBvnKErFDIiIySSVqDWZuOIMSjYCejbz1e2CJzMW9S8y3c4k5ERmZnEIV9samAQAGtvAVORrjxaRbJO/1awhfJ2vEZxbgk22XxA6HiMgkfXcwDucTFXC0tsCHAxuJHQ6RQfRtyiXmRGScos7fQbFag/peDmjg7Sh2OEaLSbdIHK0t8dnQZgCAdUfi8ffZJJEjIiIyLdfT8vDVLm1tjPf6NoSng7XIEREZhm4Fx9GbmUjILBA5GiKiu/48rc1hBnCW+4GYdIuofR13/K9zCADgrQ3ncDM9X+SIiIhMg0Yj4K0NZ1FcokGneh54NsxP7JCIDMbX2QbtQtwAaNuOEhEZg+ScIsSUtkHu15RJ94Mw6RbZ693qoXWQC/KUJXhl7Um2ESMiqoTFe67h2M0s2FrJMHdQY0gkLNxC5m1oK+2FpQ0nb0OjEUSOhogI+PtsEgQBaBXoAn9XW7HDMWpMukVmIZNi8fCWcLWzwsU7Cnz090WxQyIiMmpL917TLyt/t09D+LnwjZ7MX89GPnCQWyAhsxBH2PmEiIzA3aXl7M39MEy6jYC3kzW+er45JBJg7ZF4/HYsXuyQiIiM0tK91/DZjssAgBk96mNE2wCRIyKqHjZWMvRtpt3b/ceJBJGjIaKa7lpqLs4l5sBCKkEfdg55KCbdRuLpeh6Y2rUeAODdzefZv5uI6D/+m3BP6lJH5IiIqtezYf4AgO3nkpHHdqNEJKJfjmov/nVp4AlXOyuRozF+TLqNyJSuddCnqQ9UagEv/3yCFUqJiEox4SYCWgY4o7aHHQpVamxj+zAiEkmRSq0v6jiiDVecVQaTbiMikUjw+bPN0LiWIzLzi/HimuO8kk1ENR4TbiItiUSir9TPJeZEJJYdF5KRXaCCr5M1OtXzEDsck8Ck28jYWMnw3ahW8HCQ43JKLiatPQmVWiN2WEREorg34X6jez0m3FTjDWnpB6kEOHYzC3FsNUpEIlh3RFt/6vnWAZBJ2T2kMph0GyEfJxt8N6oVrC2l2H8lDTPXn2V7ECKqcb7ZVzbhnvxMXZEjIhKfl+PdmaX1nO0momp2Iy0PR+IyIZUAz7X2Ezsck8Gk20g193fGN5EtIZNKsOlUIuZtvyR2SERE1eabfdewIIoJN1FFhpYWVPv9+G0Ul3A1HBFVn1+PlRZQq+8JHycbkaMxHUy6jdgzDbywYEhTAMB3B+Ow4sB1kSMiIjK8exPu17sx4Sb6r24NveDpIEdarhJRF5LFDoeIaghliRrrT2gLqA1nAbVHYnJJt1KpRPPmzSGRSHD69GmxwzG4IWF+eLt3AwDA3G2x+PUoe3gTkflatu96mYT71a5MuIn+y8pCqu9Rv+bwTXGDIaIaY+eFFGTmF8PLUY7O9VlA7VGYXNI9c+ZM+Pr6ih1GtZrYKQQTO9UGAMzadA6/H+MeLiIyP8v2Xcf8qFgATLiJHmZE2wBYyiQ4cSsL5xNzxA6HiGqAX0on/55v5Q8LmcmlkaIyqZ/W9u3bsXPnTnz++edih1LtZvVqgDHtgiAIwJsbz+KP40y8ich8MOEmejSeDtbo1dgHAPBjzE1xgyEis3clJReHr2dAIgGea+0vdjgmx2SS7pSUFEyYMAE//fQTbG1tK3UfpVIJhUJR5maqJBIJ3u/XEKPCAyEIwMwNZ7GhdE8FEZEpuzfhns6Em6jSRrcLBAD8eToJWfnFIkdDROZs5aE4AED3hl7wc6lcLkZ3mUTSLQgCxowZg5dffhmtWrWq9P3mzZsHJycn/c3f37SvykgkEnzQvxFeeCoAggC8sf4MfueMNxGZsOX7yybcU5hwE1VaywAXNK7lCGWJBr/x8wARGUhGnhIbTyUCAF7sWFvkaEyTqEn3W2+9BYlE8sBbbGwsFi9ejNzcXMyaNeuRHn/WrFnIycnR3xISTP8NSSKR4MP+jRHZVpt4z1x/Ft8duCF2WEREj2z5/uv4dDsTbqLHJZFIMCo8CADwU8wtqDWCuAERkVlaeyQexSUaNPVzQqtAF7HDMUkWYj7566+/jjFjxjxwTO3atbFnzx7ExMRALpeXOdeqVStERkZizZo1Fd5XLpeXu485kEol+HhgY9jLLfDtgRv4ZNslZBYUY2aP+pBIJGKHR0T0UPcm3NMimHATPa7+zXwxb9slJGYXYtelFPRo5C12SERkRpQlavwYcwsAML5DMHONxyRq0u3h4QEPj4eXm1+0aBE+/vhj/fdJSUno0aMHfvvtN7Rt29aQIRotiUSCWb1D4WJnhU+3x2LZvuvILijGxwObQCbl/wxEZJwEQcA3+67jsx3atmDTIurhtQgm3ESPy9pShudbB2D5/uv44WAck24iqlJbTichPU8Jb0dr9G7iI3Y4JkvUpLuyAgLKNl+3t7cHAISEhMDPz0+MkIzGy0+HwNnGEm9vOodfjiYgK1+Fr55vDhsrmdihERGVkZVfjBnrz2LXpRQATLiJqsrY9kFYeSgOR29m4vjNTLQKchU7JCIyA4Ig4IfSAmqj2wXBkm3CHht/cmZgWJsALB3RElYyKaIuJGPYihikKorEDouISO9oXCZ6LzqIXZdSYCWT4sMBjZhwE1URL0drDG5ZC4B26wYRUVWIuZ6B2ORc2FjKMKJNwMPvQPdlkkl3UFAQBEFA8+bNxQ7FaPRq4oOfX2wLF1tLnLmdg4FL/8HFJNNtkUZE5kGtEbB491UMWxGDOzlFCHa3w8ZX2umLPxFR1ZjYqTYkEmDXpVRcTs4VOxwiMgPfHdQWa342zA9OtpYiR2PaTDLppoq1CXbFplfao7aHHZJyijB0+WHsiU0ROywiqqFSFUUY+cMRfBF9BRoBGNyiFv56tQMa13ISOzQis1Pbwx69Gmv3c3/L2W4iekLnE3Ow93IapBJgXIdgscMxeUy6zUyQux02/a892oW4Ib9YjRfXHMe3+69DENhGhIiqz77Lqei18CAOX8+ArZUMXwxthi+fbw57uUmUEiEySS8/HQIA+PNMEm5nFYgcDRGZssV7rgIA+jXzRbC7ncjRmD4m3WbIydYSa8a1wfA2/tAIwLztsfjfzyeRW6QSOzQiMnPFJRrM23YJY1YdQ0Z+MUJ9HPHXqx0wJKxmF70kqg5N/ZzRoY471BoB3x+MEzscIjJRsckK7LiQAokEmNyljtjhmAUm3WbKUibF3EFN8PHAxrCUSRB1IRkDlvyDKync50VEhhGfUYCh38bg2wPaPWCjwwOx6ZV2CPGwFzkyoprjf521s92/HotHRp5S5GiIyBQt2XMNANCrsTfqejmIHI15YNJtxiQSCV54KhC/vxQOHydr3EjPx4Al/2DLmSSxQyMiM7P17B30WXQQZxKy4WhtgeUvhOGDAY1hbcn2hUTVqV2IG5r6OaFIpcGK0iJIRESVdS01D1vP3QEATO7CLiNVhUl3DdAiwAV/v9oB7eu4oVClxpRfTuGdTedQWKwWOzQiMnGFxWrM2ngOk9adRK6yBGGBLtj2Wkf0LC3oRETVSyKRYMoz2g/Kaw7fRGouW4gSUeV9s/caBAHo1tALDX0dxQ7HbDDpriHc7OX4cVxbvFK67GztkXj0W3IIF5JyRI6MiEzVlZRcDFh6CL8cjYdEAkzqEoLfJj4FPxdbsUMjqtG6hnqimb8zilQaLNvHSuZEVDk30/Ox+XQiAOgv3lHVYNJdg8ikEszs2QA/jmsDDwc5rqXmYdDSw/j+4A1oNKxuTkSVIwgCfj0aj/5LDuFKSh7c7eX4aVxbzOjRABYyvq0QiU0ikeCN7vUAAGv/jUdSdqHIERGRKVi85xo0AtC5vgea+LG9Z1Xip6MaqFM9D0S91hERoZ4oVmvw8dZLGL3qKFIVXIJGRA+WW6TClF9P462N51Ck0qBjXXdsf60jOtR1Fzs0MoDExES88MILcHNzg42NDZo0aYLjx4/rzwuCgNmzZ8PHxwc2NjaIiIjA1atXyzxGZmYmIiMj4ejoCGdnZ4wfPx55eXllxpw9exYdO3aEtbU1/P39sWDBgmp5feasQx13tAl2RbFagyV7r4kdDhEZucvJudh46jYAYGpEPZGjMT9MumsoN3s5vhvVCh8NbAy5hRQHr6aj+9cHsOnUbfb0JqIKnYzPQp9Fh/DXmSTIpBK82bMB1ozVrpwh85OVlYX27dvD0tIS27dvx8WLF/HFF1/AxcVFP2bBggVYtGgRli9fjiNHjsDOzg49evRAUdHdi7iRkZG4cOECoqOj8ffff+PAgQOYOHGi/rxCoUD37t0RGBiIEydO4LPPPsOcOXOwYsWKan295kYikeD1btoPzr8fS0B8Bvt2E9H9fbYjFoKgrVje3N9Z7HDMjkSoQRmWQqGAk5MTcnJy4OjIwgA6V1NyMfW307iQpAAAdG3giU8GNYG3k7XIkRGRMUjOKcKCHbHYeFK7z6uWsw0WDW+BsECXh9yTdEzx/eett97CP//8g4MHD1Z4XhAE+Pr64vXXX8cbb7wBAMjJyYGXlxdWr16NYcOG4dKlS2jYsCGOHTuGVq1aAQCioqLQu3dv3L59G76+vli2bBneeecdJCcnw8rKSv/cmzdvRmxsbKViNcWfb3UZ+cMRHLyajiEt/fDFc83EDoeIjNCxm5kYujwGMqkEO6d1YqvPR1DZ9x/OdBPqejlg86T2eKN7PVjJpNgdm4puX+7Hb8fiOetNVIMVFquxaPdVdPl8nz7hHtLSD9umdGTCXQNs2bIFrVq1wtChQ+Hp6YkWLVrgu+++05+Pi4tDcnIyIiIi9MecnJzQtm1bxMTEAABiYmLg7OysT7gBICIiAlKpFEeOHNGP6dSpkz7hBoAePXrg8uXLyMrKqjA2pVIJhUJR5kYVe717fQDAplO3cSUlV+RoiMjYCIKAT7drL3A+18qfCbeBMOkmAIClTIrJz9TF31M6oJm/M3KVJXhzwzmMWnkUtzLyxQ6PiKqRIAj483Qiun6xD19GX0GhSo1WgS74c1J7fPFcMzjZWoodIlWDGzduYNmyZahbty527NiB//3vf5gyZQrWrFkDAEhOTgYAeHl5lbmfl5eX/lxycjI8PT3LnLewsICrq2uZMRU9xr3P8V/z5s2Dk5OT/ubv7/+Er9Z8Nfd3RveGXtAIwNxtl8QOh4iMzK5LqThxKwvWllJMjWDFckNh0k1l1PNywIaXw/F27wb6vd7dvjqAr6KvoEjFvt5E5u5UfBaGLDuM1349jaScItRytsHi4S3wx8vhaMY9XjWKRqNBy5YtMXfuXLRo0QITJ07EhAkTsHz5crFDw6xZs5CTk6O/JSQkiB2SUZvVOxQWUgn2XU7D/itpYodDREZCrRGwIEo7yz22fTC8HLm11FCYdFM5FjIpJnYK0VYkruOO4hINFu6+iu5fHcCe2BSxwyMiA7iTU4hpv53GoG8O42R8NmytZHijez3sfv1p9GvmC4lEInaIVM18fHzQsGHDMsdCQ0MRHx8PAPD29gYApKSUfV9ISUnRn/P29kZqamqZ8yUlJcjMzCwzpqLHuPc5/ksul8PR0bHMje4v2N0Oo8KDAACfbL2IErVG3ICIyCisP5GAq6l5cLKxxMtPh4gdjllj0k33VdvDHj+Nb4OlI1rC29Ea8ZkFGLf6OF5ccxwJmayCSmQOCovV+HrXFXT5fB82ndLu2342zA973+iMyc/UhbWlTOQISSzt27fH5cuXyxy7cuUKAgMDAQDBwcHw9vbG7t279ecVCgWOHDmC8PBwAEB4eDiys7Nx4sQJ/Zg9e/ZAo9Ggbdu2+jEHDhyASqXSj4mOjkb9+vXLVEqnJzOlax042VjiSkoefj9+W+xwiEhkiiIVPtuh/Rs/uYv27wMZDpNueiCJRII+TX2w+/Wn8dLTtWEhlWDXpRREfLkfC6JioShSPfxBiMjoaDQCNp9KxDNf7MPXu66iSKVB6yAXbJncHp8PbcYlZoRp06bh33//xdy5c3Ht2jWsW7cOK1aswKRJkwBo3x+mTp2Kjz/+GFu2bMG5c+cwatQo+Pr6YuDAgQC0M+M9e/bEhAkTcPToUfzzzz+YPHkyhg0bBl9fXwDAiBEjYGVlhfHjx+PChQv47bffsHDhQkyfPl2sl26WnG2t9Ps1v4y+jFy+fxPVaIt2XUV6XjFqe9hhdLsgscMxe2wZRo/kWmouZv95AYevZwAAXO2s8FrXuhjRNgCWMl7DITIFJ+Oz8OFfF3E6IRuAtgXY271D0buJN5eRG4ipvv/8/fffmDVrFq5evYrg4GBMnz4dEyZM0J8XBAHvv/8+VqxYgezsbHTo0AHffPMN6tWrpx+TmZmJyZMn46+//oJUKsWQIUOwaNEi2NvfrZB79uxZTJo0CceOHYO7uzteffVVvPnmm5WO01R/vtVNpdagx1cHcCM9H690DsHMng3EDomIRHAtNQ89vz6AEo2A1WNbo3N9z4ffiSpU2fcfJt30yARBwK5LqZi3/RJupGkrmwe72+HNnvXRoxE/tBMZq6TsQsyPisWfp5MAALZWMkzqUgfjOwRzGbmB8f3HsPjzrbzoiymY8ONxWFlIsXNqJwS524kdEhFVI0EQMHrVMRy4koaIUE98P7q12CGZtMq+/1hUY0xkJiQSCbo19ELn+h749VgCFu66grj0fLz880m0CnTBjB710ba2m9hhElGpnEIVfjgUhxUHrqNIpYFEAjzb0g8zetSHJ5eRE9UoEaGe6FjXHQevpmP2lgtYM7Y1L5YT1SC7L6XiwJU0WMmkePf/7d15WFRl+wfw7wwDwzIw7JvsLriAgJq4pFnycwlNs00zc8vKcK9e831Ty0xNK8sWbXPpzSUtl3LrNQVNRUUQd3FDQHZBZliHYeb5/WFMTpAiAgPy/VzXXM6c85wz99zOzOGe85zniWx/9w2oTrDoplozN5NiVDdfPBnWAl/tv4Jv/riK4yk38dzXR9CjpROmRbRBV39HU4dJ1Gyl5Zdg1aFr+DEuFcXlt6b86+rniNmD2iPYS2ni6IjIFCQSCeYNCUL/pQdw4GIudp7OQmRHD1OHRUQNQFOhw3s7zgEAxvfyZ0+XBsSim+6bQi7D6/0CMTLcF5/tu4SNx9Nw+EoeDl+JRc9WTpge0QZd/Fh8EzWUU9cL8M0fydh5OhM6/a0riALdbDGlb2tet01E8He2wat9WmLZ3kuYt/0sHgl0gULOPwmJHnRfRl9BSl4JXG3lmPRoK1OH06zwG5bqjLvSEu8/GYyJfVriy5gr2HQ8DYcu5+HQ5Vj0au2MqX1bs/gmqid6vUB0Ug6++eMqjlzNNyx/uJUzJvQOQO/Wziy2icjgtT4tsS0xHSl5JVi65yJmD2I3U6IH2eWcQnwZcxkAMHdwB9jwh7YGxYHUqN5cv1mCL6IvY9Px66j482xbF18HvNw7ABHt3CCVsgAgul9lWh22nkjHN39cxZU/BzaUSSV4IsQT43v5o4Mnu5E3Bjz+1C/mt3b2X8zF6JXHYCaV4NdJD6O9J3NH9CDS6wWe+zoWcdduom9bV3w7ugt/iK8jHL28Gjwom0Za/q3ie3NCOsp1egBAgLMNXuoVgGGdWnDUZKJauFlcjh+OpGBN7DXcKCoHANjKZXg+3AdjevrBQ2ll4gjpdjz+1C/mt/ai1iZgx+lMhHrb4+eJPWDGH8SJHjjrjqbi31tOw9rCDHtmPIIW9vwboa6w6K4GD8qmlaMuw6rD1/DDkRQUllUAAJwVFhjd3Q+juvvC3trCxBESNX4pecX47mAyNh5PQ5n21o9YnkpLjHvYH8895A1bS3MTR0jV4fGnfjG/tZelKsP/fbwfhZoK/OfxdpjQO8DUIRFRHcpRl6Hvx/tRWFaBOYPaY9zD/qYO6YHCorsaPCg3DkWaCmw4loqVB5ORoSoDAFiaS/FEiCdGdfPjqMpE1UhIvYlvDlzF7rNZqPzWbu9hh1ceCcDjwR4wN5OaNkC6Ix5/6hfze382HEvFW5tPQy6TYtfUXghwUZg6JCKqI6+tjcfO01no6KXEltd6sjdLHavp8adJ/ZW2Y8cOhIeHw8rKCg4ODhg6dKipQ6JaUMhleKlXAPb/61EsfS4E7TzsUKbVY+Px6xj8+UEM+fwgNh1PQ5lWZ+pQiUxKVaLF+mOpGPblIQz78jB2nblVcPcJdMG6l8KxY8rDGBLaggU3Ed2X5x7yRq/WztBU6PGvn04ZZj0goqZtx6lM7DydBTOpBAuHBbPgNqEmM2zdzz//jAkTJmDBggV47LHHUFFRgTNnzpg6LLoP5mZSPBnmhaGhLRCfchP/PZKCnaczcfK6Cid/OoX5O87j2S5eGBnuy3kEqdkor9AjOikHW0+kY+/5HMM4COZmEgwNbYGXegUg0N3WxFES0YNEIrn1B3n/pQdwPOUm1hy+xi6oRE1cTmEZ3t56GsCt2Qo4sKppNYnu5RUVFfDz88O7776L8ePH13o/7H7W+N0o0mDj8TSsPZKK9IJSw/Kufo54qnMLPB7swWtW6YEjhEBC6k1sOZGO7acyUVCiNawLdLPFk51aYFhYC7jaWZowSrofPP7UL+a3bvxwJAVvbz0DS3MpfpvWG75O/MGbqCkSQuClNcex90IO2nvYYWtUT1jI2CuuPtT0+NMkznQnJCQgPT0dUqkUYWFhyMrKQmhoKJYsWYKgoCBTh0d1yFkhx2t9WuGV3i0Rk5SDH46kIOZiLo5dy8exa/mY+8tZ9O/gjmGdvPBwK2d2k6EmLflGMbaeSMfWP+fKreRqK8eQUE8MDWuB9h52nNaDiBrE8119sONUJmKv5uH1jSex4eVukPHyFaImZ1P8dey9kAMLMyk+fi6EBXcj0CSK7qtXrwIA3nnnHXz88cfw8/PDRx99hD59+uDixYtwdHSsdjuNRgONRmN4rFarGyReun9mUgn6tnND33ZuyFKVYcuJdPyccB2Xc4qwLTED2xIz4GYnx9CwFngyrAUC3WxZmFCTkF9cju2nMrDlRDpOpBYYlltbmGFAB3c82akFerTkD0pE1PCkUgkWP90RAz/9A8dTbmJ5zBVM7tva1GER0T24frME8349BwCY/n9t0NadvX8aA5N2L3/rrbfwwQcf3LHN+fPnkZCQgJEjR+Krr77Cyy+/DOBWQe3l5YX58+fjlVdeqXbbd955B++++26V5ex+1jQJIXDqugo/J1zHLyczjLrgBrjY4PEgDwwMdueZQWp0yrQ67D2fgy0nriMmKRcVfw5SJJUAvVq74MmwFujXwQ3WFk3id1CqBXZ/rl/Mb93acuI6pv94EmZSCX56tTvCfBxMHRIR1YBOLzDy2yM4cjUfnX0dsPGV7vwRv541iSnDcnNzkZeXd8c2AQEBOHToEB577DH88ccfePjhhw3rwsPDERERgffff7/abas70+3t7c2D8gNAU6FD9IVcbE64jpiLuSiv0BvW+TlZY2CwByKDPdDBkwU4mUaOugwxF3MRk5SDPy7eQKGmwrAuqIUdhoa2wBOhnnC15XXazQGLwvrF/NYtIQSmbkjELycz4OtkjR1TekEh54+CRI3d5/su4cP/XYSVuRl2Tu0Ffw5EXO+axDXdLi4ucHFxuWu7zp07Qy6XIykpyVB0a7VaXLt2Db6+vv+4nVwuh1wur7N4qfGQy8wwIMgdA4LcUVimxb4LOdh5OhMxSbm4lleC5TFXsDzmCrwdrdC/vTsea+uKLn6OvKaF6k2FTo/EtAJEJ+UgJikXZzOML2fxVFoaLodo7cbRx4mo8ZJIJHhvaBDiU24iJa8E7/5yFkueCTF1WER0B3HX8rH090sAgPeGBrHgbmSaxM+WdnZ2ePXVVzF37lx4e3vD19cXS5YsAQA888wzJo6OTM3W0hxDQltgSGgLFGkqEP1nAR6dlIO0/FJ8ezAZ3x5Mho2FGR5u7YzH2rqiT6Ar3DgSNN2n3EIN9v95NvvAxVyoyyqM1od4KfFIoCv6BLog1MseUnbxIqImQmlljqXPhWL417HYFH8dvdu4YHCIp6nDIqJqFJSUY+r6E9DpBZ4Ma4GnOrUwdUj0N02i6AaAJUuWQCaTYdSoUSgtLUV4eDj27dsHBwdeZ0R/UchlGBziicEhnigpr0BMUi72XchBTFIObhSV47ez2fjtbDYAoIOnHR79syAK8baHOUdopbvQ6QUS0wqwPykH0Um5OJ2uMlqvtDJH7zYueDTQBb3buMBZwZ42RNR0dfV3RNSjrfDZvst46+dTaO9ph5YuClOHRUS3EULgXz+dQoaqDH5O1nhvaBAvrWyEmsQ83XWF13w1X3q9wJkMFaIv5CI6KQcnrxfg9ne+lbkZuvg5oFuAE7oFOKGjl5JFOEGvF7iSW4SE1Js4dDkPBy7lGg3gB9y6Ptvw442XPafXoWrx+FO/mN/6U6HTY+S3R3E0OR+BbrbYGtUTVhZmpg6LiP70few1zNl2FuZmEmye2BPBXkpTh9SsNImB1BoaD8pUKa9IgwOXcrHvQi4OXb6B/OJyo/XWFmbo4ueIbgGO6BbghOAWLMKbA3WZFompBUhIvYmE1AIkpt6s0mXc1lKG3m1c0KeNCx4JdOFAaFQjPP7UL+a3fuWoy/D4soO4UaTBU5288OEzHXkmjagRiE+5ieFfx0KrE3g7sh1e6hVg6pCaHRbd1eBBmaqj1wtcyilC7JUbOHI1H0eT83Dzb2czLc2lCG6hRIiXPUK87RHqbQ8vByv+0dGE6fUCV28UIyHl5p9F9k1cyinC378RrczN0NFLiS5+DugT6Iowb57NpnvH40/9Yn7rX+yVPIz89gj0AvjgqWA895CPqUMiatZyCzUY9NkfyFZr8HiwO754vhP/LjWBJjF6OVFjIJVKEOhui0B3W4zp6Q+9XiApuxBHrubhyNU8HE3OR0GJFnHXbiLu2k3Dds4KC0MRHuJtjxAvJeytLUz4SuhObhRpcCGz0FBgn0gtgKpUW6Wdj6M1OvnYo5OvAzr5OKCtuy2LbCJq9rq3dMLr/QKx5LckzNl2Fh08lQhqwW6sRKZQodNj0roEZKs1aOWqwOKnQ1hwN3I80010F5VnRE+mFSAxrQAnrxfgfKYaWl3Vj467nSXauNuirbstAt1uFfKtXBWwNOf1bw3lRpEGF7MLcTmnCBezC3ExuwiXc4qqXEIAAHKZFCFe9gjztUcnn1tFtostBz+jusfjT/1ifhuGXi8wfk0copNy4am0xLZJD/M7k8gE3t9xDt/8kQyFXIatUT3RypUDHJoKu5dXgwdlqitlWh3OZapxMq3g1u26Csk3iqttK5UAfk42CHS3RRs3W7R0VcDX0Rq+TtY8M34f7qW4BgCJBPB2sEaot73hTHY7Dzteq08Ngsef+sX8NhxVqRZPfnEIV28U4yE/B6x9qRssZPweJWoov5zMwJT1JwAAK17ohAFBHiaOqHlj0V0NHpSpPhWWaXExuwhJWYW4mF2IC1lqJGUVVrk+/HZ2ljL4OFnD19EGPk7W8HG0hq+jNXycrOGhtIJZM53XWa8XuFGkQXpBKTIKypCpKkV6QSkyC8qQoSpFWn7JP+a1srhu46ZAK1dbtHFT3Pqxw0XBEXfJZHj8qV/Mb8O6kluEoZ8fQqGmAs+H+2DBk8GmDomoWUhMK8BzX8VCU6HHq4+0xFsD25o6pGaP13QTNTBbS3N09nVAZ9+/5o4XQiC3SIOkrELD7VpeMVLySpBTqIG6rAJn0tU4k66usj+pBHBSyOGikMPVTg5XWzlcbS0N911sLf/8V94kuq8LIVCm1UNVqkVBaTkKSrRQlWqRW6hBpupWcZ1eUIpMVSmyVGXVdt+/HYtrIiLTaOmiwLIRYRi3Jg7rjqainYcdRnXzNXVYRA+0jIJSTPj+ODQVevRt64o3+weaOiS6Byy6ieqRRCK5VSjbWqJXaxejdaXlOqTmlyA1vwQpecWG+6l5JUi7WQKtTiC3UIPcQg3OZd75eeQyKWwtzWFrKfvrJjeHwvDYHHaWMijkMljIpDCTSmBuVvmvBGZSKWRSya2bmQQy6a11Egmg1QlodXpoK/Qo1+lRXqE3LCv/c5n2z5uhqP6zoFbdVlwXlGpRXqGvce6kklvXyHvYW8HT3gqe9pbwVP51P8CZxTURkak82tYV/+rfFh/svoB3fzkLPyfrKsc5IqobJeUVeGnNceQWahDoZotPR4Q1296QTRWLbiITsbIwM4ya/nc6vUBesQY56ltFd05hGXLUGuRU3i+sXK5BeYUemgo9NEUa3CjSmOCV3BszqQRKK3PYW5lDaW0OJxsLeNxWTHv+WWS72co5ajgRUSP26iMBuJhdiC0n0vHaDwnYNLE72rqzez9RXdLrBab/mIhzmWo42Vjg29FdoJCzhGtq+D9G1AiZSf86Q34nQgioyyqgLtWisKwCRZoKFJbdul9YpkWhpuKv+2UVKCqrQLlOD51eoEInUKHXo+Jv929fpxeAhZkUFjIpzM1unR2/dV8KC7Nby25/LDeXws7KHPZWFrcKa2tzKK3Mje4r5DJOa0FE9ACQSCRY9FQwMgpKcTQ5H2NXxWFrVE+42d352EVENbdg53n8djYbFmZSfP1iZ3g7Wps6JKoFFt1ETZhEIjEUtURERA1NLjPD16O6YNjyQ7iSW4yxq+Kw8dXuPBNHVAe+/eMqvj2YDABY/HRHdPZ1NHFEVFvsu0lEREREtaa0NsfqsV3hrLDAuUw1otYmQKur+RgeRFTVLyczMH/HeQDAWwPbYmhYCxNHRPeDRTcRERER3RdvR2t8O/ohWJpLsf9iLt7cdBJ6fbOZlZaoTh2+cgNvbDwJABjTww+v9A4wcUR0v1h0ExEREdF9C/W2x/KRnSGTSrA1MQPztp+DECy8ie7FmXQVXvk+HuU6PR4PdsfsQe05Fs4DgEU3EREREdWJR9u64qNnQyCRAKsPX8OyvZdNHRJRk3EpuxAvrjyGQk0Fuvo74uNnQzk12AOCRTcRERER1ZkhoS3wzuAOAIClv1/EmsPXTBsQUROQmleCF747ivzicnT0UuK70V1gaW5m6rCojrDoJiIiIqI6NbqHH6ZFtAYAzP3lLNYdTTVxRESNV5aqDCO/O4JstQZt3BRYM7YrbC05M82DhEU3EREREdW5qX1bY0IvfwDAv7ecxsbjaSaOiKjxyVGX4flvjyAtvxS+Ttb4YXw4HGwsTB0W1TEW3URERERU5yQSCf79eDuM6eEHAJj58ylsTrhu2qCIGpEcdRmGf3MEV3OL4aG0xA/jw+FqZ2nqsKgesOgmIiIionohkUgwd3B7vNDNB0IAb2w6ia0n0k0dFpHJ3V5weyot8ePL3eHtaG3qsKiesOgmIiIionojkUgw74kgDH/IG3oBTN+YiI1x7GpOzVeOugzDv75VcLewt8KGl7vDx4kF94NMZuoAGlLlXJFqtdrEkRARUXNSedxpynMWL1q0CLNmzcLUqVPxySefAADKysrw+uuvY8OGDdBoNOjfvz++/PJLuLm5GbZLTU3FxIkTER0dDYVCgdGjR2PhwoWQyf76EyQmJgYzZszA2bNn4e3tjbfffhtjxoxp4FdI9UkqlWDBk8Ewk0qw9mgq/vXzKWgqdBjV3c/UoRE1qOs3S/DCt0dxLa/kz4K7G89wNwPNquguLCwEAHh7e5s4EiIiao4KCwuhVCpNHcY9i4uLw1dffYWOHTsaLZ8+fTp27NiBTZs2QalUYtKkSRg2bBgOHToEANDpdIiMjIS7uzsOHz6MzMxMvPjiizA3N8eCBQsAAMnJyYiMjMSrr76KtWvXYu/evXjppZfg4eGB/v37N/hrpfojlUowf2gQ5DIzrDyUjNnbzkJTocdLvQJMHRpRg7iSW4QXvj2KTFUZvByssH4CC+7mQiKa8s/u90iv1yMjIwO2traQSGo20bxarYa3tzfS0tJgZ2dXzxHWPcZvWozftBi/aTH+vwghUFhYCE9PT0ilTevKrqKiInTq1Alffvkl5s+fj9DQUHzyySdQqVRwcXHBunXr8PTTTwMALly4gHbt2iE2NhbdunXDrl27MGjQIGRkZBjOfq9YsQIzZ85Ebm4uLCwsMHPmTOzYsQNnzpwxPOfw4cNRUFCA3bt31yhGtVoNpVIJlUrVJN9rzY0QAkt+S8KXMVcAAFP6tsb0iNY1/tuMqCk6m6HCi98dQ15xOVq5KvDD+HC4KzloWlNX0+NPszrTLZVK4eXlVatt7ezsmvSBnPGbFuM3LcZvWoz/lqZ4hhsAoqKiEBkZiYiICMyfP9+wPD4+HlqtFhEREYZlbdu2hY+Pj6Hojo2NRXBwsFF38/79+2PixIk4e/YswsLCEBsba7SPyjbTpk2r99dGpiGRSPCvAW1hZW6Gj/ZcxLK9l3CjSIP3hgTBTMrCmx48x6/lY+zqOBSWVSCohR3WjO0KJ4Xc1GFRA2pWRTcRERHV3IYNG5CQkIC4uLgq67KysmBhYQF7e3uj5W5ubsjKyjK0ub3grlxfue5ObdRqNUpLS2FlZVXluTUaDTQajeExx2ppmib3bQ0HGwvM3nYG646m4mZxOZY+FwpLczNTh0ZUZ347m4Up609AU6HHQ34O+G7MQ7CzNDd1WNTAmlYfNyIiImoQaWlpmDp1KtauXQtLy8bVBXLhwoVQKpWGG8dqabpe6OaLL57vBAszKXadycLYVXFQlWpNHRZRnfhv7DVM/CEemgo9Itq54vtx4Sy4mykW3Xchl8sxd+5cyOVNswsI4zctxm9ajN+0GH/TFh8fj5ycHHTq1AkymQwymQz79+/HsmXLIJPJ4ObmhvLychQUFBhtl52dDXd3dwCAu7s7srOzq6yvXHenNnZ2dtWe5QaAWbNmQaVSGW5paZx+qil7PNgDq8c+BIVchtireXh6+WGk5ZeYOiyiWhNCYPHuC5i97Sz0AhjR1QcrXugMKwv24miumtVAakRERFQzhYWFSElJMVo2duxYtG3bFjNnzoS3tzdcXFywfv16PPXUUwCApKQktG3btspAapmZmXB1dQUAfP3113jzzTeRk5MDuVyOmTNnYufOnTh9+rTheZ5//nnk5+dzILVm5myGCuNWxyFbrYGzQo7vRndBiLe9qcMiuidlWh3+9dMp/HIyAwDw+v+1waTHWnGgwAdUTY8/LLqJiIioRvr06WMYvRwAJk6ciJ07d2L16tWws7PD5MmTAQCHDx8GcGvKsNDQUHh6emLx4sXIysrCqFGj8NJLLxlNGRYUFISoqCiMGzcO+/btw5QpU7Bjx44aTxnGovvBkakqxbjVx3E+Uw1Lcyk+eS4MA4LcTR0WUY3kFJbh5e/jkZhWAJlUggXDgvFsF17+8iCr6fGH3cuJiIioVpYuXYpBgwbhqaeeQu/eveHu7o7Nmzcb1puZmWH79u0wMzND9+7d8cILL+DFF1/EvHnzDG38/f2xY8cO7NmzByEhIfjoo4/w7bffco7uZspDaYVNr3ZHn0AXlGn1mLg2Hp/vuwSeI6LG7nymGk9+cRiJaQVQWpnj+/FdWXCTAc90ExERUZPGM90PngqdHu9tP4c1sbcucYgM9sCSZzrC2oIT71Djs/tMJl7feBLF5Tr4O9tg5ZiH4O9sY+qwqAHwTHcNvf/+++jRowesra2rTHvyTyQSSbW3JUuWGNr4+flVWb9o0aJGEf+YMWOqxDZgwACjNvn5+Rg5ciTs7Oxgb2+P8ePHo6ioyOTxa7VazJw5E8HBwbCxsYGnpydefPFFZGRkGLVrzPkXQmDOnDnw8PCAlZUVIiIicOnSJaM2DZX/e32ea9eu/eP7f9OmTYZ21a3fsGGDyeMHbnWP/Xtsr776qlGb1NRUREZGwtraGq6urnjzzTdRUVFh8vjz8/MxefJkBAYGwsrKCj4+PpgyZQpUKpVRu/rK/xdffAE/Pz9YWloiPDwcx44du2P7TZs2oW3btrC0tERwcDB27txptL4mn4W6dC/xf/PNN+jVqxccHBzg4OCAiIiIKu1r8l1KRLUjM5Pi3SFBWDgsGOZmEuw4nYmnl8fi+k0OsEaNh04v8OFvSXj1hwQUl+vQPcAJW17rwYKbqmj2RXd5eTmeeeYZTJw4scbbZGZmGt1WrlwJiURiGEim0rx584zaVV7rVpdqEz8ADBgwwCi29evXG60fOXIkzp49iz179mD79u04cOAAXn755boMHcC9x19SUoKEhATMnj0bCQkJ2Lx5M5KSkvDEE09UadtY87948WIsW7YMK1aswNGjR2FjY4P+/fujrKzM0Kah8n+vz+Pt7V3l/f/uu+9CoVBg4MCBRm1XrVpl1G7o0KEmj7/ShAkTjGJbvHixYZ1Op0NkZCTKy8tx+PBhrFmzBqtXr8acOXNMHn9GRgYyMjLw4Ycf4syZM1i9ejV2796N8ePHV2lb1/n/8ccfMWPGDMydOxcJCQkICQlB//79kZOTU237w4cPY8SIERg/fjxOnDiBoUOHYujQoThz5oyhTU0+C3XlXuOPiYnBiBEjEB0djdjYWHh7e6Nfv35IT083ane371Iiuj8juvpg3YRucLKxwLlMNQZ/dhAHLuaaOiwiqEq0GL8mDp9HXwYAjH/YH/8d3xX21hYmjowaJUFCCCFWrVollEplrbYdMmSIeOyxx4yW+fr6iqVLl95/YDV0L/GPHj1aDBky5B/Xnzt3TgAQcXFxhmW7du0SEolEpKen32ek1buf/B87dkwAECkpKYZljTX/er1euLu7iyVLlhiWFRQUCLlcLtavXy+EaLj819XzhIaGinHjxhktAyC2bNlSV6FWq7bxP/LII2Lq1Kn/uH7nzp1CKpWKrKwsw7Lly5cLOzs7odFo6iR2Ieou/xs3bhQWFhZCq9UaltVH/rt27SqioqIMj3U6nfD09BQLFy6stv2zzz4rIiMjjZaFh4eLV155RQhRs8+CKeP/u4qKCmFrayvWrFljWHa371JqOCqVSgAQKpXK1KFQPbl+s0RELjsgfGduF35vbRef/n5R6HR6U4dFzdTp6wWi9+J9wnfmdtHmPzvFloTrpg6JTKSmx59mf6b7fmVnZ2PHjh3VnmlatGgRnJycEBYWhiVLltRL99TaiomJgaurKwIDAzFx4kTk5eUZ1sXGxsLe3h5dunQxLIuIiIBUKsXRo0dNEe4dqVQqSCSSKt27G2P+k5OTkZWVhYiICMMypVKJ8PBwxMbGAmi4/NfF88THxyMxMbHa939UVBScnZ3RtWtXrFy5ss4Hwbmf+NeuXQtnZ2cEBQVh1qxZKCn5q7tibGwsgoOD4ebmZljWv39/qNVqnD17tlHEf7vKa4hkMuPrHOsy/+Xl5YiPjzd630qlUkRERBjet38XGxtr1B64lcfK9jX5LNSV2sT/dyUlJdBqtXB0dDRafqfvUiKqOy3srfDTqz0woqsPhAA+3nMR49bEoaCk3NShUTMihMAPR1IwbPlhpOSVoIW9FX6e2ANDw1qYOjRq5DgaxX1as2YNbG1tMWzYMKPlU6ZMQadOneDo6IjDhw9j1qxZyMzMxMcff2yiSP8yYMAADBs2DP7+/rhy5Qr+/e9/Y+DAgYiNjYWZmRmysrIM86lWkslkcHR0RFZWlomirl5ZWRlmzpyJESNGGA1e0FjzX5m/2wu6yseV6xoq/3XxPN999x3atWuHHj16GC2fN28eHnvsMVhbW+N///sfXnvtNRQVFWHKlCkmj//555+Hr68vPD09cerUKcycORNJSUmGEZezsrKq/f+pXGfq+G9348YNvPfee1W6pNd1/m/cuAGdTldtXi5cuFDtNv+Ux9vf55XL/qlNXalN/H83c+ZMeHp6GhXud/suJaK6ZWluhoXDgtHJxx5vbz2DmKRcPP7pH/h0RBge8nO8+w6I7kORpgKzNp/Gr3/Ovx3RzhUfPhPC7uRUIw9k0f3WW2/hgw8+uGOb8+fPo23btvf9XCtXrsTIkSNhaWlptHzGjBmG+x07doSFhQVeeeUVLFy4EHK5/I77rO/4hw8fbrgfHByMjh07omXLloiJiUHfvn1rtc/bNVT+tVotnn32WQghsHz5cqN1jTn/9a2m8d+v0tJSrFu3DrNnz66y7vZlYWFhKC4uxpIlS2pU9NV3/LcXqMHBwfDw8EDfvn1x5coVtGzZstb7rdRQ+Ver1YiMjET79u3xzjvvGK27n/xTVYsWLcKGDRsQExNj9F1f39+lRFS9Z7p4o4OnElHrEpB8oxjPfRWLaRFtEPVoK5hJJaYOjx5AJ9MKMO3HRCTfKIaZVIKZAwIxoVcAJBK+36hmHsii+/XXX8eYMWPu2CYgIOC+n+ePP/5AUlISfvzxx7u2DQ8PR0VFBa5du4bAwMA7tm2o+G/fl7OzMy5fvoy+ffvC3d29yuBCFRUVyM/Ph7u7+1331xDxVxbcKSkp2Ldv312niGks+a/MX3Z2Njw8PAzLs7OzERoaamjTEPm/3+f56aefUFJSghdffPGubcPDw/Hee+9Bo9Hc9UePhor/9tgA4PLly2jZsiXc3d2rjFKdnZ0NAI0m/4WFhRgwYABsbW2xZcsWmJub37H9veS/Os7OzjAzMzPkoVJ2dvY/xuru7n7H9jX5LNSV2sRf6cMPP8SiRYvw+++/o2PHjnds+/fvUiKqP+097fDr5IcxZ9sZbE5Ix8d7LuLQ5RtY+lwoPO2tTB0ePSB0eoEV+69g6Z6LqNALeCgt8dmIMHRhzwq6Rw9k0e3i4gIXF5d6f57vvvsOnTt3RkhIyF3bJiYmQiqVVulOWp2Gir/S9evXkZeXZ/jDt3v37igoKEB8fDw6d+4MANi3bx/0er2hQLmT+o6/suC+dOkSoqOj4eTkdNdtGkv+/f394e7ujr179xoKC7VajaNHjxpGQG+o/N/v83z33Xd44oknavRciYmJcHBwqFHB11Dx3x4bAKP3//vvv4+cnBzD+2XPnj2ws7ND+/btTR6/Wq1G//79IZfL8csvv1TpZVOde8l/dSwsLNC5c2fs3bvXMAq6Xq/H3r17MWnSpGq36d69O/bu3Ytp06YZlu3Zswfdu3cHULPPQl2pTfzArdHV33//ffz2229G197/k79/lxJR/VLIZfj42VD0au2Mt7ecwdHkfPT/5ADeGxKEIaGePAtJ9yWjoBTTf0zE0eR8AMDjwe5Y8GQwu5NT7TTAoG6NWkpKijhx4oR49913hUKhECdOnBAnTpwQhYWFhjaBgYFi8+bNRtupVCphbW0tli9fXmWfhw8fFkuXLhWJiYniypUr4ocffhAuLi7ixRdfNHn8hYWF4o033hCxsbEiOTlZ/P7776JTp06idevWoqyszLDNgAEDRFhYmDh69Kg4ePCgaN26tRgxYoTJ4y8vLxdPPPGE8PLyEomJiSIzM9NwqxxZujHnXwghFi1aJOzt7cW2bdvEqVOnxJAhQ4S/v78oLS01tGmo/N/tea5fvy4CAwPF0aNHjba7dOmSkEgkYteuXVX2+csvv4hvvvlGnD59Wly6dEl8+eWXwtraWsyZM8fk8V++fFnMmzdPHD9+XCQnJ4tt27aJgIAA0bt3b8M2FRUVIigoSPTr108kJiaK3bt3CxcXFzFr1iyTx69SqUR4eLgIDg4Wly9fNnr/V1RUCCHqL/8bNmwQcrlcrF69Wpw7d068/PLLwt7e3jDK+6hRo8Rbb71laH/o0CEhk8nEhx9+KM6fPy/mzp0rzM3NxenTpw1tavJZqCv3Gv+iRYuEhYWF+Omnn4zyXPnZrul3KTUMjl5OV3OLxBOfHxS+M7cL35nbxWs/xIv8orqbcYKaD71eLzbGpYqgObuF78ztot3sXeLHuFSh13O0fKqqpsefZl90jx49WgCocouOjja0ASBWrVpltN1XX30lrKysREFBQZV9xsfHi/DwcKFUKoWlpaVo166dWLBgQb38IXav8ZeUlIh+/foJFxcXYW5uLnx9fcWECROMpkcSQoi8vDwxYsQIoVAohJ2dnRg7dqxRIWmq+JOTk6ttf/s2jTn/Qtz6Mp89e7Zwc3MTcrlc9O3bVyQlJRntt6Hyf7fnqcz37a9HCCFmzZolvL29hU6nq7LPXbt2idDQUKFQKISNjY0ICQkRK1asqLZtQ8efmpoqevfuLRwdHYVcLhetWrUSb775ZpUvymvXromBAwcKKysr4ezsLF5//XWjKblMFX90dPQ/vv+Tk5OFEPWb/88++0z4+PgICwsL0bVrV3HkyBHDukceeUSMHj3aqP3GjRtFmzZthIWFhejQoYPYsWOH0fqafBbq0r3E7+vrW22e586dK4So+XcpNQwW3SSEENoKnfj094ui5awdwnfmdvHQ/D3if2f5maSay1aVinGrjhl+vBny+UFxNbfI1GFRI1bT449EiDqex4eIiIioAanVaiiVSsMUetS8nbpegOk/JuJKbjEA4IkQT8wd3B5OitpdYkMPPiEENiekY972c1CVamFhJsX0/2uDl3sHcHA+uqOaHn9YdBMREVGTxqKb/q5Mq8Mnv1/C1weuQC8ARxsLvPNEBwzu6MFrvclIal4J/rP1NP64dAMAENTCDh89E4pAd1sTR0ZNAYtuIiIiahZYdNM/OXW9AP/66RQuZBUCAHq1dsZ7Q4Lg52xj4sjI1LQ6PVYeTMbS3y+iTKuHXCbF1IjWmNArAOZmUlOHR00Ei24iIiJqFlh0052UV+ixPOYKvoi5jPIKPSxkUkT1aYVX+wRALjMzdXhkAkev5mHOtrNIyr71Y0z3ACcsGBYMf/4YQ/eIRTcRERE1Cyy6qSaSbxRjzrYzhm7Efk7WeDuyPfq2c2WX82YiR12GhbsuYMuJdACAg7U5Zg1sh2e6ePE9QLXCopuIiIiaBRbdVFNCCPx6KhPvbT+H3EINAKB3GxfMGdQerVwVJo6O6kuZVoeVh5LxZfQVFGkqIJEAz3f1wRv9AuFgw3m3qfZYdBMREVGzwKKb7lVhmRafR1/GyoPJ0OoEZFIJXujmiyl9W8ORRdgDQwiBHaczsWjXBVy/WQoACPFS4r2hQejoZW/a4OiBwKKbiIiImgUW3VRbyTeK8f6Oc/j9fA4AwFYuw6t9WmJcT39YWfB676bsyNU8LN59AQmpBQAAdztL/GtAIIaGtoCU04BRHanp8YdD8xERUbN34MABDB48GJ6enpBIJNi6des9bf/OO+9AIpFUudnYcFAeosbM39kG345+CD+MD0cHTzsUaiqw5Lck9PkwGmuPpqC8Qm/qEOkenUlXYfTKYxj+9REkpBbAytwM0yPaYN8bj2BYJy8W3GQSLLqJqFp+fn6GwqGgoOC+9tWnTx/DvhITE+skPqK6VFxcjJCQEHzxxRe12v6NN95AZmam0a19+/Z45pln6jhSIqoPD7d2xq+THsYnz4Wihb0VstUa/GfLGTz2UQw2xqWhQsfiu7G7kKVG1NoEDPrsIPZfzP3zkgEfxLzZB1MjWsPaQmbqEKkZY9FN9ADT6XTo0aMHhg0bZrRcpVLB29sb//nPf+64/bx585CZmQmlUnlfcWzevBnHjh27r30Q1aeBAwdi/vz5ePLJJ6tdr9Fo8MYbb6BFixawsbFBeHg4YmJiDOsVCgXc3d0Nt+zsbJw7dw7jx49voFdARPdLKpVgaFgL7HvjEcwd3B7OCjmu3yzFv34+hYiP92NjXBrPfDdC5zLUePW/8RjwyR/YcToTADAk1BN7X38E84cGw83O0sQREgH8yYfoAWZmZobVq1cjNDQUa9euxciRIwEAkydPhqOjI+bOnXvH7W1tbeHu7n7fcTg6OkKtVt/3fohMZdKkSTh37hw2bNgAT09PbNmyBQMGDMDp06fRunXrKu2//fZbtGnTBr169TJBtER0P+QyM4zt6Y/hD/nghyMpWL7/Cq7lleBfP5/C0t8vYkKvAAzv6s0zpyYkhEDctZv4av8V7L1w63p8iQR4PMgDk/u2Qlt3ju1AjQvPdBM94Nq0aYNFixZh8uTJyMzMxLZt27BhwwZ8//33sLC4txFaV69eDXt7e2zfvh2BgYGwtrbG008/jZKSEqxZswZ+fn5wcHDAlClToNPp6ukVETWs1NRUrFq1Cps2bUKvXr3QsmVLvPHGG3j44YexatWqKu3Lysqwdu1anuUmauKsLMwwoXcA/vjXo3g7sh1cbeXIVJVh3vZz6LloHz78LQk56jJTh9ms6PQCu89kYdjyw3j2q1jsvZADiQQYHOKJ36b1xhcjO7HgpkaJP9ERNQOTJ0/Gli1bMGrUKJw+fRpz5sxBSEhIrfZVUlKCZcuWYcOGDSgsLMSwYcPw5JNPwt7eHjt37sTVq1fx1FNPoWfPnnjuuefq+JUQNbzTp09Dp9OhTZs2Rss1Gg2cnJyqtN+yZQsKCwsxevTohgqRiOqRjVyGl3oFYFR3X/wcn44V+68gNb8En0dfxlcHrmBwR0+M7emPYK/7uxSL/llBSTl+jEvDf4+kGKb+spBJ8XRnL0zoFQB/Zw5aSY0bi26iZkAikWD58uVo164dgoOD8dZbb9V6X1qtFsuXL0fLli0BAE8//TT++9//Ijs7GwqFAu3bt8ejjz6K6OhoFt30QCgqKoKZmRni4+NhZmY8hZBCoajS/ttvv8WgQYPg5ubWUCESUQOQy8zwfLgPnu3ihT3nsvHdwWQcT7mJzSfSsflEOkK8lBgZ7otBIR7sel4HhBA4eV2F9UdTse1kOsq0t66nt7c2x8hwH4zp4Q8XW7mJoySqGX4jEDUTK1euhLW1NZKTk3H9+nX4+fnVaj/W1taGghsA3Nzc4OfnZ1R8uLm5IScn535DJmoUwsLCoNPpkJOTc9drtJOTkxEdHY1ffvmlgaIjooYmM5NiYLAHBgZ74GRaAVYeSsbO05k4eV2Fk9dP4b0d5zA0tAWe6uyFEC8lJBJOUXUvCkrKsfVEOjbEpeFCVqFheXsPO4zp4YcnQj1hac451KlpYdFN1AwcPnwYS5cuxf/+9z/Mnz8f48ePx++//16rPwTMzc2NHkskkmqX6fUc4ZWajqKiIly+fNnwODk5GYmJiXB0dESbNm0wcuRIvPjii/joo48QFhaG3Nxc7N27Fx07dkRkZKRhu5UrV8LDwwMDBw40xcsgogYW4m2PT4eHYfag9vgp/jrWHU1Fan4J/nskBf89koKWLjZ4qrMXhoS2QAt7K1OH22iVaXXYdyEHW0+kIzopB1qdAADIZVI8HuyBEV198JCfA3/AoCaLRTfRA66kpARjxozBxIkT8eijj8Lf3x/BwcFYsWIFJk6caOrwiBqF48eP49FHHzU8njFjBgBg9OjRWL16NVatWoX58+fj9ddfR3p6OpydndGtWzcMGjTIsI1er8fq1asxZsyYKt3QiejB5qyQ49VHWuLlXgE4dOUGfoq/jt/OZuFKbjEW707C4t1JCPOxR2SwByI7esBDyQK8TKvDH5duYPeZLPzvbBYKNRWGde097DC8qzeGhLSA0tr8DnshahpYdBM94GbNmgUhBBYtWgQA8PPzw4cffog33ngDAwcOrHU3c6IHSZ8+fSCE+Mf15ubmePfdd/Huu+/+YxupVIq0tLT6CI+ImgipVIJerV3Qq7ULCsu02Hk6E5sT0nHsWj5OpBbgRGoB5u84j45eSvRt64a+7VzRwdOu2ZzBzS8ux4GLudhzPhsxF3JQXP7XTCeeSks8EdoCQ8M8OQI5PXBYdBM9wPbv348vvvgCMTExsLa2Nix/5ZVXsHnz5vvqZk5ERET/zNbSHM895IPnHvJBjroMu85kYcepTMSl5OPUdRVOXVdh6e8X4W5niYdbO+PhVs7o0coJrraWpg69zmgqdDiZpsKhyzcQczEXp64X4PbfNz2Vlugf5I6BQR7o4usAqZR/j9CDSSLu9NM+ETVbfn5+mDZtGqZNm1Yn+7t27Rr8/f1x4sQJhIaG1sk+iYgAQK1WQ6lUQqVSwc6OZ8ioccspLEP0hRz8fj4HBy/dQKlWZ7S+lasCXXwd0NnXAV38HOHnZN1kfhxXlWpxMu3WGf2jyXmIT7kJTYXxGC/tPOzwaKAL+ndwR0cONEdNXE2PPyy6iahafn5+yMzMhLm5OdLT06FU1n7+0YEDB+LAgQMoKSlh0U1EdY5FNzVVZVod4q7l4+DlGzh0+QbOZqjx97/M7a3NEeSpRAdPO3RooUSgmy38nK0hl5lu7AghBHIKNbiQVYgLmWpcyCrEyesFuJpbXKWts0KO8ABHPNLaBY8EusDN7sE5k0/EopuI7ktKSgq0Wi0AICAgAFKptNb7Sk9PR2lpKQDAx8cHFhYWdRIjERHAopseHPnF5Th+LR/xKTdxPOUmTl9XoVxXdTYQqQTwdrRGSxcFvB2s4GlvhRYOVvBQWsFFIYejwgI2Fma1PotcodPjZokWOYVlyFaXIVutQUZBKa7lleDajWJcyytGYVlFtdv6Olkj1NseXfwc0T3AES1dFDybTQ8sFt1ERETULLDopgeVpkKHi1lFOJuhwpkMFc5mqHE5p+gfC97byWVS2Fubw8ZCBmu5GazNZbCQSSGVSiCVAFKJBFqdHpoKPcor9CjT6lBYVgFVqRZFmrvvXyoB/J1t0NbDDu3cbdHBU4kQb3s42vCHdWo+anr84UBqRERERESNkFxmhmAvJYK9/rrESwiB3CINruQU4+qNIqTfLEV6QSnSb5YiU1WGvGINyrS3iulstQaAptbP76ywgJudJdztLOGutISfkw18nazh52wDH0drWJpzekSimmDRTURERETUREgkErjaWsLV1hLdWzpV26akvAJ5ReVQlWpRUq5DcXkFSjQ6aHV66IWAXgB6ISCTSiCXmUEuk8JCJoWtpQxKK3PYW1vAzlIGmVntLy0jor+w6CYiIiIieoBYW8hg7SiDt6kDISIAAH++IiIiIiIiIqonLLqJiIiIiIiI6gmLbiIiIiIiIqJ6wqKbiIiIiIiIqJ6w6CYiIqIqFi5ciIceegi2trZwdXXF0KFDkZSUZNSmrKwMUVFRcHJygkKhwFNPPYXs7GyjNqmpqYiMjIS1tTVcXV3x5ptvoqLCeA7gmJgYdOrUCXK5HK1atcLq1avr++URERE1GBbdREREVMX+/fsRFRWFI0eOYM+ePdBqtejXrx+Ki4sNbaZPn45ff/0VmzZtwv79+5GRkYFhw4YZ1ut0OkRGRqK8vByHDx/GmjVrsHr1asyZM8fQJjk5GZGRkXj00UeRmJiIadOm4aWXXsJvv/3WoK+XiIiovkiEEMLUQRAREVHjlpubC1dXV+zfvx+9e/eGSqWCi4sL1q1bh6effhoAcOHCBbRr1w6xsbHo1q0bdu3ahUGDBiEjIwNubm4AgBUrVmDmzJnIzc2FhYUFZs6ciR07duDMmTOG5xo+fDgKCgqwe/fuGsWmVquhVCqhUqlgZ2dX9y+eiIioGjU9/vBMNxEREd2VSqUCADg6OgIA4uPjodVqERERYWjTtm1b+Pj4IDY2FgAQGxuL4OBgQ8ENAP3794darcbZs2cNbW7fR2Wbyn0QERE1dTJTB0BERESNm16vx7Rp09CzZ08EBQUBALKysmBhYQF7e3ujtm5ubsjKyjK0ub3grlxfue5ObdRqNUpLS2FlZVUlHo1GA41GY3isVqvv7wUSERHVI57pJiIiojuKiorCmTNnsGHDBlOHAuDWIG9KpdJw8/b2NnVIRERE/4hFNxEREf2jSZMmYfv27YiOjoaXl5dhubu7O8rLy1FQUGDUPjs7G+7u7oY2fx/NvPLx3drY2dlVe5YbAGbNmgWVSmW4paWl3ddrJCIiqk8suomIiKgKIQQmTZqELVu2YN++ffD39zda37lzZ5ibm2Pv3r2GZUlJSUhNTUX37t0BAN27d8fp06eRk5NjaLNnzx7Y2dmhffv2hja376OyTeU+qiOXy2FnZ2d0IyIiaqw4ejkRERFV8dprr2HdunXYtm0bAgMDDcuVSqXhDPTEiROxc+dOrF69GnZ2dpg8eTIA4PDhwwBuTRkWGhoKT09PLF68GFlZWRg1ahReeuklLFiwAMCtKcOCgoIQFRWFcePGYd++fZgyZQp27NiB/v371yhWjl5ORESmUNPjD4tuIiIiqkIikVS7fNWqVRgzZgwAoKysDK+//jrWr18PjUaD/v3748svvzR0HQeAlJQUTJw4ETExMbCxscHo0aOxaNEiyGR/jeUaExOD6dOn49y5c/Dy8sLs2bMNz1ETLLqJiMgUWHQTERFRs8Cim4iITKGmxx9OGUZERERNWuX5A04dRkREDanyuHO389gsuomIiKhJKywsBABOHUZERCZRWFgIpVL5j+vZvZyIiIiaNL1ej4yMDNja2v7jteg1pVar4e3tjbS0NHZVrwHm694wX/eOObs3zNe9u5+cCSFQWFgIT09PSKX/PDEYz3QTERFRkyaVSo3mEK8LnIrs3jBf94b5unfM2b1hvu5dbXN2pzPclThPNxEREREREVE9YdFNREREREREVE9YdBMRERH9SS6XY+7cuZDL5aYOpUlgvu4N83XvmLN7w3zdu4bIGQdSIyIiIiIiIqonPNNNREREREREVE9YdBMRERERERHVExbdRERERERERPWERTcRERERgC+++AJ+fn6wtLREeHg4jh07ZuqQGoWFCxfioYcegq2tLVxdXTF06FAkJSUZtSkrK0NUVBScnJygUCjw1FNPITs720QRNy6LFi2CRCLBtGnTDMuYr6rS09PxwgsvwMnJCVZW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",
+ "text/plain": [
+ "