Commit 5037c72c authored by Steve T's avatar Steve T
Browse files

final name is nd_curves

parent 143b7d00
#include "python_variables.h"
#include "NDcurves/python/python_definitions.h"
#include "nd_curves/python/python_definitions.h"
#include <Eigen/Core>
namespace NDcurves {
namespace nd_curves {
std::vector<linear_variable_t> matrix3DFromEigenArray(const point_list3_t& matrices, const point_list3_t& vectors) {
if (vectors.cols() * 3 != matrices.cols()) {
throw std::invalid_argument("vectors.cols() * 3 != matrices.cols()");
......@@ -71,4 +71,4 @@ linear_variable_t* wayPointsToLists(const bezier_linear_variable_t& self) {
return new linear_variable_t(matrices.transpose(), vectors.transpose());
}
} // namespace NDcurves
} // namespace nd_curves
#include "NDcurves/fwd.h"
#include "NDcurves/linear_variable.h"
#include "NDcurves/bezier_curve.h"
#include "NDcurves/constant_curve.h"
#include "NDcurves/polynomial.h"
#include "NDcurves/exact_cubic.h"
#include "NDcurves/curve_constraint.h"
#include "NDcurves/curve_conversion.h"
#include "NDcurves/bernstein.h"
#include "NDcurves/cubic_hermite_spline.h"
#include "NDcurves/piecewise_curve.h"
#include "NDcurves/so3_linear.h"
#include "NDcurves/se3_curve.h"
#include "NDcurves/sinusoidal.h"
#include "NDcurves/python/python_definitions.h"
#include "nd_curves/fwd.h"
#include "nd_curves/linear_variable.h"
#include "nd_curves/bezier_curve.h"
#include "nd_curves/constant_curve.h"
#include "nd_curves/polynomial.h"
#include "nd_curves/exact_cubic.h"
#include "nd_curves/curve_constraint.h"
#include "nd_curves/curve_conversion.h"
#include "nd_curves/bernstein.h"
#include "nd_curves/cubic_hermite_spline.h"
#include "nd_curves/piecewise_curve.h"
#include "nd_curves/so3_linear.h"
#include "nd_curves/se3_curve.h"
#include "nd_curves/sinusoidal.h"
#include "nd_curves/python/python_definitions.h"
#include <eigenpy/memory.hpp>
#include <eigenpy/eigenpy.hpp>
#include <eigenpy/geometry.hpp>
......@@ -23,7 +23,7 @@
#ifndef _VARIABLES_PYTHON_BINDINGS
#define _VARIABLES_PYTHON_BINDINGS
namespace NDcurves {
namespace nd_curves {
static const int dim = 3;
typedef linear_variable<real, true> linear_variable_t;
typedef quadratic_variable<real> quadratic_variable_t;
......@@ -62,29 +62,29 @@ struct LinearBezierVector {
};
/*** TEMPLATE SPECIALIZATION FOR PYTHON ****/
} // namespace NDcurves
EIGENPY_DEFINE_STRUCT_ALLOCATOR_SPECIALIZATION(NDcurves::bernstein_t)
EIGENPY_DEFINE_STRUCT_ALLOCATOR_SPECIALIZATION(NDcurves::curve_constraints_t)
EIGENPY_DEFINE_STRUCT_ALLOCATOR_SPECIALIZATION(NDcurves::matrix_x_t)
EIGENPY_DEFINE_STRUCT_ALLOCATOR_SPECIALIZATION(NDcurves::pointX_t)
EIGENPY_DEFINE_STRUCT_ALLOCATOR_SPECIALIZATION(NDcurves::linear_variable_t)
EIGENPY_DEFINE_STRUCT_ALLOCATOR_SPECIALIZATION(NDcurves::bezier_linear_variable_t)
EIGENPY_DEFINE_STRUCT_ALLOCATOR_SPECIALIZATION(NDcurves::matrix_pair)
EIGENPY_DEFINE_STRUCT_ALLOCATOR_SPECIALIZATION(NDcurves::polynomial_t)
EIGENPY_DEFINE_STRUCT_ALLOCATOR_SPECIALIZATION(NDcurves::exact_cubic_t)
EIGENPY_DEFINE_STRUCT_ALLOCATOR_SPECIALIZATION(NDcurves::bezier_t)
EIGENPY_DEFINE_STRUCT_ALLOCATOR_SPECIALIZATION(NDcurves::constant_t)
EIGENPY_DEFINE_STRUCT_ALLOCATOR_SPECIALIZATION(NDcurves::cubic_hermite_spline_t)
EIGENPY_DEFINE_STRUCT_ALLOCATOR_SPECIALIZATION(NDcurves::piecewise_t)
EIGENPY_DEFINE_STRUCT_ALLOCATOR_SPECIALIZATION(NDcurves::polynomial3_t)
EIGENPY_DEFINE_STRUCT_ALLOCATOR_SPECIALIZATION(NDcurves::exact_cubic3_t)
EIGENPY_DEFINE_STRUCT_ALLOCATOR_SPECIALIZATION(NDcurves::bezier3_t)
EIGENPY_DEFINE_STRUCT_ALLOCATOR_SPECIALIZATION(NDcurves::constant3_t)
EIGENPY_DEFINE_STRUCT_ALLOCATOR_SPECIALIZATION(NDcurves::cubic_hermite_spline3_t)
EIGENPY_DEFINE_STRUCT_ALLOCATOR_SPECIALIZATION(NDcurves::piecewise3_t)
EIGENPY_DEFINE_STRUCT_ALLOCATOR_SPECIALIZATION(NDcurves::SO3Linear_t)
EIGENPY_DEFINE_STRUCT_ALLOCATOR_SPECIALIZATION(NDcurves::SE3Curve_t)
EIGENPY_DEFINE_STRUCT_ALLOCATOR_SPECIALIZATION(NDcurves::sinusoidal_t)
EIGENPY_DEFINE_STRUCT_ALLOCATOR_SPECIALIZATION(NDcurves::piecewise_SE3_t)
} // namespace nd_curves
EIGENPY_DEFINE_STRUCT_ALLOCATOR_SPECIALIZATION(nd_curves::bernstein_t)
EIGENPY_DEFINE_STRUCT_ALLOCATOR_SPECIALIZATION(nd_curves::curve_constraints_t)
EIGENPY_DEFINE_STRUCT_ALLOCATOR_SPECIALIZATION(nd_curves::matrix_x_t)
EIGENPY_DEFINE_STRUCT_ALLOCATOR_SPECIALIZATION(nd_curves::pointX_t)
EIGENPY_DEFINE_STRUCT_ALLOCATOR_SPECIALIZATION(nd_curves::linear_variable_t)
EIGENPY_DEFINE_STRUCT_ALLOCATOR_SPECIALIZATION(nd_curves::bezier_linear_variable_t)
EIGENPY_DEFINE_STRUCT_ALLOCATOR_SPECIALIZATION(nd_curves::matrix_pair)
EIGENPY_DEFINE_STRUCT_ALLOCATOR_SPECIALIZATION(nd_curves::polynomial_t)
EIGENPY_DEFINE_STRUCT_ALLOCATOR_SPECIALIZATION(nd_curves::exact_cubic_t)
EIGENPY_DEFINE_STRUCT_ALLOCATOR_SPECIALIZATION(nd_curves::bezier_t)
EIGENPY_DEFINE_STRUCT_ALLOCATOR_SPECIALIZATION(nd_curves::constant_t)
EIGENPY_DEFINE_STRUCT_ALLOCATOR_SPECIALIZATION(nd_curves::cubic_hermite_spline_t)
EIGENPY_DEFINE_STRUCT_ALLOCATOR_SPECIALIZATION(nd_curves::piecewise_t)
EIGENPY_DEFINE_STRUCT_ALLOCATOR_SPECIALIZATION(nd_curves::polynomial3_t)
EIGENPY_DEFINE_STRUCT_ALLOCATOR_SPECIALIZATION(nd_curves::exact_cubic3_t)
EIGENPY_DEFINE_STRUCT_ALLOCATOR_SPECIALIZATION(nd_curves::bezier3_t)
EIGENPY_DEFINE_STRUCT_ALLOCATOR_SPECIALIZATION(nd_curves::constant3_t)
EIGENPY_DEFINE_STRUCT_ALLOCATOR_SPECIALIZATION(nd_curves::cubic_hermite_spline3_t)
EIGENPY_DEFINE_STRUCT_ALLOCATOR_SPECIALIZATION(nd_curves::piecewise3_t)
EIGENPY_DEFINE_STRUCT_ALLOCATOR_SPECIALIZATION(nd_curves::SO3Linear_t)
EIGENPY_DEFINE_STRUCT_ALLOCATOR_SPECIALIZATION(nd_curves::SE3Curve_t)
EIGENPY_DEFINE_STRUCT_ALLOCATOR_SPECIALIZATION(nd_curves::sinusoidal_t)
EIGENPY_DEFINE_STRUCT_ALLOCATOR_SPECIALIZATION(nd_curves::piecewise_SE3_t)
#endif //_VARIABLES_PYTHON_BINDINGS
......@@ -4,7 +4,7 @@ import eigenpy
from numpy import array, dot, identity, zeros
# importing the bezier curve class
from NDcurves import bezier
from nd_curves import bezier
eigenpy.switchToNumpyArray()
......@@ -30,7 +30,7 @@ class TestNotebook(unittest.TestCase):
fNumSamples = float(numSamples)
ptsTime = [(ref(float(t) / fNumSamples), float(t) / fNumSamples) for t in range(numSamples + 1)]
from curves.optimization import (problem_definition, setup_control_points)
from nd_curves.optimization import (problem_definition, setup_control_points)
# dimension of our problem (here 3 as our curve is 3D)
dim = 3
......
......@@ -4,7 +4,7 @@ import eigenpy
from numpy import array, matrix, zeros
from numpy.linalg import norm
from NDcurves.optimization import (constraint_flag, generate_integral_problem, integral_cost_flag, problem_definition,
from nd_curves.optimization import (constraint_flag, generate_integral_problem, integral_cost_flag, problem_definition,
setup_control_points)
eigenpy.switchToNumpyArray()
......
......@@ -9,15 +9,15 @@ class TestRegistration(unittest.TestCase):
"""
def test_pinocchio_then_curves(self):
import pinocchio
import NDcurves
import nd_curves
self.assertTrue(hasattr(pinocchio, 'Quaternion'))
self.assertTrue(hasattr(NDcurves, 'Quaternion'))
self.assertTrue(hasattr(nd_curves, 'Quaternion'))
def test_curves_then_pinocchio(self):
import NDcurves
import nd_curves
import pinocchio
self.assertTrue(hasattr(pinocchio, 'Quaternion'))
self.assertTrue(hasattr(NDcurves, 'Quaternion'))
self.assertTrue(hasattr(nd_curves, 'Quaternion'))
if __name__ == '__main__':
......
%% Cell type:markdown id: tags:
# Curve optimization with the curves library
%% Cell type:markdown id: tags:
The [curve library](https://github.com/loco-3d/curves) is a header-only C++ library (also binded in python) that allows you
to create curves, in arbitrary dimensions (2, 3, n).
Originally, the library focused on spline curves, but it has now been extended to generic polynomials, cubic hermite splines, Bezier curves and more.
A nice upcoming extension is the ability to design curves in the Special Euclidian group SE3.
However in this tutorial we are going to focus on a rather unique trait of the library, which is the ability to work with variable control points. Rather than being given a constant value, the control points can be expressed as the linear combination of one or several variables. The main advantage of this representation is that variable curves
can be automatically derivated or integrated without any effort.
The other interest of variable curves is the ability to easily formulate optimization problems, which will be the focus of this tutorial. We will use the python bindings of the curve library to go through the steps of formulating and solving an optimization problem.
## The problem: trajectory fitting
We start with a simple, unconstrained problem.
Let us first consider a 3D curve:
%% Cell type:code id: tags:
``` python
# importing classical numpy objects
from numpy import zeros, array, identity, dot
from numpy.linalg import norm
import numpy as np
np.set_printoptions(formatter={'float': lambda x: "{0:0.1f}".format(x)})
#use array representation for binding eigen objects to python
import eigenpy
eigenpy.switchToNumpyArray()
#importing the bezier curve class
from curves import (bezier)
from nd_curves import (bezier)
#importing tools to plot bezier curves
from curves.plot import (plotBezier)
from nd_curves.plot import (plotBezier)
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np
#We describe a degree 3 curve as a Bezier curve with 4 control points
waypoints = array([[1., 2., 3.], [-4., -5., -6.], [4., 5., 6.], [7., 8., 9.]]).transpose()
ref = bezier(waypoints)
#plotting the curve with its control points
plotBezier(ref,showControlPoints = True, color="g")
```
%%%% Output: display_data
![](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAV0AAADnCAYAAAC9roUQAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjMsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+AADFEAAAgAElEQVR4nOx9eZQcdbn203v3TM+SWTNLklky2fdkkoD3+KFekYv3KiKCV3BDFBeURfTjHI/306OCl8siNyjKYfO6oBe8iqIXEBQXICQkIQlZZnq6e5bu2Xvfu6urvz/m/Ipfd1dVV1VXd6ZDPefkECZTS1dXPfX+3vd5n1eXy+WgQYMGDRqqA/25PgENGjRoeCtBI10NGjRoqCI00tWgQYOGKkIjXQ0aNGioIjTS1aBBg4Yqwlji3zVpgwYNGjTIh07oH7RIV4MGDRqqCI10NWjQoKGK0EhXgwYNGqoIjXQ1aNCgoYrQSFeDBg0aqgiNdDVo0KChitBIV4MGDRqqCI10NWjQoKGK0EhXgwYNGqoIjXQ1aNCgoYrQSFeDBg0aqgiNdDVo0KChitBIV4MGDRqqiFIuYxo0CCKXy4FlWaRSKTAMA6PRCL1eD4PBAL1eD71eD51O0GxJg4a3JHQlBlNq1o4aipDL5ZDNZsEwTN7fyb/RREtImPzRyFjDWwSCN7hGuhoko5BsdToddDodGIYBwzDQ6/VFv0//mZiYQEdHB+rq6jQy1nC+Q/BG1tILGkoil8uBYRh4PB40Njaivr6+iGD5QEiZIJ1OAwC3LcMwyGQyedtoZKzhfIdGuhoEQciWpA5CoRCsVivsdrui/el0urz0QyGRklUXIePC3zUYDFzemJCzRsYaag0a6WooAsuyeXlaErHq9XqwLFv0+2oRXykyLkxt5HI50chYI2QNyxEa6WrgwLIsGIZBNpsFUJweIESnFEq3l0rGADA7Owu73Y6Ghgbo9XoYjUaNjDUsK2ik+xYHKXJlMhkuihUiJr1ef05IV2x/9H8BIJFIwGq1QqfTcXK2wm1IdEynKjQy1lAtaKT7FgXR2DIMU5JsCQiRKYXapCt2HKHPQj53NpvlCnsEdJqCRMcaGWtQGxrpvsVASMfn84FhGLS0tEgmlmqRZiUhhYwLtcZ8OWNNUaFBKTTSfYugUGMbjUaRTqfR2toqeR/LLb2gJuSQcTabxcLCArq7uzV5mwbZ0Ej3PAdfQwMhB7kEWCvpBTXBR8YMw2BhYQFdXV3IZDJIp9NaF54GydBI9zwF0djSERrd0CAk/xKDGqRZa6TLByJV42sQKdQa09DIWAOgke55h8KGhkKyJVBCunzbhMNhOJ1OxONx1NfX5/0hKgKC84VcxF4cUhs/aBDy1Ro/3hrQSPc8gVBDgxDKTS8EAgG4XC4AQH9/P6xWK5LJJKLRKEKhEKanp5FMJqHX61FXV4f6+nokEglYLJaiQlUtQu75K2n8IMqSxsZGTWt8HkEj3RoHy7IIBoMAAJvNJkuJoCQ/G4vFcPjwYRiNRgwNDaGxsREsyyKdTsNutxe1CGezWcTjccRiMfh8PkxPT8Pr9eaRsVBkvFyh5ktDjIyDwSCCwSAsFkvRNlrjR+1CI90aRGFDw/z8PEwmE+rr6yXvQ056IZfLYXFxES6XC3q9Htu3b5fsv2AwGNDQ0ICGhgYkk0nU1dWho6Mjj4z5ImO73Y76+nrU1dUtOzKuRqROol2S/6WPDUBr/KhhaKRbQxBqaDAYDLJTBVJIN5fLYX5+Hm63G3a7HWvWrOEiWiWgC3E0GdOgyTgYDMLr9XJkXJgztlgs54RMqpUeYVm2KB8vFBmT89IaP5Y/NNKtARSSbWHHlcFgKCrOlIIY6eZyOczMzGB8fBzNzc3Yvn07bDYb5ufni6IrOZCifihFxtFoFIFAAB6PB6lUqoiMSV60kjiXpCsGOVpj8l9CwJqionrQSHcZQ8g0vPCBUEv+xbIspqenMTk5idbWVuzevTsvn3iuDG8AcTKOxWKIxWIIBALw+/0IBAIwm81FOWO1IuNqyd7UIvdSZByLxTA2NoYtW7Zw/6bJ2yoHjXSXIYQaGoRQrvwrm83C6/ViamoKHR0d2LNnD8xms6zjnKuH0WAwoLGxEY2NjdzPWlpa0NTUlEfGJDI2GAxczpj812w2K1YjVBJyI125oF/idO6YrhlojR/qQyPdZYRcLod0Os3d9KXIlkAp6WazWbjdbkxPT2PlypXYu3cvTCaT4DbnMtKVCz4yBpZ0siRnXEjGhTljITKuVnqhWsfJZrN5xTqxyBjQGj/KhUa6ywB0Q8PBgwexf/9+WREOIVCpyGQymJycRDAYRHt7O/bt2wejsfStIKbtlUIQy6EN2Gg0ipJxNBqFz+fD1NSUIBmTvHqlUelIV+5xym380Mh4CRrpnkPwNTQYDAbZDxvZphTS6TQmJiYwPz+Pnp4eNDQ0oK+vT/JxxLS9Uh+ic026QhAjY5Km8Pl8mJycRCKRAMuyYFlWUmSsFNUi3cJIVy7kNH7Mzc1xJvOF0ra3iqJCI91zALEJDQaDAdlsVlLkSVAqvZBKpTA+Pg6fz4fVq1fjggsuAADMzMzIOm+hSFXqQ7IcIl25MBqNaGpqQlNTE/czv9+PxcVFdHZ25pFxOp2G0Wjk9MX19fWw2+0wmUyKiKTWI2o+Mo5EIrDb7ZxbGwk46G3O98YPjXSrBKkTGqRGrTSESDeRSMDtdiMUCmHNmjVYt24ddzxyPnKPU7gNkZctLi5yEZ8Q0VSDdKuRByVNC4VkDPBHxjQZF0bGpY5TC5Gu3GMZjUbee/+t0vihkW6FIXdCg9z8LNmGJt14PA6Xy4VIJIKBgQFs3LiRlwDlgk4vsCyL2dlZjI+Po6WlBZ2dnUgkEoJEY7fbwbJszUW6fBD7DHyRMbCURyc544WFBYyPjyOTyYiS8XLL6aoBhmEEV3FqNH6QoKYwTbScoJFuhVCqoUEIJL0gByQ6jkajcLlcSCQSGBgYwObNm1WNAgjpejweTExMoK2tDbt374bZbEY6ncaKFSvyfj+TyXBR39zcHAKBABiGgc/n49p8yR856ZTlALnX1WQyCZIxuUaFZJzJZLjVgZTIWCmqHekqOZaUxg8AePbZZ3H8+HHcfvvtZZ9rpVBbd3oNgGhsFxYWoNPp0NzcLGsJpET+RVpmz5w5g4GBAW4Ej5pgWRZzc3Pw+/2w2+0YHh7mSEAo8jOZTGhubkZzczMAYG5uDolEAt3d3YhGo4jFYpiZmUEsFkM2m4XFYuGiYpIXrRYZyIGaKYzCa0SQyWRw+vRp6PX6IjImGmM6lVMOWJat2ktPbYIvfLZCoVDRi225QSNdlcA3DgdAUfRXCnIi3WAwCKfTiVwuB4vFguHhYdnnXQosy8Lr9WJychItLS1obGzEunXrFO2LPBxmsxktLS1oaWnh/i2XyyGVSnFRn9/vRzweB8uysNlseWkKm81WteUwH6qRNzaZTDAajVi5cmWekZFQZEwMj+g/Usm4mpFupa9dKBQqeoEtN2ikWyaEJjQYjUZFPgWlSDeXyyEQCMDpdHL2ig0NDXjllVfK+RhFIGkE0qW2d+9e5HI5HD9+XPE+xQppOp0OVqsVVqs1b25bLpdDIpHgiGZxcRHxeBwAODImkbHNZlN8bnJwLpsjxCJjsnqYn59HNBoFwzCSyLiaOd1KXzdSNF7O0EhXIUpNaFCSmxXbjrZXtFqt2LBhQ5EPgRrIZrMc2RZ2qVXDTKYQOp0OdXV1qKurQ3t7O/dzlmU5Mo5EIpidnUUikUA6nUYsFkM4HOYIWW03suVoeGMymbBixYqilRW5HiSvHovFisg4Ho8v68KTHGiR7nkIqRMalJJuYU630F5xy5YtsnxzpSKbzWJqagoejwddXV3Yv39/UZ5PrDlCCtSUjNHuYh0dHdzPR0dHUV9fD4PBkOfTS3sulNvMsBxJVwhmsxlms1mUjGOxGNxuN9xudx4Zk2ulVr631HfPsAyCySBabC3Q65R97nA4rJHu+QKxhgY+lBvp5nI5TpLV1NTE2SuqDYZhMDU1Ba/Xi+7ubl6yJagF7wUSGReSTGGbr5CsTUoutNZcxvhAk3EoFEJfXx/q6+vzyHh2djYvMi5XcSKWO37G9Qw+8ftPIMtmUW+qx68u/xV2r9wt+3OFw2GtkFbLkNrQwAej0ag40l1cXITX60VLSwt27twJq9Uqez+lwDAM0uk0Dh48iJ6eHlGyJVCDNM+VTleozZcuTBXmQsVIplYiXbnH4YuMyTNAcsY0GZvN5qKcsdB9JES6s9FZfOLpTyDOLOXqU9kUPvCrD8BxvQMWo6Xo98UQCoVkF6+rDY10eUBrbMnytL+/X9aDJjfSJfaKbrcbVqtV0F6xXDAMg8nJSUxPT0Ov12PPnj2SSb1colmOnUNChal0Oi0oa8vlcjCbzYhEIhWVtVWTdMU+g06nE1Sc0JExfZ34yJhhmKLjZLIZPHLiEaSz+Q0PGTYDT8SDwRWDsj6LltOtMRDZVzab5RoaCHnKJQyDwVDUV84HhmHg8Xjg9XqxcuVKrF+/HqFQSHXCJc5iMzMzWLVqFS644AIcPXq0qtKrWvJeEJO1TUxMIJ1OY2pqilfWRjTGalzbalk7KjlXnU4Hi8UCi8UiiYzT6TRYloXD4UAgF8Bvpn6DJxxPYC4+V7RvhmXQXtde9HMpn6Vc3XKloZEuxCc0mEwmSeRZiFKRLsMwmJiYwOzsLLq7uzl7xUAgoCgtQYpchQ9PJpPBxMQE5ubmOLIl0YaSRgw+RKNReL3ePOLhi5xqiXT5QGRtdXV1aGxsRFdXFwD5srblFvErJV0hCJHx/OI8fn3q13j66NP4q/evyGHpXlhtW402axtOhU7BqDcim8vi9rffjkaLPEVFrdxbb2nSlTKhQW3pF22vuGrVKuzfvz+PoJQSIdmOnH/hcS644IKiz1Yu6UajUYyNjSGTyWDlypVIp9Pwer2IxWJ50R8hnFp5KEqh8HPIlbXpdLq8qLgSsja5qOSKZz42jx+/8WM8dOwhzMSXnO0sBgsuW3cZrt12LfZ17UMmk8ErE6/AsehAj6kHnWwnDh06xHUp0n+EUiHke1luL7VCvCVJt5TGlobRaFQU6RZ+8Xz2inzHLFdqlk6nMT4+joWFBdHj0NvIBU22g4ODWLFiRZF5NR39RaNRrkiVyWTAMEweGZ9rwlECKecrJGsTGz9PXxdiEFRr1wZY+v4PzxzGg68/iF+P/hoZdun+WG1fjet3XY+PbP4IWm1vNsFYLBZctO4iXLTuorx90F2KXq8X8Xg8r2WcTuek02nU1dVV+6PKxluKdPnIttQNrVSFQJBMJuFyuRAMBtHX14ehoSHRqEIp6QKAw+FAMBjEmjVrRMmWQGwSBB+i0Sji8ThOnz6NwcFBrnNMyGO3MPoLh8Pwer1YtWoVotEogsFg3rgcQjZSpVvnCuX63AoN2SyUtSWTSRw+fLjIiUwNv4VKIcWk8KvRX+FHx36EY3PHAAB6nR6XDl6Ky3svxwWdF2BV7ypJ+xLrUiwk4//5n//BE088gXQ6jdtuuw2bN2/GO97xDvT29ir+LPfeey8eeugh6HQ6bN26FY8++qgqSqK3BOmyLItwOMx5ccoxoJFaECtEPB5HIpHAsWPH0N/fz2uvyAe50WcqleI8c1tbW7Fx40bJS0WpzQ6xWAxOpxOJRAJmsxnDw8OKrSEBwG63w2635/0b8aGlo2IiSaLJeLmY4FQi+iyUtQWDQQwPDxf5LbjdbtW0s2phJjqDh48/jEdOPILFxCIAYIV1BT6x9RO4dtu1WNO0BpOTkzAZy39Z8JHx1772NVx22WW4/fbbcdFFF+HUqVPweDyKSdfr9eI///M/cfr0adhsNlx55ZX4xS9+gU984hNln/95Tbp0Q4Pb7UZnZ2feG1MK5EaetL2i0WjE/v37KyI1SyaTcLvdCAQC6OvrQ3t7O9rb22XPVhMjXZpsSWT7yiuvCFrslUNEfD60dBU8Go3C4/EI5ovr6uqqtgyv9pJfiayNjoor+aI6OnsUPzj6g7wUwtb2rfjszs/iivVXwGZ6s6GHYZiK+mNEIhF0dXXhkksuwSWXXFL2/hiGQSKRgMlkQjweR3d3twpneR6SrlBDg8lkUqwKkIJwOAyXy4VMJsPZKx48eFD2A1qKdGmy7e/vx4YNG6DT6eD3+1WbOBGPx+F0OhGPxzmyVYNk5KoXxCRJhfliUqAiL1mWZRWPVy+Fak2nKAUpbm2lZG1KkGWzeHrsaXz/6PdxcPoggKUUwvuH3o/P7vwsLuy5kPf6yB1DJRfBYFA1jW5PTw9uvfVWrF69GjabDRdffDEuvvhiVfZ93pBuqQkNxBRabRB7RQAYGBjI64YhBCon+hR6mOnROzTZEigdw144ccLpdCIWi2FwcBBtbW2yyKUUGaklGRNTC5w5cwZms7lovLqa+eJqka7SFI5QHjSZTHKRMZG1EZIm3h5isrZwKoyfnPoJfnTsRxgPjQMAmixN+PiWj+MzOz+D1Y2rRc+t0haSajZGBAIBPPXUU3C73WhubsaHPvQh/PSnP8U111xT9r5rnnT5Ghr4crZK9bZC8Pv9nL3i2rVrefu9CemW84AnEgm4XC6Ew2HB0TvkWHJJl5AgGe8TjUYlkW0hIZDrLYVQKykb0+v1MJlMaGlpyXv41M4XV0P6pjax63Q62Gw22Gy2vBdVKpXCG2+8gfr6+jxZm16v54zSg7kgfu78OX525mcIp8MAgP6mfnxu1+dwzeZrYDfbhQ6bB76ONDWhptnN888/j/7+fu5aXX755Xj55Zff2qQr1tDAB6X+tsCbBSedTofFxUW43W5YLJaS9orlKBHoOWeDg4PYtGmT6EOoZLZaNpvFxMQEstms5PE+hFzLKaRVG2L5YhL5kWV4LpeD1WrNI2O+yK/Sn6WaLcBmsxkdHR15sjaWZXFw4iC+/dq38b+T/4tsbune2ta0DdcMXoNLBi5Bo70RppxJ8v1Q6fRCKBTiGlbKxerVq3Hw4EHE43HYbDa88MIL2LNnjyr7rjnSldLQwAeleltgidBmZ2cxOTkJu92OzZs3S7JXVCI3I6qHEydOyJpzJie9QKLnhYUFrvVYKokUNmHIwXLqSKPzxUKm6YX5YmINSfxnK5lmqNYk4MLvks2xeM79HA68dgB/8/wNAGDQGfChDR/CF3Z9AdvatnEaY7Fpx3yytlpKL+zbtw9XXHEFdu3aBaPRiJ07d+Izn/mMKvuuOdLNZrPcwD45N6US0iX2ipFIBIuLi7LtFeXIzWilgMlkwr59+2Q90FJIl2iGQ6EQBgYGOImRnOOUQ5zLiXSFIJQvphsakskkJicnMT4+zpENLd1SQ0NbrhZYKggRppgUfnnmlzhw5ABG/CMAgAZzAz659ZO4fuf1WNX4pra2lFubkKwtnU5X9PtX2+zmm9/8Jr75zW+qtj+CmiNdMu9eLuSQLsuymJmZwcTEBFpaWtDa2oqBgQHZchcp6QVaYkaUAkpUD2KkW0i2JC88OTmpOA9MIx6PY3x8nHvAKqUaOJegGxpCoRBWrlyJpqamoonHxPKwXNlWtdIL/oQfP3b9GE/+5UnMxZaMZ3rsPfjcrs/h41s/jiaLNG9aMVkbWTWk02mcOHGiYrK2WnAYA2qQdJVCCunSc8Ha29s5e8VTp06pbnpDWmnT6TQGBwfzJvgqWcLzHYvIy4LBIG+DhpI8ME3uJE0RiUTQ29uLbDaLQCCAqakpbslJSNhut8NoNC77SFcK6BciH9kI5YuJbItcDzGlQKUjXU/Egx8c/QEePf4oYkwMwJK+9obdN+CK9VfAZFCn4432552ZmcHu3btLXh+lbm3hcHjZe+kCbzHSFZKMkVE1xF6RngtGtlWLdCORCJxOJ+dbQGssC7eTU3TQ6/Xc50ulUnC5XAgEAhgYGCiSl/FtIxU6nS4vciZFvkwmUxSd08bX09PTiEQiiMfjOHnyJBfhCBWqljOkSOPE8sXRaBTRaBSzs7NIJpN5+WJyXSoV6Z5aOIX7XrsPT448CYZduqf3t+/HbW+/De9Y/Y6Kfg9k32LXJ5lMcpGxXLc2LdKtEJTeFHySKtrQu6enh7NX5Nu2XKexcDgMp9MJhmGwdu1a0TeykuPp9Xqk02mcOXOmqHFCbBs56QWyVHzjjTcwODhYsrW5cFhiJpPByZMnsXbtWo546EIV/VCRFMVyRDk5bZIvpkHyxdFolNMXE2OXkZGRvGuipPqfy+XwkuclfO+17+E593MAlpoZPrj+g/ho/0ex1r4Wq1eLa2zLhZRrRsva2trauJ/Tbm30ywoAlyseHR3llBhqIBgM4rrrrsMbb7wBnU6HRx55BBdccIEq+6450lUKmhxo28Pe3t48j1k+KI10jUYjgsEgjh49CpZlOUeuUpBLuqlUCtPT0wgGg9iwYUNJsiWQSrqZTAZutxsLCwswGo3YsmVLkVROapFMSC9KE4/P58PExAQymUxenvh89V7gM8AJBAKYm5tDZ2cnotEo5ubm4HK58vLFdPGOLypmcyx+P/Z73Hv4Xrw2+xoAwGa04WNbPoYv7P4C+pr6MD09rYqncimUo1yg3dposCyLeDwOh8OBV155BXNzc9i9ezdsNhs+/vGP4/rrr1d8vjfeeCMuueQSPPnkk0in01zErQZqjnTLudlZlsXIyAgWFxclO3EBykg3FApxFdxt27bJWvZIJcN0Og232w2fz4e2tjbU1dXJ6g8vRZQMw2B8fBxzc3Pc9XrjjTck71/O8YSct+jcH/FeyOVyectNu90Oq9V6Xnkv5HI5GI3Gkvliv9/P6YvJNTHbzPjf6f/FA8cfgCPgAAC0WFtw/c7r8Zkdn8mzVKy0dpY+jtovS71eD7vdjp07d2LHjh147bXXcOzYMc6/WClCoRD++te/4rHHHgPwZl5aLdQc6QLypUekoBSPx2G320vaKxbCYDAgnU6X/kW82Ras0+nQ29uLeDwuO89UKtKlyXbNmjUYGhpCKBTCzMyMrOMIkTuddin05JVrB0lDiWRMyF+A5EbpLipaopfL5SpmgVgN0mVZFtABDxx9AE+efRJWkxU3D9+Mf+z7R8F86EJoAQ+//jAePv0w5pPzAIBOSyeuGbgGV62/Ch3NHajX1+edf7VUEgzDVJTck8kkLJalIZZ8UbEcuN1utLe345Of/CSOHz+O3bt347777itrnzRqknSlgu7q6u/vRygUQmdnp+ybTEqkGwgE4HQ6YTAYMDQ0hMbGRgSDQUVvXLGpE8SgvNCbVw3vBVJQJJZ4fGkXqXaQQlDbe6HQHPzMmTPQ6/V5WlHS7kunKMohmmpFuv/t/m/81P1TWAwWZONZ3PT8TXj0vY9iuGs473cX44v44bEf4sHXH0QwFQQAbGrdhJuGb8Jlay9DJrVU0PT7/XnNDHa7HYlEAs3NzRUnxWo0Rqg1ep1hGBw9ehQHDhzAvn37cOONN+K73/0uvvWtb6my//OSdGnta39/P9fV5fV6Fd1cYqRLezCsX78+b3lc7hQIAppshdIi5ZAuLZXr6uoSHcdebnNEJWEwGGA2m9HW1satLgqX45OTk4jFliRSxFuAkLHUCRbVinSfn34eZr0ZFoMFMADBVBDPuZ7jSHcyPIkDrx3Af73xX0gwCQDA/u79uGXvLXhP/3u4c7SarUVpG6IvJpLCxcXFPP1sqXyxXNRSN1pvby96e3uxb98+AMAVV1yB7373u6rsG6hR0hV68Gk5FrFXpB8Ok8mETCYj2/29kDxzuRxHtmazWdCDoVzVQyaTwfj4OObn50vmoJUa3kSjUbzyyivo7OwsksoJbbPcO9IKzXj4luOkIh6NRvNG5hBHMjHFQLVIt85Yh4X0Qt7P7WY7zvrO4t7D9+KJs09wsq+L+y/Gl/d+GRf0SKuwE31xfX09Ojs70dTUlGcLSSLjwnyx0gGb1TC7USvSXblyJVatWoWRkRGsX78eL7zwAjZt2qTKvoEaJd1CBINBuFwu5HK5IntFGuWoEIjXg8/ng8vlgsViwaZNm4omIBRup9TwZmZmBm63u+ScMwI5jQ65XA4zMzOcJeW+ffskFwrKGWa5nLS4dEW8s7OT+zntSFaoGCBkTO6FSiKXy+HTGz+Nrx/5OgLJwJJlo9GKv0z+BV//29eXPoNOjw9t+BBuHr4ZW9q3KDoObT0qZAspNGCTvoaEjIU6EavhpasW6QLAgQMHcPXVVyOdTmNgYACPPvqoavuuSdIlX6rf74fL5YLBYMDg4GDJi15Ok0M8HsehQ4dgs9lKki29nZzjkXHpHo8Hzc3NktUVgDQyzOVyHJG0tLRg69atcLvdsiqzteCfUA6EHMlSqRSnLSaGRERbTKco1Gp/ZlkWw53D+Nn7foYHX38QL3lewlhwDK6gCxaDBddsvgZf2vMl9Df3l3UcKX7PpQZsCuWLaTKupfQCAE4NUQnUJOkGAgGcPXsWFoulKI8qBrmkm8vlsLi4CKfTiVQqhR07dsiqYEqNChmGwcTEBGZnZ7Fq1SoMDQ0hlUqpNnonl8thYWEBTqcTTU1N2LVrF6xWK5LJpCreC6FQCGNjYwCQV7CqpoyrkqAjwLa2NgQCAWzZsoV7GdNNDalUKq/9WensMibL4G8zf8MjjkdwZPYIgCUDmuu2X4fP7/o8Ous7S+xBGliWVUyGQjI/uhNxdnaWe1GZzWYkk8k8vwW1lBNqTo2oNGqSdPV6vWR7RRpSSZeQlMvlgt1ux9atW3H8+HHZxytFOIVkSyLb+fl52WJsPtIl6ZCxsTHY7Xbs2LEjz7SnXMVDNBqFw+FANptFf38/9Ho9twSdmZkpypHa7fbzIkqmLUX5hmzSpEPPLiM+vWJz3RiWwa9GfoXvvvRdOMNL6Z9WWys+v+vz+PT2T6PZqi6xVCICLexEBACn0wmbzQaLxcJFxqSgSfwoCBkreVmHw2GsXbtW1c9RKdQk6RKJi1yUMjLP5XKYn5+Hy+VCY2OjbCtHqSA62JmZGfT29mL//v15N75SMqQJze/3Y2xsDFarFdu2beOdh6VEc6vT6ZBKpXDy5EnE43EMDQ2hpaWFm01WuAQlOVI6F6i5G/4AACAASURBVHjo0KE8Aqo1/4VShTQ+0qHH5fC1PxutRjwz+wwePPUgJsITAICVdStx896b8fGtH0edSdk8s1Koplm6zWbDihUrZOWLpbaF14rvAlCjpKsURqMR0Wi06Ock1+l2u9HU1FQUEaoFmmx7enqKyJagnIkTwWAQDocDJpOpZO5ZruY2lUphfn4e6XQaGzduLBrrw0dGhTnScDiMPXv25BHQ3Nwc96DRRKzEm3a5jtIRan8OJUJ48OiD+OGJH2IhsaRU6LX14squK/Evff+C7s5uMAkGWX1lcqLVbI7gO3+xfDGxzCw0Sy/MFxuNRlVH9VQaNUm6SiOiwjlpxKScDJ/buXOnbDmZFGQyGXg8Hni9Xt7IthBKSDcUCnHNIKXGCBEoaTduaGhAT09PHnHIhRABCc0ys1qtecWqao5b54MaxO5P+PGj13+EB44+wDU0bGvfhlv23oL3D70fY46lVQrDMPB6vXmj56VYQ8pBtczS5eS1DQaDoFk6nboJh8P4/Oc/z32GiYkJ7Nixo2yJVzabxZ49e9DT04Onn366rH0VoiZJVylo6dfMzAzGx8exYsUKrrAkBhIVyokKstks0uk0Xn31VfT09JQ01iGQI/+KRCIYGxsDy7KwWCzYtWuX5POTk3Mm7cYej0fy/uVCinJgYWEB8Xg8b/lJ/lSi5VcISolqLjaH+4/cj4ePP4xoZmnVta97H27deysu7r84z/6wqampyHeBr/2ZrBDo61HNayEFauWO+VI3hw4dwuWXX463v/3t8Hg8GB0dxTe+8Y2yjnPfffdh48aNCIfDZZ5xMWqSdMuxd4xEInjllVfQ0tKC3bt3c/3apUAIW4q8ivbn1ev1nPORnPMsFYHGYjHOBJ1YRb788suSjyEG+vxJO3A57cbloFA5QJ8jiYrplt9MJoNsNotEIqF6hbzwvORgMjyJ+w7fh5+88RMks0u2hO9Y8w58Ze9X8LbetxXtj+8FL9b+zHctCqcdq9VdpgSVbI7Q6/WIRqO44ooreGsXcuHxePD73/8eX/va13DPPfeocIb5qEnSlQuWZTE9PY3x8XEwDIMLLrhAMtkSSCFdmqy6urqwb98+nDhxQvb5iqUX4vE4nE4n4vE41q5dm1eUKBfkOk1MTHDnX7gkLNd7QS3wLT9zuRzOnDkDu92OVCoFn8/HqUAKo+JqefU6/A7cc/ge/PLML7nusX8e/Gd8ed+XsXvlbsHt5OSNha6F0LRjOkXBsmzVOuwqqdNNpVKq1WFuuukm3HnnnWU5lYnhvCZdmkTa29sxPDyMI0eOyCZcQJwIs9ksPB4PPB5PEVkpyc/yRbr0aJzBwcGiIhaBkgeIzm23tbWJtgMLNUcsB+WBTqeDwWAoSlGwLMtFgrRXr9pGODTeWHgDd716F349+mvkkOO6x76898vY1FY631hugUtq+3MqlcLhw4c5aR/9clKzg6zSk5PVwtNPP42Ojg7s3r0bL774omr7pVGTpFvqy2NZFl6vF5OTk+jo6MDw8HDZkQ2fxpdlWc6Va+XKlbyRodIpEGQbvtE4Qp+fLP2lRhS5XA6ZTAYHDx5Ec3OzpHRLOdaO5wp6vZ5XxE9yxXxGOIVRsVTCODR9CHcdugvPuJ4BAJj0Jnxk00dw0/BNGFwxKPmcK6UqoNUC7e3tCAQC2LNnT8n250o0NKgNNUj9pZdewm9/+1v84Q9/QDKZRDgcxjXXXIOf/vSnKpzhEmqSdAH+iIt2y5Jq4CIVNOnSxxEiWwIlpEuW8CMjI/D5fLxDJfkgh3RJ0wTDMNi7d6/kpdlySS+oAaFIkO4yI0M26QkW2Ww2rzCUy+Xwt6m/4a5Dd+HFyRcBLE1o+PjWj+NLe76E3oZe2edWjSU//RlKFTGJdIuka8p5MakNMmFEDdxxxx244447AAAvvvgi7rrrLlUJF6hh0qVBL+/5BksWQskNbTAYkMlkMDk5KYvU5bYek9E48XgcDQ0NWLdunazcXjabFT2nUCiE0dFRmEwmbNmyBcePH5eVCxNKL7AsK6mPf7lDqMuM5EfJKPFjx46BZVkcjx/HT8Z/gtf9rwNYatX99PZP4wu7v4D2OuWyumroZ0sdQ6iIWfhiKmx/LtTQVvoFEgqFiqRlyxk1S7o6nQ4Mw3DLe6HCTyHkLsGBpZssEolgamoKPT09siJoqZFu4Wic+vp6WaN3AHFlAS0tW79+fVHRRepDUUi6JOqfnJzk/o2OghoaGs5pFKQW6AkWM7Mz8DZ68R+v/gdOLCwVSptMTbhi1RX4545/xgrrCgQ8AWTsGY585BaRqkG6SmVcYu3PJEVBtz9bLBak02nMz88Ltj+Xg0p1o1100UW46KKLVN9vzZLu1NQU3G43uru7RU23C0EiTyk3G12Is9lsWLVqFQYHpeflgNKkS3ep0f4Lk5OTso4D8JNuPB7H2NgYkskkhoaGimwvCVFKfQjIMejiGylSEjKmCzVerxepVIpbnmcyGUQikXMqX1IKhmXw5Nkn8e0j38ZkYun76azvxBd3fxHXbrsWdvMSCREBfzQazWtsoF9G9fX1oh4D1VIUqPkdEI/eQm1xKBSCw+FAPB7Pa3/mS1EogZpTI6qBmiXdpqYmWWRLQEhXrGDEp3qgDTrkQIh0aXmZUEuw3AePJt1kMgmn04lIJMJJy/j2RbaR8/DF43EcPHgQTU1NXPGNmK4L+dSS5fn8/Dympqa4a3mupFxykGJSePz047jn8D0YD40DAFY1rMKNwzfiY1s+Bqsxv7FGyHuBvIzC4TCvaTq9JF/Oka4c6HQ6mEwm1NXVoa+vL+/Y9PRn0uZLXs50iqLUOdaSwxhQ46SrxJ9ALMfKsizXqUbIlpBAOV689FDLwtE4QikRuREoOVYqlcLZs2fh9/tLqh3o40hBMBjEyMgIGIbBnj17ZAnRyfLcbDZzLZpSpFwNDQ2w2WznJCqOZ+J47ORjOPDaAXijXgDAYPMgPtD+Adx26W0wG+T5EPM1NjAMw0XF9JI8mUxifHy8ojaZ1fJd4CN3senP5J6Q2v4cCoUEBxcsR9Qs6SqF0WhEJpPJ+xkh24mJCbS2tvJKzJROgSCRLh09SynCke2kPhQMwyAcDmNxcRGDg4NYv369pIdUSocZsXBkWRZ9fX3w+/1FhCuHEGhrxMIHj4j6I5EIotEoFhcXi9p+bXU2PD/zPP7q/SsazA345LZPYkPrBkXnwodwKoyHjz+MA0cOYDGxCGBp0OOt+27FB9Z9AEePHJVFuGIQGrN+6NAh2O32omnHamppqxHpAvK60ci4c6FVQjQazWt/fvrppzEzM4OWlhb4fL6ymoWmpqbwsY99DHNzc9DpdPjMZz6DG2+8UfH+hFCzpKuG6Q3twdDa2oo9e/YILm/lToGgtwuFQjh48CDa2toka4alKBGApQeHjEu3WCzo7+/PW9aXghjpJhIJOJ1OxGIxzsIxHA7D5/NJ3r9c0KJ+obbfH7/+Y/zK/SsYdUawYHHUcxR3vu1OrF+5viwNsT/hxw+P/RA/PPZDzoRmZ+dOfHXfV/FPg/8Eva460TZ5IbW3twsaAs3NzcHpdBb59MqxyaxmpFvOy4FeJRTul2EYPPbYY3A4HLjyyivh9/vx8ssvK+pOMxqNuPvuu7Fr1y5EIhHs3r0b7373u1WdjwbUMOkqBYl0SVuwVA8GJVMn5ubm4HA4oNPpMDw8LKsTrlQESqcpSDHR7XZL3r/YcdLpNFwuF/x+P9auXYv29vY8I5ZyiE1J2gTIb3U98toRZIwZnA6cRou1BWvMa3DIewjGmBHBYJAbUkgTkVikNR+bx/1H7sdDxx/iTGgu7LkQt+67Fe9a865lo7wQ0tIK2WTW19ejoaGBi4wLX+DVinQrdRyDwYD9+/fj2WefxVVXXYX3ve99Ze2vq6sLXV1dAICGhgZs3LgRXq9XI10CJQ9CLpfjTEE6OztlG95ISS8UjsbZtGkTPB6P7NZjoQIcic7dbjc6Ojry0hTlmp/TrmJ9fX28KYpyDW/KJe1D04fw18m/Ipxecn+qM9XBYDRgVfcqbB3cipGREXR0dHCTjmdmZhCNRvPygg0NDbDb7VhIL+C+1+7Df538L86E5l1r3oVb992Kt/W+TfE5VhNCNplCJjj0gE0yQqfSqMYkYLULaePj4zh27Bg3hl1N1CzpygE9kNFisWDlypXYsGFD6Q0plEovCI3GSSQSZeWC6f3Pz8/D6XSipaWFN00hxxKSgOidJycnMTk5WeQqxvf7akS6chFOhfHNv38TDx1/CDnkYDFYsHbFWjSYG9BZ34kLey7kfpdExUK2iG9Mv4EHTz+IZ2aeAZNb+k7f1fMu3DJ8Cy5cc2FVor9KQ8gEh7bJXFxcBMMwmJ2drahNJkmBVApq63Sj0Sg++MEP4nvf+15Fmi7Oa9KlJ0I0Nzdj165diMViWFhYkL0vMc8BsdE4SqdAEAKlybyhoUHU+1eKJSQNQkQnTpyQrHc+F94Lv3P8Drf+6VbMxGZg1Bvxpd1fwqWDl+L4/HHYzXa8p/89JWeH6XQ6TMQncPdrd+PJkSfB5ljodXpcPnQ5rt90PXrNvYhEIjh27FhRg4fdbudWKrXmO0GDr8Osrq4Ora2tnHxrcXER4+PjqhoCVWMSsFrqhUwmgw9+8IO4+uqrcfnll6uyz0LULOmKpRcKx+/QEyFSqZSighgfpIzGKUf1EA6HuehcaM4ZDb1eX6TM4AOZckx3qEktvpXrvSAn0p2OTOPWP92Kp51Lzv17Vu7BgXcfwOb2zQCAvd17Je3n2Nwx3PXqXfjd2O8AAEa9ER/Z9BHcvPdmDK0YKvr9Uv4LROZVKfOXahE7Ucfwybdoa0gi6VNqk1mN9IIapJvL5fCpT30KGzduxC233KLCmfGjZkmXD/RgyUKyJTCZTJKISQxk5LhOpys5GkcJSUUiEczNzcFoNGLLli2SR8xLybcGAgE4HA5YrVZs374dU1NTsirLfKRJ8tiBQIDLmQrpSqWQLptj8fDxh/GNv38DkXQEDeYG/Nvb/g3Xbb8OBr34w0vv+2XPy/iPV/8DL0y8AACwGCz42JaP4cbhG7G6cbXgPsT8F0KhEBYWFjAxMYF4PM5V1kmeWI2leTW60QBxj1sxa0iSK/b7/Zy2mjYEKjRML1e9UArxeFwVL92XXnoJP/nJT7B161bs2LEDAHD77bfj0ksvLXvfNGqWdAsHIpLiVWNjo+hgSaVNDsDSzXP06FHkcjmsXbtWUuuhnIeHngbR2tqK5uZmyYQLiKcXIpEIHA4HAGDjxo3cfuW+FArTC8RAx2KxoKWlBbFYjKugkwiKfhBLXY+zvrP44h+/iFenXwUAvHfwvbjrnXehp6FH0vnlcjm86HkRPzj5A7zsXZqkUW+qx6e2fQo37L4BK+0rJX/WQhD9qMViwebNS9E26ayKRCKCBSvS4CH1XlgOpCsEIZtMOiqmOw7r6uq48UJEg6vmZyP3ohorjn/4h3+oyiqjZkmXgES2dPFKDEpIl5BhKpXCpk2bVJ3WAOTrYUnL7uTkZFk+vPS+x8bGkEgkeL0X5KoRCEnHYjE4HA5ks1ls2LAB9fX1SKfTed1WfB4EsVgMIyMjeZIus9mMFJPC3Yfuxt2H7kaGzaCzvhN3veMuvG/ofdI0pzkWvx/7Pb710rdwNnwWANBsacb1O6/HZ3d+Fq029b4z+nyEluZCc93oaFCouaGa+lm1jkMbAhGQNM3p06e5lxLtw0EkbXV1dWWnH5aLrE8Kapp0jx49CrPZLCnfSSCnEFQ4GieTyYiONJeLdDoNp9OJYDCIwcHBPD0ssZKUA5pA6X2vXbtWcNKEXNJNp9OIx+M4efIkhoaGuBcQy7JF++fzIDh+/Di6u7uRTqe51t/Xfa/jnrF7MBGfAAB8dONH8e2Lvo0VttJ5OmJCc8/he3DWt0S2bdY23LDnBly3/To0WtStPkuJQsXmutF6WtLcQLe42u12rjmi0qg0uZOXjMFgwNq1azlipVt9PR4PYrFY0RghUryUMjy11tQmNU26O3bsqMhNIzQaZ2pqqqRZjhDohzWTyWB8fBwLCwvo6+vDhg0bim4ug8GAZDIp6xh6vR4Mw2BsbAxzc3Po7+/n3XfhNlJeQrT1pMFgwL59+/L2K8eljFTMo+kovvn3b+LBEw8ihxz6G/vx9e1fx3rrejhOOri2V5KioM1PkkwSPz/9c3zv8Pc4E5rehl5cteoqfHbvZ9HZIr0rTw7KWfrzjRIqnPA7MzODRCKBVCqF0dHRvNSM2uRSreaIQnLna/UtHCNE3OmIR6/QdQiHwzXlpQvUOOkSNya1UGo0jlIlAh1NTkxMYGZmBqtXr8b+/fsFXxpyI1CWZTE3N4e5uTkMDQ2Jam1plMrp0p1vRMN78ODBspdzz48/jxv/eCOmIlMw6o24ac9N+Or+r+Y5dtFmMCQ9EWfieNb3LH4x8QssJJekf4PNg7hl7y24auNVcDlcsBnVGVDIB7XzrXxGOMSOs729XdQeslyv4mqlMYDSL2UhdzqSoorFYpiens5rdBkfH8fU1BTq6upU+16eeeYZ3Hjjjchms7juuutw2223lb3PQtQ06SoFIRpyw6XTabjdbvh8PgwMDAiOxinHf4GQrZCNI982UjvgSIfaihUr0NLSgjVr1kg+NyFypxtK2tvbJRnES0GEieCLL3wR/z363wCWvA3uv/h+bG3fWvS7tBmMP+HHj17/ER44+gDni7CucR3+ddW/4sLmC1GXrcPU+BQSiQSSySQaGhoqkuerls+t0WgsSs0IRYNiygExVCvSLQdiNpkLCws4ceIETp8+jZ07d6KhoQEHDhzglAdykc1m8YUvfAF//OMf0dvbi+HhYbzvfe/T2oBpKL35STFNp9PB7XZjYWEB/f39JUfjKPFfmJ6eRigUgt1ul0VcpRodaMXGihUrMDw8jGw2izNnzkg+P4Bf2+v3++FwOGC322W1SpfCbx2/xZde+hL8aT+sBiu+duHX8IXdX4BRL3xNpiPTuP/o/Xj0xKOIZZYq4vu69+HWvbfi4v6LOQkacSbz+/3wer0YHx/P86olHgTlkkw1SFfoGKW8iguVA6X0tNVSSaitCCCrg3e+853Q6/Voa2vDfffdh3A4XJZc79ChQ1i7di0GBgYAAB/+8Ifx1FNPaaSrBvR6PZxOJ/x+P9asWSN5KS7Hf4FEia2trWhra0Nvb6+sSFGspTcQCGB0dBR1dXV5io1UKqXIe4FsE4lEMDo6Cr1ejy1btqC+vl7WvoSwEF/ArX+6Fb8e/TUAYN/KffjBP/2AtzGBYCwwhvsO34fHzzyOdHbJj/ida96Jr+z7Ci7subAon0w0pYuLi+ju7kZjY2NeeoIsTYXGCUlFNSRFcpf9QsoBMa/ihoYGruOxksTLV2BVE3QLcLm5Xa/Xi1WrVnH/39vbi1dffbWsffKhpklX7pdJPAaIiF8q2RJI8V9YXFzk9MKkZffUqVOyc8F86QWaFDdv3lykpFBiRqPT6ZBOp3Hy5EkkEgmsW7dO1T72/xn5H3z5T1+GL+FDvaken1v7Odz0DzehsYH/AXl97nXce/he/Gb0N8ghBx10uGzoMty892bs7Nwp69h8XrVkiR6JRBAIBDA5OcmREa0pFpvjVQtjdMS8iknRLp1O48iRI9DpdBXzXqhGC3AtTY0Aapx0paJwNE5XVxfa29tl39hGoxGpVIr330inl81mU8V/gd6GnnMmRopyvRcymQxmZmYQDAaxefPmPMlauViML+KWF27Bbxy/AQD8n1X/BwcuPoDEdAI65B8jl8vhr1N/xb2H78WfJv4EADDpTfjwxg/jpuGbMNQiHBHLBb1Ep49PG6cTXW3hKB273X5O0wvlorDLbGFhgUtL8TmSKfXppVHpbrRgMIieHmmNM6XQ09ODqakp7v89Ho9q+6ZxXpOu0Ggch8OhuCBWSJ6kJViv1wv6LyghXSL/OnPmTEmtLYHU7jLa+Ly1tRU2my2vqUEJSEOAxWLB78Z+h5uevwmLiUXYTXZ86+3fwrXbroVOp8PZmbPcEj3LZvG7sd/h3sP34tjcMQBL3WOf3PZJ3LDrBnQ3yJuGTCCXGISM04lpOJFyRaNRMAwDlmUxPj7ORcZq5bwJqqkqAIQdyfh8evleRGKRbKUj3XA4zHUHlovh4WE4HA643W709PTgF7/4BX7+85+rsm8aNU26Qg9XqdE4SluB6e2i0SjGxsbAMAyGhoZEW4LlSs2IJjYcDmP16tUltbYEpX6HFPbGx8fR1dWF/fv3IxQKYW5uTvK58YHMTgunw7hv9D48v/A8AGB/537c9877sL7zTV9enU6HBJPAE8efwIEjB+AKugAAbbY2fHbnZ3Hd9uvQYmsRPFY1wWcaHg6HMT4+DqvVmmeGQ+dKS6UnSqEapFsqNy3k01s4003Iq5g0NjAMU9FIlxjWqwGj0Yj7778f73nPe5DNZnHttdeqRuh5x1F9j+cQ9PgdsdE4Sk1vjEYjkskkTp48iXg8zo2wKQWpUjOWZTE5OQmPx4PVq1ejrq6Oc7IvB7SrGFE6kOtSjlVjPB7H6OgostksfI0+fPGFL8Ib9cJmtOG23bfhsp7LEPfHccSzlDdkzAweH3scT808BX/KDwDoa+rDDbtvwDWbr0GdSfqgy3MJk8mElSvzPRxI2y9pdy1s+yXqCSkEtJzHrwvNdBNqbCBa+kgkokq7byHUzuleeumlqhvcFKKmSZfcmLRaQMr4HbHcrBBSqRTGx8fh8/mwbdu2kkt9GqVaeukIdOXKlZyvrcfjkXWOfKANafi8KZS4oLEsizNnziAUCmH1wGoceOMA7v3jvQCW7Bd/9E8/ylMmOANO3H/kfvzs1M+4CQ3r7OtwZe+VeM+q96C5sRnJSBJGu7HsSQbVUBfwkRWfIxfd9ktP+iXqCRIVFjY41Nr4daFJx5lMBh6PB6FQKK/dV8irWAlqbRIwUOOkS09TaGpqEjX4piEnvZDJZOByueDz+dDb24tMJpO33JICoZZeorUdGxsTnEKsFCQKZRgG69evF5TTyFE8kFxwPB5Hf38/jB1GXP7by/H63Osw6Az46r6v4iv7vwKj3ohcLoeXPC/h+0e/jz84/4AclsjwbR1vww27bsClGy9FLpfjfGtpWRMp4BBSqsT4caWQQ+pCbb/kMweDwTyvXvJ5qzFGpxrEbjKZYLVaYTAYsHr1au64Ql7FheoRKeenkW6Vkc1m4fP5JLmL0ZBCuvS8sDVr1mBoaIgb1S4XfIU00oBQX18v+WUhBSzL4vTp0wiHw3mGNEKQQrp011tXVxfsdjteCr6Ezz/7eUTTUfQ19eGxf3kMO9t3IpVN4ZdnfokHjj6AEwsnAABmgxlXbbgKN+y+AcaAkVsl6HQ67iEjy3W6gEMKWMlkEkajkXsoiTNVNYtN9LUo5wVA5FmFDQ60K5nP50M6ncbs7Kyi9IQUVHMoJX3OYl7FRD1CDNOleBVHo1FVTaiqgZomXZPJhI0bN8reTox0aXlZ4bwwnU5X9ryzcDgMh8MhqLVVCvKSiMfjoq3MhSiV0/X5fHA4HGhqasLw8DD0Rj2+8co38N9TS228V2y4At+/5PsIJAP4f3/7f/jJqZ/Al1ga0d5ma8N126/DdduvQ0f90rJzLDgmejyhAk4mk+EeStpAnCalajx8lcq30ukJnU4Hs9mM9vZ2Tj0xOzuLaDTKuZLRLyAl/gvVtI+Uovk1m81obW0tSs8IeRWnUimcOnUKBoNB9ZTSV77yFfzud7+D2WzG4OAgHn30UVXzxjVNuoCyQYd8pEsrHmh5WeGxlMBgMCCVSuH48eNIp9NYt26d5IprqYe80JCGRI1Sz1UopxuNRjEyMgKDwcDpjhOZBD78qw/jD1N/gFFvxHcu+g5WN67GR5/6KP7o/iOXQtjWvg2f3v5pXLH+CthMtryHW+lgSpPJVNR1VZgzjUajiMfjSKVSWLFiRV7OVC1Us8glJOUizR2F/gtyludKDMyVoBzrRTGvYpfLBYfDgbm5OQwPD8NqteKmm27CVVddVfY5v/vd78Ydd9wBo9GI//t//y/uuOMO/Pu//3vZ+yWoedJVApp0c7kcZmdn4Xa70dbWViQvKxd0AW779u15OtBSIEt/vpuWzmfThjSzs7OyopjC9EIqlYLD4UAsFsO6deu4fFkul8NHn/oo/uD8A4AlZ69/f/nf4U8uqRDMBjMuX3c5PrX9U9jTuYfbJpvNclF+LpdDLpcDy7KqRFp8OdPTp0+jra0NLMvm5YktFktedKg0T3yumyPoohWf/0IkEslbnhOj8ELTdDUNzMWgdnME8SretGkTvvWtb+Hvf/87jh07hmg0KtsKVQgXX3wx9/f9+/fjySefVGW/BDVPukoiJyLhIqTV3NysqrELkO+ZSwpwcgiXnCdf7o14L9jt9qJ8sNyuNEK6RBs8Pz+PgYEBbN68Oe/BP7VwCk+PPc39/4h/BACwuW0zPrrlo/jXzf+Ktrriz0fOhWEYeL1e+Hw+tLe355Exye+qYd5N0hMNDQ15eeJUKsWlJ2ZnZxXniZernIvPf4F0mpGZe7RpOkkrJZNJSWbhSlHJ3HEkEuGiYL48sRp45JFHVImeadQ86SpBIBBAPB7H/Py87CIcIP7g0d1exDM3m81idnZW9nkWRqHRaBSjo6PQ6XSC+WAxoxw+6HQ6JJNJvPrqq+jt7RX0+B1YMYDhrmGcWjyF/rp+DLcM418G/wXDq4dFTWN0Oh3nR9He3o69e/dy2k0S9ZL/AqgYEZNJDlLyxCQ6VLt4JRVq5VvF0hMej4dLIRXaQ6pZqKzkZIdgMKg41/qP//iPvM/kd77zHbz//e/n/m40GnH11VeXdZ6FqHnSlfOGDoVCcDgcMBqNsFqt2LJli+zjkeiz8EEszAkXeuaWU4BLJpMYGxsrWvLzzCbCGgAAIABJREFUQaoEjDRMkDlnF154oWhaxWa04cVrXuRIksh+FhcX4Xa7kclkuAizsbERDQ0NSKfTGBsbg9lsxo4dO/IicvJA09eIJmDyB6gMEQPCeWK6eBWJRDjzcOLMpaZxPh8qGU3TioC6ujr09vYCyLeHLHwB0YVKuS+gSnovlNMY8fzzz4v++2OPPYann34aL7zwgurfRc2TrhREIhGMjY2BZVmsW7cOjY2NePnllxXd3CQfTG4kOrfa2trKmxMup+vL7XYjHA5j7dq1kgxppJAu3TCxc+dOHDt2TJBwaRIEwBEeiQRJxxxZqobDYfh8Ppw5cwYMw3BRYzAY5B50oc9QiojpiJj4IZPt1HowhKJDUkWfn59HLBaD3+/nJv6Sa6GWnrhazRGFI3SEXkDRaJS7xwtnujU0NIimJyqZXgiFQqq1ANN45plncOedd+Ivf/mL5NmLcnBeky7tzlU4CVcoYi0Fugjn8/kwNjbGm1stB6Qd2OfzYdWqVaJjfQohRrqJRAIOhwOpVEq0YQLgJ9tSZjtmsxnxeBzBYBAbNmxAe3s70uk0wuEwl1eMx+MwGo1cNEyW8GJji4BiIgbA+cHS55pMJpHJZMAwDLetGukJoq0l6ZjVq1fntf7SeeLCuW5yj18N0iXTKcQglp6QqqOu5GeplK3jDTfcgFQqhXe/+90AloppP/zhD1Xbf82TLh8RJJNJOJ1ORCIRbqR54e8VRqxSYTAYEA6HcfbsWRiNRlXNvukmhJUrV6Krqwutra2yPX8LUxmkq87v95d0K6OjSrISkGKkMzs7i/HxcXR3d2Pv3r3cOVssFrS3t/PmUol5TCwW40TzhIzF3Kv4yHR+fh4ulwttbW0cSRSadKuRnqCvCd/EXzLTKxKJcFMcxFQEYseoJJRGoGItvyQ/Pjk5yU2vIPljtX16AXXNbmiMjY2pvk8aNU+6NOhZZ3yDJWkYjUau5VQqYrEYAoEAZyen5hdO8qvNzc1cOzDJt8oBHemSiNnr9WLNmjWi44g4u0WKqKQQUzAYhMPhQENDA3bv3i1JEyuUS41EIohEIlyRJ5fL5S3fGxoaeDuSRkdHefPG5BqoWbArRYh8M72EVAS0BwNdjKxWpKvmMYS+08OHD8NgMBT59NIvIKVpmWAwKLslfzmg5kmX2MeR8eB9fX0lZ50BSzeJVP8FOnJuampCZ2enIsLle2BJftVsNmP79u15OSQlkyCIemF2dhYulwsdHR2SZrOR5TlNQmKIx+NwOBzI5XLYtGlT2dG+wWDgnfIQi8UQDoe5nCLJE9fV1SEajXKpEqFlptoFOyVRaKk8MT3BwmKxIB6Pw+/3Y8WKFYqMw6WgGm3ABoMBBoMB3d1v+iKLtXnLTcuQWketoeZJNxKJ4MiRI1i1apWs8TtS/BcymQzcbjcWFxcxMDCATZs2YXx8vCwlAiE/QlqZTEYwv6rE/DyVSmF0dFSS2xohnvr6ehw8eBB1dXUcOfBFlcCb14QYq0uxtlQKvpEzLMvC5XJhenqaW6afOXMGVqs1L08sFj3JKdjR15+8BNVoO6XzxARET3zixAkkEgn4/X4kEglV8sSFqFY0XfgdiLV5Cw3XFPJeqEWzG+A8IN36+npJI80LUcp/gWht16xZk1fIUmqATgiUZVk4nU4Eg0EMDQ2JNkzIId1YLIbR0VHEYjF0d3djcHBQ8HcLi2TEqJksgRcWFuByuZDJZDgittvtXGMBMQCqtvMXMQlqbW3FhRdemKcgSSaTXHrC6/UimUxyc8+IjE2JcgJ4M+WSSCQwPz+Prq4uZDIZ5HI56PV6VQt2VqsVRqMRfX193OfjyxMDyFMQyJVzVSPSlXMMvrQMPVyzMD3xxBNPcNeiEjnwu+++G7feeisWFhZkNzWVQs2TLlnCyIWQ/4LX68Xk5CS6u7t5yZwYmcuFXq/n8s39/f2SpkHwjUcvBNHChsNhrFu3DtFoVHGRjDzEtAwsHo/D6/Xi9OnT3LWen59HIpHgIstKdjQBS8WY0dFRAMC2bdt4PYFJ9EQXd2jlBD33jCZiKcqJXC6HiYkJLCwsYHBwEC0tLXkRMXkxqqUnLiQRsTwxGaXDlycW86qtBc9eIWliIpHAhg0b8Morr+D+++/Hv/3bv6mqMJiamsJzzz3H2VGqjZonXaWgjcxpE/RS/gtSp0AQECL3+/2or6+XlQIR8uEFlm7oiYkJzMzMoL+/n3MVi8fjvNEx8UGQUySLRqNwOBwwm83Yt28frFZrXlQZCoUwNTXFzUYjJNzY2KiKZpXk6n0+n+QpHTTMZjPa2tqK1AUkIp6YmOBeUrRyoqGhgSOLhYUFOJ1OdHV1LbmsCUS1YukJEhFLJWIphCiWJy70qqX1xGTAZDUi3Up0oxH1xNVXX43HH38cjz/+OFpbW2UPJRDDzTffjDvvvJPrTFMbNU+6Sh9so9GIWCzGWRfSI9NLbSeFdOmmiba2NqxcuRIdHR1ly7/oKRPd3d1FJF4YHcvV2wJLeeGxsTFuJDv9YPNFlbS3QTgcxszMDGfETXeoSZ0bRqRzExMTWLVqFfbu3ataJC3mVhaJRDA9Pc0NoGQYBmazGf39/WhpaRH97pQU7Mh2fESs5PPyefXSk46JeiKRSCCRSMDlcnHfjRp54kJUehIwKWwDUM035amnnkJPTw+2b9+uyv74UPOkCygzvUmn0/B6vYjH40Uj08UgZcgkMaShDcpHRkYUyb/obYisrHDOWeE2hQ87II1sSfRMTG+kjmQX8jYo1RhB8qz0w04kaI2NjdizZ4+quk4h0G5l2WyWSwP19fVx5zQ5OQmGYbgWWnL+Yg+7lIJdYYqC/hm9D6XQ6fgnHR86dAgdHR2IxWK8hSulbb80Kh1NK7WnFPNduP322/Hcc8+pcXqCOC9IVw5isRjXldXQ0CD7jSaWXiCaUQBFhjRKlAjEMSwSiWB0dBQGg6FIVlYIEumSc5Tb3NDT05PX3FAOxJb34XAYbreba4yoq6vj+v03bNiQp1ioBsjKxOVyobe3lze6JvnEcDjMjdqRm1oRK9glEgk4nU5u+Q/kpyfUKtgBS/cFX8RPZGyFrmR0t5nUqLKSZjflKEiEfBdOnjwJt9vNcYLH48GuXbtw6NChokGk5eC8IF0pkS5tGjM0NASbzYYzZ87IPhZfekGKIY0S0mUYBj6fj9uvWMsjiY5sNhuCwSBeffVVLmohuT++qDEQCHCTIaoRWRYu70lkOTs7yxWoTp8+zeVZyfmLdaiVC+K2ZbPZRBs86G4sPttIOrVCTMXp5buYR67H44HH48Hg4CC3wiArlUoV7AohZBpOm6Z7PB5u5DxNxHx64kqmF8jzrmYBd+vWrZifn+f+v6+vD6+99pqmXpALerDk4OAg5xNLR4NyQKcXGIaBy+XC4uJi3r75IId0GYaB2+3G3NwczGYzhoeHRW8uukhms9kwPDzMFVXC4XCeExiRgJnNZszPz3M2kWq1MksFiSzJ3LULL7wwjzhInjUcDsPr9XIdavX19XkFr3IeanJvhMPhkl4UQhBLrZA8Kj2SnU5NEBneyMgImpubsXfv3rwXCx3dEqhZsJP6+QpN0+k8MTHDSSQSHGkTIs5kMhUj3Wg0WvXVkFo4b0mXru7ztcAq1dvq9Xququ71ejnP3FI3uJSx72T0zuTkJFavXo1du3bhzJkzJSVgfHlbuqhCy23C4TBHNBaLBblcDmNjY3kRcaUn0ZJ0ic1mw65du3iPxzcVgmXZPIMZh8PBNXfQUWWpaJ0u1JVqj1YKvplfDMPkKSd8Ph9YlkVLSwssFgvC4XDJF0k5jR1qEjFfnph8PtLgEAgEoNPpOIc5QsZqEHEoFFL0kpSD8fHxiuz3vCBd+oGhZ4b19PQINk4oecjIwxqLxZDNZiW11xKIRbq53Juj2Nva2rB//37OG0JI/iW3SEauC/Fh2LFjB5eWIXnKQCCAiYkJpNNp2Gy2vDylGtVhoimOx+NYv3697EhFr9dzL4aenh7uc5GInsi7SMGLPn9C7OFwGCMjI1Ut1BEYjUY0NzdzbbDr16/nilnhcDjvRUKfv5hJPCC/YEeadLLZbJ49phqfj9YTO51OLsdNN92oMVyzUraO1cB5QbpA/qwzemaYWqCn4tbV1Yl2fPFBiHRDoRCXT+QbvUNvo4RsiVk5PbmBfjiF8pQkj0cq9+l0mmu1JWQg1SyIZVlMTU1henpa1qRiKeAb6U37Gvj9fkxMTCCVSnEks2bNGrS3t1d9IgRJJdTX1+cRfqHelrxIIpGIqEm8WFOKEBGTe2HVqlWCBkBqFezIJGA5eWLaAEjMd6KcqRHnGucF6QaDQbzxxhtoampSfdZZOBzG6OgoTCYTJy17+eWXZe+nkEBp74WNGzfyRn0kElVitwi8uYy3Wq28DlxCEMrjEZNyuimC9jwgETF9biT67OjoKCL8SqFQr0pWPmvWrIHZbEY0GsXp06cr1tRRiGw2C5fLhUAggA0bNpRcFtMvksJOLL6mFDpPLERUqVQKIyNLc+127dqV94zQBTtSHyDnDSgv2AmpF/juL3KOJH1E54npxg673Q69Xl8xL91q4LwgXZPJVFJKxQeig+W7MYgBeiqVKhqZTirLShodMpkMnE4nAoFASe8FQrpyO8lIcwMxb1cj90U3RdBEnEqlEA6HEQ6H4fF4OCKw2WwIhUKw2WzYvn277Dl0aiAYDGJ0dBQrVqzgZrPREGvqoJf2Ups6CkHSRk6nE729vSULomIQI6pSJvGBQABer1fwfqtUwU6ueoHkiQvz4ISISUH1oYcegtfrRVNTE/7yl79g+/btqhHwgQMH8P3vfx8GgwHvfe97ceedd6qyXxq6ElKr8u2UqoBsNquoKPbaa69h69ateW/9dDrNRSVCht+HDx/Gjh07ZOUDI5EITpw4AWBJitLd3V1SkcCyLE6ePIloNMrlWMWKXUqbG9REOp2Gw+Hgcm7pdJqbOEsX6yoRURKQMfKZTAbr1q2TrcygmzrC4XAekUmRgAFLL+2RkRGYTCasW7eu4sVJGkQLvbCwgJmZGU5hQacmlEjwhIiYBl2we/3117Fp0ybVP3symcSdd96J+fl5NDU14eTJk3j22WfLPs6f//xnfOc738Hvf/97WCwWzM/P53l5yITgzXFeRLrltAIzDAOLxVLkZbB+/XpR+RfDMJJIl+SanU4nWJbF2972NtGbvTBvS4ZnkmIXyVGm0+m8YgsxplGzuUEOcrkcvF4vt4wvNJCnI+Lp6WnOBYwmsnK9Y0nueGZmBoODg6ITMsRQqqljcXGRa+qgUxOE3MfHx7GwsFByiGiloNfr4fP5EA6HsXv3bm6gpphJPPkc5SonyN9TqRQSiURFCnZWqxUWiwXvfe97ceWVV5a9P4IHHngAt912GxeElUG4ojgvSFcpiELA4/FgYmJC0FmMbzspkbXf78fo6Cjn63Dy5EnBfZcqkgkVu2ZmZnDq1CnodDoYjUYEAgFks1nRhgi1QSwXW1paMDw8zPvg8o3toZfGfH4NYjlKoXNob2/H8PCw6rljPs+GQglYKBRCMpnkcrFi6atKYXFxEWNjY+jp6cGePXu4a1fKJH5ubg5jY2OcUxmdJ5arnCCeI319fTCZTKpM7ChEJXK6o6Oj+Nvf/oavfe1rsFqtuOuuuzA8PKzqMYDzhHSV5tvS6TROnDiBzs5OUWexQpTyXyDtwDqdDlu3bkV9fX1egaLwPJQUyciQSQDYs2cPdwyxhgi1iZi2XNy6davsnDofEZOlPSGCeDwOk8lU5NdArlEymcTo6ChyuRyv7WMlQSRSpAvQbrdjx44dYBiGy3FHo1EAKOquU1s5QczrWZaVXDTlM4mn7yF6VSXFJD6dTmNkZAQsyxYV6wB1RyeFw2FFpCvmu8AwDPx+Pw4ePIjDhw/jyiuvhMvlUj0Ndl6QrlyQAgvDMOjr65Ptmynkv0AKWJFIBOvXr89bWvJ9cUqKZKSLKhQKFU04FmqIoInY5XJxI29KTYkQQrmWi2LgW9qT7icytodUtUkhbGBgoGSOvBIg2ufp6Wku/0/A19RBinWRSIRr6qCJTMnLkE7rrF27tuyZYUL3ELHzJB2ChSbxqVSKuw5Cy3I1RycpnRoh5LsALKUXLr/8cuh0Oi5Ft7i4qPoctvOCdKU+bMQflmVZbNy4EX6/X9HSpjC9kM1mMT4+jtnZWW6sj5QiWTnNDVK7qEoRMd1QUIqI6U4uUo2vRu64sLuLNJI0NTWhra0NPp8PU1NTnMcsnWOtFBGTF3dra2vJdAbd1EFAN3UUzn+jc6xiS/toNIqzZ8+ioaFBMK2jBmjlSqFJvM/ng8vlQi6Xg8FgwMTEBPx+vySTeEB5h93c3Jzq6YXLLrsMf/7zn/GOd7wDo6OjSKfTqvsuAOcJ6ZYCGSwZjUbzIrNwOFxyMgMfiPyLRBkTExPo6emRZFBOuoEA6c0NpJNHLa2rEBEXDoEk+b3GxkYYDAbMzMxUzRiHD7QiYOfOnUVLaLrY5XK58iZFqOUbS7rqkslkWZ4VtBaXDG6kX4Y+nw/j4+O83YFGoxFutxt+v1+S7rcSIMb/Xq8XGzdu5J4pIZN4eqIzbRLPBzEntmQyiXvuuQdTU1Oq6vEB4Nprr8W1116LLVu2wGw248c//nFFXtrnhWQMWHoYCj8LMY5ZWFjAwMAAOjs78y7i3NwcIpGI7ImiHo8HoVAI4XAYLS0tGBgYECUh8rY+evQoAOTlV8Vyb+FwGA6HA1arFYODg7LGxauBXC4Hv98Pp9OJVCrFfcbCiLjSnV3Eiczv9xelVEqBJoFwOCyoOihFxMQ8fnJyEgMDA+jo6KhKOoNuiiB5ViIhbG9vR1NTU8lBnGojFovhzJkzaGxsxODgYMkggDaJD4fDiEajitIrr7/+Ov5/e+ce3FSdvvEnbXqJTWlLoRR6odBLUpBLSUCdoepPdHFQ0eGy7HjDS4fREa0KDGBxRF0BuS3dFRUGBRdE3VXXXQsiqw4KLE1boFik91La9EJLm1ubpLmd3x/1ezhJ0zRJT87p5XxmOrOy0Jzc3vN+3/d5nzc3NxeLFy/Ghg0beLnx+0C/b8aIDLpEOqRWq5GUlITExES3X6qOjg60t7dDLpd7/Th6vR5lZWUAgKysLI/NI9dpMpFI5CSd0uv1TlNdY8aMQVRUFL280mw2IyMjgxc3JbKc8/r1607yK+axmPwwv0BsBmJXj9uEhARWyhlEdUCUE11dXXRTialjJY9lMBhQUVFBBxmux4eB3s836UMQOSNTS8yU4A00neYvDoeD1oHL5fJBeR8Q5QTzhuhqEk9uJj09Pdi+fTtOnTqFffv2YebMmaw9pwAy8oMuMYch/gtxcXFIYWxUdQcZpyRaWE+YzWZUV1fDZDIhLi4OFosFGRkZ/f591yaZJ6cwMl6r1WrR3t5OG6yPGzcOUVFRnEm/yPWQQDdx4kQkJyd7tdOLlCZIIHA4HE57x0iJwluYHrdpaWkBHy4gk0/kOZBjMdGZpqamYsKECbzon0kdnem16w7mdJ3BYKCVH976+npCr9ejoqIC48aNQ0pKSkBeB6b5ksFggEqlwtatW+nv2nPPPYe7777baSJvCDOyhyOA3qyVuEd567/gjd6W6ZlLusNarRYtLS1u/76vTTIyLaTRaNDZ2Ynk5GQkJCTQGXF/igNS22MTpuWiJzNvV5jSI6b7lzv3LBKISRBwDcTk9dbpdH3GrwMJcQCLjo6m65V1dXUYP348wsLC0NnZiYaGBgAY9GSXt3R3d6OiogIRERFeNcrc2S1ardZBbUS22+2ora2FXq8PuO8yc9Q5JiYGR48excSJE/Hmm2/CbDbjwoULiI2NHS5Bt19GTKbb2NhIN4e8xWKx4NKlS24F0KREQSasmEdbg8GAq1evOh1z/FEkAL2iftKJ91QbZja6mMf6gYKYt68DsVx0XUTJJiQQ63Q6+ljJfA4WiwVtbW2YPHkyLxIwoDfQVVZWIjw83G2GzTRXJxkxAKf3YbCB2OFw0HvaZDIZ6zee/sorzJOJVCqFTqdDVVUVEhISkJiYyNn7cf78ebz88stYvnw51q5dy0s5hwVGfnnBZrP5vA7H4XBApVLhjjvuoP+MHK+JFeKUKVP6vOmki56VleV3sCW72kQiEdLT030eLCDX7+5Yz5zo8hQAmJaLU6ZM6dNo5AKHw0G/3kSLKRKJWA1i3sBs1g20GsndvyWBmNxMAPQZsfXmOZApxvj4eK9KO2zBHBPWarXo6OgARVEYO3YsYmJiBnVT9xaz2YytW7fi3Llz2LdvH6ZPnx6wx+KAkV9e8IegoCAnxQPRXt5yyy0e17GTsgTTEs/bYOtpuMGf63d3rCcBgDkR5RqISYbNpeWiK1arlc6wZ86cSTcMmc+hqanJKYgFIhATrfKkSZOgVCp9DnSetlwQrwnSse/vZGK1WmltKB+ubGRM2GKxuDVYb2lpoSfemJ63/g51uFJcXIxXX30VK1aswKlTp4ZrdusVIybT9ddp7H//+x9mz56Nqqoq2O12r9QCdrsdZ86cwdSpU2lTc1+GG1JSUhAfH89ZVkmyGCI5IkMh48aNQ0xMDP0cuMqqmFNU3mbYZCuyu2ySGcR8eQ4mkwmVlZUIDg5GRkYG67pPV5iBmFleCQoKgslkQlJSEpKSkniRQhG/XZFIBJlM1m89n6k6IM+D6dfgzVAHE5PJhC1btqC4uBj79u1DZmYmm0+LT0Z+ecGfoGuxWHDmzBlIJBJkZGQ4+Xi6g1lK0Gq10Gq1dJc4NDSUVhow9beuww2TJ0/mLatkNqikUin9xSH6VTLRRX789ZH1BNPj1l3pxhf6q6+6ZvXuvGKvXbuG69evIyMjg9UxZl8wGo0oLy+nPRxIMHPVsAaiaUpgqiP8HSNmDnWQzxTx/GA27FxvaiqVCmvXrsWjjz6K3NzckZbdjvyg63A4vJ4uIxrU5uZm2Gw2zJ8/3ye7RXelBKb+VqfToaenh15GKZFIIJPJnFbKcIWr5eLEiRP7DaTMiS4SiInZjK+uX64QX4qenh7IZLKAdcHdBWJmjRjobbrGx8dj8uTJnEvAAGe9q0wm61M/9pRN+uuX4Q6TyYTy8nJIJBKkp6ezGvRchzoMBgOdTZeWlqKzsxONjY345JNPfNLJDyOEoAvcvKuTtd+TJ0/GhQsXMGvWLLfHIX+bZO40veTuH2jZFxNStx1MVsl0/dLr9U6bFbwxJGeawvBlrG6329HZ2Ym6ujp6so6sgfGUEQcCrVaLyspK+tTj7WMy1SskkDEDMckmvfV4Jg1UV2OmQEJRFL777jvk5+fTNfnGxkbs3LkT9913HyfXwCEjP+gSq8b+YC6WTE1NpYPsxYsXIZPJnNQD7ibJvAkUxPimvb3drYm2J9kXKU34Wpd0B7FcpCgKGRkZfikjPOE6VWc2m52m6shRknjcEkE9H2UViqKgVquhVquRmppKG7Yw69wkI2ZOpXk7HuwtVqsV1dXVMJvNkMvlrLwn5PPEzCZdrTxd66tdXV0oLy9HdHQ0pk6dytl7YjQa8dZbb+HXX3/F/v37nQaLfF19NUwYvUGXTDYFBQW5Xd1SVlaGCQkTUKYrw1XtVUSGRmJ+4nzE3RLndbB1dd/yZVyV2VwhXxxyHCaB2NsvP9NyMS0tbcAaNVu47krTaDR0EIuPj0dsbOyAZtiBgGxajomJ8SrABCIQk0GLq1evctJA7a++KpFIYLPZ0NPT42RQE2goisK5c+ewbt06PP3003jhhRd4ufnywOgLumRPVnd3t8e1KeXl5Si3lOOG/QYm3DIBXZYuGK1GLM9cjsiwgT0PyBE+OjoaU6ZMYaXzzPzy63S6AZtcZCVQfX09qx4FvsJsUKWmpkIqldLPgdlcCYShOhOmFG2wtXTmIIGrYc5AzmUmkwkVFRUICwtDeno6bwYtWq0WV65cobPerq4ut+5lbKs3uru78eabb+LKlSvYv3+/z8ZSw5yRH3SB3kBLsj2ynHEgOVJlVSW+bf4WaRPS6My22dCM+1PvR9KYpH7/HRvDDb5AmlwkgJlMJoSEhCAsLIxeAsn1AkQmZE2MJ1E/MwsjP3a7nTWzHOaJI5BZpbtAzLSQlEql6OjowPXr1zmtmbpit9tRU1ODrq4uyOVyp1Oea6NLr9fTgZiZ2fsTiCmKwpkzZ7B+/Xrk5OTg+eef5yy7/ctf/oIDBw7QW1sOHjzIuTvf74z8oEtRFOrq6ugjflJSksdsj9Rs29vb8cH/PkB4cDiiI6N7V69QWiyfvhzx0vg+/45sC9br9YMebhgMZrMZlZWVMJlMiIqKgtlsdqqtktJEoIOw0WhEVVUVgoODkZ6e7vMHnK3xZmLoLZVKkZqaynlWSVb0tLW1oaWlBUFBQX02OAfSVN0V0sMgJx9vy2TEfImpOGCu6iGBuL/f19XVhTfeeANVVVXYv38/UlNT2X5q/dLU1IT58+fjypUrkEgk+OMf/4hFixbhqaee4uwaGIz8iTTyIRho15lrk2zcuHF45v+ewbHqYzCZTLihu4FJ4kmo+7UOzeHNdACTSqVoa2tDc3MzUlJSPG4LDiT9WS6S50a+NBqNBteuXXN7pGdDMUGahjdu3BjU1ltSv2aaeTM9Gpqbm2EwGEBRlFMGRhqOTIMcmUzGi6E3cHN8vLu7G/PmzUNERES/puqupQk2P0dkss1qtXq9K43A3BBBTGVcV/Wo1Wo6EJP3AwBiY2Nx9uxZbNiwAatWrcLevXt5KXHZbDb6FGg0GunP1FBixGS6QO8Hjsi73OHJblFr1kJr1iJMHIb4iN5jqdlshk6nQ2trKzo6Ouhxz+joaE4kX67X7qvlIvl35EhPjGbsdrvfRjnM6yBGKFx8udzpb61WK6xWK8aPH4/k5GTOZF9MmK/HQDpowL0WWiwWD3oohXkdgfbRcG2cvvNchAlHAAAXgElEQVTOOzh37hyMRiNWrFiBBQsWYPHixbwMO+Tn5yMvLw8SiQR/+MMf8Omnn3J+Db8z8ssLQP9B11+9rV6vp70YiMyMGcACJflyhVguEuerwTY8mJkkOUYCNye5oqKi3DaHiAMXaQzxVT8mhkNisRjx8fG0BytRG3B1pCeNstDQ0EG9HsR+kbwXZCiFmdl7CsSk1ETGmbl6XyiKws8//4yNGzfi+eefx4MPPoiLFy+itLQUeXl5nN8ANRoNli5dii+++ALR0dFYvnw5li1bhscff5zT6/id0Rl0BzPcUFNTA4vFgvT0dI9eDETyxQxgzC++t94M7rBYLKitraUVGIE8OruTS5HmELH5Iw0Zrjxu3V3jQCUNUlslP65HejbGm4k7W0tLS8DGiJkbkMnzYE4HRkZGQiKRoLm5GWq1us824kBjMBiwadMmNDQ0YP/+/Zg8eTJnj90f//znP3HixAl89NFHAIC///3vKCwsxPvvv8/H5YyOoEvsHf0NtkT5cOPGDbfDDb5cB/OL393dTU9xkYzYUzOCaY7Dl+Ui0HsTq6+vR3NzM8LCwkBRlE/TaGxCGkMTJ04csEnqCjOTJAHM3+dBNijExsZyPvDBDMQajQZarRZisRhxcXF0yYvtFT2uUBSFU6dO4bXXXsPq1avx7LPPDpnBBpVKhWeeeQbFxcWQSCR46qmnoFQq8eKLL/JxOaMj6FqtVtpy0ZdJMubSwUDpXC0WC50NE28G0t1mruQh0qvx48fzNsUF9GYylZWVfdQAzOfhbhotKiqK1eOt2WxGVVUVACAjI4M1+Y+78eawsLA+U3Xk82Oz2VBbWwuDwQC5XM6LjwbQe0MmjVQySelpTJtkxGwEYr1ej02bNqGpqQn79u1DcnIyC8+IXd544w188cUXEIvFyMrKwoEDBwLuHtcPoyPorlu3DlKpFEqlEgqFApGRkQN+2Jj+BCkpKZzuIiO1SJ1OB61WS9fyJk2ahNjY2ICbRrvDarXS6+plMtmANpekqcIMxBaLhVZMkG21vr6uzCM8V0dnplxKr7+5NDQ4OBg6nQ7JyclITk7m5dQB9N4Iy8vLERsbiylTpvSbGAzWL8MViqLw008/IS8vD7m5uXj66ac5z261Wi1ycnJw+fJliEQifPzxx07LB4YgoyPoVlZWorCwECqVChcuXIDFYsGtt94KhUKBuXPnYvr06fSXX6PRoL6+ntaXcm0aTXA1NReLxW4bXMQkO1CNIaYb2WAHC/obgvBWMUFMYfj0bABuunDZ7XZERkaiu7vb6Ybiq3esv5CtFhqNBpmZmX5l2Uy1gcFgoDN7ZrPOXSDW6XR47bXX0NbWhg8//BBJSf0PDAWSlStXIjs7Gzk5ObBYLDAajT5t9+CB0RF0XTGbzSgtLUVhYSGKi4vx22+/ISQkhJ7k2rFjB+RyOS81KWaQS05O7ncnGGlwkUBMpp9ISSIqKmrQdVXiUUBMUAIh9WGuFiJNOVftbWhoKGpra9HT08OaKYw/MF240tPTnTwsmCcU8uPqHsfWNgWgNzmorKykZYJs3nDdGReFhYVBr9ejoaEBYrEY+fn5WLNmDZ588knearc6nQ6zZ89GXV0db6cMPxidQdeVr776Cps3b8aiRYsQHh6OkpISeoJt7ty5UCgUUCqViImJCeibq9FoUF1d7bflIvP4qNPp/K6rWiwWVFdXB9zjtj+I9pZooQ0GA8LDw2mDnMEoP/zFYDCgoqKCfm+8ybL700K72nj6krHbbDbaPyIzM5Ozk5jZbEZRURF27NiB6upqSKVSpKSk4JVXXuHNfrG0tBSrVq3CtGnTcOnSJSgUCuTn53P+efURIegCvWOCY8eOdfoAOxwO1NfXQ6VSQaVSoaSkBAaDAZmZmXQQnjVrFisNHJPJRK8iZ9Ny0bWuqtPpnLIvkhWTLz1THZGamsqLxy1Br9ejsrKS3oZM/qw/qVSgFBNk1bhOp/P7CM+kv6WhTE13f3ve2tvbUVNT4/EEFAgoisL333+PzZs3Y+3atXj88cd7vUiamyESiXib7iopKcHtt9+Os2fP4rbbbkNubi7GjBmDt99+m5fr8RIh6PqC1WpFWVkZHYh//fVXiMVizJkzB3PmzIFSqUR6errXmQupyXFpucj0NCDZl8PhQFhYGLq6uhAbG8ur8xWzYTeQGsBdZh8WFua0HmkwHWqymNIXnwJ/cGfjCdwcSpFIJGhqagJFUZDL5Zx23TUaDTZs2AC9Xo8PPvhgSI3Ptra24vbbb0d9fT0A4PTp09i2bRuOHTvG74V5Rgi6g4GiKBgMBpSUlEClUqGoqIjepEuyYaVS2UdPO1QsF4Gb0quenh6MHTsWJpOJHoBgc3BgIJiviTdjs/39DlKPJNm9a4PLG9tIsj4GAGQyGS/SIlKzV6vVaG9vR0hICEJDQwNmpu4K2ebw5ptvYv369Xj00UeHjO6WSXZ2Ng4cOACZTIbNmzeju7sbO3bs4PuyPCEEXbYh2l6SDRcVFeHGjRtIT0+HUqlEREQEzp49i/Xr1zttquAaoutsbW11K71ytYw0Go1OetWoqCjWglF3dzcqKipwyy23IC0tjdUsmzS4mNI1Zl2VSNeCg4Odtkmkp6dzOsnlitlsRnl5uZPn7kDWkWzVujs7O7F+/XqYTCbs3bsXEydOZOlZeYfdbodSqURCQgIKCgo8/t3S0lJauTB16lQcPHiQN4c/LxGCLhfY7Xb88ssv2LRpE5qbm5GYmAij0YiZM2fS2XBmZiZnRiBk0GLChAk+7eNyrQ+76m59Nfoh5ZXOzk7IZDLOxojd1VVtNhusVisiIyMxdepUjBkzhjf1CqmrezNK7GqUYzQa+xjleDsEQVEUjh07hrfffhuvvfYa/vSnP/FS09+9ezdKSkqg1+sHDLrDECHocsXp06eh0Wjw0EMPAehtnp0/fx5FRUVQqVSoqKhAVFQUrR0md3o2v/gmk8lpRdFgm4CedLcDGf2QplBiYiISExN5a9jZ7XbU1dVBo9EgKSmJHtV29crgwve2u7sb5eXlGDNmDFJTU/3WIbvzZxhoCKKjowPr1q2DzWbD3r17aQtHrlGr1Vi5ciXy8vKwe/duIegyEIIuy1AUhRs3bjiVJZqampCSkkJnw3PmzEFUVJTPX3ymIUx6enpA92Axm0KkUccMXmFhYWhoaEBISAjS09P5GsUEcNO3gVhRur6u5DjPLLEws0g2tNCA8+r1QBkHudPeGo1GFBQUYMyYMfj222+xefNmrFixglfN67Jly7Bx40YYDAbs3LlTCLoMhKDLAQ6HAzU1NXQQPn/+PIxGI6ZPn04H4ltvvbXfwEVRFNrb21FXV4dJkyZx5nHris1mg06nw7Vr16DT6RASEoLw8HCnQQ5PRj9s09PTg6qqKjgcDshkMp8yfk/eDEzTIm8hRjlkyo6r94eiKNTW1iIvLw+tra2IjIxER0cHli9fjk2bNnFyDa4UFBTg+PHjeP/993Hq1Ckh6LogBF2esFgsKC0tpQPx5cuXER4ejqysLDoQT506FWVlZTAYDIiJiWHFa3cwdHZ2oqqqyqmG7M4gx53RD5swp/3S0tIwfvx4Vn6vO28GiUTiJF1zfS6krEH0v1wK+imKwjfffINt27bh9ddfx/LlyyESiUBRFLq6ugb01QgUGzduxOHDhyEWi+nXdMmSJThy5Agv1xMghKA73KEoClqtFsXFxVCpVDh37hxKSkoglUrxyCOPYP78+VAoFH7bUQ4GklHa7XbIZDKP01Nk/QuzUdefysAfyK60yMhIpKamBrRp6Wpa5KqYEIlEaGpq4qWe3dbWhjVr1iAkJAR/+9vfWLvxsI2Q6fZFCLpDEJvNhrvvvhtPPPEE7rvvPhQXF6OoqAjFxcXQarWQyWR0o27WrFkB81glk23Nzc30ZJu/v8d1kAO4afTjjVaVqZCQy+W87krT6XSorq6G2WxGSEgIvQfOdb9boB7/66+/xvbt27F582YsWbJkSPsVCEG3L0LQHaLYbDa3WZzNZsNvv/1Gm/yUlpZCJBJh9uzZ9CCHTCYbtHMXMckZO3as1x4FvsDcZKHT6WitKsmGmc0tUtbwx+Ccbdra2lBbW+vk1OZwOPps5RCJRH1uKoMNjtevX8eaNWsgkUiQn5/Pqf64sbERTz75JK5fvw6RSIRVq1YhNzeXs8cfgghBd7RC6nfnz5+HSqVCcXExqqqqEBsbC4VCAYVCgXnz5nlt5Wi1WlFdXQ2TyQS5XM5pjZJsgGCqDGw2G4KDgzFlyhSMGzeOtyEUMt0mEokgk8kGvA673d5nu4i/uluHw4GvvvoKO3fuxFtvvYVHHnmE8+y2paUFLS0tmDNnDgwGAxQKBb755htMmzaN0+sYQozuoLtr1y6sXbsW7e3tvE4fDRXIKG5RURGdEZOJNVKWyMrKglQqdVrvTrZr8LlCiFxLS0sL6uvrkZycjJCQECcDddf6cKDrui0tLbh27dqgm3bMtUI6nc7tNgtXBUZrayteffVVREZGYs+ePZz4enjDww8/jNWrV/PmTDYEGL1Bt7GxETk5OaioqMD58+eFoNsPdrsdVVVVKCwsRFFRES5evAiLxYIZM2YgISEBP/zwA3bt2oVZs2bxslqbQEaJIyIikJaW1udamEY/5MfhcDiN0LK1qp2YnEskEtqAnm1ct3L09PSgo6MDp0+fRnh4OAoKCrBt2zYsXrx4yNRu6+vrceedd+Ly5cu81daHAKM36C5btgyvv/46Hn74YZSUlAhB1wc6OjqwevVqFBUVQaFQ0DvTmCY/ycnJnNRQHQ4H7dTm6ygxs6ZKDNTJIAepqfriZcA0OZfJZJx6AFAUhd9++w1vvPEG2tvbIZFIYDAY8Oyzz/K1gNGJrq4u3HXXXcjLy8OSJUv4vhw+6ffDxF/KwgH//ve/kZCQgFmzZvF9KcOS8PBw3H///fj0008RFBQEiqLQ0dGB4uJiFBYW4vPPP0dDQwOSk5PpvXQKhYJ1E3iyPSE+Ph5KpdLnIB8UFEQ338i6GTIGrNPp0NbWRo/Qug5yuNLV1YXy8nJER0dj7ty5nK4Scjgc+Pzzz/HXv/4VW7ZswQMPPACRSEQ3HfnGarVi6dKleOyxx0Z7wPXIsM907733XrS2tvb583feeQdbtmzByZMnERUVhZSUFCHTDQAkA2WawHd1dWHatGl0Rjxz5ky//B+sViuqqqpgsVggl8sDvj3B1S6yp6eHNvqJjIyERqOh95RxPVjQ0tKC3NxcjB8/Hrt37x5yDlsURWHlypUYO3Ys9uzZw/flDAVGX3mhrKwMCxYsoLczqNVqTJo0CUVFRYiPj2ftcdatW4dvv/0WoaGhSE1NxcGDB4f6wryAY7FYnEzgy8rKEBISgqysLLpRl5aW1m/GyvTcnTp1KuLi4nipV5Lhh5aWFqjVagQFBSEkJITW3JJGXSDLKw6HA0ePHsV7772HrVu3YtGiRUOmdsvkzJkzyM7OxowZM+jXY8uWLVi0aBHPV8Yboy/ouhKoTPfkyZO45557IBaLsX79egDAu+++y+pjDHcoioJer3cyga+trcWECROc6sNxcXG4cuUK9Ho9oqOjWffc9RW73Y6amhp6u0VERAQ9yKHT6ej6cCA0twDQ3NyMl156CRMnTsSuXbs4v5mfOHECubm5sNvtyMnJwYYNGzh9/GGOEHS5KC/861//wpdffolPP/00YI8xUiD+CCqVCoWFhVCpVKipqUFoaCieeOIJZGdnIysri/PFlATiTObNCh+m5pYMcoSEhDh5MvjiUuZwOHDkyBF88MEHePfdd7Fw4ULOXwO73Y6MjAz897//pRe3fvbZZ6NZd+srQtDlgoceeggrVqzA448/zvelDCscDgfuvfde3Hvvvbj//vtx4cIFWrZGUZSTCbxcLg+oZI3Uka1WK+Ryud9exMSljNSHycZmZqPOXRavVqvx0ksvISkpCTt37uTM8N2Vc+fOYfPmzfj+++8BAFu3bgXQa1Yj4BWjU73AFp6adQ8//DD9v8ViMR577DGuL2/YExQUhIKCArr+PmfOHOTk5NDm6cQEfseOHaisrERMTAytlJg7dy4ryyQpikJbWxvq6upYGf4IDQ3FuHHj6JMVMfrR6/Xo7OxEfX09rFYrpFIprl69irCwMFy7dg0HDx7Ejh07cN999/Fau21qaqKVHgCQmJgIlUrF2/WMJISg6wU//PCDx///0KFDKCgowI8//sjqF2U01dTcraMXiUSIiIjAnXfeiTvvvBPATe9g0qT75JNP0NzcjClTpjiZwBOXL28wm82orKxEcHAwFApFQEaJRSIRJBIJJBIJva2BDHIUFRXhyJEjaGhowKRJk/Dll18iJSUFGRkZrF+HAP8IQXeQnDhxAtu3b8fPP//sNnD4i91uxwsvvOBUU1u8ePGor6mJRCLExcXhoYceolciERP4wsJCfPfdd/jzn/8Ms9ncxwTeNZiSurJarXa7tDPQUBSFf/zjHzhw4AB27dqFBQsWoKenB6WlpbxLwhISEtDY2Ej/t1qtRkJCAo9XNHIQarqDJC0tDT09PfTM++23344PP/xw0L9XqKkNDhK8iMkPMYGfM2cOlEolxo4di+PHj+O5554LuO+uOxoaGrB69WpkZGRg+/btkEqlnD7+QNhsNmRkZODHH39EQkIC5s6di6NHj2L69Ol8X9pwQajpBoqampqA/F6hpjY4wsLCcNttt+G2224DcNME/ty5c8jPz8eFCxeQmpqKDRs20NmwQqFAbGxsQGupDocDH330EQ4ePIhdu3bhnnvuGZK6W7FYjPfeew8LFy6E3W7HM888IwRclhCCrsCoQCQSISYmBpGRkbjjjjvwn//8ByEhIWhoaEBhYSFOnz6N3bt3Q6fTQS6X9zGBZ4P6+nqsXr0a06ZNw5kzZ3jLbr0d6Fm0aNFoHm4IGEJ5YYgilBf4wWq19jGBDwoKoqfplEolMjIyfPJcsNvt+Oijj3Do0CHs2bMHd911F6/ZrTDQwwmCTne4wVVNTXD89wzTBJ4E4qqqKowfP54OwnPnzu1XYnb16lW8+OKLmDFjBrZs2cKp6bs3CAM9AUMIusOR48eP4+WXX6Zranl5eaw/huD47zvEuJxpAt/W1kabwCuVSsyaNQufffYZDh8+jPz8fGRnZw/J2q0w0BMwhKAr4B2C479/2O12VFZW0vrhEydOYN68eTh06BCrUkJv8Xagp6SkBF9//fWQvCEMc4SgKzAwguM/e1AUNaQD2aFDh7Bv3z78+OOPvNwURgGCZEzAM11dXVi6dCn27NkjBFwWGMoBN1ADPQLeIWS6ArBarXjwwQexcOFCvPrqq3xfjkCACdRAj4ATQnlBwD1cO/7b7XYolUokJCSgoKAg4I83mhC2Xg8p+g26gd8oKDCkOXv2LA4fPoyffvoJs2fPxuzZs3H8+PGAPV5+fj4yMzMD9vtHK42NjTh58iSSk5P5vhSBARBquqOc+fPnY4DTDmuo1WocO3YMeXl52L17NyePOVp45ZVXsH37dlqZIDB0ETJdAc54+eWXsX37dk5Wto8mhK3Xwwsh0xXghIKCAsTFxUGhUODUqVN8X86ww5ut1wLDA6GRJsAJGzduxOHDhyEWi+kNCkuWLMGRI0dYfyytVoucnBxcvnwZIpEIH3/8Me644w7WH2cowNXWawGfEdQLAkOHU6dOYefOnQFTL6xcuRLZ2dnIycmBxWKB0WjkfJMuX3CxgFXAK4ThCIHRgU6nwy+//IJDhw4B6N1VFoj1OwIC/iJkugIjitLSUqxatQrTpk3DpUuXoFAokJ+fP+TcvQRGPIJOV2B0YLPZcOHCBTz//PO4ePEiIiIisG3bNr4vS0CAZqBMV0BgWCESieIBFFIUlfL7f2cD2EBR1AO8XpiAwO8Ima7AiIKiqFYAjSKRSPb7Hy0AcIXHSxIQcELIdAVGHCKRaDaAAwBCAdQBeJqiKA2/VyUg0IsQdAUEBAQ4RCgvCAgICHCIEHQFBAQEOEQIugICAgIc8v/2NcIOYxePhAAAAABJRU5ErkJggg==)
%% Cell type:markdown id: tags:
We now assume that we only have partial information about this curve, and that we want to reconstruct it.
We will first generate a discretization of the curve to represent a temporal sampling:
%% Cell type:code id: tags:
``` python
numSamples = 10; fNumSamples = float(numSamples)
ptsTime = [ (ref(float(t) / fNumSamples), float(t) / fNumSamples) for t in range(numSamples+1)]
for el in ptsTime:
print (el)
```
%%%% Output: stream
(array([1.0, 2.0, 3.0]), 0.0)
(array([-0.1, 0.4, 0.9]), 0.1)
(array([-0.6, -0.4, -0.1]), 0.2)
(array([-0.5, -0.4, -0.2]), 0.3)
(array([0.1, 0.2, 0.4]), 0.4)
(array([1.0, 1.2, 1.5]), 0.5)
(array([2.2, 2.6, 3.0]), 0.6)
(array([3.4, 4.1, 4.7]), 0.7)
(array([4.7, 5.6, 6.4]), 0.8)
(array([6.0, 6.9, 7.9]), 0.9)
(array([7.0, 8.0, 9.0]), 1.0)
%% Cell type:markdown id: tags:
Each entry of ptsTime is a couple (position, time) that describes our input data.
### Sanity check
Let's first solve a trivial problem, to see if we can reconstruct the curve with a polynomial
of same degree.
To achieve this we will use the problemDefinition class, which will automatically generate the variable expression of the curve
%% Cell type:code id: tags:
``` python
from curves.optimization import (problem_definition, setup_control_points)
from nd_curves.optimization import (problem_definition, setup_control_points)
#dimension of our problem (here 3 as our curve is 3D)
dim = 3
refDegree = 3
pD = problem_definition(dim)
pD.degree = refDegree #we want to fit a curve of the same degree as the reference curve for the sanity check
#generates the variable bezier curve with the parameters of problemDefinition
problem = setup_control_points(pD)
#for now we only care about the curve itself
variableBezier = problem.bezier()
```
%% Cell type:markdown id: tags:
The evaluation of a variable Bezier returns a matrix B and a vector c, such
that B x + c , with x a vector variable, defines the value of the curve
%% Cell type:code id: tags:
``` python
linearVariable = variableBezier(0.)
print ("B: \n", linearVariable.B())
print ("c:\n",linearVariable.c())
print ("Shape of B: ", linearVariable.B().shape)
```
%%%% Output: stream
B:
[[1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0]
[0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0]
[0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0]]
c:
[0.0 0.0 0.0]
Shape of B: (3, 12)
%% Cell type:markdown id: tags:
B has 3 rows and 12 columns. Because the fitting curve is of degree 3, it has 4 control points of dimension 3, which gives a variable of size 12. The row number also matches the dimension of the problem.
Then A is zero everywhere, expect for the first 3 columns that contain the identity. This is expected as the start of a Bezier curve is equal to the first control point.
If we evaluate variableBezier at t = 0.2 for instance, we get a more complex expression:
%% Cell type:code id: tags:
``` python
print ("B: \n", variableBezier(0.2).B())
```
%%%% Output: stream
B:
[[0.5 0.0 0.0 0.4 0.0 0.0 0.1 0.0 0.0 0.0 0.0 0.0]
[0.0 0.5 0.0 0.0 0.4 0.0 0.0 0.1 0.0 0.0 0.0 0.0]
[0.0 0.0 0.5 0.0 0.0 0.4 0.0 0.0 0.1 0.0 0.0 0.0]]
%% Cell type:markdown id: tags:
With variableBezier, we can easily define a least square problem to reconstruct the original curve.
We just have to formulate a cost function that, for each sample in ptsTime minimizes the distance between the evaluation of variableBezier and the sampled point. We define it as follows:
%% Cell type:code id: tags:
``` python
#least square form of ||Ax-b||**2
def to_least_square(A, b):
return dot(A.T, A), - dot(A.T, b)
def genCost(variableBezier, ptsTime):
#first evaluate variableBezier for each time sampled
allsEvals = [(variableBezier(time), pt) for (pt,time) in ptsTime]
#then compute the least square form of the cost for each points
allLeastSquares = [to_least_square(el.B(), -el.c() + pt) for (el, pt) in allsEvals]
#and finally sum the costs
Ab = [sum(x) for x in zip(*allLeastSquares)]
return Ab[0], Ab[1]
A, b = genCost(variableBezier, ptsTime)
```
%% Cell type:markdown id: tags:
Here we use quadprog to solve the least square. Because there are no constraint this might seem overkill, however we will introduce them soon enough.
%% Cell type:code id: tags:
``` python
import quadprog
from numpy import array, hstack, vstack
def quadprog_solve_qp(P, q, G=None, h=None, C=None, d=None, verbose=False):
"""
min (1/2)x' P x + q' x
subject to G x <= h
subject to C x = d
"""
qp_G = .5 * (P + P.T) # make sure P is symmetric
qp_a = -q
qp_C = None
qp_b = None
meq = 0
if C is not None:
if G is not None:
qp_C = -vstack([C, G]).T
qp_b = -hstack([d, h])
else:
qp_C = -C.transpose()
qp_b = -d
meq = C.shape[0]
elif G is not None: # no equality constraint
qp_C = -G.T
qp_b = -h
res = quadprog.solve_qp(qp_G, qp_a, qp_C, qp_b, meq)
if verbose:
return res
# print('qp status ', res)
return res[0]
res = quadprog_solve_qp(A, b)
```
%% Cell type:markdown id: tags:
Let's check whether our optimization worked !
We can transform the variable Bezier as a regular Bezier curve as follows, and plot the result to verify that the curves match.
%% Cell type:code id: tags:
``` python
def evalAndPlot(variableBezier, res):
fitBezier = variableBezier.evaluate(res.reshape((-1,1)) )
#plot reference curve in blue, fitted curve in green
fig = plt.figure()
ax = fig.add_subplot(111, projection="3d")
plotBezier(ref, ax = ax, linewidth=4.) #thicker line to visualize overlap
plotBezier(fitBezier, ax = ax, color ="g", linewidth=3.)
plt.show()
return fitBezier
fitBezier = evalAndPlot(variableBezier, res)
```
%%%% Output: display_data
![](data:image/png;base64,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)
%% Cell type:markdown id: tags:
### initial and terminal constraints
Let's try to fit the reference curve with a curve of lesser degree
%% Cell type:code id: tags:
``` python
pD.degree = refDegree - 1
problem = setup_control_points(pD)
variableBezier = problem.bezier()
A, b = genCost(variableBezier, ptsTime)
res = quadprog_solve_qp(A, b)
fitBezier = evalAndPlot(variableBezier, res)
```
%%%% Output: display_data
![](data:image/png;base64,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)
%% Cell type:markdown id: tags:
We can see that the initial and goal positions are not reached.
A constraint_flag can be used to impose constraints on the initial/goal positions
and derivatives if required.
Let's rewrite simplefit to handle such case
%% Cell type:code id: tags:
``` python
from curves.optimization import constraint_flag
pD.flag = constraint_flag.INIT_POS | constraint_flag.END_POS
#set initial position
pD.init_pos = array([ptsTime[ 0][0]]).T
#set end position
pD.end_pos = array([ptsTime[-1][0]]).T
problem = setup_control_points(pD)
variableBezier = problem.bezier()
```
%% Cell type:markdown id: tags:
By imposing the initial and final position, we effectively reduce the number of variables by 6:
%% Cell type:code id: tags:
``` python
print ("Shape of B: ", variableBezier(0).B().shape)
```
%%%% Output: stream
Shape of B: (3, 3)
%% Cell type:markdown id: tags:
The least squares problem then has the following solution
%% Cell type:code id: tags:
``` python
prob = setup_control_points(pD)
variableBezier = prob.bezier()
A, b = genCost(variableBezier, ptsTime)
res = quadprog_solve_qp(A, b)
_ = evalAndPlot(variableBezier, res)
```
%%%% Output: display_data
![](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAV0AAADnCAYAAAC9roUQAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjMsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+AADFEAAAgAElEQVR4nOx9d5gb5bn9GfWy0hZv9a7X24vXde11A4whJDjchISWm4SSEAgQEsC0UIIbpphmBwwB7o8EEghJCBcIIbkkAcK9CSTYgG2a7W3S9tUWrXqX5vfH8o1nVEfSSCvZc57Hj21p9M1oNN+Zd873vuelaJqGCBEiRIjIDiRzfQAiRIgQcSJBJF0RIkSIyCJE0hUhQoSILEIkXREiRIjIIkTSFSFChIgsQpbgfTG1QYQIESKSBxXrDTHSFSFChIgsQiRdESJEiMgiRNIVIUKEiCxCJF0RIkSIyCJE0hUhQoSILEIkXREiRIjIIkTSFSFChIgsQiRdESJEiMgiRNIVIUKEiCxCJF0RIkSIyCJE0hUhQoSILEIkXREiRIjIIkTSFSFChIgsIpHLmAgRMUHTNEKhELxeLwKBAGQyGSQSCaRSKSQSCSQSCSgqptmSCBEnJKgEjSlFa0cREaBpGsFgEIFAgPNv8h6baAkJkz8iGYs4QRDzAhdJVwRvhJMtRVGgKAqBQACBQAASiSRie/YfkYxFnECIeSGL8oKIhKBpGoFAAMPDw9Dr9dBqtREEGw2ElKONBwCBQAB+v5/zHlueYBOySMYijheIpCsiJgjZEunAarVCpVKhoKAgrXEJgYYTKZuMP/nkE9TX10Oj0TDbSqVSRjcmpCySsYh8g0i6IiIQCoU4Oi2JWCUSCUKhUMT2QhEfm4wJyUqlUoaMw6UNmqbjyhQiIYvIRYikK4JBKBRCIBBAMBgEECkPEKLLBsL3G/4agAgyDv98NEIWyVjEXEMk3RMcZJHL7/czUWwsYpJIJFkjXT5IRMahUAhGoxEKhQIVFRXMtoSM2VKFSMYisgWRdE9QkBzbQCCQkGwJKIqKKi9kAulE1WwyZuu/wLHvHQwG4fP5OJ9jR8ViZCwiUxBJ9wRDONkSUuFDLNmUF4RC+PHGy6ggZBye3hYtm0LMqBCRKkTSPUEQK8c2GeLINXmBL/jeUOKRsc/nw0cffYQVK1Yw74m5xiJSgUi6xzmikS2fHNtoyBd5QejjiCVTEC3c5/OJhR8ieEMk3eMUNE3D6XQiFApBLpenRbYEuUKEc4FwySGdwg+RjE9siKR7nIFd0DA6OgqKolBbWyvI2NHydH0+H4xGI5xOJ7RaLfNHrVanTSa5RPDhpBsLfAo/DAYDFAoFysvLAYAhX7Hw48SASLrHCaIVNEil0oj81XTAlhe8Xi8MBgPMZjMWLFiAkpISuN1u2O12jI+Pw+12g6IoaDQaaLVaFBQUQKvVQqVSJUVe6UJI4k7nmNhkTNO0WPhxAkMk3TxHvIIGoRe+KIqCz+fDZ599BovFgrq6OrS0tACYjXj1en3EsblcLjgcDlitVoyOjsLj8YCiKE5UnAwZp3rc6ULI88iOmtMp/JDJZCIZ5yFE0s1D8C1oiFW2mwpcLheGh4fhcrnQ3t6O9vZ2Zn+x9iGRSFBQUBDh1RAMBuFyueB0OjlkLJFImMjY6/XC4/GgoKAgJ4iEr7zAByRVLx74FH54vV50d3ejtraWuWmJhR+5D5F08wjJFjRIpVImAk4VDocD/f39cLvdKC4uRnFxMVPdlSqkUil0Oh10Oh3ndTYZ+3w+DA0NwWAwcMg4G5FxNAhJukQ6SAXhZOz3+5mIVyz8yA+IpJsHSLWgIZ1I12azoa+vD4FAAA0NDSgpKcHk5CSsVmtK4/EBm4ytViuqqqqg1+sTRsZEL9ZqtVAqlRkhEqFJV6ixgsFghFFQtP2FF36Qv6NpxmJGRWYhkm4OI92ChlRI12KxoK+vDwDQ0NCA4uJi5r1sp4yRfSWKjB0OB2ZmZjA8PAyv1wuJRMKQsNPphEwmE5To0kU6kW4qY/El4/7+fixYsAAKhUJMb8sgRNLNQQhV0MCXdGmaxszMDPr6+iCTydDU1ITCwsKkxpuLyRiPjJ1OJ5xOJzweD1wuF0ZHRzlknGxknG1NN5mx0pEq2MfhcrkYghULPzIHkXRzCCTHlv0YmE5ElIh0aZrG1NQU+vv7oVKp0NbWFkFgbGTb2jHVfUmlUuj1euj1emYxrqysDIFAgJEp2JGxVCrlaMYFBQVQKBQcIslVeUFIAg8Gg0x+sFj4kTmIpJsDIGRrNBpRU1MjSPUYELtsl6ZpTExMwGAwoKCgAIsXL4ZWq004XrwUtFx6fI8FmUzGkDEb8ciYEDE5l0J8TyGJEhDuKSNR1Myn8IOQ8eTkJNRqNfR6fcz0thMVIunOIcILGoaHhwWrHgNmIz426dI0jfHxcRgMBhQVFWHZsmVQq9W8x4vnvZCpxatsIB4ZE5liZmYGVqsV+/fv55Ax+RMeGceDkJqukEj1hhKNjO12OxQKBYD4hR/s1LYTJaNCJN05QKIODUKByAuhUAijo6MYHBxESUkJOjs7oVKpkh4v1iN/Jo49FyaeTCZDYWEhCgsLUVBQAKlUira2Ng4ZT09PY3BwED6fjzcZ5+pTgZDHFAwGIZPJol7bJ3rhh0i6WQLfggahtUOXy4V//etfKCsrw6pVq5joIxXko7WjUMfL/l3YZMxGLDKWyWQMCWs0Gk6aV7rIVSIi+nA08C38IPD7/bBaraioqDguCj9E0s0wkiloIMUMMll6Pwtplz48PIxQKIR169ZBLpenNSaQv9aO2SK4WGTs9/sZzXh6eho2mw2HDh2CXC6PGhnPFYS8ocYj3ViIRcZutxvT09MoKytLWPhBgppwqSiXIJJuhpBKQUO6ZbuBQACDg4MYHR1FdXU11qxZg/379wtCuIBo7Zgq5HI5h4wdDgcWL14MAExkPDk5CaPRyFSYZZuMhf5dUyHdWAgEAkx0Gw52rjEA/OUvf8GhQ4dwzz33CLLvTEAkXYGRTkFDqmW7Pp8PAwMDmJiYQE1NDdatWyfYBc9GPsoLQiETaV4ymQxFRUUoKirivO/3+3mRsUajyYnS5GhIhXRDIeD1v1B46TUv/muvAuRwEkkV7HNgtVqj5pjnEkTSFQhCFDQkS7perxdGoxFTU1NYuHAh1q1bl9FV8XyVF4RANr0X5HI5LzJ2OBxwOBz48MMPOaXQWq026acbISNTIDkS9/mA3/9ehl2/fh8Di64HPA04/6/PYNOm2blAIl0+sFqtEect1yCSbpoQsqAhPMUrFjweDwwGA2ZmZlBXV4fm5uaspCDlGhFmE7lQHBFOxn6/H5988gkWL14Mh8MBp9OJiYkJOBwOBAKBqJpxLDIOhUKCk24i2O3AL38px8NPT8C05DbgjOdn35j/Ae589kps2rQaQPKku3DhwpSPOxsQSTdFsDs0AEiLbAkkEkncSNflcqG/vx92ux319fVoa2vL6spttuUFIfZ1PKdnkWIGuVzOOMCx4fP5mMjYZDLB6XTGJONgMJi13OHpaQqPPy7Hkz8PwtrxIHDBvYDCdWwDvwqfjPTjyJG1aGubXRdRKpW8xhYj3eMQpDPs6OgoqqqqBE1ZiSUvsO0V6+vr0dHRMSdEkm15IZeQi+SdqIJMoVBAoVDwImOv14tgMIju7m6mFFqj0Qi2CAsAY2MU9u5V4Oe/kMG98BXgohuBYiN3o08vwCbp3bj9p/PR1jZ7rSWT0WOz2UTSPV7ALmgIBoMYGhpCdXW1oPsIlxfsdjv6+vrg8/nQ2NiIkpKSOZ34oryQX6QbC9HI2Gq1YmRkBGVlZXA6nRgfH+dExuGacTwSDD+uwUEKe/Yo8OyzcviKPwYu2AzU/53zGWpiKb4ifRB3b1mHujoawLF5kIy8YLPZxIW0fEasggaZTJaRiI/ICxaLBf39/QiFQmhsbIyIVOYK8UhXiPxivvuaCxxPpBsNwWCQIWL29Uauf6IZj42Nwel0MtuHyxQymYxZlOvvp7B7twLPPy9HQG4GztgKrHoCkBybO5S7BF+UbcdjN16MijIpgMjfPFlNN1fmSyyIpBsFyXZoEAperxejo6PQaDRobGwU5I5NJAGhDHTCYbFY0NvbC6/XC5qmORORREeZSF8TISzpxhqLoigoFAqUlJSgpKSEeZ2maY5MwSbjsTEdfvnLRvz971oE6SCw6jHgtK2Aeoa1QynWyr6Pn195KxaUlkTsl41AIMD7GhI13TwDSfsKBoNJdWhId5/T09Po7+9HMBhEWVkZWltbBRufFFwIvUhCzM4pikJzczPTPsfn8zFR0cjICJxOJ0KhEFQqFUPCBQUFUKvVWVm4yUQZcK5A6Eg3mbEoioJSqYRSqWTIuKeHwgMPKPDCC3KEQhTQ8AawaTNQ/innsw3YgEfP3oa1DSt4RbDJPEUFg0FBdehMQCRdpN+hIdV9Tk5Oor+/H1qtFh0dHbBarZyacyEgZHNKYPai/uCDDxiy1ev1TNQDIGZU5PF44HQ64XA4MDU1BZdrdrU6Vov2XCsDPt5JN52Usb4+Cvffr8TvfiebJdviPuDMG4G2P3C2K5XU465TbsfJZevgdDpx6NAhBINBKJXKiKIPNsnylRdySY6KhxOadNMpaEj1sZ3YKxqNRuj1eixduhQajQbAbJZCuo0kwyEU6VqtVkZGWLp0aVLSB0VRUKvVUKvVKC0tZV4nLdrDe5+RBcWCggLIZDLGVHwucbyTbirFEQbDLNn+9rcyBIMUoLADG+4G1u4BZMf8EZRUAW5dfzN+tPJqKGXc1C9yw2Y/HblcLg4Z+/1+2O32hFIVId1c+53CcUKSrhA5tiS9i+/nQqEQxsbGMDAwgOLiYqxYsSLCXlGI7r3hSJd0CdlSFIWmpiZ8+umnUQk3lQud3aKd3WE4GAyip6cHADA9PY2BgQH4/X4mv5S9ki7k4l2+QehIl++5HByclRGee04+S7ZUCFj2K+CMWwHdOGfbb7dfiO2nbENlQWXUsdgyxbx585jXaZqG1+tl0trYUlV4ZEzI2OPxMAFMLuOEumKjkW2qd0VCkIn0o1AohJGREQwODqKsrAwrV66MmeidS6RLyBZAzJ5pmYJUKoVarYZKpeKQcayFG6VSydGLNRqN4HqxUJGukI/A2Y50x8ZmyfaXv5TD7//8XNT8C/jydUD1fs62S4qX4uFNP8WqqlUpHQ9FUVCpVFCpVFAoFGhvbwfAJWP2usGf//xnvPPOO7BYLHj22WfR0dGB9vb2pEz6w7Fnzx489dRToCgKS5YswdNPP52SD3U4TgjSDe/QIIReK5PJIgyY2SC5vCMjI6ioqMDq1asTErTQ+msqY1qtVvT19YGm6ayTbTjCCSpafimZhOTx1Gw2w+l0AgDUajXTHVilUkGtVqf8uwtJutlqryPUWJOTs3m2Tz0lh8fz+bHrRmYj22XPcbat1FZi8+LN+OrCr2JB1QJBjot9vthkzI6MOzs78dZbb+GRRx6ByWTC3//+d5x//vk466yzUtrvyMgIHnnkEXz22WdQq9X4xje+gd/+9rf47ne/m+5XOr5JNxQKweFwMGSXjeoxtr3i/PnzsWbNGt6PbXMZ6dpsNvT29qZMtkJrnnzHYk/CcL3Y7Xajt7cXbrcbfX19cLvdnI7AJDrm02pHKBcuoUlXqHS8aJGuxQI88ogCjz+ugNP5+THL3MD6h4CTuaW7SqkS16y6Bjd03QDzuBlymTAZBHwX0YhU1dLSgptuukmwfbvdbsjlcrhcLsyfP1+QcY870g0vaHj//fexfv16wcX18EjX7/djYGAAJpMpZXvFuSBdNtk2NjbmfI4jXxBy1Wg0KC0tZaLjYDAIl8sFh8MBs9kc0d2BrRdnIvVIyKaUQtoxsiNdpxN44gkFHn5YAYuFHCsNLHoR+NLNQNEA57Nfa/4adm7YibrCOgDAZHBSUC9dvmNZLBbBrt/q6mrcdNNNqK2thVqtxpe+9CV86UtfEmTs44Z04xU0ZGI1kxCkz+eD0WjE5OQkamtr07JXzCbpZoJshYziMlWRJpVKodPpIlrNs20T2eYwZNHG6/UyrXbSIRQhiVJIk5pZ+U2KJ56Q44EHFJicZI1beRDYdB1Q93+cz3SUduC+jfdhQ+2GiLGEjMDnwtZxZmYGf/jDH5gmrhdccAGee+45XHTRRWmPnfeky6egIRPFAQAwODiI3t5eLFy4EE1NTYK4jGVa07XZbOjr60MwGERTU1NKF2k4uQqdVzsXiOZhy05nGh4ehtlsxvT0NEKhENRqNScq5msonk1fXr4IBoE//nEenn22DENDLLLUTgCn3wF0PgVQx37bElUJtp68Fd9Z/B1IJZHkmkzZbiIk67sgFOm+8cYbqK+vR1lZGQDg3HPPxbvvvntiky7fggYiAwiV5+lyuWAwGDA5OYnS0lKsXLky4zpxOiCka7fb0dvbi2AwmJafAyHXXM+FFALsdCaHw8FkU9A0DbfbzRR7TExMwO12A0CEXqxUKjMWAKQ7Fk0Dr70mw513KnD0aPOxN6Q+YPVe4NQ7AZWNeVkmkeGK5VfglrW3oFgV+/rJRKsePrBaraiqqhJkv7W1tfj3v/8Nl8sFtVqNN998E6tWpZaJEY68I91kCxrkcrkgpOt0OtHf3w+n04mGhgYUFRXB5/PNyeJRMvD7/TAYDJDL5YKY52SqrDgcuRY5s280FEVBo9FAo9EwkRBwrNjD4XDAYrFgeHgYXq8XUqmUIWGZTCbY90rnd/jHP6TYtk2J999nkyMNtLw2W002r4ez/Rl1Z2DXxl1oKWlJOPZckq5Qke6aNWtw/vnno7OzEzKZDCtWrMAVV1whyNh5R7rBYBB+v593QUOi1K5EYNsrNjQ0YN68eaAoCiaTiYluchEksnU4HKioqEBLS+LJwge5RoaJkM2onF3swQZpze5wODA9PQ2r1Yp9+/albQ6UCukeOiTB9u1KvPlm2NQv+xTYdD3Q+DfOy83Fzbjn1HtwZsOZvPchtKY7V2Y3O3bswI4dOwQbjyDvSJf0u+eLVEmX5KuGQiE0NDRwvATSGTfTIDcJv9+PpqYmOBwOQUkym6SbS+SeDnmzW7Pr9XpQFIVFixalbQ6UDOn29VG46y4l/vu/wzIy1GZg4zag63FAckzaKlQW4pa1t+CK5VdAIU3uKVHoSJdvlVk+OIwBeUi6ySJZcpyZmUFfXx8kEgkjI0RDJvTXdBBOtkRGcLlc8Pv9gu0nE4t90ZBrmrGQxRGEKNM1B+KTvWAyUbjvPgWeeUaOQIB1/JLArLftxm2AxnzsZUqC7y75Lu5YfwdKNaVRRkzuO6aLZBfSct1LFzgBSFculyckHZqmYTab0dfXB4VCgdbW1oiUonBkMtJNZoI7HA709vbC7/cz3SXYEJok801eEArZsohMxhxoZmYGHo+HkTQIISsUCthswN69Cjz6KKuwgaDxr8CZ1wPln3Fe3rBgA3Zt3IXFZYsF+a5CYK5SxjKJvCPdZKONeORI7BUNBgPUajUWLVoUocfFQqYiXb7ZAYnIlkBo0s1Wc0oh+7EJmTucLlJd/IpmDnTw4EG0trYynR2mp6fR2zuIl18ux69/XQ+LJUwWmNcNfOlGoPU1zst1hXW4dP6l2Lxpc875SyRTHOH3+3k3sJxL5B3pJguZTBbhUUvTNEwmEwwGA/R6PZYsWZK0OxFpSyI0ErmX8SVbgkxEutHGy9UIONdMzIUuA5bL5Z/nDOvx0ksy3HmnEkZj2LWjsgAbdgJrHgGkxwIQrVyLm1bfhKs7r8YnBz/JOUkHOP68dIE8JN10It1QKMR42cayV+QLqVSaEXkhlnuZw+FAX18fvF4vGhsbOWYf8SDKC8IgV0lXIpHgf/9Xiq1blThwICwilASAzqdAfWELaPUU8zIFCl+v+zouq7sM6qAaHx/4GB6PBwaDgZEpUjUHEjqdMNlCi1y8cYQj70gXSG7iy+Vy+Hw+DA8PY2BggCloSPcxJFOP2eEdgVMlW4J8lheOR3IX0nuhr0+De+/V4G9/i+IRUf8WqLM2gy77mNPqcV31OuzauAsrKlYwr/n9fhw8eBBarRZ2ux3j4+MpmwMJmbkA8Cdxj8eTF9ICkKekyxfBYBATExMwmUxQqVTo6uqa8w4EiUA6AqdLtuzxMikv0DSNsbExGI1GUBTFWdAhnR+OB2QieyFVDA9TuPtuJZ5/fjVoOuyYSnpBfelm0G2vcMi2Vl+LO0+5E+e0nBPxPUKhEBQKBcrLy1FeXs68noo5kNCkC/CLXq1Wa863Xic4PmZEGAKBAIaGhjA6OoqysjLo9Xo0Nzcn/mAOIBQK4ejRo0z79ZKSkrQme6bkBZqmMTExgf7+fhQVFWHZsmUAwExSk8nEeDyQvFMySZPxKcgV5IK8YLUCe/Yo8LOfKY752hIorcCGu0Ctexi05Fi2jlauxQ2rb8CPOn8EtTy6oXcsokxkDkR+Z7Y5kEKhgM/ng91uh0ajyVon6HzJXADylHRjPXr6/X4MDg5ifHwc1dXVWLt2LQBg37592T7EpOF0OtHX14eZmRnU1dWhrq5OkEmeibxai8WCo0ePoqCggNHFiZUmKQIgYJuMs30KKIriREvhfdByrbxaKNJNRfP0+YCnnpLj/vsVMJvDPksFgc6fQ37mHfArJjnR7bcXfRvbTt6GqoL4fgTJHlM8c6CJiQk4nU4MDQ3B5XIx5kDs3zoTN12bzSZGutkE215xwYIFEfaKmYqYUm1OyQYhW7fbjaamJqb1jFCkIyTpzszMYGJiAlqtltNQMx5imYyzH13ZfdAUCgUKCgqYVKH0TV3yN3uBpoFXXpFh+3YlDIYo56D+LSjPvh7e4o/AzkRfM38Ndm3chZWVK3ntRwhJgJgDFRQUwOPxME+W0cyBXC4Xc9MVyhzIYrGIpJtJkB/G4/HAaDTCbDYLZq+YDNJxMGOTLdFsKYqCxWIRNBVNCNK1Wq3o6emBVCpFaWkpKioq0m4AGOvRlZTGjo2NwWaz4YMPPgAwW41FJAoSFefDSnU4+JLuv/8txU9+osT+/VHIsKQHyq/eBG/9q2AnQy7QLcCdG+7EuS3nJnVuhMw4CM+rjWcORPyLY5kDKRQK3sclygsZBmnDYrVaUVdXh9bW1jmZgKkUSMQi23TGjId0SJeY5oRCITQ3N6OwsBA9PT1Ro0ehzj8pjfX7/SgoKMDChQs51VjsCUras7P14kxpiELKC/GOsbeXwvbtSrz6apSMBKUV8jN2IrjqEXipY7GtRqbB9auvx7Urr42p28bDXJiOSySSqDddtjnQ5OQkHA4H9u3bB7lczpGiwn9rIbtGZBp5Sbp2ux3z5s1De3s774mQCTvCZEqBXS4X+vr64HK5opItQS6QrtPpRG9vL7xeL5qbmzn17Nn0XiDkHqtVO6nEcjqdGB0dZboDE4NxIlMIITFkOntheprCrl0K/PznYR4JACAJgFr5FJSbtsIjneS89a1F38K2k7Zhvi71/l3Z7iocD2xzIJL90tLSwvmtw82BXn/9dQwODqKjowN+v1+QNksWiwWXX345PvlktmjkF7/4BdatW5f2uECekm5FRUVShQlCG5kT8CFINtk2NDSgtLQ07uSVSCRzZlBDGjg6HA40NTVFvTHkUv6sXC5HcXFxRHdgtoZos9nw2WefMTaK7Kg4mcmZKW3Y4wEef1yBhx5SwGaLcl3UvwndBZth13wCD+vl1VWrcWnlpbjwtAvTPiahI12h5hk5Loqi4poD9fT04P3338fAwABeeOEFyGQyvPvuu2ndSK677jps2rQJL774Inw+H2M6JATyknSThVBG5uGIF+kSsnU6nWhsbExItgRSqRQejyfhdnzBZ59erxf9/f2wWCxobGxER0dHzM/FI91c6CgRriF6PB7U1NRArVYzGuLExAQcDgeT5sSWKGLZKJKx0wWJKkMh4MUXZdixQ4mhoSj7K+lB4TduhLXyj7CzXl6gW4Adp+zA2Q1n49NPP037eNjHJASyaWBOzIHOO+88/POf/8Sll16Kk046CYFAIK3vY7Va8X//93945plnAMxKXkJyR16SrpCmN+kgWqTrcrnQ398Ph8ORFNnGGzNT8Pl8MBgMmJ6eRn19Pdra2hIe61zIC0KA/dhKEJ7OxrZRZEfFBQUFgsoL+/ercd99msiyXQBQzUD3lTvhWvwYrIidb+v1egUlSqGjUyGQbNcI8tumW5BjMBhQVlaGSy+9FIcOHcLKlSvx8MMPQ6vVpjUuQV6SbrLIFOmyTW/CyTZetBgPpCItkwgEAjAajTCZTFi4cCGam5t5T+BckhfSRax0NrKyzq7Eslqt+Oyzz6DX6xkiTjb5v6eHwk03LcTf/x5lwUcSgPrkJ0Cdvh12THPeurDjQmw9aSsn3zaXeq2xITTp8pWArFarYF66gUAAH374Ifbu3Ys1a9bguuuuw65du7Bz505Bxs9L0s2lSNflcuGTTz6Bw+FAQ0NDymTLHjNTkWQwGMTg4CBGR0dRU1OTUrv4bEW6wNxVpEVbWf/oo49QX1/PLOiQ5H+apjkLdwUFBRH5pnEXyQBIW/8H+gtuwIzsCOf19dXrce/Gezk+CQS5TJRC6sNqNb9sDCFJt6amBjU1NVizZg0A4Pzzz8euXbsEGRvIU9JNFnyMzJOF2+3G2NgYXC4XFi1alDbZEmRCXqBpGoODgxgcHGQq9VKdGEL63CbaTy6BpmkoFArodDrOYk4oFILb7YbD4WDMxT0eD6RSKRQKHV55ZQGefLIUNlsUgiz7DOUX34AJ/V8ww3p5oX4hdm7Yia81fy3meThRIl2+UoHX6+VN0IlQWVmJBQsW4OjRo2htbcWbb76JRYsWCTI2cIKQrpCRrtvtRn9/P5O2VlRUxDEJSRdCkm4oFGJSqXw+H9auXZu23hVLXsg1kiTIdCUZ24mLpLPRNPDiixS2b1dhaCjK+dZMofT8O2BueAoTOPZb6xQ63Lj6RlzdeTVUsviWo7lKlMl0ekiEufTS3bt3Ly688EKmIe3TTz8t2Nh5SbqpyAvhRubJgpCtzWZDY2MjFi1aBLPZjImJibTGDYcQj9QCYrAAACAASURBVO80TWN8fBwGgwHz5s2DRqNBY2OjYF4OJ6K1I1/y3rdPgttvV2HfvigkJvVB94U98K+/B1OwMS9ToHD2grNxw/IbUFdaBymdmABPlEg3mbGEvPEvX74c77//vmDjsZGXpAskNynTiXSjkS35cTPRPSKdSJe0H+rr60NhYSHjG2w2mwWL+LIlL+QaEp2/gYHZSrKIbruzn4am8xWozr4ZZvRx3jl1wanYecpONGgamCosg8HApLOxsyg0Gg1DjkL68gpJlEI2peQbNQtVEJEt5C3pJoNUNF022TY0NHDIliAT+muqY872x+qFVqvF8uXLOfoWiZ6FmAy5FoHONWw2YPduBR57TAGvN4r8UP0hKi+5EaPKt8FOr28sasTdp96NLzd8mbmu9Ho98z5x7SLpbNPT05yuwOR38Hq9aftQJCpNnivwlResVivn3OU68pZ0MxXpejwe9Pf3w2q1xiTbVMbli2RJbWZmBr29vVAoFFi8eHHUXEIhMw6yRbq5Ru7hkW4gAPzqV3LcdZcCU1NRbma6UVRffDtGy3+FUZbhok6mw82rb8bVXVdDIY2dG0tcu5RKJcfAnvhQjI6Owm634/Dhw4yxeKo+FHxauc8F+EbN+WR2A+Qx6SYDPuQYTrZ8fB0yEenyjVhsNht6enpAURTa2tritowXknSzmTKWS2CT7ptvSnH77UocPhyF1OQuVJzzAKyLH8BIyMm8LKWkuHzZ5Thbfza6FnfFJdx4ID4Uer0eKpUKtbW1AI75UDgcDo43gUaj4UgUKpUqaueIXCRdvsinrhFAHpNuMo9TMpksprzAJtv6+vqkTHQylf8bD6QbcCAQYJy/EiEfI11AmFVpIbMXjh6V4o47VPjb36JMGyqEwpOfBfXF22EKjQKs072pYRPu2nAXWkpacOjQoYyYocfzoXA4HLDb7RgbG2PS2diOXUKR7lzdjPPJYQzIY9JNBlKpNGICp0O2BNlMk3K5XOjt7YXb7UZzc3PC1utsZIN0g8Eg/H6/YM0BcykFbWqKwsMPt+BPf9IiGIw8LkXTP1Dy7esxLvmAQ7YdpR2459R7cNrC05jXhCS4ROOwfSjYaY1s+0STyQS32419+/ZBpVJxouJ4PhTRIPSCHF8IWRiRDZwQpMsGaTVtsVhSJttswuPxoK+vD3a7PSUvByCz8kIoFMLIyAgGBgYYuYXdE41M3lw+x7Hg9QJPPCHHAw8oYbMVRG5Q3IcF37sZQ7qXMc56uUxThi3rt+DixRdDKuGSkJC+vKnmw4b7UNhsNqxatQoej4fjZcunrRIbc5GjS45fXEjLApK9cEOhEA4fPsyQLR9zl7mE1+uFwWCA2WyOSFVLFpmIdGmahslkQn9/P0pLS9HV1cUQisfjYfRFEkmRR1r2n3hR0VwupNE08OqrMmzZooTRGCXSU1kw/5t3YqL+UQzRx2QrpVSJa1Zeg+tXXw+dIrrGPpe91uKBOHap1eqk2iqxCXmucnStViujbecD8pZ0+YJEtsTPNhNkK6Slod/vh8/nw/79+9HQ0CBIVwyhSdfj8eC9996DTqdDZ2cnVCoVQqEQfD4fZ/Ky27MEAgGGiMfGxuBwOJiFHkLCOp1uztvwHDggwe23K/HOO1GmhsSPki89Ad/6HRgNTYPdBfL81vOx/ZTtqNXHn/zZlBeEQKK2SsSHghjI0zQNo9EY04eCL5KJmi0WC5YuXZr0PuYKeUu6iX5I4hE7MzOD+vp62Gy2lB7NE4EQWrp3+EAggIGBAYyPj0Mmk2HVqlVQqeKXgiZzjEJkWdhsNhw+fBhutxtdXV1JWd3JZLKoHWRJFGW1WjEyMgKv1wu5XM7kVjscDk5RQLLgGy2PjVHYsUOJ3/xGBpoOv0ZoKJe+At25t2IK3RzddnXVatxz6j1YPX8172PKpUg31SKLaKbiZrMZ4+PjUKlUnN+Tnc5GIuNE8yVZeUFcSJtDhJMtiWzHx8cz2j0iVdINBoMYGhrC8PAwampqsHbtWnz00UeCPlqnW7rrcrnQ09MDn8+Huro6jI6OCuItyu4Iy27D4/P5YDKZYDKZMDAwENXjVqfT8a5CikcqLhewd68Ce/Yo4HJFKW6YfwCVl9yAUdXbnCaQC/ULseOUHTin5Zw5icxzMWIm7XMqKys5r7Nb7bCfctjubFqtlqP9J+ulK5LuHICtgUbTbDPpqZsKmZMFqMHBQVRVVXHMaIT21E1VXvB6vejr64PNZkNTUxNKS0vh8XgwMjIi2LFFg0KhgF6vh8vlQmtrKwCux+3U1BSMRiOn84NOp0tq0S4UAn7/+9n25iMj0YobRjD/otsxVvEsp7hBr9Dj5jU348oVVyY0pckkhCTdTOuwfNoqjY+Pw+12M3nI5PvxKfEVsxeyBDKx2GQbrzNwNrtHxANN0xgdHYXRaER5eTlWr14dcVHNdXPKQCAAg8GAycnJiAyPbFo7sqNztsdtVdWsmTe784Pdbo+6aOf3+yPO5XvvSXDbbSq8/3604gYn5n3tPjiWPIRR+ljhrgQSXLbsMty27jaUakojP5dlCEW6QlajJfPEF6s1O0lnGx4ehsvlwscffxzRVkmr1XIkJ5vNJpJuNhAMBnHkyJGEZEuQ6Ug3Edir/SUlJejq6ooZHQttZM6XdEOhEAYHBzE8PIza2lqsXbs2YkLGyyrI9mN2rM4PZOLa7Xa43W4cPnwYAGCzFeH//b9G/M//RMksoILQnvQ0pF/cgml6nLNItqlhE75R/A2cf+r5mf5KvCGU4Y3Qto7pGs+QdDaLxYLS0lJUVFTEbKtkMpnw3HPPweFw4J///CdWrFjBkanS+R6rVq1CdXU1XnvttbTHC0fekq5UKkVxcTHv1f1MGJmT44gXldI0jampKfT29qKwsJBZ7Y+HbMsL7Oi7srIyru9utqwdyXGlAnYeqsViQUVFI554ohB79yrg8UTRbZv/gsILbsSM4lMO2S4pW4K7T70bG2s3Yv/+/al+jYxAKDcvoW0dhTISZ2u6sW6uXq8XpaWluP766/HGG29gz549OOmkk7B169a09v3www+jvb0dNpst8cYpIG9Jl6IoVFZWZsXeMdVxzWYzenp6oNFosGzZMmg0Gl5jZkJeiHbDYd8QiouL40bfBPHkBSFT54RZ4Qf+9KdSPPXUPJhMUaK5sk9RduGNmCzidm6Yp5iHH7T8ABe0XoDCgkL4fL60j0VoCCkvCBnpZnMspVKJNWvWQCaT4cEHHxRkv8PDw/jTn/6En/zkJ9i9e7cgY4Yjb0k3WQhhZB4N0QjSYrGgp6cHcrkcHR0dKCiIUs2U5JjpIFrkbLFY0N3dDZVKFWEFGQ+5JC/Ew7/+JcWttypx4EBz5JsF4yg5byss9T/HJCv/SyPT4Lqu6/Cjzh8BPjAFAUajEU6nE4cOHeIUdxCLxblALmYvzEWrHiF7sgHA5s2bcf/998NutyfeOEWcUKSb6UjXbrejp6cHANDa2ppyaaLQTl5sjdjhcKCnpwc0TaO9vT2uO1k0ZKtdT6oVaQMDFLZtU+Kll6Joi3IntGc8BP+a+2HGMQcwChQu6rgId5x0x7GOu0pwzs2+ffvQ2trK6IoTExOc1XaSQaHVagUrhY2H4z3S5Uu6QpYAv/baaygvL8fKlSvx9ttvCzJmNOQ16SYzMTOp6TocDhw8eBB+vx/Nzc1p5wwKHelSFAWfz4dPPvkETqcTLS0tKa/25lI0y4bdDuzZo8DevVHMxKkgZCt/CeVZW+CUjHLeOm3habh7w91YXLY47viJFu1I2pPD4WC0TXYqW6qVWbEgRrqzEDJH95133sGrr76KP//5z/B4PLDZbLjooovw3HPPCTI+QV6TbjLIRKTrdrsxPDwMp9OJJUuWcMym04FUKhVMR/T5fBgZGYHZbMbixYtRVlaWs8SZCkIh4PnnZdixQwmTKQp5NP4V+vNugk3zMdi//qJ5i3DXqXfhjLoz0tp/uHkMwLVUDK/M8ng8GBsbY1Kf0iG8XMteELr9Op+xhPTSvffee3HvvfcCAN5++208+OCDghMukOekm6ynrlCky7aFrKiogFarFYxwAWEi3WAwiIGBAYyNjaGsrAxyuVzQrsWZBp+nmHffndVtDx6MMjkrPoLu3Jthr/gr2GvQFdoKbFm/BRd2XBjhACYUYlkqejweHDp0CH6/n/ErAGbb75CIOJ6LVyaQjltZOIQkcIDf/M43A3Mgz0k3GcQzMucLn88Hg8GA6elppruE3W7HwMCAQEc5i3Q0XXal2/z587F27VrGlOR4wcAAha1blXj55Si6rW4EqrO2wNv+DOys/C+NTINrV12La1ddiwJFcgubQkEmk0Eul3McsUj7HbvdznHxYhcDZHLRLhgMCuaBLGRTSr7IVAnwxo0bsXHjRsHHBfKcdJO5CKMZmfMFqdCamJhAXV0dWlpamH3nSnPKcKtFdqWb0Hm/2UL47+VwzDaBjKrbKuyQnnofqPW74aHczMsSSPDt9m9j6ylbUVnA9QTINqKl1LEX4tjb+Xw+2O12xtvW5XJxtg0EAkn5E8RCJiwis4l8810A8px0Mw32I/qCBQuwbt26iAs0F9qwT09Po6enh2O1GD5evvU1Y0/eUAj4zW9mfRIidFuJH+h8Csozt8Mrn+C8dUbdGbik8hJs6tyUlmObUMUgfAmO3ZQy3NuWZE8EAgEcOnSIs2gXrw9aLAgtCQiBZKrtLBYLqqurM3xEwkIk3SgIhUKM81d1dTXWrl0b88KUSqWCL9DxjUxtNhu6u7shk8mwZMmSmM5f+dxM8li+bfj5p4G2P0D5H7fCqzvKcQBbWrYUOzfsxGkLT8NHH32U9jEI2WctnXGkUimzaDc6OoqVK1fG7IPGtlPU6XTQaDRRr+FcbL+erK1jR0dHho9IWOQ16aZyAceLNkKhEEZHRzEwMIDKykqm2iUeMiUvxCNJttViS0tLwoWEfCTd4WEp7rijGW+9FaWKr+bfkP/HzfBX/ZNDttUF1dhy8hZ8s/2bkFDHfuNcydYQkrwJYi3asbsDhy/asVPZhDK8EbI0PFnSFRfSchhyuTyqDSNN0xgbG4PRaIzQQxMhExM6FpETq0Wr1Yrm5mbOo2c8ZJp0Q6EQhoeHGZ9ddqFAslGUw0HybQsifRJKeiH54m0Itb8I9pKoXqHHjatvxFUrroJazq2sy6WOwtnMrY1mpxht0c5ms8HtdqOwsJAh4lQW7eaqyELUdLOMZC+McO9bmqYxMTGB/v5+FBUVYeXKlYKt5KaDcNKNZ7XIB5kiXZqmMTk5id7eXpSWlmLRokVMf7SRkRE4nU7QNM0h4oKCgqg3tFAI+O1vZ/Ntx8bCCEU7AWzYCWr1EwhRx6QcuUSOy5ZdhlvW3oJ5auFS9qJ9z1yQF9IdJ9qi3cGDB9HQ0AC/3w+73c5ZtNNqtZxUtnjR51wURgD556UL5DnpJgtCujRNY3p6Gr29vdDpdFixYoVgrXGEACFJPlaLfJCJJo/EX0KlUqGzsxNKpRI+nw8qlYoTebDNxycnJ2EwGBAIBDgVW599VoStW/X48MOwSSt3Auv2QHLKfQjJHWwDMJzbci62nrwVDUUNgn6vaJhrsgyHkDos6VMnk8k4uebBYJCxxzSZTOjr64u7aCdEJgWBSLrHEWQyGWZmZnDkyBGoVCosXbqUt/NXIgjpsAXManL/+te/Elot8oGQx+V2u+F2u9HT08Pxl4hF6rHMx91uN7q7Pfjxj/X4y1/CJo0kAKz4BajTtoMuGGO3JMP66vXYuWEnuqq6BPtO2cJc9zWLNVa0Y5JKpdDr9Rxfg3iLdgqFAl6vFzabLSVZiY1kSNfhcCRtKDXXyGvSTebCs1qtmJychEKhwOLFiwX9oYgckO6dnm21GAwGsW7duqxWJ8WD3+9Hf38/zGYzlEolVqxYEfF9+UZgLheFPXuK8Mgj4f62NND6KvDFW4HSI5zItlHfiDvW3IGvtX8tK4YybORipCtUbm0yBQ3xFu3GxsYwNTXFkZWidXrmA75SBbnRZ7sgI13kNekCiR+d7XY7ent7EQqFUF5ezmhUQkII0g23Wjxw4EBOEC6ROEZGRrBw4UK0tLRg//79nHNO0zRCoRBomuZU/UkkElAUxUyKUAh44YXZfNvR0bCJsuAd4Is/Bmrf5bxcpa3C5uWbsalyEzwuDw4ePMjoxGy9Md7CZ7pEdzyTrhCQy+XQaDQoKipCQ8Os3EMW7RwOB2ZmZjA4OAifz8eptNPpdFCr1RHfJRAIJPUEmivZKXyR96QbC06nE729vfB6vWhubkZxcTGGh4czau+YyiIcsVoMhUIpWS1mCuwKt4qKCk76HLnREbIli3RyuZxDwOTfwWAQ778vxe23a/DBB2HkWPYZ8IXbgbY/cF4ukBfgW7Xfws6zdkIj505AohOThZ9oOjGJrE7U7IVsIzw6jVdpR+SJqakpuN1upis02d7n8/GyaxRSZskm8p50wyNdt9uNvr4+OBwONDU1Yd68ecwPk00j80TweDzo7e2F0+lEc3MzSkpKIrYRWifmi5mZGXR3d6OgoCBqRodEIkEgEGBa91AUxTlO9uQbGqKxbZsCv/tdGNnqh4GN24HlTwOSY6qtXCLH95d/H9euuBYThokIwiX7J8RKEMvZy+PxwGg0orCwMOV0KKEWIXONvIUEH0mAXWkXbdGO+BRPTk5ieno6IuslvNLObrfnTJCSDPKedAm8Xi/6+/thsVjQ2NiIjo6OiAt8rptTAse00enp6ZjHCRzLYMhmtZDT6UR3dzdomo7a8YKQj0wmw+HDh1FYWAi9Xh9Vr3O5gIcflmH3bjlcLtb3U80AJ+8C1jwCyD2cz5zfcj5uX3s7FhYuhN/vh4k2JVU6G01v/PDDD6HX6+F2uxnjcdItmC1PJNqHKC/ERzryWviind/vR11dHeNVzV60k0ql0Ol0mJychMlkEqQwYmhoCJdccglMJhMoisIVV1yB6667Lu1xYyHvSdfv96O3txfT09Oor69HW1tbzAt7rppTAlwfB6KNxpuApCotXdJ94w3g409prOmKPel9Ph9TdNHS0hIz6iZSQnt7O6PXTU1NwWAwwO/3f/54r8Pbb1fi/vtLMDLCOnaZG1izFzj5XkBt4Yx9Rt0Z2LFhB5aWLQVN07DZbOjr64Ner0cwGGTOLYmo2TpxIkgkEpSUlHBuCoFAgJnM4fnEhIh1Oh1DIrlGlkKNI3QVmVA57qSrsFKphFqt5rRoJ5V2n376KZ5//nkcPHgQnZ2daG1txY4dO9DS0pL0/mQyGR566CF0dnbCbrdj5cqV+OIXv4hFixYJ8n0i9peRUbMIUgXV3Nyc8ELMZKQbi3SjWS3yIVLiv5BqS+tAANh6lxu7+74PuMqwW34l1qzhkngwGMTg4CBGR0dj3rDCdVtCeNHSwN59149rrlHhww9ZOc+SwKyEsHE7oOd2bVhRsQI7T531SACOkT+RXAoLCxl9mP337PcLMMdKFuzIv8OPP9oTT1FRUdR8YqIT9/f3M3mpJAfZ6/VCoVCkTMC5Rt5CV5FlI0+XVNqdc845mDdvHl5//XXs2bMHR48eTbn9elVVFXMd63Q6tLe3Y2RkRCTdWKirq+Otp2aKdKOZ3sSzWuQ7ZqqeDsPDwH9eNYQPms8FOj4GANzx8lJ8/etNmD//WNmzwWCIeSOIRraxCGNsjMLWrQo8/zzbcIcG2l8CvvAToPQoZ/tqdTWuWXQNzmk9B4X6QgQCAQwPD2N8fDyC/Am5sI+PHFMwGOQs2LFfk0gkSRFTPJ14cnISZrMZhw8fhs/ng0Kh4ETEarWaF5nmGunmaqsevn4QpARYJpMJZnpjNBpx4MABrFmzRpDxoiHvSTfZ7hGZkhfYpEuq3QoKCqJaLfIdM5XS3f/5Hwku2fE27Gf+J6A+1ljcpTmKt96i8OUvz9pAFhYWRm25Hp59EI9s3W7gkUdkePDBMN224Q3gC7cB1e9ztq/QVuC2dbfhwvYL4XHN9qA6cuQIbDYb5HI55s2bB7/fD5vNhoKCgpiTmExI9sQk54rcKGiahsVigdvtTlmeIDrxvHnz4HQ6mcjH6/UyXrdsnZhNxNFa8eQaWeZqU0qA37wW2uzG4XDgvPPOw09/+lPBml1GQ96TbjJIx8g8HkhWhM1mQ09PD6RSKRYvXhzTapEPkjUe9/mArdsk+Om/HgXOvulYRkBAAf0/foY7z+lCa+uHGBqSR63EI+eFRIrxiImmgZdekuKOO+QYHGRtU71vlmwb3uJsr1foccOaG3B159XQKmbPSdAfZFaoly5dCplMBrvdDrvdjuHhYTgcDtA0zUkB0+l0MZ8W2ETs9XrR29sLj8eDZcuWQaVSRcgTyRBxeIQazes2EAgwRMx29WLrxIFAIGW5iI1cI29gbnx5LRYLR+9NB36/H+eddx4uvPBCnHvuuYKMGQt5T7q5kKcXCAQwOjoKs9nMy2qRD5KRF4xG4KLvBvF+5ZXApl8ee8M2Hyv7XsCuO3Tw+YZRU7OI0a7YYEsJbBKKhgMHKPz4xwq8+y5rgpV9Cpy+BWh/mbOtSqbCVSuuwg1rbmAMadiE2NLSwnmcj6Wz2mw2TExMoK+vD4FAgCEynU4HvV7PROukkGN8fBwNDQ2cJpzh8gT7OyciYj6ygEwmi+rqRXTiiYkJTE9PM74f7Kg42QUoobJacjHSTUaCsdlsaGpqEmSfl112Gdrb23HDDTekPV4i5D3pziWI1aLZbIZGo0FnZ6dgNwG+pPvqqxJcvnkSti+fByz497E3htfi+7on8Z/XTKOpqRAmkydqChh/3RbYsUOB556TgqY/36bIMLtAtuxZgDr2BCGlpLhkySW4bf1tqNbNuvqTRTuTyRRBiLEQS2d1uVyw2Wwwm80YGBiAz+eDRCKBx+NBSUkJ85QRa/xYOnG0BbtgMAiPx8MUecRasONz/AMDA1AqldDr9bDb7bBYLBgeHk5aJxaKdHMx0k3G31cos5t33nkHzz77LJYsWYLly5cDAO655x6cddZZaY8dDScc6VIUlfbFFggEYDQaGQKpqanBwMCAoFF3IjtGrxe4/XYpHnvpI+BbZwP6EeY99ZHv4K61V+I/NilRWzvrTDY1NcWMlwzZejzA3r0yPPCAHE7n59voRoENdwGdTwFSrkZ+Xut52HLyFjSXNDP7MplMMBqNqKysxOrVq9NuO67VaqHValFVVQWn04mjR49CKpWiuroaXq8XPT098Hg8DJGRiDheYUQ0Ivb7/TAajZienkZzc3PCBbtE34tsT/KJyWo7uycaiYrj6cRCLcjNxeIXn3GScRgTwkv35JNPzojsGAt5T7rpeuomA9LGZ2hoiNMzzeVyCZ4VES/S7e8HLr5Yjg/cLwHfuwSQf96IMSRBXfcOPHPV17FyZR1HPyQaMXvFPx7Z0jTw8suzuu3AwOeTSTMFnHQfsPrRiMKGMxvOxNaTt2J5xXLmNavVip6eHmi1WnR2dgrqJUGKTEhucbTJ5/P5YLPZOD6xhMgIEUdb8GL7LNfU1HBuFOwFO3aZM5BYJ45FlrF6osXSiUOhELxeL+RyeUKf23gQMtKNdy0lg+Pd1hE4Dkg3WaRCuuwUq4qKigirxWx2BH75ZQmuuFIK+/J7gK9uOfaGpxBf9z+KX/zsK9Bo1BGfoygKDoeDsd2LN9kOHKBwyy0KvPPO51GQygKs3QOs2w0oHZxtT6o5CdtO2YaTak46diiflzj7fD60tbUJajBE0zRGRkYwNDSUsMhEoVCgtLSUQ2TErNtut2NgYAAOhwMURaGgoAB6vR4ymQwjIyPQaDRYuXJlxHUSK6qNJ0+QCDfZaySaThwMBnHkyBFIpVKOz214Gx4+OnEuNqU83lv1AMcB6aYa6fIB22qxqKgoaopVsmPyhVQq5fhEeL3AbbdJ8bP/CgBnXwos/fWxbS1NeGLDc7j4rOUR4xACKC8vx/DwMIaHhwGAE+2R9KyxMeDOOxV49tnPdVuFA1i9FzjpAU76GQAsr1iO7adsxxl1ZzC/QTAYhNFoxOTkJBobG1FaWiqo5DIzM4Oenh4UFxejq6srpQhPLpejpKSEU3UXDAZhsVhgMBjgdDqZtk5Hjx5lzlG8zAkgsU48NTWFqakplJWVxXViSwSpVAqZTIby8nKGcIjOTRy9hoaGOI5ehIjDdeJcLCcOBAK8bwR2u10k3blCMp0R+BIk6YygVCqxbNmyuFZzmWiHwx6zvx+46CI5PjxiBi75OlD7DrNdifVUvLP5N6iv5Jbuhuu2hYWFzCM4aeVts9kwPDwMs9mFF1+swfPP18HlkgJyF9D1s1kpQTvFGbd9Xju2nLwFZzefzUxgmqYxPj4Oo9GI6urqtHXbcBDT9FAohI6OjrRS8cJBNOeBgQEsXLgQVVVVjO7PrlAjmRMajYZzw4oXUUokErjdbkZzJpFzLCc2cjxSqTTugl04WbJ17lg6sclkgtvtZroE63Q6uFwuQUz8hdRDk9F0c7GTMR8cF6SbDBKRLttqsa2tjZeLUSabU77yigRXXimDVdYDXH4WUNLHbLNWdhn+uvOnUMiORWB8FslIK2+9vpCr28o8wJrHZv0RdOOczyzUL8Tt627HtxZ/C1LJsQud3Jx0Oh1WrVolSB4qATtybmpq4t2Iky+sViu6u7uh1+sjjj1ehZrNZoPFYsHQ0BC8Xi+TkUCIWKVSgaZpGI1GTExMRPWzSKfCjk+EGksnJt4FdrsdZrMZk5OTTCk9335o4ZiL/mjZXPgSGscF6SYT6cYyveFjtZhNBINS3HtvJX7zG/mswfe3zgY05tk3aQo/atmFB869lhNt8q0kA4APP5Tgllvks/m2Ui/Q9XPglHs4WRDAbFvzHyz6Ac4oPQNupxv79+2HVquFSqWC1WoFRVFYtGhRRqJPg8GQkcjZ5/Oht7cXbrcb7e3tvDVntpNZdn+G2wAAIABJREFUZWUlc6ykQs1ms2FsbAwOhwM+nw86nQ4LFixgottEmRPRdOLwBbtAIACXy4VQKMT4TyQjT7C7BAcCAej1ehQXF0fth8bWieN1fhCadPmst5D5ngt5+sniuCDdZBAe6fK1WswmjEbgW98qxYEDcqD9v4HzLgRks/quNKTG//vyM/j2iq8x29M0zauSDJj1Sdi+XY7nnpPNku2q/5ol28JhznZV2ircsu4WfGfpd6CQHpsEhLDGx8eh0+ng9/vx8ccfQ6PRcKK9VCNeu92Oo0ePQqvVRl3ISgekVfzIyAgaGhpQXl6e9m9NURRUKhVUKhV0Oh2OHj0KvV6P+vp65vG+v7+f6bAbrqXH+63Y0W14RgWRBaJFxHyJmETMsfqhkXbtpPOD3++PqhMLTbpqdeRCcDgcDkdeeukCJyjper3eCKtFPi5liSBE/uSf/iTB5ZfLMDNDAV2PAWddwxQeFFDl+PN3/hurq7uY/fHNt3W5Zn0Sdu+Ww+nxAV3/NSsjhJFtuboCN6+7Cd9b9j2oZMc8I0gGx8DAAGpqatDW1sYhBFKwwLZ6DCfieATKjj5bW1sFn1DEmH3evHlYvXq1oFpgKBTCwMAATCYTmpubOQbd7H+TFDC73Y6hoSE4HLOZIOGlzuGP1263G0eOHIFCoYh6I4qXOUEQbcEuHlmydWICEtUTeYLoxBRFIRgMYmxsDAUFBVHT8PiCr6ZrtVoz6o+QSRwXpJsM0UmlUszMzGB8fDwpq8VEIPaOqeZM+v3Atm1S7N4tA0ADp98BbLibeb9G3YS/fudVNBQ1JEW2NA288IIUW7fKMTzuBTqfBE6+L0JGKFGW48frb8Dlyy6HWs6NNEjWQFFRUVTdNrxgYXa/xyIlduWYWq1mSJhExENDQxgdHRUs+mTD4/Ggp6cHwWAQS5YsEaz7M8H09KyBUEVFRUIZJFapMFnUHB8fZ9YTyIIduZm1tbXFzEnlU2EXbcGOyBPJGMWTqJ6tE09OTmJ8fBx+v5/JJybXRLI6MV9N12q15mXmAnCckC4fkMez7u5uSCSSpK0WE4E4jaVCuiMjwMUXy2b1VSoI/McPgVVPMu93lq/Gq998CfPU8xAMBnmRLQC8996sbrv/oAdY9Rjwnw9ELJAVyspx68nX4/Lll0e0xpltkz7bSWLx4sVJNwskRMzWPz0eD7MQRbxzVSoVQ7ZkYSpd4mVHn5lYhPN4PMy5WbZsGa9H4miQSCQRj/ahUAhjY2Po7++HSqWCTCbDkSNHODcs4tmQbKkzAMZKk6THhRvF862wIyC/dW1tLfMaacETTSdmV9mFR+1855DFYhGkGm0ucFyQbqIJajabmcqojo4ODA4OCkq4QHRPXT54800Kl1wixfS0FJD4ga9/F1j6PPP+mQ1n4tdf+zXUMjVHt433nYeGKGzZIsfv/+gAuh4Crt8DaKY52+ipSty6YTO+v+KyCLINBAIwGAyYmZlBU1OTYIuKFEVBrVYjFAoxK+bLli0DAGYhamRkBB6PJ2pGAF8iJrnVfKLPZME21ckEmft8PnR3d8Pv92PVqlUMmZPMCbvdDqvVysmcYOvE8TwbJBIJY6fJllnYC3ZkfQDg78QWTaZIVicmROz1epPy0s1HHBekGwt2u52JbEnPL6/Xm/XuEdEQCgHbtvnw4IMFs4UIUh9w/jc5Tl1nlJ+B35/7e0ggYRzA4l2QDgfw0ENyPPyUGd7ljwCbHwVUNs422mA1bjl5M65ec2mEjMCu9lqwYAGampoEfdQPBAJMHzvSoZlArVZzept5PB5ORoDb7YZCoeAQcTjBuFwudHd3QyqVYvny5Sn5GMcDuXmXlZWhq6tLUF2Yfe4bGxsjDIHYmRPsDgnEUpRElC6XCzKZjDlPxLMhFAqhr68PdrsdixYt4mRsRDN851NhR4iY70JaPJ2YlDu7XC4cOnQIMpmMExFrNBrOMYqkm2NwuVyc9uvsHyeTRuZ8SXdw0IWLL6bw3nufH5fUB1xwAdD2KrPNFSuuwDnKczA9OWsDGC/SCwaB556TYsvuYUy37AF+8PMIbwS1tw43rrkeN5x2MZSyyIR+s9mM3t7etKq9YoGmaYyOjmJwcBC1tbVobm5OSOZEO2T7pbJTswjBEP8Bj8cDl8uFtrY2wdP9vF4vuru7EQwGsXTp0pSlhFiw2+04cuQIYyyfzLlXKpUoKyuL6CNGzpPRaITVaoXX64Ver0dlZSUjJ8QjSr5ObMQsvrCwEH6/P+kKO7ZOXFZWhsnJSaxevZr5Dg6HAwMDA3C5XAxpHzhwAEeOHEF9fT3v8xQPr7/+Oq677joEg0FcfvnluPXWWwUZNxaoBPmteZGBHAqF4Pf7mR5bFouFefSLNrnfffddrF+/XtBjIN0Y2NFaOHw+H155ZRQ33bQQExOfR2GSwGyEu+i/me2uXXUt7tpwF8xmMywWC+x2O7xeb8QilFKpxP/+rwTX7voEvWUPAR0vcNqZA4DS3oofLr0JW8+5AHJppKTidDrR09MDiUSC5uZmwQnFYrGgu7sbRUVFqK+vF1TWIWTe398PnU4HiqIYdy52RBzP5jEeiMHR2NgYE30KiUAggL6+PmahTOiMDY/Hg6NHj0IikaCxsZFJYbPZbBEm8eR8JUP4drsdhw8fRnFxMWpra5l8eTan8KmwY2Pfvn1YvXp11PeITvy73/0Or7zyCkwmE2OC/8wzz/A+7vAxW1pa8Le//Q01NTXo6urCb37zGyH6o8W84I6LSDcQCKC3txcmkylhR+BMIV6kO1tZNYAnn5Tg8cdb4PeTY6OBr1zJIdzNXZtx5yl3QiKRcCKY8EWo//uHCfe80IsjJU8Bp/89Yp+yyU58t/EmPLD5K1DIIyMatktX+KO+ECBZA4FAQPDSXWA2T/Po0aNQq9VYs2YNZ0GGHekRPwU+7mJskBSz0tLSjEgJJOe2trY2YWfoVMYn+chs3Vmj0cQ0iTeZTOjt7eUsdsVK9QsGg4zm397eHnGziNY6KZWOHeEgN9Pvf//7MBgM+OpXv4rTTz8dg4ODqZ0ozJJ8U1MTGhoaAADf/OY38Yc//CFjTSmB44R0Q6EQ5HI5Y7U4F4hWXkwiscOHB/Hkkyvwxz+GpbiceifQ+Qvmvz/s/CF2btgZ9TuQRahJaxDX/Oo1/MP3GLDyaOR2htNxhuoy7Lx0OaqqCgA6CID7iDgyMoLh4WFereCTBcl/npiYyMhCE7lZ2Gy2mF06opnakBxZm83GuItFK1bw+/3o6emB3+/PSIpZopzbdEGkCmLQlEhC4GsSr1KpoNfrQVEUxsfHUV1djVWrVkW9dlJxYiPgm8Jms9mYppSEMFPByMgIFixYwPy/pqYG7733Xsrj8cFxQbpKpRILFy7kvb0QRubhkEqlHK14enoa3d3dsForcNttp+Dw4bCLv+0V4LTtzH8v7LgQ951+X0wC/GS8G9c//xTedT0L6LmLYwhJgU8vwBe11+OR2xajtPTYpDEajUyhglQqhdVqRVlZmeAFAuzobf78+YJnDbCLM1K5WcSySSREPDg4iJmZGfh8PhQVFaG8vBx+v1+waiuSwka8GIR+sggGg8wiZTpSRayca4fDge7ubrjdbqhUKoyOjmJqaoojTcQziQfi68TkyaiwsDAihS1aRJyvXrrAcUK62TQyjzcmSekhK+hDQ6vwwx9qYbdzj09bOQL625fC9bn8evrC0/HYmY9FfA9PwIM/dL+KB996Bp+5/3f2RfYamEcPfHg5lnt/iD3b52P1aqLncv0BSGmt1+tFcXExbDYb9u3bx1SMsQsVUgH5zmq1OiPRm81mY8prhTTVkUqlzOP2+Pg4qqqqUFtby5jakAaZACK0z2SI2Gw2o7u7GxUVFejq6hL8aYykyMWLPtMBcVmrq6tDZWUlMz7bJH5iYoK3STwbFEVhYmICBoMBjY2NKC8v5xURm0wmQbIXqqurMTQ0xPx/eHgY1dXVaY8bD8cF6SaLTJBuMBiEyWTC9PQ0mppasWfPPDz4YOTpbW8PoeHGH+NPwxYAQK2+Fr/86i+ZRa4QHcK7w+/id5/9Di989hIcAUvkzqabgfeuxYLpi3H3NhXOPTcIioq0lvT5fOjv74fdbo/I4ohVuqvVahkSTuQhSxYunU4nWlpaBC/LTNWYJpnxe3p64PV6ObqzQqHgyBbsqrHR0VE4HA6EQiHG+DxW+S7JuQ0EAmkVUMQCyaoIhUIZSZHzer04cuQIJBJJ1JtpMibx7DJnctPyer04fPgw5HI552Yar7DD4/Fg9+7dGBoaSrqhZzR0dXWhp6eHMVf67W9/i+effz7xB9PAcUO6mfDU5QPSL210dBRqtRp1datw8cUKvPVW5N39ggv8uPOBMSz51QvMa49vehzeoBcvH30ZbxrfxJ/7/gyT0xS5o5AEOHo28P4PoJv8An58cxBXXx2AShW5eMc2dqmrq0Nra2tE9BPrMTLcQ5YsrLAjYolEwoyfiYVLtu6cidJgstDEd/xYVWPsRShSvktKX71e7+c34Ka4GS2pHj/J6W1qahI8q4Kd4pfs+LFM4olfA7lpkXz5iooK5oksHiQSCQ4ePIjrrrsOZ599NgwGgyBPPDKZDI8++ijOPPNMBINBfO9730NHR0fa48bDcZEyBsxGFXxJ9/Dhw6ioqEgrn5NM3MHBQdTU1KCoqAh/+csk7rhjEQYHuRNYJqNx770+XHVVAB+Mv4+Nv97IvKdX6GHzhWm0bJgbgIOXAgcuhdQ1H9/7XgA/+Ykf0eYB6XTR19eH8vJyLFy4MG09khCxzWZjdGK32w21Wo2qqqrPfXn1guX1so1p6uvrBTeptlqtOHr0KIqLi9HQ0CC48c3k5CR6e3uZlkhsH4V0ZRxgNmvjyJEj0Ol0aGxsFDSfGpjNcT98+DC0Wi2ampoEH9/tduPw4cNQqVSYP38+U6Fms9kiTOJJfrrX68X999+Pt99+G08++SSWLl0q6DFlCDHv4scN6fr9ft7dG/jk1MYCIbaenh7MmzcPDQ0NkMvlePrpAK67Tg2fjxvhVlaG8OyzXqxfP3sqZzwzaHmiBS6/K/ZOHOXA4fOAj78NDJ4EgMKXvxzEXXf50NYW/SchCx0KhQJNTU2CP2qSai+JRIKmpiaEQiGGiO12O4LBYIQ0kcyEZRvTtLS0CJ41wJYq2traBE9hIzm3drud45LGlnHIuUrWgQ04lqZlNpvR1tYmuJRDyptNJhNaW1sFr/Zip7FFM3Un2xA93W6347333sO9994Ln8+HlpYWXHXVVdi4cSOnIi+HIZIuG0ajEXK5PGnBnCzoKJVKppDA7wduvVWKxx6LJJh164J47jkvwp+eXu97HZvf2Iwh26yAT/m1oEdXAAOnAr2bgKF1AD0bgS1dGsI99/hw2mnRvxtbV21ubhbceYn4MJjN5rjm7uzHbTJp2LpnrAWoTHsZsB/F6+vrUVFRIbhUwc65nT9/fsLxw8nFZrNFdWAjmiVZiKuqqsKCBQsEX4hj+zHU19cLPj6JngsKCtDU1MTr6cLr9WLXrl34xz/+gf/f3rlHN1Wma/xJm5Ze0gbKpZaW2muSlntThFlymeVRUIczc8CCglLkcljHASwiHEAcBPQAioIoyMBC8QwcQcc1gxwVZhgVUQZ6oRSptGlrW+idljZJm3t29vmj59v9UhJI0r173b+1/IOCO193kne/3/u97/Ns27YNZrMZ+fn5ePjhh/Hoo4/yuj6B6P9B1263ezyGW11dDYZhPG4zIx5dFosFSqWSyzKamoCFCwNw4cLdH9IXXrBh504b3O0kL1yQYON2Pa5d8weMQ9H5PRo50oGtW21YsICBq+8AHazi4+MFqXuSFq1Ro0YhOjra6+vfLxCT2uEDDzyABx98UJBgotFoIJfLkZCQIMhWXKPRIDAwEMnJyV06mKWHX8i9MpvNnFHjgw8+iGHDhvGiwEag28yEOKhkWRa3bt1CXV0dVCqVx9nzlStXsGbNGsybNw/r1q3j/X3rJsSgS1NfXw+DwYDExMR7/jvaVSI5OdlprPj6dQkyMgJw86bzvQ0MZLBmTTFmz27m6p0ka5FIJLhxQ4ItWwJx5ozrp31YGIuXX7Zh1So7XB12syyLxsZGlJeXIzIyErGxsYLUPYl3GCmf8AVxxiWHdOQLRbdjeduS1RmbzYaysjIYjUYolUreg4nD4eC824TouSUPvMrKSs7uh3QEdFWBjUCy5+joaMTExPDeZtbW1saNCHtamzebzdi5cycuXbqEQ4cOCX6gJTBi0KUhdtgqlcrl35OZ++rqasTGxiI6OtopC/viCz8sXSqFweB8X2NiHDh50oKJE1lO/Umv10On06G6Gjh+PBlnzoyAw3H3+yGVsli2zI6NG21wV2qm+2ETExN5aZmhIT5xpIbGd7AidUnyECOlCroli2R5AJxKE8Qm/l7Qp+6de0r5ggSrBx54ALGxsbxn5waDAcXFxQgNDUViYqLLBx6twNba2uqRAhvBZrOhpKQEVqsVKSkpvNf+yRBIY2OjV7Xn3NxcrF27Fk8//TTWrl3bV7Nbmv4fdIlpnycQPdIxY8Y4/ZzU58jpf1xcnNObz7LArl3+2Lbt7g/E1KkMjh2z3BUwW1ra5RYPHpTCbHb9PvzLv+ixZYsR48cHu/ySWSwWlJWVwWw2Q6FQ8C6MwjAMd4iSmJjoVijIV+i6J8msPPHvogMLCcR0431YWBh3HTL+Gh4eLsipPt1zq1Qqee+5pbNnXw6yaAW21tZWToGNvldtbW2oqKgQpLYNdAjgDBs2DHFxcR49kEwmE3bs2IHc3FwcOnQIKSkpvK6pBxGDLg1R1powYQL3M61Wyxkiujr9N5uB//gPKU6evDvb+vd/t2H3buf6rdEIHDzY7kmm1bq+/1OmMHj1VT1UqmYuy6O7AGQyGbRaLRobG5GQkHCXxmpXoUsVQmVutDBNUlJSl+qepN+T3CuilEUmlxISEhAZGcn7+DGtc8t3zy3Q0SZHykV8rZ+oijU3N6Ouro77bMnlci4Yd9ap9QWHw4Hy8nJOAMfTHVJ2djbWrVuHhQsXIisrqz9ktzT9P+gSeUdPsFgsuH79OtLT07lWKNKq5CqLbGxkMX9+AC5dcg64UimLPXtsWLaMdhcG/vu/pdi5U4r6etcfZqWy/ZDsX/+VQecYSrba1dXVaGhogFQqdcpYOmd4vkKCYVBQEJKSkngvVXgiTNMV6LrniBEjuLonmYDqXJrw5X7ROrdCHMQRcR2z2QyVSsV7mxx5YFRXV3OGmbQCW2trKwwGAzf84enoLo1Op0NxcbFXDwyTyYQ33ngD+fn5OHz4MJRKZVd/1d6IGHRpGIbB5cuXERERAa1WC4VC4eTaSmBZFiUlLObMGYTycucPU0QEi+PHLZgxg8yFtxtA/td/BaCiwvUH74EHHNi82YbMTAbuvr86nY6zFkpMTERgYKDTVpt8WYhCFAksnn5RbDYb108qZDAkwjRRUVGCbGM1Gg1kMpnLuictZEMyYm/ul7ueW75gWRYNDQ2oqKgQrPZsMBhQVFSEsLCw+7Zp0Qps5MF1P7t4hmE4LeCUlBSP+54vXbqE9evXY9GiRXjxxRd5PwTuRfT/oMuyLKxW633/HSn0l5aWYvTo0S77KokQc3Y2kJERhDt3nP9eoXDg888tSExk4XAAp061B9viYtdfYrmcxUsv2bBypR3ukhlvD7EYhuGCil6v5zRj6XFdWvWJHq0V6otOC9Pw3fUAdE3025NAHBISgqamJq96br2FSDuSXm++7xFdG1apVD4/VOn7RQIxAK6zpKmpCTExMZx4+f0wGo3Yvn07fvrpJxw+fBgKhcKndfUhxKDLsizq6+tRXl6OqKgo1NXV4eGHH3b57xiGwblzfnj22SAYjc73bvp0Bp98YoFcDvzv//pjx44AFBa6DrZBQSx+/3s7XnrJBncTx+0C5+1fkq4eYtlsNqdAbDQaERgYiICAAOj1egwbNsztiXhXoKe9hGjRIu9dZWUlr8GQzvBaWlrQ3NzMiccPGTKEt5on4DzxJUSbGdCx1Scj4HzX54kAjsFggEwmg8lkAnBvBTaWZbnsdsmSJVi5cmV/zm5pBnbQJW0+4eHh3GFOZ8seciDjcDhw+rQ/nn8+iHJ4aGfhQjvef9+Kr7/2x5tvug+2UimLJUvs2LDBjqgo17eQDiSenuh7C8mqbDYb5HI5jEYjzGYzJ0jdefLJW4QWpgE6as8hISFISkoSNDMkNX06I6ZdJ+jShDe/J9F78OZU3xsYhkFZWRlaW1u92up7A9GH7vzQ69zuRxTYCgsLUVVVhZs3b6K+vh4fffQRkpKSeF9XL6b/B12g/UlMQ/QIJBIJFAqF04fx0qVLmDx5MidoTkaIT5+WIjNzEBjG+Z6tWWODSuXA3r0B0Ghcf2n8/FgsWMBg0yYb4uPd3zqtVovS0lJOtESIbXhlZeVd/bBAh/sq6R8mI6jeauu2tLSgtLQUERERggjTEOdgnU7nNAXIJ5723NKHT2QHQZdyiONu50BMbKQMBoMgeg9AezAsLS1FTEyMT1OD94Mc9lksFo/7ehmGweeff44jR45wRrBmsxlHjx7F+PHjeV1fZ/bu3YsjR45AIpFg7NixOHr0KO+9yB4yMIIuURqzWCxc7U+pVLrcyuXk5GDcuHFcsJBIJPj+e3/8278NuivDjYlxwOEAamtdfyklEhYZGe3BVql0f8vIODHplOD7S0hnz+RL6ElWRbQASBAmik+kvYgWsBFamIY+ZPJ1/Ph+WCwWzr/N157b+wVim83G1c+FOEwkfcMMw0CpVAoSWIhimjdnAG1tbXjttddQUlKCw4cPc1OfpJ1TyLawmpoaTJ06FTdu3EBwcDDmz5+PJ598Es8//7xgr3kP+rcxJYFMPNXX1yMhIQEpKSluD8mCg4Px008/YfDgwZDL5WhrG4xFi0LuCrgAUF3tPtg+9RSDDRtsSE11H2zpzDMpKcllp0RXIaO7YWFhXrsrSCQShIS0u0101tal9WLNZjMYhuEyQ77bzMg0llAOFLSObld7bl3pxtpsNk4Qnow4E/1Yui+2KwGYfrCSvmS+sVqt0Gg0YFkWaWlpHr3PLMvihx9+wMaNG7FixQocOHDA6YHfXT24drsdJpMJAQEBMBqNGDlyZLe8rjf0q6B7/fp1yOVytwaV5JCMZVmoVCpum93c3Iz//M9BaG72bAvr789i3jwG69fb3Eotktcj7VPE3lmIw42ysjJu+8fXIRbpdZXJZAgMDIRWq0VMTAwiIiK4PmL6RDs8PBxyudyrHk8CEV5paWmBUqnkvY0N6OisGDx4MO/+cEDHe11bWwulUsk9WGnbc2JpExAQ4FTKcTey2xm684FP2yKahoYGlJeXexXQW1tbsWXLFpSXl+PUqVOIi4vjfV2eEB0djXXr1iE2NhbBwcGYOXMmZs6c2SNruRf9srzQGfqQDOgwu6OJiQlGS8u9P/jBwSwWLbIjK8uOuLh73xpS8xw8eDDi4+MFOQAiKmNCTKsBzhq6CoXC5RbWVSsWffAkl8vdZnf0eHBMTIwgwit0z61KpeK9swLokEb0tL5NB2K6y4SuEdOBmGVZVFVVoba21q0WbVchnQn+/v5QKpUefV5ZlsX333+PTZs24YUXXsCKFSt6zI0baP/OPfXUU/j0008xePBgzJs3DxkZGXjuued6YjkDo7zQ2bLHk2BLiI1l3QbdkSPtmD+/BU88cQtSqQ6Njf6wWuVcUKFVnkwmE0pKSgAAY8aMEaTmSVS6iNEh31mbO2EaVxBzR1orwG63cwGFaP3S2R1xfC0pKcGgQYMEKyXQOrd8W80DzgE9NTXV44AeGBiIoUOHOpWZiMmjXq9HXV0dJ2ITFBQErVaLIUOGID09nfdtOl2u8Maap7W1Fa+++ipu3bqF06dPe+XGLRT/+Mc/EB8fz/0Oc+fOxT//+c+eCrpu6VeZLlEa8ybYEi5c8MPChYO4wBsWxmLWLAYLFtjx6KMOpwky0g9LDp7IF8ThcMBqtSI5OVmQGX2h3SF8EabxFBJUtFotGhoaYDabIZPJMHToUC4Y8/X7GI1GpwEEvgM60OGQK1TXgMPhQGlpKZqamhAREQGLxQKTycSLrCPBbDajqKjIq0ENlmVx/vx5vPLKK1i1ahWWLVvWo9ktTXZ2NpYuXYrc3FwEBwfj+eefR3p6OlavXt0TyxkY3Qs2mw12u50TQPEk2NJotUBhoR/CwlikprJuBchpaK+0iIgI+Pv7Q6/Xc866tKaurxmp0DoGQEdAJ1oMQmSeJFCRgE5nd3q9HhaLBcHBwU71Tm/WIbTOLdC+DddoNAAApVLJ+2Ei0CG+5ErPgJYM1ev1Tvq6nbWb3eFKk8ET9Ho9Xn31VdTU1ODQoUOIjY3t8u/KN6+99ho+/fRTSKVSTJw4EUeOHBHkPfKAgRF0169fD5lMhvT0dKjVaoSFhfGegdA0Nzc79ao6y0B2nP7rdDq0traCZVmvDp1ohSuhdAzo0VqhAjpxWAgICEBycrLbLwFtY0P+62wL784EU2idW9rjSwhbIcC5rzclJcXj0hStr3u/QGwymXDjxg2vrHNYlsW3336LzZs3IysrC0uWLOk12W0vZmAEXY1Gg8uXLyM7Oxv5+fmwWq0YM2YM1Go1Jk2ahNGjR/NyoEWkIf38/DivNE8gwjWkLEEOnUgQpk+y7xXQ+YDurBBKZ4CMODc1NfmceXZ2I9br9U6WP8HBwaivr+f6VfnWuQU6XBDkcjkSExMFGWMlPbF8vBf0AAy9i2BZFjabjXuAe5IB6nQ6vPLKK7h9+zb++Mc/YtSoUT6va4AxMIJuZ8xmMwoKCnD58mXk5ubi559/RkhICNRqNdLT05Genu7VjDrZ5ut0OiQnJ/OyfaX1EnQ6HQwGA+x2O6RSKR588EFOtpBPhBamATqbZEneAAAUSUlEQVRqnkKYKZLR05s3b6KpqQmBgYGQSqVOo7q+yjnS0B5i3grseArdEytUucJgMHDZ7ZAhQ7ixXYvF4nYknGVZnDt3Dlu2bMHatWuRmZkpZrfeMTCDbmdYlkVzczNyc3O5QEz30JJgPGTIEKdMg9YYEGqbT2eFxPeMHtMlW2wiQO1L5iu0MA3Q3r2h0Wjg7+8PhUIhSBChe24TEhLg7+/PCZzTuwiiE+uLZgIZrx05ciRGjRrF+/tN7zSEEkenRXZcKY65MsO8evUqPv30Uy4rPnz4sJPYv4jHiEHXHeTwJTs7G9nZ2cjLy+OEQ9RqNTd7vnbtWsTFxQnSVH8/4RuWZWE0Gp3GdB0OB8LCwriyxL0yO3oSSyirFoZhOG+s+7WZ+Yq3PbdERYzcN3pUt3M5h9Ad47UmkwlFRUWcm4YQOw1ineONrTrLsjh79izefPNNTJ48GSEhIcjPz8fcuXPxwgsv8L5GV2i1WixfvhyFhYWQSCT46KOP8Ktf/apbXptnxKDrDTabDadPn8Zrr70GhmEgl8vhcDiQlpaGtLQ0pKenIzk5ucsBWK/Xo6SkxEmw3FNoYXOdTudUHyZBJTg4mBPXEUqYBmg3+iwrKxP0EIvuue1KzbNzOYc2dbTb7WhubkZSUpIg47W0Jbk7TZCu4nA4uB7rlJQUj0siLS0t2LhxI/R6PQ4ePNhj47OLFy/GtGnTsHz5clitVhiNRq/94noJYtD1li+++AKRkZGYMmUKWJZFa2sr8vLykJ2djZycHJSVlWHEiBFO9WFPM0ir1cppGfBpNEmGEnQ6HVpaWqDT6SCRSBAZGYlhw4Z1ScbRFWQQhKi4CZEVdkfPbUtLC4qLi+Hn5wepVAqr1epU65TL5V1+XWL9440lubfo9XoUFRV5pafLsizOnDmDbdu2YcOGDVi4cGGP1W51Oh0mTJiA8vJyQbuOugkx6PINsfsmZYmcnBw0NTUhOTmZa1lLS0u7y72BZDpC6c/S48GJiYkIDw/nttc6nY6TcaT7h72tDxP3jYaGBq/6PL19ja6443r6GiQrpDUfOtc6O8tfkrq6J2UBMt3X0tIi2GEcfeCXmprqsXpdc3MzNmzYAJPJhAMHDnBiRz1FQUEBVqxYgdTUVFy7dg1qtRr79u0TRBKzGxCDbnfAMAyKioqQnZ2N3Nxc5Ofng2EYjBs3DmFhYcjLy8PBgwe5wx++Idv8yMhIt5kOqQ/T/cMMwzj1D9+rPkwOmO71Gl1F6J5b+jU87a6g75sr52YSiOn3taWlBRqNBlFRUR7b2niLVqtFcXGxVwd+LMviq6++wuuvv45XXnkFzzzzTK/ILPPy8jBlyhRcvHgRkydPRlZWFsLDw/H666/39NJ8QQy6PQHLsigqKuLqU/Hx8dBoNJDL5VzvcHp6use6t+4gHQP3Eqa5F6QFi2TExPiSPnDy8/NDaWkpWJaFQqEQpB/WYrE4HWIJ8Ro2mw0lJSWwWq1QqVRdeg2Hw+HUQ0wGYEJCQmA2m8GyLEaPHi1IpkbcItra2rwapLhz5w7Wr18Pu92OAwcOCFK79pX6+npMmTIFlZWVAIAffvgBu3btwldffdWzC/MNMej2FOXl5aivr+esgYhgDV2WqKmpQVxcHFcbTktLg1wuv2/2QbeZ8d0xQNeH6+vrYTQaERoaytWG+dRKoKe9EhMTPRZd8fY1aB1aIUo7QHvgKCsr48oh3joRewLJ0r3RfWBZFqdPn8aOHTuwefNmPP30070iu+3MtGnTcOTIESiVSmzduhUGgwG7d+/u6WX5ghh0ezMOhwNlZWVcEL5y5QqMRiNGjx7NBeIxY8Zwh2AOhwO3b99GRUWFYP5qQMeXe8SIEYiLi7tL6MdisfhU56Rx1XPLN+QwTsgWLSKN6OfnB6VS6XTw5q1zszvsdjtKSkq8ss4B2stOL7/8MiQSCfbv3y9ITzBfFBQUcDvDhIQEHD16VJAuj25ADLp9DavVioKCAi4QFxYWIigoCHFxcSgqKsKyZcvw7LPPCtIxQFvy3Gub78rmh2EYyGQyJ5sfVw8EojPQ1tYmmM4tOfC7ffu2YIdx5ED11q1bXkkjunNupgMxrSDW1NSE0tJSr4ZzWJbFqVOnsGvXLvzhD3/AvHnzemV2208Rg25fh2EYZGVl4fz585gxYwaqqqo4Cca0tDRuoq4rFu4OhwNVVVWoq6vzeZtP6pw6nY7rH5ZIJE7BpLW1FZWVlYJN9wEdSl1C2ZED7Rl0UVERQkNDkZSU1GV9DKvV6vQAM5vNCAwMhNVqhb+/v1d9t7dv38bLL7+MgIAAvP/++4KUbETuiRh0+wPfffcdZsyYwQUQEiQvX76MnJwc5ObmQqvVQqlUcgd148eP98gOpqWlBSUlJZxNOJ/bfLK9bmpqQm1tLViWRWhoKOdPx2d92GazcaPOKpWKdxF5wHm8VqgMGmi3zikrK+NcQTxxbmZZFn/5y1/w1ltvYevWrZg7d66Y3fYMYtAdKNjtdvz888+ctkRBQQEkEgkmTJjADXIolUouqBqNRpSXl8Nms0GpVAoWpDr33NJZnU6n47R06f5hb2qv9NSaN+613kKsebwZr/UWq9WK4uJiSCSSu+rD7pybv/32WxgMBly7dg3Dhw/HBx98IIj8pIjHiEF3oMKyLNra2nDlyhWuf7ikpARDhgyBTCZDbW0tPvzwQyiVSkGClKc9t2QggZQl6Pow3T/sKgMnho2BgYGCTa3RAwh8GoDS+GqdwzAMDh06hL/+9a+Qy+XQarWwWq347LPPkJCQwPs677UO0gL55Zdfdtvr9lLEoCvSwY0bN7Bo0SIkJycjNjYW+fn5qK+vR1JSEleWmDhxImQymc+BmI+eW7o+TPpgJRIJJ/Qjk8lw584dNDQ0CGbYCHQ8OEiniBAPJ7PZjOLiYgQEBEChUHic5dfX12Pt2rUICwvDu+++6+RC7O/vL0g3iDv27NmDvLw86PV6MeiKQVeEpqmpCVqtFklJSdzPiFEkqQ9fvXoVVqsVY8eO5QJxamrqfYMBrWjmTbbmKcR9uKGhAXV1dZBIJAgJCcHgwYNdnvp3BT4HKdxBdz8oFAqPR6odDgc+++wz7N27F2+88QZ++9vf9mjttrq6GosXL8bmzZuxZ88eMeiKQdc1Z8+eRVZWFhiGwfLly7Fx48aeXlKvwmw24+rVq04i8DKZzEnkhy4ZNDc345dffhG055bIO5JWs9DQUM5rjWTEZrMZQUFBkMvlXI3Y1/qwUFKYQIfEY0hIiFfdD/X19cjKykJERAT27t0rWIbvDRkZGdi0aRNaW1vx9ttvi0FXDLp3wzAMFAoFzp07x4mYnzhxAqmpqT29tF4Ly7K4c+eOkwj8rVu3EBUVBZvNBrlcjrffflsQ6x+gvQ3ql19+ua+8Iy1YQwKx3W53MgrtrJNAINt8qVQKhUIhSH2YnsDzRuLR4XDg5MmTeO+997Bjxw785je/6RWdCV9++SW+/vprfPDBBzh//rwYdNsRg25nLl26hK1bt+Jvf/sbAGDnzp0AgE2bNvXksvocZ8+exUsvvYTp06dj0KBBuHLlCtra2pCamsplxOPGjetSS5jZbHZyo/AlEBKvNbp/mBiFkkCs1WpRXV3t1TbfWwwGA4qKihAeHu6V31pdXR2ysrIwfPhw7Nmzp1dNaW3atAnHjh2DVCrlHnZz587F8ePHe3ppPYkYdDvz+eef4+zZszhy5AgA4NixY8jOzsb+/ft7eGV9i5KSEgwdOtQpSFmtVly/fp3Tl7h+/ToCAgIwceJErj6clJTkkbJXVVUVamtrBZGQJPXhxsZGp/5huizBV32YZVlODtOVdY47HA4HPvnkE+zfvx87d+7Ek08+2SuyW3eImS6H2zeJX4vZAcrSpUvx5ZdfYsSIESgsLOzp5XQrCoXirp8FBgZCrVZDrVbj97//PViWhV6v50Tgt27dil9++QWRkZFO9WFahEan03GtbZMmTRKkPiyRSNDS0oLm5mZMmDABcrncSV+irq4OJpOJEzQngdjbTJu4CZPfxdPe3traWrz44ouIiorChQsX+qqDgkgnBmymy2d54cKFC5DJZMjMzBxwQddXWJZFTU0NsrOzufrwnTt3kJCQAJPJBJlMhj179nDTWHyj0+lQXFx83zFhYmdOD3LYbDan+nB4eLjLhwIZCmlqavJqhNfhcOD48eM4ePAg3nzzTcyaNatXZ7ciLhHLC52x2+1QKBT45ptvEB0djUmTJuGTTz7B6NGjfbpeZWUlZs+eLQbdLvDtt99i5cqVSE9PR1BQEAoKCsCyLMaNG8dlwyqVqksaB0SHlpiP+qJ1S+rDtBA8qQ+TjNjhcECj0WD48OFeaT9UV1fjxRdfxKhRo/D22297XIYQ6XWI5YXOSKVS7N+/H7NmzQLDMFi6dKnPAVeEH0aMGIFvvvmGM0Ukbg1XrlxBTk4Odu/eDY1GgyFDhnDli0mTJnmsKUtcL2JiYqBQKHzOHiUSCWQyGWQyGbdWYgGv1WpRWFgIk8mEkJAQWK1W3L5926XzMI3D4cCf/vQnHDp0CLt378Zjjz0mZrf9lAGb6fINH5luVVUVMjMz0dDQAIlEghUrViArK4vHVfZ9WJZFY2Ojkwh8bW0t4uPjnUTgw8PDuaBlsVhQWloKu90OlUoliBwm0GGdQ+x5iBA87Tw8aNAgriwREhKC0NBQVFVVYfXq1UhISMBbb72F8PBwQdYn0q2I5QWh4SPo1tXVoa6uDmlpaWhtbYVarcapU6fE3uH7QETgyTTdlStXYDabkZqaiqCgIGg0Ghw9elSw/mFvrHPo/uH33nsP33zzDdra2vDUU09h4cKFeOihhwSZfHOF+JAXFLG80BeIioriHFnDwsKQkpKCmpoaMejeB+INp1AokJmZCQCoqKhAZmYmGIZBfHw85s+fj6CgIKSlpXEZMR8qYbQugycli6CgIAQFBcFsNuPmzZt44oknsHz5cvz888/485//jKFDh2LMmDFdWpOnSKVSvPPOO04P+ccee0z8vAmMmOnywIIFC3D+/Hk0NTUhMjIS27Ztw7Jly7p0zcrKSkyfPh2FhYXidtMHbt26hbKyMjzyyCMA2ssSWq0WOTk5nNoasTsiQVitVmPo0KEeZcN2ux2lpaUwmUxISUnxODt1OBz48MMPcfToUbzzzjt45JFHek3t9ne/+x1WrVqFxx57rKeX0h8Qywt9iba2NsyYMQObN2/G3LlzfbqG2WzG9OnTYbFYYLfbkZGRgW3btvG80r4NESOnReB1Oh1UKtVdIvA0vljnAO0P0lWrViE1NRW7du0SRB7SV8SHPO+IQbevYLPZMHv2bMyaNQtr1671+TqkrUkmk8Fms2Hq1KnYt28fpkyZwuNq+x82m+0uEXg/Pz9MnDgRKpUK586dQ2ZmJmbNmuXxgRzDMPjwww/x8ccf491338WMGTN6TXYL8POQF7kLMej2BViWxeLFixEREYF3332Xt+sajUZMnToVBw8exOTJk3m77kCAiMC/99572L9/P8aNG4eamhqMGDGCm6abNGmSWyWyiooKrF69GmPHjsWOHTt86gsWEr4e8iJ3IR6k9QUuXryIY8eOYezYsZgwYQIAYMeOHXjyySd9uh7DMFCr1SgrK8PKlSvFgOsDpCfXz88PP/30E4YPHw6WZVFXV4ecnBxcvnwZhw8fxu3btzkR+PT0dIwfPx4nTpzAsWPHsG/fPkybNq1XZbdA+wNl2bJlSElJEQNuNyJmugMArVaLOXPm4P333/f5ZFy0Yrk3DMNAo9Fw/cNnz57FQw89hI8//lgQ3zk++PHHHzFt2jSMHTuW6+LoykNexAmxvDDQ2b59O0JCQrBu3Tqf/n/RisU7WJbtdZmtSLfi9s3n38pUpFfQ2NgIrVYLoN2h4Ny5c1CpVD5dq7q6Gl999RWWL1/O5xL7NWLAFXGHWNPtp9TV1WHx4sVgGAYOhwPz58/H7NmzfbrWmjVr8NZbb6G1tZXnVYqIDDzEoNtPGTduHK5evdrl6xCdYLVajfPnz3f5enFxcZxVjlQqRV5eXpevKSLSlxCDrsg9uXjxIk6fPo2vv/6a0w147rnnumTF8t1332HYsGE8rlJEpO8g1nRF7snOnTtRXV2NyspKnDx5Eo888shA977qcc6ePQulUomkpCTs2rWrp5cj4iVi0BXpViQSCWbOnAm1Wo3Dhw/39HL6HAzDYOXKlThz5gxu3LiBEydO4MaNGz29LBEvEIOuiMf8+te/7nK72I8//oj8/HycOXMGBw4cwIULF3y+llarRUZGBlQqFVJSUnDp0qUura0vkJOTg6SkJCQkJCAwMBDPPPMMvvjii55elogXiEFXpFuJjo4G0O4SMWfOHOTk5Ph8raysLDz++OMoLi7GtWvXkJKSwtcyey01NTUYNWoU9+eYmBjU1NT04IpEvEUMuiLdhsFg4NrODAYD/v73v/s8IafT6XDhwgVOQjMwMFB0yxXpE4jdCyLdRkNDA+bMmQOgXY924cKFePzxx326VkVFBYYPH44lS5bg2rVrUKvV2LdvX68TlOGb6OhoVFVVcX+urq7mdg8ifQNxDFikT5KXl4cpU6bg4sWLmDx5MrKyshAeHo7XX3/dp+tpNBo8/fTT3J/Ly8uxfft2rFmzhq8l8wLfLtYigiGqjIn0L2JiYhATE8Mpp2VkZHSpfUqpVKKgoABAe4dAdHQ0l5X3JkQX677P/TJdEZFei0Qi+QHAcpZlNRKJZCuAUJZl1/Nw3ZkAXmNZ9uGuXktEpDNipivSl1kN4H8kEkkggHIAS3i67jMATvB0LRERJ8RMV0SE4v8DeC2A0SzLNvT0ekT6H2LLmIiIM08AyBcDrohQiEFXRMSZBRBLCyICIpYXRET+H4lEEgrgFoAElmV1Pb0ekf6JGHRFREREupH/A/0PUox4GMzOAAAAAElFTkSuQmCC)
%% Cell type:markdown id: tags:
To impose constraints on the derivatives, we can activate the appropriate constraint flags as follows.
Note that derivatives constraints on velocities will only be considered if the constraints on position are also active.
For instance to impose a 0 velocity and acceleration at the initial and goal states we can proceed as follows:
%% Cell type:code id: tags:
``` python
#values are 0 by default, so if the constraint is zero this can be skipped
pD.init_vel = array([[0., 0., 0.]]).T
pD.init_acc = array([[0., 0., 0.]]).T
pD.end_vel = array([[0., 0., 0.]]).T
pD.end_acc = array([[0., 0., 0.]]).T
pD.flag = constraint_flag.END_POS | constraint_flag.INIT_POS | constraint_flag.INIT_VEL | constraint_flag.END_VEL | constraint_flag.INIT_ACC | constraint_flag.END_ACC
```
%% Cell type:markdown id: tags:
However, the definition of the variable problem will result in an error. Do you know why ?
%% Cell type:code id: tags:
``` python
try:
prob = setup_control_points(pD)
except RuntimeError as e:
print (e)