From 9e193cb697130102162177a47e618284e443c779 Mon Sep 17 00:00:00 2001 From: Sanjay Rijal <37138338+zovelsanj@users.noreply.github.com> Date: Fri, 2 Dec 2022 17:10:44 +0545 Subject: [PATCH 01/11] made compatible with Opencv4 --- src/BenchmarkDatasetReader.h | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/BenchmarkDatasetReader.h b/src/BenchmarkDatasetReader.h index 6dafdc1..67e9ab3 100755 --- a/src/BenchmarkDatasetReader.h +++ b/src/BenchmarkDatasetReader.h @@ -249,7 +249,7 @@ class DatasetReader if(!isZipped) { // CHANGE FOR ZIP FILE - return cv::imread(files[id],CV_LOAD_IMAGE_GRAYSCALE); + return cv::imread(files[id],cv::IMREAD_GRAYSCALE); } else { @@ -271,7 +271,7 @@ class DatasetReader exit(1); } } - return cv::imdecode(cv::Mat(readbytes,1,CV_8U, databuffer), CV_LOAD_IMAGE_GRAYSCALE); + return cv::imdecode(cv::Mat(readbytes,1,CV_8U, databuffer),cv::IMREAD_GRAYSCALE); } } @@ -343,4 +343,3 @@ class DatasetReader float* internalTempBuffer; }; - From eacb9e700d54e9db958e0d84bc232dc45cff6841 Mon Sep 17 00:00:00 2001 From: Sanjay Rijal <37138338+zovelsanj@users.noreply.github.com> Date: Fri, 2 Dec 2022 17:12:12 +0545 Subject: [PATCH 02/11] made compatible with Opencv4 --- src/main_vignetteCalib.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main_vignetteCalib.cpp b/src/main_vignetteCalib.cpp index 249e2f2..435bff2 100755 --- a/src/main_vignetteCalib.cpp +++ b/src/main_vignetteCalib.cpp @@ -321,7 +321,7 @@ int main( int argc, char** argv ) int v_dT = plane2imgY[idxT]+0.5; if(u_dS>=0 && v_dS >=0 && u_dS=0 && v_dT >=0 && u_dT=0 && v_dS >=0 && u_dS=0 && v_dT >=0 && u_dT Date: Fri, 2 Dec 2022 17:15:12 +0545 Subject: [PATCH 03/11] made compatible with openv4 --- src/PhotometricUndistorter.cpp | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/PhotometricUndistorter.cpp b/src/PhotometricUndistorter.cpp index 969b9da..01a44b6 100755 --- a/src/PhotometricUndistorter.cpp +++ b/src/PhotometricUndistorter.cpp @@ -117,7 +117,7 @@ PhotometricUndistorter::PhotometricUndistorter( printf("Reading Vignette Image from %s\n",vignetteImage.c_str()); - cv::Mat vignetteMat = cv::imread(vignetteImage.c_str(), CV_LOAD_IMAGE_UNCHANGED); + cv::Mat vignetteMat = cv::imread(vignetteImage.c_str(), cv::IMREAD_UNCHANGED); vignetteMap = new float[w*h]; vignetteMapInv = new float[w*h]; if(vignetteMat.rows != h || vignetteMat.cols != w) @@ -210,6 +210,3 @@ void PhotometricUndistorter::unMapImage( for(int i=0;i Date: Wed, 21 Dec 2022 16:14:18 +0545 Subject: [PATCH 04/11] modified for compatibility with aruco-3.1.12 --- src/main_vignetteCalib.cpp | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/main_vignetteCalib.cpp b/src/main_vignetteCalib.cpp index 435bff2..6ab3a97 100755 --- a/src/main_vignetteCalib.cpp +++ b/src/main_vignetteCalib.cpp @@ -40,11 +40,14 @@ #include "BenchmarkDatasetReader.h" #include "Eigen/Core" #include "Eigen/LU" +#include "opencv2/core/eigen.hpp" #include #include #include #include +#include +#include // reads interpolated element from a uchar* array @@ -187,7 +190,6 @@ int main( int argc, char** argv ) { for(int i=2; igetUndistorter()->getK_rect(); w_out = reader->getUndistorter()->getOutputDims()[0]; h_out = reader->getUndistorter()->getOutputDims()[1]; aruco::MarkerDetector MDetector; + std::string path = argv[1]; + UndistorterFOV* undistorter = new UndistorterFOV((path+"camera.txt").c_str()); + // Eigen::Matrix3f Krect = undistorter->getK_rect(); + // float Omega = undistorter->getOmega(); + + cv::Mat camMatrix; + cv::Mat_ distCoeff(4, 1); + cv::eigen2cv(undistorter->getK_rect(), camMatrix); + distCoeff<< undistorter->getOmega(), 0, 0, 0; std::vector images; std::vector p2imgX; @@ -236,7 +246,7 @@ int main( int argc, char** argv ) cv::Mat(h_out, w_out, CV_32F, img->image).convertTo(InImage, CV_8U, 1, 0); delete img; - MDetector.detect(InImage,Markers); + MDetector.detect(InImage,Markers, camMatrix, distCoeff); if(Markers.size() != 1) continue; std::vector ptsP; From dcfdcf0e015a44818bdca1a1520ce531d9e958d8 Mon Sep 17 00:00:00 2001 From: Sanjay Rijal <37138338+zovelsanj@users.noreply.github.com> Date: Wed, 21 Dec 2022 16:21:49 +0545 Subject: [PATCH 05/11] modified src/markerdetecter.cpp for vignette calibration --- thirdparty/aruco-3.1.12/CMakeLists.txt | 45 + thirdparty/aruco-3.1.12/ChangeLog | 227 +++ thirdparty/aruco-3.1.12/LICENSE | 8 + thirdparty/aruco-3.1.12/License-gpl.txt | 674 +++++++ thirdparty/aruco-3.1.12/README | 3 + thirdparty/aruco-3.1.12/src/CMakeLists.txt | 60 + thirdparty/aruco-3.1.12/src/aruco.h | 39 + .../aruco-3.1.12/src/aruco_cvversioning.h | 18 + thirdparty/aruco-3.1.12/src/aruco_export.h | 46 + .../aruco-3.1.12/src/cameraparameters.cpp | 610 ++++++ .../aruco-3.1.12/src/cameraparameters.h | 150 ++ .../aruco-3.1.12/src/cvdrawingutils.cpp | 174 ++ thirdparty/aruco-3.1.12/src/cvdrawingutils.h | 55 + thirdparty/aruco-3.1.12/src/dcf/dcf_utils.cpp | 442 +++++ thirdparty/aruco-3.1.12/src/dcf/dcf_utils.h | 29 + .../src/dcf/dcfmarkermaptracker.cpp | 542 ++++++ .../src/dcf/dcfmarkermaptracker.h | 36 + .../aruco-3.1.12/src/dcf/dcfmarkertracker.cpp | 148 ++ .../aruco-3.1.12/src/dcf/dcfmarkertracker.h | 38 + .../aruco-3.1.12/src/dcf/trackerimpl.cpp | 594 ++++++ thirdparty/aruco-3.1.12/src/dcf/trackerimpl.h | 93 + thirdparty/aruco-3.1.12/src/debug.cpp | 67 + thirdparty/aruco-3.1.12/src/debug.h | 113 ++ thirdparty/aruco-3.1.12/src/dictionary.cpp | 546 ++++++ thirdparty/aruco-3.1.12/src/dictionary.h | 201 ++ .../aruco-3.1.12/src/dictionary_based.cpp | 290 +++ .../aruco-3.1.12/src/dictionary_based.h | 73 + .../aruco-3.1.12/src/fractaldetector.cpp | 156 ++ thirdparty/aruco-3.1.12/src/fractaldetector.h | 112 ++ .../src/fractallabelers/fractallabeler.cpp | 138 ++ .../src/fractallabelers/fractallabeler.h | 50 + .../src/fractallabelers/fractalmarker.cpp | 76 + .../src/fractallabelers/fractalmarker.h | 64 + .../src/fractallabelers/fractalmarkerset.cpp | 828 ++++++++ .../src/fractallabelers/fractalmarkerset.h | 140 ++ .../fractallabelers/fractalposetracker.cpp | 960 ++++++++++ .../src/fractallabelers/fractalposetracker.h | 115 ++ thirdparty/aruco-3.1.12/src/ippe.cpp | 1200 ++++++++++++ thirdparty/aruco-3.1.12/src/ippe.h | 278 +++ thirdparty/aruco-3.1.12/src/levmarq.h | 331 ++++ thirdparty/aruco-3.1.12/src/marker.cpp | 498 +++++ thirdparty/aruco-3.1.12/src/marker.h | 192 ++ .../aruco-3.1.12/src/markerdetector.cpp | 435 +++++ thirdparty/aruco-3.1.12/src/markerdetector.h | 417 +++++ .../aruco-3.1.12/src/markerdetector_impl.cpp | 1659 +++++++++++++++++ .../aruco-3.1.12/src/markerdetector_impl.h | 465 +++++ thirdparty/aruco-3.1.12/src/markerlabeler.cpp | 47 + thirdparty/aruco-3.1.12/src/markerlabeler.h | 107 ++ thirdparty/aruco-3.1.12/src/markermap.cpp | 468 +++++ thirdparty/aruco-3.1.12/src/markermap.h | 211 +++ thirdparty/aruco-3.1.12/src/picoflann.h | 647 +++++++ thirdparty/aruco-3.1.12/src/posetracker.cpp | 553 ++++++ thirdparty/aruco-3.1.12/src/posetracker.h | 163 ++ thirdparty/aruco-3.1.12/src/timers.h | 209 +++ 54 files changed, 15840 insertions(+) create mode 100644 thirdparty/aruco-3.1.12/CMakeLists.txt create mode 100644 thirdparty/aruco-3.1.12/ChangeLog create mode 100644 thirdparty/aruco-3.1.12/LICENSE create mode 100644 thirdparty/aruco-3.1.12/License-gpl.txt create mode 100644 thirdparty/aruco-3.1.12/README create mode 100644 thirdparty/aruco-3.1.12/src/CMakeLists.txt create mode 100644 thirdparty/aruco-3.1.12/src/aruco.h create mode 100644 thirdparty/aruco-3.1.12/src/aruco_cvversioning.h create mode 100644 thirdparty/aruco-3.1.12/src/aruco_export.h create mode 100644 thirdparty/aruco-3.1.12/src/cameraparameters.cpp create mode 100644 thirdparty/aruco-3.1.12/src/cameraparameters.h create mode 100644 thirdparty/aruco-3.1.12/src/cvdrawingutils.cpp create mode 100644 thirdparty/aruco-3.1.12/src/cvdrawingutils.h create mode 100644 thirdparty/aruco-3.1.12/src/dcf/dcf_utils.cpp create mode 100644 thirdparty/aruco-3.1.12/src/dcf/dcf_utils.h create mode 100644 thirdparty/aruco-3.1.12/src/dcf/dcfmarkermaptracker.cpp create mode 100644 thirdparty/aruco-3.1.12/src/dcf/dcfmarkermaptracker.h create mode 100644 thirdparty/aruco-3.1.12/src/dcf/dcfmarkertracker.cpp create mode 100644 thirdparty/aruco-3.1.12/src/dcf/dcfmarkertracker.h create mode 100644 thirdparty/aruco-3.1.12/src/dcf/trackerimpl.cpp create mode 100644 thirdparty/aruco-3.1.12/src/dcf/trackerimpl.h create mode 100644 thirdparty/aruco-3.1.12/src/debug.cpp create mode 100644 thirdparty/aruco-3.1.12/src/debug.h create mode 100644 thirdparty/aruco-3.1.12/src/dictionary.cpp create mode 100644 thirdparty/aruco-3.1.12/src/dictionary.h create mode 100644 thirdparty/aruco-3.1.12/src/dictionary_based.cpp create mode 100644 thirdparty/aruco-3.1.12/src/dictionary_based.h create mode 100644 thirdparty/aruco-3.1.12/src/fractaldetector.cpp create mode 100644 thirdparty/aruco-3.1.12/src/fractaldetector.h create mode 100644 thirdparty/aruco-3.1.12/src/fractallabelers/fractallabeler.cpp create mode 100644 thirdparty/aruco-3.1.12/src/fractallabelers/fractallabeler.h create mode 100644 thirdparty/aruco-3.1.12/src/fractallabelers/fractalmarker.cpp create mode 100644 thirdparty/aruco-3.1.12/src/fractallabelers/fractalmarker.h create mode 100644 thirdparty/aruco-3.1.12/src/fractallabelers/fractalmarkerset.cpp create mode 100644 thirdparty/aruco-3.1.12/src/fractallabelers/fractalmarkerset.h create mode 100644 thirdparty/aruco-3.1.12/src/fractallabelers/fractalposetracker.cpp create mode 100644 thirdparty/aruco-3.1.12/src/fractallabelers/fractalposetracker.h create mode 100644 thirdparty/aruco-3.1.12/src/ippe.cpp create mode 100644 thirdparty/aruco-3.1.12/src/ippe.h create mode 100644 thirdparty/aruco-3.1.12/src/levmarq.h create mode 100644 thirdparty/aruco-3.1.12/src/marker.cpp create mode 100644 thirdparty/aruco-3.1.12/src/marker.h create mode 100644 thirdparty/aruco-3.1.12/src/markerdetector.cpp create mode 100644 thirdparty/aruco-3.1.12/src/markerdetector.h create mode 100644 thirdparty/aruco-3.1.12/src/markerdetector_impl.cpp create mode 100644 thirdparty/aruco-3.1.12/src/markerdetector_impl.h create mode 100644 thirdparty/aruco-3.1.12/src/markerlabeler.cpp create mode 100644 thirdparty/aruco-3.1.12/src/markerlabeler.h create mode 100644 thirdparty/aruco-3.1.12/src/markermap.cpp create mode 100644 thirdparty/aruco-3.1.12/src/markermap.h create mode 100644 thirdparty/aruco-3.1.12/src/picoflann.h create mode 100644 thirdparty/aruco-3.1.12/src/posetracker.cpp create mode 100644 thirdparty/aruco-3.1.12/src/posetracker.h create mode 100644 thirdparty/aruco-3.1.12/src/timers.h diff --git a/thirdparty/aruco-3.1.12/CMakeLists.txt b/thirdparty/aruco-3.1.12/CMakeLists.txt new file mode 100644 index 0000000..c25aabf --- /dev/null +++ b/thirdparty/aruco-3.1.12/CMakeLists.txt @@ -0,0 +1,45 @@ +# ---------------------------------------------------------------------------- +# Basic Configuration +# ---------------------------------------------------------------------------- +cmake_minimum_required(VERSION 3.0) +project(aruco VERSION "3.1.12" LANGUAGES CXX) +set(PROJECT_SOVERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}") +set(CMAKE_INCLUDE_CURRENT_DIR ON) +set(CMAKE_CXX_STANDARD 11) # C++11... +set(CMAKE_CXX_STANDARD_REQUIRED ON) #...is required... +set(CMAKE_CXX_EXTENSIONS ON) #...with compiler extensions like gnu++11 + +include(cmake/options.cmake) + +include(cmake/findDependencies.cmake) +include(cmake/compilerOptions.cmake) + + + +add_subdirectory(src) + +if(GL_FOUND AND BUILD_GLSAMPLES) + add_subdirectory(utils_gl) +endif() +if(BUILD_TESTS) + add_subdirectory(tests) +endif() + + +if(BUILD_UTILS) + add_subdirectory(utils) + add_subdirectory(utils_markermap) + add_subdirectory(utils_calibration) + add_subdirectory(utils_dcf) + IF(BUILD_SVM) + ADD_SUBDIRECTORY(utils_svm) + ENDIF() + ADD_SUBDIRECTORY(utils_fractal) +endif() +include(cmake/printInfo.cmake) +include(cmake/installOptions.cmake) + +# Package Generator ####################################################### +IF(BUILD_DEBPACKAGE) +include(cmake/cpack.cmake) +ENDIF() diff --git a/thirdparty/aruco-3.1.12/ChangeLog b/thirdparty/aruco-3.1.12/ChangeLog new file mode 100644 index 0000000..0df2877 --- /dev/null +++ b/thirdparty/aruco-3.1.12/ChangeLog @@ -0,0 +1,227 @@ +Version 3.1.12 +- Added DCF tracking (see https://www.uco.es/investiga/grupos/ava/node/69) +Version 3.1.11 +- Added -latomic linking in arm6,7 (mainly for raspbian, because opencv is not adding it) +- Removed highgui headers in core library +Version 3.1.10 +- Solved unitialized variable in fractalposetracker.cpp +Version 3.1.9 +- Solved windows compiling issues and some bugs +Version 3.1.8 +- Solved bug in Fractal Marker +Version 3.1.7 +- Solved bug in Fractal Marker +Verion 3.1.6 +- Adapted to compile in OpenCv4.1.1 +Version 3.1.5 +- IPPE now in latest version. Corrected problems with data types +Version 3.1.4 +- Bug in solvePnp corrected. It seems that OpenCv solvePnp still unreliable. Use our own exclusively +Version 3.1.3 +- Bug in IPPE corrected. Back to old version +Version 3.1.2 +- Windows compilation problems corrected +Version 3.1.1 +- Fractal markers finally integrated +Version 3.1.0 +- Updated to work with OpenCv 4.x +- Fractal markers added (optional and not public yet) +Version 3.0.13 +- Change in the License. +- Removed CV_AA to avoid compilation problems in some OpenCV versions +- Removed cv::Mat()=0 to allow compilation with opencv 2.4x +Version 3.0.12 +- Corrected bug in utils_calibration/dirreader.h. +- Added cpack to generate debian package +Version 3.0.11 +- Conditional addition of levmarq file. Only required in OpenCv < 3.0 +Version 3.0.10 +- Corrected bug in utils/aruco_test so that custom dictionaries can be employed + +Version 3.0.9 + - Addded old style opencv2/xx/xx.hpp headers to compile with 2.4.9 which is default in 16.04 +Version 3.0.8 + - Changed CameraParameters::operator<< to output xml files + - Corrected bug in arucoConfig.cmake in windows systems that ffected to integration of aruco in other projects + +Version 3.0.7 + - properly adapted to compile in Android + - arucoConfig file is now saved in aruco/arucoConfig.cmake + - Added control of big jumps in MarkerMapPoseTracker. Allows to set a maximum difference with previous position to avoid errors +Version 3.0.6 + - Added serialization for MarkerDetector. You can use load/write functions. Allows to save configuration and load it in your app. + Use aruco_test to set the best configuration and press 'f' on the app to save the file. Use the file in your apps + - Modified aruco_test to allow saving the configuration file. + - Added support for enclosed corners calling MarkerDetector::getParameters().detectEnclosedMarkers(true); + This is yet experimental. + - Added multiples modes of corner refinement (subpixel, lines and none). See MarkerDetector::Params::setCornerRefinementMethod + - Improvement in aruco_test application to have more control over the params. Also, allows to save the configuration to file pressing 'f' +Version 3.0.5 + - Moved all parameters used in MarkerDetector to MarkerDetector::Params so as to allow serialization + - Initial support for enclosed markers + - Automatic estimation of the adaptive threshold window size as a function of the image dimensions + - Corrected bug in MarkerMapPoseTracker::setParams with the maps expressed in pixels +Version 3.0.4 + - Set ALL_DICTS as default behaviour internally in MarkerDetector + - Corrected bug in some linux machines with reading directory + - Corrected problem with cmake file including the aruco header + - Added auto_orient in aruco_calibration_from_images for automatically rotating images taken from cameras if required + - Corrected bug in calibration. Ensure camera matrix and distortion coeffs are floats + - Enabled minMarkerSize in DM_NORMAL mode +Version 3.0.3 + - Changed all opencv2 includes to new style + - Corrected compilation error in Opencv 2.4 ( in svnmarkers.cpp related to CV_VERSION_EPOCH) +Version 3.0.2 + - added #include in many files to avoid compilation errors in some old systems + +Version 3.0.1 + - aruco_calibration_fromimage chaged so that it now read files from a dicectory +Version 3.0.0 + - Removed all funcions marked as deprecated in version 2.x.x + - Removed refinement methods, only subpixel is now available via MarkerDetector::Params::_doSubPixCornerRefinement + - MarkerDetector::Params::_maxSize removed + - MarkerDetector::Params::_doErosion added for enclosed markers + - MarkerDetector::Params::_thresMethod removed, always will use adaptive threshold + +Version 2.0.20 (Luis Diaz Collaboration) + - clang + - cmake improved + - many bugs corrected + - improved detection of enclosed markers + - improved aruco_test app with more options to debug possible misdetections +Version 2.0.19 + - corrected bug in utils/aruco_print_marker.cpp +Version 2.0.18 + - added support for custom dictionaries + - added ChiliTags dictionary + - utils/aruco_print_marker added option to print a marker with enclosed squareg to allow subpixel refinement +Version 2.0.17 + - Bug in hamming distances corrected + - Bug in dictionary.cpp with the creation of +Version 2.0.16 + - corrected bug in MSVC compilation due to linking problems + +Version 2.0.15 + - corrected bug in MarkerDetector::detectRectangles. The check isContourConvex was removed at some point and has now been set again +Version 2.0.14 + - corrected bug in dictionary.cpp with ARUCO_MIP_25h7 +Version 2.0.13 + - corrected bug in MSVC +Version 2.0.12 + - bug corrected in CameraParameters::resize + +Version 2.0.11 + - improved marker::draw to cope better with large images + - possible bug in rectangle detection found. +Version 2.0.10 + - bug corrected in aruco_print_dictionary + - bug corrected in markermap ( if ( it!=m_meters.end()) ) + +Version 2.0.9 + - bug corrected in MarkerPoseTracker relative to the refence system. The reference system of the markers computed using the Marker::calculateExtrinsics was different from the ne of MarkerPoseTracker. Now, the one + from MarkerPoseTRacker is the wining, since it is the same as the twin library markermapper. + Be careful since there might be a incompatiblilty issue in the reference system with preios data. +Version 2.0.8 + - bugs corrected in Marker::toStream and Marker::fromStream + - proposed solution to the ambiguity problem in MarkerPoseTracker. See posetracker.h for details +Version 2.0.7 + - removed from levmarq.h and included "ar_omp.h" instead + - M_PI substituted by 3.1415.... + - added MarkerMap::calculateExtrinsics + - Conditional use of eigen3. It is only used if compiled against opencv2. In Opencv3 solvePnp works properly +Version 2.0.6 + - Many warnings removed +Version 2.0.5 + - Corrected bug in MarkerMapPoseTracker + +VERSION 2.0.4 + - C++11 code + - Markers ids are 64 bits (8x8) + - Predefined set of dictionaries. It includes ARUCO, ARUCOHRM, AprilTags, ArToolKit and ARTAG + - Added marker tracker. Avoids the problem of ambuguity? Hopefully + - Chromatic mask removed from libary. + - Removed Board and BoardDetector. This concepts are now expanded to the idea of MarkerMap and managed in classes MarkerInfo, MarkerMap and MarkerSetPoseTracker. + see utils_markerset for more examples. + This is to allow compatibility with the twin libary aruco_markermapper +VERSION 1.3.1 + - Added MarkerDetector::Param class to encapsulate all of them. + - Added calibration tool in utils/aruco_calibrate that uses aruco chessboards + - removed MarkerDetector::setDesiredSpeed and MarkerDetector::getDesiredSpeed + - removed HARRIS corner method from markerdetector and locked corners stuff + - Add SVMMarkers class to detect markers with generic patterns using a trained SVM model. + - Code refactoring to encapsulate the detectors into classes. Added the class MarkerLabeler and its factory creator + - in aruco_create_board, random seed is now manually set if, or 0 if not. This creates by default always the same board +VERSION 1.3 + - Compatibility with OpenCV 3 + - In Marker Detector: + - Paralelization using OpenMP + - Marked as deprecated enableErosion and pyrDown + - Added functionality for markers with "locked corners". We refer to marker whose corners are connected + either to another marker (formaing a chessboard pattern), or to another black square. In this mode, + the use of subcorner refinement methods is expected to be more precise. See enableLockedCornersMethod() + - Added funcionality to search for the first threshold parameter simultaneously in several + values. The process is parallelized in multiple threads. See setMultiThresholdSearch() + - In HRM markers: + - Speed up marker identification process + - Improve performance of dictionary generation process. + - Added LICENSE file + +VERSION 1.2.5 + - New type of markers: highly reliable markers (hrm) including utils to use them + - Added chromaticmask class to create occlusion mask based on chromatic boards + - Added watermark with the id to the markers to allow easy identification of printed markers + - Now, by default, setYPerpendicular=false. So, Z is now pointing out of the board. + - Added a reprjection test in boardetector see BoardDetector::set_repj_err_thres() and BoardDetector::get_repj_err_thres () + - Added support for 5 distortion parameters in CameraParameters class + - Removed experimental code for removing the deformation that occurs when a marker is in a cylinder + - Omp support in linux (in markerdetector) + - Added an static function in BoardDetector::detect to do everything in a single line. + - New BoardConfiguration constructor receving a path with the configuration to be read. + - Revised opencv #includes to include just the necessary modules + - Added aruco_calibration.cpp to perform camera calibration using aruco boards + - Changes in LINES refinement to perform undistortion automatically + - Method setYPerperdicular in BoardDetector changed to setYPerpendicular (spelling error) + - Added getWarpSize() and setWarpSize methods in MarkerDetector to allow changing the canonical image size + - Bug fixed in aruco_create_board + +VERSION 1.2.4 + - Bugs fixed for MSVC2010 + +VERSION 1.2.3 + - Changes in boardconfiguration and boardetector to allow arbitrary located markers. No API changes involved, except for the config files that have changed their format. + - Changes in arucofidmarkers to allow the creation of chessboard like boards (FiducidalMarkers::createBoardImage_ChessBoard). + Added the corresponding change in aruco_create_board to support such feature + - Added experimental code for removing the deformation that occurs when a marker is in a cylinder + - Added the corner refinement method LINES. It is based on intersecting the lines of the marker's sides using the contour points. + We believe this is the best refinement method of the library so far. + - Added functionality in aruco::BoarDetector to perform the whole detection process in it if desired + - Changed aruco_test_board to use the new functionality described above + - Changed old way of obtaining extrinsics FindExtrinsicParam2 for the new one solvePnp in BoardDetector and in Marker + +VERSION 1.1.0 + - Ogre integration ( Board::OgreGetPoseParameters and Marker::OgreGetPoseParameters). + - Changes to make it compile with MSVC 2010 + - Remove getopt.h dependency. Command line are simpler now + - MarkerDetector: Externalization of the marker detector to allow using user-defined markers. The function setMakerDetectorFunction allows to define this function + - Added class FiducidalMarkers to detect the original aruco markers + - MarkerDetector: function glGetProjectionMatrix is moved to the CameraParameters class. Sorry, but it is more logical. + - MarkerDetector: Clear separation between the detection phases into separated functions that can be externally called (thresHold and detectRectangles) for more sohpisticated user needs + - MarkerDetector: new corner refinement method based on harris detector. Also, added the possibility of not refining corners at all. + - Added an option to work on a reduced version of the images (pyrDown). + - Changes the adaptive threshold method. Now we employ the MEAN. As a consequence, the process is faster and do not depen on the window size. + - Initial tests with android + - Bugs fixed + +VERSION 1.0.0 + - New names for the main classes Marker,MarkerDector... etc. Sorry, but I needed to clear up things. It wont be difficult to adapt. + - A new class for the camera parameters. It can be readed from the calibration.cpp application in OpenCv2.2 + - Refactorization of code to make it more maintainable + - Better support for Windows (Cmake) and OpenGL + - Improved documentation. Windows users should read the README file that explains how to build the library + - A new class for drawing markers and boards in opencv images + - A couple of new very simple examples to teach the use of the library(aruco_simple and aruco_simple_board) + +VERSION 0.9.5 + Added support for Boards + Added cmake support + Bugs fixed diff --git a/thirdparty/aruco-3.1.12/LICENSE b/thirdparty/aruco-3.1.12/LICENSE new file mode 100644 index 0000000..ff5c1fc --- /dev/null +++ b/thirdparty/aruco-3.1.12/LICENSE @@ -0,0 +1,8 @@ +ArUco is released under a GPLv3 license (see License-gpl.txt). + +If you use ArUco in an academic work, please cite the most relevant publication associated by visiting: +https://www.uco.es/investiga/grupos/ava/node/26 + + + + diff --git a/thirdparty/aruco-3.1.12/License-gpl.txt b/thirdparty/aruco-3.1.12/License-gpl.txt new file mode 100644 index 0000000..94a9ed0 --- /dev/null +++ b/thirdparty/aruco-3.1.12/License-gpl.txt @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/thirdparty/aruco-3.1.12/README b/thirdparty/aruco-3.1.12/README new file mode 100644 index 0000000..ac8eed2 --- /dev/null +++ b/thirdparty/aruco-3.1.12/README @@ -0,0 +1,3 @@ +fsdafsdsadda +For full info about the library please go to +https://www.uco.es/investiga/grupos/ava/node/26 diff --git a/thirdparty/aruco-3.1.12/src/CMakeLists.txt b/thirdparty/aruco-3.1.12/src/CMakeLists.txt new file mode 100644 index 0000000..dd1272a --- /dev/null +++ b/thirdparty/aruco-3.1.12/src/CMakeLists.txt @@ -0,0 +1,60 @@ +SET (LIBNAME ${EXTRALIBNAME}aruco) +include_directories(.) + + +SET(sources + cameraparameters.cpp debug.cpp dictionary.cpp ippe.cpp markerdetector.cpp markerlabeler.cpp posetracker.cpp + cvdrawingutils.cpp dictionary_based.cpp marker.cpp markerdetector_impl.cpp markermap.cpp fractaldetector.cpp + ) +SET(headers + aruco_cvversioning.h cameraparameters.h dictionary_based.h ippe.h markerdetector_impl.h markermap.h timers.h + aruco_export.h cvdrawingutils.h dictionary.h levmarq.h marker.h picoflann.h + aruco.h debug.h markerdetector.h markerlabeler.h posetracker.h fractaldetector.h + ) + set(fractal_sources + fractallabelers/fractalposetracker.cpp + fractallabelers/fractalmarkerset.cpp + fractallabelers/fractalmarker.cpp + fractallabelers/fractallabeler.cpp + ) +set(fractal_headers + fractallabelers/fractalposetracker.h + fractallabelers/fractalmarkerset.h + fractallabelers/fractalmarker.h + fractallabelers/fractallabeler.h + ) + +set(dcf_sources + dcf/dcfmarkermaptracker.cpp dcf/dcfmarkertracker.cpp dcf/dcf_utils.cpp dcf/trackerimpl.cpp ) +set(dcf_headers + dcf/dcfmarkermaptracker.h dcf/dcfmarkertracker.h dcf/dcf_utils.h dcf/trackerimpl.h) + +add_library(${LIBNAME} ${sources} ${headers} ${fractal_sources} ${fractal_headers} ${dcf_sources} ${dcf_headers}) + +set_target_properties(${LIBNAME} PROPERTIES # create *nix style library versions + symbolic links + DEFINE_SYMBOL ARUCO_DSO_EXPORTS + VERSION ${PROJECT_VERSION} + SOVERSION ${PROJECT_SOVERSION} + CLEAN_DIRECT_OUTPUT 1 # allow creating static and shared libs without conflicts + OUTPUT_NAME "${LIBNAME}${PROJECT_DLLVERSION}" # avoid conflicts between library and binary target names +) + +target_link_libraries(${LIBNAME} PUBLIC opencv_core) +IF(BUILD_SVM) +add_definitions(USE_SVM_LABELER) + target_link_libraries(${LIBNAME} PRIVATE opencv_imgproc opencv_calib3d opencv_features2d opencv_ml) +else() + target_link_libraries(${LIBNAME} PRIVATE opencv_imgproc opencv_calib3d opencv_features2d ) +endif() + +INSTALL(TARGETS ${LIBNAME} + RUNTIME DESTINATION bin COMPONENT main # Install the dll file in bin directory + LIBRARY DESTINATION lib PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE COMPONENT main + ARCHIVE DESTINATION lib COMPONENT main) # Install the dll.a file in lib directory + +IF(ARUCO_DEVINSTALL) + install(FILES ${headers} DESTINATION include/aruco) + install(FILES ${fractal_headers} DESTINATION include/aruco/fractallabelers) + install(FILES ${dcf_headers} DESTINATION include/aruco/dcf) +ENDIF() + diff --git a/thirdparty/aruco-3.1.12/src/aruco.h b/thirdparty/aruco-3.1.12/src/aruco.h new file mode 100644 index 0000000..7c9fcac --- /dev/null +++ b/thirdparty/aruco-3.1.12/src/aruco.h @@ -0,0 +1,39 @@ +/** + +Copyright 2017 Rafael Muñoz Salinas. All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are +permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this list of + conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright notice, this list + of conditions and the following disclaimer in the documentation and/or other materials + provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY Rafael Muñoz Salinas ''AS IS'' AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL Rafael Muñoz Salinas OR +CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +The views and conclusions contained in the software and documentation are those of the +authors and should not be interpreted as representing official policies, either expressed +or implied, of Rafael Muñoz Salinas. +*/ + +#include "fractaldetector.h" +#include "markerdetector.h" +#include "posetracker.h" +#include "cvdrawingutils.h" +#include "dictionary.h" + +#define ARUCO_VERSION_MAJOR 3 +#define ARUCO_VERSION_MINOR 0 + + diff --git a/thirdparty/aruco-3.1.12/src/aruco_cvversioning.h b/thirdparty/aruco-3.1.12/src/aruco_cvversioning.h new file mode 100644 index 0000000..0192e1f --- /dev/null +++ b/thirdparty/aruco-3.1.12/src/aruco_cvversioning.h @@ -0,0 +1,18 @@ +#ifndef ARUCO_CV_VERSIONING +#define ARUCO_CV_VERSIONING +#include +#if CV_MAJOR_VERSION >= 4 +#include + +#define CV_CAP_PROP_FRAME_COUNT cv::CAP_PROP_FRAME_COUNT +#define CV_CAP_PROP_POS_FRAMES cv::CAP_PROP_POS_FRAMES +#define CV_BGR2GRAY cv::COLOR_BGR2GRAY +#define CV_GRAY2BGR cv::COLOR_GRAY2BGR +#define CV_FONT_HERSHEY_COMPLEX cv::FONT_HERSHEY_COMPLEX +#define CV_FILLED cv::FILLED +#define CV_RANSAC cv::RANSAC +#define CV_REDUCE_SUM cv::REDUCE_SUM +#endif + +#endif + diff --git a/thirdparty/aruco-3.1.12/src/aruco_export.h b/thirdparty/aruco-3.1.12/src/aruco_export.h new file mode 100644 index 0000000..b6995b2 --- /dev/null +++ b/thirdparty/aruco-3.1.12/src/aruco_export.h @@ -0,0 +1,46 @@ +/** +Copyright 2017 Rafael Muñoz Salinas. All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are +permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this list of + conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright notice, this list + of conditions and the following disclaimer in the documentation and/or other materials + provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY Rafael Muñoz Salinas ''AS IS'' AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL Rafael Muñoz Salinas OR +CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +The views and conclusions contained in the software and documentation are those of the +authors and should not be interpreted as representing official policies, either expressed +or implied, of Rafael Muñoz Salinas. +*/ + + + +#ifndef __OPENARUCO_CORE_TYPES_H__ +#define __OPENARUCO_CORE_TYPES_H__ + +#if !defined _CRT_SECURE_NO_DEPRECATE && _MSC_VER > 1300 +#define _CRT_SECURE_NO_DEPRECATE /* to avoid multiple Visual Studio 2005 warnings */ +#endif + + +#if (defined WIN32 || defined _WIN32 || defined WINCE) && defined ARUCO_DSO_EXPORTS +#define ARUCO_EXPORT __declspec(dllexport) +#else +#define ARUCO_EXPORT +#endif + + +#endif diff --git a/thirdparty/aruco-3.1.12/src/cameraparameters.cpp b/thirdparty/aruco-3.1.12/src/cameraparameters.cpp new file mode 100644 index 0000000..de768c3 --- /dev/null +++ b/thirdparty/aruco-3.1.12/src/cameraparameters.cpp @@ -0,0 +1,610 @@ +/** +Copyright 2017 Rafael Muñoz Salinas. All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are +permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this list of + conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright notice, this list + of conditions and the following disclaimer in the documentation and/or other materials + provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY Rafael Muñoz Salinas ''AS IS'' AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL Rafael Muñoz Salinas OR +CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +The views and conclusions contained in the software and documentation are those of the +authors and should not be interpreted as representing official policies, either expressed +or implied, of Rafael Muñoz Salinas. +*/ +#include "cameraparameters.h" + +#include +#include + +#include +#include + +using namespace std; +namespace aruco +{ + CameraParameters::CameraParameters() + { + CameraMatrix = cv::Mat(); + Distorsion = cv::Mat(); + CamSize = cv::Size(-1, -1); + } + /**Creates the object from the info passed + * @param cameraMatrix 3x3 matrix (fx 0 cx, 0 fy cy, 0 0 1) + * @param distorsionCoeff 4x1 matrix (k1,k2,p1,p2) + * @param size image size + */ + CameraParameters::CameraParameters(cv::Mat cameraMatrix, cv::Mat distorsionCoeff, + cv::Size size) + { + setParams(cameraMatrix, distorsionCoeff, size); + } + /** + */ + CameraParameters::CameraParameters(const CameraParameters& CI) + { + CI.CameraMatrix.copyTo(CameraMatrix); + CI.Distorsion.copyTo(Distorsion); + CamSize = CI.CamSize; + } + + /** + */ + CameraParameters& CameraParameters::operator=(const CameraParameters& CI) + { + CI.CameraMatrix.copyTo(CameraMatrix); + CI.Distorsion.copyTo(Distorsion); + CamSize = CI.CamSize; + return *this; + } + void CameraParameters::clear(){ + CameraMatrix=cv::Mat(); + CamSize=cv::Size(-1,-1); + Distorsion=cv::Mat(); + } + /** + */ + void CameraParameters::setParams(cv::Mat cameraMatrix, cv::Mat distorsionCoeff, cv::Size size) + { + printf("\n Camera Matrix Size: %dx%d \n", cameraMatrix.rows, cameraMatrix.cols); + if (cameraMatrix.rows != 3 || cameraMatrix.cols != 3) + throw cv::Exception(9000, "invalid input cameraMatrix", "CameraParameters::setParams", __FILE__, __LINE__); + cameraMatrix.convertTo(CameraMatrix, CV_32FC1); + if (distorsionCoeff.total() < 4 || distorsionCoeff.total() >= 7) + throw cv::Exception(9000, "invalid input distorsionCoeff", "CameraParameters::setParams", __FILE__, + __LINE__); + cv::Mat auxD; + + distorsionCoeff.convertTo(Distorsion, CV_32FC1); + + // Distorsion.create(1,4,CV_32FC1); + // for (int i=0;i<4;i++) + // Distorsion.ptr(0)[i]=auxD.ptr(0)[i]; + + CamSize = size; + } + + /** + */ + cv::Point3f CameraParameters::getCameraLocation(const cv::Mat &Rvec,const cv::Mat &Tvec) + { + + cv::Mat m33(3, 3, CV_32FC1); + cv::Rodrigues(Rvec, m33); + + cv::Mat m44 = cv::Mat::eye(4, 4, CV_32FC1); + for (int i = 0; i < 3; i++) + for (int j = 0; j < 3; j++) + m44.at(i, j) = m33.at(i, j); + + // now, add translation information + for (int i = 0; i < 3; i++) + m44.at(i, 3) = Tvec.ptr(0)[i]; + + + // invert the matrix + m44.inv(); + return cv::Point3f(m44.at(0, 3), m44.at(1, 3), m44.at(2, 3)); + } + + /**Saves this to a file + */ + void CameraParameters::saveToFile(string path, bool inXML) + { + if (!isValid()) + throw cv::Exception(9006, "invalid object", "CameraParameters::saveToFile", __FILE__, __LINE__); + if (!inXML) + { + ofstream file(path.c_str()); + if (!file) + throw cv::Exception(9006, "could not open file:" + path, "CameraParameters::saveToFile", __FILE__, + __LINE__); + file << "# Aruco 1.0 CameraParameters" << endl; + file << "fx = " << CameraMatrix.at(0, 0) << endl; + file << "cx = " << CameraMatrix.at(0, 2) << endl; + file << "fy = " << CameraMatrix.at(1, 1) << endl; + file << "cy = " << CameraMatrix.at(1, 2) << endl; + file << "k1 = " << Distorsion.at(0, 0) << endl; + file << "k2 = " << Distorsion.at(1, 0) << endl; + file << "p1 = " << Distorsion.at(2, 0) << endl; + file << "p2 = " << Distorsion.at(3, 0) << endl; + file << "width = " << CamSize.width << endl; + file << "height = " << CamSize.height << endl; + } + else + { + cv::FileStorage fs(path, cv::FileStorage::WRITE); + fs << "image_width" << CamSize.width; + fs << "image_height" << CamSize.height; + fs << "camera_matrix" << CameraMatrix; + fs << "distortion_coefficients" << Distorsion; + } + } + + /**Adjust the parameters to the size of the image indicated + */ + void CameraParameters::resize(cv::Size size) + { + if (!isValid()) + throw cv::Exception(9007, "invalid object", "CameraParameters::resize", __FILE__, __LINE__); + if (size == CamSize) + return; + // now, read the camera size + // resize the camera parameters to fit this image size + float AxFactor = float(size.width) / float(CamSize.width); + float AyFactor = float(size.height) / float(CamSize.height); + CameraMatrix.at(0, 0) *= AxFactor; + CameraMatrix.at(0, 2) *= AxFactor; + CameraMatrix.at(1, 1) *= AyFactor; + CameraMatrix.at(1, 2) *= AyFactor; + CamSize = size; + } + + /**** + * + * + * + * + */ + void CameraParameters::readFromXMLFile(string filePath) + { + cv::FileStorage fs(filePath, cv::FileStorage::READ); + if(!fs.isOpened()) throw std::runtime_error("CameraParameters::readFromXMLFile could not open file:"+filePath); + int w = -1, h = -1; + cv::Mat MCamera, MDist; + + + fs["image_width"] >> w; + fs["image_height"] >> h; + fs["distortion_coefficients"] >> MDist; + fs["camera_matrix"] >> MCamera; + + if (MCamera.cols == 0 || MCamera.rows == 0){ + fs["Camera_Matrix"] >> MCamera; + if (MCamera.cols == 0 || MCamera.rows == 0) + throw cv::Exception(9007, "File :" + filePath + " does not contains valid camera matrix", + "CameraParameters::readFromXML", __FILE__, __LINE__); + } + + if (w == -1 || h == 0){ + fs["image_Width"] >> w; + fs["image_Height"] >> h; + if (w == -1 || h == 0) + throw cv::Exception(9007, "File :" + filePath + " does not contains valid camera dimensions", + "CameraParameters::readFromXML", __FILE__, __LINE__); + } + if (MCamera.type() != CV_32FC1) + MCamera.convertTo(CameraMatrix, CV_32FC1); + else + CameraMatrix = MCamera; + + if (MDist.total() < 4){ + fs["Distortion_Coefficients"] >> MDist; + if (MDist.total() < 4) + throw cv::Exception(9007, "File :" + filePath + " does not contains valid distortion_coefficients", + "CameraParameters::readFromXML", __FILE__, __LINE__); + } + // convert to 32 and get the 4 first elements only + cv::Mat mdist32; + MDist.convertTo(mdist32, CV_32FC1); + // Distorsion.create(1,4,CV_32FC1); + // for (int i=0;i<4;i++) + // Distorsion.ptr(0)[i]=mdist32.ptr(0)[i]; + + Distorsion.create(1, 5, CV_32FC1); + for (int i = 0; i < 5; i++) + Distorsion.ptr(0)[i] = mdist32.ptr(0)[i]; + CamSize.width = w; + CamSize.height = h; + } + /**** + * + */ + void CameraParameters::glGetProjectionMatrix(cv::Size orgImgSize, cv::Size size, double proj_matrix[16], + double gnear, double gfar, bool invert) + { + if (cv::countNonZero(Distorsion) != 0) + std::cerr << "CameraParameters::glGetProjectionMatrix :: The camera has distortion coefficients " + << __FILE__ << " " << __LINE__ << endl; + if (isValid() == false) + throw cv::Exception(9100, "invalid camera parameters", "CameraParameters::glGetProjectionMatrix", __FILE__, + __LINE__); + + // Deterime the rsized info + double Ax = double(size.width) / double(orgImgSize.width); + double Ay = double(size.height) / double(orgImgSize.height); + double _fx = CameraMatrix.at(0, 0) * Ax; + double _cx = CameraMatrix.at(0, 2) * Ax; + double _fy = CameraMatrix.at(1, 1) * Ay; + double _cy = CameraMatrix.at(1, 2) * Ay; + double cparam[3][4] = {{_fx, 0, _cx, 0}, {0, _fy, _cy, 0}, {0, 0, 1, 0}}; + + argConvGLcpara2(cparam, size.width, size.height, gnear, gfar, proj_matrix, invert); + } + + /******************* + * + * + *******************/ + double CameraParameters::norm(double a, double b, double c) + { + return (sqrt(a * a + b * b + c * c)); + } + + /******************* + * + * + *******************/ + + double CameraParameters::dot(double a1, double a2, double a3, double b1, double b2, double b3) + { + return (a1 * b1 + a2 * b2 + a3 * b3); + } + + /******************* + * + * + *******************/ + + void CameraParameters::argConvGLcpara2(double cparam[3][4], int width, int height, double gnear, double gfar, + double m[16], bool invert) + { + double icpara[3][4]; + double trans[3][4]; + double p[3][3], q[4][4]; + int i, j; + + cparam[0][2] *= -1.0; + cparam[1][2] *= -1.0; + cparam[2][2] *= -1.0; + + if (arParamDecompMat(cparam, icpara, trans) < 0) + throw cv::Exception(9002, "parameter error", "MarkerDetector::argConvGLcpara2", __FILE__, __LINE__); + + for (i = 0; i < 3; i++) + { + for (j = 0; j < 3; j++) + { + p[i][j] = icpara[i][j] / icpara[2][2]; + } + } + q[0][0] = (2.0 * p[0][0] / width); + q[0][1] = (2.0 * p[0][1] / width); + q[0][2] = ((2.0 * p[0][2] / width) - 1.0); + q[0][3] = 0.0; + + q[1][0] = 0.0; + q[1][1] = (2.0 * p[1][1] / height); + q[1][2] = ((2.0 * p[1][2] / height) - 1.0); + q[1][3] = 0.0; + + q[2][0] = 0.0; + q[2][1] = 0.0; + q[2][2] = (gfar + gnear) / (gfar - gnear); + q[2][3] = -2.0 * gfar * gnear / (gfar - gnear); + + q[3][0] = 0.0; + q[3][1] = 0.0; + q[3][2] = 1.0; + q[3][3] = 0.0; + + for (i = 0; i < 4; i++) + { + for (j = 0; j < 3; j++) + { + m[i + j * 4] = q[i][0] * trans[0][j] + q[i][1] * trans[1][j] + q[i][2] * trans[2][j]; + } + m[i + 3 * 4] = q[i][0] * trans[0][3] + q[i][1] * trans[1][3] + q[i][2] * trans[2][3] + q[i][3]; + } + + if (!invert) + { + m[13] = -m[13]; + m[1] = -m[1]; + m[5] = -m[5]; + m[9] = -m[9]; + } + } + /******************* + * + * + *******************/ + + int CameraParameters::arParamDecompMat(double source[3][4], double cpara[3][4], + double trans[3][4]) + { + int r, c; + double Cpara[3][4]; + double rem1, rem2, rem3; + + if (source[2][3] >= 0) + { + for (r = 0; r < 3; r++) + { + for (c = 0; c < 4; c++) + { + Cpara[r][c] = source[r][c]; + } + } + } + else + { + for (r = 0; r < 3; r++) + { + for (c = 0; c < 4; c++) + { + Cpara[r][c] = -(source[r][c]); + } + } + } + + for (r = 0; r < 3; r++) + { + for (c = 0; c < 4; c++) + { + cpara[r][c] = 0.0; + } + } + cpara[2][2] = norm(Cpara[2][0], Cpara[2][1], Cpara[2][2]); + trans[2][0] = Cpara[2][0] / cpara[2][2]; + trans[2][1] = Cpara[2][1] / cpara[2][2]; + trans[2][2] = Cpara[2][2] / cpara[2][2]; + trans[2][3] = Cpara[2][3] / cpara[2][2]; + + cpara[1][2] = dot(trans[2][0], trans[2][1], trans[2][2], Cpara[1][0], Cpara[1][1], Cpara[1][2]); + rem1 = Cpara[1][0] - cpara[1][2] * trans[2][0]; + rem2 = Cpara[1][1] - cpara[1][2] * trans[2][1]; + rem3 = Cpara[1][2] - cpara[1][2] * trans[2][2]; + cpara[1][1] = norm(rem1, rem2, rem3); + trans[1][0] = rem1 / cpara[1][1]; + trans[1][1] = rem2 / cpara[1][1]; + trans[1][2] = rem3 / cpara[1][1]; + + cpara[0][2] = dot(trans[2][0], trans[2][1], trans[2][2], Cpara[0][0], Cpara[0][1], Cpara[0][2]); + cpara[0][1] = dot(trans[1][0], trans[1][1], trans[1][2], Cpara[0][0], Cpara[0][1], Cpara[0][2]); + rem1 = Cpara[0][0] - cpara[0][1] * trans[1][0] - cpara[0][2] * trans[2][0]; + rem2 = Cpara[0][1] - cpara[0][1] * trans[1][1] - cpara[0][2] * trans[2][1]; + rem3 = Cpara[0][2] - cpara[0][1] * trans[1][2] - cpara[0][2] * trans[2][2]; + cpara[0][0] = norm(rem1, rem2, rem3); + trans[0][0] = rem1 / cpara[0][0]; + trans[0][1] = rem2 / cpara[0][0]; + trans[0][2] = rem3 / cpara[0][0]; + + trans[1][3] = (Cpara[1][3] - cpara[1][2] * trans[2][3]) / cpara[1][1]; + trans[0][3] = (Cpara[0][3] - cpara[0][1] * trans[1][3] - cpara[0][2] * trans[2][3]) / cpara[0][0]; + + for (r = 0; r < 3; r++) + { + for (c = 0; c < 3; c++) + { + cpara[r][c] /= cpara[2][2]; + } + } + + return 0; + } + + /****** + * + */ + void CameraParameters::OgreGetProjectionMatrix(cv::Size orgImgSize, cv::Size size, double proj_matrix[16], + double gnear, double gfar, bool invert) + { + double temp_matrix[16]; + (*this).glGetProjectionMatrix(orgImgSize, size, temp_matrix, gnear, gfar, invert); + proj_matrix[0] = -temp_matrix[0]; + proj_matrix[1] = -temp_matrix[4]; + proj_matrix[2] = -temp_matrix[8]; + proj_matrix[3] = temp_matrix[12]; + + proj_matrix[4] = -temp_matrix[1]; + proj_matrix[5] = -temp_matrix[5]; + proj_matrix[6] = -temp_matrix[9]; + proj_matrix[7] = temp_matrix[13]; + + proj_matrix[8] = -temp_matrix[2]; + proj_matrix[9] = -temp_matrix[6]; + proj_matrix[10] = -temp_matrix[10]; + proj_matrix[11] = temp_matrix[14]; + + proj_matrix[12] = -temp_matrix[3]; + proj_matrix[13] = -temp_matrix[7]; + proj_matrix[14] = -temp_matrix[11]; + proj_matrix[15] = temp_matrix[15]; + } + /****** + * + */ + + cv::Mat CameraParameters::getRTMatrix(const cv::Mat& R_, const cv::Mat& T_, int forceType) + { + cv::Mat M; + cv::Mat R, T; + R_.copyTo(R); + T_.copyTo(T); + if (R.type() == CV_64F) + { + assert(T.type() == CV_64F); + cv::Mat Matrix = cv::Mat::eye(4, 4, CV_64FC1); + + cv::Mat R33 = cv::Mat(Matrix, cv::Rect(0, 0, 3, 3)); + if (R.total() == 3) + { + cv::Rodrigues(R, R33); + } + else if (R.total() == 9) + { + cv::Mat R64; + R.convertTo(R64, CV_64F); + R.copyTo(R33); + } + for (int i = 0; i < 3; i++) + Matrix.at(i, 3) = T.ptr(0)[i]; + M = Matrix; + } + else if (R.depth() == CV_32F) + { + cv::Mat Matrix = cv::Mat::eye(4, 4, CV_32FC1); + cv::Mat R33 = cv::Mat(Matrix, cv::Rect(0, 0, 3, 3)); + if (R.total() == 3) + { + cv::Rodrigues(R, R33); + } + else if (R.total() == 9) + { + cv::Mat R32; + R.convertTo(R32, CV_32F); + R.copyTo(R33); + } + + for (int i = 0; i < 3; i++) + Matrix.at(i, 3) = T.ptr(0)[i]; + M = Matrix; + } + + if (forceType == -1) + return M; + else + { + cv::Mat MTyped; + M.convertTo(MTyped, forceType); + return MTyped; + } + } + std::ostream &operator<<(std::ostream &str,const CameraParameters&cp){ + str<<"%YAML:1.0"<(0); + for(int i=0;i<9;i++){ + str<(); + for(int i=0;i<5;i++){ + str<>(std::istream &str,CameraParameters&cp){ + + auto getValue=[](string line){ + //remove ':' + for(auto &c:line) if (c==':') c=' '; + stringstream ss; + ss<>aux>>val; + return val; + }; + + auto parseDataLine=[](string line,cv::Mat &data){ + //remove + for(auto &c:line) + if (c=='[' || c==']'|| c==',' || c==':') c=' '; + //now, read + stringstream sstr;sstr<>sdata; + for(size_t i=0;i>data.ptr(0)[i]; + }; + + cp.CameraMatrix=cv::Mat::eye(3,3,CV_32F); + cp.Distorsion.create(1,5,CV_32F); + cp.Distorsion.setTo(cv::Scalar::all(0)); + string line; + std::getline(str,line); + if (line.find("%YAML:1.0")==string::npos){ + std::cerr<<"Invalid input stream"< +#include +#include + +namespace aruco +{ + /**\brief Parameters of the camera + */ + + class ARUCO_EXPORT CameraParameters + { + public: + // 3x3 matrix (fx 0 cx, 0 fy cy, 0 0 1) + cv::Mat CameraMatrix; + // distortion matrix + cv::Mat Distorsion; + // size of the image + cv::Size CamSize; + + /**Empty constructor + */ + CameraParameters(); + /**Creates the object from the info passed + * @param cameraMatrix 3x3 matrix (fx 0 cx, 0 fy cy, 0 0 1) + * @param distorsionCoeff 4x1 matrix (k1,k2,p1,p2) + * @param size image size + */ + CameraParameters(cv::Mat cameraMatrix, cv::Mat distorsionCoeff, cv::Size size); + /**Sets the parameters + * @param cameraMatrix 3x3 matrix (fx 0 cx, 0 fy cy, 0 0 1) + * @param distorsionCoeff 4x1 matrix (k1,k2,p1,p2) + * @param size image size + */ + void setParams(cv::Mat cameraMatrix, cv::Mat distorsionCoeff, cv::Size size); + /**Copy constructor + */ + CameraParameters(const CameraParameters& CI); + + /**Indicates whether this object is valid + */ + bool isValid() const + { + return CameraMatrix.rows != 0 && CameraMatrix.cols != 0 && Distorsion.rows != 0 && Distorsion.cols != 0 + && CamSize.width != -1 && CamSize.height != -1; + } + /**Assign operator + */ + CameraParameters& operator=(const CameraParameters& CI); + + /**Saves this to a file + */ + void saveToFile(std::string path, bool inXML = true); + + /**Reads from a YAML file generated with the opencv2.2 calibration utility + */ + void readFromXMLFile(std::string filePath); + + /**Adjust the parameters to the size of the image indicated + */ + void resize(cv::Size size); + + /**Returns the location of the camera in the reference system of the marker. + * + * Rvec and Tvec are the transform from the marker to the camera as calculated in other parts of the library + * NOT TESTED + */ + static cv::Point3f getCameraLocation(const cv::Mat &Rvec,const cv::Mat &Tvec); + + /**Given the intrinsic camera parameters returns the GL_PROJECTION matrix for opengl. + * PLease NOTE that when using OpenGL, it is assumed no camera distorsion! So, if it is not true, you should have + * undistor image + * + * @param orgImgSize size of the original image + * @param size of the image/window where to render (can be different from the real camera image). Please not that + *it must be related to CamMatrix + * @param proj_matrix output projection matrix to give to opengl + * @param gnear,gfar: visible rendering range + * @param invert: indicates if the output projection matrix has to yield a horizontally inverted image because + *image data has not been stored in the order of + *glDrawPixels: bottom-to-top. + */ + void glGetProjectionMatrix(cv::Size orgImgSize, cv::Size size, double proj_matrix[16], double gnear, + double gfar, bool invert = false); + + /** + * setup camera for an Ogre project. + * Use: + * ... + * Ogre::Matrix4 PM(proj_matrix[0], proj_matrix[1], ... , proj_matrix[15]); + * yourCamera->setCustomProjectionMatrix(true, PM); + * yourCamera->setCustomViewMatrix(true, Ogre::Matrix4::IDENTITY); + * ... + * As in OpenGL, it assumes no camera distorsion + */ + void OgreGetProjectionMatrix(cv::Size orgImgSize, cv::Size size, double proj_matrix[16], double gnear, + double gfar, bool invert = false); + + /**Returns the 4x4 homogeneous transform matrix from the R and T vectors computed + */ + static cv::Mat getRTMatrix(const cv::Mat& R_, const cv::Mat& T_, int forceType); + + + /**Makes this invalid + */ + void clear(); + + ARUCO_EXPORT friend std::ostream &operator<<(std::ostream &str,const CameraParameters&cp); + ARUCO_EXPORT friend std::istream &operator>>(std::istream &str,CameraParameters&cp); + private: + // GL routines + + static void argConvGLcpara2(double cparam[3][4], int width, int height, double gnear, double gfar, double m[16], + bool invert); + static int arParamDecompMat(double source[3][4], double cpara[3][4], double trans[3][4]); + static double norm(double a, double b, double c); + static double dot(double a1, double a2, double a3, double b1, double b2, double b3); + }; +} +#endif diff --git a/thirdparty/aruco-3.1.12/src/cvdrawingutils.cpp b/thirdparty/aruco-3.1.12/src/cvdrawingutils.cpp new file mode 100644 index 0000000..9b8b340 --- /dev/null +++ b/thirdparty/aruco-3.1.12/src/cvdrawingutils.cpp @@ -0,0 +1,174 @@ +/** +Copyright 2017 Rafael Muñoz Salinas. All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are +permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this list of + conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright notice, this list + of conditions and the following disclaimer in the documentation and/or other materials + provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY Rafael Muñoz Salinas ''AS IS'' AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL Rafael Muñoz Salinas OR +CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +The views and conclusions contained in the software and documentation are those of the +authors and should not be interpreted as representing official policies, either expressed +or implied, of Rafael Muñoz Salinas. +*/ +#include +#include +#include "cvdrawingutils.h" +#include "cameraparameters.h" +using namespace cv; +namespace aruco +{ +void CvDrawingUtils::draw3dAxis(cv::Mat& Image, const CameraParameters& CP, const cv::Mat& Rvec, + const cv::Mat& Tvec, float axis_size) + { + Mat objectPoints(4, 3, CV_32FC1); + objectPoints.at(0, 0) = 0; + objectPoints.at(0, 1) = 0; + objectPoints.at(0, 2) = 0; + objectPoints.at(1, 0) = axis_size; + objectPoints.at(1, 1) = 0; + objectPoints.at(1, 2) = 0; + objectPoints.at(2, 0) = 0; + objectPoints.at(2, 1) = axis_size; + objectPoints.at(2, 2) = 0; + objectPoints.at(3, 0) = 0; + objectPoints.at(3, 1) = 0; + objectPoints.at(3, 2) = axis_size; + + std::vector imagePoints; + cv::projectPoints(objectPoints, Rvec, Tvec, CP.CameraMatrix, CP.Distorsion, imagePoints); + // draw lines of different colours + cv::line(Image, imagePoints[0], imagePoints[1], Scalar(0, 0, 255, 255), 1); + cv::line(Image, imagePoints[0], imagePoints[2], Scalar(0, 255, 0, 255), 1); + cv::line(Image, imagePoints[0], imagePoints[3], Scalar(255, 0, 0, 255), 1); + putText(Image, "x", imagePoints[1], FONT_HERSHEY_SIMPLEX, 0.6, Scalar(0, 0, 255, 255), 2); + putText(Image, "y", imagePoints[2], FONT_HERSHEY_SIMPLEX, 0.6, Scalar(0, 255, 0, 255), 2); + putText(Image, "z", imagePoints[3], FONT_HERSHEY_SIMPLEX, 0.6, Scalar(255, 0, 0, 255), 2); + } + /**** + * + * + * + ****/ + void CvDrawingUtils::draw3dAxis(cv::Mat& Image, Marker& m, const CameraParameters& CP,int lineSize) + { + float size = m.ssize *0.6; + Mat objectPoints(4, 3, CV_32FC1); + objectPoints.at(0, 0) = 0; + objectPoints.at(0, 1) = 0; + objectPoints.at(0, 2) = 0; + objectPoints.at(1, 0) = size; + objectPoints.at(1, 1) = 0; + objectPoints.at(1, 2) = 0; + objectPoints.at(2, 0) = 0; + objectPoints.at(2, 1) = size; + objectPoints.at(2, 2) = 0; + objectPoints.at(3, 0) = 0; + objectPoints.at(3, 1) = 0; + objectPoints.at(3, 2) = size; + + std::vector imagePoints; + cv::projectPoints(objectPoints, m.Rvec, m.Tvec, CP.CameraMatrix, CP.Distorsion, imagePoints); + // draw lines of different colours + cv::line(Image, imagePoints[0], imagePoints[1], Scalar(0, 0, 255, 255), lineSize); + cv::line(Image, imagePoints[0], imagePoints[2], Scalar(0, 255, 0, 255), lineSize); + cv::line(Image, imagePoints[0], imagePoints[3], Scalar(255, 0, 0, 255), lineSize); + putText(Image, "x", imagePoints[1], FONT_HERSHEY_SIMPLEX, 0.6, Scalar(0, 0, 255, 255), 2); + putText(Image, "y", imagePoints[2], FONT_HERSHEY_SIMPLEX, 0.6, Scalar(0, 255, 0, 255), 2); + putText(Image, "z", imagePoints[3], FONT_HERSHEY_SIMPLEX, 0.6, Scalar(255, 0, 0, 255), 2); + } + + /**** + * + * + * + ****/ + void CvDrawingUtils::draw3dCube(cv::Mat& Image, Marker& m, const CameraParameters& CP, int lineSize, bool setYperpendicular) + { + Mat objectPoints(8, 3, CV_32FC1); + float halfSize = m.ssize / 2.f; + + if (setYperpendicular) + { + objectPoints.at(0, 0) = -halfSize; + objectPoints.at(0, 1) = 0; + objectPoints.at(0, 2) = -halfSize; + objectPoints.at(1, 0) = halfSize; + objectPoints.at(1, 1) = 0; + objectPoints.at(1, 2) = -halfSize; + objectPoints.at(2, 0) = halfSize; + objectPoints.at(2, 1) = 0; + objectPoints.at(2, 2) = halfSize; + objectPoints.at(3, 0) = -halfSize; + objectPoints.at(3, 1) = 0; + objectPoints.at(3, 2) = halfSize; + + objectPoints.at(4, 0) = -halfSize; + objectPoints.at(4, 1) = m.ssize; + objectPoints.at(4, 2) = -halfSize; + objectPoints.at(5, 0) = halfSize; + objectPoints.at(5, 1) = m.ssize; + objectPoints.at(5, 2) = -halfSize; + objectPoints.at(6, 0) = halfSize; + objectPoints.at(6, 1) = m.ssize; + objectPoints.at(6, 2) = halfSize; + objectPoints.at(7, 0) = -halfSize; + objectPoints.at(7, 1) = m.ssize; + objectPoints.at(7, 2) = halfSize; + } + else + { + objectPoints.at(0, 0) = -halfSize; + objectPoints.at(0, 1) = -halfSize; + objectPoints.at(0, 2) = 0; + objectPoints.at(1, 0) = halfSize; + objectPoints.at(1, 1) = -halfSize; + objectPoints.at(1, 2) = 0; + objectPoints.at(2, 0) = halfSize; + objectPoints.at(2, 1) = halfSize; + objectPoints.at(2, 2) = 0; + objectPoints.at(3, 0) = -halfSize; + objectPoints.at(3, 1) = halfSize; + objectPoints.at(3, 2) = 0; + + objectPoints.at(4, 0) = -halfSize; + objectPoints.at(4, 1) = -halfSize; + objectPoints.at(4, 2) = m.ssize; + objectPoints.at(5, 0) = halfSize; + objectPoints.at(5, 1) = -halfSize; + objectPoints.at(5, 2) = m.ssize; + objectPoints.at(6, 0) = halfSize; + objectPoints.at(6, 1) = halfSize; + objectPoints.at(6, 2) = m.ssize; + objectPoints.at(7, 0) = -halfSize; + objectPoints.at(7, 1) = halfSize; + objectPoints.at(7, 2) = m.ssize; + } + + std::vector imagePoints; + projectPoints(objectPoints, m.Rvec, m.Tvec, CP.CameraMatrix, CP.Distorsion, imagePoints); + // draw lines of different colours + for (int i = 0; i < 4; i++) + cv::line(Image, imagePoints[i], imagePoints[(i + 1) % 4], Scalar(0, 0, 255, 255), lineSize); + + for (int i = 0; i < 4; i++) + cv::line(Image, imagePoints[i + 4], imagePoints[4 + (i + 1) % 4], Scalar(0, 0, 255, 255), lineSize); + + for (int i = 0; i < 4; i++) + cv::line(Image, imagePoints[i], imagePoints[i + 4], Scalar(0, 0, 255, 255), lineSize); + } +} diff --git a/thirdparty/aruco-3.1.12/src/cvdrawingutils.h b/thirdparty/aruco-3.1.12/src/cvdrawingutils.h new file mode 100644 index 0000000..4d08922 --- /dev/null +++ b/thirdparty/aruco-3.1.12/src/cvdrawingutils.h @@ -0,0 +1,55 @@ +/** +Copyright 2017 Rafael Muñoz Salinas. All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are +permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this list of + conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright notice, this list + of conditions and the following disclaimer in the documentation and/or other materials + provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY Rafael Muñoz Salinas ''AS IS'' AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL Rafael Muñoz Salinas OR +CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +The views and conclusions contained in the software and documentation are those of the +authors and should not be interpreted as representing official policies, either expressed +or implied, of Rafael Muñoz Salinas. +*/ + +#ifndef _ArUco_DrawUtils_H_ +#define _ArUco_DrawUtils_H_ + +#include "aruco.h" +#include "aruco_export.h" + +namespace aruco +{ + /**\brief A set of functions to draw in opencv images + */ + class ARUCO_EXPORT CvDrawingUtils + { + public: + + static void draw3dAxis(cv::Mat& Image, const CameraParameters& CP, const cv::Mat& Rvec, const cv::Mat& Tvec, + float axis_size); + static void draw3dAxis(cv::Mat& Image, Marker& m, const CameraParameters& CP,int lineSize=1); + + static void draw3dCube(cv::Mat& Image, Marker& m, const CameraParameters& CP,int lineSize=1, bool setYperpendicular = false); + + // static void draw3dAxis(cv::Mat &Image, MarkerMap &m, const CameraParameters &CP); + // static void draw3dCube(cv::Mat &Image, MarkerMap &m, const CameraParameters &CP, bool setYperpendicular = + // false); + }; +} + +#endif diff --git a/thirdparty/aruco-3.1.12/src/dcf/dcf_utils.cpp b/thirdparty/aruco-3.1.12/src/dcf/dcf_utils.cpp new file mode 100644 index 0000000..18bfc5d --- /dev/null +++ b/thirdparty/aruco-3.1.12/src/dcf/dcf_utils.cpp @@ -0,0 +1,442 @@ +#include "aruco_cvversioning.h" +#include "dcf_utils.h" +#include "bitset" +#include "iostream" + +void cornerClassifier(const cv::Mat &im, std::vector points,std::vector& corner_class, int wsize) +{ + corner_class.resize(points.size()); + + if(im.type()!=CV_8UC1) + throw std::runtime_error("assignClass Input image must be 8UC1"); + int wsizeFull=wsize*2+1; + + cv::Mat labels = cv::Mat::zeros(wsize*2+1,wsize*2+1,CV_8UC1); + cv::Mat thresIm=cv::Mat(wsize*2+1,wsize*2+1,CV_8UC1); + + for(unsigned int i=0; i<4; i++) + { + float x = points[i].x; + float y = points[i].y; + + x= int(x+0.5f); + y= int(y+0.5f); + + cv::Rect r= cv::Rect(x-wsize,y-wsize,wsize*2+1,wsize*2+1); + //Check boundaries + if(r.x<0 || r.x+r.width>im.cols || r.y<0 || r.y+r.height>im.rows){ + corner_class[i]=-1; + continue; + } + + int endX=r.x+r.width; + int endY=r.y+r.height; + uchar minV=255,maxV=0; + for(int y=r.y; y(y); + for(int x=r.x; xptr[x]) minV=ptr[x]; + if(maxV( r.y+y)+r.x; + uchar *thresPtr= thresIm.ptr(y); + for(int x=0; xthres) { + nZ++; + thresPtr[x]=255; + } + else thresPtr[x]=0; + } + } + //set all to zero labels.setTo(cv::Scalar::all(0)); + for(int y=0; y(y); + for(int x=0; x unions; + for(int y=0; y(y); + uchar *labelsPtr=labels.ptr(y); + for(int x=0; x -1) + { + if(reg == thresPtr[x-1]) + lleft_px =labelsPtr[x-1]; + } + + if(y-1 > -1) + { + if(reg ==thresIm.ptr(y-1) [x] + )//thresIm.at(y-1, x) + ltop_px = labels.at(y-1, x); + } + + if(lleft_px==0 && ltop_px==0) + labelsPtr[x] = newLab++; + + else if(lleft_px!=0 && ltop_px!=0) + { + if(lleft_px < ltop_px) + { + labelsPtr[x] = lleft_px; + unions[ltop_px] = lleft_px; + } + else if(lleft_px > ltop_px) + { + labelsPtr[x] = ltop_px; + unions[lleft_px] = ltop_px; + } + else + {//IGuales + labelsPtr[x] = ltop_px; + } + } + else + { + if(lleft_px!=0) labelsPtr[x] = lleft_px; + else labelsPtr[x] = ltop_px; + } + } + } + + int nc= newLab-1 - unions.size(); + if(nc==2) + { + if(nZ > thresIm.total()-nZ) corner_class[i] = 0; + else corner_class[i] = 1; + } + else if (nc > 2) { + corner_class[i] = 2; + } + } +} + +cv::Rect getRectFrom4Points(std::vectorpoints, cv::Size imSize, bool imFit) +{ + int minX=std::numeric_limits::max(), maxX=std::numeric_limits::min(), + minY=std::numeric_limits::max(), maxY=std::numeric_limits::min(); + + for(auto pt:points) + { + if(pt.xmaxX) maxX=pt.x; + if(pt.y>maxY) maxY=pt.y; + } + + if(!imSize.empty()) + { + //The rect is out image + if(minX > imSize.width || minY > imSize.height || maxX < 0 || maxY <0) + return cv::Rect2d(); + + if(imFit) + { + if(minX<0) minX=0; + if(minY<0) minY=0; + if(maxX>imSize.width) maxX=imSize.width; + if(maxY>imSize.height) maxY=imSize.height; + } + else if(minX<0 || minY<0 || maxX>imSize.width || maxY>imSize.height) + return cv::Rect2d(); + } + + return cv::Rect2d(cv::Point2d(minX,minY),cv::Point2d(maxX,maxY)); +} + +bool getMarkerIds(const cv::Mat& im, int total_bits, std::vector& marker_corners, std::vector& ids) +{ + int threshold=100;//125; + const int nBitsSquared = static_cast(std::sqrt(total_bits))+2; + + std::vector obj_corners; + obj_corners.push_back(cv::Point2f(0, 0)); + obj_corners.push_back(cv::Point2f(nBitsSquared, 0)); + obj_corners.push_back(cv::Point2f(nBitsSquared, nBitsSquared)); + obj_corners.push_back(cv::Point2f(0, nBitsSquared)); + + ///Compute homography using marker corners + cv::Mat H = cv::findHomography(obj_corners, marker_corners, CV_RANSAC); + if(H.empty()) + return false; + + //Use homography to get the centers bit from marker + std::vector src_bit_centers; + for(float y=1.5; y vcenter_px; + cv::perspectiveTransform(src_bit_centers, vcenter_px, H); + + int bits_noborder = static_cast(std::sqrt(total_bits)); + + //take the inner code + cv::Mat _bits(bits_noborder,bits_noborder,CV_8UC1); + for(int y=0;yim.cols || vcenter_px[y*bits_noborder+x].x-0.5f<0 || + vcenter_px[y*bits_noborder+x].y+0.5f>im.rows || vcenter_px[y*bits_noborder+x].y-0.5f<0) + return false; + + + if(getSubpixelValue(im, vcenter_px[y*bits_noborder+x])< threshold) + _bits.at(y,x)=0; + else + _bits.at(y,x)=1; + } + + // now, get the 64bits ids + int nr = 0; + do + { + ids.push_back(touulong(_bits)); + _bits = rotate(_bits); + nr++; + } while (nr < 4); + + return true; +} + +/**Gets the subpixel value of the point passed + * @param im_grey image + * @param p point2d + */ +float getSubpixelValue(const cv::Mat &im_grey,const cv::Point2f &p){ + + assert(im_grey.type()==CV_8UC1); + float intpartX; + float decpartX=std::modf(p.x,&intpartX); + float intpartY; + float decpartY=std::modf(p.y,&intpartY); + + cv::Point tl; + + if (decpartX>0.5) { + if (decpartY>0.5) tl=cv::Point(intpartX,intpartY); + else tl=cv::Point(intpartX,intpartY-1); + } + else{ + if (decpartY>0.5) tl=cv::Point(intpartX-1,intpartY); + else tl=cv::Point(intpartX-1,intpartY-1); + } + return (1.f-decpartY)*(1.-decpartX)*float(im_grey.at(tl.y,tl.x))+ + decpartX*(1-decpartY)*float(im_grey.at(tl.y,tl.x+1))+ + (1-decpartX)*decpartY*float(im_grey.at(tl.y+1,tl.x))+ + decpartX*decpartY*float(im_grey.at(tl.y+1,tl.x+1)); +} + +// convert matrix of (0,1)s in a 64 bit value +uint64_t touulong(const cv::Mat& code) +{ + std::bitset<64> bits; + int bidx = 0; + for (int y = code.rows - 1; y >= 0; y--) + for (int x = code.cols - 1; x >= 0; x--) + bits[bidx++] = code.at(y, x); + return bits.to_ullong(); +} + +//Rotate matrix +cv::Mat rotate(const cv::Mat& in) +{ + cv::Mat out; + in.copyTo(out); + for (int i = 0; i < in.rows; i++) + { + for (int j = 0; j < in.cols; j++) + { + out.at(i, j) = in.at(in.cols - j - 1, i); + } + } + return out; +} + + +cv::Mat alignAndScaleToGroundTruth(std::vector >_other ){ + + std::vector points_other,points_gt; + for(auto gto:gt_other){ + assert(gto.first.type()==CV_64F); + points_gt.push_back(cv::Point3d(gto.first.at(0,3),gto.first.at(1,3),gto.first.at(2,3))); + points_other.push_back(cv::Point3d(gto.second.at(0,3),gto.second.at(1,3),gto.second.at(2,3))); + } + + cv::Mat best_T= rigidBodyTransformation_Horn1987(points_other,points_gt,false); + cv::Mat best_T64; + if( best_T.type()!=CV_64F) best_T.convertTo(best_T64,CV_64F); + else best_T64=best_T; + //cout<(std::bitset<64>(a ^ b).count()); +} + + +cv::Mat rigidBodyTransformation_Horn1987 (const std::vector &org, const std::vector &dst,bool mbFixScale){ + auto ComputeCentroid=[](cv::Mat &P, cv::Mat &Pr, cv::Mat &C) + { + cv::reduce(P,C,1,CV_REDUCE_SUM); + C = C/P.cols; + for(int i=0; i(0,i)=org[i].x; + P1.at(1,i)=org[i].y; + P1.at(2,i)=org[i].z; + P2.at(0,i)=dst[i].x; + P2.at(1,i)=dst[i].y; + P2.at(2,i)=dst[i].z; + } + + + // Step 1: Centroid and relative coordinates + + cv::Mat Pr1(P1.size(),P1.type()); // Relative coordinates to centroid (set 1) + cv::Mat Pr2(P2.size(),P2.type()); // Relative coordinates to centroid (set 2) + cv::Mat O1(3,1,Pr1.type()); // Centroid of P1 + cv::Mat O2(3,1,Pr2.type()); // Centroid of P2 + + ComputeCentroid(P1,Pr1,O1); + ComputeCentroid(P2,Pr2,O2); + + // Step 2: Compute M matrix + + cv::Mat M = Pr2*Pr1.t(); + + // Step 3: Compute N matrix + + double N11, N12, N13, N14, N22, N23, N24, N33, N34, N44; + + cv::Mat N(4,4,P1.type()); + + N11 = M.at(0,0)+M.at(1,1)+M.at(2,2); + N12 = M.at(1,2)-M.at(2,1); + N13 = M.at(2,0)-M.at(0,2); + N14 = M.at(0,1)-M.at(1,0); + N22 = M.at(0,0)-M.at(1,1)-M.at(2,2); + N23 = M.at(0,1)+M.at(1,0); + N24 = M.at(2,0)+M.at(0,2); + N33 = -M.at(0,0)+M.at(1,1)-M.at(2,2); + N34 = M.at(1,2)+M.at(2,1); + N44 = -M.at(0,0)-M.at(1,1)+M.at(2,2); + + N = (cv::Mat_(4,4) << N11, N12, N13, N14, + N12, N22, N23, N24, + N13, N23, N33, N34, + N14, N24, N34, N44); + + + // Step 4: Eigenvector of the highest eigenvalue + + cv::Mat eval, evec; + + cv::eigen(N,eval,evec); //evec[0] is the quaternion of the desired rotation + + cv::Mat vec(1,3,evec.type()); + (evec.row(0).colRange(1,4)).copyTo(vec); //extract imaginary part of the quaternion (sin*axis) + + // Rotation angle. sin is the norm of the imaginary part, cos is the real part + double ang=atan2(norm(vec),evec.at(0,0)); + + if (norm(vec)<1e-7)return cv::Mat::eye(4,4,CV_32F); + + vec = 2*ang*vec/norm(vec); //Angle-axis representation. quaternion angle is the half + + cv::Mat mR12i(3,3,P1.type()); + + cv::Rodrigues(vec,mR12i); // computes the rotation matrix from angle-axis + + // Step 5: Rotate set 2 + + cv::Mat P3 = mR12i*Pr2; + + // Step 6: Scale + float ms12i; + + if(!mbFixScale) + { + double nom = Pr1.dot(P3); + cv::Mat aux_P3(P3.size(),P3.type()); + aux_P3=P3; + cv::pow(P3,2,aux_P3); + double den = 0; + + for(int i=0; i(i,j); + } + } + + ms12i = nom/den; + } + else + ms12i = 1.0f; + + // Step 7: Translation + + cv::Mat mt12i(1,3,P1.type()); + mt12i = O1 - ms12i*mR12i*O2; + + // Step 8: Transformation + + // Step 8.1 T12 + cv::Mat mT12i = cv::Mat::eye(4,4,P1.type()); + + cv::Mat sR = ms12i*mR12i; + + sR.copyTo(mT12i.rowRange(0,3).colRange(0,3)); + mt12i.copyTo(mT12i.rowRange(0,3).col(3)); +// return mT12i; + +// // Step 8.2 T21 + + cv::Mat mT21i = cv::Mat::eye(4,4,P1.type()); + + cv::Mat sRinv = (1.0/ms12i)*mR12i.t(); + + sRinv.copyTo(mT21i.rowRange(0,3).colRange(0,3)); + cv::Mat tinv = -sRinv*mt12i; + tinv.copyTo(mT21i.rowRange(0,3).col(3)); + return mT21i; +} + + diff --git a/thirdparty/aruco-3.1.12/src/dcf/dcf_utils.h b/thirdparty/aruco-3.1.12/src/dcf/dcf_utils.h new file mode 100644 index 0000000..43b8781 --- /dev/null +++ b/thirdparty/aruco-3.1.12/src/dcf/dcf_utils.h @@ -0,0 +1,29 @@ +#ifndef DFC_UTILS_H +#define DFC_UTILS_H + +#include +#include +#include +#include + +bool getMarkerIds(const cv::Mat& im, int total_bits, std::vector& marker_corners, std::vector& ids); +float getSubpixelValue(const cv::Mat &im_grey,const cv::Point2f &p); +uint64_t touulong(const cv::Mat& code); +cv::Mat rotate(const cv::Mat& in); +int hamm_distance(uint64_t a, uint64_t b); +cv::Rect getRectFrom4Points(std::vectorpoints, cv::Size imSize=cv::Size(), bool imFit=false); +void cornerClassifier(const cv::Mat &im, std::vector points,std::vector& corner_class, int wsize); + + +struct FrameMatchLocation{ + cv::Mat first; + cv::Mat second; + std::string frame; + double error; +}; + +cv::Mat rigidBodyTransformation_Horn1987 (const std::vector &org, const std::vector &dst,bool mbFixScale); +cv::Mat alignAndScaleToGroundTruth(std::vector >_other ); + + +#endif // DFC_UTILS_H diff --git a/thirdparty/aruco-3.1.12/src/dcf/dcfmarkermaptracker.cpp b/thirdparty/aruco-3.1.12/src/dcf/dcfmarkermaptracker.cpp new file mode 100644 index 0000000..4bbdf25 --- /dev/null +++ b/thirdparty/aruco-3.1.12/src/dcf/dcfmarkermaptracker.cpp @@ -0,0 +1,542 @@ +#include "dcfmarkermaptracker.h" +#include "aruco.h" +#include "levmarq.h" +#include "ippe.h" +#include "dictionary_based.h" +#include +#include "dcf_utils.h" +#include +#include "aruco_cvversioning.h" +namespace aruco { + +cv::Mat impl__aruco_getRTMatrix(const cv::Mat& _rvec, const cv::Mat& _tvec) +{ + assert(_rvec.type()==CV_32F && _rvec.total()==3); + assert(_tvec.type()==CV_32F && _tvec.total()==3); + + cv::Mat Matrix(4,4,CV_32F); + float *rt_44=Matrix.ptr(0); + //makes a fast conversion to the 4x4 array passed + float rx=_rvec.ptr(0)[0]; + float ry=_rvec.ptr(0)[1]; + float rz=_rvec.ptr(0)[2]; + float tx=_tvec.ptr(0)[0]; + float ty=_tvec.ptr(0)[1]; + float tz=_tvec.ptr(0)[2]; + float nsqa=rx*rx + ry*ry + rz*rz; + float a=std::sqrt(nsqa); + float i_a=a?1./a:0; + float rnx=rx*i_a; + float rny=ry*i_a; + float rnz=rz*i_a; + float cos_a=cos(a); + float sin_a=sin(a); + float _1_cos_a=1.-cos_a; + rt_44[0] =cos_a+rnx*rnx*_1_cos_a; + rt_44[1]=rnx*rny*_1_cos_a- rnz*sin_a; + rt_44[2]=rny*sin_a + rnx*rnz*_1_cos_a; + rt_44[3]=tx; + rt_44[4]=rnz*sin_a +rnx*rny*_1_cos_a; + rt_44[5]=cos_a+rny*rny*_1_cos_a; + rt_44[6]= -rnx*sin_a+ rny*rnz*_1_cos_a; + rt_44[7]=ty; + rt_44[8]= -rny*sin_a + rnx*rnz*_1_cos_a; + rt_44[9]= rnx*sin_a + rny*rnz*_1_cos_a; + rt_44[10]=cos_a+rnz*rnz*_1_cos_a; + rt_44[11]=tz; + rt_44[12]=rt_44[13]=rt_44[14]=0; + rt_44[15]=1; + return Matrix; +} + +void impl__aruco_getRTfromMatrix44(const cv::Mat& M, cv::Mat& R, cv::Mat& T) +{ + assert(M.cols == M.rows && M.cols == 4); + assert(M.type() == CV_32F || M.type() == CV_64F); + // extract the rotation part + cv::Mat r33 = cv::Mat(M, cv::Rect(0, 0, 3, 3)); + cv::SVD svd(r33); + cv::Mat Rpure = svd.u * svd.vt; + cv::Rodrigues(Rpure, R); + T.create(1, 3, M.type()); + if (M.type() == CV_32F) + for (int i = 0; i < 3; i++) + T.ptr(0)[i] = M.at(i, 3); + else + for (int i = 0; i < 3; i++) + T.ptr(0)[i] = M.at(i, 3); +} + + inline double hubberMono(double e){ + if (e <= 5.991) { // inlier + return e; + } else // outlier + return 4.895303872*sqrt(e) - 5.991; // rho(e) = 2 * delta * e^(1/2) - delta^2 + } + + inline double getHubberMonoWeight(double SqErr,double Information){ + return sqrt(hubberMono(Information * SqErr)/ SqErr); + } + + template + double __aruco_solve_pnp(const std::vector& p3d, const std::vector& p2d, const std::vector&trust_weight, + const cv::Mat& cam_matrix, const cv::Mat& dist, cv::Mat& r_io, cv::Mat& t_io, bool hubber=true) + { + assert(r_io.type() == CV_32F); + assert(t_io.type() == CV_32F); + assert(t_io.total() == r_io.total()); + assert(t_io.total() == 3); + auto toSol = [](const cv::Mat& r, const cv::Mat& t) { + typename LevMarq::eVector sol(6); + for (int i = 0; i < 3; i++) + { + sol(i) = r.ptr(0)[i]; + sol(i + 3) = t.ptr(0)[i]; + } + return sol; + }; + auto fromSol = [](const typename LevMarq::eVector& sol, cv::Mat& r, cv::Mat& t) { + r.create(1, 3, CV_32F); + t.create(1, 3, CV_32F); + for (int i = 0; i < 3; i++) + { + r.ptr(0)[i] = sol(i); + t.ptr(0)[i] = sol(i + 3); + } + }; + + cv::Mat Jacb; + auto err_f = [&](const typename LevMarq::eVector& sol, typename LevMarq::eVector& err) { + std::vector p2d_rej; + cv::Mat r, t; + fromSol(sol, r, t); + cv::projectPoints(p3d, r, t, cam_matrix, dist, p2d_rej, Jacb); + err.resize(p3d.size() * 2); + int err_idx = 0; + for (size_t i = 0; i < p3d.size(); i++) + { + cv::Point2f errP=p2d_rej[i] -p2d[i]; + + + if(hubber) + { + double SqErr=(errP.x*errP.x+ errP.y*errP.y); + + float robuse_weight= getHubberMonoWeight(SqErr*trust_weight[int(i/4)],1); + err(err_idx++) = robuse_weight* errP.x; + err(err_idx++) = robuse_weight* errP.y; + } + else + { + err(err_idx++) = errP.x; + err(err_idx++) = errP.y; + } + } + }; + auto jac_f = [&](const typename LevMarq::eVector& sol, Eigen::Matrix& J) { + (void)(sol); + J.resize(p3d.size() * 2, 6); + for (size_t i = 0; i < p3d.size() * 2; i++) + { + double* jacb = Jacb.ptr(i); + for (int j = 0; j < 6; j++) + J(i, j) = jacb[j]; + } + }; + + LevMarq solver; + solver.setParams(100, 0.01, 0.01); + // solver.verbose()=true; + typename LevMarq::eVector sol = toSol(r_io, t_io); + auto err = solver.solve(sol, err_f, jac_f); + + fromSol(sol, r_io, t_io); + return err; + } + + + double __hub_solve_pnp(const std::vector& p3d, const std::vector& p2d, const std::vector&trust_weight, + const cv::Mat& cam_matrix, const cv::Mat& dist, cv::Mat& r_io, cv::Mat& t_io, float hubber=true) + { + return __aruco_solve_pnp(p3d, p2d, trust_weight, cam_matrix, dist, r_io, t_io, hubber); + } + + DFCMarkerMapTracker::DFCMarkerMapTracker() + { + + } + + void DFCMarkerMapTracker::loadParamsFromFile(const std::string &path) + { + cv::FileStorage fs(path, cv::FileStorage::READ); + if(!fs.isOpened())throw std::runtime_error("Could not open "+path); + + if ( fs["dcf-detectRate"].type()!=cv::FileNode::NONE) + fs["dcf-detectRate"]>>arucoDetectRate; + if ( fs["dcf-tau_c"].type()!=cv::FileNode::NONE) + fs["dcf-tau_c"]>>tau_c; + if ( fs["dcf-psr"].type()!=cv::FileNode::NONE) + fs["dcf-psr"]>>psr; + if ( fs["dcf-tau_s"].type()!=cv::FileNode::NONE) + fs["dcf-tau_s"]>>tau_s; + + TheDetector.loadParamsFromFile(path); + } + + void DFCMarkerMapTracker::setDictionary(const std::string &dict, float error_corretion_rate) + { + TheDetector.setDictionary(dict, error_corretion_rate); + } + + bool DFCMarkerMapTracker::prediction(std::vector&p3d, std::vector&p2d) + { + bool updated=false; + cv::Mat RTMatrix = impl__aruco_getRTMatrix(_rvec, _tvec); + +//#define _show_prj +#ifdef _show_prj + cv::Mat imColor; + cv::cvtColor(grey, imColor, CV_GRAY2BGR); +#endif + + for(auto m:_map_mm) + { + //It is not necessary to analyze tracked markers + if(mapMultiTracker.find(m.first) != mapMultiTracker.end()) + { +#ifdef _show_prj + + for(auto c:mapMultiTracker[m.first]->getCorners()) + cv::circle(imColor,c,5,cv::Scalar(0,0,255),-1); +#endif + continue; + } + + //For a marker, number of corners that may bse visible + int c=0; + for(auto pt:m.second.points) + { + cv::Mat_ src(4,1,RTMatrix.type()); + src(0,0)=pt.x;src(1,0)=pt.y;src(2,0)=pt.z;src(3,0)=1; + cv::Mat cam_image_point = RTMatrix * src; + cam_image_point = cam_image_point/cv::norm(cam_image_point); + if(cam_image_point.at(2,0)>0.75) + c++; + else break; + } + + if(c==4) + { + std::vector prj_points; + cv::projectPoints(m.second.points, _rvec, _tvec, _cam_params.CameraMatrix, _cam_params.Distorsion, prj_points); + + cv::Rect roi = getRectFrom4Points(prj_points, grey.size()); + if(roi.empty()) + continue; + +#ifdef _show_prj + + for(auto cc:prj_points) + cv::circle(imColor,cc,5,cv::Scalar(255,0,0),-1); +#endif + + //Add border + cv::Point2f tl = cv::Point(roi.tl().x-roi.width*0.5f, roi.tl().y-roi.height*0.5f); + if(tl.x<0) tl.x=0; + if(tl.y<0) tl.y=0; + cv::Point2f br = cv::Point(roi.br().x+roi.width*0.5f, roi.br().y+roi.height*0.5f); + if(br.x>grey.size().width) br.x=grey.size().width; + if(br.y>grey.size().height) br.y=grey.size().height; + + cv::Rect roi_border = cv::Rect(tl,br); + cv::Mat patch = grey(roi_border); + cv::threshold(patch, patch, 125, 255, cv::THRESH_BINARY | cv::THRESH_OTSU); + std::vector> contours; + cv::findContours(patch,contours, cv::noArray(), cv::RETR_LIST, cv::CHAIN_APPROX_NONE); +#ifdef _show_prj + cv::Mat patchColor; + cv::cvtColor(patch, patchColor, CV_GRAY2BGR); +#endif + std::vector approxCurve; + for(unsigned int i = 0; i < contours.size(); i++) + { + cv::approxPolyDP(contours[i], approxCurve, double(contours[i].size()) * 0.05, true); + if (approxCurve.size() == 4 && cv::isContourConvex(approxCurve)) + { + std::vectorcorner_class; + cornerClassifier(patch, approxCurve, corner_class, 2); +// std::cout <<"corner class "<< corner_class[0]<<","<< corner_class[1]<<","< idx4rot; + if(!getMarkerIds(patch, dict.nbits(), approxCurve, idx4rot)) + continue; + else + { + uint64_t code; + for(auto _code_id:dict.getMapCode()) + if(_code_id.second == m.first) + { + code =_code_id.first; + break; + } + + int hamm_dst = dict.nbits(); + unsigned int rotations=0; + for(unsigned int r=0; r<4; r++) + { + int tmp = hamm_distance(idx4rot[r], code); + if(tmp < hamm_dst) + { + hamm_dst = tmp; + rotations = r; + } + } + + int _maxCorrectionAllowed = static_cast( static_cast(dict.tau()) * 0.6); + if(hamm_dst<=_maxCorrectionAllowed) + { + //*** + // for(int jj=0;jj<4; jj++) + // cv::putText(patchColor, std::to_string(jj),approxCurve[jj], 1,1, cv::Scalar(0,0,255),0); + + // std::cout << "New tracker id "< DFCMarkerMapTracker::getDictionaries() + { + return TheDetector.getMarkerLabeler().dynamicCast()->getDictionaries(); + } + + void DFCMarkerMapTracker::track(const cv::Mat& input) + { + __ARUCO_ADDTIMER__; + + if (input.type() == CV_8UC3) + cv::cvtColor(input,grey,CV_BGR2GRAY); + else grey = input; + + __ARUCO_TIMER_EVENT__("ConvertGrey"); + + std::vector detectedMarkers; + if(frame%arucoDetectRate == 0 || hull_factor>::iterator it; + for(it=mapMultiTracker.begin(); it!=mapMultiTracker.end(); ++it) + { + bool update=true; + for(auto marker:detectedMarkers) + if(marker.id == it->first) + { + update = false; + break; + } + + if(update) + if(!it->second->updateImpl(grey)) + mapMultiTracker.erase(it); + } + __ARUCO_TIMER_EVENT__("DCF_Update"); + + + frame ++; + } + + + bool DFCMarkerMapTracker::estimatePose() + { + ScopedTimerEvents Timer("aruco::DFCMarkerMapTracker::estimatePose"); + + + cv::Mat _prevr,_prevt; + if (!getRvec().empty()){ + _prevr=getRvec().clone(); + _prevt=getTvec().clone(); + } + + std::vector p2d; + std::vector p3d; + std::vector trust_weight; + + //Tracked markers + for (auto tm : mapMultiTracker) + { + if (_map_mm.find(tm.first) != _map_mm.end()) + { + float confidence = tm.second->getTrustVal(); + if(confidence > 0) + { + std::vector corners = tm.second->getCorners(); + for(auto c:corners) + p2d.push_back(c); + + if(corners.size() == 1) + { + cv::Point3f cent(0.f, 0.f, 0.f); + for (auto p : _map_mm[tm.first].points) + { + cent.x += p.x; + cent.y += p.y; + cent.z += p.z; + } + cent.x /= 4.f; + cent.y /= 4.f; + cent.z /= 4.f; + + p3d.push_back(cent); + } + else + { + for (auto p : _map_mm[tm.first].points) + p3d.push_back(p); + } + + trust_weight.push_back(confidence); + } + } + } + + if (p2d.size() < 4) + { + // no points in the vector + _rvec = cv::Mat(); + _tvec = cv::Mat(); + hull_factor=-1; + + return false; + } + else + { + if(_rvec.empty()) + { + std::vector vmarker; + for (auto tm : mapMultiTracker) + vmarker.push_back(tm.second->getMarker()); + auto InitialPose=relocalization(vmarker); + + if(InitialPose.empty()) + { + hull_factor=-1; + return false; + } + impl__aruco_getRTfromMatrix44(InitialPose,_rvec,_tvec); + } + + __hub_solve_pnp(p3d,p2d,trust_weight,_cam_params.CameraMatrix, _cam_params.Distorsion, _rvec, _tvec); + + Timer.add("PoseEstimation"); + //Update with new predicted markers!! + if(prediction(p3d, p2d)) + __hub_solve_pnp(p3d,p2d,trust_weight,_cam_params.CameraMatrix, _cam_params.Distorsion, _rvec, _tvec); + Timer.add("Prediction"); + + std::vector hull; + cv::convexHull(p2d, hull); + hull_factor=cv::contourArea(hull)/grey.size().area(); + + return true; + } + } + + void DFCMarkerMapTracker::drawMarkers(cv::Mat& img, float alpha, float trust) + { + int lineSize = img.cols/700; + + for(auto m:mapMultiTracker) + { + //The color of the marker depends on the confidence level (threshold alpha) + cv::Scalar color; + if(m.second->getTrustVal() > alpha) + color = cv::Scalar(0,0, 255); + else + color =cv::Scalar(255,0, 255); + + //Marker border + m.second->getMarker().draw(img, color, lineSize, false, false); + + //Marker info (id, confidence) + std::ostringstream txt; + txt << m.second->getMarker().id; + if(trust) txt <<",w:"<getTrustVal(); + cv::putText(img,txt.str(),m.second->getCenter(), cv::FONT_HERSHEY_SIMPLEX, 1, + color, lineSize); + } + } +} diff --git a/thirdparty/aruco-3.1.12/src/dcf/dcfmarkermaptracker.h b/thirdparty/aruco-3.1.12/src/dcf/dcfmarkermaptracker.h new file mode 100644 index 0000000..51c036a --- /dev/null +++ b/thirdparty/aruco-3.1.12/src/dcf/dcfmarkermaptracker.h @@ -0,0 +1,36 @@ +#include "markerdetector.h" +#include "posetracker.h" +#include "trackerimpl.h" + + +namespace aruco { + +class ARUCO_EXPORT DFCMarkerMapTracker : public MarkerMapPoseTracker +{ +public: + DFCMarkerMapTracker(); + void loadParamsFromFile(const std::string &path); + void setDictionary(const std::string &dict, float error_corretion_rate= 0); + std::vector getDictionaries(); + MarkerDetector& getDetector(){return TheDetector;} + void track(const cv::Mat& input); + bool estimatePose(); + void drawMarkers(cv::Mat& img, float alpha=0.8, float trust=true); + bool prediction(std::vector&p3d, std::vector&pd2); + + +private: + MarkerDetector TheDetector; + std::map> mapMultiTracker; + int frame=0; + cv::Mat grey; + double hull_factor; + + //To config + int arucoDetectRate = 10; //Rate to call aruco detect + float tau_c = 0.1; //Threshold hull_factor (tau_c paper) + //Tracker params + double psr=5.7; //threshold peak response + int tau_s=32; //filter size +}; +} diff --git a/thirdparty/aruco-3.1.12/src/dcf/dcfmarkertracker.cpp b/thirdparty/aruco-3.1.12/src/dcf/dcfmarkertracker.cpp new file mode 100644 index 0000000..32541e8 --- /dev/null +++ b/thirdparty/aruco-3.1.12/src/dcf/dcfmarkertracker.cpp @@ -0,0 +1,148 @@ +#include "dcfmarkertracker.h" +#include "aruco.h" +#include "levmarq.h" //solve pnp of opencv is not trustworthy. Create our own + +#include "../ippe.h" +#include "dictionary_based.h" +#include "aruco_cvversioning.h" + +namespace aruco { + + DFCMarkerTracker::DFCMarkerTracker() + { + } + + + void DFCMarkerTracker::setParams(const aruco::CameraParameters& camPar, float mSize) + { + CamParam = camPar; + MarkerSize = mSize; + } + + std::vector DFCMarkerTracker::getDictionaries() + { + return TheDetector.getMarkerLabeler().dynamicCast()->getDictionaries(); + } + + void DFCMarkerTracker::loadParamsFromFile(const std::string &path) + { + cv::FileStorage fs(path, cv::FileStorage::READ); + if(!fs.isOpened())throw std::runtime_error("Could not open "+path); + + if ( fs["dcf-detectRate"].type()!=cv::FileNode::NONE) + fs["dcf-detectRate"]>>arucoDetectRate; + if ( fs["dcf-psr"].type()!=cv::FileNode::NONE) + fs["dcf-psr"]>>psr; + if ( fs["dcf-tau_s"].type()!=cv::FileNode::NONE) + fs["dcf-tau_s"]>>tau_s; + + TheDetector.loadParamsFromFile(path); + } + + void DFCMarkerTracker::setDictionary(const std::string &dict, float error_corretion_rate) + { + TheDetector.setDictionary(dict, error_corretion_rate); + } + + std::map> DFCMarkerTracker::track(const cv::Mat& input, float thresh_confidence) + { + ScopedTimerEvents Timer("DFCMarkerTracker::track"); + + cv::Mat grey; + if (input.type() == CV_8UC3) + cv::cvtColor(input,grey,CV_BGR2GRAY); + else grey = input; + + Timer.add("ConvertGrey"); + + //Aruco marker detection. Refresh list trackers. + std::vector detectedMarkers; + if(frame%arucoDetectRate == 0 || mapMultiTracker.size()==0) + { + detectedMarkers=TheDetector.detect(grey); + std::cout << "ArUco Detected: "<< detectedMarkers.size() <<" new markers"<< std::endl; + } + + Timer.add("ArucoDetect"); + + //Update markers + std::map>::iterator it; + for(it=mapMultiTracker.begin(); it!=mapMultiTracker.end(); ++it) + { + if(!it->second->updateImpl(grey, thresh_confidence)) + mapMultiTracker.erase(it); + } + + Timer.add("DCF_Update"); + + //Initialize filters for detected markers + std::map> mapNewDetections; + for(auto marker:detectedMarkers) + { + for(auto d:getDictionaries()) + { + // Dictionary to which the marker belongs + if(d.getName() == marker.dict_info) + { + for(auto c_id : d.getMapCode()) + { + //Find marker by its id + if(c_id.second == marker.id) + { + //New tracker! + mapMultiTracker[marker.id] = new TrackerImpl(marker, c_id.first, d.nbits(), grey, psr, tau_s); + break; + } + } + } + } + } + Timer.add("DCF_Prepare"); + frame ++; + + return mapMultiTracker; + } + + void DFCMarkerTracker::estimatePose() + { + if(CamParam.isValid() && MarkerSize>0) + { + ScopedTimerEvents Timer("aruco::DFCMarkerTracker::estimatePose"); + + for(auto m:mapMultiTracker) + mapMultiPose[m.first].estimatePose(m.second->getMarker(), CamParam, MarkerSize); + + Timer.add("pose"); + } + } + + void DFCMarkerTracker::draw(cv::Mat& img, cv::Scalar borderColor,cv::Scalar infoColor, bool trust) + { + for(auto m:mapMultiTracker) + { + Marker marker = m.second->getMarker(); + int lineSize = img.cols/700; + + //Marker info (id, confidence) + std::ostringstream txt; + txt << m.second->getMarker().id; + if(trust) txt <<",w:"<getTrustVal(); + cv::putText(img,txt.str(),m.second->getCenter(), cv::FONT_HERSHEY_SIMPLEX, 2, + infoColor, lineSize); + + //Box and axis + if (CamParam.isValid() && MarkerSize != -1) + { + if (m.second->getMarker().isPoseValid()){ + CvDrawingUtils::draw3dCube(img, marker, CamParam, lineSize); + CvDrawingUtils::draw3dAxis(img, marker, CamParam, lineSize); + } + } + else + { + //Marker border + marker.draw(img, borderColor, lineSize, false, false); + } + } + } +} diff --git a/thirdparty/aruco-3.1.12/src/dcf/dcfmarkertracker.h b/thirdparty/aruco-3.1.12/src/dcf/dcfmarkertracker.h new file mode 100644 index 0000000..0d6683b --- /dev/null +++ b/thirdparty/aruco-3.1.12/src/dcf/dcfmarkertracker.h @@ -0,0 +1,38 @@ +#include "markerdetector.h" +#include "posetracker.h" +#include "trackerimpl.h" + + +namespace aruco { + +class ARUCO_EXPORT DFCMarkerTracker +{ +public: + DFCMarkerTracker(); + void setParams(const aruco::CameraParameters& camPar, const float mSize); + void loadParamsFromFile(const std::string &path); + void setDictionary(const std::string &dict, float error_corretion_rate= 0); + + MarkerDetector& getDetector(){return TheDetector;} + std::map> track(const cv::Mat& input, float thresh_confidence=0.f); + std::vector getDictionaries(); + void estimatePose(); + void draw(cv::Mat&img, cv::Scalar borderColor = cv::Scalar(0,0,255), cv::Scalar inforColor = cv::Scalar(255,0,255), bool trust=true); + std::map getMapMultiPose(){return mapMultiPose;}; + +private: + MarkerDetector TheDetector; + std::map> mapMultiTracker; + std::map mapMultiPose; + int frame=0; + aruco::CameraParameters CamParam; + float MarkerSize; + + //To config + int arucoDetectRate = 10; //Rate to call aruco detect + + //Tracker params + double psr=5.7; //threshold peak response + int tau_s=32; //filter size +}; +} diff --git a/thirdparty/aruco-3.1.12/src/dcf/trackerimpl.cpp b/thirdparty/aruco-3.1.12/src/dcf/trackerimpl.cpp new file mode 100644 index 0000000..97f8af9 --- /dev/null +++ b/thirdparty/aruco-3.1.12/src/dcf/trackerimpl.cpp @@ -0,0 +1,594 @@ +#include "trackerimpl.h" +#include "bitset" +#include "opencv2/calib3d/calib3d.hpp" +#include "dcf_utils.h" + +TrackerImpl::TrackerImpl(const Marker& marker, uint64_t code, uint32_t dic_bits, const cv::Mat& image, double psr, int tau_s) +{ + psrThreshold = psr; + markerWarpSize = tau_s; + cornerPatchSize = cv::Size(tau_s, tau_s); + + TheMarkerCode = code; + nbits = dic_bits; + TheMarker = marker; + prepare(marker, image); +} + + +TrackerImpl::~TrackerImpl() +{ + +} + + +void TrackerImpl::prepare(const Marker& marker,const cv::Mat& image) +{ + int minX=std::numeric_limits::max(), maxX=std::numeric_limits::min(), + minY=std::numeric_limits::max(), maxY=std::numeric_limits::min(); + + for(auto pt:marker) + { + if(pt.xmaxX) maxX=pt.x; + if(pt.y>maxY) maxY=pt.y; + + center.x += pt.x; + center.y += pt.y; + } + + boundingBox = cv::Rect2d(cv::Point2d(minX,minY),cv::Point2d(maxX,maxY)); + center.x /= marker.size(); + center.y /= marker.size(); + + double desiredarea = std::pow(markerWarpSize, 2.f); + double boundingBoxArea = boundingBox.area(); + double pyrfactor2 = pow(pyrfactor, 2); + + int p = 1; + while (boundingBoxArea / pow(pyrfactor2, p) >= desiredarea) + imgPyrIdx = p++; + + int s = int(floor(markerWarpSize * (1+padding))); + patchSize = cv::Size(s, s); + if(contextAware) + s = int(floor(2*markerWarpSize + s)); + roiSize = cv::Size(s, s); + + int realRoiSize = int(floor(s * pow(pyrfactor, imgPyrIdx))); + cv::getRectSubPix(image, cv::Size(realRoiSize, realRoiSize), center, roi); + cv::resize(roi,roi,roiSize); + +// cv::imshow("roi", roi); +// cv::waitKey(); +} + +bool TrackerImpl::initImpl() +{ + if(roi.empty()) + return false; + + ScopedTimerEvents Timer("TrackerImpl::initImpl"); + + createHanningWindow(hanWin, patchSize, CV_32F); + + // goal + cv::Mat g=cv::Mat::zeros(patchSize, CV_32F); + g.at(patchSize.height/2, patchSize.width/2) = 1; + GaussianBlur(g, g, cv::Size(-1,-1), 2.0); + double maxVal; + minMaxLoc(g, 0, &maxVal); + g = g / maxVal; + dft(g, G, cv::DFT_COMPLEX_OUTPUT); + + cv::Mat patch; + //Get the center position + int x = int(floor((roi.cols)/2)); + int y = int(floor((roi.rows)/2)); + cv::Point2f patchCenter(x,y); + getRectSubPix(roi, patchSize, patchCenter, patch); + + // initial A,B and H + A = cv::Mat::zeros(G.size(), G.type()); + B = cv::Mat::zeros(G.size(), G.type()); + C = cv::Mat::zeros(G.size(), G.type()); + cv::Mat WINDOW_WARP, A_i, B_i,C_i; + for(int i=0; i<8; i++) + { + cv::Mat window_warp = randWarp(patch); + preProcess(window_warp, hanWin); + dft(window_warp, WINDOW_WARP, cv::DFT_COMPLEX_OUTPUT); + mulSpectrums(G , WINDOW_WARP, A_i, 0, true); + mulSpectrums(WINDOW_WARP, WINDOW_WARP, B_i, 0, true); + A+=A_i; + B+=B_i; + } + + //now the context + if(contextAware){ + for(int i=0;i<4;i++){ + auto center2=center/pow(pyrfactor, imgPyrIdx); + if( i==0) center2.x+=patchSize.width; + else if(i==1)center2.x-=patchSize.width; + else if( i==2) center2.y+=patchSize.height; + else if(i==3)center2.y-=patchSize.height; + + cv::Mat sub_win; + getRectSubPix(roi, patchSize, center2, sub_win); preProcess(sub_win, hanWin); + dft(sub_win, WINDOW_WARP, cv::DFT_COMPLEX_OUTPUT); + mulSpectrums(WINDOW_WARP, WINDOW_WARP, C_i, 0, true); + C+=C_i; + } + H = divDFTs(A,lambda1+B+lambda2*C); + } + else + H = divDFTs(A,lambda1+B); + + + //Corners!! + createHanningWindow(cornerhanWin, cornerPatchSize, CV_32F); + // goal + cv::Mat gc=cv::Mat::zeros(cornerPatchSize,CV_32F); + gc.at(cornerPatchSize.height/2, cornerPatchSize.width/2) = 1; + GaussianBlur(gc, gc, cv::Size(-1,-1), 2.0); + double maxValc; + minMaxLoc(gc, 0, &maxValc); + gc = gc / maxValc; + dft(gc, Gc, cv::DFT_COMPLEX_OUTPUT); + + // initial corners A,B and H + for(size_t i=0;i<4;i++) + { + Ac.push_back(cv::Mat::zeros(Gc.size(), Gc.type())); + Bc.push_back(cv::Mat::zeros(Gc.size(), Gc.type())); + + cv::Mat sub_win; + cv::Point2d p = patchCenter - (center - TheMarker[i])/pow(pyrfactor, imgPyrIdx); + getRectSubPix(roi, cornerPatchSize, p, sub_win); +// cv::imshow("Roi",roi); +// cv::waitKey(); +// cv::imshow("Patch corner",sub_win); +// cv::waitKey(); + preProcess(sub_win, cornerhanWin); + dft(sub_win, WINDOW_WARP, cv::DFT_COMPLEX_OUTPUT); + mulSpectrums(Gc , WINDOW_WARP, A_i, 0, true); + mulSpectrums(WINDOW_WARP, WINDOW_WARP, B_i, 0, true); + Ac[i]+=A_i; + Bc[i]+=B_i; + Hc.push_back(divDFTs(Ac[i],lambda1+Bc[i])); + } + + return true; +} + +bool TrackerImpl::updateImpl(const cv::Mat& image, float thrs_confidence) +{ + //If H empty try init + if(H.empty()) + if(!initImpl()) + return false; + +// std::cout << "### Update Marker ID : "<< TheMarker.id< psrThreshold) + { + goodCorners++; + TheMarker[i].x += delta_xy.x*pow(pyrfactor, imgPyrIdx); + TheMarker[i].y += delta_xy.y*pow(pyrfactor, imgPyrIdx); + } + } + + if(goodCorners == 4) + { + buildCornersPyramid(image); + cornerUpsample(TheMarker); + + for(size_t i=0;i<4;i++) + { + cv::Point2f cornerOffset = roiCenter + ((TheMarker[i] - center)/pow(pyrfactor, imgPyrIdx)); + getRectSubPix(roi, cornerPatchSize, cornerOffset, img_sub_new); + preProcess(img_sub_new, cornerhanWin); + + // new state for A and B + cv::Mat F, A_new, B_new,C_new; + C_new=cv::Mat::zeros(Gc.size(), Gc.type()); + + dft(img_sub_new, F, cv::DFT_COMPLEX_OUTPUT); + mulSpectrums(Gc, F, A_new, 0, true ); + mulSpectrums(F, F, B_new, 0, true ); + + // update A ,B, and H + Ac[i] = Ac[i]*(1-rate) + A_new*rate; + Bc[i] = Bc[i]*(1-rate) + B_new*rate; + Hc[i] = divDFTs(Ac[i], lambda1+Bc[i]); + } + } + + float minX=std::numeric_limits::max(), maxX=std::numeric_limits::min(), + minY=std::numeric_limits::max(), maxY=std::numeric_limits::min(); + cv::Point2f newCenter(0,0); + cv::Rect2f newBox; + int hamm_dst = nbits; + + + for(size_t i=0;i<4;i++) + { + if(TheMarker[i].xmaxX) maxX=TheMarker[i].x; + if(TheMarker[i].y>maxY) maxY=TheMarker[i].y; + newCenter.x+=TheMarker[i].x; + newCenter.y+=TheMarker[i].y; + } + + newBox = cv::Rect2f(cv::Point2f(minX,minY),cv::Point2f(maxX,maxY)); + if(goodCorners == 4) + { + center.x = newCenter.x/4; + center.y = newCenter.y/4; + + double desiredarea = std::pow(markerWarpSize, 2.f); + double pyrfactor2 = pow(pyrfactor,2); + int p = 1; + while (newBox.area() / pow(pyrfactor2, p) >= desiredarea) + imgPyrIdx = p++; + } + + //Check box edges out image + if(newBox.tl().x < 0.f) newBox.x = 0.f; + if(newBox.tl().y < 0.f) newBox.y = 0.f; + if(newBox.br().x >= image.cols) newBox.width = image.cols - newBox.tl().x; + if(newBox.br().y >= image.rows) newBox.height = image.rows - newBox.tl().y; + ////// + // cv::Mat out; + // cv::cvtColor(image, out, cv::COLOR_GRAY2BGR); + // for(auto pt:TheMarker) + // { + // std::cout << "PT:"<< pt << std::endl; + // cv::circle(out,pt,1,cv::Scalar(0,0,255),-1); + // } + // cv::rectangle(out,newBox,cv::Scalar(0,0,255)); + // std::cout << "BOX:"<< newBox << std::endl; + // cv::imshow("Marker",out); + // cv::waitKey(); + /////// + + + cv::Mat markerThres; + cv::threshold(image(newBox), markerThres, 125, 255, cv::THRESH_BINARY | cv::THRESH_OTSU); + + //Transform marker corners to subImage + std::vector im_corner; + im_corner.push_back(cv::Point2f(TheMarker[0].x-newBox.tl().x, TheMarker[0].y-newBox.tl().y)); + im_corner.push_back(cv::Point2f(TheMarker[1].x-newBox.tl().x, TheMarker[1].y-newBox.tl().y)); + im_corner.push_back(cv::Point2f(TheMarker[2].x-newBox.tl().x, TheMarker[2].y-newBox.tl().y)); + im_corner.push_back(cv::Point2f(TheMarker[3].x-newBox.tl().x, TheMarker[3].y-newBox.tl().y)); + + std::vector rot_ids; + if(!getMarkerIds(markerThres, nbits, im_corner, rot_ids)) + return false; + + +// cv::Mat out; +// cv::cvtColor(markerThres, out, cv::COLOR_GRAY2BGR); +// for(auto pt:vpixels) +// cv::circle(out,pt,1,cv::Scalar(0,0,255),-1); +// cv::imshow("pxis"+std::to_string(TheMarker.id),out); +// cv::waitKey(); + + //Best distance in its 4 rotations + for(auto id:rot_ids) + { + int tmp = hamm_distance(id, TheMarkerCode); + if(tmp < hamm_dst) + hamm_dst = tmp; + } + + //Marker confidence + trust = std::fabs(goodCorners * (hamm_dst/float(nbits) - 1.f)/4); + if(trust < thrs_confidence) + return false; + } + Timer.add("track-corners"); + + + getRectSubPix(roi, patchSize, roiCenter, img_sub_new); + +// cv::imshow("roi", roi); +// cv::waitKey(); +// cv::imshow("pathc", warpmarker); +// cv::waitKey(); + + + if (img_sub_new.channels() != 1) + cvtColor(img_sub_new, img_sub_new, cv::COLOR_BGR2GRAY); + preProcess(img_sub_new, hanWin); + + // new state for A and B + cv::Mat F, A_new, B_new,C_new; + C_new=cv::Mat::zeros(G.size(), G.type()); + + dft(img_sub_new, F, cv::DFT_COMPLEX_OUTPUT); + mulSpectrums(G, F, A_new, 0, true ); + mulSpectrums(F, F, B_new, 0, true ); + + // update A ,B + A = A*(1-rate) + A_new*rate; + B = B*(1-rate) + B_new*rate; + + //Update C if contextAware + if(contextAware){ + cv::Mat C_i,window,WINDOW_WARP; + for(int i=0;i<4;i++){ + auto center2=roiCenter; + if( i==0) center2.x+=patchSize.width; + else if(i==1)center2.x-=patchSize.width; + else if( i==2) center2.y+=patchSize.height; + else if(i==3)center2.y-=patchSize.height; + + getRectSubPix(roi, patchSize, center2, window); + if(window.channels()!=1)cvtColor(window, window, cv::COLOR_BGR2GRAY); + preProcess(window, hanWin); + dft(window, WINDOW_WARP, cv::DFT_COMPLEX_OUTPUT); + mulSpectrums(WINDOW_WARP, WINDOW_WARP, C_i, 0, true); + C+=C_i; + } + + C = C*(1-rate) + C_new*rate; + H = divDFTs(A, lambda1+B+lambda2*C); + } + else + H = divDFTs(A, lambda1+B); + + Timer.add("track-marker"); + + + // Tracked rect + double halfwindowSize = markerWarpSize*pow(pyrfactor, imgPyrIdx)*0.5; + boundingBox = cv::Rect2d(cv::Point2d(center.x-halfwindowSize, center.y-halfwindowSize), + cv::Point2d(center.x+halfwindowSize, center.y+halfwindowSize)); + + return true; +} + +bool TrackerImpl::optimalScale(const cv::Mat& image, cv::Point2f& roiCenter) +{ + if(center.x < 0 || center.x>image.cols ||center.y<0 || center.y>image.rows) + return false; + + //Top and bottom level in the pyramid + int tl = imgPyrIdx-int(multiScaleLevels/2); + if(tl<0) tl = 0; + int bl = imgPyrIdx+int(multiScaleLevels/2); + + cv::Mat region; + cv::Size regionSize = cv::Size(int(floor(roiSize.width*pow(pyrfactor,imgPyrIdx))), int(floor(roiSize.height*pow(pyrfactor,imgPyrIdx)))); + getRectSubPix(image, regionSize, center, region); + + double bestPSR=0; + cv::Point newDelta_xy(0,0); + for(int p=tl; p<=bl; p++) + { + cv::Size nsize(regionSize.width/pow(pyrfactor,p), regionSize.height/pow(pyrfactor,p)); + cv::resize(region, region, nsize); + + cv::Mat image_sub; + getRectSubPix(region, patchSize, cv::Point2d(region.rows*0.5,region.cols*0.5), image_sub); +// cv::imshow("Pathc", image_sub); + preProcess(image_sub, hanWin); + cv::Point delta_xy; + double PSR = correlate(image_sub, delta_xy, H); + +// std::cout < bestPSR){ + bestPSR = PSR; + imgPyrIdx = p; + newDelta_xy = delta_xy; + region.copyTo(roi); + } + } + + //Update ROI center + roiCenter = cv::Point2d(roi.rows*0.5+newDelta_xy.x,roi.cols*0.5+newDelta_xy.y); + + //Delta in original image + newDelta_xy = newDelta_xy*pow(pyrfactor,imgPyrIdx); + + //Apply shift + center.x += newDelta_xy.x; + center.y += newDelta_xy.y; + for(auto &c:TheMarker){ + c.x += newDelta_xy.x; + c.y += newDelta_xy.y; + } + +// std::cout <<"PSR: "<< bestPSR << std::endl; + if(center.x < 0 || center.x>image.cols ||center.y<0 || center.y>image.rows) + return false; + if (bestPSR < psrThreshold) + return false; + + return true; +} + +// Element-wise division of complex numbers in src1 and src2 +cv::Mat TrackerImpl::divDFTs( const cv::Mat &src1, const cv::Mat &src2 ) const +{ + cv::Mat c1[2],c2[2],a1,a2,s1,s2,denom,re,im; + + // split into re and im per src + cv::split(src1, c1); + cv::split(src2, c2); + + // (Re2*Re2 + Im2*Im2) = denom + // denom is same for both channels + cv::multiply(c2[0], c2[0], s1); + cv::multiply(c2[1], c2[1], s2); + cv::add(s1, s2, denom); + + // (Re1*Re2 + Im1*Im1)/(Re2*Re2 + Im2*Im2) = Re + cv::multiply(c1[0], c2[0], a1); + cv::multiply(c1[1], c2[1], a2); + cv::divide(a1+a2, denom, re, 1.0 ); + + // (Im1*Re2 - Re1*Im2)/(Re2*Re2 + Im2*Im2) = Im + cv::multiply(c1[1], c2[0], a1); + cv::multiply(c1[0], c2[1], a2); + cv::divide(a1+a2, denom, im, -1.0); + + // Merge Re and Im back into a complex matrix + cv::Mat dst, chn[] = {re,im}; + cv::merge(chn, 2, dst); + return dst; +} + +void TrackerImpl::preProcess( cv::Mat &window , cv::Mat &hw) const +{ + window.convertTo(window, CV_32F); + log(window + 1., window); + + //normalize + cv::Scalar mean,StdDev; + meanStdDev(window, mean, StdDev); + window = (window-mean[0]) / (StdDev[0]+eps); + + //Gaussain weighting + window = window.mul(hw); +} + +double TrackerImpl::correlate( const cv::Mat &image_sub, cv::Point &delta_xy, const cv::Mat& Hm) const +{ + cv::Mat IMAGE_SUB, RESPONSE, response; + // filter in dft space + dft(image_sub, IMAGE_SUB, cv::DFT_COMPLEX_OUTPUT); + mulSpectrums(IMAGE_SUB, Hm, RESPONSE, 0, true ); + idft(RESPONSE, response, cv::DFT_SCALE|cv::DFT_REAL_OUTPUT); + // update center position + double maxVal; cv::Point maxLoc; + minMaxLoc(response, 0, &maxVal, 0, &maxLoc); + delta_xy.x = maxLoc.x - int(response.size().width/2); + delta_xy.y = maxLoc.y - int(response.size().height/2); + // normalize response + cv::Scalar mean,std; + meanStdDev(response, mean, std); + return (maxVal-mean[0]) / (std[0]+eps); // PSR +} + + +cv::Mat TrackerImpl::randWarp( const cv::Mat& a ) const +{ + cv::RNG rng(8031965); + + // random rotation + double C=0.1; + double ang = rng.uniform(-C,C); + double c=cos(ang), s=sin(ang); + // affine warp matrix + cv::Mat_ W(2,3); + W << c + rng.uniform(-C,C), -s + rng.uniform(-C,C), 0, + s + rng.uniform(-C,C), c + rng.uniform(-C,C), 0; + + // random translation + cv::Mat_ center_warp(2, 1); + center_warp << a.cols/2, a.rows/2; + W.col(2) = center_warp - (W.colRange(0, 2))*center_warp; + + cv::Mat warped; + warpAffine(a, warped, W, a.size(), cv::BORDER_REFLECT); + return warped; +} + +void TrackerImpl::cornerUpsample(std::vector &corners) +{ + if(corners.size()==0) return; + + for(size_t cIdx=0; cIdx<4; cIdx++) + { + cv::Size prevLowResSize= cornerPatchSize; + std::vector tmpcorner={cv::Point2f(cornerPatchSize.width/2, cornerPatchSize.height/2)}; + for(int curpyr=cornersPyrs[cIdx].size()-1;curpyr>=0;curpyr--) + { + float factor= float(cornersPyrs[cIdx][curpyr].cols)/float(prevLowResSize.width); + int halfwsize= 0.5+2.5*factor; + tmpcorner[0] = tmpcorner[0]*factor; + cv::cornerSubPix( cornersPyrs[cIdx][curpyr],tmpcorner,cv::Size(halfwsize,halfwsize),cv::Size(-1,-1),cv::TermCriteria(cv::TermCriteria::MAX_ITER , 4,0.5)); + prevLowResSize=cornersPyrs[cIdx][curpyr].size(); + +// cv::Mat out; +// cv::cvtColor(cornersPyrs[cIdx][curpyr], out, cv::COLOR_GRAY2BGR); +// cv::circle(out,tmpcorner[0],3,cv::Scalar(0,0,255),-1); +// cv::imshow("corner", out); +// cv::waitKey(); + } + + //Update real corner in the original image + corners[cIdx].x += tmpcorner[0].x - cornersPyrs[cIdx][0].cols/2; + corners[cIdx].y += tmpcorner[0].y - cornersPyrs[cIdx][0].rows/2; + +// cv::Mat out; +// cv::cvtColor(cornersPyrs[cIdx][0], out, cv::COLOR_GRAY2BGR); +// cv::circle(out,tmpcorner[0],3,cv::Scalar(0,0,255),-1); +// //cv::resize(out,out,cv::Size(1000,1000)); +// cv::imshow("corner", out); +// cv::waitKey(); + } +} + + +void TrackerImpl::buildCornersPyramid(const cv::Mat& image) +{ + //Size of cornerPatchSize in the original image + cv::Size nsize; + nsize.width = int(ceil(cornerPatchSize.width*pow(pyrfactor,imgPyrIdx))); + nsize.height = int(ceil(cornerPatchSize.height*pow(pyrfactor,imgPyrIdx))); + + //Numer of pyramid images + int npyrimgs = 1; + while (nsize.width/pow(cornersPyrFactor,npyrimgs) > cornerPatchSize.width) + npyrimgs++; + + for(size_t cIdx=0; cIdx<4; cIdx++) + { + cornersPyrs[cIdx].resize(npyrimgs); + getRectSubPix(image, nsize, TheMarker[cIdx], cornersPyrs[cIdx][0]); + + for(int i=1;i +#include +#include + +#include "marker.h" +#include "map" +#include "timers.h" +#include "dictionary_based.h" + +using namespace aruco; + +class TrackerImpl +{ +public: + TrackerImpl(const Marker& marker, uint64_t code, uint32_t nbits, const cv::Mat& image, double psr=5.8, int tau_s=32); + + bool initImpl(); + bool updateImpl(const cv::Mat& imgPyr, float thres_confidence=0); + cv::Rect2d getBoundingBox(){return boundingBox;} + cv::Point2d getCenter(){return center;} + std::vector getCorners(){ + if(track_corners) + return TheMarker; + else + { + return {center}; + } + } + + Marker& getMarker(){return TheMarker;} + float getTrustVal() {return trust;} + + ~TrackerImpl(); + + +private: + void prepare(const Marker& marker, const cv::Mat& imgPyr); + cv::Mat divDFTs( const cv::Mat &src1, const cv::Mat &src2 ) const; + void preProcess( cv::Mat &window, cv::Mat &hw) const; + double correlate( const cv::Mat &image_sub, cv::Point &delta_xy, const cv::Mat& Hm ) const; + cv::Mat randWarp( const cv::Mat& a ) const; + bool optimalScale(const cv::Mat& image, cv::Point2f& roiCenter); + void buildCornersPyramid(const cv::Mat& image); + void cornerUpsample(std::vector &corners); + Marker TheMarker; + uint64_t TheMarkerCode; + + cv::Rect2d boundingBox; + cv::Mat roi; //Region of interest + cv::Point2f center; //Center of the marker + cv::Mat hanWin; + cv::Mat G; //goal + cv::Mat H, A, B,C; //state + + cv::Size patchSize; + cv::Size roiSize; + int imgPyrIdx=0; + bool isInit = false; + uint32_t nbits; //Dictionary bits + float trust = 1; //1 is perfecf match, 0 totally different (max distance) + + double pyrfactor = 1.2; // Pyramid scale + int markerWarpSize; // Desired marker size + const double eps=0.00001; // for normalization + const double rate=0.2; // learning rate + double psrThreshold; // no detection, if PSR is smaller than this + const double lambda1=1e-4; // lamda mosse + const double lambda2=20; // lamda contex aware + bool contextAware=true; + int padding = 2; + int multiScaleLevels = 2; // Should be even (2 mean one level up and one down) + + bool track_corners = true; + cv::Size cornerPatchSize; + + cv::Mat cornerhanWin, Gc; + std::vector Ac, Bc, Hc; //state for corners + std::vector cornersPyrs[4]; //Region corners + double cornersPyrFactor = 4; +}; +#endif // TrackerImpl_H diff --git a/thirdparty/aruco-3.1.12/src/debug.cpp b/thirdparty/aruco-3.1.12/src/debug.cpp new file mode 100644 index 0000000..42b498f --- /dev/null +++ b/thirdparty/aruco-3.1.12/src/debug.cpp @@ -0,0 +1,67 @@ +/** +Copyright 2017 Rafael Muñoz Salinas. All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are +permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this list of + conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright notice, this list + of conditions and the following disclaimer in the documentation and/or other materials + provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY Rafael Muñoz Salinas ''AS IS'' AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL Rafael Muñoz Salinas OR +CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +The views and conclusions contained in the software and documentation are those of the +authors and should not be interpreted as representing official policies, either expressed +or implied, of Rafael Muñoz Salinas. +*/ + +#include "debug.h" +#include + namespace aruco{ +int Debug::level=2; +std::map Debug::strings; +void Debug::addString(std::string &label, std::string &data){ + strings.insert(make_pair(label,data)); +} + +std::string Debug::getString(std::string &str){ + auto it=strings.find(str); + if (it==strings.end())return ""; + else return it->second; +} + + +bool Debug::isInited=false; + +void Debug::setLevel ( int l ) { + level=l; + isInited=false; + init(); +} +int Debug::getLevel() { + init(); + return level; +} +void Debug::init() { + if ( !isInited ) { + isInited=true; + if ( level>=1 ) { + } + } + +} + + +} + diff --git a/thirdparty/aruco-3.1.12/src/debug.h b/thirdparty/aruco-3.1.12/src/debug.h new file mode 100644 index 0000000..38ad043 --- /dev/null +++ b/thirdparty/aruco-3.1.12/src/debug.h @@ -0,0 +1,113 @@ +/** +Copyright 2017 Rafael Muñoz Salinas. All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are +permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this list of + conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright notice, this list + of conditions and the following disclaimer in the documentation and/or other materials + provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY Rafael Muñoz Salinas ''AS IS'' AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL Rafael Muñoz Salinas OR +CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +The views and conclusions contained in the software and documentation are those of the +authors and should not be interpreted as representing official policies, either expressed +or implied, of Rafael Muñoz Salinas. +*/ + +#ifndef __Debug_H +#define __Debug_H +#include +#include +#include +#include "aruco_export.h" +#include +#include +namespace aruco{ + +class ARUCO_EXPORT Debug{ +private: + static int level;//0(no debug), 1 medium, 2 high + static bool isInited; + + static std::map strings; +public: + static void init(); + static void setLevel(int l); + static int getLevel(); + + + + static void addString(std::string &label,std::string &data); + static std::string getString(std::string &str); + + +static std::string getFileName(std::string filepath){ + //go backwards until finding a separator or start + size_t i; + for( i=filepath.size()-1;i!=0;i--){ + if ( filepath[i]=='\\' || filepath[i]=='/') break; + } + std::string fn;fn.reserve( filepath.size()-i); + for(size_t s=i;s=level){x}} +#define _debug_exec_( x) x + #ifndef WIN32 + #define _debug_msg(x,level) {Debug::init();\ + if (Debug::getLevel()>=level)\ + std::cout<<"#" <=5)\ + std::cout<<"#" <=level)\ + std::cout<<__func__<<":"<< Debug::getFileName(__FILE__)<<":"<<__LINE__ <<": "<=5)\ + std::cout<<__func__<<":"<< Debug::getFileName(__FILE__)<<":"<<__LINE__ <<": "< +#include +#include +#include +#include +#include +#include +#include "markermap.h" +#include +#include +using namespace std; +namespace aruco{ + + +Dictionary Dictionary::load(string info){ +if (isPredefinedDictinaryString(info)) + return loadPredefined(info); +else return loadFromFile(info); +} + + +Dictionary Dictionary::loadFromFile(std::string path) { + auto parse=[](const string &str){ + stringstream sstr(str); + string a,b; + sstr>>a>>b;return b; + }; + auto _stoi=[](string str){ + int i;sscanf(str.c_str(),"%d",&i);return i; + }; + + ifstream file(path); + if (!file)throw std::runtime_error("Dictionary::loadFromFile could not open file"); + string line; + std::getline(file,line); + if (line.find("name")==std::string::npos) throw std::runtime_error("Dictionary::loadFromFile 'name' not found"); + Dictionary d; + d._name=parse(line); + std::getline(file,line); + if (line.find("nbits")==std::string::npos) throw std::runtime_error("Dictionary::loadFromFile 'nbits' not found"); + d._nbits=_stoi(parse(line)); + if (d._nbits>64)throw std::runtime_error("Dictionary::loadFromFile no more than 64 bits allowed "); + + + d._type=CUSTOM; + //go reading the data + while(!file.eof()){ + std::getline(file,line); + if (line.size()==d._nbits){ + bitset<64> marker; + //parse the bits + int idx=0; + for(auto it=line.rbegin();it!=line.rend() ;it++){ + marker[idx++]=*it=='1'; + } + d._code_id.insert({marker.to_ullong(), static_cast(d._code_id.size())}); + } + } + d._tau= static_cast(computeDictionaryDistance(d)); + if (d._tau==0){ + cerr<<"IMPORTANT MESSAGE:::: Your dictionary "< codes={0xf89c68ea2UL,0xf021c83fdUL,0x9b2f835a2UL,0xf8ffdb019UL,0xf2d12b272UL,0xf0e6afe8bUL,0xe19dee435UL,0xdbe424132UL,0xa9885a341UL,0x3add1e6caUL,0x600aa0d15UL,0xf9d5c0938UL,0xf85b0f3d4UL,0xf838bcd6fUL,0xfa6c8bf2dUL,0xfb469060cUL,0xfb25238b7UL,0xff8d4dc33UL,0xfc3406a26UL,0xfc57b549dUL,0xfcf361750UL,0xfd7daedbcUL,0xf42d724b4UL,0xf1ccb47aaUL,0xe1fe5da8eUL,0xe2e3c2f56UL,0xe280711edUL,0xe224a5220UL,0xe36d0d5baUL,0xed2cf4e23UL,0xecc188a74UL,0xcf7ea3892UL,0xcca45b03cUL,0xc4de9c015UL,0xc0b1959e7UL,0xd027a870eUL,0xd1a967de2UL,0xd3fd50fa0UL,0xd67f25205UL,0xdcf5013a3UL,0xdea1361e1UL,0xdb8797f89UL,0xd8f9bb4eaUL,0x98321c07aUL,0x9dd3da364UL,0x9162c0972UL,0x91c614abfUL,0x81339aaedUL,0x3f3cd85d4UL,0x3907e6e64UL,0x2231e480aUL,0x287ca74daUL,0xee52d854UL,0x3b94b615UL,0x1ab8cdc82UL,0x4463c9014UL,0x6588d50b0UL,0xf912a744eUL,0xf97114af5UL,0xfb81f7b7aUL,0xfbe2445c1UL,0xff4a2a145UL,0xfea756512UL,0xfe03826dfUL,0xfc90d29ebUL,0xfdbac90caUL,0xfdd97ae71UL,0xf564da32eUL,0xf5c00e0e3UL,0xf679456f6UL,0xf6be22b80UL,0xf6dd9153bUL,0xf7f78ac1aUL,0xf35fe489eUL,0xf33c57625UL,0xf398835e8UL,0xf3fb30b53UL,0xf2b298cc9UL,0xf2164cf04UL,0xf275ff1bfUL,0xf10bd3adcUL,0xf16860467UL,0xe1393a7f8UL,0xe07092062UL,0xe0b7f5d14UL,0xe0d4463afUL,0xe7c56313eUL,0xe7a6d0f85UL,0xe70204c48UL,0xe6281f569UL,0xe47c2872bUL,0xed8820deeUL,0xedeb93355UL,0xed4f47098UL,0xec06ef702UL,0xeef60c68dUL,0xef78c3c61UL,0xefbfa4117UL,0xebb31e65eUL,0xebd0ad8e5UL,0xeb7479b28UL,0xeb17ca593UL,0xea5e62209UL,0xeafab61c4UL,0xe8ae81386UL,0xe9204e96aUL,0xe9e72941cUL,0xe9849aaa7UL,0xc86f86a03UL,0xc9e1490efUL,0xcbb57e2adUL,0xcb7219fdbUL,0xca58026faUL,0xca9f65b8cUL,0xcef06c27eUL,0xce54b81b3UL,0xcf1d10629UL,0xcd8e4091dUL,0xcc633cd4aUL,0xccc7e8e87UL,0xc7c3035cdUL,0xc767d7600UL,0xc62e7f19aUL,0xc64dccf21UL,0xc6e918cecUL,0xc68aab257UL,0xc2861151eUL,0xc24176868UL,0xc15ce9db0UL,0xc0d22675cUL,0xd0e0cfa78UL,0xd0837c4c3UL,0xd16e00094UL,0xd2739f54cUL,0xd2102cbf7UL,0xd6dbf11c8UL,0xd79259652UL,0xd7368d59fUL,0xd562ba7ddUL,0xd5c66e410UL,0xd5a5ddaabUL,0xd48fc638aUL,0xd4ec75d31UL,0xdc96b2d18UL,0xddbca9439UL,0xdf4c4a5b6UL,0xde05e222cUL,0xdaad8c6a8UL,0xdace3f813UL,0xd9b013370UL,0xd9d3a0dcbUL,0xd85d6f727UL,0x9aa14cf4eUL,0x9ac2ff1f5UL,0x9b4c30b19UL,0x9be8e48d4UL,0x9b8b5766fUL,0x99bcd3a96UL,0x99df6042dUL,0x96b482695UL,0x979e99fb4UL,0x95caaedf6UL,0x950dc9080UL,0x956e7ae3bUL,0x9427d29a1UL,0x908fbcd25UL,0x9392238fdUL,0x92b8381dcUL,0x824db618eUL,0x83c379b62UL,0x83041e614UL,0x81f4fd79bUL,0x80dee6ebaUL,0x8019813ccUL,0x853f20da4UL,0x87cfc3c2bUL,0x8e5878855UL,0x8fb504c02UL,0x8b1d6a886UL,0x8a93a526aUL,0xabdc6d103UL,0xaa3111554UL,0xaa52a2befUL,0xa8a241a60UL,0xa8c1f24dbUL,0xa92c8e08cUL,0xad438797eUL,0xa156490a5UL,0xa0d886a49UL,0xb04ebb4a0UL,0xb1c074e4cUL,0xb616361abUL,0xb73c2d88aUL,0xbf2559618UL,0xbd716e45aUL,0xb8347c489UL,0xb890a8744UL,0xba604b6cbUL,0xbb29e3151UL,0x3c42f4eb7UL,0x388929488UL,0x3b94b6150UL,0x33ee71179UL,0x311e920f6UL,0x30905da1aUL,0x343833e9eUL,0x35b6fc472UL,0x360fb7267UL,0x26998ac8eUL,0x271745662UL,0x20a2b473eUL,0x20c107985UL,0x2188afe1fUL,0x23bf2b2e6UL,0x229530bc7UL,0x2a2890698UL,0x2ba65fc74UL,0x281f14a61UL,0x2fc956586UL,0x2f6d8264bUL,0x2e80fe21cUL,0xe869e6efUL,0xc767d760UL,0x8bda0d5fUL,0xae997f1dUL,0xa2ef026bUL,0xb04ebb4aUL,0xb67585f1UL,0x37e2cb63UL,0x25437242UL,0x149a879aUL,0x69fea87dUL,0x71125291UL,0x1609d7694UL,0x143e53a6dUL,0x11bc267c8UL,0x12c20acabUL,0x132f768fcUL,0x134cc5647UL,0x1a1c19f4fUL,0x182b9d3b6UL,0x1c27274ffUL,0x5a10d96a9UL,0x50f94e9b4UL,0x509afd70fUL,0x57e86bb25UL,0x56c270204UL,0x477e565ccUL,0x43115fc3eUL,0x493fafe55UL,0x48b1604b9UL,0x4a2230b8dUL,0x6cd8099b8UL,0x6d3575defUL,0x6bc92cb29UL,0x687067d3cUL,0x652c0137dUL,0x757d5b0e2UL,0x76a7a384cUL,0x72ab19f05UL,0x73e2b189fUL,0x709c9d3fcUL,0x7885e9d6eUL,0x7bfbc560dUL,0x7e79b0ba8UL,0x7dc0fbdbdUL,0x7d642fe70UL,0x7c4e34751UL,0xf9b673783UL,0xfa0f38196UL,0xfac85fce0UL,0xfaabec25bUL,0xff2999ffeUL,0xfec4e5ba9UL,0xfd1e1d307UL,0xf50769d95UL,0xf5a3bde58UL,0xf489a6779UL,0xf44ec1a0fUL,0xf794392a1UL,0xf7535efd7UL,0xf0427bd46UL,0xf1af07911UL,0xe15a89943UL,0xe01321ed9UL,0xe24716c9bUL,0xe30ebeb01UL,0xe3aa6a8ccUL,0xe3c9d9677UL,0xe761b72f3UL,0xe64bacbd2UL,0xe68ccb6a4UL,0xe4d8fc4e6UL,0xe4bb4fa5dUL,0xe41f9b990UL,0xe55633e0aUL,0xe535800b1UL,0xe5915437cUL,0xe5f2e7dc7UL,0xec655c9b9UL,0xeca23b4cfUL,0xee95bf836UL,0xee52d8540UL,0xee316bbfbUL,0xef1b702daUL,0xefdc17facUL,0xea3dd1cb2UL,0xea9905f7fUL,0xe869e6ef0UL,0xe80a5504bUL,0xe943fd7d1UL,0xc8cb529ceUL,0xc8a8e1775UL,0xc80c354b8UL,0xc9459d322UL,0xc982fae54UL,0xcbd6cdc16UL,0xcb11aa160UL,0xca3bb1841UL,0xcafcd6537UL,0xce93dfcc5UL,0xce370bf08UL,0xcfb9c45e4UL,0xcfda77b5fUL,0xcdedf37a6UL,0xcd2a94ad0UL,0xcd492746bUL,0xcc008f3f1UL,0xc4bd2feaeUL,0xc419fbd63UL,0xc533e0442UL,0xc55053af9UL,0xc5f487934UL,0xc5973478fUL,0xc7a0b0b76UL,0xc704648bbUL,0xc2e5a2ba5UL,0xc308deff2UL,0xc19b8e0c6UL,0xc01541a2aUL,0xd0441b9b5UL,0xd1cad4359UL,0xd10db3e2fUL,0xd33a372d6UL,0xd35984c6dUL,0xd2b4f883aUL,0xd2d74b681UL,0xd50109966UL,0xd448a1efcUL,0xdc51d506eUL,0xdd187d7f4UL,0xdd7bce94fUL,0xdf2ff9b0dUL,0xdf8b2d8c0UL,0xdfe89e67bUL,0xdec285f5aUL,0xde6651c97UL,0xda6aebbdeUL,0xda0958565UL,0xdb2343c44UL,0xd97774e06UL,0xd914c70bdUL,0xd89a08a51UL,0xd83edc99cUL,0x9a662b238UL,0x9a0598c83UL,0x997bb47e0UL,0x99180795bUL,0x9851afec1UL,0x9896c83b7UL,0x9c9a724feUL,0x9cf9c1a45UL,0x9c5d15988UL,0x9c3ea6733UL,0x9d14bde12UL,0x9d770e0a9UL,0x9db069ddfUL,0x9f87ed126UL,0x9fe45ef9dUL,0x9f408ac50UL,0x9f23392ebUL,0x9e6a91571UL,0x9ece456bcUL,0x96d73182eUL,0x961056558UL,0x9673e5be3UL,0x9759fe2c2UL,0x973a4dc79UL,0x95a91d34dUL,0x94446171aUL,0x94e0b54d7UL,0x90ec0f39eUL,0x902b68ee8UL,0x9048db053UL,0x9101737c9UL,0x93f190646UL,0x93554458bUL,0x921cec211UL,0x82e962243UL,0x83a0ca5d9UL,0x8367ad8afUL,0x815029456UL,0x81974e920UL,0x80bd55001UL,0x807a32d77UL,0x847688a3eUL,0x84153b485UL,0x84b1ef748UL,0x84d25c9f3UL,0x85f8470d2UL,0x855c9331fUL,0x876b17fe6UL,0x87ac70290UL,0x86e5d850aUL,0x8622bf87cUL,0x8e3bcb6eeUL,0x8efcacb98UL,0x8f7263174UL,0x8f11d0fcfUL,0x8d2654336UL,0x8d45e7d8dUL,0x8de133e40UL,0x8d82800fbUL,0x8ca89b9daUL,0x8c6ffc4acUL,0x8c0c4fa17UL,0x8800f5d5eUL,0x8863463e5UL,0x88c792028UL,0x88a421e93UL,0x898e3a7b2UL,0x89ed89909UL,0x89495dac4UL,0x892aee47fUL,0x8bda0d5f0UL,0x8bb9beb4bUL,0x8af016cd1UL,0x8a54c2f1cUL,0x8a37711a7UL,0xab1b0ac75UL,0xaa95c5699UL,0xa86526716UL,0xa806959adUL,0xa9ebe9dfaUL,0xa94f3de37UL,0xad20347c5UL,0xade753ab3UL,0xaccd48392UL,0xacaefbd29UL,0xac0a2fee4UL,0xae5e18ca6UL,0xae3dab21dUL,0xae997f1d0UL,0xafd0d764aUL,0xafb3648f1UL,0xa70ec45aeUL,0xa76d77b15UL,0xa7c9a38d8UL,0xa7aa10663UL,0xa6800bf42UL,0xa6e3b81f9UL,0xa624dfc8fUL,0xa4135b076UL,0xa4d43cd00UL,0xa59d94a9aUL,0xa5fe27421UL,0xa55af37ecUL,0xa135fae1eUL,0xa1f29d368UL,0xa1912edd3UL,0xa0bb354f2UL,0xa24bd657dUL,0xa2ef026b0UL,0xa28cb180bUL,0xa3a6aa12aUL,0xa361cdc5cUL,0xa3027e2e7UL,0xb39443c0eUL,0xb3f7f02b5UL,0xb35324178UL,0xb33097fc3UL,0xb2793f859UL,0xb2ddebb94UL,0xb089dc9d6UL,0xb0ea6f76dUL,0xb02d08a1bUL,0xb1071333aUL,0xb164a0d81UL,0xb5af7d7beUL,0xb5ccce905UL,0xb5681aac8UL,0xb50ba9473UL,0xb421b2d52UL,0xb442013e9UL,0xb4e6d5024UL,0xb48566e9fUL,0xb6b2e2266UL,0xb6d151cddUL,0xb67585f10UL,0xb75f9e631UL,0xb7fb4a5fcUL,0xbfe23eb6eUL,0xbf46ea8a3UL,0xbe6cf1182UL,0xbeab96cf4UL,0xbec82524fUL,0xbc9c1200dUL,0xbc38c63c0UL,0xbc5b75d7bUL,0xbdb60992cUL,0xbdd5ba797UL,0xb9d9000deUL,0xb9bab3e65UL,0xb91e67da8UL,0xb857cfa32UL,0xb8f31b9ffUL,0xbac49f506UL,0xbaa72cbbdUL,0xba03f8870UL,0xbb4a50feaUL,0xbb8d3729cUL,0xbbee84c27UL,0x3e757024eUL,0x3e16c3cf5UL,0x3eb217f38UL,0x3ed1a4183UL,0x3ffbbf8a2UL,0x3f980c619UL,0x3f5f6bb6fUL,0x3d0b5c92dUL,0x3dcc3b45bUL,0x3ce620d7aUL,0x3c85933c1UL,0x3c214700cUL,0x384e4e9feUL,0x38ea9aa33UL,0x39c081312UL,0x39a332da9UL,0x3964550dfUL,0x3b53d1c26UL,0x3b306229dUL,0x3bf705febUL,0x3a1a79bbcUL,0x3a79ca507UL,0x32030d52eUL,0x3260beb95UL,0x32c46a858UL,0x32a7d96e3UL,0x338dc2fc2UL,0x334aa52b4UL,0x332916c0fUL,0x317d21e4dUL,0x31d9f5d80UL,0x31ba4633bUL,0x30f3ee4a1UL,0x30573a76cUL,0x3034899d7UL,0x345b80025UL,0x34ff543e8UL,0x349ce7d53UL,0x35d54fac9UL,0x3512287bfUL,0x37461f5fdUL,0x37e2cb630UL,0x37817888bUL,0x36ab631aaUL,0x36c8d0f11UL,0x366c04cdcUL,0x265eed1f8UL,0x2774f68d9UL,0x27b3915afUL,0x258415956UL,0x25e7a67edUL,0x254372420UL,0x2520c1a9bUL,0x240ada3baUL,0x246969d01UL,0x24cdbdeccUL,0x24ae0e077UL,0x2006604f3UL,0x23dc98c5dUL,0x23784cf90UL,0x231bff12bUL,0x2252576b1UL,0x22f68357cUL,0x2aeff7beeUL,0x2a8c44555UL,0x2a4b23823UL,0x2b6138102UL,0x29f268e36UL,0x29350f340UL,0x2956bcdfbUL,0x28d873717UL,0x2cd4c905eUL,0x2cb77aee5UL,0x2c13aed28UL,0x2d5a06ab2UL,0x2faae5b3dUL,0x2f0e318f0UL,0x2e4799f6aUL,0x2ee34dca7UL,0xfac85fceUL,0xf6be22b8UL,0xe224a522UL,0xe41f9b99UL,0xcd2a94adUL,0xd3fd50faUL,0x9f408ac5UL,0x950dc908UL,0x9336f7b3UL,0x81974e92UL,0x87ac7029UL,0x8de133e4UL,0xa4d43cd0UL,0xbc38c63cUL,0xba03f887UL,0x3daf88aeUL,0x31d9f5d8UL,0x29350f34UL,0xc767d76UL,0xa4d43cdUL,0x63b3ebbUL,0x12a1b921UL,0x1ed7c457UL,0x526a1e68UL,0x545120d3UL,0x40cba749UL,0x4a86e484UL,0x6fc596c6UL,0x63b3ebb0UL,0x77296c2aUL,0x7b5f115cUL,0x7d642fe7UL,0x17407f10eUL,0x1723ccfb5UL,0x17e4ab2c3UL,0x16ceb0be2UL,0x16ad03559UL,0x14f93471bUL,0x15d32fe3aUL,0x15b09c081UL,0x15144834cUL,0x1577fbdf7UL,0x117b41abeUL,0x1118f2405UL,0x11df95973UL,0x10963dee9UL,0x1032e9d24UL,0x1266def66UL,0x12056d1ddUL,0x12a1b9210UL,0x13e81158aUL,0x1b55b18d5UL,0x1bf165b18UL,0x1b92d65a3UL,0x1adb7e239UL,0x1a7faa1f4UL,0x18482ed0dUL,0x18ecfaec0UL,0x188f4907bUL,0x19a55295aUL,0x190186a97UL,0x1dca5b0a8UL,0x1da9e8e13UL,0x1c83f3732UL,0x1ce040989UL,0x1c4494a44UL,0x1e10a3806UL,0x1ed7c4570UL,0x1eb477bcbUL,0x1f9e6c2eaUL,0x1ffddfc51UL,0x1f590bf9cUL,0x1f3ab8127UL,0x5da5287f5UL,0x5d624fa83UL,0x5c2be7d19UL,0x5edb04c96UL,0x5e1c631e0UL,0x5e7fd0f5bUL,0x5f92acb0cUL,0x5ff11f5b7UL,0x5b9e16c45UL,0x5b5971133UL,0x5a736a812UL,0x5ab40d564UL,0x58e03a726UL,0x58838999dUL,0x596ef5dcaUL,0x59a9920bcUL,0x59ca21e07UL,0x51b0e6e2eUL,0x51d355095UL,0x511432de3UL,0x503e294c2UL,0x52ceca54dUL,0x526a1e680UL,0x5209ad83bUL,0x5323b611aUL,0x53e4d1c6cUL,0x5387622d7UL,0x574cbf8e8UL,0x572f0c653UL,0x560517f72UL,0x56a1c3cbfUL,0x549647046UL,0x54f5f4efdUL,0x545120d30UL,0x557b3b411UL,0x55bc5c967UL,0x45ed06af8UL,0x458eb5443UL,0x44a4aed62UL,0x44007aeafUL,0x4637fe256UL,0x46f099f20UL,0x47da82601UL,0x4372ec285UL,0x429f906d2UL,0x4258f7ba4UL,0x423b4451fUL,0x40cba7490UL,0x40a814a2bUL,0x41820f30aUL,0x41e1bcdb1UL,0x414568e7cUL,0x495c1c0eeUL,0x499b7bd98UL,0x49f8c8323UL,0x4815b4774UL,0x4a4183536UL,0x4a86e4840UL,0x4ae5576fbUL,0x4bcf4cfdaUL,0x4bacff161UL,0x4b082b2acUL,0x4b6b98c17UL,0x4f04915e5UL,0x4fc3f6893UL,0x4ee9ed1b2UL,0x4e8a5ef09UL,0x4e2e8acc4UL,0x4e4d3927fUL,0x4c7abde86UL,0x4c190e03dUL,0x4cbdda3f0UL,0x4cde69d4bUL,0x4df47246aUL,0x4d97c1ad1UL,0x4d331591cUL,0x6c1f6e4ceUL,0x6c7cdda75UL,0x6cbbba703UL,0x6d91a1e22UL,0x6df212099UL,0x6d56c6354UL,0x6f6142fadUL,0x6fc596c60UL,0x6e8c3ebfaUL,0x6eef8d541UL,0x6e28ea837UL,0x6a2450f7eUL,0x6a47e31c5UL,0x6ae337208UL,0x6baa9f592UL,0x6b6df88e4UL,0x6b0e4b65fUL,0x6939cfaa6UL,0x69fea87d0UL,0x699d1b96bUL,0x68b70004aUL,0x68d4b3ef1UL,0x6813d4387UL,0x6069133aeUL,0x60ae74ed8UL,0x60cdc7063UL,0x61846f7f9UL,0x6120bb434UL,0x614308a8fUL,0x63748c676UL,0x63173f8cdUL,0x63d0585bbUL,0x62fa43c9aUL,0x6299f0221UL,0x66522d81eUL,0x66319e6a5UL,0x66954a568UL,0x66f6f9bd3UL,0x67bf51c49UL,0x671b85f84UL,0x67783613fUL,0x654fb2dc6UL,0x64c17d72aUL,0x64a2ce991UL,0x64061aa5cUL,0x6465a94e7UL,0x74f394a0eUL,0x7490274b5UL,0x7434f3778UL,0x77ee0bfd6UL,0x778db816dUL,0x774adfc1bUL,0x7660c453aUL,0x760377b81UL,0x720fcdcc8UL,0x726c7e273UL,0x734665b52UL,0x7325d65e9UL,0x738102624UL,0x71d535466UL,0x711252910UL,0x7171e17abUL,0x705bfae8aUL,0x70ff2ed47UL,0x78213dea3UL,0x790b26782UL,0x79cc41af4UL,0x7b98768b6UL,0x7b5f115c0UL,0x7b3ca2b7bUL,0x7a16b925aUL,0x7a750ace1UL,0x7ad1def2cUL,0x7ab26d197UL,0x7ebed76deUL,0x7edd64865UL,0x7e1a03513UL,0x7f3018c32UL,0x7f53ab289UL,0x7ff77f144UL,0x7f94ccfffUL,0x7da348306UL,0x7d079c0cbUL,0x7c8953a27UL,0xffeefe288UL,0xfe6031864UL,0xf4ea159c2UL,0xf61af684dUL,0xf730ed16cUL,0xf0851c030UL,0xe6ef7881fUL,0xe8cd32d3dUL,0xc9262ed99UL,0xc47a483d8UL,0xc222c56d3UL,0xc36b6d149UL,0xc3ac0ac3fUL,0xc1f83de7dUL,0xc13f5a30bUL,0xc076f2491UL,0xd39ee311bUL,0xd61c96cbeUL,0xd6b842f73UL,0xd7f1ea8e9UL,0xd7553eb24UL,0xd42b12047UL,0xdc3266ed5UL,0xdddf1aa82UL,0x9e0922bcaUL,0x9eadf6807UL,0x97fd2a10fUL,0x948306a6cUL,0x91a5a7404UL,0x9336f7b30UL,0x927f5fcaaUL,0x92db8bf67UL,0x822e05f35UL,0x828ad1cf8UL,0x859bf4e69UL,0x8708a415dUL,0x86866bbb1UL,0x86410c6c7UL,0x8e9f1f523UL,0x8fd6b72b9UL,0x8ccb28761UL,0xabbfdefb8UL,0xaaf676822UL,0xad84e0408UL,0xac699c05fUL,0xaefaccf6bUL,0xaf17b0b3cUL,0xaf7403587UL,0xa6476c234UL,0xa470e8ecdUL,0xa4b78f3bbUL,0xa53940957UL,0xa07c52984UL,0xa01fe173fUL,0xa22865bc6UL,0xa3c519f91UL,0xb21a8c6e2UL,0xb2be5852fUL,0xb1a3c70f7UL,0xb798f9b47UL,0xbf818d5d5UL,0xbe0f42f39UL,0xbcffa1eb6UL,0xbd12ddae1UL,0xb97dd4313UL,0x3d68ef796UL,0x3daf88ae0UL,0x382dfd745UL,0x3abead871UL,0x35719b904UL,0x3725acb46UL,0x26fa39235UL,0x263d5ef43UL,0x27d022b14UL,0x2065d3a48UL,0x212c7bdd2UL,0x214fc8369UL,0x21eb1c0a4UL,0x2b028bfb9UL,0x2bc5ec2cfUL,0x2991db08dUL,0x28bbc09acUL,0x2c701d393UL,0x2d39b5409UL,0x2d9d617c4UL,0x2dfed297fUL,0x2e242a1d1UL,0xfcf36175UL,0xc15ce9dbUL,0xd5c66e41UL,0xdf8b2d8cUL,0x997bb47eUL,0xa8a241a6UL,0x23784cf9UL,0x2f0e318fUL,0x5e1c631eUL,0x58275da5UL,0x4cbdda3fUL,0x6588d50bUL,0x178718c78UL,0x166a6482fUL,0x145de04d6UL,0x149a879a0UL,0x10f58e052UL,0x10515a39fUL,0x138ba2b31UL,0x19c6e17e1UL,0x19623542cUL,0x1d0d3cddeUL,0x1d6e8f365UL,0x1e73106bdUL,0x5dc69b94eUL,0x5d01fc438UL,0x5c48543a2UL,0x5c8f33ed4UL,0x5cec8006fUL,0x5eb8b722dUL,0x5f55cb67aUL,0x5f36788c1UL,0x5bfda52feUL,0x5b3ac2f88UL,0x58275da50UL,0x5844ee4ebUL,0x590d46371UL,0x517781358UL,0x505d9aa79UL,0x52ad79bf6UL,0x534005fa1UL,0x578bd859eUL,0x5666a41c9UL,0x54329338bUL,0x55dfef7dcUL,0x452a6178eUL,0x4549d2935UL,0x44c71d3d9UL,0x46544dcedUL,0x46932a19bUL,0x47b9318baUL,0x471de5b77UL,0x43d638148UL,0x43b58bff3UL,0x42fc23869UL,0x400cc09e6UL,0x406f7375dUL,0x4126db0c7UL,0x48d2d3a02UL,0x4876079cfUL,0x4f6722b5eUL,0x4fa045628UL,0x4d50a67a7UL,0x6f02f1116UL,0x6fa6252dbUL,0x6e4b5968cUL,0x6a8084cb3UL,0x695a7c41dUL,0x61e7dc942UL,0x623d241ecUL,0x625e97f57UL,0x67dce22f2UL,0x65eb66e0bUL,0x7457409c3UL,0x751ee8e59UL,0x75d98f32fUL,0x77296c2a0UL,0x76c4106f7UL,0x72c8aa1beUL,0x71b686addUL,0x703849031UL,0x78e65a3d5UL,0x78428e018UL,0x796895939UL,0x79aff244fUL,0x7c2d879eaUL,0x7ceae049cUL,0xc3cfb9284UL,0xdb40f02ffUL,0x8b7ed963dUL,0xab78b92ceUL,0xf0851c03UL,0xcb11aa16UL,0xd9b01337UL,0x18ecfaecUL,0x46f099f2UL,0x1b360266eUL,0x5ad7bebdfUL,0x551888aaaUL,0x63b3ebb00UL,0x75ba3cd94UL,0x98f57bd0cUL,0xf912a744eUL}; + fromVector(codes,d._code_id); + d._nbits=36; + d._tau=0; + d._type=ARTAG; + d._name="ARTAG"; + + }break; + case ARTOOLKITPLUS:{ + vector codes={0x6dc269c27UL,0x6d4229e26UL,0x6cc2e9825UL,0x6c42a9a24UL,0x6fc369423UL,0x6f4329622UL,0x6ec3e9021UL,0x6e43a9220UL,0x69c068c2fUL,0x694028e2eUL,0x68c0e882dUL,0x6840a8a2cUL,0x6bc16842bUL,0x6b412862aUL,0x6ac1e8029UL,0x6a41a8228UL,0x65c66bc37UL,0x65462be36UL,0x64c6eb835UL,0x6446aba34UL,0x67c76b433UL,0x67472b632UL,0x66c7eb031UL,0x6647ab230UL,0x61c46ac3fUL,0x61442ae3eUL,0x60c4ea83dUL,0x6044aaa3cUL,0x63c56a43bUL,0x63452a63aUL,0x62c5ea039UL,0x6245aa238UL,0x7dca6dc07UL,0x7d4a2de06UL,0x7ccaed805UL,0x7c4aada04UL,0x7fcb6d403UL,0x7f4b2d602UL,0x7ecbed001UL,0x7e4bad200UL,0x79c86cc0fUL,0x79482ce0eUL,0x78c8ec80dUL,0x7848aca0cUL,0x7bc96c40bUL,0x7b492c60aUL,0x7ac9ec009UL,0x7a49ac208UL,0x75ce6fc17UL,0x754e2fe16UL,0x74ceef815UL,0x744eafa14UL,0x77cf6f413UL,0x774f2f612UL,0x76cfef011UL,0x764faf210UL,0x71cc6ec1fUL,0x714c2ee1eUL,0x70ccee81dUL,0x704caea1cUL,0x73cd6e41bUL,0x734d2e61aUL,0x72cdee019UL,0x724dae218UL,0x4dd261c67UL,0x4d5221e66UL,0x4cd2e1865UL,0x4c52a1a64UL,0x4fd361463UL,0x4f5321662UL,0x4ed3e1061UL,0x4e53a1260UL,0x49d060c6fUL,0x495020e6eUL,0x48d0e086dUL,0x4850a0a6cUL,0x4bd16046bUL,0x4b512066aUL,0x4ad1e0069UL,0x4a51a0268UL,0x45d663c77UL,0x455623e76UL,0x44d6e3875UL,0x4456a3a74UL,0x47d763473UL,0x475723672UL,0x46d7e3071UL,0x4657a3270UL,0x41d462c7fUL,0x415422e7eUL,0x40d4e287dUL,0x4054a2a7cUL,0x43d56247bUL,0x43552267aUL,0x42d5e2079UL,0x4255a2278UL,0x5dda65c47UL,0x5d5a25e46UL,0x5cdae5845UL,0x5c5aa5a44UL,0x5fdb65443UL,0x5f5b25642UL,0x5edbe5041UL,0x5e5ba5240UL,0x59d864c4fUL,0x595824e4eUL,0x58d8e484dUL,0x5858a4a4cUL,0x5bd96444bUL,0x5b592464aUL,0x5ad9e4049UL,0x5a59a4248UL,0x55de67c57UL,0x555e27e56UL,0x54dee7855UL,0x545ea7a54UL,0x57df67453UL,0x575f27652UL,0x56dfe7051UL,0x565fa7250UL,0x51dc66c5fUL,0x515c26e5eUL,0x50dce685dUL,0x505ca6a5cUL,0x53dd6645bUL,0x535d2665aUL,0x52dde6059UL,0x525da6258UL,0x2de279ca7UL,0x2d6239ea6UL,0x2ce2f98a5UL,0x2c62b9aa4UL,0x2fe3794a3UL,0x2f63396a2UL,0x2ee3f90a1UL,0x2e63b92a0UL,0x29e078cafUL,0x296038eaeUL,0x28e0f88adUL,0x2860b8aacUL,0x2be1784abUL,0x2b61386aaUL,0x2ae1f80a9UL,0x2a61b82a8UL,0x25e67bcb7UL,0x25663beb6UL,0x24e6fb8b5UL,0x2466bbab4UL,0x27e77b4b3UL,0x27673b6b2UL,0x26e7fb0b1UL,0x2667bb2b0UL,0x21e47acbfUL,0x21643aebeUL,0x20e4fa8bdUL,0x2064baabcUL,0x23e57a4bbUL,0x23653a6baUL,0x22e5fa0b9UL,0x2265ba2b8UL,0x3dea7dc87UL,0x3d6a3de86UL,0x3ceafd885UL,0x3c6abda84UL,0x3feb7d483UL,0x3f6b3d682UL,0x3eebfd081UL,0x3e6bbd280UL,0x39e87cc8fUL,0x39683ce8eUL,0x38e8fc88dUL,0x3868bca8cUL,0x3be97c48bUL,0x3b693c68aUL,0x3ae9fc089UL,0x3a69bc288UL,0x35ee7fc97UL,0x356e3fe96UL,0x34eeff895UL,0x346ebfa94UL,0x37ef7f493UL,0x376f3f692UL,0x36efff091UL,0x366fbf290UL,0x31ec7ec9fUL,0x316c3ee9eUL,0x30ecfe89dUL,0x306cbea9cUL,0x33ed7e49bUL,0x336d3e69aUL,0x32edfe099UL,0x326dbe298UL,0xdf271ce7UL,0xd7231ee6UL,0xcf2f18e5UL,0xc72b1ae4UL,0xff3714e3UL,0xf73316e2UL,0xef3f10e1UL,0xe73b12e0UL,0x9f070cefUL,0x97030eeeUL,0x8f0f08edUL,0x870b0aecUL,0xbf1704ebUL,0xb71306eaUL,0xaf1f00e9UL,0xa71b02e8UL,0x5f673cf7UL,0x57633ef6UL,0x4f6f38f5UL,0x476b3af4UL,0x7f7734f3UL,0x777336f2UL,0x6f7f30f1UL,0x677b32f0UL,0x1f472cffUL,0x17432efeUL,0xf4f28fdUL,0x74b2afcUL,0x3f5724fbUL,0x375326faUL,0x2f5f20f9UL,0x275b22f8UL,0x1dfa75cc7UL,0x1d7a35ec6UL,0x1cfaf58c5UL,0x1c7ab5ac4UL,0x1ffb754c3UL,0x1f7b356c2UL,0x1efbf50c1UL,0x1e7bb52c0UL,0x19f874ccfUL,0x197834eceUL,0x18f8f48cdUL,0x1878b4accUL,0x1bf9744cbUL,0x1b79346caUL,0x1af9f40c9UL,0x1a79b42c8UL,0x15fe77cd7UL,0x157e37ed6UL,0x14fef78d5UL,0x147eb7ad4UL,0x17ff774d3UL,0x177f376d2UL,0x16fff70d1UL,0x167fb72d0UL,0x11fc76cdfUL,0x117c36edeUL,0x10fcf68ddUL,0x107cb6adcUL,0x13fd764dbUL,0x137d366daUL,0x12fdf60d9UL,0x127db62d8UL,0xed8249d27UL,0xed0209f26UL,0xec82c9925UL,0xec0289b24UL,0xef8349523UL,0xef0309722UL,0xee83c9121UL,0xee0389320UL,0xe98048d2fUL,0xe90008f2eUL,0xe880c892dUL,0xe80088b2cUL,0xeb814852bUL,0xeb010872aUL,0xea81c8129UL,0xea0188328UL,0xe5864bd37UL,0xe5060bf36UL,0xe486cb935UL,0xe4068bb34UL,0xe7874b533UL,0xe7070b732UL,0xe687cb131UL,0xe6078b330UL,0xe1844ad3fUL,0xe1040af3eUL,0xe084ca93dUL,0xe0048ab3cUL,0xe3854a53bUL,0xe3050a73aUL,0xe285ca139UL,0xe2058a338UL,0xfd8a4dd07UL,0xfd0a0df06UL,0xfc8acd905UL,0xfc0a8db04UL,0xff8b4d503UL,0xff0b0d702UL,0xfe8bcd101UL,0xfe0b8d300UL,0xf9884cd0fUL,0xf9080cf0eUL,0xf888cc90dUL,0xf8088cb0cUL,0xfb894c50bUL,0xfb090c70aUL,0xfa89cc109UL,0xfa098c308UL,0xf58e4fd17UL,0xf50e0ff16UL,0xf48ecf915UL,0xf40e8fb14UL,0xf78f4f513UL,0xf70f0f712UL,0xf68fcf111UL,0xf60f8f310UL,0xf18c4ed1fUL,0xf10c0ef1eUL,0xf08cce91dUL,0xf00c8eb1cUL,0xf38d4e51bUL,0xf30d0e71aUL,0xf28dce119UL,0xf20d8e318UL,0xcd9241d67UL,0xcd1201f66UL,0xcc92c1965UL,0xcc1281b64UL,0xcf9341563UL,0xcf1301762UL,0xce93c1161UL,0xce1381360UL,0xc99040d6fUL,0xc91000f6eUL,0xc890c096dUL,0xc81080b6cUL,0xcb914056bUL,0xcb110076aUL,0xca91c0169UL,0xca1180368UL,0xc59643d77UL,0xc51603f76UL,0xc496c3975UL,0xc41683b74UL,0xc79743573UL,0xc71703772UL,0xc697c3171UL,0xc61783370UL,0xc19442d7fUL,0xc11402f7eUL,0xc094c297dUL,0xc01482b7cUL,0xc3954257bUL,0xc3150277aUL,0xc295c2179UL,0xc21582378UL,0xdd9a45d47UL,0xdd1a05f46UL,0xdc9ac5945UL,0xdc1a85b44UL,0xdf9b45543UL,0xdf1b05742UL,0xde9bc5141UL,0xde1b85340UL,0xd99844d4fUL,0xd91804f4eUL,0xd898c494dUL,0xd81884b4cUL,0xdb994454bUL,0xdb190474aUL,0xda99c4149UL,0xda1984348UL,0xd59e47d57UL,0xd51e07f56UL,0xd49ec7955UL,0xd41e87b54UL,0xd79f47553UL,0xd71f07752UL,0xd69fc7151UL,0xd61f87350UL,0xd19c46d5fUL,0xd11c06f5eUL,0xd09cc695dUL,0xd01c86b5cUL,0xd39d4655bUL,0xd31d0675aUL,0xd29dc6159UL,0xd21d86358UL,0xada259da7UL,0xad2219fa6UL,0xaca2d99a5UL,0xac2299ba4UL,0xafa3595a3UL,0xaf23197a2UL,0xaea3d91a1UL,0xae23993a0UL,0xa9a058dafUL,0xa92018faeUL,0xa8a0d89adUL,0xa82098bacUL,0xaba1585abUL,0xab21187aaUL,0xaaa1d81a9UL,0xaa21983a8UL,0xa5a65bdb7UL,0xa5261bfb6UL,0xa4a6db9b5UL,0xa4269bbb4UL,0xa7a75b5b3UL,0xa7271b7b2UL,0xa6a7db1b1UL,0xa6279b3b0UL,0xa1a45adbfUL,0xa1241afbeUL,0xa0a4da9bdUL,0xa0249abbcUL,0xa3a55a5bbUL,0xa3251a7baUL,0xa2a5da1b9UL,0xa2259a3b8UL,0xbdaa5dd87UL,0xbd2a1df86UL,0xbcaadd985UL,0xbc2a9db84UL,0xbfab5d583UL,0xbf2b1d782UL,0xbeabdd181UL,0xbe2b9d380UL,0xb9a85cd8fUL,0xb9281cf8eUL,0xb8a8dc98dUL,0xb8289cb8cUL,0xbba95c58bUL,0xbb291c78aUL,0xbaa9dc189UL,0xba299c388UL,0xb5ae5fd97UL,0xb52e1ff96UL,0xb4aedf995UL,0xb42e9fb94UL,0xb7af5f593UL,0xb72f1f792UL,0xb6afdf191UL,0xb62f9f390UL,0xb1ac5ed9fUL,0xb12c1ef9eUL,0xb0acde99dUL,0xb02c9eb9cUL,0xb3ad5e59bUL,0xb32d1e79aUL,0xb2adde199UL,0xb22d9e398UL,0x8db251de7UL,0x8d3211fe6UL,0x8cb2d19e5UL,0x8c3291be4UL,0x8fb3515e3UL,0x8f33117e2UL,0x8eb3d11e1UL,0x8e33913e0UL,0x89b050defUL,0x893010feeUL,0x88b0d09edUL,0x883090becUL,0x8bb1505ebUL,0x8b31107eaUL,0x8ab1d01e9UL,0x8a31903e8UL,0x85b653df7UL,0x853613ff6UL,0x84b6d39f5UL,0x843693bf4UL,0x87b7535f3UL,0x8737137f2UL,0x86b7d31f1UL,0x8637933f0UL,0x81b452dffUL,0x813412ffeUL,0x80b4d29fdUL,0x803492bfcUL,0x83b5525fbUL,0x8335127faUL,0x82b5d21f9UL,0x8235923f8UL,0x9dba55dc7UL,0x9d3a15fc6UL,0x9cbad59c5UL,0x9c3a95bc4UL,0x9fbb555c3UL,0x9f3b157c2UL,0x9ebbd51c1UL,0x9e3b953c0UL,0x99b854dcfUL,0x993814fceUL,0x98b8d49cdUL,0x983894bccUL,0x9bb9545cbUL,0x9b39147caUL,0x9ab9d41c9UL,0x9a39943c8UL,0x95be57dd7UL,0x953e17fd6UL,0x94bed79d5UL,0x943e97bd4UL,0x97bf575d3UL,0x973f177d2UL,0x96bfd71d1UL,0x963f973d0UL,0x91bc56ddfUL,0x913c16fdeUL,0x90bcd69ddUL,0x903c96bdcUL,0x93bd565dbUL,0x933d167daUL,0x92bdd61d9UL,0x923d963d8UL}; + fromVector(codes,d._code_id); + d._nbits=36; + d._tau=4;// + d._type=ARTOOLKITPLUS; + d._name="ARTOOLKITPLUS"; + + }break; + case ARTOOLKITPLUSBCH:{ + vector codes={0x8f80b8750UL,0x8f9d0a027UL,0x8fa66eec9UL,0x8fbbdc9beUL,0x8fcd15462UL,0x8fd0a7315UL,0x8febc3dfbUL,0x8ff671a8cUL,0x8f0650643UL,0x8f1be2134UL,0x8f2086fdaUL,0x8f3d348adUL,0x8f4bfd571UL,0x8f564f206UL,0x8f6d2bce8UL,0x8f7099b9fUL,0x8e8d68576UL,0x8e90da201UL,0x8eabbecefUL,0x8eb60cb98UL,0x8ec0c5644UL,0x8edd77133UL,0x8ee613fddUL,0x8efba18aaUL,0x8e0b80465UL,0x8e1632312UL,0x8e2d56dfcUL,0x8e30e4a8bUL,0x8e462d757UL,0x8e5b9f020UL,0x8e60fbeceUL,0x8e7d499b9UL,0x8d86aa46bUL,0x8d9b1831cUL,0x8da07cdf2UL,0x8dbdcea85UL,0x8dcb07759UL,0x8dd6b502eUL,0x8dedd1ec0UL,0x8df0639b7UL,0x8d0042578UL,0x8d1df020fUL,0x8d2694ce1UL,0x8d3b26b96UL,0x8d4def64aUL,0x8d505d13dUL,0x8d6b39fd3UL,0x8d768b8a4UL,0x8c8b7a64dUL,0x8c96c813aUL,0x8cadacfd4UL,0x8cb01e8a3UL,0x8cc6d757fUL,0x8cdb65208UL,0x8ce001ce6UL,0x8cfdb3b91UL,0x8c0d9275eUL,0x8c1020029UL,0x8c2b44ec7UL,0x8c36f69b0UL,0x8c403f46cUL,0x8c5d8d31bUL,0x8c66e9df5UL,0x8c7b5ba82UL,0x8b8c9c126UL,0x8b912e651UL,0x8baa4a8bfUL,0x8bb7f8fc8UL,0x8bc131214UL,0x8bdc83563UL,0x8be7e7b8dUL,0x8bfa55cfaUL,0x8b0a74035UL,0x8b17c6742UL,0x8b2ca29acUL,0x8b3110edbUL,0x8b47d9307UL,0x8b5a6b470UL,0x8b610fa9eUL,0x8b7cbdde9UL,0x8a814c300UL,0x8a9cfe477UL,0x8aa79aa99UL,0x8aba28deeUL,0x8acce1032UL,0x8ad153745UL,0x8aea379abUL,0x8af785edcUL,0x8a07a4213UL,0x8a1a16564UL,0x8a2172b8aUL,0x8a3cc0cfdUL,0x8a4a09121UL,0x8a57bb656UL,0x8a6cdf8b8UL,0x8a716dfcfUL,0x898a8e21dUL,0x89973c56aUL,0x89ac58b84UL,0x89b1eacf3UL,0x89c72312fUL,0x89da91658UL,0x89e1f58b6UL,0x89fc47fc1UL,0x890c6630eUL,0x8911d4479UL,0x892ab0a97UL,0x893702de0UL,0x8941cb03cUL,0x895c7974bUL,0x89671d9a5UL,0x897aafed2UL,0x88875e03bUL,0x889aec74cUL,0x88a1889a2UL,0x88bc3aed5UL,0x88caf3309UL,0x88d74147eUL,0x88ec25a90UL,0x88f197de7UL,0x8801b6128UL,0x881c0465fUL,0x8827608b1UL,0x883ad2fc6UL,0x884c1b21aUL,0x8851a956dUL,0x886acdb83UL,0x88777fcf4UL,0x878542ccbUL,0x8798f0bbcUL,0x87a394552UL,0x87be26225UL,0x87c8efff9UL,0x87d55d88eUL,0x87ee39660UL,0x87f38b117UL,0x8703aadd8UL,0x871e18aafUL,0x87257c441UL,0x8738ce336UL,0x874e07eeaUL,0x8753b599dUL,0x8768d1773UL,0x877563004UL,0x868892eedUL,0x86952099aUL,0x86ae44774UL,0x86b3f6003UL,0x86c53fddfUL,0x86d88daa8UL,0x86e3e9446UL,0x86fe5b331UL,0x860e7affeUL,0x8613c8889UL,0x8628ac667UL,0x86351e110UL,0x8643d7cccUL,0x865e65bbbUL,0x866501555UL,0x8678b3222UL,0x858350ff0UL,0x859ee2887UL,0x85a586669UL,0x85b83411eUL,0x85cefdcc2UL,0x85d34fbb5UL,0x85e82b55bUL,0x85f59922cUL,0x8505b8ee3UL,0x85180a994UL,0x85236e77aUL,0x853edc00dUL,0x854815dd1UL,0x8555a7aa6UL,0x856ec3448UL,0x85737133fUL,0x848e80dd6UL,0x849332aa1UL,0x84a85644fUL,0x84b5e4338UL,0x84c32dee4UL,0x84de9f993UL,0x84e5fb77dUL,0x84f84900aUL,0x840868cc5UL,0x8415dabb2UL,0x842ebe55cUL,0x84330c22bUL,0x8445c5ff7UL,0x845877880UL,0x84631366eUL,0x847ea1119UL,0x838966abdUL,0x8394d4dcaUL,0x83afb0324UL,0x83b202453UL,0x83c4cb98fUL,0x83d979ef8UL,0x83e21d016UL,0x83ffaf761UL,0x830f8ebaeUL,0x83123ccd9UL,0x832958237UL,0x8334ea540UL,0x83422389cUL,0x835f91febUL,0x8364f5105UL,0x837947672UL,0x8284b689bUL,0x829904fecUL,0x82a260102UL,0x82bfd2675UL,0x82c91bba9UL,0x82d4a9cdeUL,0x82efcd230UL,0x82f27f547UL,0x82025e988UL,0x821feceffUL,0x822488011UL,0x82393a766UL,0x824ff3abaUL,0x825241dcdUL,0x826925323UL,0x827497454UL,0x818f74986UL,0x8192c6ef1UL,0x81a9a201fUL,0x81b410768UL,0x81c2d9ab4UL,0x81df6bdc3UL,0x81e40f32dUL,0x81f9bd45aUL,0x81099c895UL,0x81142efe2UL,0x812f4a10cUL,0x8132f867bUL,0x814431ba7UL,0x815983cd0UL,0x8162e723eUL,0x817f55549UL,0x8082a4ba0UL,0x809f16cd7UL,0x80a472239UL,0x80b9c054eUL,0x80cf09892UL,0x80d2bbfe5UL,0x80e9df10bUL,0x80f46d67cUL,0x80044cab3UL,0x8019fedc4UL,0x80229a32aUL,0x803f2845dUL,0x8049e1981UL,0x805453ef6UL,0x806f37018UL,0x80728576fUL,0x9f8b4d066UL,0x9f96ff711UL,0x9fad9b9ffUL,0x9fb029e88UL,0x9fc6e0354UL,0x9fdb52423UL,0x9fe036acdUL,0x9ffd84dbaUL,0x9f0da5175UL,0x9f1017602UL,0x9f2b738ecUL,0x9f36c1f9bUL,0x9f4008247UL,0x9f5dba530UL,0x9f66debdeUL,0x9f7b6cca9UL,0x9e869d240UL,0x9e9b2f537UL,0x9ea04bbd9UL,0x9ebdf9caeUL,0x9ecb30172UL,0x9ed682605UL,0x9eede68ebUL,0x9ef054f9cUL,0x9e0075353UL,0x9e1dc7424UL,0x9e26a3acaUL,0x9e3b11dbdUL,0x9e4dd8061UL,0x9e506a716UL,0x9e6b0e9f8UL,0x9e76bce8fUL,0x9d8d5f35dUL,0x9d90ed42aUL,0x9dab89ac4UL,0x9db63bdb3UL,0x9dc0f206fUL,0x9ddd40718UL,0x9de6249f6UL,0x9dfb96e81UL,0x9d0bb724eUL,0x9d1605539UL,0x9d2d61bd7UL,0x9d30d3ca0UL,0x9d461a17cUL,0x9d5ba860bUL,0x9d60cc8e5UL,0x9d7d7ef92UL,0x9c808f17bUL,0x9c9d3d60cUL,0x9ca6598e2UL,0x9cbbebf95UL,0x9ccd22249UL,0x9cd09053eUL,0x9cebf4bd0UL,0x9cf646ca7UL,0x9c0667068UL,0x9c1bd571fUL,0x9c20b19f1UL,0x9c3d03e86UL,0x9c4bca35aUL,0x9c567842dUL,0x9c6d1cac3UL,0x9c70aedb4UL,0x9b8769610UL,0x9b9adb167UL,0x9ba1bff89UL,0x9bbc0d8feUL,0x9bcac4522UL,0x9bd776255UL,0x9bec12cbbUL,0x9bf1a0bccUL,0x9b0181703UL,0x9b1c33074UL,0x9b2757e9aUL,0x9b3ae59edUL,0x9b4c2c431UL,0x9b519e346UL,0x9b6afada8UL,0x9b7748adfUL,0x9a8ab9436UL,0x9a970b341UL,0x9aac6fdafUL,0x9ab1ddad8UL,0x9ac714704UL,0x9adaa6073UL,0x9ae1c2e9dUL,0x9afc709eaUL,0x9a0c51525UL,0x9a11e3252UL,0x9a2a87cbcUL,0x9a3735bcbUL,0x9a41fc617UL,0x9a5c4e160UL,0x9a672af8eUL,0x9a7a988f9UL,0x99817b52bUL,0x999cc925cUL,0x99a7adcb2UL,0x99ba1fbc5UL,0x99ccd6619UL,0x99d16416eUL,0x99ea00f80UL,0x99f7b28f7UL,0x990793438UL,0x991a2134fUL,0x992145da1UL,0x993cf7ad6UL,0x994a3e70aUL,0x99578c07dUL,0x996ce8e93UL,0x99715a9e4UL,0x988cab70dUL,0x98911907aUL,0x98aa7de94UL,0x98b7cf9e3UL,0x98c10643fUL,0x98dcb4348UL,0x98e7d0da6UL,0x98fa62ad1UL,0x980a4361eUL,0x9817f1169UL,0x982c95f87UL,0x9831278f0UL,0x9847ee52cUL,0x985a5c25bUL,0x986138cb5UL,0x987c8abc2UL,0x978eb7bfdUL,0x979305c8aUL,0x97a861264UL,0x97b5d3513UL,0x97c31a8cfUL,0x97dea8fb8UL,0x97e5cc156UL,0x97f87e621UL,0x97085faeeUL,0x9715edd99UL,0x972e89377UL,0x97333b400UL,0x9745f29dcUL,0x975840eabUL,0x976324045UL,0x977e96732UL,0x9683679dbUL,0x969ed5eacUL,0x96a5b1042UL,0x96b803735UL,0x96cecaae9UL,0x96d378d9eUL,0x96e81c370UL,0x96f5ae407UL,0x96058f8c8UL,0x96183dfbfUL,0x962359151UL,0x963eeb626UL,0x964822bfaUL,0x965590c8dUL,0x966ef4263UL,0x967346514UL,0x9588a58c6UL,0x959517fb1UL,0x95ae7315fUL,0x95b3c1628UL,0x95c508bf4UL,0x95d8bac83UL,0x95e3de26dUL,0x95fe6c51aUL,0x950e4d9d5UL,0x9513ffea2UL,0x95289b04cUL,0x95352973bUL,0x9543e0ae7UL,0x955e52d90UL,0x95653637eUL,0x957884409UL,0x948575ae0UL,0x9498c7d97UL,0x94a3a3379UL,0x94be1140eUL,0x94c8d89d2UL,0x94d56aea5UL,0x94ee0e04bUL,0x94f3bc73cUL,0x94039dbf3UL,0x941e2fc84UL,0x94254b26aUL,0x9438f951dUL,0x944e308c1UL,0x945382fb6UL,0x9468e6158UL,0x94755462fUL,0x938293d8bUL,0x939f21afcUL,0x93a445412UL,0x93b9f7365UL,0x93cf3eeb9UL,0x93d28c9ceUL,0x93e9e8720UL,0x93f45a057UL,0x93047bc98UL,0x9319c9befUL,0x9322ad501UL,0x933f1f276UL,0x9349d6faaUL,0x9354648ddUL,0x936f00633UL,0x9372b2144UL,0x928f43fadUL,0x9292f18daUL,0x92a995634UL,0x92b427143UL,0x92c2eec9fUL,0x92df5cbe8UL,0x92e438506UL,0x92f98a271UL,0x9209abebeUL,0x9214199c9UL,0x922f7d727UL,0x9232cf050UL,0x924406d8cUL,0x9259b4afbUL,0x9262d0415UL,0x927f62362UL,0x918481eb0UL,0x9199339c7UL,0x91a257729UL,0x91bfe505eUL,0x91c92cd82UL,0x91d49eaf5UL,0x91effa41bUL,0x91f24836cUL,0x910269fa3UL,0x911fdb8d4UL,0x9124bf63aUL,0x91390d14dUL,0x914fc4c91UL,0x915276be6UL,0x916912508UL,0x9174a027fUL,0x908951c96UL,0x9094e3be1UL,0x90af8750fUL,0x90b235278UL,0x90c4fcfa4UL,0x90d94e8d3UL,0x90e22a63dUL,0x90ff9814aUL,0x900fb9d85UL,0x90120baf2UL,0x90296f41cUL,0x9034dd36bUL,0x904214eb7UL,0x905fa69c0UL,0x9064c272eUL,0x907970059UL,0xaf8ae0e4bUL,0xaf975293cUL,0xafac367d2UL,0xafb1840a5UL,0xafc74dd79UL,0xafdaffa0eUL,0xafe19b4e0UL,0xaffc29397UL,0xaf0c08f58UL,0xaf11ba82fUL,0xaf2ade6c1UL,0xaf376c1b6UL,0xaf41a5c6aUL,0xaf5c17b1dUL,0xaf67735f3UL,0xaf7ac1284UL,0xae8730c6dUL,0xae9a82b1aUL,0xaea1e65f4UL,0xaebc54283UL,0xaeca9df5fUL,0xaed72f828UL,0xaeec4b6c6UL,0xaef1f91b1UL,0xae01d8d7eUL,0xae1c6aa09UL,0xae270e4e7UL,0xae3abc390UL,0xae4c75e4cUL,0xae51c793bUL,0xae6aa37d5UL,0xae77110a2UL,0xad8cf2d70UL,0xad9140a07UL,0xadaa244e9UL,0xadb79639eUL,0xadc15fe42UL,0xaddced935UL,0xade7897dbUL,0xadfa3b0acUL,0xad0a1ac63UL,0xad17a8b14UL,0xad2ccc5faUL,0xad317e28dUL,0xad47b7f51UL,0xad5a05826UL,0xad61616c8UL,0xad7cd31bfUL,0xac8122f56UL,0xac9c90821UL,0xaca7f46cfUL,0xacba461b8UL,0xaccc8fc64UL,0xacd13db13UL,0xacea595fdUL,0xacf7eb28aUL,0xac07cae45UL,0xac1a78932UL,0xac211c7dcUL,0xac3cae0abUL,0xac4a67d77UL,0xac57d5a00UL,0xac6cb14eeUL,0xac7103399UL,0xab86c483dUL,0xab9b76f4aUL,0xaba0121a4UL,0xabbda06d3UL,0xabcb69b0fUL,0xabd6dbc78UL,0xabedbf296UL,0xabf00d5e1UL,0xab002c92eUL,0xab1d9ee59UL,0xab26fa0b7UL,0xab3b487c0UL,0xab4d81a1cUL,0xab5033d6bUL,0xab6b57385UL,0xab76e54f2UL,0xaa8b14a1bUL,0xaa96a6d6cUL,0xaaadc2382UL,0xaab0704f5UL,0xaac6b9929UL,0xaadb0be5eUL,0xaae06f0b0UL,0xaafddd7c7UL,0xaa0dfcb08UL,0xaa104ec7fUL,0xaa2b2a291UL,0xaa36985e6UL,0xaa405183aUL,0xaa5de3f4dUL,0xaa66871a3UL,0xaa7b356d4UL,0xa980d6b06UL,0xa99d64c71UL,0xa9a60029fUL,0xa9bbb25e8UL,0xa9cd7b834UL,0xa9d0c9f43UL,0xa9ebad1adUL,0xa9f61f6daUL,0xa9063ea15UL,0xa91b8cd62UL,0xa920e838cUL,0xa93d5a4fbUL,0xa94b93927UL,0xa95621e50UL,0xa96d450beUL,0xa970f77c9UL,0xa88d06920UL,0xa890b4e57UL,0xa8abd00b9UL,0xa8b6627ceUL,0xa8c0aba12UL,0xa8dd19d65UL,0xa8e67d38bUL,0xa8fbcf4fcUL,0xa80bee833UL,0xa8165cf44UL,0xa82d381aaUL,0xa8308a6ddUL,0xa84643b01UL,0xa85bf1c76UL,0xa86095298UL,0xa87d275efUL,0xa78f1a5d0UL,0xa792a82a7UL,0xa7a9ccc49UL,0xa7b47eb3eUL,0xa7c2b76e2UL,0xa7df05195UL,0xa7e461f7bUL,0xa7f9d380cUL,0xa709f24c3UL,0xa714403b4UL,0xa72f24d5aUL,0xa73296a2dUL,0xa7445f7f1UL,0xa759ed086UL,0xa76289e68UL,0xa77f3b91fUL,0xa682ca7f6UL,0xa69f78081UL,0xa6a41ce6fUL,0xa6b9ae918UL,0xa6cf674c4UL,0xa6d2d53b3UL,0xa6e9b1d5dUL,0xa6f403a2aUL,0xa604226e5UL,0xa61990192UL,0xa622f4f7cUL,0xa63f4680bUL,0xa6498f5d7UL,0xa6543d2a0UL,0xa66f59c4eUL,0xa672ebb39UL,0xa589086ebUL,0xa594ba19cUL,0xa5afdef72UL,0xa5b26c805UL,0xa5c4a55d9UL,0xa5d9172aeUL,0xa5e273c40UL,0xa5ffc1b37UL,0xa50fe07f8UL,0xa5125208fUL,0xa52936e61UL,0xa53484916UL,0xa5424d4caUL,0xa55fff3bdUL,0xa5649bd53UL,0xa57929a24UL,0xa484d84cdUL,0xa4996a3baUL,0xa4a20ed54UL,0xa4bfbca23UL,0xa4c9757ffUL,0xa4d4c7088UL,0xa4efa3e66UL,0xa4f211911UL,0xa402305deUL,0xa41f822a9UL,0xa424e6c47UL,0xa43954b30UL,0xa44f9d6ecUL,0xa4522f19bUL,0xa4694bf75UL,0xa474f9802UL,0xa3833e3a6UL,0xa39e8c4d1UL,0xa3a5e8a3fUL,0xa3b85ad48UL,0xa3ce93094UL,0xa3d3217e3UL,0xa3e84590dUL,0xa3f5f7e7aUL,0xa305d62b5UL,0xa318645c2UL,0xa32300b2cUL,0xa33eb2c5bUL,0xa3487b187UL,0xa355c96f0UL,0xa36ead81eUL,0xa3731ff69UL,0xa28eee180UL,0xa2935c6f7UL,0xa2a838819UL,0xa2b58af6eUL,0xa2c3432b2UL,0xa2def15c5UL,0xa2e595b2bUL,0xa2f827c5cUL,0xa20806093UL,0xa215b47e4UL,0xa22ed090aUL,0xa23362e7dUL,0xa245ab3a1UL,0xa258194d6UL,0xa2637da38UL,0xa27ecfd4fUL,0xa1852c09dUL,0xa1989e7eaUL,0xa1a3fa904UL,0xa1be48e73UL,0xa1c8813afUL,0xa1d5334d8UL,0xa1ee57a36UL,0xa1f3e5d41UL,0xa103c418eUL,0xa11e766f9UL,0xa12512817UL,0xa138a0f60UL,0xa14e692bcUL,0xa153db5cbUL,0xa168bfb25UL,0xa1750dc52UL,0xa088fc2bbUL,0xa0954e5ccUL,0xa0ae2ab22UL,0xa0b398c55UL,0xa0c551189UL,0xa0d8e36feUL,0xa0e387810UL,0xa0fe35f67UL,0xa00e143a8UL,0xa013a64dfUL,0xa028c2a31UL,0xa03570d46UL,0xa043b909aUL,0xa05e0b7edUL,0xa0656f903UL,0xa078dde74UL,0xbf811597dUL,0xbf9ca7e0aUL,0xbfa7c30e4UL,0xbfba71793UL,0xbfccb8a4fUL,0xbfd10ad38UL,0xbfea6e3d6UL,0xbff7dc4a1UL,0xbf07fd86eUL,0xbf1a4ff19UL,0xbf212b1f7UL,0xbf3c99680UL,0xbf4a50b5cUL,0xbf57e2c2bUL,0xbf6c862c5UL,0xbf71345b2UL,0xbe8cc5b5bUL,0xbe9177c2cUL,0xbeaa132c2UL,0xbeb7a15b5UL,0xbec168869UL,0xbedcdaf1eUL,0xbee7be1f0UL,0xbefa0c687UL,0xbe0a2da48UL,0xbe179fd3fUL,0xbe2cfb3d1UL,0xbe31494a6UL,0xbe478097aUL,0xbe5a32e0dUL,0xbe61560e3UL,0xbe7ce4794UL,0xbd8707a46UL,0xbd9ab5d31UL,0xbda1d13dfUL,0xbdbc634a8UL,0xbdcaaa974UL,0xbdd718e03UL,0xbdec7c0edUL,0xbdf1ce79aUL,0xbd01efb55UL,0xbd1c5dc22UL,0xbd27392ccUL,0xbd3a8b5bbUL,0xbd4c42867UL,0xbd51f0f10UL,0xbd6a941feUL,0xbd7726689UL,0xbc8ad7860UL,0xbc9765f17UL,0xbcac011f9UL,0xbcb1b368eUL,0xbcc77ab52UL,0xbcdac8c25UL,0xbce1ac2cbUL,0xbcfc1e5bcUL,0xbc0c3f973UL,0xbc118de04UL,0xbc2ae90eaUL,0xbc375b79dUL,0xbc4192a41UL,0xbc5c20d36UL,0xbc67443d8UL,0xbc7af64afUL,0xbb8d31f0bUL,0xbb908387cUL,0xbbabe7692UL,0xbbb6551e5UL,0xbbc09cc39UL,0xbbdd2eb4eUL,0xbbe64a5a0UL,0xbbfbf82d7UL,0xbb0bd9e18UL,0xbb166b96fUL,0xbb2d0f781UL,0xbb30bd0f6UL,0xbb4674d2aUL,0xbb5bc6a5dUL,0xbb60a24b3UL,0xbb7d103c4UL,0xba80e1d2dUL,0xba9d53a5aUL,0xbaa6374b4UL,0xbabb853c3UL,0xbacd4ce1fUL,0xbad0fe968UL,0xbaeb9a786UL,0xbaf6280f1UL,0xba0609c3eUL,0xba1bbbb49UL,0xba20df5a7UL,0xba3d6d2d0UL,0xba4ba4f0cUL,0xba561687bUL,0xba6d72695UL,0xba70c01e2UL,0xb98b23c30UL,0xb99691b47UL,0xb9adf55a9UL,0xb9b0472deUL,0xb9c68ef02UL,0xb9db3c875UL,0xb9e05869bUL,0xb9fdea1ecUL,0xb90dcbd23UL,0xb91079a54UL,0xb92b1d4baUL,0xb936af3cdUL,0xb94066e11UL,0xb95dd4966UL,0xb966b0788UL,0xb97b020ffUL,0xb886f3e16UL,0xb89b41961UL,0xb8a02578fUL,0xb8bd970f8UL,0xb8cb5ed24UL,0xb8d6eca53UL,0xb8ed884bdUL,0xb8f03a3caUL,0xb8001bf05UL,0xb81da9872UL,0xb826cd69cUL,0xb83b7f1ebUL,0xb84db6c37UL,0xb85004b40UL,0xb86b605aeUL,0xb876d22d9UL,0xb784ef2e6UL,0xb7995d591UL,0xb7a239b7fUL,0xb7bf8bc08UL,0xb7c9421d4UL,0xb7d4f06a3UL,0xb7ef9484dUL,0xb7f226f3aUL,0xb702073f5UL,0xb71fb5482UL,0xb724d1a6cUL,0xb73963d1bUL,0xb74faa0c7UL,0xb752187b0UL,0xb7697c95eUL,0xb774cee29UL,0xb6893f0c0UL,0xb6948d7b7UL,0xb6afe9959UL,0xb6b25be2eUL,0xb6c4923f2UL,0xb6d920485UL,0xb6e244a6bUL,0xb6fff6d1cUL,0xb60fd71d3UL,0xb612656a4UL,0xb6290184aUL,0xb634b3f3dUL,0xb6427a2e1UL,0xb65fc8596UL,0xb664acb78UL,0xb6791ec0fUL,0xb582fd1ddUL,0xb59f4f6aaUL,0xb5a42b844UL,0xb5b999f33UL,0xb5cf502efUL,0xb5d2e2598UL,0xb5e986b76UL,0xb5f434c01UL,0xb504150ceUL,0xb519a77b9UL,0xb522c3957UL,0xb53f71e20UL,0xb549b83fcUL,0xb5540a48bUL,0xb56f6ea65UL,0xb572dcd12UL,0xb48f2d3fbUL,0xb4929f48cUL,0xb4a9fba62UL,0xb4b449d15UL,0xb4c2800c9UL,0xb4df327beUL,0xb4e456950UL,0xb4f9e4e27UL,0xb409c52e8UL,0xb4147759fUL,0xb42f13b71UL,0xb432a1c06UL,0xb444681daUL,0xb459da6adUL,0xb462be843UL,0xb47f0cf34UL,0xb388cb490UL,0xb395793e7UL,0xb3ae1dd09UL,0xb3b3afa7eUL,0xb3c5667a2UL,0xb3d8d40d5UL,0xb3e3b0e3bUL,0xb3fe0294cUL,0xb30e23583UL,0xb313912f4UL,0xb328f5c1aUL,0xb33547b6dUL,0xb3438e6b1UL,0xb35e3c1c6UL,0xb36558f28UL,0xb378ea85fUL,0xb2851b6b6UL,0xb298a91c1UL,0xb2a3cdf2fUL,0xb2be7f858UL,0xb2c8b6584UL,0xb2d5042f3UL,0xb2ee60c1dUL,0xb2f3d2b6aUL,0xb203f37a5UL,0xb21e410d2UL,0xb22525e3cUL,0xb2389794bUL,0xb24e5e497UL,0xb253ec3e0UL,0xb26888d0eUL,0xb2753aa79UL,0xb18ed97abUL,0xb1936b0dcUL,0xb1a80fe32UL,0xb1b5bd945UL,0xb1c374499UL,0xb1dec63eeUL,0xb1e5a2d00UL,0xb1f810a77UL,0xb108316b8UL,0xb115831cfUL,0xb12ee7f21UL,0xb13355856UL,0xb1459c58aUL,0xb1582e2fdUL,0xb1634ac13UL,0xb17ef8b64UL,0xb0830958dUL,0xb09ebb2faUL,0xb0a5dfc14UL,0xb0b86db63UL,0xb0cea46bfUL,0xb0d3161c8UL,0xb0e872f26UL,0xb0f5c0851UL,0xb005e149eUL,0xb018533e9UL,0xb02337d07UL,0xb03e85a70UL,0xb0484c7acUL,0xb055fe0dbUL,0xb06e9ae35UL,0xb07328942UL,0xcf89bb211UL,0xcf9409566UL,0xcfaf6db88UL,0xcfb2dfcffUL,0xcfc416123UL,0xcfd9a4654UL,0xcfe2c08baUL,0xcfff72fcdUL,0xcf0f53302UL,0xcf12e1475UL,0xcf2985a9bUL,0xcf3437decUL,0xcf42fe030UL,0xcf5f4c747UL,0xcf64289a9UL,0xcf799aedeUL,0xce846b037UL,0xce99d9740UL,0xcea2bd9aeUL,0xcebf0fed9UL,0xcec9c6305UL,0xced474472UL,0xceef10a9cUL,0xcef2a2debUL,0xce0283124UL,0xce1f31653UL,0xce24558bdUL,0xce39e7fcaUL,0xce4f2e216UL,0xce529c561UL,0xce69f8b8fUL,0xce744acf8UL,0xcd8fa912aUL,0xcd921b65dUL,0xcda97f8b3UL,0xcdb4cdfc4UL,0xcdc204218UL,0xcddfb656fUL,0xcde4d2b81UL,0xcdf960cf6UL,0xcd0941039UL,0xcd14f374eUL,0xcd2f979a0UL,0xcd3225ed7UL,0xcd44ec30bUL,0xcd595e47cUL,0xcd623aa92UL,0xcd7f88de5UL,0xcc827930cUL,0xcc9fcb47bUL,0xcca4afa95UL,0xccb91dde2UL,0xcccfd403eUL,0xccd266749UL,0xcce9029a7UL,0xccf4b0ed0UL,0xcc049121fUL,0xcc1923568UL,0xcc2247b86UL,0xcc3ff5cf1UL,0xcc493c12dUL,0xcc548e65aUL,0xcc6fea8b4UL,0xcc7258fc3UL,0xcb859f467UL,0xcb982d310UL,0xcba349dfeUL,0xcbbefba89UL,0xcbc832755UL,0xcbd580022UL,0xcbeee4eccUL,0xcbf3569bbUL,0xcb0377574UL,0xcb1ec5203UL,0xcb25a1cedUL,0xcb3813b9aUL,0xcb4eda646UL,0xcb5368131UL,0xcb680cfdfUL,0xcb75be8a8UL,0xca884f641UL,0xca95fd136UL,0xcaae99fd8UL,0xcab32b8afUL,0xcac5e2573UL,0xcad850204UL,0xcae334ceaUL,0xcafe86b9dUL,0xca0ea7752UL,0xca1315025UL,0xca2871ecbUL,0xca35c39bcUL,0xca430a460UL,0xca5eb8317UL,0xca65dcdf9UL,0xca786ea8eUL,0xc9838d75cUL,0xc99e3f02bUL,0xc9a55bec5UL,0xc9b8e99b2UL,0xc9ce2046eUL,0xc9d392319UL,0xc9e8f6df7UL,0xc9f544a80UL,0xc9056564fUL,0xc918d7138UL,0xc923b3fd6UL,0xc93e018a1UL,0xc948c857dUL,0xc9557a20aUL,0xc96e1ece4UL,0xc973acb93UL,0xc88e5d57aUL,0xc893ef20dUL,0xc8a88bce3UL,0xc8b539b94UL,0xc8c3f0648UL,0xc8de4213fUL,0xc8e526fd1UL,0xc8f8948a6UL,0xc808b5469UL,0xc8150731eUL,0xc82e63df0UL,0xc833d1a87UL,0xc8451875bUL,0xc858aa02cUL,0xc863ceec2UL,0xc87e7c9b5UL,0xc78c4198aUL,0xc791f3efdUL,0xc7aa97013UL,0xc7b725764UL,0xc7c1ecab8UL,0xc7dc5edcfUL,0xc7e73a321UL,0xc7fa88456UL,0xc70aa9899UL,0xc7171bfeeUL,0xc72c7f100UL,0xc731cd677UL,0xc74704babUL,0xc75ab6cdcUL,0xc761d2232UL,0xc77c60545UL,0xc68191bacUL,0xc69c23cdbUL,0xc6a747235UL,0xc6baf5542UL,0xc6cc3c89eUL,0xc6d18efe9UL,0xc6eaea107UL,0xc6f758670UL,0xc60779abfUL,0xc61acbdc8UL,0xc621af326UL,0xc63c1d451UL,0xc64ad498dUL,0xc65766efaUL,0xc66c02014UL,0xc671b0763UL,0xc58a53ab1UL,0xc597e1dc6UL,0xc5ac85328UL,0xc5b13745fUL,0xc5c7fe983UL,0xc5da4cef4UL,0xc5e12801aUL,0xc5fc9a76dUL,0xc50cbbba2UL,0xc51109cd5UL,0xc52a6d23bUL,0xc537df54cUL,0xc54116890UL,0xc55ca4fe7UL,0xc567c0109UL,0xc57a7267eUL,0xc48783897UL,0xc49a31fe0UL,0xc4a15510eUL,0xc4bce7679UL,0xc4ca2eba5UL,0xc4d79ccd2UL,0xc4ecf823cUL,0xc4f14a54bUL,0xc4016b984UL,0xc41cd9ef3UL,0xc427bd01dUL,0xc43a0f76aUL,0xc44cc6ab6UL,0xc45174dc1UL,0xc46a1032fUL,0xc477a2458UL,0xc38065ffcUL,0xc39dd788bUL,0xc3a6b3665UL,0xc3bb01112UL,0xc3cdc8cceUL,0xc3d07abb9UL,0xc3eb1e557UL,0xc3f6ac220UL,0xc3068deefUL,0xc31b3f998UL,0xc3205b776UL,0xc33de9001UL,0xc34b20dddUL,0xc35692aaaUL,0xc36df6444UL,0xc37044333UL,0xc28db5ddaUL,0xc29007aadUL,0xc2ab63443UL,0xc2b6d1334UL,0xc2c018ee8UL,0xc2ddaa99fUL,0xc2e6ce771UL,0xc2fb7c006UL,0xc20b5dcc9UL,0xc216efbbeUL,0xc22d8b550UL,0xc23039227UL,0xc246f0ffbUL,0xc25b4288cUL,0xc26026662UL,0xc27d94115UL,0xc18677cc7UL,0xc19bc5bb0UL,0xc1a0a155eUL,0xc1bd13229UL,0xc1cbdaff5UL,0xc1d668882UL,0xc1ed0c66cUL,0xc1f0be11bUL,0xc1009fdd4UL,0xc11d2daa3UL,0xc1264944dUL,0xc13bfb33aUL,0xc14d32ee6UL,0xc15080991UL,0xc16be477fUL,0xc17656008UL,0xc08ba7ee1UL,0xc09615996UL,0xc0ad71778UL,0xc0b0c300fUL,0xc0c60add3UL,0xc0dbb8aa4UL,0xc0e0dc44aUL,0xc0fd6e33dUL,0xc00d4fff2UL,0xc010fd885UL,0xc02b9966bUL,0xc0362b11cUL,0xc040e2cc0UL,0xc05d50bb7UL,0xc06634559UL,0xc07b8622eUL,0xdf824e527UL,0xdf9ffc250UL,0xdfa498cbeUL,0xdfb92abc9UL,0xdfcfe3615UL,0xdfd251162UL,0xdfe935f8cUL,0xdff4878fbUL,0xdf04a6434UL,0xdf1914343UL,0xdf2270dadUL,0xdf3fc2adaUL,0xdf490b706UL,0xdf54b9071UL,0xdf6fdde9fUL,0xdf726f9e8UL,0xde8f9e701UL,0xde922c076UL,0xdea948e98UL,0xdeb4fa9efUL,0xdec233433UL,0xdedf81344UL,0xdee4e5daaUL,0xdef957addUL,0xde0976612UL,0xde14c4165UL,0xde2fa0f8bUL,0xde32128fcUL,0xde44db520UL,0xde5969257UL,0xde620dcb9UL,0xde7fbfbceUL,0xdd845c61cUL,0xdd99ee16bUL,0xdda28af85UL,0xddbf388f2UL,0xddc9f152eUL,0xddd443259UL,0xddef27cb7UL,0xddf295bc0UL,0xdd02b470fUL,0xdd1f06078UL,0xdd2462e96UL,0xdd39d09e1UL,0xdd4f1943dUL,0xdd52ab34aUL,0xdd69cfda4UL,0xdd747dad3UL,0xdc898c43aUL,0xdc943e34dUL,0xdcaf5ada3UL,0xdcb2e8ad4UL,0xdcc421708UL,0xdcd99307fUL,0xdce2f7e91UL,0xdcff459e6UL,0xdc0f64529UL,0xdc12d625eUL,0xdc29b2cb0UL,0xdc3400bc7UL,0xdc42c961bUL,0xdc5f7b16cUL,0xdc641ff82UL,0xdc79ad8f5UL,0xdb8e6a351UL,0xdb93d8426UL,0xdba8bcac8UL,0xdbb50edbfUL,0xdbc3c7063UL,0xdbde75714UL,0xdbe5119faUL,0xdbf8a3e8dUL,0xdb0882242UL,0xdb1530535UL,0xdb2e54bdbUL,0xdb33e6cacUL,0xdb452f170UL,0xdb589d607UL,0xdb63f98e9UL,0xdb7e4bf9eUL,0xda83ba177UL,0xda9e08600UL,0xdaa56c8eeUL,0xdab8def99UL,0xdace17245UL,0xdad3a5532UL,0xdae8c1bdcUL,0xdaf573cabUL,0xda0552064UL,0xda18e0713UL,0xda23849fdUL,0xda3e36e8aUL,0xda48ff356UL,0xda554d421UL,0xda6e29acfUL,0xda739bdb8UL,0xd9887806aUL,0xd995ca71dUL,0xd9aeae9f3UL,0xd9b31ce84UL,0xd9c5d5358UL,0xd9d86742fUL,0xd9e303ac1UL,0xd9feb1db6UL,0xd90e90179UL,0xd9132260eUL,0xd928468e0UL,0xd935f4f97UL,0xd9433d24bUL,0xd95e8f53cUL,0xd965ebbd2UL,0xd97859ca5UL,0xd885a824cUL,0xd8981a53bUL,0xd8a37ebd5UL,0xd8beccca2UL,0xd8c80517eUL,0xd8d5b7609UL,0xd8eed38e7UL,0xd8f361f90UL,0xd8034035fUL,0xd81ef2428UL,0xd82596ac6UL,0xd83824db1UL,0xd84eed06dUL,0xd8535f71aUL,0xd8683b9f4UL,0xd87589e83UL,0xd787b4ebcUL,0xd79a069cbUL,0xd7a162725UL,0xd7bcd0052UL,0xd7ca19d8eUL,0xd7d7abaf9UL,0xd7eccf417UL,0xd7f17d360UL,0xd7015cfafUL,0xd71cee8d8UL,0xd7278a636UL,0xd73a38141UL,0xd74cf1c9dUL,0xd75143beaUL,0xd76a27504UL,0xd77795273UL,0xd68a64c9aUL,0xd697d6bedUL,0xd6acb2503UL,0xd6b100274UL,0xd6c7c9fa8UL,0xd6da7b8dfUL,0xd6e11f631UL,0xd6fcad146UL,0xd60c8cd89UL,0xd6113eafeUL,0xd62a5a410UL,0xd637e8367UL,0xd64121ebbUL,0xd65c939ccUL,0xd667f7722UL,0xd67a45055UL,0xd581a6d87UL,0xd59c14af0UL,0xd5a77041eUL,0xd5bac2369UL,0xd5cc0beb5UL,0xd5d1b99c2UL,0xd5eadd72cUL,0xd5f76f05bUL,0xd5074ec94UL,0xd51afcbe3UL,0xd5219850dUL,0xd53c2a27aUL,0xd54ae3fa6UL,0xd557518d1UL,0xd56c3563fUL,0xd57187148UL,0xd48c76fa1UL,0xd491c48d6UL,0xd4aaa0638UL,0xd4b71214fUL,0xd4c1dbc93UL,0xd4dc69be4UL,0xd4e70d50aUL,0xd4fabf27dUL,0xd40a9eeb2UL,0xd4172c9c5UL,0xd42c4872bUL,0xd431fa05cUL,0xd44733d80UL,0xd45a81af7UL,0xd461e5419UL,0xd47c5736eUL,0xd38b908caUL,0xd39622fbdUL,0xd3ad46153UL,0xd3b0f4624UL,0xd3c63dbf8UL,0xd3db8fc8fUL,0xd3e0eb261UL,0xd3fd59516UL,0xd30d789d9UL,0xd310caeaeUL,0xd32bae040UL,0xd3361c737UL,0xd340d5aebUL,0xd35d67d9cUL,0xd36603372UL,0xd37bb1405UL,0xd28640aecUL,0xd29bf2d9bUL,0xd2a096375UL,0xd2bd24402UL,0xd2cbed9deUL,0xd2d65fea9UL,0xd2ed3b047UL,0xd2f089730UL,0xd200a8bffUL,0xd21d1ac88UL,0xd2267e266UL,0xd23bcc511UL,0xd24d058cdUL,0xd250b7fbaUL,0xd26bd3154UL,0xd27661623UL,0xd18d82bf1UL,0xd19030c86UL,0xd1ab54268UL,0xd1b6e651fUL,0xd1c02f8c3UL,0xd1dd9dfb4UL,0xd1e6f915aUL,0xd1fb4b62dUL,0xd10b6aae2UL,0xd116d8d95UL,0xd12dbc37bUL,0xd1300e40cUL,0xd146c79d0UL,0xd15b75ea7UL,0xd16011049UL,0xd17da373eUL,0xd080529d7UL,0xd09de0ea0UL,0xd0a68404eUL,0xd0bb36739UL,0xd0cdffae5UL,0xd0d04dd92UL,0xd0eb2937cUL,0xd0f69b40bUL,0xd006ba8c4UL,0xd01b08fb3UL,0xd0206c15dUL,0xd03dde62aUL,0xd04b17bf6UL,0xd056a5c81UL,0xd06dc126fUL,0xd07073518UL,0xef83e3b0aUL,0xef9e51c7dUL,0xefa535293UL,0xefb8875e4UL,0xefce4e838UL,0xefd3fcf4fUL,0xefe8981a1UL,0xeff52a6d6UL,0xef050ba19UL,0xef18b9d6eUL,0xef23dd380UL,0xef3e6f4f7UL,0xef48a692bUL,0xef5514e5cUL,0xef6e700b2UL,0xef73c27c5UL,0xee8e3392cUL,0xee9381e5bUL,0xeea8e50b5UL,0xeeb5577c2UL,0xeec39ea1eUL,0xeede2cd69UL,0xeee548387UL,0xeef8fa4f0UL,0xee08db83fUL,0xee1569f48UL,0xee2e0d1a6UL,0xee33bf6d1UL,0xee4576b0dUL,0xee58c4c7aUL,0xee63a0294UL,0xee7e125e3UL,0xed85f1831UL,0xed9843f46UL,0xeda3271a8UL,0xedbe956dfUL,0xedc85cb03UL,0xedd5eec74UL,0xedee8a29aUL,0xedf3385edUL,0xed0319922UL,0xed1eabe55UL,0xed25cf0bbUL,0xed387d7ccUL,0xed4eb4a10UL,0xed5306d67UL,0xed6862389UL,0xed75d04feUL,0xec8821a17UL,0xec9593d60UL,0xecaef738eUL,0xecb3454f9UL,0xecc58c925UL,0xecd83ee52UL,0xece35a0bcUL,0xecfee87cbUL,0xec0ec9b04UL,0xec137bc73UL,0xec281f29dUL,0xec35ad5eaUL,0xec4364836UL,0xec5ed6f41UL,0xec65b21afUL,0xec78006d8UL,0xeb8fc7d7cUL,0xeb9275a0bUL,0xeba9114e5UL,0xebb4a3392UL,0xebc26ae4eUL,0xebdfd8939UL,0xebe4bc7d7UL,0xebf90e0a0UL,0xeb092fc6fUL,0xeb149db18UL,0xeb2ff95f6UL,0xeb324b281UL,0xeb4482f5dUL,0xeb593082aUL,0xeb62546c4UL,0xeb7fe61b3UL,0xea8217f5aUL,0xea9fa582dUL,0xeaa4c16c3UL,0xeab9731b4UL,0xeacfbac68UL,0xead208b1fUL,0xeae96c5f1UL,0xeaf4de286UL,0xea04ffe49UL,0xea194d93eUL,0xea22297d0UL,0xea3f9b0a7UL,0xea4952d7bUL,0xea54e0a0cUL,0xea6f844e2UL,0xea7236395UL,0xe989d5e47UL,0xe99467930UL,0xe9af037deUL,0xe9b2b10a9UL,0xe9c478d75UL,0xe9d9caa02UL,0xe9e2ae4ecUL,0xe9ff1c39bUL,0xe90f3df54UL,0xe9128f823UL,0xe929eb6cdUL,0xe934591baUL,0xe94290c66UL,0xe95f22b11UL,0xe964465ffUL,0xe979f4288UL,0xe88405c61UL,0xe899b7b16UL,0xe8a2d35f8UL,0xe8bf6128fUL,0xe8c9a8f53UL,0xe8d41a824UL,0xe8ef7e6caUL,0xe8f2cc1bdUL,0xe802edd72UL,0xe81f5fa05UL,0xe8243b4ebUL,0xe8398939cUL,0xe84f40e40UL,0xe852f2937UL,0xe869967d9UL,0xe874240aeUL,0xe78619091UL,0xe79bab7e6UL,0xe7a0cf908UL,0xe7bd7de7fUL,0xe7cbb43a3UL,0xe7d6064d4UL,0xe7ed62a3aUL,0xe7f0d0d4dUL,0xe700f1182UL,0xe71d436f5UL,0xe7262781bUL,0xe73b95f6cUL,0xe74d5c2b0UL,0xe750ee5c7UL,0xe76b8ab29UL,0xe77638c5eUL,0xe68bc92b7UL,0xe6967b5c0UL,0xe6ad1fb2eUL,0xe6b0adc59UL,0xe6c664185UL,0xe6dbd66f2UL,0xe6e0b281cUL,0xe6fd00f6bUL,0xe60d213a4UL,0xe610934d3UL,0xe62bf7a3dUL,0xe63645d4aUL,0xe6408c096UL,0xe65d3e7e1UL,0xe6665a90fUL,0xe67be8e78UL,0xe5800b3aaUL,0xe59db94ddUL,0xe5a6dda33UL,0xe5bb6fd44UL,0xe5cda6098UL,0xe5d0147efUL,0xe5eb70901UL,0xe5f6c2e76UL,0xe506e32b9UL,0xe51b515ceUL,0xe52035b20UL,0xe53d87c57UL,0xe54b4e18bUL,0xe556fc6fcUL,0xe56d98812UL,0xe5702af65UL,0xe48ddb18cUL,0xe490696fbUL,0xe4ab0d815UL,0xe4b6bff62UL,0xe4c0762beUL,0xe4ddc45c9UL,0xe4e6a0b27UL,0xe4fb12c50UL,0xe40b3309fUL,0xe416817e8UL,0xe42de5906UL,0xe43057e71UL,0xe4469e3adUL,0xe45b2c4daUL,0xe46048a34UL,0xe47dfad43UL,0xe38a3d6e7UL,0xe3978f190UL,0xe3acebf7eUL,0xe3b159809UL,0xe3c7905d5UL,0xe3da222a2UL,0xe3e146c4cUL,0xe3fcf4b3bUL,0xe30cd57f4UL,0xe31167083UL,0xe32a03e6dUL,0xe337b191aUL,0xe341784c6UL,0xe35cca3b1UL,0xe367aed5fUL,0xe37a1ca28UL,0xe287ed4c1UL,0xe29a5f3b6UL,0xe2a13bd58UL,0xe2bc89a2fUL,0xe2ca407f3UL,0xe2d7f2084UL,0xe2ec96e6aUL,0xe2f12491dUL,0xe201055d2UL,0xe21cb72a5UL,0xe227d3c4bUL,0xe23a61b3cUL,0xe24ca86e0UL,0xe2511a197UL,0xe26a7ef79UL,0xe277cc80eUL,0xe18c2f5dcUL,0xe1919d2abUL,0xe1aaf9c45UL,0xe1b74bb32UL,0xe1c1826eeUL,0xe1dc30199UL,0xe1e754f77UL,0xe1fae6800UL,0xe10ac74cfUL,0xe117753b8UL,0xe12c11d56UL,0xe131a3a21UL,0xe1476a7fdUL,0xe15ad808aUL,0xe161bce64UL,0xe17c0e913UL,0xe081ff7faUL,0xe09c4d08dUL,0xe0a729e63UL,0xe0ba9b914UL,0xe0cc524c8UL,0xe0d1e03bfUL,0xe0ea84d51UL,0xe0f736a26UL,0xe007176e9UL,0xe01aa519eUL,0xe021c1f70UL,0xe03c73807UL,0xe04aba5dbUL,0xe057082acUL,0xe06c6cc42UL,0xe071deb35UL,0xff8816c3cUL,0xff95a4b4bUL,0xffaec05a5UL,0xffb3722d2UL,0xffc5bbf0eUL,0xffd809879UL,0xffe36d697UL,0xfffedf1e0UL,0xff0efed2fUL,0xff134ca58UL,0xff28284b6UL,0xff359a3c1UL,0xff4353e1dUL,0xff5ee196aUL,0xff6585784UL,0xff78370f3UL,0xfe85c6e1aUL,0xfe987496dUL,0xfea310783UL,0xfebea20f4UL,0xfec86bd28UL,0xfed5d9a5fUL,0xfeeebd4b1UL,0xfef30f3c6UL,0xfe032ef09UL,0xfe1e9c87eUL,0xfe25f8690UL,0xfe384a1e7UL,0xfe4e83c3bUL,0xfe5331b4cUL,0xfe68555a2UL,0xfe75e72d5UL,0xfd8e04f07UL,0xfd93b6870UL,0xfda8d269eUL,0xfdb5601e9UL,0xfdc3a9c35UL,0xfdde1bb42UL,0xfde57f5acUL,0xfdf8cd2dbUL,0xfd08ece14UL,0xfd155e963UL,0xfd2e3a78dUL,0xfd33880faUL,0xfd4541d26UL,0xfd58f3a51UL,0xfd63974bfUL,0xfd7e253c8UL,0xfc83d4d21UL,0xfc9e66a56UL,0xfca5024b8UL,0xfcb8b03cfUL,0xfcce79e13UL,0xfcd3cb964UL,0xfce8af78aUL,0xfcf51d0fdUL,0xfc053cc32UL,0xfc188eb45UL,0xfc23ea5abUL,0xfc3e582dcUL,0xfc4891f00UL,0xfc5523877UL,0xfc6e47699UL,0xfc73f51eeUL,0xfb8432a4aUL,0xfb9980d3dUL,0xfba2e43d3UL,0xfbbf564a4UL,0xfbc99f978UL,0xfbd42de0fUL,0xfbef490e1UL,0xfbf2fb796UL,0xfb02dab59UL,0xfb1f68c2eUL,0xfb240c2c0UL,0xfb39be5b7UL,0xfb4f7786bUL,0xfb52c5f1cUL,0xfb69a11f2UL,0xfb7413685UL,0xfa89e286cUL,0xfa9450f1bUL,0xfaaf341f5UL,0xfab286682UL,0xfac44fb5eUL,0xfad9fdc29UL,0xfae2992c7UL,0xfaff2b5b0UL,0xfa0f0a97fUL,0xfa12b8e08UL,0xfa29dc0e6UL,0xfa346e791UL,0xfa42a7a4dUL,0xfa5f15d3aUL,0xfa64713d4UL,0xfa79c34a3UL,0xf98220971UL,0xf99f92e06UL,0xf9a4f60e8UL,0xf9b94479fUL,0xf9cf8da43UL,0xf9d23fd34UL,0xf9e95b3daUL,0xf9f4e94adUL,0xf904c8862UL,0xf9197af15UL,0xf9221e1fbUL,0xf93fac68cUL,0xf94965b50UL,0xf954d7c27UL,0xf96fb32c9UL,0xf972015beUL,0xf88ff0b57UL,0xf89242c20UL,0xf8a9262ceUL,0xf8b4945b9UL,0xf8c25d865UL,0xf8dfeff12UL,0xf8e48b1fcUL,0xf8f93968bUL,0xf80918a44UL,0xf814aad33UL,0xf82fce3ddUL,0xf8327c4aaUL,0xf844b5976UL,0xf85907e01UL,0xf862630efUL,0xf87fd1798UL,0xf78dec7a7UL,0xf7905e0d0UL,0xf7ab3ae3eUL,0xf7b688949UL,0xf7c041495UL,0xf7ddf33e2UL,0xf7e697d0cUL,0xf7fb25a7bUL,0xf70b046b4UL,0xf716b61c3UL,0xf72dd2f2dUL,0xf7306085aUL,0xf746a9586UL,0xf75b1b2f1UL,0xf7607fc1fUL,0xf77dcdb68UL,0xf6803c581UL,0xf69d8e2f6UL,0xf6a6eac18UL,0xf6bb58b6fUL,0xf6cd916b3UL,0xf6d0231c4UL,0xf6eb47f2aUL,0xf6f6f585dUL,0xf606d4492UL,0xf61b663e5UL,0xf62002d0bUL,0xf63db0a7cUL,0xf64b797a0UL,0xf656cb0d7UL,0xf66dafe39UL,0xf6701d94eUL,0xf58bfe49cUL,0xf5964c3ebUL,0xf5ad28d05UL,0xf5b09aa72UL,0xf5c6537aeUL,0xf5dbe10d9UL,0xf5e085e37UL,0xf5fd37940UL,0xf50d1658fUL,0xf510a42f8UL,0xf52bc0c16UL,0xf53672b61UL,0xf540bb6bdUL,0xf55d091caUL,0xf5666df24UL,0xf57bdf853UL,0xf4862e6baUL,0xf49b9c1cdUL,0xf4a0f8f23UL,0xf4bd4a854UL,0xf4cb83588UL,0xf4d6312ffUL,0xf4ed55c11UL,0xf4f0e7b66UL,0xf400c67a9UL,0xf41d740deUL,0xf42610e30UL,0xf43ba2947UL,0xf44d6b49bUL,0xf450d93ecUL,0xf46bbdd02UL,0xf4760fa75UL,0xf381c81d1UL,0xf39c7a6a6UL,0xf3a71e848UL,0xf3baacf3fUL,0xf3cc652e3UL,0xf3d1d7594UL,0xf3eab3b7aUL,0xf3f701c0dUL,0xf307200c2UL,0xf31a927b5UL,0xf321f695bUL,0xf33c44e2cUL,0xf34a8d3f0UL,0xf3573f487UL,0xf36c5ba69UL,0xf371e9d1eUL,0xf28c183f7UL,0xf291aa480UL,0xf2aacea6eUL,0xf2b77cd19UL,0xf2c1b50c5UL,0xf2dc077b2UL,0xf2e76395cUL,0xf2fad1e2bUL,0xf20af02e4UL,0xf21742593UL,0xf22c26b7dUL,0xf23194c0aUL,0xf2475d1d6UL,0xf25aef6a1UL,0xf2618b84fUL,0xf27c39f38UL,0xf187da2eaUL,0xf19a6859dUL,0xf1a10cb73UL,0xf1bcbec04UL,0xf1ca771d8UL,0xf1d7c56afUL,0xf1eca1841UL,0xf1f113f36UL,0xf101323f9UL,0xf11c8048eUL,0xf127e4a60UL,0xf13a56d17UL,0xf14c9f0cbUL,0xf1512d7bcUL,0xf16a49952UL,0xf177fbe25UL,0xf08a0a0ccUL,0xf097b87bbUL,0xf0acdc955UL,0xf0b16ee22UL,0xf0c7a73feUL,0xf0da15489UL,0xf0e171a67UL,0xf0fcc3d10UL,0xf00ce21dfUL,0xf011506a8UL,0xf02a34846UL,0xf03786f31UL,0xf0414f2edUL,0xf05cfd59aUL,0xf06799b74UL,0xf07a2bc03UL,0xf8f0caa5UL,0xf92bedd2UL,0xfa9da33cUL,0xfb46844bUL,0xfc2a1997UL,0xfdf13ee0UL,0xfe47700eUL,0xff9c5779UL,0xf09e4bb6UL,0xf1456cc1UL,0xf2f3222fUL,0xf3280558UL,0xf4449884UL,0xf59fbff3UL,0xf629f11dUL,0xf7f2d66aUL,0xe82dc883UL,0xe9f6eff4UL,0xea40a11aUL,0xeb9b866dUL,0xecf71bb1UL,0xed2c3cc6UL,0xee9a7228UL,0xef41555fUL,0xe0434990UL,0xe1986ee7UL,0xe22e2009UL,0xe3f5077eUL,0xe4999aa2UL,0xe542bdd5UL,0xe6f4f33bUL,0xe72fd44cUL,0xd891e99eUL,0xd94acee9UL,0xdafc8007UL,0xdb27a770UL,0xdc4b3aacUL,0xdd901ddbUL,0xde265335UL,0xdffd7442UL,0xd0ff688dUL,0xd1244ffaUL,0xd2920114UL,0xd3492663UL,0xd425bbbfUL,0xd5fe9cc8UL,0xd648d226UL,0xd793f551UL,0xc84cebb8UL,0xc997cccfUL,0xca218221UL,0xcbfaa556UL,0xcc96388aUL,0xcd4d1ffdUL,0xcefb5113UL,0xcf207664UL,0xc0226aabUL,0xc1f94ddcUL,0xc24f0332UL,0xc3942445UL,0xc4f8b999UL,0xc5239eeeUL,0xc695d000UL,0xc74ef777UL,0xb8328cd3UL,0xb9e9aba4UL,0xba5fe54aUL,0xbb84c23dUL,0xbce85fe1UL,0xbd337896UL,0xbe853678UL,0xbf5e110fUL,0xb05c0dc0UL,0xb1872ab7UL,0xb2316459UL,0xb3ea432eUL,0xb486def2UL,0xb55df985UL,0xb6ebb76bUL,0xb730901cUL,0xa8ef8ef5UL,0xa934a982UL,0xaa82e76cUL,0xab59c01bUL,0xac355dc7UL,0xadee7ab0UL,0xae58345eUL,0xaf831329UL,0xa0810fe6UL,0xa15a2891UL,0xa2ec667fUL,0xa3374108UL,0xa45bdcd4UL,0xa580fba3UL,0xa636b54dUL,0xa7ed923aUL,0x9853afe8UL,0x9988889fUL,0x9a3ec671UL,0x9be5e106UL,0x9c897cdaUL,0x9d525badUL,0x9ee41543UL,0x9f3f3234UL,0x903d2efbUL,0x91e6098cUL,0x92504762UL,0x938b6015UL,0x94e7fdc9UL,0x953cdabeUL,0x968a9450UL,0x9751b327UL,0x888eadceUL,0x89558ab9UL,0x8ae3c457UL,0x8b38e320UL,0x8c547efcUL,0x8d8f598bUL,0x8e391765UL,0x8fe23012UL,0x80e02cddUL,0x813b0baaUL,0x828d4544UL,0x83566233UL,0x843affefUL,0x85e1d898UL,0x86579676UL,0x878cb101UL,0x78af613eUL,0x79744649UL,0x7ac208a7UL,0x7b192fd0UL,0x7c75b20cUL,0x7dae957bUL,0x7e18db95UL,0x7fc3fce2UL,0x70c1e02dUL,0x711ac75aUL,0x72ac89b4UL,0x7377aec3UL,0x741b331fUL,0x75c01468UL,0x76765a86UL,0x77ad7df1UL,0x68726318UL,0x69a9446fUL,0x6a1f0a81UL,0x6bc42df6UL,0x6ca8b02aUL,0x6d73975dUL,0x6ec5d9b3UL,0x6f1efec4UL,0x601ce20bUL,0x61c7c57cUL,0x62718b92UL,0x63aaace5UL,0x64c63139UL,0x651d164eUL,0x66ab58a0UL,0x67707fd7UL,0x58ce4205UL,0x59156572UL,0x5aa32b9cUL,0x5b780cebUL,0x5c149137UL,0x5dcfb640UL,0x5e79f8aeUL,0x5fa2dfd9UL,0x50a0c316UL,0x517be461UL,0x52cdaa8fUL,0x53168df8UL,0x547a1024UL,0x55a13753UL,0x561779bdUL,0x57cc5ecaUL,0x48134023UL,0x49c86754UL,0x4a7e29baUL,0x4ba50ecdUL,0x4cc99311UL,0x4d12b466UL,0x4ea4fa88UL,0x4f7fddffUL,0x407dc130UL,0x41a6e647UL,0x4210a8a9UL,0x43cb8fdeUL,0x44a71202UL,0x457c3575UL,0x46ca7b9bUL,0x47115cecUL,0x386d2748UL,0x39b6003fUL,0x3a004ed1UL,0x3bdb69a6UL,0x3cb7f47aUL,0x3d6cd30dUL,0x3eda9de3UL,0x3f01ba94UL,0x3003a65bUL,0x31d8812cUL,0x326ecfc2UL,0x33b5e8b5UL,0x34d97569UL,0x3502521eUL,0x36b41cf0UL,0x376f3b87UL,0x28b0256eUL,0x296b0219UL,0x2add4cf7UL,0x2b066b80UL,0x2c6af65cUL,0x2db1d12bUL,0x2e079fc5UL,0x2fdcb8b2UL,0x20dea47dUL,0x2105830aUL,0x22b3cde4UL,0x2368ea93UL,0x2404774fUL,0x25df5038UL,0x26691ed6UL,0x27b239a1UL,0x180c0473UL,0x19d72304UL,0x1a616deaUL,0x1bba4a9dUL,0x1cd6d741UL,0x1d0df036UL,0x1ebbbed8UL,0x1f6099afUL,0x10628560UL,0x11b9a217UL,0x120fecf9UL,0x13d4cb8eUL,0x14b85652UL,0x15637125UL,0x16d53fcbUL,0x170e18bcUL,0x8d10655UL,0x90a2122UL,0xabc6fccUL,0xb6748bbUL,0xc0bd567UL,0xdd0f210UL,0xe66bcfeUL,0xfbd9b89UL,0xbf8746UL,0x164a031UL,0x2d2eedfUL,0x309c9a8UL,0x4655474UL,0x5be7303UL,0x6083dedUL,0x7d31a9aUL,0x1f84f9d93UL,0x1f994bae4UL,0x1fa22f40aUL,0x1fbf9d37dUL,0x1fc954ea1UL,0x1fd4e69d6UL,0x1fef82738UL,0x1ff23004fUL,0x1f0211c80UL,0x1f1fa3bf7UL,0x1f24c7519UL,0x1f397526eUL,0x1f4fbcfb2UL,0x1f520e8c5UL,0x1f696a62bUL,0x1f74d815cUL,0x1e8929fb5UL,0x1e949b8c2UL,0x1eafff62cUL,0x1eb24d15bUL,0x1ec484c87UL,0x1ed936bf0UL,0x1ee25251eUL,0x1effe0269UL,0x1e0fc1ea6UL,0x1e12739d1UL,0x1e291773fUL,0x1e34a5048UL,0x1e426cd94UL,0x1e5fdeae3UL,0x1e64ba40dUL,0x1e790837aUL,0x1d82ebea8UL,0x1d9f599dfUL,0x1da43d731UL,0x1db98f046UL,0x1dcf46d9aUL,0x1dd2f4aedUL,0x1de990403UL,0x1df422374UL,0x1d0403fbbUL,0x1d19b18ccUL,0x1d22d5622UL,0x1d3f67155UL,0x1d49aec89UL,0x1d541cbfeUL,0x1d6f78510UL,0x1d72ca267UL,0x1c8f3bc8eUL,0x1c9289bf9UL,0x1ca9ed517UL,0x1cb45f260UL,0x1cc296fbcUL,0x1cdf248cbUL,0x1ce440625UL,0x1cf9f2152UL,0x1c09d3d9dUL,0x1c1461aeaUL,0x1c2f05404UL,0x1c32b7373UL,0x1c447eeafUL,0x1c59cc9d8UL,0x1c62a8736UL,0x1c7f1a041UL,0x1b88ddbe5UL,0x1b956fc92UL,0x1bae0b27cUL,0x1bb3b950bUL,0x1bc5708d7UL,0x1bd8c2fa0UL,0x1be3a614eUL,0x1bfe14639UL,0x1b0e35af6UL,0x1b1387d81UL,0x1b28e336fUL,0x1b3551418UL,0x1b43989c4UL,0x1b5e2aeb3UL,0x1b654e05dUL,0x1b78fc72aUL,0x1a850d9c3UL,0x1a98bfeb4UL,0x1aa3db05aUL,0x1abe6972dUL,0x1ac8a0af1UL,0x1ad512d86UL,0x1aee76368UL,0x1af3c441fUL,0x1a03e58d0UL,0x1a1e57fa7UL,0x1a2533149UL,0x1a388163eUL,0x1a4e48be2UL,0x1a53fac95UL,0x1a689e27bUL,0x1a752c50cUL,0x198ecf8deUL,0x19937dfa9UL,0x19a819147UL,0x19b5ab630UL,0x19c362becUL,0x19ded0c9bUL,0x19e5b4275UL,0x19f806502UL,0x1908279cdUL,0x191595ebaUL,0x192ef1054UL,0x193343723UL,0x19458aaffUL,0x195838d88UL,0x19635c366UL,0x197eee411UL,0x18831faf8UL,0x189eadd8fUL,0x18a5c9361UL,0x18b87b416UL,0x18ceb29caUL,0x18d300ebdUL,0x18e864053UL,0x18f5d6724UL,0x1805f7bebUL,0x181845c9cUL,0x182321272UL,0x183e93505UL,0x18485a8d9UL,0x1855e8faeUL,0x186e8c140UL,0x18733e637UL,0x178103608UL,0x179cb117fUL,0x17a7d5f91UL,0x17ba678e6UL,0x17ccae53aUL,0x17d11c24dUL,0x17ea78ca3UL,0x17f7cabd4UL,0x1707eb71bUL,0x171a5906cUL,0x17213de82UL,0x173c8f9f5UL,0x174a46429UL,0x1757f435eUL,0x176c90db0UL,0x177122ac7UL,0x168cd342eUL,0x169161359UL,0x16aa05db7UL,0x16b7b7ac0UL,0x16c17e71cUL,0x16dccc06bUL,0x16e7a8e85UL,0x16fa1a9f2UL,0x160a3b53dUL,0x16178924aUL,0x162cedca4UL,0x16315fbd3UL,0x16479660fUL,0x165a24178UL,0x166140f96UL,0x167cf28e1UL,0x158711533UL,0x159aa3244UL,0x15a1c7caaUL,0x15bc75bddUL,0x15cabc601UL,0x15d70e176UL,0x15ec6af98UL,0x15f1d88efUL,0x1501f9420UL,0x151c4b357UL,0x15272fdb9UL,0x153a9daceUL,0x154c54712UL,0x1551e6065UL,0x156a82e8bUL,0x1577309fcUL,0x148ac1715UL,0x149773062UL,0x14ac17e8cUL,0x14b1a59fbUL,0x14c76c427UL,0x14dade350UL,0x14e1badbeUL,0x14fc08ac9UL,0x140c29606UL,0x14119b171UL,0x142afff9fUL,0x14374d8e8UL,0x144184534UL,0x145c36243UL,0x146752cadUL,0x147ae0bdaUL,0x138d2707eUL,0x139095709UL,0x13abf19e7UL,0x13b643e90UL,0x13c08a34cUL,0x13dd3843bUL,0x13e65cad5UL,0x13fbeeda2UL,0x130bcf16dUL,0x13167d61aUL,0x132d198f4UL,0x1330abf83UL,0x13466225fUL,0x135bd0528UL,0x1360b4bc6UL,0x137d06cb1UL,0x1280f7258UL,0x129d4552fUL,0x12a621bc1UL,0x12bb93cb6UL,0x12cd5a16aUL,0x12d0e861dUL,0x12eb8c8f3UL,0x12f63ef84UL,0x12061f34bUL,0x121bad43cUL,0x1220c9ad2UL,0x123d7bda5UL,0x124bb2079UL,0x12560070eUL,0x126d649e0UL,0x1270d6e97UL,0x118b35345UL,0x119687432UL,0x11ade3adcUL,0x11b051dabUL,0x11c698077UL,0x11db2a700UL,0x11e04e9eeUL,0x11fdfce99UL,0x110ddd256UL,0x11106f521UL,0x112b0bbcfUL,0x1136b9cb8UL,0x114070164UL,0x115dc2613UL,0x1166a68fdUL,0x117b14f8aUL,0x1086e5163UL,0x109b57614UL,0x10a0338faUL,0x10bd81f8dUL,0x10cb48251UL,0x10d6fa526UL,0x10ed9ebc8UL,0x10f02ccbfUL,0x10000d070UL,0x101dbf707UL,0x1026db9e9UL,0x103b69e9eUL,0x104da0342UL,0x105012435UL,0x106b76adbUL,0x1076c4dacUL,0x2f85543beUL,0x2f98e64c9UL,0x2fa382a27UL,0x2fbe30d50UL,0x2fc8f908cUL,0x2fd54b7fbUL,0x2fee2f915UL,0x2ff39de62UL,0x2f03bc2adUL,0x2f1e0e5daUL,0x2f256ab34UL,0x2f38d8c43UL,0x2f4e1119fUL,0x2f53a36e8UL,0x2f68c7806UL,0x2f7575f71UL,0x2e8884198UL,0x2e95366efUL,0x2eae52801UL,0x2eb3e0f76UL,0x2ec5292aaUL,0x2ed89b5ddUL,0x2ee3ffb33UL,0x2efe4dc44UL,0x2e0e6c08bUL,0x2e13de7fcUL,0x2e28ba912UL,0x2e3508e65UL,0x2e43c13b9UL,0x2e5e734ceUL,0x2e6517a20UL,0x2e78a5d57UL,0x2d8346085UL,0x2d9ef47f2UL,0x2da59091cUL,0x2db822e6bUL,0x2dceeb3b7UL,0x2dd3594c0UL,0x2de83da2eUL,0x2df58fd59UL,0x2d05ae196UL,0x2d181c6e1UL,0x2d237880fUL,0x2d3ecaf78UL,0x2d48032a4UL,0x2d55b15d3UL,0x2d6ed5b3dUL,0x2d7367c4aUL,0x2c8e962a3UL,0x2c93245d4UL,0x2ca840b3aUL,0x2cb5f2c4dUL,0x2cc33b191UL,0x2cde896e6UL,0x2ce5ed808UL,0x2cf85ff7fUL,0x2c087e3b0UL,0x2c15cc4c7UL,0x2c2ea8a29UL,0x2c331ad5eUL,0x2c45d3082UL,0x2c58617f5UL,0x2c630591bUL,0x2c7eb7e6cUL,0x2b89705c8UL,0x2b94c22bfUL,0x2bafa6c51UL,0x2bb214b26UL,0x2bc4dd6faUL,0x2bd96f18dUL,0x2be20bf63UL,0x2bffb9814UL,0x2b0f984dbUL,0x2b122a3acUL,0x2b294ed42UL,0x2b34fca35UL,0x2b42357e9UL,0x2b5f8709eUL,0x2b64e3e70UL,0x2b7951907UL,0x2a84a07eeUL,0x2a9912099UL,0x2aa276e77UL,0x2abfc4900UL,0x2ac90d4dcUL,0x2ad4bf3abUL,0x2aefdbd45UL,0x2af269a32UL,0x2a02486fdUL,0x2a1ffa18aUL,0x2a249ef64UL,0x2a392c813UL,0x2a4fe55cfUL,0x2a52572b8UL,0x2a6933c56UL,0x2a7481b21UL,0x298f626f3UL,0x2992d0184UL,0x29a9b4f6aUL,0x29b40681dUL,0x29c2cf5c1UL,0x29df7d2b6UL,0x29e419c58UL,0x29f9abb2fUL,0x29098a7e0UL,0x291438097UL,0x292f5ce79UL,0x2932ee90eUL,0x2944274d2UL,0x2959953a5UL,0x2962f1d4bUL,0x297f43a3cUL,0x2882b24d5UL,0x289f003a2UL,0x28a464d4cUL,0x28b9d6a3bUL,0x28cf1f7e7UL,0x28d2ad090UL,0x28e9c9e7eUL,0x28f47b909UL,0x28045a5c6UL,0x2819e82b1UL,0x28228cc5fUL,0x283f3eb28UL,0x2849f76f4UL,0x285445183UL,0x286f21f6dUL,0x28729381aUL,0x2780ae825UL,0x279d1cf52UL,0x27a6781bcUL,0x27bbca6cbUL,0x27cd03b17UL,0x27d0b1c60UL,0x27ebd528eUL,0x27f6675f9UL,0x270646936UL,0x271bf4e41UL,0x2720900afUL,0x273d227d8UL,0x274beba04UL,0x275659d73UL,0x276d3d39dUL,0x27708f4eaUL,0x268d7ea03UL,0x2690ccd74UL,0x26aba839aUL,0x26b61a4edUL,0x26c0d3931UL,0x26dd61e46UL,0x26e6050a8UL,0x26fbb77dfUL,0x260b96b10UL,0x261624c67UL,0x262d40289UL,0x2630f25feUL,0x26463b822UL,0x265b89f55UL,0x2660ed1bbUL,0x267d5f6ccUL,0x2586bcb1eUL,0x259b0ec69UL,0x25a06a287UL,0x25bdd85f0UL,0x25cb1182cUL,0x25d6a3f5bUL,0x25edc71b5UL,0x25f0756c2UL,0x250054a0dUL,0x251de6d7aUL,0x252682394UL,0x253b304e3UL,0x254df993fUL,0x25504be48UL,0x256b2f0a6UL,0x25769d7d1UL,0x248b6c938UL,0x2496dee4fUL,0x24adba0a1UL,0x24b0087d6UL,0x24c6c1a0aUL,0x24db73d7dUL,0x24e017393UL,0x24fda54e4UL,0x240d8482bUL,0x241036f5cUL,0x242b521b2UL,0x2436e06c5UL,0x244029b19UL,0x245d9bc6eUL,0x2466ff280UL,0x247b4d5f7UL,0x238c8ae53UL,0x239138924UL,0x23aa5c7caUL,0x23b7ee0bdUL,0x23c127d61UL,0x23dc95a16UL,0x23e7f14f8UL,0x23fa4338fUL,0x230a62f40UL,0x2317d0837UL,0x232cb46d9UL,0x2331061aeUL,0x2347cfc72UL,0x235a7db05UL,0x2361195ebUL,0x237cab29cUL,0x22815ac75UL,0x229ce8b02UL,0x22a78c5ecUL,0x22ba3e29bUL,0x22ccf7f47UL,0x22d145830UL,0x22ea216deUL,0x22f7931a9UL,0x2207b2d66UL,0x221a00a11UL,0x2221644ffUL,0x223cd6388UL,0x224a1fe54UL,0x2257ad923UL,0x226cc97cdUL,0x22717b0baUL,0x218a98d68UL,0x21972aa1fUL,0x21ac4e4f1UL,0x21b1fc386UL,0x21c735e5aUL,0x21da8792dUL,0x21e1e37c3UL,0x21fc510b4UL,0x210c70c7bUL,0x2111c2b0cUL,0x212aa65e2UL,0x213714295UL,0x2141ddf49UL,0x215c6f83eUL,0x21670b6d0UL,0x217ab91a7UL,0x208748f4eUL,0x209afa839UL,0x20a19e6d7UL,0x20bc2c1a0UL,0x20cae5c7cUL,0x20d757b0bUL,0x20ec335e5UL,0x20f181292UL,0x2001a0e5dUL,0x201c1292aUL,0x2027767c4UL,0x203ac40b3UL,0x204c0dd6fUL,0x2051bfa18UL,0x206adb4f6UL,0x207769381UL,0x3f8ea1488UL,0x3f93133ffUL,0x3fa877d11UL,0x3fb5c5a66UL,0x3fc30c7baUL,0x3fdebe0cdUL,0x3fe5dae23UL,0x3ff868954UL,0x3f084959bUL,0x3f15fb2ecUL,0x3f2e9fc02UL,0x3f332db75UL,0x3f45e46a9UL,0x3f58561deUL,0x3f6332f30UL,0x3f7e80847UL,0x3e83716aeUL,0x3e9ec31d9UL,0x3ea5a7f37UL,0x3eb815840UL,0x3ecedc59cUL,0x3ed36e2ebUL,0x3ee80ac05UL,0x3ef5b8b72UL,0x3e05997bdUL,0x3e182b0caUL,0x3e234fe24UL,0x3e3efd953UL,0x3e483448fUL,0x3e55863f8UL,0x3e6ee2d16UL,0x3e7350a61UL,0x3d88b37b3UL,0x3d95010c4UL,0x3dae65e2aUL,0x3db3d795dUL,0x3dc51e481UL,0x3dd8ac3f6UL,0x3de3c8d18UL,0x3dfe7aa6fUL,0x3d0e5b6a0UL,0x3d13e91d7UL,0x3d288df39UL,0x3d353f84eUL,0x3d43f6592UL,0x3d5e442e5UL,0x3d6520c0bUL,0x3d7892b7cUL,0x3c8563595UL,0x3c98d12e2UL,0x3ca3b5c0cUL,0x3cbe07b7bUL,0x3cc8ce6a7UL,0x3cd57c1d0UL,0x3cee18f3eUL,0x3cf3aa849UL,0x3c038b486UL,0x3c1e393f1UL,0x3c255dd1fUL,0x3c38efa68UL,0x3c4e267b4UL,0x3c53940c3UL,0x3c68f0e2dUL,0x3c754295aUL,0x3b82852feUL,0x3b9f37589UL,0x3ba453b67UL,0x3bb9e1c10UL,0x3bcf281ccUL,0x3bd29a6bbUL,0x3be9fe855UL,0x3bf44cf22UL,0x3b046d3edUL,0x3b19df49aUL,0x3b22bba74UL,0x3b3f09d03UL,0x3b49c00dfUL,0x3b54727a8UL,0x3b6f16946UL,0x3b72a4e31UL,0x3a8f550d8UL,0x3a92e77afUL,0x3aa983941UL,0x3ab431e36UL,0x3ac2f83eaUL,0x3adf4a49dUL,0x3ae42ea73UL,0x3af99cd04UL,0x3a09bd1cbUL,0x3a140f6bcUL,0x3a2f6b852UL,0x3a32d9f25UL,0x3a44102f9UL,0x3a59a258eUL,0x3a62c6b60UL,0x3a7f74c17UL,0x3984971c5UL,0x3999256b2UL,0x39a24185cUL,0x39bff3f2bUL,0x39c93a2f7UL,0x39d488580UL,0x39efecb6eUL,0x39f25ec19UL,0x39027f0d6UL,0x391fcd7a1UL,0x3924a994fUL,0x39391be38UL,0x394fd23e4UL,0x395260493UL,0x396904a7dUL,0x3974b6d0aUL,0x3889473e3UL,0x3894f5494UL,0x38af91a7aUL,0x38b223d0dUL,0x38c4ea0d1UL,0x38d9587a6UL,0x38e23c948UL,0x38ff8ee3fUL,0x380faf2f0UL,0x38121d587UL,0x382979b69UL,0x3834cbc1eUL,0x3842021c2UL,0x385fb06b5UL,0x3864d485bUL,0x387966f2cUL,0x378b5bf13UL,0x3796e9864UL,0x37ad8d68aUL,0x37b03f1fdUL,0x37c6f6c21UL,0x37db44b56UL,0x37e0205b8UL,0x37fd922cfUL,0x370db3e00UL,0x371001977UL,0x372b65799UL,0x3736d70eeUL,0x37401ed32UL,0x375daca45UL,0x3766c84abUL,0x377b7a3dcUL,0x36868bd35UL,0x369b39a42UL,0x36a05d4acUL,0x36bdef3dbUL,0x36cb26e07UL,0x36d694970UL,0x36edf079eUL,0x36f0420e9UL,0x360063c26UL,0x361dd1b51UL,0x3626b55bfUL,0x363b072c8UL,0x364dcef14UL,0x36507c863UL,0x366b1868dUL,0x3676aa1faUL,0x358d49c28UL,0x3590fbb5fUL,0x35ab9f5b1UL,0x35b62d2c6UL,0x35c0e4f1aUL,0x35dd5686dUL,0x35e632683UL,0x35fb801f4UL,0x350ba1d3bUL,0x351613a4cUL,0x352d774a2UL,0x3530c53d5UL,0x35460ce09UL,0x355bbe97eUL,0x3560da790UL,0x357d680e7UL,0x348099e0eUL,0x349d2b979UL,0x34a64f797UL,0x34bbfd0e0UL,0x34cd34d3cUL,0x34d086a4bUL,0x34ebe24a5UL,0x34f6503d2UL,0x340671f1dUL,0x341bc386aUL,0x3420a7684UL,0x343d151f3UL,0x344bdcc2fUL,0x34566eb58UL,0x346d0a5b6UL,0x3470b82c1UL,0x33877f965UL,0x339acde12UL,0x33a1a90fcUL,0x33bc1b78bUL,0x33cad2a57UL,0x33d760d20UL,0x33ec043ceUL,0x33f1b64b9UL,0x330197876UL,0x331c25f01UL,0x3327411efUL,0x333af3698UL,0x334c3ab44UL,0x335188c33UL,0x336aec2ddUL,0x33775e5aaUL,0x328aafb43UL,0x32971dc34UL,0x32ac792daUL,0x32b1cb5adUL,0x32c702871UL,0x32dab0f06UL,0x32e1d41e8UL,0x32fc6669fUL,0x320c47a50UL,0x3211f5d27UL,0x322a913c9UL,0x3237234beUL,0x3241ea962UL,0x325c58e15UL,0x32673c0fbUL,0x327a8e78cUL,0x31816da5eUL,0x319cdfd29UL,0x31a7bb3c7UL,0x31ba094b0UL,0x31ccc096cUL,0x31d172e1bUL,0x31ea160f5UL,0x31f7a4782UL,0x310785b4dUL,0x311a37c3aUL,0x3121532d4UL,0x313ce15a3UL,0x314a2887fUL,0x31579af08UL,0x316cfe1e6UL,0x31714c691UL,0x308cbd878UL,0x30910ff0fUL,0x30aa6b1e1UL,0x30b7d9696UL,0x30c110b4aUL,0x30dca2c3dUL,0x30e7c62d3UL,0x30fa745a4UL,0x300a5596bUL,0x3017e7e1cUL,0x302c830f2UL,0x303131785UL,0x3047f8a59UL,0x305a4ad2eUL,0x30612e3c0UL,0x307c9c4b7UL,0x4f860ffe4UL,0x4f9bbd893UL,0x4fa0d967dUL,0x4fbd6b10aUL,0x4fcba2cd6UL,0x4fd610ba1UL,0x4fed7454fUL,0x4ff0c6238UL,0x4f00e7ef7UL,0x4f1d55980UL,0x4f263176eUL,0x4f3b83019UL,0x4f4d4adc5UL,0x4f50f8ab2UL,0x4f6b9c45cUL,0x4f762e32bUL,0x4e8bdfdc2UL,0x4e966dab5UL,0x4ead0945bUL,0x4eb0bb32cUL,0x4ec672ef0UL,0x4edbc0987UL,0x4ee0a4769UL,0x4efd1601eUL,0x4e0d37cd1UL,0x4e1085ba6UL,0x4e2be1548UL,0x4e365323fUL,0x4e409afe3UL,0x4e5d28894UL,0x4e664c67aUL,0x4e7bfe10dUL,0x4d801dcdfUL,0x4d9dafba8UL,0x4da6cb546UL,0x4dbb79231UL,0x4dcdb0fedUL,0x4dd00289aUL,0x4deb66674UL,0x4df6d4103UL,0x4d06f5dccUL,0x4d1b47abbUL,0x4d2023455UL,0x4d3d91322UL,0x4d4b58efeUL,0x4d56ea989UL,0x4d6d8e767UL,0x4d703c010UL,0x4c8dcdef9UL,0x4c907f98eUL,0x4cab1b760UL,0x4cb6a9017UL,0x4cc060dcbUL,0x4cddd2abcUL,0x4ce6b6452UL,0x4cfb04325UL,0x4c0b25feaUL,0x4c169789dUL,0x4c2df3673UL,0x4c3041104UL,0x4c4688cd8UL,0x4c5b3abafUL,0x4c605e541UL,0x4c7dec236UL,0x4b8a2b992UL,0x4b9799ee5UL,0x4bacfd00bUL,0x4bb14f77cUL,0x4bc786aa0UL,0x4bda34dd7UL,0x4be150339UL,0x4bfce244eUL,0x4b0cc3881UL,0x4b1171ff6UL,0x4b2a15118UL,0x4b37a766fUL,0x4b416ebb3UL,0x4b5cdccc4UL,0x4b67b822aUL,0x4b7a0a55dUL,0x4a87fbbb4UL,0x4a9a49cc3UL,0x4aa12d22dUL,0x4abc9f55aUL,0x4aca56886UL,0x4ad7e4ff1UL,0x4aec8011fUL,0x4af132668UL,0x4a0113aa7UL,0x4a1ca1dd0UL,0x4a27c533eUL,0x4a3a77449UL,0x4a4cbe995UL,0x4a510cee2UL,0x4a6a6800cUL,0x4a77da77bUL,0x498c39aa9UL,0x49918bddeUL,0x49aaef330UL,0x49b75d447UL,0x49c19499bUL,0x49dc26eecUL,0x49e742002UL,0x49faf0775UL,0x490ad1bbaUL,0x491763ccdUL,0x492c07223UL,0x4931b5554UL,0x49477c888UL,0x495acefffUL,0x4961aa111UL,0x497c18666UL,0x4881e988fUL,0x489c5bff8UL,0x48a73f116UL,0x48ba8d661UL,0x48cc44bbdUL,0x48d1f6ccaUL,0x48ea92224UL,0x48f720553UL,0x48070199cUL,0x481ab3eebUL,0x4821d7005UL,0x483c65772UL,0x484aacaaeUL,0x48571edd9UL,0x486c7a337UL,0x4871c8440UL,0x4783f547fUL,0x479e47308UL,0x47a523de6UL,0x47b891a91UL,0x47ce5874dUL,0x47d3ea03aUL,0x47e88eed4UL,0x47f53c9a3UL,0x47051d56cUL,0x4718af21bUL,0x4723cbcf5UL,0x473e79b82UL,0x4748b065eUL,0x475502129UL,0x476e66fc7UL,0x4773d48b0UL,0x468e25659UL,0x46939712eUL,0x46a8f3fc0UL,0x46b5418b7UL,0x46c38856bUL,0x46de3a21cUL,0x46e55ecf2UL,0x46f8ecb85UL,0x4608cd74aUL,0x46157f03dUL,0x462e1bed3UL,0x4633a99a4UL,0x464560478UL,0x4658d230fUL,0x4663b6de1UL,0x467e04a96UL,0x4585e7744UL,0x459855033UL,0x45a331eddUL,0x45be839aaUL,0x45c84a476UL,0x45d5f8301UL,0x45ee9cdefUL,0x45f32ea98UL,0x45030f657UL,0x451ebd120UL,0x4525d9fceUL,0x45386b8b9UL,0x454ea2565UL,0x455310212UL,0x456874cfcUL,0x4575c6b8bUL,0x448837562UL,0x449585215UL,0x44aee1cfbUL,0x44b353b8cUL,0x44c59a650UL,0x44d828127UL,0x44e34cfc9UL,0x44fefe8beUL,0x440edf471UL,0x44136d306UL,0x442809de8UL,0x4435bba9fUL,0x444372743UL,0x445ec0034UL,0x4465a4edaUL,0x4478169adUL,0x438fd1209UL,0x43926357eUL,0x43a907b90UL,0x43b4b5ce7UL,0x43c27c13bUL,0x43dfce64cUL,0x43e4aa8a2UL,0x43f918fd5UL,0x43093931aUL,0x43148b46dUL,0x432fefa83UL,0x43325ddf4UL,0x434494028UL,0x43592675fUL,0x4362429b1UL,0x437ff0ec6UL,0x42820102fUL,0x429fb3758UL,0x42a4d79b6UL,0x42b965ec1UL,0x42cfac31dUL,0x42d21e46aUL,0x42e97aa84UL,0x42f4c8df3UL,0x4204e913cUL,0x42195b64bUL,0x42223f8a5UL,0x423f8dfd2UL,0x42494420eUL,0x4254f6579UL,0x426f92b97UL,0x427220ce0UL,0x4189c3132UL,0x419471645UL,0x41af158abUL,0x41b2a7fdcUL,0x41c46e200UL,0x41d9dc577UL,0x41e2b8b99UL,0x41ff0aceeUL,0x410f2b021UL,0x411299756UL,0x4129fd9b8UL,0x41344fecfUL,0x414286313UL,0x415f34464UL,0x416450a8aUL,0x4179e2dfdUL,0x408413314UL,0x4099a1463UL,0x40a2c5a8dUL,0x40bf77dfaUL,0x40c9be026UL,0x40d40c751UL,0x40ef689bfUL,0x40f2daec8UL,0x4002fb207UL,0x401f49570UL,0x40242db9eUL,0x40399fce9UL,0x404f56135UL,0x4052e4642UL,0x4069808acUL,0x407432fdbUL,0x5f8dfa8d2UL,0x5f9048fa5UL,0x5fab2c14bUL,0x5fb69e63cUL,0x5fc057be0UL,0x5fdde5c97UL,0x5fe681279UL,0x5ffb3350eUL,0x5f0b129c1UL,0x5f16a0eb6UL,0x5f2dc4058UL,0x5f307672fUL,0x5f46bfaf3UL,0x5f5b0dd84UL,0x5f606936aUL,0x5f7ddb41dUL,0x5e802aaf4UL,0x5e9d98d83UL,0x5ea6fc36dUL,0x5ebb4e41aUL,0x5ecd879c6UL,0x5ed035eb1UL,0x5eeb5105fUL,0x5ef6e3728UL,0x5e06c2be7UL,0x5e1b70c90UL,0x5e201427eUL,0x5e3da6509UL,0x5e4b6f8d5UL,0x5e56ddfa2UL,0x5e6db914cUL,0x5e700b63bUL,0x5d8be8be9UL,0x5d965ac9eUL,0x5dad3e270UL,0x5db08c507UL,0x5dc6458dbUL,0x5ddbf7facUL,0x5de093142UL,0x5dfd21635UL,0x5d0d00afaUL,0x5d10b2d8dUL,0x5d2bd6363UL,0x5d3664414UL,0x5d40ad9c8UL,0x5d5d1febfUL,0x5d667b051UL,0x5d7bc9726UL,0x5c86389cfUL,0x5c9b8aeb8UL,0x5ca0ee056UL,0x5cbd5c721UL,0x5ccb95afdUL,0x5cd627d8aUL,0x5ced43364UL,0x5cf0f1413UL,0x5c00d08dcUL,0x5c1d62fabUL,0x5c2606145UL,0x5c3bb4632UL,0x5c4d7dbeeUL,0x5c50cfc99UL,0x5c6bab277UL,0x5c7619500UL,0x5b81deea4UL,0x5b9c6c9d3UL,0x5ba70873dUL,0x5bbaba04aUL,0x5bcc73d96UL,0x5bd1c1ae1UL,0x5beaa540fUL,0x5bf717378UL,0x5b0736fb7UL,0x5b1a848c0UL,0x5b21e062eUL,0x5b3c52159UL,0x5b4a9bc85UL,0x5b5729bf2UL,0x5b6c4d51cUL,0x5b71ff26bUL,0x5a8c0ec82UL,0x5a91bcbf5UL,0x5aaad851bUL,0x5ab76a26cUL,0x5ac1a3fb0UL,0x5adc118c7UL,0x5ae775629UL,0x5afac715eUL,0x5a0ae6d91UL,0x5a1754ae6UL,0x5a2c30408UL,0x5a318237fUL,0x5a474bea3UL,0x5a5af99d4UL,0x5a619d73aUL,0x5a7c2f04dUL,0x5987ccd9fUL,0x599a7eae8UL,0x59a11a406UL,0x59bca8371UL,0x59ca61eadUL,0x59d7d39daUL,0x59ecb7734UL,0x59f105043UL,0x590124c8cUL,0x591c96bfbUL,0x5927f2515UL,0x593a40262UL,0x594c89fbeUL,0x59513b8c9UL,0x596a5f627UL,0x5977ed150UL,0x588a1cfb9UL,0x5897ae8ceUL,0x58acca620UL,0x58b178157UL,0x58c7b1c8bUL,0x58da03bfcUL,0x58e167512UL,0x58fcd5265UL,0x580cf4eaaUL,0x5811469ddUL,0x582a22733UL,0x583790044UL,0x584159d98UL,0x585cebaefUL,0x58678f401UL,0x587a3d376UL,0x578800349UL,0x5795b243eUL,0x57aed6ad0UL,0x57b364da7UL,0x57c5ad07bUL,0x57d81f70cUL,0x57e37b9e2UL,0x57fec9e95UL,0x570ee825aUL,0x57135a52dUL,0x57283ebc3UL,0x57358ccb4UL,0x574345168UL,0x575ef761fUL,0x5765938f1UL,0x577821f86UL,0x5685d016fUL,0x569862618UL,0x56a3068f6UL,0x56beb4f81UL,0x56c87d25dUL,0x56d5cf52aUL,0x56eeabbc4UL,0x56f319cb3UL,0x56033807cUL,0x561e8a70bUL,0x5625ee9e5UL,0x56385ce92UL,0x564e9534eUL,0x565327439UL,0x566843ad7UL,0x5675f1da0UL,0x558e12072UL,0x5593a0705UL,0x55a8c49ebUL,0x55b576e9cUL,0x55c3bf340UL,0x55de0d437UL,0x55e569ad9UL,0x55f8dbdaeUL,0x5508fa161UL,0x551548616UL,0x552e2c8f8UL,0x55339ef8fUL,0x554557253UL,0x5558e5524UL,0x556381bcaUL,0x557e33cbdUL,0x5483c2254UL,0x549e70523UL,0x54a514bcdUL,0x54b8a6cbaUL,0x54ce6f166UL,0x54d3dd611UL,0x54e8b98ffUL,0x54f50bf88UL,0x54052a347UL,0x541898430UL,0x5423fcadeUL,0x543e4eda9UL,0x544887075UL,0x545535702UL,0x546e519ecUL,0x5473e3e9bUL,0x53842453fUL,0x539996248UL,0x53a2f2ca6UL,0x53bf40bd1UL,0x53c98960dUL,0x53d43b17aUL,0x53ef5ff94UL,0x53f2ed8e3UL,0x5302cc42cUL,0x531f7e35bUL,0x53241adb5UL,0x5339a8ac2UL,0x534f6171eUL,0x5352d3069UL,0x5369b7e87UL,0x5374059f0UL,0x5289f4719UL,0x52944606eUL,0x52af22e80UL,0x52b2909f7UL,0x52c45942bUL,0x52d9eb35cUL,0x52e28fdb2UL,0x52ff3dac5UL,0x520f1c60aUL,0x5212ae17dUL,0x5229caf93UL,0x5234788e4UL,0x5242b1538UL,0x525f0324fUL,0x526467ca1UL,0x5279d5bd6UL,0x518236604UL,0x519f84173UL,0x51a4e0f9dUL,0x51b9528eaUL,0x51cf9b536UL,0x51d229241UL,0x51e94dcafUL,0x51f4ffbd8UL,0x5104de717UL,0x51196c060UL,0x512208e8eUL,0x513fba9f9UL,0x514973425UL,0x5154c1352UL,0x516fa5dbcUL,0x517217acbUL,0x508fe6422UL,0x509254355UL,0x50a930dbbUL,0x50b482accUL,0x50c24b710UL,0x50dff9067UL,0x50e49de89UL,0x50f92f9feUL,0x50090e531UL,0x5014bc246UL,0x502fd8ca8UL,0x50326abdfUL,0x5044a3603UL,0x505911174UL,0x506275f9aUL,0x507fc78edUL,0x6f8c576ffUL,0x6f91e5188UL,0x6faa81f66UL,0x6fb733811UL,0x6fc1fa5cdUL,0x6fdc482baUL,0x6fe72cc54UL,0x6ffa9eb23UL,0x6f0abf7ecUL,0x6f170d09bUL,0x6f2c69e75UL,0x6f31db902UL,0x6f47124deUL,0x6f5aa03a9UL,0x6f61c4d47UL,0x6f7c76a30UL,0x6e81874d9UL,0x6e9c353aeUL,0x6ea751d40UL,0x6ebae3a37UL,0x6ecc2a7ebUL,0x6ed19809cUL,0x6eeafce72UL,0x6ef74e905UL,0x6e076f5caUL,0x6e1add2bdUL,0x6e21b9c53UL,0x6e3c0bb24UL,0x6e4ac26f8UL,0x6e577018fUL,0x6e6c14f61UL,0x6e71a6816UL,0x6d8a455c4UL,0x6d97f72b3UL,0x6dac93c5dUL,0x6db121b2aUL,0x6dc7e86f6UL,0x6dda5a181UL,0x6de13ef6fUL,0x6dfc8c818UL,0x6d0cad4d7UL,0x6d111f3a0UL,0x6d2a7bd4eUL,0x6d37c9a39UL,0x6d41007e5UL,0x6d5cb2092UL,0x6d67d6e7cUL,0x6d7a6490bUL,0x6c87957e2UL,0x6c9a27095UL,0x6ca143e7bUL,0x6cbcf190cUL,0x6cca384d0UL,0x6cd78a3a7UL,0x6ceceed49UL,0x6cf15ca3eUL,0x6c017d6f1UL,0x6c1ccf186UL,0x6c27abf68UL,0x6c3a1981fUL,0x6c4cd05c3UL,0x6c51622b4UL,0x6c6a06c5aUL,0x6c77b4b2dUL,0x6b8073089UL,0x6b9dc17feUL,0x6ba6a5910UL,0x6bbb17e67UL,0x6bcdde3bbUL,0x6bd06c4ccUL,0x6beb08a22UL,0x6bf6bad55UL,0x6b069b19aUL,0x6b1b296edUL,0x6b204d803UL,0x6b3dfff74UL,0x6b4b362a8UL,0x6b56845dfUL,0x6b6de0b31UL,0x6b7052c46UL,0x6a8da32afUL,0x6a90115d8UL,0x6aab75b36UL,0x6ab6c7c41UL,0x6ac00e19dUL,0x6addbc6eaUL,0x6ae6d8804UL,0x6afb6af73UL,0x6a0b4b3bcUL,0x6a16f94cbUL,0x6a2d9da25UL,0x6a302fd52UL,0x6a46e608eUL,0x6a5b547f9UL,0x6a6030917UL,0x6a7d82e60UL,0x6986613b2UL,0x699bd34c5UL,0x69a0b7a2bUL,0x69bd05d5cUL,0x69cbcc080UL,0x69d67e7f7UL,0x69ed1a919UL,0x69f0a8e6eUL,0x6900892a1UL,0x691d3b5d6UL,0x69265fb38UL,0x693bedc4fUL,0x694d24193UL,0x6950966e4UL,0x696bf280aUL,0x697640f7dUL,0x688bb1194UL,0x6896036e3UL,0x68ad6780dUL,0x68b0d5f7aUL,0x68c61c2a6UL,0x68dbae5d1UL,0x68e0cab3fUL,0x68fd78c48UL,0x680d59087UL,0x6810eb7f0UL,0x682b8f91eUL,0x68363de69UL,0x6840f43b5UL,0x685d464c2UL,0x686622a2cUL,0x687b90d5bUL,0x6789add64UL,0x67941fa13UL,0x67af7b4fdUL,0x67b2c938aUL,0x67c400e56UL,0x67d9b2921UL,0x67e2d67cfUL,0x67ff640b8UL,0x670f45c77UL,0x6712f7b00UL,0x6729935eeUL,0x673421299UL,0x6742e8f45UL,0x675f5a832UL,0x67643e6dcUL,0x67798c1abUL,0x66847df42UL,0x6699cf835UL,0x66a2ab6dbUL,0x66bf191acUL,0x66c9d0c70UL,0x66d462b07UL,0x66ef065e9UL,0x66f2b429eUL,0x660295e51UL,0x661f27926UL,0x6624437c8UL,0x6639f10bfUL,0x664f38d63UL,0x66528aa14UL,0x6669ee4faUL,0x66745c38dUL,0x658fbfe5fUL,0x65920d928UL,0x65a9697c6UL,0x65b4db0b1UL,0x65c212d6dUL,0x65dfa0a1aUL,0x65e4c44f4UL,0x65f976383UL,0x650957f4cUL,0x6514e583bUL,0x652f816d5UL,0x6532331a2UL,0x6544fac7eUL,0x655948b09UL,0x65622c5e7UL,0x657f9e290UL,0x64826fc79UL,0x649fddb0eUL,0x64a4b95e0UL,0x64b90b297UL,0x64cfc2f4bUL,0x64d27083cUL,0x64e9146d2UL,0x64f4a61a5UL,0x640487d6aUL,0x641935a1dUL,0x6422514f3UL,0x643fe3384UL,0x64492ae58UL,0x64549892fUL,0x646ffc7c1UL,0x64724e0b6UL,0x638589b12UL,0x63983bc65UL,0x63a35f28bUL,0x63beed5fcUL,0x63c824820UL,0x63d596f57UL,0x63eef21b9UL,0x63f3406ceUL,0x630361a01UL,0x631ed3d76UL,0x6325b7398UL,0x6338054efUL,0x634ecc933UL,0x63537ee44UL,0x63681a0aaUL,0x6375a87ddUL,0x628859934UL,0x6295ebe43UL,0x62ae8f0adUL,0x62b33d7daUL,0x62c5f4a06UL,0x62d846d71UL,0x62e32239fUL,0x62fe904e8UL,0x620eb1827UL,0x621303f50UL,0x6228671beUL,0x6235d56c9UL,0x62431cb15UL,0x625eaec62UL,0x6265ca28cUL,0x6278785fbUL,0x61839b829UL,0x619e29f5eUL,0x61a54d1b0UL,0x61b8ff6c7UL,0x61ce36b1bUL,0x61d384c6cUL,0x61e8e0282UL,0x61f5525f5UL,0x61057393aUL,0x6118c1e4dUL,0x6123a50a3UL,0x613e177d4UL,0x6148dea08UL,0x61556cd7fUL,0x616e08391UL,0x6173ba4e6UL,0x608e4ba0fUL,0x6093f9d78UL,0x60a89d396UL,0x60b52f4e1UL,0x60c3e693dUL,0x60de54e4aUL,0x60e5300a4UL,0x60f8827d3UL,0x6008a3b1cUL,0x601511c6bUL,0x602e75285UL,0x6033c75f2UL,0x60450e82eUL,0x6058bcf59UL,0x6063d81b7UL,0x607e6a6c0UL,0x7f87a21c9UL,0x7f9a106beUL,0x7fa174850UL,0x7fbcc6f27UL,0x7fca0f2fbUL,0x7fd7bd58cUL,0x7fecd9b62UL,0x7ff16bc15UL,0x7f014a0daUL,0x7f1cf87adUL,0x7f279c943UL,0x7f3a2ee34UL,0x7f4ce73e8UL,0x7f515549fUL,0x7f6a31a71UL,0x7f7783d06UL,0x7e8a723efUL,0x7e97c0498UL,0x7eaca4a76UL,0x7eb116d01UL,0x7ec7df0ddUL,0x7eda6d7aaUL,0x7ee109944UL,0x7efcbbe33UL,0x7e0c9a2fcUL,0x7e112858bUL,0x7e2a4cb65UL,0x7e37fec12UL,0x7e41371ceUL,0x7e5c856b9UL,0x7e67e1857UL,0x7e7a53f20UL,0x7d81b02f2UL,0x7d9c02585UL,0x7da766b6bUL,0x7dbad4c1cUL,0x7dcc1d1c0UL,0x7dd1af6b7UL,0x7deacb859UL,0x7df779f2eUL,0x7d07583e1UL,0x7d1aea496UL,0x7d218ea78UL,0x7d3c3cd0fUL,0x7d4af50d3UL,0x7d57477a4UL,0x7d6c2394aUL,0x7d7191e3dUL,0x7c8c600d4UL,0x7c91d27a3UL,0x7caab694dUL,0x7cb704e3aUL,0x7cc1cd3e6UL,0x7cdc7f491UL,0x7ce71ba7fUL,0x7cfaa9d08UL,0x7c0a881c7UL,0x7c173a6b0UL,0x7c2c5e85eUL,0x7c31ecf29UL,0x7c47252f5UL,0x7c5a97582UL,0x7c61f3b6cUL,0x7c7c41c1bUL,0x7b8b867bfUL,0x7b96340c8UL,0x7bad50e26UL,0x7bb0e2951UL,0x7bc62b48dUL,0x7bdb993faUL,0x7be0fdd14UL,0x7bfd4fa63UL,0x7b0d6e6acUL,0x7b10dc1dbUL,0x7b2bb8f35UL,0x7b360a842UL,0x7b40c359eUL,0x7b5d712e9UL,0x7b6615c07UL,0x7b7ba7b70UL,0x7a8656599UL,0x7a9be42eeUL,0x7aa080c00UL,0x7abd32b77UL,0x7acbfb6abUL,0x7ad6491dcUL,0x7aed2df32UL,0x7af09f845UL,0x7a00be48aUL,0x7a1d0c3fdUL,0x7a2668d13UL,0x7a3bdaa64UL,0x7a4d137b8UL,0x7a50a10cfUL,0x7a6bc5e21UL,0x7a7677956UL,0x798d94484UL,0x7990263f3UL,0x79ab42d1dUL,0x79b6f0a6aUL,0x79c0397b6UL,0x79dd8b0c1UL,0x79e6efe2fUL,0x79fb5d958UL,0x790b7c597UL,0x7916ce2e0UL,0x792daac0eUL,0x793018b79UL,0x7946d16a5UL,0x795b631d2UL,0x796007f3cUL,0x797db584bUL,0x7880446a2UL,0x789df61d5UL,0x78a692f3bUL,0x78bb2084cUL,0x78cde9590UL,0x78d05b2e7UL,0x78eb3fc09UL,0x78f68db7eUL,0x7806ac7b1UL,0x781b1e0c6UL,0x78207ae28UL,0x783dc895fUL,0x784b01483UL,0x7856b33f4UL,0x786dd7d1aUL,0x787065a6dUL,0x778258a52UL,0x779fead25UL,0x77a48e3cbUL,0x77b93c4bcUL,0x77cff5960UL,0x77d247e17UL,0x77e9230f9UL,0x77f49178eUL,0x7704b0b41UL,0x771902c36UL,0x7722662d8UL,0x773fd45afUL,0x77491d873UL,0x7754aff04UL,0x776fcb1eaUL,0x77727969dUL,0x768f88874UL,0x76923af03UL,0x76a95e1edUL,0x76b4ec69aUL,0x76c225b46UL,0x76df97c31UL,0x76e4f32dfUL,0x76f9415a8UL,0x760960967UL,0x7614d2e10UL,0x762fb60feUL,0x763204789UL,0x7644cda55UL,0x76597fd22UL,0x76621b3ccUL,0x767fa94bbUL,0x75844a969UL,0x7599f8e1eUL,0x75a29c0f0UL,0x75bf2e787UL,0x75c9e7a5bUL,0x75d455d2cUL,0x75ef313c2UL,0x75f2834b5UL,0x7502a287aUL,0x751f10f0dUL,0x7524741e3UL,0x7539c6694UL,0x754f0fb48UL,0x7552bdc3fUL,0x7569d92d1UL,0x75746b5a6UL,0x74899ab4fUL,0x749428c38UL,0x74af4c2d6UL,0x74b2fe5a1UL,0x74c43787dUL,0x74d985f0aUL,0x74e2e11e4UL,0x74ff53693UL,0x740f72a5cUL,0x7412c0d2bUL,0x7429a43c5UL,0x7434164b2UL,0x7442df96eUL,0x745f6de19UL,0x7464090f7UL,0x7479bb780UL,0x738e7cc24UL,0x7393ceb53UL,0x73a8aa5bdUL,0x73b5182caUL,0x73c3d1f16UL,0x73de63861UL,0x73e50768fUL,0x73f8b51f8UL,0x730894d37UL,0x731526a40UL,0x732e424aeUL,0x7333f03d9UL,0x734539e05UL,0x73588b972UL,0x7363ef79cUL,0x737e5d0ebUL,0x7283ace02UL,0x729e1e975UL,0x72a57a79bUL,0x72b8c80ecUL,0x72ce01d30UL,0x72d3b3a47UL,0x72e8d74a9UL,0x72f5653deUL,0x720544f11UL,0x7218f6866UL,0x722392688UL,0x723e201ffUL,0x7248e9c23UL,0x72555bb54UL,0x726e3f5baUL,0x72738d2cdUL,0x71886ef1fUL,0x7195dc868UL,0x71aeb8686UL,0x71b30a1f1UL,0x71c5c3c2dUL,0x71d871b5aUL,0x71e3155b4UL,0x71fea72c3UL,0x710e86e0cUL,0x71133497bUL,0x712850795UL,0x7135e20e2UL,0x71432bd3eUL,0x715e99a49UL,0x7165fd4a7UL,0x71784f3d0UL,0x7085bed39UL,0x70980ca4eUL,0x70a3684a0UL,0x70beda3d7UL,0x70c813e0bUL,0x70d5a197cUL,0x70eec5792UL,0x70f3770e5UL,0x700356c2aUL,0x701ee4b5dUL,0x7025805b3UL,0x7038322c4UL,0x704efbf18UL,0x70534986fUL,0x70682d681UL,0x70759f1f6UL}; + fromVector(codes,d._code_id); + d._nbits=36; + d._tau=2;// + d._type=ARTOOLKITPLUSBCH; + d._name="ARTOOLKITPLUSBCH"; + + }break; + case TAG36h11:{ +vector codes={0xd5d628584UL,0xd97f18b49UL,0xdd280910eUL,0xe479e9c98UL,0xebcbca822UL,0xf31dab3acUL,0x56a5d085UL,0x10652e1d4UL,0x22b1dfeadUL,0x265ad0472UL,0x34fe91b86UL,0x3ff962cd5UL,0x43a25329aUL,0x474b4385fUL,0x4e9d243e9UL,0x5246149aeUL,0x5997f5538UL,0x683bb6c4cUL,0x6be4a7211UL,0x7e3158eeaUL,0x81da494afUL,0x858339a74UL,0x8cd51a5feUL,0x9f21cc2d7UL,0xa2cabc89cUL,0xadc58d9ebUL,0xb16e7dfb0UL,0xb8c05eb3aUL,0xd25ef139dUL,0xd607e1962UL,0xe4aba3076UL,0x2dde6a3daUL,0x43d40c678UL,0x5620be351UL,0x64c47fa65UL,0x686d7002aUL,0x6c16605efUL,0x6fbf50bb4UL,0x8d06d39dcUL,0x9f53856b5UL,0xadf746dc9UL,0xbc9b084ddUL,0xd290aa77bUL,0xd9e28b305UL,0xe4dd5c454UL,0xfad2fe6f2UL,0x181a8151aUL,0x26be42c2eUL,0x2e10237b8UL,0x405cd5491UL,0x7742eab1cUL,0x85e6ac230UL,0x8d388cdbaUL,0x9f853ea93UL,0xc41ea2445UL,0xcf1973594UL,0x14a34a333UL,0x31eacd15bUL,0x6c79d2dabUL,0x73cbb3935UL,0x89c155bd3UL,0x8d6a46198UL,0x91133675dUL,0xa708d89fbUL,0xae5ab9585UL,0xb9558a6d4UL,0xb98743ab2UL,0xd6cec68daUL,0x1506bcaefUL,0x4becd217aUL,0x4f95c273fUL,0x658b649ddUL,0xa76c4b1b7UL,0xecf621f56UL,0x1c8a56a57UL,0x3628e92baUL,0x53706c0e2UL,0x5e6b3d231UL,0x7809cfa94UL,0xe97eead6fUL,0x5af40604aUL,0x7492988adUL,0xed5994712UL,0x5eceaf9edUL,0x7c1632815UL,0xc1a0095b4UL,0xe9e25d52bUL,0x3a6705419UL,0xa8333012fUL,0x4ce5704d0UL,0x508e60a95UL,0x877476120UL,0xa864e950dUL,0xea45cfce7UL,0x19da047e8UL,0x24d4d5937UL,0x6e079cc9bUL,0x99f2e11d7UL,0x33aa50429UL,0x499ff26c7UL,0x50f1d3251UL,0x66e7754efUL,0x96ad633ceUL,0x9a5653993UL,0xaca30566cUL,0xc298a790aUL,0x8be44b65dUL,0xdc68f354bUL,0x16f7f919bUL,0x4dde0e826UL,0xd548cbd9fUL,0xe0439ceeeUL,0xfd8b1fd16UL,0x76521bb7bUL,0xd92375742UL,0xcab16d40cUL,0x730c9dd72UL,0xad9ba39c2UL,0xb14493f87UL,0x52b15651fUL,0x185409cadUL,0x77ae2c68dUL,0x94f5af4b5UL,0xa13bad55UL,0x61ea437cdUL,0xa022399e2UL,0x203b163d1UL,0x7bba8f40eUL,0x95bc9442dUL,0x41c0b5358UL,0x8e9c6cc81UL,0xeb549670UL,0x9da3a0b51UL,0xd832a67a1UL,0xdcd4350bcUL,0x4aa05fdd2UL,0x60c7bb44eUL,0x4b358b96cUL,0x67299b45UL,0xb9c89b5faUL,0x6975acaeaUL,0x62b8f7afaUL,0x33567c3d7UL,0xbac139950UL,0xa5927c62aUL,0x5c916e6a4UL,0x260ecb7d5UL,0x29b7bbd9aUL,0x903205f26UL,0xae72270a4UL,0x3d2ec51a7UL,0x82ea55324UL,0x11a6f3427UL,0x1ca1c4576UL,0xa40c81aefUL,0xbddccd730UL,0xe617561eUL,0x969317b0fUL,0x67f781364UL,0x610912f96UL,0xb2549fdfcUL,0x6e5aaa6bUL,0xb6c475339UL,0xc56836a4dUL,0x844e351ebUL,0x4647f83b4UL,0x908a04f5UL,0x7f51034c9UL,0xaee537fcaUL,0x5e92494baUL,0xd445808f4UL,0x28d68b563UL,0x4d25374bUL,0x2bc065f65UL,0x96dc3ea0cUL,0x4b2ade817UL,0x7c3fd502UL,0xe768b5cafUL,0x17605cf6cUL,0x182741ee4UL,0x62846097cUL,0x72b5ebf80UL,0x263da6e13UL,0xfa841bcb5UL,0x7e45e8c69UL,0x653c81fa0UL,0x7443b5e70UL,0xa5234afdUL,0x74756f24eUL,0x157ebf02aUL,0x82ef46939UL,0x80d420264UL,0x2aeed3e98UL,0xb0a1dd4f8UL,0xb5436be13UL,0x7b7b4b13bUL,0x1ce80d6d3UL,0x16c08427dUL,0xee54462ddUL,0x1f7644cceUL,0x9c7b5cc92UL,0xe369138f8UL,0x5d5a66e91UL,0x485d62f49UL,0xe6e819e94UL,0xb1f340eb5UL,0x9d198ce2UL,0xd60717437UL,0x196b856cUL,0xf0a6173a5UL,0x12c0e1ec6UL,0x62b82d5cfUL,0xad154c067UL,0xce3778832UL,0x6b0a7b864UL,0x4c7686694UL,0x5058ff3ecUL,0xd5e21ea23UL,0x9ff4a76eeUL,0x9dd981019UL,0x1bad4d30aUL,0xc601896d1UL,0x973439b48UL,0x1ce7431a8UL,0x57a8021d6UL,0xf9dba96e6UL,0x83a2e4e7cUL,0x8ea585380UL,0xaf6c0e744UL,0x875b73babUL,0xda34ca901UL,0x2ab9727efUL,0xd39f21b9aUL,0x8a10b742fUL,0x5f8952dbaUL,0xf8da71ab0UL,0xc25f9df96UL,0x6f8a5d94UL,0xe42e63e1aUL,0xb78409d1bUL,0x792229addUL,0x5acf8c455UL,0x2fc29a9b0UL,0xea486237bUL,0xb0c9685a0UL,0x1ad748a47UL,0x3b4712d5UL,0xf29216d30UL,0x8dad65e49UL,0xa2cf09ddUL,0xb5f174c6UL,0xe54f57743UL,0xb9cf54d78UL,0x4a312a88aUL,0x27babc962UL,0xb86897111UL,0xf2ff6c116UL,0x82274bd8aUL,0x97023505eUL,0x52d46edd1UL,0x585c1f538UL,0xbddd00e43UL,0x5590b74dfUL,0x729404a1fUL,0x65320855eUL,0xd3d4b6956UL,0x7ae374f14UL,0x2d7a60e06UL,0x315cd9b5eUL,0xfd36b4eacUL,0xf1df7642bUL,0x55db27726UL,0x8f15ebc19UL,0x992f8c531UL,0x62dea2a40UL,0x928275cabUL,0x69c263cb9UL,0xa774cca9eUL,0x266b2110eUL,0x1b14acbb8UL,0x624b8a71bUL,0x1c539406bUL,0x3086d529bUL,0x111dd66eUL,0x98cd630bfUL,0x8b9d1ffdcUL,0x72b2f61e7UL,0x9ed9d672bUL,0x96cdd15f3UL,0x6366c2504UL,0x6ca9df73aUL,0xa066d60f0UL,0xe7a4b8addUL,0x8264647efUL,0xaa195bf81UL,0x9a3db8244UL,0x14d2df6aUL,0xb63265b7UL,0x2f010de73UL,0x97e774986UL,0x248affc29UL,0xfb57dcd11UL,0xb1a7e4d9UL,0x4bfa2d07dUL,0x54e5cdf96UL,0x4c15c1c86UL,0xcd9c61166UL,0x499380b2aUL,0x540308d09UL,0x8b63fe66fUL,0xc81aeb35eUL,0x86fe0bd5cUL,0xce2480c2aUL,0x1ab29ee60UL,0x8048daa15UL,0xdbfeb2d39UL,0x567c9858cUL,0x2b6edc5bcUL,0x2078fca82UL,0xadacc22aaUL,0xb92486f49UL,0x51fac5964UL,0x691ee6420UL,0xf63b3e129UL,0x39be7e572UL,0xda2ce6c74UL,0x20cf17a5cUL,0xee55f9b6eUL,0xfb8572726UL,0xb2c2de548UL,0xcaa9bce92UL,0xae9182db3UL,0x74b6e5bd1UL,0x137b252afUL,0x51f686881UL,0xd672f6c02UL,0x654146ce4UL,0xf944bc825UL,0xe8327f809UL,0x76a73fd59UL,0xf79da4cb4UL,0x956f8099bUL,0x7b5f2655cUL,0xd06b114a6UL,0xd0697ca50UL,0x27c390797UL,0xbc61ed9b2UL,0xcc12dd19bUL,0xeb7818d2cUL,0x92fcecdaUL,0x89ded4ea1UL,0x256a0ba34UL,0xb6948e627UL,0x1ef6b1054UL,0x8639294a2UL,0xeda3780a4UL,0x39ee2af1dUL,0xcd257edc5UL,0x2d9d6bc22UL,0x121d3b47dUL,0x37e23f8adUL,0x119f31cf6UL,0x2c97f4f09UL,0xd502abfe0UL,0x10bc3ca77UL,0x53d7190efUL,0x90c3e62a6UL,0x7e9ebf675UL,0x979ce23d1UL,0x27f0c98e9UL,0xeafb4ae59UL,0x7ca7fe2bdUL,0x1490ca8f6UL,0x9123387baUL,0xb3bc73888UL,0x3ea87e325UL,0x4888964aaUL,0xa0188a6b9UL,0xcd383c666UL,0x40029a3fdUL,0xe1c00ac5cUL,0x39e6f2b6eUL,0xde664f622UL,0xe979a75e8UL,0x7c6b4c86cUL,0xfd492e071UL,0x8fbb35118UL,0x40b4a09b7UL,0xaf80bd6daUL,0x70e0b2521UL,0x2f5c54d93UL,0x3f4a118d5UL,0x9c1897b9UL,0x79776eacUL,0x84b00b17UL,0x3a95ad90eUL,0x28c544095UL,0x39d457c05UL,0x7a3791a78UL,0xbb770e22eUL,0x9a822bd6cUL,0x68a4b1fedUL,0xa5fd27b3bUL,0xc3995b79UL,0xd1519dff1UL,0x8e7eee359UL,0xcd3ca50b1UL,0xb73b8b793UL,0x57aca1c43UL,0xec2655277UL,0x785a2c1b3UL,0x75a07985aUL,0xa4b01eb69UL,0xa18a11347UL,0xdb1f28ca3UL,0x877ec3e25UL,0x31f6341b8UL,0x1363a3a4cUL,0x75d8b9baUL,0x7ae0792a9UL,0xa83a21651UL,0x7f08f9fb5UL,0xd0cf73a9UL,0xb04dcc98eUL,0xf65c7b0f8UL,0x65ddaf69aUL,0x2cf9b86b3UL,0x14cb51e25UL,0xf48027b5bUL,0xec26ea8bUL,0x44bafd45cUL,0xb12c7c0c4UL,0x959fd9d82UL,0xc77c9725aUL,0x48a22d462UL,0x8398e8072UL,0xec89b05ceUL,0xbb682d4c9UL,0xe5a86d2ffUL,0x358f01134UL,0x8556ddcf6UL,0x67584b6e2UL,0x11609439fUL,0x8488816eUL,0xaaf1a2c46UL,0xf879898cfUL,0x8bbe5e2f7UL,0x101eee363UL,0x690f69377UL,0xf5bd93cd9UL,0xcea4c2bf6UL,0x9550be706UL,0x2c5b38a60UL,0xe72033547UL,0x4458b0629UL,0xee8d9ed41UL,0xd2f918d72UL,0x78dc39fd3UL,0x8212636f6UL,0x7450a72a7UL,0xc4f0cf4c6UL,0x367bcddcdUL,0xc1caf8cc6UL,0xa7f5b853dUL,0x9d536818bUL,0x535e021b0UL,0xa7eb8729eUL,0x422a67b49UL,0x929e928a6UL,0x48e8aefccUL,0xa9897393cUL,0x5eb81d37eUL,0x1e80287b7UL,0x34770d903UL,0x2eef86728UL,0x59266ccb6UL,0x110bba61UL,0x1dfd284efUL,0x447439d1bUL,0xfece0e599UL,0x9309f3703UL,0x80764d1ddUL,0x353f1e6a0UL,0x2c1c12dccUL,0xc1d21b9d7UL,0x457ee453eUL,0xd66faf540UL,0x44831e652UL,0xcfd49a848UL,0x9312d4133UL,0x3f097d3eeUL,0x8c9ebef7aUL,0xa99e29e88UL,0xe9fab22cUL,0x4e748f4fbUL,0xecdee4288UL,0xabce5f1d0UL,0xc42f6876cUL,0x7ed402ea0UL,0xe5c4242c3UL,0xd5b2c31aeUL,0x286863be6UL,0x160444d94UL,0x5f0f5808eUL,0xae3d44b2aUL,0x9f5c5d109UL,0x8ad9316d7UL,0x3422ba064UL,0x2fed11d56UL,0xbea6e3e04UL,0x4b029eecUL,0x6deed7435UL,0x3718ce17cUL,0x55857f5e2UL,0x2edac7b62UL,0x85d6c512UL,0xd6ca88e0fUL,0x2b7e1fc69UL,0xa699d5c1bUL,0xf05ad74deUL,0x4cf5fb56dUL,0x5725e07e1UL,0x72f18a2deUL,0x1cec52609UL,0x48534243cUL,0x2523a4d69UL,0x35c1b80d1UL,0xa4d7338a7UL,0xdb1af012UL,0xe61a9475dUL,0x5df03f91UL,0x97ae260bbUL,0x32d627fefUL,0xb640f73c2UL,0x45a1ac9c6UL,0x6a2202de1UL,0x57d3e25f2UL,0x5aa9f986eUL,0xcc859d8aUL,0xe3ec6cca8UL,0x54e95e1aeUL,0x446887b06UL,0x7516732beUL,0x3817ac8f5UL,0x3e26d938cUL,0xaa81bc235UL,0xdf387ca1bUL,0xf3a3b3f2UL,0xb4bf69677UL,0xae21868edUL,0x81e1d2d9dUL,0xa0a9ea14cUL,0x8eee297a9UL,0x4740c0559UL,0xe8b141837UL,0xac69e0a3dUL,0x9ed83a1e1UL,0x5edb55ecbUL,0x7340fe81UL,0x50dfbc6bfUL,0x4f583508aUL,0xcb1fb78bcUL,0x4025ced2fUL,0x39791ebecUL,0x53ee388f1UL,0x7d6c0bd23UL,0x93a995fbeUL,0x8a41728deUL,0x2fe70e053UL,0xab3db443aUL,0x1364edb05UL,0x47b6eeed6UL,0x12e71af01UL,0x52ff83587UL,0x3a1575dd8UL,0x3feaa3564UL,0xeacf78ba7UL,0x872b94f8UL,0xda8ddf9a2UL,0x9aa920d2bUL,0x1f350ed36UL,0x18a5e861fUL,0x2c35b89c3UL,0x3347ac48aUL,0x7f23e022eUL,0x2459068fbUL,0xe83be4b73UL}; +fromVector(codes,d._code_id); + d._nbits=36; + d._tau=11; + d._type=TAG36h11; + d._name="TAG36h11"; + + }break; + case TAG36h10:{ + vector codes={0x1ca92a687UL,0x20521ac4cUL,0x27a3fb7d6UL,0x2b4cebd9bUL,0x3647bceeaUL,0x39f0ad4afUL,0x3d999da74UL,0x44eb7e5feUL,0x538f3fd12UL,0x5738302d7UL,0x65dbf19ebUL,0x70d6c2b3aUL,0x7f7a8424eUL,0x832374813UL,0x86cc64dd8UL,0x8a755539dUL,0x9570264ecUL,0x991916ab1UL,0xa06af763bUL,0xab65c878aUL,0xb2b7a9314UL,0xb660998d9UL,0xbdb27a463UL,0xcc563bb77UL,0xe24bdde15UL,0xed46aef64UL,0xf4988faeeUL,0x6e5417c7UL,0x158902edbUL,0x1cdae3a65UL,0x242cc45efUL,0x27d5b4bb4UL,0x2b7ea5179UL,0x32d085d03UL,0x3679762c8UL,0x3a226688dUL,0x3dcb56e52UL,0x48c627fa1UL,0x5769e96b5UL,0x6264ba804UL,0x660daadc9UL,0x6d5f8b953UL,0x74b16c4ddUL,0x7fac3d62cUL,0x91f8ef305UL,0x95a1df8caUL,0x994acfe8fUL,0xa09cb0a19UL,0xa445a0fdeUL,0xa7ee915a3UL,0xab9781b68UL,0xaf407212dUL,0xb69252cb7UL,0xc8df04990UL,0xd3d9d5adfUL,0xd782c60a4UL,0xf12158907UL,0x1d0c9ce43UL,0x20b58d408UL,0x2f594eb1cUL,0x3a541fc6bUL,0x454ef0dbaUL,0x53f2b24ceUL,0x629673be2UL,0x74e3258bbUL,0x8ad8c7b59UL,0x9d2579832UL,0xa8204a981UL,0xaf722b50bUL,0xb6c40c095UL,0xba6cfc65aUL,0xf15311ce5UL,0x748b3f83UL,0xaf1a4548UL,0xe9a94b0dUL,0x2be217935UL,0x3e2ec960eUL,0x4cd28ad22UL,0x507b7b2e7UL,0x54246b8acUL,0x57cd5be71UL,0x6a1a0db4aUL,0x6dc2fe10fUL,0x876190972UL,0x99ae4264bUL,0xabfaf4324UL,0xc9427714cUL,0xd09457cd6UL,0xd43d4829bUL,0xea32ea539UL,0xf52dbb688UL,0x161e2ea75UL,0x286ae074eUL,0x66a2d6963UL,0x8b3c3a315UL,0x8ee52a8daUL,0xa131dc5b3UL,0xe6bbb3352UL,0xf55f74a66UL,0x5a45bb5UL,0x7ac2673fUL,0x1da1c89ddUL,0x289c99b2cUL,0x3ae94b805UL,0x50deedaa3UL,0x5830ce62dUL,0x5bd9bebf2UL,0x632b9f77cUL,0x6e26708cbUL,0x841c12b69UL,0x92bfd427dUL,0x9668c4842UL,0x9dbaa53ccUL,0xb007570a5UL,0xb3b04766aUL,0xc25408d7eUL,0xea965ccf5UL,0xf93a1e409UL,0x434ef558UL,0x1681a1231UL,0x1dd381dbbUL,0x302033a94UL,0x75aa0a833UL,0x92f18d65bUL,0x9a436e1e5UL,0xa1954ed6fUL,0xb78af100dUL,0xbb33e15d2UL,0xc62eb2721UL,0x466a8936UL,0xf6179a85UL,0x16b35a60fUL,0x589440de9UL,0x6738024fdUL,0x847f85325UL,0x9e1e17b88UL,0xacc1d929cUL,0xb06ac9861UL,0xd5042d213UL,0xfd468118aUL,0xf9332e63UL,0x342c96815UL,0x37d586ddaUL,0x551d09c02UL,0x5c6eea78cUL,0x6017dad51UL,0x9354ffe17UL,0x9aa6e09a1UL,0xa94aa20b5UL,0xacf39267aUL,0xbb9753d8eUL,0xbf4044353UL,0x8730b6b7UL,0x1716ccdcbUL,0x22119df1aUL,0x3f5920d42UL,0x58f7b35a5UL,0x6b446527eUL,0x972fa97baUL,0x9e818a344UL,0xa5d36aeceUL,0xd1beaf40aUL,0xdcb980559UL,0xf65812dbcUL,0x139f95be4UL,0x6b761e65cUL,0x6f1f0ec21UL,0xa605242acUL,0xe43d1a4c1UL,0x29c6f1260UL,0x386ab2974UL,0x4e6054c12UL,0x8c984ae27UL,0x97931bf76UL,0x9ee4fcb00UL,0xd22221bc6UL,0xe46ed389fUL,0xebc0b4429UL,0x6f82813ddUL,0x732b719a2UL,0x9072f47caUL,0x941be4d8fUL,0x97c4d5354UL,0x9f16b5edeUL,0xb8b548741UL,0xd253dafa4UL,0xd5fccb569UL,0xd9a5bbb2eUL,0xe4a08cc7dUL,0x3c77156f5UL,0x7aaf0b90aUL,0xb53e1155aUL,0xb8e701b1fUL,0x5c2b9448UL,0x14667ab5cUL,0x47a39fc22UL,0x4ef5807acUL,0x64eb22a4aUL,0x982847b10UL,0xaa74f97e9UL,0xae1de9daeUL,0xb56fca938UL,0xf750b1112UL,0x1bea14ac4UL,0x1f9305089UL,0x233bf564eUL,0x31dfb6d62UL,0x3931978ecUL,0x52d02a14fUL,0x5a220acd9UL,0xb1f893751UL,0xfb2b5aab5UL,0x40b531854UL,0x5a53c40b7UL,0x8d90e917dUL,0x9139d9742UL,0x94e2c9d07UL,0xd6c3b04e1UL,0xe910621baUL,0xf40b33309UL,0x1152b6131UL,0x32432951eUL,0x3d3dfa66dUL,0x65804e5e4UL,0xab0a25383UL,0xb604f64d2UL,0xde474a449UL,0x11846f50fUL,0x6d03e854cUL,0x7455c90d6UL,0xab3bde761UL,0xdad013262UL,0xe973d4976UL,0x2b54bb150UL,0x9577f58a1UL,0x9920e5e66UL,0xb66868c8eUL,0xf4a05eea3UL,0x3dd326207UL,0x5b1aa902fUL,0x99529f244UL,0xb2f131aa7UL,0xd038b48cfUL,0xd3e1a4e94UL,0x24664cd82UL,0x36b2fea5bUL,0x95db6805dUL,0xa0d6391acUL,0xabd10a2fbUL,0x15f444a4cUL,0x2be9e6ceaUL,0x57d52b226UL,0x5f270bdb0UL,0xb6fd94828UL,0x879b19105UL,0xd476d0a2eUL,0xe6c382707UL,0xdbfa6a996UL,0x1689705e6UL,0x3b22d3f98UL,0x636527f0fUL,0x7d03ba772UL,0xee78d5a4dUL,0xbf165a32aUL,0xc2bf4a8efUL,0x517be89f2UL,0x67718ac90UL,0x6b1a7b255UL,0x726c5bddfUL,0xbb9f23143UL,0x1375abbbbUL,0x296b4de59UL,0x8893b745bUL,0xa9842a848UL,0xb827ebf5cUL,0x3840c894bUL,0x6b7deda11UL,0xbc02958ffUL,0x55ba04b51UL,0x76aa77f3eUL,0x9b43db8f0UL,0x9eeccbeb5UL,0xa295bc47aUL,0xb4e26e153UL,0xe476a2c54UL,0x6be1601cdUL,0x6f8a50792UL,0x97cca4709UL,0xbc66080bbUL,0x1093a056eUL,0x6fbc09b70UL,0xb8eed0ed4UL,0xcee473172UL,0x23120b625UL,0x5da111275UL,0xcf162c550UL,0xec8f68756UL,0xb5db0c4a9UL,0x2b2ad1127UL,0x536d2509eUL,0x9c9fec402UL,0xc1394fdb4UL,0x6c326b53UL,0x5e99af5cbUL,0xaf1e574b9UL,0xe6046cb44UL,0x661d49533UL,0x8e5f9d4aaUL,0xdb3b54dd3UL,0xe63625f22UL,0xe9df164e7UL,0x455e8f524UL,0x5b54317c2UL,0xbe258b389UL,0x54340a016UL,0x5b85eaba0UL,0x1284dcc1aUL,0x24d18e8f3UL,0x4d13e286aUL,0x8b4bd8a7fUL,0x215a5770cUL,0x46572d87aUL,0xc2c719ca4UL,0x4ddac77e2UL,0xd19c94796UL,0x2d1c0d7d3UL,0x9ae8384e9UL,0x9e9128aaeUL,0xca7c6cfeaUL,0x16282675UL,0xad985c97eUL,0x4af8bc195UL,0x9f580da26UL,0xa6a9ee5b0UL,0xbc9f9084eUL,0xd63e230b1UL,0xc4232a7b6UL,0xd66fdc48fUL,0xec657e72dUL,0xa364707a7UL,0xf79208c5aUL,0xde88a1f91UL,0x574f9ddf6UL,0x65f35f50aUL,0x69ce08eadUL,0x490f4ee9eUL,0xc9282b88dUL,0x752c4c7b8UL,0xb364429cdUL,0x8b53a7e34UL,0xbe90ccefaUL,0xb0507dfa2UL,0xd525e90UL,0x5c549eecdUL,0xe3bf5c446UL,0x936c6d936UL,0x9747172d9UL,0xca843c39fUL,0xd57f0d4eeUL,0x2d5595f66UL,0xbfbb2462eUL,0x266727b98UL,0x7ac679429UL,0x26fc53732UL,0x656602d25UL,0x2eb1a6a78UL,0x4850392dbUL,0xe5b098af2UL,0xab534c280UL,0x9ce143f4aUL,0xf4b7cc9c2UL,0x35b8e0d6UL,0x871d5b08aUL,0x5b958930aUL,0xb429a7faUL,0x54d8d431aUL,0x7d1b28291UL,0xa1e645021UL,0xb80da069dUL,0xeef3b5d28UL,0x263d3db6fUL,0x9592d503UL,0x4b9d86499UL,0x6c8df9886UL,0xa3740ef11UL,0xc4963b6dcUL,0x6da94672UL,0x53b64bf9bUL,0xb2deb559dUL,0xf116ab7b2UL,0x8ace1aa04UL,0x8ea8c43a7UL,0x6a4119dd3UL,0x99d54e8d4UL,0xc969833d5UL,0xf554c7911UL,0x3ade9e6b0UL,0x6e1bc3776UL,0x7916948c5UL,0xdbe7ee48cUL,0x79484dca3UL,0xf992e3a70UL,0x884f81b73UL,0xc68777d88UL,0x603ee6fdaUL,0x728b98cb3UL,0xb12701684UL,0xd5f21e414UL,0x58652f15UL,0x2dc8a6e8cUL,0x4767396efUL,0xb8dc549caUL,0xf36b5a61aUL,0xd09ece7dUL,0xdda77175aUL,0x5e9c56d1UL,0x73e7a97c5UL,0xb21f9f9daUL,0xde3c9d2f4UL,0x69504ae32UL,0x77f40c546UL,0xed1217de6UL,0x3a1f88aedUL,0xe623a9a18UL,0xaeec67a8UL,0xbea83aa19UL,0x92eeaf8bbUL,0xa5d08d12eUL,0x819a9bf38UL,0x473d4f6c6UL,0xb192431f5UL,0xa6c92b484UL,0x7046885b5UL,0xb9ab08cf7UL,0x782d94cd9UL,0xf158032faUL,0x77f5e976UL,0x12dda2281UL,0xe72417123UL,0x3056de487UL,0xe3de9931aUL,0xeb3079ea4UL,0xe4420bad6UL,0x439c2e4b6UL,0x47da4a615UL,0xd7cfdda3UL,0x56afc5107UL,0xe978c5f8bUL,0x5aede1266UL,0xaf1b79719UL,0xf8b1b3239UL,0x75e8845dbUL,0xbf1b4b93fUL,0xfd5341b54UL,0xa2373b2d3UL,0x5967e672bUL,0xa2cc66e6dUL,0xb17028581UL,0xb54ad1f24UL,0xe91d22b84UL,0xde85c41f1UL,0x53d588e6fUL,0xe9e407afcUL,0xfc6272bb3UL,0xa8ca0629aUL,0xb86665d04UL,0x5a58fde9UL,0x1855b427eUL,0xaabb42946UL,0xe204ca78dUL,0x32897267bUL,0xa78d7ae2UL,0x96536a598UL,0xbf2aea0a9UL,0xc9bcd56cUL,0x81eb921eaUL,0x2732fe125UL,0x2eb69808dUL,0x61f3bd153UL,0x8ddf0168fUL,0x921d1d7eeUL,0x2bd48ca40UL,0x83ab154b8UL,0x5f436aee4UL,0x93dca0abcUL,0x26d75ad1eUL,0x872a1ba54UL,0x373a9f700UL,0x50d931f63UL,0x12d2f512cUL,0xc6efdbb59UL,0x88e99ed22UL,0x903b7f8acUL,0xa9da1210fUL,0xa2eba3d41UL,0xfe9cd615cUL,0xfb8911731UL,0x1cab3defcUL,0xe6289b02dUL,0x66d6a35b6UL,0xb0096a91aUL,0xc9afcc532UL,0x80aebe5acUL,0xd2f2e9768UL,0xcc67edb56UL,0xa51e37f35UL,0x6ac0eb6c3UL,0x6af2a4aa1UL,0xe76290ecbUL,0x37e738db9UL,0x72d9b11c5UL,0x76e613f46UL,0x4f073278bUL,0xe1eea307UL,0xe9e8f9111UL,0x793ee6f5UL,0x17304e15fUL,0x7a3361104UL,0x731339958UL,0x8daa6a511UL,0xa4037ef6bUL,0x210896f2fUL,0xafc535032UL,0xe3025a0f8UL,0x63e21ba5fUL,0x3ebb5b8c8UL,0xf9c6b06c3UL,0xca95ee37eUL,0x81f852bb4UL,0xd6895d823UL,0x7040cca75UL,0x4d66ec391UL,0x4a216e588UL,0x51d6c18ceUL,0x47711c319UL,0x6ae7f794cUL,0x4abe694d7UL,0xbc96f6f6eUL,0x57aa76cd2UL,0xf948f2648UL,0x31bcd1bc3UL,0x94c7b3f1dUL,0x32eef86acUL,0x668f8ff2eUL,0x6de170ab8UL,0x9341b93e2UL,0x974e1c163UL,0x73182af6dUL,0x5d85fb48bUL,0x78b257bdeUL,0x173d0eb29UL,0x5add785d1UL,0xaf6e83240UL,0xdce79166cUL,0x22716840bUL,0x7b408f1d9UL,0xde43a217eUL,0x36e10fb6eUL,0xea9a83ddfUL,0x4dcf50162UL,0x9aab07a8bUL,0x281364431UL,0x8392dd46eUL,0x945e6aceUL,0x8d07b3a82UL,0xd012f1990UL,0xb7098acc7UL,0xc2fcfa16cUL,0x1e7c731a9UL,0xf16ea68eeUL,0x2fa69cb03UL,0x4cee1f92bUL,0x1e20cfda2UL,0x9e9d1ef4dUL,0xe83358a6dUL,0x59a873d48UL,0xa6842b671UL,0x6885bdbefUL,0x73e4014faUL,0x7b9954840UL,0x548157ffdUL,0x8853a8c5dUL,0xeb8874fe0UL,0xb25d4f257UL,0x36b447da5UL,0x71d87958fUL,0xeedd91553UL,0x4af23612aUL,0x278329eacUL,0x191121b76UL,0x6e691175dUL,0xbd140329UL,0x6ed4532ceUL,0xd5e3c8ff4UL,0xe26c64033UL,0x494a2097bUL,0xf5e36d440UL,0xb7818d202UL,0xa63548c34UL,0x682f0bdfdUL,0x3d3c65c17UL,0x4c4399ae7UL,0x6b18e67ffUL,0x4778211a3UL,0x4089b2dd5UL,0x21edee850UL,0x739cede72UL,0x858dfc744UL,0x4bc5dba6cUL,0x21cbd3bdcUL,0xac83de313UL,0x6135f08daUL,0xd3a3a9f0bUL,0xeb2716099UL,0x40b88e413UL,0x992442a25UL,0xc639de695UL,0x683bcc7c7UL,0x6245fc74fUL,0x543766bd5UL,0x375356569UL,0xfa45b7a88UL,0x9f29b1207UL,0xba245457cUL,0x5b98e5ec9UL,0x204aca6b6UL,0xd52e9605bUL,0x504a40d28UL,0xab6e1695eUL,0xa26481ebbUL,0x9455ec341UL,0x2f05f98e9UL,0xead83365cUL,0xb928d8486UL,0x7b860de0bUL,0x964ef7da2UL,0x2422962b9UL,0x28f5ddfb2UL,0x8c5c63713UL,0x9068c6494UL,0x50aad5744UL,0x93e7cca30UL,0x9825e8b8fUL,0x3a8b4947dUL,0xfa06737b5UL,0xcb9c963e8UL,0x91a2bc332UL,0x284666b59UL,0xceb82a1c8UL,0xa2fe9f06aUL,0x6fa50365UL,0x19aa747faUL,0xa6e117dc2UL,0x2b3810910UL,0xff7e857b2UL,0x48b55c3eUL,0x975456ac2UL,0xad200ed37UL,0xe4d4d86efUL,0xb3ec62491UL,0x8cd465c4eUL,0x8a2be2d94UL,0x5a9f7d648UL,0x59e067a85UL,0xb5c35327eUL,0xc4ca8714eUL,0xe927a04cUL,0xf71eac628UL,0x109354e62UL,0x1037b1a5bUL,0x26c27f893UL,0x3597fa385UL,0xee24b62efUL,0x4b31f921cUL,0x650244e5dUL,0xcfec64526UL,0xcd4bb0a21UL,0x648c56197UL,0xbd95056f8UL,0x983c8c183UL,0xddc662f22UL,0x5631bb980UL,0x1203f56f3UL,0x6a0c37549UL,0xa59baa8a4UL,0x6a23a5068UL,0xad609c354UL,0xf6f6d5e74UL,0x36bc95f79UL,0x424c92c62UL,0x3692abf50UL,0xa4bc460dUL,0x1b4434b89UL,0x4eb31302dUL,0x9a3a891f9UL,0x93af8d5e7UL,0xef60bfa02UL,0x607a378d6UL,0x5a5a7d835UL,0x536c0f467UL,0x11f66a7feUL,0x74c7c43c5UL,0x66eae7c29UL,0xf5a785d2cUL,0xd3948a5c0UL,0xec1094aa4UL,0xfcad61c19UL,0x49ca7108aUL,0x77437f4b6UL,0x553083d4aUL,0x5c26c14cdUL,0x6eb4caceeUL,0xe8aded63cUL,0x132aa4b5cUL,0x57603a19eUL,0xee359dda3UL,0xd0f5ea330UL,0x46b0f0b1fUL,0xd47cbfc81UL,0x3ed1b37b0UL,0x4c8c752d8UL,0xac202044bUL,0x207f16128UL,0x53f5c3981UL,0x70e1a33a2UL,0xed8348baaUL,0x798f94a3eUL,0x8896c890eUL,0x521425a3fUL,0xc8329e9eaUL,0x41f238ba5UL,0x1093d3c81UL,0xcab628e90UL,0xa1b4bf356UL,0x92eee2fceUL,0x59d35b9afUL,0x2176e9f53UL,0x7c9abfb89UL,0xb06d107e9UL,0xe94c318d5UL,0x2f397ae30UL,0xd7e5a1a48UL,0x98c4abc47UL,0x574737c29UL,0xd7f5401b2UL,0x852b87bc6UL,0x1180fa957UL,0x501c63328UL,0xfd28c0d13UL,0xf764aa079UL,0xc8a6f8c5aUL,0x975b10240UL,0x6bd33e4c0UL,0xa1113e39cUL,0xabcfa8fb8UL,0x149ea1facUL,0xf6443556fUL,0x959da07e7UL,0x4721a2ac4UL,0x30bde0f15UL,0xc7c4fdef8UL,0xb7feb4465UL,0x56675073cUL,0x96f3f57b9UL,0x876f0386eUL,0x393f0a7e8UL,0x32b40ebd6UL,0x10a11346aUL,0xfb81f48aeUL,0xa892877eUL,0x86f636e08UL,0x4fbc4d72bUL,0x561d5f314UL,0xca18e2835UL,0x7e6f519f5UL,0x8b94e7983UL,0x619adfaf3UL,0x4c9ddbbabUL,0xcb6a461f2UL,0xf6e22456UL,0x858c9b401UL,0x92dc1b3b8UL,0x3a783615bUL,0xc74b66f67UL,0xea90891bcUL,0x31a829e4bUL,0x7bd38f505UL,0xb4476ea80UL,0x1af371feaUL,0x84894ff56UL,0x537584dfUL,0xd4ebdd1d0UL,0xb43cc192bUL,0x76700d287UL,0xaaad9fa58UL,0xfa511710fUL,0x6e54699e5UL,0x6d73391aeUL,0x3c2f1fb49UL,0x4fbd96a75UL,0x252e6304bUL,0xe72826214UL,0x8fe6c9336UL,0x326397743UL,0xe03bc524UL,0xdedac9594UL,0x4ff19096UL,0x409b4cdbbUL,0xb15921888UL,0xa259bcd6dUL,0x43c67f305UL,0x1dc65dcecUL,0x1730b4f85UL,0xf8a48f16aUL,0x57a30e743UL,0x5afd9839UL,0x682d5f3aeUL,0xb694337eUL,0x758c7dacfUL,0x18fa1ae7dUL,0x5ba9b5984UL,0x32e1d45ddUL,0x672f05518UL,0x382ffc5b1UL,0x8f0b08f33UL,0xb4a4d9ff0UL,0x53ba0f980UL,0x2ac0751fbUL,0xab005de73UL,0x61ab7be9bUL,0x63078c9adUL,0x27659d148UL,0xc653c684fUL,0xecee05017UL,0x24378ce5eUL,0xd0f7e5bacUL,0x8b4bf4199UL,0xb7aa495fbUL,0xf3d6b78a5UL,0x98bab1024UL,0x6b4971fadUL,0x723d6c89UL,0xa17071a75UL,0xd55a301f4UL,0x988de925bUL,0x7ca276f45UL,0x321b6e484UL,0x316149ed6UL,0xb8dba5bb9UL,0xaad4df3f4UL,0x178e204f5UL,0x95cd2e357UL,0x73fb8a733UL,0x84ca10c86UL,0x89498492dUL,0x5b9bdf383UL,0x66c58bb10UL,0xf153ac21eUL,0x7ca5d3b04UL,0x637a521c7UL,0xb5ed589c1UL,0xd0a3c644eUL,0x3d5d0754fUL,0xc6b901174UL,0x3e96fd3edUL,0x79c2fdf8cUL,0x6594ae371UL,0x3504fd77aUL,0x32b81dcc7UL,0x57b4f3e35UL,0x4c9808072UL,0xa06c10993UL,0xb059666afUL,0x72b69c034UL,0xe33ae836eUL,0xad6cadf0dUL,0x19573ace1UL,0xd562fd1e7UL,0x847804d9dUL,0x9e32f6734UL,0x2355c580fUL,0x2f177b8d6UL,0xd689ac650UL,0x71b70abcUL,0x254915730UL,0xc5934f949UL,0x134d59d09UL,0x2c731fb06UL,0xd90c6c5cbUL,0xcc3f9bca4UL,0xbf078980cUL,0x80838e95aUL,0x5ccd6f054UL,0x378bae56UL,0x8d1ddb978UL,0x93b875cf4UL,0xe2ce90bc6UL,0xec291b91bUL,0xd0a11bdc1UL,0x751be7244UL,0x579fcd29eUL,0xf76e5ccb1UL,0xeb33da184UL,0xc0ac75b0fUL,0x15454fb33UL,0x8b92a411cUL,0x7da34b476UL,0x4f413d45eUL,0x10ec1dbeaUL,0x650739b93UL,0x315e08a31UL,0xd4fd5f1bdUL,0xb5058a126UL,0x20d5cb63bUL,0xc1598dfe7UL,0xa0a2a338dUL,0xe29af7686UL,0x83fd0cac9UL,0x14a8094d8UL,0x816e0afa3UL,0x499ef5d2cUL,0xbddbd0d95UL,0xa30839ca9UL,0x4fd33fb4cUL,0xef63557b7UL,0x535f06ab2UL,0xd47d352eUL,0xa371e6dc4UL,0x8ac914b17UL,0x6ba9d69d7UL,0x96da89aaUL,0x65bbd5d14UL,0xd41d2c5c4UL,0x52a283583UL,0x4c1f56d26UL,0x86cd9984aUL,0x26cbcedc6UL,0x1aa0eaa03UL,0xb95d5ad2cUL,0xe2eb56b20UL,0xff49d9d5cUL,0xcce338378UL,0x330e9fac7UL,0xe2f53974aUL,0x668d1c6d5UL,0xeca0ba751UL,0x8d48ab5e6UL,0xd205e18cdUL,0x1c391633cUL,0xef5d02e5fUL,0xd12bb5f20UL,0x323215199UL,0x88f5b3ffcUL,0x931445f29UL,0xb893cb727UL,0x32851ecc0UL,0x80b44d81bUL,0x5aa48da98UL,0x46d1e1284UL,0x4c837ba14UL,0xeb22c26deUL,0xe51e9d246UL,0x8d03deee6UL,0x5af8e0909UL,0xbde9773a4UL,0xbf611cabfUL,0xd24ac96e7UL,0x9fe919318UL,0x50d0206a6UL,0xb43b9741cUL,0xba48d4fb3UL,0x6bccd7290UL,0x8bc6bfb9cUL,0xe5a036c9fUL,0xa80a2cfeeUL,0xc193655a7UL,0x7c8e5170dUL,0x6141edbbbUL,0x4d6b990dcUL,0xcc49b5702UL,0x2343fef58UL,0xd50cb593cUL,0x4248a60cdUL,0x901cfbd4cUL,0x64a4c8736UL,0x1b2dcbaeaUL,0xd691e5f4cUL,0xdf352a493UL,0x1991ac7daUL,0x4c4879f45UL,0x9b34aadeeUL,0x52bb3db0dUL,0x7b9a8c9d3UL,0xd7ce6e47eUL,0xec0b922d8UL,0x8079cab6bUL,0xabadc8899UL,0xf57b93b7UL,0x5c4ef219UL,0xd7a438d49UL,0xf55ecca97UL,0xd07899f1dUL,0x260947d6cUL,0xffbd21ab6UL,0xd04ff923eUL,0x964b72033UL,0x31ac3fd7eUL,0xd2c52e2c4UL,0x799a640efUL,0x98dd061edUL,0x5cb2ab7b8UL,0x72f3881c8UL,0xe65ed1164UL,0x34fa0bd5bUL,0x64f9823cdUL,0x3797e1ac0UL,0x2fb8a4751UL,0x6f347342eUL,0x22dd7ea0aUL,0xb19b65e57UL,0x44fe83e8aUL,0x7732732eUL,0x64de20ed7UL,0x6c9ea834UL,0x8ce066650UL,0xc2a685ff0UL,0x64f19b01fUL,0x491ab8a88UL,0x41212fe5aUL,0x6f9916f3bUL,0x694f72e71UL,0xad7a5b35eUL,0xf62795292UL,0xc8cdc3d3aUL,0xfbc6b3518UL,0x67b631901UL,0x5b5ba79d5UL,0xf4fadebddUL,0xac7c802e7UL,0x385712d9dUL,0x64bd375b4UL,0xc9a11df70UL,0x88355bf31UL,0x606ffbb0aUL,0xbda93c2d5UL,0x7c5f94f0aUL,0x76fe26501UL,0x5d8b9153cUL,0x886bbb218UL,0xacee2fecaUL,0x2ad19a925UL,0x83b97855cUL,0xd36608312UL,0x8ac60dbc7UL,0x885c8f58UL,0x8abbdf891UL,0xea1602271UL,0xad654fee1UL,0x6c461195eUL,0x5eeb1a327UL,0x18d743962UL,0x1fc7c55a5UL,0xaba749670UL,0x9c9a59c60UL,0x6e5bafc06UL,0x96977db12UL,0xa97b6ebfaUL,0x63d2d9da6UL,0xfab00cd60UL,0xd7bdf4632UL,0xf83878d59UL,0xb1c2c462eUL,0x14e5144a7UL,0xf4a909b28UL,0xe979a185bUL,0x908090a64UL,0x99eccd798UL,0x348780a96UL,0xfdc7ad169UL,0xa600c2e5bUL,0xb0968cd98UL,0x1a45ec098UL,0x99118c1b4UL,0x8afa5cd5aUL,0x1db7e655eUL,0x9f637e452UL,0x9568504e3UL,0x45b2a662UL,0xf2a1455a2UL,0x6c1ca9e75UL,0x30a4a4639UL,0xc6c2c1a30UL,0x87500b452UL,0x5e338bb2eUL,0xd9dd11dffUL,0x8c4b5d012UL,0x8191194e0UL,0xdd11db867UL,0xc67c151ceUL,0x5cb1a00e4UL,0x98b7a1c6UL,0x369f35cd4UL,0xca2190bdbUL,0x6e14bb3b9UL,0x8d5692f8cUL,0xca4b2f4f8UL,0x787f06877UL,0x8acbb8550UL,0x535f4b56aUL,0xf4caf7ecbUL,0xd4615b258UL,0x347ca7070UL,0x3c798c85dUL,0x460506465UL,0x870d0a5dcUL,0x6510b2464UL,0xd1dba5544UL,0xd57789a33UL,0xe2417c5baUL,0xb5ff8628cUL,0xa3bb22787UL,0xa16b64f34UL,0x421e81d3dUL,0x35b4596a7UL,0x8d7a2dd7eUL,0x50b2d83faUL,0x9ea87e7c2UL,0xd5055e752UL,0xf96aa9da5UL,0xb096e2a07UL,0x49970b44bUL,0x867fb1518UL,0x5d0f5dba2UL,0x1b191d11eUL,0x8e839bb8fUL,0x1cd4aca15UL,0x971ec5615UL,0x7d72a7ebdUL,0x8b1253bfbUL,0xe11de1d25UL,0xa7566839UL,0xf4f3542e0UL,0x1ea791e32UL,0x32a84f759UL,0x646f1844eUL,0x42af26809UL,0x1f4b464ffUL,0xda684d2d9UL,0xd854f5fb9UL,0x4d4d3e91aUL,0x5af3ef4e2UL,0x8a1ef5ce7UL,0x2354febf3UL,0xb3c5a8944UL,0x98b62a144UL,0x9bdba0b4eUL,0x4aa99b42UL,0x8099ea151UL,0x2185463a3UL,0xb0a1ae997UL,0xe628d5770UL,0xb40b5ac89UL,0x27213b17dUL,0x4d21db5b5UL,0x10d0748f7UL,0x2276c7876UL,0xb98bee56dUL,0xbd1ca6ae8UL,0x824ab48faUL,0xc6f35ae62UL,0x3547a563cUL,0xf1fc0d824UL,0x58f55ed75UL,0xaa9d0de01UL,0x4719dde60UL,0xd5386b3ddUL,0x4d8d9f666UL,0xaee36013bUL,0xba4ee322fUL,0x898d2db4eUL,0x9fe364808UL,0xbb13e8045UL,0xbe346d43aUL,0xb4c9f886fUL,0xc9a6f53b8UL,0xed5a7b6fUL,0x2a1fac740UL,0xb8c134a59UL,0xb1f773993UL,0xc4d9d0025UL,0xca905bdcaUL,0x3150a39a7UL,0xe8329fad5UL,0xbd4f98059UL,0x3bc5cf6cdUL,0xc982fdd03UL,0xa372de28UL,0x73fe2e35aUL,0xb9f684ecUL,0xc543ff680UL,0x1bcf5f09aUL,0x51b2a8099UL,0xee53277c2UL,0xb3835a6cUL,0xaed6765c1UL,0x92cfd64c8UL,0xd20c60ed2UL,0x59dbd9f51UL,0xb6acb694bUL,0x427dcd5fdUL,0x646336a75UL,0x8008dea4dUL,0xaf2bdc7cUL,0xb8a46478aUL,0xb02c535b6UL,0xc645d8631UL,0x44b4af3dUL,0xc9edfe6cbUL,0x32ac8ea2aUL,0x79266a23fUL,0xc2d902e93UL,0x6ae5cfbdbUL,0x2c66c633eUL,0xeb7a8a4e3UL,0xcb17281cfUL,0x7ca378680UL,0x7ac81509dUL,0xa59a05073UL,0xc9cb9f18dUL,0xb78100d29UL,0xfab49420aUL,0xd0a4e69c4UL,0xd6c33f722UL,0x68d21bff8UL,0x1fdad8ca3UL,0x2884d6968UL,0xb091ff264UL,0xeb5fb236fUL,0xa3d2a1839UL,0x527db0bc8UL,0x2dc68cd9fUL,0xe3f4ea98aUL,0xa629fe44fUL,0xb73bd7d66UL,0x2abfd7b6bUL,0x1b4056054UL,0xd6efaac28UL,0xd13cc950UL,0xef84ead94UL,0x5b6ee0d50UL,0xf4bec692UL,0xde1b98881UL,0x55ccccd31UL,0x86d9b84dUL,0x5ab736e3dUL,0x167d2f005UL,0x118ed1522UL,0x38bbdc903UL,0x39cd31ac2UL,0x31091bc51UL,0xd66a87d3fUL,0xafdade6d3UL,0x2bd1fe097UL,0x5cf545dd2UL,0x5e0af578eUL,0x6fe6dd4c9UL,0x862bc8fcaUL,0xcbce0b4c6UL,0x8b7fa8ddUL,0x3d108ae9fUL,0xfed2d914aUL,0xbab304bd8UL,0xdebe74f8dUL,0x1e857e3dcUL,0x570340581UL,0x114bbf4f5UL,0xa3cfc0566UL,0x4026cd686UL,0x266fb76cdUL,0xb715773bbUL,0x2fd2785fdUL,0x481b34cadUL,0x11c58d2baUL,0x3a5186f4dUL,0xda55ab71cUL,0xac887db92UL,0x9bd6d5592UL,0x45857d12aUL,0x8c862f0b9UL,0x870c88666UL,0x4a4f4901fUL,0x774a993d0UL,0xc9f16c81dUL,0xeb415e9efUL,0x307aa6302UL,0xa246f21eeUL,0x1a4f8a9c2UL,0xcf09f9b4UL,0xdb30dbb49UL,0x3581be36fUL,0x6919a4318UL,0x8ee677afdUL,0x5944b9d59UL,0x8d5fe61aaUL,0x77c174b1dUL,0x5cff8fa10UL,0xc1ce82f48UL,0x7fbb18e65UL,0xb6737103UL,0xe2d30a9b6UL,0x6481ff469UL,0x5834b4d26UL,0x3bba517d5UL,0xeee6e8080UL,0x5fe4fea5eUL,0xe84e94c8cUL,0xba2ad0a2aUL,0xa7f2aead0UL,0x63cecb46dUL,0x8943d7229UL,0x1d3878b2bUL,0xf2b4efe94UL,0xd9af1949dUL,0xbb5824d39UL,0xb8d8f5090UL,0xed5e19d08UL,0x60287437eUL,0x8fe6ae5c2UL,0x6c85ac058UL,0xb906be1b8UL,0xf9d423f65UL,0x6efed81d6UL,0x781b67fa2UL,0xe1dd437acUL,0x7a9201a8cUL,0xfb444c819UL,0xce75af959UL,0x86df6e72bUL,0x756695aa7UL,0xb7b2bddf2UL,0xf19a1b99eUL,0x9a5790e90UL,0x1d3b3eac0UL,0xa5c5d9d2bUL,0x152850218UL,0x25c4ba6eUL,0xd4a5f4bebUL,0x709cec10eUL,0x94ddbdb6cUL,0x9d1218277UL,0x6190ca34aUL,0x468ed6a3fUL,0x801bda52eUL,0x261b3f1a9UL,0xb3494d9bUL,0x583e2d7e5UL,0x9407a80f2UL,0x58e902456UL,0x9108c2273UL,0x59778ff8cUL,0xd6ce05028UL,0x286adc62UL,0x7ed3060dcUL,0x57b7e03edUL,0x3e3dce5c1UL,0x1bebc2295UL,0x14a17c9aUL,0xc7d90fbdaUL,0x8158ae35aUL,0x69d70a335UL,0xd3ef97931UL,0x5793efb7aUL,0xe6989ef43UL,0xcd15f0116UL,0xf9dbc6e25UL,0xda4a91117UL,0x54d0917aUL,0x60f2c3f15UL,0x7393b0a66UL,0x6630ed79bUL,0xed8589c60UL,0x7db37ab26UL,0xc4631e80aUL,0x1badaf501UL,0x9bdef764dUL,0xdd0949b4bUL,0x86f116771UL,0xacd7ea109UL,0x7cc9d2f6bUL,0x3f5598822UL,0x4ba5a8d0cUL,0x66e7f9c42UL,0x33127fb36UL,0xc85ff976UL,0x9dbb32ddfUL,0x3d06c7a56UL,0xac07601ddUL,0x5fda3d7e9UL,0x40a47aef0UL,0x139928cd0UL,0x183ab75ebUL,0x9dd6d1f4bUL,0x954afec44UL,0x29953fe22UL,0xf947e49b1UL,0xa74266cb0UL,0x3bbb7fdabUL,0x8a72b63d1UL,0x8763e2fbbUL,0x8c9b4f9a2UL,0xa35f5a861UL,0x99e54752cUL,0x2fdb8e16fUL,0x2d083ed68UL,0xa05d36c5eUL,0x5460842feUL,0x173ae0ee6UL,0x38b3c62e5UL,0x476c1ae99UL,0x9a8cb898aUL,0x19d4032acUL,0xa9c01d80bUL,0xca7d5e4deUL,0x295d53115UL,0xb26740e51UL,0xbf21b0988UL,0x167391c15UL,0xd10af35c6UL,0xd94750799UL,0xcb986d117UL,0x1dddf588UL,0x71ed85f46UL,0xa5437d58fUL,0x4029d1e25UL,0xc580ec972UL,0x6847df8baUL,0xe294d997bUL,0xe2e8b10eeUL,0x1593103ddUL,0x222103857UL,0x1e035591dUL,0xb5c9ef2e9UL,0x9f815ec3eUL,0xd1da2a021UL,0x54f171191UL,0xe51f4a05eUL,0xc15e7d603UL,0xba7f16b87UL,0x80b7a83e1UL,0x720e2b18dUL,0x5ec0c069dUL,0xa4f9f689cUL,0x5871cafdaUL,0xc913140a2UL,0x7a8f2efd1UL,0x77064952cUL,0x4ea2d857fUL,0x484523555UL,0x54971a9e3UL,0xeb0694eb2UL,0xb513c8e63UL,0x5c910db58UL,0xca87a4dd7UL,0xb8ca63158UL,0xb4b09431dUL,0x3dc9d50b7UL,0x7d57f02acUL,0x5c595b1b2UL,0x9e0caf698UL,0x136b48555UL,0x687dbcc2bUL,0x54bae2294UL,0x6899bbd7bUL,0x8108f46deUL,0x1dbe8cf08UL,0xa02e1ae1dUL,0xf5f26d59UL,0x805cf202bUL,0xafede5687UL,0x1583d5b30UL,0xda9ed0620UL,0xcf1237338UL,0x3a5a77bc4UL,0xa17ffa0c6UL,0x29de4c387UL,0x7825d431UL,0x2d7b9b38UL,0x8ed0f26aaUL,0x56e54e30dUL,0x9620ab0e7UL,0xc7e3ea94cUL,0xd288a41e2UL,0xf68884f1eUL,0x5ee02df09UL,0xc02dbf645UL,0xeac4c2424UL,0xcab2d51e1UL,0x37439577UL,0x5618ada43UL,0x2683b5859UL,0x8a607c1ceUL,0x795fd9198UL,0xb3edb11b8UL,0x846939c5cUL,0x8b1f6fa23UL,0xb1a2f2bfeUL,0xb63a07ad7UL,0x5f8ea7b00UL,0x4ee9c6d0cUL,0x990f2889bUL,0xb7f7251d0UL,0xac3291369UL,0x9d8f36a7bUL,0xd57342897UL,0xefca98365UL,0xdacc69f0eUL,0x3a70e4b3cUL,0x1e95c34c2UL,0x4caab6c06UL,0x7231f6ee1UL,0x37909aa04UL,0x48c9a9ccUL,0x59cd081bcUL,0x4dd78c2e4UL,0x4979da10fUL,0x4749d0c5UL,0xa17a4283bUL,0xde7e1d52dUL,0xe47cedf1UL,0x4fa48cbffUL,0x545a932a0UL,0x6c2bd9eb8UL,0xdd9bd3b8cUL,0x43332c1baUL,0x501fa761dUL,0x7ec40adbbUL,0x4049f2b33UL,0xcde28f57bUL,0xf68c804b9UL,0x8f50fbd3eUL,0x54e1bc344UL,0x36b26e3a2UL,0x2e5ac9b1UL,0x10837858dUL,0x6ccac9e0bUL,0x625ba8a52UL,0xac4c8b45cUL,0x868678237UL,0x4187235feUL,0xbd62663ceUL,0xea832dfb2UL,0xd5a72f0a7UL,0x659c855eUL,0xbea7f5e48UL,0xff9566715UL,0x1bd06d99aUL,0x9666c578cUL,0xc6527d3ecUL,0xb541f3c61UL,0x678a9ad70UL,0x36eaadfa3UL,0xaf74b01deUL,0x54cc3cdc3UL,0xd2e587ce6UL,0x8694b9349UL,0xd309898feUL,0x5c3250e09UL,0x84dcac28eUL,0xf72add2dfUL,0x1901681a3UL,0x9e6a8fd4UL,0x12f614cd1UL,0x6d7801ac4UL,0x14cf1ca54UL,0x12a7eb608UL,0x5e7a3bf62UL,0xba5056a2UL,0x5bee44c9bUL,0x819d7dc86UL,0x62adc8fdUL,0xbd3155d41UL,0xcd8c6b38aUL,0xe320fd50eUL,0xe189d6655UL,0x6863c2831UL,0xd2b9058fUL,0x23bfad8faUL,0x199bd1216UL,0x56138afd7UL,0xface83a93UL,0x9554da725UL,0x9b614dd91UL,0x98acbca3fUL,0xd5f0d5f21UL,0xeb59039e1UL,0x51d1ec82aUL,0xa366ef3baUL,0x1ad0e01f0UL,0x7f038ad0bUL,0x3ee055321UL,0x3bf2dcbb7UL,0x210e9856cUL,0xe4fea8231UL,0xb89444937UL,0x58852cc34UL,0x1ee29eea9UL,0xb919c79f2UL,0xddc44d3adUL,0xddcbd4777UL,0x3c3982ba1UL,0xdc8ebc45dUL,0x8b97712b1UL,0x9702ea21eUL,0x1f457e726UL,0x27c6f6e26UL,0xa9797770UL,0xd7615f53bUL,0x74f1cb6e1UL,0xa32e4d7dcUL,0x2e89afd1dUL,0xb03704d5UL,0xcca58aab0UL,0x1e5749225UL,0x6e63a36baUL,0x562992099UL,0x64701b950UL,0xf94ed6196UL,0xb3441b5f1UL,0xc64fac247UL,0xd72ebd98bUL,0xfa1985b23UL,0x2df788358UL,0x88838b488UL,0x6091032b4UL,0x25ff2d736UL,0xdce63d3d5UL,0xbb5970414UL,0x44d8b5ffeUL,0xe1a5666d8UL,0xe34129125UL,0xe23854b1UL,0x1b2a6dbeUL,0xd11507bcdUL,0x844531e6bUL,0xd864a8611UL,0xe2a5a7700UL,0x2d178962aUL,0x156b07f01UL,0x48b59fec3UL,0x3d3d9d79cUL,0x1846fb339UL,0xddf1d03caUL,0x998abaf9UL,0xc9d76190bUL,0x67354a1a8UL,0xcc89e2b09UL,0x353356834UL,0x7ad97470eUL,0xf4d560524UL,0x534b7804eUL,0x14290c632UL,0xb67d39d60UL,0x35b166febUL,0x88e6fb681UL,0xa0f82ae1aUL,0x8460ce52UL,0x8b06a9012UL,0xdaf1299dcUL,0x629ab696cUL,0x3113b448aUL,0xdb5ca215UL,0x3e00b1e2dUL,0x85a87f5abUL,0xb3995ff20UL,0x85661554dUL,0xe709c5384UL,0x111ca99bUL,0x49e614279UL,0xf14677ec4UL,0x8f6439bfbUL,0x749faa461UL,0x1c4f9189aUL,0xe8e9015caUL,0xf6e68d510UL,0xb3819319fUL,0xda9f7119fUL,0x7787f40f8UL,0xbc57f5716UL,0x60ff2897eUL,0xb3a28a934UL,0x10b34c97cUL,0xc14f53aedUL,0xd3c4eaf5dUL,0xb3148d39eUL,0x7874ea02UL,0xf86692b4aUL,0x5b03a0e8dUL,0xce6db8cc6UL,0x8233d5908UL,0xf163e3c06UL,0xdff854cceUL,0x26706f1bcUL,0x94c358653UL,0x7384c9821UL,0xe51b8e5d5UL,0xeda32963bUL,0xa073f392fUL,0xc3ccfa213UL,0x34adf5216UL,0xcb8da286bUL,0x3b5fbbf08UL,0x12812d1f8UL,0xc97c54c39UL,0xe1c3e36b9UL,0xabb8dc0edUL,0x19dcbbf6UL,0x25b0d7c4dUL,0x45e6b5ceUL,0x17dc086caUL,0xc3f425e6bUL,0x6fdee14f8UL,0x39155e6b4UL,0xa191ec15UL,0x398fcd7f4UL,0xa6e2b0594UL,0xfe5678d82UL,0xe317eba1fUL,0x2c4f10ca1UL,0xae239c19eUL,0x18e663ed2UL,0x4a040b7e7UL,0xbbca0849cUL,0xce05b3a74UL,0x7cee982fdUL,0x78ee54fa7UL,0x7b47bb0bdUL,0x7e8f19216UL,0xd67d91cedUL,0xef5effe94UL,0xec1d1938dUL,0x4c05ef70eUL,0x324442d9UL,0xfb0183bb4UL,0xfb7a0bd50UL,0x89aa17d87UL,0xe4e6aed89UL,0xdbecf68b4UL,0x683770de4UL,0xb9f41a136UL,0xc7614caceUL,0x89c298386UL,0x959cf09deUL,0xab30b19e3UL,0xdb2e4b614UL,0x26d30d39bUL,0x6ccefe452UL,0x587c5035cUL,0xea73bbbe0UL,0xdd9d91a11UL,0xdd8c5e851UL,0xe8b4aa077UL,0x8ccf8faddUL,0x47ddd3c0bUL,0x635a92f19UL,0xf0edfd1a3UL,0x1f760bf5eUL,0xa83feb68aUL,0x4f74da9ddUL,0x52f759252UL,0x98bee689eUL,0xc5fc8c3d5UL,0x8373d1286UL,0xf5f1cdabdUL,0xada68d3e5UL,0x3bbb9eb5eUL,0x50cde8478UL,0xf01f956e0UL,0xa922f2842UL,0x233a8b25aUL,0x71118b754UL,0xb7f874552UL,0x44d757121UL,0xb873b14ccUL,0x5bcc1db5cUL,0xbf9b895ceUL,0x5e65bb620UL,0xbbd1ed35cUL,0x358e79973UL,0x62aa5a4a5UL,0x81715fc0fUL,0x8df03a76eUL,0x376b7c6c7UL,0xa07a49f2eUL,0x45e159b63UL,0xdae5706b0UL,0xb5e52c7ccUL,0x206935e8eUL,0x39f0c5119UL,0x3cd58c574UL,0x571986d35UL,0xad66da60fUL,0x2b1a6315UL,0xd0131b533UL,0x741a195c5UL,0xb8663437UL,0x1cde52798UL,0x6b8e658b1UL,0xb43c0d44dUL,0x45481d697UL,0x29de93df5UL,0x10549b874UL,0xc056b5828UL,0x3fa830adUL,0x9496d14faUL,0xf540592a0UL,0xf31c8b855UL,0x64f2ba36bUL,0xfe7c6e4f5UL,0x5e42a78b0UL,0x9c2b8b096UL,0xdcb4a6e71UL,0xd63b0e7edUL,0xde1bcbcdaUL,0x68e7161f2UL,0x3e5ddf88dUL,0x419a37501UL,0xfad63e7abUL,0xc6e81b4baUL,0x8329315d3UL,0xc88d267e6UL,0x73a0ac25fUL,0xe7b75690fUL,0xdcbb95be2UL,0x7a1d2a059UL,0xd8fac361eUL,0x6312ff5c9UL,0xd2cf50d54UL,0x8c65fd00fUL,0xaa1636532UL,0x870c7285dUL,0x1894f0b84UL,0x4260cc5c3UL,0xe9997b9ecUL,0x87a052144UL,0x8706babf6UL,0xbd5f62ad3UL,0x1a7895439UL,0xf7e294bbcUL,0xbcc27ca26UL,0x3186a63d4UL,0x7f3ede4a4UL,0xb64e32468UL,0x71f250d53UL,0x7c6513783UL,0xb1778714aUL,0x94bf2c57fUL,0x64a9f893aUL,0x1305be654UL,0x493e0c9f6UL,0x5ba6fed8UL,0xc4a0c7a06UL,0xcc2ec0ddUL,0xd9a6769afUL,0x724c78a49UL,0xc85c981a4UL,0x12553c4cdUL,0x83cb892b1UL,0xbc324ccc7UL,0xef43f6c1dUL,0x2d6748bb7UL,0x5efdce2d7UL,0x94af64f28UL,0xf9d58feb3UL,0xcf547ac63UL,0xceb309febUL,0x30beba8caUL,0x8ab2e486aUL,0x4a95d58adUL,0x25ce07c46UL,0x712b93fd7UL,0x7f46acc81UL,0x64049d4beUL,0x65303aa09UL,0xf3aad21b3UL,0x2903a6cd0UL,0x5a0e0467dUL,0x3c4fa64e4UL,0x5c6655126UL,0xb40a2a67fUL,0xb0c22c6e5UL,0x1507e039bUL,0xb282b16b8UL,0xc0e14a3d3UL,0x93d381427UL,0x6bb55bb87UL,0xb675af72fUL,0xfceb4f95eUL,0x66af6ebbdUL,0x20a44d1f2UL,0x6bc873916UL,0xb8947bee8UL,0x4b6bed8a6UL,0x7012f7867UL,0x7eda3c150UL,0xab3ef1b8eUL,0x6d71466eeUL,0x408c4e225UL,0xe117838b1UL,0xaef3a075UL,0x5a0779d4fUL,0x70a3b1d69UL,0x26ccd31fdUL,0xed64dd1b2UL,0x981d4f60cUL,0x6a6e4fb61UL,0x52f15fc93UL,0x32b3a64dUL,0xecb17d667UL,0xa983fb935UL,0x37d23c88dUL,0xb8590fbcbUL,0xec2f1a277UL,0x90d3053e6UL,0xa36fa8ccdUL,0x44bd08eccUL,0x61dd197d9UL,0xa307cfd82UL,0x1d09c2de4UL,0x5f6d74368UL,0x1327d1b2dUL,0x594cc36b9UL,0xfea1cba7cUL,0x50c31262dUL,0xd99b1a6baUL,0x1bf789cd2UL,0xe2f6f66f9UL,0x13d5edfc6UL,0xbc3a9ab0cUL,0x1da5b2734UL,0x25ef4f2deUL,0xdcb55a50aUL,0x9c6dbc6acUL,0x89a838853UL,0x168f099eeUL,0xd51601760UL,0x89f324f1aUL,0x2cb1ec1eaUL,0x6306de366UL,0x12a2f11eUL,0xb5c0bf797UL,0x5c5f02be4UL,0x5019f54beUL,0x6ae4a096aUL,0x4bce78778UL,0x94b65b97fUL,0xd3f6e7bd2UL,0x1fbd2a84cUL,0x6d0127ab1UL,0x3e82799aaUL,0x4c1264dfeUL,0xcf69c9360UL,0x4b43e5342UL,0x35d1f0372UL,0xd78c18eb4UL,0x262574101UL,0xc2c5c7335UL,0xbad04051aUL,0x1c481f94eUL,0x3285aa0deUL,0x8973e1f69UL,0x5d238c694UL,0x7b71847b9UL,0x242f5675cUL,0xcc5751c2dUL,0xe09bc620bUL,0xe4e904ddUL,0x7ca4f1a7UL,0x2ac79ae43UL,0xe213d4250UL,0xd4137c2b5UL,0xddfce11bcUL,0xd1d658566UL,0x213f5b1bbUL,0xcd35be0a8UL,0xcc67d7f91UL,0x509bde098UL,0x74d3d8f46UL,0x51309c970UL,0x53e2bdf66UL,0xa5dd3fed3UL,0xa4e69b212UL,0xb1d39936dUL,0x6b6c8926bUL,0x46540a7b0UL,0x2eebc599fUL,0x2e54a283eUL,0xf9a328a9cUL,0x7ea9cfc53UL,0x5cffa2bdbUL,0x464d16f8eUL,0xeb09444bcUL,0x3f341b259UL,0x4d112b108UL,0x70cb94242UL,0x974ed4ffdUL,0x1084da291UL,0x85673ca39UL,0xd4d74766fUL,0x64a68e1deUL,0xe35630caeUL,0x2073229dbUL,0x63d3a3902UL,0x31598ee06UL,0x808d61126UL,0x29957984UL,0xd4f5f2649UL,0x9ec8a706bUL,0x349981760UL,0xc93ab23a6UL,0x2c7aa80daUL,0x866f102baUL,0xb15cff7bcUL,0x66a13a4caUL,0x54a755048UL,0xd13fdb8d9UL,0x16ad5edf3UL,0xe043bb154UL,0xcc8755671UL,0xcf9b2bfd5UL,0x3608890b4UL,0x330fef315UL,0xe3299ca65UL,0xb60765e1UL,0xe9bb17dcUL,0x95f474d8bUL,0xe721d3d00UL,0xd4679e565UL,0xc80da6113UL,0x98deeff30UL,0xc293bb871UL,0xe79132f48UL,0xb152dafbbUL,0x55f6a4386UL,0xa1b8a4044UL,0x4f4187b05UL,0xb17c2ed3UL,0x95d75ba04UL,0xbbf12e96dUL,0x6abd1a52fUL,0xf300bc991UL,0xf0a7385d4UL,0x52964f82aUL,0xa9962925fUL,0x613b2eef1UL,0x5fd2c92a8UL,0x9ebecd05UL,0x36002b87aUL,0x902c79eefUL,0x394e63c7eUL,0x133285064UL,0xf7cfe2d4bUL,0x4f068522cUL,0x96fea1a0fUL,0xc5a927b13UL,0xe9a2c1994UL,0x5c53b3803UL,0xf636b6188UL,0x7c656e3UL,0x26af1fc5fUL,0xec2f40b78UL,0xfaa1921e5UL,0x6137a8b30UL,0x28674f7bUL,0x3de184e35UL,0xeeef093e6UL,0xd44b3dae0UL,0xbb7ab7d93UL,0x2ae18c956UL,0xcde492bd6UL,0x1cee0216eUL,0xf1e5830adUL,0x76f6c3299UL,0xdea24af84UL,0x277e75586UL,0xa17318024UL,0x5c4739486UL,0x5e3de4725UL,0x6f67c9f6dUL,0x25f42791dUL,0x3c54d15b3UL,0xef98d9c32UL,0x42f64819dUL,0x16d5fd070UL,0x63cb98d4fUL,0x45a3ad27cUL,0x1b496b0acUL,0xaa471c42dUL,0x599346a2UL,0xdc8d1c2dUL,0x7498928c1UL,0xea06e90ffUL,0xb683baa32UL,0xf93014e16UL,0x20575d56eUL,0x794325589UL,0x1533e9935UL,0x86b8bcb70UL,0xce11faf5dUL,0x36c0bd318UL,0xe5e8c1167UL,0xe1831ba64UL,0xe088dbfa4UL,0x984479674UL,0xafef02b29UL,0x48518c716UL,0x4301564ceUL,0x21cc88710UL,0xd5c995278UL,0xd8367de1cUL,0x4a51125e8UL,0x113e1c226UL,0xef141e076UL,0x44097011dUL,0x4ca9d707cUL,0x40d8831f1UL,0xbd9c3b1d8UL,0x978364177UL,0x10f7606a9UL,0x46a64270aUL,0x42df1b22bUL,0xe906cf2a0UL,0x997da6fa5UL,0xa5722c26fUL,0xb14f58aaaUL,0xafc167ad8UL,0x37be56e60UL,0xde7f80d62UL,0xc3fb0a64UL,0xce8ca802cUL,0x35032ed9dUL,0xaa8ba3ee6UL,0x94b2e707cUL,0x2debbdae1UL,0xf53e25fcfUL,0xe935543ebUL,0x1462f0e90UL,0x54ce7d18cUL,0x2ddafdc5fUL,0x700565deeUL,0xfd408e0afUL,0x17d089decUL,0x833ea2459UL,0x3c8d3776aUL,0x2e5eebac8UL,0x20cbf49b0UL,0xc44675eb7UL,0x3a4b6beb1UL,0xce6f37c1eUL,0x63fba2e7cUL,0x5a05b553dUL,0x1286445b0UL,0x5e07a9b61UL,0x7d8397ea4UL,0x8084b7bbbUL,0xb05b38097UL,0x29c3019eeUL,0xed1d2708bUL,0x9df8a4d47UL,0xe4891e436UL,0x2a762ab72UL,0x92f70600fUL,0x92329a2cdUL,0x3e200c6edUL,0x8c0a7233eUL,0x60866806aUL,0xf4fddd24aUL,0xf78464c71UL,0x9c3d22242UL,0x3877ea6d1UL,0xe2a6d54acUL,0x497d2a5e7UL,0xca82f781eUL,0x481524f4cUL,0xdee088814UL,0xb2a82d3a4UL,0x8e6afe6e5UL,0xd6279a5daUL,0x4567cbc1aUL,0x5bec2b2fdUL,0x4ef452505UL,0x61d992cbaUL,0xab96be0cbUL,0x708ef35d9UL,0xb3f6f3623UL,0x36eb1801dUL,0xbadfee917UL,0xa3db13cd0UL,0x1d1a12828UL,0x2500816ceUL,0xcf7612148UL,0xbe6a3f4bUL,0x74142f3daUL,0xce5deed92UL,0xf9530a786UL,0x47c8bb38UL,0xfcabfe88fUL,0xbc83accb1UL,0x20cd9fb1fUL,0x23dcceb3UL,0x9e969b8c4UL,0x6e28de934UL,0x80a399667UL,0x76a0b85adUL,0x21a84be3cUL,0xa28d028b5UL,0xc4e7690dfUL,0xbfd9621e8UL,0x6f4bc0c24UL,0xaa8e76bd7UL,0xdeb55dac9UL,0xbb344fa8bUL,0xfcaab4decUL,0x146aba6cbUL,0xf49ed6eb8UL,0xdd57e9deaUL,0x225d5d090UL,0xd6e86c1c5UL,0x639be5f39UL,0xf5e7a6132UL,0xd2968b09fUL,0x82b30ba1eUL,0x803fa46ccUL,0xc290fab00UL,0x10df59de5UL,0x51ae9dcfbUL,0x49af8516dUL,0x2b564ce6UL,0xc615a1de0UL,0xfef9864a4UL,0xc16e27341UL,0x39e846736UL,0x1ecbb6746UL,0x588d03a7cUL,0x10a0eaf9cUL,0x671ccea6bUL,0x33a154603UL,0xa7b003bc1UL,0xc5fc3848dUL,0x78e50a9c7UL,0x17dbfb88eUL,0x4fd0ed541UL,0x84221debaUL,0x3132cf7e6UL,0xb67e7ac53UL,0xdf6b28024UL,0x785b9f7edUL,0xe3d35320dUL,0x159c06583UL,0x5c54a80a3UL,0xed4d4533bUL,0xcf16c601aUL,0x5e94efbd1UL,0x5d587126eUL,0xeef2f2807UL,0x9f3c558eUL,0x736cfd539UL,0xf5a922ae1UL,0x4e2ab9959UL,0x6a2dd34e7UL,0x8c9d30d23UL,0xeba20b791UL,0xd5c5095e3UL,0x423d75a82UL,0x40cebaafeUL,0x65e08d288UL,0x2e4f6d767UL,0xfe10d2f21UL,0x110347bdaUL,0xe43a9bfb3UL,0xcdea483ccUL,0xfb1e2d8c6UL,0xd8a0af7a7UL,0x37d05b182UL,0x8d1241d83UL,0xda1ea7b6eUL,0x65bea93dbUL,0x2a02f8753UL,0x454243289UL,0x4150bc5a2UL,0xbbabe5911UL,0x4cbcdbc59UL,0xf0e61340bUL,0x30a2cdea8UL,0x5daecb091UL,0x5dc93d891UL,0xc501b4051UL,0x782cfba78UL,0x4c191b61eUL,0xb7e27ef35UL,0x5a476838UL,0x9b0209574UL,0xa775164cfUL,0xd33d21701UL,0x3afcb7d45UL,0x4df2035cdUL,0x498819a21UL,0x293f9e506UL,0x9a35ff1c8UL,0xc090ebe6bUL,0xa4f0551d4UL,0x5dc0dc194UL,0x1388aeb31UL,0x340b27bf4UL,0x3a0f320abUL,0x996be75dUL,0xb257ecf39UL,0x78d86f2f1UL,0x673f5ff91UL,0x4538d7e3eUL,0xde5bc4369UL}; + fromVector(codes,d._code_id); + d._nbits=36; + d._tau=10; + d._type=TAG36h10; + d._name="TAG36h10"; + + }break; + case TAG16h5:{ + vector codes={0x231bUL,0x2ea5UL,0x346aUL,0x45b9UL,0x79a6UL,0x7f6bUL,0xb358UL,0xe745UL,0xfe59UL,0x156dUL,0x380bUL,0xf0abUL,0xd84UL,0x4736UL,0x8c72UL,0xaf10UL,0x93cUL,0x93b4UL,0xa503UL,0x468fUL,0xe137UL,0x5795UL,0xdf42UL,0x1c1dUL,0xe9dcUL,0x73adUL,0xad5fUL,0xd530UL,0x7caUL,0xaf2eUL}; + fromVector(codes,d._code_id); + d._nbits=16; + d._tau=5; + d._type=TAG16h5; + d._name="TAG16h5"; + + }break; + case TAG25h7:{ + vector codes={0x4b770dUL,0x11693e6UL,0x1a599abUL,0xc3a535UL,0x152aafaUL,0xaccd98UL,0x1cad922UL,0x2c2fadUL,0xbb3572UL,0x14a3b37UL,0x186524bUL,0xc99d4cUL,0x23bfeaUL,0x141cb74UL,0x1d0d139UL,0x1670aebUL,0x851675UL,0x150334eUL,0x6e3ed8UL,0xfd449dUL,0xaa55ecUL,0x1c86176UL,0x15e9b28UL,0x7ca6b2UL,0x147c38bUL,0x1d6c950UL,0x8b0e8cUL,0x11a1451UL,0x1562b65UL,0x13f53c8UL,0xd58d7aUL,0x829ec9UL,0xfaccf1UL,0x136e405UL,0x7a2f06UL,0x10934cbUL,0x16a8b56UL,0x1a6a26aUL,0xf85545UL,0x195c2e4UL,0x24c8a9UL,0x12bfc96UL,0x16813aaUL,0x1a42abeUL,0x1573424UL,0x1044573UL,0xb156c2UL,0x5e6811UL,0x1659bfeUL,0x1d55a63UL,0x5bf065UL,0xe28667UL,0x1e9ba54UL,0x17d7c5aUL,0x1f5aa82UL,0x1a2bbd1UL,0x1ae9f9UL,0x1259e51UL,0x134062bUL,0xe1177aUL,0xed07a8UL,0x162be24UL,0x59128bUL,0x1663e8fUL,0x1a83cbUL,0x45bb59UL,0x189065aUL,0x4bb370UL,0x16fb711UL,0x122c077UL,0xeca17aUL,0xdbc1f4UL,0x88d343UL,0x58ac5dUL,0xba02e8UL,0x1a1d9dUL,0x1c72eecUL,0x924bc5UL,0xdccab3UL,0x886d15UL,0x178c965UL,0x5bc69aUL,0x1716261UL,0x174e2ccUL,0x1ed10f4UL,0x156aa8UL,0x3e2a8aUL,0x2752edUL,0x153c651UL,0x1741670UL,0x765b05UL,0x119c0bbUL,0x172a783UL,0x4faca1UL,0xf31257UL,0x12441fcUL,0xd3748UL,0xc21f15UL,0xac5037UL,0x180e592UL,0x7d3210UL,0xa27187UL,0x2beeafUL,0x26ff57UL,0x690e82UL,0x77765cUL,0x1a9e1d7UL,0x140be1aUL,0x1aa1e3aUL,0x1944f5cUL,0x19b5032UL,0x169897UL,0x1068eb9UL,0xf30dbcUL,0x106a151UL,0x1d53e95UL,0x1348ceeUL,0xcf4fcaUL,0x1728bb5UL,0xdc1eecUL,0x69e8dbUL,0x16e1523UL,0x105fa25UL,0x18abb0cUL,0xc4275dUL,0x6d8e76UL,0xe8d6dbUL,0xe16fd7UL,0x1ac2682UL,0x77435bUL,0xa359ddUL,0x3a9c4eUL,0x123919aUL,0x1e25817UL,0x2a836UL,0x1545a4UL,0x1209c8dUL,0xbb5f69UL,0x1dc1f02UL,0x5d5f7eUL,0x12d0581UL,0x13786c2UL,0xe15409UL,0x1aa3599UL,0x139aad8UL,0xb09d2aUL,0x54488fUL,0x13c351cUL,0x976079UL,0xb25b12UL,0x1addb34UL,0x1cb23aeUL,0x1175738UL,0x1303bb8UL,0xd47716UL,0x188ceeaUL,0xbaf967UL,0x1226d39UL,0x135e99bUL,0x34adc5UL,0x2e384dUL,0x90d3faUL,0x232713UL,0x17d49b1UL,0xaa84d6UL,0xc2ddf8UL,0x1665646UL,0x4f345fUL,0x2276b1UL,0x1255dd7UL,0x16f4cccUL,0x4aaffcUL,0xc46da6UL,0x85c7b3UL,0x1311fcbUL,0x9c6c4fUL,0x187d947UL,0x8578e4UL,0xe2bf0bUL,0xa01b4cUL,0xa1493bUL,0x7ad766UL,0xccfe82UL,0x1981b5bUL,0x1cacc85UL,0x562cdbUL,0x15b0e78UL,0x8f66c5UL,0x3332bfUL,0x12ce754UL,0x96a76UL,0x1d5e3baUL,0x27ea41UL,0x14412dfUL,0x67b9b4UL,0xdaa51aUL,0x1dcb17UL,0x4d4afdUL,0x6335d5UL,0xee2334UL,0x17d4e55UL,0x1b8b0f0UL,0x14999e3UL,0x1513dfaUL,0x765cf2UL,0x56af90UL,0x12e16acUL,0x1d3d86cUL,0xff279bUL,0x18822ddUL,0x99d478UL,0x8dc0d2UL,0x34b666UL,0xcf9526UL,0x186443dUL,0x7a8e29UL,0x19c6aa5UL,0x1f2a27dUL,0x12b2136UL,0xd0cd0dUL,0x12cb320UL,0x17ddb0bUL,0x5353bUL,0x15b2cafUL,0x1e5a507UL,0x120f1e5UL,0x114605aUL,0x14efe4cUL,0x568134UL,0x11b9f92UL,0x174d2a7UL,0x692b1dUL,0x39e4feUL,0xaaff3dUL,0x96224cUL,0x13c9f77UL,0x110ee8fUL,0xf17beaUL,0x99fb5dUL,0x337141UL,0x2b54dUL,0x1233a70UL}; + fromVector(codes,d._code_id); + d._nbits=25; + d._tau=7; + d._type=TAG25h7; + d._name="TAG25h7"; + + }break; + case TAG25h9:{ + vector codes={0x155cbf1UL,0x1e4d1b6UL,0x17b0b68UL,0x1eac9cdUL,0x12e14ceUL,0x3548bbUL,0x7757e6UL,0x1065dabUL,0x1baa2e7UL,0xdea688UL,0x81d927UL,0x51b241UL,0xdbc8aeUL,0x1e50e19UL,0x15819d2UL,0x16d8282UL,0x163e035UL,0x9d9b81UL,0x173eec4UL,0xae3a09UL,0x5f7c51UL,0x1a137fcUL,0xdc9562UL,0x1802e45UL,0x1c3542cUL,0x870fa4UL,0x914709UL,0x16684f0UL,0xc8f2a5UL,0x833ebbUL,0x59717fUL,0x13cd050UL,0xfa0ad1UL,0x1b763b0UL,0xb991ceUL}; + fromVector(codes,d._code_id); + d._nbits=25; + d._tau=9; + d._type=TAG25h9; + d._name="TAG25h9"; + + }break; + case ARUCO_MIP_16h3:{ + + vector codes={0x5867UL,0x8b03UL,0x2537UL,0xb6c7UL,0xe45UL,0x161UL,0x219UL,0x859bUL,0x87UL,0xc93fUL,0x905fUL,0x3e73UL,0x6ab7UL,0x1bafUL,0x6f0fUL,0x23d3UL,0x47a5UL,0x8cf7UL,0x83cfUL,0x9205UL,0x29a5UL,0x8033UL,0x857dUL,0xa4afUL,0x422fUL,0x1d07UL,0x4ee3UL,0x64c5UL,0xaa7fUL,0x4b75UL,0x34dbUL,0x926UL,0x262UL,0x501dUL,0x415UL,0x6201UL,0x2064UL,0x2d5UL,0x10bUL,0x9427UL,0xc16bUL,0xa603UL,0x911UL,0x1043UL,0x87bUL,0xccfUL,0x162bUL,0x9ab3UL,0x30b7UL,0xad0bUL,0x60a6UL,0x3845UL,0xce2bUL,0xadc7UL,0x612UL,0x4253UL,0x9cc3UL,0xc23UL,0x409bUL,0x8e87UL,0x98e5UL,0x20f1UL,0xa807UL,0x1bfUL,0x7023UL,0xdf1UL,0x2957UL,0x26b3UL,0xd80fUL,0x4076UL,0x233bUL,0x32e3UL,0x7a85UL,0x4349UL,0xc857UL,0x41c6UL,0x3813UL,0x6d97UL,0x324fUL,0xe3fUL,0x47ffUL,0x2217UL,0xdd6fUL,0x48b1UL,0x8b95UL,0xd9c7UL,0x1a7dUL,0x867bUL,0xb7ffUL,0x7fa7UL,0x478bUL,0x6d43UL,0x6167UL,0x8f67UL,0xcda7UL,0x5cb7UL,0xf3afUL,0x889fUL,0x2fdfUL,0xd2e7UL,0x553UL,0xbc1fUL,0x7607UL,0x2a61UL,0x11ebUL,0xa457UL,0x789fUL,0x2e95UL,0xb46bUL,0x39ffUL,0x4fb6UL,0x647fUL,0x250dUL,0x5883UL,0xc5d7UL,0xe73fUL,0x129fUL,0x548fUL,0xb253UL,0x635fUL,0x1ed7UL,0xc647UL,0xa1f7UL,0x565fUL,0x7e6fUL,0xe10fUL,0xf56UL,0xf2dfUL,0x87a3UL,0x4b87UL,0x24f6UL,0xafb7UL,0x3bc7UL,0x51a7UL,0x6a47UL,0x4c46UL,0x6723UL,0x2787UL,0x2667UL,0x2f13UL,0x50d7UL,0x680dUL,0x7ad3UL,0x454fUL,0x6c35UL,0xf17fUL,0x6b91UL,0x4011UL,0x16UL,0x2022UL,0xa1UL,0x142UL,0x40fUL,0x1025UL,0xcbUL,0x45UL,0x4427UL,0x8491UL,0x2292UL,0x482bUL,0x8221UL,0x8293UL,0xf7UL,0x7dUL,0x601UL,0x84a5UL,0x2443UL,0x806fUL,0x21c1UL,0x4825UL,0x466UL,0x742dUL,0xca07UL,0x20bbUL,0x88a3UL,0x2251UL,0xa81UL,0x202dUL,0x205bUL,0x1a07UL,0x8119UL,0x6413UL,0x6105UL,0x820bUL,0x8715UL,0x1c0bUL,0xb003UL,0x307UL,0x147bUL,0x135UL,0x62a3UL,0x6c0bUL,0x14b3UL,0x5c05UL,0xd81UL,0x36dUL,0x8d3UL,0x8ba7UL,0xb25UL,0x4c5bUL,0x2867UL,0x242bUL,0x1237UL,0x4206UL,0xa0c3UL,0xa4f3UL,0x984bUL,0x8507UL,0x4529UL,0xf0dUL,0xb2bUL,0x2891UL,0x1a3bUL,0x234bUL,0x8d43UL,0x22e6UL,0x7245UL,0x1c77UL,0x825dUL,0x3487UL,0x60d6UL,0x5403UL,0x90e3UL,0xa43UL,0x6519UL,0x6169UL,0xc397UL,0x2285UL,0xc127UL,0x2c05UL,0x8871UL,0x5a0bUL,0x4e26UL,0x15afUL,0xf97UL,0x258bUL,0x463bUL,0x86c3UL,0x292fUL,0x9e3UL,0x2571UL,0x4ce5UL,0x81d5UL,0x459UL,0x40e2UL,0x5b6UL,0x4a33UL,0x837UL,0xa2a7UL,0xf4bUL};fromVector(codes,d._code_id); + d._nbits=16; + d._tau=3; + d._type=ARUCO_MIP_16h3; + d._name="ARUCO_MIP_16h3"; + + }break; + + case ARUCO_MIP_25h7:{ + vector codes={0x1ad2487UL,0x141b6e9UL,0x1780e66UL,0x1a86ad8UL,0x1146916UL,0x14ebcb6UL,0x1a1893cUL,0xd79525UL,0xf8db53UL,0x1b5928UL,0x127bf52UL,0x1cb3a02UL,0x145ed8cUL,0x3970efUL,0xc8934cUL,0x5badedUL,0x53c9daUL,0x1991f79UL,0x1d40a4dUL,0x1631993UL,0x74d97cUL,0x62c8a5UL,0x1a6ce96UL,0x1c71456UL,0x18d8df2UL,0xe290faUL,0x494061UL,0xedc6cdUL,0x12bd8f0UL,0x1a5d254UL,0x172eb3aUL,0x9d6e92UL,0x10a2172UL,0x1bd085aUL,0x186e528UL,0xb4af45UL,0x55a5b2UL,0x5e5136UL,0x88508bUL,0xea2c6fUL,0x1a9274cUL,0xbbb977UL,0x5ede62UL,0x105ba85UL,0x18a79bcUL,0x18d4b9dUL,0x1a144deUL,0x1ba5390UL,0x1b8a652UL,0x1c4948dUL,0x3ce285UL,0xb5cce7UL,0x16d2cb9UL,0xb7d338UL,0xb650e9UL,0x130e4b1UL,0xd3badcUL,0xf2161dUL,0x17a45a7UL,0x14c5c50UL,0x14be8abUL,0x1230de9UL,0xf7c242UL,0x508697UL,0x14b1cc5UL,0x2c1e94UL,0xf89469UL,0xdc52d8UL,0x6eb5c4UL,0xd8ea08UL,0x16c779dUL,0x1770dbeUL,0x90a4ecUL,0x1bf212eUL,0x1a4b99aUL,0x1d2d3a9UL,0xf4f5aeUL,0x842e89UL,0x1c0e8d4UL,0x1af4a4cUL,0x189044bUL,0xdd3108UL,0x1ab639eUL,0x18836c5UL,0x5f5ad3UL,0x1410f5dUL,0xeb532fUL,0xbda0baUL,0x9edf2dUL,0xd5ae4eUL,0x165d1b8UL,0x187d07aUL,0x1dd616dUL,0x912527UL,0x940c3cUL,0x516b8dUL,0xc1da19UL,0xc7db85UL,0x144cb34UL,0xcd7a34UL}; +fromVector(codes,d._code_id); + d._nbits=25; + d._tau=7; + d._type=ARUCO_MIP_25h7; + d._name="ARUCO_MIP_25h7"; + + + }break; + + case ARUCO_MIP_36h12:{ + vector codes={0xd2b63a09dUL,0x6001134e5UL,0x1206fbe72UL,0xff8ad6cb4UL,0x85da9bc49UL,0xb461afe9cUL,0x6db51fe13UL,0x5248c541fUL,0x8f34503UL,0x8ea462eceUL,0xeac2be76dUL,0x1af615c44UL,0xb48a49f27UL,0x2e4e1283bUL,0x78b1f2fa8UL,0x27d34f57eUL,0x89222fff1UL,0x4c1669406UL,0xbf49b3511UL,0xdc191cd5dUL,0x11d7c3f85UL,0x16a130e35UL,0xe29f27effUL,0x428d8ae0cUL,0x90d548477UL,0x2319cbc93UL,0xc3b0c3dfcUL,0x424bccc9UL,0x2a081d630UL,0x762743d96UL,0xd0645bf19UL,0xf38d7fd60UL,0xc6cbf9a10UL,0x3c1be7c65UL,0x276f75e63UL,0x4490a3f63UL,0xda60acd52UL,0x3cc68df59UL,0xab46f9daeUL,0x88d533d78UL,0xb6d62ec21UL,0xb3c02b646UL,0x22e56d408UL,0xac5f5770aUL,0xaaa993f66UL,0x4caa07c8dUL,0x5c9b4f7b0UL,0xaa9ef0e05UL,0x705c5750UL,0xac81f545eUL,0x735b91e74UL,0x8cc35cee4UL,0xe44694d04UL,0xb5e121de0UL,0x261017d0fUL,0xf1d439eb5UL,0xa1a33ac96UL,0x174c62c02UL,0x1ee27f716UL,0x8b1c5ece9UL,0x6a05b0c6aUL,0xd0568dfcUL,0x192d25e5fUL,0x1adbeccc8UL,0xcfec87f00UL,0xd0b9dde7aUL,0x88dcef81eUL,0x445681cb9UL,0xdbb2ffc83UL,0xa48d96df1UL,0xb72cc2e7dUL,0xc295b53fUL,0xf49832704UL,0x9968edc29UL,0x9e4e1af85UL,0x8683e2d1bUL,0x810b45c04UL,0x6ac44bfe2UL,0x645346615UL,0x3990bd598UL,0x1c9ed0f6aUL,0xc26729d65UL,0x83993f795UL,0x3ac05ac5dUL,0x357adff3bUL,0xd5c05565UL,0x2f547ef44UL,0x86c115041UL,0x640fd9e5fUL,0xce08bbcf7UL,0x109bb343eUL,0xc21435c92UL,0x35b4dfce4UL,0x459752cf2UL,0xec915b82cUL,0x51881eed0UL,0x2dda7dc97UL,0x2e0142144UL,0x42e890f99UL,0x9a8856527UL,0x8e80d9d80UL,0x891cbcf34UL,0x25dd82410UL,0x239551d34UL,0x8fe8f0c70UL,0x94106a970UL,0x82609b40cUL,0xfc9caf36UL,0x688181d11UL,0x718613c08UL,0xf1ab7629UL,0xa357bfc18UL,0x4c03b7a46UL,0x204dedce6UL,0xad6300d37UL,0x84cc4cd09UL,0x42160e5c4UL,0x87d2adfa8UL,0x7850e7749UL,0x4e750fc7cUL,0xbf2e5dfdaUL,0xd88324da5UL,0x234b52f80UL,0x378204514UL,0xabdf2ad53UL,0x365e78ef9UL,0x49caa6ca2UL,0x3c39ddf3UL,0xc68c5385dUL,0x5bfcbbf67UL,0x623241e21UL,0xabc90d5ccUL,0x388c6fe85UL,0xda0e2d62dUL,0x10855dfe9UL,0x4d46efd6bUL,0x76ea12d61UL,0x9db377d3dUL,0xeed0efa71UL,0xe6ec3ae2fUL,0x441faee83UL,0xba19c8ff5UL,0x313035eabUL,0x6ce8f7625UL,0x880dab58dUL,0x8d3409e0dUL,0x2be92ee21UL,0xd60302c6cUL,0x469ffc724UL,0x87eebeed3UL,0x42587ef7aUL,0x7a8cc4e52UL,0x76a437650UL,0x999e41ef4UL,0x7d0969e42UL,0xc02baf46bUL,0x9259f3e47UL,0x2116a1dc0UL,0x9f2de4d84UL,0xeffac29UL,0x7b371ff8cUL,0x668339da9UL,0xd010aee3fUL,0x1cd00b4c0UL,0x95070fc3bUL,0xf84c9a770UL,0x38f863d76UL,0x3646ff045UL,0xce1b96412UL,0x7a5d45da8UL,0x14e00ef6cUL,0x5e95abfd8UL,0xb2e9cb729UL,0x36c47dd7UL,0xb8ee97c6bUL,0xe9e8f657UL,0xd4ad2ef1aUL,0x8811c7f32UL,0x47bde7c31UL,0x3adadfb64UL,0x6e5b28574UL,0x33e67cd91UL,0x2ab9fdd2dUL,0x8afa67f2bUL,0xe6a28fc5eUL,0x72049cdbdUL,0xae65dac12UL,0x1251a4526UL,0x1089ab841UL,0xe2f096ee0UL,0xb0caee573UL,0xfd6677e86UL,0x444b3f518UL,0xbe8b3a56aUL,0x680a75cfcUL,0xac02baea8UL,0x97d815e1cUL,0x1d4386e08UL,0x1a14f5b0eUL,0xe658a8d81UL,0xa3868efa7UL,0x3668a9673UL,0xe8fc53d85UL,0x2e2b7edd5UL,0x8b2470f13UL,0xf69795f32UL,0x4589ffc8eUL,0x2e2080c9cUL,0x64265f7dUL,0x3d714dd10UL,0x1692c6ef1UL,0x3e67f2f49UL,0x5041dad63UL,0x1a1503415UL,0x64c18c742UL,0xa72eec35UL,0x1f0f9dc60UL,0xa9559bc67UL,0xf32911d0dUL,0x21c0d4ffcUL,0xe01cef5b0UL,0x4e23a3520UL,0xaa4f04e49UL,0xe1c4fcc43UL,0x208e8f6e8UL,0x8486774a5UL,0x9e98c7558UL,0x2c59fb7dcUL,0x9446a4613UL,0x8292dcc2eUL,0x4d61631UL,0xd05527809UL,0xa0163852dUL,0x8f657f639UL,0xcca6c3e37UL,0xcb136bc7aUL,0xfc5a83e53UL,0x9aa44fc30UL,0xbdec1bd3cUL,0xe020b9f7cUL,0x4b8f35fb0UL,0xb8165f637UL,0x33dc88d69UL,0x10a2f7e4dUL,0xc8cb5ff53UL,0xde259ff6bUL,0x46d070dd4UL,0x32d3b9741UL,0x7075f1c04UL,0x4d58dbea0UL}; + fromVector(codes,d._code_id); + d._nbits=36; + d._tau=12; + d._type=ARUCO_MIP_36h12; + d._name="ARUCO_MIP_36h12"; + + + }break; + case CHILITAGS:{ + vector codes={0x7c765c6e0c3e00UL,0x7c765c14121e00UL,0x7c765a06763e00UL,0x7c765a7c681e00UL,0x7c764248643e00UL,0x7c7642327a1e00UL,0x7c7644201e3e00UL,0x7c76445a001e00UL,0x7c7626702c3800UL,0x7c76260a321800UL,0x7c762018563800UL,0x7c762062481800UL,0x7c763856443800UL,0x7c76382c5a1800UL,0x7c763e3e3e3800UL,0x7c763e44201800UL,0x7c70346e120000UL,0x7c7034140c2000UL,0x7c703206680000UL,0x7c70327c762000UL,0x7c702a487a0000UL,0x7c702a32642000UL,0x7c702c20000000UL,0x7c702c5a1e2000UL,0x7c704e70320600UL,0x7c704e0a2c2600UL,0x7c704818480600UL,0x7c704862562600UL,0x7c7050565a0600UL,0x7c70502c442600UL,0x7c70563e200600UL,0x7c7056443e2600UL,0x7c687c6e764400UL,0x7c687c14686400UL,0x7c687a060c4400UL,0x7c687a7c126400UL,0x7c6862481e4400UL,0x7c686232006400UL,0x7c686420644400UL,0x7c68645a7a6400UL,0x7c680670564200UL,0x7c68060a486200UL,0x7c6800182c4200UL,0x7c680062326200UL,0x7c6818563e4200UL,0x7c68182c206200UL,0x7c681e3e444200UL,0x7c681e445a6200UL,0x7c6e146e687a00UL,0x7c6e1414765a00UL,0x7c6e1206127a00UL,0x7c6e127c0c5a00UL,0x7c6e0a48007a00UL,0x7c6e0a321e5a00UL,0x7c6e0c207a7a00UL,0x7c6e0c5a645a00UL,0x7c6e6e70487c00UL,0x7c6e6e0a565c00UL,0x7c6e6818327c00UL,0x7c6e68622c5c00UL,0x7c6e7056207c00UL,0x7c6e702c3e5c00UL,0x7c6e763e5a7c00UL,0x7c6e7644445c00UL,0x7c0c5c68625600UL,0x7c0c5c127c7600UL,0x7c0c5a00185600UL,0x7c0c5a7a067600UL,0x7c0c424e0a5600UL,0x7c0c4234147600UL,0x7c0c4426705600UL,0x7c0c445c6e7600UL,0x7c0c2676425000UL,0x7c0c260c5c7000UL,0x7c0c201e385000UL,0x7c0c2064267000UL,0x7c0c38502a5000UL,0x7c0c382a347000UL,0x7c0c3e38505000UL,0x7c0c3e424e7000UL,0x7c0a34687c6800UL,0x7c0a3412624800UL,0x7c0a3200066800UL,0x7c0a327a184800UL,0x7c0a2a4e146800UL,0x7c0a2a340a4800UL,0x7c0a2c266e6800UL,0x7c0a2c5c704800UL,0x7c0a4e765c6e00UL,0x7c0a4e0c424e00UL,0x7c0a481e266e00UL,0x7c0a4864384e00UL,0x7c0a5050346e00UL,0x7c0a502a2a4e00UL,0x7c0a56384e6e00UL,0x7c0a5642504e00UL,0x7c127c68182c00UL,0x7c127c12060c00UL,0x7c127a00622c00UL,0x7c127a7a7c0c00UL,0x7c12624e702c00UL,0x7c1262346e0c00UL,0x7c1264260a2c00UL,0x7c12645c140c00UL,0x7c120676382a00UL,0x7c12060c260a00UL,0x7c12001e422a00UL,0x7c1200645c0a00UL,0x7c121850502a00UL,0x7c12182a4e0a00UL,0x7c121e382a2a00UL,0x7c121e42340a00UL,0x7c141468061200UL,0x7c141412183200UL,0x7c1412007c1200UL,0x7c14127a623200UL,0x7c140a4e6e1200UL,0x7c140a34703200UL,0x7c140c26141200UL,0x7c140c5c0a3200UL,0x7c146e76261400UL,0x7c146e0c383400UL,0x7c14681e5c1400UL,0x7c146864423400UL,0x7c1470504e1400UL,0x7c14702a503400UL,0x7c147638341400UL,0x7c1476422a3400UL,0x7a1e5c70321800UL,0x7a1e5c0a2c3800UL,0x7a1e5a18481800UL,0x7a1e5a62563800UL,0x7a1e42565a1800UL,0x7a1e422c443800UL,0x7a1e443e201800UL,0x7a1e44443e3800UL,0x7a1e266e121e00UL,0x7a1e26140c3e00UL,0x7a1e2006681e00UL,0x7a1e207c763e00UL,0x7a1e38487a1e00UL,0x7a1e3832643e00UL,0x7a1e3e20001e00UL,0x7a1e3e5a1e3e00UL,0x7a1834702c2600UL,0x7a18340a320600UL,0x7a183218562600UL,0x7a183262480600UL,0x7a182a56442600UL,0x7a182a2c5a0600UL,0x7a182c3e3e2600UL,0x7a182c44200600UL,0x7a184e6e0c2000UL,0x7a184e14120000UL,0x7a184806762000UL,0x7a18487c680000UL,0x7a185048642000UL,0x7a1850327a0000UL,0x7a1856201e2000UL,0x7a18565a000000UL,0x7a007c70486200UL,0x7a007c0a564200UL,0x7a007a18326200UL,0x7a007a622c4200UL,0x7a006256206200UL,0x7a00622c3e4200UL,0x7a00643e5a6200UL,0x7a006444444200UL,0x7a00066e686400UL,0x7a000614764400UL,0x7a000006126400UL,0x7a00007c0c4400UL,0x7a001848006400UL,0x7a0018321e4400UL,0x7a001e207a6400UL,0x7a001e5a644400UL,0x7a061470565c00UL,0x7a06140a487c00UL,0x7a0612182c5c00UL,0x7a061262327c00UL,0x7a060a563e5c00UL,0x7a060a2c207c00UL,0x7a060c3e445c00UL,0x7a060c445a7c00UL,0x7a066e6e765a00UL,0x7a066e14687a00UL,0x7a0668060c5a00UL,0x7a06687c127a00UL,0x7a0670481e5a00UL,0x7a067032007a00UL,0x7a067620645a00UL,0x7a06765a7a7a00UL,0x7a645c765c7000UL,0x7a645c0c425000UL,0x7a645a1e267000UL,0x7a645a64385000UL,0x7a644250347000UL,0x7a64422a2a5000UL,0x7a6444384e7000UL,0x7a644442505000UL,0x7a6426687c7600UL,0x7a642612625600UL,0x7a642000067600UL,0x7a64207a185600UL,0x7a64384e147600UL,0x7a6438340a5600UL,0x7a643e266e7600UL,0x7a643e5c705600UL,0x7a623476424e00UL,0x7a62340c5c6e00UL,0x7a62321e384e00UL,0x7a623264266e00UL,0x7a622a502a4e00UL,0x7a622a2a346e00UL,0x7a622c38504e00UL,0x7a622c424e6e00UL,0x7a624e68624800UL,0x7a624e127c6800UL,0x7a624800184800UL,0x7a62487a066800UL,0x7a62504e0a4800UL,0x7a625034146800UL,0x7a625626704800UL,0x7a62565c6e6800UL,0x7a7a7c76260a00UL,0x7a7a7c0c382a00UL,0x7a7a7a1e5c0a00UL,0x7a7a7a64422a00UL,0x7a7a62504e0a00UL,0x7a7a622a502a00UL,0x7a7a6438340a00UL,0x7a7a64422a2a00UL,0x7a7a0668060c00UL,0x7a7a0612182c00UL,0x7a7a00007c0c00UL,0x7a7a007a622c00UL,0x7a7a184e6e0c00UL,0x7a7a1834702c00UL,0x7a7a1e26140c00UL,0x7a7a1e5c0a2c00UL,0x7a7c1476383400UL,0x7a7c140c261400UL,0x7a7c121e423400UL,0x7a7c12645c1400UL,0x7a7c0a50503400UL,0x7a7c0a2a4e1400UL,0x7a7c0c382a3400UL,0x7a7c0c42341400UL,0x7a7c6e68183200UL,0x7a7c6e12061200UL,0x7a7c6800623200UL,0x7a7c687a7c1200UL,0x7a7c704e703200UL,0x7a7c70346e1200UL,0x7a7c76260a3200UL,0x7a7c765c141200UL,0x62565c6e680600UL,0x62565c14762600UL,0x62565a06120600UL,0x62565a7c0c2600UL,0x62564248000600UL,0x625642321e2600UL,0x625644207a0600UL,0x6256445a642600UL,0x62562670480000UL,0x6256260a562000UL,0x62562018320000UL,0x625620622c2000UL,0x62563856200000UL,0x6256382c3e2000UL,0x62563e3e5a0000UL,0x62563e44442000UL,0x6250346e763800UL,0x62503414681800UL,0x625032060c3800UL,0x6250327c121800UL,0x62502a481e3800UL,0x62502a32001800UL,0x62502c20643800UL,0x62502c5a7a1800UL,0x62504e70563e00UL,0x62504e0a481e00UL,0x625048182c3e00UL,0x62504862321e00UL,0x625050563e3e00UL,0x6250502c201e00UL,0x6250563e443e00UL,0x625056445a1e00UL,0x62487c6e127c00UL,0x62487c140c5c00UL,0x62487a06687c00UL,0x62487a7c765c00UL,0x624862487a7c00UL,0x62486232645c00UL,0x62486420007c00UL,0x6248645a1e5c00UL,0x62480670327a00UL,0x6248060a2c5a00UL,0x62480018487a00UL,0x62480062565a00UL,0x624818565a7a00UL,0x6248182c445a00UL,0x62481e3e207a00UL,0x62481e443e5a00UL,0x624e146e0c4200UL,0x624e1414126200UL,0x624e1206764200UL,0x624e127c686200UL,0x624e0a48644200UL,0x624e0a327a6200UL,0x624e0c201e4200UL,0x624e0c5a006200UL,0x624e6e702c4400UL,0x624e6e0a326400UL,0x624e6818564400UL,0x624e6862486400UL,0x624e7056444400UL,0x624e702c5a6400UL,0x624e763e3e4400UL,0x624e7644206400UL,0x622c5c68066e00UL,0x622c5c12184e00UL,0x622c5a007c6e00UL,0x622c5a7a624e00UL,0x622c424e6e6e00UL,0x622c4234704e00UL,0x622c4426146e00UL,0x622c445c0a4e00UL,0x622c2676266800UL,0x622c260c384800UL,0x622c201e5c6800UL,0x622c2064424800UL,0x622c38504e6800UL,0x622c382a504800UL,0x622c3e38346800UL,0x622c3e422a4800UL,0x622a3468185000UL,0x622a3412067000UL,0x622a3200625000UL,0x622a327a7c7000UL,0x622a2a4e705000UL,0x622a2a346e7000UL,0x622a2c260a5000UL,0x622a2c5c147000UL,0x622a4e76385600UL,0x622a4e0c267600UL,0x622a481e425600UL,0x622a48645c7600UL,0x622a5050505600UL,0x622a502a4e7600UL,0x622a56382a5600UL,0x622a5642347600UL,0x62327c687c1400UL,0x62327c12623400UL,0x62327a00061400UL,0x62327a7a183400UL,0x6232624e141400UL,0x623262340a3400UL,0x623264266e1400UL,0x6232645c703400UL,0x623206765c1200UL,0x6232060c423200UL,0x6232001e261200UL,0x62320064383200UL,0x62321850341200UL,0x6232182a2a3200UL,0x62321e384e1200UL,0x62321e42503200UL,0x62341468622a00UL,0x623414127c0a00UL,0x62341200182a00UL,0x6234127a060a00UL,0x62340a4e0a2a00UL,0x62340a34140a00UL,0x62340c26702a00UL,0x62340c5c6e0a00UL,0x62346e76422c00UL,0x62346e0c5c0c00UL,0x6234681e382c00UL,0x62346864260c00UL,0x623470502a2c00UL,0x6234702a340c00UL,0x62347638502c00UL,0x623476424e0c00UL,0x643e5c70562000UL,0x643e5c0a480000UL,0x643e5a182c2000UL,0x643e5a62320000UL,0x643e42563e2000UL,0x643e422c200000UL,0x643e443e442000UL,0x643e44445a0000UL,0x643e266e762600UL,0x643e2614680600UL,0x643e20060c2600UL,0x643e207c120600UL,0x643e38481e2600UL,0x643e3832000600UL,0x643e3e20642600UL,0x643e3e5a7a0600UL,0x64383470481e00UL,0x6438340a563e00UL,0x64383218321e00UL,0x643832622c3e00UL,0x64382a56201e00UL,0x64382a2c3e3e00UL,0x64382c3e5a1e00UL,0x64382c44443e00UL,0x64384e6e681800UL,0x64384e14763800UL,0x64384806121800UL,0x6438487c0c3800UL,0x64385048001800UL,0x643850321e3800UL,0x643856207a1800UL,0x6438565a643800UL,0x64207c702c5a00UL,0x64207c0a327a00UL,0x64207a18565a00UL,0x64207a62487a00UL,0x64206256445a00UL,0x6420622c5a7a00UL,0x6420643e3e5a00UL,0x64206444207a00UL,0x6420066e0c5c00UL,0x64200614127c00UL,0x64200006765c00UL,0x6420007c687c00UL,0x64201848645c00UL,0x642018327a7c00UL,0x64201e201e5c00UL,0x64201e5a007c00UL,0x64261470326400UL,0x6426140a2c4400UL,0x64261218486400UL,0x64261262564400UL,0x64260a565a6400UL,0x64260a2c444400UL,0x64260c3e206400UL,0x64260c443e4400UL,0x64266e6e126200UL,0x64266e140c4200UL,0x64266806686200UL,0x6426687c764200UL,0x642670487a6200UL,0x64267032644200UL,0x64267620006200UL,0x6426765a1e4200UL,0x64445c76384800UL,0x64445c0c266800UL,0x64445a1e424800UL,0x64445a645c6800UL,0x64444250504800UL,0x6444422a4e6800UL,0x644444382a4800UL,0x64444442346800UL,0x64442668184e00UL,0x64442612066e00UL,0x64442000624e00UL,0x6444207a7c6e00UL,0x6444384e704e00UL,0x644438346e6e00UL,0x64443e260a4e00UL,0x64443e5c146e00UL,0x64423476267600UL,0x6442340c385600UL,0x6442321e5c7600UL,0x64423264425600UL,0x64422a504e7600UL,0x64422a2a505600UL,0x64422c38347600UL,0x64422c422a5600UL,0x64424e68067000UL,0x64424e12185000UL,0x644248007c7000UL,0x6442487a625000UL,0x6442504e6e7000UL,0x64425034705000UL,0x64425626147000UL,0x6442565c0a5000UL,0x645a7c76423200UL,0x645a7c0c5c1200UL,0x645a7a1e383200UL,0x645a7a64261200UL,0x645a62502a3200UL,0x645a622a341200UL,0x645a6438503200UL,0x645a64424e1200UL,0x645a0668623400UL,0x645a06127c1400UL,0x645a0000183400UL,0x645a007a061400UL,0x645a184e0a3400UL,0x645a1834141400UL,0x645a1e26703400UL,0x645a1e5c6e1400UL,0x645c14765c0c00UL,0x645c140c422c00UL,0x645c121e260c00UL,0x645c1264382c00UL,0x645c0a50340c00UL,0x645c0a2a2a2c00UL,0x645c0c384e0c00UL,0x645c0c42502c00UL,0x645c6e687c0a00UL,0x645c6e12622a00UL,0x645c6800060a00UL,0x645c687a182a00UL,0x645c704e140a00UL,0x645c70340a2a00UL,0x645c76266e0a00UL,0x645c765c702a00UL,0x6765c681e5a00UL,0x6765c12007a00UL,0x6765a00645a00UL,0x6765a7a7a7a00UL,0x676424e765a00UL,0x6764234687a00UL,0x67644260c5a00UL,0x676445c127a00UL,0x67626763e5c00UL,0x676260c207c00UL,0x676201e445c00UL,0x67620645a7c00UL,0x6763850565c00UL,0x676382a487c00UL,0x6763e382c5c00UL,0x6763e42327c00UL,0x6703468006400UL,0x67034121e4400UL,0x67032007a6400UL,0x670327a644400UL,0x6702a4e686400UL,0x6702a34764400UL,0x6702c26126400UL,0x6702c5c0c4400UL,0x6704e76206200UL,0x6704e0c3e4200UL,0x670481e5a6200UL,0x6704864444200UL,0x6705050486200UL,0x670502a564200UL,0x6705638326200UL,0x67056422c4200UL,0x6687c68642000UL,0x6687c127a0000UL,0x6687a001e2000UL,0x6687a7a000000UL,0x668624e0c2000UL,0x6686234120000UL,0x6686426762000UL,0x668645c680000UL,0x6680676442600UL,0x668060c5a0600UL,0x668001e3e2600UL,0x6680064200600UL,0x66818502c2600UL,0x668182a320600UL,0x6681e38562600UL,0x6681e42480600UL,0x66e14687a1e00UL,0x66e1412643e00UL,0x66e1200001e00UL,0x66e127a1e3e00UL,0x66e0a4e121e00UL,0x66e0a340c3e00UL,0x66e0c26681e00UL,0x66e0c5c763e00UL,0x66e6e765a1800UL,0x66e6e0c443800UL,0x66e681e201800UL,0x66e68643e3800UL,0x66e7050321800UL,0x66e702a2c3800UL,0x66e7638481800UL,0x66e7642563800UL,0x60c5c6e703200UL,0x60c5c146e1200UL,0x60c5a060a3200UL,0x60c5a7c141200UL,0x60c4248183200UL,0x60c4232061200UL,0x60c4420623200UL,0x60c445a7c1200UL,0x60c2670503400UL,0x60c260a4e1400UL,0x60c20182a3400UL,0x60c2062341400UL,0x60c3856383400UL,0x60c382c261400UL,0x60c3e3e423400UL,0x60c3e445c1400UL,0x60a346e6e0c00UL,0x60a3414702c00UL,0x60a3206140c00UL,0x60a327c0a2c00UL,0x60a2a48060c00UL,0x60a2a32182c00UL,0x60a2c207c0c00UL,0x60a2c5a622c00UL,0x60a4e704e0a00UL,0x60a4e0a502a00UL,0x60a4818340a00UL,0x60a48622a2a00UL,0x60a5056260a00UL,0x60a502c382a00UL,0x60a563e5c0a00UL,0x60a5644422a00UL,0x6127c6e0a4800UL,0x6127c14146800UL,0x6127a06704800UL,0x6127a7c6e6800UL,0x6126248624800UL,0x61262327c6800UL,0x6126420184800UL,0x612645a066800UL,0x61206702a4e00UL,0x612060a346e00UL,0x6120018504e00UL,0x61200624e6e00UL,0x6121856424e00UL,0x612182c5c6e00UL,0x6121e3e384e00UL,0x6121e44266e00UL,0x614146e147600UL,0x61414140a5600UL,0x61412066e7600UL,0x614127c705600UL,0x6140a487c7600UL,0x6140a32625600UL,0x6140c20067600UL,0x6140c5a185600UL,0x6146e70347000UL,0x6146e0a2a5000UL,0x61468184e7000UL,0x6146862505000UL,0x61470565c7000UL,0x614702c425000UL,0x614763e267000UL,0x6147644385000UL,0x1e5c76207c00UL,0x1e5c0c3e5c00UL,0x1e5a1e5a7c00UL,0x1e5a64445c00UL,0x1e4250487c00UL,0x1e422a565c00UL,0x1e4438327c00UL,0x1e44422c5c00UL,0x1e2668007a00UL,0x1e26121e5a00UL,0x1e20007a7a00UL,0x1e207a645a00UL,0x1e384e687a00UL,0x1e3834765a00UL,0x1e3e26127a00UL,0x1e3e5c0c5a00UL,0x1834763e4200UL,0x18340c206200UL,0x18321e444200UL,0x1832645a6200UL,0x182a50564200UL,0x182a2a486200UL,0x182c382c4200UL,0x182c42326200UL,0x184e681e4400UL,0x184e12006400UL,0x184800644400UL,0x18487a7a6400UL,0x18504e764400UL,0x185034686400UL,0x1856260c4400UL,0x18565c126400UL,0x7c765a0600UL,0x7c0c442600UL,0x7a1e200600UL,0x7a643e2600UL,0x6250320600UL,0x622a2c2600UL,0x6438480600UL,0x6442562600UL,0x6687a0000UL,0x612642000UL,0x0UL,0x7a1e2000UL,0x184e120000UL,0x18340c2000UL,0x1e26680000UL,0x1e5c762000UL,0x61476443800UL,0x6140c5a1800UL,0x6121e3e3800UL,0x61264201800UL,0x60a502c3800UL,0x60a2a321800UL,0x60c38563800UL,0x60c42481800UL,0x66e68643e00UL,0x66e127a1e00UL,0x668001e3e00UL,0x6687a001e00UL,0x6704e0c3e00UL,0x67034121e00UL,0x67626763e00UL,0x6765c681e00UL,0x645c704e1400UL,0x645c0a503400UL,0x645a18341400UL,0x645a622a3400UL,0x644256261400UL,0x64422c383400UL,0x64443e5c1400UL,0x644444423400UL,0x64266e6e1200UL,0x642614703200UL,0x642006141200UL,0x64207c0a3200UL,0x643848061200UL,0x643832183200UL,0x643e207c1200UL,0x643e5a623200UL,0x623470502a00UL,0x62340a4e0a00UL,0x6232182a2a00UL,0x623262340a00UL,0x622a56382a00UL,0x622a2c260a00UL,0x622c3e422a00UL,0x622c445c0a00UL,0x624e6e702c00UL,0x624e146e0c00UL,0x6248060a2c00UL,0x62487c140c00UL,0x625048182c00UL,0x625032060c00UL,0x625620622c00UL,0x62565a7c0c00UL,0x7a7c70346e00UL,0x7a7c0a2a4e00UL,0x7a7a184e6e00UL,0x7a7a62504e00UL,0x7a62565c6e00UL,0x7a622c424e00UL,0x7a643e266e00UL,0x7a6444384e00UL,0x7a066e146800UL,0x7a06140a4800UL,0x7a00066e6800UL,0x7a007c704800UL,0x7a18487c6800UL,0x7a1832624800UL,0x7a1e20066800UL,0x7a1e5a184800UL,0x7c14702a5000UL,0x7c140a347000UL,0x7c1218505000UL,0x7c12624e7000UL,0x7c0a56425000UL,0x7c0a2c5c7000UL,0x7c0c3e385000UL,0x7c0c44267000UL,0x7c6e6e0a5600UL,0x7c6e14147600UL,0x7c6806705600UL,0x7c687c6e7600UL,0x7c7048625600UL,0x7c70327c7600UL,0x7c7620185600UL,0x7c765a067600UL,0x18565c687a6200UL,0x18565c12644200UL,0x18565a00006200UL,0x18565a7a1e4200UL,0x1856424e126200UL,0x185642340c4200UL,0x18564426686200UL,0x1856445c764200UL,0x185626765a6400UL,0x1856260c444400UL,0x1856201e206400UL,0x185620643e4400UL,0x18563850326400UL,0x1856382a2c4400UL,0x18563e38486400UL,0x18563e42564400UL,0x18503468645c00UL,0x185034127a7c00UL,0x185032001e5c00UL,0x1850327a007c00UL,0x18502a4e0c5c00UL,0x18502a34127c00UL,0x18502c26765c00UL,0x18502c5c687c00UL,0x18504e76445a00UL,0x18504e0c5a7a00UL,0x1850481e3e5a00UL,0x18504864207a00UL,0x185050502c5a00UL,0x1850502a327a00UL,0x18505638565a00UL,0x18505642487a00UL,0x18487c68001800UL,0x18487c121e3800UL,0x18487a007a1800UL,0x18487a7a643800UL,0x1848624e681800UL,0x18486234763800UL,0x18486426121800UL,0x1848645c0c3800UL,0x18480676201e00UL,0x1848060c3e3e00UL,0x1848001e5a1e00UL,0x18480064443e00UL,0x18481850481e00UL,0x1848182a563e00UL,0x18481e38321e00UL,0x18481e422c3e00UL,0x184e14681e2600UL,0x184e1412000600UL,0x184e1200642600UL,0x184e127a7a0600UL,0x184e0a4e762600UL,0x184e0a34680600UL,0x184e0c260c2600UL,0x184e0c5c120600UL,0x184e6e763e2000UL,0x184e6e0c200000UL,0x184e681e442000UL,0x184e68645a0000UL,0x184e7050562000UL,0x184e702a480000UL,0x184e76382c2000UL,0x184e7642320000UL,0x182c5c6e140a00UL,0x182c5c140a2a00UL,0x182c5a066e0a00UL,0x182c5a7c702a00UL,0x182c42487c0a00UL,0x182c4232622a00UL,0x182c4420060a00UL,0x182c445a182a00UL,0x182c2670340c00UL,0x182c260a2a2c00UL,0x182c20184e0c00UL,0x182c2062502c00UL,0x182c38565c0c00UL,0x182c382c422c00UL,0x182c3e3e260c00UL,0x182c3e44382c00UL,0x182a346e0a3400UL,0x182a3414141400UL,0x182a3206703400UL,0x182a327c6e1400UL,0x182a2a48623400UL,0x182a2a327c1400UL,0x182a2c20183400UL,0x182a2c5a061400UL,0x182a4e702a3200UL,0x182a4e0a341200UL,0x182a4818503200UL,0x182a48624e1200UL,0x182a5056423200UL,0x182a502c5c1200UL,0x182a563e383200UL,0x182a5644261200UL,0x18327c6e6e7000UL,0x18327c14705000UL,0x18327a06147000UL,0x18327a7c0a5000UL,0x18326248067000UL,0x18326232185000UL,0x183264207c7000UL,0x1832645a625000UL,0x183206704e7600UL,0x1832060a505600UL,0x18320018347600UL,0x183200622a5600UL,0x18321856267600UL,0x1832182c385600UL,0x18321e3e5c7600UL,0x18321e44425600UL,0x1834146e704e00UL,0x183414146e6e00UL,0x183412060a4e00UL,0x1834127c146e00UL,0x18340a48184e00UL,0x18340a32066e00UL,0x18340c20624e00UL,0x18340c5a7c6e00UL,0x18346e70504800UL,0x18346e0a4e6800UL,0x183468182a4800UL,0x18346862346800UL,0x18347056384800UL,0x1834702c266800UL,0x1834763e424800UL,0x183476445c6800UL,0x1e3e5c76444400UL,0x1e3e5c0c5a6400UL,0x1e3e5a1e3e4400UL,0x1e3e5a64206400UL,0x1e3e42502c4400UL,0x1e3e422a326400UL,0x1e3e4438564400UL,0x1e3e4442486400UL,0x1e3e2668644200UL,0x1e3e26127a6200UL,0x1e3e20001e4200UL,0x1e3e207a006200UL,0x1e3e384e0c4200UL,0x1e3e3834126200UL,0x1e3e3e26764200UL,0x1e3e3e5c686200UL,0x1e3834765a7a00UL,0x1e38340c445a00UL,0x1e38321e207a00UL,0x1e3832643e5a00UL,0x1e382a50327a00UL,0x1e382a2a2c5a00UL,0x1e382c38487a00UL,0x1e382c42565a00UL,0x1e384e687a7c00UL,0x1e384e12645c00UL,0x1e384800007c00UL,0x1e38487a1e5c00UL,0x1e38504e127c00UL,0x1e3850340c5c00UL,0x1e385626687c00UL,0x1e38565c765c00UL,0x1e207c763e3e00UL,0x1e207c0c201e00UL,0x1e207a1e443e00UL,0x1e207a645a1e00UL,0x1e206250563e00UL,0x1e20622a481e00UL,0x1e2064382c3e00UL,0x1e206442321e00UL,0x1e2006681e3800UL,0x1e200612001800UL,0x1e200000643800UL,0x1e20007a7a1800UL,0x1e20184e763800UL,0x1e201834681800UL,0x1e201e260c3800UL,0x1e201e5c121800UL,0x1e261476200000UL,0x1e26140c3e2000UL,0x1e26121e5a0000UL,0x1e261264442000UL,0x1e260a50480000UL,0x1e260a2a562000UL,0x1e260c38320000UL,0x1e260c422c2000UL,0x1e266e68000600UL,0x1e266e121e2600UL,0x1e2668007a0600UL,0x1e26687a642600UL,0x1e26704e680600UL,0x1e267034762600UL,0x1e267626120600UL,0x1e26765c0c2600UL,0x1e445c702a2c00UL,0x1e445c0a340c00UL,0x1e445a18502c00UL,0x1e445a624e0c00UL,0x1e444256422c00UL,0x1e44422c5c0c00UL,0x1e44443e382c00UL,0x1e444444260c00UL,0x1e44266e0a2a00UL,0x1e442614140a00UL,0x1e442006702a00UL,0x1e44207c6e0a00UL,0x1e443848622a00UL,0x1e4438327c0a00UL,0x1e443e20182a00UL,0x1e443e5a060a00UL,0x1e423470341200UL,0x1e42340a2a3200UL,0x1e4232184e1200UL,0x1e423262503200UL,0x1e422a565c1200UL,0x1e422a2c423200UL,0x1e422c3e261200UL,0x1e422c44383200UL,0x1e424e6e141400UL,0x1e424e140a3400UL,0x1e4248066e1400UL,0x1e42487c703400UL,0x1e4250487c1400UL,0x1e425032623400UL,0x1e425620061400UL,0x1e42565a183400UL,0x1e5a7c70505600UL,0x1e5a7c0a4e7600UL,0x1e5a7a182a5600UL,0x1e5a7a62347600UL,0x1e5a6256385600UL,0x1e5a622c267600UL,0x1e5a643e425600UL,0x1e5a64445c7600UL,0x1e5a066e705000UL,0x1e5a06146e7000UL,0x1e5a00060a5000UL,0x1e5a007c147000UL,0x1e5a1848185000UL,0x1e5a1832067000UL,0x1e5a1e20625000UL,0x1e5a1e5a7c7000UL,0x1e5c14704e6800UL,0x1e5c140a504800UL,0x1e5c1218346800UL,0x1e5c12622a4800UL,0x1e5c0a56266800UL,0x1e5c0a2c384800UL,0x1e5c0c3e5c6800UL,0x1e5c0c44424800UL,0x1e5c6e6e6e6e00UL,0x1e5c6e14704e00UL,0x1e5c6806146e00UL,0x1e5c687c0a4e00UL,0x1e5c7048066e00UL,0x1e5c7032184e00UL,0x1e5c76207c6e00UL,0x1e5c765a624e00UL}; + fromVector(codes,d._code_id); + d._nbits=64; + d._tau=5; + d._type=CHILITAGS; + d._name="CHILITAGS"; + + }break; + case CUSTOM: + throw cv::Exception(-1,"CUSTOM type is only set by loading from file","Dictionary::loadPredefined","dictionary.h",-1); + break; + case ALL_DICTS:{ + d._nbits=64; + d._tau=1;// + d._type=ALL_DICTS; + d._name="ALL_DICTS"; + }break; + + default: throw cv::Exception(9001, "Invalid Dictionary type requested", "Dictionary::loadPredefined", __FILE__, __LINE__); + + }; + return d; +} +/** + * @brief Dictionary::getMarkerImage_id + * @param id + * @return + */ +//cv::Mat Dictionary::getMarkerMatrix_id(int id){ +// const int nBitsSquared = static_cast(std::sqrt(nbits())); +// const int A=bit_size*(2+nBitsSquared); + +// cv::Mat img=cv::Mat::zeros(A,A,CV_8UC1); +//} + + +cv::Mat Dictionary::getMarkerImage_id(int id,int bit_size,bool addWaterMark,bool enclosed_corners,bool externalWhiteBorder,bool centralCircle) +{ + const int nBitsSquared = static_cast(std::sqrt(nbits())); + const int A=bit_size*(2+nBitsSquared); + + cv::Mat img=cv::Mat::zeros(A,A,CV_8UC1); + + //find the code in the map + uint64_t code; + bool found=false; + for(auto c_id:_code_id) + if(c_id.second==id){ + found=true; + code=c_id.first; + break; + } + if (!found) { + cerr<<"marker "< bset=code; + + int bidx=0; + for (int y = nBitsSquared-1; y >=0 ; y--) + for (int x = nBitsSquared-1; x >=0; x--){ + if (bset[bidx++]){ + cv::Mat bit_pix=img( cv::Range((1+y)*bit_size,(2+y)*bit_size),cv::Range((1+x)*bit_size,(2+x)*bit_size)); + bit_pix.setTo(cv::Scalar::all(255)); + } + } + + if (addWaterMark){ + char idcad[30]; + sprintf(idcad, "#%d", id); + float ax = static_cast(A) / 100.f; + int linew = 1 + (img.rows / 500); + cv::putText(img, idcad, cv::Point(0, img.rows - img.rows / 40), cv::FONT_HERSHEY_COMPLEX, ax * 0.15f, cv::Scalar::all(30), linew); + + } + + + if (enclosed_corners){ + cv::Mat biggerImage( img.rows+img.rows/2,img.cols+img.cols/2,img.type()); + biggerImage.setTo(cv::Scalar::all(255)); + //set the image in the center + int sy=img.rows/4; + int sx=img.cols/4; + cv::Mat center=biggerImage(cv::Range(sy,sy+img.rows),cv::Range(sx,sx+img.cols)); + img.copyTo(center); + biggerImage(cv::Range(0,sy),cv::Range(0,sx)).setTo(cv::Scalar::all(0)); + biggerImage(cv::Range(biggerImage.rows-sy,biggerImage.rows),cv::Range(0,sx)).setTo(cv::Scalar::all(0)); + biggerImage(cv::Range(biggerImage.rows-sy,biggerImage.rows),cv::Range(biggerImage.cols- sx,biggerImage.cols)).setTo(cv::Scalar::all(0)); + biggerImage(cv::Range(0,sy),cv::Range(biggerImage.cols- sx,biggerImage.cols)).setTo(cv::Scalar::all(0)); + + img=biggerImage; + } + + if (externalWhiteBorder && !enclosed_corners){ + int borderSize=bit_size; + //Create another image in white and put the marker in the middle + cv::Mat biggerImage( img.rows+2*borderSize,img.cols+2*borderSize,img.type()); + biggerImage.setTo(cv::Scalar::all(255)); + //set the image in the center + cv::Mat center=biggerImage(cv::Range(borderSize,borderSize+img.rows),cv::Range(borderSize,borderSize+img.cols)); + img.copyTo(center); + img=biggerImage; + } + + if( centralCircle ){ + + //at the image center, draw a circle to mark the center + cv::Point2f center(img.cols/2,img.rows/2); + cv::Mat mask(img.size(),CV_8UC1); + mask.setTo(cv::Scalar::all(0)); + cv::circle(mask,center,sqrt(bit_size),cv::Scalar::all(255),-1); + //now, invert the color in the image + for(int r=0;r(r); + uchar *maskptr=mask.ptr(r); + for(int c=0;c to convert to Dictionary type", "Dictionary::getTypeFromString", __FILE__, __LINE__); + + } + +bool Dictionary::isPredefinedDictinaryString(string str) { + return getTypeFromString(str)!=CUSTOM; +} + +vector Dictionary::getDicTypes() { +return { "ARUCO","ARUCO_MIP_16h3","ARUCO_MIP_25h7","ARUCO_MIP_36h12", "ARTOOLKITPLUS","ARTOOLKITPLUSBCH","TAG16h5","TAG25h7","TAG25h9" + ,"TAG36h11","TAG36h10","CHILITAGS","ALL_DICTS"}; + +} + +MarkerMap Dictionary::createMarkerMap( cv::Size gridSize,int MarkerSize,int MarkerDistance, const std::vector &ids,bool chess_board) { + if (gridSize.height*gridSize.width!=int(ids.size()))throw cv::Exception(9001, "gridSize != ids.size()Invalid ", "Dictionary::createMarkerMap", __FILE__, __LINE__); + MarkerMap TInfo; + + TInfo.mInfoType=MarkerMap::PIX; + TInfo.setDictionary(getTypeString(_type)); + const float markerSizeFloat = static_cast(MarkerSize); + + + if (!chess_board){ + TInfo.resize(ids.size()); + for (size_t i=0;i(MarkerDistance)+markerSizeFloat; + for (int y=0;y=int(ids.size())) throw cv::Exception(999," FiducidalMarkers::createMarkerMapImage_ChessMarkerMap","INTERNAL ERROR. REWRITE THIS!!",__FILE__,__LINE__); + TInfo.push_back( Marker3DInfo(ids[CurMarkerIdx++])); + /// \todo use const auto & + for(auto p:aruco::Marker::get3DPoints(markerSizeFloat)) + TInfo.back().points.push_back(p+cv::Point3f(x*markerSizeFloat,y*markerSizeFloat,0) ); + } + } + } + } + + // cv::Point3f center(0,0,0); + // double n=0; + // for(auto &ti:TInfo)for(auto p:ti) {center+=p;n++;} + // center*=1./n; + cv::Point3f center(gridSize.width/2.0f * markerSizeFloat - markerSizeFloat/2.0f, gridSize.height/2.0f * markerSizeFloat - markerSizeFloat/2.0f, 0.f); + for(auto &ti:TInfo) for(auto &p:ti.points) p-=center; + + + return TInfo; +} + +/** + * @brief Dictionary::computeDictionaryDistance + * @param dict + * @return + */ +uint64_t Dictionary::computeDictionaryDistance(const Dictionary &dict){ + + auto rotate=[](const cv::Mat &in) { + cv::Mat out; + in.copyTo(out); + for (int i = 0; i < in.rows; i++) { + for (int j = 0; j < in.cols; j++) { + out.at< uchar >(i, j) = in.at< uchar >(in.cols - j - 1, i); + } + } + return out; + }; + auto getImage=[](uint64_t tag,int nbits){ + std::bitset<64> bs(tag); + cv::Mat im(nbits,nbits,CV_8UC1); + int bit=(nbits*nbits)-1; + for(int i=0;i(i,j)=bs[bit--]; + return im; + }; + + auto getCode=[](const cv::Mat &in){ + assert(in.type()==CV_8UC1); + std::bitset<64> bs; + size_t bit= in.total()-1; + for(int i=0;i(i,j); + return bs.to_ullong(); + }; + + + //convert each element into its 4 rorations first + std::vector all_rotations; + + std::vector ids; + //for chilitag + auto code_id2=dict._code_id; + for(auto tag_id:code_id2){ + all_rotations.push_back(tag_id.first); + auto m=getImage(tag_id.first, static_cast(sqrt(dict._nbits))); + for(int i=0;i<3;i++) + { + m=rotate(m); + all_rotations.push_back(getCode(m)); + ids.push_back( tag_id.second); + } + assert( getCode(rotate(m))==tag_id.first ); + } + + //now, compute minimum distance + std::map >errors; + uint64_t mind=std::numeric_limits::max(); + for(size_t i=0;i(all_rotations[i]^all_rotations[j]).count(); + if(d==0){ + if ( errors[ids[i]].count(ids[j])==0 ){ + cerr<<" Dictionary::computeDictionaryDistance ERROR IN YOUR DICT!!!!!"< + +#include +#include +#include +#include +#include + +namespace aruco +{ + class MarkerMap; + /**Represents a set of valid marker ids with a maximum size of 8x8 = 64 bits. + * In our approach, markers are seen as a pair code-id. The code is the internal binary code printed on the marker. + * Maximum size is 8x8 bits. + * The id is a smaller number you can use to identify it. You will use only the id + * + * See enum DICT_TYPES for the set of dicitionaries availables + */ + + class ARUCO_EXPORT Dictionary + { + public: + // loads from a set of predefined ones + enum DICT_TYPES: + uint64_t{ + ALL_DICTS=0, + ARUCO_MIP_36h12=1, //*** recommended + ARUCO=2, // original aruco dictionary. By default + ARUCO_MIP_25h7=3, + ARUCO_MIP_16h3=4, + ARTAG=5, // + ARTOOLKITPLUS=6, + ARTOOLKITPLUSBCH=7, // + TAG16h5=8, + TAG25h7=9, + TAG25h9=10, + TAG36h11=11, + TAG36h10=12, // april tags + CHILITAGS=13, // chili tags dictionary . NOT RECOMMENDED. It has distance 0. Markers 806 and 682 should not be + // used!!! + CUSTOM=14 , // for used defined dictionaries (using loadFromfile). + }; + // indicates if a code is in the dictionary + bool is(uint64_t code) const + { + return _code_id.find(code) != _code_id.end(); + } + + DICT_TYPES getType() const + { + return _type; + } + + // reutnr the numerber of ids + uint64_t size() const + { + return _code_id.size(); + } + // returns the total number of bits of the binary code + uint32_t nbits() const + { + return _nbits; + } + // returns the dictionary distance + uint32_t tau() const + { + return _tau; + } + // returns the name + std::string getName() const + { + return _name; + } + // return the set of ids + const std::map& getMapCode() const + { + return _code_id; + } + + // returns the id of a given code. + int operator[](uint64_t code) + { + return _code_id[code]; + } // returns the id of a given code. + int at(uint64_t code) + { + return _code_id[code]; + } + + // returns the image of the marker indicated by its id. It the id is not, returns empty matrix + //@param id of the marker image to return + //@param bit_size of the image will be AxA, A=(nbits()+2)*bit_size + //@param enclosed_corners if true, extra rectagles are added touching the marker corners. it can be used to + //allow subpixel refinement + cv::Mat getMarkerImage_id(int id, int bit_size, bool addWaterMark = true, bool enclosed_corners = false,bool printExternalWhiteBorder=false,bool centralCircle=false); + + // cv::Mat getMarkerMatrix_id(int id); + + // used for boards + MarkerMap createMarkerMap(cv::Size gridSize, int MarkerSize, int MarkerDistance, const std::vector& Ids, + bool chess_board = false); + + static Dictionary loadPredefined(DICT_TYPES type); + static Dictionary loadPredefined(std::string type); + + /** loads a dictionary defined in a file + * Please note that the parsing is very basic and you must be very strict. + + * Here is an example of a 3x3 dictionary of 3 markers + * 010 111 000 + * 001 101 001 + * 001 010 100 + * + * + * File: myown.dict + *------------------------------------------- + * name MYOWN + * nbits 9 + * 010001001 + * 111101010 + * 000001100 + */ + static Dictionary loadFromFile(std::string path); + + /**Loads a dictioanary using the string passed. If it is a string of the predefined dictionaries, then returns + * it. + * Otherwise, tries to load from a file + */ + static Dictionary load(std::string info); + + // //io functions + // void saveToFile(std::string file); + // void readFromFile(std::string file); + // void saveToStream(std::ostream & str); + // void readFromStream(std::istream &str); + + // returns the dictionary distance + static uint64_t computeDictionaryDistance(const Dictionary& d); + + // given a string,returns the type + static DICT_TYPES getTypeFromString(std::string str); + static std::string getTypeString(DICT_TYPES t); + static bool isPredefinedDictinaryString(std::string str); + static std::vector getDicTypes(); + + private: + //obfuscate start + + void insert(uint64_t code, int id) + { + _code_id.insert(std::make_pair(code, id)); + } + static void fromVector(const std::vector& codes, std::map& code_id_map); + + std::map _code_id; // marker have and code (internal binary code), + // which correspond to an id. + + uint32_t _nbits; // total number of bits . So, there are sqrt(nbits) in each axis + uint32_t _tau; // minimum distance between elements + + DICT_TYPES _type; + std::string _name; + //obfuscate end + + }; +} + +#endif diff --git a/thirdparty/aruco-3.1.12/src/dictionary_based.cpp b/thirdparty/aruco-3.1.12/src/dictionary_based.cpp new file mode 100644 index 0000000..562a3ad --- /dev/null +++ b/thirdparty/aruco-3.1.12/src/dictionary_based.cpp @@ -0,0 +1,290 @@ +/** +Copyright 2017 Rafael Muñoz Salinas. All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are +permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this list of + conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright notice, this list + of conditions and the following disclaimer in the documentation and/or other materials + provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY Rafael Muñoz Salinas ''AS IS'' AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL Rafael Muñoz Salinas OR +CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +The views and conclusions contained in the software and documentation are those of the +authors and should not be interpreted as representing official policies, either expressed +or implied, of Rafael Muñoz Salinas. +*/ + +#include "dictionary_based.h" + +#include +#include +#include +#include "aruco_cvversioning.h" +namespace aruco +{ + void DictionaryBased::setParams(const Dictionary& dic, float max_correction_rate) + { + + _nsubdivisions=sqrt(dic.nbits())+2; + nbits_dict.clear(); + dicttypename=dic.getName(); + if (dic.getType()==Dictionary::ALL_DICTS){ + for(auto &dt:Dictionary::getDicTypes()) + if (dt!="ALL_DICTS" && dt!="CUSTOM") + vdic.push_back( Dictionary ::loadPredefined(dt)); + } + else vdic.push_back( dic); + + // + for(auto &dic:vdic) + nbits_dict[dic.nbits()].push_back(&dic); + + _max_correction_rate = std::max(0.f, std::min(1.0f, max_correction_rate)); + } + + std::string DictionaryBased::getName() const + { + return dicttypename; + } + + void DictionaryBased::toMat(uint64_t code, int nbits_sq, cv::Mat& out) + { + out.create(nbits_sq, nbits_sq, CV_8UC1); + std::bitset<64> bs(code); + int curbit = 0; + for (int r = 0; r < nbits_sq; r++) + { + uchar* pr = out.ptr(r); + for (int c = 0; c < nbits_sq; c++) + pr[c] = bs[curbit]; + } + } + + int hamm_distance(uint64_t a, uint64_t b) + { + return static_cast(std::bitset<64>(a ^ b).count()); + } + + bool DictionaryBased::detect(const cv::Mat& in, int& marker_id, int& nRotations, std::string &additionalInfo) + { + assert(in.rows == in.cols); + + cv::Mat grey; + if (in.type() == CV_8UC1) grey = in; + else cv::cvtColor(in, grey, CV_BGR2GRAY); + // threshold image + cv::threshold(grey, grey, 125, 255, cv::THRESH_BINARY | cv::THRESH_OTSU); + + + std::map > nbits_ids; + //for each + for(auto &bitsids:nbits_dict){ + int nbits=bitsids.first; + std::vector ids; + getInnerCode(grey,nbits,ids); + if (ids.size()>0){ + if (ids[0]!=0){ + nbits_ids[nbits]=ids; + } + } + } + //how many are there? + + if ( nbits_ids.size()==0)return false; + //check if any dictionary recognizes it + for(auto nbits:nbits_ids){ + const auto &ids=nbits.second; + //check in every dictionary + for(auto &dic:nbits_dict[nbits.first]){ + //try a perfecf match + for(int rot=0;rot<4;rot++) + if ( dic->is( ids[rot])){ + // std::cout<<"MATCH:"<getName()<<" "<at (ids[rot]); + additionalInfo=dic->getName(); + return true; + } + + //try with some error/correction if allowed + if (_max_correction_rate > 0) + { // find distance to map elements + int _maxCorrectionAllowed = static_cast( static_cast(dic->tau()) * _max_correction_rate); + for (auto ci : dic->getMapCode()) + { + for (int i = 0; i < 4; i++) + { + if (hamm_distance(ci.first, ids[i]) < _maxCorrectionAllowed) + { + marker_id = ci.second; + nRotations = i; + additionalInfo=dic->getName(); + return true; + } + } + } + } + + } + + + } + + + return false; + } + + + bool DictionaryBased::getInnerCode(const cv::Mat& thres_img, int total_nbits, std::vector& ids) + { + int bits_noborder = static_cast(std::sqrt(total_nbits)); + int bits_withborder = bits_noborder + 2; + // Markers are divided in (bits_a+2)x(bits_a+2) regions, of which the inner bits_axbits_a belongs to marker + // info + // the external border shoould be entirely black + cv::Mat nonZeros(bits_withborder,bits_withborder,CV_32SC1); + cv::Mat nValues(bits_withborder,bits_withborder,CV_32SC1); + nonZeros.setTo(cv::Scalar::all(0)); + nValues.setTo(cv::Scalar::all(0)); + for (int y = 0; y < thres_img.rows; y++) + { + const uchar *ptr=thres_img.ptr(y); + int my= float(bits_withborder)*float(y)/ float(thres_img.rows); + for (int x = 0; x < thres_img.cols; x++) + { + int mx= float(bits_withborder)*float(x)/ float(thres_img.cols); + if( ptr[x]>125) + nonZeros.at(my,mx)++; + nValues.at(my,mx)++; + } + } + cv::Mat binaryCode(bits_withborder,bits_withborder,CV_8UC1); + //now, make the theshold + for(int y=0;y(y,x)>nValues.at(y,x)/2) + binaryCode.at(y,x)=1; + else + binaryCode.at(y,x)=0; + } + + //check if border is completely black + for (int y = 0; y < bits_withborder; y++) + { + int inc = bits_withborder - 1; + if (y == 0 || y == bits_withborder - 1) + inc = 1; // for first and last row, check the whole border + for (int x = 0; x < bits_withborder; x += inc) + if (binaryCode.at(y,x)!=0 ) return false; + } + + //take the inner code + + cv::Mat _bits(bits_noborder,bits_noborder,CV_8UC1); + for(int y=0;y(y,x)=binaryCode.at(y+1,x+1); + + // now, get the 64bits ids + + int nr = 0; + do + { + ids.push_back(touulong(_bits)); + _bits = rotate(_bits); + nr++; + } while (nr < 4); + return true; + } + + +// bool DictionaryBased::getInnerCode(const cv::Mat& thres_img, int total_nbits, std::vector& ids) +// { +// auto toInt=[](float v){return int(v+0.5);}; +// int bits_a = static_cast(std::sqrt(total_nbits)); +// int bits_a2 = bits_a + 2; +// // Markers are divided in (bits_a+2)x(bits_a+2) regions, of which the inner bits_axbits_a belongs to marker +// // info +// // the external border shoould be entirely black + +// float swidth = float(thres_img.rows) / float(bits_a2); +// for (int y = 0; y < bits_a2; y++) +// { +// int inc = bits_a2 - 1; +// if (y == 0 || y == bits_a2 - 1) +// inc = 1; // for first and last row, check the whole border +// for (int x = 0; x < bits_a2; x += inc) +// { +// cv::Mat square = thres_img(cv::Rect( toInt(float(x) * swidth ), toInt(float(y) * swidth), swidth, swidth)); +// if (cv::countNonZero(square) > (swidth * swidth) / 2) +// return false; // can not be a marker because the border element is not black! +// } +// } + +// // now, +// // get information(for each inner square, determine if it is black or white) + +// // now, +// cv::Mat _bits = cv::Mat::zeros(bits_a, bits_a, CV_8UC1); +// // get information(for each inner square, determine if it is black or white) + +// for (int y = 0; y < bits_a; y++) +// { +// for (int x = 0; x < bits_a; x++) +// { +// int Xstart = toInt(float(x + 1) * swidth); +// int Ystart = toInt(float(y + 1) * swidth); +// cv::Mat square = thres_img(cv::Rect(Xstart, Ystart, swidth, swidth)); +// int nZ = cv::countNonZero(square); +// if (nZ > (swidth * swidth) / 2) +// _bits.at(y, x) = 1; +// } +// } +// // now, get the 64bits ids + +// int nr = 0; +// do +// { +// ids.push_back(touulong(_bits)); +// _bits = rotate(_bits); +// nr++; +// } while (nr < 4); +// return true; +// } + + // convert matrix of (0,1)s in a 64 bit value + uint64_t DictionaryBased::touulong(const cv::Mat& code) + { + std::bitset<64> bits; + int bidx = 0; + for (int y = code.rows - 1; y >= 0; y--) + for (int x = code.cols - 1; x >= 0; x--) + bits[bidx++] = code.at(y, x); + return bits.to_ullong(); + } + cv::Mat DictionaryBased::rotate(const cv::Mat& in) + { + cv::Mat out; + in.copyTo(out); + for (int i = 0; i < in.rows; i++) + { + for (int j = 0; j < in.cols; j++) + { + out.at(i, j) = in.at(in.cols - j - 1, i); + } + } + return out; + } +} diff --git a/thirdparty/aruco-3.1.12/src/dictionary_based.h b/thirdparty/aruco-3.1.12/src/dictionary_based.h new file mode 100644 index 0000000..ec8aff3 --- /dev/null +++ b/thirdparty/aruco-3.1.12/src/dictionary_based.h @@ -0,0 +1,73 @@ +/** +Copyright 2017 Rafael Muñoz Salinas. All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are +permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this list of + conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright notice, this list + of conditions and the following disclaimer in the documentation and/or other materials + provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY Rafael Muñoz Salinas ''AS IS'' AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL Rafael Muñoz Salinas OR +CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +The views and conclusions contained in the software and documentation are those of the +authors and should not be interpreted as representing official policies, either expressed +or implied, of Rafael Muñoz Salinas. +*/ + +#ifndef ArucoDictionaryBasedMarkerDetector_H +#define ArucoDictionaryBasedMarkerDetector_H + +#include "dictionary.h" +#include "markerlabeler.h" + +#include +namespace aruco +{ + /**Labeler using a dictionary + */ + class DictionaryBased : public MarkerLabeler + { + public: + virtual ~DictionaryBased() + { + } + // first, dictionary, second the maximum correction rate [0,1]. If 0,no correction, if 1, maximum allowed + // correction + void setParams(const Dictionary& dic, float max_correction_rate); + + // main virtual class to o detection + virtual bool detect(const cv::Mat& in, int& marker_id, int& nRotations,std::string &additionalInfo); + // returns the dictionary name + virtual std::string getName() const; + + virtual int getNSubdivisions()const{return _nsubdivisions;}// + + std::vector getDictionaries()const{return vdic;} + private: + //obfuscate start + bool getInnerCode(const cv::Mat& thres_img, int total_nbits, std::vector& ids); + cv::Mat rotate(const cv::Mat& in); + uint64_t touulong(const cv::Mat& code); + std::vector vdic; + void toMat(uint64_t code, int nbits_sq, cv::Mat& out); + int _nsubdivisions=0; + float _max_correction_rate; + std::string dicttypename; + std::map> nbits_dict; + //obfuscate end + + }; +} +#endif diff --git a/thirdparty/aruco-3.1.12/src/fractaldetector.cpp b/thirdparty/aruco-3.1.12/src/fractaldetector.cpp new file mode 100644 index 0000000..d751512 --- /dev/null +++ b/thirdparty/aruco-3.1.12/src/fractaldetector.cpp @@ -0,0 +1,156 @@ +#include "fractaldetector.h" +#include "opencv2/calib3d/calib3d.hpp" +#include "cvdrawingutils.h" +#include +#include "aruco_cvversioning.h" + +namespace aruco +{ + FractalDetector::FractalDetector() + { + _markerDetector = new MarkerDetector(); + }; + + void FractalDetector::setConfiguration(int params) + { + _fractalLabeler = FractalMarkerLabeler::create((FractalMarkerSet::CONF_TYPES)params); + _params.configuration_type=FractalMarkerSet::getTypeString((FractalMarkerSet::CONF_TYPES)params); + _markerDetector->setMarkerLabeler(_fractalLabeler); + } + + void FractalDetector::setConfiguration(std::string params) + { + _params.configuration_type=params; + _fractalLabeler = FractalMarkerLabeler::create(params); + _markerDetector->setMarkerLabeler(_fractalLabeler); + } + + void FractalDetector::drawMarkers(cv::Mat &img) + { + float size= std::max(1.,float(img.cols)/ 1280.); + for(auto m:Markers) + m.draw(img, cv::Scalar(0, 0, 255), size, false); + } + + void FractalDetector::draw2d(cv::Mat &img){ + if(Markers.size() > 0) + { + std::map id_fmarker = _fractalLabeler->_fractalMarkerSet.fractalMarkerCollection; + + std::vector inners; + std::map> id_innerCorners = _fractalLabeler->_fractalMarkerSet.getInnerCorners(); + for(auto id_innerC:id_innerCorners) + { + std::vector inner3d; + for(auto pt:id_innerC.second) + inners.push_back(cv::Point2f(pt.x,pt.y)); + } + + std::vector points3d; + std::vector points2d; + for(auto m:Markers) + { + for(auto p:id_fmarker[m.id].points) + points3d.push_back(cv::Point2f(p.x, p.y)); + + for(auto p:m) + points2d.push_back(p); + } + + cv::Mat H = cv::findHomography(points3d, points2d); + std::vector dstPnt; + cv::perspectiveTransform(inners, dstPnt, H); + + float size= std::max(1.,float(img.cols)/ 1280.); + for(auto p:dstPnt) + cv::circle(img, p, size, cv::Scalar(0,0,255), CV_FILLED); + } + } + + void FractalDetector::draw3d(cv::Mat &img, bool cube, bool axis){ + if(Tracker.isPoseValid()) + { + cv::Mat rot; + cv::Rodrigues(Tracker.getRvec(), rot); + + std::vector innerPoints3d; + for(auto pt:Tracker.getInner3d()) + { + cv::Mat_ src(3,1,rot.type()); + src(0,0)=pt.x;src(1,0)=pt.y;src(2,0)=pt.z; + + cv::Mat cam_image_point = rot * src + Tracker.getTvec(); + cam_image_point = cam_image_point/cv::norm(cam_image_point); + + if(cam_image_point.at(2,0)>0.85) + innerPoints3d.push_back(pt); + } + //Draw inner points + if(innerPoints3d.size() > 0) + { + std::vector innerPoints; + projectPoints(innerPoints3d, Tracker.getRvec(), Tracker.getTvec(), _cam_params.CameraMatrix, _cam_params.Distorsion, innerPoints); + for(auto p:innerPoints) + circle(img, p, 3 , cv::Scalar(0,0,255),CV_FILLED); + } + //Draw cube + if(cube) + { + std::map id_fmarker = Tracker.getFractal().fractalMarkerCollection; + for(auto m:Markers) + draw3dCube(img, id_fmarker[m.id], _cam_params, 2); + } + + //Draw axes + if(axis) + CvDrawingUtils::draw3dAxis(img, _cam_params, getRvec(), getTvec(), Tracker.getFractal().getFractalSize()/2); + } + } + + void FractalDetector::draw3dCube(cv::Mat& Image, FractalMarker m, const CameraParameters& CP, int lineSize) + { + cv::Mat objectPoints(8, 3, CV_32FC1); + + float msize= m.getMarkerSize(); + float halfSize = msize/2; + + objectPoints.at(0, 0) = -halfSize; + objectPoints.at(0, 1) = -halfSize; + objectPoints.at(0, 2) = 0; + objectPoints.at(1, 0) = halfSize; + objectPoints.at(1, 1) = -halfSize; + objectPoints.at(1, 2) = 0; + objectPoints.at(2, 0) = halfSize; + objectPoints.at(2, 1) = halfSize; + objectPoints.at(2, 2) = 0; + objectPoints.at(3, 0) = -halfSize; + objectPoints.at(3, 1) = halfSize; + objectPoints.at(3, 2) = 0; + + objectPoints.at(4, 0) = -halfSize; + objectPoints.at(4, 1) = -halfSize; + objectPoints.at(4, 2) = msize; + objectPoints.at(5, 0) = halfSize; + objectPoints.at(5, 1) = -halfSize; + objectPoints.at(5, 2) = msize; + objectPoints.at(6, 0) = halfSize; + objectPoints.at(6, 1) = halfSize; + objectPoints.at(6, 2) = msize; + objectPoints.at(7, 0) = -halfSize; + objectPoints.at(7, 1) = halfSize; + objectPoints.at(7, 2) = msize; + + + std::vector imagePoints; + projectPoints(objectPoints, getRvec(), getTvec(), CP.CameraMatrix, CP.Distorsion, imagePoints); + + for (int i = 0; i < 4; i++) + cv::line(Image, imagePoints[i], imagePoints[(i + 1) % 4], cv::Scalar(0, 0, 255, 255), lineSize); + + for (int i = 0; i < 4; i++) + cv::line(Image, imagePoints[i + 4], imagePoints[4 + (i + 1) % 4], cv::Scalar(0, 0, 255, 255), lineSize); + + for (int i = 0; i < 4; i++) + cv::line(Image, imagePoints[i], imagePoints[i + 4], cv::Scalar(0, 0, 255, 255), lineSize); + } +}; diff --git a/thirdparty/aruco-3.1.12/src/fractaldetector.h b/thirdparty/aruco-3.1.12/src/fractaldetector.h new file mode 100644 index 0000000..f9db352 --- /dev/null +++ b/thirdparty/aruco-3.1.12/src/fractaldetector.h @@ -0,0 +1,112 @@ +#ifndef _ARUCO_FractalDetector_H +#define _ARUCO_FractalDetector_H + +#include "markerdetector.h" +#include "fractallabelers/fractallabeler.h" +#include "aruco_export.h" +namespace aruco { + class ARUCO_EXPORT FractalDetector + { + struct ARUCO_EXPORT Params + { + std::string configuration_type; + }; + + public: + FractalDetector(); + + /** + * @brief setConfiguration + * @param configuration fractal id + */ + void setConfiguration(int configuration); + + /** + * @brief setConfiguration + * @param configuration fractal file + */ + void setConfiguration(std::string configuration); + + /** + * @brief setParams + * @param cam_params camera parameters + * @param markerSize in meters + */ + void setParams(const CameraParameters& cam_params, float markerSize) + { + _cam_params = cam_params; + + Tracker.setParams(cam_params, getConfiguration(), markerSize); + } + + // return fractalmarkerset + FractalMarkerSet getConfiguration() + { + return _fractalLabeler->_fractalMarkerSet; + } + + // return true if any marker is detected, false otherwise + bool detect(const cv::Mat& input) + { + Markers = _markerDetector->detect(input); + + if(Markers.size() > 0) return true; + else return false; + } + + // return true if the pose is estimated, false otherwise + bool poseEstimation() + { + if (_cam_params.isValid()) + { + return Tracker.fractalInnerPose(_markerDetector, Markers); + } + else + return false; + } + + // return the rotation vector. Returns an empty matrix if last call to estimatePose returned false + cv::Mat getRvec(){ + return Tracker.getRvec(); + } + // return the translation vector. Returns an empty matrix if last call to estimatePose returned false + cv::Mat getTvec(){ + return Tracker.getTvec(); + } + + void drawImage(cv::Mat &img,cv::Mat &img2); + + // draw borders of markers + void drawMarkers(cv::Mat &img); + + // draw inner corners of markers + void draw2d(cv::Mat &img); + + // draw pose estimation axes + void draw3d(cv::Mat &img, bool cube=true, bool axis=true); + + // draw marker as cube + void draw3dCube(cv::Mat& Image, FractalMarker m, const CameraParameters& CP, int lineSize); + + // return detected markers + std::vector getMarkers() + { + return Markers; + } + + private: + // return image pyramid + std::vector getImagePyramid() + { + return _markerDetector->getImagePyramid(); + } + + std::vector Markers; //detected markers + FractalPoseTracker Tracker; + Params _params; + CameraParameters _cam_params; //Camera parameters + cv::Ptr _fractalLabeler; + cv::Ptr _markerDetector; + }; +} +#endif diff --git a/thirdparty/aruco-3.1.12/src/fractallabelers/fractallabeler.cpp b/thirdparty/aruco-3.1.12/src/fractallabelers/fractallabeler.cpp new file mode 100644 index 0000000..4fc8278 --- /dev/null +++ b/thirdparty/aruco-3.1.12/src/fractallabelers/fractallabeler.cpp @@ -0,0 +1,138 @@ +#include "fractallabeler.h" + +#include "../aruco_cvversioning.h" +namespace aruco +{ + + void FractalMarkerLabeler::setConfiguration(const FractalMarkerSet& fractMarkerSet) { + _fractalMarkerSet = fractMarkerSet; + } + + bool FractalMarkerLabeler::detect(const cv::Mat& in, int& marker_id, int& nRotations, std::string &additionalInfo) + { + assert(in.rows == in.cols); + cv::Mat grey; + if (in.type() == CV_8UC1) + grey = in; + else + cv::cvtColor(in, grey, CV_BGR2GRAY); + // threshold image + cv::threshold(grey, grey, 125, 255, cv::THRESH_BINARY | cv::THRESH_OTSU); + + std::map > nbits_innerCodes; + + for(auto bitsids:_fractalMarkerSet.nbits_fractalMarkerIDs){ + + int nbits = bitsids.first; + std::vector innerCodes; + getInnerCode(grey, nbits, innerCodes); + + if (innerCodes.size()>0){ + if (sum(innerCodes[0])[0]!=0){ + nbits_innerCodes[nbits]=innerCodes; + } + } + } + + if ( nbits_innerCodes.size()==0)return false; + + //check if any dictionary recognizes it + for(auto bit_innerCodes:nbits_innerCodes){ + + uint32_t nb = bit_innerCodes.first; + auto innerCodes = bit_innerCodes.second; + + for (int i = 0; i < 4; i++) + { + if (_fractalMarkerSet.isFractalMarker(innerCodes[i], nb, marker_id)) + { + // is in the set? + nRotations = i; // how many rotations are and its id + return true; // bye bye + } + } + } + return false; + } + + + std::string FractalMarkerLabeler::getName() const + { + return "fractal";; + } + + bool FractalMarkerLabeler::getInnerCode(const cv::Mat& thres_img, int total_nbits, std::vector& innerCodes) + { + int bits_noborder = static_cast(std::sqrt(total_nbits)); + int bits_withborder = bits_noborder + 2; + // Markers are divided in (bits_a+2)x(bits_a+2) regions, of which the inner bits_axbits_a belongs to marker + // info + // the external border shoould be entirely black + cv::Mat nonZeros(bits_withborder,bits_withborder,CV_32SC1); + cv::Mat nValues(bits_withborder,bits_withborder,CV_32SC1); + nonZeros.setTo(cv::Scalar::all(0)); + nValues.setTo(cv::Scalar::all(0)); + for (int y = 0; y < thres_img.rows; y++) + { + const uchar *ptr=thres_img.ptr(y); + int my= float(bits_withborder)*float(y)/ float(thres_img.rows); + for (int x = 0; x < thres_img.cols; x++) + { + int mx= float(bits_withborder)*float(x)/ float(thres_img.cols); + if( ptr[x]>125) + nonZeros.at(my,mx)++; + nValues.at(my,mx)++; + } + } + cv::Mat binaryCode(bits_withborder,bits_withborder,CV_8UC1); + //now, make the theshold + for(int y=0;y(y,x)>nValues.at(y,x)/2) + binaryCode.at(y,x)=1; + else + binaryCode.at(y,x)=0; + } + + //check if border is completely black + for (int y = 0; y < bits_withborder; y++) + { + int inc = bits_withborder - 1; + if (y == 0 || y == bits_withborder - 1) + inc = 1; // for first and last row, check the whole border + for (int x = 0; x < bits_withborder; x += inc) + if (binaryCode.at(y,x)!=0 ) return false; + } + + //take the inner code + cv::Mat _bits(bits_noborder,bits_noborder,CV_8UC1); + for(int y=0;y(y,x)=binaryCode.at(y+1,x+1); + + // now, get the 64bits ids + int nr = 0; + do + { + innerCodes.push_back(_bits); + _bits = rotate(_bits); + nr++; + } while (nr < 4); + return true; + } + + cv::Mat FractalMarkerLabeler::rotate(const cv::Mat& in) + { + cv::Mat out; + in.copyTo(out); + for (int i = 0; i < in.rows; i++) + { + for (int j = 0; j < in.cols; j++) + { + out.at(i, j) = in.at(in.cols - j - 1, i); + } + } + return out; + } +} + diff --git a/thirdparty/aruco-3.1.12/src/fractallabelers/fractallabeler.h b/thirdparty/aruco-3.1.12/src/fractallabelers/fractallabeler.h new file mode 100644 index 0000000..4920736 --- /dev/null +++ b/thirdparty/aruco-3.1.12/src/fractallabelers/fractallabeler.h @@ -0,0 +1,50 @@ +#include "../markerlabeler.h" +#include "fractalposetracker.h" + +namespace aruco +{ + class FractalMarkerLabeler : public MarkerLabeler + { + public: + static cv::Ptr create(std::string params) + { + FractalMarkerSet fractalMarkerSet = FractalMarkerSet::load(params); + FractalMarkerLabeler* fml=new FractalMarkerLabeler(); + fml->setConfiguration(fractalMarkerSet); + return fml; + } + + static cv::Ptr create(FractalMarkerSet::CONF_TYPES conf) + { + FractalMarkerSet fractalMarkerSet = FractalMarkerSet::loadPredefined(conf); + FractalMarkerLabeler* fml=new FractalMarkerLabeler(); + fml->setConfiguration(fractalMarkerSet); + return fml; + } + + void setConfiguration(const FractalMarkerSet& fractMarkerSet); + + static bool isFractalDictionaryFile(const std::string &path); + + virtual ~FractalMarkerLabeler() + { + } + + bool load(const std::string &path); + + // returns the configuration name + std::string getName() const; + + // main virtual class to o detection + bool detect(const cv::Mat& in, int& marker_id, int& nRotations,std::string &additionalInfo); + + int getNSubdivisions()const{return (sqrt(_fractalMarkerSet.nBits())+2);} + + FractalMarkerSet _fractalMarkerSet; + + private: + bool getInnerCode(const cv::Mat& thres_img, int total_nbits, std::vector& ids); + cv::Mat rotate(const cv::Mat& in); + }; +} + diff --git a/thirdparty/aruco-3.1.12/src/fractallabelers/fractalmarker.cpp b/thirdparty/aruco-3.1.12/src/fractallabelers/fractalmarker.cpp new file mode 100644 index 0000000..0c79cca --- /dev/null +++ b/thirdparty/aruco-3.1.12/src/fractallabelers/fractalmarker.cpp @@ -0,0 +1,76 @@ +#include "fractalmarker.h" + +#include + + +namespace aruco +{ + FractalMarker::FractalMarker() + { + + } + + FractalMarker::FractalMarker(int id, cv::Mat m, std::vector corners, std::vector id_submarkers) + { + this->id = id; + this->_M = m; + for(auto p:corners) + push_back(p); + + _submarkers = id_submarkers; + _mask = cv::Mat::ones(m.size(), CV_8UC1); + } + + void FractalMarker::addSubFractalMarker(FractalMarker submarker) + { + float bitSize = (at(1).x - at(0).x) / int(mat().cols+2); + float nsubBits = (submarker.at(1).x - submarker.at(0).x) / bitSize; + + int x_min = int(round(submarker[0].x / bitSize + mat().cols/2)); + int x_max = x_min + nsubBits; + int y_min = int(round(-submarker[0].y / bitSize + mat().cols/2)); + int y_max = y_min + nsubBits; + + for(int y=y_min; y(y,x)=0; + } + } + } + + std::vector FractalMarker::findInnerCorners() + { + int nBitsSquared = int(sqrt(mat().total())); + float bitSize = getMarkerSize() / (nBitsSquared+2); + + //Set submarker pixels (=1) and add border + cv::Mat marker; + mat().copyTo(marker); + marker += -1 * (mask()-1); + cv::Mat markerBorder; + copyMakeBorder(marker, markerBorder, 1,1,1,1,cv::BORDER_CONSTANT,0); + + //Get inner corners + std::vector innerCorners; + for(int y=0; y< markerBorder.rows-1; y++) + { + for(int x=0; x< markerBorder.cols-1; x++) + { + + if( ((markerBorder.at(y, x) == markerBorder.at(y+1, x+1)) && + (markerBorder.at(y, x) != markerBorder.at(y, x+1) || + markerBorder.at(y, x) != markerBorder.at(y+1, x))) + + || + + ((markerBorder.at(y, x+1) == markerBorder.at(y+1, x)) && + (markerBorder.at(y, x+1) != markerBorder.at(y, x) || + markerBorder.at(y, x+1) != markerBorder.at(y+1, x+1))) + ) + innerCorners.push_back(cv::Point3f(x-nBitsSquared/2.f, -(y-nBitsSquared/2.f), 0) * bitSize); + } + } + return innerCorners; + } +} + diff --git a/thirdparty/aruco-3.1.12/src/fractallabelers/fractalmarker.h b/thirdparty/aruco-3.1.12/src/fractallabelers/fractalmarker.h new file mode 100644 index 0000000..f2f9808 --- /dev/null +++ b/thirdparty/aruco-3.1.12/src/fractallabelers/fractalmarker.h @@ -0,0 +1,64 @@ +#ifndef FRACTALMARKER_H +#define FRACTALMARKER_H + +#include +#include +#include +#include "../markermap.h" + +namespace aruco +{ + class FractalMarker : public aruco::Marker3DInfo + { + public: + FractalMarker(); + FractalMarker(int id, cv::Mat m, std::vector corners, std::vector id_submarkers); + + //Add new submarker + void addSubFractalMarker(FractalMarker submarker); + + //Find inner corners + std::vector findInnerCorners(); + + //Marker MAT + const cv::Mat mat() const + { + return _M; + } + + //Marker mask (mask applied to submarkers) + const cv::Mat mask() const + { + return _mask; + } + + //Total number of bits + int nBits() + { + return _M.total(); + } + + //Submarkers ids + std::vector subMarkers() + { + return _submarkers; + } + + //Get inner corners + std::vector getInnerCorners() + { + if(innerCorners.empty()) + innerCorners = findInnerCorners(); + + return innerCorners; + } + + private: + cv::Mat _M; + cv::Mat _mask; + std::vector _submarkers; //id subfractalmarkers + std::vector innerCorners; + }; +} + +#endif // FRACTALMARKER_H diff --git a/thirdparty/aruco-3.1.12/src/fractallabelers/fractalmarkerset.cpp b/thirdparty/aruco-3.1.12/src/fractallabelers/fractalmarkerset.cpp new file mode 100644 index 0000000..ea563f9 --- /dev/null +++ b/thirdparty/aruco-3.1.12/src/fractallabelers/fractalmarkerset.cpp @@ -0,0 +1,828 @@ +#include "fractalmarkerset.h" +#include +#include + +namespace aruco +{ + +FractalMarkerSet FractalMarkerSet::load(std::string info){ + if (isPredefinedConfigurationString(info)) + return loadPredefined(info); + else return readFromFile(info); +} + +FractalMarkerSet FractalMarkerSet::loadPredefined(std::string type){ + return loadPredefined(getTypeFromString(type)); +} + +FractalMarkerSet FractalMarkerSet::loadPredefined(CONF_TYPES type){ + FractalMarkerSet fms; + + switch(type){ + case FRACTAL_2L_6:{ + unsigned char _conf_2L_6[] = { + 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xbf, + 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, + 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, + 0x00, 0x00, 0x80, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xbf, + 0x00, 0x00, 0x80, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, + 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x01, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x24, 0x00, 0x00, 0x00, 0xab, 0xaa, 0xaa, 0xbe, 0xab, 0xaa, 0xaa, 0x3e, + 0x00, 0x00, 0x00, 0x00, 0xab, 0xaa, 0xaa, 0x3e, 0xab, 0xaa, 0xaa, 0x3e, + 0x00, 0x00, 0x00, 0x00, 0xab, 0xaa, 0xaa, 0x3e, 0xab, 0xaa, 0xaa, 0xbe, + 0x00, 0x00, 0x00, 0x00, 0xab, 0xaa, 0xaa, 0xbe, 0xab, 0xaa, 0xaa, 0xbe, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, + 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, + 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, + 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00 + }; + unsigned int _conf_2L_6_len = 272; + + std::stringstream stream; + stream.write((char*) _conf_2L_6, sizeof(unsigned char)*_conf_2L_6_len); + _fromStream(fms, stream); + }break; + case FRACTAL_3L_6:{ + unsigned char _conf_3L_6[] = { + 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xbf, + 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, + 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, + 0x00, 0x00, 0x80, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xbf, + 0x00, 0x00, 0x80, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, + 0xb7, 0x6d, 0xdb, 0xbe, 0xb7, 0x6d, 0xdb, 0x3e, 0x00, 0x00, 0x00, 0x00, + 0xb7, 0x6d, 0xdb, 0x3e, 0xb7, 0x6d, 0xdb, 0x3e, 0x00, 0x00, 0x00, 0x00, + 0xb7, 0x6d, 0xdb, 0x3e, 0xb7, 0x6d, 0xdb, 0xbe, 0x00, 0x00, 0x00, 0x00, + 0xb7, 0x6d, 0xdb, 0xbe, 0xb7, 0x6d, 0xdb, 0xbe, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, + 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, + 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x25, 0x49, 0x12, 0xbe, + 0x25, 0x49, 0x12, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x25, 0x49, 0x12, 0x3e, + 0x25, 0x49, 0x12, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x25, 0x49, 0x12, 0x3e, + 0x25, 0x49, 0x12, 0xbe, 0x00, 0x00, 0x00, 0x00, 0x25, 0x49, 0x12, 0xbe, + 0x25, 0x49, 0x12, 0xbe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, + 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }; + unsigned int _conf_3L_6_len = 480; + + std::stringstream stream; + stream.write((char*) _conf_3L_6, sizeof(unsigned char)*_conf_3L_6_len); + _fromStream(fms, stream); + }break; + case FRACTAL_4L_6:{ + unsigned char _conf_4L_6[] = { + 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xbf, + 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, + 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, + 0x00, 0x00, 0x80, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xbf, + 0x00, 0x00, 0x80, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, + 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, + 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, + 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, + 0x00, 0xef, 0xee, 0xee, 0xbe, 0xef, 0xee, 0xee, 0x3e, 0x00, 0x00, 0x00, + 0x00, 0xef, 0xee, 0xee, 0x3e, 0xef, 0xee, 0xee, 0x3e, 0x00, 0x00, 0x00, + 0x00, 0xef, 0xee, 0xee, 0x3e, 0xef, 0xee, 0xee, 0xbe, 0x00, 0x00, 0x00, + 0x00, 0xef, 0xee, 0xee, 0xbe, 0xef, 0xee, 0xee, 0xbe, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, + 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, + 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, + 0x00, 0x64, 0x00, 0x00, 0x00, 0xcd, 0xcc, 0x4c, 0xbe, 0xcd, 0xcc, 0x4c, + 0x3e, 0x00, 0x00, 0x00, 0x00, 0xcd, 0xcc, 0x4c, 0x3e, 0xcd, 0xcc, 0x4c, + 0x3e, 0x00, 0x00, 0x00, 0x00, 0xcd, 0xcc, 0x4c, 0x3e, 0xcd, 0xcc, 0x4c, + 0xbe, 0x00, 0x00, 0x00, 0x00, 0xcd, 0xcc, 0x4c, 0xbe, 0xcd, 0xcc, 0x4c, + 0xbe, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, + 0x00, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, + 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, + 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, + 0x00, 0x89, 0x88, 0x88, 0xbd, 0x89, 0x88, 0x88, 0x3d, 0x00, 0x00, 0x00, + 0x00, 0x89, 0x88, 0x88, 0x3d, 0x89, 0x88, 0x88, 0x3d, 0x00, 0x00, 0x00, + 0x00, 0x89, 0x88, 0x88, 0x3d, 0x89, 0x88, 0x88, 0xbd, 0x00, 0x00, 0x00, + 0x00, 0x89, 0x88, 0x88, 0xbd, 0x89, 0x88, 0x88, 0xbd, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, + 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00 + }; + unsigned int _conf_4L_6_len = 713; + + std::stringstream stream; + stream.write((char*) _conf_4L_6, sizeof(unsigned char)*_conf_4L_6_len); + _fromStream(fms, stream); + }break; + case FRACTAL_5L_6:{ + unsigned char _conf_5L_6[] = { + 0x02, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xbf, + 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, + 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, + 0x00, 0x00, 0x80, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xbf, + 0x00, 0x00, 0x80, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, + 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, + 0x00, 0x4f, 0xec, 0xc4, 0xbe, 0x4f, 0xec, 0xc4, 0x3e, 0x00, 0x00, 0x00, + 0x00, 0x4f, 0xec, 0xc4, 0x3e, 0x4f, 0xec, 0xc4, 0x3e, 0x00, 0x00, 0x00, + 0x00, 0x4f, 0xec, 0xc4, 0x3e, 0x4f, 0xec, 0xc4, 0xbe, 0x00, 0x00, 0x00, + 0x00, 0x4f, 0xec, 0xc4, 0xbe, 0x4f, 0xec, 0xc4, 0xbe, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x01, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, + 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, + 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x7d, 0xcb, 0x37, 0xbe, 0x7d, 0xcb, + 0x37, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x7d, 0xcb, 0x37, 0x3e, 0x7d, 0xcb, + 0x37, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x7d, 0xcb, 0x37, 0x3e, 0x7d, 0xcb, + 0x37, 0xbe, 0x00, 0x00, 0x00, 0x00, 0x7d, 0xcb, 0x37, 0xbe, 0x7d, 0xcb, + 0x37, 0xbe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, + 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, + 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, + 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0xd9, 0x89, + 0x9d, 0xbd, 0xd9, 0x89, 0x9d, 0x3d, 0x00, 0x00, 0x00, 0x00, 0xd9, 0x89, + 0x9d, 0x3d, 0xd9, 0x89, 0x9d, 0x3d, 0x00, 0x00, 0x00, 0x00, 0xd9, 0x89, + 0x9d, 0x3d, 0xd9, 0x89, 0x9d, 0xbd, 0x00, 0x00, 0x00, 0x00, 0xd9, 0x89, + 0x9d, 0xbd, 0xd9, 0x89, 0x9d, 0xbd, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, + 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, + 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, + 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x21, 0x0d, 0xd2, 0xbc, 0x21, 0x0d, + 0xd2, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x21, 0x0d, 0xd2, 0x3c, 0x21, 0x0d, + 0xd2, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x21, 0x0d, 0xd2, 0x3c, 0x21, 0x0d, + 0xd2, 0xbc, 0x00, 0x00, 0x00, 0x00, 0x21, 0x0d, 0xd2, 0xbc, 0x21, 0x0d, + 0xd2, 0xbc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, + 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }; + unsigned int _conf_5L_6_len = 898; + + std::stringstream stream; + stream.write((char*) _conf_5L_6, sizeof(unsigned char)*_conf_5L_6_len); + _fromStream(fms, stream); + }break; + case CUSTOM: + throw cv::Exception(-1,"CUSTOM type is only set by loading from file","FractalMarkerSet::loadPredefined","fractalmarkerset.h",-1); + break; + + default: throw cv::Exception(9001, "Invalid Dictionary type requested", "Dictionary::loadPredefined", __FILE__, __LINE__); + + } + return fms; +} + +bool FractalMarkerSet::isPredefinedConfigurationString(std::string str) { + return getTypeFromString(str)!=CUSTOM; +} + +std::string FractalMarkerSet::getTypeString(CONF_TYPES t) { + switch(t){ + case FRACTAL_2L_6:return "FRACTAL_2L_6"; + case FRACTAL_3L_6:return "FRACTAL_3L_6"; + case FRACTAL_4L_6:return "FRACTAL_4L_6"; + case FRACTAL_5L_6:return "FRACTAL_5L_6"; + case CUSTOM:return "CUSTOM"; + }; + return "Non valid CONF_TYPE"; + } + +FractalMarkerSet::CONF_TYPES FractalMarkerSet::getTypeFromString(std::string str) { + if (str=="FRACTAL_2L_6") return FRACTAL_2L_6; + if (str=="FRACTAL_3L_6") return FRACTAL_3L_6; + if (str=="FRACTAL_4L_6") return FRACTAL_4L_6; + if (str=="FRACTAL_5L_6") return FRACTAL_5L_6; + else return CUSTOM; + } + +std::vector FractalMarkerSet::getConfigurations() { + return {"FRACTAL_2L_6","FRACTAL_3L_6","FRACTAL_4L_6","FRACTAL_5L_6"}; +} + +void FractalMarkerSet::_toStream(FractalMarkerSet &configuration, std::ostream &str) +{ + str.write((char*)&configuration.mInfoType,sizeof(mInfoType)); + str.write((char*)&configuration._nmarkers,sizeof(_nmarkers)); + str.write((char*)&configuration._idExternal,sizeof(_idExternal)); + + for(auto fractal:configuration.fractalMarkerCollection) + { + //ID + int id = fractal.first; + str.write((char*)&id,sizeof(id)); + //NBITS + int nbits = fractal.second.nBits(); + str.write((char*)&nbits,sizeof(nbits)); + //CORNERS + std::vector corners = fractal.second.points; + str.write((char*)&corners[0],sizeof(cv::Point3f)*4); + //MAT + cv::Mat mat = fractal.second.mat(); + str.write((char*)mat.data, mat.elemSize() * mat.total()); + //SUBMARKERS + std::vector sub = fractal.second.subMarkers(); + int nsub = sub.size(); + str.write((char*)&nsub,sizeof(nsub)); + str.write((char*)&sub[0],sizeof(int)*nsub); + } +} + +void FractalMarkerSet::_fromStream(FractalMarkerSet &configuration, std::istream &str) +{ + str.read((char*)&configuration.mInfoType,sizeof(mInfoType)); + str.read((char*)&configuration._nmarkers,sizeof(_nmarkers)); + str.read((char*)&configuration._idExternal,sizeof(_idExternal)); + + for(int i=0; i corners(4); + str.read((char*)&corners[0],sizeof(cv::Point3f)*4); + //MAT + cv::Mat mat; + mat.create(sqrt(nbits), sqrt(nbits), CV_8UC1); + str.read((char*)mat.data, mat.elemSize() * mat.total()); + //SUBMARKERS + int nsub; + str.read((char*)&nsub,sizeof(nsub)); + std::vector id_submarkers(nsub); + if (nsub > 0) + str.read((char*)&id_submarkers[0],sizeof(int)*nsub); + + FractalMarker fractalMarker = FractalMarker(id, mat, corners, id_submarkers); + configuration.nbits_fractalMarkerIDs[mat.total()].push_back(fractalMarker.id); + configuration.fractalMarkerCollection[fractalMarker.id] = fractalMarker; + } + + //Add subfractals + for(auto &id_marker:configuration.fractalMarkerCollection) + { + FractalMarker &marker = id_marker.second; + for(auto id:id_marker.second.subMarkers()) + marker.addSubFractalMarker(configuration.fractalMarkerCollection[id]); + } +} + +void FractalMarkerSet::create(std::vector> regionsConfig, float pixSize) +{ + if(pixSize == -1) + { + mInfoType = NORM; + pixSize = 1; + } + else + mInfoType = PIX; + + _nmarkers = regionsConfig.size(); + _idExternal = 0; + + std::vector submarkers; + submarkers.clear(); + float pix = 0; + for(int n=regionsConfig.size()-1; n>=0; n--) + { + int nVal = regionsConfig[n].first; + int kVal = regionsConfig[n].second; + + cv::Mat mat = configureMat(nVal, kVal); + + pix = (nVal + 2) * pixSize; + std::vector corners = { cv::Point3f(-pix/2, pix/2, 0.), + cv::Point3f(pix/2, pix/2, 0.), + cv::Point3f(pix/2, -pix/2, 0.), + cv::Point3f(-pix/2, -pix/2, 0.) + }; + + FractalMarker fractal = FractalMarker(n, mat, corners, submarkers); + fractalMarkerCollection[n] = fractal; + submarkers.clear(); + submarkers.push_back(n); + + + float kValSup = regionsConfig[n-1].second - 2; + float newP = (nVal+2)/(kValSup); + pixSize = newP * pixSize; + } + + //Normalize corners. Fractal marker: (-1,1,0)(1,1,0)(1,-1,0)(-1,-1,0) + if(isNormalize()){ + for(auto &m:fractalMarkerCollection){ + for(auto &c:m.second.points) + { + c.x/=pix/2; + c.y/=pix/2; + } + } + } +} + +cv::Mat FractalMarkerSet::configureMat(int nVal, int kVal, int maxIter) +{ + //Pixels to configure (n-k region) + std::vector pixels; + for(int y=0; y= kVal+(nVal-kVal)/2) + || (y <= ((nVal-kVal)/2)-1 || y >= kVal+(nVal-kVal)/2)){ + pixels.push_back(cv::Point2i(x, y)); + } + } + } + + int dst_mkr = 0; + int dst_set=0; + + cv::Mat m; + int markerIters = 0; + do{ + std::vector conf_pixels = pixels; + m = cv::Mat::ones(nVal, nVal, CV_8UC1); + +// struct timespec ts; +// clock_gettime(CLOCK_MONOTONIC, &ts); +// srand((time_t)ts.tv_nsec); + + //Random delete half of pixels + int npix = conf_pixels.size()/2; + for(int i=0; i(p.y,p.x) = 0; + + //Check marker distance to itself + int new_dst_mkr = dstMarker(m); + if(new_dst_mkr > dst_mkr) + { + //Check marker distance to set + int new_dst_set = dstMarkerToFractalDict(m); + if(new_dst_set > dst_set) + { + dst_mkr = new_dst_mkr; + dst_set = new_dst_set; + } + } + } while(markerIters++(y,x)=0; + } + } + + return m; +} + +/* + * Calculate minimum distance between marker 'm' and the 4 rotations of each word in the dictionary + */ +int FractalMarkerSet::dstMarkerToFractalDict(cv::Mat m){ + int HDist = m.cols * m.rows; //distancia maxima + int HDistTemp; + + for(auto marker:fractalMarkerCollection) { + if(marker.second.nBits() == m.total()) + { + HDistTemp = dstMarkerToMarker(marker.second.mat(), m); + + if(HDistTemp == 0) + return 0; + else if(HDistTemp < HDist) + HDist = HDistTemp; + } + } + return HDist; +} + +/* + * Calculate minimum distance between marker1 'm' and the 4 rotations of marker2 'm2' + */ +auto rotate=[](const cv::Mat &m) { + cv::Mat out; + m.copyTo(out); + for (int i = 0; i < m.rows; i++) { + for (int j = 0; j < m.cols; j++) { + out.at< char >(i, j) = m.at< char >(m.cols - j - 1, i); + } + } + return out; +}; + +int FractalMarkerSet::dstMarker(const cv::Mat m) { + + int HDist = m.cols * m.rows;//maximum distance + int HDistTemp; + + cv::Mat rot; + m.copyTo(rot); + + + for(int i=0; i<3; i++) + { + cv::Mat diff; + rot=rotate(rot); + cv::compare(rot, m, diff, cv::CMP_NE); + HDistTemp = cv::countNonZero(diff); + if(HDistTemp < HDist) + HDist = HDistTemp; + } + return HDist; +} + +int FractalMarkerSet::dstMarkerToMarker(const cv::Mat m1, const cv::Mat m2) { + + int HDist = m2.cols * m2.rows;//maximum distance + int HDistTemp; + + for(int i=0; i<4; i++) + { + cv::Mat diff; + cv::compare(rotate(m2), m1, diff, cv::CMP_NE); + HDistTemp = cv::countNonZero(diff); + if(HDistTemp < HDist) + HDist = HDistTemp; + } + + return HDist; +} + + +FractalMarkerSet FractalMarkerSet::readFromFile(std::string path) +{ + cv::FileStorage fs; + try + { + fs.open(path, cv::FileStorage::READ); + } + catch (std::exception& ex) + { + throw cv::Exception(81818, "FractalMarkerSet::readFromFile", ex.what() + std::string(" file=)") + path, __FILE__, __LINE__); + } + + FractalMarkerSet configuration; + + fs["mInfoType"] >> configuration.mInfoType; + fs["fractal_levels"] >> configuration._nmarkers; + fs["fractal_external_id"] >> configuration._idExternal; + + cv::FileNode markers = fs["markers"]; + int i = 0; + for (cv::FileNodeIterator it = markers.begin(); it != markers.end(); ++it, i++) + { + int id = (*it)["id"]; + std::vector bits; + + std::vector corners; + std::vector submarkers_id; + + cv::FileNode bitsMarker = (*it)["bits"]; + for (cv::FileNodeIterator itb = bitsMarker.begin(); itb != bitsMarker.end(); ++itb) + { + bits.push_back(*itb); + } + cv::Mat m = cv::Mat(sqrt(bits.size()), sqrt(bits.size()), CV_32SC1); + memcpy(m.data, bits.data(), bits.size()*sizeof(int)); + + m.convertTo(m,CV_8UC1); + + cv::FileNode cornersFractal = (*it)["corners"]; + for (cv::FileNodeIterator itp = cornersFractal.begin(); itp != cornersFractal.end(); ++itp) + { + std::vector coordinates3d; + (*itp) >> coordinates3d; + if (coordinates3d.size() != 3) + throw cv::Exception(81818, "FractalMarkerSet::readFromFile", "invalid file type 3", __FILE__, __LINE__); + cv::Point3f point(coordinates3d[0], coordinates3d[1], coordinates3d[2]); + corners.push_back(point); + } + + cv::FileNode submarkersID = (*it)["submarkers_id"]; + for (cv::FileNodeIterator itm = submarkersID.begin(); itm != submarkersID.end(); ++itm) + { + submarkers_id.push_back((*itm)); + } + + FractalMarker fractalMarker = FractalMarker(id, m, corners, submarkers_id); + configuration.nbits_fractalMarkerIDs[m.total()].push_back(fractalMarker.id); + configuration.fractalMarkerCollection[fractalMarker.id] = fractalMarker; + } + + //Add subfractals + for(auto &id_marker:configuration.fractalMarkerCollection) + { + FractalMarker &marker = id_marker.second; + for(auto id:id_marker.second.subMarkers()) + marker.addSubFractalMarker(configuration.fractalMarkerCollection[id]); + } + + return configuration; +} + + void FractalMarkerSet::saveToFile(cv::FileStorage& fs) + { + fs << "codeid" << "fractalmarkers"; + fs << "mInfoType" << mInfoType; + fs << "fractal_levels" << _nmarkers; + fs << "fractal_external_id" << _idExternal; + fs << "markers" + << "["; + for(auto id_marker:fractalMarkerCollection) { + + FractalMarker marker = id_marker.second; + + fs << "{:" + << "id" << (int)id_marker.first; + + fs << "bits" + << "[:"; + cv::Mat m = marker.mat(); + for (int y = 0; y < m.cols; y++) + for (int x = 0; x < m.rows; x++) + if (m.at(y, x) == 2) + fs << 0; + else + fs << m.at(y, x); + fs << "]"; + + fs << "corners" + << "[:"; + for (auto corner:marker.points) + fs << corner; + fs << "]"; + + fs << "submarkers_id" + << "[:"; + for (auto idsub:marker.subMarkers()) + fs << (int) idsub; + fs << "]"; + + fs << "}"; + } + fs << "]"; + } + + bool FractalMarkerSet::isFractalMarker(cv::Mat &m, int nbits, int& markerid) + { + + bool found = false; + + for(auto id:nbits_fractalMarkerIDs[nbits]){ + FractalMarker fm = fractalMarkerCollection[id]; + + //Apply mask to substract submarkers + cv::Mat m2; + m.copyTo(m2, fm.mask()); + + //Code without submarkers == fractal marker? + if (cv::countNonZero(m2 != fm.mat()) == 0){ + found = true; + + //Change new code!! + ////////////// + markerid = fm.id; + ///////////// + + break; + } + } + + return found; + } + + FractalMarkerSet FractalMarkerSet::convertToMeters(float fractalSizeM) + { + if (!(isExpressedInPixels() || isNormalize())) + throw cv::Exception(-1, "The FractalMarkers are not expressed in pixels", "FractalMarkerSet::convertToMeters", __FILE__, + __LINE__); + + FractalMarkerSet BInfo(*this); + BInfo.mInfoType = FractalMarkerSet::METERS; + + // now, get the size of a pixel, and change scale + float pixSizeM = fractalSizeM / float(BInfo.getFractalSize()); + + for (size_t i=0; i < BInfo.fractalMarkerCollection.size(); i++) + { + //Convert to meters the position fractal marker + for (int c = 0; c < 4; c++) + { + BInfo.fractalMarkerCollection[i][c] *= pixSizeM; + } + } + return BInfo; + } + + FractalMarkerSet FractalMarkerSet::normalize() + { + if (!(isExpressedInPixels() || isExpressedInMeters())) + throw cv::Exception(-1, "The FractalMarkers are not expressed in pixels or meters", "FractalMarkerSet::convertToMeters", __FILE__, + __LINE__); + + FractalMarkerSet BInfo(*this); + BInfo.mInfoType = FractalMarkerSet::NORM; + + float currentHalfSize = BInfo.getFractalSize()/2.f; + + for (size_t i=0; i < BInfo.fractalMarkerCollection.size(); i++) + { + //Normalize the position fractal marker + for (size_t c = 0; c < 4; c++) + { + BInfo.fractalMarkerCollection[i][c] /= currentHalfSize; + } + } + + return BInfo; + } + + std::map> FractalMarkerSet::getInnerCorners() + { + std::map> id_innerCorners; + + for(auto id_fm:fractalMarkerCollection) + { + int id = id_fm.first; + FractalMarker fm = id_fm.second; + + for(auto ic:fm.getInnerCorners()) + id_innerCorners[id].push_back(ic); //Conversion + + } + return id_innerCorners; + } + + cv::Mat FractalMarkerSet::getFractalMarkerImage(int pixSize, bool border) + { + if(fractalMarkerCollection.size()<1) + throw cv::Exception(9001, "There is not any fractal marker loaded", + "FractalMarkerSet::getFractalMarkerImage", __FILE__, __LINE__); + + //Smallest fractal marker + FractalMarker innerM = (--fractalMarkerCollection.end())->second; + float bitSize = innerM.getMarkerSize() / (pixSize * (sqrt(innerM.nBits())+2)); + + FractalMarker externMarker = fractalMarkerCollection[_idExternal]; + float markerSize = externMarker.getMarkerSize()/bitSize; + float markerBitSize = markerSize/(sqrt(externMarker.nBits())+2); + cv::Mat img=cv::Mat::zeros(markerSize, markerSize, CV_8U); + + //Asign value pixels + cv::Mat m = externMarker.mat(); + + for (int y = m.cols-1; y >=0 ; y--) + for (int x = m.cols-1; x >=0; x--){ + if (m.at(y,x) == 1){ + cv::Range val1 = cv::Range((1+y)*markerBitSize,(y+2)*markerBitSize); + cv::Range val2 = cv::Range((1+x)*markerBitSize,(x+2)*markerBitSize); + + cv::Mat bit_pix=img(val1, val2); + bit_pix.setTo(cv::Scalar::all(255)); + } + } + + for(auto idSubmarker:externMarker.subMarkers()){ + std::vector idds; + idds.push_back(idSubmarker); + while(!idds.empty()) + { + idSubmarker = idds.back(); + idds.pop_back(); + + FractalMarker submarker = fractalMarkerCollection[idSubmarker]; + + cv::Mat m = submarker.mat(); + cv::Point3f coord = submarker.points[0]; + + float markerSize = submarker.getMarkerSize()/bitSize; + float markerBitSize = markerSize/(sqrt(submarker.nBits())+2); + + //Get position inside fractal marker + float offsetX = fabs(coord.x - externMarker.points[0].x)/bitSize ; + float offsetY = fabs(coord.y - externMarker.points[0].y)/bitSize; + + //Asign value pixels + for (int y = m.cols-1; y >=0 ; y--) + for (int x = m.cols-1; x >=0; x--){ + if (m.at(y,x) == 1){ + cv::Range val1 = cv::Range((1+y)*markerBitSize + offsetY,(2+y)*markerBitSize + offsetY); + cv::Range val2 = cv::Range((1+x)*markerBitSize + offsetX,(2+x)*markerBitSize + offsetX); + + cv::Mat bit_pix=img(val1, val2); + bit_pix.setTo(cv::Scalar::all(255)); + } + } + + //Add submarkers to draw + for(auto idsm:submarker.subMarkers()) + idds.push_back(idsm); + } + } + + if(border) + copyMakeBorder(img,img,markerBitSize,markerBitSize,markerBitSize,markerBitSize,cv::BORDER_CONSTANT,cv::Scalar::all(255)); + + return img; + } +}; + diff --git a/thirdparty/aruco-3.1.12/src/fractallabelers/fractalmarkerset.h b/thirdparty/aruco-3.1.12/src/fractallabelers/fractalmarkerset.h new file mode 100644 index 0000000..044cad0 --- /dev/null +++ b/thirdparty/aruco-3.1.12/src/fractallabelers/fractalmarkerset.h @@ -0,0 +1,140 @@ +#include "fractalmarker.h" + +#include +#include +#include +#include "aruco_export.h" + +namespace aruco { + class ARUCO_EXPORT FractalMarkerSet{ + public: + enum CONF_TYPES: + uint64_t{ + FRACTAL_2L_6 = 0, + FRACTAL_3L_6 = 1, + FRACTAL_4L_6 = 2, + FRACTAL_5L_6 = 3, + CUSTOM=4 // for used defined dictionaries (using load). + }; + + /** create set of markers + * @brief create + * @param regionsConfig {N(f1),K(f1)}{N(f2):K(f2)}...{N(fn):K(fn)} + * @param pixSize + */ + void create(std::vector> regionsConfig, float pixSize); + + /** configure bits of inner marker + * @brief configureMat + * @param nVal N region + * @param kVal K region + * @param maxIter Number of iteration + * @return Mat configurated marker + */ + cv::Mat configureMat(int nVal, int kVal, int maxIter=10000); + // computes the distance of a marker to itself + int dstMarker(const cv::Mat m); + + // computes distance between marker to marker + int dstMarkerToMarker(const cv::Mat m1, const cv::Mat m2); + + // computes distance between marker to set of markers + int dstMarkerToFractalDict(cv::Mat m); + + // saves to a binary stream + static void _toStream(FractalMarkerSet &configuration, std::ostream &str); + + // load from a binary stream + static void _fromStream(FractalMarkerSet &configuration, std::istream &str); + + static bool isPredefinedConfigurationString(std::string str); + + static std::string getTypeString(FractalMarkerSet::CONF_TYPES t); + + static CONF_TYPES getTypeFromString(std::string str); + + static FractalMarkerSet load(std::string info); + + static FractalMarkerSet loadPredefined(std::string info); + + static FractalMarkerSet loadPredefined(CONF_TYPES info); + + static FractalMarkerSet readFromFile(std::string path); + + // saves configuration to a text file + void saveToFile(cv::FileStorage& fs); + + //Fractal configuration. id_marker + std::map fractalMarkerCollection; + //Nbits_idmarkers + std::map> nbits_fractalMarkerIDs ; + + enum Fractal3DInfoType + { + NONE = -1, + PIX = 0, + METERS = 1, + NORM = 2 + }; // indicates if the data in Fractal is expressed in meters or in pixels + + /**Indicates if the corners are expressed in meters + */ + bool isExpressedInMeters() const + { + return mInfoType == METERS; + } + /**Indicates if the corners are expressed in meters + */ + bool isExpressedInPixels() const + { + return mInfoType == PIX; + } + /**Indicates if the corners are normalized. -1..1 external marker + */ + bool isNormalize() const + { + return mInfoType == NORM; + } + + //Normalize fractal marker. The corners will go on to take the values (-1,1)(1,1),(1,-1)(-1,-1) + FractalMarkerSet normalize(); + + //Convert marker to meters + FractalMarkerSet convertToMeters(float fractalSize_meters); + + static std::vector getConfigurations(); + + //Get fractal size (external marker) + float getFractalSize() const + { + FractalMarker externalMarker = fractalMarkerCollection.at(_idExternal); + return externalMarker.getMarkerSize(); + } + + //Get number of bits (external marker) + int nBits() const + { + FractalMarker externalMarker = fractalMarkerCollection.at(_idExternal); + return externalMarker.nBits(); + } + + // Check if m is a inner marker, and get its id. + bool isFractalMarker(cv::Mat &m, int nbits, int&id); + + // Get all inners corners + std::map> getInnerCorners(); + + cv::Mat getFractalMarkerImage(int pixSize, bool border=false); + + // variable indicates if the data is expressed in meters or in pixels or are normalized + int mInfoType;/* -1:NONE, 0:PIX, 1:METERS, 2:NORMALIZE*/ + + private: + // Number of levels + int _nmarkers; + //ID external marker + int _idExternal=0; + //Configuration dictionary + std::string config; + }; +} diff --git a/thirdparty/aruco-3.1.12/src/fractallabelers/fractalposetracker.cpp b/thirdparty/aruco-3.1.12/src/fractallabelers/fractalposetracker.cpp new file mode 100644 index 0000000..3bb5532 --- /dev/null +++ b/thirdparty/aruco-3.1.12/src/fractallabelers/fractalposetracker.cpp @@ -0,0 +1,960 @@ +#include "fractalposetracker.h" +#include "../levmarq.h" +#include "../ippe.h" +#include "../aruco_export.h" +#include "../timers.h" + + +#include "opencv2/calib3d/calib3d.hpp" +#include "../aruco_cvversioning.h" + +namespace aruco { + + /* + * KeyPoint cornersubpixel + */ + void kcornerSubPix(const cv::Mat image, std::vector &kpoints) + { + std::vector points; + cv::KeyPoint::convert(kpoints, points); + + cv::Size winSize = cv::Size(4, 4); + cv::Size zeroZone = cv::Size( -1, -1 ); + cv::TermCriteria criteria( cv::TermCriteria::MAX_ITER | cv::TermCriteria::EPS, 12, 0.005); //cv::cornerSubPix(image, points, winSize, zeroZone, criteria); + cornerSubPix(image, points, winSize, zeroZone, criteria); + + //Update kpoints + uint32_t i=0; + for(auto &k:kpoints){ + k.pt = points[i]; + i++; + } + } + + /* + * KeyPoints Filter. Delete kpoints with low response and duplicated. + */ + void kfilter(std::vector &kpoints) + { + float minResp = kpoints[0].response; + float maxResp = kpoints[0].response; + for (auto &p:kpoints){ + p.size=40; + if(p.response < minResp) minResp = p.response; + if(p.response > maxResp) maxResp = p.response; + } + float thresoldResp = (maxResp - minResp) * 0.20f + minResp; + + //Erase kepoints with low response (20%) + for (uint32_t i=0;i< kpoints.size(); i++) + if(kpoints[i].response < thresoldResp){ + kpoints.erase(kpoints.begin()+i); + i--; + } + + //Duplicated keypoints (closer) + for(uint32_t xi=0; xi markerDetector, int markerWarpPix) + { + //ScopedTimerEvents Timer("fractal-refinement"); + + std::vector imagePyramid = markerDetector->getImagePyramid(); + std::vector _ref_inner3d; + std::vector _ref_inner2d; + + cv::Mat _p_rvec; + _rvec.copyTo(_p_rvec); + cv::Mat _p_tvec; + _tvec.copyTo(_p_tvec); + + cv::Mat rot; + cv::Rodrigues(_rvec, rot); + + for (auto id_marker : _fractalMarker.fractalMarkerCollection) + { + //Check z value for 4 external corners + std::vector marker3d; + for(auto pt : id_marker.second.points) + { + cv::Mat_ src(3,1,rot.type()); + src(0,0)=pt.x;src(1,0)=pt.y;src(2,0)=pt.z; + + cv::Mat cam_image_point = rot * src + _tvec; + cam_image_point = cam_image_point/cv::norm(cam_image_point); + + if(cam_image_point.at(2,0)>0.85) + marker3d.push_back(pt); + else break; + } + + std::vector _inners3d; + std::vector _inners2d; + float area=0; + if(marker3d.size()<4) + { + if(_id_area.find(id_marker.first) != _id_area.end()) + area = _id_area[id_marker.first]; + else + return false; + + for(auto pt : _id_innerp3d[id_marker.first]) + { + cv::Mat_ src(3,1,_rvec.type()); + src(0,0)=pt.x;src(1,0)=pt.y;src(2,0)=pt.z; + + cv::Mat cam_image_point = rot * src +_tvec; + cam_image_point = cam_image_point/cv::norm(cam_image_point); + + if(cam_image_point.at(2,0)>0.85) + _inners3d.push_back(pt); + } + + if(_inners3d.size()==0) + return false; + + cv::projectPoints(_inners3d, _rvec, _tvec, + _cam_params.CameraMatrix, _cam_params.Distorsion, _inners2d); + } + else + { + std::vector marker2d; + cv::projectPoints(marker3d, _rvec, _tvec, + _cam_params.CameraMatrix, _cam_params.Distorsion, marker2d); + + cv::Point2f v01 = marker2d[1] - marker2d[0]; + cv::Point2f v03 = marker2d[3] - marker2d[0]; + float area1 = fabs(v01.x * v03.y - v01.y * v03.x); + cv::Point2f v21 = marker2d[1] - marker2d[2]; + cv::Point2f v23 = marker2d[3] - marker2d[2]; + float area2 = fabs(v21.x * v23.y - v21.y * v23.x); + + area = (area2 + area1) / 2.f; + _id_area[id_marker.first] = area; + + _inners3d = _id_innerp3d[id_marker.first]; + cv::projectPoints(_inners3d, _rvec, _tvec, _cam_params.CameraMatrix, _cam_params.Distorsion, _inners2d); + } + + size_t imgPyrIdx = 0; + auto markerWarpSize = (sqrt(id_marker.second.nBits())+2)*markerWarpPix; + float desiredarea = std::pow(static_cast(markerWarpSize), 2.f); + for (size_t p = 1; p < imagePyramid.size(); p++) + { + if (area/ pow(4, p) >= desiredarea) imgPyrIdx = p; + else break; + } + + float ratio = float(imagePyramid[imgPyrIdx].cols)/float(imagePyramid[0].cols); + + //std::cout << "REFINE["<< id_marker.first <<"], imgPyrId:"< _inners2d_error; + if (ratio == 1 && area >= desiredarea){ + int halfwsize= 4*float(imagePyramid[imgPyrIdx].cols)/float(imagePyramid[imgPyrIdx].cols) +0.5 ; + + std::vector _inners2d_copy; + for(auto pt:_inners2d){ _inners2d_copy.push_back(pt);} + cornerSubPix(imagePyramid[imgPyrIdx], _inners2d, cv::Size(halfwsize,halfwsize), cv::Size(-1, -1),cv::TermCriteria( cv::TermCriteria::MAX_ITER | cv::TermCriteria::EPS, 12, 0.005)); + int idx=0; + for(auto pt:_inners2d) + { + _inners2d_error.push_back(sqrt(pow(_inners2d_copy[idx].x - pt.x,2) + pow(_inners2d_copy[idx].y - pt.y,2))); + idx++; + } + } + else if (ratio != 1 && area >= desiredarea){ + + std::vector _inners2d_copy; + for(auto &pt:_inners2d){ _inners2d_copy.push_back(pt); pt *=ratio;} + + std::vector> vpnts; + vpnts.push_back(_inners2d); + markerDetector->cornerUpsample(vpnts, imagePyramid[imgPyrIdx].size()); + + int idx=0; + for(auto pt:vpnts[0]) + { + _inners2d_error.push_back(sqrt(pow(_inners2d_copy[idx].x - pt.x,2) + pow(_inners2d_copy[idx].y - pt.y,2))); + _inners2d[idx++] = pt; + } + } + + //Elimina puntos que no son esquinas + if (area >= desiredarea) { + //We discard outliers. Points above limit Q3+3*(Q3-1) + std::vector_inners2d_error_copy; + for(auto err:_inners2d_error) + _inners2d_error_copy.push_back(err); + sort(_inners2d_error_copy.begin(), _inners2d_error_copy.end()); + int q1 = (_inners2d_error_copy.size()+1)/4; + int q3 = 3*(_inners2d_error_copy.size()+1)/4; + + double limit = _inners2d_error_copy[q3] + 3*(_inners2d_error_copy[q3]-_inners2d_error_copy[q1]); + + int wsize = 10; + for(int idx=0; idx<_inners2d.size(); idx++) + { + if(_inners2d_error[idx]>limit) + continue; + + float x= int(_inners2d[idx].x+0.5f); + float y= int(_inners2d[idx].y+0.5f); + + cv::Rect r= cv::Rect(x-wsize,y-wsize,wsize*2+1,wsize*2+1); + //Check boundaries + if(r.x<0 || r.x+r.width>imagePyramid[0].cols || r.y<0 || + r.y+r.height>imagePyramid[0].rows) continue; + + int endX=r.x+r.width; + int endY=r.y+r.height; + uchar minV=255,maxV=0; + for(int y=r.y; y(y); + for(int x=r.x; xptr[x]) minV=ptr[x]; + if(maxV4) + { + aruco::solvePnP(_ref_inner3d, _ref_inner2d, _cam_params.CameraMatrix, _cam_params.Distorsion,_rvec,_tvec); + +//#define _fractal_debug_inners +#ifdef _fractal_debug_inners + cv::Mat InImageCopy; + cv::cvtColor(imagePyramid[0], InImageCopy, CV_GRAY2RGB); + + //Show first position (estimation with detected markers) + std::vector preinnersPrj; + for (auto id_marker : _fractalMarker.fractalMarkerCollection) + { + cv::projectPoints(_id_innerp3d[id_marker.first], _p_rvec, _p_tvec, _cam_params.CameraMatrix, _cam_params.Distorsion, preinnersPrj); + for(auto pt:preinnersPrj) + cv::circle(InImageCopy, pt, 5, cv::Scalar(0,0,255),CV_FILLED); + } + + //Show first position with refinement + for(auto p:_ref_inner2d) + cv::circle(InImageCopy, p, 5, cv::Scalar(255,0,0),CV_FILLED); + + _rvec.convertTo(_rvec,CV_32F); + _tvec.convertTo(_tvec,CV_32F); + cv::Rodrigues(_rvec, rot); + + std::vector _inners; + for(auto pt : _inner_corners_3d) + { + cv::Mat_ src(3,1,rot.type()); + src(0,0)=pt.x;src(1,0)=pt.y;src(2,0)=pt.z; + + cv::Mat cam_image_point = rot * src + _tvec ; + cam_image_point = cam_image_point/cv::norm(cam_image_point); + + if(cam_image_point.at(2,0)>0.85f) + _inners.push_back(pt); + } + std::vector _inners_prj; + cv::projectPoints(_inners, _rvec, _tvec, + _cam_params.CameraMatrix, _cam_params.Distorsion, _inners_prj); + + //Show new projection using all inner points + for(auto pt:_inners_prj) + cv::circle(InImageCopy, pt, 5, cv::Scalar(0,255,0),CV_FILLED); + + cv::namedWindow("AA",cv::WINDOW_NORMAL); + imshow("AA", InImageCopy); + cv::waitKey(); +#endif + //Timer.add("solve"); + + return true; + } + else + return false; + } + + bool FractalPoseTracker::fractalInnerPose(const cv::Ptr markerDetector, const std::vector& vmarkers, bool refinement) + { + if(vmarkers.size()>0) + { +// ScopedTimerEvents Timer("pnp"); +// std::cout << "[Case 1]"<< std::endl; + std::vector p2d; + std::vector p3d; + for (auto marker : vmarkers) + { + if (_fractalMarker.fractalMarkerCollection.find(marker.id) != _fractalMarker.fractalMarkerCollection.end()) + { + for (auto p : marker) + p2d.push_back(p); + + for (auto p : _fractalMarker.fractalMarkerCollection[marker.id].points) + p3d.push_back(p); + } + } + + //Initial pose estimation + aruco::solvePnP(p3d, p2d, _cam_params.CameraMatrix, _cam_params.Distorsion,_rvec,_tvec); + +// Timer.add("solve"); + + //REFINE + if(refinement) { + fractalRefinement(markerDetector); +// Timer.add("refine-solution"); + } + + return true; + } + else + { + if(!_rvec.empty()) + { +// std::cout << "[Case 2]"<< std::endl; +// ScopedTimerEvents Timer("ransac"); +// Timer.add("detect"); + + std::vector innerPoints2d; + std::vector innerPoints3d; + + float radius=0; + cv::Mat rot; + cv::Rodrigues(_rvec, rot); + + //Getting the keypoints search radius + for(auto id_marker:_fractalMarker.fractalMarkerCollection) + { + std::vector marker2d; + std::vector marker3d; + for(auto pt:_fractalMarker.fractalMarkerCollection[id_marker.first].points) + { + cv::Mat_ src(3,1,rot.type()); + src(0,0)=pt.x;src(1,0)=pt.y;src(2,0)=pt.z; + cv::Mat cam_image_point = rot * src + _tvec ; + cam_image_point = cam_image_point/cv::norm(cam_image_point); + + if(cam_image_point.at(2,0)>0.85) + marker3d.push_back(pt); + else break; + } + + if(marker3d.size()==4) + { + cv::projectPoints(marker3d, _rvec, _tvec, _cam_params.CameraMatrix, _cam_params.Distorsion, marker2d); + + //Find marker area + cv::Point2f v01 = marker2d[1] - marker2d[0]; + cv::Point2f v03 = marker2d[3] - marker2d[0]; + float area1 = fabs(v01.x * v03.y - v01.y * v03.x); + cv::Point2f v21 = marker2d[1] - marker2d[2]; + cv::Point2f v23 = marker2d[3] - marker2d[2]; + float area2 = fabs(v21.x * v23.y - v21.y * v23.x); + double area = (area2 + area1) / 2.f; + + auto markerWarpSize = (sqrt(_fractalMarker.fractalMarkerCollection[id_marker.first].nBits())+2)*10; + float desiredarea = std::pow(static_cast(markerWarpSize), 2.f); + if(area >= desiredarea) + { + for(auto pt:_id_innerp3d[id_marker.first]) + innerPoints3d.push_back(pt); + } + + if(radius == 0.f) + radius = sqrt(area)/(sqrt(id_marker.second.nBits())+2.f); + } + else + { + for(auto pt:_id_innerp3d[id_marker.first]) + innerPoints3d.push_back(pt); + } + } + + if(radius==0) radius = _preRadius; + _preRadius = radius; + + if(innerPoints3d.size() > 0 && radius > 0) + { + cv::projectPoints(innerPoints3d, _rvec, _tvec, _cam_params.CameraMatrix, _cam_params.Distorsion, innerPoints2d); + + cv::Mat region; + cv::Point2f offset; + float ratio; + if(!ROI(markerDetector->getImagePyramid(), region, innerPoints2d, offset, ratio)) + return false; + radius = radius * ratio; +// Timer.add("roi"); + + + std::cout << "radius: " << radius << std::endl; + +//#define _fractal_debug_region +#ifdef _fractal_debug_region + cv::Mat out; + cv::cvtColor(region, out, CV_GRAY2RGB); + for(uint32_t i=0; i kpoints; + cv::Ptr fd = cv::FastFeatureDetector::create(); + fd->detect(region, kpoints); +// Timer.add("fast"); + + + if(kpoints.size() > 0) + { + //Filter kpoints (low response) and removing duplicated. + kfilter(kpoints); +// Timer.add("fast-filter"); +// std::cout << "fast-filter" << std::endl; + + //Assign class to keypoints + assignClass(region, kpoints); +// Timer.add("fast-class"); + +//#define _fractal_debug_classification +#ifdef _fractal_debug_classification + drawKeyPoints(region, kpoints); + cv::waitKey(); +#endif + //Get keypoints with better response in a radius + picoflann::KdTreeIndex<2,PicoFlann_KeyPointAdapter> kdtreeImg; + kdtreeImg.build(kpoints); + std::vector>> inner_candidates; + for(uint idx=0; idx> res = kdtreeImg.radiusSearch(kpoints, innerPoints2d[idx], radius); + + std::vector candidates; + for(auto r:res){ + if(kpoints[r.first].class_id == _innerkpoints[idx].class_id) + candidates.push_back(r.first); + } + if(candidates.size() > 0) + inner_candidates.push_back(make_pair(idx, candidates)); + } + +// Timer.add("candidates"); + cv::Mat bestModel = fractal_solve_ransac(innerPoints2d.size(), inner_candidates, kpoints); +// Timer.add("find-solution"); + + if(!bestModel.empty()){ + std::vectorp3d; + std::vectorp2d; + + std::vector pnts, pntsDst; + cv::KeyPoint::convert(kpoints, pnts); + perspectiveTransform(pnts, pntsDst, bestModel); + for(uint32_t id=0; id> res = _kdtree.radiusSearch(_innerkpoints, pntsDst[id], _id_radius[0]); + + int i=0; + for(auto r:res) + { + uint32_t innerId = r.first; + double dist = sqrt(r.second); + + uint32_t fmarkerId = _innerkpoints[innerId].octave; + if(dist > _id_radius[fmarkerId]) + res.erase(res.begin()+i); + else i++; + } + if(res.size()>0){ + p3d.push_back(_innerp3d[res[0].first]); + p2d.push_back(cv::Point2f(kpoints[id].pt.x + offset.x, kpoints[id].pt.y + offset.y)/ratio); + } + } + + if(p3d.size() >= 4) + { +// std::cout << "solves" << std::endl; + aruco::solvePnP(p3d, p2d, _cam_params.CameraMatrix, _cam_params.Distorsion, _rvec, _tvec); +// Timer.add("solves"); + + if(refinement) { +// std::cout << "refine-solution" << std::endl; + fractalRefinement(markerDetector); +// Timer.add("refine-solution"); + } + + return true; + } + } + } + } + } + _rvec = cv::Mat(); + _tvec = cv::Mat(); + + return false; + } + } + + bool FractalPoseTracker::ROI(const std::vector imagePyramid, cv::Mat &img, std::vector &innerPoints2d, cv::Point2f &offset, float &ratio) + { + cv::Mat rot; + cv::Rodrigues(_rvec, rot); + + //Biggest marker projection + std::vector biggest_p2d; + std::vector biggest_p3d; + for(int idx=0; idx<_fractalMarker.fractalMarkerCollection.size()&biggest_p3d.size()<4; idx++) + { + biggest_p3d.empty(); + for(auto pt:_fractalMarker.fractalMarkerCollection[idx].points) + { + cv::Mat_ src(3,1,rot.type()); + src(0,0)=pt.x;src(1,0)=pt.y;src(2,0)=pt.z; + cv::Mat cam_image_point = rot * src + _tvec ; + cam_image_point = cam_image_point/cv::norm(cam_image_point); + + if(cam_image_point.at(2,0)>0.85) + biggest_p3d.push_back(pt); + else break; + } + } + + if(!biggest_p3d.empty()) + { + cv::projectPoints(biggest_p3d, _rvec, _tvec, _cam_params.CameraMatrix, _cam_params.Distorsion, biggest_p2d); + + //Smallest marker projection + std::vector smallest_p2d; + std::vector smallest_p3d; + auto marker_smallest = (--_fractalMarker.fractalMarkerCollection.end())->second; + for(auto pt:marker_smallest.points) + smallest_p3d.push_back(pt); + cv::projectPoints(smallest_p3d, _rvec, _tvec, _cam_params.CameraMatrix, _cam_params.Distorsion, smallest_p2d); + + //Smallest marker area + cv::Point2f v01 = smallest_p2d[1] - smallest_p2d[0]; + cv::Point2f v03 = smallest_p2d[3] - smallest_p2d[0]; + float area1 = fabs(v01.x * v03.y - v01.y * v03.x); + cv::Point2f v21 = smallest_p2d[1] - smallest_p2d[2]; + cv::Point2f v23 = smallest_p2d[3] - smallest_p2d[2]; + float area2 = fabs(v21.x * v23.y - v21.y * v23.x); + double area = (area2 + area1) / 2.f; + + + //Compute boundaries region + float border = sqrt(area)/sqrt(marker_smallest.nBits())+2; + int minX=imagePyramid[0].cols, minY=imagePyramid[0].rows, maxX=0, maxY=0; + for(auto p:biggest_p2d) + { + if(p.x < minX) minX = p.x-border; + if(p.x > maxX) maxX = p.x+border; + if(p.y < minY) minY = p.y-border; + if(p.y > maxY) maxY = p.y+border; + } + if(minX < 0) minX=0; + if(minY < 0) minY=0; + if(maxX > imagePyramid[0].cols) maxX=imagePyramid[0].cols; + if(maxY > imagePyramid[0].rows) maxY=imagePyramid[0].rows; + + + //Select imagePyramid + size_t imgPyrIdx = 0; + auto markerWarpSize = (sqrt(marker_smallest.nBits())+2)*10; + float desiredarea = std::pow(static_cast(markerWarpSize), 2.f); + for (size_t p = 1; p < imagePyramid.size(); p++) + { + if (area / pow(4, p) >= desiredarea) imgPyrIdx = p; + else break; + } + + ratio=float(imagePyramid[imgPyrIdx].cols)/float(imagePyramid[0].cols); + offset=cv::Point2i(minX, minY)*ratio; + cv::Rect region = cv::Rect(cv::Point2i(minX, minY)*ratio , cv::Point2i(maxX, maxY)*ratio); + img = imagePyramid[imgPyrIdx](region); + + for(auto &pt:innerPoints2d){ + pt.x = pt.x*ratio - region.x; + pt.y = pt.y*ratio - region.y; + } + return true; + } + else + return false; + } + + cv::Mat FractalPoseTracker::fractal_solve_ransac(int ninners, std::vector>> inner_kpnt, std::vector kpnts, uint32_t maxIter, float _minInliers, float _thresInliers) + { + std::vector pnts; + cv::KeyPoint::convert(kpnts, pnts); + + //Number randomly values selected + uint32_t numInliers=4; + //Number of inliers to consider it good model, stop iterating!!! + uint32_t thresInliers = uint32_t(ninners*_thresInliers); + //Enough number of inliers to consider the model as valid + uint32_t minInliers = uint32_t(ninners*_minInliers); + + //Number of inliers + uint32_t bestInliers = 0; + //Best model + cv::Mat bestH = cv::Mat(); + +// struct timespec ts; +// clock_gettime(CLOCK_MONOTONIC, &ts); +// srand((time_t)ts.tv_nsec); + + uint32_t count=0; + for(auto ik:inner_kpnt) + if(ik.second.size()>0) + count++; + if(count < minInliers) return cv::Mat(); + + uint32_t iter = 0; + do + { + // New stop condition to avoid infinite loop, when it tries to find the initial inliers + // For instance, for innerkpts group: 23{2} 18{3}, 14{3}, 3{7,6,5}, 2{3}, + // when the initial group of inliers is selected: + // 23{2},18{3},3{6} there's no way to find the fourth ... + uint32_t iter2 = 0; + std::vector> inliers; + while(inliers.size() < numInliers && iter2++= maxIter) + return cv::Mat(); + + std::vector srcInliers; + std::vector dstInliers; + for(auto in:inliers){ + dstInliers.push_back(_innerkpoints[in.first].pt); + srcInliers.push_back(kpnts[in.second].pt); + } + //Fit model with initial random inliers + cv::Mat H = findHomography(srcInliers, dstInliers); + + if(!H.empty()) + { + std::vector> newInliers; + std::vector> newInliers2; + + std::vector dstNewInliers; + std::vector srcNewInliers; + std::vector pntsTranf; + perspectiveTransform(pnts, pntsTranf, H); + + for(uint idP=0; idP< pntsTranf.size(); idP++) + { + std::vector>res = _kdtree.radiusSearch(_innerkpoints, pntsTranf[idP], _id_radius[0]); + + int i=0; + for(auto r:res) + { + uint32_t innerId = r.first; + double dist = sqrt(r.second); + + uint32_t fmarkerId = _innerkpoints[innerId].octave; + if(dist > _id_radius[fmarkerId]) + res.erase(res.begin()+i); + else i++; + } + + if(res.size() > 0){ + //avoid duplicate observations + bool exist=false; + for(auto in:newInliers) + { + if(in.first != res[0].first) + continue; + else { + exist=true; + break; + } + } + //if it is a new observation and these belong to the same class, add it! + if(!exist) + { + if(_innerkpoints[res[0].first].class_id == kpnts[idP].class_id) + newInliers.push_back(std::make_pair(res[0].first, idP)); + } + } + } + if(newInliers.size() > bestInliers) + { + bestInliers = newInliers.size(); + bestH = H; + } + } + iter++; + } while(iter kpoints, bool text, bool transf) + { + if(transf){ + //Convert point range from norm (-size/2, size/2) to (0,imageSize) + for(auto &k:kpoints){ + k.pt.x = image.cols * (k.pt.x/_fractalMarker.getFractalSize() + 0.5f); + k.pt.y = image.rows * (-k.pt.y/_fractalMarker.getFractalSize() + 0.5f); + } + } + + cv::Mat out; + cv::cvtColor(image, out, CV_GRAY2BGR); + //drawKeypoints(image, kpoints, out, cv::Scalar(0,0,255), cv::DrawMatchesFlags::DRAW_RICH_KEYPOINTS); + + cv::Scalar color; + for(auto kp:kpoints) + { + if(kp.class_id == -1 ) color = cv::Scalar(255,0,255); + if(kp.class_id == 0 ) color = cv::Scalar(0,0,255); + if(kp.class_id == 1 ) color = cv::Scalar(0,255,0); + if(kp.class_id == 2 ) color = cv::Scalar(255,0,0); + circle(out, kp.pt, 2, color,-1); + } + + if(text){ + int nkm=0; + for(auto kp:kpoints) + { + putText( out, std::to_string(nkm++), kp.pt, CV_FONT_HERSHEY_COMPLEX, 1, cv::Scalar(0, 0, 255), 2, 8 ); + } + } + +//#ifdef _DEBUG +// imshow("KPoints", out); +// cv::waitKey(); +//#endif + } + + void FractalPoseTracker::assignClass(const cv::Mat &im, std::vector& kpoints, bool transf, int wsize) + { + if(im.type()!=CV_8UC1) + throw std::runtime_error("assignClass Input image must be 8UC1"); + int wsizeFull=wsize*2+1; + + cv::Mat labels = cv::Mat::zeros(wsize*2+1,wsize*2+1,CV_8UC1); + cv::Mat thresIm=cv::Mat(wsize*2+1,wsize*2+1,CV_8UC1); + + for(auto &kp:kpoints) + { + float x = kp.pt.x; + float y = kp.pt.y; + + //Convert point range from norm (-size/2, size/2) to (0,imageSize) + if(transf){ + x = im.cols * (x/_fractalMarker.getFractalSize() + 0.5f); + y = im.rows * (-y/_fractalMarker.getFractalSize() + 0.5f); + } + + x= int(x+0.5f); + y= int(y+0.5f); + + cv::Rect r= cv::Rect(x-wsize,y-wsize,wsize*2+1,wsize*2+1); + //Check boundaries + if(r.x<0 || r.x+r.width>im.cols || r.y<0 || + r.y+r.height>im.rows) continue; + + int endX=r.x+r.width; + int endY=r.y+r.height; + uchar minV=255,maxV=0; + for(int y=r.y; y(y); + for(int x=r.x; xptr[x]) minV=ptr[x]; + if(maxV( r.y+y)+r.x; + uchar *thresPtr= thresIm.ptr(y); + for(int x=0; xthres) { + nZ++; + thresPtr[x]=255; + } + else thresPtr[x]=0; + } + } + //set all to zero labels.setTo(cv::Scalar::all(0)); + for(int y=0; y(y); + for(int x=0; x unions; + for(int y=0; y(y); + uchar *labelsPtr=labels.ptr(y); + for(int x=0; x -1) + { + if(reg == thresPtr[x-1]) + lleft_px =labelsPtr[x-1]; + } + + if(y-1 > -1) + { + if(reg ==thresIm.ptr(y-1) [x] + )//thresIm.at(y-1, x) + ltop_px = labels.at(y-1, x); + } + + if(lleft_px==0 && ltop_px==0) + labelsPtr[x] = newLab++; + + else if(lleft_px!=0 && ltop_px!=0) + { + if(lleft_px < ltop_px) + { + labelsPtr[x] = lleft_px; + unions[ltop_px] = lleft_px; + } + else if(lleft_px > ltop_px) + { + labelsPtr[x] = ltop_px; + unions[lleft_px] = ltop_px; + } + else + {//IGuales + labelsPtr[x] = ltop_px; + } + } + else + { + if(lleft_px!=0) labelsPtr[x] = lleft_px; + else labelsPtr[x] = ltop_px; + } + } + } + + int nc= newLab-1 - unions.size(); + if(nc==2) + { + if(nZ > thresIm.total()-nZ) kp.class_id = 0; + else kp.class_id = 1; + } + else if (nc > 2) { + kp.class_id = 2; + } + } + } +} diff --git a/thirdparty/aruco-3.1.12/src/fractallabelers/fractalposetracker.h b/thirdparty/aruco-3.1.12/src/fractallabelers/fractalposetracker.h new file mode 100644 index 0000000..d4bfd38 --- /dev/null +++ b/thirdparty/aruco-3.1.12/src/fractallabelers/fractalposetracker.h @@ -0,0 +1,115 @@ +#include +#include "../picoflann.h" +#include "../cameraparameters.h" +#include "../markerdetector.h" +#include "fractalmarkerset.h" +#include "aruco_export.h" +namespace aruco { + struct PicoFlann_KeyPointAdapter{ + inline float operator( )(const cv::KeyPoint &elem, int dim)const { return dim==0?elem.pt.x:elem.pt.y; } + inline float operator( )(const cv::Point2f &elem, int dim)const { return dim==0?elem.x:elem.y; } + }; + + class ARUCO_EXPORT FractalPoseTracker + { + public: + FractalPoseTracker(); + /** init fractlPoseTracker parameters + * @brief setParams + * @param cam_params camera paremeters + * @param msconf FractalMarkerSet configuration + * @param markerSize FractalMarker size + */ + void setParams(const CameraParameters& cam_params, const FractalMarkerSet& msconf, const float markerSize=-1); + /** estimate the pose of the fractal marker. + * @brief fractalInnerPose + * @param markerDetector + * @param detected markers + * @param refinement, use or not pose refinement. True by default. + * @return true if the pose is estimated and false otherwise. If not estimated, the parameters m.Rvec and m.Tvec + * and not set. + */ + bool fractalInnerPose(const cv::Ptr markerDetector, const std::vector& markers, bool refinement=true); + /** extraction of the region of the image where the marker is estimated to be based on the previous pose + * @brief ROI + * @param imagePyramid set images + * @param img original image. The image is scaled according to the selected pyramid image. + * @param innerPoints2d collection fractal inner points. The points are scaled according to the selected pyramid image. + * @param offset. Position of the upper inner corner of the marker. The offset is scaled according to the selected pyramid image. + * @param ratio selected scaling factor + */ + bool ROI(const std::vector imagePyramid, cv::Mat &img, std::vector &innerPoints2d, cv::Point2f &offset, float &ratio); + /** classification of the corners of the marker + * @brief assignClass + * @param im image used in the classification + * @param kpoints to classify + * @param transf. Is it necessary to transform keypoints? (-MarkerSize/2 .. MarkerSize/2) to (0 .. ImageSize) + * @param wsize. Window size + */ + void assignClass(const cv::Mat &im, std::vector& kpoints, bool transf=false, int wsize=5); + + /** estimate the pose of the fractal marker. Method case 2, paper. + * @brief fractal_solve_ransac + * @param ninners (number of total inners points used) + * @param inner_kpnt matches (inner points - detected keypoints) + * @param kpnts keypoints + * @param maxIter maximum number of iterations + * @param _minInliers beta in paper + * @param _thresInliers alpha in paper + * @return Mat best model homography. + */ + cv::Mat fractal_solve_ransac(int ninners, std::vector>> inner_kpnt, std::vector kpnts, uint32_t maxIter=500, float _minInliers=0.2f, float _thresInliers=0.7f); + + /** Draw keypoints + * @brief image + * @param kpoints + * @param text + * @param transf. Is it necessary to transform keypoints? (-MarkerSize/2 .. MarkerSize/2) to (0 .. ImageSize) + */ + void drawKeyPoints(const cv::Mat image, std::vector kpoints, bool text=false, bool transf=false); + + /** Refinement of the internal points of the marker and pose estimation with these. + * @brief fractalRefinement + * @param markerDetector + * @param markerWarpPix. Optimal markerwarpPix used to select the image of the pyramid. Default value 10. + * @return true if the pose is estimated and false otherwise. If not estimated, the parameters m.Rvec and m.Tvec + * and not set. + */ + bool fractalRefinement(const cv::Ptr markerDetector, int markerWarpPix=10); + + // return the rotation vector. Returns an empty matrix if last call to estimatePose returned false + const cv::Mat getRvec() const + { + return _rvec; + } + + // return the translation vector. Returns an empty matrix if last call to estimatePose returned false + const cv::Mat getTvec() const + { + return _tvec; + } + + // return all corners from fractal marker + const std::vector getInner3d() + { + return _innerp3d; + } + + //is the pose valid? + bool isPoseValid()const{return !_rvec.empty() && !_tvec.empty();} + + FractalMarkerSet getFractal(){return _fractalMarker;} + + private: + FractalMarkerSet _fractalMarker; //FractalMarkerSet configuration + aruco::CameraParameters _cam_params; //Camera parameters. + cv::Mat _rvec, _tvec; // current poses + std::map> _id_innerp3d; //Id_marker-Inners_corners + std::vector _innerp3d; //All inners corners + std::vector _innerkpoints; //All inners keypoints + picoflann::KdTreeIndex<2,PicoFlann_KeyPointAdapter> _kdtree; + std::map _id_radius; //Idmarker_Radius(Optimus) + std::map _id_area; //Idmarker_projectedArea(Optimus) + float _preRadius = 0; //radius used previous iteration + }; +} diff --git a/thirdparty/aruco-3.1.12/src/ippe.cpp b/thirdparty/aruco-3.1.12/src/ippe.cpp new file mode 100644 index 0000000..d88e4d5 --- /dev/null +++ b/thirdparty/aruco-3.1.12/src/ippe.cpp @@ -0,0 +1,1200 @@ +/** +Copyright 2017 Rafael Muñoz Salinas. All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are +permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this list of + conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright notice, this list + of conditions and the following disclaimer in the documentation and/or other materials + provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY Rafael Muñoz Salinas ''AS IS'' AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL Rafael Muñoz Salinas OR +CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +The views and conclusions contained in the software and documentation are those of the +authors and should not be interpreted as representing official policies, either expressed +or implied, of Rafael Muñoz Salinas. +*/ + +#include "ippe.h" +#include + +#include + +using namespace cv; +using namespace std; + + +namespace aruco { + +/****** + * + */ + +cv::Mat getRTMatrix(const cv::Mat& R_, const cv::Mat& T_, int forceType) +{ + cv::Mat M; + cv::Mat R, T; + R_.copyTo(R); + T_.copyTo(T); + if (R.type() == CV_64F) + { + assert(T.type() == CV_64F); + cv::Mat Matrix = cv::Mat::eye(4, 4, CV_64FC1); + + cv::Mat R33 = cv::Mat(Matrix, cv::Rect(0, 0, 3, 3)); + if (R.total() == 3) + { + cv::Rodrigues(R, R33); + } + else if (R.total() == 9) + { + cv::Mat R64; + R.convertTo(R64, CV_64F); + R.copyTo(R33); + } + for (int i = 0; i < 3; i++) + Matrix.at(i, 3) = T.ptr(0)[i]; + M = Matrix; + } + else if (R.depth() == CV_32F) + { + cv::Mat Matrix = cv::Mat::eye(4, 4, CV_32FC1); + cv::Mat R33 = cv::Mat(Matrix, cv::Rect(0, 0, 3, 3)); + if (R.total() == 3) + { + cv::Rodrigues(R, R33); + } + else if (R.total() == 9) + { + cv::Mat R32; + R.convertTo(R32, CV_32F); + R.copyTo(R33); + } + + for (int i = 0; i < 3; i++) + Matrix.at(i, 3) = T.ptr(0)[i]; + M = Matrix; + } + + if (forceType == -1) + return M; + else + { + cv::Mat MTyped; + M.convertTo(MTyped, forceType); + return MTyped; + } +} +vector solvePnP(const vector& objPoints, const std::vector& imgPoints, + cv::InputArray cameraMatrix, cv::InputArray distCoeffs) +{ + + + cv::Mat Rvec, Tvec; + float reprojErr1, reprojErr2; + cv::Mat Rvec2, Tvec2; + + IPPE::PoseSolver Solver; + Solver.solveGeneric(objPoints, imgPoints, cameraMatrix, distCoeffs, Rvec, Tvec, reprojErr1, Rvec2, + Tvec2, reprojErr2); + + return {getRTMatrix(Rvec, Tvec, CV_32F), getRTMatrix(Rvec2, Tvec2, CV_32F)}; +} + +void solvePnP(const vector& objPoints, const std::vector& imgPoints, + cv::InputArray cameraMatrix, cv::InputArray distCoeffs,cv::Mat &rvec,cv::Mat &tvec) +{ + float reprojErr1, reprojErr2; + cv::Mat Rvec2, Tvec2; + + IPPE::PoseSolver Solver; + Solver.solveGeneric(objPoints, imgPoints, cameraMatrix, distCoeffs, rvec, tvec, reprojErr1, Rvec2, + Tvec2, reprojErr2); +} + +std::vector > solvePnP_(float size,const std::vector &imgPoints, cv::InputArray cameraMatrix, cv::InputArray distCoeffs){ + cv::Mat Rvec, Tvec, Rvec2,Tvec2; + float reprojErr1, reprojErr2; + + IPPE::PoseSolver Solver; + Solver.solveSquare(size,imgPoints,cameraMatrix,distCoeffs, Rvec, Tvec,reprojErr1,Rvec2,Tvec2,reprojErr2); + + + return {make_pair(getRTMatrix(Rvec, Tvec, CV_32F), reprojErr1), + make_pair(getRTMatrix(Rvec2, Tvec2, CV_32F), reprojErr2)}; +} + +std::vector> solvePnP_(const std::vector& objPoints, + const std::vector& imgPoints, + cv::InputArray cameraMatrix, cv::InputArray distCoeffs) +{ + cv::Mat Rvec, Tvec; + float reprojErr1, reprojErr2; + cv::Mat Rvec2, Tvec2; + + IPPE::PoseSolver Solver; + Solver.solveGeneric(objPoints, imgPoints, cameraMatrix, distCoeffs, Rvec, Tvec, reprojErr1, Rvec2, + Tvec2, reprojErr2); + + + return {make_pair(getRTMatrix(Rvec, Tvec, CV_32F), reprojErr1), + make_pair(getRTMatrix(Rvec2, Tvec2, CV_32F), reprojErr2)}; + +} +} + +IPPE::PoseSolver::PoseSolver() +{ + +} + +IPPE::PoseSolver::~PoseSolver() +{ + +} + +void IPPE::PoseSolver::solveGeneric(cv::InputArray _objectPoints, cv::InputArray _imagePoints, cv::InputArray _cameraMatrix, cv::InputArray _distCoeffs, + cv::OutputArray _rvec1, cv::OutputArray _tvec1, float& err1, cv::OutputArray _rvec2, cv::OutputArray _tvec2, float& err2) +{ + cv::Mat normalizedImagePoints; //undistored version of imagePoints + + if (_cameraMatrix.empty()) { + //there is no camera matrix and image points are given in normalized pixel coordinates. + _imagePoints.copyTo(normalizedImagePoints); + } + else { + //undistort the image points (i.e. put them in normalized pixel coordinates): + cv::undistortPoints(_imagePoints, normalizedImagePoints, _cameraMatrix, _distCoeffs); + } + + //solve: + cv::Mat Ma, Mb; + solveGeneric(_objectPoints, normalizedImagePoints, Ma, Mb); + + //the two poses computed by IPPE (sorted): + cv::Mat M1, M2; + + //sort poses by reprojection error: + sortPosesByReprojError(_objectPoints, _imagePoints, _cameraMatrix, _distCoeffs, Ma, Mb, M1, M2, err1, err2); + + //fill outputs + rot2vec(M1.colRange(0, 3).rowRange(0, 3), _rvec1); + rot2vec(M2.colRange(0, 3).rowRange(0, 3), _rvec2); + + M1.colRange(3, 4).rowRange(0, 3).copyTo(_tvec1); + M2.colRange(3, 4).rowRange(0, 3).copyTo(_tvec2); +} + +void IPPE::PoseSolver::solveGeneric(cv::InputArray _objectPoints, cv::InputArray _normalizedInputPoints, + cv::OutputArray _Ma, cv::OutputArray _Mb) +{ + + //argument checking: + size_t n = _objectPoints.rows() * _objectPoints.cols(); //number of points + int objType = _objectPoints.type(); + int type_input = _normalizedInputPoints.type(); + assert((objType == CV_32FC3) | (objType == CV_64FC3)); + assert((type_input == CV_32FC2) | (type_input == CV_64FC2)); + assert((_objectPoints.rows() == 1) | (_objectPoints.cols() == 1)); + assert((_objectPoints.rows() >= 4) | (_objectPoints.cols() >= 4)); + assert((_normalizedInputPoints.rows() == 1) | (_normalizedInputPoints.cols() == 1)); + assert(static_cast(_objectPoints.rows() * _objectPoints.cols()) == n); + + cv::Mat normalizedInputPoints; + if (type_input == CV_32FC2) { + _normalizedInputPoints.getMat().convertTo(normalizedInputPoints, CV_64FC2); + } + else { + normalizedInputPoints = _normalizedInputPoints.getMat(); + } + + cv::Mat objectInputPoints; + if (type_input == CV_32FC3) { + _objectPoints.getMat().convertTo(objectInputPoints, CV_64FC3); + } + else { + objectInputPoints = _objectPoints.getMat(); + } + + cv::Mat canonicalObjPoints; + cv::Mat MmodelPoints2Canonical; + + //transform object points to the canonical position (zero centred and on the plane z=0): + makeCanonicalObjectPoints(objectInputPoints, canonicalObjPoints, MmodelPoints2Canonical); + + //compute the homography mapping the model's points to normalizedInputPoints + cv::Mat H; + HomographyHO::homographyHO(canonicalObjPoints, _normalizedInputPoints, H); + + //now solve + cv::Mat MaCanon, MbCanon; + solveCanonicalForm(canonicalObjPoints, normalizedInputPoints, H, MaCanon, MbCanon); + + //transform computed poses to account for canonical transform: + cv::Mat Ma = MaCanon * MmodelPoints2Canonical; + cv::Mat Mb = MbCanon * MmodelPoints2Canonical; + + //output poses: + Ma.copyTo(_Ma); + Mb.copyTo(_Mb); +} + +void IPPE::PoseSolver::solveCanonicalForm(cv::InputArray _canonicalObjPoints, cv::InputArray _normalizedInputPoints, cv::InputArray _H, + cv::OutputArray _Ma, cv::OutputArray _Mb) +{ + _Ma.create(4, 4, CV_64FC1); + _Mb.create(4, 4, CV_64FC1); + + cv::Mat Ma = _Ma.getMat(); + cv::Mat Mb = _Mb.getMat(); + cv::Mat H = _H.getMat(); + + //initialise poses: + Ma.setTo(0); + Ma.at(3, 3) = 1; + Mb.setTo(0); + Mb.at(3, 3) = 1; + + //Compute the Jacobian J of the homography at (0,0): + double j00, j01, j10, j11, v0, v1; + + j00 = H.at(0, 0) - H.at(2, 0) * H.at(0, 2); + j01 = H.at(0, 1) - H.at(2, 1) * H.at(0, 2); + j10 = H.at(1, 0) - H.at(2, 0) * H.at(1, 2); + j11 = H.at(1, 1) - H.at(2, 1) * H.at(1, 2); + + //Compute the transformation of (0,0) into the image: + v0 = H.at(0, 2); + v1 = H.at(1, 2); + + //compute the two rotation solutions: + cv::Mat Ra = Ma.colRange(0, 3).rowRange(0, 3); + cv::Mat Rb = Mb.colRange(0, 3).rowRange(0, 3); + computeRotations(j00, j01, j10, j11, v0, v1, Ra, Rb); + + //for each rotation solution, compute the corresponding translation solution: + cv::Mat ta = Ma.colRange(3, 4).rowRange(0, 3); + cv::Mat tb = Mb.colRange(3, 4).rowRange(0, 3); + computeTranslation(_canonicalObjPoints, _normalizedInputPoints, Ra, ta); + computeTranslation(_canonicalObjPoints, _normalizedInputPoints, Rb, tb); +} + +void IPPE::PoseSolver::solveSquare(double squareLength, InputArray _imagePoints, InputArray _cameraMatrix, InputArray _distCoeffs, + OutputArray _rvec1, OutputArray _tvec1, float& err1, OutputArray _rvec2, OutputArray _tvec2, float& err2) +{ + //allocate outputs: + _rvec1.create(3, 1, CV_64FC1); + _tvec1.create(3, 1, CV_64FC1); + _rvec2.create(3, 1, CV_64FC1); + _tvec2.create(3, 1, CV_64FC1); + + cv::Mat normalizedInputPoints; //undistored version of imagePoints + cv::Mat objectPoints2D; + + //generate the object points: + generateSquareObjectCorners2D(squareLength, objectPoints2D); + + cv::Mat H; //homography from canonical object points to normalized pixels + + + if (_cameraMatrix.empty()) { + //this means imagePoints are defined in normalized pixel coordinates, so just copy it: + _imagePoints.copyTo(normalizedInputPoints); + } + else { + //undistort the image points (i.e. put them in normalized pixel coordinates). + cv::undistortPoints(_imagePoints, normalizedInputPoints, _cameraMatrix, _distCoeffs); + } + + if (normalizedInputPoints.type() == CV_32FC2) + { + normalizedInputPoints.convertTo(normalizedInputPoints, CV_64F); + } + + //compute H + homographyFromSquarePoints(normalizedInputPoints, squareLength / 2.0, H); + + //now solve + cv::Mat Ma, Mb; + solveCanonicalForm(objectPoints2D, normalizedInputPoints, H, Ma, Mb); + + //sort poses according to reprojection error: + cv::Mat M1, M2; + cv::Mat objectPoints3D; + generateSquareObjectCorners3D(squareLength, objectPoints3D); + + sortPosesByReprojError(objectPoints3D, normalizedInputPoints, _cameraMatrix, _distCoeffs, Ma, Mb, M1, M2, err1, err2); + + //fill outputs + rot2vec(M1.colRange(0, 3).rowRange(0, 3), _rvec1); + rot2vec(M2.colRange(0, 3).rowRange(0, 3), _rvec2); + + M1.colRange(3, 4).rowRange(0, 3).copyTo(_tvec1); + M2.colRange(3, 4).rowRange(0, 3).copyTo(_tvec2); +} + +void IPPE::PoseSolver::generateSquareObjectCorners3D(double squareLength, OutputArray _objectPoints) +{ + _objectPoints.create(1, 4, CV_64FC3); + cv::Mat objectPoints = _objectPoints.getMat(); + objectPoints.ptr(0)[0] = Vec3d(-squareLength / 2.0, squareLength / 2.0, 0.0); + objectPoints.ptr(0)[1] = Vec3d(squareLength / 2.0, squareLength / 2.0, 0.0); + objectPoints.ptr(0)[2] = Vec3d(squareLength / 2.0, -squareLength / 2.0, 0.0); + objectPoints.ptr(0)[3] = Vec3d(-squareLength / 2.0, -squareLength / 2.0, 0.0); +} + +void IPPE::PoseSolver::generateSquareObjectCorners2D(double squareLength, OutputArray _objectPoints) +{ + _objectPoints.create(1, 4, CV_64FC2); + cv::Mat objectPoints = _objectPoints.getMat(); + objectPoints.ptr(0)[0] = Vec2d(-squareLength / 2.0, squareLength / 2.0); + objectPoints.ptr(0)[1] = Vec2d(squareLength / 2.0, squareLength / 2.0); + objectPoints.ptr(0)[2] = Vec2d(squareLength / 2.0, -squareLength / 2.0); + objectPoints.ptr(0)[3] = Vec2d(-squareLength / 2.0, -squareLength / 2.0); +} + +double IPPE::PoseSolver::meanSceneDepth(InputArray _objectPoints, InputArray _rvec, InputArray _tvec) +{ + assert(_objectPoints.type() == CV_64FC3); + + size_t n = static_cast(_objectPoints.rows() * _objectPoints.cols()); + Mat R; + Mat q; + Rodrigues(_rvec, R); + double zBar = 0; + + for (size_t i = 0; i < n; i++) { + cv::Mat p(_objectPoints.getMat().at(i)); + q = R * p + _tvec.getMat(); + double z; + if (q.depth() == CV_64FC1) { + z = q.at(2); + } + else { + z = static_cast(q.at(2)); + } + zBar += z; + + //if (z <= 0) { + // std::cout << "Warning: object point " << i << " projects behind the camera! This should not be allowed. " << std::endl; + //} + } + return zBar / static_cast(n); +} + +void IPPE::PoseSolver::rot2vec(InputArray _R, OutputArray _r) +{ + assert(_R.type() == CV_64FC1); + assert(_R.rows() == 3); + assert(_R.cols() == 3); + + _r.create(3, 1, CV_64FC1); + + cv::Mat R = _R.getMat(); + cv::Mat rvec = _r.getMat(); + + double trace = R.at(0, 0) + R.at(1, 1) + R.at(2, 2); + double w_norm = acos((trace - 1.0) / 2.0); + double c0, c1, c2; + double eps = std::numeric_limits::epsilon(); + double d = 1 / (2 * sin(w_norm)) * w_norm; + if (w_norm < eps) //rotation is the identity + { + rvec.setTo(0); + } + else { + c0 = R.at(2, 1) - R.at(1, 2); + c1 = R.at(0, 2) - R.at(2, 0); + c2 = R.at(1, 0) - R.at(0, 1); + rvec.at(0) = d * c0; + rvec.at(1) = d * c1; + rvec.at(2) = d * c2; + } +} + +void IPPE::PoseSolver::computeTranslation(InputArray _objectPoints, InputArray _normalizedImgPoints, InputArray _R, OutputArray _t) +{ + //This is solved by building the linear system At = b, where t corresponds to the (unknown) translation. + //This is then inverted with the associated normal equations to give t = inv(transpose(A)*A)*transpose(A)*b + //For efficiency we only store the coefficients of (transpose(A)*A) and (transpose(A)*b) + + assert(_objectPoints.type() == CV_64FC2); + assert(_normalizedImgPoints.type() == CV_64FC2); + assert(_R.type() == CV_64FC1); + + assert((_R.rows() == 3) & (_R.cols() == 3)); + assert((_objectPoints.rows() == 1) | (_objectPoints.cols() == 1)); + assert((_normalizedImgPoints.rows() == 1) | (_normalizedImgPoints.cols() == 1)); + + size_t n = static_cast(_normalizedImgPoints.rows() * _normalizedImgPoints.cols()); + assert(n == static_cast(_objectPoints.rows() * _objectPoints.cols())); + + cv::Mat objectPoints = _objectPoints.getMat(); + cv::Mat imgPoints = _normalizedImgPoints.getMat(); + + _t.create(3, 1, CV_64FC1); + + cv::Mat R = _R.getMat(); + + //coefficients of (transpose(A)*A) + double ATA00 = n; + double ATA02 = 0; + double ATA11 = n; + double ATA12 = 0; + double ATA20 = 0; + double ATA21 = 0; + double ATA22 = 0; + + //coefficients of (transpose(A)*b) + double ATb0 = 0; + double ATb1 = 0; + double ATb2 = 0; + + //S gives inv(transpose(A)*A)/det(A)^2 + double S00, S01, S02; + double S10, S11, S12; + double S20, S21, S22; + + double rx, ry, rz; + double a2; + double b2; + double bx, by; + + //now loop through each point and increment the coefficients: + for (size_t i = 0; i < n; i++) { + rx = R.at(0, 0) * objectPoints.at(i)(0) + R.at(0, 1) * objectPoints.at(i)(1); + ry = R.at(1, 0) * objectPoints.at(i)(0) + R.at(1, 1) * objectPoints.at(i)(1); + rz = R.at(2, 0) * objectPoints.at(i)(0) + R.at(2, 1) * objectPoints.at(i)(1); + + a2 = -imgPoints.at(i)(0); + b2 = -imgPoints.at(i)(1); + + ATA02 = ATA02 + a2; + ATA12 = ATA12 + b2; + ATA20 = ATA20 + a2; + ATA21 = ATA21 + b2; + ATA22 = ATA22 + a2 * a2 + b2 * b2; + + bx = -a2 * rz - rx; + by = -b2 * rz - ry; + + ATb0 = ATb0 + bx; + ATb1 = ATb1 + by; + ATb2 = ATb2 + a2 * bx + b2 * by; + } + + double detAInv = 1.0 / (ATA00 * ATA11 * ATA22 - ATA00 * ATA12 * ATA21 - ATA02 * ATA11 * ATA20); + + //construct S: + S00 = ATA11 * ATA22 - ATA12 * ATA21; + S01 = ATA02 * ATA21; + S02 = -ATA02 * ATA11; + S10 = ATA12 * ATA20; + S11 = ATA00 * ATA22 - ATA02 * ATA20; + S12 = -ATA00 * ATA12; + S20 = -ATA11 * ATA20; + S21 = -ATA00 * ATA21; + S22 = ATA00 * ATA11; + + //solve t: + Mat t = _t.getMat(); + t.at(0) = detAInv * (S00 * ATb0 + S01 * ATb1 + S02 * ATb2); + t.at(1) = detAInv * (S10 * ATb0 + S11 * ATb1 + S12 * ATb2); + t.at(2) = detAInv * (S20 * ATb0 + S21 * ATb1 + S22 * ATb2); +} + +void IPPE::PoseSolver::computeRotations(double j00, double j01, double j10, double j11, double p, double q, OutputArray _R1, OutputArray _R2) +{ + //This is fairly optimized code which makes it hard to understand. The matlab code is certainly easier to read. + _R1.create(3, 3, CV_64FC1); + _R2.create(3, 3, CV_64FC1); + + double a00, a01, a10, a11, ata00, ata01, ata11, b00, b01, b10, b11, binv00, binv01, binv10, binv11; + //double rv00, rv01, rv02, rv10, rv11, rv12, rv20, rv21, rv22; + double rtilde00, rtilde01, rtilde10, rtilde11; + double rtilde00_2, rtilde01_2, rtilde10_2, rtilde11_2; + double b0, b1, gamma, dtinv; + double sp; + + Mat Rv; + cv::Mat v(3,1,CV_64FC1); + v.at(0) = p; + v.at(1) = q; + v.at(2) = 1; + rotateVec2ZAxis(v,Rv); + Rv = Rv.t(); + + + //setup the 2x2 SVD decomposition: + double rv00, rv01, rv02; + double rv10, rv11, rv12; + double rv20, rv21, rv22; + rv00 = Rv.at(0,0); + rv01 = Rv.at(0,1); + rv02 = Rv.at(0,2); + + rv10 = Rv.at(1,0); + rv11 = Rv.at(1,1); + rv12 = Rv.at(1,2); + + rv20 = Rv.at(2,0); + rv21 = Rv.at(2,1); + rv22 = Rv.at(2,2); + + b00 = rv00 - p * rv20; + b01 = rv01 - p * rv21; + b10 = rv10 - q * rv20; + b11 = rv11 - q * rv21; + + dtinv = 1.0 / ((b00 * b11 - b01 * b10)); + + binv00 = dtinv * b11; + binv01 = -dtinv * b01; + binv10 = -dtinv * b10; + binv11 = dtinv * b00; + + a00 = binv00 * j00 + binv01 * j10; + a01 = binv00 * j01 + binv01 * j11; + a10 = binv10 * j00 + binv11 * j10; + a11 = binv10 * j01 + binv11 * j11; + + //compute the largest singular value of A: + ata00 = a00 * a00 + a01 * a01; + ata01 = a00 * a10 + a01 * a11; + ata11 = a10 * a10 + a11 * a11; + + gamma = sqrt(0.5 * (ata00 + ata11 + sqrt((ata00 - ata11) * (ata00 - ata11) + 4.0 * ata01 * ata01))); + + //reconstruct the full rotation matrices: + rtilde00 = a00 / gamma; + rtilde01 = a01 / gamma; + rtilde10 = a10 / gamma; + rtilde11 = a11 / gamma; + + rtilde00_2 = rtilde00 * rtilde00; + rtilde01_2 = rtilde01 * rtilde01; + rtilde10_2 = rtilde10 * rtilde10; + rtilde11_2 = rtilde11 * rtilde11; + + b0 = sqrt(-rtilde00_2 - rtilde10_2 + 1); + b1 = sqrt(-rtilde01_2 - rtilde11_2 + 1); + sp = (-rtilde00 * rtilde01 - rtilde10 * rtilde11); + + if (sp < 0) { + b1 = -b1; + } + + //store results: + Mat R1 = _R1.getMat(); + Mat R2 = _R2.getMat(); + + R1.at(0, 0) = (rtilde00)*rv00 + (rtilde10)*rv01 + (b0)*rv02; + R1.at(0, 1) = (rtilde01)*rv00 + (rtilde11)*rv01 + (b1)*rv02; + R1.at(0, 2) = (b1 * rtilde10 - b0 * rtilde11) * rv00 + (b0 * rtilde01 - b1 * rtilde00) * rv01 + (rtilde00 * rtilde11 - rtilde01 * rtilde10) * rv02; + R1.at(1, 0) = (rtilde00)*rv10 + (rtilde10)*rv11 + (b0)*rv12; + R1.at(1, 1) = (rtilde01)*rv10 + (rtilde11)*rv11 + (b1)*rv12; + R1.at(1, 2) = (b1 * rtilde10 - b0 * rtilde11) * rv10 + (b0 * rtilde01 - b1 * rtilde00) * rv11 + (rtilde00 * rtilde11 - rtilde01 * rtilde10) * rv12; + R1.at(2, 0) = (rtilde00)*rv20 + (rtilde10)*rv21 + (b0)*rv22; + R1.at(2, 1) = (rtilde01)*rv20 + (rtilde11)*rv21 + (b1)*rv22; + R1.at(2, 2) = (b1 * rtilde10 - b0 * rtilde11) * rv20 + (b0 * rtilde01 - b1 * rtilde00) * rv21 + (rtilde00 * rtilde11 - rtilde01 * rtilde10) * rv22; + + R2.at(0, 0) = (rtilde00)*rv00 + (rtilde10)*rv01 + (-b0) * rv02; + R2.at(0, 1) = (rtilde01)*rv00 + (rtilde11)*rv01 + (-b1) * rv02; + R2.at(0, 2) = (b0 * rtilde11 - b1 * rtilde10) * rv00 + (b1 * rtilde00 - b0 * rtilde01) * rv01 + (rtilde00 * rtilde11 - rtilde01 * rtilde10) * rv02; + R2.at(1, 0) = (rtilde00)*rv10 + (rtilde10)*rv11 + (-b0) * rv12; + R2.at(1, 1) = (rtilde01)*rv10 + (rtilde11)*rv11 + (-b1) * rv12; + R2.at(1, 2) = (b0 * rtilde11 - b1 * rtilde10) * rv10 + (b1 * rtilde00 - b0 * rtilde01) * rv11 + (rtilde00 * rtilde11 - rtilde01 * rtilde10) * rv12; + R2.at(2, 0) = (rtilde00)*rv20 + (rtilde10)*rv21 + (-b0) * rv22; + R2.at(2, 1) = (rtilde01)*rv20 + (rtilde11)*rv21 + (-b1) * rv22; + R2.at(2, 2) = (b0 * rtilde11 - b1 * rtilde10) * rv20 + (b1 * rtilde00 - b0 * rtilde01) * rv21 + (rtilde00 * rtilde11 - rtilde01 * rtilde10) * rv22; +} + + +void IPPE::PoseSolver::homographyFromSquarePoints(InputArray _targetPoints, double halfLength, OutputArray H_) +{ + + assert((_targetPoints.type() == CV_32FC2) | (_targetPoints.type() == CV_64FC2)); + + cv::Mat pts = _targetPoints.getMat(); + H_.create(3, 3, CV_64FC1); + Mat H = H_.getMat(); + + double p1x, p1y; + double p2x, p2y; + double p3x, p3y; + double p4x, p4y; + + if (_targetPoints.type() == CV_32FC2) { + p1x = -pts.at(0)(0); + p1y = -pts.at(0)(1); + + p2x = -pts.at(1)(0); + p2y = -pts.at(1)(1); + + p3x = -pts.at(2)(0); + p3y = -pts.at(2)(1); + + p4x = -pts.at(3)(0); + p4y = -pts.at(3)(1); + } + else { + p1x = -pts.at(0)(0); + p1y = -pts.at(0)(1); + + p2x = -pts.at(1)(0); + p2y = -pts.at(1)(1); + + p3x = -pts.at(2)(0); + p3y = -pts.at(2)(1); + + p4x = -pts.at(3)(0); + p4y = -pts.at(3)(1); + } + + //analytic solution: + double detsInv = -1 / (halfLength * (p1x * p2y - p2x * p1y - p1x * p4y + p2x * p3y - p3x * p2y + p4x * p1y + p3x * p4y - p4x * p3y)); + + H.at(0, 0) = detsInv * (p1x * p3x * p2y - p2x * p3x * p1y - p1x * p4x * p2y + p2x * p4x * p1y - p1x * p3x * p4y + p1x * p4x * p3y + p2x * p3x * p4y - p2x * p4x * p3y); + H.at(0, 1) = detsInv * (p1x * p2x * p3y - p1x * p3x * p2y - p1x * p2x * p4y + p2x * p4x * p1y + p1x * p3x * p4y - p3x * p4x * p1y - p2x * p4x * p3y + p3x * p4x * p2y); + H.at(0, 2) = detsInv * halfLength * (p1x * p2x * p3y - p2x * p3x * p1y - p1x * p2x * p4y + p1x * p4x * p2y - p1x * p4x * p3y + p3x * p4x * p1y + p2x * p3x * p4y - p3x * p4x * p2y); + H.at(1, 0) = detsInv * (p1x * p2y * p3y - p2x * p1y * p3y - p1x * p2y * p4y + p2x * p1y * p4y - p3x * p1y * p4y + p4x * p1y * p3y + p3x * p2y * p4y - p4x * p2y * p3y); + H.at(1, 1) = detsInv * (p2x * p1y * p3y - p3x * p1y * p2y - p1x * p2y * p4y + p4x * p1y * p2y + p1x * p3y * p4y - p4x * p1y * p3y - p2x * p3y * p4y + p3x * p2y * p4y); + H.at(1, 2) = detsInv * halfLength * (p1x * p2y * p3y - p3x * p1y * p2y - p2x * p1y * p4y + p4x * p1y * p2y - p1x * p3y * p4y + p3x * p1y * p4y + p2x * p3y * p4y - p4x * p2y * p3y); + H.at(2, 0) = -detsInv * (p1x * p3y - p3x * p1y - p1x * p4y - p2x * p3y + p3x * p2y + p4x * p1y + p2x * p4y - p4x * p2y); + H.at(2, 1) = detsInv * (p1x * p2y - p2x * p1y - p1x * p3y + p3x * p1y + p2x * p4y - p4x * p2y - p3x * p4y + p4x * p3y); + H.at(2, 2) = 1.0; +} + +void IPPE::PoseSolver::makeCanonicalObjectPoints(InputArray _objectPoints, OutputArray _canonicalObjPoints, OutputArray _MmodelPoints2Canonical) +{ + + int objType = _objectPoints.type(); + assert((objType == CV_64FC3) | (objType == CV_32FC3)); + + size_t n = _objectPoints.rows() * _objectPoints.cols(); + + _canonicalObjPoints.create(1, n, CV_64FC2); + _MmodelPoints2Canonical.create(4, 4, CV_64FC1); + + cv::Mat objectPoints = _objectPoints.getMat(); + cv::Mat canonicalObjPoints = _canonicalObjPoints.getMat(); + + cv::Mat UZero(3, n, CV_64FC1); + + double xBar = 0; + double yBar = 0; + double zBar = 0; + bool isOnZPlane = true; + for (size_t i = 0; i < n; i++) { + double x, y, z; + if (objType == CV_32FC3) { + x = static_cast(objectPoints.at(i)[0]); + y = static_cast(objectPoints.at(i)[1]); + z = static_cast(objectPoints.at(i)[2]); + } + else { + x = objectPoints.at(i)[0]; + y = objectPoints.at(i)[1]; + z = objectPoints.at(i)[2]; + + if (abs(z) > IPPE_SMALL) { + isOnZPlane = false; + } + } + xBar += x; + yBar += y; + zBar += z; + + UZero.at(0, i) = x; + UZero.at(1, i) = y; + UZero.at(2, i) = z; + } + xBar = xBar / (double)n; + yBar = yBar / (double)n; + zBar = zBar / (double)n; + + for (size_t i = 0; i < n; i++) { + UZero.at(0, i) -= xBar; + UZero.at(1, i) -= yBar; + UZero.at(2, i) -= zBar; + } + + cv::Mat MCenter(4, 4, CV_64FC1); + MCenter.setTo(0); + MCenter.at(0, 0) = 1; + MCenter.at(1, 1) = 1; + MCenter.at(2, 2) = 1; + MCenter.at(3, 3) = 1; + + MCenter.at(0, 3) = -xBar; + MCenter.at(1, 3) = -yBar; + MCenter.at(2, 3) = -zBar; + + if (isOnZPlane) { + //MmodelPoints2Canonical is given by MCenter + MCenter.copyTo(_MmodelPoints2Canonical); + for (size_t i = 0; i < n; i++) { + canonicalObjPoints.at(i)[0] = UZero.at(0, i); + canonicalObjPoints.at(i)[1] = UZero.at(1, i); + } + } + else { + cv::Mat UZeroAligned(3, n, CV_64FC1); + cv::Mat R; //rotation that rotates objectPoints to the plane z=0 + + if (!computeObjextSpaceR3Pts(objectPoints,R)) + { + //we could not compute R, problably because there is a duplicate point in {objectPoints(0),objectPoints(1),objectPoints(2)}. So we compute it with the SVD (which is slower): + computeObjextSpaceRSvD(UZero,R); + } + + UZeroAligned = R * UZero; + + for (size_t i = 0; i < n; i++) { + canonicalObjPoints.at(i)[0] = UZeroAligned.at(0, i); + canonicalObjPoints.at(i)[1] = UZeroAligned.at(1, i); + assert(abs(UZeroAligned.at(2, i))<=IPPE_SMALL); + } + + cv::Mat MRot(4, 4, CV_64FC1); + MRot.setTo(0); + MRot.at(3, 3) = 1; + + R.copyTo(MRot.colRange(0, 3).rowRange(0, 3)); + cv::Mat Mb = MRot * MCenter; + Mb.copyTo(_MmodelPoints2Canonical); + } +} + +void IPPE::PoseSolver::evalReprojError(cv::InputArray _objectPoints, cv::InputArray _imagePoints, cv::InputArray _cameraMatrix, cv::InputArray _distCoeffs, cv::InputArray _M, float& err) +{ + cv::Mat projectedPoints; + cv::Mat imagePoints = _imagePoints.getMat(); + cv::Mat r; + rot2vec(_M.getMat().colRange(0, 3).rowRange(0, 3), r); + + if (_cameraMatrix.empty()) { + //there is no camera matrix and image points are in normalized pixel coordinates + cv::Mat K(3, 3, CV_64FC1); + K.setTo(0); + K.at(0, 0) = 1; + K.at(1, 1) = 1; + K.at(2, 2) = 1; + cv::Mat kc; + cv::projectPoints(_objectPoints, r, _M.getMat().colRange(3, 4).rowRange(0, 3), K, kc, projectedPoints); + } + else { + cv::projectPoints(_objectPoints, r, _M.getMat().colRange(3, 4).rowRange(0, 3), _cameraMatrix, _distCoeffs, projectedPoints); + } + + err = 0; + size_t n = _objectPoints.rows() * _objectPoints.cols(); + + float dx, dy; + for (size_t i = 0; i < n; i++) { + if (projectedPoints.depth() == CV_32FC1) { + dx = projectedPoints.at(i)[0] - imagePoints.at(i)[0]; + dy = projectedPoints.at(i)[1] - imagePoints.at(i)[1]; + } + else { + dx = projectedPoints.at(i)[0] - imagePoints.at(i)[0]; + dy = projectedPoints.at(i)[1] - imagePoints.at(i)[1]; + } + + err += dx * dx + dy * dy; + } + err = sqrt(err / (2.0f * n)); +} + +void IPPE::PoseSolver::sortPosesByReprojError(cv::InputArray _objectPoints, cv::InputArray _imagePoints, cv::InputArray _cameraMatrix, cv::InputArray _distCoeffs, cv::InputArray _Ma, cv::InputArray _Mb, cv::OutputArray _M1, cv::OutputArray _M2, float& err1, float& err2) +{ + float erra, errb; + evalReprojError(_objectPoints, _imagePoints, _cameraMatrix, _distCoeffs, _Ma, erra); + evalReprojError(_objectPoints, _imagePoints, _cameraMatrix, _distCoeffs, _Mb, errb); + if (erra < errb) { + err1 = erra; + _Ma.copyTo(_M1); + + err2 = errb; + _Mb.copyTo(_M2); + } + else { + err1 = errb; + _Mb.copyTo(_M1); + + err2 = erra; + _Ma.copyTo(_M2); + } +} + +void HomographyHO::normalizeDataIsotropic(cv::InputArray _Data, cv::OutputArray _DataN, cv::OutputArray _T, cv::OutputArray _Ti) +{ + cv::Mat Data = _Data.getMat(); + int numPoints = Data.rows * Data.cols; + assert((Data.rows == 1) | (Data.cols == 1)); + assert((Data.channels() == 2) | (Data.channels() == 3)); + assert(numPoints >= 4); + + int dataType = _Data.type(); + assert((dataType == CV_64FC2) | (dataType == CV_64FC3) | (dataType == CV_32FC2) | (dataType == CV_32FC3)); + + _DataN.create(2, numPoints, CV_64FC1); + + _T.create(3, 3, CV_64FC1); + _Ti.create(3, 3, CV_64FC1); + + cv::Mat DataN = _DataN.getMat(); + cv::Mat T = _T.getMat(); + cv::Mat Ti = _Ti.getMat(); + + _T.setTo(0); + _Ti.setTo(0); + + double xm, ym; + int numChannels = Data.channels(); + + xm = 0; + ym = 0; + for (int i = 0; i < numPoints; i++) { + if (numChannels == 2) { + if (dataType == CV_32FC2) { + xm = xm + Data.at(i)[0]; + ym = ym + Data.at(i)[1]; + } + else { + xm = xm + Data.at(i)[0]; + ym = ym + Data.at(i)[1]; + } + } + else { + if (dataType == CV_32FC3) { + xm = xm + Data.at(i)[0]; + ym = ym + Data.at(i)[1]; + } + else { + xm = xm + Data.at(i)[0]; + ym = ym + Data.at(i)[1]; + } + } + } + xm = xm / (double)numPoints; + ym = ym / (double)numPoints; + + double kappa = 0; + double xh, yh; + + for (int i = 0; i < numPoints; i++) { + + if (numChannels == 2) { + if (dataType == CV_32FC2) { + xh = Data.at(i)[0] - xm; + yh = Data.at(i)[1] - ym; + } + else { + xh = Data.at(i)[0] - xm; + yh = Data.at(i)[1] - ym; + } + } + else { + if (dataType == CV_32FC3) { + xh = Data.at(i)[0] - xm; + yh = Data.at(i)[1] - ym; + } + else { + xh = Data.at(i)[0] - xm; + yh = Data.at(i)[1] - ym; + } + } + + DataN.at(0, i) = xh; + DataN.at(1, i) = yh; + kappa = kappa + xh * xh + yh * yh; + } + double beta = sqrt(2 * numPoints / kappa); + DataN = DataN * beta; + + T.at(0, 0) = 1.0 / beta; + T.at(1, 1) = 1.0 / beta; + + T.at(0, 2) = xm; + T.at(1, 2) = ym; + + T.at(2, 2) = 1; + + Ti.at(0, 0) = beta; + Ti.at(1, 1) = beta; + + Ti.at(0, 2) = -beta * xm; + Ti.at(1, 2) = -beta * ym; + + Ti.at(2, 2) = 1; +} + +void HomographyHO::homographyHO(cv::InputArray _srcPoints, cv::InputArray _targPoints, cv::OutputArray _H) +{ + + _H.create(3, 3, CV_64FC1); + cv::Mat H = _H.getMat(); + + cv::Mat DataA, DataB, TA, TAi, TB, TBi; + + HomographyHO::normalizeDataIsotropic(_srcPoints, DataA, TA, TAi); + HomographyHO::normalizeDataIsotropic(_targPoints, DataB, TB, TBi); + + int n = DataA.cols; + assert(n == DataB.cols); + + cv::Mat C1(1, n, CV_64FC1); + cv::Mat C2(1, n, CV_64FC1); + cv::Mat C3(1, n, CV_64FC1); + cv::Mat C4(1, n, CV_64FC1); + + cv::Mat Mx(n, 3, CV_64FC1); + cv::Mat My(n, 3, CV_64FC1); + + double mC1, mC2, mC3, mC4; + mC1 = 0; + mC2 = 0; + mC3 = 0; + mC4 = 0; + + for (int i = 0; i < n; i++) { + C1.at(0, i) = -DataB.at(0, i) * DataA.at(0, i); + C2.at(0, i) = -DataB.at(0, i) * DataA.at(1, i); + C3.at(0, i) = -DataB.at(1, i) * DataA.at(0, i); + C4.at(0, i) = -DataB.at(1, i) * DataA.at(1, i); + + mC1 = mC1 + C1.at(0, i); + mC2 = mC2 + C2.at(0, i); + mC3 = mC3 + C3.at(0, i); + mC4 = mC4 + C4.at(0, i); + } + + mC1 = mC1 / n; + mC2 = mC2 / n; + mC3 = mC3 / n; + mC4 = mC4 / n; + + for (int i = 0; i < n; i++) { + Mx.at(i, 0) = C1.at(0, i) - mC1; + Mx.at(i, 1) = C2.at(0, i) - mC2; + Mx.at(i, 2) = -DataB.at(0, i); + + My.at(i, 0) = C3.at(0, i) - mC3; + My.at(i, 1) = C4.at(0, i) - mC4; + My.at(i, 2) = -DataB.at(1, i); + } + + cv::Mat DataAT, DataADataAT, DataADataATi, Pp, Bx, By, Ex, Ey, D; + + cv::transpose(DataA, DataAT); + DataADataAT = DataA * DataAT; + double dt = DataADataAT.at(0, 0) * DataADataAT.at(1, 1) - DataADataAT.at(0, 1) * DataADataAT.at(1, 0); + + DataADataATi = cv::Mat(2, 2, CV_64FC1); + DataADataATi.at(0, 0) = DataADataAT.at(1, 1) / dt; + DataADataATi.at(0, 1) = -DataADataAT.at(0, 1) / dt; + DataADataATi.at(1, 0) = -DataADataAT.at(1, 0) / dt; + DataADataATi.at(1, 1) = DataADataAT.at(0, 0) / dt; + + Pp = DataADataATi * DataA; + + Bx = Pp * Mx; + By = Pp * My; + + Ex = DataAT * Bx; + Ey = DataAT * By; + + D = cv::Mat(2 * n, 3, CV_64FC1); + cv::Mat DT, DDT; + + for (int i = 0; i < n; i++) { + D.at(i, 0) = Mx.at(i, 0) - Ex.at(i, 0); + D.at(i, 1) = Mx.at(i, 1) - Ex.at(i, 1); + D.at(i, 2) = Mx.at(i, 2) - Ex.at(i, 2); + + D.at(i + n, 0) = My.at(i, 0) - Ey.at(i, 0); + D.at(i + n, 1) = My.at(i, 1) - Ey.at(i, 1); + D.at(i + n, 2) = My.at(i, 2) - Ey.at(i, 2); + } + + cv::transpose(D, DT); + DDT = DT * D; + + cv::Mat S, U, V, h12, h45; + double h3, h6; + + cv::eigen(DDT, S, U); + + cv::Mat h789(3, 1, CV_64FC1); + h789.at(0, 0) = U.at(2, 0); + h789.at(1, 0) = U.at(2, 1); + h789.at(2, 0) = U.at(2, 2); + + h12 = -Bx * h789; + h45 = -By * h789; + + h3 = -(mC1 * h789.at(0, 0) + mC2 * h789.at(1, 0)); + h6 = -(mC3 * h789.at(0, 0) + mC4 * h789.at(1, 0)); + + H.at(0, 0) = h12.at(0, 0); + H.at(0, 1) = h12.at(1, 0); + H.at(0, 2) = h3; + + H.at(1, 0) = h45.at(0, 0); + H.at(1, 1) = h45.at(1, 0); + H.at(1, 2) = h6; + + H.at(2, 0) = h789.at(0, 0); + H.at(2, 1) = h789.at(1, 0); + H.at(2, 2) = h789.at(2, 0); + + H = TB * H * TAi; + H = H / H.at(2, 2); +} + + +void IPPE::PoseSolver::rotateVec2ZAxis(InputArray _a, OutputArray _Ra) +{ + _Ra.create(3,3,CV_64FC1); + Mat Ra = _Ra.getMat(); + + double ax = _a.getMat().at(0); + double ay = _a.getMat().at(1); + double az = _a.getMat().at(2); + + double nrm = sqrt(ax*ax + ay*ay + az*az); + ax = ax/nrm; + ay = ay/nrm; + az = az/nrm; + + double c = az; + + if (abs(1.0+c)< std::numeric_limits::epsilon()) + { + Ra.setTo(0.0); + Ra.at(0,0) = 1.0; + Ra.at(1,1) = 1.0; + Ra.at(2,2) = -1.0; + } + else + { + double d = 1.0/(1.0+c); + double ax2 = ax*ax; + double ay2 = ay*ay; + double axay = ax*ay; + + Ra.at(0,0) = - ax2*d + 1.0; + Ra.at(0,1) = -axay*d; + Ra.at(0,2) = -ax; + + Ra.at(1,0) = -axay*d; + Ra.at(1,1) = - ay2*d + 1.0; + Ra.at(1,2) = -ay; + + Ra.at(2,0) = ax; + Ra.at(2,1) = ay; + Ra.at(2,2) = 1.0 - (ax2 + ay2)*d; + } + + +} + +bool IPPE::PoseSolver::computeObjextSpaceR3Pts(InputArray _objectPoints, OutputArray R) +{ + bool ret; //return argument + double p1x,p1y,p1z; + double p2x,p2y,p2z; + double p3x,p3y,p3z; + + cv::Mat objectPoints = _objectPoints.getMat(); + size_t n = objectPoints.rows*objectPoints.cols; + if (objectPoints.type() == CV_32FC3) + { + p1x = objectPoints.at(0)[0]; + p1y = objectPoints.at(0)[1]; + p1z = objectPoints.at(0)[2]; + + p2x = objectPoints.at(1)[0]; + p2y = objectPoints.at(1)[1]; + p2z = objectPoints.at(1)[2]; + + p3x = objectPoints.at(2)[0]; + p3y = objectPoints.at(2)[1]; + p3z = objectPoints.at(2)[2]; + } + else + { + p1x = objectPoints.at(0)[0]; + p1y = objectPoints.at(0)[1]; + p1z = objectPoints.at(0)[2]; + + p2x = objectPoints.at(1)[0]; + p2y = objectPoints.at(1)[1]; + p2z = objectPoints.at(1)[2]; + + p3x = objectPoints.at(2)[0]; + p3y = objectPoints.at(2)[1]; + p3z = objectPoints.at(2)[2]; + } + + double nx = (p1y - p2y)*(p1z - p3z) - (p1y - p3y)*(p1z - p2z); + double ny = (p1x - p3x)*(p1z - p2z) - (p1x - p2x)*(p1z - p3z); + double nz = (p1x - p2x)*(p1y - p3y) - (p1x - p3x)*(p1y - p2y); + + double nrm = sqrt(nx*nx+ ny*ny + nz*nz); + if (nrm>IPPE_SMALL) + { + nx = nx/nrm; + ny = ny/nrm; + nz = nz/nrm; + cv::Mat v(3,1,CV_64FC1); + v.at(0) = nx; + v.at(1) = ny; + v.at(2) = nz; + rotateVec2ZAxis(v,R); + ret = true; + } + else + { + ret = false; + } + return ret; +} + +bool IPPE::PoseSolver::computeObjextSpaceRSvD(InputArray _objectPointsZeroMean, OutputArray _R) +{ + bool ret; //return argument + _R.create(3,3,CV_64FC1); + cv::Mat R = _R.getMat(); + + //we could not compute R with the first three points, so lets use the SVD + cv::SVD s; + cv::Mat W, U, VT; + s.compute(_objectPointsZeroMean.getMat() * _objectPointsZeroMean.getMat().t(), W, U, VT); + double s3 = W.at(2); + double s2 = W.at(1); + + //check if points are coplanar: + assert(s3 / s2 < IPPE_SMALL); + + R = U.t(); + if (cv::determinant(R) < 0) { //this ensures R is a rotation matrix and not a general unitary matrix: + R.at(2, 0) = -R.at(2, 0); + R.at(2, 1) = -R.at(2, 1); + R.at(2, 2) = -R.at(2, 2); + } + ret = true; + return ret; +} diff --git a/thirdparty/aruco-3.1.12/src/ippe.h b/thirdparty/aruco-3.1.12/src/ippe.h new file mode 100644 index 0000000..d53cbb6 --- /dev/null +++ b/thirdparty/aruco-3.1.12/src/ippe.h @@ -0,0 +1,278 @@ +// This is the core header file for IPPE. Infinitesimal Plane-based Pose Estimation (IPPE) is a very fast and accurate +// way to compute a camera's pose from a single image of a planar object using point correspondences. This has uses in +// several applications, including augmented reality, 3D tracking and pose estimation with planar markers, and 3D scene +// understanding. +// This package is free and covered by the BSD licence without any warranty. We hope you find this code useful and if so +// please cite our paper in your work: + +//@article{ year={2014}, issn={0920-5691}, journal={International Journal of Computer Vision}, volume={109}, number={3}, +//doi={10.1007/s11263-014-0725-5}, title={Infinitesimal Plane-Based Pose Estimation}, +//url={http://dx.doi.org/10.1007/s11263-014-0725-5}, publisher={Springer US}, keywords={Plane; Pose; SfM; PnP; +//Homography}, author={Collins, Toby and Bartoli, Adrien}, pages={252-286}, language={English} } + +// Please contact Toby (toby.collins@gmail.com) if you have any questions about the code, paper and IPPE. + +/** +Copyright 2017 Rafael Muñoz Salinas. All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are +permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this list of + conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright notice, this list + of conditions and the following disclaimer in the documentation and/or other materials + provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY Rafael Muñoz Salinas ''AS IS'' AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL Rafael Muñoz Salinas OR +CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +The views and conclusions contained in the software and documentation are those of the +authors and should not be interpreted as representing official policies, either expressed +or implied, of Rafael Muñoz Salinas. +*/ + +#ifndef _IPPE_H_ +#define _IPPE_H_ + +#include +#include +#include "aruco_export.h" +#include + +#define IPPE_SMALL 1e-7 //a small constant used to test 'small' values close to zero. + +namespace aruco +{ + // returns the two solutions + std::vector solvePnP(const std::vector& objPoints, const std::vector& imgPoints, + cv::InputArray cameraMatrix, cv::InputArray distCoeffs); + void solvePnP(const std::vector& objPoints, const std::vector& imgPoints, + cv::InputArray cameraMatrix, cv::InputArray distCoeffs,cv::Mat &rvec,cv::Mat &tvec); + ARUCO_EXPORT std::vector > solvePnP_(float size,const std::vector &imgPoints, cv::InputArray cameraMatrix, cv::InputArray distCoeffs); + + std::vector> solvePnP_(const std::vector& objPoints, + const std::vector& imgPoints, + cv::InputArray cameraMatrix, cv::InputArray distCoeffs); + +} +namespace IPPE { + +class PoseSolver { + +public: + + /** + * @brief PoseSolver constructor + */ + PoseSolver(); + + /** + * @brief PoseSolver destructor + */ + ~PoseSolver(); + + /** + * @brief Finds the two possible poses of a planar object given a set of correspondences and their respective reprojection errors. The poses are sorted with the first having the lowest reprojection error. + * @param _objectPoints Array of 4 or more coplanar object points defined in object coordinates. 1xN/Nx1 3-channel (float or double) where N is the number of points + * @param _imagePoints Array of corresponding image points, 1xN/Nx1 2-channel. This can either be in pixel coordinates or normalized pixel coordinates. + * @param _cameraMatrix Intrinsic camera matrix (same definition as OpenCV). If _imagePoints is in normalized pixel coordinates you must set _cameraMatrix = cv::noArray() + * @param _distCoeffs Intrinsic camera distortion vector (same definition as OpenCV). If _imagePoints is in normalized pixel coordinates you must set _cameraMatrix = cv::noArray() + * @param _rvec1 First rotation solution (3x1 rotation vector) + * @param _tvec1 First translation solution (3x1 vector) + * @param reprojErr1 Reprojection error of first solution + * @param _rvec2 Second rotation solution (3x1 rotation vector) + * @param _tvec2 Second translation solution (3x1 vector) + * @param reprojErr2 Reprojection error of second solution + */ + void solveGeneric(cv::InputArray _objectPoints, cv::InputArray _imagePoints, cv::InputArray _cameraMatrix, cv::InputArray _distCoeffs, + cv::OutputArray _rvec1, cv::OutputArray _tvec1, float& reprojErr1, cv::OutputArray _rvec2, cv::OutputArray _tvec2, float& reprojErr2); + + /** @brief Finds the two possible poses of a square planar object and their respective reprojection errors using IPPE. These poses are sorted so that the first one is the one with the lowest reprojection error. + * + * @param _squareLength The square's length (which is also it's width) in object coordinate units (e.g. millimeters, meters, etc.) + * @param _imagePoints Array of corresponding image points, 1xN/Nx1 2-channel. This can either be in pixel coordinates or normalized pixel coordinates. + * @param _cameraMatrix Intrinsic camera matrix (same definition as OpenCV). If _imagePoints is in normalized pixel coordinates you must set _cameraMatrix = cv::noArray() + * @param _distCoeffs Intrinsic camera distortion vector (same definition as OpenCV). If _imagePoints is in normalized pixel coordinates you must set _cameraMatrix = cv::noArray() + * @param _rvec1 First rotation solution (3x1 rotation vector) + * @param _tvec1 First translation solution (3x1 vector) + * @param reprojErr1 Reprojection error of first solution + * @param _rvec2 Second rotation solution (3x1 rotation vector) + * @param _tvec2 Second translation solution (3x1 vector) + * @param reprojErr2 Reprojection error of second solution + */ + void solveSquare(double squareLength, cv::InputArray _imagePoints, cv::InputArray _cameraMatrix, cv::InputArray _distCoeffs, + cv::OutputArray _rvec1, cv::OutputArray _tvec1, float& reprojErr1, cv::OutputArray _rvec2, cv::OutputArray _tvec2, float& reprojErr2); + + /** + * @brief Generates the 4 object points of a square planar object + * @param squareLength The square's length (which is also it's width) in object coordinate units (e.g. millimeters, meters, etc.) + * @param _objectPoints Set of 4 object points (1x4 3-channel double) + */ + void generateSquareObjectCorners3D(double squareLength, cv::OutputArray _objectPoints); + + /** + * @brief Generates the 4 object points of a square planar object, without including the z-component (which is z=0 for all points). + * @param squareLength The square's length (which is also it's width) in object coordinate units (e.g. millimeters, meters, etc.) + * @param _objectPoints Set of 4 object points (1x4 2-channel double) + */ + void generateSquareObjectCorners2D(double squareLength, cv::OutputArray _objectPoints); + + /** + * @brief Computes the average depth of an object given its pose in camera coordinates + * @param objectPoints: Object points defined in 3D object space + * @param rvec: Rotation component of pose + * @param tvec: Translation component of pose + * @return: average depth of the object + */ + double meanSceneDepth(cv::InputArray objectPoints, cv::InputArray rvec, cv::InputArray tvec); + +private: + /** + * @brief Finds the two possible poses of a planar object given a set of correspondences in normalized pixel coordinates. These poses are **NOT** sorted on reprojection error. Note that the returned poses are object-to-camera transforms, and not camera-to-object transforms. + * @param _objectPoints Array of 4 or more coplanar object points defined in object coordinates. 1xN/Nx1 3-channel (float or double). + * @param _normalizedImagePoints Array of corresponding image points in normalized pixel coordinates, 1xN/Nx1 2-channel (float or double). + * @param _Ma First pose solution (unsorted) + * @param _Mb Second pose solution (unsorted) + */ + void solveGeneric(cv::InputArray _objectPoints, cv::InputArray _normalizedImagePoints, cv::OutputArray _Ma, cv::OutputArray _Mb); + + /** + * @brief Finds the two possible poses of a planar object in its canonical position, given a set of correspondences in normalized pixel coordinates. These poses are **NOT** sorted on reprojection error. Note that the returned poses are object-to-camera transforms, and not camera-to-object transforms. + * @param _canonicalObjPoints Array of 4 or more coplanar object points defined in object coordinates. 1xN/Nx1 3-channel (double) where N is the number of points + * @param _normalizedInputPoints Array of corresponding image points in normalized pixel coordinates, 1xN/Nx1 2-channel (double) where N is the number of points + * @param _H Homography mapping canonicalObjPoints to normalizedInputPoints. + * @param _Ma + * @param _Mb + */ + void solveCanonicalForm(cv::InputArray _canonicalObjPoints, cv::InputArray _normalizedInputPoints, cv::InputArray _H, + cv::OutputArray _Ma, cv::OutputArray _Mb); + + /** @brief Computes the translation solution for a given rotation solution + * @param _objectPoints Array of corresponding object points, 1xN/Nx1 3-channel where N is the number of points + * @param _normalizedImagePoints Array of corresponding image points (undistorted), 1xN/Nx1 2-channel where N is the number of points + * @param _R Rotation solution (3x1 rotation vector) + * @param _t Translation solution Translation solution (3x1 rotation vector) + */ + void computeTranslation(cv::InputArray _objectPoints, cv::InputArray _normalizedImgPoints, cv::InputArray _R, cv::OutputArray _t); + + /** @brief Computes the two rotation solutions from the Jacobian of a homography matrix H at a point (ux,uy) on the object plane. For highest accuracy the Jacobian should be computed at the centroid of the point correspondences (see the IPPE paper for the explanation of this). For a point (ux,uy) on the object plane, suppose the homography H maps (ux,uy) to a point (p,q) in the image (in normalized pixel coordinates). The Jacobian matrix [J00, J01; J10,J11] is the Jacobian of the mapping evaluated at (ux,uy). + * @param j00 Homography jacobian coefficent at (ux,uy) + * @param j01 Homography jacobian coefficent at (ux,uy) + * @param j10 Homography jacobian coefficent at (ux,uy) + * @param j11 Homography jacobian coefficent at (ux,uy) + * @param p the x coordinate of point (ux,uy) mapped into the image (undistorted and normalized position) + * @param q the y coordinate of point (ux,uy) mapped into the image (undistorted and normalized position) + */ + void computeRotations(double j00, double j01, double j10, double j11, double p, double q, cv::OutputArray _R1, cv::OutputArray _R2); + + /** @brief Closed-form solution for the homography mapping with four corner correspondences of a square (it maps source points to target points). The source points are the four corners of a zero-centred squared defined by: + * point 0: [-squareLength / 2.0, squareLength / 2.0] + * point 1: [squareLength / 2.0, squareLength / 2.0] + * point 2: [squareLength / 2.0, -squareLength / 2.0] + * point 3: [-squareLength / 2.0, -squareLength / 2.0] + * + * @param _targetPoints Array of four corresponding target points, 1x4/4x1 2-channel. Note that the points should be ordered to correspond with points 0, 1, 2 and 3. + * @param halfLength the square's half length (i.e. squareLength/2.0) + * @param _H Homograhy mapping the source points to the target points, 3x3 single channel + */ + void homographyFromSquarePoints(cv::InputArray _targetPoints, double halfLength, cv::OutputArray _H); + + /** @brief Fast conversion from a rotation matrix to a rotation vector using Rodrigues' formula + * @param _R Input rotation matrix, 3x3 1-channel (double) + * @param _r Output rotation vector, 3x1/1x3 1-channel (double) + */ + void rot2vec(cv::InputArray _R, cv::OutputArray _r); + + /** + * @brief Takes a set of planar object points and transforms them to 'canonical' object coordinates This is when they have zero mean and are on the plane z=0 + * @param _objectPoints Array of 4 or more coplanar object points defined in object coordinates. 1xN/Nx1 3-channel (float or double) where N is the number of points + * @param _canonicalObjectPoints Object points in canonical coordinates 1xN/Nx1 2-channel (double) + * @param _MobjectPoints2Canonical Transform matrix mapping _objectPoints to _canonicalObjectPoints: 4x4 1-channel (double) + */ + void makeCanonicalObjectPoints(cv::InputArray _objectPoints, cv::OutputArray _canonicalObjectPoints, cv::OutputArray _MobjectPoints2Canonical); + + /** + * @brief Evaluates the Root Mean Squared (RMS) reprojection error of a pose solution. + * @param _objectPoints Array of 4 or more coplanar object points defined in object coordinates. 1xN/Nx1 3-channel (float or double) where N is the number of points + * @param _imagePoints Array of corresponding image points, 1xN/Nx1 2-channel. This can either be in pixel coordinates or normalized pixel coordinates. + * @param _cameraMatrix Intrinsic camera matrix (same definition as OpenCV). If _imagePoints is in normalized pixel coordinates you must set _cameraMatrix = cv::noArray(). + * @param _distCoeffs Intrinsic camera distortion vector (same definition as OpenCV). If _imagePoints is in normalized pixel coordinates you must set _cameraMatrix = cv::noArray(). + * @param _M Pose matrix from 3D object to camera coordinates: 4x4 1-channel (double) + * @param err RMS reprojection error + */ + void evalReprojError(cv::InputArray _objectPoints, cv::InputArray _imagePoints, cv::InputArray _cameraMatrix, cv::InputArray _distCoeffs, cv::InputArray _M, float& err); + + /** + * @brief Sorts two pose solutions according to their RMS reprojection error (lowest first). + * @param _objectPoints Array of 4 or more coplanar object points defined in object coordinates. 1xN/Nx1 3-channel (float or double) where N is the number of points + * @param _imagePoints Array of corresponding image points, 1xN/Nx1 2-channel. This can either be in pixel coordinates or normalized pixel coordinates. + * @param _cameraMatrix Intrinsic camera matrix (same definition as OpenCV). If _imagePoints is in normalized pixel coordinates you must set _cameraMatrix = cv::noArray(). + * @param _distCoeffs Intrinsic camera distortion vector (same definition as OpenCV). If _imagePoints is in normalized pixel coordinates you must set _cameraMatrix = cv::noArray(). + * @param _Ma Pose matrix 1: 4x4 1-channel + * @param _Mb Pose matrix 2: 4x4 1-channel + * @param _M1 Member of (Ma,Mb} with lowest RMS reprojection error. Performs deep copy. + * @param _M2 Member of (Ma,Mb} with highest RMS reprojection error. Performs deep copy. + * @param err1 RMS reprojection error of _M1 + * @param err2 RMS reprojection error of _M2 + */ + void sortPosesByReprojError(cv::InputArray _objectPoints, cv::InputArray _imagePoints, cv::InputArray _cameraMatrix, cv::InputArray _distCoeffs, cv::InputArray _Ma, cv::InputArray _Mb, cv::OutputArray _M1, cv::OutputArray _M2, float& err1, float& err2); + + /** + * @brief Finds the rotation _Ra that rotates a vector _a to the z axis (0,0,1) + * @param _a vector: 3x1 mat (double) + * @param _Ra Rotation: 3x3 mat (double) + */ + void rotateVec2ZAxis(cv::InputArray _a, cv::OutputArray _Ra); + + + /** + * @brief Computes the rotation _R that rotates the object points to the plane z=0. This uses the cross-product method with the first three object points. + * @param _objectPoints Array of N>=3 coplanar object points defined in object coordinates. 1xN/Nx1 3-channel (float or double) where N is the number of points + * @param _R Rotation Mat: 3x3 (double) + * @return success (true) or failure (false) + */ + bool computeObjextSpaceR3Pts(cv::InputArray _objectPoints, cv::OutputArray _R); + + /** + * @brief computeObjextSpaceRSvD Computes the rotation _R that rotates the object points to the plane z=0. This uses the cross-product method with the first three object points. + * @param _objectPointsZeroMean zero-meaned co=planar object points: 3xN matrix (double) where N>=3 + * @param _R Rotation Mat: 3x3 (double) + * @return success (true) or failure (false) + */ + bool computeObjextSpaceRSvD(cv::InputArray _objectPointsZeroMean, cv::OutputArray _R); +}; +} + +namespace HomographyHO { + +/** + * @brief Computes the best-fitting homography matrix from source to target points using Harker and O'Leary's method: + * Harker, M., O'Leary, P., Computation of Homographies, Proceedings of the British Machine Vision Conference 2005, Oxford, England. + * This is not the author's implementation. + * @param srcPoints Array of source points: 1xN/Nx1 2-channel (float or double) where N is the number of points + * @param targPoints Array of target points: 1xN/Nx1 2-channel (float or double) + * @param H Homography from source to target: 3x3 1-channel (double) + */ +void homographyHO(cv::InputArray srcPoints, cv::InputArray targPoints, cv::OutputArray H); + +/** + * @brief Performs data normalization before homography estimation. For details see Hartley, R., Zisserman, A., Multiple View Geometry in Computer Vision, + * Cambridge University Press, Cambridge, 2001 + * @param Data Array of source data points: 1xN/Nx1 2-channel (float or double) where N is the number of points + * @param DataN Normalized data points: 1xN/Nx1 2-channel (float or double) where N is the number of points + * @param T Homogeneous transform from source to normalized: 3x3 1-channel (double) + * @param Ti Homogeneous transform from normalized to source: 3x3 1-channel (double) + */ +void normalizeDataIsotropic(cv::InputArray Data, cv::OutputArray DataN, cv::OutputArray T, cv::OutputArray Ti); +} + +#endif diff --git a/thirdparty/aruco-3.1.12/src/levmarq.h b/thirdparty/aruco-3.1.12/src/levmarq.h new file mode 100644 index 0000000..43230ed --- /dev/null +++ b/thirdparty/aruco-3.1.12/src/levmarq.h @@ -0,0 +1,331 @@ +/** +Copyright 2017 Rafael Muñoz Salinas. All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are +permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this list of + conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright notice, this list + of conditions and the following disclaimer in the documentation and/or other materials + provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY Rafael Muñoz Salinas ''AS IS'' AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL Rafael Muñoz Salinas OR +CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +The views and conclusions contained in the software and documentation are those of the +authors and should not be interpreted as representing official policies, either expressed +or implied, of Rafael Muñoz Salinas. +*/ + +#ifndef ARUCO_MM__LevMarq_H +#define ARUCO_MM__LevMarq_H +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +namespace aruco{ +// Levenberg-Marquardt method for general problems Inspired in +//@MISC\{IMM2004-03215, +// author = "K. Madsen and H. B. Nielsen and O. Tingleff", +// title = "Methods for Non-Linear Least Squares Problems (2nd ed.)", +// year = "2004", +// pages = "60", +// publisher = "Informatics and Mathematical Modelling, Technical University of Denmark, {DTU}", +// address = "Richard Petersens Plads, Building 321, {DK-}2800 Kgs. Lyngby", +// url = "http://www.ltu.se/cms_fs/1.51590!/nonlinear_least_squares.pdf" +//} +template +class LevMarq{ +public: + + + typedef Eigen::Matrix eVector; + typedef std::function F_z_x; + typedef std::function &)> F_z_J; + LevMarq(); + /** + * @brief Constructor with parms + * @param maxIters maximum number of iterations of the algoritm + * @param minError to stop the algorithm before reaching the max iterations + * @param min_step_error_diff minimum error difference between two iterations. If below this level, then stop. + * @param tau parameter indicating how near the initial solution is estimated to be to the real one. If 1, it means that it is very far and the first + * @param der_epsilon increment to calculate the derivate of the evaluation function + * step will be very short. If near 0, means the opposite. This value is auto calculated in the subsequent iterations. + */ + LevMarq(int maxIters,double minError,double min_step_error_diff=0,double tau=1 ,double der_epsilon=1e-3); + + /** + * @brief setParams + * @param maxIters maximum number of iterations of the algoritm + * @param minError to stop the algorithm before reaching the max iterations + * @param min_step_error_diff minimum error difference between two iterations. If below this level, then stop. + * @param tau parameter indicating how near the initial solution is estimated to be to the real one. If 1, it means that it is very far and the first + * @param der_epsilon increment to calculate the derivate of the evaluation function + * step will be very short. If near 0, means the opposite. This value is auto calculated in the subsequent iterations. + */ + void setParams(int maxIters,double minError,double min_step_error_diff=0,double tau=1 ,double der_epsilon=1e-3); + + /** + * @brief solve non linear minimization problem ||F(z)||, where F(z)=f(z) f(z)^t + * @param z function params 1xP to be estimated. input-output. Contains the result of the optimization + * @param f_z_x evaluation function f(z)=x + * first parameter : z : input. Data is in double precision as a row vector (1xp) + * second parameter : x : output. Data must be returned in double + * @param f_J computes the jacobian of f(z) + * first parameter : z : input. Data is in double precision as a row vector (1xp) + * second parameter : J : output. Data must be returned in double + * @return final error + */ + double solve( eVector &z, F_z_x , F_z_J); + /// Step by step solve mode + + + /** + * @brief init initializes the search engine + * @param z + */ + void init(eVector &z, F_z_x ); + /** + * @brief step gives a step of the search + * @param f_z_x error evaluation function + * @param f_z_J Jacobian function + * @return error of current solution + */ + bool step( F_z_x f_z_x , F_z_J f_z_J); + bool step( F_z_x f_z_x); + /** + * @brief getCurrentSolution returns the current solution + * @param z output + * @return error of the solution + */ + double getCurrentSolution(eVector &z); + /** + * @brief getBestSolution sets in z the best solution up to this moment + * @param z output + * @return error of the solution + */ + double getBestSolution(eVector &z); + + /** Automatic jacobian estimation + * @brief solve non linear minimization problem ||F(z)||, where F(z)=f(z) f(z)^t + * @param z function params 1xP to be estimated. input-output. Contains the result of the optimization + * @param f_z_x evaluation function f(z)=x + * first parameter : z : input. Data is in double precision as a row vector (1xp) + * second parameter : x : output. Data must be returned in double + * @return final error + */ + double solve( eVector &z, F_z_x ); + //to enable verbose mode + bool & verbose(){return _verbose;} + + //sets a callback func call at each step + void setStepCallBackFunc(std::function callback){_step_callback=callback;} + //sets a function that indicates when the algorithm must be stop. returns true if must stop and false otherwise + void setStopFunction( std::function stop_function){_stopFunction=stop_function;} + + void calcDerivates(const eVector & z , Eigen::Matrix &, F_z_x); +private: + int _maxIters; + double _minErrorAllowed,_der_epsilon,_tau,_min_step_error_diff; + bool _verbose; + //-------- + eVector curr_z,x64; + double currErr,prevErr,minErr ; + Eigen::Matrix I,J; + double mu,v; + std::function _step_callback; + std::function _stopFunction; + + +}; + + + +template +LevMarq::LevMarq(){ + _maxIters=1000;_minErrorAllowed=0;_der_epsilon=1e-3;_verbose=false;_tau=1;v=5;_min_step_error_diff=0; +} +/** +* @brief Constructor with parms +* @param maxIters maximum number of iterations of the algoritm +* @param minError to stop the algorithm before reaching the max iterations +* @param min_step_error_diff minimum error difference between two iterations. If below this level, then stop. +* @param tau parameter indicating how near the initial solution is estimated to be to the real one. If 1, it means that it is very far and the first +* @param der_epsilon increment to calculate the derivate of the evaluation function +* step will be very short. If near 0, means the opposite. This value is auto calculated in the subsequent iterations. +*/ +template +LevMarq::LevMarq(int maxIters,double minError,double min_step_error_diff,double tau ,double der_epsilon ){ + _maxIters=maxIters;_minErrorAllowed=minError;_der_epsilon=der_epsilon;_verbose=false;_tau=tau;v=5;_min_step_error_diff=min_step_error_diff; +} + +/** +* @brief setParams +* @param maxIters maximum number of iterations of the algoritm +* @param minError to stop the algorithm before reaching the max iterations +* @param min_step_error_diff minimum error difference between two iterations. If below this level, then stop. +* @param tau parameter indicating how near the initial solution is estimated to be to the real one. If 1, it means that it is very far and the first +* @param der_epsilon increment to calculate the derivate of the evaluation function +* step will be very short. If near 0, means the opposite. This value is auto calculated in the subsequent iterations. +*/ +template +void LevMarq::setParams(int maxIters,double minError,double min_step_error_diff,double tau ,double der_epsilon){ + _maxIters=maxIters; + _minErrorAllowed=minError; + _der_epsilon=der_epsilon; + _tau=tau; + _min_step_error_diff=min_step_error_diff; + +} + + +template +void LevMarq:: calcDerivates(const eVector & z , Eigen::Matrix &J, F_z_x f_z_x) +{ + for (int i=0;i +double LevMarq:: solve( eVector &z, F_z_x f_z_x){ + return solve(z,f_z_x,std::bind(&LevMarq::calcDerivates,this,std::placeholders::_1,std::placeholders::_2,f_z_x)); +} +template +bool LevMarq:: step( F_z_x f_z_x){ + return step(f_z_x,std::bind(&LevMarq::calcDerivates,this,std::placeholders::_1,std::placeholders::_2,f_z_x)); +} + +template +void LevMarq::init(eVector &z, F_z_x f_z_x ){ + curr_z=z; + I.resize(z.rows(),z.rows()); + I.setIdentity(); + f_z_x(curr_z,x64); + minErr=currErr=prevErr=x64.cwiseProduct(x64).sum(); + J.resize(x64.rows(),z.rows()); + mu=-1; + + +} + + +#define splm_get_time(a,b) std::chrono::duration_cast>(a-b).count() + + +template +bool LevMarq::step( F_z_x f_z_x, F_z_J f_J){ + + f_J(curr_z,J); + Eigen::Matrix Jt=J.transpose(); + Eigen::Matrix JtJ=(Jt*J); + + eVector B=-Jt*x64; + if(mu<0){//first time only + int max=0; + for(int j=1;jJtJ(max,max)) max=j; + mu=JtJ(max,max)*_tau; + } + + double gain=0,prev_mu=0; + int ntries=0; + bool isStepAccepted=false; + do{ + //add/update dumping factor to JtJ. + //very efficient in any case, but particularly if initial dump does not produce improvement and must reenter + for(int j=0;j0){ + mu=mu*std::max(double(0.33),1.-pow(2*gain-1,3)); + v=5.f; + currErr=err; + curr_z=estimated_z; + isStepAccepted=true; + } + else{ mu=mu*v; v=v*5;} + + }while(gain<=0 && ntries++<5); + + if (_verbose) std::cout< +#include + +#include +#include +#include "cameraparameters.h" +#include "ippe.h" + +namespace aruco +{ + /** + * + */ + Marker::Marker() + { + id = -1; + ssize = -1; + Rvec.create(3, 1, CV_32FC1); + Tvec.create(3, 1, CV_32FC1); + for (int i = 0; i < 3; i++) + Tvec.at(i, 0) = Rvec.at(i, 0) = -999999; + } + /** + * + */ + Marker::Marker(int _id) + { + id = _id; + ssize = -1; + Rvec.create(3, 1, CV_32FC1); + Tvec.create(3, 1, CV_32FC1); + for (int i = 0; i < 3; i++) + Tvec.at(i, 0) = Rvec.at(i, 0) = -999999; + } + /** + * + */ + Marker::Marker(const Marker& M) + : std::vector(M) + { + M.copyTo(*this); + } + + /** + * + */ + Marker::Marker(const std::vector& corners, int _id) + : std::vector(corners) + { + id = _id; + ssize = -1; + Rvec.create(3, 1, CV_32FC1); + Tvec.create(3, 1, CV_32FC1); + for (int i = 0; i < 3; i++) + Tvec.at(i, 0) = Rvec.at(i, 0) = -999999; + } + + void Marker::copyTo(Marker &m)const{ + m.id=id; + // size of the markers sides in meters + m.ssize=ssize; + // matrices of rotation and translation respect to the camera + Rvec.copyTo(m.Rvec ); + Tvec.copyTo(m.Tvec); + m.resize(size()); + for(size_t i=0;i(i, 0) != -999999) + invalid |= false; + if (Rvec.at(i, 0) != -999999) + invalid |= false; + } + if (invalid) + throw cv::Exception(9003, "extrinsic parameters are not set", "Marker::getModelViewMatrix", __FILE__, + __LINE__); + cv::Mat Rot(3, 3, CV_32FC1), Jacob; + cv::Rodrigues(Rvec, Rot, Jacob); + + double para[3][4]; + for (int i = 0; i < 3; i++) + for (int j = 0; j < 3; j++) + para[i][j] = Rot.at(i, j); + // now, add the translation + para[0][3] = Tvec.at(0, 0); + para[1][3] = Tvec.at(1, 0); + para[2][3] = Tvec.at(2, 0); + double scale = 1; + + modelview_matrix[0 + 0 * 4] = para[0][0]; + // R1C2 + modelview_matrix[0 + 1 * 4] = para[0][1]; + modelview_matrix[0 + 2 * 4] = para[0][2]; + modelview_matrix[0 + 3 * 4] = para[0][3]; + // R2 + modelview_matrix[1 + 0 * 4] = para[1][0]; + modelview_matrix[1 + 1 * 4] = para[1][1]; + modelview_matrix[1 + 2 * 4] = para[1][2]; + modelview_matrix[1 + 3 * 4] = para[1][3]; + // R3 + modelview_matrix[2 + 0 * 4] = -para[2][0]; + modelview_matrix[2 + 1 * 4] = -para[2][1]; + modelview_matrix[2 + 2 * 4] = -para[2][2]; + modelview_matrix[2 + 3 * 4] = -para[2][3]; + modelview_matrix[3 + 0 * 4] = 0.0; + modelview_matrix[3 + 1 * 4] = 0.0; + modelview_matrix[3 + 2 * 4] = 0.0; + modelview_matrix[3 + 3 * 4] = 1.0; + if (scale != 0.0) + { + modelview_matrix[12] *= scale; + modelview_matrix[13] *= scale; + modelview_matrix[14] *= scale; + } + } + + /**** + * + */ + void Marker::OgreGetPoseParameters(double position[3], double orientation[4]) + { + // check if paremeters are valid + bool invalid = false; + for (int i = 0; i < 3 && !invalid; i++) + { + if (Tvec.at(i, 0) != -999999) + invalid |= false; + if (Rvec.at(i, 0) != -999999) + invalid |= false; + } + if (invalid) + throw cv::Exception(9003, "extrinsic parameters are not set", "Marker::getModelViewMatrix", __FILE__, + __LINE__); + + // calculate position vector + position[0] = -Tvec.ptr(0)[0]; + position[1] = -Tvec.ptr(0)[1]; + position[2] = +Tvec.ptr(0)[2]; + + // now calculare orientation quaternion + cv::Mat Rot(3, 3, CV_32FC1); + cv::Rodrigues(Rvec, Rot); + + // calculate axes for quaternion + double stAxes[3][3]; + // x axis + stAxes[0][0] = -Rot.at(0, 0); + stAxes[0][1] = -Rot.at(1, 0); + stAxes[0][2] = +Rot.at(2, 0); + // y axis + stAxes[1][0] = -Rot.at(0, 1); + stAxes[1][1] = -Rot.at(1, 1); + stAxes[1][2] = +Rot.at(2, 1); + // for z axis, we use cross product + stAxes[2][0] = stAxes[0][1] * stAxes[1][2] - stAxes[0][2] * stAxes[1][1]; + stAxes[2][1] = -stAxes[0][0] * stAxes[1][2] + stAxes[0][2] * stAxes[1][0]; + stAxes[2][2] = stAxes[0][0] * stAxes[1][1] - stAxes[0][1] * stAxes[1][0]; + + // transposed matrix + double axes[3][3]; + axes[0][0] = stAxes[0][0]; + axes[1][0] = stAxes[0][1]; + axes[2][0] = stAxes[0][2]; + + axes[0][1] = stAxes[1][0]; + axes[1][1] = stAxes[1][1]; + axes[2][1] = stAxes[1][2]; + + axes[0][2] = stAxes[2][0]; + axes[1][2] = stAxes[2][1]; + axes[2][2] = stAxes[2][2]; + + // Algorithm in Ken Shoemake's article in 1987 SIGGRAPH course notes + // article "Quaternion Calculus and Fast Animation". + double fTrace = axes[0][0] + axes[1][1] + axes[2][2]; + double fRoot; + + if (fTrace > 0.0) + { + // |w| > 1/2, may as well choose w > 1/2 + fRoot = sqrt(fTrace + 1.0); // 2w + orientation[0] = 0.5 * fRoot; + fRoot = 0.5 / fRoot; // 1/(4w) + orientation[1] = (axes[2][1] - axes[1][2]) * fRoot; + orientation[2] = (axes[0][2] - axes[2][0]) * fRoot; + orientation[3] = (axes[1][0] - axes[0][1]) * fRoot; + } + else + { + // |w| <= 1/2 + static unsigned int s_iNext[3] = {1, 2, 0}; + unsigned int i = 0; + if (axes[1][1] > axes[0][0]) + i = 1; + if (axes[2][2] > axes[i][i]) + i = 2; + unsigned int j = s_iNext[i]; + unsigned int k = s_iNext[j]; + + fRoot = sqrt(axes[i][i] - axes[j][j] - axes[k][k] + 1.0); + double* apkQuat[3] = {&orientation[1], &orientation[2], &orientation[3]}; + *apkQuat[i] = 0.5 * fRoot; + fRoot = 0.5 / fRoot; + orientation[0] = (axes[k][j] - axes[j][k]) * fRoot; + *apkQuat[j] = (axes[j][i] + axes[i][j]) * fRoot; + *apkQuat[k] = (axes[k][i] + axes[i][k]) * fRoot; + } + } + + void Marker::draw(cv::Mat& in, cv::Scalar color, int lineWidth, bool writeId, bool writeInfo) const + { + + auto _to_string=[](int i){ + std::stringstream str;str<(lineWidth), 2.f * static_cast(lineWidth)); + cv::rectangle(in, (*this)[0] - p2, (*this)[0] + p2, cv::Scalar(0, 0, 255, 255), -1); + cv::rectangle(in, (*this)[1] - p2, (*this)[1] + p2, cv::Scalar(0, 255, 0, 255), lineWidth); + cv::rectangle(in, (*this)[2] - p2, (*this)[2] + p2, cv::Scalar(255, 0, 0, 255), lineWidth); + + + + if (writeId) + { + // determine the centroid + cv::Point cent(0, 0); + for (int i = 0; i < 4; i++) + { + cent.x += static_cast((*this)[i].x); + cent.y += static_cast((*this)[i].y); + } + cent.x /= 4; + cent.y /= 4; + std::string str; + if(writeInfo) str+= dict_info +":"; + if(writeId)str+=_to_string(id); + float fsize= std::min(3.0f, flineWidth * 0.75f); + cv::putText(in,str, cent-cv::Point(10*flineWidth,0), cv::FONT_HERSHEY_SIMPLEX,fsize, + cv::Scalar(255,255,255)-color, lineWidth,cv::LINE_AA); + } + } + + /** + */ + void Marker::calculateExtrinsics(float markerSize, const CameraParameters& CP, + bool setYPerpendicular) + { + if (!CP.isValid()) + throw cv::Exception(9004, + "!CP.isValid(): invalid camera parameters. It is not possible to calculate extrinsics", + "calculateExtrinsics", __FILE__, __LINE__); + calculateExtrinsics(markerSize, CP.CameraMatrix, CP.Distorsion, setYPerpendicular); + } + + void print(cv::Point3f p, std::string cad) + { + std::cout << cad << " " << p.x << " " << p.y << " " << p.z << std::endl; + } + /** + */ + void Marker::calculateExtrinsics(float markerSizeMeters, cv::Mat camMatrix, cv::Mat distCoeff, + bool setYPerpendicular) + { + if (!isValid()) + throw cv::Exception(9004, "!isValid(): invalid marker. It is not possible to calculate extrinsics", + "calculateExtrinsics", __FILE__, __LINE__); + if (markerSizeMeters <= 0) + throw cv::Exception(9004, "markerSize<=0: invalid markerSize", "calculateExtrinsics", __FILE__, __LINE__); + if (camMatrix.rows == 0 || camMatrix.cols == 0) + throw cv::Exception(9004, "CameraMatrix is empty", "calculateExtrinsics", __FILE__, __LINE__); + + vector objpoints = get3DPoints(markerSizeMeters); + + + cv::Mat raux, taux; +// cv::solvePnP(objpoints, *this, camMatrix, distCoeff, raux, taux); + solvePnP(objpoints, *this,camMatrix, distCoeff,raux,taux); + raux.convertTo(Rvec, CV_32F); + taux.convertTo(Tvec, CV_32F); + // rotate the X axis so that Y is perpendicular to the marker plane + if (setYPerpendicular) + rotateXAxis(Rvec); + ssize = markerSizeMeters; + // cout<<(*this)<(0)[i]=setPrecision(Rvec.ptr(0)[i],100); +// Tvec.ptr(0)[i]=setPrecision(Tvec.ptr(0)[i],1000); +// } + + } + + std::vector Marker::get3DPoints(float msize) + { + float halfSize = msize / 2.f; +// std::vector res(4); +// res[0]=cv::Point3f(-halfSize, halfSize, 0); +// res[1]=cv::Point3f(halfSize, halfSize, 0); +// res[2]=cv::Point3f(halfSize,-halfSize, 0); +// res[3]=cv::Point3f(-halfSize,- halfSize, 0); +// return res; + return {cv::Point3f(-halfSize, halfSize, 0),cv::Point3f(halfSize, halfSize, 0),cv::Point3f(halfSize,-halfSize, 0),cv::Point3f(-halfSize, -halfSize, 0)}; + + } + + void Marker::rotateXAxis( cv::Mat& rotation) + { + cv::Mat R(3, 3, CV_32F); + cv::Rodrigues(rotation, R); + // create a rotation matrix for x axis + cv::Mat RX = cv::Mat::eye(3, 3, CV_32F); + const float angleRad = 3.14159265359f / 2.f; + RX.at(1, 1) = cos(angleRad); + RX.at(1, 2) = -sin(angleRad); + RX.at(2, 1) = sin(angleRad); + RX.at(2, 2) = cos(angleRad); + // now multiply + R = R * RX; + // finally, the the rodrigues back + Rodrigues(R, rotation); + } + + /** + */ + cv::Point2f Marker::getCenter() const + { + cv::Point2f cent(0, 0); + for (size_t i = 0; i < size(); i++) + { + cent.x += (*this)[i].x; + cent.y += (*this)[i].y; + } + cent.x /= float(size()); + cent.y /= float(size()); + return cent; + } + + /** + */ + float Marker::getArea() const + { + assert(size() == 4); + // use the cross products + cv::Point2f v01 = (*this)[1] - (*this)[0]; + cv::Point2f v03 = (*this)[3] - (*this)[0]; + float area1 = fabs(v01.x * v03.y - v01.y * v03.x); + cv::Point2f v21 = (*this)[1] - (*this)[2]; + cv::Point2f v23 = (*this)[3] - (*this)[2]; + float area2 = fabs(v21.x * v23.y - v21.y * v23.x); + return (area2 + area1) / 2.f; + } + /** + */ + float Marker::getPerimeter() const + { + assert(size() == 4); + float sum = 0; + for (int i = 0; i < 4; i++) + sum += static_cast(norm((*this)[i] - (*this)[(i + 1) % 4])); + return sum; + } + + + // saves to a binary stream + void Marker::toStream(std::ostream& str) const + { + assert(Rvec.type() == CV_32F && Tvec.type() == CV_32F); + str.write((char*)&id, sizeof(id)); + str.write((char*)&ssize, sizeof(ssize)); + str.write((char*)Rvec.ptr(0), 3 * sizeof(float)); + str.write((char*)Tvec.ptr(0), 3 * sizeof(float)); + // write the 2d points + uint32_t np = static_cast (size()); + str.write((char*)&np, sizeof(np)); + for (size_t i = 0; i < size(); i++) + str.write((char*)&at(i), sizeof(cv::Point2f)); + //write the additional info + uint32_t s=dict_info.size(); + str.write((char*)&s, sizeof(s)); + str.write((char*)&dict_info[0], dict_info.size()); + s=contourPoints.size(); + str.write((char*)&s, sizeof(s)); + str.write((char*)&contourPoints[0], contourPoints.size()*sizeof(contourPoints[0])); + + } + // reads from a binary stream + void Marker::fromStream(std::istream& str) + { + Rvec.create(1, 3, CV_32F); + Tvec.create(1, 3, CV_32F); + str.read((char*)&id, sizeof(id)); + str.read((char*)&ssize, sizeof(ssize)); + str.read((char*)Rvec.ptr(0), 3 * sizeof(float)); + str.read((char*)Tvec.ptr(0), 3 * sizeof(float)); + uint32_t np; + str.read((char*)&np, sizeof(np)); + resize(np); + for (size_t i = 0; i < size(); i++) + str.read((char*)&(*this)[i], sizeof(cv::Point2f)); + //read the additional info + uint32_t s; + str.read((char*)&s, sizeof(s)); + dict_info.resize(s); + str.read((char*)&dict_info[0], dict_info.size()); + str.read((char*)&s, sizeof(s)); + contourPoints.resize(s); + str.read((char*)&contourPoints[0], contourPoints.size()*sizeof(contourPoints[0])); + } + + cv::Mat Marker::getTransformMatrix()const{ + + cv::Mat T=cv::Mat::eye(4,4,CV_32F); + cv::Mat rot=T.rowRange(0,3).colRange(0,3); + cv::Rodrigues(Rvec,rot); + for(int i=0;i<3;i++) + T.at(i,3)=Tvec.ptr(0)[i]; + return T; + } + + float Marker::getRadius()const{ + + auto center=getCenter(); + + float maxDist=0; + for(auto p:*this) + maxDist=std::max(maxDist, float(cv::norm(p-center)) ); + return maxDist; + } + +} diff --git a/thirdparty/aruco-3.1.12/src/marker.h b/thirdparty/aruco-3.1.12/src/marker.h new file mode 100644 index 0000000..c9ecea4 --- /dev/null +++ b/thirdparty/aruco-3.1.12/src/marker.h @@ -0,0 +1,192 @@ +/** +Copyright 2017 Rafael Muñoz Salinas. All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are +permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this list of + conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright notice, this list + of conditions and the following disclaimer in the documentation and/or other materials + provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY Rafael Muñoz Salinas ''AS IS'' AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL Rafael Muñoz Salinas OR +CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +The views and conclusions contained in the software and documentation are those of the +authors and should not be interpreted as representing official policies, either expressed +or implied, of Rafael Muñoz Salinas. +*/ + +#ifndef _Aruco_Marker_H +#define _Aruco_Marker_H + +#include "aruco_export.h" + +#include + +#include +#include +#include + + namespace aruco +{ + /**\brief This class represents a marker. It is a vector of the fours corners ot the marker + * + */ + + class CameraParameters; + class ARUCO_EXPORT Marker : public std::vector + { + public: + // id of the marker + int id; + // size of the markers sides in meters + float ssize; + // matrices of rotation and translation respect to the camera + cv::Mat Rvec, Tvec; + //additional info about the dictionary + std::string dict_info; + //points of the contour + vector contourPoints; + + /** + */ + Marker(); + /** + */ + Marker(int id); + /** + */ + Marker(const Marker& M); + /** + */ + Marker(const std::vector& corners, int _id = -1); + /** + */ + ~Marker() + { + } + /**Indicates if this object is valid + */ + bool isValid() const + { + return id != -1 && size() == 4; + } + + bool isPoseValid()const{return !Rvec.empty() && !Tvec.empty();} + /**Draws this marker in the input image + */ + void draw(cv::Mat& in, cv::Scalar color=cv::Scalar(0,0,255), int lineWidth = -1, bool writeId = true,bool writeInfo=false) const; + + /**Calculates the extrinsics (Rvec and Tvec) of the marker with respect to the camera + * @param markerSize size of the marker side expressed in meters + * @param CP parmeters of the camera + * @param setYPerpendicular If set the Y axis will be perpendicular to the surface. Otherwise, it will be the Z + * axis + */ + void calculateExtrinsics(float markerSize, const CameraParameters& CP, + bool setYPerpendicular = true); + /**Calculates the extrinsics (Rvec and Tvec) of the marker with respect to the camera + * @param markerSize size of the marker side expressed in meters + * @param CameraMatrix matrix with camera parameters (fx,fy,cx,cy) + * @param Distorsion matrix with distorsion parameters (k1,k2,p1,p2) + * @param setYPerpendicular If set the Y axis will be perpendicular to the surface. Otherwise, it will be the Z + * axis + */ + void calculateExtrinsics(float markerSize, cv::Mat CameraMatrix, cv::Mat Distorsion = cv::Mat(), + bool setYPerpendicular = true); + + /**Given the extrinsic camera parameters returns the GL_MODELVIEW matrix for opengl. + * Setting this matrix, the reference coordinate system will be set in this marker + */ + void glGetModelViewMatrix(double modelview_matrix[16]); + + /** + * Returns position vector and orientation quaternion for an Ogre scene node or entity. + * Use: + * ... + * Ogre::Vector3 ogrePos (position[0], position[1], position[2]); + * Ogre::Quaternion ogreOrient (orientation[0], orientation[1], orientation[2], orientation[3]); + * mySceneNode->setPosition( ogrePos ); + * mySceneNode->setOrientation( ogreOrient ); + * ... + */ + void OgreGetPoseParameters(double position[3], double orientation[4]); + + /**Returns the centroid of the marker + */ + cv::Point2f getCenter() const; + /**Returns the perimeter of the marker + */ + float getPerimeter() const; + /**Returns the area + */ + float getArea() const; + /**Returns radius of enclosing circle + */ + float getRadius()const; + /**compares ids + */ + bool operator==(const Marker& m) const + { + return m.id == id; + } + + void copyTo(Marker &m) const; + /**compares ids + */ + Marker & operator=(const Marker& m) ; + + /** + */ + friend bool operator<(const Marker& M1, const Marker& M2) + { + return M1.id < M2.id; + } + /** + */ + friend std::ostream& operator<<(std::ostream& str, const Marker& M){ + str << M.id << "="; + for (int i = 0; i < 4; i++) + str << "(" << M[i].x << "," << M[i].y << ") "; + if( !M.Tvec.empty() && !M.Rvec.empty()){ + str << "Txyz="; + for (int i = 0; i < 3; i++) + str << M.Tvec.ptr(0)[i] << " "; + str << "Rxyz="; + for (int i = 0; i < 3; i++) + str << M.Rvec.ptr(0)[i] << " "; + } + return str; + } + + + // saves to a binary stream + void toStream(std::ostream& str) const; + // reads from a binary stream + void fromStream(std::istream& str); + + // returns the 3d points of a marker wrt its center + static vector get3DPoints(float msize); + //returns the 3d points of this marker wrt its center + inline vector get3DPoints()const{ + return get3DPoints(ssize); + } + + //returns the SE3 (4x4) transform matrix + + cv::Mat getTransformMatrix()const; + private: + void rotateXAxis(cv::Mat& rotation); + }; +} +#endif diff --git a/thirdparty/aruco-3.1.12/src/markerdetector.cpp b/thirdparty/aruco-3.1.12/src/markerdetector.cpp new file mode 100644 index 0000000..48e411d --- /dev/null +++ b/thirdparty/aruco-3.1.12/src/markerdetector.cpp @@ -0,0 +1,435 @@ +/** +Copyright 2017 Rafael Muñoz Salinas. All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are +permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this list of + conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright notice, this list + of conditions and the following disclaimer in the documentation and/or other materials + provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY Rafael Muñoz Salinas ''AS IS'' AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL Rafael Muñoz Salinas OR +CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +The views and conclusions contained in the software and documentation are those of the +authors and should not be interpreted as representing official policies, either expressed +or implied, of Rafael Muñoz Salinas. +*/ + +#include "markerdetector.h" +#include "cameraparameters.h" +#include "markerlabeler.h" +#include "timers.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "debug.h" +#include "aruco_cvversioning.h" +#include "markerdetector_impl.h" + +//#ifdef _DEBUG +//#include +//#endif +using namespace std; +using namespace cv; + +namespace aruco +{ +/************************************ + * + * + * + * + ************************************/ +MarkerDetector::MarkerDetector() +{ + _impl=new MarkerDetector_Impl(); +// _iplm=std::unique_ptr(new MarkerDetector_Impl()); +} +/************************************ + * + * + * + * + ************************************/ +MarkerDetector::MarkerDetector(int dict_type, float error_correction_rate ){ + _impl=new MarkerDetector_Impl(); + setDictionary(dict_type,error_correction_rate); + setDetectionMode(DM_NORMAL); +} +/************************************ + * + * + * + * + ************************************/ +MarkerDetector::MarkerDetector(std::string dict_type, float error_correction_rate ){ + _impl=new MarkerDetector_Impl(); + setDictionary(dict_type,error_correction_rate); + setDetectionMode(DM_NORMAL); + +} +/************************************ + * + * + * + * + ************************************/ + +MarkerDetector::~MarkerDetector() +{ + delete _impl; +} + +void MarkerDetector::setParameters(const Params ¶ms){ + _impl->setParameters(params); +} + +/************************************ + * + * + * + * + ************************************/ +void MarkerDetector::setDetectionMode( DetectionMode dm,float minMarkerSize){ + _impl->_params.setDetectionMode(dm,minMarkerSize); +} + +DetectionMode MarkerDetector::getDetectionMode( ){ +return _impl->_params.detectMode; +} + + + +/************************************ + * + * + * + * + ************************************/ + +std::vector MarkerDetector::detect(const cv::Mat& input) +{ + return _impl->detect(input); +} + +std::vector MarkerDetector::detect(const cv::Mat& input, const CameraParameters& camParams, + float markerSizeMeters, + bool setYPerperdicular) +{ + return _impl->detect(input,camParams,markerSizeMeters,setYPerperdicular); +} + +/************************************ + * + * + * + * + ************************************/ +// void MarkerDetector::detect(const cv::Mat& input, std::vector& detectedMarkers, CameraParameters camParams, +// float markerSizeMeters, bool setYPerpendicular) +// { +// _impl->detect(input,detectedMarkers,camParams,markerSizeMeters,setYPerpendicular); +// } + +void MarkerDetector::detect(const cv::Mat& input, vector>& detectedMarkers, + cv::Mat camMatrix, cv::Mat distCoeff, float markerSizeMeters, + bool setYPerpendicular) +{ + cout<<"\n Camera matrix from markerdetector.cpp: "<detect(input,detectedMarkers,camParams,markerSizeMeters,setYPerpendicular); +} +/**Returns operating params + */ +MarkerDetector::Params MarkerDetector::getParameters() const{return _impl->getParameters();} +/**Returns operating params + */ +MarkerDetector::Params & MarkerDetector::getParameters() {return _impl->getParameters();} + + + +std::vector MarkerDetector::getCandidates()const +{ + return _impl->getCandidates(); +} + +std::vector MarkerDetector::getImagePyramid(){ + return _impl->getImagePyramid(); +} +cv::Ptr MarkerDetector::getMarkerLabeler() +{ + return _impl->getMarkerLabeler(); +} +void MarkerDetector::setMarkerLabeler(cv::Ptr detector) +{ + _impl->setMarkerLabeler(detector); +} + +void MarkerDetector::setDictionary(int dict_type, + float error_correction_rate) +{ + _impl->setDictionary(dict_type,error_correction_rate); +} + + +void MarkerDetector::setDictionary(string dict_type, float error_correction_rate) +{ + _impl->setDictionary(dict_type,error_correction_rate); + +} +cv::Mat MarkerDetector::getThresholdedImage(uint32_t idx) +{ + return _impl->getThresholdedImage(idx); +} + +void MarkerDetector::Params::save(cv::FileStorage &fs)const{ + fs<<"aruco-dictionary"<>aux; + detectMode=getDetectionModeFromString(aux); + } + if ( fs["aruco-thresMethod"].type()!=cv::FileNode::NONE){ + string aux; + fs["aruco-thresMethod"]>>aux; + thresMethod=getCornerThresMethodFromString(aux); + } + if ( fs["aruco-cornerRefinementM"].type()!=cv::FileNode::NONE){ + string aux; + fs["aruco-cornerRefinementM"]>>aux; + cornerRefinementM=getCornerRefinementMethodFromString(aux); + } + + } + + +void MarkerDetector::Params::toStream(std::ostream &str)const{ + str.write((char*)&detectMode,sizeof(detectMode)); + str.write((char*)&maxThreads,sizeof(maxThreads)); + str.write((char*)&borderDistThres,sizeof(borderDistThres)); + str.write((char*)&lowResMarkerSize,sizeof(lowResMarkerSize)); + str.write((char*)&minSize,sizeof(minSize)); + str.write((char*)&minSize_pix,sizeof(minSize_pix)); + str.write((char*)&enclosedMarker,sizeof(enclosedMarker)); + str.write((char*)&thresMethod,sizeof(thresMethod)); + str.write((char*)&NAttemptsAutoThresFix,sizeof(NAttemptsAutoThresFix)); + str.write((char*)&AdaptiveThresWindowSize,sizeof(AdaptiveThresWindowSize)); + str.write((char*)&ThresHold,sizeof(ThresHold)); + str.write((char*)&AdaptiveThresWindowSize_range,sizeof(AdaptiveThresWindowSize_range)); + str.write((char*)&markerWarpPixSize,sizeof(markerWarpPixSize)); + str.write((char*)&cornerRefinementM,sizeof(cornerRefinementM)); + str.write((char*)&autoSize,sizeof(autoSize)); + str.write((char*)&ts,sizeof(pyrfactor)); + str.write((char*)&error_correction_rate,sizeof(error_correction_rate)); + str.write((char*)&trackingMinDetections,sizeof(trackingMinDetections)); + str.write((char*)&closingSize,sizeof(closingSize)); + + + _toStream(dictionary,str); +} +void MarkerDetector::Params::fromStream(std::istream &str) { + str.read((char*)&detectMode,sizeof(detectMode)); + str.read((char*)&maxThreads,sizeof(maxThreads)); + str.read((char*)&borderDistThres,sizeof(borderDistThres)); + str.read((char*)&lowResMarkerSize,sizeof(lowResMarkerSize)); + str.read((char*)&minSize,sizeof(minSize)); + str.read((char*)&minSize_pix,sizeof(minSize_pix)); + str.read((char*)&enclosedMarker,sizeof(enclosedMarker)); + str.read((char*)&thresMethod,sizeof(thresMethod)); + str.read((char*)&NAttemptsAutoThresFix,sizeof(NAttemptsAutoThresFix)); + str.read((char*)&AdaptiveThresWindowSize,sizeof(AdaptiveThresWindowSize)); + str.read((char*)&ThresHold,sizeof(ThresHold)); + str.read((char*)&AdaptiveThresWindowSize_range,sizeof(AdaptiveThresWindowSize_range)); + str.read((char*)&markerWarpPixSize,sizeof(markerWarpPixSize)); + str.read((char*)&cornerRefinementM,sizeof(cornerRefinementM)); + str.read((char*)&autoSize,sizeof(autoSize)); + str.read((char*)&ts,sizeof(pyrfactor)); + str.read((char*)&error_correction_rate,sizeof(error_correction_rate)); + str.read((char*)&trackingMinDetections,sizeof(trackingMinDetections)); + str.read((char*)&closingSize,sizeof(closingSize)); + _fromStream(dictionary,str); +} +/**Saves the configuration of the detector to a file + */ +void MarkerDetector::saveParamsToFile(const std::string &path) const{ + _impl->saveParamsToFile(path); +} + +/**Loads the configuration from a file + */ +void MarkerDetector::loadParamsFromFile(const std::string &path){ + _impl->loadParamsFromFile(path); +} + +void MarkerDetector::toStream(std::ostream &str)const +{ + _impl->toStream(str); + +} + +void MarkerDetector::fromStream(std::istream &str){ + _impl->fromStream(str); +} + +std::string MarkerDetector::Params::toString(DetectionMode dm){ + switch(dm){ + case DM_FAST:return "DM_FAST"; + case DM_NORMAL:return "DM_NORMAL"; + case DM_VIDEO_FAST:return "DM_VIDEO_FAST"; + }; + return "DM_NORMAL"; +} + +DetectionMode MarkerDetector::Params::getDetectionModeFromString(const std::string &str){ + if ( str=="DM_FAST")return DM_FAST; + if ( str=="DM_NORMAL")return DM_NORMAL; + if ( str=="DM_VIDEO_FAST")return DM_VIDEO_FAST; + return DM_NORMAL; + +} + +std::string MarkerDetector::Params::toString(CornerRefinementMethod dm){ + switch(dm){ + case CORNER_LINES:return "CORNER_LINES"; + case CORNER_SUBPIX:return "CORNER_SUBPIX"; + case CORNER_NONE:return "CORNER_NONE"; + }; + return "CORNER_SUBPIX"; +} +CornerRefinementMethod MarkerDetector::Params::getCornerRefinementMethodFromString(const std::string &str){ + if ( str=="CORNER_LINES")return CORNER_LINES; + if ( str=="CORNER_SUBPIX")return CORNER_SUBPIX; + if ( str=="CORNER_NONE")return CORNER_NONE; + return CORNER_SUBPIX; +} +std::string MarkerDetector::Params::toString(MarkerDetector::ThresMethod dm){ + switch(dm){ + case THRES_ADAPTIVE:return "THRES_ADAPTIVE"; + case THRES_AUTO_FIXED:return "THRES_AUTO_FIXED"; + }; + return "THRES_ADAPTIVE"; +} +MarkerDetector::ThresMethod MarkerDetector::Params::getCornerThresMethodFromString(const std::string &str){ + if ( str=="THRES_ADAPTIVE")return THRES_ADAPTIVE; + if ( str=="THRES_AUTO_FIXED")return THRES_AUTO_FIXED; + return THRES_ADAPTIVE; +} +void MarkerDetector::Params::setThresholdMethod( MarkerDetector::ThresMethod method,int thresHold,int wsize,int wsize_range ){ + AdaptiveThresWindowSize=wsize; + thresMethod=method; + if (thresHold==-1){ + if ( method==MarkerDetector::THRES_AUTO_FIXED ) ThresHold=100; + else ThresHold=7; + } + else ThresHold=thresHold; + AdaptiveThresWindowSize_range=wsize_range; +} +void MarkerDetector::Params::setDetectionMode( DetectionMode dm,float minMarkerSize){ + detectMode=dm; + minSize=minMarkerSize; + if(detectMode==DM_NORMAL){ + setAutoSizeSpeedUp(false); + setThresholdMethod(THRES_ADAPTIVE); + } + else if (detectMode==DM_FAST ){ + setAutoSizeSpeedUp(false); + setThresholdMethod(THRES_AUTO_FIXED); + } + else if(detectMode==DM_VIDEO_FAST){ + setThresholdMethod(THRES_AUTO_FIXED); + setAutoSizeSpeedUp(true,0.3); + } +} +void MarkerDetector::Params::setCornerRefinementMethod( CornerRefinementMethod method){ + cornerRefinementM=method; + if(method!=CORNER_SUBPIX) minSize=0; +} + void MarkerDetector::Params::_toStream(const std::string &strg,std::ostream &str){ + uint32_t s=strg.size(); + str.write((char*)&s,sizeof(s)); + str.write(strg.c_str(),strg.size()); +} + void MarkerDetector::Params::_fromStream(std::string &strg,std::istream &str){ + uint32_t s; + str.read((char*)&s,sizeof(s)); + strg.resize(s); + str.read(&strg[0],strg.size()); +} + + void MarkerDetector::cornerUpsample(std::vector >& corners, cv::Size lowResImageSize ){ + _impl->cornerUpsample(corners,lowResImageSize); + } + + + +}; diff --git a/thirdparty/aruco-3.1.12/src/markerdetector.h b/thirdparty/aruco-3.1.12/src/markerdetector.h new file mode 100644 index 0000000..0a295dc --- /dev/null +++ b/thirdparty/aruco-3.1.12/src/markerdetector.h @@ -0,0 +1,417 @@ +/** +Copyright 2017 Rafael Muñoz Salinas. All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are +permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this list of + conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright notice, this list + of conditions and the following disclaimer in the documentation and/or other materials + provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY Rafael Muñoz Salinas ''AS IS'' AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL Rafael Muñoz Salinas OR +CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +The views and conclusions contained in the software and documentation are those of the +authors and should not be interpreted as representing official policies, either expressed +or implied, of Rafael Muñoz Salinas. +*/ + + +#ifndef _ARUCO_MarkerDetector_H +#define _ARUCO_MarkerDetector_H + +#include "aruco_export.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include "marker.h" + +#include + +namespace aruco +{ + +/** + * @brief The DetectionMode enum defines the different possibilities for detection. + * Specifies the detection mode. We have preset three types of detection modes. These are + * ways to configure the internal parameters for the most typical situations. The modes are: + * - DM_NORMAL: In this mode, the full resolution image is employed for detection and slow threshold method. Use this method when + * you process individual images that are not part of a video sequence and you are not interested in speed. + * + * - DM_FAST: In this mode, there are two main improvements. First, image is threshold using a faster method using a global threshold. + * Also, the full resolution image is employed for detection, but, you could speed up detection even more by indicating a minimum size of the + * markers you will accept. This is set by the variable minMarkerSize which shoud be in range [0,1]. When it is 0, means that you do not set + * a limit in the size of the accepted markers. However, if you set 0.1, it means that markers smaller than 10% of the total image area, will not + * be detected. Then, the detection can be accelated up to orders of magnitude compared to the normal mode. + * + * - DM_VIDEO_FAST: This is similar to DM_FAST, but specially adapted to video processing. In that case, we assume that the observed markers + * when you call to detect() have a size similar to the ones observed in the previous frame. Then, the processing can be speeded up by employing smaller versions + * of the image automatically calculated. + * + */ +enum DetectionMode: int{DM_NORMAL=0,DM_FAST=1,DM_VIDEO_FAST=2}; +/** Method employed to refine the estimation of the corners +* - CORNER_SUBPIX: uses subpixel refinement implemented in opencv +* - CORNER_LINES: uses all the pixels in the corner border to estimate the 4 lines of the square. Then +* estimate the point in which they intersect. In seems that it more robust to noise. However, it only works if input image is not resized. +* So, the value minMarkerSize will be set to 0. +* +* - CORNER_NONE: Does no refinement of the corner. Again, it requires minMakerSize to be 0 +*/ +enum CornerRefinementMethod: int{CORNER_SUBPIX=0,CORNER_LINES=1,CORNER_NONE=2}; + + +class CameraParameters; +class MarkerLabeler; +class MarkerDetector_Impl; +typedef Marker MarkerCandidate; + +/**\brief Main class for marker detection + * + */ + +class ARUCO_EXPORT MarkerDetector +{ + enum ThresMethod: int{THRES_ADAPTIVE=0,THRES_AUTO_FIXED=1 }; + friend class MarkerDetector_Impl; +public: + + /**Operating params + */ + struct ARUCO_EXPORT Params + { + + /**Specifies the detection mode. We have preset three types of detection modes. These are + * ways to configure the internal parameters for the most typical situations. The modes are: + * - DM_NORMAL: In this mode, the full resolution image is employed for detection and slow threshold method. Use this method when + * you process individual images that are not part of a video sequence and you are not interested in speed. + * + * - DM_FAST: In this mode, there are two main improvements. First, image is threshold using a faster method using a global threshold. + * Also, the full resolution image is employed for detection, but, you could speed up detection even more by indicating a minimum size of the + * markers you will accept. This is set by the variable minMarkerSize which shoud be in range [0,1]. When it is 0, means that you do not set + * a limit in the size of the accepted markers. However, if you set 0.1, it means that markers smaller than 10% of the total image area, will not + * be detected. Then, the detection can be accelated up to orders of magnitude compared to the normal mode. + * + * - DM_VIDEO_FAST: This is similar to DM_FAST, but specially adapted to video processing. In that case, we assume that the observed markers + * when you call to detect() have a size similar to the ones observed in the previous frame. Then, the processing can be speeded up by employing smaller versions + * of the image automatically calculated. + * + */ + void setDetectionMode( DetectionMode dm,float minMarkerSize); + + /**Enables/Disbles the detection of enclosed markers. Enclosed markers are markers where corners are like opencv chessboard pattern + */ + void detectEnclosedMarkers(bool do_){enclosedMarker=do_;} + + /**Sets the corner refinement method + * - CORNER_SUBPIX: uses subpixel refinement implemented in opencv + * - CORNER_LINES: uses all the pixels in the corner border to estimate the 4 lines of the square. Then + * estimate the point in which they intersect. In seems that it more robust to noise. However, it only works if input image is not resized. + * So, the value minMarkerSize will be set to 0. + * + * - CORNER_NONE: Does no refinement of the corner. Again, it requires minMakerSize to be 0 + */ + void setCornerRefinementMethod( CornerRefinementMethod method); + + + //----------------------------------------------------------------------------- + // Below this point you probably should not use the functions + /**Sets the thresholding method manually. Do no + */ + void setThresholdMethod(ThresMethod method,int thresHold=-1,int wsize=-1,int wsize_range=0 ); + + + + void setAutoSizeSpeedUp(bool v,float Ts=0.25){autoSize=v;ts=Ts;} + bool getAutoSizeSpeedUp()const{return autoSize;} + + + + + + void save(cv::FileStorage &fs)const; + void load(cv::FileStorage &fs); + + void toStream(std::ostream &str)const; + void fromStream(std::istream &str); + + static std::string toString(DetectionMode dm); + static DetectionMode getDetectionModeFromString(const std::string &str); + static std::string toString(CornerRefinementMethod dm); + static CornerRefinementMethod getCornerRefinementMethodFromString(const std::string &str); + static std::string toString(ThresMethod dm); + static ThresMethod getCornerThresMethodFromString(const std::string &str); + + //Detection mode + + DetectionMode detectMode=DM_NORMAL; + + //maximum number of parallel threads + int maxThreads=1;//-1 means all + + // border around image limits in which corners are not allowed to be detected. (0,1) + float borderDistThres=0.015f; + int lowResMarkerSize=20; //minimum size of a marker in the low resolution image + + // minimum size of a contour lenght. We use the following formula + // minLenght= min ( _minSize_pix , _minSize* Is)*4 + // being Is=max(imageWidth,imageHeight) + // the value _minSize are normalized, thus, depends on camera image size + // However, _minSize_pix is expressed in pixels (you can use the one you prefer) + float minSize=-1;//tau_i in paper + int minSize_pix=-1; + bool enclosedMarker=false;//special treatment for enclosed markers + float error_correction_rate=0; + std::string dictionary="ALL_DICTS"; + //threshold methods + ThresMethod thresMethod=THRES_ADAPTIVE; + int NAttemptsAutoThresFix=3;//number of times that tries a random threshold in case of THRES_AUTO_FIXED + int trackingMinDetections=0;//no tracking + + + // Threshold parameters + int AdaptiveThresWindowSize=-1, ThresHold=7, AdaptiveThresWindowSize_range=0; + // size of the image passedta to the MarkerLabeler + int markerWarpPixSize=5;//tau_c in paper + + CornerRefinementMethod cornerRefinementM=CORNER_SUBPIX; + //enable/disables the method for automatic size estimation for speed up + bool autoSize=false; + float ts=0.25f;//$\tau_s$ is a factor in the range $(0,1]$ that accounts for the camera motion speed. For instance, when $\tau_s=0.1$, it means that in the next frame, $\tau_i$ is such that markers $10\%$ smaller than the smallest marker in the current image will be seek. To avoid loosing track of the markers. If no markers are detected in a frame, $\tau_i$ is set to zero for the next frame so that markers of any size can be detected. + /**Enables automatic image resize according to elements detected in previous frame + * @param v + * @param ts is a factor in the range $(0,1]$ that accounts for the camera motion speed. For instance, when ts=0.1 , it means that in the next frame, $\tau_i$ is such that markers $10\%$ smaller than the smallest marker in the current image will be seek. To avoid loosing track of the markers. + */ + float pyrfactor=2; + int closingSize=0;//enables/disables morph closing operation. The actual param used is closingSize*2+1 + +private: + + static void _toStream(const std::string &strg,std::ostream &str); + static void _fromStream(std::string &strg,std::istream &str); + template + static bool attemtpRead(const std::string &name,Type &var,cv::FileStorage&fs ){ + if ( fs[name].type()!=cv::FileNode::NONE){ + fs[name]>>var; + return true; + } + return false; + } + }; + + /** + * See + */ + MarkerDetector(); + /**Creates indicating the dictionary. See @see setDictionary for further details + * @param dict_type Dictionary employed. See @see setDictionary for further details + * @param error_correction_rate value indicating the correction error allowed. Is in range [0,1]. 0 means no + * correction at all. So + * an erroneous bit will result in discarding the marker. 1, mean full correction. The maximum number of bits + * that can be corrected depends on each ditionary. + * We recommend using values from 0 to 0.5. (in general, this will allow up to 3 bits or correction). */ + MarkerDetector(int dict_type, float error_correction_rate = 0); + MarkerDetector(std::string dict_type, float error_correction_rate = 0); + + /**Saves the configuration of the detector to a file. + */ + void saveParamsToFile(const std::string &path)const; + + /**Loads the configuration from a file. + */ + void loadParamsFromFile(const std::string &path); + + + /** + */ + ~MarkerDetector(); + /**Specifies the detection mode. We have preset three types of detection modes. These are + * ways to configure the internal parameters for the most typical situations. The modes are: + * - DM_NORMAL: In this mode, the full resolution image is employed for detection and slow threshold method. Use this method when + * you process individual images that are not part of a video sequence and you are not interested in speed. + * + * - DM_FAST: In this mode, there are two main improvements. First, image is threshold using a faster method using a global threshold. + * Also, the full resolution image is employed for detection, but, you could speed up detection even more by indicating a minimum size of the + * markers you will accept. This is set by the variable minMarkerSize which shoud be in range [0,1]. When it is 0, means that you do not set + * a limit in the size of the accepted markers. However, if you set 0.1, it means that markers smaller than 10% of the total image area, will not + * be detected. Then, the detection can be accelated up to orders of magnitude compared to the normal mode. + * + * - DM_VIDEO_FAST: This is similar to DM_FAST, but specially adapted to video processing. In that case, we assume that the observed markers + * when you call to detect() have a size similar to the ones observed in the previous frame. Then, the processing can be speeded up by employing smaller versions + * of the image automatically calculated. + * + */ + void setDetectionMode( DetectionMode dm,float minMarkerSize=0); + /**returns current detection mode + */ + DetectionMode getDetectionMode( ); + /**Detects the markers in the image passed + * + * If you provide information about the camera parameters and the size of the marker, then, the extrinsics of + * the markers are detected + * + * @param input input color image + * @param camMatrix intrinsic camera information. + * @param distCoeff camera distorsion coefficient. If set Mat() if is assumed no camera distorion + * @param markerSizeMeters size of the marker sides expressed in meters. If not specified this value, the + * extrinsics of the markers are not detected. + * @param setYPerperdicular If set the Y axis will be perpendicular to the surface. Otherwise, it will be the Z + * axis + * @return vector with the detected markers + */ + std::vector detect(const cv::Mat& input); + std::vector detect(const cv::Mat& input, const CameraParameters& camParams, + float markerSizeMeters, bool setYPerperdicular = false); + + /**Detects the markers in the image passed + * + * If you provide information about the camera parameters and the size of the marker, then, the extrinsics of + * the markers are detected + * + * @param input input color image + * @param detectedMarkers output vector with the markers detected + * @param camParams Camera parameters + * @param markerSizeMeters size of the marker sides expressed in meters + * @param setYPerperdicular If set the Y axis will be perpendicular to the surface. Otherwise, it will be the + * Z axis + */ + void detect(const cv::Mat& input, std::vector& detectedMarkers, CameraParameters camParams, + float markerSizeMeters = -1, bool setYPerperdicular = false); + + /**Detects the markers in the image passed + * + * If you provide information about the camera parameters and the size of the marker, then, the extrinsics of + * the markers are detected + * + * NOTE: be sure that the camera matrix is for this image size. If you do not know what I am talking about, use + * functions above and not this one + * @param input input color image + * @param detectedMarkers output vector with the markers detected + * @param camMatrix intrinsic camera information. + * @param distCoeff camera distorsion coefficient. If set Mat() if is assumed no camera distorion + * @param markerSizeMeters size of the marker sides expressed in meters + * @param setYPerperdicular If set the Y axis will be perpendicular to the surface. Otherwise, it will be the Z + * axis + */ + // void detect(const cv::Mat& input, std::vector& detectedMarkers, cv::Mat camMatrix = cv::Mat(), + // cv::Mat distCoeff = cv::Mat(), float markerSizeMeters = -1, + // bool setYPerperdicular = false); + + void detect(const cv::Mat& input, std::vector>& detectedMarkers, cv::Mat camMatrix = cv::Mat(), + cv::Mat distCoeff = cv::Mat(), float markerSizeMeters = -1, + bool setYPerperdicular = false); + + + /**Returns operating params + */ + Params getParameters() const; + /**Returns operating params + */ + Params & getParameters() ; + /** Sets the dictionary to be employed. + * You can choose:ARUCO,//original aruco dictionary. By default + ARUCO_MIP_25h7, + ARUCO_MIP_16h3, + ARUCO_MIP_36h12, **** recommended + ARTAG,// + ARTOOLKITPLUS, + ARTOOLKITPLUSBCH,// + TAG16h5,TAG25h7,TAG25h9,TAG36h11,TAG36h10//APRIL TAGS DICIONARIES + CHILITAGS,//chili tags dictionary . NOT RECOMMENDED. It has distance 0. Markers 806 and 682 + should not be used!!! + + If dict_type is none of the above ones, it is assumed you mean a CUSTOM dicionary saved in a file @see + Dictionary::loadFromFile + Then, it tries to open it + */ + void setDictionary(std::string dict_type, float error_correction_rate = 0); + + /** + * @brief setDictionary Specifies the dictionary you want to use for marker decoding + * @param dict_type dictionary employed for decoding markers @see Dictionary + * @param error_correction_rate value indicating the correction error allowed. Is in range [0,1]. 0 means no + * correction at all. So + * an erroneous bit will result in discarding the marker. 1, mean full correction. The maximum number of bits + * that can be corrected depends on each ditionary. + * We recommend using values from 0 to 0.5. (in general, this will allow up to 3 bits or correction). + */ + void setDictionary(int dict_type, float error_correction_rate = 0); + + /** + * Returns a reference to the internal image thresholded. Since there can be generated many of them, specify which + */ + cv::Mat getThresholdedImage(uint32_t idx=0); + /**returns the number of thresholed images available + */ + // size_t getNhresholdedImages()const{return _thres_Images.size();} + + + + ///------------------------------------------------- + /// Methods you may not need + /// Thesde methods do the hard work. They have been set public in case you want to do customizations + ///------------------------------------------------- + + /** + * @brief setMakerLabeler sets the labeler employed to analyze the squares and extract the inner binary code + * @param detector + */ + void setMarkerLabeler(cv::Ptr detector); + cv::Ptr getMarkerLabeler(); + + + /**Returns a list candidates to be markers (rectangles), for which no valid id was found after calling + * detectRectangles + */ + std::vector getCandidates()const; + + std::vector getImagePyramid(); + /* + * @param corners vectors of vectors + */ + void cornerUpsample(std::vector >& corners, cv::Size lowResImageSize ); + void cornerUpsample(std::vector& corners, cv::Size lowResImageSize ); + + /** + * Given the iput image with markers, creates an output image with it in the canonical position + * @param in input image + * @param out image with the marker + * @param size of out + * @param points 4 corners of the marker in the image in + * @return true if the operation succeed + */ + bool warp(cv::Mat& in, cv::Mat& out, cv::Size size, std::vector points); + + + //serialization in binary mode + void toStream(std::ostream &str)const; + void fromStream(std::istream &str); + //configure the detector from a set of parameters + void setParameters(const Params ¶ms); + + + + + + private: + MarkerDetector_Impl *_impl; + + + }; +}; +#endif diff --git a/thirdparty/aruco-3.1.12/src/markerdetector_impl.cpp b/thirdparty/aruco-3.1.12/src/markerdetector_impl.cpp new file mode 100644 index 0000000..4fb7c44 --- /dev/null +++ b/thirdparty/aruco-3.1.12/src/markerdetector_impl.cpp @@ -0,0 +1,1659 @@ +/** +Copyright 2017 Rafael Muñoz Salinas. All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are +permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this list of + conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright notice, this list + of conditions and the following disclaimer in the documentation and/or other materials + provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY Rafael Muñoz Salinas ''AS IS'' AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL Rafael Muñoz Salinas OR +CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +The views and conclusions contained in the software and documentation are those of the +authors and should not be interpreted as representing official policies, either expressed +or implied, of Rafael Muñoz Salinas. +*/ + +#include "markerdetector_impl.h" +#include "cameraparameters.h" +#include "markerlabeler.h" +#include "timers.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "debug.h" +#include "aruco_cvversioning.h" +//#include "picoflann.h" + +//#ifdef _DEBUG +//#include +//#endif +using namespace std; +using namespace cv; + +namespace aruco +{ +/************************************ + * + * + * + * + ************************************/ +MarkerDetector_Impl::MarkerDetector_Impl() +{ + markerIdDetector = aruco::MarkerLabeler::create(Dictionary::ALL_DICTS); + setDetectionMode(DM_NORMAL); +} +/************************************ + * + * + * + * + ************************************/ +MarkerDetector_Impl::MarkerDetector_Impl(int dict_type, float error_correction_rate ){ + setDictionary(dict_type,error_correction_rate); + setDetectionMode(DM_NORMAL); +} +/************************************ + * + * + * + * + ************************************/ +MarkerDetector_Impl::MarkerDetector_Impl(std::string dict_type, float error_correction_rate ){ + setDictionary(dict_type,error_correction_rate); + setDetectionMode(DM_NORMAL); + +} +/************************************ + * + * + * + * + ************************************/ + +MarkerDetector_Impl::~MarkerDetector_Impl() +{ +} + +void MarkerDetector_Impl::setParameters(const MarkerDetector::Params ¶ms){ + _params=params; + setDictionary(_params.dictionary,_params.error_correction_rate); +} + +/************************************ + * + * + * + * + ************************************/ +void MarkerDetector_Impl::setDetectionMode( DetectionMode dm,float minMarkerSize){ + _params.setDetectionMode(dm,minMarkerSize); +} + +DetectionMode MarkerDetector_Impl::getDetectionMode( ){ +return _params.detectMode; +} + + + +/************************************ + * + * + * + * + ************************************/ + +std::vector MarkerDetector_Impl::detect(const cv::Mat& input) +{ + std::vector detectedMarkers; + detect(input, detectedMarkers); + return detectedMarkers; +} + +std::vector MarkerDetector_Impl::detect(const cv::Mat& input, const CameraParameters& camParams, + float markerSizeMeters, + bool setYPerperdicular) +{ + std::vector detectedMarkers; + detect(input, detectedMarkers, camParams, markerSizeMeters, setYPerperdicular); + return detectedMarkers; +} + +/************************************ + * + * + * + * + ************************************/ +void MarkerDetector_Impl::detect(const cv::Mat& input, std::vector& detectedMarkers, CameraParameters camParams, + float markerSizeMeters, bool setYPerpendicular) +{ + if (camParams.CamSize != input.size() && camParams.isValid() && markerSizeMeters > 0) + { + // must resize camera parameters if we want to compute properly marker poses + CameraParameters cp_aux = camParams; + cp_aux.resize(input.size()); + detect(input, detectedMarkers, cp_aux.CameraMatrix, cp_aux.Distorsion, markerSizeMeters, setYPerpendicular); + } + else + { + detect(input, detectedMarkers, camParams.CameraMatrix, camParams.Distorsion, markerSizeMeters,setYPerpendicular); + } +} +int MarkerDetector_Impl::getMarkerWarpSize(){ + + auto bis=markerIdDetector->getBestInputSize(); + if ( bis!=-1) return bis; + + int ndiv= markerIdDetector->getNSubdivisions(); + if (ndiv==-1) ndiv=7;//set any possible value(it is used for non dictionary based labelers) + return _params.markerWarpPixSize*ndiv;//this is the minimum size that the smallest marker will have + +} + + + + + +void MarkerDetector_Impl::buildPyramid(vector &ImagePyramid,const cv::Mat &grey,int minSize){ + //determine numbre of pyramid images + int npyrimg=1; + cv::Size imgpsize=grey.size(); + while (imgpsize.width > minSize) { imgpsize=cv::Size(imgpsize.width/_params.pyrfactor,imgpsize.height/_params.pyrfactor) ;npyrimg++;} + + ImagePyramid.resize(npyrimg); + imagePyramid[0]=grey; + //now, create pyramid images + imgpsize=grey.size(); + for(int i=1;i& kpoints, bool norm, int wsize) + { + if(im.type()!=CV_8UC1)throw std::runtime_error("assignClass_fast Input image must be 8UC1"); + int wsizeFull=wsize*2+1; + + cv::Mat labels = cv::Mat::zeros(wsize*2+1,wsize*2+1,CV_8UC1); + cv::Mat thresIm=cv::Mat(wsize*2+1,wsize*2+1,CV_8UC1); + + for(auto &kp:kpoints) + { + int x = kp.pt.x+0.5f; + int y = kp.pt.y+0.5f; + + cv::Rect r= cv::Rect(x-wsize,y-wsize,wsize*2+1,wsize*2+1); + //Check boundaries + if(r.x<0 || r.x+r.width>im.cols || r.y<0 || r.y+r.height>im.rows) continue; + + + int endX=r.x+r.width; + int endY=r.y+r.height; + uchar minV=255,maxV=0; + for(int y=r.y; y(y); + for(int x=r.x; xptr[x]) minV=ptr[x]; + if(maxV( r.y+y)+r.x; + uchar *thresPtr= thresIm.ptr(y); + for(int x=0; xthres) { + nZ++; + thresPtr[x]=255; + } + else thresPtr[x]=0; + } + } + //set all to zero labels.setTo(cv::Scalar::all(0)); + for(int y=0; y(y); + for(int x=0; x unions; + for(int y=0; y(y); + uchar *labelsPtr=labels.ptr(y); + for(int x=0; x -1) + { + if(reg == thresPtr[x-1]) + lleft_px =labelsPtr[x-1]; + } + + if(y-1 > -1) + { + if(reg ==thresIm.ptr(y-1) [x] )//thresIm.at(y-1, x) + ltop_px = labels.at(y-1, x); + } + + if(lleft_px==0 && ltop_px==0) + labelsPtr[x] = newLab++; + + else if(lleft_px!=0 && ltop_px!=0) + { + if(lleft_px < ltop_px) + { + labelsPtr[x] = lleft_px; + unions[ltop_px] = lleft_px; + } + else if(lleft_px > ltop_px) + { + labelsPtr[x] = ltop_px; + unions[lleft_px] = ltop_px; + } + else + {//IGuales + labelsPtr[x] = ltop_px; + } + } + else + { + if(lleft_px!=0) labelsPtr[x] = lleft_px; + else labelsPtr[x] = ltop_px; + } + } + } + + int nc= newLab-1 - unions.size(); + if(nc==2) + { + if(nZ > thresIm.total()-nZ) kp.class_id = 0; + else kp.class_id = 1; + } + else if (nc > 2) { + kp.class_id = 2; + + + } + } + } + +//void fastCorners{ +// vector kpts; +// cv::FAST(input,kpts,7); + +// // Adapter. +// // Given an Point2f element, it returns the element of the dimension specified such that dim=0 is x and dim=1 is y +// struct PicoFlann_Point2fAdapter{ +// inline float operator( )(const cv::KeyPoint &kp, int dim)const { return dim==0?kp.pt.x:kp.pt.y; } +// }; + +// picoflann::KdTreeIndex<2,PicoFlann_Point2fAdapter> kdtree;//2 is the number of dimensions +// kdtree.build(kpts); +// //search 10 nearest neibors to point (0,0) +// vector maxima(kpts.size(),true); +// for(auto &kpt:kpts){ +// kpt.size=1;//used +// kpt.class_id=-1;//not yet +// } + +// int classIdx=0; +// vector > center_weight; +// center_weight.reserve(kpts.size()); + +// for(size_t i=0;i > res=kdtree.radiusSearch(kpts,kpts[i],7); +// //compute the one with max response +// for(auto p:res){ +// if( kpts[p.first].response>= kpts[maxResponseIdx].response && kpts[p.first].size) +// maxResponseIdx= p.first ; +// } +// auto &maxKp=kpts[ maxResponseIdx]; + +// if(maxKp.class_id==-1){ +// maxKp.class_id=int(center_weight.size()); +// center_weight.push_back( { maxKp.pt*maxKp.response,maxKp.response}); +// } + +// //the others are non maxima +// for(auto p:res){ +// if(p.first==maxResponseIdx) continue; +// auto &kp=kpts[p.first]; +// if( kp.size!=0 && kp.class_id==-1){ +// kp.size=0;//sets as non maxiima +// center_weight[maxKp.class_id].first+=kp.pt*kp.response; +// center_weight[maxKp.class_id].second+=kp.response; +// } +// } +// } +// } + +// //take only the selected ones +// kpts.clear(); +// for(auto cw:center_weight){ +// cv::KeyPoint kp; +// kp.pt= cw.first*(1./cw.second); +// kpts.push_back(kp); +// } + +//// kpts.erase(std::remove_if(kpts.begin(),kpts.end(), [ ](const cv::KeyPoint &kp){return kp.class_id==0;}), kpts.end()); + +// assignClass_fast(input,kpts,false,5); + + +// cv::Mat im2; +// cv::cvtColor(input,im2,CV_GRAY2BGR); +// for(int i=0;i< kpts.size();i++){ +// auto & kp=kpts[i]; + +// if(kp.class_id==2){ + +// cv::rectangle(auxThresImage,kp.pt-cv::Point2f(2,2),kp.pt+cv::Point2f(2,2),cv::Scalar(0,0,0),-1); +// cv::rectangle(im2,kp.pt-cv::Point2f(2,2),kp.pt+cv::Point2f(2,2),cv::Scalar(255,0,123)); +// } +// else +// cv::rectangle(im2,kp.pt-cv::Point2f(2,2),kp.pt+cv::Point2f(2,2),cv::Scalar(125,125,125)); +// } + +//} +/************************************************** + * + */ + +vector< MarkerDetector_Impl::MarkerCandidate> MarkerDetector_Impl::thresholdAndDetectRectangles(const cv::Mat & input, int thres_param1,int thres_param2,bool enclosed,cv::Mat &auxThresImage){ + // ensure that _thresParam1%2==1 + __ARUCO_ADDTIMER__; + if (thres_param1 < 3) thres_param1 = 3; + else if (((int)thres_param1) % 2 != 1) thres_param1 = (int)(thres_param1 + 1); + + int enclosedOffset=-1; + cv::Mat auxImage; + //if ( !erode) + auxImage=auxThresImage; + if (_params.thresMethod==MarkerDetector::THRES_AUTO_FIXED){ + cv::threshold(input, auxImage, static_cast(thres_param2),255,THRESH_BINARY_INV); + if(enclosed){ + cv::Mat aux1; + enclosedOffset=int(std::max(3.0, 3./1920. * float(auxImage.cols) )); + if (enclosedOffset%2==0) enclosedOffset++; + cv::erode(auxImage,aux1, getStructuringElement( MORPH_CROSS,cv::Size( enclosedOffset, enclosedOffset ),cv::Point( enclosedOffset/2,enclosedOffset/2 ) )); + cv::bitwise_xor(aux1,auxImage,auxImage); + + __ARUCO_TIMER_EVENT__("erode"); + } + } + else { + cv::adaptiveThreshold(input, auxImage, 255., ADAPTIVE_THRESH_MEAN_C, THRESH_BINARY_INV, static_cast(thres_param1), static_cast(thres_param2)); + if(_params.closingSize>0){ + int p=_params.closingSize*2+1; + cv::Mat im2; + cv::Mat ker=cv::getStructuringElement(cv::MORPH_RECT,cv::Size(p,p) ); + cv::morphologyEx(auxImage,im2,cv::MORPH_OPEN,ker); + auxThresImage=im2; + } + enclosedOffset=thres_param1; + } + __ARUCO_TIMER_EVENT__("thres"); + + +//fastCorners () + + + vector MarkerCanditates; + // calcualte the min_max contour sizes + int thisImageMinSize=int( 3.5*float(_params.lowResMarkerSize)); + //if image is eroded, minSize must be adapted + std::vector hierarchy; + std::vector> contours; + cv::findContours(auxThresImage, contours, cv::noArray(), cv::RETR_LIST, cv::CHAIN_APPROX_NONE); + __ARUCO_TIMER_EVENT__("find-cont"); + vector approxCurve; +//#define _aruco_debug_detectrectangles +#ifdef _aruco_debug_detectrectangles + cv::Mat simage; + cv::cvtColor(input,simage,CV_GRAY2BGR); +#endif + + /// for each contour, analyze if it is a paralelepiped likely to be the marker + for (unsigned int i = 0; i < contours.size(); i++) + { +#ifdef _aruco_debug_detectrectangles + drawContour(simage, contours[i], Scalar(125, 125, 255) ); +#endif + // check it is a possible element by first checking that is is large enough + if (thisImageMinSize < int(contours[i].size()) ) + { + // can approximate to a convex rect? + cv::approxPolyDP(contours[i], approxCurve, double(contours[i].size()) * 0.05, true); + + if (approxCurve.size() == 4 && cv::isContourConvex(approxCurve)) + { +#ifdef _aruco_debug_detectrectangles + drawApproxCurve(simage, approxCurve, Scalar(255, 0, 255),1); +#endif + // ensure that the distace between consecutive points is large enough + float minDist = std::numeric_limits::max(); + for (int j = 0; j < 4; j++) + { + float d = cv::norm(approxCurve[j]-approxCurve[(j + 1) % 4] ); + if (d < minDist) minDist = d; + } + + // add the points + MarkerCanditates.push_back(MarkerCandidate()); + for (int j = 0; j < 4; j++) + MarkerCanditates.back().push_back( Point2f(static_cast(approxCurve[j].x),static_cast(approxCurve[j].y))); + //now, if it is eroded, must enalrge 1 bit the corners to go to the real location + //for each opposite pair, take the line joining them and move one pixel apart + //ideally, Bresenham's algorithm should be used + if (enclosed) { + enlargeMarkerCandidate(MarkerCanditates.back(),float(enclosedOffset)/2.); + } +#ifdef _aruco_debug_detectrectangles + MarkerCanditates.back().draw(simage,Scalar(255, 255, 0),1,false); +#endif + MarkerCanditates.back().contourPoints=contours[i]; + + } + + } + } +#ifdef _aruco_debug_detectrectangles + cv::imshow("contours",simage); +#endif + return MarkerCanditates; +} + + +void MarkerDetector_Impl::thresholdAndDetectRectangles_thread( ){ + while(true){ + bool enclosed=false; + auto tad=_tasks.pop(); + if (tad.task==EXIT_TASK) return; + else if (tad.task==ENCLOSE_TASK) enclosed=true; + _vcandidates[tad.outIdx]=thresholdAndDetectRectangles(_thres_Images[tad.inIdx],tad.param1,tad.param2,enclosed,_thres_Images[tad.outIdx]); + + }; +} + +vector MarkerDetector_Impl::thresholdAndDetectRectangles(const cv::Mat &image ){ + + // compute the different values of param1 + + int adaptiveWindowSize=_params.AdaptiveThresWindowSize; + if (_params.AdaptiveThresWindowSize==-1) + adaptiveWindowSize=max(int(3),int(15*float(image.cols)/1920.)); + if(adaptiveWindowSize%2==0)adaptiveWindowSize++; + + // adaptiveWindowSize=15; + + vector p1_values; + for (int i = static_cast(std::max(3., adaptiveWindowSize- 2. * _params.AdaptiveThresWindowSize_range)); i <= adaptiveWindowSize + 2 * _params.AdaptiveThresWindowSize_range; i += 2) + p1_values.push_back(i); + + size_t nimages=p1_values.size(); + _tooNearDistance=p1_values.back(); + _vcandidates.resize(nimages); + _thres_Images.resize(nimages+1); + _thres_Images.back()=image; //add at the end the original image + //first, thresholded images + ThresAndDetectRectTASK tad; + vector vtad; + + + ThreadTasks task=THRESHOLD_TASK; + if (_params.enclosedMarker) task=ENCLOSE_TASK; + for (size_t i = 0; i < p1_values.size(); i++){ + tad.inIdx=int(_thres_Images.size()-1); + tad.param1=p1_values[i]; + tad.param2=_params.ThresHold; + tad.outIdx=i; + tad.task=task; + _tasks.push(tad); + vtad.push_back(tad); + } + + + //reserve images + for(size_t i=0;i threads; + for(int i=0;i joined; + joinVectors( _vcandidates,joined); + return joined; + +} + +vector< MarkerDetector_Impl::MarkerCandidate> MarkerDetector_Impl::prefilterCandidates( vector &MarkerCanditates,cv::Size imgSize){ + ///////////////////////////////////////////////////////////////////////////////////// + /// CANDIDATE PREFILTERING- Merge and Remove candidates so that only reliable ones are returned + ////////////////////////////////////////////////////////////////////////////////// + /// sort the points in anti-clockwise order + valarray swapped(false, MarkerCanditates.size()); // used later + for (unsigned int i = 0; i < MarkerCanditates.size(); i++) + { + // trace a line between the first and second point. + // if the thrid point is at the right side, then the points are anti-clockwise + double dx1 = MarkerCanditates[i][1].x - MarkerCanditates[i][0].x; + double dy1 = MarkerCanditates[i][1].y - MarkerCanditates[i][0].y; + double dx2 = MarkerCanditates[i][2].x - MarkerCanditates[i][0].x; + double dy2 = MarkerCanditates[i][2].y - MarkerCanditates[i][0].y; + double o = (dx1 * dy2) - (dy1 * dx2); + + if (o < 0.0) + { // if the third point is in the left side, then sort in anti-clockwise order + swap(MarkerCanditates[i][1], MarkerCanditates[i][3]); + swapped[i] = true; + } + } + + if(0){ + + /// remove these elements which corners are too close to each other + // first detect candidates to be removed + vector> TooNearCandidates; + for (unsigned int i = 0; i < MarkerCanditates.size(); i++) + { + // calculate the average distance of each corner to the nearest corner of the other marker candidate + for (unsigned int j = i + 1; j < MarkerCanditates.size(); j++) + { + valarray vdist(4); + for (int c = 0; c < 4; c++) + vdist[c] =cv::norm( MarkerCanditates[i][c] -MarkerCanditates[j][c]); + // if distance is too small + if (vdist[0] < _tooNearDistance && vdist[1] < _tooNearDistance && vdist[2] < _tooNearDistance && vdist[3] < _tooNearDistance) + TooNearCandidates.push_back(pair(i, j)); + } + } + + /// mark for removal the element of the pair with smaller perimeter + vector toRemove( MarkerCanditates.size(),false); + for (unsigned int i = 0; i < TooNearCandidates.size(); i++) + { + if (perimeter(MarkerCanditates[TooNearCandidates[i].first]) > perimeter(MarkerCanditates[TooNearCandidates[i].second])) + toRemove[TooNearCandidates[i].second] = true; + else + toRemove[TooNearCandidates[i].first] = true; + } + + /// find these too near borders and remove them + // remove markers with corners too near the image limits + int borderDistThresX = static_cast(_params.borderDistThres * float(imgSize.width)); + int borderDistThresY = static_cast(_params.borderDistThres * float(imgSize.height)); + for (size_t i = 0; i < MarkerCanditates.size(); i++) + { + // delete if any of the corners is too near image border + for (size_t c = 0; c < MarkerCanditates[i].size(); c++) + { + if (MarkerCanditates[i][c].x < borderDistThresX || MarkerCanditates[i][c].y < borderDistThresY + || MarkerCanditates[i][c].x > imgSize.width - borderDistThresX + || MarkerCanditates[i][c].y > imgSize.height - borderDistThresY) + { + toRemove[i] = true; + } + } + } + + //move to output only valid ones + vector finalCandidates; + finalCandidates.reserve(MarkerCanditates.size()); + for(size_t i=0;i&hist) +{ + for(int y=0;y(y); + for(int x=0;x &hist){ + float sum=0,invsum; + for(auto c:hist) sum+=c; + invsum=1./sum; + for(auto &c:hist) c*=invsum; + + float maxVar=0; + int bestT=-1; + for(int t=1;t<256;t++){ + float w0=0,w1=0,mean0=0,mean1=0; + for(int v=0;v1e-4 && w1>1e-4){ + mean0/=w0; + mean1/=w1; + float var=w0*w1*(mean0-mean1)*(mean0-mean1); + //cout<maxVar){ + maxVar=var; + bestT=t; + } + } + + } + return bestT; +} +/************************************ + * Main detection function. Performs all steps + ************************************/ +void MarkerDetector_Impl::detect(const cv::Mat& input, vector& detectedMarkers, Mat camMatrix, Mat distCoeff, + float markerSizeMeters, bool setYPerpendicular) +{ + // clear input data + detectedMarkers.clear(); + _vcandidates.clear(); + _candidates_wcontour.clear(); + __ARUCO_ADDTIMER__; + + + // it must be a 3 channel image + if (input.type() == CV_8UC3) + cv::cvtColor(input,grey,CV_BGR2GRAY); + // convertToGray(input, grey); + else grey = input; + __ARUCO_TIMER_EVENT__("ConvertGrey"); + + ////////////////////////////////////////////////////////////////////// + ///CREATE LOW RESOLUTION IMAGE IN WHICH MARKERS WILL BE DETECTED + ////////////////////////////////////////////////////////////////////// + float ResizeFactor=1; + //use the minimum and markerWarpSize to determine the optimal image size on which to do rectangle detection + cv::Mat imgToBeThresHolded ; + cv::Size maxImageSize=grey.size(); + auto minpixsize=getMinMarkerSizePix(input.size());//min pixel size of the marker in the original image + if ( _params.lowResMarkerSize1) + buildPyramidThread=std::thread([&]{buildPyramid(imagePyramid,grey ,2*getMarkerWarpSize());}); + else buildPyramid(imagePyramid,grey,2*getMarkerWarpSize()); + __ARUCO_TIMER_EVENT__("BuildPyramid"); + } + else{ + imagePyramid.resize(1); + imagePyramid[0]=grey; + } + + + int nAttemptsAutoFix=0; + bool keepLookingFor=false; + std::vector hist(256,0); + do{ + /////////////////////////////////////////////////////////////////////////// + /// THRESHOLD IMAGES AND DETECT INITIAL RECTANGLES + /////////////////////////////////////////////////////////////////////////// + vector MarkerCanditates; + MarkerCanditates=thresholdAndDetectRectangles(imgToBeThresHolded ); + thres =_thres_Images[0]; + +// _debug_exec(10, +// {//only executes when compiled in DEBUG mode if debug level is at least 10 +// //show the thresholded images +// for (size_t i = 0; i < _thres_Images.size(); i++) { +// stringstream sstr; sstr << "thres-" << i; +// cv::namedWindow(sstr.str(),cv::WINDOW_NORMAL); +// cv::imshow(sstr.str(),_thres_Images[i]); +// }}); + + + __ARUCO_TIMER_EVENT__("Threshold and Detect rectangles"); + //prefilter candidates +// _debug_exec(10,//only executes when compiled in DEBUG mode if debug level is at least 10 +// //show the thresholded images +// cv::Mat imrect; +// cv::cvtColor(imgToBeThresHolded,imrect,CV_GRAY2BGR); +// for(auto m: MarkerCanditates ) +// m.draw(imrect,cv::Scalar(0,245,0)); +// cv::imshow("rect-nofiltered",imrect); +// ); + + MarkerCanditates=prefilterCandidates(MarkerCanditates,imgToBeThresHolded.size()); + + __ARUCO_TIMER_EVENT__("prefilterCandidates"); + +// _debug_exec(10,//only executes when compiled in DEBUG mode if debug level is at least 10 +// //show the thresholded images +// cv::Mat imrect; +// cv::cvtColor(imgToBeThresHolded,imrect,CV_GRAY2BGR); +// for(auto m: MarkerCanditates) +// m.draw(imrect,cv::Scalar(0,245,0)); +// cv::imshow("rect-filtered",imrect); +// ); + //before going on, make sure the piramid is built + if (buildPyramidThread.joinable()) + buildPyramidThread.join(); + + + /////////////////////////////////////////////////////////////////////////// + /// CANDIDATE CLASSIFICATION: Decide which candidates are really markers + /////////////////////////////////////////////////////////////////////////// + + //Debug::setLevel(10); + auto markerWarpSize=getMarkerWarpSize(); + + detectedMarkers.clear(); + _candidates_wcontour.clear(); + for(auto &b:hist) b=0; + float desiredarea = std::pow(static_cast(markerWarpSize), 2.f); + for (size_t i = 0; i < MarkerCanditates.size(); i++) + { + // Find proyective homography + cv::Mat canonicalMarker,canonicalMarkerAux; + + cv::Mat inToWarp=imgToBeThresHolded; + MarkerCandidate points2d_pyr = MarkerCanditates[i]; + if (needPyramid){ + // warping is one of the most time consuming operations, especially when the region is large. + // To reduce computing time, let us find in the image pyramid, the best configuration to save time + // indicates how much bigger observation is wrt to desired patch + size_t imgPyrIdx = 0; + for (size_t p = 1; p < imagePyramid.size(); p++) + { + if (MarkerCanditates[i].getArea() / pow(4, p) >= desiredarea) imgPyrIdx = p; + else break; + } + inToWarp=imagePyramid[imgPyrIdx]; + //move points to the image level p + float ratio=float(inToWarp.cols)/float(imgToBeThresHolded.cols); + for (auto& p : points2d_pyr) p *= ratio;//1. / pow(2, imgPyrIdx); + + } + warp( inToWarp, canonicalMarker, Size(markerWarpSize,markerWarpSize),points2d_pyr); + int id, nRotations; + double min,Max; + cv::minMaxIdx(canonicalMarker,&min,&Max); + canonicalMarker.copyTo(canonicalMarkerAux); + string additionalInfo; +// _debug_exec(10,//only executes when compiled in DEBUG mode if debug level is at least 10 +// //show the thresholded images +// stringstream sstr;sstr<<"test-"<detect(canonicalMarkerAux, id, nRotations,additionalInfo)) + { + detectedMarkers.push_back(MarkerCanditates[i]); + detectedMarkers.back().id = id; + detectedMarkers.back().dict_info=additionalInfo; + detectedMarkers.back().contourPoints=MarkerCanditates[i].contourPoints; + // sort the points so that they are always in the same order no matter the camera orientation + std::rotate(detectedMarkers.back().begin(), + detectedMarkers.back().begin() + 4 - nRotations, + detectedMarkers.back().end()); +// _debug_exec(10,//only executes when compiled in DEBUG mode if debug level is at least 10 +// //show the thresholded images +// stringstream sstr;sstr<<"can-"<0) + _params.ThresHold= float(newThres) ; + } + +#ifdef debug_lines + cv::imshow("image-lines",image); + cv::waitKey(10); +#endif + //now, move the points to the original image (upsample corners) + if (input.cols!=imgToBeThresHolded.cols){ + cornerUpsample(detectedMarkers,imgToBeThresHolded.size()); + __ARUCO_TIMER_EVENT__("Corner Upsample"); + } + + + + ////////////////////////////////////////////////////////////////////// + /// MARKER Tracking + ////////////////////////////////////////////////////////////////////// + + + if( _params.trackingMinDetections>0 ){ + + //update the marker_ndetections + //decrement unseen ones + for(auto &md:marker_ndetections){ + if( std::find(detectedMarkers.begin(),detectedMarkers.end(),Marker(md.first))==detectedMarkers.end()) + md.second=std::max(md.second-1,0); + } + + // Identify the markers in the prev frame not yet tracked + std::vector needsTrack; + for(auto m:_prevMarkers){ + if( std::find(detectedMarkers.begin(),detectedMarkers.end(),Marker(m.id))==detectedMarkers.end()){ + if(marker_ndetections.count(m.id)!=0){ + if(marker_ndetections.at(m.id)>=_params.trackingMinDetections) + needsTrack.push_back(m); + } + } + } + + //look for them in the candidates + if(needsTrack.size()>0){ + struct trackInfo{ + trackInfo(const Marker &m){ + ma.setParams(m); + } + marker_analyzer ma; + int candidate=-1; + double dist=std::numeric_limits::max(); + }; + std::map marker_trackMatches; + for(auto &mnt:needsTrack) + marker_trackMatches.insert({mnt.id,trackInfo(mnt)}); + + for(size_t cand=0;cand<_candidates_wcontour.size();cand++){ + auto &mcnd=_candidates_wcontour[cand]; + marker_analyzer can_ma; + can_ma.setParams(mcnd); + for(auto &mtm:marker_trackMatches){ + if( mtm.second.ma.isInto( can_ma.getCenter())){ + auto dist= cv::norm( mtm.second.ma.getCenter() -can_ma.getCenter()); + auto sizedif= fabs( mtm.second.ma.getArea()-can_ma.getArea())/mtm.second.ma.getArea(); + if( sizedif<0.3f && dist(cand); + mtm.second.dist=dist; + } + } + } + } + + for(auto &mtm:marker_trackMatches){ + if( mtm.second.candidate==-1) continue; + auto it= find(_prevMarkers.begin(),_prevMarkers.end(),Marker(mtm.first)); + assert(it!=_prevMarkers.end()); + detectedMarkers.push_back(_candidates_wcontour[mtm.second.candidate]); + detectedMarkers.back().id = mtm.first; + detectedMarkers.back().dict_info= it->dict_info; + detectedMarkers.back().contourPoints=_candidates_wcontour[mtm.second.candidate].contourPoints; + //find best rotatation + + auto rotError=[](const vector &c1,const vector &c2){ + cv::Point2f direction1=c1[1]-c1[0]; + direction1*=1./cv::norm(direction1); + cv::Point2f direction2=c2[1]-c2[0]; + direction2*=1./cv::norm(direction2); + return direction1.dot(direction2); + }; + auto prev=find(_prevMarkers.begin(),_prevMarkers.end(),Marker(mtm.first)); + pair rot_error(-1,-1); + for(int r=0;r<4;r++){ + vector aux=detectedMarkers.back(); + std::rotate(aux .begin(), + aux .begin() + r, + aux .end()); + auto err=rotError(*prev,aux); + if( err> rot_error.second){ + rot_error={r,err}; + } + } + std::rotate(detectedMarkers.back() .begin(), + detectedMarkers.back().begin() + rot_error.first, + detectedMarkers.back().end()); + //mark for removal + _candidates_wcontour[mtm.second.candidate].clear(); + } + //remove the used candidates + _candidates_wcontour.erase(std::remove_if(_candidates_wcontour.begin(),_candidates_wcontour.end(), [](const vector &m){return m.size()==0;}), _candidates_wcontour.end()); + + } + //update for next + for(auto m:detectedMarkers){ + if( marker_ndetections.count(m.id)==0) + marker_ndetections[m.id]=1; + else marker_ndetections[m.id]++; + } + } + + + ////////////////////////////////////////////////////////////////////// + /// REMOVAL OF DUPLICATED + ////////////////////////////////////////////////////////////////////// + + if(1){ + // sort by id + std::sort(detectedMarkers.begin(), detectedMarkers.end()); + + // there might be still the case that a marker is detected twice because of the double border indicated earlier, + // detect and remove these cases + vector toRemove(detectedMarkers.size(), false); + + for (int i = 0; i < int(detectedMarkers.size()) - 1; i++) + { + for (int j = i + 1; j < int(detectedMarkers.size()) && !toRemove[i]; j++) + { + if (detectedMarkers[i].id == detectedMarkers[j].id && detectedMarkers[i].dict_info == detectedMarkers[j].dict_info) + { + // deletes the one with smaller perimeter + if (perimeter(detectedMarkers[i]) < perimeter(detectedMarkers[j])) + toRemove[i] = true; + else + toRemove[j] = true; + } + } + } + + removeElements(detectedMarkers,toRemove); + } + + + ////////////////////////////////////////////////////////////////////// + /// CORNER REFINEMENT IF REQUIRED + ////////////////////////////////////////////////////////////////////// + /// refine the corner location if enclosed markers and we did not do it via upsampling + if (detectedMarkers.size() > 0 && input.size()==imgToBeThresHolded.size() ){ + + if (_params.cornerRefinementM==CORNER_SUBPIX ){ + + int halfwsize= 4*float(input.cols)/float(imgToBeThresHolded.cols) +0.5 ; + + vector Corners; + for (unsigned int i = 0; i < detectedMarkers.size(); i++) + for (int c = 0; c < 4; c++) + Corners.push_back(detectedMarkers[i][c]); + cornerSubPix(grey, Corners, cv::Size(halfwsize,halfwsize), cv::Size(-1, -1),cv::TermCriteria( cv::TermCriteria::MAX_ITER | cv::TermCriteria::EPS, 12, 0.005)); + // copy back + for (unsigned int i = 0; i < detectedMarkers.size(); i++) + for (int c = 0; c < 4; c++) + detectedMarkers[i][c] = Corners[i * 4 + c]; + + } + else if ( _params.cornerRefinementM==CORNER_LINES){ + //use the lines method for estimation of the corners + for (unsigned int i = 0; i < detectedMarkers.size(); i++) + refineCornerWithContourLines(detectedMarkers[i]); + } + } +__ARUCO_TIMER_EVENT__("Corner Refinement"); +/// + + + + + + ////////////////////////////////////////////////////////////////////// + /// MARKER POSE ESTIMATION + ////////////////////////////////////////////////////////////////////// + + /// detect the position of detected markers if desired + if (camMatrix.rows != 0 && markerSizeMeters > 0) + { + for (unsigned int i = 0; i < detectedMarkers.size(); i++) + detectedMarkers[i].calculateExtrinsics(markerSizeMeters, camMatrix, distCoeff, setYPerpendicular); + __ARUCO_TIMER_EVENT__("Pose Estimation"); + } + + //compute _markerMinSize + float mlength=std::numeric_limits::max(); + for(const auto &marker:detectedMarkers){ + float l=0; + for(int c=0;c<4;c++) + l+=cv::norm(marker[c]-marker[(c+1)%4]); + if (mlength>l)mlength=l; + } + float markerMinSize; + if (mlength!=std::numeric_limits::max() ) + markerMinSize=mlength/(4*std::max(input.cols,input.rows)); + else markerMinSize=0; + if (_params.autoSize){ + _params.minSize= markerMinSize*(1-_params.ts); + } + + +///save for tracking + _prevMarkers=detectedMarkers; + + } +void MarkerDetector_Impl::refineCornerWithContourLines( aruco::Marker &marker,cv::Mat camMatrix,cv::Mat distCoeff ){ + // search corners on the contour vector + + std::vector &contour=marker.contourPoints; + vector< int > cornerIndex(4,-1); + vector dist(4,std::numeric_limits::max()); + for (unsigned int j = 0; j < contour.size(); j++) { + for (unsigned int k = 0; k < 4; k++) { + float d= (contour[j].x-marker[k].x)*(contour[j].x-marker[k].x) + + (contour[j].y-marker[k].y)*(contour[j].y-marker[k].y) ; + if (d cornerIndex[0]) && (cornerIndex[2] > cornerIndex[1] || cornerIndex[2] < cornerIndex[0])) + inverse = false; + else if (cornerIndex[2] > cornerIndex[1] && cornerIndex[2] < cornerIndex[0]) + inverse = false; + else + inverse = true; + + + // get pixel vector for each line of the marker + int inc = 1; + if (inverse) + inc = -1; + + // undistort contour + vector< Point2f > contour2f; + if(!camMatrix.empty() && !distCoeff.empty()){ + for (unsigned int i = 0; i < contour.size(); i++) + contour2f.push_back(cv::Point2f(contour[i].x, contour[i].y)); + if (!camMatrix.empty() && !distCoeff.empty()) + cv::undistortPoints(contour2f, contour2f, camMatrix, distCoeff, cv::Mat(), camMatrix); + + } + else { + contour2f.reserve(contour.size()); + for(auto p:contour) + contour2f.push_back(cv::Point2f(p.x,p.y)); + } + + vector< std::vector< cv::Point2f > > contourLines; + contourLines.resize(4); + for (unsigned int l = 0; l < 4; l++) { + for (int j = (int)cornerIndex[l]; j != (int)cornerIndex[(l + 1) % 4]; j += inc) { + if (j == (int)contour.size() && !inverse) + j = 0; + else if (j == 0 && inverse) + j = contour.size() - 1; + contourLines[l].push_back(contour2f[j]); + if (j == (int)cornerIndex[(l + 1) % 4]) + break; // this has to be added because of the previous ifs + } + } + + // interpolate marker lines + vector< Point3f > lines; + lines.resize(4); + for (unsigned int j = 0; j < lines.size(); j++) + interpolate2Dline(contourLines[j], lines[j]); + + // get cross points of lines + vector< Point2f > crossPoints; + crossPoints.resize(4); + for (unsigned int i = 0; i < 4; i++) + crossPoints[i] = getCrossPoint(lines[(i - 1) % 4], lines[i]); + + // distort corners again if undistortion was performed + if (!camMatrix.empty() && !distCoeff.empty()) + distortPoints(crossPoints, crossPoints, camMatrix, distCoeff); + + // reassing points + for (unsigned int j = 0; j < 4; j++){ + // cout<cand[endp].x){ + swap( startp,endp); + } + const float _180=3.14159f ; + + const float _22=3.14159/8.f; + const float _3_22=3.*3.14159f/8.f; + const float _5_22=5.f*3.14159f/8.f; + const float _7_22=7.f*3.14159f/8.f; + + int incx=0,incy=0; + //compute the angle + auto v1=cand[endp]-cand[startp]; + float angle=atan2( v1.y,v1.x); + if ( _22(_params.minSize)* static_cast(maxDim) ; + if (_params.minSize_pix!=-1) minSize=std::min(_params.minSize_pix, minSize ); + return minSize ; + +} +/************************************ + * + * + * + * + ************************************/ +bool MarkerDetector_Impl::warp(Mat& in, Mat& out, Size size, vector points) +{ + if (points.size() != 4) + throw cv::Exception(9001, "point.size()!=4", "MarkerDetector_Impl::warp", __FILE__, __LINE__); + // obtain the perspective transform + Point2f pointsRes[4], pointsIn[4]; + for (int i = 0; i < 4; i++) + pointsIn[i] = points[i]; + pointsRes[0] = (Point2f(0, 0)); + pointsRes[1] = Point2f(static_cast(size.width - 1), 0.f); + pointsRes[2] = Point2f(static_cast(size.width - 1), static_cast(size.height - 1)); + pointsRes[3] = Point2f(0.f, static_cast(size.height - 1)); + Mat M = getPerspectiveTransform(pointsIn, pointsRes); + cv::warpPerspective(in, out, M, size, cv::INTER_LINEAR); + // cv::warpPerspective(in, out, M, size, cv::INTER_NEAREST); + return true; +} + + +/************************************ + * + * + * + * + ************************************/ +int MarkerDetector_Impl::perimeter(const vector& a) +{ + int sum = 0; + for (unsigned int i = 0; i < a.size(); i++) + { + int i2 = (i + 1) % a.size(); + sum += static_cast( sqrt((a[i].x - a[i2].x) * (a[i].x - a[i2].x) + + (a[i].y - a[i2].y) * (a[i].y - a[i2].y))); + } + return sum; +} + + +/** + */ +void MarkerDetector_Impl::interpolate2Dline(const std::vector& inPoints, cv::Point3f& outLine) +{ + float minX, maxX, minY, maxY; + minX = maxX = inPoints[0].x; + minY = maxY = inPoints[0].y; + for (unsigned int i = 1; i < inPoints.size(); i++) + { + if (inPoints[i].x < minX) + minX = inPoints[i].x; + if (inPoints[i].x > maxX) + maxX = inPoints[i].x; + if (inPoints[i].y < minY) + minY = inPoints[i].y; + if (inPoints[i].y > maxY) + maxY = inPoints[i].y; + } + + // create matrices of equation system + const int pointsCount = static_cast(inPoints.size()); + Mat A(pointsCount, 2, CV_32FC1, Scalar(0)); + Mat B(pointsCount, 1, CV_32FC1, Scalar(0)); + Mat X; + + if (maxX - minX > maxY - minY) + { + // Ax + C = y + for (int i = 0; i < pointsCount; i++) + { + A.at(i, 0) = inPoints[i].x; + A.at(i, 1) = 1.; + B.at(i, 0) = inPoints[i].y; + } + + // solve system + solve(A, B, X, DECOMP_SVD); + // return Ax + By + C + outLine = Point3f(X.at(0, 0), -1., X.at(1, 0)); + } + else + { + // By + C = x + for (int i = 0; i < pointsCount; i++) + { + A.at(i, 0) = inPoints[i].y; + A.at(i, 1) = 1.; + B.at(i, 0) = inPoints[i].x; + } + + // solve system + solve(A, B, X, DECOMP_SVD); + // return Ax + By + C + outLine = Point3f(-1., X.at(0, 0), X.at(1, 0)); + } +} + +/** + */ +Point2f MarkerDetector_Impl::getCrossPoint(const cv::Point3f& line1, const cv::Point3f& line2) +{ + // create matrices of equation system + Mat A(2, 2, CV_32FC1, Scalar(0)); + Mat B(2, 1, CV_32FC1, Scalar(0)); + Mat X; + + A.at(0, 0) = line1.x; + A.at(0, 1) = line1.y; + B.at(0, 0) = -line1.z; + + A.at(1, 0) = line2.x; + A.at(1, 1) = line2.y; + B.at(1, 0) = -line2.z; + + // solve system + solve(A, B, X, DECOMP_SVD); + return Point2f(X.at(0, 0), X.at(1, 0)); +} + +//template +//void MarkerDetector_Impl::cornerUpsample(vector& MarkerCanditates, cv::Size lowResImageSize ){ +// cornerUpsample_SUBP(MarkerCanditates,lowResImageSize); +//} + +//template +//void MarkerDetector_Impl::cornerUpsample_SUBP(vector& MarkerCanditates, cv::Size lowResImageSize ){ +// if (MarkerCanditates.size()==0)return; +// //first, determine the image in the pyramid nearest to this one +// int startPyrImg=0; + +// for(size_t i=0;i=0;curpyr--){ +// float factor= float(imagePyramid[curpyr].cols)/float(prevLowResSize.width) ; +// //upsample corner locations +// for(auto &m:MarkerCanditates) +// for(auto &point:m) {point*=factor;} +// int halfwsize= 0.5+2.5*factor; +// vector p2d;//p2d.reserve(MarkerCanditates.size()*4); +// for(auto &m:MarkerCanditates) +// for(auto &point:m) { p2d.push_back(point);} +// cv::cornerSubPix( imagePyramid[curpyr],p2d,cv::Size(halfwsize,halfwsize),cv::Size(-1,-1),cv::TermCriteria(cv::TermCriteria::MAX_ITER , 4,0.5)); +// int cidx=0; +// for(auto &m:MarkerCanditates) +// for(auto &point:m) {point =p2d[cidx++];} + +// prevLowResSize=imagePyramid[curpyr].size(); +// } +//} + + +/************************************ + * + * + * + * + ************************************/ +void MarkerDetector_Impl::drawAllContours(Mat input, std::vector>& contours) +{ + drawContours(input, contours, -1, Scalar(255, 0, 255)); +} + +/************************************ + * + * + * + * + ************************************/ +void MarkerDetector_Impl::drawContour(Mat& in, vector& contour, Scalar color) +{ + for (unsigned int i = 0; i < contour.size(); i++) + { + cv::rectangle(in, contour[i], contour[i], color); + } +} + +void MarkerDetector_Impl::drawApproxCurve(Mat& in, vector& contour, Scalar color,int thickness) +{ + for (unsigned int i = 0; i < contour.size(); i++) + { + cv::line(in, contour[i], contour[(i + 1) % contour.size()], color,thickness); + } +} +/************************************ + * + * + * + * + ************************************/ + +void MarkerDetector_Impl::draw(Mat out, const vector& markers) +{ + for (unsigned int i = 0; i < markers.size(); i++) + { + cv::line(out, markers[i][0], markers[i][1], cv::Scalar(255, 0, 0), 2); + cv::line(out, markers[i][1], markers[i][2], cv::Scalar(255, 0, 0), 2); + cv::line(out, markers[i][2], markers[i][3], cv::Scalar(255, 0, 0), 2); + cv::line(out, markers[i][3], markers[i][0], cv::Scalar(255, 0, 0), 2); + } +} + + +void MarkerDetector_Impl::setMarkerLabeler(cv::Ptr detector) +{ + markerIdDetector = detector; +} + +void MarkerDetector_Impl::setDictionary(int dict_type, + float error_correction_rate) +{ + markerIdDetector = MarkerLabeler::create((Dictionary::DICT_TYPES)dict_type, error_correction_rate); + _params.error_correction_rate=error_correction_rate; + _params.dictionary=aruco::Dictionary::getTypeString((Dictionary::DICT_TYPES)dict_type); +} + + + + +void MarkerDetector_Impl::setDictionary(string dict_type, float error_correction_rate) +{ + auto _to_string=[](float i){ + std::stringstream str;str<=_thres_Images.size()) idx=_thres_Images.size()-1;//last one is the original image + return _thres_Images[idx]; +} + + + +/** + */ +void MarkerDetector_Impl::distortPoints(vector< cv::Point2f > in, vector< cv::Point2f > &out, const Mat &camMatrix, const Mat &distCoeff) { + // trivial extrinsics + cv::Mat Rvec = cv::Mat(3, 1, CV_32FC1, cv::Scalar::all(0)); + cv::Mat Tvec = Rvec.clone(); + // calculate 3d points and then reproject, so opencv makes the distortion internally + vector< cv::Point3f > cornersPoints3d; + for (unsigned int i = 0; i < in.size(); i++) + cornersPoints3d.push_back(cv::Point3f((in[i].x - camMatrix.at< float >(0, 2)) / camMatrix.at< float >(0, 0), // x + (in[i].y - camMatrix.at< float >(1, 2)) / camMatrix.at< float >(1, 1), // y + 1)); // z + cv::projectPoints(cornersPoints3d, Rvec, Tvec, camMatrix, distCoeff, out); +} + + +/**Saves the configuration of the detector to a file + */ +void MarkerDetector_Impl::saveParamsToFile(const std::string &path) const{ + + cv::FileStorage fs(path, cv::FileStorage::WRITE); + if(!fs.isOpened())throw std::runtime_error("Could not open "+path); + _params.save(fs); +} + +/**Loads the configuration from a file + */ +void MarkerDetector_Impl::loadParamsFromFile(const std::string &path){ + cv::FileStorage fs(path, cv::FileStorage::READ); + if(!fs.isOpened())throw std::runtime_error("Could not open "+path); + _params.load(fs); + setDictionary(_params.dictionary,_params.error_correction_rate); +} + +void MarkerDetector_Impl::toStream(std::ostream &str)const +{ + uint64_t sig=13213; + str.write((char*)&sig,sizeof(sig)); + _params.toStream(str); +} + +void MarkerDetector_Impl::fromStream(std::istream &str){ + uint64_t sig=13213; + str.read((char*)&sig,sizeof(sig)); + if (sig!=13213) throw std::runtime_error("MarkerDetector_Impl::fromStream invalid signature"); + _params.fromStream(str); + setDictionary(_params.dictionary,_params.error_correction_rate); + +} + + + +void MarkerDetector_Impl::filter_ambiguous_query( std::vector &matches ){ + if (matches.size()==0)return; + //determine maximum values of queryIdx + int maxT=-1; + for(auto m:matches) maxT=std::max(maxT,m.queryIdx); + + //now, create the vector with the elements + vector used(maxT+1,-1); + vector best_matches(maxT); + int idx=0; + bool needRemove=false; + + for(auto &match:matches ){ + if (used[match.queryIdx]==-1){ + used[match.queryIdx]=idx; + } + else{ + if ( matches[ used[match.queryIdx] ].distance>match.distance){ + matches[ used[match.queryIdx] ].queryIdx=-1;//annulate the other match + used[match.queryIdx]=idx; + needRemove=true; + } + else{ + match.queryIdx=-1;//annulate this match + needRemove=true; + } + } + idx++; + } + + + if (needRemove) + matches.erase(std::remove_if(matches.begin(),matches.end(), [](const cv::DMatch &m){return m.trainIdx==-1 || m.queryIdx==-1;}), matches.end()); + + +} + +void MarkerDetector_Impl:: cornerUpsample(std::vector& MarkerCanditates, cv::Size lowResImageSize ){ + std::vector > corners; + for(const auto &m:MarkerCanditates)corners.push_back(m); + cornerUpsample(corners,lowResImageSize); + for(size_t i=0;i >& MarkerCanditates, cv::Size lowResImageSize ) + { + if (MarkerCanditates.size()==0)return; + //first, determine the image in the pyramid nearest to this one + int startPyrImg=0; + + for(size_t i=0;i=0;curpyr--){ + float factor= float(imagePyramid[curpyr].cols)/float(prevLowResSize.width) ; + //upsample corner locations + for(auto &m:MarkerCanditates) + for(auto &point:m) {point*=factor;} + int halfwsize= 0.5+2.5*factor; + std::vector p2d;//p2d.reserve(MarkerCanditates.size()*4); + for(auto &m:MarkerCanditates) + for(auto &point:m) { p2d.push_back(point);} + cv::cornerSubPix( imagePyramid[curpyr],p2d,cv::Size(halfwsize,halfwsize),cv::Size(-1,-1),cv::TermCriteria(cv::TermCriteria::MAX_ITER , 4,0.5)); + int cidx=0; + for(auto &m:MarkerCanditates) + for(auto &point:m) {point =p2d[cidx++];} + + prevLowResSize=imagePyramid[curpyr].size(); + } + } +}; diff --git a/thirdparty/aruco-3.1.12/src/markerdetector_impl.h b/thirdparty/aruco-3.1.12/src/markerdetector_impl.h new file mode 100644 index 0000000..1d46d48 --- /dev/null +++ b/thirdparty/aruco-3.1.12/src/markerdetector_impl.h @@ -0,0 +1,465 @@ +/** +Copyright 2017 Rafael Muñoz Salinas. All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are +permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this list of + conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright notice, this list + of conditions and the following disclaimer in the documentation and/or other materials + provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY Rafael Muñoz Salinas ''AS IS'' AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL Rafael Muñoz Salinas OR +CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +The views and conclusions contained in the software and documentation are those of the +authors and should not be interpreted as representing official policies, either expressed +or implied, of Rafael Muñoz Salinas. +*/ + + +#ifndef _ARUCO_MarkerDetector_Impl_H +#define _ARUCO_MarkerDetector_Impl_H + +#include "aruco_export.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include "marker.h" +#include "markerdetector.h" +#include + +namespace aruco +{ + +class CameraParameters; +class MarkerLabeler; +/**\brief Main class for marker detection + * + */ +class MarkerDetector_Impl +{ + friend class MarkerDetector; +public: + + /** + * See + */ + MarkerDetector_Impl(); + /**Creates indicating the dictionary. See @see setDictionary for further details + * @param dict_type Dictionary employed. See @see setDictionary for further details + * @param error_correction_rate value indicating the correction error allowed. Is in range [0,1]. 0 means no + * correction at all. So + * an erroneous bit will result in discarding the marker. 1, mean full correction. The maximum number of bits + * that can be corrected depends on each ditionary. + * We recommend using values from 0 to 0.5. (in general, this will allow up to 3 bits or correction). */ + MarkerDetector_Impl(int dict_type, float error_correction_rate = 0); + MarkerDetector_Impl(std::string dict_type, float error_correction_rate = 0); + + /**Saves the configuration of the detector to a file. + */ + void saveParamsToFile(const std::string &path)const; + + /**Loads the configuration from a file. + */ + void loadParamsFromFile(const std::string &path); + + + /** + */ + ~MarkerDetector_Impl(); + /**Specifies the detection mode. We have preset three types of detection modes. These are + * ways to configure the internal parameters for the most typical situations. The modes are: + * - DM_NORMAL: In this mode, the full resolution image is employed for detection and slow threshold method. Use this method when + * you process individual images that are not part of a video sequence and you are not interested in speed. + * + * - DM_FAST: In this mode, there are two main improvements. First, image is threshold using a faster method using a global threshold. + * Also, the full resolution image is employed for detection, but, you could speed up detection even more by indicating a minimum size of the + * markers you will accept. This is set by the variable minMarkerSize which shoud be in range [0,1]. When it is 0, means that you do not set + * a limit in the size of the accepted markers. However, if you set 0.1, it means that markers smaller than 10% of the total image area, will not + * be detected. Then, the detection can be accelated up to orders of magnitude compared to the normal mode. + * + * - DM_VIDEO_FAST: This is similar to DM_FAST, but specially adapted to video processing. In that case, we assume that the observed markers + * when you call to detect() have a size similar to the ones observed in the previous frame. Then, the processing can be speeded up by employing smaller versions + * of the image automatically calculated. + * + */ + void setDetectionMode( DetectionMode dm,float minMarkerSize=0); + /**returns current detection mode + */ + DetectionMode getDetectionMode( ); + /**Detects the markers in the image passed + * + * If you provide information about the camera parameters and the size of the marker, then, the extrinsics of + * the markers are detected + * + * @param input input color image + * @param camMatrix intrinsic camera information. + * @param distCoeff camera distorsion coefficient. If set Mat() if is assumed no camera distorion + * @param markerSizeMeters size of the marker sides expressed in meters. If not specified this value, the + * extrinsics of the markers are not detected. + * @param setYPerperdicular If set the Y axis will be perpendicular to the surface. Otherwise, it will be the Z + * axis + * @return vector with the detected markers + */ + std::vector detect(const cv::Mat& input); + std::vector detect(const cv::Mat& input, const CameraParameters& camParams, + float markerSizeMeters, bool setYPerperdicular = false); + + /**Detects the markers in the image passed + * + * If you provide information about the camera parameters and the size of the marker, then, the extrinsics of + * the markers are detected + * + * @param input input color image + * @param detectedMarkers output vector with the markers detected + * @param camParams Camera parameters + * @param markerSizeMeters size of the marker sides expressed in meters + * @param setYPerperdicular If set the Y axis will be perpendicular to the surface. Otherwise, it will be the + * Z axis + */ + void detect(const cv::Mat& input, std::vector& detectedMarkers, CameraParameters camParams, + float markerSizeMeters = -1, bool setYPerperdicular = false); + + /**Detects the markers in the image passed + * + * If you provide information about the camera parameters and the size of the marker, then, the extrinsics of + * the markers are detected + * + * NOTE: be sure that the camera matrix is for this image size. If you do not know what I am talking about, use + * functions above and not this one + * @param input input color image + * @param detectedMarkers output vector with the markers detected + * @param camMatrix intrinsic camera information. + * @param distCoeff camera distorsion coefficient. If set Mat() if is assumed no camera distorion + * @param markerSizeMeters size of the marker sides expressed in meters + * @param setYPerperdicular If set the Y axis will be perpendicular to the surface. Otherwise, it will be the Z + * axis + */ + void detect(const cv::Mat& input, std::vector& detectedMarkers, cv::Mat camMatrix = cv::Mat(), + cv::Mat distCoeff = cv::Mat(), float markerSizeMeters = -1, + bool setYPerperdicular = false); + + + /**Returns operating params + */ + MarkerDetector::Params getParameters() const{return _params;} + /**Returns operating params + */ + MarkerDetector::Params & getParameters() {return _params;} + /** Sets the dictionary to be employed. + * You can choose:ARUCO,//original aruco dictionary. By default + ARUCO_MIP_25h7, + ARUCO_MIP_16h3, + ARUCO_MIP_36h12, **** recommended + ARTAG,// + ARTOOLKITPLUS, + ARTOOLKITPLUSBCH,// + TAG16h5,TAG25h7,TAG25h9,TAG36h11,TAG36h10//APRIL TAGS DICIONARIES + CHILITAGS,//chili tags dictionary . NOT RECOMMENDED. It has distance 0. Markers 806 and 682 + should not be used!!! + + If dict_type is none of the above ones, it is assumed you mean a CUSTOM dicionary saved in a file @see + Dictionary::loadFromFile + Then, it tries to open it + */ + void setDictionary(std::string dict_type, float error_correction_rate = 0); + + /** + * @brief setDictionary Specifies the dictionary you want to use for marker decoding + * @param dict_type dictionary employed for decoding markers @see Dictionary + * @param error_correction_rate value indicating the correction error allowed. Is in range [0,1]. 0 means no + * correction at all. So + * an erroneous bit will result in discarding the marker. 1, mean full correction. The maximum number of bits + * that can be corrected depends on each ditionary. + * We recommend using values from 0 to 0.5. (in general, this will allow up to 3 bits or correction). + */ + void setDictionary(int dict_type, float error_correction_rate = 0); + + /** + * Returns a reference to the internal image thresholded. Since there can be generated many of them, specify which + */ + cv::Mat getThresholdedImage(uint32_t idx=0); + /**returns the number of thresholed images available + */ + // size_t getNhresholdedImages()const{return _thres_Images.size();} + + + + ///------------------------------------------------- + /// Methods you may not need + /// Thesde methods do the hard work. They have been set public in case you want to do customizations + ///------------------------------------------------- + + /** + * @brief setMakerLabeler sets the labeler employed to analyze the squares and extract the inner binary code + * @param detector + */ + void setMarkerLabeler(cv::Ptr detector); + cv::Ptr getMarkerLabeler() + { + return markerIdDetector; + } + typedef Marker MarkerCandidate; + + + /**Returns a list candidates to be markers (rectangles), for which no valid id was found after calling + * detectRectangles + */ + std::vector getCandidates()const + { + return _candidates_wcontour; + } + + /** + * Given the iput image with markers, creates an output image with it in the canonical position + * @param in input image + * @param out image with the marker + * @param size of out + * @param points 4 corners of the marker in the image in + * @return true if the operation succeed + */ + bool warp(cv::Mat& in, cv::Mat& out, cv::Size size, std::vector points); + + + //serialization in binary mode + void toStream(std::ostream &str)const; + void fromStream(std::istream &str); + //configure the detector from a set of parameters + void setParameters(const MarkerDetector::Params ¶ms); + + std::vector getImagePyramid(){ + return imagePyramid; + } + + + + private: + //obfuscate start + + // operating params + MarkerDetector::Params _params; + + // Images + cv::Mat grey, thres; + // pointer to the function that analizes a rectangular region so as to detect its internal marker + cv::Ptr markerIdDetector; + /** + */ + int perimeter(const std::vector &a); + + // auxiliar functions to perform LINES refinement + void interpolate2Dline(const std::vector& inPoints, cv::Point3f& outLine); + cv::Point2f getCrossPoint(const cv::Point3f& line1, const cv::Point3f& line2); + void distortPoints(std::vector in, std::vector& out, const cv::Mat& camMatrix, + const cv::Mat& distCoeff); + + //returns the number of pixels that the smallest and largest allowed markers have + int getMinMarkerSizePix(cv::Size orginput_imageSize)const; + + //returns the markerWarpSize + int getMarkerWarpSize(); + /**Given a vector vinout with elements and a boolean vector indicating the lements from it to remove, + * this function remove the elements + * @param vinout + * @param toRemove + */ + template + void removeElements(std::vector& vinout, const std::vector& toRemove) + { + // remove the invalid ones by setting the valid in the positions left by the invalids + size_t indexValid = 0; + for (size_t i = 0; i < toRemove.size(); i++) + { + if (!toRemove[i]) + { + if (indexValid != i) + vinout[indexValid] = vinout[i]; + indexValid++; + } + } + vinout.resize(indexValid); + } + + + template + void joinVectors(std::vector>& vv, std::vector& v, bool clearv = false) + { + if (clearv) + v.clear(); + for (size_t i = 0; i < vv.size(); i++) + for (size_t j = 0; j < vv[i].size(); j++) + v.push_back(vv[i][j]); + } + + std::vector imagePyramid; + void enlargeMarkerCandidate(MarkerCandidate &cand, int fact=1); + + void cornerUpsample(std::vector >& MarkerCanditates, cv::Size lowResImageSize ); + void cornerUpsample(std::vector& MarkerCanditates, cv::Size lowResImageSize ); + + + + void buildPyramid(std::vector &imagePyramid,const cv::Mat &grey,int minSize); + + + + + std::vector thresholdAndDetectRectangles(const cv::Mat & input, int thres_param1, int thres_param2,bool erode,cv::Mat &auxThresImage); + std::vector thresholdAndDetectRectangles(const cv::Mat &image); + std::vector< aruco::MarkerCandidate> prefilterCandidates( std::vector< MarkerCandidate> &candidates,cv::Size orgImageSize); + + + std::vector _thres_Images; + std::vector > _vcandidates; + //std::vector > _candidates; + std::vector _candidates_wcontour; + std::vector _prevMarkers;//employed for tracking + std::map marker_ndetections;//used to keeps track only of markers with a minimum number of detections + + // graphical debug + void drawApproxCurve(cv::Mat& in, std::vector& approxCurve, cv::Scalar color, int thickness=1); + void drawContour(cv::Mat& in, std::vector& contour, cv::Scalar); + void drawAllContours(cv::Mat input, std::vector>& contours); + void draw(cv::Mat out, const std::vector& markers); + + + + enum ThreadTasks {THRESHOLD_TASK,ENCLOSE_TASK,EXIT_TASK}; + struct ThresAndDetectRectTASK{ + int inIdx,outIdx; + int param1,param2; + ThreadTasks task; + }; + void thresholdAndDetectRectangles_thread(); + + //thread safe queue to implement producer-consumer + template + class Queue + { + public: + + T pop() + { + std::unique_lock mlock(mutex_); + while (queue_.empty()) + { + cond_.wait(mlock); + } + auto item = queue_.front(); + queue_.pop(); + return item; + } + + void push(const T& item) + { + std::unique_lock mlock(mutex_); + queue_.push(item); + mlock.unlock(); + cond_.notify_one(); + } + + size_t size() + { + std::unique_lock mlock(mutex_); + size_t s=queue_.size(); + return s; + } + private: + std::queue queue_; + std::mutex mutex_; + std::condition_variable cond_; + }; + Queue _tasks; + void refineCornerWithContourLines( aruco::Marker &marker,cv::Mat cameraMatrix=cv::Mat(),cv::Mat distCoef=cv::Mat()); + + inline float pointSqdist(cv::Point &p,cv::Point2f&p2){ + float dx=p.x-p2.x; + float dy=p.y-p2.y; + return dx*dx+dy*dy; + } + + float _tooNearDistance=-1;//pixel distance between nearr rectangle. Computed automatically based on the params + + + + + + + + + + struct marker_analyzer{ + + void setParams( const std::vector &m){ + corners=m; + bax = m[1].x - m[0].x; + bay = m[1].y - m[0].y; + dax = m[2].x - m[0].x; + day = m[2].y - m[0].y; + a=m[0];b=m[1];d=m[2]; + area=_getArea(); + + center=cv::Point2f(0,0); + for(auto &p:corners) + center+=p; + center*=1./4.; + } + + bool isInto(const cv::Point2f &p)const{ + + + if( signD(corners[0],corners[1],p)<0)return false; + if( signD(corners[1],corners[2],p)<0)return false; + if( signD(corners[2],corners[3],p)<0)return false; + if( signD(corners[3],corners[0],p)<0)return false; + return true; + } + cv::Point2f getCenter()const{return center;} + float getArea()const{return area;} + float _getArea( ) const + { + // use the cross products + cv::Point2f v01 = corners[1] - corners[0]; + cv::Point2f v03 = corners[3] - corners[0]; + float area1 = fabs(v01.x * v03.y - v01.y * v03.x); + cv::Point2f v21 = corners[1] - corners[2]; + cv::Point2f v23 = corners[3] - corners[2]; + float area2 = fabs(v21.x * v23.y - v21.y * v23.x); + return (area2 + area1) / 2.f; + } + float bax, bay , dax ,day; + cv::Point2f a,b,d; + float area; + cv::Point2f center; + + std::vector corners; + + inline float signD(cv::Point2f p0,cv::Point2f p1,cv::Point2f p)const{ + return ((p0.y-p1.y)*p.x + (p1.x-p0.x)*p.y + (p0.x*p1.y-p1.x*p0.y)) / sqrt( (p1.x-p0.x)*(p1.x-p0.x)+(p1.y-p0.y)*(p1.y-p0.y)); + } + + }; + void addToImageHist(cv::Mat &im,std::vector&hist); + int Otsu(std::vector &hist); + + void filter_ambiguous_query( std::vector &matches ); + //obfuscate end + + }; +}; +#endif diff --git a/thirdparty/aruco-3.1.12/src/markerlabeler.cpp b/thirdparty/aruco-3.1.12/src/markerlabeler.cpp new file mode 100644 index 0000000..29fbe46 --- /dev/null +++ b/thirdparty/aruco-3.1.12/src/markerlabeler.cpp @@ -0,0 +1,47 @@ +/** +Copyright 2017 Rafael Muñoz Salinas. All rights reserved. +Redistribution and use in source and binary forms, with or without modification, are +permitted provided that the following conditions are met: + 1. Redistributions of source code must retain the above copyright notice, this list of + conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, this list + of conditions and the following disclaimer in the documentation and/or other materials + provided with the distribution. +THIS SOFTWARE IS PROVIDED BY Rafael Muñoz Salinas ''AS IS'' AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL Rafael Muñoz Salinas OR +CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +The views and conclusions contained in the software and documentation are those of the +authors and should not be interpreted as representing official policies, either expressed +or implied, of Rafael Muñoz Salinas. +*/ +#include "markerlabeler.h" +#include "dictionary_based.h" + namespace aruco +{ + cv::Ptr MarkerLabeler::create(Dictionary::DICT_TYPES dict_type, + float error_correction_rate) + { + Dictionary dict = Dictionary::loadPredefined(dict_type); + DictionaryBased* db = new DictionaryBased(); + db->setParams(dict, error_correction_rate); + return db; + } + cv::Ptr MarkerLabeler::create(std::string detector, std::string params) + { + auto _stof=[](std::string str){ + float f;sscanf(str.c_str(),"%f",&f);return f; + }; + (void)params; + Dictionary dict = Dictionary::load(detector); + // try with one from file + DictionaryBased* db = new DictionaryBased(); + db->setParams(dict, _stof(params)); + return db; + } + } diff --git a/thirdparty/aruco-3.1.12/src/markerlabeler.h b/thirdparty/aruco-3.1.12/src/markerlabeler.h new file mode 100644 index 0000000..79c4224 --- /dev/null +++ b/thirdparty/aruco-3.1.12/src/markerlabeler.h @@ -0,0 +1,107 @@ +/** +Copyright 2017 Rafael Muñoz Salinas. All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are +permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this list of + conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright notice, this list + of conditions and the following disclaimer in the documentation and/or other materials + provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY Rafael Muñoz Salinas ''AS IS'' AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL Rafael Muñoz Salinas OR +CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +The views and conclusions contained in the software and documentation are those of the +authors and should not be interpreted as representing official policies, either expressed +or implied, of Rafael Muñoz Salinas. +*/ + +#ifndef _aruco_MarkerLabeler_ +#define _aruco_MarkerLabeler_ + +#include "aruco_export.h" +#include "dictionary.h" +#include + +namespace aruco +{ + /**\brief Base class of labelers. A labelers receive a square of the image and determines if it has a valid marker, + * its id and rotation + * Additionally, it implements the factory model + */ + + class Marker; + class ARUCO_EXPORT MarkerLabeler + { + public: + /** Factory function that returns a labeler for a given dictionary + * @param dict_type type of dictionary + * @param error_correction_rate some dictionaries are subsceptible of error correction. This params specify the + * correction rate. + * 0 means no correction at all. 1 means full correction (maximum correction bits = (tau-1) /2, tau= predefined + * mimum intermarker distance). + * + * If you want correction capabilities and not sure how much, use 0.5 in this parameter + */ + static cv::Ptr create(Dictionary::DICT_TYPES dict_type, + float error_correction_rate = 0); + + /** Factory function that returns the desired detector + + * + * @brief create Factory function that returns the desired detector + * @param detector + * * Possible names implemented are: + * ARUCO,CHILITAGS....: original aruco markers (0-1024) + http://www.sciencedirect.com/science/article/pii/S0031320314000235 + * SVM: + * @return + */ + static cv::Ptr create(std::string detector, std::string params = ""); + + /** function that identifies a marker. + * @param in input image to analyze + * @param marker_id id of the marker (if valid) + * @param nRotations : output parameter nRotations must indicate how many times the marker must be rotated + * clockwise 90 deg to be in its ideal position. (The way you would see it when you print it). This is employed + * to know + * always which is the corner that acts as reference system. + * @return true marker valid, false otherwise + */ + virtual bool detect(const cv::Mat& in, int& marker_id, int& nRotations,std::string &additionalInfo) = 0; + /** + * @brief getBestInputSize if desired, you can set the desired input size to the detect function + * @return -1 if detect accept any type of input, or a size otherwise + */ + virtual int getBestInputSize() + { + return -1; + } + + /** + * @brief getNSubdivisions returns the number of subdivisions in each axis that the iamge will be subject to. + * This is in dictionary based labelers, equals to the number of bits in each dimension plus the border bits. + * @return + */ + virtual int getNSubdivisions()const{ + return -1; + } + + // returns an string that describes the labeler and can be used to create it + virtual std::string getName() const = 0; + virtual ~MarkerLabeler() + { + } + }; +}; +#endif diff --git a/thirdparty/aruco-3.1.12/src/markermap.cpp b/thirdparty/aruco-3.1.12/src/markermap.cpp new file mode 100644 index 0000000..0935f8f --- /dev/null +++ b/thirdparty/aruco-3.1.12/src/markermap.cpp @@ -0,0 +1,468 @@ +/** +Copyright 2017 Rafael Muñoz Salinas. All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are +permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this list of + conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright notice, this list + of conditions and the following disclaimer in the documentation and/or other materials + provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY Rafael Muñoz Salinas ''AS IS'' AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL Rafael Muñoz Salinas OR +CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +The views and conclusions contained in the software and documentation are those of the +authors and should not be interpreted as representing official policies, either expressed +or implied, of Rafael Muñoz Salinas. +*/ + +#include "markermap.h" +#include "dictionary.h" + +#include +#include + +#include + +using namespace std; +using namespace cv; + +namespace aruco +{ +Marker3DInfo::Marker3DInfo(){} +Marker3DInfo::Marker3DInfo(int _id):id(_id){} + /** + * + * + */ + MarkerMap::MarkerMap() + { + mInfoType = NONE; + } + /** + * + * + */ + MarkerMap::MarkerMap(string filePath) + { + mInfoType = NONE; + readFromFile(filePath); + } + + /** + * + * + */ + void MarkerMap::saveToFile(string sfile) + { + cv::FileStorage fs(sfile, cv::FileStorage::WRITE); + saveToFile(fs); + } + /**Saves the board info to a file + */ + void MarkerMap::saveToFile(cv::FileStorage& fs) + { + fs << "aruco_bc_dict" << dictionary; + fs << "aruco_bc_nmarkers" << (int)size(); + fs << "aruco_bc_mInfoType" << (int)mInfoType; + fs << "aruco_bc_markers" + << "["; + for (size_t i = 0; i < size(); i++) + { + fs << "{:" + << "id" << at(i).id; + + fs << "corners" + << "[:"; + for (size_t c = 0; c < at(i).size(); c++) + fs << at(i)[c]; + fs << "]"; + fs << "}"; + } + fs << "]"; + } + + /** + * + * + */ + void MarkerMap::readFromFile(string sfile) + { + try + { + cv::FileStorage fs(sfile, cv::FileStorage::READ); + if (!fs.isOpened()) + throw cv::Exception(81818, "MarkerMap::readFromFile", string(" file not opened ") + sfile, __FILE__,__LINE__); + readFromFile(fs); + } + catch (std::exception& ex) + { + throw cv::Exception(81818, "MarkerMap::readFromFile", ex.what() + string(" file=)") + sfile, __FILE__,__LINE__); + } + } + + /**Reads board info from a file + */ + void MarkerMap::readFromFile(cv::FileStorage& fs) + { + int aux = 0; + // look for the nmarkers + if (fs["aruco_bc_nmarkers"].name() != "aruco_bc_nmarkers") + throw cv::Exception(81818, "MarkerMap::readFromFile", "invalid file type", __FILE__, __LINE__); + fs["aruco_bc_nmarkers"] >> aux; + resize(aux); + fs["aruco_bc_mInfoType"] >> mInfoType; + cv::FileNode markers = fs["aruco_bc_markers"]; + int i = 0; + for (FileNodeIterator it = markers.begin(); it != markers.end(); ++it, i++) + { + at(i).id = (*it)["id"]; + FileNode FnCorners = (*it)["corners"]; + for (FileNodeIterator itc = FnCorners.begin(); itc != FnCorners.end(); ++itc) + { + vector coordinates3d; + (*itc) >> coordinates3d; + if (coordinates3d.size() != 3) + throw cv::Exception(81818, "MarkerMap::readFromFile", "invalid file type 3", __FILE__, __LINE__); + cv::Point3f point(coordinates3d[0], coordinates3d[1], coordinates3d[2]); + at(i).push_back(point); + } + } + + if (fs["aruco_bc_dict"].name() == "aruco_bc_dict") + fs["aruco_bc_dict"] >> dictionary; + } + + /** + */ + int MarkerMap::getIndexOfMarkerId(int id) const + { + for (size_t i = 0; i < size(); i++) + if (at(i).id == id) + return static_cast(i); + return -1; + } + + /** + */ + const Marker3DInfo& MarkerMap::getMarker3DInfo(int id) const + { + for (size_t i = 0; i < size(); i++) + if (at(i).id == id) + return at(i); + throw cv::Exception(111, "MarkerMap::getMarker3DInfo", "Marker with the id given is not found", __FILE__, + __LINE__); + } + + void __glGetModelViewMatrix(double modelview_matrix[16], const cv::Mat& Rvec, + const cv::Mat& Tvec) + { + // check if paremeters are valid + bool invalid = false; + for (int i = 0; i < 3 && !invalid; i++) + { + if (Tvec.at(i, 0) != -999999) + invalid |= false; + if (Rvec.at(i, 0) != -999999) + invalid |= false; + } + if (invalid) + throw cv::Exception(9002, "extrinsic parameters are not set", "Marker::getModelViewMatrix", __FILE__, + __LINE__); + Mat Rot(3, 3, CV_32FC1), Jacob; + Rodrigues(Rvec, Rot, Jacob); + + double para[3][4]; + for (int i = 0; i < 3; i++) + for (int j = 0; j < 3; j++) + para[i][j] = Rot.at(i, j); + // now, add the translation + para[0][3] = Tvec.at(0, 0); + para[1][3] = Tvec.at(1, 0); + para[2][3] = Tvec.at(2, 0); + double scale = 1; + + modelview_matrix[0 + 0 * 4] = para[0][0]; + // R1C2 + modelview_matrix[0 + 1 * 4] = para[0][1]; + modelview_matrix[0 + 2 * 4] = para[0][2]; + modelview_matrix[0 + 3 * 4] = para[0][3]; + // R2 + modelview_matrix[1 + 0 * 4] = para[1][0]; + modelview_matrix[1 + 1 * 4] = para[1][1]; + modelview_matrix[1 + 2 * 4] = para[1][2]; + modelview_matrix[1 + 3 * 4] = para[1][3]; + // R3 + modelview_matrix[2 + 0 * 4] = -para[2][0]; + modelview_matrix[2 + 1 * 4] = -para[2][1]; + modelview_matrix[2 + 2 * 4] = -para[2][2]; + modelview_matrix[2 + 3 * 4] = -para[2][3]; + modelview_matrix[3 + 0 * 4] = 0.0; + modelview_matrix[3 + 1 * 4] = 0.0; + modelview_matrix[3 + 2 * 4] = 0.0; + modelview_matrix[3 + 3 * 4] = 1.0; + if (scale != 0.0) + { + modelview_matrix[12] *= scale; + modelview_matrix[13] *= scale; + modelview_matrix[14] *= scale; + } + } + + /**** + * + */ + void __OgreGetPoseParameters(double position[3], double orientation[4], const cv::Mat& Rvec, + const cv::Mat& Tvec) + { + // check if paremeters are valid + bool invalid = false; + for (int i = 0; i < 3 && !invalid; i++) + { + if (Tvec.at(i, 0) != -999999) + invalid |= false; + if (Rvec.at(i, 0) != -999999) + invalid |= false; + } + if (invalid) + throw cv::Exception(9003, "extrinsic parameters are not set", "Marker::getModelViewMatrix", __FILE__, + __LINE__); + + // calculate position vector + position[0] = -Tvec.ptr(0)[0]; + position[1] = -Tvec.ptr(0)[1]; + position[2] = +Tvec.ptr(0)[2]; + + // now calculare orientation quaternion + cv::Mat Rot(3, 3, CV_32FC1); + cv::Rodrigues(Rvec, Rot); + + // calculate axes for quaternion + double stAxes[3][3]; + // x axis + stAxes[0][0] = -Rot.at(0, 0); + stAxes[0][1] = -Rot.at(1, 0); + stAxes[0][2] = +Rot.at(2, 0); + // y axis + stAxes[1][0] = -Rot.at(0, 1); + stAxes[1][1] = -Rot.at(1, 1); + stAxes[1][2] = +Rot.at(2, 1); + // for z axis, we use cross product + stAxes[2][0] = stAxes[0][1] * stAxes[1][2] - stAxes[0][2] * stAxes[1][1]; + stAxes[2][1] = -stAxes[0][0] * stAxes[1][2] + stAxes[0][2] * stAxes[1][0]; + stAxes[2][2] = stAxes[0][0] * stAxes[1][1] - stAxes[0][1] * stAxes[1][0]; + + // transposed matrix + double axes[3][3]; + axes[0][0] = stAxes[0][0]; + axes[1][0] = stAxes[0][1]; + axes[2][0] = stAxes[0][2]; + + axes[0][1] = stAxes[1][0]; + axes[1][1] = stAxes[1][1]; + axes[2][1] = stAxes[1][2]; + + axes[0][2] = stAxes[2][0]; + axes[1][2] = stAxes[2][1]; + axes[2][2] = stAxes[2][2]; + + // Algorithm in Ken Shoemake's article in 1987 SIGGRAPH course notes + // article "Quaternion Calculus and Fast Animation". + double fTrace = axes[0][0] + axes[1][1] + axes[2][2]; + double fRoot; + + if (fTrace > 0.0) + { + // |w| > 1/2, may as well choose w > 1/2 + fRoot = sqrt(fTrace + 1.0); // 2w + orientation[0] = 0.5 * fRoot; + fRoot = 0.5 / fRoot; // 1/(4w) + orientation[1] = (axes[2][1] - axes[1][2]) * fRoot; + orientation[2] = (axes[0][2] - axes[2][0]) * fRoot; + orientation[3] = (axes[1][0] - axes[0][1]) * fRoot; + } + else + { + // |w| <= 1/2 + static unsigned int s_iNext[3] = {1, 2, 0}; + unsigned int i = 0; + if (axes[1][1] > axes[0][0]) + i = 1; + if (axes[2][2] > axes[i][i]) + i = 2; + unsigned int j = s_iNext[i]; + unsigned int k = s_iNext[j]; + + fRoot = sqrt(axes[i][i] - axes[j][j] - axes[k][k] + 1.0); + double* apkQuat[3] = {&orientation[1], &orientation[2], &orientation[3]}; + *apkQuat[i] = 0.5 * fRoot; + fRoot = 0.5 / fRoot; + orientation[0] = (axes[k][j] - axes[j][k]) * fRoot; + *apkQuat[j] = (axes[j][i] + axes[i][j]) * fRoot; + *apkQuat[k] = (axes[k][i] + axes[i][k]) * fRoot; + } + } + + /** + */ + void MarkerMap::getIdList(std::vector& ids, bool append) const + { + if (!append) + ids.clear(); + for (size_t i = 0; i < size(); i++) + ids.push_back(at(i).id); + } + + MarkerMap MarkerMap::convertToMeters(float markerSize_meters)const + { + if (!isExpressedInPixels()) + throw cv::Exception(-1, "The board is not expressed in pixels", "MarkerMap::convertToMeters", __FILE__, + __LINE__); + // first, we are assuming all markers are equally sized. So, lets get the size in pixels + int markerSizePix = static_cast(cv::norm(at(0)[0] - at(0)[1])); + MarkerMap BInfo(*this); + BInfo.mInfoType = MarkerMap::METERS; + // now, get the size of a pixel, and change scale + float pixSize = markerSize_meters / float(markerSizePix); + cout << markerSize_meters << " " << float(markerSizePix) << " " << pixSize << endl; + for (size_t i = 0; i < BInfo.size(); i++) + for (int c = 0; c < 4; c++) + { + BInfo[i][c] *= pixSize; + } + return BInfo; + } + cv::Mat MarkerMap::getImage(float METER2PIX) const + { + if (mInfoType == NONE) + throw cv::Exception(-1, "The board is not valid mInfoType==NONE ", "MarkerMap::getImage", __FILE__, + __LINE__); + if (METER2PIX <= 0 && mInfoType != PIX) + throw cv::Exception(-1, "The board is not expressed in pixels and not METER2PIX indicated", + "MarkerMap::getImage", __FILE__, __LINE__); + + auto Dict = Dictionary::loadPredefined(dictionary); + + // get image limits + cv::Point pmin(std::numeric_limits::max(), std::numeric_limits::max()), + pmax(std::numeric_limits::lowest(), std::numeric_limits::lowest()); + for (auto b : *this) + { + for (auto p : b.points) + { + pmin.x = min(int(p.x), pmin.x); + pmin.y = min(int(p.y), pmin.y); + pmax.x = max(int(p.x + 0.5), pmax.x); + pmax.y = max(int(p.y + 0.5), pmax.y); + assert(p.z == 0); + } + } + + cv::Point psize = pmax - pmin; + cv::Mat image(cv::Size(psize.x, psize.y), CV_8UC1); + image.setTo(cv::Scalar::all(255)); + + vector p3d = *this; + // the points must be moved from a real reference system to image reference sysmte (y positive is inverse) + for (auto& m : p3d) + for (auto& p : m.points) + { + p -= cv::Point3f(static_cast(pmin.x), static_cast(pmax.y), 0.f); + // now, use inverse y + p.y = -p.y; + } + for (auto m : p3d) + { + // get size and find size of this + const float size = static_cast(cv::norm(m[0] - m[1])); + auto im1 = Dict.getMarkerImage_id(m.id, int(size / 8)); + cv::Mat im2; + // now resize to fit + cv::resize(im1, im2, cv::Size(static_cast(size), static_cast(size))); + // copy in correct position + auto ry = cv::Range(int(m[0].y), int(m[2].y)); + auto rx = cv::Range(int(m[0].x), int(m[2].x)); + cv::Mat sub = image(ry, rx); + im2.copyTo(sub); + } + return image; + } + + std::vector MarkerMap::getIndices(const vector& markers)const + { + std::vector indices; + for (size_t i = 0; i < markers.size(); i++) + { + bool found = false; + for (size_t j = 0; j < size() && !found; j++) + { + if (markers[i].id == at(j).id) + { + found = true; + indices.push_back(static_cast(i)); + } + } + } + return indices; + } + void MarkerMap::toStream(std::ostream& str) + { + str << mInfoType << " " << size() << " "; + for (size_t i = 0; i < size(); i++) + { + at(i).toStream(str); + } + // write dic string info + str << dictionary; + } + void MarkerMap::fromStream(std::istream& str) + { + int s; + str >> mInfoType >> s; + resize(s); + for (size_t i = 0; i < size(); i++) + at(i).fromStream(str); + str >> dictionary; + } + pair MarkerMap::calculateExtrinsics(const std::vector& markers, float markerSize, + cv::Mat CameraMatrix, cv::Mat Distorsion) + { + vector p2d; + MarkerMap m_meters; + if (isExpressedInPixels()) + m_meters = convertToMeters(markerSize); + else + m_meters = *this; + vector p3d; + for (auto marker : markers) + { + auto it = find(m_meters.begin(), m_meters.end(), marker.id); + if (it != m_meters.end()) + { // is the marker part of the map? + for (auto p : marker) + p2d.push_back(p); + for (auto p : it->points) + p3d.push_back(p); + } + } + + cv::Mat rvec, tvec; + if (p2d.size() != 0) + { // no points in the vector + cv::solvePnPRansac(p3d, p2d, CameraMatrix, Distorsion, rvec, tvec); + } + if(rvec.type()==CV_64F) rvec.convertTo(rvec,CV_64F); + if(tvec.type()==CV_64F) tvec.convertTo(tvec,CV_64F); + return make_pair(rvec, tvec); + } +}; diff --git a/thirdparty/aruco-3.1.12/src/markermap.h b/thirdparty/aruco-3.1.12/src/markermap.h new file mode 100644 index 0000000..81ce808 --- /dev/null +++ b/thirdparty/aruco-3.1.12/src/markermap.h @@ -0,0 +1,211 @@ +/** +Copyright 2017 Rafael Muñoz Salinas. All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are +permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this list of + conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright notice, this list + of conditions and the following disclaimer in the documentation and/or other materials + provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY Rafael Muñoz Salinas ''AS IS'' AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL Rafael Muñoz Salinas OR +CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +The views and conclusions contained in the software and documentation are those of the +authors and should not be interpreted as representing official policies, either expressed +or implied, of Rafael Muñoz Salinas. +*/ + +#ifndef _Aruco_MarkerMap_h +#define _Aruco_MarkerMap_h + +#include "aruco_export.h" +#include "marker.h" + +#include + +#include +#include + + namespace aruco +{ + /** + * 3d representation of a marker + */ + class ARUCO_EXPORT Marker3DInfo + { + public: + std::vector points; + int id; // maker id + + Marker3DInfo(); + Marker3DInfo(int _id); + inline bool operator==(const Marker3DInfo& MI) + { + return id == MI.id; + } + + // returns the distance of the marker side + inline float getMarkerSize() const + { + return static_cast(cv::norm(points[0] - points[1])); + } + inline cv::Point3f at(size_t idx)const{return points.at(idx);} + inline cv::Point3f & operator[](size_t idx) {return points[idx];} + inline const cv::Point3f & operator[](size_t idx)const {return points[idx];} + inline void push_back(const cv::Point3f &p){ points.push_back(p);} + inline size_t size()const{return points.size();} + + public: + + inline void toStream(std::ostream& str) + { + str << id << " " << size() << " "; + for (size_t i = 0; i < size(); i++) + str << at(i).x << " " << at(i).y << " " << at(i).z << " "; + } + inline void fromStream(std::istream& str) + { + int s; + str >> id >> s; + points.resize(s); + for (size_t i = 0; i < size(); i++) + str >> points[i].x >> points[i].y >> points[i].z; + } + + }; + + /**\brief This class defines a set of markers whose locations are attached to a common reference system, i.e., they + * do not move wrt each other. + * A MarkerMap contains several markers so that they are more robustly detected. + * + * A MarkerMap is only a list of the id of the markers along with the position of their corners. + * A MarkerMap may have information about the dictionary the markers belongs to @see getDictionary() + * + * The position of the corners can be specified either in pixels (in a non-specific size) or in meters. + * The first is the typical case in which you generate the image of board and the print it. Since you do not know + * in advance the real + * size of the markers, their corners are specified in pixels, and then, the translation to meters can be made once + * you know the real size. + * + * On the other hand, you may want to have the information of your boards in meters. The MarkerMap allows you to do + * so. + * + * The point is in the mInfoType variable. It can be either PIX or METERS according to your needs. + * + */ + + class ARUCO_EXPORT MarkerMap : public std::vector + { + public: + /** + */ + MarkerMap(); + + /**Loads from file + * @param filePath to the config file + */ + MarkerMap(std::string filePath); + + /**Indicates if the corners are expressed in meters + */ + bool isExpressedInMeters() const + { + return mInfoType == METERS; + } + /**Indicates if the corners are expressed in meters + */ + bool isExpressedInPixels() const + { + return mInfoType == PIX; + } + /**converts the passed board into meters + */ + MarkerMap convertToMeters(float markerSize) const; + // simple way of knowing which elements detected in an image are from this markermap + // returns the indices of the elements in the vector 'markers' that belong to this set + // Example: The set has the elements with ids 10,21,31,41,92 + // The input vector has the markers with ids 10,88,9,12,41 + // function returns {0,4}, because element 0 (10) of the vector belongs to the set, and also element 4 (41) + // belongs to the set + std::vector getIndices(const vector &markers) const; + + /**Returns the Info of the marker with id specified. If not in the set, throws exception + */ + const Marker3DInfo& getMarker3DInfo(int id) const; + + /**Returns the index of the marker (in this object) with id indicated, if is in the vector + */ + int getIndexOfMarkerId(int id) const; + /**Set in the list passed the set of the ids + */ + void getIdList(vector& ids, bool append = true) const; + + /**Returns an image of this to be printed. This object must be in pixels @see isExpressedInPixels(). If + * not,please provide the METER2PIX conversion parameter + */ + cv::Mat getImage(float METER2PIX = 0) const; + + /**Saves the board info to a file + */ + void saveToFile(std::string sfile); + /**Reads board info from a file + */ + void readFromFile(std::string sfile); + + // calculates the camera location w.r.t. the map using the information provided + // returns the + std::pair calculateExtrinsics(const std::vector& markers, float markerSize, + cv::Mat CameraMatrix, cv::Mat Distorsion); + + // returns string indicating the dictionary + inline std::string getDictionary() const + { + return dictionary; + } + + enum Marker3DInfoType + { + NONE = -1, + PIX = 0, + METERS = 1 + }; // indicates if the data in MakersInfo is expressed in meters or in pixels so as to do conversion internally + // returns string indicating the dictionary + void setDictionary(std::string d) + { + dictionary = d; + } + + // variable indicates if the data in MakersInfo is expressed in meters or in pixels so as to do conversion + // internally + int mInfoType; + + private: + // dictionary it belongs to (if any) + std::string dictionary; + + private: + /**Saves the board info to a file + */ + void saveToFile(cv::FileStorage& fs); + /**Reads board info from a file + */ + void readFromFile(cv::FileStorage& fs); + + public: + void toStream(std::ostream& str); + void fromStream(std::istream& str); + }; +} + +#endif diff --git a/thirdparty/aruco-3.1.12/src/picoflann.h b/thirdparty/aruco-3.1.12/src/picoflann.h new file mode 100644 index 0000000..59e9e2a --- /dev/null +++ b/thirdparty/aruco-3.1.12/src/picoflann.h @@ -0,0 +1,647 @@ +#ifndef PicoFlann_H +#define PicoFlann_H +#include +#include +#include +#include +#include +#include +#include +namespace picoflann { + + +/** + * @brief The KdTreeIndex class is the simplest an minimal method to use kdtrees. + * You only must define an adapter, that tells the class how to access the i-th dimension of your element. Here are two examples showing how easy it is: + * + * You can use any container providing the methods size() ant at(). + * You must create the adapter that must implement the method : T operator( )(const E &elem, int dim)const; T=float or double, E is your element type + * + * You can easily save/read the index to/from an stream using toStream() and fromStream(). Please notice that the data of the container is not copied in the KdTreeIndex so you + * must be sure it is available when doing the searchs + * + * See examples below + + * +#include +#include +#include +#include "picoflann.h" +void example1(){ + //Data type + struct Point2f{ + Point2f(float X,float Y) { x=X;y=Y; } + float x,y; + }; + + // Adapter. + // Given an Point2f element, it returns the element of the dimension specified such that dim=0 is x and dim=1 is y + struct PicoFlann_Point2fAdapter{ + inline float operator( )(const Point2f &elem, int dim)const { return dim==0?elem.x:elem.y; } + }; + + //create the points randomly + std::default_random_engine generator; + std::uniform_real_distribution distribution(-1000.0,1000.0); + std::vector data; + for(size_t i=0;i<1000;i++) + data.push_back( Point2f ( distribution(generator),distribution(generator))); + ///------------------------------------------------------------ + /// Create the kdtree + picoflann::KdTreeIndex<2,PicoFlann_Point2fAdapter> kdtree;//2 is the number of dimensions + kdtree.build(data); + //search 10 nearest neibors to point (0,0) + std::vector > res=kdtree.searchKnn(data,Point2f(0,0),10); + + //radius search in a radius of 30 (the resulting distances are squared) + res=kdtree.radiusSearch(data,Point2f(0,0),30); + //another version + kdtree.radiusSearch(res,data,Point2f(0,0),30); + + //you can save to a file + std::ofstream file_out("out.bin",std::ios::binary); + kdtree.toStream(file_out); + + //recover from the file + picoflann::KdTreeIndex<2,PicoFlann_Point2fAdapter> kdtree2; + std::ifstream file_in("out.bin",std::ios::binary); + kdtree2.fromStream(file_in); + res=kdtree2.radiusSearch(data,Point2f(0,0),30); + +} + + +//Using an array of 3d points +void example2(){ + + struct Point3f{ + Point3f(float X,float Y,float Z) { data[0]=X;data[1]=Y;data[2]=Z; } + float data[3]; + }; + struct PicoFlann_Array3f_Adapter{ + inline float operator( )(const Point3f &elem, int dim)const{ return elem.data[dim]; } + }; + struct PicoFlann_Array3f_Container{ + const Point3f *_array; + size_t _size; + PicoFlann_Array3f_Container(float *array,size_t Size):_array((Point3f*)array),_size(Size){} + inline size_t size()const{return _size;} + inline const Point3f &at(int idx)const{ return _array [idx];} + }; + std::default_random_engine generator; + std::uniform_real_distribution distribution(-1000.0,1000.0); + + int nPoints=1000; + float *array=new float[nPoints*3]; + for(size_t i=0;i<1000*3;i++) + array[i]= distribution(generator); + + ///------------------------------------------------------------ + picoflann::KdTreeIndex<3,PicoFlann_Array3f_Adapter> kdtree;// 3 is the number of dimensions, L2 is the type of distance + kdtree.build( PicoFlann_Array3f_Container(array,nPoints)); + PicoFlann_Array3f_Container p3container(array,nPoints); + std::vector > res=kdtree.searchKnn(p3container,Point3f(0,0,0),10); + res=kdtree.radiusSearch(p3container,Point3f(0,0,0),30); +} + * + */ +struct L2{ + + template + double compute_distance( const ElementType &elema,const ElementType2 &elemb,const Adapter & adapter,int ndims ,double worstDist)const + { + //compute dist + double sqd=0; + for(int i=0;iworstDist) return sqd; + } + return sqd; + } +}; + +template +class KdTreeIndex{ + +public: + /** + *Builds the index using the data passes in your container and the adapter + */ + template + inline void build(const Container &container ){ + _index.clear(); + _index.reserve(container.size()*2); + _index.dims=DIMS; + _index.nValues=container.size(); + //Create root and assign all items + all_indices.resize(container.size()); + for(size_t i=0;i(_index.rootBBox,0,all_indices.size(),container); + _index.push_back(Node()); + divideTree(_index,0,0,all_indices.size(),_index.rootBBox ,container); + } + + + inline void clear(){ + _index.clear(); + all_indices.clear(); + } + + //saves to a stream. Note that the container is not saved! + inline void toStream (std::ostream &str)const; + //reads from an stream. Note that the container is not readed! + inline void fromStream (std::istream &str); + + template< typename Type,typename Container > + inline std::vector > searchKnn(const Container &container,const Type &val, int nn,bool sorted=true){ + std::vector > res; + generalSearch(res,container,val,-1,sorted,nn); + return res; + } + + + template< typename Type,typename Container > + inline std::vector > radiusSearch(const Container &container,const Type &val, double dist,bool sorted=true, int maxNN=-1)const{ + std::vector > res; + generalSearch< Type,Container>(res,container,val,dist,sorted,maxNN); + return res; + } + + + template< typename Type,typename Container > + inline void radiusSearch(std::vector > &res,const Container &container,const Type &val, double dist,bool sorted=true, int maxNN=-1){ + generalSearch(res,container,val,dist,sorted,maxNN); + } + + + +private: + + struct Node{ + inline bool isLeaf()const{return _ileft==-1 && _iright==-1;} + inline void setNodesInfo(uint32_t l,uint32_t r){_ileft=l; _iright=r;} + double div_val; + uint16_t col_index;//column index of the feature vector + std::vector idx; + float divhigh,divlow; + int64_t _ileft=-1,_iright=-1;//children + void toStream(std::ostream &str) const; + void fromStream(std::istream &str); + }; + + + typedef std::vector > BoundingBox; + + struct Index:public std::vector{ + BoundingBox rootBBox; + int dims=0; + int nValues=0;//number of elements of the set when call to build + inline void toStream(std::ostream &str)const; + inline void fromStream(std::istream &str); + }; + Index _index; + DistanceType _distance; + Adapter adapter; + //next are only used during build + std::vector all_indices; + int _maxLeafSize=10 ; + + + + //temporal used during creation of the tree + template< typename Container > + void divideTree(Index &index,uint64_t nodeIdx,int startIndex,int endIndex ,BoundingBox &bbox,const Container&container){ + // std::cout<<"CREATE="<(bbox,startIndex,endIndex,container); + // std::cout<(_bbox,startIndex,endIndex,container); + // //get the dimension with highest distnaces + double max_spread=-1; + currNode.col_index=0; + for(int i=0;imax_spread){ + max_spread=spread; + currNode.col_index=i; + } + } + //select the split val + double split_val= (bbox[currNode.col_index].first + bbox[currNode.col_index].second) / 2; + if (split_val < _bbox[currNode.col_index].first) currNode.div_val = _bbox[currNode.col_index].first; + else if (split_val > _bbox[currNode.col_index].second ) currNode.div_val = _bbox[currNode.col_index].second ; + else currNode.div_val = split_val; + } + else{ + ///SELECT THE COL (DIMENSION) ON WHICH PARTITION IS MADE + double var[DIMS],mean[DIMS]; + //compute the variance of the features to select the highest one + mean_var_calculate(startIndex,endIndex, var, mean,container); + currNode.col_index=0; + //select element with highest variance + for(int i=1;ivar[currNode.col_index]) currNode.col_index=i; + + //now sort all indices according to the selected value + + currNode.div_val=mean[currNode.col_index]; + } + + + + + + //compute the variance of the features to select the highest one + //now sort all indices according to the selected value + + //std::cout<<" CUT FEAT="< +void KdTreeIndex::toStream (std::ostream &str)const{ +_index.toStream(str); +} + +template +void KdTreeIndex::fromStream(std::istream &str){ +_index.fromStream(str); +} +} + +#endif + diff --git a/thirdparty/aruco-3.1.12/src/posetracker.cpp b/thirdparty/aruco-3.1.12/src/posetracker.cpp new file mode 100644 index 0000000..61bffe8 --- /dev/null +++ b/thirdparty/aruco-3.1.12/src/posetracker.cpp @@ -0,0 +1,553 @@ +/** +Copyright 2017 Rafael Muñoz Salinas. All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are +permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this list of + conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright notice, this list + of conditions and the following disclaimer in the documentation and/or other materials + provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY Rafael Muñoz Salinas ''AS IS'' AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL Rafael Muñoz Salinas OR +CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +The views and conclusions contained in the software and documentation are those of the +authors and should not be interpreted as representing official policies, either expressed +or implied, of Rafael Muñoz Salinas. +*/ + +#include "posetracker.h" +#include "ippe.h" +#include +#include "levmarq.h" //solve pnp of opencv is not trustworthy. Create our own +#include +namespace aruco +{ + +namespace aruco_private { + +cv::Mat impl__aruco_getRTMatrix(const cv::Mat& _rvec, const cv::Mat& _tvec) +{ + assert(_rvec.type()==CV_32F && _rvec.total()==3); + assert(_tvec.type()==CV_32F && _tvec.total()==3); + + cv::Mat Matrix(4,4,CV_32F); + float *rt_44=Matrix.ptr(0); + //makes a fast conversion to the 4x4 array passed + float rx=_rvec.ptr(0)[0]; + float ry=_rvec.ptr(0)[1]; + float rz=_rvec.ptr(0)[2]; + float tx=_tvec.ptr(0)[0]; + float ty=_tvec.ptr(0)[1]; + float tz=_tvec.ptr(0)[2]; + float nsqa=rx*rx + ry*ry + rz*rz; + float a=std::sqrt(nsqa); + float i_a=a?1./a:0; + float rnx=rx*i_a; + float rny=ry*i_a; + float rnz=rz*i_a; + float cos_a=cos(a); + float sin_a=sin(a); + float _1_cos_a=1.-cos_a; + rt_44[0] =cos_a+rnx*rnx*_1_cos_a; + rt_44[1]=rnx*rny*_1_cos_a- rnz*sin_a; + rt_44[2]=rny*sin_a + rnx*rnz*_1_cos_a; + rt_44[3]=tx; + rt_44[4]=rnz*sin_a +rnx*rny*_1_cos_a; + rt_44[5]=cos_a+rny*rny*_1_cos_a; + rt_44[6]= -rnx*sin_a+ rny*rnz*_1_cos_a; + rt_44[7]=ty; + rt_44[8]= -rny*sin_a + rnx*rnz*_1_cos_a; + rt_44[9]= rnx*sin_a + rny*rnz*_1_cos_a; + rt_44[10]=cos_a+rnz*rnz*_1_cos_a; + rt_44[11]=tz; + rt_44[12]=rt_44[13]=rt_44[14]=0; + rt_44[15]=1; + return Matrix; +} +void impl__aruco_getRTfromMatrix44(const cv::Mat& M, cv::Mat& R, cv::Mat& T) +{ + assert(M.cols == M.rows && M.cols == 4); + assert(M.type() == CV_32F || M.type() == CV_64F); + // extract the rotation part + cv::Mat r33 = cv::Mat(M, cv::Rect(0, 0, 3, 3)); + cv::SVD svd(r33); + cv::Mat Rpure = svd.u * svd.vt; + cv::Rodrigues(Rpure, R); + T.create(1, 3, M.type()); + if (M.type() == CV_32F) + for (int i = 0; i < 3; i++) + T.ptr(0)[i] = M.at(i, 3); + else + for (int i = 0; i < 3; i++) + T.ptr(0)[i] = M.at(i, 3); +} + +double reprj_error( const std::vector &objPoints, const std::vectorpoints2d, const CameraParameters &imp,const cv::Mat &rt44){ + std::vector prepj; + cv::Mat rv,tv; + impl__aruco_getRTfromMatrix44(rt44,rv,tv); + cv::projectPoints(objPoints,rv,tv,imp.CameraMatrix,imp.Distorsion,prepj); + double sum=0; + int nvalid=0; + for(size_t i=0;i& POrg, const std::vector& PDst, cv::Mat& RT_4x4) +{ + struct Quaternion + { + Quaternion(float q0, float q1, float q2, float q3) + { + q[0] = q0; + q[1] = q1; + q[2] = q2; + q[3] = q3; + } + cv::Mat getRotation() const + { + cv::Mat R(3, 3, CV_32F); + R.at(0, 0) = q[0] * q[0] + q[1] * q[1] - q[2] * q[2] - q[3] * q[3]; + R.at(0, 1) = 2.f * (q[1] * q[2] - q[0] * q[3]); + R.at(0, 2) = 2.f * (q[1] * q[3] + q[0] * q[2]); + + R.at(1, 0) = 2.f * (q[1] * q[2] + q[0] * q[3]); + R.at(1, 1) = q[0] * q[0] + q[2] * q[2] - q[1] * q[1] - q[3] * q[3]; + R.at(1, 2) = 2.f * (q[2] * q[3] - q[0] * q[1]); + + R.at(2, 0) = 2.f * (q[1] * q[3] - q[0] * q[2]); + R.at(2, 1) = 2.f * (q[2] * q[3] + q[0] * q[1]); + R.at(2, 2) = q[0] * q[0] + q[3] * q[3] - q[1] * q[1] - q[2] * q[2]; + return R; + } + float q[4]; + }; + assert(POrg.size()== PDst.size()); + + cv::Mat _org(POrg.size(),3,CV_32F,(float*)&POrg[0]); + cv::Mat _dst(PDst.size(),3,CV_32F,(float*)&PDst[0]); + + +// _org = _org.reshape(1); +// _dst = _dst.reshape(1); + cv::Mat Mu_s = cv::Mat::zeros(1, 3, CV_32F); + cv::Mat Mu_m = cv::Mat::zeros(1, 3, CV_32F); + // cout<<_s<(0)[i] /= float(_org.rows); + Mu_m.ptr(0)[i] /= float(_dst.rows); + } + + // cout<<"Mu_s="<(0, 0), eigenvectors.at(0, 1), eigenvectors.at(0, 2), + eigenvectors.at(0, 3)); + cv::Mat RR = rot.getRotation(); + // cout<<"RESULT="<& v_m){ + + + + //get the markers in v_m that are in the map + std::vector mapMarkers; + for (auto marker : v_m) + { + if (_map_mm.find(marker.id) != _map_mm.end()) + mapMarkers.push_back(marker); + } + + if( mapMarkers.size()==0)return cv::Mat(); + struct minfo{ + int id; + cv::Mat rt_f2m; + double err; + }; + struct se3{float rt[6];}; + + cv::Mat pose_f2g_out;//result + //estimate the markers locations and see if there is at least one good enough + std::vector good_marker_locations; + std::vector all_marker_locations; + + for(const Marker &marker:mapMarkers){//for ech visible marker + auto mpi=solvePnP_(_map_mm[marker.id]. getMarkerSize(),marker,_cam_params.CameraMatrix,_cam_params.Distorsion); + minfo mi; + mi.id=marker.id; + mi.err=mpi[0].second; + mi.rt_f2m=mpi[0].first; + all_marker_locations.push_back(mi); + if(mpi[1].second/mpi[0].second > aruco_minerrratio_valid) + good_marker_locations.push_back(mi); + mi.rt_f2m=mpi[1].first; + mi.err=mpi[1].second; + all_marker_locations.push_back(mi); + + } + + + //try using more than one marker approach + if (mapMarkers.size()>=2) { + //collect all the markers 3d locations + std::vector markerPoints2d; + std::vector markerPoints3d; + for(const Marker &marker:mapMarkers){ + markerPoints2d.insert(markerPoints2d.end(),marker.begin(),marker.end()); + auto p3d= _map_mm[marker.id].points; + markerPoints3d.insert(markerPoints3d.end(),p3d.begin(),p3d.end()); + } + + //take the all poses and select the one that minimizes the global reproj error + for(auto & ml:all_marker_locations){ + auto pose= ml.rt_f2m *marker_m2g[ml.id]; + //now, compute the repj error of all markers using this info + ml.err=aruco_private::reprj_error(markerPoints3d,markerPoints2d,_cam_params, pose); + } + //sort and get the best + std::sort(all_marker_locations.begin(),all_marker_locations.end(),[](const minfo &a,const minfo &b){return a.err +#include + +namespace aruco +{ + /**Tracks the position of a marker. Instead of trying to calculate the position from scratch everytime, it uses past + * observations to + * estimate the pose. It should solve the problem with ambiguities that arises in some circumstances + * + * To solve ambiguity we follow the following idea. We are using the IPPE method, which returns the two possible + * solutions s0,s1. + * Error solution has a reprojection error e(s_i) and it is assumed that e(s0)& p3d, const std::vector& p2d, + const cv::Mat& cam_matrix, const cv::Mat& dist, cv::Mat& r_io, cv::Mat& t_io); + }; + /**Tracks the position of a markermap + */ + + class ARUCO_EXPORT MarkerMapPoseTracker + { + public: + MarkerMapPoseTracker(); + // Sets the parameters required for operation + // If the msconf has data expressed in meters, then the markerSize parameter is not required. If it is in + // pixels, the markersize will be used to + // transform to meters + // Throws exception if wrong configuraiton + void setParams(const CameraParameters& cam_params, const MarkerMap& msconf, + float markerSize = -1); + // indicates if the call to setParams has been successfull and this object is ready to call estimatePose + bool isValid() const + { + return _isValid; + } + + //resets current state + void reset(){ + _isValid=false; + _rvec=cv::Mat(); + _tvec=cv::Mat(); + } + + // estimates camera pose wrt the markermap + // returns true if pose has been obtained and false otherwise + bool estimatePose(const std::vector& v_m); + + // returns the 4x4 transform matrix. Returns an empty matrix if last call to estimatePose returned false + cv::Mat getRTMatrix() const; + // return the rotation vector. Returns an empty matrix if last call to estimatePose returned false + const cv::Mat getRvec() const + { + return _rvec; + } + // return the translation vector. Returns an empty matrix if last call to estimatePose returned false + const cv::Mat getTvec() const + { + return _tvec; + } + //prevents from big jumps. If the difference between current and previous positions are greater than the value indicated + //assumes no good tracking and the pose will be set as null + void setMaxTrackingDifference(float maxTranslation,float maxAngle){ + _maxTranslation=maxTranslation; + _maxAngle=maxAngle; + } + + protected: + cv::Mat _rvec, _tvec; // current poses + aruco::CameraParameters _cam_params; + MarkerMap _msconf; + std::map _map_mm; + bool _isValid; + cv::Mat relocalization(const std::vector& v_m); + float aruco_minerrratio_valid;/*tau_e in paper*/ + std::map marker_m2g;//for each marker, the transform from the global ref system to the marker ref system + float _maxTranslation=-1,_maxAngle=-1; + }; +}; + +#endif diff --git a/thirdparty/aruco-3.1.12/src/timers.h b/thirdparty/aruco-3.1.12/src/timers.h new file mode 100644 index 0000000..aa50eb5 --- /dev/null +++ b/thirdparty/aruco-3.1.12/src/timers.h @@ -0,0 +1,209 @@ +/** +Copyright 2017 Rafael Muñoz Salinas. All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are +permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this list of + conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright notice, this list + of conditions and the following disclaimer in the documentation and/or other materials + provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY Rafael Muñoz Salinas ''AS IS'' AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL Rafael Muñoz Salinas OR +CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +The views and conclusions contained in the software and documentation are those of the +authors and should not be interpreted as representing official policies, either expressed +or implied, of Rafael Muñoz Salinas. +*/ + +#ifndef ARUCO_TIMERS_H +#define ARUCO_TIMERS_H + + +#include +#include +#include +#include +#include "aruco_export.h" + namespace aruco{ + +//timer +struct ScopeTimer +{ + std::chrono::high_resolution_clock::time_point begin,end; + + std::string name; + bool use; + enum SCALE {NSEC,MSEC,SEC}; + SCALE sc; + ScopeTimer(std::string name_,bool use_=true,SCALE _sc=MSEC) + { +#ifdef USE_TIMERS + name=name_; + use=use_; + sc=_sc; + begin= std::chrono::high_resolution_clock::now(); +#else + (void)name_; + (void)use_; + (void)_sc; + +#endif + } + ~ScopeTimer() + { +#ifdef USE_TIMERS + if (use){ + end= std::chrono::high_resolution_clock::now(); + double fact=1; + std::string str; + switch(sc) + { + case NSEC:fact=1;str="ns";break; + case MSEC:fact=1e6;str="ms";break; + case SEC:fact=1e9;str="s";break; + }; + + std::cout << "Time("<(end-begin).count())/fact< vtimes; + std::vector names; + std::string _name; + + ScopedTimerEvents(std::string name="",bool start=true,SCALE _sc=MSEC){ +#ifdef USE_TIMERS + if(start) add("start");sc=_sc;_name=name; +#else + (void)name; + (void)start; + (void)_sc; +#endif + } + + void add(std::string name){ +#ifdef USE_TIMERS + vtimes.push_back(std::chrono::high_resolution_clock::now()); + names.push_back(name); +#else + (void)name; +#endif + } + void addspaces(std::vector &str ){ + //get max size + size_t m=0; + for(auto &s:str)m=std::max(size_t(s.size()),m); + for(auto &s:str){ + while(s.size()(vtimes[i]-vtimes[i-1]).count())/fact<(vtimes[i]-vtimes[0]).count())/fact<(e-_s).count()); + n++; + } + + void print(SCALE sc=MSEC){ +#ifdef USE_TIMERS + double fact=1; + std::string str; + switch(sc) + { + case NSEC:fact=1;str="ns";break; + case MSEC:fact=1e6;str="ms";break; + case SEC:fact=1e9;str="s";break; + }; + std::cout<<"Time("<<_name<<")= "<< ( sum/n)/fact< Date: Wed, 21 Dec 2022 16:29:32 +0545 Subject: [PATCH 06/11] added utils and cmake --- .../cmake/aruco-uninstalled.pc.in | 10 + thirdparty/aruco-3.1.12/cmake/aruco.pc.in | 16 + .../cmake/cmake_uninstall.cmake.in | 28 + .../aruco-3.1.12/cmake/compilerOptions.cmake | 32 + thirdparty/aruco-3.1.12/cmake/config.cmake.in | 36 + thirdparty/aruco-3.1.12/cmake/cpack.cmake | 17 + .../aruco-3.1.12/cmake/findDependencies.cmake | 48 + .../aruco-3.1.12/cmake/installOptions.cmake | 10 + thirdparty/aruco-3.1.12/cmake/options.cmake | 53 + thirdparty/aruco-3.1.12/cmake/printInfo.cmake | 47 + .../utils_calibration/CMakeLists.txt | 21 + .../utils_calibration/REAME_CALIBRATION | 32 + .../utils_calibration/aruco_calibration.cpp | 181 +++ .../aruco_calibration_fromimages.cpp | 242 ++++ .../aruco_calibration_grid_board_a4.h | 138 ++ .../aruco_calibration_grid_board_a4.pdf | Bin 0 -> 200501 bytes .../aruco_calibration_grid_board_a4.yml | 54 + .../aruco_portable_calibration.cpp | 179 +++ .../utils_calibration/calibrator.cpp | 362 +++++ .../utils_calibration/calibrator.h | 84 ++ .../utils_calibration/dirreader.h | 1232 +++++++++++++++++ .../aruco-3.1.12/utils_dcf/CMakeLists.txt | 12 + .../aruco-3.1.12/utils_dcf/aruco_dcf.cpp | 104 ++ .../utils_dcf/aruco_dcf_markermap.cpp | 214 +++ .../aruco-3.1.12/utils_dcf/pcdwriter.cpp | 424 ++++++ thirdparty/aruco-3.1.12/utils_dcf/sgl.h | 335 +++++ thirdparty/aruco-3.1.12/utils_dcf/sglviewer.h | 522 +++++++ .../aruco-3.1.12/utils_fractal/CMakeLists.txt | 16 + .../utils_fractal/fractal_create.cpp | 86 ++ .../utils_fractal/fractal_pix2meters.cpp | 28 + .../utils_fractal/fractal_print_marker.cpp | 66 + .../utils_fractal/fractal_tracker.cpp | 133 ++ .../aruco-3.1.12/utils_gl/CMakeLists.txt | 11 + .../utils_gl/aruco_test_board_gl_mask.cpp | 396 ++++++ .../aruco-3.1.12/utils_gl/aruco_test_gl.cpp | 279 ++++ .../utils_gl/aruco_test_markermap_gl.cpp | 340 +++++ .../utils_markermap/CMakeLists.txt | 18 + .../aruco_create_markermap.cpp | 130 ++ .../aruco_markermap_pix2meters.cpp | 51 + .../aruco_simple_markermap.cpp | 120 ++ .../utils_markermap/aruco_test_markermap.cpp | 232 ++++ .../utils_markermap/pcdwriter.cpp | 424 ++++++ thirdparty/aruco-3.1.12/utils_markermap/sgl.h | 335 +++++ .../aruco-3.1.12/utils_markermap/sglviewer.h | 522 +++++++ 44 files changed, 7620 insertions(+) create mode 100644 thirdparty/aruco-3.1.12/cmake/aruco-uninstalled.pc.in create mode 100644 thirdparty/aruco-3.1.12/cmake/aruco.pc.in create mode 100644 thirdparty/aruco-3.1.12/cmake/cmake_uninstall.cmake.in create mode 100644 thirdparty/aruco-3.1.12/cmake/compilerOptions.cmake create mode 100644 thirdparty/aruco-3.1.12/cmake/config.cmake.in create mode 100644 thirdparty/aruco-3.1.12/cmake/cpack.cmake create mode 100644 thirdparty/aruco-3.1.12/cmake/findDependencies.cmake create mode 100644 thirdparty/aruco-3.1.12/cmake/installOptions.cmake create mode 100644 thirdparty/aruco-3.1.12/cmake/options.cmake create mode 100644 thirdparty/aruco-3.1.12/cmake/printInfo.cmake create mode 100644 thirdparty/aruco-3.1.12/utils_calibration/CMakeLists.txt create mode 100644 thirdparty/aruco-3.1.12/utils_calibration/REAME_CALIBRATION create mode 100644 thirdparty/aruco-3.1.12/utils_calibration/aruco_calibration.cpp create mode 100644 thirdparty/aruco-3.1.12/utils_calibration/aruco_calibration_fromimages.cpp create mode 100644 thirdparty/aruco-3.1.12/utils_calibration/aruco_calibration_grid_board_a4.h create mode 100644 thirdparty/aruco-3.1.12/utils_calibration/aruco_calibration_grid_board_a4.pdf create mode 100644 thirdparty/aruco-3.1.12/utils_calibration/aruco_calibration_grid_board_a4.yml create mode 100644 thirdparty/aruco-3.1.12/utils_calibration/aruco_portable_calibration.cpp create mode 100644 thirdparty/aruco-3.1.12/utils_calibration/calibrator.cpp create mode 100644 thirdparty/aruco-3.1.12/utils_calibration/calibrator.h create mode 100644 thirdparty/aruco-3.1.12/utils_calibration/dirreader.h create mode 100644 thirdparty/aruco-3.1.12/utils_dcf/CMakeLists.txt create mode 100644 thirdparty/aruco-3.1.12/utils_dcf/aruco_dcf.cpp create mode 100644 thirdparty/aruco-3.1.12/utils_dcf/aruco_dcf_markermap.cpp create mode 100644 thirdparty/aruco-3.1.12/utils_dcf/pcdwriter.cpp create mode 100644 thirdparty/aruco-3.1.12/utils_dcf/sgl.h create mode 100644 thirdparty/aruco-3.1.12/utils_dcf/sglviewer.h create mode 100644 thirdparty/aruco-3.1.12/utils_fractal/CMakeLists.txt create mode 100644 thirdparty/aruco-3.1.12/utils_fractal/fractal_create.cpp create mode 100644 thirdparty/aruco-3.1.12/utils_fractal/fractal_pix2meters.cpp create mode 100644 thirdparty/aruco-3.1.12/utils_fractal/fractal_print_marker.cpp create mode 100644 thirdparty/aruco-3.1.12/utils_fractal/fractal_tracker.cpp create mode 100644 thirdparty/aruco-3.1.12/utils_gl/CMakeLists.txt create mode 100644 thirdparty/aruco-3.1.12/utils_gl/aruco_test_board_gl_mask.cpp create mode 100644 thirdparty/aruco-3.1.12/utils_gl/aruco_test_gl.cpp create mode 100644 thirdparty/aruco-3.1.12/utils_gl/aruco_test_markermap_gl.cpp create mode 100644 thirdparty/aruco-3.1.12/utils_markermap/CMakeLists.txt create mode 100644 thirdparty/aruco-3.1.12/utils_markermap/aruco_create_markermap.cpp create mode 100644 thirdparty/aruco-3.1.12/utils_markermap/aruco_markermap_pix2meters.cpp create mode 100644 thirdparty/aruco-3.1.12/utils_markermap/aruco_simple_markermap.cpp create mode 100644 thirdparty/aruco-3.1.12/utils_markermap/aruco_test_markermap.cpp create mode 100644 thirdparty/aruco-3.1.12/utils_markermap/pcdwriter.cpp create mode 100644 thirdparty/aruco-3.1.12/utils_markermap/sgl.h create mode 100644 thirdparty/aruco-3.1.12/utils_markermap/sglviewer.h diff --git a/thirdparty/aruco-3.1.12/cmake/aruco-uninstalled.pc.in b/thirdparty/aruco-3.1.12/cmake/aruco-uninstalled.pc.in new file mode 100644 index 0000000..991af56 --- /dev/null +++ b/thirdparty/aruco-3.1.12/cmake/aruco-uninstalled.pc.in @@ -0,0 +1,10 @@ + +libdir=@CMAKE_CURRENT_BINARY_DIR@ +includedir=@CMAKE_CURRENT_SOURCE_DIR@/src + +Name: @PROJECT_NAME@ +Description: ArUco: a minimal library for Augmented Reality applications based on OpenCv, uninstalled Version. +Version: @PROJECT_VERSION@ +Requires: opencv >= 2.1.0 +Libs: -L${libdir} -laruco +Cflags: -I${includedir} diff --git a/thirdparty/aruco-3.1.12/cmake/aruco.pc.in b/thirdparty/aruco-3.1.12/cmake/aruco.pc.in new file mode 100644 index 0000000..b0a1edb --- /dev/null +++ b/thirdparty/aruco-3.1.12/cmake/aruco.pc.in @@ -0,0 +1,16 @@ +# pkg-config file for the library + +prefix=@CMAKE_INSTALL_PREFIX@ +exec_prefix=${prefix} +libdir=${exec_prefix}/lib +includedir=${prefix}/include + +Name: @PROJECT_NAME@ +Description: ARUCO Library for marker detection +Version: @PROJECT_VERSION@ +Requires: opencv >= 2.1.0 +Conflicts: +Libs: -L${libdir} -l@PROJECT_NAME@ +Cflags: -I${includedir}/@PROJECT_NAME@ -I${includedir} + + diff --git a/thirdparty/aruco-3.1.12/cmake/cmake_uninstall.cmake.in b/thirdparty/aruco-3.1.12/cmake/cmake_uninstall.cmake.in new file mode 100644 index 0000000..81482da --- /dev/null +++ b/thirdparty/aruco-3.1.12/cmake/cmake_uninstall.cmake.in @@ -0,0 +1,28 @@ +# ----------------------------------------------- +# File that provides "make uninstall" target +# We use the file 'install_manifest.txt' +# ----------------------------------------------- +IF(NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt") + MESSAGE(FATAL_ERROR "Cannot find install manifest: \"@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt\"") +ENDIF(NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt") + +FILE(READ "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt" files) +STRING(REGEX REPLACE "\n" ";" files "${files}") +FOREACH(file ${files}) + MESSAGE(STATUS "Uninstalling \"$ENV{DESTDIR}${file}\"") +# IF(EXISTS "$ENV{DESTDIR}${file}") +# EXEC_PROGRAM( +# "@CMAKE_COMMAND@" ARGS "-E remove \"$ENV{DESTDIR}${file}\"" +# OUTPUT_VARIABLE rm_out +# RETURN_VALUE rm_retval +# ) + EXECUTE_PROCESS(COMMAND rm $ENV{DESTDIR}${file}) +# IF(NOT "${rm_retval}" STREQUAL 0) +# MESSAGE(FATAL_ERROR "Problem when removing \"$ENV{DESTDIR}${file}\"") +# ENDIF(NOT "${rm_retval}" STREQUAL 0) +# ELSE(EXISTS "$ENV{DESTDIR}${file}") +# MESSAGE(STATUS "File \"$ENV{DESTDIR}${file}\" does not exist.") +# ENDIF(EXISTS "$ENV{DESTDIR}${file}") +ENDFOREACH(file) + + diff --git a/thirdparty/aruco-3.1.12/cmake/compilerOptions.cmake b/thirdparty/aruco-3.1.12/cmake/compilerOptions.cmake new file mode 100644 index 0000000..f4da5e4 --- /dev/null +++ b/thirdparty/aruco-3.1.12/cmake/compilerOptions.cmake @@ -0,0 +1,32 @@ + + +IF(NOT TARGET_PROCESSOR ) + SET(TARGET_PROCESSOR ${CMAKE_SYSTEM_PROCESSOR}) +ENDIF() + +IF(CMAKE_COMPILER_IS_GNUCXX OR MINGW OR (CMAKE_CXX_COMPILER_ID MATCHES "Clang") ) + + if(${TARGET_PROCESSOR} MATCHES armv7l) # In ARM_COrtex8 with neon, enalble vectorized operations + set(GENERAL_FLAGS "${GENERAL_FLAGS} -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=hard ") + SET(ADD_LINK_LIBS -latomic)#for raspian, Opencv has not included it + endif() + if(${TARGET_PROCESSOR} MATCHES armv6l) # In ARM_COrtex8 with neon, enalble vectorized operations + set(GENERAL_FLAGS "${GENERAL_FLAGS} -mabi=aapcs-linux -marm -march=armv6 -mfloat-abi=hard -mfp16-format=none -mfpu=vfp -mlittle-endian -mpic-data-is-text-relative -mrestrict-it -msched-prolog -mstructure-size-boundary=0x20 -mtp=auto -mtls-dialect=gnu -munaligned-access -mvectorize-with-neon-quad") + SET(ADD_LINK_LIBS -latomic)#for raspian, Opencv has not included it + endif() + + + SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS} ${GENERAL_FLAGS} -O3 -g0 -DNDEBUG") + SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS} ${GENERAL_FLAGS} -O0 -g3 -DDEBUG -D_DEBUG -DPRINT_DEBUG_MESSAGES") + SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS} ${GENERAL_FLAGS} -O1 -g3 -D_DEBUG -DDEBUG -DPRINT_DEBUG_MESSAGES") + + +ELSE() # MSVC + ADD_DEFINITIONS(-DNOMINMAX) +ENDIF()#END OF COMPILER SPECIFIC OPTIONS + + + +SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${EXTRA_EXE_LINKER_FLAGS} ${ADD_LINK_LIBS}") +SET(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} ${EXTRA_EXE_LINKER_FLAGS_RELEASE}") +SET(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} ${EXTRA_EXE_LINKER_FLAGS_DEBUG}") diff --git a/thirdparty/aruco-3.1.12/cmake/config.cmake.in b/thirdparty/aruco-3.1.12/cmake/config.cmake.in new file mode 100644 index 0000000..0857e25 --- /dev/null +++ b/thirdparty/aruco-3.1.12/cmake/config.cmake.in @@ -0,0 +1,36 @@ +# =================================================================================== +# @PROJECT_NAME@ CMake configuration file +# +# ** File generated automatically, do not modify ** +# +# Usage from an external project: +# In your CMakeLists.txt, add these lines: +# +# FIND_PACKAGE(@PROJECT_NAME@ REQUIRED ) +# TARGET_LINK_LIBRARIES(MY_TARGET_NAME ${@PROJECT_NAME@_LIBS}) +# +# This file will define the following variables: +# - @PROJECT_NAME@_LIBS : The list of libraries to links against. +# - @PROJECT_NAME@_LIB_DIR : The directory where lib files are. Calling LINK_DIRECTORIES +# with this path is NOT needed. +# - @PROJECT_NAME@_VERSION : The version of this PROJECT_NAME build. Example: "1.2.0" +# - @PROJECT_NAME@_VERSION_MAJOR : Major version part of VERSION. Example: "1" +# - @PROJECT_NAME@_VERSION_MINOR : Minor version part of VERSION. Example: "2" +# - @PROJECT_NAME@_VERSION_PATCH : Patch version part of VERSION. Example: "0" +# +# =================================================================================== +INCLUDE_DIRECTORIES("@CMAKE_INSTALL_PREFIX@/include") +INCLUDE_DIRECTORIES("@CMAKE_INSTALL_PREFIX@/include/@PROJECT_NAME@") +SET(@PROJECT_NAME@_INCLUDE_DIRS "@CMAKE_INSTALL_PREFIX@/include") + +LINK_DIRECTORIES("@CMAKE_INSTALL_PREFIX@/lib") +SET(@PROJECT_NAME@_LIB_DIR "@CMAKE_INSTALL_PREFIX@/lib") + +SET(@PROJECT_NAME@_LIBS @OpenCV_LIBS@ @PROJECT_NAME@@PROJECT_DLLVERSION@) + +SET(@PROJECT_NAME@_FOUND YES) +SET(@PROJECT_NAME@_FOUND "YES") +SET(@PROJECT_NAME@_VERSION @PROJECT_VERSION@) +SET(@PROJECT_NAME@_VERSION_MAJOR @PROJECT_VERSION_MAJOR@) +SET(@PROJECT_NAME@_VERSION_MINOR @PROJECT_VERSION_MINOR@) +SET(@PROJECT_NAME@_VERSION_PATCH @PROJECT_VERSION_PATCH@) diff --git a/thirdparty/aruco-3.1.12/cmake/cpack.cmake b/thirdparty/aruco-3.1.12/cmake/cpack.cmake new file mode 100644 index 0000000..1f2ffaa --- /dev/null +++ b/thirdparty/aruco-3.1.12/cmake/cpack.cmake @@ -0,0 +1,17 @@ +set(CPACK_PACKAGE_DESCRIPTION "ArUCO Package") +set(CPACK_PACKAGE_VERSION_MAJOR "${PROJECT_VERSION_MAJOR}") +set(CPACK_PACKAGE_VERSION_MINOR "${PROJECT_VERSION_MINOR}") +set(CPACK_PACKAGE_VERSION_PATCH "${PROJECT_VERSION_PATCH}") +set(CPACK_PACKAGE_VENDOR "University of Cordoba") +set(CPACK_PACKAGE_CONTACT "rmsalinas@uco.es") +set(CPACK_PACKAGE_FILE_NAME "${CMAKE_PROJECT_NAME}-${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}") +SET(CPACK_PACKAGE_DESCRIPTION "ArUCO library and applications") +SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "ArUCO is a library for fiducial tag detection") + +SET(CPACK_GENERATOR "DEB") +SET(CPACK_DEBIAN_PACKAGE_ARCHITECTURE "i386") +SET(CPACK_DEBIAN_PACKAGE_DEPENDS " ") +SET(CPACK_DEBIAN_PACKAGE_PRIORITY "optional") + +include (CPack) +#In Ubuntu 18 requires sudo apt-get install libopencv-highgui3.2 libopencv-calib3d3.2 libopencv-imgproc3.2 libqt5gui5 libqt5opengl5 diff --git a/thirdparty/aruco-3.1.12/cmake/findDependencies.cmake b/thirdparty/aruco-3.1.12/cmake/findDependencies.cmake new file mode 100644 index 0000000..cde7898 --- /dev/null +++ b/thirdparty/aruco-3.1.12/cmake/findDependencies.cmake @@ -0,0 +1,48 @@ +# ---------------------------------------------------------------------------- +# Find Dependencies +# ---------------------------------------------------------------------------- + +find_package(OpenCV REQUIRED) +include_directories( ${OpenCV_INCLUDE_DIRS} ) + +message(STATUS "OpenCV found, version: ${OpenCV_VERSION} in dir ${OpenCV_INCLUDE_DIRS}") + +if(NOT USE_OWN_EIGEN3) + message(WARNING "If you do not want to install Eigen you can turn on the option USE_OWN_EIGEN3") + find_package( Eigen3 REQUIRED ) +else() + set(EIGEN3_INCLUDE_DIR "3rdparty/eigen3") +endif() +include_directories( ${EIGEN3_INCLUDE_DIR} ) + + + + +if(EXISTS ${GLUT_PATH}) + include_directories(${GLUT_PATH}/include) + set(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} ${GLUT_PATH}/lib) +endif() + +##LOOK FOR OPENGL AND GLUT +#FIND OPENGL LIBRARY. In Linux, there is no need since it is included +if(NOT ANDROID_CREATION) + if(BUILD_GLSAMPLES) + find_package(OpenGL) + find_package(GLUT)#standard package + message(STATUS "GLUT_FOUND=${GLUT_FOUND} OPENGL_gl_LIBRARY=${OPENGL_gl_LIBRARY} GLUT_HEADER=${GLUT_HEADER}") + endif() + + if(NOT GLUT_FOUND) #else, freeglut + find_library(GLUT_glut_LIBRARY NAMES freeglut) + message(STATUS "GLUT_glut_LIBRARY=${GLUT_glut_LIBRARY}") + endif() + + if ( (NOT GLUT_glut_LIBRARY AND NOT GLUT_FOUND) OR NOT OPENGL_gl_LIBRARY) + set(GL_FOUND "NO") + else() + set(GL_FOUND "YES") + set (OPENGL_LIBS ${OPENGL_gl_LIBRARY} ${OPENGL_glu_LIBRARY} ${GLUT_glut_LIBRARY}) + endif() +endif() + + diff --git a/thirdparty/aruco-3.1.12/cmake/installOptions.cmake b/thirdparty/aruco-3.1.12/cmake/installOptions.cmake new file mode 100644 index 0000000..221396d --- /dev/null +++ b/thirdparty/aruco-3.1.12/cmake/installOptions.cmake @@ -0,0 +1,10 @@ +# pkg-config +configure_file(${PROJECT_SOURCE_DIR}/cmake/aruco.pc.in aruco.pc @ONLY) +configure_file(${PROJECT_SOURCE_DIR}/cmake/aruco-uninstalled.pc.in aruco-uninstalled.pc @ONLY) +install(FILES "${PROJECT_BINARY_DIR}/aruco-uninstalled.pc" "${PROJECT_BINARY_DIR}/aruco.pc" DESTINATION lib/pkgconfig) + +CONFIGURE_FILE("${PROJECT_SOURCE_DIR}/cmake/config.cmake.in" "${PROJECT_BINARY_DIR}/${PROJECT_NAME}Config.cmake") +INSTALL(FILES "${PROJECT_BINARY_DIR}/${PROJECT_NAME}Config.cmake" DESTINATION share/${PROJECT_NAME} ) +if(WIN32) + SET(PROJECT_DLLVERSION "${PROJECT_VERSION_MAJOR}${PROJECT_VERSION_MINOR}${PROJECT_VERSION_PATCH}") +ENDIF() diff --git a/thirdparty/aruco-3.1.12/cmake/options.cmake b/thirdparty/aruco-3.1.12/cmake/options.cmake new file mode 100644 index 0000000..b889956 --- /dev/null +++ b/thirdparty/aruco-3.1.12/cmake/options.cmake @@ -0,0 +1,53 @@ +#------------------------------------------------------ +# Build type +#------------------------------------------------------ + +if(NOT CMAKE_BUILD_TYPE ) + set( CMAKE_BUILD_TYPE "Debug" ) +endif() + +#------------------------------------------------------ +# Lib Names and Dirs +#------------------------------------------------------ + +if(WIN32) + # Postfix of DLLs: + # Postfix of DLLs: + set(PROJECT_DLLVERSION "${PROJECT_VERSION_MAJOR}${PROJECT_VERSION_MINOR}${PROJECT_VERSION_PATCH}") + set(RUNTIME_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin CACHE PATH "Directory for dlls and binaries") + set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin CACHE PATH "Directory for binaries") + set(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin CACHE PATH "Directory for dlls") + +else() + # Postfix of so's: + set(PROJECT_DLLVERSION) +# set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_INSTALL_PREFIX}/lib/cmake/ /usr/lib/cmake) +endif() + +option(USE_OWN_EIGEN3 "Set to OFF to use a standard eigen3 version" ON) +option(BUILD_UTILS "Set to OFF to not compile utils " ON) +option(BUILD_SHARED_LIBS "Set to OFF to build static libraries" ON) +option(BUILD_GLSAMPLES "Set to OFF to build static libraries" OFF) +option(USE_TIMERS "Set to OFF to build static libraries" OFF) +option(BUILD_DEBPACKAGE "Set to ON to use cpack" OFF) +option(ARUCO_DEVINSTALL "Set to OFF to disable source installation" ON) + iF(USE_TIMERS) +add_definitions(-DUSE_TIMERS) +ENDIF() +# ---------------------------------------------------------------------------- +# PROJECT CONFIGURATION +# force some variables that could be defined in the command line to be written to cache +# ---------------------------------------------------------------------------- +option(INSTALL_DOC "Set to ON to build/install Documentation" OFF) +if (INSTALL_DOC) + find_package(Doxygen REQUIRED) + message( STATUS "INSTALL_DOC: ${INSTALL_DOC} ") + include("${PROJECT_SOURCE_DIR}/cmake/generateDoc.cmake") + generate_documentation(${PROJECT_SOURCE_DIR}/cmake/dox.in) +endif() + +# ---------------------------------------------------------------------------- +# Uninstall target, for "make uninstall" +# ---------------------------------------------------------------------------- +configure_file("${PROJECT_SOURCE_DIR}/cmake/cmake_uninstall.cmake.in" "${PROJECT_BINARY_DIR}/cmake_uninstall.cmake" IMMEDIATE @ONLY) +add_custom_target(uninstall "${CMAKE_COMMAND}" -P "${PROJECT_BINARY_DIR}/cmake_uninstall.cmake") diff --git a/thirdparty/aruco-3.1.12/cmake/printInfo.cmake b/thirdparty/aruco-3.1.12/cmake/printInfo.cmake new file mode 100644 index 0000000..cb807da --- /dev/null +++ b/thirdparty/aruco-3.1.12/cmake/printInfo.cmake @@ -0,0 +1,47 @@ +# ---------------------------------------------------------------------------- +# display status message for important variables +# ---------------------------------------------------------------------------- +message( STATUS ) +message( STATUS "-------------------------------------------------------------------------------" ) +message( STATUS "General configuration for ${PROJECT_NAME} ${PROJECT_VERSION}") +message( STATUS "-------------------------------------------------------------------------------" ) +message( STATUS ) +message( STATUS "Compiler:" "${CMAKE_COMPILER}" "${CMAKE_CXX_COMPILER}") +message( STATUS "C++ flags (Release): ${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_RELEASE}") +message( STATUS "C++ flags (Debug): ${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_DEBUG}") +message( STATUS "CMAKE_CXX_FLAGS: ${CMAKE_CXX_FLAGS}") +message( STATUS "CMAKE_BINARY_DIR: ${CMAKE_BINARY_DIR}") + +message( STATUS ) +message( STATUS "TARGET_PROCESSOR = ${TARGET_PROCESSOR}" ) +message( STATUS "BUILD_SHARED_LIBS = ${BUILD_SHARED_LIBS}" ) +message( STATUS "CMAKE_INSTALL_PREFIX = ${CMAKE_INSTALL_PREFIX}" ) +message( STATUS "CMAKE_BUILD_TYPE = ${CMAKE_BUILD_TYPE}" ) +message( STATUS ) + +message( STATUS "BUILD_SVM = ${BUILD_SVM}" ) +message( STATUS "BUILD_UTILS = ${BUILD_UTILS}" ) +message( STATUS "BUILD_TESTS = ${BUILD_TESTS}" ) +message( STATUS "BUILD_GLSAMPLES = ${BUILD_GLSAMPLES}" ) +message( STATUS "USE_OWN_EIGEN3=${USE_OWN_EIGEN3}") +message( STATUS "OpenCV_DIR=${OpenCV_DIR}") + +message( STATUS ) +message( STATUS "--------------------------- Documentation -----------------------------" ) +message( STATUS ) +message( STATUS "INSTALL_DOC = ${INSTALL_DOC}" ) +message( STATUS "USE_LATEX = ${USE_LATEX}" ) +message( STATUS "USE_DOT = ${USE_DOT}" ) +message( STATUS "USE_CHM = ${USE_CHM}" ) +message( STATUS ) +message( STATUS "FOUND OPENGL=${GL_FOUND} LIBS=${OPENGL_LIBS}") +message( STATUS "OpenCV_LIB_DIR=${OpenCV_LIB_DIR} OpenCV_INCLUDE_DIRS=${OpenCV_INCLUDE_DIRS}") +message( STATUS "CMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}") +message( STATUS "EIGEN3_INCLUDE_DIR=${EIGEN3_INCLUDE_DIR}") +message( STATUS "USE_TIMERS=${USE_TIMERS}") + + +message( STATUS ) +message( STATUS ) +message( STATUS "Change a value with: cmake -D=" ) +message( STATUS ) diff --git a/thirdparty/aruco-3.1.12/utils_calibration/CMakeLists.txt b/thirdparty/aruco-3.1.12/utils_calibration/CMakeLists.txt new file mode 100644 index 0000000..75b5203 --- /dev/null +++ b/thirdparty/aruco-3.1.12/utils_calibration/CMakeLists.txt @@ -0,0 +1,21 @@ +INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/src) +if(CMAKE_COMPILER_IS_GNUCXX OR MINGW OR ${CMAKE_CXX_COMPILER_ID} STREQUAL Clang) +SET(THREADLIB "pthread") +ENDIF() +add_executable(aruco_calibration aruco_calibration.cpp calibrator.h calibrator.cpp ) +add_executable(aruco_calibration_fromimages aruco_calibration_fromimages.cpp dirreader.h) + +target_link_libraries(aruco_calibration aruco opencv_calib3d opencv_highgui ${THREADLIB}) +target_link_libraries(aruco_calibration_fromimages aruco opencv_calib3d opencv_highgui ${THREADLIB}) + +install(TARGETS aruco_calibration aruco_calibration_fromimages RUNTIME DESTINATION bin) + +IF(WIN32) +install(FILES "${PROJECT_SOURCE_DIR}/utils_calibration/aruco_calibration_grid_board_a4.pdf" DESTINATION bin/) +#install(FILES "${PROJECT_SOURCE_DIR}/utils/myown.dict" DESTINATION bin/) + +elseif(UNIX) + install(FILES "aruco_calibration_grid_board_a4.pdf" DESTINATION share/${PROJECT_NAME}) + #install(FILES "${PROJECT_SOURCE_DIR}/utils/myown.dict" DESTINATION shared/${PROJECT_NAME}) +ENDIF() + diff --git a/thirdparty/aruco-3.1.12/utils_calibration/REAME_CALIBRATION b/thirdparty/aruco-3.1.12/utils_calibration/REAME_CALIBRATION new file mode 100644 index 0000000..0cf508f --- /dev/null +++ b/thirdparty/aruco-3.1.12/utils_calibration/REAME_CALIBRATION @@ -0,0 +1,32 @@ +Version 1.3.1 adds a new calibration method using aruco chessboards. +The functionality is implemented in the application utils/aruco_calibration + +How to: +open the pdf utils/aruco_calibration_board_a4.pdf and print it +use a measurer tape and determine the lenght of the squares (in meters if you want everything resulting in meters). + + + +LIVE CALIBRATION: + +To do live calibration with your camera: plug it, and type +aruco_calibration live aruco_calibration_board_a4.yml camera_result.yml -size + + +It everything is fine you'll see your camera images and when markers are detected, youll see them printed. + +Press 'a' to add the visible pattern to the pool of images used for calibration +Press 'c' to perform calibration +Use 's' to start or stop the video capture + + +CALIBRATION FROM VIDEO +aruco_calibration video.avi aruco_calibration_board_a4.yml camera_result.yml -size + + + + + + + + diff --git a/thirdparty/aruco-3.1.12/utils_calibration/aruco_calibration.cpp b/thirdparty/aruco-3.1.12/utils_calibration/aruco_calibration.cpp new file mode 100644 index 0000000..b945343 --- /dev/null +++ b/thirdparty/aruco-3.1.12/utils_calibration/aruco_calibration.cpp @@ -0,0 +1,181 @@ +/** +Copyright 2017 Rafael Muñoz Salinas. All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are +permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this list of + conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright notice, this list + of conditions and the following disclaimer in the documentation and/or other materials + provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY Rafael Muñoz Salinas ''AS IS'' AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL Rafael Muñoz Salinas OR +CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +The views and conclusions contained in the software and documentation are those of the +authors and should not be interpreted as representing official policies, either expressed +or implied, of Rafael Muñoz Salinas. +*/ + +#include "aruco.h" +#include "calibrator.h" +#include +#include +#include +#include +#include +#include + + +#if CV_MAJOR_VERSION >= 4 +#define CV_FOURCC(a,b,c,d) VideoWriter::fourcc(a,b,c,d) +#define CV_CAP_PROP_FOURCC cv::CAP_PROP_FOURCC +#define CV_CAP_PROP_AUTOFOCUS cv::CAP_PROP_AUTOFOCUS +#endif +using namespace std; +using namespace cv; +using namespace aruco; +#ifndef CV_CAP_PROP_AUTOFOCUS +#define CV_CAP_PROP_AUTOFOCUS -1 +#endif +float TheMarkerSize = -1; +VideoCapture TheVideoCapturer; +Mat TheInputImage, TheInputImageCopy; +CameraParameters TheCameraParameters; +MarkerDetector TheMarkerDetector; +vector > allMarkers; +string TheOutCameraParams; +aruco::CameraParameters camp; // camera parameters estimated +Calibrator calibrator; + +aruco::CameraParameters cameraCalibrate(std::vector > &allMarkers, int imageWidth,int imageHeight,float markerSize,float *currRepjErr=0, aruco::MarkerMap *inmmap=0); + +class CmdLineParser +{ int argc;char** argv;public: + CmdLineParser(int _argc, char** _argv): argc(_argc), argv(_argv){} + bool operator[](string param) {int idx = -1; for (int i = 0; i < argc && idx == -1; i++)if (string(argv[i]) == param) idx = i;return (idx != -1); } + string operator()(string param, string defvalue = "-1"){int idx = -1;for (int i = 0; i < argc && idx == -1; i++)if (string(argv[i]) == param) idx = i;if (idx == -1) return defvalue;else return (argv[idx + 1]);} +}; +/************************************ + * + * + ************************************/ +int main(int argc, char** argv) +{ + try + { + bool isLive=false; + CmdLineParser cml(argc, argv); + if (argc < 3 || cml["-h"]) + { + cerr << "Usage: (in.avi|live[:camera_index(e.g 0 or 1)])) out_camera_calibration.yml [-m markermapConfig.yml (configuration of the " + "board. If use default one (in utils), no need to set this)] [-size :(value in meters " + "of a marker. If you provide a board that contains that information, this is ommited) ] " + "[-save: if enabled, saves the calibration images used] " + << endl; + return -1; + } + // read from camera or from file + string TheInputVideo=string(argv[1]); + if ( TheInputVideo.find( "live")!=std::string::npos) + { + int vIdx = 0; + // check if the :idx is here + char cad[100]; + if (TheInputVideo.find(":") != string::npos) + { + std::replace(TheInputVideo.begin(), TheInputVideo.end(), ':', ' '); + sscanf(TheInputVideo.c_str(), "%s %d", cad, &vIdx); + } + cout << "Opening camera index " << vIdx << endl; + TheVideoCapturer.open(vIdx); + TheVideoCapturer.set(CV_CAP_PROP_AUTOFOCUS, 0); + + isLive=true; + } + else + TheVideoCapturer.open(argv[1]); + // check video is open + if (!TheVideoCapturer.isOpened()) + { + cerr << "Could not open video" << endl; + return -1; + } + TheVideoCapturer.set(CV_CAP_PROP_FOURCC ,CV_FOURCC('M', 'J', 'P', 'G') ); + TheVideoCapturer.set(CV_CAP_PROP_AUTOFOCUS,0); +// TheVideoCapturer.set(CV_CAP_PROP_FRAME_WIDTH,1280); +// TheVideoCapturer.set(CV_CAP_PROP_FRAME_HEIGHT,720); + bool saveImages=cml["-save"]; + // read first image to get the dimensions + TheVideoCapturer >> TheInputImage; + + //configure the calibrator + calibrator.setParams(TheInputImage.size(),stof(cml("-size","1")),cml("-m","")); + + + // set specific parameters for this configuration + TheMarkerDetector.setDictionary( "ARUCO_MIP_36h12"); + TheMarkerDetector.setDetectionMode(aruco::DM_NORMAL); + cv::namedWindow("in", cv::WINDOW_NORMAL); + cv::resizeWindow("in",800,600); + + char key = 0 ; + int waitKeyTime= isLive?10:-10; + // capture until press ESC or until the end of the video + do + { + TheVideoCapturer.retrieve(TheInputImage); // get image + // detect and print + vector detected_markers = TheMarkerDetector.detect(TheInputImage); + // print markers from the board + for (auto m: detected_markers) + m.draw(TheInputImage, Scalar(0, 0, 255), 1); + + // draw help + cv::putText(TheInputImage,"'a' add current image for calibration",cv::Point(10,20),FONT_HERSHEY_SIMPLEX, 0.5f,cv::Scalar(125,255,255),1); + cv::putText(TheInputImage,"'s' start/stop capture",cv::Point(10,40),FONT_HERSHEY_SIMPLEX, 0.5f,cv::Scalar(125,255,255),1); + cv::putText(TheInputImage,calibrator.getInfo(),cv::Point(10,60),FONT_HERSHEY_SIMPLEX, 0.5f,cv::Scalar(125,255,255),1); + cv::imshow("in", TheInputImage); + + key = cv::waitKey(waitKeyTime); // wait for key to be pressed + if (key == 'a'){ + calibrator.addView(detected_markers); + if (saveImages){ + string number=std::to_string(calibrator.getNumberOfViews()-1); + while(number.size()!=5) number="0"+number; + cv::imwrite("calib-"+number+".png",TheInputImage); + } + } + // set waitTime in start/stop mode + if (key == 's') waitKeyTime*=-1; + + } while (key != 27 && TheVideoCapturer.grab()); + + + + + + aruco::CameraParameters camp; + if ( calibrator.getCalibrationResults(camp)){ + camp.saveToFile(argv[2]); + cout<<"results saved to "< + + +#include +#include +#include +#include +#include +#include +#include "aruco.h" +#include "aruco_calibration_grid_board_a4.h" +#include "dirreader.h" +#include + +using namespace std; +using namespace cv; +using namespace aruco; + +Mat TheInputImage, TheInputImageCopy; +CameraParameters TheCameraParameters; +MarkerMap TheMarkerMapConfig; +MarkerDetector TheMarkerDetector; +string TheOutFile; +string TheMarkerMapConfigFile; +float TheMarkerSize = -1; +string TheOutCameraParams; +bool autoOrient=false; +// given the set of markers detected, the function determines the get the 2d-3d correspondes +void getMarker2d_3d(vector& p2d, vector& p3d, const vector& markers_detected, + const MarkerMap& bc) +{ + p2d.clear(); + p3d.clear(); + + // for each detected marker + for (size_t i = 0; i < markers_detected.size(); i++) + { + // find it in the bc + auto fidx = std::string::npos; + for (size_t j = 0; j < bc.size() && fidx == std::string::npos; j++) + if (bc[j].id == markers_detected[i].id) + fidx = j; + if (fidx != std::string::npos) + { + for (int j = 0; j < 4; j++) + { + p2d.push_back(markers_detected[i][j]); + p3d.push_back(bc[fidx][j]); + } + } + } + cout << "points added" << endl; +} +vector> calib_p2d; +vector> calib_p3d; +aruco::CameraParameters camp; // camera parameters estimated + +class CmdLineParser +{ int argc;char** argv;public: + CmdLineParser(int _argc, char** _argv): argc(_argc), argv(_argv){} + bool operator[](string param) {int idx = -1; for (int i = 0; i < argc && idx == -1; i++)if (string(argv[i]) == param) idx = i;return (idx != -1); } + string operator()(string param, string defvalue = "-1"){int idx = -1;for (int i = 0; i < argc && idx == -1; i++)if (string(argv[i]) == param) idx = i;if (idx == -1) return defvalue;else return (argv[idx + 1]);} +}; + + + + + +/************************************ + * + * + * + * + ************************************/ +int main(int argc, char** argv) +{ + try + { + CmdLineParser cml(argc,argv); + if (argc < 3 || cml["-h"]) + { + cerr << "Usage: out_camera_calibration.yml directory_with_images [options] " << endl; + cerr << "options:" << endl; + cerr << "-size maker_size : Size of the markers in meters. " << endl; + cerr << "-m markersetconfig.yml : By default, the one in utils is assumed. Otherwise, set the file here "< images=DirReader::read(argv[2],"",DirReader::Params(true)); + for(auto i:images)cout< detected_markers = TheMarkerDetector.detect(TheInputImage); + vector markers_from_set = TheMarkerMapConfig.getIndices(detected_markers); + TheInputImage.copyTo(TheInputImageCopy); + for (auto idx : markers_from_set) + detected_markers[idx].draw(TheInputImageCopy, Scalar(0, 0, 255), + static_cast( max(float(1.f), 1.5f * float(TheInputImageCopy.cols) / 1000.f))); + + if (TheInputImageCopy.cols > 1280) + cv::resize(TheInputImageCopy, TheInputImage, + cv::Size(1280, static_cast(1280.f * float(TheInputImageCopy.rows) / float(TheInputImageCopy.cols)))); + else + TheInputImageCopy.copyTo(TheInputImage); + + vector p2d; + vector p3d; + + getMarker2d_3d(p2d, p3d, detected_markers, TheMarkerMapConfig); + if (p3d.size() > 0) + { + calib_p2d.push_back(p2d); + calib_p3d.push_back(p3d); + } + + // show input with augmented information and the thresholded image + cv::imshow("in", TheInputImage); + // write to video if required + cv::waitKey(100); // wait for key to be pressed + + } ; + + cout << "Starting calibration" << endl; + vector vr, vt; + camp.CamSize = imageSize; + cout << calib_p2d.size() << endl; + cv::calibrateCamera(calib_p3d, calib_p2d, imageSize, camp.CameraMatrix, camp.Distorsion, vr, vt); + + //compute the average reprojection error + std::pair sum={0,0}; + for(size_t v=0;v repj; + cv::projectPoints(calib_p3d[v],vr[v],vt[v],camp.CameraMatrix, camp.Distorsion, repj); + for(size_t p=0;p vr;"<(0); + cout<<"rv.push_back( (cv::Mat_(3,1) << "< vt;"<(0); + cout<<"vt.push_back( (cv::Mat_(3,1) << "<i6J(8kPQ!}_}v6Ce-vd!2A#h7GC*-FHah)jm2nW3_iF?O%5NRIFIYNv9>Ns4y_=3ygseI zs=lN?Q5cetmAL8PBCMh!gCV**d0&^12X{Hrnuo%jz5cX$6OG10oMsBJ)fospH%BRV@>_m+@{&OtI4oV~q_iJn?FZ```+PIUK{IR8IG zafUY(!v7y*A)|HE?WU*MEqek{Mw@usnLxbgX@6Jv{~V$p>q0@NyKTiES+rvAw0i*HY6`SIuq7PD4+~9Aye^fD+c6*hZ)uXqF2cMRKY#I%YN!E)-9w#&k za!JvAsLfY;BOVhKOHSJp3=p4Pm8A+D-K0Voansf<%iVSvqnC|v>zCt|MzH|{@8a>D zbB0TqtdAKr8#z$|-ok`YbG4D9mh2N&WCdK1LqbKyq{ zFt;#ad}HU5pdjmTY}i&BKXwaNkZ=AU!sw<%?U~OKD?10zc|^N!)?7*LiBufd6-8oo zyLW$r9x3kr>F{NkdTc=GeiA|ynd*8_iScX8w?~T6GVqa)BN|BXn1j1|z;lC80?bfL zBD0W)Nrw1ddp|&i7{)>xMDHDh(PMKsLq?D$xYio=^tBbW=Olrj+|n)~3%S8HaIfk7 z9h(LrzN7);A9BkgOmY;zB0>Xo0tf#Y%NI1OVIyd~J)g)|%tzzrTW{(qk8U7tZof0A zzT?AV2|dz2e>v%X=7msHs%!WlROPU9b9U^x<+QhVQZPY&9S`d(_qH8}#TzW&ztt%A zmO=hC?kVBJnSQ|G<10!&zaj$q6pjmHjqlYVT_AdIzm%$O3&u+JFnD!wP#G*~|L%1m zzI8z?XoE3a1EoRa)2I#h16L;&V^v_Zb~*3~ZU%ijcyvXC84|-8Gdj|q7+?RyD`FX$ zs(#df|Mm6PgiRfrR6v)&1$Y+dGm6*e`wsY~PZHn3=wd8$l5jsE+g4yD z77T@)`J`Mh2x~AM_Mp33nJB^|;UT`ON=+>};TxM-gluRmqrpm1&qD{PoeqDP30t1f(trO_~ zP_fk)yl5a?1tIKTn6l{9ouq&k2mo`$L>^E<@U>kT78f}q+GNiiJ9LZ^kx^K89;;ir z+aH6)9efDhK<0&94~SV13dKpUkQNs)@m?L29t^UnwPnE1WJV(Z_!H(=v>q!s!B z<;WWpa}OMPM|+~cC<||=|J*fiBQvkiITxiwnxiKo4v)81EzTU4t{LkoXQI*dPP;zs zW60g=`ZMc#{pO;@#^>$fHy;Pj9SD4}n6meGT=yD@d2a4FO(WYX z-^PU<*f&|{MM(}Hj~_m-JR>D8JyhGXu~o5AwCPL_wEx9qnNii|#DEw>uN%XkpE#{_ zHdf{yn>Y!+&M73GKHnPf)ORCbLquD(cSt(SUGuQG~!aDz8=FjEY zV*Tw)LZkAU|3tRgq#%?vYmRU0wX6->rE1UU3|O5?u0t!_`9_5aM~J^WxcLJizHs}L zkzJ#>2&#na+WW=+_JOm6JN8>Tos4SQUY4KrcE3iw`p14tV_F|c@K^6x;hh)9Yfh*j zwg|R(sqL=qbyD-X;+#_cYv^u1JMeVXAJhD=Hh+Y^cdoa|===2IDSM5cB#Tpny%w~- z+3&e*?mM+1I@`zp$iwW~#k?Fyjreht8(icSb2mG-v=bM`b?(C^&RSE~BrPMox&-xNgM(;#+&FB#uZZ5_hqTyOJ^4a4h3GT1Hc+~gzNd3zzO!>9&3wfAR&L-4mD6>6b*@|SVaa7D<)6znnNs}<8P@%w554OB zFO;;<-&Fq?(|&%%&+@eL#C-A^YZ#Xt?n`cHQ(vpMjqB4`44Tb_nt_kF3(p}i%r(D(sK ziV%*dvKjzpN^rNGat{P+G#oC2aj{`oo3Nd<A@_Ullxzc zs(kjdX-Xk_z%O}WUJeTnZ4c*;NnGWgC?$?XfZ41jZy6Qqr`yMId=DoUu0O=J(~nXK zoAA1u3`@w9s3PJ)IB(}V;6eTQrdmAP41RasNwrML4SqM&<4l|Ay8fYTT6EM&|H}`)aMVgBHGmRfQw_rnfi$=q zjD~~B4uJ?U5sQmcM#Hf`KzLuz)$iI+P+&KtEGV19=fy<&VyrD!&2AhKDP(ISz-_BO z>Cf6-1N2^~WY4Eq@oWaH4>C??S(5tNcUh5#vJ7Vf9r^1zIDvub1dAify)&(e%7p{gE%Gewdw(?{@AJ8X^_+)=FDvy zlv89c>V*{N;h*itH|h8sF+@$SiCc`MRQIM=q&r7&lP;2w#YAJ}TAA|}W;ftW4)OE~ zwfWL}IZa%y?(SZQsfZ})h1?NNg*Ekhe;W!q#D%QV0S=P48b^k_Xg&l6Gc9y=a|OGh z5M%B+WpqQFn!6yE%!2)+iWpWy=(5PKOEBi3^OuOP2`Qa~O*H${yBYS`oFG)a9WD7d zTFa`MywN~>%Op>#_xe@Cj9wxSUN)>z zmgjf@F<+OU#j>%TT#NF9Hw{+ZGRWEb39D{WsxV7p+hF{T|9ch`ySwjA2_&e5mAHq zl)r@hl82Y$1+cnt9F3_~T|Qcj5t0cj4&pF_raLztaAfyG3(#rnWhcmLvYXqsd;RXw z@yX1Wc472{?CwHUhibAkDr^0&{PVq&#JAcc-5E!p1?Yz+U9tL95z$hi zdyr+rT+iIKw^)6=1op{=bjXz}(Y*oIhvf^38vm?#4^%SXj<1G=DkA)_f(6o9t%?$oWMzOIy!0Pk6@lCH8*EtD_(N1_s|!MgUh% z-U1$uU-hcEnZ4M(A+_XKj3HJ<8JVn_9RWmRhpH90Vy@rKc){MRYNfn|NrphcvmHA$ zX-C_atJRTObznKfTreBG!z8~@(iy#@!Iz@`cs^EQr6|cd6VekG`FGyT!R_EKK-FmN z!fDtrVqCT{+?t-i(SR*H=T2hgD`6-57!=1X(2zq`P)?fOXVG#indMd9E% z{uq_#DhNhl`jyA*2Q28T+_?Bv0G?AtUlX1fA$y>X6r&QDmp?#m{ElV%Cw7|b>dGWn z+3Bj5VJI9u7ZNL2oEC%S%X}PUl>vo!w-6y@$a30&oS?sd-&_=0_3)f(J#f#Im%1|h z5*f_~q)?A$Zv)9Im88dh@N1h&V1yg+v1XSnREV{VKnYp5O&Tva2w<-4k#j`RqpsZ> zuPzg1Wt1zdi`8up2Vk09R%6EsiP0`3!FLs7Mh-_rj9Tc)*^3!ICFD^RvD)6r?hUdV z+?&?!H)TX=W|Hq|UcZ-ZT0&k5eW;VU4(|m#jjWxB70jtCJ4;K>uPY-W>nr*a!9KSa zIh0c2?!1@@a|!i0Nr|AlJ7Z}Dj@g_fbAXr|ER!huAh3^6btO94!^&>YT*nA0@FxM7 z>lZ5k8@W+S5mH1GuDgJg&IwhTtASOHR?1m=$eEAY^sk=U_(;=N70J74);6CAR^ zdNlIKh3&@!L1K^Am1@{7q?R2~Wi!C|8pL@M;`LvESPvIn3I*v`GWaPc`e!U)&3M6E zyH|$gJR)hY!Z>XoP&Ya>Db2;Irf>yH1b0Bc)iIRwc6S!+&VW4*2j5#lUId7b2w8Pz zl9~8Jiqr*wJV2%p9$ig=O6<8o>@?BW^kjI23L>8fo-Vf87cfO@ek@qFNl?e801T23 zDR6y9b>@0`NMGV&*T%hML$4jh>SweH7o~G96~F9DyqUh_c;?mOXeU&xZessgZ~o=t z=;J!q#vUkt-C8AwOXM?wlmLCZp_z|DCK7OeW>ge34GHarL0~D!LV}^ds%0{pp z--o?essPx!Dqx0m^LH%85?I`r(Y&MKQ6e`QV8m2PM2xCc`bun-Q40PLHY{c=g53}^ zNq;HH-YibFA@&ftV+m}j{P%=kHiwZzTOe_f+xW+E8A(Glge9$0*5QS|B>`>l*$zevLY!z<-l?TKc9FKr5(_-Ldi z`mK3vvROLyamL_dN9m2YZ_OE-Co)I_XnfQ6PipJ6gOYv|nLo-BUMObI=NHLGoBip| zxY=9f5_$i9&PVLgv$xR_Xh{n9_xwPwidNO84js!)lB3t=9pB5H-(wegyP$fxwtDEJ zk<^Tv{W9`PuY9D{hRn*wkkKFY=T7=E6-CP_7uDA@1rm#W7ecoF9G6~tbVoBMf14F8 z8Hv`iCcZk%kh76&`S2Lk=W%IJ!K3Us9{cG)(!oDLX0sPbF}}(VQK?D7xjh59rE=;adh(T?F~a>GBtIpDU&+4if*?0^#A@dd~w#m;`4J~N+4?arAM%#*G0!6 z4>(BNa%f4Li)-_1PSWSgHz(vDNc8{qr~!MYdv#>daNWeF>FJ?$eGB*{c`J3jji+Uc z_%C*T&YuT!j@FQDjP8vpXvF&-SvQE3{O~-0IE(wj&=csH+nBUCjgGOKe>=FoT>M<< z%!z7iG!;Y%n%W66p4KsR$XSE>;&Doy)lkHNE>-WH!|JtP11wfu$DhpYxj9iWC^i4+ zTe*A9=4(r=7fQ2%T_vlx)$@m|j#aA)pKw1WPiay6Ua%|Ra6dhU3E)9GB=zv{kAccx zd*2y{ob=aPEg>h*DGe5T^(v=f1;=$x1?575Ei2Uy9X?@J?|nu>pQiZzn7w%{@U@s? z-eoBHzG9y29X_;wH-nnjzrL)<+Io`ap;(psNS0;{x2UD~LTT8hk@cB`uWgFaH)jeN zuWIQ#QTr!sJt}V9aRcve3L{=Hl=v=vp+tW7j4zp@M5@{z$xs; zAEEkhBfk}7OX}Tru+&`m4X_SI+l_m5-)~5q+Cfhi^i!%e@W;4lMY5%^@CH}uaXFJ~ ze2fBOcE5o_(8q7w9>`9o=Jw161h!Oz7*xo7is%W!jtk{vw$vpI=HCvgfex~zs%}5!*XxC*hs43JUd~nKA*nbHeb#s~E<1*^&1pwo zpy01W|FuSI6@-VJzy01{4!)XQd!&@*G&L9Oxw0ar0B_J^d@&E4LOJ;ti5NX(Jg_#1G}jN&$w7ZA$Q&v^9W-;9P7<*QVp}#h;4OrgCEXjB+Di&TrIZzHWg&?3FXZpc86Ta_)Th$f~8-&zgIKhR!<_6;K))?ttDh7&{dt%=Nu`M^g)m^h1Cep4$5rV8lH;FcF2fUEKe=ZiFR=XV(eK-J8Vh*&Jtv&np zoROdP@0Aho$P=O+RdKyinckkcI1=lfgSWPpsZSX*LMbAaK6+uuKj;WsnbfJV*2ytN zLr0g3Oc0QMnoRn!_hNg;5HGdg zIu0zOW_m&QgWwcFQANbEB`gwKn+Ep7<6oCM+qf~JVTN*iq%7% zLQ(bN_@-B801)&g`nkaYsL0!ycbLexH-6wuFN7Z5UPpU~8+a}+ay&R-AH?0Zsb@CYp6yb$=h39DmmvF2~GQPVKu@-+O(tg z+_Ho4*RJ{x4`D0Vj_Y55+~pW0WJT2Lf!-pu054LaeS_l4U@4sFOxZwmrmWpEY*@XR zNiM59uTT7K48N8Vxd63MaYq$KVr{St!mLVb%;=|}-)MT%d&t$!JW(7WC!*DN= z-JQGihhz2pFi74S6Yu_rLRH;f-M>UUW!Nd^&)9>H&Z8y&SF0Td6UvcV7B;#f zACd)WKKQ1$gJz*+9RD5&Y@_#|v5!t2*^)dm4$+H{c-iF(Qy!cpRF=Dcgdq*M5Km6^Og@r>L~= za9V$i|4kO~0@QXKLD zndAGA%=!6Urcqv|%ZK)D+yw53*ImMfVGvnp+BZ>)>NPOGC^NV?HY^ToeV57HXk)k} zs8seYWruSmbVw6pYc0}le=M^ah-IE0@Gtj97v4p7MsdSIR?6}$wv&-GhYz!C^vRx6 z{Ce|_hxI$S5~Hyvav0w@4MgKfVjHgM!am0Tyh)OloQynBYzH(`(7ipjKj<$T>FtSS z(eOb+M*?W;%W~B;_h1X<|?Wp&K!b9O)*}Z)%&y%l+^BG76 zf+F;uZtspbrOI|RG~j(aaN+*^U75{sw1v)67mfl!>=`GTLnBhDleXxLz;;! zPm>$)1TsoM5upFZXu>Dh&ip8rb1Q;s=5eNsR<(;_8$U zsy*=#&`emKAkil+N^?~aN-iXqOb*d~%BYg%X=T1TC+CZ)*n$GGP$r~+J=mQBNg>Jq zuplWHlJx{p|Kf#uj3_VMNPyv{*3T#+iU*bH*d^=8MzKCYAg)iB?KpNa;EF+nCa+Uq;ihXH_ zXj6CJQY?szX^uAOgDS$a|AR}pri=0M8-O(HJ8~uN7*t|%WphE32yY#y_K%go5(D&7 z>;wU}G!wA6IJ)$ft~o_t+!@z0bEz^t2G^ttTBUk9k1>n%EL8w7R&nVgz!1u{SIoOn z?`dQ7+dixPA5wtETB@)EjOCni@n62GVWTSv{;8QQQqI)Y6_&uXhM>=Jd|`(Qc51We zWiSg+_c|V`1ClBxihFAh!{fwmM!Vu$??8qLJiZ7(4YXFuTqVfu7x27tL0HSoUSw(j zzR3~@U8xYZkGF#Kdw8ny=|UpxI52EDp4l72i5)&rSmr6e6!8Ph!f5kfvHcmgDNP83 zG|Py1J$&Qd>$b60|EWhC_s%G;m|Y?or>due=o~XTNz;tncp(eNhuMPdRC1*V-`2s_ zb_M`4e&G4G@ode<0Ht6@QaZV^#Yl!sJ1@)N&;Y=^@`Ib=%BNjxDf;`?Gqdf&utr@E zrB-62Q`IwZ<*$4(^tTJV1h=n%^VarCXr60RQNsF@2>&M@aB4uS3(2O*PUOx0GfX$u zDKw!DWc3ATf~~YW6MQcMcm!C?EZN-CXe}T>mxG6wzT%Fp?Y#Z~q$(yEw*F|NBL#Z8 zAXk7P>H!#<1cA+B*srkb$<8y(v*sfyOL7Hz#H6{(=GcY36dpRX5(^%AIfro+ zXK&*?dItp7R5v%8CF_o>hDES!9<721Vrb^dUIwAWl0}zkUNe7VN)bYmpKo(4JbOQ| z7c#b234Satf;~8s&Z~L{sa-dN3#%e3+~9_K08V^TL45DxCh3xtOmJw=DE)a8@=FMy zS1nH*n$hfIAlX0sK8K-MOoYA2I`V`mi-xaTT_H-K1+EK{)VXrb7Q_=EscREAn{9BX z^7x?=zy%^QOUSFCOM12qqdB(tCfA`)JM5Wjs#h-i={Ey7Pl-_CA)4QO9(BHJ18u45 zpvDPH@q=sAfQ4h^pqN!ueqmu@)f2bV8I}<>q1CkC!IwHlPBFQ4GL)zdAr-{0Hb?Gn zT6@IEJ@jcO#+~m10&r(cWq&;ZiYy-JSzViE)aCX6zVd5;aY3r`N}nN#wqcqS z=y9o(XpC!WTaIf^+|yK1xw>2(Iq$laq8}DKN1N%}A^ncQx^n+VL91b4N&r5L%&~my zu25Hv^mn{njSLhqqdZm@#D_t!7kPf4WNK$E`Wg=(5Pvj8nL8;+(+u88+f$RdF*Z6a zVY~2YU`>9$WS=p-?sd)j%zFQkw672UEXp(mJ}}2M-Jg5>XKa-e1bwbuU9x+1Nma)f zzA0)w=g)Hm`@pZOfA;tkccuX1er|p3@T=#&hf6o&P8?2x4mIANvnUrIKCl-VvJF)N zcI%eorHpmt&kI=Sgj zWbWwQ+)2OoKi|R_b&qR8RnG+`?d`0*KkJy&aar|)N-5j?I~XM9~*_A_Tv_Fwqe9H1hCiVo{{j@x%nBJ#LNx}_l2)Q?z zFF3hLg}ThWs#aQ{$SIvA4zyq+b0Jo%6gEs7T+otprB7AkpKYeUm?2d1=SWWuncu}+ zpe3hDPaZGs|B!78@3wWXmUd-A2`52ca|>_kY-`|G&{$|kJEMHZmdBtDw?7 zF8_aZByqr@{U5Der{`kz79FRo=QD8PB3GIS$M!Iec2aTioHhq;k{@WI{d1I-kxiH> z&7OfuU1!-u0=>%(PTYpm9lV$?phk`0UN!TP{5ULEF!7hj=EbwW937E!{w+4#_Fb-5 za!0osrFs3GE&5z#qnuccki?~uMh^Z_XSB7xSoXYrhidnS> z=~pP+)=tIUM*=Lg;7EJSHSPvN2uhO0(41&?0m3zPm27C8tL8=>1Qq)12MjmG|pAn;o0F_vok0vw&0b_d``B&JH z3-cMt`KQtK=gy+FEUIBX7dsU0O%6i)bV=6x8QfFj>@?s=!~;*SozCLMl7G?uplN{0}R zSESd&>z+qH$2MJHLQ;?wC~WV`=JI;?R<8XLt&sRRTarEOFzSi1(`}I}K&_Y^V{5ad zC;uHMCaC+gw0mJ3Cy4t_8Q-?(Ej_k*knd1Z9o;0VtnT*@!@%z)EupHPa803Ub!9)Z zcd%fF;?!!+x#dHC8ar^NM2u28^r~~?^JE04%;+JfY@cDQ;%M;%U&WJVziA-)09yG= z^h9OW5B#1@9(+5DlOc{haQ_(PE=q%na@r-_NXl&kuaS!MyNyNDGtOt`9EvN`oqxqv zk$X_@i{w_Q9od*;EAp)M@mAG5+*a9#O2t`=PImwD#7jCPHM4AuUR&b8qut>G*MlCh zY)0~12=`ewil96Jiqe7-1a7_zKn%EYUU@Xj^9{XSQGzX{zI!;9*&-LiK$h~*G2;NS)=L?3aH?p!}OP(%O_2DOEnO~gC2fKwMFb|&$&*hvuQsudzj z+Xi?jMdPxSz7jt5K2J*m-w#o;>1s^{{shjRIlCqC12`;{sFvryVp-jln}8s z&E0JRE=)B>=6Y|zm{H~0+7Gvf7 zH(SV5uY4KcnxOiy+#Sc(>;x&z*n`q`%FO^Wdttn_Nl&~mKL9NIu&fGL+G*fGXqmZ- za1D6tSm-iF55shMT3+M+Bo`CMSnF23PmSv*lENO183nt<83WodTQkF(csf z$@vwlt!hP}=<`&E&$MR8fC|h1BN282E@u_C!6ch(#WfY*2J&Ic3=p;UwkI0H%Q^X3 zc1(tzs&2k-LXVOaMdj_e+~PvFgz#f-n{z*e04KiL4eGIvdFJQh{YYMDv! z5p4p+bf8fcBkPahb?sJ*{%ZOj5n|NEQ)B?*#Q-_m1=wpicQ>GAgZaA|Cj8;t6Fj?b z5HWrrpxh5Www4<+As;6^G~6-+#`GR7e!#~U6Ar$-W?>UXZ<#TPiU3n+b}gPQ)gqV4 zqkxqd1UmKq>f}YEF4Ncam?PWV;Q7RGpd_6?&GP{it8WLT#(hB?&7{Np6i#uRV=84&P7j&A`5;rd@j*dzjWqt1&6 z*OM!qC_{TycW;AJA=2=5eLoYk%5)$kN$u$7r9kgA)BX?WtW)|oL4w#42N>xBbVzM# z3=&R68F~B9*s-)a!ZG7BcQJrG`eH8eT)buEUk9rB#YIH++%b4=C>5`N zm{^yhz-JXK zn?9vlvnh_OCK=~s zG3?`kivb_BeSfy_5SBZbc-6 z**?<-rnP_1nH`DE-hm(uWr|U^cF@#+`ZN;T5ad?iUjY*-g>5?C!PVQ72^(zgp@wsP z$N%Q|pKz=${B+j(c>4`_>dr21K5H=}<0M+^0&%!zU7!l2Y+dl%o|k@b@jpH1`qCi) zCV^1lQkib`5~}lR&H`F)##46MdS9Zr3L+h(lt797ERbaOQw7=+(}7vxSJrXS^~_hm z=Fpxv3jFnHU|Rvd`HNEkG24WTM1_bmX3KCTunuk;%y!{_r~bc~H`CVt zzW*xDx!UuiI{^Ii#c=H7*xJX?K!SabwFUhFW<{_8-Nm?>@swHvCL@NYIckh7NNL+-y zJpGp7Ic7Q9NWAwnaO%}p{$CHuN6*h5Z)a;abg%D0p(T5Wr1-TI5?AudZKc58W0HyD zz;?2I0ovRUKcJ74{7R+NEF~|g{r+-roYeR|WS8!M{I0Va0j*kh0+z~e)=XDSw%FdW zU754lxbnzr^vTv1oq;V2D_(y#k_RMrd|eV>Dc>4R5Z-*#|k?$oBzsM`wetB-li0eOf zmNb)WA%4`3F`Y>c_UiQMPEcOk`$GBW-h15g+CQ5M?3y0@QU8{>J# zEep?E*Vng-a}IYhryU7)hEvSd_qzBjV=LW4TO z-@jM4kUE{d>v-+w)wyO$lzD`VK~!M)B=2y~@4e#G;>wR7V-vH-UQJDjj{3-`-feWo zWV+AWueKG4yK%pMPHZ7{9TK=suQ>OxV#!HlWz8<-a_k9er-c*n*D>V0H>QT?UKz;7 z2@Y1}*>kT3}=vR)C({6P+ld*$eI7Mu8)HYIIVw~S1_kY|2W}er(&Pattnc6 z8k-F2stlk>D|xz;y(+gct`1b?Y4w-d;aUYfdh-(9R`>CXwk0NH_s_?+<=XDfB$u!& zzpBja`5x0$$qvKP0Ia#Rkkl!q+`lI<>JJ!bwSb>YHR zP|bj>0v3n2pJBpI;stx74Rx?G;Alh$3+kE zaX`c+*xG!m)H7c}wrTZ$>MzRXG}b$aNbpQGMAnCL zWJN%Um-2<}nASzN$3;c77W-lnoM@bbnb|y#ax{>Hjp1u;tNTAqrE%K6$pv%x(twMp zHKuRO2&B`rH-dhin1m%JNR*PD?TLF8!EqWDv1gtbKu#~m3DV>WQQ+)Ky7-oGxEm@svyEru7Dy^7N;`nXo*=^wCI9e+i74n4&falb+-U*p4KGBV&d-% z2+wzNnW|lnu)vWmIjRea^M}UP5{`t^aOKSSfhiUz{UjO~L}3}AncBGAYe6g<4Uzn8 zJ3(w1U&jVkm)B>IaJ!0VnVp_-DC6p~V_yi9Bpum&Y zIgUC;=JacYYD572!VE0CbKb6*D%+$1S94KilAt% zc4=BLcsR~%s?}8-n2>TlK~GsQIHmcJU*Sv8w45?&*GVMdBo@w5LG)q6bi_pt#ARPQ zhJ{BQd9(BP4lp(XhT7hn++`(NOwystO z6{i)|{MZ;CqyTg{UXGX`p4c)$JZKc}6avEU8t=T4(7ZI;@$(xos@Lt2Sd~_myEB1M znSPWlmEOX&20(DCu+QBY$USf6_#J^WIZy(eZV^Yj!4*YI$Oz_~+TnV7I}BL&pYdVA zm#Q4OcI@ihAtsp&jG>0cqy44cof|)%aSmP}^6ij_+Q8%($Cby7&`-TNkBF^O@WV&} zTZk3S)w9R4_noDc=8jlkod)KJ8Zi-^I5nu7?H&2s5IDM4+H1&e*$N|f~4@=t)sz!h3 zA3(|m;)%_J5IF-ZM;}vOr2tuP3dSPsxj3(23kpiymDq#N2=~m-UDtUNKkj8H##0BO}6B(@?3cxjGaj^R( zbfV3C^`qpD(oJbN!CMD!$I-<^LPeW0{3eK1A6`}pq^R%MG6?+=(6kAg_;w5}nE{j! zp$Qcu^$DVa065lW$cL0v-_3+|f~@*B(-{7DfRmtS{NNnH=4`Ix@hrfJm22^USm$zz zGg9X&3*xd}jo~MKz62N;MKwQ}5ED7P01U%?&i_$M*2C?1-OE6{6Pl=6-R}mLDLAkv z#FG<1)u+PB{xdkYp^ZbU_J1hbO0$Q+b0VjH9q_?`60mN8$~y}X7jk$hofr98R)>E~jIRY+*^Vxq{5T|MZ}uEX z)*>Dh;sU;i0TY9RyIjSGdK?B8Z7UFd$*7?aVDi|xvJ%TwI(9>}Ni;Xk5CoJl7|7^} zWsK;WAbySCyYk*E84wu*3hD}k1~CwASPCzZv7t>{*c6PoRI zs~bmf@{)e(GS&V>14~`A+@1uV?;3^m2D?sul^;5pI>B*N{qIE9iVYPN@-Jo(Rv;GI z4F}3~1w|H_oKJ1O**K05p74TG^!*N<+Le^madqdJa8Hc4FD6CE%qv?o6Wu*1R~}<@ z{VyoeM=i>`c!I+d$F}WEIY#X?w# zTRWW-&18JL=Jc|Uui_GKzj-w;7Xi`~7H$o!${!H4Zx@KMLfk><9>Sihr;4a6I(v|j z%q9F!zIg1#vyxehF!uOk$YgHW0T1{OVX3lHBzu6G&@{1>6J-kW*nQQ* zaoOMqx|D%yRPiyKK{YwX7AfEX537UlVGlUrz&FQ&Wla!&`?b#5 zGqh9Ytv?|8w>akT_R<49Ef8-XkJ17pFq4xHd=n?Bv>$Tg2`H^5Lg7w|K5r;KfSvI! z#zr+RJMWb~SZ`s;`DiLli~)>9TkZp04IKAzP&^5ChKnXsMjvjSlDIlQ)_Mk1km?f> zFkRdfUHARgf6q_=SIa)2mpdxe-T?-$C=glzDli|Qvr(ogZ;pb+lICOY>aPOQ3WhR13&L%takR$E8NJ1P;j6m ze_LcoZJo69x&G`Mp3h2Nyc!l=yrx|H@Jh{*w4bRnz16a^f;!zltl-e<#AJiL>1$DaTGQXKwYupRudj@q-<+QGjz!06Re^cT8t= zDOxl~xUq1zjL7o+-R{fFF5k8u>-=N-Gd?7pK5Aeiqh&R^#Iyr$DdPd9p*N?NUu{_4 z#lF7399;J7h-Y!(!!7@T-2voU2=n9DZlmZt@ua<@;fjdCsU#hhjfL=yce9U&#Y8@> z#I6m|w@$u_ZhoYOcxcwR>BgBoKM$N$`3HGb-zQ3c(gPkfcQZm<ywuD?~5lVe1cJ0l_4T`(5SMz4e=lds>;zKJRae8XeXS7&LNMzO16t z^=&I@Y2%OEuE5EF&qiN9oWbe7{xg4NW1)6A<@W4h(j-1=uS{eClJL6~{pDii?b>x? z?|)vXcLm&Wcg5+R*E&)=c}G8EtY)iS@nta?Y}hqc>mN`87W9bw9kspI>(5Ly;$0)D z{K5;_Fcvwu2)Mh2=N1Rb8UmhhelA}mea#~|)n}2GiGRYn2n{~pia(?CeLXuCV}Ji3 z1w>Ap*={A6f#Z3#R^R*DRT0lp)P=-FPOeUdT+uxncoO*8bV-LsJ{fEI^pbid;#0QW zls1a3r0lt3>I~|rp|e{?v&7SD0}e`q^|Cm9W6*gs>#I{$=49wCtq1B=o5!P`-)!8~ zG|;{)=9!w!Pp?ZWnDHxTv=$1DMv8C16IcF;Ol|DatUhgGWG;CFK6GVqaWKooCTFd$ zY}wAQ_e1~Fi6d%V0gJ%_B`}Z!wDG#H1C}`Q##Q#Y=dF4ZN=I!~48-z0fvv>IJT-f# z3sao5RJ5O=7ugWg=wE*hSF>0?cxmjKK~esu10AX}7MWcin9^A>CFHCluwB47xZ8+6 z$s$oHL?1H!?2$7hTxnnft{gJE781@Tl#=Yx5)`8y<_(?a{DtCYW}`+ zdO4ZExztcP8Sb0r@YE;pz|Jg9nkHq#rsi>FQ7dQHKYTZXCMHeb-9Sq}i5$9$d~WnU zFP}T$LBGxgCxOc|E)jp*AXem6AG_TA)t8ATo$K6r#&df60Cupb@R7i+Wqc+8uoKNn zOZlvwS9khwGTRfkw{-5(5z+PJTVSF|trk7rck*|hBi=9h1T>YzmBmG`596|D(S+s2 zpV!XLWv}J){}g1FG!n%yIVq6JMoZRPaghe%SPAi-;&NYq;wf!(u5G%&&)@Oh;B<-y zsKplz956iC%-@mfx2DO2(Rc_!G6bjlsRS1A*Q}!qjwx^L=!G_2o@uVQee3G zL^=RF2U%or+)iM3`#*TV-%40O3q%3{^&a~VE-VJTgFMX-0ICLYAC^fL4&t<7LOHvc z0FQ@%VZuHQ0vrapFroR5jaP=i3lDhjiPQ_kZ5=1Ef)Za5)9m+~Q$4f3QReTbfkX15 z>TjtvA8fy38>^1IylINWZbfpXTM0yUh8l?kRgl% zK29cdEs=KQEZ-MCz)f8uHttE;1h5{{EY4?NRRcz<1Po%baV-9Ys;h*`Pq4O)3#>QpQ@jqeiw-Az6wDQ^eS^H-@riDO)IO_DaLZzGau4 zvX$Kskv)`siA2cm`Chu0bD#fxp6C3Z*Z=l9_u@=5*Id_c|9(F2kMWy*F+E9`c?mAl zV+j~ivZW4nr3viSZ%V2JgS?6_&6!(qQSf!q;>VO->>=5NKDmo>>>&+;H-upok8k|& zy~T!y`fHh4yP4N z(;8~c-5+YL1v6?b{*Vd6WjMXS#aDG6IRXzzgNhL6{ThOf44Bc<* z{%G2Z0m9K4^S-77wMC&QIL`x*La19K`} znBA})y&CEnJ3|qH_z0_BBLzziIMjb6rNqGi!c~xj9^6P}d=oE8SS6j(UQGs*;Le4Y z+Al27!|plgDmCFOszIS^;#%60DjKo`9bAz}qn)C5$#(PMb3R&Dx$IJHJA$$CnnQ&B zNp9qCiRl48XG>=XJS^{^t;>bkL#*-?2_$X9QhxRjIaoa>zDYU_GUR%}$zUjj2h;RG zb6B(eW~j#YkT$qM`a8*veq8Ior}y#s(RM;T{`cJ<@VGuX$yGR_@w$NbYK4&Nb@>=y zLB{rDY>m?#dz^dnPPRXEA)|?cu+gtHe9vm@nmex=q8o|E(Gaa!en97AJ5SL`p{80E zV8(8!SCf-V>%-WT40>1m?2{A$c0JO%7S*7ZN%JYi&+X?@G2t0-2QN~HrLsGR$#~7J z_X=9ipxGYE6%jnqocaf{E@q@rk)#7b$4@)l>iLvaN*sNmf~R(6puI6$fglt0`C4XJ z>wP%nU&Lg!wjmV-L!+_)XQz+Izg|L94#HmeT&`Yi$Not`$PnWWl{J98f^Qf!+4h>o zBc#5U@3s$-6ocfc#kqbi0q=&D0VD>o7~Igy0SBb0fd(0@Y&>zG?8hAPOSfq-%AHCfC!K_%d792q`b_dYB`Xkm zLQOp#@mtWrFV3ae+}k(qoPdE-l0Gum)OBi8w@}Kc&%0umOhlE}R4Fc0P@OPYq1LUu2#ZeqhzRgSXX_O)K`}{vs&@S2FqTMURnIQFd!Po z6gE$K!V_TM8rr(Kwht|R8tlM_vSD68O1j8|(T&*&kCEy`vyfy1-?#f^bTQ&{7U$n5 zlxn}YtN9YgWUrkS2BlE5wce!uwq6ige&W3b+R7Ml)&b%v*n52Zs9Bcwh=}X4ypwq7 zKyH8A7`u80<*Ae~>wE3Inf*|c4t>d#4O`4^3@zFm%Ej8yo6S)>Iz~ZN2HG1| z2ek~v!Lm70w;IuGCy2%u!$T#wKxbg$YoB%lyuwK!v<~Sw_1T*_4QgmtK^FFr_gZS5 z=Xpar1f-Qxy#k1g7EfKiwKs4OvBFT8N(Uu$5Ze^ME~JMS#G2bw462p!K`M!w_obQ^ z+TQ$zjhbJtjoX8eVRoIbgVzG-(QkFMck2>vPp$(TB%;5y3{glPU)L!2T_SHp8 z1OEa=d{-KpZnFy;LN@p{gsLUMx&sW0YDAtVAR-Y=m@-KP^G$8&)1R@1L%nJjD1sXR z1hMUH0%6_u2bzJorEdFDS5?-2Ag2o0%niqq=w8G?!G5LatU6eyit?+FX8*HDe@*pH z(OHdn?cR5-&B%hl6#0EA#StRK=e#m=awzYEm5qV#Nx}?@FHFVvG#J6uT?8I6q zM@-%<3m9>+pYV#Z)dQs+(|E^~mo1k>ipo;O?)BeU=3furjG0c3n5#XzG5V{{mF{~M-W#4HmIQk@F=g$_ce*WD*09tQ+D>m09*b;ht_+SJnCeY*Sk*K zZ<&oB(Jc(ii4W6=xV~CA>(Yr!pwt`@8=m?-m-j(FP}4*im+U}`|NYi z%Q~Y5nwHikO{-U!PKV0UTj3767sdr?KHGE9eYXFh)Y6eajN#-F*`VKzbw{f5WFGP=yC5k;A)() z=2aEf%^w#G=GX(K=H`KM(%FkjHelv*dc0n~#yyfZS1QT*nJxc|nfVJ-5VJPI5xL78 zb)8)8%q_?D(TcpEH4Os;zpWRQ2=_!ydw+61c%OTas`cl43WMP@N9+PfJe;tVUqSPoUhSw5ecM{c`$8~Hf9N0`iwh@DZR?zy!N)=vEXN;D z$7#I4V~F*Fj^|tPhstL+^@r9h2@f{vmdc;^?S1Ba*@6GD)!x=?2Eye+(_AH!nYX-| zKVNNQk-HqoaW&?+Tde5R_|ItRvT3Kg<%?-Llv_iMH!JSYMMf3*=X|?-K|#5x-(W2C z+4Z5*6(7o>I+#g52}iccXbtFhEzX|mM4s+p$#{IFPLs1Ct8#G4vewNv6H@2`&_FPW zz8X>mQVmFF7XF-fU=%PaWlI-O4ObBS>F zAxPG~U2&5|dzd#a7we*j(=A?@Dx+$aMRBsbqzJ46>U``+aNac!$zK@1~&lF64H6b9Om`)8{HSW?N`1A$}U_>_! zEWt4Xf|m1q3B^;RCI;TAY)*NdJ@(D77eq8z}LkLx#}L z1i??mDA54M25H7Fo^H%OchC-g?sB?y>v;qDad^hGI+WT#38Qju(I~02aSzwDTyKjY zD!eD8<2+rIMvlDlh7ltU{L9R-rFy%?Lx}49oIqU6|Je^>>*1!CSaoCVAm81@xm|2% zd_)!|za3mN!42E{cCbpoNqE6SvH{#TQ?=bWXpQCaH4T{8P-yAnPWZ;|@;$_-s-Oam z#ViFAeSLNj4F!#G-f)PXLN|9M4)Z)-5(-)FX#`^a5~D3^FF(pfO-DY z=%hVjBg)q@jUj_bdido4jtK}DR5>yh5}ON}AARQacRLAbb-+3g3K=&HbyOF)lPZ^G zl(@c9^=W7smdXJijCPp42&zS7+TmxdG0$m->1Ev1C8&^xtdOFk$v#j0BBA%_Mrxd% zcl1Py|6pGXspCbXfo~B?v|^OOH0fXXClY~Ng;)q} zcu$e@-P2k^FSQr}#E&%1l76}{pioF_u?K-yg)|d#ml{I_4Lg+7FWm#^+ZhzNya~Co zz&Kdr13VWjj&JF5nFYg`6fbl}R~4q|z>1d58g+BqvzcFB{emSdF7=1=8oH_+tDa-rKOX1b{Xcu}w zlsP9FPdg07+v8E3z{OJF2>=uM1CA9JZZI9voXIC7#@sEjZ0vr0HA`SXT-*CO`F2UA zLu><#8K6J|PYuG57dIm-yb^6^t(_)-c=)@jWvfJ*CqPjYV00vkIn#j^{9}* z??YMTwF|(S!!do1yYFg$ZyTU+?Pp-ebJ(s9W1`zyS2i5gYhZgWts5jC6ECU%{^g~` z5H)3Spz$R%&yt5Q@vIDB)PA#39I&eqqm_K5mXO%F5af)lXRKYUCG5eUtHHa|4sW-o zTh8lp%4;80K7fCt7qe}(1gg?0b_T>oxDEbVxQgsb5}-6p2WxF9!qwkf7Fb1JqY+e7muf+n1B=?${)B?=;6Cndn+Lrn855XiE!nrDIXn~@e4_v(ijFJD3g zW9`}@uw^>wc&kAPOr6Po6dmw!2m`tZts`NET55by?^Grn3t7DTHuQ!vRaR1Eu_teW zvo&gC5`V%FIeviO!*;d?jBnW~NbmO3EWZX^A~r-b1lG>Z0tqgVp&o+$h$;%)pm!$l zhkCYc$nXcUmc|{~3h6*-V&%ijnGDCPpzK7!ZWQdWUy!LKbo&b+Qww;6fnB0nB7Y}` zFaq#GsVu!;4LXE(_~6jfZdLi8@_hvGtS?+#kljg@~b=6te&eIjKoP5LX3ILw;nuFz1Icyc_MY(9#NXz2j z3Q6N`jZtg{jAP8KSBlNG1#7i^lmf8#B&&Z%7=i=!JJiuaT4(mJP`$q~1M?JUp5nBb`|a#OL*gNj+j>Qhli?~wc%nU3e3ldy=K~WzARbD6D zT8JKUD+LOdl40HlRcvmZk$Z1Ur~5!iN8yB0Qh{VLVCouxbg;@$AQ@Qg_>Eh9TKaoN ziMWzIa>6EHWzVnj(PuAmx^{XaJ(77MH7sXisg&F7LV(M#Qt&yKQ(J^s-c{RNtBjS2 z9do5)+&ZjID8N7*wKw_md>i!5(Lb+>7{d8Bj3iL^xR*lrjS){@EK=tsME)pzkJq#! zUXpvecj~evNRG3sD{s)T%7ESI;`T+-@2#R2W1H&*DHlxr5zaR7U-=eQkoA%|~O zRXWHQfMd9EdtP=1AzQ4a8E_LbFm?d9i27Ur&W{C{6%&LD>1@XBOD=M8jgw#y1NUE; z#XLzf46xBkp&UK$(4b>J0i?jUND=(;W<5N%?w2#oQkypxS^@LUOnynxk^>!OiasiDG(C2Kl#x6{4#6R?DYXVS^%{ zD!wWi|Fw=^SXz(ivi?|XU|f_x$FlA_{$8hh+RuNSPb|ch3fJWpztKEPHU7eO?R9Sq%)Qd%pVvzCa&|iOkWZa?SkwDd@4JKZ(3VEy6hY^F&eHhX*Q@U) zT*lQZcJ|=)=iU7D_=khnQ?tK26R5ubd{0@ioEg^7=U?L2C2+6Hjc-z8C)i!sfDiw{ zIoGu#VT9-VELcsgT;12>Z{7{O=H6+&Iaw#M+C6-n9d3@p#Y=B~X#UgP;aKaYu2A&g z#cvdDZ9WY*oaS(I%9xa1;pbTMXxx&myH=%46kH9LT(8Fm|8<9gg{3woI5r20Zf6s8 zT)H@16NfZ8j_&^oOs~?7;sg;s={rUFt|>tAYTesOxBd+if)d%Yzl|grEKR4*p9^-9CI3k+A*oF4`KD^Yq%v$)&tlZnf{C-uhC` z^nI;9HFh)7>Y!rF3AW_(kt;99-S8z2o5CA4ADQ>rP4>8j+aFzbuK#g0SGMj)j2rLb$PTGTIjK>fDTN+^KJEzJdqK)K zkKf%|)BJEtQ|DN)M%7(L*sG6|Cc*`-MfZ}k%`0^R5=Mxzk^p2KE7FBE9wFt00GI&8 zXT?_iO({2|D33`4r=1F6laC^0M9WJ#&~K?I=%|0^`nLn%AMpE35%?V>8gTLaf~o_$ z9YPnTfP6dk1HiEhyQE>zm*9exAq7P~B>*yZ7@zP1X{Yh5(oD-H0<?t70H8MfDM)-s34^Q!qF#;iNHP2Sl4@izRgjo1ArXcGh z8>zdI%!C`j+w8Cd%jLJ@X<-MS>pL;)Y)3e7f`#=0VA}x${qw*m3FraGfH6;3w+GNG z7np!DqfAX+BNo{m+#dc&+OInWJcV}mHrincz{i5$E}kZ#HWXSDfajs+ z(!K-Sfdvn->TsFAA`Fm&=L_Zq%8k=^e7ta$a-q z%1^ta@CTo(kJ^l1aobmY&m>zUPx$Rf4uxWzlMX9QnCaZ@H106(#^md~J{718J|E`< zqH3~6d>N5ZoO2iXNjlxRtGL?ROxL{E&($S&b_ElJLz3{^O0S|Mc7*tx+>XY0HcAQz zt897ux{oPFN6f{^LR93h%-r)LY)A2wwrVSFd6&I-1&!A143S{YV{G zo2phP>Uz3aeKU{h?bh>dT~Mx^_AtR0c*@n$pY)Mhe<3|MphP7itcf@Pu7hrG+ZV8rcNfNciwuP zQ_9v%e3!at#LU(s>ecd6JvNXv z+oVux-N?vXyRo$$UNqOy&-tP6Z8<`uU*ethLiR|J2u$5Wc zO*whokzRwhY4U20(5WpMT@wO-Yl9Q>dQl|phq?O;?~FwQg*dD-dA)4!h+8l4TTFlP zc-144b0nO5zBu46rHHMOw?Om_zd`m}7T7E8bw+7G)fc*MCkAO5+-=1H3?@OfTm0s_ z1<(4>yN46Z#LN_Jckdy2sSjaJ0H%k+-+E-a(>I|`xH(!cprE#OG$g{LQ{$M>nM*7# z*dr$xYF5qt-pw!Fx7J_|5RNaanHFlEKacZn*duv0a)60Hy6+~+nB&wD8!)HcFiJx& zbqXK6gFiEGdB^m-mWiRY$W46?{^$W6_S#EgCJe80-h`muhF-UvnLc*6?$CB03cE@O z2=z{QubPk)7&s>oeR_B%Pn$(sBPuXMSCJ(mxl1XF-T$)Gy%?I?Y) zcS2@Ct3bqI7#xJOS6*P4V)}agB>L!rzC{L{u4}OzerY72-X&bvVxBeYIlIn~%Hv`< zlW~g9hegbNf=PB$;4LnoqqA{2BhSIy1wTGLwi zdsOmTKw;OxjXS%Z%ee*BrOOp{1!q}$r#Fd^gCrv!aIslf?UyFb5gKfAOACCzi}S=@ zT(xy{Tk zr1CQR2Fmb`bm>Dy7HxrRD7w+s7%iRJxq_i{O3@M$dcAa3%*{gr;j$j8V%ZK_l%r_Q zH#hcJqx@OInRP#F?F$Pzn_*&Y!BRxS1JOAUQSu=s%`Z9u&G1jDnD@=G-*;eaY<5f^lbG!14aSw&Zdm+4uwRnLY zf5y8J3+m^xZnf4Z53j+o9Iu-9sts(Dx7Dr94qSQ8p{q3BV8FyH+1P09AA%P<&>WR6&a=|~{?5o(PuV!K<=ZA^| zygq7MzYAcvarSd%>igja6Tc8KxqWQh2769udndPr<~%UB7{;D8yx-Xsv~MSV!pW#i zM-vmW%Zn+FMb@s0I+-;MIF}VIJ*+RjayKa!ycJ*qmFzwICxmDx* zW>5Pw4^jkC3HUnUA|+Pc&!Ud&^^dGkaxITB*7wGrQ<3)8M17Vf<~*2Q?i}+?7)%sp zPvY2DG#q-e@ssuq@{n))T~Qq${QG^UX4fV3MDO2n9$wDL%p9%@O}IUn=NoL4&v@<} zQ;fXIgi_R{k2}O-^M5!eV$_3JC3Esz*O!~e=I{xpRt%h-e~hT)7n}3Sc}-T8Ii&hx zS>+0cf@{-10ae6GD90+NV*&3GdSjugB<#*_yu7>ba1Ud+=M-&Ck9H^?cD1qB=}b7i^g=AACHhF-k5; z;*ILPVB4`&+d9pcQ|gNQ5~RdYGgD;{5Vdzk#w{9V8hB=bnR!}_Sv3sWED;eVg~0}) z-H$p~Nh4~nk90L#T3ANE9}=k5HW6-##bum>=hcvI6BVFuHCg>ZOC;B}Lrvq#!AFX9 zvdv%WJJmFzu4TMT_!z+=X42aH_Ce%h=iD*N);aS0{Jh_R4zWB6x@=ZbfOY4JuI_?~ zO_fNv93}smS6rf*G~SIo={ycypWIXQykDVLg$z>3B6@a;{sBqpa_V8WpK2=STRF4s zwLO#xBYWK;=86XlOfhDWNkro46>F>Ke1iUsazV%9>vlv&E|MsYBrpccx7YnvM4(XT zgu^5-Y)1YR6b*csbv-r^vIjnCs54Pd*ERq<;o*CzwQYo_1psBzKu8u!!yR_MLRtxl z9oxU~PBU|p&9&2p6t$?gbN65ux#M(jfc?(7jA75%jz4$F8(LNCQznGrC7 zKk3HA?=c`%lsw8&2$pBwKv5YE_e;S6m}w;#0_UdOS9VayUbdcTsSc&IqlUD#jo(%o zCJuNvC*7`0$s@!@azG$i4SHBe8O0{eV~vus{~)Wg`@`vghn9og6Gw@ijZC~>k-$4v zmNIEVS%93Z+&zxtA5N*uDSRcYJBe^Uvbih~e;w=EbS*CAQAO!Lm~pGuvm0AD9Cj>5u<`>+;`&)q-&aGLUKD(l3lcGzEf?3t4Hd4r2JL;mT6i?t}D^QUB8DjH=^lFulx&5M!9<_>)pgkE3UI5jA3W|46MgI-qyq_0rJuJ=lcZv7NEI zV_#ewl|ifl!!za-JycP#xzo1%JinPN#i^eq<}G~W<=ON$IdL{D1<_*XN@8Q=Vqfk* zx*qvVLY40xOOhW)r@!QZrCgJAsZkAO$2FXug2ji>8w#WJHyrs>N_P<7|9Xley{Zpb zGJ!M;7GGRmYUI`JigXnHG3Qu@_L2LMu1VZXK=nX=qz@7w-Gq|cxd`%~H>D|TpEAle zWr+UOGL<1D9(a>k;^+009d|+G;%9)_{>wYQeE_(!7dr(K^-~pT5n2gsOabR~gG$*< znM(QnOPfF11;q~!UNBbspj|WgHl?~fc>m>H0qc^C`TL9M4>P7xZ2x6?fF`KA;E8Ke zEy(r02tGmta97$X+L_xa{(d3CSLsb{#I9GgG0;J>2l5m5nEByN59Wua=ZOr6vof$K zkCKFNcta?>7kKW;ALoOb26D;XC(u*{yNQqf^@T?J?c85Hm{6)vK~ZbNt{2H(_{TT2 zicPs1_+0jYYmH=E;IjUKKO45z`k4lXliS^ty5`58_Ju+B7}Yitg{?G0)B6H>ZpWqx zE$WXD=-N_h#`6od$5tB9eC6N6+Hjo*h>PxIw6ezv&JeSQKT5~hT4CqQKW{4LkDK~% z`q6dekWbdD#At&QsJ|dTf8CpaKOQ^ske)J!pL_P-e(nF_dH%nD^q(zm`=jAl0Qu|r zahecpMcdn>GQh5e=#IymI2n4W%uDo0<9qx^kF?==IMZIA@zhiPrT(2Sd*dY!Zum|p z0rol`18oYGVyr6q^yailyMq{u)RGi;O2drEhJum+4ssCT=bxS=JaV)O=WkhF3q0qJ zz!6n2Koh@{PR0MxBME=@NaGSfj@mB1YkP&OeTU?DAdmgjKYj4S#daN+os$}1ctAoE z3qiT~SEK*)`B3E1A3m4zdez|HUic3k^R1Ien9>wWBV*Y*p8|n2|Js}YIKgW&j;o$$YO~zuzlxtY@=BO({RYFG;mKiOJou`Gm zO1bLaTKU73HcB*ppIYf4BMcdr2=&U2(zt=W=vSbTpAh@|ptar9DYu_z`!NlUGaCv7 z)?Y&xSY`jyAouSN>3{UI|K%0@FTPmZ?sKP~g}WvZT9ntIV0Q!g8{?nj+`mj7d!5u1 zG27pZ0?^NXN&0sZnCuj#i_UKU?H|UxV?{fV;7$^X=8j_lONCH!~Ydt&Fg*KEo9lQiDjW)nESlOe!L zXEb8`uABnezY}uopY;0GSYdhckCOmGUH)%J>;KzXMT*cA=O_f4G5fz;K>jylD-42rDu(`j|55n(H`%8~{2Qu+gR%d4kGH~z z8;~G|shI5hO;T$m_28Dui$50YrUEf&?C!y&5HtSkzHiT(Qkc@4QvChSf1oj)kCXiW znj}cuE8HjlbMpJ23#cBdPSyWv{q)~1-2NAH$^WlO^0<8M)rz+7H%9;My%((_)qz!|#7R#g?NjoXUS`PrOrm-ZlLa*YBD-nicCB=Q1^I=rXsL zPxWyuQ%lq2X}(JmcnSV18<+W0^i!lZ)*qw^pghB_b9sw6OStV>^wFAi- zpg%R;mmj}2y4YCP!5`%i7XNOqN#dZ%7uu<#f3B^OiSB|_k-%NoAf*!4-wodd#{=e82f`}0-yv3el!6{Vtz!^U zt*N_n=Z-NipJ`CC=h#kBbZ$th@XYv~b#cupaVj&$c zol^oV4M#4iWug#Zc}iAhMpCzV10wxfuSo}z_gp3lw!3&r zB|t@bPD)n?_61Oi&AF*vYXYhA-T>fGKvW}LkjM)BpRfvmAi>*kj$a0V(P1!VwhGD= z(kZDeBm;qTJo~UC7I(!Bf*dJoIg1D>H$aSHN1wwhZHPc{>HzL~cnrz>qcE06s_hA8 z%2}B2t@%h9`Xy3?z5ozfqzDbx8?z`P)ebK`hIInzq<+%(vv-5dzAo4 zLa3Mj`5EAWj6L!kk?q;-uS!`;euGeBC>{>Nbe*yb>c=+`UBD_xgLf1N*sudDnh_jW zRnLHg_3LF2O72x3io6Tdb$lT%2~3)A9bhDFuhb-r+e6X*SBUy{_Bxz^@k$XO3?9Bl z`{n20_5)B1-17yN;WMkM^pKBmE+7H2i9en+m{=b;C!_Y-eO^&X8oAZT*WRhUTbY`Z zh#+3??|;f$rE#b6ttTZ#LR>cxZ=rf$Kv^pnGTO>rS!!sOt5-;&1eSYwb?|}~a za3>-iFhlazq0Ws2$AfhZ;yz|rA*UT`>=V35RJwbc6G{RMS!R#ZZ6Fnd!pYxy?3Y%; z`xKvactk(s?%6V32oT1 ztD*5gilPu;1L%<{Wq%vQ$M^oqlBWiM>Rt#V<&D*5hTC{!ro}gH&s_*|*$?sTa39mi zUcK=6=UEx*RVW0Q{SZ44e4Yg&gh+$nTPVy!IA+Q&MC0L&M#NGS1{VR4a?Tp|vv%~H zM8;Yw5I5>d;|z5S7q~H6lyC2DH!P2*pc@APr8qPtXdfepfB;daz%8WMkWIuKb^?Ru zo88F!!Ws%*QG*a=?CAZ}kZ(orXMwUuR1!U4bA#sq26nis%DueXJ&Zk}3GWUqiuN!P z0W!fHio35Ut)vcO1w0UZrVKJLb=7h~^5cjMB0@lQHzJ_ehqTa#6H32df%mOo8UQ(Y zA2fB_aWA%XiJOa#f+?^Me@N!D{9@#>{ypvsaydtB+XB&GD|`d6bd{z@4;g=O#T;I_ zZpWV@cO^)^3kHwTy_Jl%$MiAe9;r1i<#~ZLgu}8ij&k_cd3E|p_2HJMYDFQ{o z0brg)2!Kw6V)z$yHp?&oZp6OlPS_8;^b`UArq2n8+>7Q30N~X*7}2I|un(5*I%w>8 z<9V`xvG(cq2Z1;Q>A`S|5t1#%jHYJW!$;o|vZ!kM+kV6CUg@Pj8gcQGnjq78Q6DsW zs(0$kv#UZ+d^dFx^&Z7pC^+P_YT@WdY!Ba4R8{AfR$Ul(*R@)@w3a{wxrE`ez1!qC zU%r3LR!v0oSItBrcwPzV0ZC!4S^X_reHM~q`B_3oB5m#a=6_sMdijjAY&58%w>#T=-fO)nNp4d3ok!L@C&hN^( zvi@T!fl1aF;eTwFjC@=+JFnG$G|Fn@@XFQ6u*spp!0#s1RiGh2R=a}Pf6-SU$BxD~QtCp7TAO`rYh;-NI*Kdh6BTjNDNhy7zU z2_I~+wN`sxMG4y$b?sd1x8gONGw!99UtKI8*$Pn}$Pc(m zaNw#XWNZ{lHZ)`BuJaDOoqXNYVkEn`v@YCpm@fB=j$2O*`+ZHlMImM4g*msGQ`V&l zV8g;e5QqI{R+Ho6SJg89Rer9lr0vv*P~x;6v0|+01a4jS*@Z>7&iInp!|LC@@G)3A z_58*=W_CVC%c-LD8G1nW*Ws{Y3Z>i7r6unGCs2m*tQ|K!pY6&pAAFEns$2MeZSMTm$E6U=(;8Y zO5}8fst@ll@xcjOJx3SQWn(v*o>1#5p_<%h{ps^vky@U9pRcNjZ#wyZb63$Um)33T zXWcoi3OK%`))+{&o1dvR8_)3pR{@7{34Kh73YNqUQ4`wC9ia%}w^+wGoLs!g0PTg{ zIo*@2%(9UxO-RuZ+F#4(oa0Hp?VLa8`MT!U_kS#LAAGvmiUg*JhBptK*B@Ogz3D^$ za2yu{;#2V)0u$tBrUf`x?pHnxKHjYmKs@p<8#(OiEg(4P$P(-_&|USwlp-|qyix*T zZt240Ev<%cYAa^VXD$c!VAl0|FglC57P||3Faa}g8^z{&SHR08S-r$8VV?xS5&~xt zAq=338#7cWHf9eH2fkkP9k}G3Gl9s;;BYO(A@dGXppT}S zgWM}fgby@&v@t=xg>*v0n6nUocPAXeDT)KwdocMabZhaFgMv@JxrlR|Y)wWMx&*8= z(NImNcCUnC7`ZsH5YoRVlu8hwBW;ciwJlYxd$+;S#4YZ%*Yx~XE2^mXC+?;>2X+PI z=*yEiTbZEwyej0U;K6-nW27HYt9W5obVyAWcs`b6T0MqT2BIDKS&OX!7Dw!Tk6wJH zBH_fjZoFhXXUO7-AAUKzu@A)dP(NQUblAcrs;rUdA`9yA&!WRksjmJ^22nVlNS7O? zbcYWsqIAY3y_wEjz;=S=_QSGfG8XWFA6`GbX4K4+u0#*!9UHE%AEC))om!!{ynhhw z$|=9t&3mMOS5oY|&_V49!5gFo^q}BtaG~&|=p^3%fFG*DtI&cyzdS9+)PFM{4b({n z;s<4ZAa59&tMU0dp@5}g$&Z6*yA;sqCz4}38t+>CAn9z$mw=d7B^|RmDA-e=NN^|x z%5f%l=-RaEXX6miGVxwhEJHw$uElbqTnb_pMSA>rQ^O!%0yq;OmB_I1HrSyEqFn4Y z*yl>8S&Po2iJ&q}DkfXse(6j1==-9f^XfjuSrVQ~1>6bhEVzOzvKsif0`}PN1!V%LK zCt6@ssnMk3D`)ehQgGESbwl59@ueL$`|0^Ja-j*wBK1bH;5y;KiN79!0?^YWw(r8=C`5lL?@*kECfv=}E%LyADxQ+yi-1i@&( zaM{+ZLu67pIKjLjYmABi7;57V#ICqN5>kI#z9aT#i(t-~)sNr=yBu4&Om`OC;%Nc{ z$rDPdJOMy<2UO=xh#HHlbfAPkj3B})O0Bnj8=0okAP#2fIB0>ILdb*~0i zg1HLl`jEzSkwKzh4t4kbY(BG{AIg%#} zfUFAOi*8q)+AN(Q`A-uXK{QUe?E7jMYgM+wJrr(d4%+svO>zYMNA3kdm6p_492%3OT;V{H+}SuYnX0QgzIlTy5n zfU7;~^ZOb6HnwAy8zE%+am*j#SvB8>8 z;peNIfY70g0u#&Cagy>X2|F`SIwQ*-vIM^Xl#if(2aF+L74;l0p#Ao!EB(IJaTN=4$m5~;9S z0yn8V=fgVBy&n7nr)t)c4}qc12F`_JEAcA(9I)+|0UhWcZ^j4=bQKgdawkYBGtLD! zZ8W|u*a-#8@?GcrV13a`e=n8Je-*KRArsQsb~uB?d-rl{%YH?a3a2QvAu-{Z{Wp)4 zv9y5lZcN74^?lmj*`|35Ea(K1tTO6eD~C1|tc<&pF??X##Ur4~gK^}$RLvg8F3ca> zknB+s9u7Q)`0$U#?fz9R3{|$kLHL@_Ioqa{2C~w%H`>1FBurnA$>{df=Yr-0Z0Q>u zp9&R#teDK+))aZ%m1?l^|EY8(?K$~w-uC2PPDBr9SJ9@$JW9i9w1vi*X7u7}WyVV9 zSKAGO6=fha<_yoI-?PtOjE}|*2|sIhO@$-YebnZtK!b*r0Nulmlu|{ zfl6UE1KzD%8J##|?MbKHu||bA@%hSzecMgI0efIWRGJ9f@Jg z0+4?L3zQ1!Amre|pUVt-AY7;#u3zih>sd`c(<0kMN7ptxhSAFOYphrE1|W-3uG4u! z?&blE*3YC#ViFhoRpJ8aScuv+u5|N-BjX>LT+mjLX%(U#&la&jb|NZU=!tvBkxhlIUys;1u>G50;>0Y zz|_7g24}x(>@5-_-}J=vi0b|1Bg8nH_ZOK;u$B0EyH5%9+_!^~y>=J{#DP%SV2cHo zhXPfQiSx!<9_x8HHGu94bD{-=HlA8lg{RM5PQQq;NsHw5(BvO316b~Kp+5hxTs~la zwD^Y&ZOQ@)oZ%L!rM#7b3_yq%&DX1q5(fhrk1GE#tRCex4lgcZ^sJB_j1wB!z&+uu z$}JAittK=*_|;|9(w4XZ0}F(|^dZa}uwlOo&EWyUNkydt1QCROYB362BWWfM!Ong# zo4Lt|=(m|@k~@`6_};%Hqy-7a{!_qizg|QDIQ7j$%n?{j0Si>ek1OCs&h>jK0fx`< zZTGp%5-}5n0e>xLuR%b@1mCG$yoGdN!itChd*PaDFj-2cwu!nRcYiXqGN< zp=uC8hqy&2T8e><8=e8EDJSDbgUW0CV$?%v@7rd*!S2rvPa+m$$~i~cQ((96a<&_P zx=oeVis2k9n>q>-f`TCJG4CT<2L)Cp>+~;elK9tEVrBR4-8F$%Ira^I zIYNLhL>V5nbTs1MRggz9mvV$HvO72)NBP1asH-=UNiJym+;Oo;T|a#oJ7omA`NZDu0Ha zD1q$k1k90&ND;+~Z;o5b3Bj%-2^<^sauUp&0bBl?N^?&~^jGzl3}iPF`WIrS(&${m zGon;c?L{pUTGcc^I`s2oA2jS5XW^GvqUHz>*Xo%jb6~j*o1Z4RPULK5D**5kX<}7z zr&oU*VM7m_h%%Opl-wT?q|yA;-LH>@O&*e=w4mMV?n`4$RWE=zyy%f1?4vnjJ9 zr-V$ozP{~oeez(}fXv0~bv-Lmy<=ZLRG|Z&Iu_;EBfivLIJ@rQ4Ro66JP}NjiEKo3 zAXFi^o?+~B;j04$2B+sq2R`|Q_wZUI!h#b?jIq2U@i88wC)yu@mBwE7lzd6k7A60? zCGOTdcY{5;Bwq4pRE6Y5sl#rr9vTG>a_HRYXndG`k`QVZjZ?d-6Qo+tGkcG*GRsbq<|3Wit3=hl}lySlq3 zn^ycNX{mR?hDL_vl^GZ-4^ecNQp&t?!{zGtxMcJKf7O&jcqx@Xa6x$uJ8ek zlJ7sha{`34eMMJV$Gft5wj8X)_e{rsrh4)Yi*h{XZX&ka#60}oyP>IM4qir;!Uc}I zH2b!G(^rT>pwS?B!$3$g&A5=23xr2k4!TCb5k}E{Fk~FhwQ}=d4jat?p>}!qUEAeZ9-T=6s9bN%Q(lkdcvawJ9xK0n)XWW{q&fA)K&89Vy9hDMdaH_p9m9gJ z53+|Gy8VN+aB?*d_I7myD2K#LPP$;>kQQBnQy@D zNO6zI#pGGjca&C|Dz`5+b2RT&<2Di{8Y+3sX%cn{c^smCJ5GNLoyPkL5;JDZyyn2l zeEPe%J;kGZvXs}{+j83B*W}`PEydjj7O;e-vYkF%U9x~bOol) z2443L|4bF4M}AAUX}!pG(<%3U3!oo~{!@ZIU&DCu-%g73=_@Nl!EVD(&k3Bkm; z)XHL+AbA0yQ`Qvb0~GPQ4UM!R|L{q*;@*~C;7DYlk2ZuJhxf2-j7<+POM%1+Hpbez zW+cS{J}^^NNGr((n^G9yy6qsGAPe646nY#&6~d7<02(>cvVbEkB=<6xkROA;6~Q}v zxy}ZgXpZVsW9oW_kIx1)Ju8F!_A0;%=M6=G7v`wUaT4J3feEts@|1Ca$sDiaf@0Ey z(tH#e2Qzs9spjS5R=Z29{mKg_5QJ`xYM)SQz^bbzNb0IAB-a6K3$~gwvTm~B8R}Qu zoYLYYIRTm%8X8?ohC?G=S08f@fPy#6Wnjki+^g^$JTQLM8?jvwp7PyH)EGs>xo6fh zIQMMp)P%Q#RIo(*V<|FtQl4Pi=DGHQg37Gz157E`tv z`;wT*8nPF9X9*M4G=|Df82i2@g$y%g%Pz^5Eg}2hiiG#Lv4 z|M=>;DPYJ9vWNJa=gNq3;Sfz+aW<#esAvdo~2ld#T~ab z7V0e{Z|GaWHf1hihib0@tR13gRBuJbT>T`!Ab2(!uzDJl7`?9EcK$=S=4N0D zz;F+ck00JbY@&TdtCa732}ihocF-<;@z7-D%OkqqFh1)%M#)fslL#n}=?IvR<>6_- z=#C%3$fAcDf!y2;H3v8r?v&44N*RHpu5|f)@;!gYKK<*d43&(vlLx4ZX=^75X0J_F zw3TKpp?Rf0p`Hp4XjjZ`Jnv;f<`Q&#Q_~n{TQyfC3yJy06r1);n$a>|by>OyN*6%sf_zMAQllc;2`+~+IcEin&;2ywx&x~{OU7|u6}MC2JBB~crnYn@m?Xm!3dy&PI6=n6Yb24sc;;@Fpy(;4&q`;O6qM0j~56tad424S0ZY`TLwnw zX-1IO{ep_)Oj)Ts`XP9~9xMn8Vp@RVAw=uX&7GuyNBeeb;ANo~TE=gL0TyKh#-}d^ z(2jBG+rYX4ya`4fQE`kTP{ z!50OnT*?#be@`^#X%B8tlP6iF|E3g%%Qi}Ta+eN8&2*yS40c~r%yxvg0q&_UbWr&t>boD{AiL}I1(enB{S!}s z(GSM2of#wQo)hZ33)xNI%nJkJ)YAg7ns;poKYCz|%`o5@FKq&9M5-v@1WENC3JU_$ z?GzH9oEAJo2r(S#xx*<41Q)AufNHLtY+5Q`ZOb$!x3-e zz}nCY=rszlh4aF4WWq7JpXWrhAlbYbx!d!}Z|WzZA~@d>BJ{tv6SR#_R~x-r4B?Dt z6Y)^<*$h>lUz?Ch{9AdblwE`B=oWmyjug_LCy zp8kY(d7LKkjD{H>#$3J>6b1k?4aT+Yxt)8>#T#5bH(!UR4XY1EC|i~zB6iM7+&NA@ zJBHZIVy(2m9o#~t9Bg}EFk-=35|7G{P6xU(*pb7*_ZbhxXbx}(^u(pe>HEA@fTJ4` z^mRQX(fv$-M?&{AGBXOK4_*SYFnFUv<>8T27+ZOz6hsor3;oytfW*Sm%6G@j&Pv3& zDm=|0<^!YB5;#&+PUe8u&ni=qXLYn}bOjzQGSTJ15t)9dMINo~`U(esRuKkH=M(76 ze!~Mr*#`NGAY9w9Jno(A1E8L!Pk+WkJop5PnosReNZE19I1a!E7M4Si*H0Aj5~dK= zhFC?aOIT0?l#t%Np4|3t+~T{PA8b?@S7a)Xb02)DXD)m;@1I^^bYMsLIme>LUS598 zPnLsAaJhbqX7(3Z!<^FuChq%ojR)(e0ZhKP)7%N@5#YT}8dA1}bKyCmW({zE z4o^qwtaWFHRSFzY9GHYPd33`P3)FoY%jMBZ!!`2+@IOqQ|WGs)xQvF zeyM=?wmmmGJuFt(=7x%TTc+8F(O3j>W)I=VOOwE~No+iuD0}pas9o4+_CM(ZOTFx1 z#MJAt(G(=dDh{w_c6_0j_owC&WluHHtKZO!yx?)lCR#x!p;ltr7Rmygz``?piJKLE z^*4O{vDtEm9|2ag=dzxk6fSa_s!mz81 zSQT|9qR|%h17ZlMbvDumy`c^T<+T&wObv5zfFK;v53T#Ec6U*DNecrzpCH3R^naqG z+g?UBOFucqK7=bSMC98ucSOKb(6MA(8UF0AE4N_)E;Ptb^by~hhXP=n$Z!vb-TVtl zzTh64E2@MhQ^1cA;Q03yi+^+QtzUij94uRg7uxI)|JDDUF&L78uqKP19Z{D9OI@1L zhflH9o3cH&fX?L}L99=IVgXra4pyc_WqwXMLP-la?PAQY1Dx-7#4K=hwZiJUp_=ZB zDi5pMZ6J&Gbi#FIfpZc(2Qjg_ygt$rbmd$O72>m^Ir!(s4{(<#X158MXFUmGkzFxR z6Zz*)4+VHI(e`(Az)5x%&kN+Ot&8sfxnCHazGY`PYu1kWE5auWiR@RBuQ;Mbdcq|_ z?NEMf1KTDKldkaGG|Tqzx#*=?DryeOtt;ZCJgXx&ugGZiTLfi=FuGzk=@X@LL?5|N zKrpQcU_RpuCk<8IH+B10`;D5Yw}DoKK&;le#_;RhZGw&M(dFJQ{@~^B=UR9< z;Gm$8d19_ffH+hU6*$!ehbyjyt*<`lS7Tij_T;2GrkWR$_Lo!^@2fKAk>BX8+u}Vv zJes9evkh=(J~N+UNWvbkme6f~M{HfKqrTR=pz^+Mj=V84 zsvctbee~znq`k!9Q}UAi-z*gtqHO@VsY)YFk1H%hCX*$f9=?C>WHsmWsAx;4G0PZl zdfjL83z55HEqOjOkqvySP#^d{s<1R;SX)FNemCwMb5bFF_4jbg-Q3kLyaeezm;JTTZS_GFke<=%`S! zVTW3ZThChB#$rao^uPH~{07TPhQ;FyM(w>|6dhP4(d!Rdugg_%>BK_1Pp{x30C+ zP>=C@`!8-?zo~al3k~as8EV)10w&j%3&lgk;88@saH!4o__(~~l*oZ5Tsiy6)k`bM zwH<)?SycVK&HYDrmp}%)cliCpz22zK#iVSL0Fr2exZb^WhV~%y2EC`HK?1@+10C_I zp~-LPil1_WHVdyZVvZT}o_en6eSJ5fq*AF@RAG_1yG{H?x`9a<`ysY+3Sx?bO-RQQFnKiw_G2 z+S9eZy#$)y_#TNn+0Z>6emwulS8nd`;1%=Tfch0Qxe!)9g8?(`s7I+&Op;F={G1C-1(^> zNeSq}rXX%qeCKrJC3Q?Rw%A889xG^n=GT!}%aq!(bYQ-i#5mm&-o&Yl5q!IO@ORsB z8q`!^4$NN^e66d`=k=e}|7h@?KM?FT%J4N@m;|dzETQ$Sp|14L|7BbcF_bpaHpJv_e8zwJk#N$ z_i?tYpM6lbgE%Rr27Zzvq=kgwt%srYCBNTflaq%HM=Q}GiB3F`e)`wgh&lG2J*n4i zt|5*2ZRWsWrD_GL_tRMWW;evD7Wwo#->QwhY!PE>4?^aiPHd)7H#YiyoLwP_t=mVB zV2cv-5jF;xS^8=45+Z}}a$R-)vUyCiV_4AQMe&2L2^wZ2Hvfx2%U*l*CE zOv?To-gG^T4M194t{%`-?1Z*zop9?>061|P{+(?#16=JjQ2m}uBfT00hZBDC$n|ZM zxLwHAWY6+d!3=PW5eG4kj8>fea5_qW_uJWlRi-ovgt6J83O5&$9zZt~^s!NoX-?Z- zZ&$om_-J;+LZOFr{-0UucCAN#2md2Z$H07@|8P)0)?n`grlh`qPCefh#C$|>PdSNp zl5R2iA6wUUW;SMd#^pZ8Plfbb%f^nZzeP?R079mxHnHL0js_WLRdR2zWclXS;m7Nz zK>mv|dAKx8(EG-K_BV~*d#ypDr1}BD++`_hB8_Bb!8{VB8%9o07@!#`=9maIFr;}L zF0Oq0!PW|CW|H1J1SQzzglnW9A2+{c7+N>pNKbUT;)MG-YMz^z8y572kE{y|)#*GK zY_b6;(O`^7k{OX0RW}Oo`(w${k3Dm2J^~=8aW|m4l>ZB{o`z;McvoD5&}rm_sQIN_ z;?|!h$AQNI#8A-03nDVE9MLKV2)2_+qJkP{bso%N9~ZJm+TXD-gu!QgCD2Zd@hA|A zf!CCsBgzvIXdN^&99|IfglGtCC%0mhgns^paf8JDu_mhWse2I5)M_noySBCp4Fbi? zxD$*yYX%LS@1&T=YXcALIGC}1{gfQVK&+cCb5NT+A)ccTI=wq`Pmq3G2UX3-SyDd< zKZ9ZGt)hhws@d`IK8cf6dUg})#)a(9>Bs9W3K-#zk~#CqiJ;R*i`b%wppDk? zz=@@OLZHmW&-7NbL4428x#c0QO$#t{k?9C1?K9L$B5^u@MheRz(N#H*5WiU!zO#dl zo&`yAHBhWa@u*BWz;+98e*9xI3GSiqQMFmwBFWfBy0T#Ytc0U<$$YXFG}zUM#ZH(i zp;UGruwn@ZO~@9QbjPDWijczoBs351$yk&ccmsng34s`$i*1<4Lo<3)ndym~7zulRL>Q^1GlsfHB+OR!rWu3=DMJei6#TO2q((3+XP7ru3!wWtl_q@fc{_zJJ3(s6tLdm@r=Hp(s zj2{uC<4%ab(XFLDul{>}kL{yO-+&2s*oxt(VJFa#7B=*{IV00mE1`PnIe=|($DK-J z%mK!i2p{WnBc7rrCYE5%&k55aP93+IjpVwn5}Hvv$2f7Z4Rm9=L(gGseIEGWe4$r} z9iT@YlK`pL9X&~CkMXyF^|`2$kZlN9ZBo)~AeHNi0qTD{7$RbOnz`B#m?OL9Z1Nt8 zB4lS!DoTUCnMfTJC22E*Ysx%`~XAv(SdjpPFMT`*A7dLUwp zZf0e1uIe1DfhwqO9?Zmt);VxE+}1!@n?cQO{sI~9f9 zYou1faa0W`d-~NgZw=JS~mVP8tSWGhWbiqJxaL5zpZSjY5g|NWEI#GPj)h|P}{SMDyW+db6 z1s9PI@fLDdS2+@fA|8vlge)e_H#F+m0SY;+Zf?nP|P3@+>f3BIacdy$mIw0gTT(Qp%wQ1v% zafM5Jk6Z79c4N1m!|O4&Xz*wGLjP62VdJ}e$Zccg(7RXnV#VL}WgQka3D0qka|Y|> z)gRrzN<|bpM?G$+yG(yK?p$g}g-kHq$GuAJP_*C9>2mRsz%m(IR5XSXCq#DnZsbzs zR`6ir9rQ^!#ozzq{8@bchr`#ik_D5|QC%OKkDa>E=L7G9TyjZv*1jVh)ZAj^*3x1U zedB|gmB^=F@46L8h!?y~#}~fw^iH|hnTGFBXmIfj`oP^f03CHry7Y2I9ertVrtVIM zF|e zQ{i>r_A54&w9)r1X0o2o+S8ypu=>#}=@#){a;s+t!`>K&Fn1`t<`94Xd-127m+2K@ zZSSLgk(BGw)4}=Idb%&q`88a1fjoc;91sZozf0)fTW=_Dn0T{`oW0KFklS-l!Kdn~ zw%dm7WQ_msfPfE=r9Om(Z8&>R{63J=-0HLx)iTl$$DkR76LVQ*Yb{mJ8N2R{65HIm zR|>lOCDdO1kUyR75RK_WSI2l3))PV-sKa^c#Sa%fM0(hMiz@QHVGXFt*dxTcGgoxL zcp}SHtzM*g@bP_(pWp9sDW0c$@vk(tKU1QXwJk-3KFss*X?~V+=I{_hvT-Mc5UZ0< zjGgfc5E@?Tu-EvlSh{RRh-dZsNw38`BIP&>K&cISHpbwP7uD-<+|@hgK|_1e&W%6d z5-aI~FVYC|HBIx@V!fs$VkjPNwKZ;F}nOEeg!5CAf7J3^Covwz3p z!t;=Zw9e=7zP!CYqQ)>VVZwTNi{*gZ^XM+)B4R`rxwYM#>8`(0ND6|cMGDsG0vA)K z`dZ+SL@r(VPB}XyqxJ8GZM6S`B&mb%WC#gY+%lXX_dBpJS->D}--5-&Yf*FEKvBTD zTlI$Lv?v;~o~2vN%bC9VAIgg_+n=G1e!9e$xVrG^orRbA#Po@SfC7FmLwN?1Ucj`r z$PJjezW>Ze;#<<&)qJ(k&Qs%@lt`*IQZ z4~j06e@ILp)IfpX_lQIeo;dp+k-4$wz*{koS3}gBT0lIn`(r^0rtA&>=kq{RwmkE; zRQ=-TD$5PRoK96#$?C^yn8_;nIN@rdK1t-H z%n$$cdUx)>q%F>rcd)aU;StxB(2<5+n3aeQ&}aD++p`6JwA>RS;L2(c_j_jx22(|0 zS`cVR`xu1ea?D3zz&w1uv*SM^v+_sc$zI z1Vdw232xd@;5Nem7R0yjB`DH6xxm@R7@&1QLVC6=cR`KF`9oA=!r_gcVKg8U>}}-lt;xzZ|Cw%Y+ce>y}5dLA^d-1!Z`7udyYWi|Lj2f8%U`Ac!`Cs*_o?q4mocv?^ zJ4txx6oLs2 zu%md@lLRt-Yf}sn%w%sLSkb`E5Vi>|78b$R^Z{3W=0fYH@$pX~tvV?A_5q2$GH|Sb_AiQZ^b7s?e?DlSOluOh z5!_B_fjbA1Ky1t_kd|@UJ_c&Ah$cxy$(CtVhM}H=!GZ%dW%`s|f0Rn$JHxKJMjy9B z&Hq*B%c6w>2|@71&#*#4Ty$!$D#Yn7YH9)7DH7W?P%rnx?NcGv-t(S}Wx!$kkdY$E zlES_vQE4|#%rJl#?I3esE;2pq2)EZXk>=Dx%dI4VJFeTZ7Deria9ZgxwM}5z(UD0L zd>I%7?U#k7KmKQ6>@Y{nrOCvHzHcYj!OMe_N+V2JU}9e(qp5ooPJ!hp>?Jq+>D4zW zIdo)Ar;+yKRpC5+2EA`%VzE(8c#|TfsT9g?>TQ}(D=)2Ms`}K!;@E!oF{9B8vWXLM z*5gQm7^q}O5Cd_32Gc@?kjZf`2h+X~htaJwyGj@;O$UqULV0w`X%lG6tNBmAvSnDz z6-UdXHC3aePMC<2TW#K(ACncq>OZTK;Q{nKjPJ^TZZKFfJXTV)GiGii0#LL zw)Omm@Fwzzx<&2}L|{vpP?t8W`TKlA@$&Kd+x-O~mWQlA&;>luqI!{2tmzd_C$)Z( zR+A)3c2RHL|5@op9Zit#_qq-P4NCjb_U0uyh6SPcw(I6ntUfq>K#v^sRsvDIufRwd zd2h?$aSM%KuC-3NFc>Qe*L>i*t2BwCQJ~_ZRh9%X|D~dQF2@OYSNx&Ry6o>jlmIF< z@AUJL>C_fiwJ$JP4EnX!0Vuz;bn3qfEX3)&q*o`juk$6$Tf$%r<|ZH9=!4WOQ5eJD z|M?N@;O3Ayx`908puCs#8yQ(N_{4z0)*j=?^vJ_KtbZ$TP+hq4kqDk89dEF|)PKbq zFGRRM$0$+g%BDuDEBu_-9Z}yt={*V#9J*RV{Dj=}(}6TmsLhb8QeQgZ>cI*9A3fr} zK#`a_8f&-*?%Xfk1?isS?#~G&_$O)Lrv??He4AlVN@+q6iKpy>5sy9zQK)Rt7(?Sh zOn2!R*nRq2X--QZ3*&iS%-*NJVo0$OoT%#pcR+sdTl+exN64fWn8K}X)<`?4QvQYSn|H_-TB>^X=^kVqo`98pQanCK2A0S!U`UE$O-b8w_N z*)NZl(?mJJNr(?<0M{0{UyvOxkO|O@y^3_^a}l?Df~f$oEtFFE+h3U9(jY8@;Vy0pAa$Td5EI~ zxK(GI4)sJaPKT#Z6+_p5M#J7)KbeGw%d3;ho+gWymlHz>7xY9;Adh9lV~@+BN6eeS zz?_~~&w|rJ38s*=Xi${J z4)Pu7VLPJa@d4NFHHAN{pA4V@KO$UnLL2hoT4b>H-&n%y4Yu?)LWm&IM8uSAKi-td zhx&o58hH|`qlKv?u-JnoFjoKUoje)|&(K|<+XxV8r4NG7w?Jfiz$Gw#hN-c}k2sy~ zKh-M@SZ6;ZI{ifl8mq9a=KmCf5l*eZ>4*QW+D&0Ww=aT^`QHt>OA=5cb?pD;Pa+(= z7x5ur!S?510ssgS@yrp1{$V_Yd|w*o)fQ2`bF2GI9!~|v9O;? zw=U%2AKYRYMEz()QH(mB@L_?IpeptKi1ftL+;sEW{i8E)`#HGqlWOZ>;-o`SC=dDR{srWRZ#tg%eHH(lk+A8EMRZEjgnWJsPuwz!!u`1W5Zxy zxv%TO_vuRt9bzZtHJ`4}O`A^$BoC~Lc@(={?ZCFE_}qvLh)xfkap($L=PJV*J~V^^ zjrUJZs=|%RB!$~SpLR4)9(la6_c{Had#u~*vc4R?N^98Y?i`j4@ylBMP3%VnmnL2R zCsI*m%T7I+)kp{qdu^am*6^~z;z)G*>Z#y?lL^g)nwx85S+T~Ou z#8#U&+?nU5OTmFq!OQ43-41{9vs&VY8Uzyes19{D+OUroGc@!W5etB34d~~ ze;0jyJggu#cNx#0t-jGGe8u_tF0lu{dy$Je)b1m>d-$EmZ=v6bNe{jb$zLh$77iN{ zo%n)Yc*|z}e*Nd+y>eGRc=0c1I2`l7Mv_H)fhZ$BZmaC!^-qs2YbKp@8MSFnZ2$N3 z4q#OkmfpFMGg%H#dQ7?bjJ!(y(tk8f@23>wjZ4T?B+k4ld1BCCgeVfVLo;tHq$|D=N+;nC> z;*(sK;?Stm5sC@L=KJe4q5hpSjaxP(@9%=iW<{8khP1R_TtEMuvD;eS;~5ps8+Xsk ze-W)A)WPk4sc|_x-_My5(pJZagdvO(8E$;v7ew;9|7ZkB@AA0(u4BkHcG9F#w zvW+J2fOaH>J;vv!IH&L@Mt|B{am^Zohhz0|rKVHsXb*3)@Tcd_SMAE#X{XAUKUh_M zx}YBzt*a2kWvfZdmRr{Q3PcIH*T8KE8hh05)JebI=;1LDfsmlhZN^ zu$Uc&tmhmr^{5%MSoG~r$p*%rLo7DFV|l`+R=W8#*6OC1A0LVAujjlXysm6jd2%y^ zfsc_}e^SjRdC!Eh)$AnixU9O*sz>qMlH3_dm`5mCjT+thE%uNeS^xHn1i-E&s44zOkJBuKr;Abl2SWfZMqNn1OFo zB$ozCVr+01Z5)$lcjs4G!|Z?fQr@9y;C~Ebd!cd==&{-8VV$0f+-w zx^g9m?-tz4_&LLv9axTqlz(#S^FEA&2bmVg*q*E#-OcniJ!5u!`^9(|vYqPs5FW>I z!8Mhn-b8@pZ0D)oOeLhZ%}O4?cIhBv4lExd(~$-u1_*!{vsWM^6~?Q&A*S(m+9)p= zpaO4KsJH`zFR8;!ERPj3?yMu>^o0nJ5aaPO?+z;CecCm z%2??608WG@iKU49ve}m>MBp8zY_&zjFPA&9WD_mQvWY36``iY)PdGydc4D&BL4Y6; zi>>zX7-EUV<{GE4&p}9@QuxO=6nYj%mbFEf@syBo^JYy73{J3CS|Gm!ek+nm0jt1W zR;(8^z2%wM$Gfwr`(c((5q3f+dxE~15zQo^9mHKN%oG02^^*^c%GtvTjKv4cL3p;T z1!yABeeE1*_|K(-EwY8FK|1`4t^BSb2+=h@w*B}hu*0h}PY55QaC8Wcb#E$wKRTDd z3-N!9?g8Q@4XSin{p76uom9GoN!a|siLW*q5BPz4B04~*du9AVZ+MPl@BCuOYzuSB zCamBX;f=7(Pl;!TS%N^BSY@+4Ea;kTH`mTnHcZeMzYrbRERmDMaf*ppQb9Xdspmj! zH@59p(^KgPQ_x!C@0dp-hBO?R z{-^TvEC;{_r$f79l6cc*BNjncDg!!nVlL+3xa^^~kiw|ZL`Y!q2h$pKSjiX0~to;Z?h-J(tT#P9#DXG9kc6Z4$Fhqvj+h8yciw@rR$`%E41p@1A+5 zQaO7P2rZWzUvIhxrcaUStd(Hy3t7R-0$)$mW?M+DpaB7$d~Kco4%F;4e4&NfnV>L) zS7kQEXrK|s5Am;P0oop4o-lRADk&_i<_7gceiPzF#d>+O@@wd9gDAUzNUlJ6S zO#Y0v-2cYnex#K=_fH%s{O)L=Kn0)zX;Bp8X&u5haW_K4AQ2GFn2k+K#vqPy!i_}r z+G(LQ%h}VfkKH7|7AL@I9U7Dh6((u4ovG`rL@JBcN#9xHs7HB`dkO_~#e-m1c2WqHzPh4U@Hhm`Irk&RI!HC4Y zpHVDMxLo7Gh!ns`?4;RAqkCZ9GZ`^g#5BP#XDCOB%qs~B{+4G|h*l%v0W>3|AC0Dw z3g#g*>%ww9aryQ@O&x7x%Y^a$;FfjhK!Y{}rV#3xBHIBZP`Jx5z!QRF4H#Ai(ZHr| zM44i}iSp;~k0fDLS-Y`kQeaA-arz&I)iol>KpO`oG(o_)U{P=tQQ2@mfFTYLm?BsG zQwm7CeSdqRxCukS<3znyazO~8q_(FSp4D12LQ%f&Rs4|Wwr(gu3GMOye8|_LC_i5~ zZ7TitJ+-ooIr}>!bq1TRl_jZw12j}#?x}gLz5<~zEY`Q{h95FRqti77$g%T!B3h7E z7~2^aoq^kzZKn+m2Sk|)s6f{dN`NX?SJ z>zbqL8PGWMfYCkx@o9Rx zlO#cy0-sRtz#hycBDa>g908dt?uz)B1PlsHtB8Dn>H@r?qN4z3Dc#~aC;-^Pf{^|6 z@p44Id<7NCx`fMTC@{>I6~@+vcFD#O?+3%k7L7e76RSEB9uABI%uRqT5$#SMqa20C z-vrwLSYm=Js{u5^e};2I-0YRx1rMn?06hE%kl*xUm1%!}Wgux(jX8^XoErgP5 z`ys8KiHODUG_n`MQ&I?!v3iM|Yta4H-3C7t{TV4NU|h47!hm8IH>e)~>0txhb1<2v z(6>hQirh?ZhNZpqpnR>EJ*F;&G%trPgDhT&64h%Af)ef?J=Z=7&7F|@ZSsLL7%u9c zLjg7qMW}de2BGqQ4hJZ9gH9osFfaN$QnG=2h@txd z&Ce0FTLUWko6ITT_YQjQeN@doA7R(VkOalH)b68^j>t4AE+5`Hy)kNDhroh5Pn^Ay z^5N&d$66<@?a#C>Opi{*vQdu8j(?IEhNAXaq^Pac)BN@?`QtpGz*Btnh+M;GzxUg6 z)m!~GbX?YnzXsp_0p;43r*E#Ml5}TM<8xS@Q$9q4d_9MOY&3XX9bzqncMywj!Uq`W zffaHnsKX9}wK{BLk?Cboz(x=zyCCwFf6xEpBBWO|aPN)9M*BgF8bjj2cjHyh%b_2n zo(?T$r*!1Nlw@Y5`+sH``$rnG&Px6<=LOBtiO}^IpCs;FSe|i&UI4^dXNMp};#nJo zo8i2-Ddw6PsNmRO<_uoAwuK3C9VGmyOMvlU&HECblO`-S@Z2Dbt;8gNP)IWF0DVz6 zC?w(-pm^x|&u(?mh{Dt`WQBRn-6;%$h9)I#GZ@0=;B=5p=(F+Bv9>9gnE~{v(>tC| zf2Rg~LCg<<9z%E~x|PI7?yh9Y&!n$rZ<=CF0cXV_7+zoih3`fdHOEzbv954}k4zs0 z&_mSm7Z5VPP4~YTA}WYSea%8HX=E`eO#pZdgDh9@CNT#A1Hv8Ny1x1X#xmTzg>`u^ zPc&>s0z7jYpUk***|;`WP@?Pew2r%&h7KBXMe&LXlT6}AO z#oBgY4vTp|=!yFE&TaBtk;~~75f4z6I^h;AHq!6{@8eo-?m2t0oV3{yopxcv;;^@g zbeclj;CbDz(t8Aa?@rugY6QWYI{M2#@~js&XhU5xT zdxLN{wqCs=)+(JW-BK5$UXifYP^AeYf}8=rBv4Yi8zyJWenh1!HHf$ncPa$l$Zf}z z8FW^SHYmh+^8n{C;NZ>9OP=9|+rpMTj{Y)#etFeGLWKaWhFXgQ(FGqyp!6CLx^p1= z8h>aph6;17fD`=THT?D{pLH9TVfx9WDN?B)3I3dZS6Q`us}#Oy$h^da;Yc4Y~p> zPnIX^6#}J<*m%2^9(;f8?ICM67Sryt@n!PpyKVR96@28qqnCN+d!s4>+$UJ;oi{qw z*O)QObuqzHX@R!~Vi)~}-;hH}E$?K})lDkt_QvX&6fzpYmcYLB5 z`KD@^P(t2d6Q>65!*t3~qjl5JeEANQ;f?--cLRwcqqP|J)Ps9qm<_lm@QC}zHN_ka zxAn{m459z;za=RX`Zto@uZwdfTiX@Gur%0fH95Rsx*w@h5)OU3;?r!uJ7YAo3R5Cm1!H zx~=m8Kt*@~OckycKlEG!^=96}t^&gouOM>q4k6Q5Q-rkT&8@3;>N?g0F*ZNUqw7}) zB}Vi7(B}TX-yy8$A9y*dvA@DznEe2%2Iy?f{=D!hY3lW#=Eok^hD#hJ=9aF0$ZCv* z0hv<0&3R?lA#Ae`CI>$?_h~>J(8^@N`D+=fzNqUe zW$< zw7uaW8VSJL4uN>=`W)6k7ly#ja%B@A!+-Eqq! z5{k3QagE$mGnn^GVHbq3IF`G#6H*lWJ1J{yiO{G2b2IjfIwHPBdn&fl9{7_K=On6(Wm+vbiaVP^hkp?eVx@`zlvgPb!moicf z4XTpM8PATV?sU zbVgDtG~JNDIL!r3JFTL8bU(HQn#CbZt8zo=I$uMg_@Cjd0J_)*A@O)POx6vk$_u%u zec_=txfY$NCi3ot3kYr8NT{P|?1H=#nz&ofC_!CiqQMAEL6E`Ki=y{5iH$I%9SqBy zg+sYOL0B0ih7%2S?=0;g2jrxFFm}g%QZicMgaw7+^1{vD^B(4WPFE%~ieWn8h>9)q zNGf}nPXzy3Dun6~1ThiA<(<4L4{&&-Nn09NTv?2v0H(wGL1i^RXBxidOGX+yeh7tvre9AU+M34;| z^3pP>Kted^__>8z*LCh`o%M+kOqJ!}NW(K{5xnY72*;5i#vYU|J&&Lx4l(eR6l88X z=FWV&E+WBfy#iRVtyulfTb*#e1|zpZ*`Q5oe(PlZoW)rJF+Zv-Z(7_2f7Ro$gqNPm; zz!SuXLg?Z5maup}>e(T%L)a}K`%NVs3bJ|gu9#G~iDGsF9uml}W8=cELiiQz5~$=c zD{SrKx~nH-o$on-G3H|-7!hyfSPOz&@w^k#XWN=p0#%&j@GZ6v&^ z4=9|y9!ny+j2n^M6f+oor^;stE^~^c2F12Bry#B|e*|H>1yIpn9A!vox|#tGd^@1G zx?nSC!)2YH1AXEyIMHBB+J8_MJ+f-D>DmAmn3P_;w4bZ?`bMnr3Y$K|OI+pWRIf32 zI@&a3EsI8mIXlVX%H^5V2vxg3<)ZXK7T4qixK_n@qjNK8fiLQN63z zl~b^bCi`qY99j9%=O416?#)%fUM&~KtR@~WgdXnv(Rb<(Z`nsRtsUI2t(!{*EvLdutDuLsc_$EeL?c7Fo()*Ykju>7c~P z@b`ct+3Rroz$xI>suZ13Lganl!sA#$;JyfpZv!RRW-av?=)I4pCXvj z`DBpDXA^mYRE7l>P4AWOu%DkO$vm_XvwFgNG}w!CvMI}jHIe6Yf)m^|vX}q<#`a@x6;{^Yuk>!L zFK!H8o@OqDculT+&oa4QNQ5LiF^$wzvHpGKTg>Z+KfiyOIqiHY_sh&f)|8EjM;lAv zMkSJ=8Jyn4kmKTU4<7NaXn^^E&_f3z&f{SG(`2;hq4(7+j? z(`9LcRj>57g+L_PyYRv1A*BWPda=vWr`37KA}wouS4%;so?*?+@wBVMmo}Tuea(`+ z#AoN@yK?~c^@earKulK%)&9%Oa2R%Uo*f%5tO&QalG1pO<24lDa+;GNhkm^Nle;tp z%ktiUox3*nU1CmTI#xJg?MsIMf?>z%Cm;>mo=Zj)HDh!dJa>@=sdjEx|6$d=QWeH^ zdOrj*1>h(l3tJ5hTEr25deS?ALQ(WtFl8@nHaw(Ec?x z{PunU|M0l=>cr2 z7ttc%N+1YU5iX~-P*fPb_yrn24QS&NO28(9)YA3mlkUfmwz$N84S&eCg+&#HZDP4$ zLrd8P!1~zU|F3bx=D(f?U|m3J1yD9DkQyj@D}njKH4%~^`2b+@|20<_!%?&ro@_>vCwm!ZomE&>gyFiyF{8gKF00 zBZaDP{usHHdqLLQ)9!&>=bW!}nN-uxLca&2#xO(Sn-xq#J|d%*wH4 z)ts-V_=4uY6D4>YK?umk>4A&)7kYVm;1>6(sIPho1)C*lpQT(eTpYMCJxUN7{eC%SGfs^G3epR$yhYkm3?9-X4FJF>#>k6I7I`??S#rj==;dp!IA_1>mrDM9)|}|s-C^f%m3_SF z;w5RgJz(6FJB{>VR8p8Ol3ZA%o;C6PpF_c45xWUR+o$Z!PmWyi;qsCY?n$|H9beOx zYSnx^ceb|XnUxrOXq3Jwd;6m~cZa^g$h$#$Mheci?hnq^&yUU>24eGmFI=$nzNuT^ z2Fb^IgKo`^X_`|cI%N58y!_IsCYEmhy647q)A}4q;mV+U7G9zz_Mxf*R;-r`+rszo zor)F6p<8_8tEG~D!#Q_r^Pd+JM!w&h zm*{WlY_$-4YyMgemBIF?U~Z&bK{m(L)11(7kUzvkV7{6z3w^L*=^b77iX1Fxp;FxFA_3{IAk*|8P+!MRGZ~WxjP4zQ#O5;tpzxD9+fnYhbBYM2@HUN7FpB_#P+>tpO z8Y3OeZZ5eRAt{yPe5|MYB1=k~RfG9+*59uea}(;De`76@d!%x>BZY5g_TQCrr3Nr= zO$^?g`_dOb!1#q^|Iz&C zkr!BIV!xVWadPNqn@%ZNZ{6!4oLoe{SCI5%qP8#mmuRM4m4WpM&`1Q~Rc)C&hCcv$ zgZsRzj&A$;hWDe^65N*u3O)}dX?Le3n9ZA+-@hkv0QHD$qa>V1Osx3Y;k(qWrySLL zfCfJFyVMfyvYrypuse(*Ub}T#zEHc`O)R?O>$m-z-E?BF?M94YT-8=$B@c#%7u^U8 z>`O#J!^@tj$KWP^=&H}nD~`Thxck_`p_|8B=tTC*mkZTHYYfK+tSU)`=i1vs!@}%; z9ywKIke=!A^L3BG-VM9xD|X-Mu9*hv{sUuexsqvE)kB6S>Tipw0`TjsBPwRMCB5cH zdC(=L0u1*v^;-4 zH=@3;O{cWY*7g#y!(XWN0WS3Q*RQf=oa-0z_77$4KA#nww}-pE;pUBwV6Z%&G9P7( zP9%sVxbNo8v>V!{p?c_fWodlKdIz_F0GZJHN{2KJUyAcy%YVuF_yRl6ds@vs3AI z=oowMSS-o^7R50+kMBlAl(q;w@47nS@kxVBa!K~vynqogFKGIt+b8}Arpyg2U2gbT z@HrtZ?edMN9=*@pkA?1I&mMe6S2jbB#|%26=_^RyA2s!a3xDuihbqSCBlg#`$E!)EbQwya^A8_0jc_g8Ac&)_! z%tEWh5#^jVv>zEZMRpvhQO_ zV_IxkBZW$oY)QjV*_UA~AxqY>o3VzJLRqpUktO?k|8&lCp7Vds^Ire|^Tue`Na?c(2()+(scNM)D%-1G3u zczej?pxV2_upHHvIei)2$ERvc43}RO%kWC+9|`)AlpgE6i5OpuBvk4sYSkZW!$T(V zl)*dsFADPu@+)8`25=j*1KXe`Y-##&0>=!y;rnLDm)(^?f+ z(Dmi*+uY{KPHU`Wq3gx9EA*3B1Vr&x<-uU)^Qbl(r|r$rNU0tVYX z?-iBr(|Lw>QQ?nZ^qZcM{Aj@|k`v7F=)eKV;$rk_2c~<}tktntm?0 zI!{3D3dLa5oVMig3UxCrLv}gxAoR*I!Mk)u(wl@rD|DJ|NiuXF$O)!#v~@8fncVZF zBlU-D@4uAA)99pcN2rW=ymkT4n_Jiqf3gkQ0$yJNfs0Q!9*Ho#;ID@pDXW<-Dov{@ zvYqQ?0`{52d#tn{0F?ZW_yaUY%bM5nZ9CeL$3g+JX%7C=KU9p2crT+ApFc-_VeLOH zxzrJ;XA;Fx-VF(FB?tb9D^Y2+8d&IuHiQU7wCz(HlrRsr5qT3h8I2C)ne}?iQsO4Ggz|NuLs@&3dmLe^6`t|NCef>j)U6a*$zHD*Fcux6n z<7iSk8dn!rG2G40{rV{-jLX2fgru|4(BSf z+YWktuGQ#X{o7gzm(E_6MYl;6A4vV)AMu;++eg_a(dHxbnJMFZxKeUhmFh0v617FP=W0mR8KT7#w|0x7Sjqm!)&;FYU;~srU7~Q|+nu zv~PW;OZ}}G*%Y5)VQnwTuuK;HQ)ygb9wg4sUVYJ2(!x@0bV<7P{P1E@Iz~1rH8uOw zj>vB>ZV4|}&;B(a=j^-a62^yrjAz(b=f<*u4>YW>A)4d@^F55(GPGgBs^c+Jp zw(mx({)Y_lhNQe-QwiU$fUG7r(HN>3ohc z^r;kySs7Cw zd($ZMizV|J8HR@aYx0w+=MEN_8+W>yvc2|U*ldq-C3od?4f~Qa-$cGipdQvGh>`P{ zz;ajU3+VhGUc8xnUH@>nS+=lkNhZ^U$~%el5;u8)ub)l{8VQiED~T*Rdv*TD%iPH7 zzom`a{FI$+=vfzqJ=70~0+{px(2oZQ+A`WQ*fM7H8mK2nPCSeerO?0Ux7UrZH5=a8 zI&FmHeP5DRi0(n!d+SFuRA|4BTod9auB#0_AKv!ragK8B*&sv$;VbYGa|$5 zc8vxF$2-;&@=^LCB{$?qNFuPBIg-fysa73?Phj3kI; zdD}m|Upuqyykv{jBK@Co?f>wq*FIx95iGxL(U!o^4J;Z%Ij0S||By9@LN2GorUH72 zOiRZ&)fr#G$Zq^{9mT#!=R+^@D^?~!^W4=KfDSV9(rS~Z}aUMR~pJOuX}^k*O2Y@4@W<~ zZ-_qAO*m8M8Se)xM4BYBYe9At8XyhmZ5cA?{=UIl^ta8y75Z=EQ-u?w z8sBrCOWF2SHhC+PPjpUfrX-s+ zDudOIRe%s8zEc0MH{bua6A?DJLgc>yjnErk=R3D{GIef+19A7y1M$L28j-v=;`c;M zxgx=d{HG-Y0brSpGxo1{{1(M7k*;DuZm_!HDdGZpfOmO0q4DoO?eqV7kzlV=L8q^5 zKQm}!q4yx)qW&^3|1#d>Q_s=_&k1b10DDe@<+qWCllI?_?SC^^|MrgmFQ)R}+>slM zumo7XP>B(D41cfBJ_3?mfbzlm9>v}JfpHkt+s={Tjad$|7T+x@Dr?<^8fHJe+CnO zIsYOgz~bOFJ^CG-zp;wHGw2E+-@5laUuU4HL7a&e}jiCjO)E{^Er0VN5ky`V~ zR->Eewn>oV;?6 zGjd<6INqzSZu&F8LISpNdW&i?nzPIB_%vyyV62=WGF1N29nmoLBl5OhQ@2wFJFuO@ znCOOnOu5JFx4G4(Lsiiv?2ZREp8%kibxw2=o_o{~ zwE)C`tP_2v^-_E?2420+4Bk`$ghWh z{5q(a2lO>+65^{Qb+(voRAslPgPx8v-Ka=_*98258=KN|XQV7Dd&n6DSP=M*)QlxS z4xI(Zk?Ny?3J zO?jx{ZMsj^k96y4Rp{J*INF+hU~<<8kBKT}D&YR?VGUOU6qzF6*hRyerzDMPIY ze%dWseXf0RADzA0+ePnZx8xDn*_K@DqdU-vPY%wumTknebFE4#j(E_$*vC+gs8){h z>?9_L)E~M>9p!yj?%H^-Jq6pxLZqj=4!1T1f&HTJ9L+Gp)Xj8}5G`I|93s($JR*Y{ z4xNH82FmF%`{zib2GA1Yw$1FgDb%y+CLl~~+X^-B5Wq%mETKBQdJfZxS_SU?|dWj2ueoEmH~ttYtED?ml6FB60=cttIKoq=^@o)CBU%njlkP1cdKqwPxc9@c zxqBkQu-h#Vpp3jPK{p7{5+>ULNuav%kDIcjpo@s^_8j+-Fy(DNI9V zU(3|Sv3Xn^?EHn<0^|h{3sgg3Yye#MK|{dLZob{O39P*UuvoTjHJbpQALQN1ux;b9 zw^aeN0Sk@%1UrI<9zY&TAqnG+89)GI;WzJi6~VXwVU7jorMr$-VSSlk(B~h0C5=+3 zn-TEHEA*c6jmJ2GV}c*tp(AkPqdwCa&Bt|1xAfyLYIlq6XZKj|;~G#){3+A6wMV8> zX0FZTgWcz^Hk+0keVCik)tInG^o^=#m8xrP1>PFZw-vnTPoH@Ilf7*2JP6Tc4S4u0 zJLJrc3K1U|PAyihKTVchoy1-9e5TfcQZnG)5~E;et~z9-{f_I}&yj219eGo7CkM_K ztsR-WY5X?A(9YlazCqo?g?rt7OCO(b{*bA>@v$SY=oi=2)3phlna|y|@7MZglsd&K zE;*U=ypEoqx<1iYd2steYuve8&+HJQSvR&oAg(x6ow48^XEGpLZ(BBaYe4aBUqsgd zV(wS(38kUqKQ0dJ>6e&VE{v4q7#}dkt;e)fT@s)14Zr$BwHY3@m+v|cJ68PIwM(9#x#Fp(n8jSh2+dY_ zSU=@g6E*D@v0prW@U!u!lArwA7kg43%Iv;jsT5uxKM+dWVIwE;gkKz5z>Pv{I^*A( zjN57fMk{^#{>+;+5F}{;gA9tO=Q6#b`UU(PN)M0o)1NoE)K_=RcK@}Mk67qGv2MQk z?lQq7mRhS8|4Zs|zfvKg?AMo>>shhr+RH|ADh58)$pJG6J$8MHmDG0&BUE=oE{W%f z8}NCB(!iWL+ly>*r^D4TFF3MN@mr_jsA6Ko3Pmv z+}JisSzaQMNkUFy$JDic{7woh=3y!m(Ts`0_i!Lee{g#ZgSMbt3mDWZj6iW~GAFuB z+FCeiWU#*VN+Py=M?U#Zv41wUH`TU^OdrgvAF8!FdaZjrUGLVV zVf{qvHBzTSSxc78`t)qs%ZECoT*3~TQ^0^?2K7jy{2U!07{L%)n}o#~(9AO`r^&xt zYi?xR^yUTOS%>Lz2L@Ni)#;ae7*Ki?KFjaAId^o5FVPo=IDsR zAxb_bW2H$njm#mDzB&dx$#WzF58(`7#uK_p!}{Khxr9TUs;wsbD66kBP74-f%?mAwjS@2#m#Y_ zrh^jFC2k{cpX`0htB)$5CW#vaR4@+$8ICex$M(7hgP29?y6kut4o05+E{&evjQ&GRDTXDx^A+3N{I8vSb==E`*k0Wg89p?PPV>0Wa_Z_WUC3mV89y4p)yoe zQtUEW21grNPQ0dj-oGumJ#MWKsC3_g08}vfnF=9;)q$(dTg^~)Qb1>g*BKow4@>4z zbM@rbF?$7fEyCIzbk zGH*ckTtajKYnpEOYG)X;1>x8Nxm#h>Qjl^-PB37De>NFfd<#ozkcL$xH1pQ{1g(6j zVa(7D?yO|8WC9I#=5NOEXL6!+kE9-Uf(PEnI-UGYTlUzFzo%t;idyuHe37$5jXA+DgNH)1AMf!tr_^ z0BU>Z758W++{Rl8I?)`&d~)V!YyMKAJh1Zzk7^r*212fXw6WyD!%=PbXAq5PLNo7S zfNL`V$Qn@3cDc+%-RLOW;w}j{4The(mxy0X5V|CP0K;0JMP!MAlf3>OPZY;nSwSUW zwML#50LK@*N;6M6qn^cPE(vN5V4O7x+@mXw5J5ffm$^dwOa^kH+e^R*1YmUuXs(7C z&-4!;)$ZO1E819Is`*N%0BZczj=f$0*`B~x1+D?xkoSB0N=w!K%|oOe69mRtFBHR+ z&F(1O4`}d{t{fCr)M!Q&$GH&~%_TiCza;GAO~PJv(%~(`q~yAs9x$Y@4oiV>(WIHI z;Sm*a*neXt{?1^{9vA)^?)+uytqFx*`pzv_Qw`Yq3^5L~3b}SO$YK33S%Y)C484pG`I0qi5Zo>n1ZdDQ>{DgxI{ zXbP~UlM+1q2!B!JB&Ym~&s%W&Me$5XG<^n$y^X>AeJM2*^Xn1`F|;mokn9#|RtOC|KvZnTFeAYw+-_`FDiVHTSHt6y7p$xC@_!ac}Mn=nfbW0qQqu%#V2ElA8t z3}Y7G!_eCvrv(J~pp~uC#r;FUz!A_%4w7luU^gF+=Eyg|_HUp{pg^GNngA+Dc=TZ2O|Oo{=fjwG ziFe8b$rIM^Jh|#nz~H^HI90HEPs=txRXEt%7wVBk_4~9{sBcAK=b(yN7!;gyz(YfUjYKqcG0R_?b*s-~xbN4_dKm za8kM=^Q1HCPcwzwmf?icp@4 z5*sw_^g@Mp0dO3M)ONzmhrq{kyotVjV zC&b}&NMELj$79bF8K@rN2kH7V1UfdzpzJ^kY&KA31M0K0hN^!=mSZI9))YL#CNgXz z>?0+ywxf_W{xH1cHkC|I2ER{y^N=Qu%L$4+&B=P~2&$39M-_!yZq*}1d@ zn$4m+1A*Dw)de?u`Q?P$(MZr7Ywt8ly0ZM_x#;INY0`V5a#5jv;;N6D?7Qd~+u;V^=zcdATbH10-xp03R@KlzOQK?|_@tEwrH?C)S!kHCk^fw& zX4Jq)(wBuyI5MTVO9PdGBeDKn+RW%mYdxVaImPZH@(0*HCrwUW9>*M|QiyY% z4=>soPRkI2OjQN#2o&i5Yw~~B6BjyXGglV0{=_GU1DoOdB1R{A?!;wX1}*J(`Cd2k zqzN?7`Tj>EH2M9$-{e`x@}C6vJJBMY+n2R_=PF7s9+K~iT0Qb8JK1-N>ho0W=(xqM zaf`J6g{Q6FZ(NW5njev!*zYVq2AhVfPJ0~8mkEDFNZRQsspJkv#?~8swU!g_Sexgt z-yJG(Jr6x*Zx}z;di^tY*}L**MaKt=6fb@16m~ezi;`Tio?ZE*Cy^_1yQ;r4}Op6~O!PUq&!0X+xFScFk*Y?J0Z|!A2_wChR;tAhS za@S^ylBPXR^MuqjRt{!mIfr^4@D;;p_~aYv6sgAD0m8EE1zjdyDaj}ouT5M*5b~o^o&ej`5EhSASUxir0px&S^WS zIjhq~&NUr_7Ut^@m)?(Zw(@>I+-p6*-B(@9D*^k?ox<94&vbgNZ_8j%xr@VLq3d=< zQjhcpC%*TG=adrZr>|aL`!SiMre@0{SRHivi-~MZ-sP@$WN9m|x%PHkSm7GuK6YH? zajE-;Q&JaC?Awib{zT7|;+D**Zrpf3R@)dgTg+NQl>`gNE8N#E->{Q2=*n1n@6OVF zcZ|r1=R#Bm>OZb)Nwn>YYG2~Zx@jDg^1Djr0Tu4~ARC+AC}(hVY>fWF4TcLJv2`B{d+@lrec2zd5I>eg;x9Ht zPRBGknJxsmF>IK{@gN+u$Bjr|p@}>7zKLwdNCKZm(aV(m1%zK+y*-!CUAf@irbIN% zK;cyPB*~|P0^?V>0@z<`}86Cm(x^0X08b*+SC^+J+q${x4wynV#)osHc;~Vgd@Ak7(bf{bxO|46O z5mckJdDBTtAI5`H60s`C4hx6o1+M#vB{-KNfi@OHqjcRwtQjn$W}-YTS2a(1udvLM z)k0}+JKZS^FwLp8f5(Sh`fikojn#Vgd2b-_vK#GXy>L>(OitnvFHUviDgl=x*Dz*l zI(REqbC06K-OrER-=k7nez5Yqa&4@^)G^=|d2TY7-9&W)X^{A?HD&+ll-Cltx`rnr zkVn)2(It`U^SHXRJfQpi5vp0%hadBDf`UOPb-&Lj*4B6Yjw>YNYtx7E$C}8j<%X{` z$*e9Cr$ec2H+n_((u>vCRArb4Quk{O<%$nt4zQovp@TB2lEpDW-(q1fZ}u>WI~QrK z{v;A9GT0^h0c+okNIzQ-{qcKOr(;W;d=W4vqBZ=4PPzsvTZT+rBY~uS)#fG#7(jn83f$XG|EB?JXzpwv?1aQh|{wbowWU+{jty@h}_nt z+T)H9t%2BzwAuEr{SMvRDWBhC0kXmR0bzLev)j1JZYEO;NN^e2YY!|<-*!O+Hvj4x zy80-N$)Ij0L z9K!&R(+M~&m`mN?McX}UyUiAwFX*|}0%{I?Z9@a!{w;?#FPHKaDGVuAmMQ_(czF8m{6!!G@#G#iu*l=}Z zS7>$R?RIlq$t2H{}F!%h}|-%DmkmbxkUUtL@Mq^xVcftZSktV zvjyls7au{8-2m#(Y}PHK7+jV5DsX9Q~BqjjgN@ zwCCdPu02D=tah@3Q4nEV*m(>QslT4ZOmyZPz`7)J)g@rB-+u=LvtZBAemqgrwnYQj zhQeUT5S%1_aW#PC1YHDBs9cO&{)$l)ocKO^387E;rbPhUkl=(Kh~Bom(FtXS2({q8Z)wLFCmH1N8J&IgYHH4jCb)gvhC3DCirItU>MqL>$`jTlUP_F-docr z5xzAM@?w4fDe(M=myoO=Q?`t!rZf|f2Dm^tJE`q6vOqPuX};W%?uCLtiruYy?Zg+% zm(I0AH#I*2k3u#zrC>g-b#%q25e3^zz!`OQWZ~j&a&9VZI4SXc#Q5{gASt6Vj%oC^ z=+g0XOCQgoluZ2EutphWcRLt%{A9Y|DoBB~jT*q#RXw1NUYu+V2hpZ9tf>?lam%*m z0UU_Zo%DSlLvA3jW4&4)9AAR_$T!0_dz&wVtS4h8R-G`~x<(F;f67(I5Cv*N8rd?s z>^a%gt?}4zj04z*-ru1>hc(@k5af&sz?v>|AT5b0kVSd!hey^gaubpe%0TYPd{pf- z5JJCW8RR881Nqbi2yb^SBSn5)!0Zh>f|@-8#MqmG#DW2Yv0KaaP-@R;pmubD0gcCW z84=%%MShJD89WJ%f(cgb09A}WkVPGa^##$5O|uwN&B=>JFEw~6tATQY`;;=UjGN&e zoV=ZFv_O6vF=0z+dT^3QvB9$IA-K_>gA*!??TjFrEgwIN4(C=MwMLiej%+MCii7v8m$f=<;r&M(JBgpviaS8*Yg|cQCvu@Umtf1HDSdr>( z5An#5a2T^0ct1=S^VMSdG+c~+A*+$0Xo$Dwd&5^p&f24xvP(ZcsGb8QWi7~3d^>KB z+Wir$sp1Q%3!JLO>&V<)kN}oyOOlV4HN}Ok@g7{tSNIUY)gI>>4*dMUg-#Zl=mKFz zxaI#I-a#~kq?RKKXS+>=f@3osyVf*s=Izc`2$8T5<>%V)9;1!6M;|qseRItLvG54@ z1CVxn9-Vn9Q63n3f=63pZSoR@;FNj6V&6pj@j=Ej;gOf-%DAJ$&4yEL3|?f24+6aM zYz>hc%{L&VuLWYD)KkGL zVfMrfVl_Wt$<8RZjr5n#sX^>5*w&5_KA3Htf5j35)sfahl7+$ddx{8*kHhha8&|gg z93SU#NY~LO%fxOG(@RE6zp!TD3*;F>MUv$CI72`e6U1P~P*JA^8IWS;r=KJf9!LRF zL37?;!GGGNXlW3WTTq4YDiv)Zv(|q$@t@uSbcA=3!vb+!b!=U0th&~xy@kK&`a6TM zHQ=_|q+?y?8edOvlBrZ1zT7ZI-*AKBEH=>;ddv&6=1+-MmwTZEv8EAat2bIEs0J28 zBe9AS-HXq6MREL)t_-_;t>6va%NpsXM69dk84LWdn+Cp%CLV#;YuY67&h6DLgIzcE z%JUf?ti9ySr8ZPvePoZ&u@1r>#mLfOuFa?j0? z(_2L6FsN@+FOW(77!1}~}LWmcTL*g`uRbE87 zc+t7^(b>0PoV5tW1llO*(d8CH+arA~0`!IC^WwqJHkdO0JqI`%=o**Bm zvhVKRx03B~4K^0%1cg7~XE>s;rW~suq>y9h+HVi3&Ts5+S-L>Gf~6Cgzhi2k?Art2 zy!vE)NRG~<08W?$Oc>POyBl}u6wvo@y`bV-2w5>56wo(rLMJi3oVQV#y_`>f<%UaZ zVh_)1<2Zic39{WAZ5ts(tOiIakfu8=Ap3d29I@5A5!>`b2;~ z+oBAq_W88ud=VPyd=cR*9yRzkRizDSE6=x_4=xfjk@B2o-pS_y9X362lOM6L&EdXS zP>nw$>)~czw%A$vDUYzy6rPhhIX=j)+ZyzBR9m1hcxp8+Zk2yK#}9uopGRK3hYN!- z?U9(Z2{9ej+e@mll(6odfs2H)wOow?n|6m z#NF7nU#r)VFC`8v5B)cxcy{P!P z-ghu=vGRjg1xfVRq8O!9!CUxRH-dn;c%hOnPR4iKo@=B|?A=U9WX?=__>QjLypNF_ zjcxs}a6Xs<4_^9$-NASD_vp83Ksx&LHG+2t%edNG2h^RF&)wPWOl8+5w?97Zuk`^7 zN|J%T_ZkUbqq-xlUKMsmq!tfd*Yo>oupa(7qk!J|u{77-5#ITVqgP+)_!Jl=7A*DZ zM6+QzN+Wv8!Ww^$IV0v&J9UI)VoUSH-}-*+_+jp}hdiBE;w1jp|GAS((@Xuj8g;g~77df?J;xQW*ygO#RSb^@EOoqm}ZhEs%Eg-@kn8 z%hM(CyNL6OFy?eXRjj-=j%e+@`FQWZrsda}^uL;TBVLsndeFI&)dhuts7WM(s7-86 zzj(+>`BpZaS8n$`sK7I#mG%HCyAVJpUojZElKPq`ejpH$X+S4M@Nq)Q1^`wjfwGl{ zSIK%6iicH=C$^K{?lMiB)v~SjLLE>em`8ApT`?E)BhX&Fw5*GLI_P@Y^cArDnfmcG zr|rJ{J}S+$kkw)iTjlcso4B-vlALFc@;G#==K10MyV>^}p;*Jz^)3)v9J}_t=0!vP zOR!I5-|+iAdIVS7mz#;!N9R`}f2fo`U`(>CE4Zk<)b@xkDtw5f8F`Bp4Hq~wd5_gQ zV&LmNE3Te7^nFs-oN2P;=VsW)W#n6L(xY@k&}O2Kkwl8q7<>NViY*|faWRJ(#{|$D z@B*N1VlbRx?+&_bTC+m-C>iJwDM%IZ0|Ke8$aa3>bW9mPzTD4H&%5yfay53eHsp>g z#kp^J0X(%{vuSpSknG;vh4WYaP&I_6`+yIkAHWvs64-2?7Y9T98}No|GmK;_8qXCG z9vwIRVDRDDL-3AJMD>SjhsEXDkEtv|i>LY=A~aV#;bab(z09uHemdJcQ*%@5L*?5OrVAV(hc zC1|@75CYlyF1>q4i@&KUx_Gt>r_}|#FE2Q5`cm9MvD@(~ecI2`caB$i5rqu)j7-I> z5zH4dD+nrk?T$Jy&Y$_1=WGBK{#X(&3N2HYKg|HyZPfGkKLw$-4l+pwkn%?6ERm_p z9j9uAXmgxr67P;wG)7$w4TR7Y=4RtTr9>f(JqcUFtQFGptoaIv*K11P8N*klQojPt zv&puNqM}nE+D-@Z&2$E;`SeI@jmg7u)eINVMeWQmzvKBxpJ-P$gx8^mTQRehxUFyO z!;zQlDvtT| z8;v3<@F?C^rC;~&f>Na$j!B7Ng0n80bnWJ6EMpn$(b9~=np!E9edm7O&xvE2{IvP* zr}{(b;@Me;%Ed;}gO87k_FC_R+(1Bx_(j?Ua@~!d&?Vi zdMcEd(RkTF8VT8T@dqO2^ngr7L%|oQ;}Yc^vH;(e8-cdfvCDuOhH?~js|u9xAX(7{ zL{4nI1@fk{rq6Xz0-b9wcirrn!tXq%70O&bFH|Z7d1{SW(hFOV9d5jiEd3zHdd{ZH zY&joTyfW%*MmpDSfgrJ9B#6b-q{|87$g5Y6&cB4wv#9z{+XXf{KqW`WUDbDHi8Q*` zxb;oeYPy~IY6e7b-)|{~($2~X)@&yLwmW#uW)34Y_;w!?&^UXVMI(M5ub0TBo@LMH8lo@HSG3nxc;HcbYmAVXGk@JZijYXzCLM8vN{B+Jzq z73_HRGK3!SxR~ef@yTGJ@MkiqwGU|AiSubn2D*M`Ip{qUAv-b!ZQMzb69f*rUhBm9 z5!2@d@+iYsa(6S#>G*HLz31LDIl=BWii`6A_FEI?6(C>sA?L3n(%Qi=8$J-Eycyv5 z0^_!op=caDHBw^3LA7ibaV`7 z?^gmZjtL#Sz~1C|6_ByB>9`)do*Z$xp-wootlpdf(fEP3eU}bFGUFcDt4AG+y$ae! zH)SgO;d;9dne==i3UG2)`w&1HdApIiMCamj0BvRoQCb0r0{N_2OfFYyhD(8k^=Xs4 zkQFeLff{~eNd!zE%xRkmk)no95{k~8kRC*G@>;b}P@`nM|B1`;@ClQY5)Af2@e-{s z&yMVEU-aGr9^suXN-j~J4gY#{rDZ%)b#lcKiqBfJBZn`WkFS7CLE*u%6+T1OUsSAN zfr8p1f03+UFak9xR^pN%O8}+(IA%~N&g#I&2{r~`7lhYfd~1T%lDYN) z?|zRNV07LetG{43d%2SWSfQd50#J45jc^YV4wiAd|KSYeNpFkb4_u&uZMNMoXIHh~ zk=MX9!LfZnpw8(BA2#s;%MI3W{2Tr)f0%ma z@8|)0S}+srWqI(G??}jCj$_g%NaAS<{G2%J3?T|+o7y9~xWIHc96+cN?OEY1-~!9Q zRVUJnaTbo?;;M7lJOKW{86~Q#!iF9IZ!>_6VY`rxq{45Ta*wUFq*GO9N#ce9s)!lV zO9%HxAacx+=Y_yPWm9YQP?6Vtrh=%DFj6ACe^6d|cvHKm<{ZWv5F*iy)Q7Yy%b(`9 z+>vx32-;nwjRw^ZK^aYS2fvM*hJd93y&B=lB)*EgdZR8yhINVbo&`SlK+gPSK)(Qs zLpq$&aTjydBg;uxGT0es)YR3=D$kw>cjS3tsF0mMia=u?thpiH60m;{)}AeYLL;h( z;5+F$Zc|MF#=GI{(AAq?7%)`>7h^aemQC0-(^)}G$_(@cHqct^NStz>_=X&HCpPnz zy=RVNea!{k8S9HN zpsP{H`YIBxgn*4AxxYAm;<&6y^62VI zxPZ#RyMd{DimWtjEgpWw6NeoxMhTycd37XF1c6YFghXUb+h9Z2>*QC}S90QxX{`+L z%P)3oN3IS|z}Q@l9G?P`jk8gso3V{&9(x79+Xoy0O!=mJ5o{ zHI*mn8^-CB4^^+|XW;gYaGIYdj?)QBx!cY31qF_5M&nr~#;KyBj_xTr+E#ND!~H{X z-g_%YNz`}`pCUa%rf1ZxBNgm3H|<>tY>L)r9zHh^C4Dn9+Ec{8!%+25(u$Tio>IE~ z^ORu!`HHCQ%soGyESj6=sDoszUw3{#S5S@iH_rKT{m0?W?4WEYb~@yApRXd{q>?s% zi1Z$GS5sQ1^wGD)yT{oT47P|5@4fnPc}yGarh#Kw6M*Xoh#D^UzCG#Yp^?;s6h>)%h|#uypFMlAbl{d*KJUp#nG$U;i~eM+Q{ij-{Br(^W~W+tG)j=jbg3+6@|$a zD?P@2vrKQDtb99sCEFEo0aKwO0#AJB1FQs|mqrNn&k#_L?csvhw%3O^8-A*9mUBzs z$YCSMjqH;AtCh)!Q{i&6#*SX->C7BYtL3**R!>{2?Ycgd70yUzG<~+q z?;j45pP6Au4r3hu5@QUuPE=SqCby@#A6YL_Bf4PLe1rCex8%x_$|eRn(Jfu>Pp4-em~%IY)-3WynIw6 z$zIhlU0t$=$8cn#*ps)mlB~1t=q5F-bf?y2E>_6^brH8~I+Hd0L!dyra;*LO?rp@} zLqzA}ALLh(mmAT8LOo#@A+we{Zn2hoBFJI6mbck5v`~M7{}?$qg~Ezu>T|atPJhX9 zDA)QGvoMg;aK&rqch5D=kJg=36H9hnz{xhlx@?12erVy3)5GUCRCh12Dj02{BU!5mGj9aLO(%$<+ zm%XqVHs(QuARkWy=8OKI>%v|bLd`N1gH;Xc(rcRg_PZd}mk}uz+?kue;x4jH2XHk02j;7#(oR-A>pyLa%-kT8ZDNd}Q?7 zcg)@jaXhV|BxQ`g9yU!By_J(asz!ES5dW!*w6^ZZgDxUVKWA>5#iiVVo3Z9BM#{LW zf#!eh41u+5;=w|b0{0AQ$Mz|>@e4rF)6sT40WvNG9eo^AfgNXcWc!L`3#r9j}Az z`z)z#zViX~EX74+ag@s`Q^+n83n8@0^ZxWgRu{u;_g=V?Sx?$+_&uIVy&kOM8(I|NZmZV$eYljXF+D*n(PaPtM^K0U zNSCZ@TNAuCYsU^Nxg$CVy7zb*$9Z#jQ@<5;MOy}qKdV0^=h0Eh)g`~_P==U%!vop_ zv5aw}q!@-D(Oh*S-;H{ai|E6(TSVSd{B~a4=T&@n7ZF!NcXIu?=y+vcTV=qLO@1U@ zzh&?)64E4q>JDR$;)#<1q_t0Cz0EP7s(T`XTHbsS4WM?Q4`DLEVk0@4d$UU5dLywr z>dT{go95E-FEfRY`*lBKFkui$!ZUG2XExY8-{$5c1{Wh9C|gbxFPfy>L~f6x_c(|c z#qwa5Pvdy3H91%aa?%-8=qhM46|2VJRKH`c>Jwfpk;?9Ws=vpvnyyPg>V?)Vc)f6T zy_0|}!v)9zt@e8kOLHcnrF@Vk)h=tzDh}2MG+%hv+NVNX@`WHK1IMBh7tNW{gzQEJ zu-O9jgj)^4^~q&fLms;TF?yeaX#Fly7e(2J9t^=csS(5-P>Rin(;2vVI~?I}X7R62 zh5%xY^oVZ;WEc`80L>}lmyB(?p^1L0NbNxo85&hSX#?RvtlgDQo9X!o52tf~&`64VzN zbWmRn>x`)%&-tj`p^9%GBJGmdL`;yWzh_Mo?|@X80HA;E6ev`uV@UZS9=PjkLm>%a z2WkBpz|`5&At{XuyW_DB_uT;^eljHS88<+65P0NYAXohYx-|wNUF&D(LmszGWi8n3 zdkU>T&{O7;B{VUtWyn1Oo)JQBh0sRi%=0(C|Bp2Qkq< zP7A`~J{YG<3{TH62X65Ib}!Al4y7tCegL`U4Qssl&{c>>>e!}|`a`;?-V7?yQ}c@9 zt4*8$kmuus*f;Q{rD}8D7qWQ8Hi)wK99SUfpo5=Mq7o=oo}=XY($gV@YvBbbCMi>5{@%^Z_|MZ;#^x&m# z112eec3OW@78G{TbSX~7GO-dBzc-d-p8`t!qL;?)h5-pJQ(R;F2@D{16Cj6_dA4p; zSAolYS9UtYz@nQ0&`5*aRIb2j;+sY&Nx#R?neL-A2)L>Mr4@vaLVR0*t#8aU6b@Gx zRpB9|fXQ4rZ0$rmmI*Fl-T;hFXXPxAm*V3DD61M_lx8ELw;aI*Wm!wr!^!#&m=G}L z(xV=%ZED&9?SUMY7F6U>d_PIlI(S^aO zN8{YnLkW3Hb<&l_Z}n4@1u0xmje5_4bVjFd;)~e%gM`$74ud{M{JroD^NJIo=9DJl zr!Q8Wl3{L7RHRS|M0T(`e>0CI)u%tg?G zp$8=}Zs>5eK11M6U%i@AUjyoaQ3iE}kSP)f29VK+$L8)O(h8#BQI`q@zKInOnU@A# zUo5A$W&?mtyfs^{XNNIMEFIs$Z(C_uhfYK4a&og2NPeKJ(|I{lsqw?4U`=TL?hz4j z$->2e7$GmQy_{uGwIoH#!1`GVRNXcB0fO>vYlh2#rF>8sh=lts8#LS`13}XfIP~AP z!osL>>7WiH2N+@bAZ><3M!$i1oy|v+FPH-c!{cG~%C3f@MW+SJ)2X$i_(Y6o^;yI0 z8a(!Zm!@221r@MUUd4!2eB#9y0WcPx_Bh9@km2*A<`X{EkAm_+fFf)dz%4v608Z(h z0EN?A?s%;TF0{@>9OXW@yqNr|Ia55qt1Lb|@_Zt=nKEU)WR7GiLA(!N~);Nfry`6-8dyX;m zc8ADh-~#7@n@y%=-QzIJI}NWuCjOhjd+w$ zuYe+qK|l($>2hXi+GuKeY65!w7z5`U=mJ}CJJzJ^J1&DsD6SVFIxp4($giP5{yrZZ==DH8 zP3EE|;nTNB>Mu4%M4x(ElG5-o+3JINi zZ)dXa$6f{&`+tvL{Km~^FFVr6-;q|kM`Uwc9blwm7(T1|w)_!Wq+;uu>(S?Xun!Th z7WnYX`Q9FCe{v_rAV77)hMk725K{kzCL3EigbnAm>8N%&V$S?v-BblB`p_^SNU?)r z4?5UGEW&-jT#y3TD=s9fJp{tLh}yocs08;8RHR+vrrO2ZLDyXWb1^F** zpp_gGF6G(IlekA4$7Ab4 zO6H454I3;mfG!bBa^q~6bxY$#_rv}l-rfVA>i7L0S4t_AR2&(VI_k(erI3+` zM4{}>aU!Iw>=h9XLT1^OJ+m`2PRPujSy>_3`+vRk{`UU7$M5(1e*f#?@$fJX=k>Z@ z_kG>heO=G7SBH*F4^p3qinzc+3D??-NWWz4Ewq1Mto(bQ7$C@0`9F;n7cBrS4 zW}8>Ysx4Un9MFzw6}P({;Cb!_?jc|lNY+0+Xl)23@l5x*J0;IFgX-GHWhNgCykARt zY!u?kvz_l-aY(3Sk+_s()i&@l@7N;A?{q!yW1Sk4ap{i>4@l$(gh-dfo%%00K!HcE z$kVuPWlfmHX}t8tLcEH=)~=rg-d4fDF=I7FT{<)7>(v8cY>5A-PSMyb982v7j@uN; zeD`L@ZJvnQ7>UpJVijJj8QA{1dB|~yCd&Fp`95L)jT4;qr-`mLQMKK!6DM*KqB=!3 z#qd{`w^!MEwhhA<^lm4=Mr)=1q<4@jIecT)&y0O^!)xFZN+b|3Jlpu8X*%qVT(HS#%&DY9)9BM zk#0AepI;(3%;&!7Y?X&QsS9uEKjH@_%iPmL+mfbga)+XIt?%XK{=9O2u|!6&WVD>V zVowltR>F&UemR{;9+g@MM0iAGbV zJs3osH(nW)Zk_NPo6-Gwo=#}+gyg;H^D$J#Fj9&-;uvQ6v>rsaVpE|+`b1uD+ho!&=$ zyUV_FK{F48Ac9+E9p?(_1ac$X+M%OK)T_F>(Z8m&-14I<{>7mY&ga|;cv)DX+7A}S zl9t`pYvMP9q=dwsO^wmiQbFT27ha5^_0UrlTfYw@Co6k~XABLx>>$6+4vW`H&GVqo?`os1$w^JCX@3uU$HF1TS^>bv~ z_662A`4kXD{1by=mp%?AA^KTqP*~y(&ggaatZsg5m$5rnvJf%tagX0U z#_Cp7?fx17z!!<;y^=#^lV5zUu+t)jx+BR{X6^nE`>zMjG)Kt?0gh(K4Mk3>v*xVH zAaf!6*|FOr!LuJR=_v+pMSNr^@qY54Kj3*!P=#gnEiDuXoZp6}KnH}g_0Es$hZAEq zj%whG(6c&C79=U-GNeu6HT*i2c=ezDdLJ(_JJU&ldaTFoL8Yu$u>vfapMvGPZsTKV zqPm&=Jd49puH;45(0g%y#AWT5L>oo31@ati%_sB*%iUfze!+O_4cSnj%$T+G^RN`E zZtV9uz50hJw_Rcxc#Ff(lG5=LfL5HXw7NGORP?Bi_<3F?wXTHh?0Mb(y~JRVrBGgd zMEXtpsxNEK^4nSyub+g<(`t9|SAsn6*c&#T@bmm;i@IYeb#Rn+kXvOBz?yhXQ8riU zu0J{FPk$3SS#Q8z%NbIY{n?6i@f~%~6{^FKySjEM04{+FKn`x-7@%qWgi_Mi^RgNo zIKK!&L)c8ZL4|%3n(eaM?;X^{onnOpZBg_)Jt^(F3~JH{L6wP!0bEdX3DoMM?D;E# zxhKHs8meA!u4Vz&F)#`qtFL|HZr*G6;camy7~lH4K{EnyU~_#?nN}FpUC`s%ZDcOZ zAs8r42htkkzIjo&7EwRXNCq0;S_44@hRg$C#05*KVE_v>a+6oZ19!Y*;S5pCDDTpp z1)%W6jD(iqT128X-NieN>$pI#1cReC&c*X8a=NPOFys=R)=uEe&I8F5yx1;XheQ#w z+H3d=yXC7}L1|#)(rYH7ixm%46UU>L&X^I`r=6Y8^l+t0}y;O zI5!z-NBc=W7edE6@u2~Gy1?DVD9KFokPi)wKKLH`d96Zd0s~FQB;F#!Pf|FNN)R+~ z=y!zb5Q!UOl#g~QJ3y3Oj=Y*qCJ5bdipjF2pjE6QywZgwK zM(NY2@ayM=BG5T+#KfsfBzpdXc=WuTq)*eT12 zxH*axpn3qlYcGRl!IvF!9mpHhLzN*i1sP&cqhcYmeF()04bkpZMhuG*3Obxnfijq_ zxuuBGhoRjIyyW#j9Jc8dZYUDU05~fO3us&hGzaE5_(`4=u7UF>ji2ZJAQ3+Vm;C}} z%g%r8zpZ}X-yV1j3LlHR2&ov?8SX+-hyn*QD?Xm zaCpuofJ#VO0GzORw86&;$f&m%{LbpvjVqz2#0FeO6zDpxq=kW_9%bk2n(iex^1TxH z!|7LSN zt~+b89T-A7D^z!de(VLF86fG-tigGoADq2lB}~h>6G!gT^tEX2N6rR|p}g(v^|Hkj zz_jg#E*^ArK=p(k_?Q7+`2_lF>d1Q8nafg#lL_be8s)ZFy;}a%@tBUO{Y3SYU&x>T z&S*KtH&$Lhjw~o1`z{Y-b;4PF_pyipqmv3K$UF3Y=N)4B9&GH!Jwr<8+oMSoEhOsl zsKMSouSsUWW9HVLq&NwBMJGY%6P(cisJW*TOX$I>BT6e|+Je4Pr4Jz}VF-tc1KYc? z8|@EKJ4;p!zXw!m03+>T;upm?-Hi=BR{bECLaXrjW+I^b!21$(AV8^Lvx}Qj&wB)*p=aV#?DQ9(IOpP0WJR}QbCKub&5fu`P3rz zbZeb5sDRzlDyDeH9=BF8j6Hq!^RZI z4{Tm=vZA=y90g|#!1A?Q+JQM2)QEN;5RVnMdx_J1un>RB55!S{93tI*W-U-XD0#DC z_5qr$0HY)WEoZ+iJ-w`txZNY2M;*f-F^)RLp4+_Q#93>e8TY+o^*|u~f;j#tAG%9K zmdJXSm?)rJC3kevxHTGb5twsNPB<&?=21j(LU?q(#1SWu=6`OizLmP(@x%?E1W9!= zFwK)g$!(p_AuD_L&J;Bwt;mh01O`)PWCEdJr{MfP0jM~fL^m$yb8?WZb#~94_pOaqq?1rc+YN-8 zR4%HZW|8Qnc=66&a6SLxD}?6JHfN@RZvQlNd!cNs>Kj4{-z7kpKgl7=@_icjG@pVE z7VldCD=fvoGDWeFtBH@11jSH;AVp9!XoAV2e3}Hoe6W$~X%g10^L`@RZks3KPF|-k zUDBA5QAnHV!nV)|A8c+lexBP%MQtS2x~0DVm4drgWRD7~;E}71Hn}F(@kOe>d503( zl^rJ35s^3Tt3d6!DVO=n27R|wP?_K9VDKViIZV4@n9U%2p zI2zM~J;S*Cs(&gN?z)_BYA}y|@#_=n;3UGa*>P00r`C#FSb-YgztRKtt?O$|1+&ND zFf8;n%xXWmcN5_Go#xw0RoWOY#r*IZB9_`#v1L^$RUWK~athi$KNpzp)aR4#v^n*t zXs)`0xP9NdYha;%qqu{1``qMI|Bv|)>e*e%{qF~UbfeUYO^GC$r4LEc?J7#IiflB^ zBobsDmyQWXMhw<^I^Doi$dJ+U~t>gZrY)jC(2X@Ac&Yha`H#MXoLQId|L zS%(VFf&6vlM=8DvKFf=xKi!$H-rSIt0qBKc06b8xrZ=G6G`aO?*M8cCY%MkhvpBlGM?jTbE&bwbax$lYFtdqh#=W zrP_wqGG)3=g-=z)wLT_HV`%O8Bl+R32;1S)$bD^6o!9Y`(@_`r**9{?A^gq9ZH^%y z{l4`M_-_0`CDCRXLtxFhlc2mwvP!YRG-pCAEBg>8(Cc^4VLe!pPJfWuGc{rK!0@KX z7>1x!QlIPPByFFTVzb>^`Pk`8>i)c8$@m9dMG# zBL+lQ{e9+d>N{kZ4)q15ZWz!*3lc$8%^;~_;^Wt53!;>M4letzmdkOSj9-7x)Q%?2gba@1S zP-S!uz2ZDFwN5IN`6akKx%Ngj{&mdy((I=Lim~K}-3YA5r9~(AUSB`&=d8h9e zyEe2?b-5dR8blAs+JW!e!B`Uvwe)W0GdaR>1;n5SbvFSE^|0>iy&C}HJ*z1OQFQB; z&HKADK@Y9m68N3Z%976U=W!5*TUe{``&aji;?HP3x+|f<(;A&Mt(*F|<8ABBt+s=o zm;#O7A7Z!4;YSEplIK3U$_MF~tGmk(5U{22^HRq8-pLu#!zD#sZp4w0Q88m?Bc2V* z9_2q^(w7}o=tD%Hj~g&$(vis_26j2*2#+Bw;730(hShc!wDs*f zd|NlD8Q4W~C}foD!U}OIRVbqSBq9}j)a?5X4(Z574I#H?xG!wUN{_9S^@;$mmQf#ixA<}-U;_kOZtzBbo8=Ybjs zLkx9dtFJ5m*T@y zJYi;S8|emM;zTD?z~&td{3-DTRt3Bm8d06F2auK-Inu8TUATp}XvAgh_4DLNnOX>y zhTE5V{WH|K;4PLR8!sCt?2|yDs7|JWe+=xzo?JukTIlP|0C@BavacKfsq$k$#EoN* zlR!En2cZh?2`889_@mCXO$T5r5k)$3#Q^z~y+=^NxT4?*s)M`(a+rEBcyOHcd@#w?@J#4(b~Q{J{QSOFC@4W zy$Zw)HTJ`Nd~W|B8bd1x7}^BFJ;{cSqVcuFL*{3Rpj`NdArSU`Z+~bhr)<`I;^w2- zw$e9~&gBhDfx`b^9v-lqhx>2h)o%wo$p=xRF|O+C?>D8}!5$XSh4N&qfkB3Kyg&Di zNVg9d4B!H~u}~WT7-2jJyt%gkhv*E^?Hv~Aop~i$IewMF)RVSmGRWvZKUTd8Aar_D zc&<6=SWtb*h!yTx3Uy-uNO(R4K=^<$t>;(6$Z^BT#5(9G^&j1H z0KRy`DN6wT`+`pr6V{t5L)`&9R&#!EFQAud2=x6m8a}iwh}3XVZ$1E0b9${p*CZ$i0N~R+R@m?E zF!pmI0sj4GNG#b!Y59R(hp-?7cD#6@n9>xOllAB-nRAl5VbG(x#~2P$g@WMScZwmi z(%N4S;K2jKR8tnaU~dMV$3PDVF!OieuT&w67eG^$oe$ChxNfqVDpa}I zfWwZX&VC|g{y7**@08I?`pgRMc1$$X`{{Wxq6A516gk4JH#i61N#A5vJ;)FwA}}2T z7~3I_wU30_laU{;!HO6XO(FN^io;euztk%WB?qw-?9hA?c?rDkr)w37_|rJ7DznKs z(2jd``lkMam)oAPh*rwEsB*cbDf_dVK3`kw4iBH}Gkp1wr@LfY_qM}hamu|gZYAX$FH#AUT5I&ktX({kd2Cv!-Qb(a-l2QI ztKaWgyMK(SBVh^AX5Gsg$Rp%}gs)gWp6(-@u}Y)RVN*$rug$%BU7oS*NP-J6x^F-r zu<11Bc^C`Z!ox&9^zhB!F{?nT1X&7s=F-8`Az@P#Q*1zW(rjP3>Aw-qBCer9G1J82T+;7uvhPZ*4vHc?Q4P8$Z}y- zW>5A&t4->Jb^0+}61!_NJNv33|EyYXs|QamUhLyd=D_5t=X!PfY1G`+u6$X_jI@@v z=-LO&fMT_9DFAyR{gD5h+LX_57~H)TSm0v#$7`Wyt}uy!_TO5ldZ2?r!LN&fJBQWW zo@N*9z`hKu<_f@F&%>_>sJZ8+zl#aWCxkp_A9^edB!~T%;nZ{JIBDll z6+WAC46CBDh@gYt_z^PfYOJ3_U3rwCx8^V^pDHj8MA_Be4Hj3fLCt%*1+Ch2`~+Vln{UUQ8Q3(gJaG? z?T5aSezC&L9RC@k4dEwt^6T%tnP@x=o$lBkLr6og-19)IiF;zlE7%r#k8Rd55v14h zF6D$v0NFwk|Kv`6}T5t(-AP{U^6EQAKy5no%55W3-pQwtm6Rbq&UUtNCiI5#-} z1yU6XAQT<4fj8MS2t^6?fvlU$-B$ zuP9Q15e=%9-xK}2qu?lqiA)k#C>Re*0WOaJ2Ai!fIe>nFKcKHp2FM^tXu?uBsu1Zg zz+&9TssMRT7Ui8W7;!_r8VfLCCK?t~l!*r2g0!OMvpMxhh0;i+++tAzMvaV{{&nHOOIB??;txywG3i4(^^bc<2;Q@twsvFW6QONxO0RXxRI@V!nYv7nbLX>-@|w+iAo#noXw>ZK$8pze86?jr+`HZ6o)MHogeus&^e`g9vF_d zfa9^RBSeKD0 z5b;d=H!UYCz+XfZT9#F4urq4G1UZM!bGbjN{?9h|4@BL)Bzw%>NlsuPR3rtYo?A^^x^h944!N4lfn zY9Wviq}!JsqQD)mR`FpCcTC&XNGI0U46rJn^v(jZ8Nr)RREF;rfb5$XKLdXhre7 z3Oc=j*`Nej4Lb#Qs0*cPLI%)r?XHeGP9aUrE*2YL3yMmFza;y}QV3voh1!b($6j#+ z;DUK?Zn$(o5^n)Cn;q8L4ZzU&r&m#s@Ff4hX@M$PDW)%f= zkT|UGmdNqVuKf8AfMzPaK!hE#9k>K3Tuc^e^XtbG=dS`%43Rdqyf@Z~1v(zYX%Nvv z)aJ&l_9>9Xv9iSqTS+V<$}<=4*DhrOcTy2#L~;TB(Mn>Ba>&N#L-0!5ta)A+4WcTo zb@}eSfr}!BGVLz?ktt+`PG~`ubwCsK2QFS>2~^ORX}8k=K};_hA?QCJj4oIjQ>zI} z3E@>-4}=ZVak{Z7#}@TU&yO6!L>ulS0V!>d|GKF{AWx^WvNa=Xpy5YoXaW}ptGpk1 zvZgy21O(u8V?Xi|aYOC(*$!`-qY8@-(?GfelNj=Zzie}sX_{n$fo;;Tf7C)bn>?84 zmV!mHe~Sj3?oE6KB;tM2Js!Y+g9kE((J&i_ZO&`6nv ziPH8T$)&x6lk*^VW^1si`Jainw3;}V9pKhahKE9}JO?NP!`#g$HYY&ph$-+{6Vs;T za%d%M26HYU{pA(5Mft8L63>wYmghy9jr6!F3IuC>J_A3c6MMm@&YGowl?~Y%I4WeB zk$!HFgY@Z(z|una1Kt@k5o{*=ZeI)oO}INdx)wH zt&BMKZ}sPRExG4JX@aOH!#Mz&3|R4UmKxJ!bwfwl;!hj)#ra>&CV5u?#HZ?ZX6>S? z{p5q_WTPujluqYp67f?EHz6Mj{KqbB?<9**-g0bb)C zFvl9tI*nHhh&1SJ%Kh|kTuY4bu3KUJS)T6~Sz}APD(ciDhMqd{sbceoQWsr_&bh!v zj~b6T&Jt8u3T(9KDViD9s3$Bdnr7&!Wj_jvWu?ACE{?UYiC?U$cq6v?9Qctc?)nwA zM%rVu4zsK4m1+}S%P&7{|F9@*`_iQ-^Qh-Z!8;+|xc=3xJRzTznB;z|sMU%uRtj+3 zb^h>;@@v|cc%dIB{8)uAWq%6=RCu+F2<1Ae-jp`R_H+wfjXT<&Jj>FdwDyZxzpn%<_3Lx(Og8@@B z7K?YUIw&okz8aBEORIiIaM5MJe)nAA)SLLiXQfy~lkUg4REvu<)75Wuc`G+- zct>#4!^(+mRcGnDRZ03EY3s)cBy0*UZZTUc=?4)dE~I4kwd=U)oV-~O+1~+SQ55oK|k{7 zW5Kr4B-#hq^uCJHmUqLxf-C1G6&HHxvgGkiX@4hr2 z+VSJi(xl%7fH7+L0&E}%nm^#JDP{MXAui81`Cg-{a_z!DV z=sdcFaT)p1-ILnUz!gt2vpfXd_}nCQSk}8qdSdtjk744B=q6J(Q7}wYpp^|C8`mt6 z^dy>!3^H}-Vooq*cVj{OO`47*gZ_rPI}>ykd7!E%s`2Hl*mPsVsfpls4?mtqce6Lzq@T`9mxu_da%w!3;Qym^j+Xfrv`5A%>FMdgQ$}nT zw-0LXm9E66q@*d#oM%g(ni@T-qEg|ON$(Eoy?p)x0YC6W9*QN~{23ayH=~2}XZw?6zs+DHDRZ(+YOk zS0WkglHP02?m8=_w8SW2u`)jB(1bD>+&C!sXy8VdO3~Nxxi}(+P?puhfw_Z2ZG)Nh z2RZY<#tut7?)%`PC|_MpTJz>S=lo#v@FaEC_R3s6?iG=0`u4M`?(+J$eH^_4xy;xK zMT0!3!OC)U&)V#x(qqmy+w%8r5Z>OXARda>(rD)paO5p0*P}7m{5UKzL~d>ol~}Rs z!u1n;Xf}`G^nBV#Eyr=2R}$tynYLU02bZIqzJBsNsH0oMlr>8nAaw9LJo z=8xxBVpxd7S1TrO5Wh@qZVc}`#TemyKghod&rrw}cBv}Fd*1goZ)9>)n>R=IMY?l= zRvUXHzt#U}nw!`6IhH~4&{|s2w|YRCO5c7EXq9(4lOS;N%0WZ zVuowFBUxUJp#;v9nJ7PklW6$sZI*p)5@{Nb7fdDQ_cghQPNd$S{_#zd<-?)Frsb#7 zWlaV7>qec74_*MYD!{B ziOjrz?(=nU@IHDUrt5LiL)zH}*!Mt;I!6I+OeJ<6k}Jm5PGq zWf-I-?XDcEkT5#mt_E_{0d((u8DyDl`eWv=`03@n@?oL9e{s0Xl-;CdOcU%dX+GCPlt+7Z}tAXXX|NdK|lOu!lEegq!jy& z09VV__|K3m8Y&AzDys^QPwFJoO4o4VJM>Gppj~JC+Y!^ zR4p~_o}@F!@gW{bX2z=`RWo!Tj4yhpDeSMZt5ON>(0em z4*pQOvRi!xj>=uw24TnVA2-)Ic%KOH=&EPfh^*jodT*h zLJz-}8qBZk<-+H?E(+QmV(hz;Z(zP1DPr31ev99PLCExb)8H^I^V8bLh^V~NaH`4o zF1wLWCFO&-v1z%$(~79DX5Gb)qKUnopJG?siCB-G5*j$sC?D9&C6q@N!(wG*5-fb= zXL~ng=Bo8vrkF$ubItn>MXIy+3})vl&W~<*%K%H|z%~j5lIA;)*_X_`Uu# zjBO9%9)?BUGVtiTuyy|$+4Y>1DzFW+Qx^}f2|t5At1S4~K+7hb&-(O-ObXv`k|rl; z89MVW3wU9jbFUkzSD*2&`|+d_pTI!#2q&YdpsZ3(vM(bm*KyFlyxS$Ng2!@twph8% zQodQa--RfG=iRlLBdpYZnMxx&^NF0mgO}9rp>Jn3qRsEE$RS-pWz;l+OqJSWA*3ctM{@V zE*aZ%X<6^~5cbHG^-Mi5G?}QMdN4uCY5J0({^!ws5&`2Wi{8FxMWWfpSWfn;0s^j3 z0R2F{+9i&7H>?^AQ;S-*u#K4+My!Mw08dG9N0*Y@=;m7Ag zi`uTve#8+u`lZqJnQ@be@5hu)>gX8wvN@F?Q-U>EyiUd3Q#uw~ziH>Kc~tAIe052E z%2G=;^@?Pl^AbZ~j!&_qaIxUrn=ZBNd~kQ8WwrT z^w0Y;@;{nwW?2t-_h3rmvLBOhmcFIs;#0BkwEN=eD`bJ6qX(N?kLGUkKCMrE_C&2Z z()y#ZWe9I9&gbsX{@gRLx&~|PMh}X3)6=R34G+ebcyDY(_IC4kwa>MCJ(f~u1ueMwb-KK>{c4K%WP7p4WkSMQ#qi%#LNc>5w<|LR!`AhN zV@2m^9$25Ex8`@B#^9{w9^~^rGN13vtjDdNgk4DXkwV(71^pN-na5?ns7`@^D)RL2 z!nO;Y-|lnVQd(l>%eC3K{+z-NF*{2HN|Jo_q>XDfMWbiYOjMrZc;z?KHa8ed7&0ce zPZ_jOO3H1RwOJUe&93dVT3GQMe&u17{@sN|!jDndl=_HD-}M|2DN30^1)ooIo<_9( zL)(aYc!!M4Om5laL}-MLT_ zDp5Oyv}`}gvw_DRpXg3Dd+Q*bi_hBKF#J{LQ3*Tg;{&7$>-YTFS!RPTqD%>!=qZiz8QOH z-LHAZpTyb6;0B(gPlOFaI!>i3ha&%xLran(#s=PXR$M=3T2F+yfWQOz4#o>|kdlzt z?O4-+eHmo%scNc)h#WyM*}J*@z?7II9B(b9k{zy8Z51F_2Mt>7@mZ9D_NO5 znTY<><%lijpx(^4`dPj*18;>aCV#w)j}GMyilIq}w-XW6aJ3z?H^gJ*h4^35wRM?~ zakRo;XvIFTH6)!Jh;$qv?CMoHNsN-H>Rw`RUP*{k(HtO?Ji9@ zmUv{G!R<4ljXzfS_Uwu1U2S|Bz2h=2)78frH%0Pp6ObSTwn0(E8jf<(!SEy~?F zFKJpoObi6jr=wdfxYg>mjYg-Vd+$68FV*;Y@K(v&4JY=nq$l^+zy-Ut-B1?cuQ(Xy z`=}O}g`{I+%>?dw#0%`LB9JS$X3(}~knx26hq32VjYNL~G-J4&KGn&DKTJIhP1Tf3 zYM&1xj-Hf%8li%@s@Q}5qZPDo*QNQ!4|>?onapG_(9s20^NC&*+ zPiQN1MVz^jYZ|3WGLFK~-VLD($$Wtc5eq_;c;vaGRKqBO{2Ce@EN|`a`KJ;1zk0dv zZvDGm`2WZUoK(J=!En(c9XEk2(Z zR3p1O{=N4~BiRH0--hacnw7(J^8ET-es6rjg~-_2i$UN6tC=AwH*bcykr`xs78Bg+ z^f~Wd%(q7&8&3lsC7$cfk~hrxF2A~?oy3!1wof5fCg@c#inZ~oml`5(r;|8x?bgsXez!&3WKkM!TR_5a}t47Tf~E`tQ!kza5Bw8)bJsiUxrqs+_f)Lc|jpkg~t6 z=7B2s_qlLI7OwNtKMk}0;X{mgdzp69ZUES`o7`pzpkI>!L^ANlx~SN+o& z-Aq!x>mX?3AkOH2Gr&fSvQz98wrURs0666jGxG=kj|{5~!BKlO`KOZRi#-YjQ1L-N zN&TzO`+pfrUtoOZBRZ1atGoxnOaSo#7yJL;kn+m>vZ!xzz3%XQBdCrS!Gt@5!4Ad0 zT1LaPzk!`s(p;j*5e5e+jQ?p@{(Gim2zSP!dF1F-)G{}Mu6T*$U9yl8MLvD`bLIVM z>i)mA;QnnY|7+^|opTz+Qsn{^85t$fe|@eE_h`!fpGkg87x=LkM4&;}4xH6_{%t=0 z9(<2~#HQa%TI5aelvg-M@~+NlvIp1LjTuh=cZ|IcE>e%Ct5<{H@~>t3rwRM9-)8cC zWL{)oKK|c(>VFG%^1BR4|FNM^CaA0?fj{{fXdHsc0P?Bj&jJ5)TNYHD%#TdGUe7zXY5ASs3}h=|BI!adZF6^sG$r4@$4qvJpA*$FRcK{>!xA36Oia zAe5YamJbcmo$V(4-;$Kq@y9Rw!c?yQ4~O{H{jFrJ`yt>y{WIY5%CNV3e9|f)xFQh& zneBo!3gxxpW^%(N-UhAJUGAX&fqeYStI8ZFnw-P`xhz;@ zPsp|BF0)6q!?&VN}-2jG(bl6Xb;kMH5JV;D={AQ6T32=ZYN`;S-s57V>%=4$#N z^^oVy-w$A~|yT3!S=hsi_2Uppy90%6Y zuf6HdIPzyovT1VITKb!8a`ifrJAdUK{4?$JllZZA4z zCF)AbHy=z&5b^nTk1a6fXLDCU`W??tm;V{P6Ry0DM?Ynes{W*9W6f>`bh)PtGytgj zw_Kyb#xO=G_OJ2r_Y?ig>b$*2;&|DMQnQewe{6=8|2FadyIa@y%Mfvo|97VQuXmi+V0+woqgvdWmpt0`=!d5 zeLFoUufpu=F~hAVHJs;GgMV)4=p}WBO~9Gxo?5bq&lB0WrNrjThL(!7_e2uTm&>E% z_#zW4?nOS;t#-R$*m}@V-j%)~UJ)%i8u#8)F5<{wT5DxB-}07f0VhY{vBqfeyPp}Z zDgQb=GqxtI*cL9ZT5XsO?l+DT|Gm4~R@fx%;os-4nPsbOJ3vDD{CJd=G+ngVn`tT* zZXN#T>$<%se%--xzumvx!Yuor$Ds4uT2k+lBEq&Hm(R(eZ(V;PJ8KlhU#!MlI$L*r z_+CZntm9(LAE)L-iim5)>9nouhO)B}e;%CeX8NA3&8=@K4!C(%;+Fe_aU{#_%xnok z6S|~}C3X^p@1&l345J>bQg@0J`~Bx0u;`pN7*eS`Aow-?_AFzDMeiw6=zJb!<}S7> zYndCvw({tphi>oGHps5!J>L4-F>)sJ?u2LE%1>>-3Bf(VUi16n0iMLpF4Ri4J9tar=xnWSfoF-`T+=w6ZqO;7Zfrk& z<4qEh3*xcZYG{FKARTiO=xJ{P0iseYiZ}wWc?$|ra6|wou?5gSRH!F^hOP_&!ips0 zgy^x57{sF<409}QhnxddQ853wtQ!==zG#DV#&bd3r8N-JaL)PAw+Z*jn0_Z`N{a2XlhWem>)uM;h!tb?3leyUymGw3qJLOrtAt zA8{=_PywF*cFnX-SwQ3dU25oRxBusRoJWn{+i88D=vQ&T;7;q*k&x7Jwbl_D-t5OL2TA(;a3?KPG&;F_iJWpBj5hkesb zfKG?YYI==(I^LMJiw}K`C0dgVnGS%EhVK|D7QXGgCBo?)4TZ#(B!vh=mIyhiGmv6) z@X;8hj%dC$8bH2i^96K+_YR4nsFAw(^L#>s2w-BF!KA(HN%Rs-k#Tr{zne+FWTfS>f^I(C zBuFwCxPfBBt6dCy=sr?2X_%ZK&>c;U{KcNutvvwH0TMiJcdLjhr)UUqkArmK&eZ-H zD%}JQ(Yntli0)IZzEmGVYYayycrCjp=$>!~206|UUR%byC+E!D1=LIi*K$23BPqLZ zz|WHj#IE3$pGbXqi$px8yP$-Ru(f4%2L?qw$ayWse>_9Ge{lSM_(72c1HZ-hBG7X6 z&Jj)=n`s*K91fXD!Z15*^@pYzE*ut#&Y^?d+fRe zgEEIS#09Ko3x{vZur}l<%n7Fvj~DjGEEiTY{*=F=&*19t?hEQ+QWt%^J266;p_ zE#?_#jji(Ywzn9Cb3#A~Yg0wHYQ0b^KH`H_@$f=kzQrppH?5cQ_Rp;Ouo;trAp+`T zj&Yl6#&>m!08y_nt5(DM)yaw0G%eLm`1)3pxr~w1(=Xgj)7%d>*?J0>D@M$TWu>e$ z6XDC#T3D{$o(5Lt{`a6O(MWSj5|AGFZC~Iq-Iz(J{Zeqpj&}7upp)r`khg!o~mSl;Bu#k@jo5|<57hj4FapkV<`)%WIk zJ+u>R9~8XleMV$j6spIDE;jv;5)PcKQ%l5v&UQ^@DnlSVMvjsp{3ckN_Xcp9O}Eb#0zj{&>n=`Ob+8I60WnxGWG`l5pTBR=$b@w5)4s)E&$ zqgQ_XT=4`aTw6xQoupo@E$F~bx2qc0VYT_hn?%vH&Ai{i(_0tfGY$m?w)7u`mQ@z(_ zMhwny4D+c7FI)ztPF1U0v=IY~Wdx#Iz69|21=r^By51`>CO4eW5d%4kdOSx%=8g;% z;IuzOrun+$BG*0&wQ7W|bA=;b01aXd<{*VaH4ct<(w*2e>5~41%3y9#9$bEiVgW$` z_D<~U9K10wa_NvVnK+GF_3Y5DkvcAi|m$GAFHzHab(%>4-M^8ch^a1J}S_+$UU%BYH{(q~RL3yjLiAU)I>> z=AXLYkTRFgFdzEbJKg%$!dNh{AF7aAD?t&)1Skq{6_87T&M8HGet+tCBU{yTUUe*5 z{2|I#yEa&a-uN7Ej<6@S+nsLgO*>W67?fId+q8reJuA#rx0md|w+Unv{VJW^<_?7l*JZ~Gj&yFP~KT z*!z5|6_hIJl~9eqnuSC{B|m0}$$*Syha*E~n?+Uh%3>xFNDL4CP6IE?9rWi!!&2a> z5R1LG-t@20epK+2GzYmCDqd3*8dw~jh*&NN=6i+1HOC4knxcU5m`%jfW#GZk;En>y zsG$mP@O@(@v{rez73#S-Zj%>sFGC#zhC?~;8`a#Bzwq|aJEs8V^Ig)uo(vL(_FdQB z(wp&Tn6cM-sJZ?UF{Fu$7+}Libo(dpo|t?s?@{vHP#mu}X40=b+Nz9~1e;e)OkQl5 zng$mM$i@&cqGY2cH?sJNZ0j8J-i4>y^NY`>{ZT1 zqzuW5F(HZ4ibIcUxL(yH?E|+-e)*t-f-3P;?*8CV55y_EETMHy)!7>QreW|R)U%Yv z!||gv67-ifD2PdBC^^)90W_G%@V~?IGSPsw6A&+edPT67etj2Z^nf`q*rV<)s&$_c zCGR^x=#Ox&>^9I@=?ge1MEV-2yfNOl)7?MXa=#6ZjEMwwG>X@+$>Rd6~mB z*>77+0cJ}V;kOBd21}{9C2mjfnb8ynGtt|4#OH=-F~N@ zl18;IQb&|z18Nv=E-294{~+?K92R&Ke4?r;F{RBu((PljM{x)8SX@{$4+UgntsW1k!(9ywG6Idbz#x1b@6NMQ9FS8Z16%}9a*!@T z+%Y;((mvlDJgBEGP6UGSRsFjCs=4^i9`<^^ApdFr8z6^FZ+Z93Zt&Z~S!&<~fC9J1 z1&TOu$n=vGx6E8(1x_NEiF#|d<6`##`+Olu9r#DBhb-$sn04)o>~v#Dwo~TCDSS5L z=EOWm4Y^OfCc3Ey8SO!swjWnw!C(p`ijIbeq;r{^;Q-ej_mX@H9Ht`Yz%Z=G=#SQ9 zz&OVcINfnffowD^hKB&nO@Ppdiv_T^iWkuh6mgx2Zq4ksKM*Uy`dI+2Dl&`H6~`|m ze9W(|J^9WU^`@LYk!vQLsMjO{tmy;8goatP0J>;r_(1@>jaV52aUQWB_w}qpL~9I5 zjZq+x4}M?gahBYOy0k-nq#S33v`l+0n3&QCs(3Jd-*DW^&B2lyQa)aD%d2ib!&D7F zFyRCfLv%p65(MMJ*>P=|4YO0WQwZJ3KB!~04|y9Pe02hSA0!a;#$dP*HjSi~F$(6R zNuBl5n0DQ##1f;h6eSpZnkzstlLiLm!@6-@U(dvb*)t$76S#=4@dz+O^y8Y8*S~;d zbco(q8c4ho5#rftMEq5x0i2bM7^5|-Ptzqsa2=O{i3uv_)1stAdGSf^Q_~M9L+_yq zmkgMAo1>H*?+lTHwmB6mOsgFYs2R`_zYY_vD2Qp(Mlp(5 zX$7_}%~9c|u7p^zmuHFGTA$kkf)bQ(4M=aF5x$!RYSxeqU6xIBe@&I5?)`JH{a32y zORZLY4S0=z4Qc1r%(Hv`h-f#QN-nK7sq93w!nbFeqeKeS{8Jj{YD?-iVoh%Hw6U{y zJEX{M_9fl$Q3m%V+9($dvcql6MjD1EYcRNqt7=FQjgj&Hpkcq|tQz8A#G*4c9i2H#C9*nCDGIlpqlf`$ zUm}`Nm%y#+JP=)(Y3yJYfvxUlBFKnc$ihpzxg@EF8#yfzgXdZzK`k7#@LG}ik3>-5 z5uV_W6J|~8!u}M3dJ95^K!P$H3U@n5uNl;36fDKx!$9XG6}ai7G8j=1Vq>Oht&?q) z$ID(+L4lmJv?3gSNkKgzk)W^-5zW<8R%nj86g1fM@Z({Vo2S2=JquFY#RO%1b_7mW z3~zBU&{Db~PV5(ljOdf=0p)0%nN>@6PP-535uiUlUP7|>eN(UDils)ty?)|CBFNLbCS z;zdq3T#oP;A#}ER-m~#Wdc-UoKa}*aCm6`TQrA?2ybbEWF8#$YR=tj!uT4Zv9PA={ zlhjkebrh)v=mGz)9vFSoeo#6PRJjejWwN@|+8Z0PdB!MEvw9$7#7J>3ECpFx$RyJ* z3oe%f3)%3vPkIljEF9Bar~16MF5T7XmCm~qajd!?WFn7Mi`Gm8yN@^G#hk(?g4-Pz z#%`Jwz6}Ec9khmNH~CCC{x8DbJRZuv{o`)cMkQHBmP(DT(a4Nc_KHX*I}v3Wld?vM z2$iyAm^6*0VzTdK-zj7=Q)JIxmTVz=_UAZt-M`=Oex5&`KknCczX&tuoaguZJ&xn^ zd4CqC1)z!0)xgu|6aDF;-ajVX++y__J=b1xWAA?=V~Itgqd||x9#GY!^l78$2uGBU zEh@$+==(6rfT!}G=W~`%5kMdCpaWQb@q?;yIW0}@*0}bC>yo#{$hwLy9nbTxZM{Qz z=wN5!L(C&vY4^eIo#;)UXK*Q2A5oF;=k<0y`soV#TvorPj!MZ-tEQK~ygWVLb>mO9 z&_@+zYE(uOh=B~$o-+%w{;GogeVWy;*o)B3J?CcCM=V*2g=L{<%%+wbO_rz-=YEu4 z>=0OY&6Chr89{%1HRNBV}dy>fn4-ZS6#`f9-@#_nt*c z|2)6cHFVpUXz}goTQ4t%&hQ)P^(2Js5DZvz@Yr+9b5ARMiMPLY!d#-%m>OQ3JH6d@ z!6Ci_U(0=Z3rDV^gH#kgaX$XXVz$2r!Gbo~`=`9|``59j{;g^lAxT`P)pK9gdoMdL zMJX3`$?v$yk_=J$hP7f8cXhs&`I`(p`5S&!xLPVjh-ZKpQ_Jb6(mT+ zmlkz@d~rz9>Y3{C{7zpzJL>w;*fW9eEx*m&6^^+ty2NXnW?g!mR`x6(y!CGF&$hDZ z4U;+Sc4^GqMeL+~{qLziopyAM1#|J9FB<0-DQ?p)4u!)>-8*mPz_|j7nv?fDPwUWZ znwRp7JyQzU1BRzUlHh++PS~}=0qn%8>3xw2A4inM;hts9bo7^T;bl?9c~W7AW5nn% z@1qB6uN}h6cE;Zu#onR3pXi(-y8HXOC|Q}P=+IJ}X_+JP3)@y5dJC7r%j2CrDWacG ztZg2Y@L)(+?Jg9P;DYXzVv_V&}?adXpv< zWr_wz{Y@*jrA;n`8a8}*$? zs2a|4`Sa5K&SqC7ikeezc6hP=_3CCD4;#HwWVf;}k9c^oWTL%7Uf{9;fdt#IF`ZIOfrZ}!Zz1Ad5DcVN0vJlV=-F!-CN zPv0Gv>Z(FWV%h}fHi)I!kVoF1(mgOA>+cV&SvAgrq}L630~de2nQa_}FIXHYPgzN7 z0TTb_2^s02d-BHhom{d~=lH+jpQRCYy&TzaPwt;Aebcfrvku=+@&cOU)*l^D*gOrf zQj>4n8M80c8cxL@o8I>S!bj0kPF&m7@2xrfhS485d5hj|{YCV&o{s^06n>`!Fn6u% z^n3ue;_P%@c5BB^4<+lu^u)INSRrl;9;xRJir?lAIqiWK&v;^PP{GhP&V5W&FN0&9-4SnX8cYipg#TaLO-`)eYY0y|o8|Rwi|(3h!u;hKhxh zxWZHKrn-f8HLiZ~4+;jKe(i`@-;E>j1n#_sQ_;x(_^&uJLBHD&0^h08&__~H9d-|#zCfW!x1x8>;TTUDCOQ_yM z@s}}#h_o+YOoxCHsSTitPF|NIeW|sXOx&BDsD*OAEm!k~3uAwpNxT(ct43qXk#u~b z!EyOMp}M~5Ek+uxJ6Tmf^QZEtD*pf^N{S`DOtG@b-{|+4AMz_o$cE;fH45lO zyb(a&0d45fbaS^9z8_crss@Taza6-6SGVrd>w=w#)?RJSFVPi5oo%0RNtdolb&l{? z5?{<%j)h<=4TEZUYC?XzVr&UdJqkIzp|%JzzUwpW9x+6C2QqChb4L+1&#?+ zDVJb}-uxT*x@R8tjrlsho(|jV+wnnwdU~H`u{33eV?k{aIS3Fg;K)3)2@dc#C%@g4 z7{t}*sT z0kA4TMuR~6Fhq3vKQ{D7B^~hl-RtQIGZ(yM-~>EHff{tKI>ga{jwK%ExT}7LfOsbb zp^E=|5#EvDA_#)ZKMpp^W6&VsK-wfeo4=jZKGC-_*<6nYTEtF+QufV*LGYCWpSIO( zIN8c7NLaa}s%pWyopxPiR2K`>*5k)BpIgUP{87;{7np^)1^|sVNn-l=qnTziI8+se zSYnrQFOmG(A0x8Y<@Fht6Wqo}Xq<2sWCNh^HH=6N4!U0^KVLGx?OS{Qgo#voBa~cp zGcQy^{!G5&Sm=oxvBOEOx+tz5R@1HqjeUwaJbX}36AYBP8WO`(he8a_!AoKiAKTyB z6$~KYTva4QByKvg&=%T0+ZcU?O?Waepju1-KNQ&%zVt;0mD4y5M?7Ho%*da7lOo~S z#%M2>uHQ(@+<&Hp+U$#sVbh}7Ox}jvpj3TSkp4jX;oYtB2qc=V)fVN?h&6_kUdoPS zr?K6D*EGvk&0~l8UT!;*?XG9+6HYM5VnT`f@J_BGk@n*`w(>di?3iZE?;p6NM}2s| z7cbu&TjRPgTn@<%NHqDUgjX!fKxExN_QHB1MI@4c4UabxGsY_5lZ8@yj~Ots{g^Dv zi0jTDg=g_iA6_JeMxhcVu5X&f zTfcqHT@4frA_O>)ZCG9(4ws2q0deC-910?Cc|0=87Pn7HS+Kqx5_rYx^XP z^VJCPeBkQc%Md8JdiOKYsZbYFd2uG;2F*N?;;)2&=bX)s0LMbp0CopaSr{T!gq)iR zdjj2rn}EO#VFIwknWb!^GA~o^aFCko4htLRRx>PY8&6Q1H4s9Id8(+`7k~rR?1%Ur z1?TSkzMGaz;yx)Mo6E^Kq{Sdu={S6)=^D_YpwlOUlR9S9f#hfdj;C9IK9`in>|#5( z3zO`0>*LuBY-KK?#l1J9@otK@&`5~`BR<(FqS=ZS28o-F#}^xsM}=&e^@@q}k7qlY zYn9b*jG)ZrYAmIo|M|tzIi2EPMlb+grs+?;QgU#(05v-zC3F&#kB9tLL%2Cs%4i%sO>Mwx81XhJ?q}5|*AY=gHNVyUKyztK2>#%s`d87;Mh>`+AIdsq8 z-{7zA!h9ZpMW6KvSCis2yb(Yw!y3HZ||H26*WYQLu}3^XpggYKu&RhwdI#B+8O7bvW z{uTymYeP2Y?mN3MMCse9$gouKKmVR1kKOs*5j~$9XGt$1F6@zgGE8x0d@c`P8F`tb zM`ICYtaRFvWR4jXV|b+&bpb7ZJ!nTECNx|DU6pK-4!PNJNVXMFTfB}#dTlJ`O2a}I z0WFsKp!xhrm9j~-k1^oIA;Es*H~dt7GOSUGw#d5yQ8~2Q_q|&O$Gjt*0X4vgrEXXEzhiPt@!* z_EEVxUNaH~>o@Tbm<%sGb^L}8+1SMT^!Gjmz>)Xv7Sh3!toh`9eC(4!x) zskUWIbEBp9-jG9E?7z%`L1`Un>b{~XC*|qG0x?MMUK&%k@!M{NJ++o_2Ih`xROKAG`#heGynX(LXKe>-wb2Bw)%EDM5e9!#r8I8 zTD#{6fVRS4e_~YV2>ssf=&qpAP6tMPh^yz)wxj_4Li?}xokA%cb2%P8ILXs<0x zx_Az9i6>m+w={8E_&8c6e_2n(EQV<)?;O&g8%AgD+S%- z9#_+<5*8W<1pdtEB+?fj)A_c&N@2%^tkw11(j9AHolfF)0uHUuJeSvkRWUtHbHdF+ zQ7P77;y7wnk|wJ*S$%3GL1FrJ&qbMG0TZ{j;5<$B$Dv-oM1)uR_=E#F*Z%aeFECXD z;%2_gXikaTpZL5oAee-u)r%Te*95@>kOu_q+AT!EtGD-GYxH5@)yJf3#Z{6C>#qAGretsxgiZuPEDyRHvDU1&g zlD*g9CD?$KY0>zDLxbpN%w$d@&Twh2{9rrY0+m0u z{g2e1mSe8dp1qt9w)Mm_^S}qQG559jk}LiB5Hlq}H!;G>Ocif~tR0IQA&tptzBFIgJlUwg?Dmq6-^ zkdzyFf&aT1^ioN)04-9QsNF+cv3}83=l_7JUY(&o(MDHi_3qoH`698b zUj6gRq`>&&u&FZlbkaHpnIhs&NX>!7YTup+;p)Ynplo{CvR!EExJ@?=2D}mcpNxlv zsN-$;Hx&^5>&tR~`Y&(J@!BS-m#1Grt$2ea5r>Dwc{OnQvtbsqv-IZyOc{rdbTxgz z<6Ozcw?&;9w9>g0-uge3@ z=ogwWE#u(AHF!XCJO|*r{Q}e`NUS$j`5uHNmfnfz5%h*!J;=|a)QrQyaHlIF-X-PC zNn=jdU|rLSrH%uUD`r!j(_7_p-Qrl0hltoV(R+HSJ`A4+ov12Be^(pf!^%6w`%f$?Oq#_L6)dK;6}I`C^fl$0S?ZF?VsQIFE5Va zyaPtw5dWd)@G>vPG>^P~1b{gTh(x(zQ-!&^-Uis?XKLUYO|=w5ybawArIvqEwhwPV zez}yq1drQy;J5$;)kU3khj0wS?tg}z(Ld2=3xeN8!(d_-v@FydGqnCP)7?x$&q~p1 zMqWV5W)NJ3W7>7Z3W$^Vh5G?_3&1~Fxcj{xK(O27O89(eHf&3pJ3?Okfy3=@0lb5{R;kXy8oOUUMd6Qz1S`>2##rV)nJ$Q10#iFNyC1qeuuGeSQAm^WpjWkQ5ud8nm? z*Xu&-Bz+e&n0L?OaC!*%e3W!#z27CCd7Z5;cVXEU67&t2CXF;1FAPE`^(VEC8HsI?8q@v~7h>1B*a`Bva%9Ma4O-!XW z)K!o`$_XM4+p!w!BOtwkNIPjX+^y!&+fdVN0ZH8>0l?`ewA4-@kV)%kQJaJICy}2f zy6~|qo4;W>!czmxj!|j4G?os{QPzl5U|`+}16Dw#!FQg|;QpETdq3~hr;P4P{A8K? zjo6S&Fo0S6COI@W242@@M-(?u%meC0DLabdu;*XYTnb=qKf(y9&n#f)EsjGauGAzl zNp|@st%2=ni-L7=w5x$n-YEB;y3*6hj}i^kX080316L=0S3ZOc+19VcahWz=BO6so zGl0wD0`9A>b5+3v3e^&oMB{*8U|HL&0*N^wnCv40Gw*sa+e0;`LX5Q z@MTQOw5%Lj1zuGR2jJ#6Ttg_K_cdFX23-b-b{phwkYoOYX*O%wJcug{g}XZy4>~iG zwlYRlX#Qjw)ddGwp1I{R6iBjf;I)j0v+Q}Q!V)MVa> zzV4H$faX?DACrI;Qw9X{p{oF69zK6KGgtDn^oH5s{f4Fe% zi6MFr_QBM87Qe|&m}&@PlGzw|wD}-z9s;IDi!Z@b@!~y*qmoS^hh{FtsVxbKtJ+=u z+LaIT*AZO0Hmcoc7cG+yC@<-KioDRTDumGMi=-T(73rK)i_?JsR0Ul?&Yaa~JspIb zQj63${IPm^8M1m4W<=r0LtdSMUuN+|3kmS%(OQBUJ~w-*neb?1rl((X`N|Crn-5(f^RS{c;l75!pF4Nq|~spG{`hm=V<`J<&oKF3pXw%dMMXCCQ zUx7jYcR!#KA1k1<-oie}fmsYI2vC5$0jA*=4YZgM(1fSmk422uj2H~UB-m(Ay`)jZ zR2X0KidqoMu=O>_-D?iRx?qxFEd?HW7Ccure$cdE*q{p1F}voFWD|uX%$0+61p_#> z;<#L6T0jT(@)iAbWrTdKo#G@t6MLx_-|*PE2y^XA^x_MXCCOaU5Wg5a*eVT-*#BDP zq1F0R&%`H6fJ=|>L@?Cm0Q~-myKkX$BBrZ=d=>_7KZi7nup)}&S^1SVO=KUe!R^p8 z?=%7qeILEg?jNLoW4PP0U?%2Xdt#!+gH!7|=7jzf*ihC#~0>__6%5je60G2b;1o&5UX zva8YVBIENP{V){@djhIR`24jugFX-GlAc(U9J&#-1G^}B`%8%Vkwt0(9$IC?nuGIi zS0K9uk!d0zYqGKz+YQKYpzQ41^*&jmHhm>&8%(t!GBJH1tkdc(z>Vh;Xx!C%w4o|6 zI3W_qx>-)yA<9thxead&x7f@$LfLWm&|+g4^DU%bK)?0#A{;$OAY89iPi0BJ&=tyo z3tlR3hBU49#RnI|7y7sYXByA5_~eRK2?Op_?H6Hah(UE&P$I%EAf4zDqsOM-r>&Uav}LOQwu zOg*YCQfax0T!|+{8n-!J{W6*41MS??-TZ+>vPG3*HEN2co%ymXd{xa;?>}G@=2|O0 zkrFteEXhV2{%SaIo%A)w=(4&@%XtC?+4=w zeQ?5^KBcHmk3a1HD;~mOO4-vOExw+9mr|1vtkA$0>00{)(s?S4mNzeQ_ynB}{~abb zVRe0>amV%WlIsgh%O44iPi>E`B>iU6yU%%$Xp4>9BVt}f-}Ig?GL4MWE_)1k{RtO7 ztSD4-aVhLM%&$BM$J15{=O~^(d&+ep@~`|{vwba+@mXU;EF}RlqSs1R?&OciuMB$q zEaJ;35?@(J?$>;Dg}c1KzN5INj-I07mTRn7>XDzUdN5)2m)JzeBhV!!!^sGamsqM) z%~!W(j#fLx6CJ!6x}tfH=}Qa3vghQ;Hr+1E%U*9vo40QM^K{g6+KY9~MO_mumO@cW zz#Fxe42BNc*S2BCH|vT{Sb43Q3LMc46aKS6@0yg(XwSPY9y0&>%C-6IVQP+R{Lj-b zdslS|2V*rm`J1kYN3Z(Q7c`2(_k8sQZWTm))>-CWCKWt&o=`o?y~l%Nf#`K8B<@-= zlbb)0segH&J$cRfsp=B*lwXFd%#)i&$N~xY(O)m2@mNk!xZ~yd&w|Rz#wp)2tD0@^ zucvab9jJXcpcwNQ^3a1;bMh+A+^^u1b^%QdW$m6EDo~XAN0Y2QM~vm!N1o1|Nr<)& z6n3pP+jC2^?m&qKK?d5P;eM>WhY7XHy(Z$d22MAs7usI+TREm0>>O$N^C5v#^pB6r z%AerL83R?RZQoDSa5O{$VLr$oifEsC;l4Zhqiy_k3YnC^o;BAg=Xv)&#Jz3uio7?+O7W4U{<4`iTRD(%i&&a*m@)l&+!Rl2I#uuVI672gbXeVF|O*VdSD@T*@f^ z$!O*kc9UCB@h}d#%d4ONN<5VE%r5l4%IwFE-Qx2bHjF=})-aPK?5)r##)k9P(JHYb z`=2S2lGq!37Xg+2O44Xphzo}ARt0o7h)~D@(+wnA9EeC^O8rh3F?A7+PbNprFI6p! z1>_5xjBnh~x%C=pivTTnFl^|YmtM8{N1oyBTjglyWL;oN5}KzI$EiumF+ER zE;2r~DU#{O2nDo) z@mIoEOg+P*@UfO@#l(CX*jtp|O}lbxM$KqDVq7W;@e3w?n3fve(aYc2|&W;&wF|G!9H@XO7|P z5)s?prc?#6LrUy~(n+NkpR;vZ8YCB4NL0uUWSUhv4vh>j>DfZ9bL|XID5r#t*H!*d z&XeqB-*uE~v{B+8Nn1eF56%1|)ub&Y1?0D3Tdh-uofZfVG2(k1m*2LpSoVB^bAF zenT(-2QmzURM289;`y{tb33$HGwj;k*uYDdm%=1~VNuP@+4DIXUliwjf(qRc7CIaOr- zt3g@q*B@x$U8(tOX(zi#g)H1#se}_%$1$fF%B_Z9NLe~Dibm4tkH@u)FNd;JKjyLI zVh%I591H%2S9!V}yLF@~Uwc+v``WG}5bi4A(19dO$un`m#>&t|s3;H!7&A_@VwpLs zH$r#{3X}(34V%ExaR2g+f+h)rcn>okS~GUcw$}n49wi~_mAF>Hk0FojZ#~q81ck?s zpYyJ$iETC5wW5t`s+~BLP1!N5%$~-!_G|RK{vwr8Z8K)FxfN&J``!Rf+(Z^Wtjl=c_^_V zk8$KByRi>EF#?bQ3Iz4_*c@P=p8^H0_;b)aICn9s*)e#dP@KU}sym`%;64bvL>?IZ ziHdKor#}F?IkajMFub@$$>*^Ax!IxM!^%GZ92<(idObap`K~3z{4J){xoW5m`Dp9) zp?==*^d!|e^R*pYNIgS&&teRoud9JDV>tl&b^x(h8*^S{R#ip&4pnY zGvhN=SP5Bpqq?J9Ds_f|Ah3$)1c*vnQjq&b5#7lG$V-UVi^aC&|O9n~Qg zAIC@e88_6JRTf*XuBIqmHeoUB9bA-q?<&sB77_LNRMBGZ0a-u(n21QB--iTOKF4}D zVqrcG(l+R)o1vf$y6Y>oSz@TG0c5f3?ykBUdvUfX-}X97*oxgPkf%#FB^wj^C^Gc` zs6J-e>AQ5L z4A7%?khcB~cmytw2rW(-qw(n4*uzwsqQQ-OL&sr_5`%oF@5kX-V|4Of?5dyZPfN~r zQrNx4*NH`WWCdu9|JM?cu^6U2z`3_r@VK_TVW$E_-=(S09Y@oU>|Y#Qxu7gWe2o5q3RJ5WPARoRTe~a(js;5%e>MRVRDi0l$#zzoP=>g>9OaQFp zyRPkqUp%-0@(VX=1nq#(__~M_b6*#LJD2glaq6p^#)iIGxR?l1fhcCmpJSfG=;ZP~0In z1Hs8h>xzj=l^^S(q)`XtZNh=p5yf?xNUE0k9L+XUKt4j1YLGI3=~HW5>$T}V{_Rfs z=|{vx{_DUYwSF26PrY#aHtLKV?dV%iSgFsup-0a;XtoGl@M2;uf_8{3QtPR3uALbO zgDyl(Jss_q1@bL*X*3k^gD-Z(Sf#2Bx`2P9A5uwRk+R(S2O?;-<hhT6w9cI|Zu(U|VTp1Oj9;!qVK#qYW38L`$+2p|^qc47ACIL)< z?Ln)S`U4}nLH^arChL?tE#c8_sjdc+UZ5*Mg9*EvjH&q>&-NPn z5aNhe{JnC}Z*9whrlQBzkM5oWq0eM?3&nQeSJi)qm3u()5YK16hgWy0d`JrLcb5S> zqFP4ikNdves0o8S?~mQp+bT~`9-2yTI!EJgh*2!RZ+G_9P50L8f^^vmLmRD?0bSJ( zuOYPuVwe-U6X(-c_kx3HAa%t z!8rT(5VcZ+Ti{gtSeOu8zNh@raum$v4?rh5*{L-2fkf7QLMCasje0TW@^Aj?+Z^9d zsc0H_=og}4LM1nmFc3C`TlkJ%Q0hT92vDo@*iF0JiwYV0%NC941H02*Yg@S-Dkk-3 ztE^1VEq=9998$-8%>dP7rtxZ+~p0m|O_riONUq|0~S zwLg?8MCG8s=Mt*=eVoa8MmMT#LK1H>YwTkUgd1Za&`sB3BTD|XUO78C2 z@d4enp_tY&kw{(}8?W*EJ113E-Z(5fC{xsq3IDm?`{aJ@Y0rnhaQAy$_B#08HJP-d zh(_}8td3dLMc&zJr8phxa7ZQUes^%sVt{6&!kn(D!HrXi>@o%=4$BpyYInwd4Jx=D zyXDyuIo^{`7%QVyx@uae^FeD2tBawF zZJH5FYpdO)*dP2KTCcmkTux(Y0DQvZONXLrv9{M7)ijt>jil@}dO~s9sNHw9EoLO| zYFlzq$9O#c$#QXB{f&P%(-%6uPMUvQt!wz_%^_oZir2%{q_)y@9K>&)yux=Hbi}if z7Zg_ac=6WXuNS@viPbN}$l1RsRL`O}T04P+zzF^cYprb z*$o(lJ0s$Tt3GNGPs%MSkQw`?+bq>%-I}!>Jr6P-@jrpyer+2*{opC_fGXbdY|;AU zyEoHU)WA3TzG!}*MVA4aO0Q@~kFE&xw}xcMpd0uJ*I9h!;^^s-)r0#_^J}A+(xS=I zD+|w#gfg)zPXLrJl4N(RrMj9m=jJ zamibYPaD-bT6`KSEI`X#xDI19AhH~yopZnWq*wjK6Q<#Yv~|VqA&MGZ&nIt3AJ~Gm zP(@}JNi)?UnfIAzO+aJJV}^ije(hFw&%&EQEJ}W9g33F4JCkY@pya&&p@D_J;i+!{ zyT@4*9|LFxe6VkhJ}fSxXc)cf7;#~sie&N_zNtraM9EKv37mdGtN^@@u}aWhn402d zG@QQ@8(_RFhgRPxCJskh4+$&QC)ryUg2~US@onn{dmgNLa#QrvuwLGm57cQv7ADs3 z-;r#~^52nu{jzC!yY(u_GOw%DGh!vXkT7n0B2AY_I|@Doe&mxJ4Y^T8baHM`^!thp z)ChFD!MfRQkSb1#AXW%&@c*mTM*19_MoJw0qtNh9Za5y@Cq(_CJK33G>&_5W;}GHs z0YAf$7@vLh^j%SiwsN`lY&1UaJFb2!YiT2kZpE-ISuZ1DZJ6_IU9X(y0*E1e&NZ(5-&mg+xe>7ky7KxCB&s+ zqH+VYmAM%J96Jx$#el2$iNjg3Bz{0RY7hw5>&_Tzuk^_TFsH)aJYpyxkdh#>00vRO zuJLrTg1AqA@cN`$1Dd8igG)jbnw1xyPFkVu=NA567O6ni*{73TxUUC7&0{MHHqvk} z_-w%Fn;Lhr>|C#*ky)r z_itEipez21qk(sike==n&PzgqaL0Vuj5>&lm=`htWWgS&r|XD1e90#J$Yas}u~P3h zLWTaia^XVgv9*{#TaWg<*sC6swHWr2XTY|yLvejAC27HdcPiOr{rs%I$G~wvk|izG z#IP*sF#OnLctP!gemeg}_pA_x)V}66L+R+l<%tJ$z9h2ap4}6+(er|f7XxE688DpO z6G}})9y=JF5AJ@b{4dHET5Nu)QT!uBCl4nF9i>c|4qJPLMD)arbc!jc9bdOhqa9Iw zcE;DDnNSqs+U-&;tW%?7eKv7d^BxXleT7e6H&-#g-2f$0A44#39;G|Ji(X_n^UxX> zbSxGM^(;+oSt_?hbWeech~^$KGHjGGlp-+!T`8Z=@r=*<-k-T@ot1 z%1@B=;AWOAnxdXZeh#voh3*zRRMdA!ID3Qb3%4|`<~8*bpl;f}pebfmm}B0DrKVJZ&@8i0|-P@nao3Hxc5~PM4BsGG1x~Q8+*m7Mrn` zK^jv<+K=oX&EVFVNjNrV+lGN|68Brt6a#=MtiMn2QHhT3*WdRy$6+AmyrB{xaUuu? z5PlADw0qG3kOpm;1+#Ch{Qe^NthpgI#W-Bw5e5F3GvJ4>B~}bC?>1J^fEtr+pD{=X zz$@0Z8E@pG^)D0~nxjvo^uXJMge(seEubEz*0e(npNps`njf|(prL_-N?vK>rGbrp zC7ZOR0&pjhUf-dg!vIYR<4M;-X;$;~K~VZ-$%3Y?(*_~}1-LxEeFbj@wdR=smtE7@ z?(LMCO;Fo6J32K&KXqjXrRMxy+~Tx#(`wT;_ZY=G0Hz1>9|rwTb728{7L)I;763H3 zt7pxDua`(he-#Qnmj{h(CE;d66CYT1KEw4L40}6gwRH#xC5bDA$O08id?Ebz>ADc4 zc3&(TD_-db6SbH(&rcq0~--be7WW$C7_hM7Y!y#9>bq|jUtzgcT}VbDcP z(kK|And|_EARw$c;3^_-SsH_ zoB$Et_fmMcG5^`kpE8d*kPv$EfGC(H?ry>;iM_@1{4&78@AiDBjOG2ry#HqiFvpEYM z%W(y?2UureAHhqagj)*43&x&8zzFM$@z-W_szUmDUMZ#Gc=P z=bEBsG}RrifF25oPfT1f+6?)2$cF@Igi-(&g!m|+$KJ!rdI%cJrD?w6zKLh2?!UK48+SElXq4}> zoqdq7{Aj4|1+uT7of&)#_>K!RR{wtPaK@Q3xDn2j(4(cy7O-p6i=en4z~T0WLOp*M zz^*&tln2sVap+H#Pp$KAVit&ByV z$B$feLx_hl7R`>v)sobV_-O_vp&FxZeWZMb;wJ>0=;4cHZQxofebUX!EFW~sBDQh)oRy>3Qx2rk&+s47DH;7nBQ zF<8)RORjCzmcEc5qU3RR#?Qv?>RCRp<18U0ZXV3w$j za+gL&&abeg8!kAs_h^bhlxu$j>Wjg6JBO#La(4@fDS*vh+Cb5}1uIggyC=++_oYT~jr-+5D)KN|7R+AStMgI`nDXLaJR&~=+WeC^u&gsaW0Yx!kCO1SD~-fbSHG6hKYW+%X6>Z5{cdqt9xbifb9n^hMMy{e z&9E<4Wq%LROjsuz)L4V+I64_#L zX2ZOvRNKe+dgA#Ea3}~a99%H#JimAmy()RXV2@m+>$p$1?CwemUi8ccu8nyuYCl@HbJ`P(Rq=l1?76F#z5z3bd=#RXlX>BiIh zAsYI}1efB=ts}P{VPh_Fo8Pl&HmcLK)iP4oEHh2bRp+qQT3Kka=nZMWf|@$5sz!!*JfY5Hb|ebETv*|H_@>XIO(!7XiwQPNZKC zS|N!K#_2qLW1Fv@Y1vZtXG7QSS)m^ebfH|f?*YbjqT@**gXH=EYoV%s`q`3|gOi=o zz91P?oeECz-&1Hv`s5f}op4Gqcg!M9=cD|}N7K^xahT@Kr4c=_6I2%m>T3k*7b(-E z66+sWJNkIs=LId<__D@qm_V8QE%jipOKBVXN4XZ_=Nhd}m$ZIT>&v_`7!-vcf3A=u z<$J;ba=>$(J*{Ap8%^;);U0%?pAR#+oKLbeaKR1iOSCUGOyNtl+*dw#MWbzf2a9tj z*e3kVPkQsikR%uMt0N!3C~1J2&|v@mS7|=Zz*IiLij-HLMA_UMSNN^pe}^}P{RP+i z(EKdD>dvlY*$v<{@2(=vfI=>^hTmUx2-C;31G78igy&v59PBLwnZ8c`7;CMVg{EHi zZI7YYvC6{Bp&uP=s>`Y*>Nupf74{{PdprF{N^O2@*c8N2z5}}v=1MPa7&uM`yYD@B z9e-2F!B!OKXp2(r@jUh>n{-zk7PosQDy={6=v7B7cDBKU#UC5v$GXYZLuR^iOcqUl z+y=}?Ws(+!Q%qcmn12!!bdzRh*vd5>QOy}d?1zU;KNw}aic#c1)NkJeGnr;pB;Yth z%R(uiOPC*i9jvLq?|H9{(t~kyZav-VExw2iOy7x^zNkSZ(*D~Z%^ltDicum4?Wlyg zW%QyWfwTotIjC%ej}ANuO+eLB8#Jpx1n`AAs82%vaa$>#lF73s}z0CPy!L`BmU zWse+j>Q&!GuUp5FF;FG^QXeewQzpsK=!7>aw4RGr5B83wu7<<$Ouwc-O+ORzAe*g|s<@?`Z zK>Mp3DV|+|sj#{mku^kR#EK#j$lPHg%jpgjnT^IEs_4THg{SULf_EVTe1K&w_dfh5 zM5G+y%}J~GH1ToQFNF83xGp^B1uyDWAJE|T;$b+K10rmRUi>20N}CAH9EiO!bE3Hw zuE&6}@k+M*^<)?T*KFar+I$1h0o>KY@fS&)mS|vrgVyH`Cgu)8$2Qyo?;xF#R~Du+ z3%-I(+YOW%#y){y06L1~Dq&;BH%!e!b+BujSqc`~KTzCon@of-3v_~>@YCCuoAO); zT;P;WW;TBrs;mFo!V%XdaadobnUiKj)k#`_(Yg_>XgX#%BPzmB&OpkVqPZx%KsM>C zKK#0P{c3J4R5oIKI+8GF1=4E|FqQ5xB6V8CVWB=87~6<}PqFOV(;UmNBiT#4wAOz<`5x4` z7`Tqbh~eNlQKwtzXA)TfDH>9@z(ffm zxs2S6$BhB{OLcG0C-J37DA*(WZzkR-DUV$?#R+!@ybnWsU$I{3Qq;s{lfyX zIDFmUd^V!w4ZQ?==d7MjL|4Okm38}!p$Q}k40#ZszRLlM0;~=($cdMWY<~+z(!PkT zKZf#7THM=YiOL@el58vo45{Bk$6^U-JLvm885?`8-s2F;LUa)4Jp1tHtkRex@(% zJ))8{?Y6We5Ah%y$M?-ONlH=!xHh{~C+pM(&p4fICrSSqwDzajUeQp6|Y`{Ajb8=oisPvVT0gKf;5 z7`6E#tWIc~|GE8D^G_z|sWf2iO6>CCLp4A)f>vxG)KX7mU`^8ZQSWMi^3oAGanvF| zTgt9p9Cxk#wf!xREK+~Z?T#E0j3YB%#{By>Wvgzg1j0t$8QU0Q4o?+yxBm0K(m+@N zX0Y~7au z)Cjx8cU-syUo@@Sb`i6Fl)f6rMFECI2(YBpP*~ty z@<(=??QZ7HZ&-pOcK{<6cD%6^P?3$&EcPc&CVkPgb7!3VN6!cPQeAqen67F}d^N@- z`We687^Y8y^DcqJ=f?t*Aq-7MyQO9ItAX7R;SGe$$p76-^5n%UwJB<({7wp-7itKw zNpXfA+Li3?h!Q@zFZ5g;PTI=Kr1~f@e1YXda**+e48%CT2E4jGY9A)}O$ zgQR1Wz4u-v+2oLw5rr~BR`%xqId#wHzMuc^_xk@Iujj>`%XO~nJ3imfcz@pS65;fp zX+XB1#*-H7;Qpx@di$ZfFB?BZckfoT@=z_F?mpyzR^M<)!)SQvLmve+p5h=V2TJb{ zwvb=$Fx!?TBst_PxF>gsazpP-r9AhUno!wRGp7umjBhlLXs6TN;Xb2+d($XLsDcKRi?~M)cQa6W!8CS;6_j2XbC^AJnUapuW!SQP&{>G?mYd~nz=dldrWu9ARw2Flkf%gRIn;+pH_k8@dGk`0E{+LM&WSnl16}zB;{Sx}Z9zgp6 zux?rxLqhkbi_(`MJ=+Pp+lb(Qy-A>h7udnCUGf-^4cayXteQm=z!BOfaf>I{3#3K4 zD-NJHk9l)&ZXYyzr?Ywew42aY$Y$!*g%V|V*~XIRJ2?-(Q}2vXLwv(HOZ=i?@)s*7 zwpVHv!)<+a!{J0BxZ6;!jEE{*6dt8rJAL+>4(@fS{C@<3Nk!63oNds*qUQOSMrIqla&l5-V1?3Qmz$|nQVPP(TaJiG*as6ceYIJ>vj zp@-wmR)5dY6YK*3XgX)0aFyV1rF~(CFzYTps{47lSbB4>UDRrvS*EM>;!eQ|KiM%@S127zZq+>cu2xT)hh$5dn54L* z){?l>_ejkpw{mdwDb>JCOgq~J0cxtx0b{`Zin3SLEPIJGw_I7PQJVO4mqdz zA>HsbH(mL{#={cVnxlz(hgsdX0y!jQ-`r_2UHaTxY;PN7yXUCQv%$h8@lYD!%O0%i zi0Bge@;h5q^_J;}iiOvO+-)NJjz#0&ht!r}s=qU>^|ecDro1aD3hCU7wJfJ=HIV4v z=4{+E-a}9JqB0fOu*kD=g+mx~87V=@2H1mRLv#hm7;0`#Jt}%QgUfd@Pkw0bnCBB)vnpQ;hD=5onCnw_XBFc?Std&E1@O_p#Y`_8z-N5z9d|cq zfQ=y)Z!7CS;y)p;ybZY5)ZHLLROE@)23Zq;!C9F;k^*U$W1y3?z7JG>ODKitdV(+lAiXla05s_?E?BYD!|c!TuR_xbzrw9w<3?o zBx|!f2C68#vqZtG@AonXc==v3-N4|xf~-6-hJZyvg4aqe0jex#UBkW#l6$gKf`++1 z%fuA+VRUAHP5z4S+vrRN_-qjUf%oF&0v0eQ_sbk1Gvsch4{M8rAp-prvwSM3zocJu zeQb|r0Tm_yVpSJHL##E+Nl85?m9Wzr2cQ@#Hze48&h!w81dHsN2xz^)leNca%6r_Q zr<~1i>4U!7Um7r}y8)(XMZSdcG|w$P78)ArQ#1N?{*Z~0uD&t*+2%FgN(s;jVinR0 z!fzY0C+=L+FZGQxHmH{fYK*fie5w{*M?NE={~q`39#q+ijEy3jmUwV-yZb$8k`85Va+ zRO>!q?Qf2*#*v?kXEdm{+QeRpX3wyoo-?~2hIV~im`){ADIVj2V4o|tDEIVcyXeY~D4a9YBX3@7yMb+xitO(d} zt~(4Dj%DSH&AvJ?sBP|8+xJ*=qQXC=q$OIy`TOSqs_P0jFTH3?x32zy?yk$yb&3`b zDgWBB-mNcj`do|M57B~K=61@>L4>Swhen2pN5Kx{n1;UOv8aI-=^mc*D}1*QdAV-| z^;>RgWxVVyl6ZBOX~0=ou+xBWMiVjCQoldoy`%nF+bC%fmaN$++ncl5q4<5d2l^&) zwfh4ePp>}6vsd+POA`7tcGrw@wXvKw<-?9dd4$*~b9ZZu?S=#yW85oapcU8qEIQ$A zFxh(~`aRcJb;N?j2c`VNVh7U@+Q9Z@+j+EpZ{OqQTsDhyOm8#|hMMZ;dxgdx@nY>A zREDzbVy<-65nH&=z6d=L)YLXC2)oz%$b_NpXI1I-rj(xUl553|2Y~VrK=weT^=$(E z!dzGKt`+FRdEtv&V$^OTl#jgZ?Rlx`I=RY@Jq;$zZ3$)DYG!$sb+y3al*FP}|J2JL zegzhHRzD!a5_ncxz6P6}?>@)OWl&#TJyh?UO&4}v^(=3Y_UdklS5AB+aC6yt7k>`GV`-7aSSWG^ihn$ST4Z zMGhEvt-QZV2TT054MJ)q9ArwW)@{Fu>Gch$j@Dn_6bZ|~C%vDZ+W0ZweeS-^9ju!I zt~Shmn4$!iX`2<(|9PNaEW*vsNaX@;Bd$TR^6HJiZGbHwnS7keVzzTOa^RA#xBm@T zIf6^!k-Xm;Zlyq0M0b!a+aaj&nn;8SZ9>3Nmdcx#jznZCm-!LD+*urDh%lP09iTdY zE6c{tTrHzY`)#g|u54Le@mJ@RVp{(XL!#hJzA7njzrHlmy;k6iob+3|shcwO*gU8) zCUGs@j~9E>p+4E|JH=Z!F~2xlLU14IP*9`jgv#AJ3;ZHH#oEl>Ibud5EiqzcWp}CQ z84Ti#aEU-ah|TA#m>!x~_!R%F{)W$G55B0;IToJfI~wLS*U#oefBY;e+V@e?4H_Z) z`~kzWcN@KJq%U33f~&9gD=-kiee@5$t6>q?IQAy#>vzBD>5zo?{hAqh+dWz5AT%Y0KdIrb;>N~;{u zOx~MFekH23$4MW=Q?ftqyGAYS3RKeeF4mKqYf)JXbBT==_Sw;cwP9-K;~<#2ZSK0U zxi;-sy@&T;27c4HAaCUTN7U7rsdMuLo5yzy>iw3cr)gd11{Vwr3~xq%d~G#Wh_RBr zhkjEhRCeTyazc@VxcHB7U3}f>*H>BXx7@~R)t{?3-9(5obuV+7<`w4oD_fmj)EU)h zr7t<>J(s9=kX6_n0|E=T4zEM#Q`6qk`}LNCgYe<~PdfRYF`w^}Ty$+!;F1^)O`< zDdq63d0ETALbdLE*eJnfVMuQkZF4D|gef%ncp9Zwo>XArQxNo$Fr9Tm$8>EmqJ8N5 z4AqPb6V}vuZL0f5?%M*?yNVazit!9D-|R85YVz$tMcA)PT--Wa*H)GaNtKv;{{Brh z_t@!L>OvIue9&ZWVUfJyNe^J)>O^Eu$NUXfx6(JS^a|zlnU+whwzfBIZ{CdZ=$PrQ z_ght-yu-9pbnDK3fT=;(3kcW68WSe(*cA%v_KFrrd=@Qv6S->IIx-V{(BnIP{-FwO zifT%BpU~=nwTSBURAfbNS@~VlyJL~QKbob7CqL=UtyX<&c~X)Ko20BX#a`uRoub|2 zxmIUoi=n*^?iS+F!s79c9er9n@7YCU>fe=JHmMrtT6e&?S*%pAE%Fs`*4~K5=I4fA zoA~@#NZFru?xwj=lRjjLjKKtKYR!(kx>r4QvmwO%?gr+%-k^RfFum`a3FDQ3#zo7U zb4mLSvlp`}ClCUr8EOi|c`l#u)+xqiCU)KKZs7@z<2hdtYL&pd%c7U&eMDv+kp-`P z?!1oA%TGKC)vHCzT#qQrXxFNW5lG|$nA zIsk1`mp{`NbEYYQp=|QZ8Sx`$5|ZSD>rE_+FDom1ImACVFeaRdKBe^WM|Ix-YkVv3 zWqp3ml}!G#F|f)5sI8&~^i7UNeU^&pg}!5(J>J0eA!5}_Q)P%tk=vm za-u2by)4)nLF(vloWzX)c&|p&bxe(KY{9}5w~*ev^w!aQvYB`T=VnKncfa_$o?VG> zny~^?Sl(;b+ooHakNf-kX?rzq*xxg^8#DXnW?(3O_xe4nF$tT=Zmc$ru4S4#K-bx- zm-ubDWhQ$y{dNAqoavh<;wtrTd!;1q(vw%FJH1D;~ARBFKa62QMUdh?kc|e3@c5q z#bUyGmX~*5t&o|iyV=)K!F(?MXPD-v-_^1cl#DvvR_JJ zV)x!?H9LATe^LIdvc{tnWtQxF1J`yB3cvRJjE&Di>TGf+Xq>YoTL~TsM>}ba4vBIP z5Cz;h<@emB@B*Pg3urTl5IueBEybi5*~dLwZfG>e@wQU{8vVw`5G&UfjinHwA=Ac= z8+Art=Nr@!N4>Vw4U>Zo+&B!KDs$krlTAH_yar%iyq0N(@7-{u)gMN2(-niLCJR>7 zJxO}?;`&`@y|eZYKfc)JO`Ws4sKQ(zvYpZKZS=bIA%Y#>s_5fcza8xwjJ-fX#jz~E za;;eUoLKr#DJ|^XXbYUZ#*l6AEkG$_KDwtXon_4RwJC6tJXVO}| zK1+4%+yym}tlOUTb05SU(A)18+sOllXB4rI=k|w7iN)G)wvvASgyuNfc0r25k(OiQ zU5vTjxXTb~Gw6Qj;z5dlAuPvQ)2eu4@p!8nI=toh8dJh)KCeqAz9i{dd6~;`mvOm! z#@VV}I^y^k$5~0=*%`;#4&D7I{M*2YF)BwMD^B*H{Y|GhU?;uMS%2zs{QUdf(kVYA z=LW69k@V)v%!wj-B{ZEsXskX;iAcy3q1j_p&y{qcyDR5Z|~O8TEbz?8DIhdqLtR81mfm*V_b zAL@ItKD0VdIG9%VIySlKIvG97sdSA?Gi0qI@8lj_%9o8cd}=p3LH&^E<+afE)#mZ2 z@>NfJCY?ylwQmni9g~I#t16H1FQ2QC;oUPswDJxn=X9(sl5fbW|htZovfV) zFlA|YMc(e+B1TMSJwW6bG=@@-!@ZBE-qA$-aqqi|7ApUE1UYqU zbvbxY)QKWp=1xaFx=Qy6_23t-S6Mvl|0ZFMf(sFFKhEDTl(8A#CF07qz${%w0;rL` zUZm1>vI5w%zti`RAvY20jP;&7vsK01QDJ&2^n$F7$_`WKsUlx9g?^oxw3r+DUnB!tM%RdnUP1x_u zy8amQzg*|F(D}Lk;5_qrrYb;H?v>yMMY#BX+Nh8Jvbla=5&yBW!$tmA0|Yl@s;o5m zd=gM|zwPTk_tf8K=FHQdmzwKy;BbVQqeAeCd>tz8!`G<}Di@EbwRWE1|^q6CyBLL3?eEn&O|Ga7{j9w&F z4@KoM_d|aq95QL7l1Tf%nI>2bD~XRb>x`~Kd6-mGgDUACAN!|izYen@f6FX;_kVfa zKg<~EY=7Sc@9{qzEu_=$zb?Z+U!)eSJKfI{NahHthr+`idyupcNUDK;|1yjt+GIUx zetMkBYa{&8wO(lL-L=B2&J7=N#eZ8z#vD{xlQ9f7p^gSB@>^rG5Xay&uQW zIc48$vbjqRT6jobH{$I&P|7o2z_8rb8ooyx={_x?~n$+VI_Gu&-t0&Na zc+0vf$>ROF{g#iMy4DmfN2t(d29KjEH16UbCo=R}NBw zEyDUiMQPq1c7|U&NB$2Z`R5tuyRSvlVF~tsm_5ngASXE^s|b4Uuff{4{rI94os_mPSMY^jrQ6X{+VYNf9(e_W`FMMzc2KgY+y+L?@N;O z9t>5%ub5W-kNE#)CP1wApANv!H~Gh9znilEhrOVyxqo4V1q7u2e||nj zVKD9g$M=aPy%)9d9Bl_H#+ydO%9nNNA*)vG#ec3#W$IMCC}!<}&gR2HD#BmZFv*+y zyORdq9F@pF?Z)rE)E{=ga(fXP&szTLHu`@YEBJ5+-XH&d*!^Xm`j7o{=zsSH{<3-h zukTIrV*hf>B)NV6a^C&Zo0I++PxZfY`u^@fTXh}~`Mz5uUFI=yT>S5@`>#`qjPgI+ z&EL=XzdWNC?}0Edn;uzw?y~w`ymF8K@C8kq{&Cmy;9Z#qVYi2PSdf%Izy8e+SyuLW zg86x}kh$#{)>-%BPxPo!|2SKcWNdxM*9J4OUjiHS(nMFz9!8Rg#rKcuSjmtf9|2*C-P6fb0bOaDDv0wH~el` zgylaR)qe>!z`Xi?ZOB=qHc{MJf2%vRD^Fz0Kz+FD(Fycraej&UUPJ`M3q`KFcRN0NrF9)mGMg&bU-C_imwG4W$ve8`H4U0+D+Fnc;6 z_L61(`H!HaD^jKPDayBfM6Z*%{~qMJ%nI;DK9KA5{5=97ov{ismk(aqef32Kakt}v zyykF&pwv}8{nz7r(pLwl9BK5=7?DTS7(B53S~9Tib1#?crL5P-J?rgt z4mSs7^Sg&q4ROdu<*&RX3o+coir-FM(T`=&Gv_xR-2^)sF~tCF+Pi5;(LU^roQ{%u)^F zCshaF6X^^4P|wEIewJ5%gp(DK1wozn=cQ0f^-kT|+gYV<5vat{PfchSyb;(0G$N!@ z@5*|n0nDi<5(aKOgZS9ivfpc&4TguT(h73Ij~WuK+YAY`5t&Am>9@&cDuO?u7C|t_ z8uEy*lWE~O$|(4?v6Y$Q@69feiu+7*m{E%F*T#)Hde$WUNb}4D&9|CHAfN+eZ=TaXE9CkP z=;Ty^0Z}@~J`|MY$ufP+NxgtZUfMx>fn|1o6Nr0z8e_RodQcZn2jxjmeMM`Jc&MK* zGQp#DQUIq)}>$@gd0e%Hd!cVtKb7bXiz{c zsco&?6`B&-){c^`(*p2<^nQST0Mb5~vO`Sh%I09cLzl~LTzj+JhkD1{Uu%h>*izg_ z$AnBce!=Obx(p9U?dC*LG~YMkY`rSC-=tCjKBAL?w0HpQpvs~Km|C;HuTb3Te&?WsH69pB3?U7D&z(tU}>3b8rMV{YYXz==wz zUE9KaQci9#rUqLH+Te=ibn`_C!|6GOmOB?D?ZRA`xAUDCYPP~=*Qf6m`wu$ze0tk& zJ!tDNQ#9*LZCSdqJyWqnbu&mCkSwoxv8xHSA65fbjBIv@uK|f3i-I=QT*lF9TuPZ)*yl%ap%L}e)pDI zx#1<7=E4WIO)TZdFZ|ewpgogadVi)ig6{VB3-^MQ)zWv*e%~0{tLdWqKte13z1psw z`bTqzEz?szJ*g({n$h4oMd;e0~4fyC9DkG;m+;%{hAadU^SQrJ*CX z$cqksFR~u3U45-_|74&Ua?tRH1I?f&pVI>WH?=pl09Bv8dbpW>xNUVUZ(e21!`ppv zec3Lrds$HL)kzxj71pEYJx`^mCajc!RLElVvW$f3mHip3&yJ;jz2Jh|aIx}DH&nSc z-hUvV<~vVDELD41^i(*p&4AEUDY?KiWUb?x2~MlpzWwnP7S*A1>g&1BxJ@y1YMVh9 z9;wHxCiFyrYz_aF0)hI{VJU;*w{DgWGXp_?Jm*YtlNVj|y*xcam09a`DR=kG`SZl&Q(#*LP#7W>#bp%(@!eGf z=xtAhk&*Qu?^}wH^NDvj2w z>jc3vojae&bXE6VCwv9|`)m|xS&-3MT`-rv0pfM{P3QBx(b2;lPS-c(jQquLZXj2@PYJ(tsBe4up6yp`zI1K8gpgHGO`KtG)WZoKdIbA;QaJ(Ol z5OYCajEfC|203gV&x<7vjCF)uX$+ksE?axhGZ5mMLJ#I|7{0zk1D_Rsqv>9lW-(qi z9t92o8Z&x*xcDYXz}8D1_Y~x0mkR(Y4Ckd?(Aajf0DXW*G%-9J59dzx%U}>v7zNp=aFA~sHph4aB5?mf zErm*VCSWhEDxw+Y#IT&FO`;hFpgkz#ktae!8e@IbRYV`qvO%@V*=CgDbN@3U|cPW#PUG+)dA2XsCOAd9xqx1)0nsXq_~06 z!fZKrKH{o8xN3f7>ff&D`K$jAyHHtEC zYSShFQ}1m9Z)=ziVDE4y?b`wzdS4xmOK(|&<2&w6lrBH^P(<2RL@!EAlb`ceN2qLC znEkctP{G9+KYo0&3&M?PR(|}&BD^Ece$wu(aXlCGOemrBcz|=`e0h%2BJ23UI_ zg;-I-EdnKJK2QoLuZJ%x;M8GBes3i9dB?#*LE?jsNKGFCnb7@)pyew9O@oI>aQzWc zOhAGOW4&dJc#Nn;Q`_Ci^Pt<>;4~lHj)dQDPm9hpm*jT2 zjeZU+B8@Kh1N}rnQ;IEw#Apfdd!(FQpdTVg>60k;HycE4G_)_ZQ;&o_~Woa_u(tyf&uemrLg93Hn98=q-;LqDWg#_fLFhB=j0M4+LTXEeODXKicyUUeJ%TPmGf)ZoV9 zFnc*+?$Pkoz}}y2EJh&oVS})IJZB6VUhOf3Y$27;;nr#(YQw%Cb_cBClU6Ypg%~Ka zY^6;J$}U&>`tP_Spz%e*H4gnZ(f-4O{`+ofCqB>iji83dzY>p9bA;T}`Fgm+cYsUE63I z1nV&Ln`Y5jYVlc3tAY9PZBoC~w-%L%iY&y9Uq#e|%oOy~0w-7J_LL@fh9*0MTzd?w zB)1jPYedkVfBl1CkY9IS4EPpX&{J#dUB=FE`IR8L4V3{upKDbQ^I;#UW*L=7I?nn1R#N!}J)F95Oy z2T%|mR|7e~BB;uE%a(!(cR}onHEEAY4QoG7TFI)A1%+$^k&JL$BMya3qe~%WX<||O za=`v3EsmEPj>$oxmj&}wai7`Nz#Dt3j2u3M@fHJaPAQCcCTbl_QDTsvD-tM}GoUwe zrqQY%1n@$%>O$e??~%k~=J|mU2m@&JOy`_vywYOk1cst2Ix`F469PiWnpe@8<$3V3 zCqTsSIbVpkhJMZD z#eRw8<+PGq7eZm1?zzh2w}tz7->VV?9ZWMWd2oY7A)Fv?=o8mD7=*N5@j*d>bFxwY zGliABhe8XSYpJOEk?~gHM^y(2RpJ#*A-UHVQ=pw~$NsiJbS+DRuLm0SgJ2InBzlKS z`gcE_VJ9n6EP8WI+Q3-Pmbqq>r~Kx863J1PmeziIdZ%@cA*2T}5o&I+I5u8^ek;u0 zYN%^pH|oICGQyQIqc$*ll^+ig(x5*Ndcss?B<fJqrPr~BT(<0U!gfu1MZ zo9y#7`1{jT13tqI%ev8zLWW`+hBwVmvRjKfK~oNR4ARVqN@;;xu}!m_`&YssqNKl6 zP6ye_$5PxCs!{|M6ksV)3)> z!}q4uOk~}%&|8*%>wPgTcTZ{*6dl=-mhO~tAK~#3JMv9!r|?2{PYWB9w2k0YABdNDgCIcuZQ2!=sq8>(Zr#@Bc`oaKA>S)jpPe2whtpBIa(_K$>}l`Bs&qp~ z1FCC0-UBC@#?y%+P8kau@hgkc#|C-aOSk3%-|TecY0M=lmS zs((g45#LjxVkW(FeRI~E=Tr2c+^h%J`C6|tGe!-8B2^5-CSsTFf56S&Zittj*k91~ zwd6kX1=GUY*9~0SN46i7s@HWr@g5c@ zIybUMycGpbuC`C7_}TS=43Ajo8w&<41!3#$Gs<&M)7%%WCzJQTY0@p{r3pXGeQeVt zf6LGB=_666rqN0-5+*C{t=02;p&Sq~>LQ^33UnaglcHTr^v74m^}jSklAk-5fSOUY z^?j7<>zR#u%^W6sIU8lwfK$9{5rLd3-XyOLjHhbP$$2UDgAco;-CfMfX=d9CxCipi zi-*GE@(f-8`yO+7&f6f^4pUmw7RUFOm$9^mRt=y_aE9HVc;CnEWyrv19HtglOd-e;@9v9tdlvWzTb=x2c1MIsQV=# z5m|1{9(M_{cDnwA<(r5P@{oEvPD%%ovfL@`tPoDyB`bJXwFufbla%R2GY4KAK9Jrv z&-G&P=p}l)vrq~PNiV&uWOTd-cstJE<#3Ms8?eaYzl*dM2?AO)JG3*HF= z(x5OZTZrbM_A~B3;bnU}(AsY8F>vg3F0dJfBjW*FSb=zY+6bxj8Ms2vOJ;2#YLw7G{kqukJjMYs#` zC3GSR!| zNlD!`_y;mVyDaDkP(b2#cPgF&TGdaHl)3h>TqQyD{JK6p>vZpIxNs!R)GTrJ4fCvV28$>pV zd%^QN^t;JG*5yaIFxfq{m@lMPfOoreLa-eK*U}A*D8(w66}7xQ#&grbWln{Z4qeRi zp|2TQqZb2}sK7s3WMkj}dbef_%g(v5=uFPp6M%{C66`Pn#l*fCkPK0HofLq1ousF4 z`uTLw-t} zg0foKGZzaQYV&L@ul%$~Gqx2!dDw3Qg(rk^{NVV#);47WX%${*@N>+rz7Q|143z=Z zgIf{6v~aYRcr$n~pM=t;m(+`cJU1Yehr&r-r=ucnHPPoy5L*a$?v0C3N6_R4ZPmk^ z?Q2J2{3+feYgB^#gpk90X8A9GA>(N6_bf{r?U#xqO*pfoPsY_GLAbp~0DT+nsKPuJ zFYO$t|-;u&lSv(v4DmJAR*(aL*-!XwG>;@>FyZjao`;mII{ z<4Y*+Y~UP*W!rNNx&9%JXHwnHkP0dzHR^T{Hx|?F4)Q|)Ck}X>GvjJ-I~YfLpmn?i z9iKk*wDyQfL#XDhg{0dPz8X%q=G;l=nQTJ`HsZ>`gH{Re3_W<5A@L*u(qXDB1L67wT~aFRnbE+w_i20?AY)NVUn76xy0DX@5jr ziTzbQPy}8=?6Zqi*xSGo6c4-cz?L5y!vhHtJ;%(o(R1J-MK%4*!sCyxhmYI>k%!z6 zH#AB9_Z*Pff{z6u@715xnDI^H%5oPdhS(m46(9?p}k3ui=sYhUV!8d7WuB z5Mg;^Ol9S9hnfndmqK4pqHoNfgv~dr#vUT^4Js}2 zSTkFKlr$2{Wd$;y&~WN4ysp{fXs?QsSdtn#YTn#zmVe0ShyZ~tWJp=>!w*Q3!m?X* zbNNOF;>V_-Z6HF3>m^xR5!eKD5s<53jF%38NbJB?L^_P$)w6L(ofXe?!z7tC>Di;Vk87})CV)@DsTkB0I6ZjA`i(>>HiF0^N2t8AJrBi*k8Ny zbNg_d#*Dhin*{nfL}Wtz5X8oirCTmC{|VUc!-=KgIN%1QQs13Mgog6NmfRU6W75+k zkbqJgMc#K&>*fm4!u}LN?U8tvjz2evTZK$h9gPGx4hp?cuUSGxY9eT&2EPhg)`r3z z?=7c5L=MOuKQ6umu-gz&Ln*Ke+9NkUrOi-31qy<`klb`?%r6DukSSXuC zWG+#)#gzgz>K$68$8+7*9%3n|e41g>wySzq_FQ_t;$5McMIt&I<-6xn0w6w;dtey0; zM9UsR0nCu(>WJN61SgKgqOOoimmr$G`?op$j&nQ!X;24thJXlCHQ&n|a&M&KCj@&M z$KJ!9O)!9|3wUqEpvja$=M$YNH+#K%&1gTV6}u1u(+LzV8zS?ddnmkt+jQ)%LZ` z*o2XAHUS|Z!Z>o`cwLPJ(hdDAF)?9Gh5-nj)9}{pUzL;?TV)_cBQ>d3Quz2Ja=i6) z4~XlAGJTS|46LYaJak8Cp82{@k0%)E#|DMb0Eg?uSd0rRL4sTQb!o>J!_-GzN#b64 z9ILY4_Zs)t>gONkG#GtJ`@L#WXB-K2?gzTK`?tmDAAS!zw$o}EZ@v(OR)Ge|`R9Ue z^=y^IEGm#1h2*QCCc?!ESfSfR5+SMv(-*fqCcAirfz#bpzRuwJ5X!M@+cC3x_1Vhj zhIcy0qzsu3T6wIuPt&_4cjm5S=Il^WyxpFRS#q3r%`To5+#7N6@mzp)w34{e;Ht=( z+7fj7ZM_LWy?gWLpS3)OOZ8e~2d+rYvd#6Krdx^Vv3cgBT(6kYAfE)iaXRh{(=`jt zcH5{R^Y^i?=#P)Kn!5%&7xAaWJ1W+fDsJug%y@j+rbg8&uSg&3ewM`23l%8!S=S#a zst0nKD$6o+kUEFLzCI;_mpcLpI-VeE8 zF%c2mBQ-x)vdK6U(4imH_(R$qh5we+%Dj(dHV8t0eq7KX9zPd`LwzLww)>_rV-?$BxHtNakXMp#MS zU$D;3z~uHo+I1l$m43sAK`f4ebDT|B)Z& zLm|jKTw;;5HB8aLgd3EDs$!}q6D9SQKuw+~s8O9GBpqYmB*A@!;hWV^iH_WAV;Tn< zn;3jn_H}sH$uqLQh5J|McWyU^3MN4luJfSu*0cLm6!s5Sx$RpzggA3llJ`rbC{H_q$|1Fi;lr$

g7a&D{3SYyGE#l<0;g zObm@S_vQ0)(mmWPJ`s(4AW@K9XZ9j)MlHr_{eD-?QngK}YS8`p+@ZB-yA}>@#F`-J zHD{4DaGu;~Hm5qd|JaN3p1vvx`#pH)=5Ay)n2m<6_Pw7H5wj)JpzIV_pBm&gDYH(X zOm@o*M&pLZ31G1vgBJ5ZebgLf#dkR=lj}+`J|>&pGFrxrmzb7ib#{$O0^ZgN-Lzgy>b%mPV)XFBj9JW4R@Uz-S*?HPE^1Gm) z7S*TyML~qd&L5r#4MdntCdn87rlUIdE^H`yn&%%3q#L?{ z4vdSP5{G%+TG|V2yv$Ld22A}D4blr3hvJucL>tV$l*hXf1fOWtkF*(2t0PKSpnHcs zBpNEZ5t)8OFfYEy8VkoDCo4K=@|T*lENHRJ$*WzvGVb=L=E}-C!51M0-TfWuDGL5h7Vf&O$}vnr<~D1)8-8+^91P) z5;Nbanx)%B58l*NI;I1I&!0R^`-sY?&?^$eA(5OJVR6(~mQZ~acVgTgTr9_Xh58&( zV-foQQ20F^7UB z4X7`<0W0Y7*aKUlvcR@XVrf| z_{N4R)Pv$wSWX5tQX9l1(EyR8Q6gi#Q&hb(i?{{JYuoiB{2hEdY_u2-q-LaWkq7XH zN;w#qHyk*msMsJsx)tb9K!)9y8Rh=LncC7t`a4oMvgZpFFH`X-7J#~G@yR-={N(*k zzs(5Cn}+aJAQqJljxt>??wu#`!b8?Z=tbZH@+w%!NQ^g#-K0L8{3twW8Y7&`+&_&l z*-JvW49rNK^zhzJd`(!J$gUfxeVJda$uci}{jg8kagL@bNK0L}LpTwo7P1y?EvJq} zBA!c-owFl5OZU+W{(-q*T+K2^s39^YbF=f^@aY6(XH%)@+dD$8xQ2b6A~I1Z7#Mz) z?5LSMR0JzK6vTllYj>Tl9Cxe2geS|6dQZG+uN&Oxu7F8ogcaqNNd|@4(B&?@#W8|w zmY`=n$$*4Ixo14|j^5{WYkbiOr)t|-@V*vJwIgHHCHVX=UvhUhpE>LJJ^WQS@B2r@ zQux36c;gieLNmDoz-3;VDN2EUSR{Dn3IGE;myTCqKn|xteq#292@Xn2>Ifn%eBk3W zR0~Aw0LN_6(nw5N1X>%izs$Vv&C2U4i!{>&T9ysi`GkPR=tZNL7HEF}9hz1;aa5gq zQc4I4&QDY6j4qE9Y%dBr`}?7_A&u1j$53;=J@id^qW(?4+ZAp9CdIqF%iIIcD`e-) z>rT;Y%1MR(LJgz7V?ZmDG{BxW2FT(e?(J(U3wLr4TNZO@UTY+(1xQ4r(x32hl7^Rr zdFdo`VomF8QY4M80!joOFAaQK&(!i+tXUchG{j~{63F=lAqR^% z&4yqoy`Ed|es~3_E(uXkPScoZw7LmF5^O90JiP?|Gz0!&dIqgmFpeyK+i%csm%`%J zKp0i))#r?`<8PLVfRq+l1NIrpPM1B9U`+zHF&SIEfE#!QoTxl6MPqMY-U!C*4%#ci zS2L>xw66yBqnqC9Zkdc}Qlui^=?9P{c}@&R5n5(#*jnhWu#>$!?+L_5RoG{}sKoL< z(7E-GU}Jb(iZ9lxFLgl5o#vwy<&I=+iSzz8gt7`MIst08bE)2bxS^7+n%{R$do4)3V0q6b)c-9GHS8g)779K+$Tf`Zl$oN z%Ab58{rfETYa*zCCw4CUROj~n-Q~!z+kt+CJycMYl+*)N#`~c_TcHp3PeFovWjvF( zblhcH?RA5Enz1*QJ;b()1QRZm1hg%C$ZaTv!8gv-VD#e#c?t>c-Qe|9V~3#F{L?_S zX@O-uC<1*7sh;w zhZXqb6J@-#Y11j{p9rDScPEV3uU}6A)GyS|%fa{=n+ZY!Esvry~c}!*NMH zD4+^_2+@jZkcXmTW|*MH!vSK>;MsiUA3w`K|;Azs! zvorXR8z_J>>+>qza{OFe`9)l(LInnz)Xczalfg-K4WMO^1Mb-?E>?vdQV&!LcXYpt zY^a3k(`m6XW zfaP9I#ypx5ax|!KDxh}12?!FpONQR;r$7Y8V;Vw8lDRtqz7u$*n4W`=t?UtndqW)E zbufs)Yl9d=s-ktg7yOAKy~=;L=eo^CEchqUfO^?8}ai$ z+qm&L>{}Ci@RvNSFeG$Rp>)@0O@va#xMJbd`y=bxpP$_Y<){}fhy&NCqdNyjU&hg>LA$`5{$}HZVX6ag+9(87$bcs{-7-tv zzMqw7*44GKGjbsTpOgn|wKgf*T4FFcTcEqk7OU)>j26|EB5L}$a*8xW#%Im zyY$D;uazAi_F&B?MQ3ShNYKLcq5({fkRBtZo_DV3Wv{j4XR>&zRLg0#e4>D96YMfS zE$_GJ?!;vtEgV3XU+{Wmqo7LBi5+^%o8UxeFritzj=yFD3le8 z$1d)&W&etA3)$N79d@A-PaUeA$u z!-$68tKa}ulA9(g`l?PASTomG<44aQuP&tTF62fpV5CR2xYLUor{4vpnt)TLy67*G zL%>>1cSHt6j|CzIIyR_p^>IVn-gF5I?|!AW(V$c5`V&^imqb;{k4dU z#~{GTo&KD^GG3*92c%#tyP?x2!$4qOMR&v+1(zBvpch#{gx+rgwG&3^XUb9rNIL@( zP$VMb9V9>neXS{RBtpQ|5!Z*ve?gRA&ZLB(6a)z@P1IBuMvIH^LWt~EN_ep@=9^LU z0Md03c0<(>upU(60$fkNi*L^pu|6wtrW(t?;wU5O@LI&qy^ZSPp`6)DvY?Ne!rL>u zlLs);tjl^vU0n;eU2=}02QVHiVKawr7%3jG=WaM0!|rp-q2VU|laL%MG}J3g-}vmu z$<(;X7<1I};!1O6)I#?zYAe2Xd8Vm7Tb_{cnUTS&%D}@_NCaUGOESFt>?PaD)pMlP5@nGE;Ed$(iPMQ4Mb2ZKkF zt{{SDlA12dZNpv6#-I8+X4{1+oxyjM@|EY;{phwb3C-f(({*J<`)hYtU7KFdn*X_$ zpL=3eMqGOpdF?I{_r@sX*EMs)>u+`6NfaSc9>)L6Ph@ zW6w#7iQG#oyTavnR-425m!@>sK2QQ#KTxvPfBEc}xpo>N36D*7+hYvBM(j3%^QwN_ zumJ;xils9vL+pL>@5f)Sp6e*hC@jolS?j)06ux7;&BuLG-AiCbx409Jl@;oK%m3$t4*J7+`HRU1fpPpx(g+?>lD*ud8FyJuZn#YC)l2^xxc zk-IB|Uis!|&?z2d6m&Rq?c?T|gX?K0I2<2ABon^g6!GnpywBbR7iDd-@b1gau@~mm z1`Iv=S|sYiKt?QTYK?QBq2yxrP+j?^Ha<)0r`bT*i+B)3*T^)yDjS%ZI51Ooku8%g zW@A^B)+?EioAqBB_g{*t0m9A3d@pIeXvmAgG8%T2i7{X9{Q78^>Je8feGU!#kTRJW zoXS#c-HCPZRNFwx@fV^SgZHjr6(w2rG7LVxa1u8hHMdFG;Mvbjj6`$AeZkDq4SE15 zmV;<9f3JLZi@YJ{MDN)2T-_PQFoj5i8{|3`!6dcPp)%9k&*zgX%R8h$90?NDQRItD zxkPZ*QXy618q5bvHy8I*{lGvtyf7RNW-H|9?DigV!O|g2CL5z_OCB3a!)-e@6MUS7 zj$d;*ujpGga|`{!N~UP=wNZI|Wh95Q{-u}qyf(ws8F>hcG2o*>P?(OAVQgY6TRHhG z)pYT2K>>N!tIblS7@OoKeXGtVchYZ? z#_1SPE=_J;{isfwEN*>quiLAkLTO&nA*Q00^Jq7wVl*{}9DMI#O=Odzj7KdsyA6sP zt7u6`5#`S0;VLgLet)5}4MXAEoVIZ{7o@OekZatG?=k#E3_xLJ?rd>MdM?wnYM6pN9JmID5bbomaKX&w2H<`NF3^V=8g z;V9%D#3t7A1z!E82@t#;06=|g??fosjTS&v9!bbb`xIUI z5GfWbGEZ=Of9-jEw*ReWCBv&GoC9BeD0?D}PCQiZ?ELKWIhbzD^MI1wLi?NL&yo+T zd$v9BhDR49q%aNw_qcMoZH7CQX7T%2(Pv@}!IShS2HcjN8JMw9ce$j7{u&~$Z!Nf9MQ50@5Jkr!o=5$DGq-27rE27 zi|U|k!X}L8V>ZXm)Ok+n8!S|kt}HO?_-Ey)^}u*Pg;g9D5t7>y!x7+Qo;U?dJn4Fn zUhwq+&0Qh(_!4?$fMerxA$xPmO{I`Op@968i#cew;QZ|g)8Vi(!c_(QPBgl*1u{N# zgLG{cW>vW7@;(I_nCR8sMXKpG32246KJ4CiLQ-%jL%L5U3Ftukk{)Gm!4XU7h zBe5HfQ@AIVl%HUC@Ts#_Uc5H(S_mU6g!tB|E8^VmYQ|rYZ}mg@O>-|;g{5AYkGpt; zN!bQNs$0Wo$#PbjgTeW9aRtf7N?SCf>8nX+C#!-hriA4z*ob~{m; z75S`%bkeX#r!07Ly!JuGjRcv%lg=dF)z0-gjZ zG|-yYSk*QWiiID2Kb#p`lNLYPbZOz*J@KC?aRHoxIRXkGD40@iF+GASLXHX`klP(p z$jx;e#6=y@D@Gq}0GVb10FDAigbofTiVVl8LrkrX5Tl@J;VC`g_8@_CC8+K&fca^H zgCWxh#xajFFu?kINf8!?5@vI(4&W>?Xa|+5y2tPynh4S|8hqX8Kq`ORP`LgcxH6m? z#S9n`3eV?lr?eT;2qPD^G(^rkk*dPKIC|?SQDAoh63Evbjs*v7*4N=@>2CCND0kiJDhwSHT+OAodXOep28TO>s7wfMjy?8YMF9$dnZ#Le2vJsJrK9L`Vm1Ni)Yk$um z>X2Y8YwS2%`n2x+$Sdfs|6EbQ2$34RITR;v8PQ~-!)_S)0~vH*p>7BThG;>$!vfDr z>qGv8-B7v)R}u6h9sk5BSU{h%$?rp_(_6eQ=)~N4#XsmpM*Esk;`D|e_rJMj=npXI zYX$W95GY|I=C@FQNpV$H7BO&s3h8M0A*@r>#iKZ_i;!ANDhdj?qOJ?*)DV)<7uN)^ zfqdQ_doN3xTU+s0xOHE%#}VRPNMlHDwvJuGP3c#TKhy~!b=I1ZtTGxuZw%=ap=0l% zwiLr0W>R+r!O@AVvkgoD6VM(iXSPJcQAUJ~H=l7WM8q}pV_IVu5U4CqyF>`4Npxbs zx_~etT*pgL_ROygwRgPJWxhxbWT&E}fnc~OF~0!HRTWFE&*=syyD?Z`ECVFUJeMsS z&k8271^kufL$($>qNNOYCS1Y*kgC#&P!p)*t8r3+5lzXj9_9EikG=bQpio%TGC_vS4Tr`DTPfrg#`0s0ttvMD;xl=a-NWkPGYM`MuT#mHbO+5OdeiwV#t*6 zG2P+FQ`q5m-GFlgj!$$%2ILNs!K8*8<_pF^2c&V?ew=V<3^fJhi6r+hjX?GO$oaJ;!uLU3VBg$DS3Q;#fMl(5h$CJH_-?m^?l z+a31Ju0rZv zQ3piOtSK5Z;e~BP=T|LAt>!)nj-CX5Bo_)^QvgnAFQgwC2dr1?m7~ObLbs+NwB|mf zC`lDC4(=CdLKr|f4uCKCz@ku7C@=<@C*S~eQ3t%0+R`z=lsOX=@R(n&4tKH9tfU_h zJ^VzSFmgBvqTfkjCGaBwm>k{DA{>5e!vJd$Y=^$r2*x0Yan5{WMKxvjdF4;Rq0!^~BLB;d=8 zUEpCyqIXkS`W-O=&5;r40sNofnb?Fvx?>GWV0Bnhf(88eUyj8Iocs<^p>A+~bJwTt3_^-mpYVkdG6}THvnoqkp@~c5&wPksISrN>efqzrE0DfW+=_G;0I)(&b zkl>$?`nLHLiukN9DCH~U<5QiKMF3qU2%dc4DHlW$(l+f;fxQ7DSa7M+Wp&Lk?0!BP zs=G{Iud$_&`Q#F{#AD>PCvJv3zgrZZyRX$V*Vqi_#igB2R`8&J-OY5}l{>8g_xT6M zX|Kk9mDYy9$_7cdAkmo`SPEM9hsNuND1W(4ggiNN42uMCFT(Q7e&T^T*%nxXM_6{B zQ^Sry5=(Qh+yWqvo2h`cv(^1NP(aamU0d~ttN|IYs0>VB>T}!;S!BN-&j`Dqhhhhs zYevS3sZJ6aJIppZ2?^W4fM8pTR3YQNNE~5}8ZcAX+YQPMA}O%)?CropY)uU?Py#@I zvIcSn<8O`O-QT|Xuup7lsA=NryYbaKjvGE>n@i>2eisowRGcm`yviANY%;&x)&kBq z&FuGg$VeCrNX}@Vb^MbX-qeD&c*PL9I7PQNuEPBWy4Bl~ zyb*$1c%tO&ma%Ltxl7<$oH5Jvfv9nCd<&xdeE)Ql@rbU=-Q{NP*f#_8OD(8fCrC2< zcAuSxOd}ps3ONWt5`1MVsMIS`yS)9tp$o9UPA*&cbO01Q8i;L5qs2*y4RWu@V<2n~tWfcP+XWP*0D&?VZzY32w3fCAC?L zwts)s%4dZeW5DwMwMX+?CYg!XcY2aQyt>b^Y>qmSYkiT$Ta}pd9=#DH<1sPQRO2S8 zxHg!FS|Seu&0ZMneJ&SBE!M6*@n_oAWxlzwxO|OHzMc8^`gElX=T)S5mI#glZmHow!uy8Rj(UA~5lOZAQjz?PEzO!`B>{c<$?g zU1j}+k1;(>cX9(@ z;eyq?xfU2O?-rTQN?+)TDQC9bKgr1yJ0+}yCTY%iFdZTMsJI^4>69!yaKx0R6w?66 zi?P_DO9fA@Fg&khGp9_o)TP7UB$BhJV|E*dqj3-btMc>&=mX3HRvOOaAsH@g4qjtK`Oc&< zaBFWtX$(uVa9Kx|)7p~qiFw`PW9ZD_w+oBFPt_Z!Y=||yVT0y$AMh1yTGf3e!;B{E zdmmICG`V*9rmanvsb5PbU;qBs%io%S3uFXxMmL#mgv{7fu{VA26mNECbjl9eje622 zTGh&$+q7Xbn_nDy%UMqryh}Cd%}#*7n1R<=bU(AuPveX4UG4#QHtRxhZQ?>9A^sN= zaQ#)~F5vk*_c6V`_QBYEz}LP+C`wp7CH8gp9i_8}a=PYycqF+^6XP((j8D7j;~)}# z7mm9K&VEZ48Q=X*rJ5$b!o1qyGGuH;ANK;F17`z)n8^+)jH9}!u6#$X+A2{efbC~s zUTsMzJh~iW$Kvdug2gJ{nS|nJ9aVBLV~Bn9t}|*0x8^={Wq+Ldcy1((E?C8xtJaLo z>$@S?0yBnb%GAoA6u{lN^%}}m&vHh+L}Z?Ro;^!9e#T>sddTWmOVwMSwm)v6?dQ>z z@};MMoCVS^qhZaHJgZA}2qKi;VzTLK0GDX0{{Y7OI9mru20VR)U3Ssr0T67M@K4Ui zuX}?%`BAd_*ZHhbpVJ^p-`n{|ks%IJqd=m7B44FCuEPdJdlQf;p1J350?o{v8l+$@ z87f|{L5?Fdz~BMg#a-c`I`1#&%5YF+ySu%Y&N?<;*%NTW(4vMp-1zj z5Ytlv5R3o@)foup|?h23yM_iTgPC}>ebsQ$fx){jmPGv!_(8VSlN;Ir5Lo35R%sV5+03*c28H7>q; z0srE-E@D8>)CK_j*m1lO&n$a!bREf(vW4VA&}}EEwd3bje@sq-7`v zlgub?7SE->*g}b>5Gk^Jw?-u*5g+bY6(S~bzqSB6^j=$AttV{!B z5f2y_sq`SkAOJ|}6t&Mtp|ZY@CFq?+sD`Fsf+y?fRNZ3_)H0HxBkf-wGcEy+FNaOV z3$O2A9;xek_|2T=a`isq@w%gn_!*uewx-rZw$w#XRMWHv;#Vv6_R|Tj-aNj>rgtLU zR8-zr-QKO_XK%w)^IHOC5E<@(&n=)I$dAeeRw3?r6+z*6>B)T-V^`-#uqSJWhKEL> zSjHOA9ou5O%C;`9Qzz_h5#*o(4wh=YWLUdyf}yD&xF($c^*)!}TAel8WRFOL{5h^) zypl-?RPdSgjy7$ceK8XvWOC))_opLfmc*yJ&WmR2gez~~_yW$0*)tdNS66$8A&>Kwo#6wEShpzzQH~R){(* zYj71c2wN5vjP4g8K?IzQr++@$lZIuuKwDFsX`Frz|Yfog76&5C2p_ANIGz7U4l68twJND+wBt+~u z-%Vw7QPn{OP;&3}lZICeqMC z0SjyVDOuyuMj~WufcqW^H1icAN7x0hRRuu~i~%@3-Yq21eFDs%0FV?IMfWAC=z19W z14ShW^p=Zj*wPSb(<;dRXv6fXFj}n>;|KwBs?ym+1j<0Lj10Yv#l8<%zZp&iA2eiw{s2YZb(l}7@jxZNOFDc`_pFGnu14#qIshfOfX4--EDw~@ zddT0vi;Z%Z?Hk@zvPNFNpKlCBi|AwD^BpE@4$z@Io zyA!5_-KldbmR@+VE?{;Z2-=+q-vbo_c*^2J+N*O~vq~}MyrIeCnlxX*8zF*ZBp+1w zLW)2#!UO%}-FIR83}b(-z}*eF8>xof&cJvE`4GS=&`W@R9={xyKOz>aMGKqP@AYJ^vuOF7mOhJ@@t-_$!O9u{mh>8^ zr*Z1du>fZX?1COZ17XBAoj#Jk@&);mp71Abl?a$!i=MgPqx%;=0Bh??L`FyM*2)K? z2$Ep=Ue7_1Xw>#5{nV*iX&qBgPC z2W5MJL`C<5hD#tjZxo7`H`O9=_d+*nY|R#3D{lga-saf0#_4UItj)0i9h_LRmB-VA zi~EztX}}OWdk5+G2ke9VFi1SHZNvKO0=MfSb%-XA@6D#%8FVu2}!I| zA`iRId}aulF-@i4b}|GkK0yMC;H2yegC&)KPo-}~%K=9XV8aVkY2;fHD~^^nz?YB7 z00k-_BqDX?I36qNTd>lf5~xgz$+-85e6%DDUVv~ZQwdvW;m-HlPI;&p?=z%HA(7}I zGMI8llri4%?||jqsR@_c!*1yRymn{4OuDwFAlLIIs&PC=fHy3Ru(vuXx6(jj?mnp2 z&Q4a$l8k^`Bp!0FJN5uX!Q1m?o>am~2L|_O0$FylsSzQsZFRggs@k+XR1@eqURa=o zLNg#(tQ>NjdG1BLya=t+JU}HATz}7sj$hm>+G!PTVj`#9sjT~`02{lb8dh09d&t7k zAeu72FEeV)Z54?dP@7Ky!&F>ztm$#b=kY(Qt@#bM@TUK%s3xkyu&jU6=fYJcPf98v zLc%W5{s{-!@26UYzw8+;{(a4CI7N|D9rgJc|KQic97Pe_Q#wo5(||NR>)x8Mcoj#L z)OI=9pSA`vAUXcQlI%%49xpw7$Nd?oo08rc-+~_kB#;i+mX1wU`tI*IlterDGdJ}2 zY%K*(2y9AkAKs}vMgktyXh|sj(MJRzbJZr&0}QTGA5Yjf`Pn(B?i`nZ+>t*Pz^hW+ z#8Ev}?C?s!Eh8V$Hao60`~@gam%!_g{u+TIGyrNODT+>ca}rqpv$ymBQuFZ$)CobZ z1j(gmoX_tnq|YTEt--5w`9hNItoWM_<68VP9YwnV%#@OJ-JE1g3s#EUV028N^1;^Y zP@p0fDghQSX@&Hl4z-U61hG^?EbH_U0*<5Vkq<%SXNd0~G#Ill#|?Tv3u#mlpG}|d zXZO+Gps9{xP7qU(`ihJA4;sAljR4wVf4QL%6 z`dK-HTZKa|{a59|C>431Qh`^v#b!et{6V!qUHjV%%N*<4jOzx5_|9=*;R9hacV_eF zVlR1rnSNTfPaEssa$@}+O_QMll-fs^eB{US(=##mM-xo?Hf|l3V-Yd1(^~#i5F{~H zyCSx%YA0$+ahr9Foin;O^5{rYo!;ZkgHcrjjvKaGRzjrLn2KAQwXt(+BgV^FYm+g= zwbhqq%i>MLK7n!He>AxVvVM1bY~PffyD;t6>e;_A_3Qme?@a%Y`K;Z$@J*tv*S`L> zsrxH^t|n?z{j&g{(zrcd)KRaJn($gznu%`Q(fIb9XMc!E#IJ*4%0?tt7Itc$)sd3v z4YQSr%+~-DNZIf^qs$v5TJu(NB&Bb)(e;Q-J5V#32fdmk`d9M|tB6*aWPQ&C&;HXU zk*-hX?1xa#vIac+*8?WHKkK4Q=aXowjQ37Ee~%72BHP;L+7w^9dU(1ddA$ku3tMyl zSK^5D>L+u@DIS;aU7zR|eiG*|J6!PUb1dC#@$8T8-(59%!GlAIX|#7>?{k6Dxe`H- z#$ZpWH{ZzHBv*?}niuh!mAk(y$B@q3qfFK~cT`F(WIdwan5o;B549plEoy?MO#1Z& z<9w@2y9yq??$!P{xNb0e%jcI8XM=}yi-925i4KbX&jN45Z`~(z$`%GO^ajezKV7@` zaiQFThR!{x8N}SVd6f8B{EnV%jF37;YSBYqKXKsV9iHTG0X_wVD&B@{p@*6_+nppE z_Mh;%pY}d9i)LH@%grO3M+WTGBJP93c62}P+3ViMYhC$F9S==1)82#{YmN=p1 z&^-N-*Cei--IcBu^6NbQ$hyY>-(e3KV$HjzDV

hcwSjOk+z1w>O6(KqxrLFNE{C zMY+~I6zw0^sFeM7ej!zGz3xh3lW}J$zno)W0F*icP3u;tWO%1!*UoD4+nd#w`nyHl z-dijmr1Y_LX`uax!=66dRkU1Mg_tDw_C0;=y-pz)5@{w9noh(d;;BRIUq2>ix8QQ^ zX|Xg+u2o!VIb@+5l){WAgiH~rFs zu40$*g*?!h@m47h4c4WN>`mw3yM2plnR)LkS0jZ$N;YOiBnMyhP*hMYPw{ffYFk3Z z2_m!0{)ikx@wCn@0E?t*Z7Td0e& z;m@;Q!7}~!-p?=j<)Uh<&S`?!03XRs#lwv9^Q4zyZRiZbsLiQ}LHWPuP8_P&Q_(?c z95-rL!asq};@g`YSvrRPSBw<9)lFSq>sX^oAM;m|=?2sID_<`sl_db*g1iWP4k1Lv z;8Z83W<3W#FczQ+K3U)w9d#raIPoBVCDWGqOLU&{M>V>}* z(0>)&*am}6pCsnrt-Gjj4a3ivaom|)Vu%K9rkHVS(luu)bY6aYutTf+Q zkWeoakxi;WC#-W2@1|AZ^`meH+MM{EULY`cTA;ZLzo;8Oc)(E6o_63ZXoqlYhr)g; z)IWZPo81O&Ki~tw-t^GV9vvkIKnKCCa?*1fl*yf(Z6P_Uh^{qIHUQuNQ6M}D9PB%- zC~=EsPjzYzXXAzJFG)VPB!|WeuQ+Zuggpt1F#y;ssN^L88+8|CI;fy9laebA1u~D_ zP$UD{ka`f;O2M3Ir`#4;Y2^>GXBx-fhEN0AkS(1sJ^B)n=0mWk%oB><-TS15d@6+g zM2x-qs-Wng;_^gASDN0P{~Ci_sraUhsOA3CZ5u;q2m&`kjlJL>T>x~Mh| z;u)go(6p8X)wSPbE3>1Bu4pR)FjYlrLV=f_!h+qvFFKIc8l@A51tHyeo|W)jBpfFb@QVRE z!fol(m+%(B?*iWkK?g%V!XgvsMkNHTQwlzd$;LHVhW4mpMQao`1d5f^^nf<7^kI8M z$wt!s74hI4XMCM z_`HD~$2na3(a|W%n!cW9Qvs7D@C^?y!+I|MGUEm3S26&V=m}*c&nPc1aUBL46q<{I zWZ(Non)A#(RbXj9Z*&_h=nhAJeEkFD2eC?tXrsg^V z)gExXK^in9B0X&Duc0D{_)V7WnEA5vmCU{i5Q$}zci};Qb|ZDBkid=gf78KPi+`WL zP)L6g#&ixkj6}|UgJv1PR2`nVyhR)YtqUN((?IaanMRNT==QY`-WM`FNb92I#EClH zyjaCzG}LWdPKU%Bg;4w-zTaxhNQ&7O)d0%W!8dciyB_t90zTIRska`vQ~CWwQQ*(K zLhIdwGwx>~;Wft&#biKvvK@d8>bhI=lZ5WzS|K?s1M#04O8@sR`q_hs8K|r|DKm{~ z&!<4k+dx57sBb6WyItU>fhdSzIXbyql|?`$G2O6RA$p6i!2K>M&DopBUF8J~&y2A6 zRFJ(>?O_Z`^#A^wGc*p0dk5(_nVh^?`VaY?;!U*OsP1txq9J~Elit`R&h7F_ueT+m z9!cBoh81Tr716vz(jVwJJ=Svr!d*5%8U%9~;KRUTsw^ykDDK&e+yZ9IdDB#MSUcj% zh(~S?5I!hyxO#fM{0m6Epq}AwNCE2u5LJSJ7ezzBj&LBk;Oq9U!Z|U(8TlqWb`nw} z_pg0d?o!Ri7&L&M>jvydqQRHX5U;0RVF|%8p4#2hl`K zj4&_Z-+{c!QX{4L(l=p7Sdk;+-~z}kAm{~7z)@ipxo!iZAmkX52SHeZih>9b2l^9I zP+P}A;GWR`NJHp331M*Dy?+hJSFk6%>0kEhmi4oTfn@&fp#I>>^v zeF3xAv?#FIRM=vPV+aUC-HZ8-kRCfq|vN#Hkqi|S7bG?vyvb+?b>ZPIxstgGlsLVxS&6)5|tKpw?{Gs>;>N96# zfg`30?64DM$FN7N6i7|B0Hocv5{@m;GAy7^GrVf3@pz-n5_U_0O5lt)!SU?ZRSU{4 zh(cUp$-Xa-XU)Ms7{(=R1EpF3n68*nH0sO%cr5h1j&z;!sOI5f_n=C9F`Q4e0-&B% z>FF$iC>=r)>@qTQlk;U%I}y0k0gHKaZwL|sEF&@oH`+Gjb+Rzv?R*B5M^mXlT@;x^ zkjxJQQYtzQ$iXk_EP>AgXus6A#{Qo6D6h1zcz7F&5`u(=pl^W0KrmK&0mIpBD7XVK zxH#dN@FAp+;m_qD>wrOfl^TXP^ss|Lx~e@-9e}fC|mfoY=I1 z(A-T8luH_6{i90YZmhr3DJSn~BKc^?yhv+p;yUDIx7OsNIe6B>t&R=0^68GKBOQP( zq&pTb1Z2oh1|e4WJy1#d^TzWdRjprMd!V%BpDpMVxqx&sb2`0;QH_GUkHd)qLVLQy zX%hX_`IIK?O86*YV{Jdl;k0%o%;DzP9VNXjwwH_)cON7ppgw*Izr1wo=rHtWT^?=w3a4P3h7LjFJ0&$;E zLM_4o+D)ld++pbx$`!D2BBqZMpF2fE>%G5n#OIF8U*QwA$x;dpr$e#bp1n689($dX zUfOhSWHUwaFzr4`Uu&vM^XB(5CGxCz)Xtafy!R$F#&hg(s#b0JLqLPa#(3Asyw@uW zKmCyQSyPnn*B0u5(=9LSt^iKLoqdx_I%9%rE+5}Z&Ej{LKOa))vSP=wZT%QuB;9-!l_}m?9 zI?JQtdg$K`M547&d-@hjCa>jkgq7U`;Rx~BsM1TPYZJqFj5&`GkHvz+!@zLnC8(FY zkG_Lh@twvH>)0Bjb}aKJ+<`O?bdx3|tIvZMj+3!$3#w&n#J20wSk^H6m4|<{(_1C0v7)f7 zM`-x%onB%qo- zspw1nq;FN0KPsfkpPe^8uSQ5cw=b1|5_6s$kXWi~@5efV5G{AQ`A~O}KaocIX=<1$ zhca(lP)%KoK87ljb-Y2?9=*bpdNYEPPSek zbAp=*m;$!lPm1o}W*BdPk6T1cWD<=b$qSqDHQ%HK43#0AC*gJU3OWK(%r%JBi|H%O zybkL_&?SQOExZzWZ^|~rp9V3if%H3AxA+6fi_;KNg~k3=p^RXLaukX&vTx78ufP?> zavS2Q1K-^B2Cpeln}h#>8&6#SWkiO2Ct5DO_JsVr`3T_SE8HEa5HlE9JpTAIC^Yzi z4NnFwXen(ua{Tci;E!=XA6%&=KzWGjx6ewXC!{x>7~spR3NbJ$0e>FwF9BKCKQFFR zboVL{>_L+X{6JQo1_Qw1(-L(J>b%N-8-fr*ETf*#^!wF!1Qe|^)nd#Vr zBMY!=;es%Q^uwfxfXQ@Z9bX8Csk}(X(0cR@1%SnSN7LX1)iiK5xzq=+XQ)_<(wBJ7SA*29;;(1zlux3j zAl3*LJAYg}mD)`O8l3fUAt+i=kr4YFSk4Owwx)4;AY^`VQk^OrAkbUa-nt3ItOn?h z*08N3;!TiL?|AmRCp`9SIk+H-S>Q7S?>UwU&PdIo1kk#UTQvWbO@Jn(-m_-sUtKlHN0+dlYyz`Fl5frfQVELuO4o`ou<$J(dzE-r@y3^iKhn=_SLOzsvC>(jy)!_G=2-b&hPJGgEHX$(Y0XKa?o+0YO1e3Wusol z{LoPTf=l4xqq2@~->BfNUoO61aGnV?9O+Qcsy-L)6v$^c6)oj{)10dB=i(?ud(?0Xw+V+^G1XM2`a1w;;YG}sZ|17hBkTYTZ)2XKQmYNUPeVNG&4(-ZT8MbO&}=uK}w zWZr&MITO&x$<-XY4211wm4aWNh@f&#?ZM?{Gp7?6Hipd#^P)~YF8}T~)SR6iBYn*O z%a=#}w|78g*zWglrnp9mytntcR(y>O5skaoZ^688a&Tjlv~p(tDC?*atwMD4po%=-`(Gx}CfS%S6%FVCJI)oGbbJd4*U*({M# z+y+K9H6D@{XCJ3jTvyJ;zwF|SEHT!&q|J-tuG_n%xMwoWEY4}7tkxLxa--_f*2?p8OCoCVd@;SOS(Txt zGVN!<0Zlxn#;{jBmfD=*t(xZy?!HOix9=8q3zAs>l24pr!S#=;LUXviesNeIDj!;>gTKpyS|3Zf_i zO1esm@&=MDl&4HT!}aNbqY*n7s>q{mQ_FPI>Q{Xoqu#z8^2fZ!vmJ-tx3UzHS*zD`JoqWGDBmy)|``lOuU!sNqouT2zk6t z#FL#zebOfO{OJipij^Tt<8X}t48sFHPYopZ1O*I>6&2-sntEDIS2VU?O+M*ABJk2= zP|uz}2S*o@lO4(`q5kqAIhzIOpi%`OXY;bV`@D~IjL?k9Hx`t2^oWVbp+@e0jGCii z&49;^t_S376juo+ai2S{c|iejx1)3^<)zwV{^*`w>6|z3ylq`wu}kW47^4et9B2p) zHp`9C|I%HW&9W&~mhXJri{hs(p=T4z7jvHX%keblY?RORHOXSy5YuyqXnpexDZcs9 zAs4tY1Ilh%oe65zC%K<8_23+i2dw$=S6bf63Y+2SyCG?Mw&^7Crr3UIVnwLEC9lE$ z0)qAzF1vEy+NztkGQ)yv@O*pyC4S5#cIk7PoeKhM=eIL!2nQPpuxw(g$4lPFzJyi}haTn1&G1nBV^ggkGQL~vL8Kt~^yytvpx3P(# zM4r2;`Fj0$#dRwlW5X}+vppB<(GUEikzH~v=U|xT<%i|%%M%8|J$;YOKXxzbeEE@b zX;0YCoseoT3k<2EpK+w@Jb_|HS_0x-_F$WK~e3{(A4*c{QNu#mV$P*guchs`W%6cHko{}y#|N5S8l)Y zy1!XV{=gpH+tb<8)9KYR)n1d96tZB3cl<>v$#moicDczjug7Y_7I^lYB8At$!~PnWQ&Y;G*dC~Jtk9mE$fU6v4S-8zuwSaFmR3uFs zr@4tY^$uDYc7JT>9XlxQXlj!dE|k(3d#&n04s&;cj9$B|i{Q(qDNI1`jW_wxoo`vr zX|HyWZ4b@m7d)K0Y%A+|gh(85aTT0^q2fA%eSSB)Vf|!+D(5?{;qVjZ!jtkwnorl+ z@(Ju~vUyG4?y4I`tF*s;>U*DG{_t>8t3uCI-Q16s!`GP?Fnsjp9H!$62n&@N_a zB+NFgSKJyTHS~BF37uzAKk|{@FdqC+Zcz4nsmS};PtUj4g%FF=3V%KirDi#+mN7YX zbg`B3R@S<^CzSTn$@y%8v0WwOYs+)*KapE*O|DI)^<4YGpJf{@BT;d<#^ED#%_WQe z-pR>mBQw6t>8UB}M`!Y?u9xNo&^#`K9HF4Av7qm>*+6dJS_DB7U`2?z8-?1^(G~U4{*HSB=&d-%86hk81 zImCB@$!zLDzzF5Q04AgQV{u|@Xz=%NNa;33Q+Ub;W(l5VAZNDA^%=0pbMY#ekYF8F zld%3!^L*~h(}H`d`SGR}yMs>r$kClQqvm+H;eqNi4ch$`Gmlt8`A-OMd#QLeM7iU^ zH<%|bdxCa!1y|BOboU4$(i=gdZ5QK=@qwsrVrEJ5cx4 zKt;=S^Q)S3^Kz?nWbbs^!xOrZ2jsgX{FaR?lk%@o$GnFVa?0sjZ^f$|G~^vr^DS@l zP}Ai&L!nHEyEQYhPVJN>uGUMmX9C|UuqDX&G|e|}dpbxAt{H7IIqT&lJLo1^gPY-9 zFK1~f3zFgv6}w=qx_PM0O*B6FNf%<)JBO?GKJkZF9C$nUrwv^H4b(`N^;)AFADq-S z-}fUgNamRPMfM;{_@TiFajEK)AIzVeO;Xn@BkoFTHO=^7&@!PRY6r<4#n&BVo;Ym&6)qsZ#o)_jy^Hvq zZ$D2P>TR|#6rMf%me$Buk~XqIxctu8iHgg5fl3c{w_X@h57LmdyJ-KpT1)!e#f_fb zPx?)7cnlGF40q3+w0Mjc;Z2!spe_r)GfeG-jnjqUWC7jOLmTNWH+BDVJyrzlzsfgrTK?x z;jDa$VwwZ#CK!B2b{bM!I#G*S##C>I_x@7Y_WgF{=+3&!E!*dPD^_E3C|2zrbc9d zqZD^KH+n}t&3{^MSNW@HesO zWp6JPxcnscdMa@Fk&l0P6+Cw8Wz`9k0fxqB=I7NRFc}7;8qj=~|GPPMPCWZ>1Mj;v z!C%BKZVc2McT@Qa_BJ~?nf~FekDe7%7tM6o>f}*OE)~tjfWYZ0#EI7)F$MVh1@89H zeWJEp6#FjdeLo%`pUB4<&A;{M2WWxdNKY-efq#6zziiq6-#owndexROInCB>#xeZg zZ;GEg?_TQ zDjoaX48ZT?w%ldOV7ZIbi&acK^y7Y{z>{ra`>i#jBmb|?Bm8Oioo#ZyEq?pfJ)8;b zAyzCsDF)S0D03pM{7)Y2H+<**uwegv`yJ2xlxA7>-MKIi^ccqVfKm0o`te^^xqUP- zk4^MfqR@Y}_dlDV>m51fV~?UW1Xw^e ztfs1>8A(gl*}HWU*A$M6{e2Gq!x;Fq`)^bDZxi8fi|xPei7uqs6}{uLEx<1SmLN_Xb#RiKh|et!^-RUx-E%5-P-y zPlf-Qhw?3RbK`eVL0rq2hTuN_oM%rTZRyb9g{fAVE?NF<&-?q}+Ir^zDK3J^ z*uK(d8w_$eRl9Fkt-OuPbrS3f%oT;8=zDf&kUS{gdxQ1tK-p&@9gg}xWick`&{nbJ zD`_IM&to$N29(RvRPYR%27;*>+eKfhhj9DOw|C`-rO4l67u}gpBf9gmEt>1!hjqZ$ zj}<4DpU{>bT>&x6M;ide|A(jlUw3c0KO0`!Y#aSr^)-;l22%ylBMtk<^^exDEsp!< z)BmM0bIRQzUyuCzbYK3qnd$Sj>K!KFTr#RI4?dmROd_2;hj*NDoNNX+9F{of)$hQAH` zzs=77kBbCaYui>k%^%e}LMSUF`2L>uz{LKCNeZWh-#fVMK8FR^VJKq1_XAid0L^8| z@SjW2BZfxp-*3Kkg+D&s{a<%nnVJ*cNis_pS6nfS$}f)=B>U{Kd>^UNT5bJwlk~=2 z>#xXvrr$Cgz4zuK*lvM#5_Xf0)Gz&6MxMdKBaf}(hNMUeB!8C)5vMfQjWyQk+Uo9* z&Y%+CHgfw*p5(68N>TapVmDEuo^eMw_6Toki&Ks->DS)D3Y3`qLcpK169$y!PN#$M zZH382widFqjF@Y^EmgnH#%X`*zDGaG(RUDJ$U`>1?iuShwEc(MT@Jk=b0EY{U`gC> zI$%?`5^FD%2SX^JL?^CvjBY%tJEf7c-NtUk?Tl&`ACaKf0LX{_`8@-w=4$HpyJt~c z4AHV)+JdQeB-s-DA14YXxfrRp9C9U-sGRI~ADYugqR)CgkWCO1^#EXokudG7q2jWW`1A2RlPBgUKJka^ipy5Adb|#5xy3GJ zkMfz|kCeU`rwJxUnsK}WTm=y^^QQl6Tl3d%UvRT2ff=@7p(OT}wHnQpj~@-#Sc3v&py^OA6ZOg~8JPzU6>GC6qz?GKdnLou z{Mth(d&k|+thf8(*=`;I_v&^#Yegtfzw!RHRDx#sdU5N7)IQ<9&)g9y{HXhSN zX-9K1sjyOIvvEx?T>SyG5GQ(Y#sWYXV!EP_2NinQc%UMDLI9Vcj!2MOfdP|K8sP-O zd^KbROQLt!nw@ZI>r1wjPdgy%;@=h;Z}kr9m{N%#=E+1;Ko3PvIj9ewXY~l1cZV&f zMe0@oXr8mc+g1T8WE&RzMaa7V!o~4iMc2k2(3Vtp7yhitrc$?U?7ZvE6|~Xz*So8r z-X%FRC;=4-K}u0w7e`#^Dl}XH2BP@(83_Vss{eDgwQ^51J|=a_?HM9}rgq#mUnidj4ECLH56dx|Yjm zwFa#P)#O_*(xB80hZ}fbq}&YUZzyMaYzF`iTPlloWdf`i&Hqz7HZMOP4an?x z`&Ft^qdI1uTt0%_ki*(gDjwVg1MV}lzV&ZYw#hCDhYv0?=N2X;i~ zn78}uu4}-wEyHqW3v;DG^Lq$&EqT2Ye4FEs`QWz^Wdj!?aR74jBMAtaxNh}|4pQKF zvf`mjsXFJFfv?+x{JRCi5FbTU{!7_R=>br-F9mpd~o# z9PR46fkjNz<<0X=RZ6EDG#b& zb0#Q0LPu3;Szvj2gfw;qQ=>X>NCG7>wtIL;VsTgW?z#IRNkJ@~aS`1V$@#Y6C9kfC zzw1V2eS2pJ?mgz2;vbd}t1N7KZBZw>OyN^&c~z?RjkMW#$i1xrTz@jF0EvJ&iEGgJydRaguNUcSjm0 zQ<6v~rr(-p+H55Ngbb~a5kiu)YZm^tY?bT-n;+2s`pP6m^}{=j zLoZ%^SgjbiZxq~2S&Dgv6n~ic0j5)cueI@GFTF(X6q-H=BCz3o&y%F|UBk!NUp++Z z^<8uKA5T5EX^#}PTcm+igTkgK$Qn=9t~g&_)X*|QM;$9Z_7Wd=Ts`f|?^kheZ9u?P zQ^vXbK9FdDf>Ga!(%{ zF}*HiTCQn5K8!a%<)XFc zzJoekPO}Rako4)j!m54g5`U`Z-fLGLw@R6on@=xgpC#6S@xUEXFuDw?21U2Ovi#jc zE#5icEGV6yi6CRAp-Lh-vu65iBHjzKYa1*-X~nqV}+#qlMe7b`!;av96NQMc`DIgoDi*pN5=B2!t+vU3h0KN&w<_kV zRi@8WOQyI`)AHwAtF$V%pVp;m6W0HkNzA8L}dQ51i~SOv->UMd>c2KVJ{+4`RWspdimz19wuZSf@f_RrPz> zjozG;3z#A3zh6kjSAta?f46bRXt-Q=*ty^;A9*!p`Ys9@Y&pM~FstA4ceki^g;iMp zlwvmcV(fnzVeD@azhYuSs@Tv}n?*EAr@V!39i3J%rQ?f#LIpuT8q9fQ^4Ly*6avm{ z?+ZE2Sj4(PJd2ZGpdeC?K+Tp zspxqGMi4F*2fVI|Yk=bbL=St}UdXe)xfZMW;;L2tc&oB!2>8l1hj(7M@5q+Z#L08F zHR1<_9YKUV{$j=!STe0~gy-O3afUWo8J=aoN4^xiI=XIv=^zNELz7Y9Tr6S=Nr@w1 zswb}fF7Z2nB+uU;1O6ch;qS^xwcN=j21UgjT_q5$fvy^0MOlf0#~XA5Af|D#Dt3U; zDhQRtRO}olShAL@^JpuVhrIQl+nu7lS4Ds%r+J07yZU*y8@R6KMnFUo1oS@+uL zBaPYMk+ZGNdeejcq#Nn;vqj zu>XO7;!JD>M>{qOEJ?wv5A^i=Q|Q(ITy$ST^7xg|E85?);}31h1x&T2kWmWidRS9d zA6zc#SXTAon_i#Fm3x-+3LW7~PtzalIb_5DpwJGqO`$ z@m|+zgocgwgBK6>u2h|M`l?y%yol$m)dk`dZFmYJ54^NH`E*`Acj5*xES3NQC>#pK z@WHyUK!Q=O&X$OeaKf^OrPd=mpp#?IkEL#4hQ{|Vo-;sO2ZQftY~$QTDul1vXjBR+ z@kLrI-sIx&;%26$6l&7?`MYL@EBh;hIi1A(^^Buf&zQ37v-7i)?G=rawwGyyABVky z2lk4}<)X`-W~8sM<4@VYyyfU;=NBg}+p#y;{qka9E@~226%#_m>%XG0s&M+*AU-Y= z|5=S|_{MPUN|uWsN3&wL4H;YC)oS$ro!q_r4NrF`Li1uhkc*&OYDp%f2go_qF?}qU zInV_+m=3wRy6&timEfv4LaI>31c6_M>^y^dqQ;s6CZsIaGmPohOGwii9+_)73r4X!$Ao$UmRzz7>o z*70EOeLfWrW|}ByxX7hwU$O-VE4loonE`rnqWZ`hU}0b*(^^$A&{tLw7TX#PpYfmf^f~d*)~=OQ{OyW_`hQDJN%-zs z!{V#xJrxPLa@4LUIXGn+gQu$2b0lr8Eu{#HeFoMT%p{Cz5WB050FpH@<&~RPO5rp| z^w)V!A`4f%cnTmuRx#W1L$49{R`DoB4@$;=+mxm2CFD^pad4J$@fJA*=}pmUe2>}m zRy}ahR&H8G>?|I@=fqOpT0i=E0Bkp9=M(UrO%*(Cji|M4jaV-De1Fo0G_e3&&Zr*X)nLz8{h2P+d7h>%R?z;w#Q)QzjO;(@8fHYeyp{eRiB- zJ896wgA)_5#y>h9z%KiRZ6;RH+j!69G@zNStNZmOffX~px}Z29_-rioso2th8Adja za1ngB_pwv|C-Sloe2HG2SjaLTH~lg;ALWFR1>VMn9D?)yugm1X>MLLz2425=9#vl{ zo|ZPDp@@wpa#h*$ao_J=fZz;Adz?K>hRC)4YOZU=~Q3Qi3 z>*iEE-2N<%JM8SI%dnb(@1Xl`e}(x=`%0WGPe8?9Lo}d>W+!TgV%KOPOIUgswafJB zDmM@GITz}1W1-YW9_ZYYgDXO#Tl~KTni;z#Vr>2jn8Iyhqx!n=51|Krx(~Ga{wE|E zXCQr{46XwB17ZfNi%A$?yiMBU=4CVC|GjCk>-X4dIyX5+BcN?-h6+P2U?2**FCV8s z*5}DuM+iXjQ2~R1llgCs&mLO+1&QzYn?FXw5791PMVE;)WYj9GABr=?A$tHV&^`I| zg-tGJ41q}~Td_9_ zbkRWQ>-qjQ`)fvcPW$|4R;?0_XYP)EBl}Y4NP%aWl^Rc=nn}v2DICUqVC6_F$%g@D zd+HOTf+P-ZAb$z#*Z=RCc%$7G?O22{lqb6`U=wm0@;kU3bT@KL`hlzBHXQ}YpPyrW zZM{3bRPp|8i8sCQIK4xh@KM?j4tn4b1C$74l^^A z#=o{#ITTFTjz8r@a6!-6N2TI#WiEiUT(}`8PZfWD(1$bFdH-MD0aM&CYz{Z%=9l25zXf6J*o4;To2|(1v8~V{e{6oZwaWO6S=RT|Suw|v ztv_#crzSssxo`BC!(vLy=RZ^Br@7s09uel^Kk;}lRb_hu7#-pXbMsWf;tdHyMu(v6 zMLAP@zjxml&AUytKV0{9ofcPjk*;3$sj*LZaI`qyad6Y&Wi_FU@aWW-*TLniM~os$EGq?(g!xxmKS)V!@Zu=h&V4jw`z3S<5pC zC6)`hbeXGY8MD_kGK=o)n93JX<@ZdSE{)qNV7W*QyPZi#kda{F6B@R1$%7W@uT;#+ zJs#V`0)A3ZS+|+Fgx>x5-{L|o$>`dJk0L z?~5Kks{(r%2Op_VPq{D!&z>KG4E_`j?XFOj(dPJjUP{1T%x7^&Rm-2|v7A)jY<{~f zg+UqkKj*GL9PuJZ}3NkNnr6>R3cN7(lO9j=4WzAhRp9c30dR#Er$fsq22Eo`7|{b*>O$)3|O`iJ&%a53Z^c zJ69E-xW@= zcp54OBp5ro?2VVKMaVO81cg#+NoXtnP8U03m3MHxe3QXlF>pkT`{QyxuOvT^b0al4 zU=8w|9#VJ_V?gi=*&<6{Puy3bWpUq8O3j4I)JRiQr-2C-9L{cq#uKP;K9*$AMni$T znSRxM(_q=#7inrK@H3a8xpfk^yN{(u(Y~dQxmx6Mr0XMi&cQZSse*BV7`{Tww9jo4 zCnI_MLwh28YbZjV^B_V6VzaC7OGEC<*ou1#!$ak?`hvuCz%S2t;~Jh-L1sw%4Joi% zZPT>JzP=!VBIHpTc9|D`_4cEDI0yB>v+9T*rKi<85YD zSaYtp6RW~CJgdPT6SAN}UH4ON0dw)@@uQlCBG5y2x5!qUmKmzf;j8-?a&M2@rCVXIW+8ogo!_N2^*rh-as)uN6a!M|!BmJ(oT66C0pu zPU;lfX+$WVKxp+XM1lPo_$U|}HbgIA09!PL_XaAOy3DKrz>k1y|9bkRA(kowE^z%M zpW~QRCbU9p|1!tO4$?MEN;7i2)J!gZ#%W+u)$6aJ?L^8qa-Wnl)wWOt9yIDvWSUyw za>5Th8B70yH}L^4PVhztOELw_54^A{CKGcxd*03wO*Somnm$bJ0`vK-Z_=jzfGPoL zCU}B80we#f*9X>{OJ_-|A7B#_|JVo20hS8YBCFY~FCs;s?_JIlX ziKeH90j2Qjj&K`5mSAJpD9*TWJw%KQ&QlZo-Txx7!`-|o8k;`5_#W0@U|g;4kFD7I zqzpXWT{SY7RA~HI#H-*+wcZ4)ABeT%EWkz^Cr3C=g28Q!b#?yJtJQ$=MumBzb5Ozu zlZ)ad82=6(PjPxpF=D9^aG2c)^&#zB{dND{=D_~C@in{V4dWmhKg)e`6Fa4!#4S=z zWp-|FT!Zc2aAleWCZm8dn6rkq@u-S2<5b1X%!Y@Y7!RViNO0A~s!gGPLuTZR(3{(m zzaXu)^EWPbCM5HTFg4_pe{5&s#^vKm@{cz5lN!E1p}>quhcSn$XD$5Z9EJ zb05PsG8Hr6usoS0@~ePishUOWUzq&H14ew%1+~GQD7How^GV-$$;p!^#{y{)1^t~| zygsZN040T{V(nin&fi!(KVS#E4?+PixC$z{Sk00tSX4&%yTPa;K&1R-A)E$&%B2%j zFn~O#h(@!)<^ce6hUj-#`h#-3iLOYwArlD6i8s$k8H-Bp14Id&;;`{X-~Wn{!M`Ht z1dY6!*=ZxfD@`epke~xBA_bM`Uf@r^LV|3<=MuRQ-+TBLjvEj!m@!5Pf*!4;rO zRR%xzGzxjHe?2+ zb%LLMj_HMBRZM?)5*-MIM>TIlrnd1Zdm6X9&~_d1kq7ZqDP@wSm$~zMcx;p0Sq)nM zaQJU>AwoJ>w$6^5w#nEs_Y`(9T`Qn}yi%XlyRZDNh+dI&feyVxuZn`4SFfWT60K3v#e-@w>!F z0o#+-f=Pk->Bqas)$rj`3?2u3?I(d9srN{e6Y-P-yH)PdY!Z+j6o!J9U2qi%3JuZz zs+jlTCxWK%*H0GGxAx@H^-e#$o?)&HF3Xhw3OibyXQ9x&6$~W|6{z0Gy!xdxN(N8R z^oUqJOYtfE5j_P>C2-CFdT38sIxN@U@J$F*o4%ZIvEWu)D)g@bY6CXqTWV=B_{x@A zA|^G_hxiO}CvAENHpRwQ*`~}hy0m&o($-VAo~9W`rE;33OnHy(qVyU}v9^FeLobWy zO6kRiQ=N{pIR|Nwzvy9`LEapQIbpMjf8HURfmm36{#G6b zq7=_0oNXUZ;q(KS-`^7#@)u`t{;{U6luyB>CTmA!$xOjXZ5paD2<*Ca;_#J}w`4M} zN<~>K+e{mV0Jf#HF3!!@fly(c9ES(K9VFpTll@^UBhw}mu@Qny{Ub7VcQO!4kZ_bN zeFm02*<-OK`8-sS@|2d%U>+NLP@dXlWCk!hbR7QF#NZv zT{SBzi}s#nt`HBYc`%bbm1yn{K$#!+91m1j%cLl7HuYB*h26;Y%#h(^AGlwzOSAe( z;GUGMD4(nyNALk|9i*%Q(S56*RHFzTLPk!LHn5Q)Bpg_%uvIDNjp%Ed-m&5x zkgQFHp~4dmd7K`bO}+4(KFl{n!+HSk8BF%CWt%POBSfUz7tG-1N1O)laTu&l#AM3b zwak3_4tPG50Q55B#myVaRU{alvf0FTc0|9Qw)w~Ssk!I!HHP=|6V4@NSk0y2sR$;h zU=oxPM3;2`gkPpj+7#nqsjUS|FUY>=S*otbn;b0F!VK}_O{znzK~xcoqDH2HC9o7D zCzSXVc;RiSihraS%@<&Qe%`^nif-DY432STO_5ct5XO4uDfh9RY)8T`!;CGwsSV4T zmfy`ZU|i?Y?LEK9)j+a;SuHO^4#Hsr2rR!Lp%WTX4zYWUo`N;VXi*^B6hL&%$e2T6z$cG7k{VUH}xM*>3aEb{kyH;YtkQnQxz%(f=7%LG;s_O zs8{qrJ@3Mb6S#(J%KGA2P&X!MFG^K@Fkbx6Tr{DFKpt3>(1X6^)H7Pjo~-#t@fhsb^LK&SreG7cte2u>#X>YTT9xjpvH-iGDBKiLH;T zXH$Ni@%=FBvZk1OzN>t@^$N2CbN7ztmc>JA^4*VrUAmm<`)Q3hPjMVrPDRThwuDQY zHIFUXnw77h%0E#Qig`Z9s%#Nn849XM%)elz$!MA+*0rl*zvI^`0T-H{JnIau#y$OY zZpxm2r`P%r#WdpZ$-wjWz|LK>_>$FMS4OqkH8?L>5B|oKw_z8g$%}s?1cRM>+RpfX z$ph3?HktM&c;D#T;Lyxl=zNi-xy<&7S~tPJwQfay#X_SGu#V`4QNJ&Fz8lxot?cM{ z-`->UWs|)#aa+;6gKD(Pnin(ab$dyo2&s{yzSP*a=-Ozu@YP}7AoL5Tn zn)@oO|4tU`Mk#iTA6^;sBi=hCBM+crQFn!vU&l_lm38=b4CR8!$gj4)w>y#w2fS8F z`5H|x1A?=y5x|PF7Nqy3sx#}z)W$nAlZT6E-1cw(fNJ*{IFsgn^(%Pro?StR2lX@ts9!mo)W!X|j^>MT9+Wg+Hd`#0tDuz~F3a50zNOge!Jj8>^QQ+d zx--~6usM3`;#25e$CB{d-q&;(91TiOr5AlLU}p6%F&C=7 z^b#f$qQd%o4(JAi5}?h?AB@^J25k)DIZ#%t<4am+s(s|_Frm}sXia$1chBr6i=khW z26#0#m8>kK!vQe{ukC=6{vtz|Fm(L=+L=((a>CK4K_)(e%oZnoYNG_rQh#q*M2L7{ki4r`xGN44hj;g zy*^dyUhz^ zyov=)d9$(^f;_}e;g;0v2zy*}R>!JiK-UA_?Z$lNp<=FRtsiNGPr|^*0oC7YJ1{ z0qOzqmYD+Z$&-ea;53+41MG6`;|6HMX>}n9A+U%RWC|wJvM;cxTT|&};SCu;Yr+i( zyqU(u_OWh&p-8zST&bevaU34i%VGhBTQiPxd;KTq7ql5k3PE-VSzsgif21QH-2lduJ`$gJ^Sr=Oq&9$ce(kF3Zy++UStdG6-rv>`gUY6 zw1USGaeUu@Kc^wunkjgk_BsBy@p*k3&nNQ{ee{lzR63UmrdRYEdMPCt?@6uR#iqwt zV5Nwhhb8moCUEs|PGGV-;XwcE#z;;`CQ zN$$_=&e87WR9uLFMh9p#oD(skpg);w+GZ-Pf3oB-HkWdW@`iSA@gjE9@koBemRybs zw&bZ6cjA*dxu_DZk{93c<2IecOW0#3`sAO{CjwfPKvPwo)&By@ER456)OBm5Iz0gM z9k7l5g>&5gmqq4!8>|b82%WFme(fh}!34Aqp^{#M#~!f!Q~3$CtNuaThBro{GiQ5Q zlP77aTJ&Y*riwBiu=ZT{?=*QzOn*#6Mx8JZc;Yw^k|D4E0l*3W`GZzS))ZCP0-*#r zg}FEd~lwQG!ZAQf}BzqA#mH^i05a+3N%>4~HTqgNgk>py+MXCHc~a$m_IMZzhg) zf#*LETL2ni0HsR7UGh?4+GKCNz&ZiIwey$J@;8>z$j2My(p^o zZ=bX-OaS(W!DQb~UiD!xmpm!9lrqFm6oy*MIyDFz*r-O8DA2xqAwCX(V~Bh?;__xT z6ebrR^z9`)av{i;K@2;sZQ`%$!M&Ekk#X=CupGBg;V1a@JaJP zwzc!ieNM&G;7gqVgU`T%l^6t0gmV|V4Mlx1Uxn&n>qZb`fpoc^*1+Z`O>^Y z@|s{Gyc$P9eO{OwN(MrdV7`AopHTDxMQmcdctmVi)u54C`I(Ds#f${JvXQ7U@B@6! zc)^?uAgFmt^4;7(@6ixj3gGXqC;j&fI$W8&ftbEkE)pVLI03Txo z3IwnGp+Yb-!VPc`7%h`9E_zsLtiPZyEsgcuD>Z7hEh4spYPFxytaX2^-8$QDiUk4t z;ZB?eSo2+}0g}cfe>W-ia`tqJv}_x-F_mqWo{E}*564F3u+8K@(T;qbyC^sRg_DnR z@y**h4L#soS;%N-C)3*zxbth_Lw(@B^fCjH6kXj98l8CI3-*54Uc{0K4gbCtqHbaE zxdQ%)*g)00QL>po6JjGzsM90We2xFU$+w>j5%BQ@9AZPJIz}5*hX#&^yok>@)~+0C z+y#YFgJ3=^-E_lKH7FLVNx=GZE0n+c`gc6yegwxDQq82bYfZQ%?XhlhBcoaGae$`e zO{sb_%V!`Z;O|Zp4N)?AIqd2)cL}CJ{`LsOq?Iiv1!o=)Slwh>@c>t9JPY!V-dBf^ zYVK)3!SJYM(|(q({VM+~os+m8PI^F&fD&_Q-#IDa1=f`XJsC>xyVp|!$G{R5s9M%% z%wFr!t7Fcxd?Ck}ak2iTCz|(N;#-P>Cb+5X1A2;S6hMycFOIW#Ai?_xa2-&?91Ra= zqaLUaYlkGGj-@&kMt_q_hsrZp(<7MWwct<66`2;Q9M^T%z}pullp#DeN=5`UHg|*I zi2wZC8fZtNf%4Go~CtXGKA0%c1w@&N%9Qtv$tMW1ynIMs#dV6$l7zRNwj zz^vB8q*B`&0TgsdzC1|P*94Y`5TBwV{?1QBoDH;8@oJ50Qq6}or z$ch3=yIZ%f+kUA`XPbd*n%F@2Tduf0Xm)^d$(O~)ANo#y$RW?V99+tPgzO@1J=BOZ%W+L%RHrFAu=k4^tQtg~ z1FvT{l7t59Y;_N!#GY~*(mSiW=3jR4e?~vFq{zJM!wr}`hQ7uMcsRnq{o%s?+i7DE z#!?C$emw?%8a!wDA@j(^6x5Z%s_)lB7p^D!7l7R?mlNr0i7_PE05O8kAptiqGA-pO zcn-p9x5G_4y#lDYuf@3wDQ|@-aMm{_z(*dUW-HrC+81l((C&S?E4;9AJI$T9EnpY8Plt8z=p?P0&dG}G5%qOj_aBTJjZu@MV56*Bl*JpsR zaqvi*(|JTy`naszk1)H3(6R7II%k$^;>!y^mmM+cj(>k07M*=1>m6*4DVCYb0%5A- zfz1Kimzw&!VM=xNMUo8AlL4As1H#!5YG|K7vL4&465hJGa3h~j^OBJYFM z+{bWT@ag$Ns)#o4UfoxjxaJgmzX}F63jWy*Pr>kOd9KZ^o%yS_$F=WyRmsJH6S-l_ z!ub;!vdM0orh>hL&)s?p!jivpOjq34aYLze+sV-F%Wb0xzwUQTrSB+HdedL{_fOtW z6=&X_(s#1Q+_NZ0&$uo9ZX?XldNPwh17taA<5o14QTinyy1>dF|9qC9qc_UdDV#Vw z`flvl%4XXV@0N`gj*;ty->~s%Z=f)vy{Np9G&;YzQ6#1t-bK#lVf;?_4!0Qx;h7B0 znZn5L2ak3CS*$7WvkO{GTIu}L@oY($EdIfveTgdl&>;%^2U9?9cSItn-MQU+=DC|l zu!XNqfngNSTw;;o&ymJY1*3~+@~)y+Wbn7qhfldO1z&l!5;VC-nLXW$cQd8cYp)rh z)pcp71il|~lpQ;wHoCaJ`zZ~iE2A--8yhu8U3*fd7c9;d-5kXf4_qXxCANjfl9{RN zvDB&sot{*6*`342XabtJxXWKsYFW_wm#lBmlk3Ely#(w3wLX!HJi5siOBE}0wsj5Q zb;5=18(p|7y%;$*@ulQ&)%wHE$=$zh+k6NQH8jEb^*Bq{?j>a2ev@>1>L14SY(#IO zjVgFGzJ&O}J*Z3|jlWWInl}3Kj>6ohzSiw-+5^1jy*W!UF%mq*OMAPXZZ14_=Wb-- zyvX_+TNXJo}xN>gl~fPlO7GSks#@18+T8LHH0 z!84d>~Ds*c}PDj_DYA!HZNSZt!c4`d>Lf%MgEY^TA5$tOLQbj{!yKj7q{E zLq#_(UzY{juFw-S(ekjFHotB6UvHlde89OH@I`Znjf2F^RFwH=^(U`KW>2#e5_be8 zoK(S$Rz5Sl;2ef$?3YWm$&One|(eQ&6U0tBf~kGerBD|CF7*cIU~93wQ16!$VQK z7(s7OSl<`f-SNzC--{)?n+eUa{tp=h@Xh6kV*L5yb72HQ{4} zS4!B?X?NIc{HY|KlSq?_Mgmr<*!b@co+?O~ffDv#1^xG>UxlhEk}?8V_)&?3R=hum z-9|v(oXcTpIqbD*y6963ULf^yH5{T*ONb}&{1k(tcenpJX^%xgK_#}krYWC(ySBeh zHvxjdC4L{GIGdBxQ`lb@=(Vo+tcx-2hW$G@$9;H$REE}q$`6ya&z#HRZ5Z%^X#`IEHzK^iM2NkRyTcnj%X6tcG7 z@YE|4kKZ-FaFIdE^9%}Hm~ybm zAz>h0X@CY~MKVVOwz+JMUN%is4?V5zHw_XyIK;-{Ib6)$h@pKCORMqWxJWYH1CsKE zYx?z};b!0&=LSeJ4^-SsLl#iz!#WL8umlYhWK%^Wtzw}G#0B#owV`8n+!OjA=-xk`RYj3{Bn_&pV(g(qK^*_ zxSdbm-Gvv6$qs;0AV}Jo5)3%kuZ|VKN|e@qq9K(L$Yaa5;>VGJ(LcjlOcP{&O!|!G z0RZTw^<|yxZ}@Ksov)=e_Q~I!n=fxx#t;+DwTE;Dm6*h@?nSmGPo{KeKaVf|oPz|B z#xpy0sZ{!HHc16&aa13bDsWJ1! zeezPvdOHV;O>DW;4U?BVOn%M>A4y|#voxnD6kba%uo{LgC*c`>-=~$)_h0AbcKHdX z=%Fd(^3gYhU?{$TjJ&?!N(v|c`#vVl5)1C^$*BA47*C47=8VI-1Asig&)@BqlZod& zO3}8e1{8s@9vUL?ZH3#HOdKGA*tH;K)O1>SysFP?Bi>VBxj= z!u1z~mIByjXZ7@%veESMr@QB!%IHe6OW@Jg*L&?3~E4#=raoVN@0PxMr36x%^4D<4!<+OZQ?zD7L zom76~a6(JAaV4`ua_NeH$drtLK#pPqFcHkl_d#dcgFhYo=Z*TS*kJt*&cYxlu_*+; zhK&W-$9XE?J8?LXrK$-5@k$)7566dy%zIhDHL-)!kUmR>_ay$C1+}=ys48n$_^#ypj#_?! z4BA7eynEw04*vahZ-GbY3FGA8)}?`Gt4`{TZU=r?0;k!@YNSr45ZhAUN;K+=BMgX? zpM^SBQ#I%^kQ4;A3|R*#gS0CJQzTI}`FNci!b)1_7xT^V7$ngBurPs~1=w_Pb`8;I zT|n4vr$hSsRH`GfpY-Xv?FguVLQjv>sowefaLe1s!{xL;Ho~PYqV701IEKGwe1s5s+XR0P={#AbG8+Q2-10~Pg?$O#tMp~(npHQDM^1}6~| z+Pbu4IHV-ug}Z@Kz&=Cc0q$;`hHL}zUP0BLIsp_ZgPTz=*T0>2m|W)K@sewR4#8K)00#~n<| zBxzYy%s#TSNIB5Eo@UR0JK{uK8v*$4ID(0uBUf6<`P3d34{;xZV$(MRoe$S9 zFj*bk1GRwJfW!zSur+J-U96;RxA*b z#&bKT@Z^+a4wIxkSF=Ha0ZN8Oq!*fL2p>#52;r2Ne{>L!@=bU@$ z{v14dohww|E}2E`GG5*KJG~(p;q!^V`(Hl)rA(LPU{n*FaxtqR8fA#~dH7)35w2!W z^gr2(9;9JO=;Qt8`(~P`VI2_0?(y4J+ujp>|t^(fVLKRoG9oPMfehP|23V3j8~>T%fTNU^IoyL*SiW}SgaE+EoIX|;=Z47>J z6BqU_-8Y3UGxPn}mIzCzUMSrSWPhT8$lz>i>P~QQ=G>5x*VL!I*%1-T#=Cr?O{Pvu z%gJj}Xdxwg$Vw)Ch{&QppnAh8M>LSoSD*j8ZaguCo)9h|be}YSLHedqFaKxj?4oBo z;o?@5W5ua3>)v2nltb-mq_`JI|!PIhK_n*b$={3SQ!XArATlx7=H7xBU{Gx%f8AJYVJkEyl1WCmqeq< z_+5lwrO{|Or&WC9uG`h&et?3GKg_efh~S(9`F+yEBWky`o=XtEYLfn7fLWVQ8{ipW zD=4UeSWOQ|X6xo3gwKcTp{IB+MQ~NZI!F?Kq>CQ6%hjA?W{n5+Fa$*=bWR>^it%Uk z_XSi8cv#HE&R+hW%h3ZNg>E#5H7(0vCga=ZRuA!T($h?l9wJ9@PC>Yp>eN8icHgoj zI%XzX((ygG^3(~r9^LaMw8;chG3xT@Qj5ic1JB}M=JH_O(vsig%!)?p?83_5(Utzp z_T|(kW9`e~I|iFZ-!w!AxOzG!r}&$r?k$(0e;uBT#IG}PH|c;0si_EjT?MvOaL{1=jv!yOBx z<==c=wq}1{EQO8kt7-I`6<8k04Ed8VRyetR<<6CAMPp_vjVY*2T1@?7(^C7)Bxt3a zF!%2vex3FE-J~>RQ?#_vZ+uR{yK`go%3@z}$l?wK@7vuIRg$(N69fLIn-t76mhQZX zuJh^atG!yg8H=uOMXN7H3f4XL8xj7FvrMfhGwt1;mVcoO&ym)8_CiU;b*U+D>~Huq zS$olDT*Y^QuyTKqfPc$7}cD~zJu*bjsls?2K>chngB0Y*r$0{A>J4j*e z_>Y=nIq}xnylDy&jQ)U#Eu(9K+ViYQ>>IyvQ6z1Xx>J4mbWTPL-j*PAGiyn~DL{^T z;5ptGD+kK2tp1Bs5Gci6jLW@-P`+RF6tYGhP$b94OZQ(AAe{Laj>CM%gOW=h!sBwn zslbQ(tVYx<&Kb=(=n7kXdhp&`X#9I7xcKAW-V`XHRp%E?^^>5lc65zWu)ar!F|mlh zsh{6&??^?kxq~+C+W;=M-j|{ZcX&Rb z#zEN%q_Bo}`wKzDV4?kwZ7iVE1T}Vs9C&|MsoopVD3{rri??k}5Y~f3l z;g+@(dAt>~VL8Vc6-aseMnq7_U_l9-YNC~Y-tt*A0f=cP=cF;(EfmT%kr{aTp@J!C z2_ZJeoj(V=edijl;5!`9Iz#{TSZn0qqWs(St#?2<_0>RYjk*%Gx<7_cVYuhOi|;`hVgSshT? zwDbFl=7Rkaf_RZ7kLPQcW1qGcB;YYS$!I8h#^Qe)AZ`^iCukc`@3#Zfn_<2H>JGE7 zFY#chlgma)IidkMCj(58os@;h$D&st?j@|$zaW2R=(CFtez=2@_^VHoPsJ6YPnpJ zfpZSvE+I(pLXo3CSdRKlgE?07>YsQZ^DE*Y5X1Q^<%AikC*F4igPl+6m^b|0E^N{a z3kACBzSqZx4_@5H&5Fk_ny1ihw>@ix^73|z6YmqWorsu*Pt(=1!CHCBwrQ2PEG9Ap zpHZz6q*JXP^If~6PynLPW8ljUIFtWkF=jWuwHBxUn%46_7k&zbxCQ6a0OciHs_u|L zEP2^NdjIM>kCvMf@t=EHTPWqFpogYRus;6_0H&loDH+Q0rLn}XdHKvLJE)cMF=GLp z88{ZuRyVv5h;F_mR~k}b?R_OJBbDw@o6+|E|BeF)2v6iGKL_FCNZoeEHMD>%z)m}; z?B|f0ga(#tpjuVM{P%&S1)+?GHsw7y@0<)0*-puX1~r@dMP7boSlSgQQN;*#Wu-5){P*#pi1Pyux! za(mn3mK+C%SeQ{o3AO8L}%%W0Gt42clk>#vYBx$PI})A$)sw z#s+9fC~3MK_0!#QPhjubwmgpf4$0!Si>@QB1&@P+?G;@Akek)A>T-fdC|;R`x%(eD z{uuYH%zhQPP&zI6{`<+y_X5|7+tOB2lP8AdXSY8N_UAFp9+|9v{%EZFm4aL6VoA-* z+?|CR-JVgCm+JM7Wj%i+_d!9^@cOJzqmc92rQHpVk2bqI4Vq})KSC#TMi*#0=NLNY z(8TQeMBg1#RX$pp^e6?FRpXvoP-bN47qZi=NoP~eaLfH!+P9gT#&xcFGj;fpJYV7A zh%uKN531Z=b;Txas%2f_$Tqxv&6vsf%*Q(PO(8z^=O%|GujRD&LPr!`sHOHqiMPGW zCg1qP4>!HR9mEX({641c*4d4Jc6?StS;Q~dmTE`*>73`5iWX8Fu~|1qo84QPbl(4Y z%*U~trK*9*Ro{;?JRr5k!0$3C=KUb4O1!)`kao(L>U8nmOrKZff)clw#V84v zg);E_BPsUW@=57z%_)t1otf~~?+t^bYQe45?gI79YM13r64kfZguGh&zvs(sp2?l6 z&;R7^=X>|%j5H>^bJ^q*@^6GvD%!82_PNlgQs%snNfrOZvhwrS0kmCMlRBC3k6F^P zpYZ37HdW!CSfO>+3RNFZA=JeqFV-rB?@pd5AZMX=w?{V*QTMPX7AVfH2F|Y5VuL-R zQJG;Poe>`!77Vk``}Zx$P$U_~TIB5TH_+d{N4#9{dB^=poQGkyI!1Smsm6zXy!Tn_ z&~L3)R%q1~16&rptM0k=w^r79|7&AWEw$T(s$Y%XO|t(kdXe`A^ZGU7fzqYo(wl(+ zw7&&Y4%dkLWdB~eloS*|yH&Rn6TU{(EnJQr)-0{Dt{h*K;m-@+QIR3bV>8zb>oC@Em2*(>&T>Puq z)ghmmL3Tu^4~Bjci?7Ge-Eu+4xu6w|Gn59YCzxrGyTW&W(UY#wi!||f86;VuBX>=` z{CPl=ecGtXj#vu-$|*Y{P%_(N8_-EF()dmpQTJGoz837Gq4ScV6K}6IdMzF!TwS^L z6MpsXVVw_X>XqNKLYoN1(5rOM`_r>f9M+LCe8~U%PFW~;rx+`UP|`mWIqg?$M)R9*akMM9HEVnnDcWipFBvZpYz?_pVq2~$kTu7n6FDtq?nccypwz3=<~JP{ zRDqC45YYu{uLE3V1G~HNE<& zHWy9Y`JE_6P0@>36%T_Rf~WNF1jE6i@*K@H0Zre)5M!Za&WqFjckQEMm*^22&?B%w zV;iFq3U;FzQV~0FJ;bde@AfMF%B^};eTUHu6}FQYV(2`LlZ!?Xd65zac5OqK+8(66 zWArY+bFQqS>~VBMTkf@Mcm&S5QK}W$(y;$FWQhQU=);Zu1h$x&Esi&28B6NqSVoHf zE{j%7Q>m?nBRs~#_2}uwMo8$L8{reQ_ZHl;=!qjBCtSBLc5 ze($rrdOvDNG3v7e{6o@ZELlnute6m{q3%mD@zVnMUtykk5yuq?;YS|Y1W+R+Y467H z@DE{D)B%=NrxgKewi%~K{|&(lV>^V@6bSP7(iv+gE7pCI_4!OahqxCC7gmH$ zY<)qa|rc$S~ zedH!Tcnp8CMNhlOD8hbX~9$(@{Wg?ISDu=rPmOOe=0*f+rQIo*)hI7jga&4p|E3GF&+H?bTX z@tvp@w2oSXida5B_uWT{8{~&t+W;geXhyV9Y|9C!fCAik8xjy;=vv7^{oqpDq&5tK zs~iT-3tLFtDTe`Wv8}GykpNkS;o-Z0b}J`jIEpS`80VNcTBo{gsqI)=u?Z>vwnKkw z$c_<*EwcuW3BZi3(cUhI30LQ*A;2)GwPI|EA}^5PMJ)=-xW#%uWJmZW<&@ zKaT1&A*q+ziVFe-ee$`Krr~p$CsItkr}h=oZutj?>@KFQG24>7NqBf7$WAtkkebk^ zNKM!ZP`yVpYQ2KTKbw5GGn&}4#-q6#P##y|59ZrwG(%o;8bv?yq-D*fO^M(s=p`y? z65^q*v*X_Cv|T#K1nb;en;*aG-x1mmjV7m*6RuXWzbFYTYhe?3MHa4C-G4BTQAKFvtC6}=~a=|NfozAvlIOtZ_#l0>` zoFs~X?Q%Mi$EYs@OEtm`t1HvjiI%aCZ&w9Yw}7fO z^m}Y?Dh9~PCv&LGM(x&htIj6R_>=c9&Q1n!k}X+QoX+e9hT}x&xAu-xILG#W@KO!* z&Q&L#M6~*f)6}(D5)yaR&cOU#wRGFE6OR!t%$M(D>J-DpL3tV{!(8?eGX z^m`?SHxwQNnU+zRXF5b}s9M}9=y7Y@u2uTI6Syp}Ij)*JHo^&88t#tOh%m}`IrHcx}US)K)b^y3k<49Ber z%c$#?c0#{iAN({2cZ*%5QJy~)Ixl-B;7gB=E*Q`)X6<-3u^LB)Qe(&B4#4oeuCT^ut1==0=*{TqB9@Ob^*!ZKin* ze{TFZctu{sMK&aGX++Pnh(tFBn{r%RmKyfHlldSz%HzO?^^b4jKks&_d2^X5&^q5H zbw0DUB!r%$SQ4p@SFl)*IgZdNM(zoJ7jE z>#bq}gzTuzT{j+-(OK6rMOsthYH}kL@;qEK`kF~p3;9)~5aqh9SXtO)w){rZO@GfN z5j28nmb9}88J4$+i>VJ=$P-r{RW#BkikKlZSuaMb7ARD}L}bNoFYX;{S({Up0`GRk zBf@cra7*oLhzZ=IGl6TL$Ez|z6V6X|Oa(6sB{a;U`5JyzD|wE@dTq*Wj@MJ(T>Qv! zaow{nWBk?gA3=-db4))D68z8nob_)wg#C0)`Kwo{|CVc1hBj{aSDoKB_)yJ-FB9%A%W=}QTh3T&NZ|AvrG5SC}63r_$FB~KH|f_Zu-xr071HKGU6$mZ0xelir=l+ns zCrLb3xTE@_MHaXNC1GAg*FIhF0UnW~DrX&&jFrQV0WxLJ*AH%*k>j7%N2o*J5pm!9 z*y*#4`!5C}i^oU{UEhEBy6vTypi*b{Tw5*f%Xt@3Y=_$JBbY3G{L!%GaRq@RadPQh z#2rnMBu&*Vw2bZM*t0f|iT3tL`-rX~eATPf_j0gY$W5#Z-mcWr~`-M(y( z)b?3-`}4t?W(=l3H1*|W;nV$-M5*38L`C=vLVj_mNT&^InfBdmLSE51YB6>DYtZ_h zrnu*~YhbZ`83gDSFJ;F))9r$j8?^4W^tyY=Wxb8;WjXOnMq|nBp-Vl`-3{s26SgVsqbyMMr}4+^5KND0^Oh_!kA{Pr zpXw>4Lza#pghO;tv~PC8D$HQ=ZL9|jPe_YR^+ExN7Q8S5CwUULs~2LOAx2$-+t#a& z!?~;LRO|VZU3emFRxZ9wxb2cr@PIQY9}nja5S7#*ErgLeZaeLA7&_UR8mScLJbqIQ zOY(Nj6XOvej%7~*-jYWnCRhyYq9lmTn(EEY`6mQvV>8>aJrMbVans$jGpix&IQVon zO}G*EtAw)=)@r!!2p`iOSn7s?b`;Z^S}|Lt`mrS)rL?=nNoJ)4owz)yaI=a-rL=cL zyDV9Hp(}UNC0hpQ%2`zA(PW;B?Hl`oQ;PFFTs83UHj9d*Q64$Hke2wkWs{Zm=JiXP z=e=hP#_(J-Z>IyUp?GrXldHUG{Kkc<*98fJ7q;0Rkc3yJ=a|ZrxH~a2Q_^FHkLqr- z)vq}3%BBZR9%_sX+VMEP8#<_BXQQzqUYWFFBViYn#yS>ll%I`@C9RBt;lLFS%#WxceCp2-Z12ku;>@NOTTlBN zhxlk+@6SNe9@7zZOG?_?R$v42^L9~MGX^fx{;h^z@o){>>PO`;Z$!%l{f>5Cn!;|{ z`70|C!j(Ff7isOC7*37}vv2LXi15RfqV86}?N7W7HR0hl0T!fJ%I&?7R96&^AVfNl2QUIsQw3}Qi>}W2+`>lMofHX8-^0b zNWWt4JlFwYC2&bhrnsct3`Cm`@JT*(^7teEZqK#fHVM%#5*{vG zJsoVSwTT^xK$XMR>r}(V4MQ33x`H^-JKQqrRpw$j;lY#>e6bB9fjgQC0lz*Ddc{j) zy%(B8AKq^qlFpn%pJZpGd@IxLlO**S0}vT$@%y>&6WU^cCYYOQaf*92Dn0TsQQ_2(foPTn(7~;5O5;E(lGNi#wgMO(Q*ZopXDB zF+x0iv;Zz}dsYj`%_)5~s+P8$_WYUW6iXJ04SyTv#e`Nl>^796R!&G(tI-{(xTY8W zlA$p^GX(TCOgFSP}ckp}-^BVXv<5a{URx?R_%H2i{}|6%I7QucDwILA98 zziwTmNRkL?AH!V&y=UIa6{tQ1vm6$!3kRq`{7~xR^80+%YV(Stj_~K_x9_7(Yb>LH z4k>hcv&*>=Fu#@N6b>$0f=&eCn?f2ue=ZVczZt9s1_q(tneK-D8IFfDc#8tCj(8}( z23Cj`vD04PIY*3Ipx-O8;m4935~YqsIn}^u^i)$s_*aYqAjOT43-%g#J;^Oc=aHUC zz;HOY|2oK@!5rbqr0sYL(+463#C4Dh!L*UH3;41*zz{l}El{og>BQ3t_8@N8oq5~W zg>3H6FeH}qG-FbM46qVKz+ODz&ISXgG`3GfK*D_)8i5tMFEL}XVqPo2n8bX=9Sws_ z(L@nm+FdDPa}`xf4WX$PA1n5l$_x-C@N*NOm;$hB2$N4ee)yq{%*9Vv0R z_*j7O3i>j7+AwPcs)?nxPxzDLB`l;|;@QM-yGqgOYtZo2bVrps#V6LA?6f zfY1?AEyJP>*3nz1E~k!n9*KcidmuF&e5xN}H44$?q1`ngEx0NA!8d5nT=fppZp~n@ zn@fClQTK=3M$4wfl!@Jw_tDL3kaA$$DZWYOJBQsqZDC&jTX~2PMc}kGVFhAn5&HfA zHrDwp$*ky-XpvJntlAALlO7BwN;JZ_fc=^F2cY$yJKVVj5w+iIT+bPw!t&KD4cl0Eos3i@J%u_FD`nVbCo}tM(L0cZN}0 z1VO8H=ppkYshMXI;L*GGRBvuznx;%9Nr`NLp@fOv2RLbC?2dq0rcuGmw(uC}cvLz! zP1vIJ3MVKH#O0PHiv=f5fh{Kvpb+sQ;7ayG;1m;AFg%U7GnWwuIcb4g%(0af18VNh zXa*6u1jwE4Sh6IEm1q3memeeAk;7-@s4DEHa)E>Wy zjd%j&2fN=1v`d!eNPHxAJTmRUz_#-MbpkglafNZwdF$!Zc}{d*RHHYiZ_-7!G|UVGix zmG7;ZNaczJepdgVoHWk<IG-z$~eLA1WMf z6{#w{{b182)mESy+S}$IJk2CB^H%&;v=OUQ5m?n6&sG*5T8a);J3sAju+5e#rLo<9 zy0PUB*E1?}Wv_r5zypFXg=dt`xw8g?c9}h2F(8sI%ZR3*&jb2MeD;k`p=$FPEBPGy z>xVlkmXzdIrnOJ6hy$F=M%dsMV4$4Nv!u+0ekdjuI!{C=B8bgq+p!>+EG?$t2%jgk zyBmTx^SvU=1Qe-`m&10#xwQZ?rD`=;YR@w#sgWEya%m`U#KdCgZ?Ee%L{4f0zR>06 zoFU&3eMEn;%|d#n#GHWwZOvtYS1As%J#xn4rTTBE=f6IKnRJAASw@LvEp6uF%L!dY z1!@*jKpBD%|079KWH+R2p*Z(e+zFV1yc=mk^fDF%NfIvT5&5P}ZngH?v zp~k~6T0+c6*=&I+=z`9J{cpIzrX|NRB`tuVYOOr-q-KB>PaDu?iLy?BHpn zUw;G(fyn_k8J<3r6*CC{aici{(|EQQo7^DqR!Yy|PX=nnYYIs6T`61`cw%#vrobD$ zfNYT#W5oUeeC^;*#+)V?*t4vnxlD1pzTaMQY;V76{SnePP(hzV&Tp1>~H;ZD`H29T_fN%1wK<;~(nbRmv=dO~460pI+RG z!9)WsA3QjeO5EEUx!JPFRfo>D7>yoP{n>JOOFw`*Syrs)**iY)B8^2U#{UpNDp#Iv zzWgLD<~LO^^6P$q&hBW@H3`LuzAgEI#)iW|69v`==4RKADi9v0oW3@m2)k315+LsN zg}PB_3Qsmy?9aH3*{%c%W^VrU{yDkW2f9I15t?r{Yo~#74EFS&`%;auway54#$Ft? zd;HAp^TVdx6>qG8xyQ`geH8JcLgmHX&n_(<2|dO!FrG;oP_1VQ`k~U^nZ`5M3lkzO zWFH-Jo)Kdf3iMpP(B%|4zA7j|-+P3%#ut!h55nJTDKQ*EanFM}XSc23L?e^nT|s=2 zW1R`F4$>q_q%?osn1`=XVl1gbxAJbx-ngZ7^+d+*xnMq`V@~t;&rF|E3U^rTVvLn1;Sehx{yR`?&7jVL+b}3ghUJe!D$z zK!5>2P8=sL{7h)#$mUdD8ul!MYLcwtW3RtkLDAVjB>yt@VD4t{SQ|Z4HNkZ6yyLGbv{!RqN}kFV%qy>vS=8|%co&ScnAE9l{dZyNWA~?nal2If8)3@+Udo%9 z`wu^AXAie7>vxx$ks20~6>5GExZJV%g-Mloj}@ z6Pmd8%+4ErYe9HBFFd!_8`jC%@7BHvyPUtttzx%JgxPnh(3~34!~+W1P$Rx#*x#BS zpky@Yq5gw7Ph6qU2}C(ilufxgKEKWGp65pnJ478I_HAa02$}OzIE18M162h)1-Pf-QvQd z&N*g{uRvp}$cjyNn8~_y6g_J%qPA9m*SQ;^fwgsxX9Kll_6gguj7!|zNcK7i`~=Wx zO9S%+$Pje)2$(u>!|&DJ1ZaL1rvWH0p$NPUK)34dPxsLx7Ns+pnGAoh4G*v)YlLz5 z@7|{rM`VuybCZJ3v}6f240O4N77<`7P5XE%x-Y{ld@woXbR##b^WK@Q3kvMEICx)j zRp8k0dKyNIS)*MY&i%sZ5kL5GF^p#m^&046kcoxgfam~x&8a3!mY0?+fInD8_f-3E z-3goC)+x1(sB@Y3n>uO-TJx#2C6b*RIxI?5kvb8Gb#)XRf{QF)vory~?Khwku^;G$5}~ zR)6W@fN7+mt``J%h}Q{h&ewmY)i%VZSpzc)=_TmoQs;I#7oSah*x*2@}w z@P&Fsae+h_N}Hhup$uWeB9rryC2sp8gRA zUsu1=8B}jwTw21i{OB%I`bKhIi-HaB&DED@l}24lRAXJD0yB}$8)|W*r(ieF&tz2K z6wFdek3>rJ#jT$_-ORhx_M~@acKlS9w7u;?6?F{{ub;Ge96UKO3-*|f%arTe{C=%g z)xN^dXm*xq^?_^1voD3ZH|ri6#IIzP?K8ibxCeNOAb^2iT~2sO=jiXYZghEm&OQ7L z+zq!1N2lGnu}r?p3`~cc^y+1dpw?z_g89?Ck%cX}qgS85RQYbWXK(%B3_<)JSyC~o zM(>F8I8@3(AVZZz-=7sFd!{Sh5xi$al8;Yn^qq>Ar}63Ev_6g6itM$1J;J*^mL~V$ z`MuNzO1^w;@6;8!JWFjIBW9Z6J`#i#51ucons4mFnt#*oA#?EG3r}H-d_t(EVF*SP zy{nGJ@wcG-@cvdiSdPB3+}+R-OsG1OOx+klh_)(fb>{I8?GNL}8^bM>v?&zzdBJOuP1 z^@hE>6n;C*Qo9=6*YAYTG|DRymdrW@yXIq7VzNI(-U{3$YL$q9p6sE%`lVfX@wK)} z8DA|zvmO;ie>nkJ7}aJzbe0kIw%0KNckbL^2g(U4Lc0&2vO4tLamejjjh*$8o?A~h zq+=j_ayiV*^^|k-fv+X?TDm18muUsH0tE|78nI~Ia@gua{lR8l!rs+8UEdM{S6b&J zaK@LPbj}@qa5!jX8h_9k+o$$@-gkh9^5X|b ztZ$$eaoL4>X6_~Qn4`H<(L%JC#tVI74hS5D4~D~$Ibabbq`828L2 z={>%xG4&-WF#9?AW$66SCG;aterUHdar}BnU^zjDlV(`iHbmy1m9;te1Lqi+DXTTfk`i16lRTq){dh8*39hp1&V`X~D!T%ZG&lf1@=B480^OJUShiA#e zn&T~cP23%9KWYf(d8(GLH|pCQyOxSM1B==ys_8e5HhgX^yHpZyQF(rHhsBC`k<(TC z(Q3j2LxXP!Ki4IPf9}6#?2PH($>+%J8Si5eiktn_Su)E#U=KK~9Gwhuk5e=``mkMtu%cH%1coVm2+z7vPc9rLS(EXxM>JT*TR z#MfF*=&ma8=gp5NHLr^ijXb>GlKX~tOQ-eC;_AO14lJyHPZ3;*vHnQ5J&s(X;xCvn zi?W2+MOnMQj#?SQTRZQ4{CE$vSXhn?&>37&6dlanVL>c+s3BOFRDbE8p;8W6v79R> zeBMg6pU5v4xGiV1Zje3j`q3rr>gFv>ptkXNHHSi50Q{cFs;0+y1&9WnLMu39>Ak%W zmfAp$&Xh|RYlx_sv;O+Z|3*RYbHah}8`Ovrju8+A-z?fJG~lK7O!1VI3LQ7g(>t1N ze5=-;MN&7ldO!T;!MRGo0kX@|{l*}-4XjD(YhrY!%6+hV?1Ai2Hv{Lifq>DguFXp# z<{=!1LVpcOIKfZ0VRZM=OKs!LKXiRK^~|Ntc*SZ>uySH_PfaE|YKV<;?roXuv3m!% z{NQiQo#kAg!?H(wEY2Uh3@>_Se7JMVP#&zI+38R09dV_%-9>=k4g^}kYQ_DXB{a2HDMhcx%IE@= zy_c&l#a(X3X|by1y7;+D=L;#5K>A^^uS$hYT3q+0#!YMoOuu@(NY(#aMuzIhZsfJvv2$CU zhq>!sNiQqumJGOD5P!4L>QdfW?}tO%*&UXvqPo1lJh$8**yrXpap^u#=qOwVb7I%M z2hZSTp=p9;4_u72JS`21a8cI9NmT<~gv5caJpHnMU;pnn9~7*RiYu$8p?9WNpFN6* z6>yR8zdGB+AL9XkPlM*V;Z)x32s@TaAE zaziYl*p55nraB6QqVM#rAq7~#ev7!#OH~}7c&p4k8`AMQ`z~6$IK;CF5xKr#v=dtb zG=(GtCx!y+8{`U4thj!x|77v)y8=aW`A~SvQ&HAEIQSt0BG*qen;`XmmF}-B_u~3b zn&4?Ienc%j4JhJZ%XBv|y#KkPBtNA8}V_$t|$&z0oT>rKg)v z*%E+LegF^dhPOnjJUDA7k$MdGxVAC-i>XyNxU&*8f47B_Rqof@>l`KCI6vyQa{mYq zQ5N}y#qhFMiBr6#_6vvM#@yGJ9g0>vwKCp_FSngNBm-RTs!Pv)#@!I0D*gE0M%E9@ zGrWnid96K8`owbM++*9RmoBM`bW``jLa_j?3h3yjU3_2AROI8~d8Nj=ca3SJpTqx} zRv9lop_d#JDsC&*GlHkMtR9_^7nHonq$GY(zB?;s^oi%gm#}>s5vzGGJWjOp zWDR_^iBooYq9PVOpoXWtx+rxc8aQ9+Edg27$Vm_|21oMa+~zGRmrx zGL7U9+j2Shh;DknYK^QrRusWPi*Q}m&t`X7C`CIAXT4wM-KQR02^RHOx7f=tuQyjE z$$r@?MRD`QH>@6Dg_xZ!q*QSl`5cs5AFjhChd^SaFCA*=ro}N4^T9#B!i>%s zBlRICR|gHx02>rIlvR`!R*=EiA^Ak96Wrz7&YLogSE9tE$Esn4l+Kc zfz%Pk`}jdBDo9N*6wrXLFosd%KZdIajv2H86={0+Wzf@xXUowH~|E80$9XnFb)ydaJ_;-Vh!#~IQ z486pg`RQe)ub{ z9$@Bv58_`GV^IDtiUIb-d;0uID;Yo^c|aUFG)U$DU@9j+9Q613zvu|A`F$Orr3|34 zoZO#Z28|i?{)@(p^z5Is)?_pVx~%1Zha|L4V^C;$Gzue!mS$8XiNc7ZP~s>4L5ct$ z=rTJ>7%j~XX6w(7u$-){w5;%D;oo^^MMY^jFei+Uu*V;HjQ?mbWX9(od1yr-J^#tW zp#PHx>ce1wK>hPNkS8Y(CgneQ7@7a0tlWRv1!ZMXKydz3R#r~>|H+g8KgufnGY{|M z;Ccn}VMvFGYaj&3f;9H@1j6x~nb?s!9+y3Z(Z6L19B2vK2rJ8=)wR&tXa$U{jQm** z1qE4ct+Sdka+(^N3K&HVMZo|6|4SHLs^y8(bb)a0zJ6DQk%}5 +using namespace std; +using namespace aruco; +//portable calibration function +aruco::CameraParameters cameraCalibrate_(std::vector > &allMarkers, int imageWidth,int imageHeight,float markerSize,float *currRepjErr){ + + + + unsigned char default_a4_board[] = { + 0x30, 0x20, 0x32, 0x34, 0x20, 0x31, 0x36, 0x31, 0x20, 0x34, 0x20, 0x2d, + 0x31, 0x30, 0x30, 0x30, 0x20, 0x2d, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, + 0x20, 0x2d, 0x35, 0x30, 0x30, 0x20, 0x2d, 0x31, 0x30, 0x30, 0x30, 0x20, + 0x30, 0x20, 0x2d, 0x35, 0x30, 0x30, 0x20, 0x2d, 0x31, 0x35, 0x30, 0x30, + 0x20, 0x30, 0x20, 0x2d, 0x31, 0x30, 0x30, 0x30, 0x20, 0x2d, 0x31, 0x35, + 0x30, 0x30, 0x20, 0x30, 0x20, 0x32, 0x32, 0x37, 0x20, 0x34, 0x20, 0x2d, + 0x34, 0x30, 0x30, 0x20, 0x2d, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x20, + 0x31, 0x30, 0x30, 0x20, 0x2d, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x20, + 0x31, 0x30, 0x30, 0x20, 0x2d, 0x31, 0x35, 0x30, 0x30, 0x20, 0x30, 0x20, + 0x2d, 0x34, 0x30, 0x30, 0x20, 0x2d, 0x31, 0x35, 0x30, 0x30, 0x20, 0x30, + 0x20, 0x38, 0x35, 0x20, 0x34, 0x20, 0x32, 0x30, 0x30, 0x20, 0x2d, 0x31, + 0x30, 0x30, 0x30, 0x20, 0x30, 0x20, 0x37, 0x30, 0x30, 0x20, 0x2d, 0x31, + 0x30, 0x30, 0x30, 0x20, 0x30, 0x20, 0x37, 0x30, 0x30, 0x20, 0x2d, 0x31, + 0x35, 0x30, 0x30, 0x20, 0x30, 0x20, 0x32, 0x30, 0x30, 0x20, 0x2d, 0x31, + 0x35, 0x30, 0x30, 0x20, 0x30, 0x20, 0x31, 0x36, 0x36, 0x20, 0x34, 0x20, + 0x38, 0x30, 0x30, 0x20, 0x2d, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x20, + 0x31, 0x33, 0x30, 0x30, 0x20, 0x2d, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, + 0x20, 0x31, 0x33, 0x30, 0x30, 0x20, 0x2d, 0x31, 0x35, 0x30, 0x30, 0x20, + 0x30, 0x20, 0x38, 0x30, 0x30, 0x20, 0x2d, 0x31, 0x35, 0x30, 0x30, 0x20, + 0x30, 0x20, 0x32, 0x34, 0x34, 0x20, 0x34, 0x20, 0x2d, 0x31, 0x30, 0x30, + 0x30, 0x20, 0x2d, 0x34, 0x30, 0x30, 0x20, 0x30, 0x20, 0x2d, 0x35, 0x30, + 0x30, 0x20, 0x2d, 0x34, 0x30, 0x30, 0x20, 0x30, 0x20, 0x2d, 0x35, 0x30, + 0x30, 0x20, 0x2d, 0x39, 0x30, 0x30, 0x20, 0x30, 0x20, 0x2d, 0x31, 0x30, + 0x30, 0x30, 0x20, 0x2d, 0x39, 0x30, 0x30, 0x20, 0x30, 0x20, 0x31, 0x34, + 0x34, 0x20, 0x34, 0x20, 0x2d, 0x34, 0x30, 0x30, 0x20, 0x2d, 0x34, 0x30, + 0x30, 0x20, 0x30, 0x20, 0x31, 0x30, 0x30, 0x20, 0x2d, 0x34, 0x30, 0x30, + 0x20, 0x30, 0x20, 0x31, 0x30, 0x30, 0x20, 0x2d, 0x39, 0x30, 0x30, 0x20, + 0x30, 0x20, 0x2d, 0x34, 0x30, 0x30, 0x20, 0x2d, 0x39, 0x30, 0x30, 0x20, + 0x30, 0x20, 0x39, 0x30, 0x20, 0x34, 0x20, 0x32, 0x30, 0x30, 0x20, 0x2d, + 0x34, 0x30, 0x30, 0x20, 0x30, 0x20, 0x37, 0x30, 0x30, 0x20, 0x2d, 0x34, + 0x30, 0x30, 0x20, 0x30, 0x20, 0x37, 0x30, 0x30, 0x20, 0x2d, 0x39, 0x30, + 0x30, 0x20, 0x30, 0x20, 0x32, 0x30, 0x30, 0x20, 0x2d, 0x39, 0x30, 0x30, + 0x20, 0x30, 0x20, 0x32, 0x31, 0x34, 0x20, 0x34, 0x20, 0x38, 0x30, 0x30, + 0x20, 0x2d, 0x34, 0x30, 0x30, 0x20, 0x30, 0x20, 0x31, 0x33, 0x30, 0x30, + 0x20, 0x2d, 0x34, 0x30, 0x30, 0x20, 0x30, 0x20, 0x31, 0x33, 0x30, 0x30, + 0x20, 0x2d, 0x39, 0x30, 0x30, 0x20, 0x30, 0x20, 0x38, 0x30, 0x30, 0x20, + 0x2d, 0x39, 0x30, 0x30, 0x20, 0x30, 0x20, 0x31, 0x35, 0x33, 0x20, 0x34, + 0x20, 0x2d, 0x31, 0x30, 0x30, 0x30, 0x20, 0x32, 0x30, 0x30, 0x20, 0x30, + 0x20, 0x2d, 0x35, 0x30, 0x30, 0x20, 0x32, 0x30, 0x30, 0x20, 0x30, 0x20, + 0x2d, 0x35, 0x30, 0x30, 0x20, 0x2d, 0x33, 0x30, 0x30, 0x20, 0x30, 0x20, + 0x2d, 0x31, 0x30, 0x30, 0x30, 0x20, 0x2d, 0x33, 0x30, 0x30, 0x20, 0x30, + 0x20, 0x37, 0x20, 0x34, 0x20, 0x2d, 0x34, 0x30, 0x30, 0x20, 0x32, 0x30, + 0x30, 0x20, 0x30, 0x20, 0x31, 0x30, 0x30, 0x20, 0x32, 0x30, 0x30, 0x20, + 0x30, 0x20, 0x31, 0x30, 0x30, 0x20, 0x2d, 0x33, 0x30, 0x30, 0x20, 0x30, + 0x20, 0x2d, 0x34, 0x30, 0x30, 0x20, 0x2d, 0x33, 0x30, 0x30, 0x20, 0x30, + 0x20, 0x31, 0x34, 0x33, 0x20, 0x34, 0x20, 0x32, 0x30, 0x30, 0x20, 0x32, + 0x30, 0x30, 0x20, 0x30, 0x20, 0x37, 0x30, 0x30, 0x20, 0x32, 0x30, 0x30, + 0x20, 0x30, 0x20, 0x37, 0x30, 0x30, 0x20, 0x2d, 0x33, 0x30, 0x30, 0x20, + 0x30, 0x20, 0x32, 0x30, 0x30, 0x20, 0x2d, 0x33, 0x30, 0x30, 0x20, 0x30, + 0x20, 0x32, 0x31, 0x39, 0x20, 0x34, 0x20, 0x38, 0x30, 0x30, 0x20, 0x32, + 0x30, 0x30, 0x20, 0x30, 0x20, 0x31, 0x33, 0x30, 0x30, 0x20, 0x32, 0x30, + 0x30, 0x20, 0x30, 0x20, 0x31, 0x33, 0x30, 0x30, 0x20, 0x2d, 0x33, 0x30, + 0x30, 0x20, 0x30, 0x20, 0x38, 0x30, 0x30, 0x20, 0x2d, 0x33, 0x30, 0x30, + 0x20, 0x30, 0x20, 0x37, 0x38, 0x20, 0x34, 0x20, 0x2d, 0x31, 0x30, 0x30, + 0x30, 0x20, 0x38, 0x30, 0x30, 0x20, 0x30, 0x20, 0x2d, 0x35, 0x30, 0x30, + 0x20, 0x38, 0x30, 0x30, 0x20, 0x30, 0x20, 0x2d, 0x35, 0x30, 0x30, 0x20, + 0x33, 0x30, 0x30, 0x20, 0x30, 0x20, 0x2d, 0x31, 0x30, 0x30, 0x30, 0x20, + 0x33, 0x30, 0x30, 0x20, 0x30, 0x20, 0x31, 0x35, 0x39, 0x20, 0x34, 0x20, + 0x2d, 0x34, 0x30, 0x30, 0x20, 0x38, 0x30, 0x30, 0x20, 0x30, 0x20, 0x31, + 0x30, 0x30, 0x20, 0x38, 0x30, 0x30, 0x20, 0x30, 0x20, 0x31, 0x30, 0x30, + 0x20, 0x33, 0x30, 0x30, 0x20, 0x30, 0x20, 0x2d, 0x34, 0x30, 0x30, 0x20, + 0x33, 0x30, 0x30, 0x20, 0x30, 0x20, 0x32, 0x30, 0x39, 0x20, 0x34, 0x20, + 0x32, 0x30, 0x30, 0x20, 0x38, 0x30, 0x30, 0x20, 0x30, 0x20, 0x37, 0x30, + 0x30, 0x20, 0x38, 0x30, 0x30, 0x20, 0x30, 0x20, 0x37, 0x30, 0x30, 0x20, + 0x33, 0x30, 0x30, 0x20, 0x30, 0x20, 0x32, 0x30, 0x30, 0x20, 0x33, 0x30, + 0x30, 0x20, 0x30, 0x20, 0x31, 0x33, 0x20, 0x34, 0x20, 0x38, 0x30, 0x30, + 0x20, 0x38, 0x30, 0x30, 0x20, 0x30, 0x20, 0x31, 0x33, 0x30, 0x30, 0x20, + 0x38, 0x30, 0x30, 0x20, 0x30, 0x20, 0x31, 0x33, 0x30, 0x30, 0x20, 0x33, + 0x30, 0x30, 0x20, 0x30, 0x20, 0x38, 0x30, 0x30, 0x20, 0x33, 0x30, 0x30, + 0x20, 0x30, 0x20, 0x32, 0x34, 0x37, 0x20, 0x34, 0x20, 0x2d, 0x31, 0x30, + 0x30, 0x30, 0x20, 0x31, 0x34, 0x30, 0x30, 0x20, 0x30, 0x20, 0x2d, 0x35, + 0x30, 0x30, 0x20, 0x31, 0x34, 0x30, 0x30, 0x20, 0x30, 0x20, 0x2d, 0x35, + 0x30, 0x30, 0x20, 0x39, 0x30, 0x30, 0x20, 0x30, 0x20, 0x2d, 0x31, 0x30, + 0x30, 0x30, 0x20, 0x39, 0x30, 0x30, 0x20, 0x30, 0x20, 0x32, 0x33, 0x37, + 0x20, 0x34, 0x20, 0x2d, 0x34, 0x30, 0x30, 0x20, 0x31, 0x34, 0x30, 0x30, + 0x20, 0x30, 0x20, 0x31, 0x30, 0x30, 0x20, 0x31, 0x34, 0x30, 0x30, 0x20, + 0x30, 0x20, 0x31, 0x30, 0x30, 0x20, 0x39, 0x30, 0x30, 0x20, 0x30, 0x20, + 0x2d, 0x34, 0x30, 0x30, 0x20, 0x39, 0x30, 0x30, 0x20, 0x30, 0x20, 0x31, + 0x30, 0x30, 0x20, 0x34, 0x20, 0x32, 0x30, 0x30, 0x20, 0x31, 0x34, 0x30, + 0x30, 0x20, 0x30, 0x20, 0x37, 0x30, 0x30, 0x20, 0x31, 0x34, 0x30, 0x30, + 0x20, 0x30, 0x20, 0x37, 0x30, 0x30, 0x20, 0x39, 0x30, 0x30, 0x20, 0x30, + 0x20, 0x32, 0x30, 0x30, 0x20, 0x39, 0x30, 0x30, 0x20, 0x30, 0x20, 0x36, + 0x20, 0x34, 0x20, 0x38, 0x30, 0x30, 0x20, 0x31, 0x34, 0x30, 0x30, 0x20, + 0x30, 0x20, 0x31, 0x33, 0x30, 0x30, 0x20, 0x31, 0x34, 0x30, 0x30, 0x20, + 0x30, 0x20, 0x31, 0x33, 0x30, 0x30, 0x20, 0x39, 0x30, 0x30, 0x20, 0x30, + 0x20, 0x38, 0x30, 0x30, 0x20, 0x39, 0x30, 0x30, 0x20, 0x30, 0x20, 0x31, + 0x37, 0x37, 0x20, 0x34, 0x20, 0x2d, 0x31, 0x30, 0x30, 0x30, 0x20, 0x32, + 0x30, 0x30, 0x30, 0x20, 0x30, 0x20, 0x2d, 0x35, 0x30, 0x30, 0x20, 0x32, + 0x30, 0x30, 0x30, 0x20, 0x30, 0x20, 0x2d, 0x35, 0x30, 0x30, 0x20, 0x31, + 0x35, 0x30, 0x30, 0x20, 0x30, 0x20, 0x2d, 0x31, 0x30, 0x30, 0x30, 0x20, + 0x31, 0x35, 0x30, 0x30, 0x20, 0x30, 0x20, 0x39, 0x33, 0x20, 0x34, 0x20, + 0x2d, 0x34, 0x30, 0x30, 0x20, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x20, + 0x31, 0x30, 0x30, 0x20, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x20, 0x31, + 0x30, 0x30, 0x20, 0x31, 0x35, 0x30, 0x30, 0x20, 0x30, 0x20, 0x2d, 0x34, + 0x30, 0x30, 0x20, 0x31, 0x35, 0x30, 0x30, 0x20, 0x30, 0x20, 0x38, 0x36, + 0x20, 0x34, 0x20, 0x32, 0x30, 0x30, 0x20, 0x32, 0x30, 0x30, 0x30, 0x20, + 0x30, 0x20, 0x37, 0x30, 0x30, 0x20, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, + 0x20, 0x37, 0x30, 0x30, 0x20, 0x31, 0x35, 0x30, 0x30, 0x20, 0x30, 0x20, + 0x32, 0x30, 0x30, 0x20, 0x31, 0x35, 0x30, 0x30, 0x20, 0x30, 0x20, 0x32, + 0x32, 0x39, 0x20, 0x34, 0x20, 0x38, 0x30, 0x30, 0x20, 0x32, 0x30, 0x30, + 0x30, 0x20, 0x30, 0x20, 0x31, 0x33, 0x30, 0x30, 0x20, 0x32, 0x30, 0x30, + 0x30, 0x20, 0x30, 0x20, 0x31, 0x33, 0x30, 0x30, 0x20, 0x31, 0x35, 0x30, + 0x30, 0x20, 0x30, 0x20, 0x38, 0x30, 0x30, 0x20, 0x31, 0x35, 0x30, 0x30, + 0x20, 0x30, 0x20, 0x41, 0x52, 0x55, 0x43, 0x4f, 0x5f, 0x4d, 0x49, 0x50, + 0x5f, 0x33, 0x36, 0x68, 0x31, 0x32 + }; + unsigned int default_a4_board_size = 1254; + + // given the set of markers detected, the function determines the get the 2d-3d correspondes + auto getMarker2d_3d_=[](vector& p2d, vector& p3d, const vector& markers_detected, + const MarkerMap& bc) + { + p2d.clear(); + p3d.clear(); + // for each detected marker + for (size_t i = 0; i < markers_detected.size(); i++) + { + // find it in the bc + auto fidx = std::string::npos; + for (size_t j = 0; j < bc.size() && fidx == std::string::npos; j++) + if (bc[j].id == markers_detected[i].id) + fidx = j; + if (fidx != std::string::npos) + { + for (int j = 0; j < 4; j++) + { + p2d.push_back(markers_detected[i][j]); + p3d.push_back(bc[fidx][j]); + } + } + } + }; + + aruco::MarkerMap mmap; + stringstream sstr; + sstr.write((char*)default_a4_board, default_a4_board_size); + mmap.fromStream(sstr); + if (!mmap.isExpressedInMeters()) + mmap = mmap.convertToMeters(static_cast( markerSize)); + + + + vector >calib_p2d; + vector > calib_p3d; + + for(auto &detected_markers:allMarkers){ + vector p2d; + vector p3d; + + getMarker2d_3d_(p2d, p3d, detected_markers, mmap); + if (p3d.size() > 0) + { + calib_p2d.push_back(p2d); + calib_p3d.push_back(p3d); + } + } + + vector vr, vt; + CameraParameters cameraParams; + cameraParams.CamSize = cv::Size(imageWidth,imageHeight); + float err=cv::calibrateCamera(calib_p3d, calib_p2d, cameraParams.CamSize, cameraParams.CameraMatrix, cameraParams.Distorsion, vr, vt); + if (currRepjErr!=0) *currRepjErr=err; + // cerr << "repj error=" << curRepjerr << endl; + return cameraParams; +} + diff --git a/thirdparty/aruco-3.1.12/utils_calibration/calibrator.cpp b/thirdparty/aruco-3.1.12/utils_calibration/calibrator.cpp new file mode 100644 index 0000000..7f9d3d7 --- /dev/null +++ b/thirdparty/aruco-3.1.12/utils_calibration/calibrator.cpp @@ -0,0 +1,362 @@ +/** +Copyright 2017 Rafael Muñoz Salinas. All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are +permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this list of + conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright notice, this list + of conditions and the following disclaimer in the documentation and/or other materials + provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY Rafael Muñoz Salinas ''AS IS'' AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL Rafael Muñoz Salinas OR +CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +The views and conclusions contained in the software and documentation are those of the +authors and should not be interpreted as representing official policies, either expressed +or implied, of Rafael Muñoz Salinas. +*/ + +#include "calibrator.h" +#include +using namespace std; +namespace aruco{ +//portable calibration function + + + +Calibrator::Calibrator(){ + strinfo="Not calibrated. Need at least 4 images"; + _mmap=getDefaultCalibrationBoard(); + +} +Calibrator::~Calibrator(){ + stopThread(); +} + +void Calibrator::setParams(cv::Size imageSize,float markerSize,std::string markerMap ){ + try{ + stopThread(); + _imageSize=imageSize; + if (!markerMap.empty()) _mmap.readFromFile(markerMap); + + _msize=markerSize; + startThread(); + }catch(std::exception &ex){throw ex;} +} +//add a detection of the calibration markerset and do calibration +void Calibrator::addView(const std::vector &markers){ + + if ( _mmap.getIndices(markers).size()>=3){//at least three markers of the markermap + std::unique_lock lock(markerstmpMutex); + std::unique_lockvmarkerslock(markersMutex); + vmarkerstmp.push_back(markers); + if (vmarkers.size()<4){ + int nneeded=4-(vmarkerstmp.size()+vmarkers.size()); + setInfoString("Not calibrated. Need at least "+to_string(nneeded)+" more images"); + } + } +} + +//returns a string with info about the status +std::string Calibrator::getInfo(){ + + std::unique_lock lock(infoMutex); + std::string str=strinfo; + return str; +} +void Calibrator::setInfoString(const std::string &str){ + std::unique_lock lock(infoMutex); + strinfo=str; +} +//obtain the camera calibration results. It is blocking function +bool Calibrator::getCalibrationResults( aruco::CameraParameters &camp){ + bool isOk=true; + + aruco::CameraParameters ret; + calibrationMutex.lock(); + if ( vmarkers.size()<3) isOk=false; + camp=cameraParams; + calibrationMutex.unlock(); + + return isOk; +} + +int Calibrator::getNumberOfViews(){ + std::unique_lock lock(markerstmpMutex); + std::unique_lockvmarkerslock(markersMutex); + int sum= (vmarkerstmp.size()+vmarkers.size()); + return sum; +} +void Calibrator::calibration_function(){ + + while(keepCalibrating){ + calibrationMutex.lock(); + + int nnewMarkers=0,nTotalViews=0; + markerstmpMutex.lock(); + nnewMarkers=vmarkerstmp.size(); + if (vmarkerstmp.size()!=0){ + unique_lock vmarkerslock(markersMutex); + vmarkers.insert(vmarkers.end(),vmarkerstmp.begin(),vmarkerstmp.end()); + vmarkerstmp.clear(); + nTotalViews=vmarkers.size(); + } + markerstmpMutex.unlock(); + + if ( nnewMarkers!=0 && nTotalViews>=4){ + setInfoString("calibrating..."); + calibError=cameraCalibrate(vmarkers,_imageSize.width,_imageSize.height,_msize,_mmap,cameraParams); + setInfoString("calibration error:"+std::to_string(calibError)+" using "+std::to_string(vmarkers.size())+" images"); + } + calibrationMutex.unlock(); + std::this_thread::sleep_for(std::chrono::milliseconds(100)); + } +} + +void Calibrator::stopThread(){ + + if (_calibThread.joinable()){ + keepCalibrating=false; + _calibThread.join(); + } +} + +void Calibrator::startThread(){ + if (_calibThread.joinable()) stopThread(); + keepCalibrating=true; + _calibThread=std::thread([this]{this->calibration_function();}); + +} + + +inline cv::Point2f project_cv_(const cv::Point3f &p3d,const cv::Mat &cameraMatrix,const cv::Mat &RT,const cv::Mat & Distortion=cv::Mat()){ + assert(cameraMatrix.type()==CV_32F); + assert(RT.type()==CV_32F); + assert( (Distortion.type()==CV_32F && Distortion.total()>=5 )|| Distortion.total()==0); + + const float *cm=cameraMatrix.ptr(0); + const float *rt=RT.ptr(0); + const float *k=0; + if ( Distortion.total()!=0) k=Distortion.ptr(0); + + //project point first + float x= p3d.x* rt[0]+p3d.y* rt[1]+p3d.z* rt[2]+rt[3]; + float y= p3d.x* rt[4]+p3d.y* rt[5]+p3d.z* rt[6]+rt[7]; + float z= p3d.x* rt[8]+p3d.y* rt[9]+p3d.z* rt[10]+rt[11]; + + float xx=x/z; + float yy=y/z; + + if (k!=0){//apply distortion // k1,k2,p1,p2[,k3 + float r2=xx*xx+yy*yy; + float r4=r2*r2; + float comm=1+k[0]*r2+k[1]*r4+k[4]*(r4*r2); + float xxx = xx * comm + 2*k[2] *xx*yy+ k[3]*(r2+2*xx*xx); + float yyy= yy*comm+ k[2]*(r2+2*yy*yy)+2*k[3]*xx*yy; + xx=xxx; + yy=yyy; + } + return cv::Point2f((xx*cm[0])+cm[2],(yy*cm[4])+cm[5] ); +} + + + +float Calibrator::cameraCalibrate(std::vector > &allMarkers, int imageWidth,int imageHeight,float markerSize,aruco::MarkerMap &mmap, aruco::CameraParameters &iocam){ + + // given the set of markers detected, the function determines the get the 2d-3d correspondes + auto getMarker2d_3d_=[](std::vector& p2d, vector& p3d, const vector& markers_detected, + const MarkerMap& bc) + { + p2d.clear(); + p3d.clear(); + // for each detected marker + for (size_t i = 0; i < markers_detected.size(); i++) + { + // find it in the bc + auto fidx = std::string::npos; + for (size_t j = 0; j < bc.size() && fidx == std::string::npos; j++) + if (bc[j].id == markers_detected[i].id) + fidx = j; + if (fidx != std::string::npos) + { + for (int j = 0; j < 4; j++) + { + p2d.push_back(markers_detected[i][j]); + p3d.push_back(bc[fidx][j]); + } + } + } + }; + + int calibflags=0; + + if (!iocam.isValid()){ + //first time + iocam.CamSize = cv::Size(imageWidth,imageHeight); + } + else calibflags= cv::CALIB_USE_INTRINSIC_GUESS; + + + + if (!mmap.isExpressedInMeters()) + mmap = mmap.convertToMeters(static_cast( markerSize)); + + + + vector >calib_p2d; + vector > calib_p3d; + + for(auto &detected_markers:allMarkers){ + vector p2d; + vector p3d; + + getMarker2d_3d_(p2d, p3d, detected_markers, mmap); + if (p3d.size() > 0) + { + calib_p2d.push_back(p2d); + calib_p3d.push_back(p3d); + } + } + + vector vr, vt; + float err=cv::calibrateCamera(calib_p3d, calib_p2d, iocam.CamSize, iocam.CameraMatrix, iocam.Distorsion, vr, vt,calibflags); + + iocam.CameraMatrix.convertTo(iocam.CameraMatrix,CV_32F); + iocam.Distorsion.convertTo(iocam.Distorsion,CV_32F); + +return err; + + // cerr << "repj error=" << curRepjerr << endl; + } + +aruco::MarkerMap Calibrator::getDefaultCalibrationBoard(){ + + + + unsigned char default_a4_board[] = { + 0x30, 0x20, 0x32, 0x34, 0x20, 0x31, 0x36, 0x31, 0x20, 0x34, 0x20, 0x2d, + 0x31, 0x30, 0x30, 0x30, 0x20, 0x2d, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, + 0x20, 0x2d, 0x35, 0x30, 0x30, 0x20, 0x2d, 0x31, 0x30, 0x30, 0x30, 0x20, + 0x30, 0x20, 0x2d, 0x35, 0x30, 0x30, 0x20, 0x2d, 0x31, 0x35, 0x30, 0x30, + 0x20, 0x30, 0x20, 0x2d, 0x31, 0x30, 0x30, 0x30, 0x20, 0x2d, 0x31, 0x35, + 0x30, 0x30, 0x20, 0x30, 0x20, 0x32, 0x32, 0x37, 0x20, 0x34, 0x20, 0x2d, + 0x34, 0x30, 0x30, 0x20, 0x2d, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x20, + 0x31, 0x30, 0x30, 0x20, 0x2d, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x20, + 0x31, 0x30, 0x30, 0x20, 0x2d, 0x31, 0x35, 0x30, 0x30, 0x20, 0x30, 0x20, + 0x2d, 0x34, 0x30, 0x30, 0x20, 0x2d, 0x31, 0x35, 0x30, 0x30, 0x20, 0x30, + 0x20, 0x38, 0x35, 0x20, 0x34, 0x20, 0x32, 0x30, 0x30, 0x20, 0x2d, 0x31, + 0x30, 0x30, 0x30, 0x20, 0x30, 0x20, 0x37, 0x30, 0x30, 0x20, 0x2d, 0x31, + 0x30, 0x30, 0x30, 0x20, 0x30, 0x20, 0x37, 0x30, 0x30, 0x20, 0x2d, 0x31, + 0x35, 0x30, 0x30, 0x20, 0x30, 0x20, 0x32, 0x30, 0x30, 0x20, 0x2d, 0x31, + 0x35, 0x30, 0x30, 0x20, 0x30, 0x20, 0x31, 0x36, 0x36, 0x20, 0x34, 0x20, + 0x38, 0x30, 0x30, 0x20, 0x2d, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, 0x20, + 0x31, 0x33, 0x30, 0x30, 0x20, 0x2d, 0x31, 0x30, 0x30, 0x30, 0x20, 0x30, + 0x20, 0x31, 0x33, 0x30, 0x30, 0x20, 0x2d, 0x31, 0x35, 0x30, 0x30, 0x20, + 0x30, 0x20, 0x38, 0x30, 0x30, 0x20, 0x2d, 0x31, 0x35, 0x30, 0x30, 0x20, + 0x30, 0x20, 0x32, 0x34, 0x34, 0x20, 0x34, 0x20, 0x2d, 0x31, 0x30, 0x30, + 0x30, 0x20, 0x2d, 0x34, 0x30, 0x30, 0x20, 0x30, 0x20, 0x2d, 0x35, 0x30, + 0x30, 0x20, 0x2d, 0x34, 0x30, 0x30, 0x20, 0x30, 0x20, 0x2d, 0x35, 0x30, + 0x30, 0x20, 0x2d, 0x39, 0x30, 0x30, 0x20, 0x30, 0x20, 0x2d, 0x31, 0x30, + 0x30, 0x30, 0x20, 0x2d, 0x39, 0x30, 0x30, 0x20, 0x30, 0x20, 0x31, 0x34, + 0x34, 0x20, 0x34, 0x20, 0x2d, 0x34, 0x30, 0x30, 0x20, 0x2d, 0x34, 0x30, + 0x30, 0x20, 0x30, 0x20, 0x31, 0x30, 0x30, 0x20, 0x2d, 0x34, 0x30, 0x30, + 0x20, 0x30, 0x20, 0x31, 0x30, 0x30, 0x20, 0x2d, 0x39, 0x30, 0x30, 0x20, + 0x30, 0x20, 0x2d, 0x34, 0x30, 0x30, 0x20, 0x2d, 0x39, 0x30, 0x30, 0x20, + 0x30, 0x20, 0x39, 0x30, 0x20, 0x34, 0x20, 0x32, 0x30, 0x30, 0x20, 0x2d, + 0x34, 0x30, 0x30, 0x20, 0x30, 0x20, 0x37, 0x30, 0x30, 0x20, 0x2d, 0x34, + 0x30, 0x30, 0x20, 0x30, 0x20, 0x37, 0x30, 0x30, 0x20, 0x2d, 0x39, 0x30, + 0x30, 0x20, 0x30, 0x20, 0x32, 0x30, 0x30, 0x20, 0x2d, 0x39, 0x30, 0x30, + 0x20, 0x30, 0x20, 0x32, 0x31, 0x34, 0x20, 0x34, 0x20, 0x38, 0x30, 0x30, + 0x20, 0x2d, 0x34, 0x30, 0x30, 0x20, 0x30, 0x20, 0x31, 0x33, 0x30, 0x30, + 0x20, 0x2d, 0x34, 0x30, 0x30, 0x20, 0x30, 0x20, 0x31, 0x33, 0x30, 0x30, + 0x20, 0x2d, 0x39, 0x30, 0x30, 0x20, 0x30, 0x20, 0x38, 0x30, 0x30, 0x20, + 0x2d, 0x39, 0x30, 0x30, 0x20, 0x30, 0x20, 0x31, 0x35, 0x33, 0x20, 0x34, + 0x20, 0x2d, 0x31, 0x30, 0x30, 0x30, 0x20, 0x32, 0x30, 0x30, 0x20, 0x30, + 0x20, 0x2d, 0x35, 0x30, 0x30, 0x20, 0x32, 0x30, 0x30, 0x20, 0x30, 0x20, + 0x2d, 0x35, 0x30, 0x30, 0x20, 0x2d, 0x33, 0x30, 0x30, 0x20, 0x30, 0x20, + 0x2d, 0x31, 0x30, 0x30, 0x30, 0x20, 0x2d, 0x33, 0x30, 0x30, 0x20, 0x30, + 0x20, 0x37, 0x20, 0x34, 0x20, 0x2d, 0x34, 0x30, 0x30, 0x20, 0x32, 0x30, + 0x30, 0x20, 0x30, 0x20, 0x31, 0x30, 0x30, 0x20, 0x32, 0x30, 0x30, 0x20, + 0x30, 0x20, 0x31, 0x30, 0x30, 0x20, 0x2d, 0x33, 0x30, 0x30, 0x20, 0x30, + 0x20, 0x2d, 0x34, 0x30, 0x30, 0x20, 0x2d, 0x33, 0x30, 0x30, 0x20, 0x30, + 0x20, 0x31, 0x34, 0x33, 0x20, 0x34, 0x20, 0x32, 0x30, 0x30, 0x20, 0x32, + 0x30, 0x30, 0x20, 0x30, 0x20, 0x37, 0x30, 0x30, 0x20, 0x32, 0x30, 0x30, + 0x20, 0x30, 0x20, 0x37, 0x30, 0x30, 0x20, 0x2d, 0x33, 0x30, 0x30, 0x20, + 0x30, 0x20, 0x32, 0x30, 0x30, 0x20, 0x2d, 0x33, 0x30, 0x30, 0x20, 0x30, + 0x20, 0x32, 0x31, 0x39, 0x20, 0x34, 0x20, 0x38, 0x30, 0x30, 0x20, 0x32, + 0x30, 0x30, 0x20, 0x30, 0x20, 0x31, 0x33, 0x30, 0x30, 0x20, 0x32, 0x30, + 0x30, 0x20, 0x30, 0x20, 0x31, 0x33, 0x30, 0x30, 0x20, 0x2d, 0x33, 0x30, + 0x30, 0x20, 0x30, 0x20, 0x38, 0x30, 0x30, 0x20, 0x2d, 0x33, 0x30, 0x30, + 0x20, 0x30, 0x20, 0x37, 0x38, 0x20, 0x34, 0x20, 0x2d, 0x31, 0x30, 0x30, + 0x30, 0x20, 0x38, 0x30, 0x30, 0x20, 0x30, 0x20, 0x2d, 0x35, 0x30, 0x30, + 0x20, 0x38, 0x30, 0x30, 0x20, 0x30, 0x20, 0x2d, 0x35, 0x30, 0x30, 0x20, + 0x33, 0x30, 0x30, 0x20, 0x30, 0x20, 0x2d, 0x31, 0x30, 0x30, 0x30, 0x20, + 0x33, 0x30, 0x30, 0x20, 0x30, 0x20, 0x31, 0x35, 0x39, 0x20, 0x34, 0x20, + 0x2d, 0x34, 0x30, 0x30, 0x20, 0x38, 0x30, 0x30, 0x20, 0x30, 0x20, 0x31, + 0x30, 0x30, 0x20, 0x38, 0x30, 0x30, 0x20, 0x30, 0x20, 0x31, 0x30, 0x30, + 0x20, 0x33, 0x30, 0x30, 0x20, 0x30, 0x20, 0x2d, 0x34, 0x30, 0x30, 0x20, + 0x33, 0x30, 0x30, 0x20, 0x30, 0x20, 0x32, 0x30, 0x39, 0x20, 0x34, 0x20, + 0x32, 0x30, 0x30, 0x20, 0x38, 0x30, 0x30, 0x20, 0x30, 0x20, 0x37, 0x30, + 0x30, 0x20, 0x38, 0x30, 0x30, 0x20, 0x30, 0x20, 0x37, 0x30, 0x30, 0x20, + 0x33, 0x30, 0x30, 0x20, 0x30, 0x20, 0x32, 0x30, 0x30, 0x20, 0x33, 0x30, + 0x30, 0x20, 0x30, 0x20, 0x31, 0x33, 0x20, 0x34, 0x20, 0x38, 0x30, 0x30, + 0x20, 0x38, 0x30, 0x30, 0x20, 0x30, 0x20, 0x31, 0x33, 0x30, 0x30, 0x20, + 0x38, 0x30, 0x30, 0x20, 0x30, 0x20, 0x31, 0x33, 0x30, 0x30, 0x20, 0x33, + 0x30, 0x30, 0x20, 0x30, 0x20, 0x38, 0x30, 0x30, 0x20, 0x33, 0x30, 0x30, + 0x20, 0x30, 0x20, 0x32, 0x34, 0x37, 0x20, 0x34, 0x20, 0x2d, 0x31, 0x30, + 0x30, 0x30, 0x20, 0x31, 0x34, 0x30, 0x30, 0x20, 0x30, 0x20, 0x2d, 0x35, + 0x30, 0x30, 0x20, 0x31, 0x34, 0x30, 0x30, 0x20, 0x30, 0x20, 0x2d, 0x35, + 0x30, 0x30, 0x20, 0x39, 0x30, 0x30, 0x20, 0x30, 0x20, 0x2d, 0x31, 0x30, + 0x30, 0x30, 0x20, 0x39, 0x30, 0x30, 0x20, 0x30, 0x20, 0x32, 0x33, 0x37, + 0x20, 0x34, 0x20, 0x2d, 0x34, 0x30, 0x30, 0x20, 0x31, 0x34, 0x30, 0x30, + 0x20, 0x30, 0x20, 0x31, 0x30, 0x30, 0x20, 0x31, 0x34, 0x30, 0x30, 0x20, + 0x30, 0x20, 0x31, 0x30, 0x30, 0x20, 0x39, 0x30, 0x30, 0x20, 0x30, 0x20, + 0x2d, 0x34, 0x30, 0x30, 0x20, 0x39, 0x30, 0x30, 0x20, 0x30, 0x20, 0x31, + 0x30, 0x30, 0x20, 0x34, 0x20, 0x32, 0x30, 0x30, 0x20, 0x31, 0x34, 0x30, + 0x30, 0x20, 0x30, 0x20, 0x37, 0x30, 0x30, 0x20, 0x31, 0x34, 0x30, 0x30, + 0x20, 0x30, 0x20, 0x37, 0x30, 0x30, 0x20, 0x39, 0x30, 0x30, 0x20, 0x30, + 0x20, 0x32, 0x30, 0x30, 0x20, 0x39, 0x30, 0x30, 0x20, 0x30, 0x20, 0x36, + 0x20, 0x34, 0x20, 0x38, 0x30, 0x30, 0x20, 0x31, 0x34, 0x30, 0x30, 0x20, + 0x30, 0x20, 0x31, 0x33, 0x30, 0x30, 0x20, 0x31, 0x34, 0x30, 0x30, 0x20, + 0x30, 0x20, 0x31, 0x33, 0x30, 0x30, 0x20, 0x39, 0x30, 0x30, 0x20, 0x30, + 0x20, 0x38, 0x30, 0x30, 0x20, 0x39, 0x30, 0x30, 0x20, 0x30, 0x20, 0x31, + 0x37, 0x37, 0x20, 0x34, 0x20, 0x2d, 0x31, 0x30, 0x30, 0x30, 0x20, 0x32, + 0x30, 0x30, 0x30, 0x20, 0x30, 0x20, 0x2d, 0x35, 0x30, 0x30, 0x20, 0x32, + 0x30, 0x30, 0x30, 0x20, 0x30, 0x20, 0x2d, 0x35, 0x30, 0x30, 0x20, 0x31, + 0x35, 0x30, 0x30, 0x20, 0x30, 0x20, 0x2d, 0x31, 0x30, 0x30, 0x30, 0x20, + 0x31, 0x35, 0x30, 0x30, 0x20, 0x30, 0x20, 0x39, 0x33, 0x20, 0x34, 0x20, + 0x2d, 0x34, 0x30, 0x30, 0x20, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x20, + 0x31, 0x30, 0x30, 0x20, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x20, 0x31, + 0x30, 0x30, 0x20, 0x31, 0x35, 0x30, 0x30, 0x20, 0x30, 0x20, 0x2d, 0x34, + 0x30, 0x30, 0x20, 0x31, 0x35, 0x30, 0x30, 0x20, 0x30, 0x20, 0x38, 0x36, + 0x20, 0x34, 0x20, 0x32, 0x30, 0x30, 0x20, 0x32, 0x30, 0x30, 0x30, 0x20, + 0x30, 0x20, 0x37, 0x30, 0x30, 0x20, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, + 0x20, 0x37, 0x30, 0x30, 0x20, 0x31, 0x35, 0x30, 0x30, 0x20, 0x30, 0x20, + 0x32, 0x30, 0x30, 0x20, 0x31, 0x35, 0x30, 0x30, 0x20, 0x30, 0x20, 0x32, + 0x32, 0x39, 0x20, 0x34, 0x20, 0x38, 0x30, 0x30, 0x20, 0x32, 0x30, 0x30, + 0x30, 0x20, 0x30, 0x20, 0x31, 0x33, 0x30, 0x30, 0x20, 0x32, 0x30, 0x30, + 0x30, 0x20, 0x30, 0x20, 0x31, 0x33, 0x30, 0x30, 0x20, 0x31, 0x35, 0x30, + 0x30, 0x20, 0x30, 0x20, 0x38, 0x30, 0x30, 0x20, 0x31, 0x35, 0x30, 0x30, + 0x20, 0x30, 0x20, 0x41, 0x52, 0x55, 0x43, 0x4f, 0x5f, 0x4d, 0x49, 0x50, + 0x5f, 0x33, 0x36, 0x68, 0x31, 0x32 + }; + unsigned int default_a4_board_size = 1254; + + + aruco::MarkerMap mmap; + std::stringstream sstr; + sstr.write((char*)default_a4_board, default_a4_board_size); + mmap.fromStream(sstr); + return mmap; + } +} diff --git a/thirdparty/aruco-3.1.12/utils_calibration/calibrator.h b/thirdparty/aruco-3.1.12/utils_calibration/calibrator.h new file mode 100644 index 0000000..3f84b13 --- /dev/null +++ b/thirdparty/aruco-3.1.12/utils_calibration/calibrator.h @@ -0,0 +1,84 @@ +/** +Copyright 2017 Rafael Muñoz Salinas. All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are +permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this list of + conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright notice, this list + of conditions and the following disclaimer in the documentation and/or other materials + provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY Rafael Muñoz Salinas ''AS IS'' AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL Rafael Muñoz Salinas OR +CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +The views and conclusions contained in the software and documentation are those of the +authors and should not be interpreted as representing official policies, either expressed +or implied, of Rafael Muñoz Salinas. +*/ + +#ifndef ArucoCalibrator_H +#define ArucoCalibrator_H +#include +#include +#include "marker.h" +#include "markermap.h" +#include "cameraparameters.h" +#include +#include +namespace aruco { +/** + * @brief The Calibrator class implements a calibration thread + */ +class Calibrator{ + + std::vector > vmarkers,vmarkerstmp; + float _msize; + aruco::MarkerMap _mmap; + cv::Size _imageSize; + std::thread _calibThread; + std::mutex markersMutex,markerstmpMutex,infoMutex,calibrationMutex; + std::string strinfo; + bool keepCalibrating; + aruco::CameraParameters cameraParams; + float calibError=-1; +public: + + Calibrator(); + ~Calibrator(); + void setParams(cv::Size imageSize, float markerSize=1, std::string markerMap=""); + //add a detection of the calibration markerset and do calibration + //returns the current number of views + void addView(const std::vector &markers); + + //returns a string with info about the status + std::string getInfo(); + + //obtain the camera calibration results. It is blocking function + //returns true if calibration was ok + bool getCalibrationResults( aruco::CameraParameters &camp); + int getNumberOfViews(); + + float getReprjError()const{return calibError;} +private: + void calibration_function(); + void setInfoString(const std::string &str); + void stopThread(); + void startThread(); + + float cameraCalibrate(std::vector > &allMarkers, int imageWidth,int imageHeight,float markerSize, aruco::MarkerMap &inmmap, aruco::CameraParameters&io); + aruco::MarkerMap getDefaultCalibrationBoard(); + +}; +} + +#endif diff --git a/thirdparty/aruco-3.1.12/utils_calibration/dirreader.h b/thirdparty/aruco-3.1.12/utils_calibration/dirreader.h new file mode 100644 index 0000000..ee033e2 --- /dev/null +++ b/thirdparty/aruco-3.1.12/utils_calibration/dirreader.h @@ -0,0 +1,1232 @@ +#ifndef _DIR_READER_H +#define _DIR_READER_H +#include +#include + + +#ifdef WIN32 + +/* + * Dirent interface for Microsoft Visual Studio + * + * Copyright (C) 2006-2012 Toni Ronkko + * This file is part of dirent. Dirent may be freely distributed + * under the MIT license. For all details and documentation, see + * https://github.com/tronkko/dirent + */ +#ifndef DIRENT_H +#define DIRENT_H + +/* + * Include windows.h without Windows Sockets 1.1 to prevent conflicts with + * Windows Sockets 2.0. + */ +#ifndef WIN32_LEAN_AND_MEAN +# define WIN32_LEAN_AND_MEAN +#endif +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* Indicates that d_type field is available in dirent structure */ +#define _DIRENT_HAVE_D_TYPE + +/* Indicates that d_namlen field is available in dirent structure */ +#define _DIRENT_HAVE_D_NAMLEN + +/* Entries missing from MSVC 6.0 */ +#if !defined(FILE_ATTRIBUTE_DEVICE) +# define FILE_ATTRIBUTE_DEVICE 0x40 +#endif + +/* File type and permission flags for stat(), general mask */ +#if !defined(S_IFMT) +# define S_IFMT _S_IFMT +#endif + +/* Directory bit */ +#if !defined(S_IFDIR) +# define S_IFDIR _S_IFDIR +#endif + +/* Character device bit */ +#if !defined(S_IFCHR) +# define S_IFCHR _S_IFCHR +#endif + +/* Pipe bit */ +#if !defined(S_IFFIFO) +# define S_IFFIFO _S_IFFIFO +#endif + +/* Regular file bit */ +#if !defined(S_IFREG) +# define S_IFREG _S_IFREG +#endif + +/* Read permission */ +#if !defined(S_IREAD) +# define S_IREAD _S_IREAD +#endif + +/* Write permission */ +#if !defined(S_IWRITE) +# define S_IWRITE _S_IWRITE +#endif + +/* Execute permission */ +#if !defined(S_IEXEC) +# define S_IEXEC _S_IEXEC +#endif + +/* Pipe */ +#if !defined(S_IFIFO) +# define S_IFIFO _S_IFIFO +#endif + +/* Block device */ +#if !defined(S_IFBLK) +# define S_IFBLK 0 +#endif + +/* Link */ +#if !defined(S_IFLNK) +# define S_IFLNK 0 +#endif + +/* Socket */ +#if !defined(S_IFSOCK) +# define S_IFSOCK 0 +#endif + +/* Read user permission */ +#if !defined(S_IRUSR) +# define S_IRUSR S_IREAD +#endif + +/* Write user permission */ +#if !defined(S_IWUSR) +# define S_IWUSR S_IWRITE +#endif + +/* Execute user permission */ +#if !defined(S_IXUSR) +# define S_IXUSR 0 +#endif + +/* Read group permission */ +#if !defined(S_IRGRP) +# define S_IRGRP 0 +#endif + +/* Write group permission */ +#if !defined(S_IWGRP) +# define S_IWGRP 0 +#endif + +/* Execute group permission */ +#if !defined(S_IXGRP) +# define S_IXGRP 0 +#endif + +/* Read others permission */ +#if !defined(S_IROTH) +# define S_IROTH 0 +#endif + +/* Write others permission */ +#if !defined(S_IWOTH) +# define S_IWOTH 0 +#endif + +/* Execute others permission */ +#if !defined(S_IXOTH) +# define S_IXOTH 0 +#endif + +/* Maximum length of file name */ +#if !defined(PATH_MAX) +# define PATH_MAX MAX_PATH +#endif +#if !defined(FILENAME_MAX) +# define FILENAME_MAX MAX_PATH +#endif +#if !defined(NAME_MAX) +# define NAME_MAX FILENAME_MAX +#endif + +/* File type flags for d_type */ +#define DT_ALL_DICTS 0 +#define DT_REG S_IFREG +#define DT_DIR S_IFDIR +#define DT_FIFO S_IFIFO +#define DT_SOCK S_IFSOCK +#define DT_CHR S_IFCHR +#define DT_BLK S_IFBLK +#define DT_LNK S_IFLNK + +/* Macros for converting between st_mode and d_type */ +#define IFTODT(mode) ((mode) & S_IFMT) +#define DTTOIF(type) (type) + +/* + * File type macros. Note that block devices, sockets and links cannot be + * distinguished on Windows and the macros S_ISBLK, S_ISSOCK and S_ISLNK are + * only defined for compatibility. These macros should always return false + * on Windows. + */ +#if !defined(S_ISFIFO) +# define S_ISFIFO(mode) (((mode) & S_IFMT) == S_IFIFO) +#endif +#if !defined(S_ISDIR) +# define S_ISDIR(mode) (((mode) & S_IFMT) == S_IFDIR) +#endif +#if !defined(S_ISREG) +# define S_ISREG(mode) (((mode) & S_IFMT) == S_IFREG) +#endif +#if !defined(S_ISLNK) +# define S_ISLNK(mode) (((mode) & S_IFMT) == S_IFLNK) +#endif +#if !defined(S_ISSOCK) +# define S_ISSOCK(mode) (((mode) & S_IFMT) == S_IFSOCK) +#endif +#if !defined(S_ISCHR) +# define S_ISCHR(mode) (((mode) & S_IFMT) == S_IFCHR) +#endif +#if !defined(S_ISBLK) +# define S_ISBLK(mode) (((mode) & S_IFMT) == S_IFBLK) +#endif + +/* Return the exact length of the file name without zero terminator */ +#define _D_EXACT_NAMLEN(p) ((p)->d_namlen) + +/* Return the maximum size of a file name */ +#define _D_ALLOC_NAMLEN(p) ((PATH_MAX)+1) + + +#ifdef __cplusplus +extern "C" { +#endif + + +/* Wide-character version */ +struct _wdirent { + /* Always zero */ + long d_ino; + + /* File position within stream */ + long d_off; + + /* Structure size */ + unsigned short d_reclen; + + /* Length of name without \0 */ + size_t d_namlen; + + /* File type */ + int d_type; + + /* File name */ + wchar_t d_name[PATH_MAX+1]; +}; +typedef struct _wdirent _wdirent; + +struct _WDIR { + /* Current directory entry */ + struct _wdirent ent; + + /* Private file data */ + WIN32_FIND_DATAW data; + + /* True if data is valid */ + int cached; + + /* Win32 search handle */ + HANDLE handle; + + /* Initial directory name */ + wchar_t *patt; +}; +typedef struct _WDIR _WDIR; + +/* Multi-byte character version */ +struct dirent { + /* Always zero */ + long d_ino; + + /* File position within stream */ + long d_off; + + /* Structure size */ + unsigned short d_reclen; + + /* Length of name without \0 */ + size_t d_namlen; + + /* File type */ + int d_type; + + /* File name */ + char d_name[PATH_MAX+1]; +}; +typedef struct dirent dirent; + +struct DIR { + struct dirent ent; + struct _WDIR *wdirp; +}; +typedef struct DIR DIR; + + +/* Dirent functions */ +static DIR *opendir (const char *dirname); +static _WDIR *_wopendir (const wchar_t *dirname); + +static struct dirent *readdir (DIR *dirp); +static struct _wdirent *_wreaddir (_WDIR *dirp); + +static int readdir_r( + DIR *dirp, struct dirent *entry, struct dirent **result); +static int _wreaddir_r( + _WDIR *dirp, struct _wdirent *entry, struct _wdirent **result); + +static int closedir (DIR *dirp); +static int _wclosedir (_WDIR *dirp); + +static void rewinddir (DIR* dirp); +static void _wrewinddir (_WDIR* dirp); + +static int scandir (const char *dirname, struct dirent ***namelist, + int (*filter)(const struct dirent*), + int (*compare)(const void *, const void *)); + +static int alphasort (const struct dirent **a, const struct dirent **b); + +static int versionsort (const struct dirent **a, const struct dirent **b); + + +/* For compatibility with Symbian */ +#define wdirent _wdirent +#define WDIR _WDIR +#define wopendir _wopendir +#define wreaddir _wreaddir +#define wclosedir _wclosedir +#define wrewinddir _wrewinddir + + +/* Internal utility functions */ +static WIN32_FIND_DATAW *dirent_first (_WDIR *dirp); +static WIN32_FIND_DATAW *dirent_next (_WDIR *dirp); + +static int dirent_mbstowcs_s( + size_t *pReturnValue, + wchar_t *wcstr, + size_t sizeInWords, + const char *mbstr, + size_t count); + +static int dirent_wcstombs_s( + size_t *pReturnValue, + char *mbstr, + size_t sizeInBytes, + const wchar_t *wcstr, + size_t count); + +static void dirent_set_errno (int error); + + +/* + * Open directory stream DIRNAME for read and return a pointer to the + * internal working area that is used to retrieve individual directory + * entries. + */ +static _WDIR* +_wopendir( + const wchar_t *dirname) +{ + _WDIR *dirp = NULL; + int error; + + /* Must have directory name */ + if (dirname == NULL || dirname[0] == '\0') { + dirent_set_errno (ENOENT); + return NULL; + } + + /* Allocate new _WDIR structure */ + dirp = (_WDIR*) malloc (sizeof (struct _WDIR)); + if (dirp != NULL) { + DWORD n; + + /* Reset _WDIR structure */ + dirp->handle = INVALID_HANDLE_VALUE; + dirp->patt = NULL; + dirp->cached = 0; + + /* Compute the length of full path plus zero terminator + * + * Note that on WinRT there's no way to convert relative paths + * into absolute paths, so just assume its an absolute path. + */ +# if defined(WINAPI_FAMILY) && (WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP) + n = wcslen(dirname); +# else + n = GetFullPathNameW (dirname, 0, NULL, NULL); +# endif + + /* Allocate room for absolute directory name and search pattern */ + dirp->patt = (wchar_t*) malloc (sizeof (wchar_t) * n + 16); + if (dirp->patt) { + + /* + * Convert relative directory name to an absolute one. This + * allows rewinddir() to function correctly even when current + * working directory is changed between opendir() and rewinddir(). + * + * Note that on WinRT there's no way to convert relative paths + * into absolute paths, so just assume its an absolute path. + */ +# if defined(WINAPI_FAMILY) && (WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP) + wcsncpy_s(dirp->patt, n+1, dirname, n); +# else + n = GetFullPathNameW (dirname, n, dirp->patt, NULL); +# endif + if (n > 0) { + wchar_t *p; + + /* Append search pattern \* to the directory name */ + p = dirp->patt + n; + if (dirp->patt < p) { + switch (p[-1]) { + case '\\': + case '/': + case ':': + /* Directory ends in path separator, e.g. c:\temp\ */ + /*NOP*/; + break; + + default: + /* Directory name doesn't end in path separator */ + *p++ = '\\'; + } + } + *p++ = '*'; + *p = '\0'; + + /* Open directory stream and retrieve the first entry */ + if (dirent_first (dirp)) { + /* Directory stream opened successfully */ + error = 0; + } else { + /* Cannot retrieve first entry */ + error = 1; + dirent_set_errno (ENOENT); + } + + } else { + /* Cannot retrieve full path name */ + dirent_set_errno (ENOENT); + error = 1; + } + + } else { + /* Cannot allocate memory for search pattern */ + error = 1; + } + + } else { + /* Cannot allocate _WDIR structure */ + error = 1; + } + + /* Clean up in case of error */ + if (error && dirp) { + _wclosedir (dirp); + dirp = NULL; + } + + return dirp; +} + +/* + * Read next directory entry. + * + * Returns pointer to static directory entry which may be overwritted by + * subsequent calls to _wreaddir(). + */ +static struct _wdirent* +_wreaddir( + _WDIR *dirp) +{ + struct _wdirent *entry; + + /* + * Read directory entry to buffer. We can safely ignore the return value + * as entry will be set to NULL in case of error. + */ + (void) _wreaddir_r (dirp, &dirp->ent, &entry); + + /* Return pointer to statically allocated directory entry */ + return entry; +} + +/* + * Read next directory entry. + * + * Returns zero on success. If end of directory stream is reached, then sets + * result to NULL and returns zero. + */ +static int +_wreaddir_r( + _WDIR *dirp, + struct _wdirent *entry, + struct _wdirent **result) +{ + WIN32_FIND_DATAW *datap; + + /* Read next directory entry */ + datap = dirent_next (dirp); + if (datap) { + size_t n; + DWORD attr; + + /* + * Copy file name as wide-character string. If the file name is too + * long to fit in to the destination buffer, then truncate file name + * to PATH_MAX characters and zero-terminate the buffer. + */ + n = 0; + while (n < PATH_MAX && datap->cFileName[n] != 0) { + entry->d_name[n] = datap->cFileName[n]; + n++; + } + entry->d_name[n] = 0; + + /* Length of file name excluding zero terminator */ + entry->d_namlen = n; + + /* File type */ + attr = datap->dwFileAttributes; + if ((attr & FILE_ATTRIBUTE_DEVICE) != 0) { + entry->d_type = DT_CHR; + } else if ((attr & FILE_ATTRIBUTE_DIRECTORY) != 0) { + entry->d_type = DT_DIR; + } else { + entry->d_type = DT_REG; + } + + /* Reset dummy fields */ + entry->d_ino = 0; + entry->d_off = 0; + entry->d_reclen = sizeof (struct _wdirent); + + /* Set result address */ + *result = entry; + + } else { + + /* Return NULL to indicate end of directory */ + *result = NULL; + + } + + return /*OK*/0; +} + +/* + * Close directory stream opened by opendir() function. This invalidates the + * DIR structure as well as any directory entry read previously by + * _wreaddir(). + */ +static int +_wclosedir( + _WDIR *dirp) +{ + int ok; + if (dirp) { + + /* Release search handle */ + if (dirp->handle != INVALID_HANDLE_VALUE) { + FindClose (dirp->handle); + dirp->handle = INVALID_HANDLE_VALUE; + } + + /* Release search pattern */ + if (dirp->patt) { + free (dirp->patt); + dirp->patt = NULL; + } + + /* Release directory structure */ + free (dirp); + ok = /*success*/0; + + } else { + + /* Invalid directory stream */ + dirent_set_errno (EBADF); + ok = /*failure*/-1; + + } + return ok; +} + +/* + * Rewind directory stream such that _wreaddir() returns the very first + * file name again. + */ +static void +_wrewinddir( + _WDIR* dirp) +{ + if (dirp) { + /* Release existing search handle */ + if (dirp->handle != INVALID_HANDLE_VALUE) { + FindClose (dirp->handle); + } + + /* Open new search handle */ + dirent_first (dirp); + } +} + +/* Get first directory entry (internal) */ +static WIN32_FIND_DATAW* +dirent_first( + _WDIR *dirp) +{ + WIN32_FIND_DATAW *datap; + + /* Open directory and retrieve the first entry */ + dirp->handle = FindFirstFileExW( + dirp->patt, FindExInfoStandard, &dirp->data, + FindExSearchNameMatch, NULL, 0); + if (dirp->handle != INVALID_HANDLE_VALUE) { + + /* a directory entry is now waiting in memory */ + datap = &dirp->data; + dirp->cached = 1; + + } else { + + /* Failed to re-open directory: no directory entry in memory */ + dirp->cached = 0; + datap = NULL; + + } + return datap; +} + +/* + * Get next directory entry (internal). + * + * Returns + */ +static WIN32_FIND_DATAW* +dirent_next( + _WDIR *dirp) +{ + WIN32_FIND_DATAW *p; + + /* Get next directory entry */ + if (dirp->cached != 0) { + + /* A valid directory entry already in memory */ + p = &dirp->data; + dirp->cached = 0; + + } else if (dirp->handle != INVALID_HANDLE_VALUE) { + + /* Get the next directory entry from stream */ + if (FindNextFileW (dirp->handle, &dirp->data) != FALSE) { + /* Got a file */ + p = &dirp->data; + } else { + /* The very last entry has been processed or an error occured */ + FindClose (dirp->handle); + dirp->handle = INVALID_HANDLE_VALUE; + p = NULL; + } + + } else { + + /* End of directory stream reached */ + p = NULL; + + } + + return p; +} + +/* + * Open directory stream using plain old C-string. + */ +static DIR* +opendir( + const char *dirname) +{ + struct DIR *dirp; + int error; + + /* Must have directory name */ + if (dirname == NULL || dirname[0] == '\0') { + dirent_set_errno (ENOENT); + return NULL; + } + + /* Allocate memory for DIR structure */ + dirp = (DIR*) malloc (sizeof (struct DIR)); + if (dirp) { + wchar_t wname[PATH_MAX + 1]; + size_t n; + + /* Convert directory name to wide-character string */ + error = dirent_mbstowcs_s( + &n, wname, PATH_MAX + 1, dirname, PATH_MAX + 1); + if (!error) { + + /* Open directory stream using wide-character name */ + dirp->wdirp = _wopendir (wname); + if (dirp->wdirp) { + /* Directory stream opened */ + error = 0; + } else { + /* Failed to open directory stream */ + error = 1; + } + + } else { + /* + * Cannot convert file name to wide-character string. This + * occurs if the string contains invalid multi-byte sequences or + * the output buffer is too small to contain the resulting + * string. + */ + error = 1; + } + + } else { + /* Cannot allocate DIR structure */ + error = 1; + } + + /* Clean up in case of error */ + if (error && dirp) { + free (dirp); + dirp = NULL; + } + + return dirp; +} + +/* + * Read next directory entry. + */ +static struct dirent* +readdir( + DIR *dirp) +{ + struct dirent *entry; + + /* + * Read directory entry to buffer. We can safely ignore the return value + * as entry will be set to NULL in case of error. + */ + (void) readdir_r (dirp, &dirp->ent, &entry); + + /* Return pointer to statically allocated directory entry */ + return entry; +} + +/* + * Read next directory entry into called-allocated buffer. + * + * Returns zero on sucess. If the end of directory stream is reached, then + * sets result to NULL and returns zero. + */ +static int +readdir_r( + DIR *dirp, + struct dirent *entry, + struct dirent **result) +{ + WIN32_FIND_DATAW *datap; + + /* Read next directory entry */ + datap = dirent_next (dirp->wdirp); + if (datap) { + size_t n; + int error; + + /* Attempt to convert file name to multi-byte string */ + error = dirent_wcstombs_s( + &n, entry->d_name, PATH_MAX + 1, datap->cFileName, PATH_MAX + 1); + + /* + * If the file name cannot be represented by a multi-byte string, + * then attempt to use old 8+3 file name. This allows traditional + * Unix-code to access some file names despite of unicode + * characters, although file names may seem unfamiliar to the user. + * + * Be ware that the code below cannot come up with a short file + * name unless the file system provides one. At least + * VirtualBox shared folders fail to do this. + */ + if (error && datap->cAlternateFileName[0] != '\0') { + error = dirent_wcstombs_s( + &n, entry->d_name, PATH_MAX + 1, + datap->cAlternateFileName, PATH_MAX + 1); + } + + if (!error) { + DWORD attr; + + /* Length of file name excluding zero terminator */ + entry->d_namlen = n - 1; + + /* File attributes */ + attr = datap->dwFileAttributes; + if ((attr & FILE_ATTRIBUTE_DEVICE) != 0) { + entry->d_type = DT_CHR; + } else if ((attr & FILE_ATTRIBUTE_DIRECTORY) != 0) { + entry->d_type = DT_DIR; + } else { + entry->d_type = DT_REG; + } + + /* Reset dummy fields */ + entry->d_ino = 0; + entry->d_off = 0; + entry->d_reclen = sizeof (struct dirent); + + } else { + + /* + * Cannot convert file name to multi-byte string so construct + * an errornous directory entry and return that. Note that + * we cannot return NULL as that would stop the processing + * of directory entries completely. + */ + entry->d_name[0] = '?'; + entry->d_name[1] = '\0'; + entry->d_namlen = 1; + entry->d_type = DT_ALL_DICTS; + entry->d_ino = 0; + entry->d_off = -1; + entry->d_reclen = 0; + + } + + /* Return pointer to directory entry */ + *result = entry; + + } else { + + /* No more directory entries */ + *result = NULL; + + } + + return /*OK*/0; +} + +/* + * Close directory stream. + */ +static int +closedir( + DIR *dirp) +{ + int ok; + if (dirp) { + + /* Close wide-character directory stream */ + ok = _wclosedir (dirp->wdirp); + dirp->wdirp = NULL; + + /* Release multi-byte character version */ + free (dirp); + + } else { + + /* Invalid directory stream */ + dirent_set_errno (EBADF); + ok = /*failure*/-1; + + } + return ok; +} + +/* + * Rewind directory stream to beginning. + */ +static void +rewinddir( + DIR* dirp) +{ + /* Rewind wide-character string directory stream */ + _wrewinddir (dirp->wdirp); +} + +/* + * Scan directory for entries. + */ +static int +scandir( + const char *dirname, + struct dirent ***namelist, + int (*filter)(const struct dirent*), + int (*compare)(const void*, const void*)) +{ + struct dirent **files = NULL; + size_t size = 0; + size_t allocated = 0; + const size_t init_size = 1; + DIR *dir = NULL; + struct dirent *entry; + struct dirent *tmp = NULL; + size_t i; + int result = 0; + + /* Open directory stream */ + dir = opendir (dirname); + if (dir) { + + /* Read directory entries to memory */ + while (1) { + + /* Enlarge pointer table to make room for another pointer */ + if (size >= allocated) { + void *p; + size_t num_entries; + + /* Compute number of entries in the enlarged pointer table */ + if (size < init_size) { + /* Allocate initial pointer table */ + num_entries = init_size; + } else { + /* Double the size */ + num_entries = size * 2; + } + + /* Allocate first pointer table or enlarge existing table */ + p = realloc (files, sizeof (void*) * num_entries); + if (p != NULL) { + /* Got the memory */ + files = (dirent**) p; + allocated = num_entries; + } else { + /* Out of memory */ + result = -1; + break; + } + + } + + /* Allocate room for temporary directory entry */ + if (tmp == NULL) { + tmp = (struct dirent*) malloc (sizeof (struct dirent)); + if (tmp == NULL) { + /* Cannot allocate temporary directory entry */ + result = -1; + break; + } + } + + /* Read directory entry to temporary area */ + if (readdir_r (dir, tmp, &entry) == /*OK*/0) { + + /* Did we got an entry? */ + if (entry != NULL) { + int pass; + + /* Determine whether to include the entry in result */ + if (filter) { + /* Let the filter function decide */ + pass = filter (tmp); + } else { + /* No filter function, include everything */ + pass = 1; + } + + if (pass) { + /* Store the temporary entry to pointer table */ + files[size++] = tmp; + tmp = NULL; + + /* Keep up with the number of files */ + result++; + } + + } else { + + /* + * End of directory stream reached => sort entries and + * exit. + */ + qsort (files, size, sizeof (void*), compare); + break; + + } + + } else { + /* Error reading directory entry */ + result = /*Error*/ -1; + break; + } + + } + + } else { + /* Cannot open directory */ + result = /*Error*/ -1; + } + + /* Release temporary directory entry */ + if (tmp) { + free (tmp); + } + + /* Release allocated memory on error */ + if (result < 0) { + for (i = 0; i < size; i++) { + free (files[i]); + } + free (files); + files = NULL; + } + + /* Close directory stream */ + if (dir) { + closedir (dir); + } + + /* Pass pointer table to caller */ + if (namelist) { + *namelist = files; + } + return result; +} + +/* Alphabetical sorting */ +static int +alphasort( + const struct dirent **a, const struct dirent **b) +{ + return strcoll ((*a)->d_name, (*b)->d_name); +} + +/* Sort versions */ +static int +versionsort( + const struct dirent **a, const struct dirent **b) +{ + /* FIXME: implement strverscmp and use that */ + return alphasort (a, b); +} + + +/* Convert multi-byte string to wide character string */ +static int +dirent_mbstowcs_s( + size_t *pReturnValue, + wchar_t *wcstr, + size_t sizeInWords, + const char *mbstr, + size_t count) +{ + int error; + +#if defined(_MSC_VER) && _MSC_VER >= 1400 + + /* Microsoft Visual Studio 2005 or later */ + error = mbstowcs_s (pReturnValue, wcstr, sizeInWords, mbstr, count); + +#else + + /* Older Visual Studio or non-Microsoft compiler */ + size_t n; + + /* Convert to wide-character string (or count characters) */ + n = mbstowcs (wcstr, mbstr, sizeInWords); + if (!wcstr || n < count) { + + /* Zero-terminate output buffer */ + if (wcstr && sizeInWords) { + if (n >= sizeInWords) { + n = sizeInWords - 1; + } + wcstr[n] = 0; + } + + /* Length of resuting multi-byte string WITH zero terminator */ + if (pReturnValue) { + *pReturnValue = n + 1; + } + + /* Success */ + error = 0; + + } else { + + /* Could not convert string */ + error = 1; + + } + +#endif + + return error; +} + +/* Convert wide-character string to multi-byte string */ +static int +dirent_wcstombs_s( + size_t *pReturnValue, + char *mbstr, + size_t sizeInBytes, /* max size of mbstr */ + const wchar_t *wcstr, + size_t count) +{ + int error; + +#if defined(_MSC_VER) && _MSC_VER >= 1400 + + /* Microsoft Visual Studio 2005 or later */ + error = wcstombs_s (pReturnValue, mbstr, sizeInBytes, wcstr, count); + +#else + + /* Older Visual Studio or non-Microsoft compiler */ + size_t n; + + /* Convert to multi-byte string (or count the number of bytes needed) */ + n = wcstombs (mbstr, wcstr, sizeInBytes); + if (!mbstr || n < count) { + + /* Zero-terminate output buffer */ + if (mbstr && sizeInBytes) { + if (n >= sizeInBytes) { + n = sizeInBytes - 1; + } + mbstr[n] = '\0'; + } + + /* Length of resulting multi-bytes string WITH zero-terminator */ + if (pReturnValue) { + *pReturnValue = n + 1; + } + + /* Success */ + error = 0; + + } else { + + /* Cannot convert string */ + error = 1; + + } + +#endif + + return error; +} + +/* Set errno variable */ +static void +dirent_set_errno( + int error) +{ +#if defined(_MSC_VER) && _MSC_VER >= 1400 + + /* Microsoft Visual Studio 2005 and later */ + _set_errno (error); + +#else + + /* Non-Microsoft compiler or older Microsoft compiler */ + errno = error; + +#endif +} + + +#ifdef __cplusplus +} +#endif +#endif /*DIRENT_H*/ +#else +#include +#endif +#include // std::sort + + + +class DirReader{ +public: + + struct Params{ + Params(){} + Params(bool SetFullPath){setFullPath=SetFullPath;} + bool setFullPath=false; + bool removeParentAndThis=true; + }; + +static std::vector read(std::string path,std::string ext="",const Params ¶ms=Params()){ + DIR *dir; + struct dirent *ent; + std::vector res; + if ((dir = opendir (path.c_str())) != NULL) { + /* print all the files and directories within directory */ + while ((ent = readdir (dir)) != NULL){ + std::string fname(ent->d_name); + bool addit=true; + if ( params.removeParentAndThis){ + if ( fname=="." || fname=="..") + addit=false; + } + if (addit && !ext.empty()){//check extension + std::string thisExt=std::string(fname.begin()+(fname.size()-ext.size()),fname.end()); + if (thisExt!=ext) + addit=false; + + } + + if(addit){ + if(params.setFullPath) fname=path+getSeparator()+fname; + res.push_back(fname); + } + } + closedir (dir); + } + std::sort(res.begin(),res.end()); + //check + return res; +} + +static char getSeparator(){ +#ifdef WIN32 + return '\\'; +#else + return '/'; +#endif +} + +static std::string basename( std::string const& pathname ) +{ + + return std::string( + std::find_if( pathname.rbegin(), pathname.rend(),[](char c){return c==getSeparator();} ).base(), + pathname.end() ); +} + +}; +#endif diff --git a/thirdparty/aruco-3.1.12/utils_dcf/CMakeLists.txt b/thirdparty/aruco-3.1.12/utils_dcf/CMakeLists.txt new file mode 100644 index 0000000..22a2260 --- /dev/null +++ b/thirdparty/aruco-3.1.12/utils_dcf/CMakeLists.txt @@ -0,0 +1,12 @@ +INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/src) +if(CMAKE_COMPILER_IS_GNUCXX OR MINGW OR ${CMAKE_CXX_COMPILER_ID} STREQUAL Clang) +SET(THREADLIB "pthread") +ENDIF() + +add_executable(aruco_dcf aruco_dcf.cpp) +add_executable(aruco_dcf_mm aruco_dcf_markermap.cpp) + +target_link_libraries(aruco_dcf aruco opencv_calib3d opencv_highgui ${THREADLIB}) +target_link_libraries(aruco_dcf_mm aruco opencv_calib3d opencv_highgui ${THREADLIB}) + +INSTALL(TARGETS aruco_dcf aruco_dcf_mm RUNTIME DESTINATION bin) diff --git a/thirdparty/aruco-3.1.12/utils_dcf/aruco_dcf.cpp b/thirdparty/aruco-3.1.12/utils_dcf/aruco_dcf.cpp new file mode 100644 index 0000000..d682337 --- /dev/null +++ b/thirdparty/aruco-3.1.12/utils_dcf/aruco_dcf.cpp @@ -0,0 +1,104 @@ +#include "aruco_cvversioning.h" +#include +#include +#include +#include +#include +#include "aruco.h" +#include + +#include "dcf/dcfmarkertracker.h" + +using namespace aruco; +using namespace std; + +class CmdLineParser{int argc;char** argv;public:CmdLineParser(int _argc, char** _argv): argc(_argc), argv(_argv){} bool operator[](string param) {int idx = -1; for (int i = 0; i < argc && idx == -1; i++)if (string(argv[i]) == param)idx = i;return (idx != -1);} string operator()(string param, string defvalue = "-1") {int idx = -1;for (int i = 0; i < argc && idx == -1; i++)if (string(argv[i]) == param)idx = i;if (idx == -1)return defvalue;else return (argv[idx + 1]);}}; +struct TimerAvrg{std::vector times;size_t curr=0,n; std::chrono::high_resolution_clock::time_point begin,end; TimerAvrg(int _n=30){n=_n;times.reserve(n); }inline void start(){begin= std::chrono::high_resolution_clock::now(); }inline void stop(){end= std::chrono::high_resolution_clock::now();double duration=double(std::chrono::duration_cast(end-begin).count())*1e-6;if ( times.size()=times.size()) curr=0;}}double getAvrg(){double sum=0;for(auto t:times) sum+=t;return sum/double(times.size());}}; + +TimerAvrg timer; +DFCMarkerTracker TheTracker; + +int main(int argc,char **argv){ + try { + CmdLineParser cml(argc, argv); + if(argc<2 || cml["-h"]) + { + cerr << "Usage: (invideo|cameraindex) [-c cameraParams.yml] [-s markerSize] [-start frame] [-d :ALL_DICTS default] [-f arucoConfig.yml]" << std::endl; + cerr << "\tDictionaries: "; + for (auto dict : aruco::Dictionary::getDicTypes()) + cerr << dict << " "; + cerr << endl; + cerr << "\t Instead of these, you can directly indicate the path to a file with your own generated " + "dictionary" + << endl; + cout << "Example to work with apriltags dictionary : video.avi -d TAG36h11" << endl << endl; + return 0; + } + + aruco::CameraParameters CamParam; + // read camera parameters if passed + if (cml["-c"]) + CamParam.readFromXMLFile(cml("-c")); + + float MarkerSize = std::stof(cml("-s", "-1")); + + cv::VideoCapture video;; + //open video/camera + try { + int camIndex=std::stoi(argv[1]); + video.open(camIndex); + } catch (const std::exception &e) { + video.open(argv[1]); + } + if(!video.isOpened()) throw std::runtime_error("Could not open video"); + + cv::Mat image; + + int frameid =std::stoi(cml("-start", "0")); + + video.set(CV_CAP_PROP_POS_FRAMES,frameid); + while(image.empty()) video>>image; + + + if(cml["-f"])//uses a configuration file. YOu can create it from aruco_test application + TheTracker.loadParamsFromFile(cml("-f")); + else + TheTracker.setDictionary(cml("-d","ALL_DICTS"), 0.f); + + if (CamParam.isValid() && MarkerSize != -1) + { + CamParam.resize(image.size()); + TheTracker.setParams(CamParam, MarkerSize); + } + + int maxNFrames=video.get(CV_CAP_PROP_FRAME_COUNT)-1; + + char key=0; + int waitTime=10; + do{ + video.retrieve(image); + + timer.start(); + std::map> setTrackers = TheTracker.track(image); + TheTracker.estimatePose(); + timer.stop(); + + for(auto m:setTrackers) + std::cout << m.second->getMarker() << " W="<getTrustVal() << std::endl; + + std::cout <<"|@ Frame:"< +#include +#include +#include +#include +#include +#include +#include +#include "sglviewer.h" +#include "pcdwriter.cpp" + +#include "dcf/dcfmarkermaptracker.h" + +using namespace cv; +using namespace aruco; +using namespace std; + +string TheMarkerMapConfigFile; +float TheMarkerSize = -1; +VideoCapture TheVideoCapturer; +Mat TheInputImage; +CameraParameters TheCameraParameters; +MarkerMap TheMarkerMapConfig; + +DFCMarkerMapTracker TheTracker; + +struct TimerAvrg{std::vector times;size_t curr=0,n; std::chrono::high_resolution_clock::time_point begin,end; TimerAvrg(int _n=30){n=_n;times.reserve(n); }inline void start(){begin= std::chrono::high_resolution_clock::now(); }inline void stop(){end= std::chrono::high_resolution_clock::now();double duration=double(std::chrono::duration_cast(end-begin).count())*1e-6;if ( times.size()=times.size()) curr=0;}}double getAvrg(){double sum=0;for(auto t:times) sum+=t;return sum/double(times.size());}}; +TimerAvrg timer; + +int waitTime = 0; +std::map frame_pose_map; // set of poses and the frames they were detected +sgl_OpenCV_Viewer Viewer; +class CmdLineParser +{ + int argc;char** argv;public: + CmdLineParser(int _argc, char** _argv): argc(_argc), argv(_argv){} + //is the param? + bool operator[](string param) + {int idx = -1; for (int i = 0; i < argc && idx == -1; i++)if (string(argv[i]) == param) idx = i;return (idx != -1); } + //return the value of a param using a default value if it is not present + string operator()(string param, string defvalue = "-1"){int idx = -1;for (int i = 0; i < argc && idx == -1; i++)if (string(argv[i]) == param) idx = i;if (idx == -1) return defvalue;else return (argv[idx + 1]);} +}; + +void savePCDFile(string fpath, const aruco::MarkerMap& ms, + const std::map frame_pose_map); +void savePosesToFile(string filename, const std::map& fmp); + + + +/************************************ + * + * + * + * + ************************************/ +int main(int argc, char** argv) +{ + try + { + CmdLineParser cml(argc, argv); + if (argc < 4 || cml["-h"]) + { + cerr << "Invalid number of arguments" << endl; + cerr << "Usage: (in.avi|live[:camera_index(e.g 0 or 1)])) markersetconfig.yml camera_intrinsics.yml [optional_arguments] " + "\n\t[-s marker_size] \n\t[-pcd out_pcd_file_with_camera_poses] \n\t[-poses out_file_with_poses] " + "\n\t[-f arucoConfig.yml: Loads the detector configuration from file ] " + << endl; + return 0; + } + + TheMarkerMapConfig.readFromFile(argv[2]); + + TheMarkerMapConfigFile = argv[2]; + TheMarkerSize = stof(cml("-s", "1")); + // read from camera or from file + string TheInputVideo=string(argv[1]); + if ( TheInputVideo.find( "live")!=std::string::npos) + { + int vIdx = 0; + // check if the :idx is here + char cad[100]; + if (TheInputVideo.find(":") != string::npos) + { + std::replace(TheInputVideo.begin(), TheInputVideo.end(), ':', ' '); + sscanf(TheInputVideo.c_str(), "%s %d", cad, &vIdx); + } + cout << "Opening camera index " << vIdx << endl; + TheVideoCapturer.open(vIdx); + waitTime = 10; + } + else + TheVideoCapturer.open(argv[1]); // check video is open + if (!TheVideoCapturer.isOpened()) + throw std::runtime_error("Could not open video"); + + // read first image to get the dimensions + TheVideoCapturer >> TheInputImage; + + // read camera parameters if passed + TheCameraParameters.readFromXMLFile(argv[3]); + TheCameraParameters.resize(TheInputImage.size()); + + // dictionary + TheTracker.setDictionary( TheMarkerMapConfig.getDictionary()); + + // set config parameters + if (cml["-f"]) + TheTracker.loadParamsFromFile(cml("-f")); + + // prepare the pose tracker if possible + // if the camera parameers are avaiable, and the markerset can be expressed in meters, then go + if (TheMarkerMapConfig.isExpressedInPixels() && TheMarkerSize > 0) + TheMarkerMapConfig = TheMarkerMapConfig.convertToMeters(TheMarkerSize); + + if (TheCameraParameters.isValid() && TheMarkerMapConfig.isExpressedInMeters()){ + TheTracker.setParams(TheCameraParameters, TheMarkerMapConfig); + TheMarkerSize=cv::norm(TheMarkerMapConfig[0][0]- TheMarkerMapConfig[0][1]); + } + + // Create gui + Viewer.setParams(1.5,1280,960,"map_viewer",TheMarkerSize); + + char key = 0; + // capture until press ESC or until the end of the video + //cout << "Press 's' to start/stop video" << endl; + + int frameid =std::stoi(cml("-fstart", "0")); + int frameStop =std::stoi(cml("-fstop", "-1")); + + TheVideoCapturer.set(CV_CAP_PROP_POS_FRAMES,frameid); + + int maxNFrames=TheVideoCapturer.get(CV_CAP_PROP_FRAME_COUNT)-1; + + + TheVideoCapturer.set(CV_CAP_PROP_POS_FRAMES,frameid); + do + { + if (frameStop == frameid) break; + + TheVideoCapturer.retrieve(TheInputImage); + + timer.start(); + // Detection and tracking of the markers + TheTracker.track(TheInputImage); + bool pose = TheTracker.estimatePose(); + timer.stop(); + + std::cout <<"|@ Frame:"<(i,j); + + //now, move to a angle axis + Eigen::Quaternionf q(e_r33); + qx=q.x(); + qy=q.y(); + qz=q.z(); + qw=q.w(); + + tx=M.at(0,3); + ty=M.at(1,3); + tz=M.at(2,3); +} + +void savePosesToFile(string filename, const std::map& fmp) +{ + std::ofstream file(filename); + double qx, qy, qz, qw, tx, ty, tz; + for (auto frame : fmp) + { + if (!frame.second.empty()) + { + cv::Mat minv=frame.second.inv(); + getQuaternionAndTranslationfromMatrix44(minv, qx, qy, qz, qw, tx, ty, tz); + file << frame.first << " " << tx << " " << ty << " " << tz << " " << qx << " " << qy << " " << qz << " " + << qw << endl; + } + } +} diff --git a/thirdparty/aruco-3.1.12/utils_dcf/pcdwriter.cpp b/thirdparty/aruco-3.1.12/utils_dcf/pcdwriter.cpp new file mode 100644 index 0000000..2f956e6 --- /dev/null +++ b/thirdparty/aruco-3.1.12/utils_dcf/pcdwriter.cpp @@ -0,0 +1,424 @@ +/** +Copyright 2017 Rafael Muñoz Salinas. All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are +permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this list of + conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright notice, this list + of conditions and the following disclaimer in the documentation and/or other materials + provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY Rafael Muñoz Salinas ''AS IS'' AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL Rafael Muñoz Salinas OR +CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +The views and conclusions contained in the software and documentation are those of the +authors and should not be interpreted as representing official policies, either expressed +or implied, of Rafael Muñoz Salinas. +*/ + +#include "markermap.h" +#include +#include +#include +#include +using namespace std; + +void getRTfromMatrix44(const cv::Mat& M, cv::Mat& R, cv::Mat& T) +{ + assert(M.cols == M.rows && M.cols == 4); + assert(M.type() == CV_32F || M.type() == CV_64F); + // extract the rotation part + cv::Mat r33 = cv::Mat(M, cv::Rect(0, 0, 3, 3)); + cv::SVD svd(r33); + cv::Mat Rpure = svd.u * svd.vt; + cv::Rodrigues(Rpure, R); + T.create(1, 3, M.type()); + if (M.type() == CV_32F) + for (int i = 0; i < 3; i++) + T.ptr(0)[i] = M.at(i, 3); + else + for (int i = 0; i < 3; i++) + T.ptr(0)[i] = M.at(i, 3); +} + +/********************** + * + * + **********************/ +struct Quaternion +{ + Quaternion(float q0, float q1, float q2, float q3) + { + q[0] = q0; + q[1] = q1; + q[2] = q2; + q[3] = q3; + } + cv::Mat getRotation() const + { + cv::Mat R(3, 3, CV_32F); + R.at(0, 0) = q[0] * q[0] + q[1] * q[1] - q[2] * q[2] - q[3] * q[3]; + R.at(0, 1) = 2.f * (q[1] * q[2] - q[0] * q[3]); + R.at(0, 2) = 2.f * (q[1] * q[3] + q[0] * q[2]); + + R.at(1, 0) = 2.f * (q[1] * q[2] + q[0] * q[3]); + R.at(1, 1) = q[0] * q[0] + q[2] * q[2] - q[1] * q[1] - q[3] * q[3]; + R.at(1, 2) = 2.f * (q[2] * q[3] - q[0] * q[1]); + + R.at(2, 0) = 2.f * (q[1] * q[3] - q[0] * q[2]); + R.at(2, 1) = 2.f * (q[2] * q[3] + q[0] * q[1]); + R.at(2, 2) = q[0] * q[0] + q[3] * q[3] - q[1] * q[1] - q[2] * q[2]; + return R; + } + float q[4]; +}; + +/********************** + * + * + **********************/ +float rigidBodyTransformation_Horn1987(cv::Mat& S, cv::Mat& M, cv::Mat& RT_4x4) +{ + assert(S.total() == M.total()); + assert(S.type() == M.type()); + assert(S.rows > S.cols && M.rows > M.cols); + + cv::Mat _s, _m; + S.convertTo(_s, CV_32F); + M.convertTo(_m, CV_32F); + _s = _s.reshape(1); + _m = _m.reshape(1); + cv::Mat Mu_s = cv::Mat::zeros(1, 3, CV_32F); + cv::Mat Mu_m = cv::Mat::zeros(1, 3, CV_32F); + // cout<<_s<(0)[i] /= float(_s.rows); + Mu_m.ptr(0)[i] /= float(_m.rows); + } + + // cout<<"Mu_s="<(0, 0), eigenvectors.at(0, 1), eigenvectors.at(0, 2), + eigenvectors.at(0, 3)); + cv::Mat RR = rot.getRotation(); + // cout<<"RESULT="< +#include +#include +#include +#include +#include +//Simplest graphics library +//Version 1.0.1 +//Author. Rafael Muñoz Salinas (rmsalinas@uco.es) 2017 + +//Extremmely simple yet efficient device independent graphic library for points and lines +namespace sgl{ +struct Point3{ + inline Point3( ){ } + inline Point3(float X,float Y,float Z){x=X;y=Y;z=Z;} + inline float norm()const{return sqrt( (x*x)+(y*y)+(z*z));} + inline Point3 operator-(const Point3 &p)const{return Point3( x-p.x, y-p.y,z-p.z);} + inline Point3 operator+(const Point3 &p)const{return Point3( x+p.x, y+p.y,z+p.z);} + inline Point3 operator*(float v)const{return Point3( x*v,y*v,z*v);} + float x,y,z; + friend std::ostream & operator<<(std::ostream &str, const Point3 &p){ + str<<"["< modelMatrices; + Matrix44 _cameraMatrix; + Matrix44 TM;//transform from global coordinates to camera ones + Color *colorbuffer=0; + bool mustFreeBuffer=true; + + float _focal; + int _width,_height; + +public: + Scene(){ + modelMatrices.resize(1); + modelMatrices[0]= Matrix44();//set identity + TM=_viewMatrix; + } + + ~Scene(){if (mustFreeBuffer&& colorbuffer) delete colorbuffer;} + + //sets external buffer + + inline void setCameraParams(float focal,int width,int height,void *external_buffer=0){ + _focal=focal; + _width=width; + _height=height; + _cameraMatrix(0,0)=_focal*float(_width); + _cameraMatrix(1,1)=_focal*float(_height); + _cameraMatrix(0,2)=float(_width)/2.; + _cameraMatrix(1,2)=float(_height)/2.; + + + if (colorbuffer!=0 && mustFreeBuffer ) { + delete colorbuffer; + colorbuffer=0; + } + + if(external_buffer!=0){ + colorbuffer=(Color*)external_buffer; + mustFreeBuffer=false; + } + else{ + colorbuffer=new Color[_width*_height*3]; + mustFreeBuffer=false; + } + } + //this will erase the transform matrix + inline void setViewMatrix(const Matrix44&vp){_viewMatrix=vp; TM=_viewMatrix*modelMatrices.back();} + + inline void setModelMatrix(const Matrix44 &M=Matrix44()){ + modelMatrices.resize(1); + modelMatrices[0]=M; + TM=_viewMatrix*modelMatrices.back(); + } + inline void pushModelMatrix(const Matrix44 &M=Matrix44()){ + modelMatrices.push_back(modelMatrices.back()*M); + TM=_viewMatrix*modelMatrices.back(); + } + inline void popModelMatrix(){ + if (modelMatrices.size()>1){ + modelMatrices.pop_back(); + TM=_viewMatrix*modelMatrices.back(); + } + } + + + + inline void clear(const Color &backgroundColor){ + + const int size=_width*_height; + for(int i=0;i &vp,const Color &c,int size=1){ + (void)size; + for(size_t i=0;i0){ + pres=_cameraMatrix*pres; + float invz=1./pres.z; + pres.x*=invz;pres.y*=invz; + if ( pres.x>= 0 && pres.x<_width && pres.y>=0 && pres.y<_height) + colorbuffer[int(pres.y)*_width+int(pres.x)]=c; + } + } + + } + + inline void drawPoints(const std::vector &vp,const std::vector &vc,int size=1){ + (void)size; + auto M=_cameraMatrix*TM; + for(size_t i=0;i0){ + pres=_cameraMatrix*pres; + float invz=1./pres.z; + pres.x*=invz;pres.y*=invz; + if ( pres.x>= 0 && pres.x<_width && pres.y>=0 && pres.y<_height) + colorbuffer[int(pres.y)*_width+int(pres.x)]=vc[i]; + } + } + } + inline void drawPoint(const Point3 *p,const Color &c,int size=1){ + Point2 pres; + Point3 p3d=TM*(*p); + if ( p3d.z<0 ) return; + if ( project(p3d,pres)){ + switch (size) { + case 1: + if ( pres.x>=0 && pres.x<_width && pres.y>=0 && pres.y<_height){ + colorbuffer[int(pres.y)*_width+int(pres.x)]=c; + } + break; + case 2: + if ( pres.x> 0 && pres.x<_width-1 && pres.y>0 && pres.y<_height-1){ + int stx=(int(pres.x)-1); + int sty=(int(pres.y)-1)*_width; + colorbuffer[sty+stx]=c;colorbuffer[sty+stx+1]=c;colorbuffer[sty+stx+2]=c; + sty=(int(pres.y))*_width; + colorbuffer[sty+stx]=c;colorbuffer[sty+stx+1]=c;colorbuffer[sty+stx+2]=c; + sty=(int(pres.y+1))*_width; + colorbuffer[sty+stx]=c;colorbuffer[sty+stx+1]=c;colorbuffer[sty+stx+2]=c; + }break; + + } + } + (void)size; + } + + inline void drawLine(const Point3 &p1,const Point3 &p2,const Color &color,int size=1){drawLine(&p1,&p2,color,size);} + inline void drawLine(const Point3 *p1,const Point3 *p2,const Color &color,int size=1){ + Point3 p1t=TM*(*p1); if ( p1t.z<0 ) return; + Point3 p2t=TM*(*p2); if(p2t.z<0) return;//check that both are in front of camera(otherwise, do not draw) + Point2 pr1,pr2; + if(! project(p1t,pr1))return; + if(! project(p2t,pr2))return; + drawline(pr1,pr2,color,size);//project line bweten projected points + } + + //returns the internal frame buffer + inline unsigned char* getBuffer()const{return (unsigned char*)colorbuffer;} + + inline int getWidth()const{return _width;} + inline int getHeight()const{return _height;} +private: + + + inline bool project(const Point3 &p,Point2 &res){ + Point3 pres=_cameraMatrix*(p); + if(pres.z==0) return false; + float invz=1./pres.z; + res.x=invz*pres.x+0.5; res.y=invz*pres.y+0.5; + return true; + } + + //Bresenham's algorithm + + inline bool inLimits(int x,int y){ + if (x<0)return false; + if (y<0)return false; + if(x>=_width)return false; + if(y>=_height)return false; + return true; + } + + void drawline(Point2 start, Point2 end, const Color& color ,int size=1) + { + + + (void)size; + int x0=start.x,y0=start.y,x1=end.x,y1=end.y; + + if (!inLimits(x0,y0) && !inLimits(x1,y1) ) return; + int dx = abs(x1 - x0), dy = abs(y1 - y0); + int sx = (x0 < x1) ? 1 : -1, sy = (y0 < y1) ? 1 : -1; + int err = dx - dy; + while (true) + { + if(y0>=0 && x0>=0 && y0<_height && x0<_width) colorbuffer[y0*_width+x0]=color; + if (x0 == x1 && y0 == y1) return; + int e2 = (err << 1); + if (e2 > -dy){err -= dy;x0 += sx;} + if (e2 < dx){err += dx;y0 += sy;} + } + } +}; + +} + + +#endif diff --git a/thirdparty/aruco-3.1.12/utils_dcf/sglviewer.h b/thirdparty/aruco-3.1.12/utils_dcf/sglviewer.h new file mode 100644 index 0000000..3008219 --- /dev/null +++ b/thirdparty/aruco-3.1.12/utils_dcf/sglviewer.h @@ -0,0 +1,522 @@ +/** +Copyright 2017 Rafael Muñoz Salinas. All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are +permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this list of + conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright notice, this list + of conditions and the following disclaimer in the documentation and/or other materials + provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY Rafael Muñoz Salinas ''AS IS'' AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL Rafael Muñoz Salinas OR +CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +The views and conclusions contained in the software and documentation are those of the +authors and should not be interpreted as representing official policies, either expressed +or implied, of Rafael Muñoz Salinas. +*/ + + + +///--------------------------------------------------------------------------------------------- +#ifndef _SGL_OpenCV_VIewer_H +#define _SGL_OpenCV_VIewer_H +#include "sgl.h" +#include +#include +#include "markermap.h" +#include +#include +#include + namespace aruco{ + //Class using an opencv window to render and manipulate a sgl scene + class sgl_OpenCV_Viewer { + sgl::Scene _Scene; + std::string _wname; + float _f; + int _w,_h; + cv::Mat _imshow; + int mode=1;//mode 0:big 3d, 1 big image + float _subw_nsize=0.3; + bool showingHelp=false; + cv::Mat _cameraImage; + bool showNumbers=true; + aruco::MarkerMap _mmap; + float cameraSize=0.1; + std::map > marker_points; + bool canLeave=true; + cv::Mat _resizedInImage; + cv::Mat _camPose; + bool followCamera=false; + public: + + + sgl_OpenCV_Viewer(){ + + } + + + + void setParams(float f,int width,int height,std::string wname,float CameraSize=0.1){ + _imshow.create(height,width,CV_8UC3); + _f=f; + _w=width;_h=height; + _wname=wname; + cv::namedWindow(_wname,cv::WINDOW_NORMAL); + cv::resizeWindow(_wname,width,height); + cv::setMouseCallback(_wname, &sgl_OpenCV_Viewer::mouseCallBackFunc , this); + + cameraSize=CameraSize; + sgl::Matrix44 cam; + cam.translate({0,4,0}); + cam.rotateX(3.1415/2.); + _Scene.setViewMatrix(cam); + + } + + int show( aruco::MarkerMap &mmap,const cv::Mat &cameraPose,const cv::Mat &cameraImage,int waitKeyTime=0){ + _cameraImage=cameraImage; + _mmap=mmap; + + //set the marker points + for(auto m:mmap) + if(marker_points.count(m.id)==0) + marker_points[m.id]=getMarkerIdPcd(m,0.5); + + if (!cameraPose.empty()) _camPose=cameraPose.inv(); + else _camPose=cv::Mat(); + + //first creation of the image + + createImage(); + + + int k; + bool isUsedKey=false; + do{ + cv::imshow(_wname,_imshow); + k=cv::waitKey(waitKeyTime); + isUsedKey=true; +// if (k!=255) std::cout<& POrg, const std::vector& PDst, cv::Mat& RT_4x4); + + +private: + + std::vector getMarkerIdPcd(aruco::Marker3DInfo &minfo , float perct); + + struct mouseInfo{ + sgl::Point2 pos; + bool isTranslating=false,isZooming=false,isRotating=false; + }mi; + + + static void mouseCallBackFunc(int event, int x, int y, int flags, void* userdata){ + sgl_OpenCV_Viewer *Sv=(sgl_OpenCV_Viewer*)userdata; + bool redraw=false; + if ( event == cv::EVENT_LBUTTONDOWN ){ + Sv->mi.isRotating=Sv->mi.isTranslating=Sv->mi.isZooming=false; + if ( flags&cv::EVENT_FLAG_CTRLKEY) + Sv->mi.isZooming=true; + else if ( flags&cv::EVENT_FLAG_SHIFTKEY) Sv->mi.isTranslating=true; + else Sv->mi.isRotating=true; + } + else if ( event == cv::EVENT_MBUTTONDOWN ) Sv->mi.isTranslating=true; + else if ( event == cv::EVENT_LBUTTONUP ) { Sv->mi.isRotating=Sv->mi.isTranslating=Sv->mi.isZooming=false; + } + else if ( event == cv::EVENT_MBUTTONUP ) Sv->mi.isTranslating=false; + else if ( event == cv::EVENT_MOUSEMOVE ) + { + sgl::Point2 dif(Sv-> mi.pos.x-x,Sv-> mi.pos.y-y); + sgl::Matrix44 tm;//=Sv->_Scene.getTransformMatrix(); + + if (Sv->mi.isRotating){ + tm.rotateX(-float(dif.y)/100); + tm.rotateZ(-float(dif.x)/100); + } + else if (Sv->mi.isZooming){ + auto vp=Sv->_Scene.getViewMatrix(); + vp.translate({0,0, float(-dif.y*0.01)}); + Sv->_Scene.setViewMatrix(vp); + redraw=true; + } + else if (Sv->mi.isTranslating){ + auto vp=Sv->_Scene.getViewMatrix(); + vp.translate(sgl::Point3(float(-dif.x)/100, float(-dif.y)/100,0.f)); + Sv->_Scene.setViewMatrix(vp); + redraw=true; + } + if (Sv->mi.isRotating||Sv->mi.isZooming ||Sv->mi.isTranslating) { + sgl::Matrix44 res= tm*Sv->_Scene.getModelMatrix() ; + Sv->_Scene.setModelMatrix(res); + redraw=true; + } + } + Sv->mi.pos=sgl::Point2(x,y); + if (redraw) { + Sv->updateImage(); + cv::imshow(Sv->_wname,Sv->_imshow); + } + + } + + + +}; +void sgl_OpenCV_Viewer::drawScene(){ + auto drawMarker=[](sgl::Scene &Scn, const aruco::Marker3DInfo &m , int width){ + const auto &points= m.points; + Scn.drawLine((sgl::Point3*)&points[0],(sgl::Point3*)&points[1],{0,0,255},width); + Scn.drawLine((sgl::Point3*)&points[1],(sgl::Point3*)&points[2],{0,255,0},width); + Scn.drawLine((sgl::Point3*)&points[2],(sgl::Point3*)&points[3],{255,0,0},width); + Scn.drawLine((sgl::Point3*)&points[3],(sgl::Point3*)&points[0],{155,0,155},width); + }; + + + auto drawPyramid=[](sgl::Scene &Scn,float w,float h,float z,const sgl::Color &color,int width){ + Scn.drawLine( {0,0,0}, {w,h,z},color,width); + Scn.drawLine( {0,0,0}, {w,-h,z},color,width); + Scn.drawLine( {0,0,0}, {-w,-h,z},color,width); + Scn.drawLine( {0,0,0}, {-w,h,z},color,width); + Scn.drawLine( {w,h,z}, {w,-h,z},color,width); + Scn.drawLine( {-w,h,z}, {-w,-h,z},color,width); + Scn.drawLine( {-w,h,z}, {w,h,z},color,width); + Scn.drawLine( {-w,-h,z}, {w,-h,z},color,width); + }; + + _Scene.clear(sgl::Color(255,255,255)); + if(followCamera && !_camPose.empty()){ + cv::Mat aa=_camPose.inv(); + _Scene.setViewMatrix(sgl::Matrix44(aa.ptr(0))); + _Scene.setModelMatrix(); + } + + + for(auto m:_mmap){ + drawMarker(_Scene,m,1); + if(showNumbers) + _Scene.drawPoints(marker_points[m.id],{125,0,255},1); + } + if (!followCamera){ + + //draw camera if it is possible + if (!_camPose.empty()){ + _Scene.pushModelMatrix(sgl::Matrix44(_camPose.ptr(0))); + drawPyramid(_Scene,cameraSize,cameraSize/2,cameraSize/2,{0,0,255},1); + _Scene.popModelMatrix(); + } +} + +} + +void sgl_OpenCV_Viewer::printHelp(){ + + //print help commands + if(!showingHelp) + cv::putText(_imshow, "'h' showhelp", cv::Point(30,20), cv::FONT_HERSHEY_COMPLEX_SMALL, 0.5, cv::Scalar(200,200,250), 1); + else{ + cv::putText(_imshow, "'h' hide help", cv::Point(30,20), cv::FONT_HERSHEY_COMPLEX_SMALL, 0.5, cv::Scalar(200,200,250), 1); + cv::putText(_imshow, "'s' start/stop video", cv::Point(30,40), cv::FONT_HERSHEY_COMPLEX_SMALL, 0.5, cv::Scalar(200,200,250), 1); + cv::putText(_imshow, "'m' change view mode", cv::Point(30,60), cv::FONT_HERSHEY_COMPLEX_SMALL, 0.5, cv::Scalar(200,200,250), 1); + cv::putText(_imshow, "'MOUSE[+SHIFT|CTRL]' change view", cv::Point(30,80), cv::FONT_HERSHEY_COMPLEX_SMALL, 0.5, cv::Scalar(200,200,250), 1); + cv::putText(_imshow, "'n' show/hide marker numbers", cv::Point(30,100), cv::FONT_HERSHEY_COMPLEX_SMALL, 0.5, cv::Scalar(200,200,250), 1); + cv::putText(_imshow, "'c' camera mode on/off", cv::Point(30,120), cv::FONT_HERSHEY_COMPLEX_SMALL, 0.5, cv::Scalar(200,200,250), 1); + + } +} + +void sgl_OpenCV_Viewer::createImage( ) { + + + cv::Size subrectsize(_w*_subw_nsize,_h*_subw_nsize); + if (mode==0) _Scene.setCameraParams(_f,_w,_h,_imshow.ptr(0)); + else _Scene.setCameraParams(_f,subrectsize.width,subrectsize.height); + + drawScene(); + + + + + + //copy 3d image and color image + if (mode==0){ + if (!_cameraImage.empty()){ + auto subrect=_imshow(cv::Range(_h-subrectsize.height,_h),cv::Range(_w-subrectsize.width,_w)); + cv::resize( _cameraImage,_resizedInImage,subrectsize); + _resizedInImage.copyTo(subrect); + } + } + else{ + if (!_cameraImage.empty()){ + cv::resize( _cameraImage,_imshow, cv::Size(_w,_h)); + } + else _imshow.setTo(cv::Scalar::all(0)); + auto subrect=_imshow(cv::Range(_h-subrectsize.height,_h),cv::Range(_w-subrectsize.width,_w)); + cv::Mat im3d=cv::Mat(_Scene.getHeight(),_Scene.getWidth(),CV_8UC3,_Scene.getBuffer()); + im3d.copyTo(subrect); + } + + printHelp(); + +} + + +void sgl_OpenCV_Viewer::updateImage( ) { + + + + drawScene(); + cv::Size subrectsize(_w*_subw_nsize,_h*_subw_nsize); + auto subrect=_imshow(cv::Range(_h-subrectsize.height,_h),cv::Range(_w-subrectsize.width,_w)); + //copy 3d image and color image + if (mode==0){ + if (!_cameraImage.empty()) _resizedInImage.copyTo(subrect); + } + else{ + cv::Mat im3d=cv::Mat(_Scene.getHeight(),_Scene.getWidth(),CV_8UC3,_Scene.getBuffer()); + im3d.copyTo(subrect); + } + printHelp(); +} + +std::vector sgl_OpenCV_Viewer::getMarkerIdPcd(aruco::Marker3DInfo &minfo, float perct=1 ) +{ + auto mult=[](const cv::Mat& m, sgl::Point3 p) + { + assert(m.isContinuous()); + assert(m.type()==CV_32F); + sgl::Point3 res; + const float* ptr = m.ptr(0); + res.x = ptr[0] * p.x + ptr[1] * p.y + ptr[2] * p.z + ptr[3]; + res.y = ptr[4] * p.x + ptr[5] * p.y + ptr[6] * p.z + ptr[7]; + res.z = ptr[8] * p.x + ptr[9] * p.y + ptr[10] * p.z + ptr[11]; + return res; + }; + + int id = minfo.id; + // marker id as a set of points + std::string text = std::to_string(id); + int fontFace = cv::FONT_HERSHEY_SCRIPT_SIMPLEX; + double fontScale = 2; + int thickness = 3; + int baseline = 0; + float markerSize_2 = minfo.getMarkerSize() / 2.f; + cv::Size textSize = cv::getTextSize(text, fontFace, fontScale, thickness, &baseline); + cv::Mat img(textSize + cv::Size(0, baseline / 2), CV_8UC1, cv::Scalar::all(0)); + // center the text + // then put the text itself + cv::putText(img, text, cv::Point(0, textSize.height + baseline / 4), fontFace, fontScale, cv::Scalar::all(255), + thickness, 8); + // raster 2d points as 3d points + std::vector points_id; + for (int y = 0; y < img.rows; y++) + for (int x = 0; x < img.cols; x++) + if (img.at(y, x) != 0) + points_id.push_back(sgl::Point3( (float(x) / float(img.cols)) - 0.5f, (float(img.rows - y) / float(img.rows)) - 0.5f, 0.f)); + + // now,scale + for (auto& p : points_id) + p = p*markerSize_2; + // finally, translate + auto orgPoints=aruco::Marker::get3DPoints( minfo.getMarkerSize()); + cv::Mat RT44; + rigidBodyTransformation_Horn1987(orgPoints,minfo.points,RT44); + + for (auto& p : points_id) + p = mult(RT44, p); + + + //select only a fraction of them number of them + if(perct!=1){ + int n_used=float(points_id.size())*(perct); + std::random_shuffle(points_id.begin(),points_id.end()); + points_id.resize( n_used); + } + + return points_id; +} + + + +/********************** + * + * + **********************/ +float sgl_OpenCV_Viewer::rigidBodyTransformation_Horn1987(const std::vector& POrg, const std::vector& PDst, cv::Mat& RT_4x4) +{ + struct Quaternion + { + Quaternion(float q0, float q1, float q2, float q3) + { + q[0] = q0; + q[1] = q1; + q[2] = q2; + q[3] = q3; + } + cv::Mat getRotation() const + { + cv::Mat R(3, 3, CV_32F); + R.at(0, 0) = q[0] * q[0] + q[1] * q[1] - q[2] * q[2] - q[3] * q[3]; + R.at(0, 1) = 2.f * (q[1] * q[2] - q[0] * q[3]); + R.at(0, 2) = 2.f * (q[1] * q[3] + q[0] * q[2]); + + R.at(1, 0) = 2.f * (q[1] * q[2] + q[0] * q[3]); + R.at(1, 1) = q[0] * q[0] + q[2] * q[2] - q[1] * q[1] - q[3] * q[3]; + R.at(1, 2) = 2.f * (q[2] * q[3] - q[0] * q[1]); + + R.at(2, 0) = 2.f * (q[1] * q[3] - q[0] * q[2]); + R.at(2, 1) = 2.f * (q[2] * q[3] + q[0] * q[1]); + R.at(2, 2) = q[0] * q[0] + q[3] * q[3] - q[1] * q[1] - q[2] * q[2]; + return R; + } + float q[4]; + }; + assert(POrg.size()== PDst.size()); + + cv::Mat _org(POrg.size(),3,CV_32F,(float*)&POrg[0]); + cv::Mat _dst(PDst.size(),3,CV_32F,(float*)&PDst[0]); + + +// _org = _org.reshape(1); +// _dst = _dst.reshape(1); + cv::Mat Mu_s = cv::Mat::zeros(1, 3, CV_32F); + cv::Mat Mu_m = cv::Mat::zeros(1, 3, CV_32F); + // cout<<_s<(0)[i] /= float(_org.rows); + Mu_m.ptr(0)[i] /= float(_dst.rows); + } + + // cout<<"Mu_s="<(0, 0), eigenvectors.at(0, 1), eigenvectors.at(0, 2), + eigenvectors.at(0, 3)); + cv::Mat RR = rot.getRotation(); + // cout<<"RESULT="< +#include +#include + +using namespace std; + +class CmdLineParser +{ + int argc;char** argv;public: + CmdLineParser(int _argc, char** _argv): argc(_argc), argv(_argv){} + bool operator[](string param) + {int idx = -1; for (int i = 0; i < argc && idx == -1; i++)if (string(argv[i]) == param) idx = i;return (idx != -1); } + string operator()(string param, string defvalue = "-1"){int idx = -1;for (int i = 0; i < argc && idx == -1; i++)if (string(argv[i]) == param) idx = i;if (idx == -1) return defvalue;else return (argv[idx + 1]);} +}; + +std::vector> getRegionsConfig(string configuration){ + if (configuration.empty())return {}; + for(auto &c:configuration) if (c==',') c=' '; + stringstream sstr(configuration); + string markerConfig; + std::vector> n_k; + while(!sstr.eof()){ + if (sstr>>markerConfig) + { + int nVal, kVal; + if (sscanf(markerConfig.c_str(), "%d:%d", &nVal, &kVal) != 2) + { + cerr << "Incorrect N:K specification" << endl; + return {}; + } + + if(nVal <= kVal) + { + cerr << "Incorrect N:K specification. N should be > than K" << endl; + return {}; + } + + n_k.push_back(make_pair(nVal,kVal)); + } + } + + return n_k; +} + +using namespace std; +using namespace cv; + +int main(int argc, char** argv) +{ + try + { + CmdLineParser cml(argc, argv); + if (argc < 3 || cml["-h"]) + { + cerr << "Usage: fractal_config.yml " + "n(f1):k(f1),n(f2):k(f2),...,n(fm),k(fm) " + "[-s bitSize (For the last level, in px. Default: -1, normalized marker)>]" << endl; + + cerr << endl; + return -1; + } + + //n(f1):k(f1),n(f2):k(f2),...,n(fm),k(fm) + //Example fractal marker with 3 levels -> 10:8,14:10,6:0 + std::vector> regionsConfig; + regionsConfig = getRegionsConfig(argv[2]); + if(regionsConfig.size()<1) return -1; + + //bixSize (last level) + int bitSize = stoi(cml("-s", "-1")); + + //Create configuration + aruco::FractalMarkerSet fractalmarkerset; + fractalmarkerset.create(regionsConfig, bitSize); + + //Save configuration file + cv::FileStorage fs(argv[1], cv::FileStorage::WRITE); + fractalmarkerset.saveToFile(fs); + } + catch (std::exception& ex) + { + cout << ex.what() << endl; + } +} diff --git a/thirdparty/aruco-3.1.12/utils_fractal/fractal_pix2meters.cpp b/thirdparty/aruco-3.1.12/utils_fractal/fractal_pix2meters.cpp new file mode 100644 index 0000000..246b95e --- /dev/null +++ b/thirdparty/aruco-3.1.12/utils_fractal/fractal_pix2meters.cpp @@ -0,0 +1,28 @@ +// This program converts a boardconfiguration file expressed in pixel to another one expressed in meters +#include "fractallabelers/fractalmarkerset.h" +#include + +using namespace std; +using namespace aruco; +int main(int argc, char** argv) +{ + try + { + if (argc < 4) + { + cerr << "Usage: in_configuration.yml fractal_size(meters) out_configuration.yml" << endl; + return -1; + } + + FractalMarkerSet BInfo; + BInfo = FractalMarkerSet::load(argv[1]); + + //Save file + cv::FileStorage fs(argv[3], cv::FileStorage::WRITE); + BInfo.convertToMeters(static_cast(atof(argv[2]))).saveToFile(fs); + } + catch (std::exception& ex) + { + cout << ex.what() << endl; + } +} diff --git a/thirdparty/aruco-3.1.12/utils_fractal/fractal_print_marker.cpp b/thirdparty/aruco-3.1.12/utils_fractal/fractal_print_marker.cpp new file mode 100644 index 0000000..b731205 --- /dev/null +++ b/thirdparty/aruco-3.1.12/utils_fractal/fractal_print_marker.cpp @@ -0,0 +1,66 @@ +#include +#include +#include +#include + +using namespace cv; +using namespace std; + +// convinience command line parser +class CmdLineParser +{ + int argc; + char** argv; +public: + CmdLineParser(int _argc, char** _argv) + : argc(_argc) + , argv(_argv) + { + } + bool operator[](string param) + { + int idx = -1; + for (int i = 0; i < argc && idx == -1; i++) + if (string(argv[i]) == param) + idx = i; + return (idx != -1); + } + string operator()(string param, string defvalue = "-1") + { + int idx = -1; + for (int i = 0; i < argc && idx == -1; i++) + if (string(argv[i]) == param) + idx = i; + if (idx == -1) + return defvalue; + else + return (argv[idx + 1]); + } +}; + +int main(int argc, char** argv) +{ + try + { CmdLineParser cml(argc, argv); + + if (argc < 2) + { + cerr << "Usage: outfile.(jpg|png|ppm|bmp) [-c :FRACTAL_2L_6 default] [-bs:bitsize (smaller marker) 75 by default]" + << " [-noborder: removes the white border around the marker]" << endl; + cerr << "\tConfigurations: "; + for (auto config : aruco::FractalMarkerSet::getConfigurations()) + cerr << config << " "; + return -1; + } + + aruco::FractalMarkerSet fractalmarkerSet = aruco::FractalMarkerSet::load(cml("-c","FRACTAL_2L_6")); + int pixSize = std::stoi(cml("-bs", "75")); // pixel size each bit from smaller marker + + cv::Mat result = fractalmarkerSet.getFractalMarkerImage(pixSize,!cml["-noborder"]); + cv::imwrite(argv[1], result); + } + catch (std::exception& ex) + { + cout << ex.what() << endl; + } +} diff --git a/thirdparty/aruco-3.1.12/utils_fractal/fractal_tracker.cpp b/thirdparty/aruco-3.1.12/utils_fractal/fractal_tracker.cpp new file mode 100644 index 0000000..76ff7af --- /dev/null +++ b/thirdparty/aruco-3.1.12/utils_fractal/fractal_tracker.cpp @@ -0,0 +1,133 @@ +#include "cvdrawingutils.h" +#include +#include +#include +#include + +#include "fractaldetector.h" +#include "aruco_cvversioning.h" + +using namespace std; +using namespace cv; +using namespace aruco; +struct TimerAvrg{std::vector times;size_t curr=0,n; std::chrono::high_resolution_clock::time_point begin,end; TimerAvrg(int _n=30){n=_n;times.reserve(n); }inline void start(){begin= std::chrono::high_resolution_clock::now(); }inline void stop(){end= std::chrono::high_resolution_clock::now();double duration=double(std::chrono::duration_cast(end-begin).count())*1e-6;if ( times.size()=times.size()) curr=0;}}double getAvrg(){double sum=0;for(auto t:times) sum+=t;return sum/double(times.size());}}; +static TimerAvrg Tdetect, Tpose; + +cv::Mat __resize(const cv::Mat& in, int width) +{ + if (in.size().width <= width) + return in; + float yf = float(width) / float(in.size().width); + cv::Mat im2; + cv::resize(in, im2, cv::Size(width, static_cast(in.size().height * yf))); + return im2; +} + +// class for parsing command line +class CmdLineParser{int argc;char** argv;public:CmdLineParser(int _argc, char** _argv): argc(_argc), argv(_argv){} bool operator[](string param) {int idx = -1; for (int i = 0; i < argc && idx == -1; i++)if (string(argv[i]) == param)idx = i;return (idx != -1);} string operator()(string param, string defvalue = "-1") {int idx = -1;for (int i = 0; i < argc && idx == -1; i++)if (string(argv[i]) == param)idx = i;if (idx == -1)return defvalue;else return (argv[idx + 1]);}}; + +int main(int argc, char** argv) +{ + try + { + CmdLineParser cml(argc, argv); + if (argc < 2 || cml["-h"]) + { + cerr << "Usage: (video.avi|live[:index]) [-s fractalSize] [-cam cameraParams.yml] [-c :FRACTAL_2L_6 default]" << endl; + cerr << "\tConfigurations: "; + for (auto config : aruco::FractalMarkerSet::getConfigurations()) + cerr << config << " "; + return 0; + } + + aruco::CameraParameters CamParam; + + cv::Mat InImage; + // Open input and read image + VideoCapture vreader; + bool isVideo=false; + + if(string(argv[1]).find("live")==std::string::npos){ + vreader.open(argv[1]); + isVideo=true; + } + else{ + string livestr=argv[1]; + for(auto &c:livestr)if(c==':')c=' '; + stringstream sstr;sstr<>aux>>n; + vreader.open(n); + if ( vreader.get(CV_CAP_PROP_FRAME_COUNT)>=2) isVideo=true; + } + + + if (vreader.isOpened()) + vreader >> InImage; + else + { + cerr << "Could not open input" << endl; + return -1; + } + + // read camera parameters if passed + if (cml["-cam"]) + CamParam.readFromXMLFile(cml("-cam")); + + // read marker size + float MarkerSize = std::stof(cml("-s", "-1")); + + FractalDetector FDetector; + FDetector.setConfiguration(cml("-c","FRACTAL_2L_6")); + + if (CamParam.isValid()) + { + CamParam.resize(InImage.size()); + FDetector.setParams(CamParam, MarkerSize); + } + + int frameId = 0; + char key = 0; + int waitTime=10; + do + { + std::cout << "\r\rFrameId: " << frameId++<(0,0),2) + pow(tvec.at(1,0), 2) + + pow(tvec.at(2,0),2)); + std::cout << "Distance to fractal marker: " << Z << " meters. "<< std::endl; + FDetector.draw3d(InImage); //3d + } + else + FDetector.draw2d(InImage); //Ok, show me at least the inner corners! + + imshow("in", __resize(InImage, 1800)); + key = cv::waitKey(waitTime); // wait for key to be pressed + if (key == 's') + waitTime = waitTime == 0 ? 10 : 0; + + } while (key != 27 && vreader.grab()); + } + catch (std::exception& ex) + { + cout << "Exception :" << ex.what() << endl; + } +} diff --git a/thirdparty/aruco-3.1.12/utils_gl/CMakeLists.txt b/thirdparty/aruco-3.1.12/utils_gl/CMakeLists.txt new file mode 100644 index 0000000..e9676e0 --- /dev/null +++ b/thirdparty/aruco-3.1.12/utils_gl/CMakeLists.txt @@ -0,0 +1,11 @@ +INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/src) +add_executable(aruco_test_gl aruco_test_gl.cpp) +add_executable(aruco_test_markermap_gl aruco_test_markermap_gl.cpp) + +target_link_libraries(aruco_test_gl aruco ${OPENGL_LIBRARIES} ${GLUT_glut_LIBRARY} opencv_imgproc opencv_highgui opencv_videoio) +target_link_libraries(aruco_test_markermap_gl aruco ${OPENGL_LIBRARIES} ${GLUT_glut_LIBRARY} opencv_calib3d) + +#add_executable(aruco_test_board_gl_mask aruco_test_board_gl_mask.cpp) +#target_link_libraries(aruco_test_board_gl_mask ${OPENGL_LIBRARIES}) + +install(TARGETS aruco_test_gl aruco_test_markermap_gl RUNTIME DESTINATION bin) diff --git a/thirdparty/aruco-3.1.12/utils_gl/aruco_test_board_gl_mask.cpp b/thirdparty/aruco-3.1.12/utils_gl/aruco_test_board_gl_mask.cpp new file mode 100644 index 0000000..4eba858 --- /dev/null +++ b/thirdparty/aruco-3.1.12/utils_gl/aruco_test_board_gl_mask.cpp @@ -0,0 +1,396 @@ +/***************************** +Copyright 2011 Rafael Muñoz Salinas. All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are +permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this list of + conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright notice, this list + of conditions and the following disclaimer in the documentation and/or other materials + provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY Rafael Muñoz Salinas ''AS IS'' AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL Rafael Muñoz Salinas OR +CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +The views and conclusions contained in the software and documentation are those of the +authors and should not be interpreted as representing official policies, either expressed +or implied, of Rafael Muñoz Salinas. +********************************/ +#include +#include +#include +#ifdef __APPLE__ +#include +#elif _MSC_VER +//http://social.msdn.microsoft.com/Forums/eu/vcgeneral/thread/7d6e6fa5-afc2-4370-9a1f-991a76ccb5b7 +#include +#include +#include +#else +#include +#include +#endif + +#include +#include +#include +#include "aruco.h" +#include "markermap.h" + +void __glGetModelViewMatrix(double modelview_matrix[16],const cv::Mat &Rvec,const cv::Mat &Tvec) throw(cv::Exception) ; +using namespace cv; +using namespace aruco; + + bool The3DInfoAvailable=false; +float TheMarkerSize=-1; +MarkerDetector MDetector; +VideoCapture TheVideoCapturer; +vector TheMarkers; +MarkerDetector TheMarkerDetector; +MarkerMapPoseTracker MMPoseTracker; +MarkerMap TheMMConfig; +Mat TheInputImage,TheUndInputImage,TheResizedImage,TheMask; +CameraParameters TheCameraParams; +Size TheGlWindowSize; +bool TheCaptureFlag=true; +void vDrawScene(); +void vIdle(); +void vResize( GLsizei iWidth, GLsizei iHeight ); +void vMouse(int b,int s,int x,int y); + + + +/************************************ + * + * + * + * + ************************************/ + +int main(int argc,char **argv) +{ + try + { + if (argc!=5) { + cerr<<"Invalid number of arguments"<>TheInputImage; + //read camera paramters if passed + TheCameraParams.readFromXMLFile(argv[3]); + TheCameraParams.resize( TheInputImage.size()); + + TheMarkerDetector.setThresholdParams(25,7); + + glutInit(&argc, argv); + glutInitWindowPosition( 0, 0); + glutInitWindowSize(TheInputImage.size().width,TheInputImage.size().height); + glutInitDisplayMode( GLUT_RGB | GLUT_DEPTH | GLUT_DOUBLE ); + glutCreateWindow( "ArUco" ); + glutDisplayFunc( vDrawScene ); + glutIdleFunc( vIdle ); + glutReshapeFunc( vResize ); + glutMouseFunc(vMouse); + glClearColor( 0.0, 0.0, 0.0, 1.0 ); + glClearDepth( 1.0 ); + + // these two are necesary for the mask effect + glEnable( GL_ALPHA_TEST ); + glAlphaFunc( GL_GREATER, 0.5 ); + + TheGlWindowSize=TheInputImage.size(); + vResize(TheGlWindowSize.width,TheGlWindowSize.height); + glutMainLoop(); + + } catch (std::exception &ex) + + { + cout<<"Exception :"<

_`$j6mSyxP076#Uz8=K-LqY$dR51oJXS5mVRg%|wV$6F{CI}cWdLM3TB8i% zFzMm4+YS@e#Ei~#`?1>Ag2GN6O|U;Q*4hO~6wk5Jcuc*NUo~Fu*tLixuT87ZVGBHe zmASY++MaySX51#Wm?6o+pnZUmqf#@-oRi=Kw1Bb=+yrSqlB_8v6U4b7wTHMekZUsp zf;n(iy7x7EBS<;088uas4R;PGlz1g;Eo^DcIGa{O4pVz?mJHHcd)Kf|DnMgV^;^7d zhoIn8acZgsP6MqCovasU+=rI51%-mRy-{_NQmcC@ANY+o1THAP?sK8YNR3w?JQ%4j zgDS1DeEZD1-0;AU9FnX+1Ce^@^Gp=&Hmbl|&H~PCXO^b<50X1{<2TL6c8=WohUn$=FlXH8$PX6U$K9U9`QPNkvl4KSxPksRewLYsyMNS+pWBMWFydWJs*YNPzg?j=#m zGVQ@0FW;M3wnHVo-cZ>O`=>D^!|SKJ$%4p}z5V&%#Ypkklk|fp^BEc?(7!NzI}@Ed z08&m&X2X!BjVEJAd(ajO###_NJt-gYL9g!I)M6$NG;)WaN4%Y|oqO+S3Oo$p!5agp zGDeUQF19E4qnJaAz_)|iwt$sy&OTI60yajZmAvV@4xZ8FZH8zKX*UYPnVWQpr!W7PI zl_39Tg86h8jDZVC)QCIy(7SRqTq?O$77K_jBYM$0-7kT`uACS(u||x8J4VPk-j39f z=swqK{YsY7bz*1e5X@eYjX68UoVeZCyMSo5x3gOfWhR%qImiKGq1`!vEZ zc(E9|4?Pt06%+=L)p$ezSN{UY5Kn#_re(|mca-3ah#?#zA7?pa_V0~8Mv~@qUyIB0 zaaM;TxS|o&(z8FwKOjm7r%uP@Hj%HHBwwTU##Uf5FfHk3n#RAuI z6*&;29jKL@AdiU&mg$g7Ekv1X-<0sEGsmU_`WN|fmwnjjwE>(yDEikxwqG=rL$;Qv zriqF{2BVo9O!NqKTHrruT)GFFdsat*?Udo(!=oAeFF0L{;uG)#R1i%HE*u+~9k{ky zU6ou=Ar{`MoC2d>VT^-hr>Z$1T+#9Kaoq+q17#*#`$qoSE5iuGLu2JapTW%rDIeOg zZ1BK01N`0m6OfN(Lnka6Lwi}pw)rLyrO_d<~iqMcB1 zXJDx-xY;utPuTi+cg;;}_?VkJ7HD9{(lN(heRnq9%cTH_MWh8;(-*bz>ZDcVLM+Vq zy4Otu-i>nnZ?ByGHG^7V-)3i9JTWqrhh2E1Q}3?e?e<#h?d29JP`&iX)M;HdEe}YG zs{_EV|Ln`gV=!<4(4K#={VS_ag#N`LG~idZ{~LN17tVE zHB2O1ZXTH?2EEoX0o6IPzy|J!!ttiOhc6F|oiTRL7Z%g&2!RrwM1_ZytSPY3d^5q3 zm~h%rOMb6lz|O*@`XCySB^*8jqL%6vJZh%bh#_xa)aKYg{Hs@<&a3>Pm*X$suB)e6 z`Q3w1>gs6q#C=(E{9U*B-NvPtlRfTq-j@Pzry%rM9QTi$BEPe@G3DWtyCkmhx`wr3Yo&ZXL+rwM1o-nFg z8j7DNiy2%j*C^_GL?BjKIw*O^JQ@P-uX1QJf?as@?Cgf(ch!AX2&;iE*rNnCRtpR= z$6O8GgoML|G11rqg}+nE&gEezr<42-rh(JJ2PvHd5A3rInqA6xsO{vwcyUqiz)N7s zI~yz=RxN|^&bvHv`31f|6>?kCrw|royl_ z5{1>GtqM;P+_H*t$!s#Xbwl7SSVWBPSRjwd6ob3Iu$A)hdoIEMW0*kuz+l0>2%pcO-|QM?BqGS@??J_#h34l`?PR9E*Q|A7|GvC zOh@rnu84n(f}rt&3@h{=pVaq;ImXB-jKyh9Z39{I2z7LkEm5*j5;IJH?#6DpB#vJX3{6 zGG~~r6%t4CDg`S*-I>qym<82@G zc4Fj$^A?$tY7v{np~y{Fr%w2#=Z4#OKPYU{b6|4Q1sBljwKRcKp zG8`Z^Su8GHNNp>pAc7kzlX|%^7TidxS@fF>(Pkz32dLTX(R+1$Esu>0^HoR~LI9By zu{ROK;CX|Nm!0q(%M&Sud%-Zxr4!&5>z1{v8jz5tBfb@vPo_plbDhxlN zGiY02>5Tk-zh0!FdIoeL%?xFD;t-qr*wN#`@L8=2Yw`<$wLWnTZBc8E5kQ<-#eg-q zKaM+b;$VeB6Vuwd4aC4XWJtIl&VSk$$(Nlt2)x-HNl5`9tr&KR$AhN$*EAU5jcJDt z&i*$lt;~^H&c*l1a)EX4O9vrG8-xeX;tpjsj0Zx%Bd%Rvh6arnPkHtz%5nQVTs1mgR{DmaG`@#v@Kr~! z&DUKj70T}g#lA#R6=aLwLCo;66b7AJzGy^g1T-=s7E8?>E)FTHP!AoBCQ<`OTFD`) z%~7Zx`ZJEo3K3?Vzb`2c~q)Fq#PN z+in+1HIfpL%H#vsq+%Y3Glb=e6ew-cda3o~i^YC$w z(IeY^Co(94NSD)0`1H45>qvK`CEf8)tPeNB`@pA^W*Q`B&JK)9zDDew`WV9Jn?P2X zM+Op022VR|J8V#{8lVC=B4j;lgw+p2f}mXd9U(;8oQQe|K_0K#r0cLrw`;9GeFAve z0pinmetey7=~aDPftW^$$~ItXMpq}SxEeJjy^w|Fgi=7;SL+gq_mz;ZlCwZX7$VXW?5I0Q8KA1K?L2p z%;iKwcu&n?#|Y;Hlnlcj;}<72a0g;l9ZMiT>28c>a&W!30CJjuHvjxY(QtU!*XcN& zd27Rj?Z9PNajgF?uUBn+cCD&~e5!sGYgL1~k3uoQgl{?bylCW$sv~Ot@B(s{aO>B3YUtf4ZIKk7Yf48Gl znM!Sz*AY6L-F(e>Hdm}`_?%+o3 zUjRMfz((cJDoIzmj$%^s;vnt`e97>S|iE5cDYL+C%fkn|$C zEE7I9{L};jBUJYQC?}y2V#&OQCqh<7b7T7$=eG8RZ$q>+^Nu%{$zc1Y;N!g~w{Zr$ zEf6@CEyuz-5=VRRQFZ=Sp*Xm0v5jx)Q}0S-Em(8fA|Y0o30 zGA4OB1~2N$r@QM4#>)>;e<^J+bj!6t32%1rr|E59l$owqZ;KTD=aA5x1UvHTD*h%m zbkat6kJ?;UE&ICOV~Hv>Ga|j;2hDLisi?R)c6-d4FiIICy*_MI&(n4(%2GPj);F5> z?Jx=Ut2$5Wu4%WdhthbBtEEZo0VkkuuF5vOPR$t->5W|fi4uwh{r+H|xU^F_7iW_A zSZf@`&~2~fgr*{_1v#cY+PcIlw-UOe^pAS7-4RuoW#+loR%$r#A3kWjW(5k{KwH;h z>)0Nzfy-VVF8wp+v|g)?DoQ6Cv{be@t-t0Y{&8Iwjm};_y}pD0+=fT)=;Ro7&qeXp zldNY(5%)m&arIrBN8lR%{WDZn*G{`rrV_$h3~9-b6?mUsnRl zMF36CeI+!n!};(c64vG(p6TSl@(vua{pl zq#OsSvENNaJy6XqT-3)%6rO`%ki}ZvX*K7lEb3zx=3eR~_m9@A`fZh2RJ7f|jf~tq z8dACQqgYd9wGefz1H*mtr@c4Dj#mDTA2p7?wQ<0k>@|>n9*apqIgtgH3!~zOt;td z@pV;2<_|l*hb~79)r`WX|mE;?wYP zHg*l>6zkl7qKQ9Iqzpe|dof0}a*ey+d)Sq}U}&^PYxw#hC#%oyLuX~ziBHJ>Imdxk zBFATQ4Jg9nvlpata-jj?vlHPiyP#8nad;vQev41qV^O*OXjF0-^QbC0Y)%`I$PN^y9PKp`#Z zW;?}#alDL6H)H~*Ki&kX#|cdrtcu|1qFimFe1`BPf4Rk;a-rN!GB013kK_M(p^mlH ziN8rr6iQ6^VssMhDncwEg~MGb-+a@QqY(N>fZgWtbh1=f#!ohbLwQgn~g0 zTHS0t=LJLT^d}Ggl-LH(@=tnA#(*r+0|kh=Yjgg*kKP6>7Tfv_G(f;c$q1W5Un@n3 zBe$%H=Zyj>+4bA#XGK-7@LRrVT8~Bk+pKJmOn?f_YOlA&$A1YwsVF6`^=yJ!&pA`f zC_13zC0$dj^bIN*eeP}{0s76QW`o`1;Q{@lA?!LDy1Q2xd z^r@U~GXW*$+E%kn=DVt9)bpTfRkag5d}`jCyl>i6qk>0qHxx0xpO+gaUIQM>HNzWP zQ}8|@p8f#6UWA$6Kxp8l=6@!RX>E6UL)YAT6YE2T2WkKoJe|R#$&~ig3}Zn7n(S;5 z{EbuepW#AXDEEU1om0g;i19-Q%msZ-1jCGr>H%-x7r{M~7uMYs3gOcnm2!;|-N6YK z=^)r0=X-+rYr6rb2Zb%$iuWWclXe6HkgqYl%Wzqn@dys?0{Nbnv^=XkYSph`^`Ks3 z77t30WqCfY6oQyOJ~uQ|^aJj%S`MU+T@)Hq(4`agT)|Mwe#l7lZF_^yN8R|J!e(wWy-2gzj9Q*G;2s;R_nv)jQFOjja#MFz4~;wdENFR z)s(i}a+~2wT&%HpkBa-njlcCiGm{NWp~fDd2<9P=ZPAmcQ*Fpqy_yij$- zd6=EM_2dg`0XoLsY(S3KHyf(Sb6l0{yAHmS#Z}mn?u&It_YG5D&dL_%KNPAUo(iu1 zh!Rq2Ng6V@YhCJuO^?cLXSbZ`G)Zi5#^jK%R~`wN*SD!^p<<8pLN-=(b|O2f8?X2> z`aeD~n|!Jn`|?NzGyVA@LE0{1%Yc%K7<@%a;p#GBL;OA|KO+q%VM2zi`1rWhvg{izImpY5u3MX!FYG z*|%(mk`3*l$t<=X(pTMXm_n_G$aNf^mLsbw_@uH#dn`A}!Ycn5;#g#{d+Uuhk$Dx4 z{O|*jNXbu8F?l?tT2JM5op@&}COuHh@mcgEE=?iH0XnVG_}ApJ`Qfl)czn0v>#PZL zH)2cHL^dx_qrT zPfD65V#j?{#L|39+Cd`DqiTI5&y)|O${98B>S|neS09yJ1vb0Z5;*gZ#CHrc(5F#^ zosq{c3w4mzcOeuXSTm(?_vRq7p87u$F2UMX)ajPOOW^3enKKvqE; z*n^sQRDRMhV0V~~qeNHV_h>leKvyn?@klj2munl*zVu4+CAiaYcp!$YDcpfV!K>K% zaM_s9&ikK$+bV4&-U!TX4tyHHbcG)l zzMXc>tznfRv9_n~F=XO+rge8vpOE;xT#GZfTZ7f^%VkRD{$}lyCTMZ)e95(X&~qX2 z?s={s+Jf@NN{7o0V>QHfz|=E0d$@ML=d`|Vo5^AST>rb0O(|`~!|=Z3e>xmp(W~@s z9;EW=T{Wr(M}|w)+*zp=i?7|rd?f?VB?(9(e?R9YItgY6C;Zy~8&ZnRT>#qE*w@GZ zEn9QR$fE5h@BLKnOFFiJVNoMtD2{1#zFY_9XqMOT?DTe9etzLBY}?ONU?kDa@FPwM zAT&DQvdOcT=G=jicz0!Q zLYQZ>Rr#}D)Z=MR+8qd{?mfYMuAtdD&9U>l#HYNdg;GE7HC2K&10Hl+w`l^=FfTQv zU@uAeL6g>FRAo_aFFS@{+xr>KLZJADV_jr<{tYbWLqeGeWJEHHez?w;gTg3b_LIi@ z@;9Y|9LZpdZ){i?&2Yy%9x?yBEhYDr3QqmF#cRD4afqsu8)=Ut6-yArT5<63=OIWK-Z_O~D5?0w}f`ErT2TDs*>Ytq;T=RC~% z3z5dBd9*`Hd8##YMT=|4j%84`i&KhbYN&ACztrK&?t;)!zI@~IPOp^CStV7_)lqyA zRO1Yjn9FP`)b!zo%{ZJTWoZtRq4z!Y$|_l}k|MY%s<>t3938>CO0gYh8vMOLe@I-e zLKD{bxSzFd0AeBPNs`1-+|^e8;i&6H`+*FSsD?;!F1 z>1zL03rgQQKnXw3#po4#Mj**gFW!J{`+MeNU8azD{{@NHGOaXcOUzJOwL+ff(ya#1 zYhcsz3cWtw&PF#Sqsp%Ukm=7jAr~!`^GpU!9=ewUa!W2AsqLK%=Xg?qFML=29Pmt%9bW$4epuWj|hNYa5Ms11rm@0=%ky83Kj_rodN67#D6A(n)ji{StCq0kHWrm`z7IP6wB{{m?N-&~lGd!PQAq3jN}9aw=keJ7P^IdbYmp_L zZ%l=anryG^@Ov6ztf0iAhOu;;VpynBA-Bq!zOm#h+r@%^pC0s`|7tLPdwMZGWhFvH zp;bFQS{>>mSuD2B5|45d(`wTC1M!c2j!;x26)Q`&u(sp;w!w`N=r!j0tNP5I-E1S4 znVYWi2E`VTVJ0i+@Z8Q#Ac0Zz!c~SX@mXKMf~OSgYVWDV=FG6i;U4J=TIjP9f$BC3tzy++{|K4}%m|pOgioZ?-+X@j&GQb7Oer#AIxiPc z`*S-kbgPK`W4KzGp_K19xJF#Al0Vlf z*HL&|HI)cT_~-0wql0vY7qwnUANPhsU1ju=%urADs#ebo+*yP3`5k3d@cWJAm>ZsX z#%$jP4#wFGd~#ME7rdmG-#KfAwC=OOJN`ZP973ed?cY>&GmIt;l$A9H2?2U_+EK~{ zi*nalqs|$H!zfmA-P$-mzDTzkxW>o)Z2~ zv!$y$tcje4Q}vl?FGF5AmdX#-h0u;Lg?%kT#->_zj@nz-9*FhswHII%)42fxw~>-B zLufXKlG*77@j8Qa8Vj`)2k!1%FH2;$!A;v|{j{0{B@c=>VsdLfBCaQXNoYN&{pU)W z#jZDd85F@}{mDe5A|w0N_O}Z9w}1R9Mjac`&RE5ZUY2M;%PSk&)w&L$R;*a|pTE8M z(e}B5L|WCE* z+*r~zB+*NyLCY&|mth39R1FmecKA`9DP<*GcolxD!9kXGxI!mGADU}-h$+@u*d<=K>rj{?m^Joy5xA|v~ z8u$#KmcaJ%CGvC8x64aR-&=PJWt?xMI4jx^aLrs&pq;_|MVGww~-Sp47a zZL*P4QG`*O?I3R@F@s~$QF$%|+8G5`HSXvs z&^pVqdN!+DmW($%a{XF&LO16!^c^|uy&=SV*d;2mdQ1n#`yw~F-}x5GVUv0wMn{2d z$eyx6Q7#lj(h}aC(E)U7-vh9%4{=QI^o|6rg}W$hB+E))yA0Gv`m~vcoiaq4K|FSZ zb8g61z6x6ZO(sA_K95?APh)s1U?HP|DBlnw_wJ867SfM!zuHjaeU_BX75NMk$tR%w ze07_R<6Q?b=sl^GYST72SKIA@kJ51C_VS}m6vM;0l3=FC+>DSbLt~4fane#ErgDfI z6KXy)WkIn?dR%34nKuHr&eJ|?Bap$J`Ex)W|6WROTJCBMIYaYLQ1cy#hT%l_qMbrNoAUoT$hXH;bNax-EfCFIKuw z(HNj!v$Ov3tBq(9&^krp^Gv^S+N1h(m_Rhf1@fiaY#kY3Is2oNE2(D$hr5cUPrJ#G zX!g=Vod22ki6@7UWd$3p*!v{4iXD2kNTsEGnE?(%t?QkNlphI|B%0xfnPc7=sC@>c z+4ynP`qalw`lc}taP_8X*QtexR0VyYg+#!sMNnY}+^;G*|Ep7-5EoK+zxEgI4gMj}Ooyol-g%98Kj>C1H%!Ht;DA+Ig{&cjYi?A$+p_8nW|nUn?OTQUV;P5)Eg{p{gj zhrJXI&VP!y|NHW8YWn{NhL!(O-u?d$<}j(hcTeURkAVUJYNT1SAL%^b_vr-x4=%TCVfMnjmv8uggLPyFR*Z(OhcLu7%{7)^-~EY0 z-?`%w`rU%@fvWN;9cC9u?2oGDFzy_P4`I0oK^-q)pBv}a%R?GSk3}|h0&?&%f6)_l z%d`#RD+)Kk#HXKxz23|5vpjW6fFAvg9A+u-jnKy>e|j3K#QIc#HEEzXE%WH7nV^-{ zfKOD&s=MAYGvw``8DIZk6PYWeTlvF*9xY9!P>+SyL1bm=2dM$l* zc)L7z0{VO0>t28T96wpzZ z>H_R0sQ7dOHUv@TVS}@e0G%J(bbZkJwnRX^vjl$gwA^9u(|uk)nn1Aq`R(wJ4PV7+ zMnHB5jqz}pJH4jC*0*M>?-myf!-oL&VTXx##;kwa9^LgGz83i{GxH*PV=;|V4SDw^ z>K<~;cj|AG?23WR$RmTiHy8W3L5lCL*4*#;Rb0(FzwceVABWtds;N(3#O9%HJ{Vgf zU&Sk!J+*uu)YM_kkQ4h&$$pR)@MkMpDQJy!-et!m-$ZiTz`M41V270C8ReH%U$M7I zUvq1nJI)KEPnqns?faioUX@fkC)V9Hp6~{i>-oE^Yz^}GwW)2P4UvFXM8c{eJ0no<9R!ptsC!TC%?be3`F zRXEpp8i$KxpFX=2VII0;{h;ueT>Yn!#^y1Oa_o*fuQqS5cJI$q9~HybPidiwry+~) z-xu9|mA0KtZ)59^q$!jfFKYO^(9sbtEoQ69%AOr+FK+HbrNzhE)-9Ht@9E`v=ffrO z_{m3$fA@K_yYiD3>TK&Yy#y}4KyDq*zi%ZHt=>skUr|`Qa>ph~xD@;D|I#)Q+GDgP>LHo9MKDuXJ$-(sQ&YMbo6~LDQSYRM_W?Kf{(Vf zS&|F2x2j8yY$tPe_oU@F_aXQcsm{TWE5FUJ?If4f`9y6qsllE1A%H2|@JYqbs@yus zc#mn-Piy^^C~aRnqL4q1NK#MHe&2-q?DC_5>e!X;){}1QE_vYQ_}h=HD@(9Uh+8Y{7~m(Bn>;E9W;3U0M~7jID8E#uSYXzdxEC zjk5m)vzrCVkv zDOxK3tzOnKH%4+$j)$P)@dU)E_W1-OE@}UU^+%Z=QQNM;hmIUQk=NtLNbM8yZWsb3<4_Uw&RGkfeGX*2^-Xk z#odEO6TIQ&`Sd!^TeO1w7UmovAyD&8_|44Q{ox&p&zQ;Nri{rmcLR+-bKt+G0iEJ#!`= zJ`9)Qba;I7&g6HW)|!=Ma&M{+#>WF$OkGa%Bdt)^8~+96Yy^R)eN>zN?<9UeJx6ft zEf_Nq@Fx$a>X|5c<8HvNNm9p0Gjc;yiaXJKzpErjxB=jj2}SDj?>B4CSTRv%;k<0M z-S#?gEt7GFJWJg&tAv5kn7b&9<%qcLX^}&6aP6rB>$}-y=WW#VU%NrZg_@s;?Ti_N6tu0knfmJE z6L(b+QtRh(bNM$TWPNLOul&Sn3&4ej<)2>h0d4iFFJg{egS{Ru%U~Cr_Q&nM)cv98 zi$#Ch(o{<;3;&*B*GWg8UAsJ(OJ0r?1~6iFt7&g_jvB6R=oZ3&Yn3y$-z7Cy+@|In z*{r%O7@Y^_Zu9m0s%$Xd5*1jp6lF!FokQJsZ3sfosn5n_GBkA`nhr{PoTec= z>Tt1njcwynpi-EwARb)L|JOWa! zF%ga)-I`erd1^)6&dmT4ayXgQ|SC@3nEG`~EjkcJ*lX znjF3>RM&)?-xs~aP_VK`f%8i*wA9-v=Qz4mPmw53wJVO=QmoaM;BMcGmBW1e8Cm6_ z?!2@WR#eQsl*E8z<2&a(*6T}xX!N{zR4Or78FhZB;}>HnN%+M$h{}5H!|w;ZYFB^e znpq>k&O9v6_nLx8uM*=eiaP8z_OoK5-Dpj}|mXbV^XKA|4d$^nPeNicCV zO;~CVD;v%-Fdj^N;wh%kr&TdeKGiPX-b%svgP;LLp9r$Xkm(x zA1)L(^KZF*kB#O`s7LZvzwW&e8_zCRzQ$$P3ax4PLTRDPGcoE z4yE;APF2oTkIn}niDTXie}7KTb*xYoJ6G;g+R-&1)&a&HiM#EIy1D<>3flcBL^i2n z{+Qjo5pd>XtW^}YGcK0HRr-1YEereNC<-F6n|VBk@vzTcLRLM&*GjxO zkI_5chq}6$$3IP^*7a`HLv~b~&He_uRn2_Y{3mMj9&Pjf-E?OU2i@PE<7!_U*IuLH z==*%og>QKpyESqv{f}!g!2peOnY|?V0Z8KqnEojaja>;q;6g_BLOZsWmFn=W?)3E` z8vj2Fes)I#rf&o|IR6Ri|9!aUsmH@%{_n!QmHj>QtFx22n-Bm0he%)EdS9|spS*PK zwa2sMEl@qd*9%1!z;X0{{UKsAWcpnCM)3&^8bocN_2_fqp*peYgi+_hjO1RXEu+>K zuHy%qaThCwx0!>3YL(}HRDE5{m;+?nW#67Nb`PqHJqz>FxDeXeiEP?M@9s<^F>vhg z9`@qwXTbR`^yVVJI2L}hyW=@IUo3Wd;C~8q_di?mGaWeIJ!lrIn)5=LwBBu&1_)=j z`Mt?8`F47Caqi`O(}F2np zzhN5ZgZ`-b>&-n~)Y9Pb*#UGKd*ZO%*(@{RbtOYCb26!0g*~4X!=6o;f`v``QkVKu zv)i&!0q7+^4GoRW{9@Gf?!ow8;p9#gAwTBu;Em+J<_L#==c$Vu)AgKM+BP4|;pZIY zRisJlx0}cC(0g?DZt#{GoEBTD*kF(S)pq0CcD=1be!C^w&KNs2lCdn<<5jX~`k8j> z!SI=`&SrS5gvlkUEgRWVcJnLXp0R)qd$PH+cjMIN^BL}oUzi^ z;oiQ-*GM?JCl>B~5jqUVte%3s?{;c5asrN<;R_+z0au-|rpx`zcSk#GNdE{dwz=3A zyHjr}>36)ka|+DP#@^KDNP#bQ{H_{-(szT1tzi@Yt24A%j{n6*@i6!lL3TgX2BH}0 ze|NG|vjq>hdnV>{eI2F&1fQ$IFKXczXV*v>%*`xy4*GFdEch5*vjqfmUHaWKU&GPS z3wtQnn%JCx+hb~A4)|olmKl6}HV=ef9c%%!rTX0cZ_r&_Ip5Ie>0xQiL$4mjoNP>I z4YI}G_qZ%p=5`-`s+R*kUgFBZZf;NyYxWGoy^qf#ZA&(K;8**z7#;5cjr-^OiK!=& zx8q!PyxK=KWH~12i&?JWjm{eE8L`IcF*W=)4t~8li^Xv8cgRS8yE(3sx#M6u#9)=7 z%Y6PP_X7v;B`YelT%Aw@O{Brs8wgtsI2wJbQCNudJKm4HH)&rDwT#cr{wa0+=FLf0 z4Vi0LDl;N_gKI?R%GUp`D;1cHG&s0+Hj%zvjRb;kPp-G%*ULM)Ias#2jmTmR>26(_ z*4CkWduB`WEcI=fqSXVm=a#2#n58jmRoN>j)Ax}}2D_H_!PIuu8YbDPD*<+YQ+tHl zE}^z?^!_z42eX-Ids3Bys6wxuQV&c2Mfk>KV6+0XoNi;8*RoBQnDl)K96YezXQO1! zRVO?5PH}l$j6E{?H5hq(Vk&8?)F?X31-Eclx!>`?rt029>ERQvRe;YI=jQ`EZL67S zo--Ibn^t*Yc_8mA(OwD%(ZmPSzawdC8!lRJ7$ckyWp1bxkIGm((WT)l|76ire;&yg zA(vF~qYlJSR&U`Z0*N#Q8pyW0$IP6d9e)q{wo~LftlqsP>?vk<&l&D3+7otvm;^!~ zZ|9j?FPE^#AD94BM}%viQyn^9d^-zc-iKqq-Wlc~`|nMEwKngC?}6SX+d@*Qc9xrB zn-PbmGT19%4crg2iB|DDKRiG$iB`e0kZ0g(8Q=4Bnf8Ys7-a0-(LsHWwaish+qJEC z_|3s(85$L^UqWC)pK%1eIrqQ)^1ZZ62D9F3T<+YqSB1S=@}@?lx`9@^Wf-;Of66WctAd*z zC0=goZqxKog0Y+D(_rjwSt<6e80%WWl)4rkfVR{*p1(OHW0t&UtZ@JOXZorWT7PPb zy@t2M1`wroBJSAkE<D<-bNrC3|~Q_Np42Q%W_)2&F_h++#TfK`8BQ)GT$v@8Dy@GWZG_I!KafN zOSkmsU=3apQU->yHM=W*&R4eCgA9h%-ICHH(tTL%+<23%$p@d zEEqjlUxf@fI)i^iF!v8*j&ugkZ+0zYj>%~qo|F!oJEuCTP4gL__K-PCU$5J zfx>*>Rk7a43Gm!|fnxTM-YulYNZw$RsnLUu0-J*mrk%5Yf)jFle|0Dez_j8oYk5$2 zd-o>H@xNZ(*n+nqF-kHw#nUuUkN08?<{!W5I%7|&z;V*vdtaFcr}r>qOl#ZVu@R)> zetp&5J^FG*xrR6T2ii+4RwnvxOT#PVG7*J2jScwfSY_C?K8C`qeF=>Q-_D+6P`zN; z;Y;WI)5+$X#b3uogJ9qD!CPkZ`eZZqFI@F3m@NA!41U`T*5$^aO!Bc&e&|IcCN&4c z7qDk5BO-%7ZN}^j-vt*_l43Ds$D?J=EF4R%*q+@>t?SCjyYUhXx;qu#0gV0 zeAxrv^E+XaX^zp^-gdqB5i*>dWl9&$z|$@woX*%|Rubx0`kiaR1ZrDoG5k zdh3#zffEP+O$UM9epSGUtqhsH2=B*`xh?*{2Lf*o7Um+c05+a|obfi6wr(X2IL1Ne zEb=aF7JKa{19nVf#=HkDy;+dY-Zzo)e_fS-%qWIB1y-3xqZ+fm$DfmlnW}radF|JC zM>9p=o-uDwwqlN6Jy|Yb#-6OKNl7nOwL7Av_|4Xsz}F>fw98MfIGwWeZ%^{E7tF}R z)An&>CekWLo*r|G#?+rvI$W=m1qHlRz-VCEOnt?-#-S1VvLsl-N`{d8nEotL0R_Gt zTJ*zuh@mOO(YLAaTfP_f=+T#VSIBCVb6(#K^O9{LQ^+p_J@zURD07YOxvc_USU4S= z*T|S)Z7TOG8r#tO3Yg4`tult3t-F?(y=hmBWM$5+?^@;BY1`6_o4<4=bIWW0$J|{hBaPbYxo?@LW7lq6jgYZ>UYIWn=RI4s zGN_xiQ&-IEO4FY6(}sX)B*Yl(zcd|o-~O+mQ8&#^d$Ggz;H7(!wHps3c+B3GE2a|8 z+kAJ`QU$zk{f%T|_Ig~u$y9xjzxwTIC3XhGoO3_F*OfUv=goJPm*DG`{}TDXE4_D!J&`yVZoc!l z1pAx(*WgUksGI5g7oN5S+>87#J&@IX}rGTVnipB-YFAe3qrtS?J_&dIsgCewm-dBT80swLwct{h%FAm zj<;iXmha~R{y*LS$0q;#J4Ed@9E1i!?+_3yY!(hW147XV02bB=2kir)HwefbEFBJ7 z2STq9fIFBE9JBz0ULYVCm_8gd0fe3*02r7A95eugo**D-7%d$14+uR%0MM}OHc$%? zdWeAB!e-k*wLs`T0&oj!Yy*`8p}Ppk4J^G4Q~-o-BLFurpEgh?5W0zgT*LI+KuJL8 zIs$MFlV}4)0iml1$Q6vX4HOE5E+YU}uwi$HB4{bpJ zP_V{k&^|x32?05Tr8k4t`JoL6z#+`18MMF;{eyrU!1S9z6a3Ix1mFNB(F_{khr$q$ zeHd*s=pR4yHv+H^yKVxt@IxyRkUiLJ6R4IST8;qh!5W)D<^0fJ2*@rhy$Mvn4=q6e zc40nEpiF*f5dyLU({BPL@k0v`fE}1b6DW!w`V#@!hS4^GLiwS&2*5V%x)J2h56wnE zwqUc3ps)PUOax#H*4PLF@k28ZkWE;6Bgl#$nuY*u!h9M*M*Pqe1Y`rI-w4v?hbAEa z8!(ARkSaek0RdTu(KdqK@mN4-G^B zmSNXkPIp;Q@YW`>@&DZZA3OYSFSKi@eI_m^YZRRGhjd? z;4B}7QS%&H(8&Q~Z(&b&2s98Jola=k6vOr%M|l0>#;87vAVstzAdWrur&F zd9R(FICOgigfDz~yY_ya({0|hepcMpbxrpoJ1}taPBC)&_Rj-2IpeMneOS0@*|<8X zFVFn1>yo-bhbiFe)?wixnzAhV<@bqTAUe5?0rH{YGDvi+#9idBsGdz9sYgBTcUr0= zeVbuEG2moX9Fj^BU+B+axoOrH@vVN}nm@)dwA+;S4^ZZyHM_w8kNDp>g^t{ zQTL>uad$a@M3@BmMV%v$Y*EE0c?#VkqtHj1we#U+J8SIjDuy;9oC=lFTAaodU3GBx zs>Zc)qF=`iagNLP6`Rego8fw*Tkc_VP#^U-d&9@V34C6H&@{IeLm& zT2h)uSRYb%#|hK@Jg%U&JdO;2g?er6S)f3(N0Wo63Wx5(+PQL|5a zh$CZu{o)w8Ay-R_nABL2BEYMLpQj5dx=j(SKdnm(DFMj-7D!7`lU=Cak0Ei<2}*pz zsh~oHNt@rDO|7>wE01eIjI@P)zT(gY-7a1CgOP^6rnCV*+F|gqs)s$_s%_lcYyS-h zMs4nswx$;T`6Xs3kn7id^h8yc(dUGe@A|=M{~M8zO8Uo2ek3JVA>Vd?Z8v4{#qa&Q z>aFFn6Od7{itUlDCrIkhx}bS?Zjze4)?aOM`Q}V08aUljZ|lrgV83U^t^a9+992kn zLO@*dGMN%zak%xt@9@QR``P;=pAWy-7g%Va z5FVr>Ch@i4;~~mC)Xq@N^7n*gW;TNeUK)5g?~o&hnodwR#fI9b;N2m|t1Fu&GX63u zlwA%rM3IDVEWs2P(gB;IY^~|(M@>pE%4;;IK3-^Z5BK1v8J*rPCjtozj0(x>nP2>K zuYQ26C+4%Ux05=4|8k|`R<+s0K#?ozY^(5Z{hKSU6aXZ%*sEvUXJ)tqscM}9+YVRR zUKO(=RFUOCynCZ3A6lAL8`3rZpxF@h1rkYh_#UB)6T||rX3^71CE?Ti6JRDX)@(b? zs3`bF$1}CZyLd2o|+z2 zKU+SoEz>Jm-uK80y7*z*mA+N9H~2hS7|h};Jq{Nf`=5^kK*G3uIHf;JmnhXQm#)4eb$IbsDKU6Ak{Cs_Rwn^rO30Io^Fob?GB_N!_xXuq$bEy5T0 zrVAa=tsj>(>tpq(OZ?9UEj}=%P{UR;9+U=s7|{`)zkRhw)S@DmUJm0OKJoBK`r|`& zdNKBrn8?>GT^YH2;yQ^H0@IPNaik_+CGJ!NDlu04yP%*akfB2j$I%Vg|DZ+*m=jbf z4ksw~;Lt{6Up$wIY)tCQq}&D4--Lb_{Qe4RWhCA``-NqV-*B0n zs?>8;iM6cv*GH&LL!^U%(YA6(o0VM3AKVZ>VEe>GnjHz%Tbz<~lqZL4Y08piA&$BU z@zcPNFAkkG*+u+O4hqsDd7HtgB^B>SR2FfWwo(Je#qhMlj4vH~Fm2wKQny4D9J^7! z7FD?EW}scje}R>)Bru16UIqoW=}b4o(Q=+=G`U3D?Fn-3sq%buI5SRKy5@nncqzD8n*(RN(_3>;TlYowPPsONO z$8B5cFZ#}0%bHL+Lc0u(kaKYTy7SM`cb$n;?#==)h{eu{@AJU9^_!Z=lUh@A z%SI4YNU0hODnF~V*Lu8~`^)^1he>d1|!+9=#c~y8; z+z3D=eB!sX<-o}|v)#Uov~M5jTmClo92q-tG_}p#jW^Np^EiMPzuujTzUq+#Bl#?i z;v<`g2f{W{?Pv1Fflo=8CA{Ijl;V9QPlbv8Z5Kc_weVz&%RO+-@_UXB1+;W4Ytz`8 zAFcCUas^)p=l+h$S$Qq;saW*;TKADgZ4SZQBb|r~a$>wPQCh@{#<%{F=m${Km1=uK z6;lG8c-NRQ))`l_B{EWyi^TXpc-+8G$x)Y4Ni3CiiSGj19}7R%(ouJ(>0S@Sr6GwF zlxVP%1aVa*TW9@q)Zcql1;Wecu=ey96f)6$o#7$M)r2cDpNU)U%Z->2_Zvq<8&W!3ceWjXWmKmSSCze<+L z*0V`L50a4js7}c^JGQkhjxUM#O})Fb-Eah9)%)s7u-ich^3tCnTui}F(e`}{t(Kor zq%;>9{Yu%kd#)(HKjqFN#YYLAWBAs;1^gMLJ|4P^o5@ZU_7K38$wK3oR>Wx6`c4W3 zXx4%rxJke6_I6VouBNt>v{NB-9;VUY_b$rV?lBV*h$CW?ZoI;)X#YWW_91J0yoVdi z8{KI%q{tj577)a;y=F#X6_ENimO4FfGzt*3OV^vmRHd`MiIe9Bv_3LdJ#!GXw1afa zeB=v!R^sZQO7m8Xv(%>RONhs2R$ zNdF8X`g2}Rt~&cE%-iDzzDr_-e1|1u!*!RUDgMO*@V4Per!&*A(n&1*xY9{m{OjuJ zQK;rS5*Nmp_)>?6YIowPeFqY4dEnzNQZlBo%VcVl6Rw!RmiEzzqPM*7%;Oaj3v>Un zCWL&nt7oo+p2)Psn-PYR$DX{uDKbL`OAw3`E(TGdqC{`?(gWx!U3&W;?4IyaU$NcT z{~%6(Qk>(&B1z+}(Ejisa^-y$$>18tPZ#GJ2xkb;shrk|++R>snds=CPV2Z1CtZ`J z6vZL(dbd;05Puz~L4tQCu>I&FnIGgm^%C%C0L=7ci-hU_JjVp*xKe&m!bt z`jE(!C4GjUl4XQmqF|CJi{(>K_*vMiP05cTW&{=S9}GgcLai+%0XBHjfyeS<=5Qn1 zmM0aqD}22`7Wy~{E4-mDms-e{bCD_p}CxzK*~0NLHM75ZK5LT$da9L+P3!h z^Qc`}tqxs}XnK8onQr~J?^hqel@DEM`}1{R(Y%=c?)WbZnEov-JmlAh0Y&t~LO z^t~e0A!7;xt!1XlvRG1=xXI0bLUv@4UhyQv2;*0M6Nrf*)m&MlQS$i9Fyq8y?nUtA zQ$)Ea8n=Zmy*F>v+?bZkHGt3CMkxMt#KJxuTKaeppMHn`j>w*l*UhE{?px+sXw?*cfgAKy$|6pc9mHc2JK$0 zSG^0LRwWC&Vf-oV*}A2h74Y4_=j)P%u>>tDyRZ_%-n6-U`X0G%D*<9O4NwCH+iqd; z=JAZ|`TmDfO1~wgjyS)Ys-CRF;N^;s5sOL?=Txwu^+dHzZ`5DA#0rx$Jlia}if-#p zyBY$g5Q{!7Dwhad4PV&1kA894FEe@5QbMg(Zr%)tqNWW$EYmJk(d%xpu(oSY6FEm; z8d3_3Fywd|lRwZntX|I3qOx4{RG0PPnzyssHd)r*uE;$-xWvO}stz%UtdUc z{8n{v^$wtM=?F__!;L%?i!a5~ySqgJVl_SEMbVQhuUjAtxSP`Mp8n@J8kEEH0&ax2 zOm74go>O(l35j%gRmq)DKRK+99dBBqX6b|1J26VXuKD?9f9ffHIeJ zv^{ji1^;IVZt~*3pbFqQQZVz8$3tqVuk|I$gU}D<0xms7Ye^o0mXwdY?-zC9hrOT; zmNvjBuDobW<3l35e>f&AFYVTl(1-i+qdb|r0(=k5=9V#YLYnC z+WE}PXgY%Xm_E2XAydshT1@mdb2Di(`iK81Fq@{h#jjBnVq&9Wc9c8&0|(INxY<_< zpLbwMefS_QHx>Sv%bZx15JJ*PVUs~*rY1Sk*4-pqfYUA^XZawbiGwMvE*JAgfkxnv z;Gw#n01@4D`VPFent{A5Orf~XO_ODxG<|VleH$piT5az6Tm^tXC@_OtMzZt!2M&%n zk)W~|keB)+KH!Z!FCIIwb10P+?!&Brl1EIO<2zwMd5_8;hh)bvjNxGuhXn1xM|%xRe|%k zE8CSJgxL2kaU9-GGCM7ko4;*v|4^)r{(kU(0ee7%zqrNgyWbtMeZVo$L3=cB3!b45 zkNyW25_K`pb-}&RT?11RD4g!v#|1uKbkJUq7wB}qpSbQ@tnOZduPaw%2*bnc!_YH` z?j@v+ny>GfO8zE>knxpH7_4exs~OPn7#?tubjjX$2$xBh47uM8l$TBbm6qCIcmu>O zK|8u+pJCrHl314;4+pwrwbZN&oF@=~F4;H83yCJPR69C4rv*J!nr)Wh4G;AL$e{D~ z>+--Kx@!;32b5q4!^0o~o9M3n%vDyp(rcjG!fi5y0dyV^{|sUHo+^Nc(~!Qy7Gbyy zmLOcJqnigAO@I=^8&KaKfJLY8M@axI20QTk4q(P$N9<;yDaZh^C#bi|U`K>x!7Jm$ zcpSxGc#sL=SQcH9Pyl@hSLcGdzG&db$O!5P@AZr`cep|#L!5KLt~2zH0SvK_86=5N z?r`9oLXXuaPz~uK*6GjfnLtLn+x-5$bj1QoM+AvioxmG1NW1{f>0-zv!UchY7$k{k zK8Qa83R=v8o)|L0VDtcNM3 zB!~fcBa%*v7k;CWbkK1Y-U|aE@I4*OKz>QiquCk*A@JpJoq;ryZiF96Gs!@N1y7pM zd3Pe7Nw8sw)9KKv=+l1_qT0=JTM(Azz@m0=M$66jn&ocJmo8+NrHMHkodWHE;X!NK3tsFT zDsp_Ps3%8pmxW(oRZassu`q_CqdN)8c8&)aQ+#VO*a*cY^W+RK_6sh?dX5Jed6~&& zZynLVgLm@vi0!uBlMBkwm@rf9gCm6?!5&U`dD~z{*p~)gNQ{%5JV1&VaqLTFUIpro zELA3k3P4A9sxF8+!+=J)y`ah#gv|%Oc`n9KA;(E2xGBg-h7G{sEw@Du$=1#*EG}!$ zHlyElQb`V_;T>|RX-=?v-cYLNm}7+7VPHOb1A5|=Iod!L$kD%Nn1PloC(vc`9=uCG zT^o$VTokhv{R1P1o(oLph0OVH9d^H8k5xL5#C_2R)CJjdHOkJq&Q}HDxZJ5& zO&4?kEp+uQ<>hFhYk+YBjPiR|>aY{Eru8ywigCY}ti^C^w5HX8^8r^3m|9ce5vcJR z03JSoQ@qXKT9_3EFjJAGib8j0i&Lx8@OIko6QGNl#v9(e2k{XoK%m9iim_7DrV1|}k@T9^j( zRxS^;SA=e@oI(S3^jiWzmOxtYNDM*YX)xZ&pSE2VJ(4{Hoj-tEIo$nn-JS@;PiFt=VZk#t}J7H$~7C+}F>H;7jLQu^hyi|6&{<8IT8enlo?gd5ggbC1qX`2{ zh^C^tpUIgkGE@%n7twzh@(u&TrF#asL-#p&$FO$j_zgF?L>7(R^L0gSAsD7)8P*Of zgx(?p*)UP?x0!)#_-WD23|)ujWKk}CkTxwfSoVN=&k!_p_z(rfUojvP;}}>DR~V&M zPK*azWuYsVN(KiJ78XOoA>}q;9C`PM*Yem>hbOhLz6{ugfR48kgR&k!ik`-WlU}yv zNbu`kf`mX{W{4Kp<^AXk!+PK_`YQvk9)N*P#lWk_wpwn}rEXgwBR2WlA zeZrJ`Mv-Jn3G7J!G@8GpfptP1Oeo>KyLp0>!<8C6CTZP&gzLNRzrh9Z_ux>SY3s21I7hkIQZL00v%hfCEs8~zUJ z$+W9L@Jn14M@{Pne_?zlHjMooRTB?x8OuOgSxE z^gdR+d)1{q;Vw=UtOprJ>XRq}uj#0XAUCKLGOX+tiVuE=3P+<&r&_*yiAV7HF7MF= zbzv~*3^iwTFuI!!cB;Zb8c<7oKI=oRy0i@Dqv9QsywiY49=cpD^T#;Zb@kC7fPRg}HVevycvlw|J;c{;)MqOUO~mV%$~rnCgfcZv5HRrX%?YmxC%0(LL2 z`ZD=tA?$Rab%(dR81GCG{$SaM((dRKotiG0TSf-LP=YIh2{vjwJ({;N?v-FOgu(cH z&JQ~yqr0%cV@}d@Qrc3H9&)&ksuGn zY>jSi@N>8c2f+B8EYgRkWL&Qd*`7<1@g-bVBHijiuX$z0KfEjmyHvM%;Jj=f)R?Bk zkE6x|p~WWXNN24Aq`i$AF&+_pTm623+jWz1D4;`}E+-`m3;?GaZM{sdIbBZTQ%DwI z#pjD7O?Q!wz#y`Aj6Petf5qI$z~wK30tTWmjMkS`zP)tN&k^_gH-S^QmHa#8`1!Cd7Y<7VcDcx z??N21?SQjRAp%&TC*^ca04Ap7ncMVFsvdY zRzVg<#VaT=gSr7>I`NGMDmsA;8)zLsh8hWEwo0x#VGh>;@TO8*)4}>N&Ia4!T#3{U zGAX{wMGA)-8mDb$c{%CQlQ0N$4eL;?&v zj9FQi^a{JTY&oNd-WX-_kIx4Y;F>CQ^qjb4^B+qRD5+eOg14MtrJL&Kn4GN5x|iZi ztLdf$v@=AeTVl@2tzJk8R&GQKW6V?LLT!Q4kWrp=FF1oaPOm%MBSP#$-+pMVw0Ezm*>n0 z-KO){ZlYO+)g?G(X82WVWxVr@yX42xq`Z1&3;^#Zw_d3h(CS6D&~brGgH)28viDM* zW%Y~kPCU2dan)^d0Yhx*!gUv5FxS+$2^8a6S(hLADDxmiVMN^jq7%Mqnv@%G6+RwQN7Zf>*;OxYJ z*SQ@hqHS8vu?^S-(=|&%lB5FEdL16y=$`Ek{4$kuFi?tc%)0+RIn1vniiMC9-RFb!3@WfM>yqa}g453zNs>|y9 zEUX?Rk51jnRvv0|Xwc;{C(u3M(mf*aD*7;18oAP!dQ{gVz%+;6b*%y%ZJ1p* z=K-5S<_wyVnZ=+Br_EXotfuQpB*ZJb@a`qqsUNPc>tbL$WK-O|Bs&l!zRyz1=;NBH zJg>aG&RUrawdgCCZke_U_)ph3G}$?$iA_vhvXV%1hs)AFZ*`kufFnv>bBqUI1th6P zsw5=xSS8|t{HZb?WNwoZo)LVL@RpL!S(}K#m9C*%CX;MQ)r{t5K~{9iP-7BA)YQ0@ zES-;8*RNbjc8?9+GPz{E_0a8<3Gf#=qipPwJ=%=O7@GhVmNN~Ye=E@&ZV?-RJy}Y2 zFLj`MDO7jhZ<~wG1AwX>*iciTtV>oM>*}oulLsNpK_)3Riqk|YCCe5Is=Fx*U-Noo z1CC?aH}P-9d#J@TR7RfWW`9&ig?znVuhMqv{3i?lgHr01UN9wx$5IZA-Vg zc?gxJaVzi*%yFZ-1GUJEAk`gM1jAm}*?=(6^oHsV+<=bebjHVIh_*p>2gZg(U78F- zqCvG#-GPT8e>Bz)%9Yts_t;@p0=79#yfc7sW9XL20U#gi(v&%n zS3?(L!+%uS+oBc{gJT4$JJ|Ym4NamUnS%N-RCln;vPAgOq$?Q@F?6e?Y~b&U>JDTg zX-BB;z#AyGN1~rxpiijozy{^&iRum>zw~aX?%>BumVIgWQUI{7VIEsT0YHoD4r3ke zrf5PUf5EwG1RvuPW=>}hG1_3mlO}nQjm8qfV+lyL9Mv5h3MBY2j|3_Gn#(*QPO`Y2 z>JH`|VzyD;!Ei%51gbljWC$hQegta^EH#hROcx;BQQhJFSSS*zJG8pJjILMfvP;+$ zsynoh&89`&dg#7nsf z)g49@UT&kh!#FX}L%M~r8GJFtN8%CFFGF>Qo@(-?8zp2V29y)kT@R3mZt2EE55ez> zPFQ#oWha|1pM<$~f$FX&_*s{z?s^0$Ig>QGh@5t%=`YY;Uh+Tb>?kU2bwvlB4Pw3M zTsP0BD70>TA zQIn}TG~G5R6J{Y$-Hio62#M-$OyFHGI$bkmHH0qa9i_m)4BhM~TLZl&^cWcf#}}`g z4`Bv<)3hh8pkV^l-Dn2gAW_|oS_)d9>TXnnTR5t_5g`21pt>7D7Qku3tlTV>sRGB$u2{e?FCRT}n*`z5TMuap;j_Ph0R3&N-gJICI;-b167tBN~RCnWo z(T`2j!MFlhAE@qzGvkU$w|3eB$!K)5sx=VEI#*H$V z+^FtqtLS!t>Q1&@fp4hpYOQ!ALv>dx9w9rbyBaFQ(4e}L6eJ*_rpuBmKwG!;LeWE3 zG^)EQi#S@)En*1_-gHA8G&K;yP~AZ(1DKp{aFPwDbx_?^BlC%i>aJdJRkcvv)eGQJ zbrVH(viVBa7*%HjIE?D9+A7&SsP3x83#+ba8j>oxcc|`~tST6b>JHkfVti8FK{3@b z8r2TXxqeKU3>NK6dk=!hg?e+#B7uV3O>XKBmQ2(KiNis3&KlGdt zVxay*e;7vg4cn1IK@yW0Ls(H%{ z0n)Oj2+gaAHlogj%Z+hPzH!(RG-GKR?E!_$EFeomgqYD3U$b?mTd6Vzaxxmf%aC1= zm%8a6L^rK*YOU;*qpt9VwHn|n`g!OSbO%k1kR_8OuBL@paoE<{w5^FZmx0CLh$a9K)Vh_u6fjTlNBa05aJk>~^ zCOWIzD)Y2MV)l=O0N3<2Ymzjyescm0VXif) z0l2iUp;tC|7u}u=4H~66S+g#)L^>Cm`@Dd~5C6Faz>I!A_X}DxX)*-pZF@cT!FAgt zhf-2c8y8rRt<*gvn~$1cAq+gf(NqkwF?*;7>%jk}>p$_Nx9!oaOOp-rk<1UQtmC&p4`?;vSd<^s;DH41gz2|5jXEW zhx&5po1#glGJq@MFPg$30uL(r2k%SPw>|tkTu;}yNUo(XC?)=itiA%(>6Ku*tjSDe z=f#w5YAnInI9JHBwu!o@DTDcwZCQE5b&PTK^JwYo z5sk|g8W%lA(-KOkF_WcpO-2T>vXNw7()13wz(>gf1eU6>Y}OVmE?@)lRL06RLB8mAH{k#MpVswlp}cm7*lxW@IrgOAtmSL}k+bN68jBmDXdC?Q=yF)YR!8JF&paZpDkS&K!FX7sr}KJRCG6YaJ&b&NF@k zk1czgopSayA*z(6;U_z~5L+o)4C|;X(Ie=28l$OmB>vSkooEcOf{i*iM<9dI4c<9Q zAlX_?&XZ+3v2uMVQ#L24j;I0O)%EN_(r+3@DIrfKD_hrJ0cr?qvor_ITs7^;Q9thO>{lHnW#QS{0drq_r!hJ$RbR2?WO)uDk|YY(y95+i)sFIl^&NsBxX zENfynNfj^vNo*x(XK+4aNl;?$>Qk`5YGf<7jc}0Fi znNVh_c*$+gy12SvvN)Fl?PV{kDiR>OKZ12Ki$AJ3~prMKI0_xw=4l zRg>Qu*}nZqI%Uf(XvvcEvub)jbR9{kTT};zRg5OO$Sz6{oihko)-xnsW0S4u*Q_aY ztpt{rs%2Yc_ok-8g~}X~xtXO7k)tUevmG9;lL{x>3HsKRa@j7~@8NZS$0h4x85haW zqXM{WC2PIdS53clOI^+=dbWPaMrGBqLE`Pyh?1(<2Hn32BkbWif~E)tZ~LMNe2pwe z)BSi7Y!ld4mEF9#5+mL)>=rJk>933>B26<9On)uM87|3Q1ii>8WtQZ3UFYhvFjFlTJyJWw>HZ zqjg!(nX{UJ*)4P~-Jf%LP(#U@1`R6yF=L*uxWEFOOUYNVB8VQT>Y5){)KqmPVhpo~ zlvPK0q|PZAi?&QnjR(gIEC?E>7!5tfYMcW9A}*JuHDG_5CZm7=3%dORttk^S906t7 z2B*i-QI?ZUupBuu^^8}+UM|@rj)P;Dhuh~lAhwAEM zua^TAXcE~XXEkMAYgl9owrT>iGG(`H(OA+jaJQQebE%;5b`BX_N+31M@f?%6nP5hrW1`37y8HEkvC z*1cwefq_hN>V+n$pHP&&X%ugndhG}w?10g|*~}PqXsXYiBzF~S zhF`DoBH==V7+F!zn$?9C)m;;%UOkwgY48CW(^(QcoKclE37T5eB^NZGN2%Vd{y0~) zhVG{(!j&A#w(9&v0l2}xlKcxyF7!MpsK7UM_)6V1hD(Pg`juHRBRQp6LI;hS?n}0~ zM{h_-MGO-#MPs=zXg2GqsO6GHIhqi)m@45jjq_UBB&G)f6j?u2H3}rILqTW91-vUOT7}pe-%waDxniFJ!>Z6rpIh) zkq{Q#0Ba^;Mypv6ia1p{n};PhW21BCMW84w(tQzlOPWrp2v*KON-u)`k7U|KWQe3o zW(m@*wnutY*zwf#pait-6*?mX5W@JTjgMG0RD!ORxXrECtPyrJL(RIcwWJw(H;f+0 z(LxCZmCu*1Ecp`od}!)9ba!(}c8Y4(-M`Mc<{3E=;*!*ge7+O_>XQ+Wk|H4a(iFA{ zLpbUx99dWylkRXV5#u?`swrh_Xy)>dcsr0HF)}1wLJp!}&Ejw=4^0Lu-k|GR0uV!h zj?_KN@CRAaeXwM*1cKR0ve~fcjCP5#J~V2QT-oSoHUC73A(X3UJuU-C=`EvM@@zf^ zqsL|B43(#IDWOOn7e)vQ>Lo#G-W?*f8{MrY(~MWvd87jI-s&Tc?zGka;RScnsQFCe9cgDWCw0m&lfvOmUKff~6qI!^`7XkKm$XbVPJ-r2_-ILC9%8;(kX=-2JrYz*(uXwaxE;^UuM}XL`ItMc)L7UfOM3!qkF)~#A z<xvtiAlQKcjjptWJdwp1nsC_xMU(DF72_uTN0SZ@D{)jlyBuqg6Qk$FEr^GUk#&r3 zFMDV-0h%c?rJ;4PutR~f12S7^WVJm@9+YMN-5Y_pnYp}=y( z3RXRcrO0C3$Ba{jA&yS3Y~I4>@mH*Dn9=pa#f}wv)AY+0IzMX?%W_*=Z#8MOWJhYc zQd}H@DUai>t(7FCdd!V=78*qpQCoDm_}K4k0~~%`nzlLGae2<}NOl1Xg9 zbY2c##}%FDgmVhArIIBPK$=9a7+JP8Gz)@}RWf=kSus$oRrdfDIm`t{O!FRGP@}7A z>S+Vz@i>6TSl^cJ_A17eYZy&+Efb)=Gs+JmgcsX515n^#j18I;&m=EXU~KsdTGMD2 zu5w}QxHk339Y8?}nxElnFmJk_rAUV5zBr44ir|Y`=Q*!wWmlTcP%gYc!7*f(Nxah6zDJ6i^Z0>oE#9#nV$kPZXQR($cX|~wg|EmC0VJa4hKM_OLuYL2_##i z*USp=EEtcPSpm!%bv_oo!N^uZu7i;STE?Pts=9b#(x} zt}B9bm#Gl0gIO4Uu(ezgl*1zhd>$Gacu-4`Eqb2xU`fzZmEZWvI(Q;1k&^5l2_&Nh=c=v(PCW~5Fx~c)T zvz3McBk5|=I&AMfXlm`@WUUE(cpWgiY0>vrNs}2eeLoo0;Qw`9YnHl9ow4O*$@1gy z$qE~f5vhr&A=+fhO|O)su10f;fKPXg-z}TS$&J3u+L_(xmSImR@n`0hblV2Zo3~N6ubdy=fMi3cQ`V zixH!t*{X*yVMs;j1p0tl{S}NJxgo3NCb)rbrN)?((N&D~whMzk2U74tJJ1)ypN}Y+ z9aw^9h0WGgj7^SGq7Rp7ZjuQJmc|8NPv0*o>M^n&3F}uhOLr+$7;`6SmRK@!4k&%G ztdpGC=}~8ZqEL0CN-c8Qb)oNI(AAcBnsDj*!y+kb^f-r_^SGiOwoo&?oS&LA z2Qq40x}OX$I!2qiuF~w6tj1)`fJz2U!&+y_)~z`+L^t*2$$T|ml3bfCRkMi!|HxL# z7T?lz$Tdr1wm5VhD1glAVMDTncwwmO0RZtTL3c_?W;vPQ=Uah-G>>D+YXXyHtLt1L z^kGK4Zcma7FwJQ~{%)nC^ZC*MNtvSQ`KM%fX3PpU>b5YF&zEH9i0PLj zbL$vGs!37-RK}1bU4onvq=y4YVCG`%sV1nJqIqzu?4oIfF{>IOno$K_33N(XcjVPu z9+MgM%2ukJK*>^9hCazqTx;sm)gbgw6d-wLHO<|x4!IhK@fC7?^@I5nqJk;CE{i>;wb zwkgJNp>-{M3}d(w;E^SH`YUjp$?6JY*_`XT*P{@YWUtdBA|xmLr3b#&AlchK!S2_N|(s_a9Sy(BCZbO}wuU46xX zA9^IBmlMk>WAGKME6ZQ>sD~j3?l5*={e(-`-SIFHaBF(J7tEk_S70n%f?|;6x@OwT zPFLNdUA=4u(41pXYD>;eW6Miqa%lz|xMjSSrAKx65DyJwD=+q`SJB`ebgc^> z{nEWuP}abL9(1iWd?5gs&+g<*7(HYjjzn^6=@A$%IkQ&Ob=Y~%X|f({0mkZ@QAWa% zE@z`xwvemtGO4yZ@2svRx9G{QmxSKB+eeaC!+TwNlxdZt zjHh1N;I5Lcm0!KfB0a8vUjvF{u!lhB%egapWXh6+SbDqyU^K0fA4iISZr9=nXp*|N z8O@isT!*#O9R*8{o-=x;Ela+o%2jmEP>bK*&|0a@6{Rzj7R zEV^gO8A(0PR+=7;xzI`hb>*0JJu*dtXHgGIZxf8=lkQ*`ImwDQ%@tT=!-gK_G9>Ap zWAAAY2+?^xBxQ8qchOz|fHsoxnGo)?T z<6F>+o9@vFI z9)d`6Rp~C1-jnR4X3g;SI>wIfahZ^?R*%~4aPKqFGPHj6+e&kmFoY%R9!nsEa_NyU z-K79Yt;gDUU{0l#lFZ+d7hHGPfTX-;Erm?0vJjSUMRtv%Ep*2VV8-c@VUk4x=1upb z$b!URNLIJJh`npZNXff68wshQ!(g=N(Zv|J@DL=c1|0>-r^gdF6J?36*2NB>zwYRP zYscFrIkx8U5X0(mIFb%i58gz@E;-JLZPwDb8R>foKtIi}dc;nFp|5%zGK7^&zUh@s zcJS$uOjXX@(8Gfvhb~Fiz*^S{R86{n39V_fZtjOAnFP z1Z&w!vdF`)OOLV$5yM}PB?A7Y$8p_~c^lnMGk%ubEGn)0o=Suy(;T0r;&y@b)MRQP z*~bA!T~c>m`YWTkt{Hq=I?{EaWAUxzh#sm(smX-K=S-$YdAB68i5G_3xOioZvj!}-53~Z^_9d(k@%4nvj23s28 zEHrI~U$ttE#+HHwi#9#NOSbwJMn`1&z0b+WiL5*2UqGs)8+3mjOwZo78a5;A=n^zhymt(@8MI8xieWGttL zl6i~f)-1Pj0C*0%gD=9I^`=L+#Z+W-0^dr=c0EojX+ciF)_guKK(U}>@b00>k;;rL zfFzb|c+g*g`LvlODn&ac9C3`WnJlT0r)>EV7o z#Hf3T0aba(=_M>p*MLj9%MyZJjuv6*n$|sbv^wL8tQus=W|>&vGdLG~YI@Y4thtza z9945+x^6fF0O|+M;_N^(c!6>rF-u9vNP>r`hlcwB(Qu?8g&bdUw1sm>A}^SXLJ9kbA^L;AzP{UGk$( zJu#rmAv`^ivt$7uo`{^)7o2$2Y(O1$2R(8hTVBvx$pv^rRuq$73G7&UlzpEagyzU0 zUCxE@UNdXV3F)F4yE^be;xnu@Y>g~TVoLyE@#4un9c~jnlHAj$E0U6otu#F-#Ogup zQ;v2IkK80tmg(xT<&f^^txGebHt|t35(+N&^aTgfKYezVWFHfC%K&B0BbWeXN&Bddz`rd z#)7rctRj*v5Mq?AJ5XncF3snX<#1MVdGBSxTWJ1~ULm7u(JMj2W01>xml)MW9UzNA z;VtxR2swMz7U}?8=rJPo5c)2s1zGBj-i>6!*DNg%y0~}NyfbcLYUyI zbyM>u_8#Rx8|oYgQ#p;PYf9!U%%YiXASdAMsf)X0(Jh0zSeCcK+fx_!CMPN->ToE6 zAO}R8Q-;8}npbB{&>D4kuh8d@94e9zN^;b&m8z8uSJeHoS{JlN-H)#1KxCT#r%G;m z$2fy5GafPwSc3ADgFo&i*+4%M<5Inp>Ez5|mTEv#FfP@>e|TKRrDU-Zo=0;E6**kW zF%H(tlr7DSgQ3d@4EU^>iR9e(=pUJhaC5`BTgOj;b{Kc-;3&8c#@(P+GKgBU`jimB zPK@*Q0%0hJ&9ju898J!a&v`--X^tO=i7Ba>SgNw=Z|ark6h$*@^o-$gMaIE8#g+#9T{S(4=B_oRm?z!Xd2|e z7F0eTZU99~4(Vyh7$Aqp;%_KgJVhuO>`}09c-^cS^j)5d z9MaMKXEo#yna&6~YG$c;CE1$GmWT#jX^?w*l(l`1+#~0PLO%!1Pxb#1_HI42_1clp zdwxaKPaq-M!*_Q$NDU8wXsKHec#V7&5$X;~P9vcx|DCF}YOIfdP@kMc@!oUKHK(UN zM%A!gmFLN>3bQLZx?bTd3fW@v3ukQ_UxntHUii>-InrIqXgqSEUnulZb&b1SfC#yZ zRxNZjXrABYOav710DMXVc@huUprT{C<@W~nqx+hAshEK;iFZ&~x}GTBu?x@(rmlLv zWHWGa^-?JaIPNIQ!vf%!;yD|Wt;OnUT)8)%k<*oV%w$ivoJI9g+=-M25N@lkzm*Z~ z?wYO|cG~AegjyHyA&Lj={47t`yxKX?q)NO4Qv;CVig#>Kbk={>6FJTBe(Gj9ZwkY@ zW?8Y8k9ZE1+>Dp9X*)1)=VG}RL;KZ=n;^91s z0S>a<`{|NGh=1nd@1SAz+T-&k_TzHS`V$FH~OCJERP1byR2A%&5_g z4|YPZrYN*pn5a3a&HxsE7R9aA8Z>tlFW!;%&aPd(Bkik_8{+~&W6E83y22gi5D(u7 zgPXg+)OriUM?9QIRFJIpPlXM$Xo>f4y3Va4-j6^47#GF+cckmXQ=NfZ=K-lzXV~%M z0O7iMv4O>zxq%L*esg70z$H4mFISnHfg@DEZVRs$RhI&JUfeV2cR7_DQ@>z9W1RGA zy}+H#dNPDZKnB&_wz0H4Rd=I|LLNE)T)x%=iC52C1|I!s;v%i|;2wAzBc7rJu7=l; zV1w#>A0E@L>QdDGvochd+F>I3x(D74;Cv~lF0}(?`Hy>(fr?RsT2CE7%`jo~WZ_Z1 z-Tlr&I2nvdJwe^2pYk$-APdZ{E*MgcAi(OSkONqk>U=vCdJ3t|$0JQCyYui4gs@R{ zzVj%2UNj1TakyL4Rp#F0esgy}qyNZU8d+q5H&u;-^G-x4)Cd7$9jQExp7S1Km_`<| zcLt11uJ4EBgof+;VKj#09@a16QKn|jp%3tC8s&_uYq)YfCf}prgw*iBHtQRjIR{V* zG%L7DAP;f}&G2(4fX8(O<-0OPEOZyZ1gM zbB#jF09RV^QGf}RQ*`Y=8WA?vItMk3RHV|A9SlN15%to+ z?SN zl&%&43r*?OS~P4`WIzZ6;B1=3K<|U%C3We3&WTgdoyZnd-K znyUxEstVyAeDagJi`CO)&YqC*q2OLfu58*3p(qQ%pNVQXxv9-OxJ3GT6X+Mb55ruS>O z7W7H)*Di}n=3@MqHpi8P4^k1unDlgH;_lId@o=JA+2|6fp08!o5?WuS zR!aLv*Tro!m*9H31p~6WvMF^GL1t7TIAu0qaa9j^f1--GDDqm6KEQyva3l56DTet_lcE zx+&hJ-bEbm%{~22?x6SXL*OikChT$2ms$6TJ@3~rS zEvkTjTd~*tbHX?P5HB9BaBze3z%1}95rK2o%E*cI4jWpss6nfB#cr2(1;*nZ2Eq3c3Vxn^}FzO7pM zIT*!MuF+kn>52fLU$D7Kb_XlWuu5q=*Q^Gc0Y&h;0J(x-=ojo(3fAk_4S!B62DQSf zbE?XJz&Vgxv;sh*T<*$J?;6P1&00BNfCBJ3uAhx`M4KhGYA|!(reoae+LEhjBaOwO zRSe)+0Q{>JjuR%$^;}mRd<)S`DR z(<;pg2E6vPfid;xVHB|p`oD7`D|-$Oq)o9CE%X|NAk}&)QD9N6kc@I@YT2EX1XC*l+63irLcB&vH?;t= zD9)r7Xh(HF2a4-d?nY3nl|zxNZwtXIQaDB}dZ!*?sf*D4C>W#`2qlGh)Y|C6KU`UW z7AX&*)=hN6Po<-Pd`*T<(2>M89}bwScW} zP|Uh342mY|S&*m(AhbVAd~X!Rkh>D-LR1XF$DNAiB3Tn9r4IpK4XVN<-P)gl?KwN_l_?s9kR+_-S47O=#0&*eLAZ$2jf8AFKL^N*Fd9^~M*s^*8^Np5u>LuJDEjJQF@);cR z>ZP7(Z6oYjbtqG+_d~!~ zIZbyyLQJapxGT~n)p1{<_K^LLYF12C&rG$T+YB(esupxx1l{baA<=e?lTq*2GAN6? z175H_gfrEiCLR+r{^NSnH{q90aKE$`MzaOJ*I$UgII)d2B%Dkzz1 zhqs;u7WUlP=>`S{Jz0H+?l^kt8UQ+zYI%qQ0mD$WJb;z;+H_|p5M6r0sF#3}JIm{8 z6@YkmslSyLltVQ~`Y>VywV!hpGJjGn_7+4l%y|7m;qlPv?o?$hJgREAm!_gM48IGI zR&J{O-hvnwhHA!_-ypizDuvlDc!GMV*rKaP_^`%Cjf){_9Et2;C|KMZ)TZ0s&-Ftxt)t@ z_XsT&ImX@0@}q%;YW|o(bm>wp{nBm7nri7cM;4}o`+}uV+EoqyB7%&YRJ*@Cf3ve{ z_cvFXc)4d-Zs&p6>8qs9efX*c-86U}SG6GAj+?SnL!w+>8C^A`n}FuI%AwX_Y*+2+ zrc1P+-7}2Hbp7EOw!yGf3%UseqJ{3y0zwARsdoUQTQ*cfx+&8)RJAAIhrMS~?dbyc zQ}|eYmfAFKHTkw;M>NQ)<*|%dUQ#U&QQl}s;8(6qF=gE)?wLbV?eNm82^mmN9WS?R zRQEl57PI?p-54yCqFUaKwpWX)<=qIDpSEg%Hzqoqy0co$d-kf@;pJ)$a;LrukOplq z-C2$60HQ!$zkOXbM-1srSfIP0zXoWne!=E^$aDI2TP=ek>B(#(2-fR&IXeaSKDmbY z2H>w>H_)isgFDBCNdanij0#_dgCor`vokYrw7%3uc06I zRn7Ps&pr*+i~;BEJ@@#y0j~o}=-zaI0^?S{5^#qEGc?fzHlJwRjgo%iQy2lR@A<0U!oNhIeV3bu^3d#DxOsdTJ2Bb@FoOKU#|>MF#Fs zjUc(|2@K`I4M%E4fTgPFhED1rM2dXx!=|^Q)I;(h6xLUvSu@SD)dC4`QIQWFk5B)8 z&V~cQrE7$|Ge4FL`t`F){rT^_L!+7Pqkzssz%%*VKVR@C_YXW= z-XEF)??i;`rrGfhXk!nWIY_)E+tDb02zoC~&470Rrx6>}yQiU_+*#)Bo`9V+i{Hj{ zt5Y-lVdMmG6u)wH3f${1n`aiUI~#7qy)`t$-@YHy06p1$#ZFLUco^_$Z$+txAk{&A z)Jr=iFat%mx6>t+Q7`S>2hD8NDg}gA5sXr~h(3yLpnD0wsL1zL=Q#?YptlC~M1+t) zfT;8(^z<;@O3gx652$XuAr$m594Ym$cVCyQkmFkn$XzJ!(P|b1Oz*xbg*Jr_@mtwa6>_9&CCQntoFf}wo%lh0;M%p8gJ zgshMkUq3VZT~17xF#3gYDOM=-MAu!gHz6y~5hRr^l=lYx^qzZrju;K;QoTFUBY{@W z4}`t4gz^yP^J!ZMkfP7X%R+}3RKO5L$Pwv*wx>d|uaB7H7Q%gfQW|dil`G@x3K>71 zwmn@a7O#ph`P^Bw1Jz>W>B%~tbW|bZhdg3^3Z*~lqRk@&52A~yn}qHk_do9}cd7dfJe;1a zo)D9%!t?6oAud&aUd8_)|LUp1gTb*>rFsBXwI)@tz)b?8kGtD){RRk1y;L(|R8y4- z3B7K5?W$GJM7mVZ1F#$A^u8@TGRr->3w>0%{ZFll1b*Dv7a?NIsmj6wDkwneewVX= zEL9-@xIn*ORS#al#B4*Ag;xOO05{Z21#mRG%l9jh$H(1ww}2MJrOL@GAXXq~>Lnm_ zjB`~$5Z3XAPt}oE+Cs`z<>X}yUQlygnGr;`slxLzcN4wnS0V|_uFBBMNQbGYit{p3 zEG_QT0-Pz^oqd5GF2=T=I)|`9XVeo&*)0cEu&BXm;i|d?Kt>ZrRlZ)vPb~MXe~9ud zyXmW7yf1DXQVYYCcIe+$`nXc73jU}aIjbtv-OLX)4bnu`> z74nBH4Zf%9IsOF(%yz%!6cFBms{9WWVZ^rlSt8Qm(CPr@^JdXc??B~*839Y2FGQ`)_qTizp_{IVY9$+aySsGEt)LUt^9WcM;Xz*o zpPe>F>Ul)nG@d(aTW{drs)B>MPh@^o$e+=SVX1nKtiKodgq{q8zk!JOU674RRfYU< zXT5b*&!0WBLtVA30W%u$S>{Ysnr2c3joERC${B1UQm@E8PizoRS#OF zu##2>Xh8@BrImvRlE^}^u0*C^y=jHx(dl!$voErwfzN7X1V4qOlC+9J(*rA6D;$__ z)@*9^;{{+F8x^mTT}ZM5M>3db(ZIbj$V z?B73PMtpZ>7a!exd|JmIiu1vYMADtsl>sE{tggm^Z|{i`)1!JdgowO*L1!RUJ+Jl5 z9Dq`N$zm*kO<&1D9$sF|IdL<#d>eNlVR$JA(GWDuIebnSGhUP!9iQH-CGjG{c$o?b zqj?1j{{R`t%Y2!JlU`p%6i!~EYLR8i-;OIp6W>e+7`U(Rvzy>X;kN}ZHg0zLHg;x3 z^tUAx>C*S~-H5E`+x@`WTlSrR0W7-vCP9k;-@bn^(tg>u7Sav1`mRHSmbH9CVgb3{ zzE_dr$kDekHXzaB=RA7eclogy3?d%X`!;4YU}-;6269mR%*+PE?0!TCY|x&c(4iEK z`2iiozE=HwPQcGkKQ3dBMPc8~j)a%|uuK{m@9L){fMJIp%>jWM*H7lqPdoe$=Hv^I zOn!aR1RgG=vQ7dikAF>{>*%;<1j z#sNV$PFHb29Ix3$9FY3JC;gm%uiVP}Z2)q-@rQ!LTFnI<8ZCTX*|T53a~I(p$a>?a z&)J!GegdFl2Uqpn=?`<;c`y;CYjc7jr|hzwK6eF{do>v!La7~m4!Ko&?vuJD{rye^n+mrDyjE$slv<09rj*uj;w^92=gaqg1v zldjuc`-dri8?6}Vnfv4QJC9p|BKOc<u4H0 z?(l8A8&hzv(r`oEZgFa9h2;*XfYiCTF=_&KjqZz@6P@2=_k{lBcF}L6mNu%Ju(rOJ ziJLV_-kB&CEeUfK!)g;evx}Iq5|60(eV?`)S6ROA1M~s5EOynd^|M6EK#3Cg;`e)S`#ue6V7u=D4_fao+&BDf02jS04pwPk8bzhJ zPYtQ|+aWbJZmRjdc10dQ%J_B&s1c3WzTI1k(R1Y6@pNFrNcwhfMIOPp{C0fl`{pPL zMe_!H$?vVpoLmR{{%BdP1Gs!22h<`D6MaHpc&my%mD>gd$G?p?(FNjMg&-@5Iu&b+ z5~|+@h9P3lw-XC4=|_AEqZ$BHw5gPdpA>5<6(DYiY@uUzx#C)x$2fv06KG?vO^hic zZp0y?l@Yze70=2@KqHARA^Svtq3?rcL|dNj{5AkYj(dvd02XedN*Q49RxzaGyHs zS;kNFZQOtXClZDD!4mQJK_f`*%%Vd0BFIx>LNTsH1%z*df^t**i5@Ghi3UZa(-Opj z0ErOuMV`PX0UgAh4ATPt>U#qlry<0CZ;dfwNYCFNrPUu&?e}qb?3aG2-^K|Cc;$O* zZjc5-|NbbrDy=-fkAvJ5dlB_9TZ3M=-$q29-6Bk^Vxkki-D`Q_pNRHgW`nqj_29t@ zV&}ILtpzSzd-}jHxzALgU&~Q>zaOSV+BKeQQHJ ziZ2Jha#6QgBgEdO@~3}P;PYFDzPBOe_1Kbsl}8m>jS__X_~EE(8MX8^hUsg8ETrLW zk6}M*ETe?M`%#n zDRf`faJN(GSgna*JZLbZrU-@#-FSS0?m%b?#>oAVHYoJ{VyY9`_Urx!KCxT_&()NNRCj;V=s9)5`K$kPx0d5dO4&c?Lw#)TnY_n@}s@0Z)nwI9oTK<`t&4 z9(h7oaNBy~scIo{x-Nl$2s~RaJkKXwZN2h*q#(CpCZ=13#*MPmsfth=dX~=QdcQW? zp|7!8Yu47q&%d$KBeVODrAOq21NYkpxEC2&y4ii-03n zr}mAj1HIOjRGi4uEE}3Lx}#0=ZOe#OTCR z&hjf)Ti}?wOWnr3Y3LARYA**Z>{k)$<^ek^9TkLNE(&I0|a}AyDb7luq<7!j0KL5+*Kg6mLS`>(|R7 zO%{U(J|IF1ewRZ`Cq8ZUc<^d$D*cfweOg608_Yi>fiuLkpN%rk_~7DP+3)GFi^lqQ=!|yp4+MB&k})Wy2|60K!AY0^$rOXH%1k^ zF@@F%MRjmP{8)LZL~c|hq`%R(MI~nHo2fNUE=9F{ivX=iUj+87EHx(M2xdz zRh`@rV36WfLO1%T<)`Yp(MzS63j7w3#9LME-vYo!>d&tP2m_tcT>{`}k1F!xp%EpE z>i-r%C+^bHfCW&Zy_eHg{D&vf)I!I+rZo*Z{T-In)xv~8L%kF*#Y58K1wcT+7uC83 z`e?N}wd6s|dG173b>JaY^5nEyfHOQDtrj2>Pwc7%SjkheYB4#5?soy8=lMvrK#+J| zQ7sTTp374Uk4+U5weYE_9HJJ!D^)PmB0|}UA)qJMsNtX%f-AKO)IyS@=73sAjy&uB zZQb5G^~}^7B~eF9Eo5-&TB)@Xx1Q=QlmVooky;0|qbPTPc_(iE)RWzJGu3O<3b#@t zM=d7wrdS?t>^#Awo?twtCZbxHrBoMGtAM&^<&MZxqEx3-s{wZ%Bq-OXKvYULiduTQN~7Wb2>RYBvHFhc}mt=z}-ZGrj?o*hwZAiEb~DWsIn-T8jy z0{z>);axVK;#HvFVDW79tj%dejP;R^{pm z@aIc^Qng~Fd5wCar$<97^%8Y#=oG0|$&|m;SHXDTMke)qZ;^+d^;M8JCVoQi*Tyk? z7QJ61;WO2c!2j3AbkzH`eUQmidy0U33xQDY_tAifs#(z;82DE;D}bk(F`T?IZVQP` zwIHwubWuGDz`M?J2fW%Q&h%VG^B0aVfQ0K$og!6)U}0r)qhaC}HoT zT3$r5ojnb|a#dDAbQdHs+|sMf6|u&yYKIYl6aZs-ssF9jnre;_Pv7aq+2k7{LqgG1VMnB`L3}IRaT%8r|qFWvl@5re7#C zR7%{c1@4DPuO}-c`aSwxIC7tAzZ7ZS_%ix+{1bGyYR0jIP!Q47O8~UD9@Sza0A7zt zHQY#hK;T&Qe97mHk$kPBgiQA@wJN4}P|cWt2OrJf}UC|6P4>%u9>*ts@C3*i;`*`Q0lJQ zAyC|mTq;xRwZR1)wL)9m{iPO$05^H5g@46;OlqZlxQ$4yj9htDI|R{flY2(g!ffLP z5VaZ@Qc%q?BDs!!REv!^8nU`-vH0G&`XV9AYJ9pin5t1G$-HpC#{(9|0BP+dtOkFg} z(_;xR`qKRaKYLrV1KB-+vuNg|m&@gjf3@giVVVI6P&a`tYV{nb1K3_OCxOZ|tD40L zba^M!4F8;6YA^Yf3sbc#GJv~Wp8eL7-Gg8kHN(@z56rFEpDyx7Uy2N%kbqWg`St;% z7z|JK61oH^Q_(G5>S_-~zJz3ua#oZ|fTF!7MX+?ajrJ(IA-I7!PDQ?SdS9t&6eQd) zV20=y@DVs2d|v|?7NEJF3@?X-?xO&iaZ(ppt($f~8a?T}+c2;6WCw$DRgLm=3|(rP z0l+K0pQqUYL{jhunmOrY+`ed(Cn`kbs2Pw>EtoHw9f@*OAQ9^MjSmfOsw+2QjYZAy z#1qG52fq>{uq{P~w0GaPY8EFRao(mGPVIB+PqRO55DTyrJ@pQ$bDyAE2t-KQ>ZOgm zO@&XjQorD5>Lo-vAQMF?kOjbipa_;&GIwNv){{*<<;+63XlM?I&cF zz<~HXewTv~T!fI);I_6U^pyCFcMDmifh6#PP#)mY+f-##3rTzop+k(@!Ifa&2?dx3 zV5D9efT|%20j2?3kf+e$=j17pp?aPtyjt=dP-wi8eG61a*CSE-l^8w<54uaogaAy| zlTnhaH{Wj65eVtOpcWDYD{5+m2SV>Vp^zBu6e0N3!A-~V{ZojSdu`u9)pO)&aP>TJ z{tDH%U3Ie5?t8U57n+`L)@rome5wK@{1vUv^nSoVgf@CV^IvlNLq!m^z%ffvbt{4Ig%(x$O87+kK2@nwEuqn+ zLM;$VyoP$dwn~VpuTuI!WKtCXi6VfFszLyej(A#BJxGO`c~O;xguFp$>UTM(pr`Z; z<<cLc5NFTAbqbf%#Tuz;;fF$ZAwXEt0vR^_x_cIAgu~W zDm9$hR2@kLw5A7DPEw{U`&AW(?l*A_Rd^DG!vX&N%C#P{v+k0)?0ZzjNz`blQx%?+ z0oD*Id{ZLwGB<0h6>77mDpkt12-($3_{_6aRku<`_AjQ&7qH7Zd#g&7a;fz$Rj^WK zI4P=bfk*`;JypIE4~4&>DtN-++~=C_o#euDQ1v_^<#BI`-T}$~#HlKH0%)Mlj@~`- zR8>;-9B|fF&8n;?s%o^ZDnBURCcpP*i7lIHbs*vAA0~|60UgQ=rFW-XVBcB+NSH{M zjs$A8Mq;Bri`;dww2F}sz^Lq@yKt2rq{pvZNLxiKBcP%!(49xEGgo+8;Yjh?$)?qh zMD?;-wK9?bq;i{DrAZ)2uNqzss?PxANVzpd>Y@ zdYAAO3lROL@*lSENHh-6XFRq9>5DP>L6^M-lZyQ=)j5N7Ao3P7^DDNLc> zHPFUgwQ`U`-?Wt0m0?(TFZjMoz~W`suUzdQlj<&E8%e94ESyaPdp$KK_eLzzlkx0l zF7vmoc$PA>N`t}LsQRQ{3W%00nyH01w5FAx6molgYLzAh+z<0ZUnNvv=A_k~gvdH} z*2+%?ISbT>Q){e6-8{9Bz^N0a*7_(SYd`qgYf=GHty7JGQLTF#l?T;&VN=aet$??` z&wm}+of<}J@uWZ#?#bK(&Dp9JQaIJP)GFao;Y%$p^k(5KM8q1YNcC;qPANd)f_w*$ zP74r2ZDMTVKwJJ|42xsNnxT8-vD<9-0dU2^W&ZH-rS}a!=;qrXe zYV_1nYoA4TKebL^VOGBYGGFNqr`D^7bwIVa;C{qA@}al$6z|9gz>&ThYNf9lyIO!p zbWBpK)JxYVwd(0~>QSqOM4yju3q*8N1z)WZ8rP`Rn#-u7t`=x1mEhIdq0%ElEp8f^ z;sF`NaM9C1EkH$jJ*X8Hi_+?e4PHZaWVIsLZ58i8J_wmAxoYLwsq?K?S&91RYSmDv z_pDa?cxmXXtUhUCqGw@lA6L9Muem8Dr+1);@@wM7)U)i|zopih$noOgnWHQu@$kHO z<|m7XBmVBqjgM*>qTPG`EO8>Ei}&XR{0n5Mci_&xyHsbux7^$jrgsNLW$E5einPfX zraqg9xpW*?3*eJ3?P^Vn+%v4!qO+TLF;M9QA`=hC%x^$z;^CPaiRp8%7SMaF;^BGX zFX+aqmhDN$T(zizo5cI`1e2rVs#+L7^nO;WSfFRLTHGEIRA&HDYKI=j-_`&O7}HO$ zjA4j3etZRg4n*x|Ud94y&wl7-fYIS{zYDjcT-CwyxGhr|LM;%Y(EQ-b2$M@8>Lngl zOWTj-3|hIw-&r1H+*1574_F)!wV%uxWdd#c(VS5YpTf`cj7AS5KhT4r0!E~|RPF;K z`>8IKI}dc5`IU$}r>ZWMJ4OeFte&hNpiQ^2VjxFXoU+hNDbJo zZ~<`?7_D#tjV{4MoU0q6mioz+WoI>8a~26LhL3UfLxIHb9yqswFi{sNA3d1eHQP?6s|f+yd&q>srRm)$Y9iKig)D9z2;3k zC!-5@2;w=^(&fUkdLADcSyenIr~cT1e)?|!0v7S&jPVh;H9)P!v?E@eKa%Dq9u6w{ zs8^_WPZz->WOHhko>BJ+(43`R-y`(cz=#Gii@f<RQmGcYmnY}cN*vm%yJf?d;9+02FsXU6S}i;=kD#iBB*1gH-&W|jQBqwh z^L!x>)2Iao#6t&aEhu{l|^CYT3)& z5Um!588?8cl?H>2dMSVtacjR?C0-sEP>Wk_yXt&7aD(nsov&~VP!&oEPN)7@+drr;bLS6BGG{XyZ%;{CB z7EtQViVTGc`E6(x7pnZ@0zEaI5iDr-7rHGV_UWm)B?2^0Jwc6Ej08XIP0!Y-=vJuF zivX=&qFOP&g?gR}$oMY$DpZ>urs!5a)(%yXuh3-*|J7aSTs5~wNTEyEjT$|LPG`G> z-zjtq`tGBEUU=fnX_b}C*bvFEeTm+-n3MoP+nPvG}5;}3zAHzLWf|mn@~gVumHK%7RoEDw2yO- zTHH`x?5BLdBfmn92#++7=q`~kD0(G?Tjr#Vx%rjcq#lKgF^X-bClp)e+2Ex@xMc$I z0TSuSFc^0;A>#t>iRmJgUZyqrOsSVxf(u#b9^jA%%7pv@P`JZRD80HBf89}X$yWZ({!Qe?l2&oLY0Yc3h-VWuY`={u5LMC_F>^nkodquL-bK)dLWqyD4C* z7D85!s&as(CXBV{x*V~myHp)1Euj;)DklX=8*D>W4p4;q5JvQV4g3x`TJP5yc=A)_ z1k{33{;J{>0D(&JI<+RvpPyg3X!xqi5Pc}yiK^lt8x?Mg)l*jlthH4ADU@6rd%4gE zkHiF3senjsM-Wpl(Kz%DRksS_I=+%BU!`WA%}|x9uri7_)>o;ON;)pULfmafm9N6V z1h}NTaL|Y5>MRUCdAJA*gI2w+&%*Ex4Cr@3%0o`jFEIUrpy<~Lk=AjImJ)!E%%xZg z%emE6S^&D@?k>hs5*PAar=@`Nwdiszd~96qN-gLL#6|TkhfmtB)xt7IjH==kmWF`s zbQhMX^4fkSQe)k!3>6kRfv)sqEXLA%P%R*a(N+B^ET*s5T|x%8pGj3J76fRZq+TLr z*i+T5LYhT+6tzH9TTqpXFPmuFpcao%4OO?wXFI`F<*RVv9#q-YY{nQMQ+gI|kceB= z^TLfRVX3mtl1d*{Rq(>?MF>B7cW%jgPu26nZDpscvR=4|LTg&JxJNw|f0hXNceFad z&j(JRm4m`%QfsR6(*=yQSntkd^>(#7P`Ff&pshaRmU(a@UCC|uz!16%k1oX9{mRA7 z{aP6*JWw*SRxt_>_JH2&sdvItb56`aEDr^svS32tfa zT`NC@n|rNjm8Nh}6uqIZ!p+&V_f)Hm1Hj?RM987FstR6sSRDjPzrgL};i-CFC~gqD zD(i)^3#%l*%fYinRmclvI_PDr*2|y}s;n0tbh}Mee!BWr7W&l!G3{5Y1BC}a=g`VQ z;nCTYRpsZj-3YzvK^|cSJXY`W7S3|ip;7s@Q7xX=^G^&46l0WKWj7Om2h!1*1uf>S^ZPv2VIDfmEjF0K3k zAmo{6F{Dyn zd6w;W0deb5v8TSs07II}0rl=3f#vjM zmj{D`atG5Nh_`Z1MJ7h>QqJL)8E%+YPh7+kvLdx2=D=1Cs9cdgDzb(L!fsCjtaYOJ~VX2Ccge27bN*?SU!eCr%Kxz?otNXOh^&YkE zW_eyuhJS_cCCrCtf^b<~yl&gZUw4O$69rdUuZnm($>0(=s#C+i(nLeP4OAr+6DC}X1*aAhuvJ(b1zu#zkJ z5ut3wtU5bQ7pF`94GQ=wmQ#+jfoA%Zix$hu0d<0iUsLV?2tPbdqNgUq18mom&A0Hs z$~p9LqPLNH0!R%wK(QR`lI!Ej0Spm5x2#^8nWvhRJJ9Xi;i}wGC*o=t$~kp5YAz|~ z5KvceDcxm^by8L?28Ila+QMp4GTIIgf1 z!d#$zqIwA#rZYpSl`0qK)Jq-D3=F8A2kFT*3%k`$>4quHS38#!jxZmdA4vbG7F65F zNNcJE)rMgON~HH|i^q>uL*g+E3{cgc=%t5=q}mfbg%4Fq)Orscs+v`8c+9d@3#!Oz z_=(^;lW~kxR70wSD=crTm4OtWYEPs?X?x{3TsSkt0sf?(07V5{R4or* zfvZHS0oIyW*-#Cz*39$%svXu^xNlCiL+)4YzXF*b1uQ*0RyLr}|ya<3T$8Lb;h{EBbXHCmIOq$qEHZo@%l6W4hZ_i^W4f z?uJwEa&u2I)o?2a66;jzB@k6E(Yo>|hUYG-8CTqX+^Cvy1+3!IuCC1EArh*VPVXCF z>g!ixSYr_CE?nS?Pqq7+DYDX4yC>DQTvhW&$LCpXx+H4IJVdCTV8j40P%i-nJBgeiTM3=D|SuAa}02M|^BXAz(yA-Ov1Kxb~%f-2BhL15B5 zB+9rH)sSl19XwIBCj^2r0K4?=>0U0XtIrZ?epSt?Cd4nBss&Xp4|DIRTCo7*s)kfq z#{gBq^dzbydqlI>nR@)303I z#;O`%rJYcosvXvNIzE_cho9|jF{$QQ;{*E4syWt(fC)~fo`{C`eX8YQlyyWL)c|Wu zg&PsnOED+gOSMB5YUbUl9o9%Wo!EbJy1j9K{kLU3ag&1XVjQ_owO9@+?hwcW7s7Pm;@3NU2-Tvj(NZm)%GgxOQ7?rEauijAXQ6E)52%+y2CeL> z-Pce$HhW8tacSX%@FTXj7ya-Y(Bj%;r}D=YZbmE_Wks2F>Dj z&m=F=Q{QW049$KDiLZ4P8QP`9QdE>`*9_mQyBK%mE;B_p7KzbOihS*6o>x_r0#D+( zH$^al{%c*)4LFhNgo=DDJTKr_-Q|oOV$lfUHZ^2*jh=QW1+~pp!uPggJ_-&1Cuo9x z0TYEAdi3iD9Xg&yRy&~~;c1k&LvhTk8PHC&PU$iLr=t%B4`r?lLfW&qO7 z=COJ8F2Wozo@Nfv!p5A?EC!)8WHQZgO1murTeUzu@>OJLo321fv$$>0-Iq1P8%C0? zso4*lHYc!-o_b?acTI*?xCJ0ME}b_oSx@-2!B=-t;1fC)lR zxc33{5V8W;JakIcvn&fBoX4LfF2rb|LoRoqFN7R{gAvh+P+kM);5IV7`vT4@JGe4E zo*Vy1eKvdL_A{5TAB$)AbeD;E9Cq+4L7iy%qt;&Jb$YT%0WuT9<+2QS;_Auf3#>Zo zsb>fjR!~m>y5O;e;1TEmhmX)bM$tNR3i;FNj@I_-d8QEyLhubE03TlHo||GZA%y&a zwGSeJP*58qL;?=ACV=q~dg4YOiahAaFj3QJ%kOdy;Ghsv8(@3y3OzNd7xVa>TA-A> z2<5e505(ww@N<>~yxF}2Qs8zz_51*Suqu?tWiDVJA;2~$_V$Dh+d!l!UC5EkV>wr$ zSZ;-WNY=VbpP-yC`IQuq>q5q0bmxvD6x(PzwxSSj>vwV6p`NTi(nBF*%6LsK9jax^ z5K+}jfP47%LiY^vyAL7%h6hGw5lU|io+$~zw_XngHPrLHfxJv1e=e4lK2-%^pu6*^ zLcjpkZ&LN3HOlj4RTdh;2F=y3RdHIS56Dx6 zr_n&~nyZ4>#X}FO47JKtr===Rs|O@#tHRSN$XJT1{xnuttV}n82!sDsPXKnEcvZn_ zfT{~{M?C?!%?+RGB@l>xrm9q2&;+JX1q(?m(wA914?;ahR^zwnl-91Vzeot@lC178bsSG|kWSXWWy1o&$(jOfZdGH|#mJPl)j zXA=C%1tw5b8ERm#2`{TB%V$vfMo*m)GR#!{Y5CEaZ@9$=~b9pl?d{UTRKcN@VJyGs>vq~1R9 ziS!O>aj{92^_FN6_EZILECi*l3OQh62^{!py^epW%KE3)nvbgdEm?_mW`CB5B-_rD^0C%w0JwWSnJ6EI%-K;8R1s?oS#-{8UWd2`AeTCB9~T5b>1sM)&RIi`0cEBA!4Q4o~f6vnt!tGX); zrZAGKD(gHl4|w?VpFwD|uHsyg@SJBTERiS>xdFs-Qgnrzz4%u`KQ17i@(%=-rxV-zyDwF{`24c{eQOq z?%aR)FV27YH~fG8=5Nn`{>N4L!~d}U_Rs(Dr&RyhAO3m%$3Mlt`j`LmpZ(eY^?%$y z{pF4h0d>|g!kU;Lk+C;hMffBvuk^7G7p`bWC19r}I< zk8wH7Xv6z$9qwPZ;O29{S)iNpvRj+mv)rsOQK;5+5es0`afwa3eSFT}ep)duJI}Xq z#mYTF*`;9eyTg`Ci9AF{iu!(9IZ=x~`hh#d?o7>sZ|jc3JxIP~AR~zm-+nUiM#Y!u zYfp=N?|#cZ7{k%0KIc%s0tKC35MWqtMb){vL7)Igt=M!SHhLi-9%~rSNSW-e(8lwZ z{rH9&x;ug#iX0($g>qet6A%hP!6oSqYYygzi}93ea&Paq&kjQObZ_UJxKY{--%5>` zRLP6UNNGs@UL5RHNBEgUZL2(F=gZiOds-AgfITZW*U5bh$&TnyhHi&G!frXX_E)pRN&x*No-R}f9(2R~x$tbB-2TI}?;*}4cYd`z>CEj1)p6neS)9}j+7Vrl z83}bQq+eN|jm-!wy50|$$6Q2rFz8lyv}De{C2&&9czJ0HbR0!S+Ea)^bQE5Tv2T5;1p!W@lR1XeQ>8@k=0B)-+ z1lG;{bONS#=CYq3ow0Fd;2E{=h|DMB!GGHxkUzH@Q4E%S>?iL;IlkZ)1Q~z%qL*{& zVGs8HTlV1wT`!%FitbA;$1o<*%Fx)I8*B?iV@l(qs9X^YhD|;ZIqhRqBJOE&Pcwf!uqHgmO z1qtW}L{md<&5a~7RDqt{;7l)_Z%6N8tYo>CY2c=5*Qp)&sLS1rMgY^KHIPCSaB%bL zJ54HgakamW09?2Y@cZ#>)|Y-B3VRyuBy|^7>C6MxI)}2V$*sJsap$W>|47tJ{4EAI z;6h(+Ho%eS#uh8GqJ4aUixMK!9Z3=8TJaOzyKwD$s_xl&oR8-azaODe2O=r744O4( zFG|v!J-N91yca?6`KD8Z#!Tz4?>9#>>7oC`bb%dL@k38Y?Wws|@Y;YwPbqmIk@6U< zpHPqU-0n3IR^i;l<~H8YH~3krbZ2%Glui+r>su3I&o%sjb6kKJ&xJ%Q571nd^WN+f zt8tosbGhAxU=eWevD_XBRF$TD%?DLPhV%*{dKqclos&w#uQ|lP*m$4wv)@)Y6rB2L zNndb;s|2|M&z!sdC?;A02Joum;^rSew`lv~M)l``vVlILI6J;i&ec_A?0qUE9z-$k z%66Zq3-)g5x9|8+r1APW`yRos0ekVVZ;J8~|^<0{(oaGRy?dfXQ@r~mdWppyWD`~==^WU0PmHe$}2+5MuUx!XzOgT;cTXmKd%Mn}T$znc~o zvW}l~>!U;mdJp&rELsqoQbpr4tGEs@HUdITsjg!1olg<5_!da{2zi+^=sJ z>4_mt|_|)0r(q2lb`b%Aj~v~ z^4-=a*L!^bcrV+Y6Dh>+6N0bHm%<`@_WEWVIb_$g<*trEcPV|z1BCKh3z!(<*)_}} z_c4a+noU-?CR!YZ(D3t$UjjODcKcrMLho`v|JI)&oNmX=4eHsa*PJ}`><3u}J?8q)5-M}$NNX^QDsROtFkY~5t_th`{j9jVSTP3v z<4pN}u2mXPkp|!bcDTO3I4@fG2H$U=FFv}@*Gw-7aFTBegJD!Tt7O+d20wyL$1dFf&QocC57*Y_#*kTEf*2*{xcUp&9_ zHEoaXtM_qLD&M;5eW07)bj$NI_m1w0vc|`1!Ou=1!R|5~+6?6I>ONVoriJL_x?p47 zcHK7lAVgg72v;=*fo)!YMh-;Cb0y4&B!nm$9WL$2T@~MPyC;t)`e~wx^oK;`l`_oH zTm0k*SNURzf1EC$LZSu>2PT91Z_k!x&{UCp0PD5gDc~ZJ0ciOeR;3b(d!#(@YA*B( zg8@-c!_U`P2}FzD?_g>freF0IkdAA&0qUj^T-|SBv|Mg7{J!l*@I6j{F5kLq5kX!M#uZC%QcbxrytxOnKj=sqoLf~W%~ zxiA+u*n-Hr1!&~G8^tzkCbFK8bQQKHWn=*7arS3z`-%bzCNvg(M&Hhtglq zEmbdGX}02Kg>rUb^d*Wg|lX^sMd?7kyNS2_ERed^qn=E~U(ql)^m%E60O z@EE;JfLxBJ^gX)>_vUJ46AToXKp1+HAo?;l6)BN4w8+pett{Q{5Z{24OH0edYFr)n z!X~xVC&mBB*{MkVE)-J}X%MBy! zP+aq8AeZJ(Mzrxvzx%G!D-Qr}{>njA{`Wl~FVG-T`28SqHa`-xLIxvsp)`7dlY;uT z*mD3~-S&g$uzGbXSA;EaNj>F5IzdOPUdUd-fd8q@OfFAzsQn@6I z`QsjRppV)2N_Ngs)7+YfVe@xT;dOjfz!*m`>w+cZ#3UaHqT#Zw>q1BIW18aaBi6QVr z6#a8tCWeI~UtU4NK>qD6c8Cu+iF;`@JWn_D^!tM@n=c!n%wt!T`dDo2%W| z>rY%`0J`p;&lDO_w?CK^ipIOie$4!B_J!*KRH8*>!b$ zOnT;7y~4Ib(&id_h5LVt))Rq)-vobgwWXeL7wsw8jLcM7(68f;RFqMG4TI8QLUSAG z>-q_b$%@~&N;P*-jO8az`SGN9J}+qr6Lle&(&hPRQN~PjyyjcaF8z0|UJu|j$LtHM zrvOl;pWO+UZPRkI+ZuAt&Na&mkL4lFq6-d`9l8$Yk7Ev9kq45wK}O27I0;@dK{Pii zp?xR&o%N>cVu~vey83yrOF2G@-TR(3)238lc!fZn4x`|ea zi0;RQ%lTW~rO_z?1%NSsIb$NSDIQjvBl|*2IWHtPBc==kt(IJpm+~ghi;JHCA- zmuYjmkWEGO4bi343ddgbEyQK=v}{*&+`E_IOd6ktwPUZBaB1QCP{|a&M0QaKDpp&H zt}5JllD4~&FCG~KLOg?KOMw*iUC#r^LJHPLKssDW&$Ym+>ZpphcyDTf3kr0*n3itW zJ_9K3bfKJ%m>tnkE|Ql6fQPWa?Tgmts&7pmI}Ow0-#tjPF6&$FSya38RWkJLb&Z5@ z9&owqIAK!I(NWbWB!7xkyXI1)=!~ml1I7U~_<49te;`WV7lDxqbmrAAD&!Sc?EnZe zghKcId6(Etdu8TIl%RJ%>QpIN>q?236X*-ow=D7iscT;I^f(^d74|_8G2Yy*;oUh? z(S!xqdw3zQls9@63Q?Td4|uNF0@X0%Z_|)HYCj!qaie88jcna)G12GCZ88x0=l*To zd=c@$;b6?P$?hKUIzm%kbxm&?^82s_CK06frkN;CU z6T-jx$KUpb|Nk8d$h^RF)m_O#`Pd{WP&8`Z{5-q>?=R4WEArzzZeP$(JQa9+K|h^= z80HK5In!X$7xYV_$m8*4NwAj`e0d*G@Z+%j+oeM7D&IkkL_}={jXlbRXLm~k>DWk{ z8Yc)|r4(Q6r(9XY@Dm#yHmpv8Zu+sk=Gs+r0hjis555qU=WwO9RS`;u`?)Wc#HQ=6 z?OkvS-zj`!rsAq98^~~V{yZLErgZ7_6Lr+!ZElQS`amvpQ(O?{n|yBpv*OOan;b_8VbL^|CNFmn@VG z0Yztc3NpZZcl<=uS;a=s*7hzgg*P6e(+3+!b6Y5mf`lOtZU3bb^g&ux`MdQ zdspTJLZMKRvch03WB3vU7$|i{73?u?0bfe^V?hq-M6?ztbmLJ(ah{cAfCIiwvLlme zUosg-_L9{d+{Wrof_Od*s`Sg0caQ37j2qB)o}UH<*N}WKb-@g+%eDQ$tua=wpA$po zN1ynqqq8G*!$oi?LKb`n;~2Emah=FXp}p*@pnGI6VNa?b!Sv?3?}z(!x>tnnq)=*6 zRq=5dWBG1Ft6-JXTll_hujI9^6u^Vo$nc6SD{Z8I&1WR>5~ptynU;*TNzrs3iBGQL z@k)6uyFXb$KQCVlq_TqVAF%_T-+e_QBKwT7+ze)3e39<*L4n9~x+ECF=DyXXni!U^ z3!qg1p7E3Bt~7$8ZNT>hc-A9&g}h+Fc`OdEt_a{lv;`*@&!YGdC3n4=l*01!TGo&SwrkzTXe@!bv(5V)iFPf= z{u+DNwIHa>>w1)k1^+j3@7in0aa@Uh*RMF{#TZSgCFZ-b_z=P%?-u1|gSn*nMmYsplU3gQ9*R)9y zGRM+Yp~A23qWra3pdNd^f%TbUhDlJ|YXMVsC?s-7KJ5%8}iCZ~1JOco9KN-Il-I2{kN&pyN=Zcz>9Zw}}9Q0d&J?|tBQ*}F!J7pZp$i2R=I}YJ z(Swg$7?HzGL(hZsPzDDUXs8E&V$vUx?Jfkr4Jy>a1OAS$Eck0fsoCM^K+V zRngAsFXC^Ew5zB(kpZ3Ft2V|9fhDjUjptxv_s9We07)mT*G+4HPmFqS3g8*`h=PbC znQ$hK@@^fTZQ&RL=&_JwILh@Y0Hz(c$7YTgWvIHw{9saA->4ExGcrZt&NINS@2t?p zUOf&HLIU1z*cGb3b|@EIrW##dry@#Wt$XcI+D?zZi92qisy8;9q31$piO9XtYU`-W8Lr-dTfPEAAiai58gBU zddAlBzTr7(losFB{CQIlh;iiXFO* zWFazhfRw~Z($|M$+m%aIrevSAKk&h=VsR_92GB%mWZ$baUTNoeojP)vAJES!~gt@u0-N#8;oh6lj z^a<9(>?{l0&khx)fXj}dk2eXGm+5a`S!A;F$& z<_eo#7{T>rc47Kud^w6ahaw<#&gmnp3d?tEH<>*zVK-+GR@duVqzdU^%wrQCu*z-+ zq0a@V((?ucCd5ov0t_3y$S_t*U#tz5Ngm29=wSv@n!vK z3mZ-z^K#HfzA_EiWGG1s8WwUgf-I8e@HmB&k0jU*;K*$U2_s4shA0Jw!pjr=#)8Hu z)JJR`hO1-o23gLQqXDqjSd+ZeUBZSoi__l zpV8(hJr_GGABBwxd!NNbEw{jd7aOoU-jKd!IEpg)Kq0u~B#L3Y;!T3e`G zb@O)k6mX(A3u|>A%^Ez;T5{Y}gOsP0EkZ`yLbsqIf zWWrF9kjHi71&;{csiuCrQ2gG+ekF+S!y~#kVY;O*-qQ|;mL-c3sA$_c+PpL|`Xs99 zGW2pIEyymTjdNw;l#~<%5}n`|LR6}bB*0L|rD(xb7B1yO>&YtA`L;C@YXX*a98)$_ z3L7s8lnGt>rYuWsYKAMxc`qA$<2^A2l$#tB^-E4a`iXT5z-xsg zr?|GsBrCg-j=JwPvSL=o55XVQ8$TR$!%2p684$iVM~18&4t43|W7q(CE2qx&W*tB@ z;SDql)Ql!?dUC$(oKj!9jNH={6WoIA3uBUau3c26nk#9>YaC*ft<%Jqa(3W_f_BfRVa-FNc-crBNRX{vL?sbnJE#uHS?E8}3OBYzmfXxjA>$GB}a} z#!CAkP6?Ph4xq!SFH$Z+_co;zIRYHUKA(&j!MlscJ#zz|pD0J}O=kjZH3Rf6%hU-i zeipIhSg-w;fU`S`>sAqG;7Y#z}66&ZW>17tYG=c*#OQpr)(}QLH|dDl{RTZJBJS_y8#;*7Mz9 znt?b}pE$P(6d;Sh5lqG{Xk@TU6S?IK@g%7omW_6p)$H3n6}AGr+jOVr52#hWPB*&I zf}X`JC{@}d^qGwwWPR;2?837Uyh%^0Wq$7vUW8ILvs&F*WkiC8fcsYQpbBki>Lq2W zwzCKiE`cQ6Wh;Zm^zWn;yfM%Uf713-qaAo&el!-VB`SH0JiHz!o|iikQ($7^0oq6f z0*hk9O_PNa1vtRr1~R+kWNIP9JISQZ?uRhwupSvN78t|beZ_EZ8meP;!&g-&oX%l5izYGBmtq#B^ z+|v)GeA|#41E9sH#;KQDFs^}ulDxFclA|)a(;S?C2G|c5vffj5fllE1l7ku!xX|13 z3}+|vxUZj}hJY2=k7)r%`pqOL4Y`f{>A(r?toH=R0}oyDsrq;IXt0xNVJh}?=L|O) zc6J(O2AdSn?x$fzyc`_E33BF;IR}<*fdk$m3v^9>7ZPET3V4~TM2<=qqFfp0WO!lI zYfJ_~u_i|8PsujoOsUQ|Wf&ksokzjPNY3>76hQqRyQcFc!CXtC>mFgWlHoK8{4N+e zU+Ts~zKB3-Z=@z^##Pa|B<;qKilMacb#NQB&nT>N{6BcBgF95`QxOr=#P4{&bt zo5JyW?9lUMdxXVz(Bo>wq$3pXfkoXon@%#i`dolCPDA$Ev%vOgO$XeBvITm@(l-jX zL_KSF_$;ls+N^SJ*sAn5q0nVk40B|7lZi7y3QmxeHmPZsM*4hvU{W#XNbQg-lq!HO z>$oJ_f0t7V5^JY=B(A9O1=RMXkz#$~btxvo3oUqj#dMI$ZjFrMVKyLjrIB(Vy zq3%#SK(i-ni;K+gQ~d}~W)5s@Hp@%DL+0F+5`{;eQ}ukR2JlhyxiWL3a0D$zjrGdJ|y3~Wz7Qsl~@@>#x?+!)dx}WU@ZFxB{Z;EMvtTk6HYs)Fh*~nXE|rC zIvGB}AbCHq2RVzg=hAxPL`dr$zKn^)xFsX=5p<uGq6VGo{J5nDMKMOG#9pd zoMb8R9S9D)_nrk`w@7|GoI(Tr$xd{$0b5uWieu{lc;1Xh9cIbj%}m+LtZMQw0*?ny ze~<>An%TP&oecoYo}G7MuXj#{hePY}DI^8j#Zc<^!J!#sBf6EuqlUYoVM!-dshkmv zhXU_rFN{;me5#YhU2t%Yle-RRyusC{RtKE*cVmt_z0?Ei^MvClCBLjU&s7GibDk44 zpucxd+oWXOQmX^h=ZzV0YqL3l`$_L%q4B*wU8%IMhCG_mx>}?sMxRm{BW2iu8xL!U zZDBk;5Lo4NvDSA_YM}#|F`sOR2~x+)d6cIB)EFPZ$A+(CW?^%%4oo0>0GDnUA(L}+ z!n0Jj9S3R@JgBlsTZEgY#d6RyXJl_v-qLA23!(k)Pg6*j;@u%F^Q@&cqu)pE4X)mv zIDu-TGmPyZ^onVo&y~;4QR0-6d&J%6^RA z5Ws16$>}?h5m3VYu0c!(%y>7hcLT`C%$8&`VPVv=<36Rvjy->P=#}MGhmEkT>>~si zl_=6ZhPnb&vvSkIMn-srs$`|^C!A`pPnf_gBXsp}188+#m&`uJPT_P6CtHjK8E~gP z-T6%>HR7ttR|C(jFghHMvIA&otj-VGvq)n5O@L<9;H`(#aMpOR`_LTlRMinVfMfBx zI1tSXn>wvLPOcFWO%@&+6Yn1EWF_j)L2-CD8#XSP)`TGxevt-vgx~{yA9G$Z6xOKA z;)DjXb~fxAfIHllhU-K#2di!Z0DK8MiS19{l9aP)ZVsw`Xfjn~VaJvxtB=Fdn%M%l znay%jwFvVeGo1B9asz53=V&ds3r_U#@cvR~aN1kpd}GD_A=6Xh!CrnLxj4yfE5x$y zrg+(7Z4S1U?3SnW@-ue}%WVz&&v6RzUiZ74aX+L3gVQ&v6vz?|Te!m2kyEuwE!e^0 zWWN8Blh7(C z9)MGHwoP-l(8U?YgA`OUss#omQXOVXQk+>itG)v#bm&0U z;nFwM$nR=l4u#BW%JQ#H+WvGpiOxPaHnT1 z?iT5glj85|?qDvqSnsGq1=P7K=>RV5v1=bs6Z;7Foy@lO zkQ|BnJ==a_w< z`Ju5i24}i3os)G+jQ@Vn4YIMz+y#BJ*kkdu2T4nelsl=b%1{NEaK5j)A&RYXb$X70|q<= zbEc7VAdDEMbm1#k0+i*=buz5Q{L_ zuKjU_U783qD^X?g3};%ylaThv%6a;_!O|-@^Re5k zo{p8cwXoLdvxW9@oHEp`JA}qT>rowaccc-?fI){pHJc&rEFp460IU8%ats;i74rxy$Ix#(9ys8Q? zj!_ts3AkWscqj64-ctvHoPP;8~Z-sbCi5fd~aLrKmjc5uLjzU{%#g##=>bH znU;qcmmJ2koU+WdezFyOG2**||!}kuVomiEl6()qo){xH5(N!8$vr+Vv{2brPp2 z0GgkhV+T)ZLQzk)9~sdum9kpi2US&l^YlHd^i6O|=O*JF$UYViAYK{Td#%LNY~pEM z-vB2$8+H@<9EH}4Qx^l=x{WlYRi@du^Db|Ju{lmMQJI7dbMVsDG zXLopHdS$|N0eq=&Buhh&V?9WfKuOmc7Abn%%dS!TENUm;EIKlPID2~+2qn`FwFWsy z=|5(pB23tsH7MJQO-3?o`lu6NMd$dY3h&u6+#b7>b9pl52>H4v9hsHMW|1uwIF{SQ ztBGe8_sUU`;&_}@QJPGq+ZqR-N#jN82MIF$=xJ6Zdx~2GXvXjkZXqNMhMxd%QU}ah z_bPlAx^rbT9n24_{Q~^={c!9(+obS@wbDS!yWuDl;1AKjAJb{3DT4Z3m1I_D0S7$^3em>T?~O z2$hla!Jks`j|Z>ORbjNaX9s&zg0zcjOe*2ASY{yrT@8#aXFm&&xce*c(1nyhGg`R{ z^*X!pv*hUZph>{7PA2#0H*A1{oZbY@CIr8%%E)jm?ajim!)#R6q!p-XDJa+d0UUOC z2BF|z47N92DbpR;Z@uLW;4W(eY#!`wtQ{8Mhs$P23QnI)TUIz8B(~!s->mQ+8QrVC z%Gk)P@%@nCK_>>wvJ7d4-$$3s8Yz)fAZW!oje+%Qn+()c)6k_Js&a4uAk&!>$H*0r zr|vk814r?Y36KhL;B5*)2uV5cwj@xa&t)q^lV5j>D`}a7kM_aG#KK}2eQc_Y?Sc3N zDN%{{UhS@EiVl!_6a1weducllOH~>rT8&#|zY2B%UcE;3x(vT#Ld)W{3X2fgrvUCE z3%9nmjcL-XeYH-;*|R{zHeoSP4YEaGR`yT^p*-e%AKQx%2k6oFQe%H^obeXYY4c6R zE0g6D*~u(61YVc!>LwZT#=_W^g@*CeO(!WVc;i}O1H|b289Mc<1)d^_w3DVbC@e+p zzQ&R{5e+*&$>G$Wu)k#}FH4?_&;qk)XO}pynrkPWI6{P^Z%6`ByFwKy3zEIX*q}LL zVaP>#3jM)O9o!mrB~om^T9gANV^`iQ+XB z=F^0UQft|3`t^T z7@-V&RHXzI z-ZxeXKx+fN-Uj9bINERGdFV@Hm`R6yiSYF`He+QF88iDrlvz`+feRvwqyO){gnY94IdhE8l z_W(|0WU)c%Ep1Zka6MUgBrOF6q;L*l#=908#k~o?xbE8{K>;WBv`BL=OdE#=V?+Bp z#+;3jA(UFhf+LE@rF8*Ba}LXs93~&MaJ%3=lYJ%b zMGE)z@AisUWHlHf1t$`~XSsxA{v8`gjZE9zD+|i1_tI;BU1t{3rBm&mJ)89FtA=nn z3#U#Z>GE!cke+Tabei+Jr3>&>u~e!NZ|E?GzF8;4^7Uqm_t1CnyICcGUE4!obF)7h z93%|{!CM9vQ+Eu=#>B+fSxfyarRu(I*4Ii7^L}E}mOJ+^#4M)i?@pO}kaqU0B@Odi+_KPu|O6rj^8skQtrpT}ATFZB;NiR8gd zGQ!rgiV%;zlcgG))}Gz$bT-c@IRT<6Q{anoiaK^?yBXYI`ti(3I4)5j7zKqzfJmos z$Xu7wBs1Ohjhr&;Z?_uGIm#h98g+@`#`F!KNN-)LHt-ynfHofQM4z7(Xmv77UVMep zjyD^lgZ5#d4rk^(Hmajzv#>gzU2noWn0dBCwug{Blh0CSqj0{2FTf9p^=dNL3~$Na zWlVUs2RqG#iZRBWY)!a_#u_o;u_VPM`Imb78-U5I3JY>pbz?+riYC$8&{w(c_hNE2IFHa|U|a zHZrP5VNKoXpumQo!fHi7yIP?zVLSlG{4APvs6ven#LIcF$EY<^`yrJ=)(~R~7oUqnZqt6{L5Rg$>eTS~J61a6S#SYS~8lcjMsc z3UD11LjVDJ06o=mGSgVfKsBG_V6#tluC~3La3*#VB}4!S((xX-NiJ0bXRyuP-s4G= zFy)226c-Ou6ggd>3{Yeg-58gbnU?saCQzZq-7GG4@#Gf-Bw+w>pgqEH=%N} zC9`ll1UweY(yI*!ap$W|?M$6HZ2_@+WDl=2??_vzB5~{%=r;B&mbgi$wc#^6d}lbP z2$|e|GfBzlW5e)(i}210X;OhuM0=9QXs=TJ!YWn?p>z7`F8wH()SkkDQe{HUb)>0!S}%p~J*om5@u*GX}$A*Y&@f!wM09g3|2gtCJIzS2n# zPv+skda~atr_xxOv~_IpWNyUY+(0hFedDw6AMZLt5a_^MfK zgo-7Wl7K(Z8mZU-`UiD_e%+3r4^6qjPG@Km%`wX?A>rYC5a-uK?oer4kwSOU)HK)^ z{g8yGQ$4FRgccHDU)5TIY65;HqfC?O@C=|pX<}m@EIJD^y*(?45bl2&Fl?z*yVRwy z$;sfT9k+WY4P_g{K2?H(BrKF}JD5-Mode6m1d|K_+5s=>plJZg)5p zsfmww{Unn?dsXMl?Rym1d>6=X9Zy1UeG5XTsl`>$jxfTU1|>tYk9)`rJSJ@MlblIX zK610Y73mBuq*jr_iy&>E*SDYT$lcPhfD*&DWu2Z8PLaw8TSzkc;=Ie{OE*khcwq!e zu9M6z)!`Vb_Q>_f#B0!#QYn2mq*OfHtmUn>K=XI62M`mHAoSWUW@Rc;6+$6S>c_t+hMb^li43qq?EX^NF4A(YTM~WMHvA} zUM6@rTRXFYita?|u%a8jP(GmKII9E)*3g|4ZWH4GPv#Wf)Uy?)9eO2%F5yrfd2?CQ+) z179sPCi*0R%rnV;WS)?b$;Y}~vW$dg*9n}CB=hvHpTZ%W!t5mhqy~b&XQxYVF}EP> z*B%d6*zFz0=1dHbO6Nf4btZv?wX!4($_9saXGQ+L1G(#aha;7-lh|3(j-G+kc&ME4 za_W_xLN$LwFPX994Eyx}0D2?|A#TjKc(8yFj|*x_)0_3Q()Z_CAQojJp89GqFXve} zo*CP?hw3?CH%ps@8WEVsV?R6rVuJxl3Ic@_55A@$BNn{E!)TDH0?xx5W5Nv%UkSFe zrY%d0t-T}k#x?TCSN!`plg2^1&?~w?Ix`rM7Rm1EC6XUWEuUsU=dSw?E>zhPhqMcQMq!m+Fk#2*@>VXZZbw!xdk{#JyMdXa)vQXy`_o!|JxYW0%O)RW#}3o1u2No;NR9OCMY@U)ZM z6q`SqPQGbr#;=b2LmT|I#xdoR4Hf=7ZCZijluu2=SQ$?fs@j%>eQNAYNfn>~EBj{c z2;wKzwy=Q3L(ix+DbnYlZ#f>l!&Ta;vH`FgOYf4C)cwh@vy3`spKNVe(zrM4vNJL? zP2Z%=drRrI7kI@uC1enTyGKCba80E#c5Puh#OFy=arpF8RnA%9WP8pL-6K#s_6Lg= zWOjQa-?Su|DqSOZ@n$d+To-o4-T0k+$rfOyW_rsWK>73sN76LBE6aiGQe+K@f^8|< zj9xzzw;+`loXrE6v)=>AhNqrMV|Yl~A#i>r02fdJTiL7-K=)3k4GOz%C4)SmdpE`>p0gwjUirT}iN~0?ITy`0mu`!98 z;5kLraWXTiN`IF=GAK#eE~+l_j`v0EX1vV*RH%q;nG1)54GN##IePe#NJ-Rj$q7*x zDLR61!7(5Sp8%NLat0xkmX$GGdbXisVLG*3WOKqstc{~*f%%Jv8aA9VneE0rJN_x8 zU5r@(SV`UdwGzG&;DEYH@LdP9h~jYUB;21Rjd9D8GvxM%*OZb*{<;qqR*%DY9I$Sn zPL&*SI|yj4@THP-CWI)={AyZq3gWovE_MUjsQGoxZh7aZNgLB)Hd1CwN0{&|k=IPf zZ8`jX(61dF)Cdm%R@&dJySW_YByB(&46Lf_HxIXs^XO`YkL?b_SewkmWX%cSf-u_{ zQmnN&h!d~Z?86~ds7(JmDFoGQ;gL3(flLlXfYOvsbsz`j!om6A(je{%N6E?f#Y)y< z8BrlK?eqi{K*ODLm4%GqNSyu&*UBG(T;5HFJv!28c9|8^)uLzkj<7rGb{^8?ezLL- zCmzQnvgudCI?-ztoRxYt4pj1=?xEV}U0$&Fvp_1R(OxTS$dYTL9R zx+FQgYyvsqW^I`qh22{Kh;sAaL-WHY)Pn~#wpX^yNw^!YNE0h?yoH%k{h|Y=*yNx( zN8*OqSz1gF*wjZ3RriXF5j|N?;@2Sg_`>Gjr+ZPe}QX@;ACr%gVbAffA~DSW8w3P4S&I)LKMG<6k@ z{S3BP#@050YBwptE+eCT=D3}G44c$4=R+9M==rx}aO!Y2qfD#BfztOZ%wu=Sks!}# zJSWf<$^IO7)z6NHM8d)bv=)2Tuu;e5OCOxZK(O5b!I<9PTEmg1w)b#Vgg)VVO4zb6 z@Cr<2&Z{|2_IYOyC7o1_20&)09)=5@6n{7tN=Yq4%A{e7XU&yn6_3*c0_sybVclyh zx(SMug8;tkM#ineYhqB&z~zy~2E9%zPJuoN+yFdTQddK@6d}COybhFeJ~qY7LJ=d> zqq>m+ZKTGK;0;d~?~}dpLfXs@QegwjJI^UjUOWy4B@RH^-uRB7p8B@$Y#VX~mON;o zPquJk&PvvEnV}-%W3Rv4(jiQJtlo#;xswG1O2S59VBI}M2CtJK49_RZyema$2L3*_ z0lNiHII>pXEnJ$2J+iUm!AgYClL`=M=H|I}!WT!_MX_c@HvA zm;4#hJcARcpP_7zSh+^Br8M$#SmV3!<}c7Xoen1=Qe z3!+UFr~2Sz!-RKk?+!<7V1O<14hFjyzcCqb%J_M>Y8nTY5y%H8T}xdGp1P*CD?Y#p zt(BU(Vv5Y%y^i;W9WA53c%6q3TQfLm8=gaCNtFy@;QVjARCk_Hli6-(okML5rA zGo(x^RtR57XtbHSIo9J@>6$cT%?b{ntVTtkeV3Tv&-A_`2mL%EB>xIECR@|`KhUz-DyzZ90 zq%G}tlUJx)E`d$TcpupoI`vVApXnobNhr|2J1Xw2vc*giUovf2gX}Pw@C8_P-%mI* z9IUd3a>^OFv#)T@yEaBh#e^_P>QBN2w-buPWC0#I9aek%@6fzs9 z*NI2Ed;0Z2BB@liqbCVtwV)mmHW*Z3QRm{sKc&J(y*T*sB{9nsfg}x}G|9$s?(wcw zl~svEuqo=0Fg+f(*2$Ra9FCbP7x-V@_?y`gezjx@RMh}p6;HlKF9QjJV<*xPq45f-pI$fZFmp5Ax(kh<47=< zMsW`Zf;O40b7u{px5Js3cPyevk91FO66?k;HksYSq-U4HEtnWJZa_)ragP_-n)8*~ z5=vV#!}Xr>C}R;7#_T{zCi+e~&jfQ&^`wMwG?TlU!DMA1?WRCb2+!(C)H^06I08E8 zASs|vOoO;VN_v-z)Othuvlm;BLh2k-p-VY|qrv%u$z){dz`NT?1lFDKex#GVk}U#a zkrT2C=j5S})3y>1cQ0 zNA1wE?9{{_kH@}|JY6a@j>g6X{HtX4JxQJW#yL&CXD7Wo>}JAa4^0Cx0O~t-oZeml z%;+-f?)tlklV?09J8weu(i!+k4nWANQLfTFxUuBmC=LEi)Q1GOJX?uN>8{Q)jieFr zZ@$};1wPovFru7Va%@&+66l!q+*wY1rBLdcO07p8*2*r zRb1~!jk|_592`gK>eNUR5S7F(v@EFOU&1Y@yYqx=&tlRb^EA_$SxjmqK1v_3&OGfk7r|K9hlCy4nkOHJ z1oqpjeSyPJiZCo+Ux4eihSh?Hl}ET8EG>bzTS6s&vrJbr;jSf>nhMpjHkF~;$V3sm z%xO><55pHDdGKV&uZ$j2{hv(EyU~N`y*Xj1I6w`Ec(3IywKH3a_h^elY>I}3;u$uH z&|bgVWYl-#a2242y+{3wDtC>isa8I>-p`X=?SS86!yK^a54Yl4Vbw{5*^pL7 z-SAclrVUBsPDz1r+~FbA@;nQGOxu_waQ*5yt#GXAS&%spB@$G4V~)D(9+M=Q2l{4z z^A0q3CpGpxxt)$dvi=Y{NjQT)xR?3v6=g+8==@ydt$I7U@|xo5@*&|PQ(?e zoybY4CoCy|CF{$j^Cxl=?4HC%7WE*i#1*!~(l3y))jLa#aas?bwO~WoXaFKuo&ubn zI@8`oS{mr}01ZgsiA*a+0!HLkf&PQnuW!-;I)zh{qaMCm4&-9!xJ$DWM98#Q4~Lqb zJdDo9f#VW)&UKHZ73*PlH`k8PdN>YmmXQSy$8>|amozw;F^dyweYHE=)^QT( z;T0cyCI$?#c%W~EH*iY#bQl&dm9W7M-mqvFmLWB(Ra)BhH(S_+XQ;BJ(InWilY?Nh zKT2V%;O>nL-IB*Z27Pjf#kL0zFG! zsh(}2N(y%4h;RwqB{DMrrenJ(bi`YP_u#bj2Ja`;lVKCM?of^=+ehOz+WGbUNlG9W zMPcQvc(jGHS>eav?Xj7tZzr^@W}+*g{@u-4@lIfOIN?snfcrf!7st1F*4Y6px_;lf zQ1Bl(rm7C(7!+K|%#Cg}~VxGV)mp%(e6k`)uDx-437-j*Wx_hXmrYxr1yKo0nce2PVXh z$gJ5E?xq$P49~j-%4BEBmZURYfe^e>lNck~9kd+OI*WguG4QlCa#3aYJG*#b;#11z z?gKqr6J7_kC>bcNs@271$}}`Wc;PH790JfKmkJ1?#{rww71A4GTZzZ4&r|4g;pebc ztIL7U9Oepp=o-l;a)*iOj1S1<>K*u1j|vb=Jvib8I2iz&xr_kkEIN{m!Qb3>xKnyK z4(QHqIHlRh=+npvU~qd*pGeD}uphEvLcPGPkuhJ_r}zfrc~{vsnU=^vD8ATan<|~4 zEm=qYsiRBPIJwY*g$eMiV(hZt+fE%EVY9YOZvUDOR>hq{ztOYSa2z%Ja?{~pkGK6K zMWXYqRtA$~ZtQ+!O?Ia4gkp;P1k!=GGX#L+W8msDd}QJJ9bN0afb*Mine3~fZwa2i zUdq`3cdTmCgxjp9s{Mol!O}y+PGe|CBgf4lwFD=5rcbFM3q0OX8AV8b^>>5n>QSr} zw+=<1huuYCj^ZHM)U$MY>lW}kl;C;K8|@olrdqoO#3o^7jr%)E1{JpL8V^I1G;je3 zYDSB_>hX3)e7nYMq|&(6lWAsv3OM)r1dm~t*rI1;!mfgvQxHL7gcNGKONc>T>%HUf z-2@}O9tZ580+1|}EsS?qBjh-zx?Di=cC*aXil0BWdPEGJ8zs zRvB7xv!m|L(S!x)GGY8C$2?4v=X|Qcz+yOc9gn~P^X}yNs&LCADF|@-wn!TEU~mvi zIT>1o(vvDxHB&(XU3&Ut@~%uJU^|-eVPi9f5V=c*!d+%qLgpCQbCgPC7M$k-d&vP# z9wswFnQ6kHSr-6Kn6Z*>aq__@XwtHKwtE)iPI!kTRR}VOknFZL!V4m+g78W9$T2xV zvM&-LxUS5|%mZ@Md!g{bm9uHSU}GCbH5y#uM%oQL&CxBX<}_oM9rvIl_$&5c>g3pP zZaOD5L?B`SS_NN+ad;^NklTi18SWW@uxEBNob7W0ytcrR1gDeSu3D5m%lH_5DR4zk zc&+5;kj93SgftZz2)-Q2cfz1Pq;uG+X}ECBCU_Zeb8yBZo)0`StqkyR)VvfpU*8}m z>x8{^R2)svFPuPdC%6W8_h7*xxNLBDcX#*T5InehaCdiicXwEp-H+$}?w{{HcW0+( z&*?rjwZE>ash+8+qV{y3@k(ivLxeSnfF7rPrz55U;^e2zc2}-kvtQb&LBP97-aydn z(c?9E{Lc@F(L}cYs^48JX#ZaQvVWK!-@(7b>-mWz7iYKq?$LayGT*-YEZ1@39f)w~ z{@#H0Qh_G)+WT@y`kSW{G~f7flkgn@$p&Z(deIL%$sKO=1wK}=Y!}_Uw&x1PR)8+_ z2U_T0Qsoktq()}U4lZJ|*}UD(h$;onGrLZb8W5NWL4y1u3S9w1E(DEi8>m%Hf{TOS zOc$;+pB>{m_x`2YX?nL1-;}E4vve%WOa+ZvwCIl^|z1sUEJhij1 zcRdS^wR=FUlec}gwOwwTGrI<_{gZkI3onBdJ=!5nJ?W;*OKB(R)J`)6z%OUP62&+M zG)(NJzmqe2aFq2^DC1F!`%Q&X`&e7T4jvMNG*I`EaMpe(T75+|mYn0p|K@xNb&`0g zpyxSFcgX7$`(=b|gE?8r>a_95gbxo9Hb#d(lNEGt#Pi3@HB+mty)RIWcVt{Eud!~U z{py>)pi2M^p$HaE@;S@qlpz#NPNo$yQZgYHtv$>Z{%O=_6l|B(FBUkj3I?dBbS5os zg%fe^yj{Oo0j_p8MchXL#^o2-X?5#BI!ANW5bP(SmmWAUZjkXQr)Gi|1}=B}P4&@rF!L z@1Cktu|Si&9+4XP;;{WRe40gZ$pyOkKpo-!UY^-r5uDb<8lC9u|*M8n`b z9NbNY7D%I7-jekv7E##ewY1swZ;m3zp3j$0{F+k?mK_!m3*ay86|$PUlS(JQ(!gsS z4KaQS;>LqhRQyfZ~ ziE5zazFx@W)Wn8#Pu2VWldi*w>prz9+|F>%lE37xur%qIR;Yh;$pI4IxOyGkw8b{C z7g|r0n;RPrX<}F-{l!MYc5C6)=_Y+Hq++nGM@BB%NS{t7@d|o#`MPZ|{x+4POUnNG z$k6dLmKMA@tft!Nvy3n$zF&PYla~?4d3zA>m7&l)1EJN46xNkH9%Zwt@DozKfLBV+!^(b4UFWGviM$ zibH+6-nG2&&(fy3UdRVL^iBY|r>jsl_D?fMe zW=@a&jo;t`utF@;dg*+nmz^KB=se3@`(*zb9;sQxnX1f*xWd56=E5Z-5r!oGqqX{t z_A9%j6X3Mpr%hEMaR+Ahx|(`h#|tG{Wlu4!4D}oDYCy#{*E{M^rTcaFh0+EGRj8Nl zK!aB1({@bOZ`<2n8FPlb73+> z1aX1kkejb!nRXae_4yOSUUb_6ALO!3B-WCg165_t{MaQ~Hs{J=6!4>_x?=7Pg!=7M zjgwKiNi@pru=$_5uMApWh;_O;anq36{Dhg)wm}RnK9D4b*4R3dfk;8liUm54Z$}2o z3M?tX8K%PQ5OU|f1(*IqGY9x4#zfv8lA?I|f1{;5Dmu_Z6`3YzCDV9A@$>ApOmfXG ztCYTyvTOAPexI(`&sZ+{0>ra+`P&5%85^`3gaDf#$KZ5N4zd&_>(>}wVj=q6wu`*UnTeh{dIU`7R`4=K^G;qP& z0dEo0W$}ov)-t`}X!nubCXd?M96R!=ZDd1C=}Tso;U9fxx5BALqRFBB5i9&aqm#5c zK3+|)cS29dWB%#>g$s;8E8^AGxXDL|{=?#eLVm!Ip-1YeZ7ktc%DxD(6!`Yh)i;p+ zOyOD%TfuN;i9`mGR69zc0q~z`q?*uC9yU)X!E&2R%(m zLD>{y0)(@QM$}xuDyq4k4lSd-tkcA5EN!OjC2*vmtk^1^z_FMyu&u&zzlSmYXsz(g+;+$`x;V>P zK0jt_W^=a`c@^_0f*Kpha$6a%{v1%SiBQHq1xMfCvdusq-F?2*M{4I;$KD;Vs8K?o%4RT5jlk zqgkEo-QgUf4n};e%&zpHxW{sIh@kA_i~-*xxsl^6I!xWimGNX5`$x6cA!SYxIWi7U z(e!%;2g3Hd=;aFKji~?7x<1qF-BGLfRq-};yKB01F_@3WTRXog3DBYurZ!6r^KxWlH9PCQv)H!7 zH|9k;0ZcMJZ{i$QM-D%f&T{KEo!3;*3laPMs7O|a05!Fw9QhhODd)(U&h!_^&>UQJ zDYd}|P{Y(rNRRDrfLRS&$&{?AbLPFwGeh7$k4_XxSQg%mYs^gVbHXXH?Q{PKD6^Mg zL#~NKnHvQt?AKE*PQkl`jt}v=*`+fE`xZXdyw|}Mq$*KQZ}?5lvI{<7X10rsRg)5I zuM_4lmXwaw+SUi~B%QV&Efi3&sqIdnof7flo&0{t=TQ5^U>02wDPr;>2`nxAoa7?j zDJa>3h&w?%v+gE|k%x^s6cFl|S*auynR6RLk>=9PEf76HFmy#?Y&Lq1;*WGC2$#=w zCq#^Jg}<*ZidBf3mBvQ7oa2~E`CW9U|CPysn95%Pd&9XEyTmfP$~m)vPKWsS3IjFl;q~zTVk@6zc8wihqpNY&^FReP=e~tdanVc$YG!g0zl&2mA?FU9-h(`-lqXP{IgMBY~(jj2aQ)x zvvh=EKAbviB8f-dfWLKU-_KqDie9cFkY*!GphnF!d@)}nF>W3k_?=l@_T5KwFF`0N z_P|L%lmunWO6~UPQa-5>Vfqh07Y{{<+)9H<Zif4OtTHz&S^e%bXPVKiO9a z+Y7!%+lrh9>M9qiKkbFr@YbUl^M+Q z_7~Pt|DY%;MRwIO;pI3AT>bW>3*a3!g$nh{;`a>pO~H2t%xkk7I7XYiAbp10&UIJh z+0fglgq5?F*ZkQ%qzH3;7m_^(_ecAo%T_H^ehZg>#g}VE@J!}Y<{+hM)pCg%(N!#< zM}nHv!|ejTBxCgtY-F%Xk}t2uisF2FH|c6xWLjBo=-pq za%?ObM&@C)qVuO!75i}|+P_6E@A})Ul2qHTx+_$8dRoA(O*i)CKqhqxZf2x%g917E z1DCiv-gJED+Ul$v*b66@4%f+p?9MUHuT|F^;W5$%cKpq2)9pQ+(iVT3%80||h$aW> z@wG$ALX4f~5G%n7uHGT+i{2>SPj(zxE)+4{MByFdk@Oqad?;G_-bu`euLQ$-I9a3n zYIspqr(!>Oa3kbgBHiDE9O!a@YURNd2y(q6c^7avu^xGLUGp76eVqb)Smlw^eQpFa zm;LW1!S3avj#yW}wi_;e<{F`Gh>-m>8)RjQmrx8LuotP>zTQ&tu-sMQk?l$?n9_@z zLlpd4F)_GvgqDd~t6Ef3*RXz!+SB1hoX5eXT*KmDllePNI!&9T_ZpY(?fPuk6~v|+ z?%UP0>hd2i0&G(DQ-VyCS25B|16DEA5VBos4%Jpt940k~nsiEF<0to465&gTl(=oQ zV|!W_>j@@bpf$pn`DXyey(JEac=H0AxAZ6n1aw0j(#2onOv=*j)Fuhh4Ys*|f4kyc zITnQ83jtaj2&YUz*xH13H|cS1AaTJgo* z7x|S<2u9=}Lo3w;vr4^7hF>@7rsxEMQ(M!bZk=JBF4H*^9fk?oodVs+?E;C0m#EIIleUeg+C zdbw}hXlPSk1)ygQxg%xjFEwKua>pKxWP{;&nHgW`WLbRb)G-GQ-uJ2UAPj*?VvMHY zoFJ-wiDcy&#$<%eoyXJrXm;f%-t-XnAL273YoiI}4!agURL`i_%ylfVEG(8j^)MbS z*}C(*T@LpO+#0rUa^j|;rk1?AQbwNzI;tnyl&-zk==qR~K+jmBBj+6BbTKfDpFZ-F zCD|+xqAu$Z(mAyiHq%E#>m<*b#kl_INTYyrlg(mRkE*hr^H|e-b@|BxUeW}z$UD%O z%k?q^4UeYl(q)qGyYexKaw8#GKUX2>H<)^95RkuJ8cKK1h_sDhIgiFTVpoo5_gchV zsyr2{FC7l~j#r8~3@;Iu1*78D>N2*&x*K*KdPiuYMy2ZQU(0c)oba?@DXK`p8;V+| z0+iZo#j-9q)6yKug|Nhy#2fFz0urw|5#p_@GfDE;5py&IJo=_M=LT>!kS(vx;5RRq z*xfHH9rkLMK0hIT3icJs<41$uf$xKQ@66>9t-{X8 z3g-Zg^K=}og?td8-3Gdy$S#)x`iCRxp}ilId{Y7D-^m?FvK&KxRx!IfjZ7>nD6ESA zGt%lByS|_kTAd&WrMs}^$&(?AW}@o8+TTp#Y+N&M#+_G49$JgVL(&PdKV08dpSkFo z-Y4?gdv41z9(4DaT0aE6>O=O@x?dir!TmMh!k5ioMNiN)&4`41k62+NV>UAqYI2xQ z?-F0K)6)R#v)nMVq zQ6H~VaVReVd_mjv1i1W>f8jBG@QiU1V78p2;nhFGv_(}{WQwDr_Wzooze7c{#fXj5 zQy*=7HpOP$cv+I5+(fs-*zFDJs2=-4Z>dRz+;=yGn-JVkSN*f#)*gG8?b#AACfZ8H z;(@UmU#o1E;G?apZs?D&J4{Ky(i9FjI3&PHpcLtA`w10jsu}vun0AhnKzGM!hM^~9 z=Yu`!&Rj7>a$$%)YOSsAx~gzq&dl$xw|Hv-^dM;%33L2HgCV3Hp@K8}OJ4Wa=p|l5 z6*)`xeKb67RCs5U1He!-v^kb1>WOpuq#;~6a?RbJIubKjhPqrrmb#0FsYig90!Qk5a!jFu+6eLHLf4d& z+m6bQ?7r`9Q9dnAn_?k^X|}Zydouz_(iwu`Oc@fupVSz?V|>=ggGNWk={*tiOK=ki z)A*wkL91<69rczeHihS`EaZHCW*FGYNay9`1U8x}L*ot=7CI;7m|WUR01=zJdaD&< zn;;3!rxo%(Fru9U}Wxers3xG3ciTv!&_XELWV?FGlk7WN$oz%GPQ4w*DBoQ){F}AFnI>g~sV3Etk{g&j5xTAV z=iTmkIVH<}UHM4!=%v87A@tGn=V%L}PFDa%V{>KSkvvB!K6%~xIX&B~nJ%_?OJ$-e zcW@6`BF#DO>XBxb=jGooUKj~7OrQeATx`cRDO)J2D%6M-$#*p~M0U_UdBg_U zucjxyIYbzx=NToax`}j1xLCGn7NS{TM2c$vLiuYkNAKhsCPa=&-&9|XxbNREf}D91 zU?Rq;FhY)*r>&kozNe5s&R7JXaKl0%IM z{mco3I~(e6o{%vq;c}THGr*uNzATm{0d&HhZA7ENm|i1qTj*m{aczvK=3$Mr5X6}^ zJuyol*pYBC3=KaSB91-@l5U8YvBjYq^NENk#GQo!nkRgxh(5W?q{i^=mvCvVYmnYN zmvGVDq--l7Ziom>50{3PjHX>epjRMdW+L~Du)~N=Yp%}%tC93I-sqo2#fmo zyS6Qrd#f7a`Hmap?8_Xw;`QyR03m(ccI5Pvqg3^%ACvd8sc`m=M5GD zIj)NyN%Q5Ouc~Jz7*)_rG0XDw#FzcD#j#k(g{LkV30OXIFjQMKtbpy)SC56`tvO56#@QgRrx0a}4uiB;JE;peVCwb;)<%JD zILv1~>dwn=u~Gr*5ocjhX(KTfAJnIfbW>_Rz^(pasUcxEuwgd45`13n$TLsRv!{Rb z8HqU|tD!am_CjAhWqe369|@}vKps}JZf2N~bQ^Ly5@I6E`54KX z>WhZPX0smKXe*wP)vSArV`*vK5zOd9kzueLj@Y{TY|)Y+3*D5VH@}Du;~qZ@UB?Q| z!mD+1m2D8&o}r$2zqh_P^ig$1AAHip$6PFoChJqv2=w%aQoveiNkH#R=I`pkwMPxL z>xe@q)Kqx2#B4GV6tfB%98(d%8epJMG*>&N`SV5&CD7Ypqv$k7oQeE9T1G zqLAp5F%<#vex^Snlb4Y|iG%7-BjjzIdz4OxQDjW{3>#e0XV_ud;_3qqm?-0Hfj#S% zPtmmc3UlObIuSB1bZ+fY)zG}rbBEEa49>Gp~SO=4cv7?GAqTa*4Rac3O|8@MVpQA zpZuWo1vl)2scRka<^6PV3PFuI`nIR3j||>Z`r^xE+2WQaP$cm&l14#M6h{=iULT_M zJw%3+J)NqGy!F&|apvbaJwlD5k|QOBX|(XSp_JT8jt7J^Ro37P2Tvc4ht^;XL+r>+ zJ@r`QwrT?WDAN?3o{#fOKd5Ml@1rgQj_xLDX0h#&Dx@!l+kSHDXsXAWjCEMy1>!I0 zw5EI)%XQ$J{J0L}V|>e!fQEXq#YTB)h>%SD$dx=yI-P$TPlL`Yu5M+6bI6e26;a(Y zM@eAOXkT%{p4mXFTVjhb_+4xe<4aeR1jY5p+vozM3f-__cs@9mNH_c7Dt~5!ylqda;$%!#KL2t|sG6MA ztd#d*4j#8AU&FkVSLMo?eg}4Ooe>{D%T#{#NZ?1C!)9_09;UE4&751&+F8Asz_Vv8 zp{W@f1=qKgEH-?r)hUD|er2{A{33KZW=tM)$D!vJzDN#A!>Qev%haQVx%d^n1{ZUM zR4%*B`=8J`;e4AZ%pC%z?QIlU7rJ~)jZ z;B)^z0pTujAw{UuWFJFI(}1-jC|UP zDNKIzuxc6(ny@gF%zIHw6Wb$~#SaFxA4lX^5_ylyhmux~u-0H+j*!<%^Zq$Q$yd;q zfL7td2l=XaDD9@s1QU;=DJS?k19|4Mtkk}+n-bKpkMhm(Qm$v2%c;MwCxbg0UdIVs z8_i_0oO4g3C=}>c87w)?P3EzI>6rCmiAO#c4mEpO)LlrZsayp*o|^OhSriKUG81Lz zWOdF*K>F;Aughnl3ZCcfP)6F6epAIXRe=iQ8Op|jHTWgIP@Vn!e>gy=V^s18V3*K^ zVh~uju#O3nN1ZrE3sV@E*ur&G&Dr4WW#T7w4tktfdMYa%vEkiZ3)eBpevh1yiJ2b6!8o`%fw#mk8cbsJ5wpN_ny4ttlonMq} z6tw*AUl_MLg|f|AE?1AdnvQcxqmIL$S~EPWVRIR-j>8UH>3rC@~A&h@F&Y^lbl`m=JpsEUzE%M!AmehU1$ z`K%?`Bs5Rl>1iWVr>r=qa;LR$-?Vx8KXUYMOH5G)GKi33XtF zXU~VD9W+($CFzRWDOjV)&{u&-*OM<#ZkD`YhOP$8eLW8_6vwLzuBPj#JqTLpCi0gCP@P?lt?m&!(# zr02gf#)@jDolSCfXD{=J`s{iBG}_72>~N%G^@PlM1%VvZwbNN;j;c00ub<(%wF?Ti%~Z7mU?51<58cuG!56wd0$EChTp()oNnM9le1&{&i+=ELLM3T&}k z`Kmlyr~DMGg*r|>0WJBIc`P5Kw8JfQF51Ryo!cIx`eIYBKZJtwrhoXu1)cwx*8DCq z7IKb~l5pDf53C~RvU0kt*7vix{U2PbDqwvy)KLoWHHs8nV7WfxbeQsuj-AG2laHLn zZoP4j*{5X>j@YNqRY5vOqf=M-KxBERM^t8V{1Dv;wCO+^?S$z-+|42ub^F<+ zS?NlRAV+Xdd%J@s7XjyHQxr(YZSrCg8S2fH+N{*$nM3HCWOv^I#{<6N*wo=p+^5a@ zsL=iBkxA1tT!LrkbRZStM^o^4_jxqz1d(N$-1zA3Rf^J4Q{rE31W0GeKLxF|wK5l5 z;$x8ma9ZE6yRjhBHByPOXC_}N+#oLibbZjWMeiuaUqHr?h1ks=5(IBSpKHrpvT*REqu_ZfzS5eNxPZa&psdOs zoFP@}i2);==Bby@n&!Ec9)j@Ysp8H%EDBd8dt8xamOCw1@AD07+Moj4t;GMp)(ltZ zxfr1|`ByS?#{7ii?nV4HiFWd^El#>qSHg~&qBxi>IHSGFOOq>O@jti8joIGJ&jU8_ zJ!pbMtwR;j4g0nA0!aVG-Ffw~0NO{(HSpoX344ucCGv^*N9Ki5)Jg=Jbtd@`#_@$3 zIRMMgf~0SwQl!3V-(yJcgyvYmSHX&1vP!YC%=-SfSNkQykgaDQw}8kr zMN-h-xIeRghm~TScQ?s$CRn)Z%6@yaO4#>0*b@l4?*7qYAK*Kp7U z2k7d)xdvw4~bv3Y3H8}s*oVToI=>Gq(ndSAX%$mz-SZ=-x42M(S$ckV89z1DYoR?OMg zo{ZlO`oCXRxW8|A`^^J0&v6_5U$5j}_l|3}7FdAc!YxfVkR#)_W`TeH^Av;?!a#WM zI>WSQk$~`PJP26#)e4mH;IW^!+!#YBsPF%7`gXyn-vKy9z*g__dj^*6A^7_+w7!8l zzw3|K``tC|>#dpR#@ccbbG#3@+jm{%GCI8$P7meg)NFP5HiMn!NcJZ{JHYZ1Tz_t% ztNxN<_XY6LWJ#{yO?w@7j?l})ygG`oknbyS^Kmi$fn^;x4sAZEBlQD|ROsBim(F+CW; zL!4jlc-{w*-U{r6LA$;twUA;`VV_n;keM#;`^#>4uFrAiBT^mz);sVK>GiMv;+=%& z{q68!G>cvfUM^&owAkIR`{DIPsJ#=oeg|vbmHLFX1=emw0yJb%zasyTRF| zM}wkq!>E_m%M%T19AFlu#)PXgU{?C^EJYd^KQ^| zH}Ipq&V_*NAxGDKuW69WBAsWn+zCY+ff~U5{o`H9K6x27_$GK*)wdezn&xeVsrxn7 zY8m$#`#l2kGSZpszqG8c!~PmRHlWev(Xo2!3{H-{nU%7CMD9uy&O5@y-q;51+&*mk zy{-B(@%Z6&;}L?|{=VUMl${$3WnN#_b$@i-T{b@xPw_)8d04jnoVSnnjaWw2x5wmT z75%n#6}Js;VD69ij_rj&H*o?u_gm(?zH1O%UO0|rg!f-mB7Xd6+D4{QF?+iOE+FiCwMoL4&BYx!z* zx(DI5G9k}*Oz6!t7U*1i{Y$fj-By>;;M(wQZ?8=>QuSNj?(GC2{$9ut2dE@_Pxw|% zVfpFh*jw?GRKGQ6?V7(CvUcuY7t~vVR)SDP>Z^9--6iyTsOqiihxSdmM)*@|BJRsD z$uKM2)q;MfN3j;mB)=|W?#}htx<5g*sdnd!Lr|~|9Rv8W!OeHiwT$IJQSVF_`K2u= z=(xuJ@slv{WPG_h9PoCR`$lL~&Z4)y?k13r|Au^W5Bu$SvZP~PaSL=JHH{2j?%#u; zGjw@9o1J)qp6AKlPosIJC#soK*W(xW5qzed^uz}x78G9(gv+*D;WrV0tq>*1ZT~e$ zi)ZffeEP=4&j<2Q^DRes0!#*$78oD}?KqL`^z;h*AHlp6gg>h9^RRr>0S7HZ-mk%T z>WbGwJ}Swer{|ij#qBPS5}sSUrH4AdQHhrKUQ$xgj>^pN^UhPhwa3E@226$&# z_zi9TJLsYJSw0DPMUzPA10LyqU)Ki@>w|zFV))#hAq*sYFBtzXP6_z#AE-a!A2L2r zHSApl2HA|>A(I#n#*L;}obTznwr^dg8-+K%4g2vr^Wydyx?o<5l zmegki2~XJXu8S*Nr z>k8<3&OC7WbajIebnCN(ZUTX#*#~DinqA>7=b{@fpuC^L3HNpTJ@hKV5G^cQvFQt= z{SZRq_d8Ao-HuTF-i)}O@CTn=Qkd}_kaxwcyUf|`mps3A&A%S?3%|uY$Fa=QAWa7c?RVF`Bl|$q?c?`LUr0ENrQ5krPe}clrQ4fTZ>#DeOcpozwR#F;SYYV zc)Du#e@Yi8xxq&y5C+|NH!(sUPN#*uy+8;&clTAV7fq0rq2zNPftHUaapU)mK>@ed zxgZ5__eJ9L72wB6_lte5ob}f4s={rM(V!TGZ7r;Jjl=Zy)$zOf{_*pW9|_B0zhZIE zXznE1+h^pO3eWlB;B=C+WUjV(HyFqjR2h^50A<%5Yx}TdRg;r!7TLPw>PJ^l z@UT9FL!x)-JAH32iiLcH@s_35yMV*FK3w1{8hzjQr{-MJBJg~4jh~CR9@yu060HUf zc&82S_j!5P;yom_Bdp~Oj2n4#$j;g78d5yN?>ar6U$@`xI)8Uh^b6*AINQXedU;*8 z=d8Mopn^o&pIEjbzHZMTU+Y1Zd1|%M%{D!c~*4D zl>Y8jf3lq=51#(e2;~e|DC4+t}q)Jn&{Y3`-A=jR<1JJMu0(qytYye~Z% zx|F=4f7yA|c8(q{4nEvXN;$G+`(^wdeAqj8adIWA7LpS}gY`B%-}OSRh8RiBTISvb z&|EtZ;W`>KqsRjJzXRnt3!>>Qrc*cpB$-1WK@R-)fJdR|6%$&4=TZ1zZ#Bj$V?6AqLR zt#pH7f1H&`jRjq|iGfd3DHfT02Tb5Ve`lSMoWru%seoCDl=h>{(D`y0roQA}I)Sw1 zeYwaDhMX1l0Y04UDwRzqOZg_f4>&cIonD7mW;)9b5&fHcT3%SK=oheyV*QpBO0FdZtl5jK$Jg>X>hY;){643Xvk5{E#kW2P zmQq@URF4vB@g$3TRCtfyC6j7kT#*E<4V}T8`dP=@qcGnZ*M0=6;1!}=EF)~)vV6E9D9ZYbpd{|j293={w=E#u*ZK*U8kIU*_ zA5aOy2(nfX4bH7G>ZXySw!oJeUG*@3uh|S>%_zAM2^NWrK8hg8tVVLz{LMzth-vl7 zCa`H7nmG(Y#LAB^VkC%R{eE(y%d!V(-zQ6>=o$M?%&WNkSNkWL)-&8)Vnpe9vGj6) z7c*eTxK_qr#k+uBo4Pxj-h&#L--5%q>FtM-pHk>AxZHAHuL zUnfaM?7|JML31;{QGdSQay`=u7OsSqJhy*>19H|06Rw=I9CUz`5uM4c<@ z7puvW?2MmYoXY2zV@p^Gfy?mb*|a0#znb&L^|~tCbp{aeV{{*w(Ur4fF9r#yHX9n% z=Rxb%m0R)cdv{TWnjpH+VOO{|{#<^|9^}MX22h-tE*>DfjOGIobY#)<%|w0wcvxHj z8LxHkm-xqq=V@wmFJ`kFW{lI(;^2P89?_1I##W}a{1$!rMU>_qapbSjQk7LNu1N9E z3rK}8pcyB1wYS<9cA`*vPkY1M(=B=_8+6dcTzXX!RX8$EB^8nD|5-^E4j%jX;pG>> z=TG#_P@j}!p}$~#g8$g|0#g8={?7-1{OJ?Y55~D6nFwQm5R-4yhR6;JcN|Sd!_=MsfaP z6M5CK!IgJ6TZC;%3F+MNAlb&mq?o8gajbIe7p_k}`N{B~GnOu&2m761nA}p*xqrpQ zpD^jh!R%6gjUC<6;2%gr@T&8HR!*R?X*d+GCr3M!l_`n6JaRh` zFbOz8+p0c!gRetT2B&{>u+L%=Bym389hzTSMzgV~2w`#^?kU^2qYhvD{CO?Zw}wJ_ zHE_Ox;VU0!p78loch;hCM!Zz1A%n3U=C{}ARdm+Rz>_?-ayb=|y!g0eVYa%O9#`eU zp$QX)HF@f1@f_pg@v4j6D$6qQ5Q3_!)A4kK;?B*3+5wK=6oF3OLK8c&_V$KWnW_@4 zsd~4<%Fr8>$uPitC^hNSgndlfH*MRu5*I_4Y5D<-uiMgNM$^y49Lu9)&bryu?e3lm zuTXiNsWBo|wb!&kZ%y6FKYXQW5W+-nMbDtEO2V-iE4TtvzHl-W(bEX{%^WkXe|Z{CaW0Hwz-3hE5H={ljbdirNO0Mt$ZOC; z72)s6-V>#S(n1Z3{erKhzQ0Ld+;N&wbaf@M+kWM35zbu$rcGoT^DT?p%APE|V#GME z&LNj-Ydl|IzF&8)(8l5<>hp6MNnTe9Mwh_ZJ^xl|XmVNmeBDzMOg3qpitGpdpPC=~ z6I{E0=;43L{J*Pt2;8Snr2m_m|Bv45n|e6dJGuNH9cTK#>v$|+-EN;7-FI1C4#U7X zFn&Fsb_NQ@B(e@+C0|zM7AT{{=q2_82Sqn=)5yPkdxrEp&xYp8u1ObKX6V4-D2pRa zM_1=d-MXLM#qjWNyBd2xGR;aP)!9nO8_P3IS$@6ite%P*fYYOK;m;DMVsQsDl;zKL zw^-j3{&Oq(vqa!hd{vpNZv%V(C^R`|uH|KhJmFl!CCMmPzy7lOKgS~7b-*rkh#DvL zN`{$n`&9Bj+l?e9Lzg&-aD7;j@-e}6AVrmqt`?;9G0wucO+Ppw!jAcLyHv~R96Bq7 zVRx;WSlR`~0QhGx*!xZ$4&Q2dH3h-ZT)P|{;j@p4&+nwAL-mMw7XY@KamM)P(aUD( z_*>~%Xv`T#@4s(ktlpG655Wc&iVZFme#U3jyvb*X0EZS!3sslmI*G-r;O-M4ENc%R zap;SO5C)Y!1s3vA_$Qqx@0{8Y$?<0X2n9t7nCW@dsJSn~vPPswiF6X8n7NZBSyZ3< zMrjwb%Hll;6dOWH_Twefi`6VL?(mnT^ChIc`cS7&9`PgjGuZGIZ@36<>6T@4Sz7kL zKek@QGv<3za>X@RQd;JWwkpL4#D!FN5ZvO+GA9t@M{YK#C1r@upSoKh;17Jni9;8} zM@b^n7R)AJssx(#QAIZ%-&+mNAbu(#E8~l9?m zFM%Rg5__gK^PF==1dK}pmXt>Z@*$SxPFX&+D6_9pP48bn>1c%h)`uw6pAvddFoQ<$1 z?Mtm2vKU$H5@HEtP#CtFQ|oJzX-THz3lW#O+THDpS%JFZ5xUzhpaT-*X0cTV55fp?*L z4t~x-!Fbs)S>Z{3iU|IF z(*Mi~oWp0mvk$ZKpYizL&B`g>r%x3Bn^`e7v^8}ybTD-KIJ%fRIsd;+%c91)-TDYN zSXXH90@lGKIKi0T_VZ!T943=Q@5JM><{3#Kfe;mc9vF;})%BtEcBl-R$c~f+P*MNBR(~?ezUYf%*_hIq63_ zZa(ekZ-^Az6tLg#DVJ54mz8tw1Bz5^3O+^q93H+5_EP>Hv`uDAXG#2)FN?2hWS#TO z8O!E2XKGu;PTlvDSpUnnO%uMD5y4U!fzHsCIb|3z^1G4a?^F3PgF9bf2k?dE^JHpE zFhYQJxK*te^zsU%R#1^Bob>VrX0?HC(<;RaU$_NT@qcCD!}~WJ$y@=dzlY&|QJ~cJ z=1WV!HK)2Kz8cd!bLvOdIM&lbbuPxelIrKiU*hogGDVsA%-`)N5VSI$76v_*#*)s4 zzXRdo5T3M|cU)O8Tk_zpp9q9?YhrU`nx9SQI*mJmwq{>gecdokDjSzvT5%#9$Ud9s z>4V@wXs=ymjzj7X;X}MQhTn29x6yL!Gz%3n5|SV=EfmsP98nkoc)Qpz|&Ch zH_$#Oaui}mQf75FST)Yr074ujr^#Cc7ijct$(b&iD%pjaM`oA{`UK8J7!yX%Z+ zw^I`;lt7DWIm^9`on=mGb7y=rMBi-R4$eCJula~{!QUJLG`4LMMMyrm5OQ06 zb>^)PJ1VrFJ56r!`A2k*K2`sBHC`ieB@WhPDrFQ4d!}52+el5l+GHuz47r+7rJXYD zp11-T3q})CAClQel+YdfVw+$v!Xvz8Lcd#E3=G7g`*7h5{bWNUXrEQ&RjiN}Bq*6I zxa@<4O?x@TFk+y8Iye38ixihr&g@wkSF`+4C+{?7fsrpqE~80r#K>z!7pDfi<0l{Y z_)At$;7TARFe9_F->Ad?eMwK;5c4K}6VGWsIH zuC|~rC;=@PGSOb4f1cz{ei+#;DEJh5aHj5_QcOzlMNK`?)SG6i_-Y3roAh$XG; zfTcsaK}?Gn)wndt2-K6nAi8AoJkJ*^iT{~v-w52AO=wlP_eRwE+j-mT=`M{2826R? z9&Vp02TUwbH2K-0;dAIWB}%sx$}U5zaaQ)NQnR7EXrS^zCU9WdQ1c$%E#d(NP3-CD z%4GOxJraDWrl|Pv@K9HQ$OV(8B{cms_EmoKG28#?->fxAMwE~z{20co{)ERQj)Y$}cEEfB>O9r)Wq z9yDc`w|{l>3`F!(YUE+JH1${XSO#-Y7g zIUoTgq(&iQouRr|rcqxEQV^M#U^>fgNV_s;4ctM~ai}fugZS9*vUaUs$-3M zHSUYDfUaX;{xK(_eexJ(7brKT?sb}VFz+$2#SwzKon+$7G7?2_SZ57wLK)5EDf*LV zc)ecMRS{#t@n5{e{?I={sn_@U)_@>9od7{jkH6%R86uN{*)cl|DDRg}KYo;w8FhE` zw~@P$#!aapv@NYF)^MX^Wk_H|N!%`3J&#+(B>aDjeM6KW(6VINwr$(CZQC}xY}>YN z+jf_2+tcr_-^~1Vo^zL(5jQd;c#e=X{AYYqA6-RTUXIwk)|RzctiyYbdo#^+TH;5P z$LxxB2wh@CGIHzdERTQsLRGnsh96AGvUm3#|p`d_NUZE z&B++lazgIB^@2~!gY%;|DvfaCF}=LwaN{Mt9pH*+;?`}3d7~riXK8YK$~7TIqK&MeE(mv^5-PRMTGN><-KvY% zSYOdkAm&3zDPz)-3Ann@v#d^Z2-~m%*(Du)?dv(L;*)!X#!FiCZUSo_68fW1fz7(- z@>h&97ks1BtO)ETgrG11#~G5PR_}X)OZN$&R9V^x!Ype(q1r48TvPQ*M& zt|WlI_Q7 z?vhu#H{}^#u3zf&@2k~t<++xH6OB(RhMgLPx9f1$IFk)KNI^27ONN0lHVb0(5>t6bu@b)7?L?KWVC0qID=ie&nlJIW+3S`uqKA>Xcm{s(-~t zk0vU^haPJ)K<%eN&G55Yz&6+nxLQdy@j}w{$zR!l5RFPT%6^<$HS6Q{y5f%Z1y72? z5=q2;WPNj6XW1vO8#6pdY-b{Nhr1@toV730KoOZ{R_cU*$BMrhJv@qH`3Lqtcn)tO zcU>P60N_8U?Z4x>emnpGod1UBYz>{PO`U8F9sd77uH`>KjsxxIwv3=uz{;Ivwgl9T z?4Jp-O$p+j^lIWJWv8fsw98Nh4OC(FFztuJC(NhOC$3VWskmj(b_Pm|X#&qF_p5XJ z?}2Dl-J&ZQ|Mt<<+1?$#%_O?cuub#FT;B@%$)g6Dj=Ls(Y{o{3CRy{io#?V{ODRzz z*W8g$igXG?u82(uXcFX-RZ7TUcSev9&A7Ih!N_qt+EFg$(ySDwV~^PuhyCO6vd zI1Imy>^OWxt0sRh2$mE62)Rly^4YGu`a=%ZTG-I!B{c1jbCTxy$@qQ z>1yP{C%Na`xfxQyP3*%-8hqD)=Q0p8x`E2CjAz7gjipX>o4tbC@CNAEhTeMBIU*JR zAvy*24o;q5wMcGkgYY&6JxgQ8Yv^>m;b)-u@`LFz;0I8jjy zw?40sRQjsWC)MfIr!9zSs$C-FF+-QEH{16nptgj9&wM0Vn-Dm0QtwX%q|qdA7*CW{ zaiaL@9Eps&;NjwH%hV11Tf3qLb?(v09w6|TCtnf!GGgKa?Dr*jlcD6WQmt~eyPlPN z^d@qoEt1QzkP*wEMrEd8KJ<6=`Ws4I7`i-n(~z)M5$ju%dj_A|GWpMwzpQM16?D?- zdlQVvVKb*w>W2qX`j@tOl0|Bmu3NNPp@KhRi|FAPec^@y_~A4DpU*%yT*s_FHj%mQ zqGKS_M(fA7!(BpyK9s2+$JhG#a>MOj`35+>=gz8tldM_CEe4A|bZ@E-I=997QCIK_ z)rjAl2Kjhvgl~UW9BguQNv_b`jStd-HmG(fwXZYp>Heu3a9s0a3yM<{y={CmKz__b zri+QX927rgQ4ykI?H3QS&juS~QS*BPII(%0Ct2$H<=Rok+ZW{Tohc?7ya8o*2Z6bW5LoJms@L}tE}fBc742hyVYMJ<*Cl@2gnB{|H~wBDh_U9 z)IDeO8U{cl9LaKSzZkaJS*qI)h!~r19sA#}2LeSOZp#$SH~mMM!c>suqQ75O(hyQO zOMxG!MCKN5=1_*!HbeH_?zyKt-34s=`vT>u(nq&4G$LdamuD@rBa4QO)Sb%^QLY)! z#HLWEiCQOJH0D4iHqx84ZBH7ieUpVX0q1Cr=<4~+m1NN^Ib;g?8l@*^bBC2AA0mdOldaSDzi;dOlZ?w$$(?~Wp$p#Z^SE0K~MFPMg z3;NTRv5gU2#q2El%bK&G_shjQyDbRGx!^0aZsy{ZdxVup$k3ibwvlq8;RUd0)LaNG zf)(B94QAy!^MZwm`jN5)jze%UJ{p7RYH2YZv?gF7lG;`eu92DyV8q;FJKGZJE;VWZ zISRGS%85D;@})Qhcn>s2D*(x6rEe#?C(;kNT$&yery|=aK9D9Z)>c?KLd~PcNCn#s z8BMmBhlJRuDvjKvk;4s*COiubEr=@iqV%fmM`sT63XzHQgrwo91VJWi$7HRW&BmLs zZ=5Ft?<2TjM|;L!LlhM!#0U_dOjUHcO~H%aewDQDkN036uTslR;&YOo3U z>8KXfvea&)W_y?Zs^*vs)cRD9D;KHl@~Yri6%WJz#)w`seDWS+w$;^fh;~p3QD~0K zcXefHU;^5(>nLs*-WooLgNX*FYywKvYQ_L#GqXFf)D$n=8={LWU5wRZtv*rOGngIY0AyXp4qgfK)1!UWccta_j7E69_cb zSXu}}3ZoD!P(sIF+uk5I{26!Be0XY*(@UfbrhC*D?F!e& zX1(%Ec+K6cw3rHeHkKS=u1j*i4}6e~vG&-ITpT%16OoKb_6jAYf(x7S|x#|eP%__=H*QK?KTm!ne8Myyk-Axg6)e87;Vh)>*N zTj21_lJ~s$K4rl)(L@13;na9;x($dF1C5%<&xt{zr$Sv9R)^kl6r;>$qCsd-Tdmd; z1oj%f`>0Tkt=bK@xLFQ1(R&tDhiqk)-;}r7$Vv=0pOX7R&xL__(4d&iE767ye5y~H zrE%61;YQycya8Ao5DHe6k)B$_rQ$1Ms!=xMg&s8KlBkDOHKdv@aIvX`oI741{o*!Q zMi~4UrOz{|YVBl5R6U!I@0!T=D*G7YfX@EZn#S^Tg;Nvl8kGd=VOgy&K+h-51<)7X z$$Y%)GwC5!8>oy5qj{ClD#g%k*Cx6Txyvg`ZOf(Qt0%+bnGa*g4_B~0Cnuk5+p@%D zY41yrYwi-vS+?{oZ=hOJjnXtPAf_}km%-x99$Eb^?d)uD;{)U$sk}4nkUh$zS5y%; zfqIHVUG58-5jqw<5`QJjEX9)nUeOsD?xbmDtpM2l(JK0c>QwFXxXw^X=IlfQplA2gr-+>Vq>p-<;iQkRi$soY1r#d0T`OHXDlk#2yr=PDKG62JJ%zXA%VPjk}@Pv zT6(E@PV_9m?5d2=yK@X3T782>`RJ7AS-_ii}k?+Ub zF%Oi^U}KlXi@`=>~kC7#;}SX2mpVwG zeG;7~JFm3z?1w6atkb#${lrhENOsYFz62EJ|KMVC3+x76~AdUFwUTlroHs?{Zuz zl3|?uv(^DlaCnn>2397StnJSWi&F`QXpFbYR@xlv43~_mXLXLL(?No*hv;N0;hZja zFe0k0XCpLZMkoP{szFy0`*fyBN-wT|(DgCUkj@}pOtXcgF>r%r{;OH56ShIcSXF!6 z(l(=YZ4XBov~t()MuUVLwdi6-lrVZgz`T90KHbDtQ`+Ry-)J!MI%?FyHRV5(&0t{Y zHau9_I1Yo8?qmC|Y~5s-9UabvNIj?1XkfaiCHUAvt{BADYdj=Mw806vYDXNVos=~t zAoyu~E&~YHAf!n(t&5KyS<;cC#dj(*Eyt( zT*-&57aTE9ae4&EP^+#ZEh-)7{30Fx8=F~WRRi;nCqJwxc#%?0I1SQQX<&|qLfnyVNH_85EK2Tv)}f&!o?2{J$}yro^&j(X z;wPH+B&A*SL$*f#1l{zh!wR>4uV@cG7v z8EWe%x-)Yxfv;-z;;z=`G2|sie6HwcRKv2rovpDdjZA|0?mWq3{h2wUjAk2xs;g15 zr<>7GMPvFAJ9APSgc{_TI`*_V|+VAigD|>K7bde9Q@>+D7 zOQwk`x+v6=1D&@9>;Ktxf;ROcVkO96-A}nH4=z&$@x? z5F0e(Pg&;Vqdl2Z@%rr@FXO)HU0MoF~S)%!MK5-B1(jPaPSX1_RQoJ}dAn{L2& zjg`IiJ?8$XuS^b)kAH7xAXA{|xI_5p?;d(lilJm`{2i1#-77VJs{0F`6Puq%6UhP0 zfuVfm0s{AF(}qKRpQ6T6O&ab>)lRB7n6%OUEaqJ>?R`#)iaY`NFEoxaBKGrm9DUwS zui@K5Q76=ArZOPc+B=)dZ6~15q@Ux}llfXogky;nxb*gV1 zWh#Je*sh&Xy>L~PWk_hQ=ST7{qNiY=};9TDOmRUDdgGrG1=PFE^SAjgb zN_i@Y%Y#c?e#&L5od^u5(|gHv18p1!N`M(&%f;psBJC?dmaHFK9Q0VCc?cY)_yc3x z0~qtk$Br<;6m-KllPg2)11-KdN4)z(T1Y)zbkgE{?-pNG13Cd29*?!imRxuHn+h4JeiJiH7l zIgyt19(jX1sk#s!@w(A^5uE}Gy@GyZiWm$!YI!!XQffCbRhy$w)^GnwPNH`WzP%yX zYlKPXK@uaZS;y#1r_x7&5mh{>!&GjjFGabOh}h^%{a6@Chf3cCG9t1;-8QBO+11-6 zk)IeeVRqdWV#UvsKgm0rpozY82soENrfG?^vSu3pV!9Hd`JkKKlsR?qtK?cEw#H)IiI{&i(bSkCpIK3=k7nYhH;q zpAyZFiotWXn}6*=P|lT&Ur019F@SyqPBTK@qo_C$s#0L=$>-c7`f3jXki`97I4wkY z7r$?cs?BZTMYp$Yv#*RBQ#s@8PRx)9AB37`N8AFn9rc#0#qmJt>oziWpcvb;{Wy@qloURB z>)t%LKc6wZ>V7M=ZJn6}6u~xvWQk2^8zteAAmUCkyzoz+(}Ji`Y9l|Oe=4(9UnhJ& zk^DXUqROCsa5^tCUoc?=^uslyUCGCv!|WBpAELHN;XIGw^FW*RmgXOf_s}QZQI8;p zr|#|b(Gc8iQl{pl@~MfcE8GyIcN4}=8( z_z$)F@1&2E82|w5zmYy0(|<9APLBV7$>m!6+-Y;Q=Qp;D!_f>!0F1rk!j@D?IkJ$3 zA+cOq$&Gi35}X8%ltV*Ff0wz|O`Nv&X|T z?JZ3mbJMQ%CoEkWmti~=&{C~=N9k>9FF{ zoV@&wA7NnqF`eefW&Euf&a2!V94@mv8&`WqgR`N?ZU@<1$OIWMwrrd?m$o)7F|cv# zmVV3JqqeX8oQ`Dpka>%rhdYvMoY(lP z0k{~NzrMdVgQH{HNlE7GSh3MNcQ#B;0*4MPX5hXG8@wFn(kcdz^O(=x$Oq=GD?!x) zdl56Er{B54=-+*>1G4T<3u+8w-@iTmL^6#-HCAmZ$QA|ej2C%G3kbt+2L?Qj zWavqJ-t0JdiN!IFeos5+&tu+KCLCx7ofxmS2I(%4i~;`D3^A8MQ4Pe!C)u(eMGGVE z!RUV18NPo>Vw+YbgACM3Y^M9tqnD1cfQq zwW;yeW8qN_TGgyuIBgLinM4p^cpaQsihIGtbck61>$0L20`)OW4`&_$43OleQyl%E z;xxy-4*Gwjr<86m?=1Lr!1!KmgjzXMv9)1`-gfjw@bm?e(R=ovo?N(i_t(no9_r2; z?s>`jH%~b8g8eD}-h8IYT9iM~>>oOUZUrWK~XtXJn>-Ke+}tQ!Q1y}Zhwo%O*xOEAol?bq!`k5b1HJ23||r^YA?Y*dMN zLlbX7rkIxP4~|M^B75+hoMo*!Ve2O{)&}k7*3u0WS3ysbensk1Px7;?Eq%ajM9|F1 zb|RWIVR-6jK26R%qu$s1W zfa=eOg&EdG=-t}XMM_>}l;jH>p&nn`eKLR`lvTus_@0uQc)3s9ZR(CLB>lDdGOYF* z<_>T?cfHDI{MEy7)$?3qd2)SYm1m_t)@x2gA^2_uY+QGJ@X^vT7hC%J?^q1@k(H~e z?Gv;!K&0%*KhFv6eoibjN&FeSyhftV67q|o3BWiNV9-ykRQl) z%gp=ZWaN3u%5~5f$b(^oBEsA|2t%{cCTzIZS-S%yfn-c*nF15#XIvo#ffhV9q>yK- z(dn6tb|P|t^?Q*G7^OM@fp-1{7$hbsWJ{d!N*sUBNQet1HNe|(=C{(4Jyrw9VNhHL z{5+yuXwFD4Z1;62ebE-EbDZ`2qFi(^b1z07jP%vzE`4@jIiXllq!Yc`!tAwmq735!f~R}OfF z1LoVei20s2VyGT8xjaX6;K+i2ufUWpu4J+S5_ z#lvlNA`gnM;;%o~*^ob9KaA|`eNYIPLE zV<*(j-51SE_CqP0VT+VDt8KD~lHlZjdXOxju=Dg8@pK2bqF^UoR(vOTExS4bI$HuO zj}%0>)RF0Xb|fRRm5nFUY$8RI=%YA{*vTYD?Oy{ouyOBBSGTF`441z7nB6xiwI6B96X9Pr6GS9Qd4$%hLL{iY&=@yf@AfA%Rh6AhaeX1J zfQKu9PK3`4`rd#JVwS3D(&S{sbCcIj>T#u^QU=CZf<& zAl0HJZ0#BK&oa~;sd5I*Nlj%(MUigHUk>>E?q*c}9n1RuL85?l?XPpxb-e!HR1+H-ZJp`*;ai7sP! zs`{a=-c(?E=GjU~yT9+*AJiXW3T$}i){h&>R<@f--`m>mkkl3Y0C!)EaE=8X%3kTZPn7ZPI5^9Tk4p9?e>2? z03fqytA=x%JQrVF5@V%guA;ht-cCkoM9H^GJi74Kmf0wT$|ihEuS1>Q-i|!5g)(-+ z9M5>H;sD@3zqx5{adgoJYNd(%m!pA@@{9#853g6rvh-Cacn57f<{W0$7^mJm)tm23 z?|QL}ocr+_-`!}dt*_w)NR)WEfQ`A4^Cy?m)^^3P+z^wRt8(P59IYq_^qJGu_w=Bq zZn_xvnFXG;J%B7w&5n$Cn!6>H;_1F@cU2-ykfY~lBUvw%LD$=C;zh6*tfA}jnCYi* zM55_sw4#+|``dS^W~TasXSQg%ITu=dP>gCpOG83(@&m=55m#VGN&}dd%D4KJ`LkMZ z6?3@>1k;id4y_k)Jl`0uu_l0Tm%F-q&}{6{5d4G4<|lTbK|M*Gi}Of6k1CRy#UCY>f;fuCH)$h@hL7T< z>RTJgFVnmYCc_n{bt6`_6XA3u=77>tq0|)vag{|9`jcau&K|P*JI|~KDAO+aWxIu?J z)>G+GAWGTKncQgBZTbt!Kx7w_vsG@|4PlO}BXyEmh!7-ME=amJON%X3H*i)5tJjRNW;@k&%9eRq%yxKsvgJqTNu&N_Xkn+idm5JJ# z;hMb7)Sfb&VA6(YrYnUWNNO(~7aavHZn5Qwww8HJ`?pjeXQr7#=dgpwQhad^mzQIp zDP!E3IFrE)g?v{gw77#PBA5MK)g57ZFO}y+^dEBeLt9zw)m!pBj+Ez$Iv9Qns!Zt} zaRFd|pvSM-yhqlnDyP|w`{|)PgOX5U70Bux!k=3auTYdMYpCag^JbNjEWsCYZCkjr zyu?QN{LFS$C+Guq^~iH5NH2;n0@JGj&XUq`5k(icmBQ&{CW}4$KCFou>1;bq%oZP3=gaAby4Z-= z1TyO8w(lvgU$nw%L9U-(+Chz$r7>kj4-HvJNwa*F#cBn!#2UdBP?uV8W&Wa8Q@X85 zDEI{0#znaWkB9ORqSH}+8?)S{fX#}Q#vi;e!Gt_Z3X>Rmoz<%jN+(_1@J{^SLfZwo zs=Z;&rI2RXDwiPX3@IUi17E;ewbp!Az^oR!#ordNBnBW$Et!TzZ*P`y1?!^K#UbVu zp$G{GgM@o$oMyTmhQa(xrE)1YD;G3t%wZQX|KM@6i3T{d$Z52vK=(Ag#I3H6;00Ph`b;|EJJBZ1kD~jH9^Z! zk)nC_q_G&f^7AOn4$I*6;wH}RIkEN$gMSA5Mvlb(9p0%Cjw^T87b`;K&UuVB@)S8_ zkrb$AI%MuN_&-pJK)O2}XM14~KH3^U2Wagx)|zvg%dw)Fv&cT0jwX7*JRae>N)p~J zu(}+}7#S&#WRjc*fwo|AJoC2aDR0Tw6v|QVO7$x?5OA{%c~BU*B@;)S+YZ}V;wX4$ zY9xD)o?}Ff#BbDuG#lRfMrU*-U)Knzg&i;8KI>2hY$Nb@8>hP2M~|FV_fg0-8thEj z)^YB9^(4xNfero9PSd@_f?IR@V-WSUy>b!b*%&mg)oa-@+S)qW5iT3mD&q3?7e_!F zC(zVz6GzR>!HD?AfsL@RxXOuiY<8@IlVSM`}&oV${L83;)EOd6^VUk%a2q%VesnV zLu0bHrk<{hq;=%fl++bpX9zCJ^D4KNK0IF7nw!*%7V1zb1=P)pxH#S2zv#8br@a+D z!e|UXSK-RA%yO*X=;?AKzwupnA=aXxye1s^33j1a#E*Dw%N^*5IXqnIV!@0m!b!1} zk#Riv?S{Yo5b}9(q`9$U8m+Yz`$tCxB+}I$ePz>gYcDpnu)&){ISI;p>0<+S z4uenoVT5PQCF(LVOV1*?yf}ByEAP}{_D6S@CIh$p|7lz-u`oP}AOHaWX;1&XaSh}D z-|qX|Oq>keE$z%*T`X;!|2G|MM*Y{WNDSd8uMDH)Vq`**d-PqA^js3e-iTzg-9IU+ zQdz_x$0jNUbbVr*5`M+}EXvgl7S0U^{BFA?6$#DlB+K5+y*K3VO>Hsg;T&OCSDfHR z6@I`u49ny*7z!kU2ZUY=N*$O-S2C#?I=sHJ&`z+BIFAYwUo^ zSw(4$^>?e4P@Vk?OccOeQH8da_6m2g=ExZa;yCH~UxSuqx6hPj80E$2THA~91qNCU z;&CNj>m*GInWl;?ktR>RIbvAr5RgqK4c@|Y9|1n3X))Hie-_U~eXk1;*>fWs5;q3oUn8w$|9|e(${d3*927bL#xmRPRZ)Z z%abRi4Gc$ExUEC)>;2ux#4Duf{(gX-TLsTy;T%h~jlRn{J8AV6gpHGM(k}hdUcD%EV0(hz#wgUxK$v zEb1yUgyXj(I8K$QL3>(*mq)EPTTpW%cf*?JBSz-m-m`^i(`B!R8!wZAxDgS;QnVJO zySp$5WDJvqIPM+#7p5wa{Y~R@Y6|y4a$~`c^%djI0N1WLUbK__h`85LfRPVk#O+Wn zIXSqp9g?nF`MiG{f?{Ut7It-5x=h?i<$e|lgGQhV!B@R)YjlRIOkj2s>Nd(WLYs=H zh`EzwacdWlmoGl$CeLmUcv8&-n+CT1n=Sat`E<_+zkIhWj;6YGe(yLIu^YhWa-%@w z=&GQ>ide@U_X^jn$Ho52P_~?cyrKQ6{m|5b5Ay{8PX^ApC2|G5y)U4z%+egR_ac8W z+5>>jR(UlwA1~O|ZAo#e<$FrPI*p~8^QMyjr~GQ7z74o5~duCinWx#Luedq8i$PKJ-eF$Ksz%bV01w#`HF~*`Nlzqy5&(Sa@&@sXq_K zB7!+cc6TpIHL0|(mQsAn@Ob7=z+=r{zox~JB2~^y_xrxwt z50i0F6Nn>kl*Knnd9Zr8I%P6+0GA1(2)~e+AN9|Ok z%M;m17_KS-M)$HN<$!UqsJL7i(CArdIGJfUS!j6iuv8&jtfEB6 z5vrz5k0^D_x(}u4J6N;v`|%@LV%xPtp0>Bmc}|G54Mv({D}Ar`TS_;9Ut zvWhG2Yv!w{>)T7aZP3x!rpxT6N}b^4kB_e1&XR9mw#<#deR+n%=?9-#v#o50JXzbY zri#<1n|IH$$iCf<5!0$I12Z`7O@Pam&jcL9z+beyjbR1U)ZrMZ*6Eb4}(BKgBp`Z@|{MyTby^gHe=P#oZ)ps|&5 zL>G`k52OQ@PNkc$P79DGF?7Css>5gIDS!wOt*%5iHpB*8DUy^usg1;}ZjgVQWmjL> z=pLWZwr6upOUNn!0nvOc%c01p%Y{_UYdTmIfesh8l@4miWPc7E20Cop_0&CQ$Mbt= z2zmI2{ky*v=O?75{T$!da`|GeFHlveU0mO)kJZYX{?B_&EH(aJx;2-$e&-(cY&hlK z9ky#m@v4&0%Z9f09$9Y3OZIU#zHi0apCNj8PJCw>$Geum2=ZK6_R43i>os4+I`%)D z>qA@KE&AB>FM0+Z2Hx!nNs^5jHk_}ZtmS;Nkj>E)zya*KEv{I9PSO9RW2j5(@O&%=&;sPuT~SYfqfm2t z*%=I?kW4%I`&Ff8p1xLfSaQFy?vkD-c}-7S)3ux~C9+^l&P_8~CO7^-)>*g`92M^y zSDMdB(b_jWTvuuK=Y#bz4P|F;8TK6W|L*&m31dWB5AJ2g4joYdULtPwognkr-$l>@ z?c&jwbRd|NlTv2;M`}o&kNFGK4nCgl#j#Mf=PK-;?hNNzIfHWh>H)<%a}#juzU{Q| z?iW9o78*l6^k6fo-}`$p?_ zIPh$MvzN-kDnSYW5ExC&S-~<&B9^}FB!gXBOT}n;#5fQQX&0RCKRto8ZW|Ik3c_L= z0kdQx$73z|GY2Eu0#E7DE?f(XW|I{=-%s2tZ8#BzY~tU!VCg;{8kDrqRk~ov!Osq6 z-*qjQh1*BJO3>Q0gky9x3upbZ`SzLX`r~Bh5-QBbpwZ_3XZ5;S8o-?8v&ha|!*Ki0 zbj7teg8fm$jRB4x5n?K6B&jrkvk!XxU6t6RQbq zw378aKBn#-2SeypJ1|Ywm^m&h>bQ-2jGVQ|)37=19TY^a>iS*x(#4|WDLt;j63dP{ z%e3LCA3XyEyJpvhbuXCXF}DX0Wiws0TwFXDaVYxOkfOT_<3;^ikYE;vE|yz#+qRnd zTVf7uXreCqkQ^v;bS4X906?7s_URbRMz5mp8xYo1Kj0a`Sgu{4z#MLv++ zd`5gm6C@43BwzKXe@6wlfE-NS(@Wu~Sa&s9Rr%KJ`T^z|*VviHpmf>1yQ2ZE8m`8M0UdOGV7hR)V01XTiA&HcJvHQQkAispZ@@9_q zdjf9pcXLhwkffm@Ym@xkU-Qe4yLxl5I*V~u@h^I587JdeN@?Eo-j9q#^>^UK4Tfex z;p_JlyvpsH(jdI+PKlOG30QTmA~367U+sw<67%hcHy0{5eX04iT;6v@$#M(K`n&{Z zjr%%)J{C{e!$Q_}5e~xNgh91jdKvCS6Vn62$HO`en#HMy<$D0d^*m2e#O_q17iXFK zA<;sQ7EJk4MA?Imp1sz1v4UVc<*m3fpy9?kNM|zff!<^(35Vc#$d7oBqb1gib!{qC zljNOA&%B1+F^R#liGf574zTzN@aw7HL&9SPHSB#E55n|5dr)%c?EK-VZ=^~^Lt#i0 zO{z$%BkIr0E*0rV0n^|LCQcb>+dQWiP`rMJ6#K;`l&tn!VkAXg+*zRoseVoJroM`p zk5nj_NMRR1NiullHI#BIk=?@J<_q|??v0E*!2s;L|afP&@&?Ye|0 zgVbPzGd0EDQVWR9UP#EN#DwleQdo&tz;Ld_?g}Zvtp-_I+2l)7tYa3wFmujW-xPYa zOlG_#IPrFzCH@PCnTZLYEcoj_Ea>G>4|70XVx;=82JEWaS)YgeK!-s^+5z@|7<;Ga zOr!4GGpX2bY}5+cvuV&Z`Cnvw&qt}CfVb0)Hds8A8Ie!(y)`l^f9N!uwKteA&*ZdD7- z#&>K01oT~=W@*h8^idh^VOECSw5iEDD2scb4(AhD`Xz=qQA=nXO4U@Qh8jmJK9Hqs zwTv6@a~7;JvoYH>!bpLC3eEefl)xG`;WKDJ4v&(6{9tIOhxww)WAPd0rz@ZNi&WqH z2%ssq=W<|9u_L)*f?sRl@}ETTENb-6taAc9mM9q+63#C^6~rn85$p_pa)&<*e!^-9 zuCGZXwYt52xn*Xq5J?(Mw9{n8HefJ?hp%l^h->F+jO0~h+Fy{MY6U5|p5&<@zFUQl zMnmqLl4JY#N^%UcDvJt2Thk+Dgjz$f4k%9hKGB+tM>H^5O_}~;#Lhyr?(wx*_Pl_> zgJ5o~ia}cvB6H0Y(Nm^uhq{^r0n2ce@!twdPJ^3xB>>KWbma5os(Z1gd7|eNDrEL0 zfokoMQ_9mZW+{p)so5gY%0mP@mQ7+iJj+F})kHIsVUqPftI-{B+S)Hq>}~#S&1I*a z2lk8j*vkB`0Z&x|Sow7GVj$p(@k@<8m^W=aiorWc;8VHg@f zdYq!jNT|*E#)Z+|Mz@qfsw11{9=(drA!S8<+aSeRIw0i)Sg}mReQj~&P}Y4;w-YFI z&cr6@z7r2fm@NHG$Hc8M=v#^K19A&y4-?^%0b zS)(v|BnadeCm=WK^9}UZ#a#1VT;)y&NH6(lD2HS zSjGS97OR&k2@GGd_HB6n(9kKE)l?$zXdpSDr!8P4s5d4vtHJ_5cC~X)P3;Pg9rrsB zz!db0{yqd#2SnY8((j)mBmt$g&ctUw`9l) z?toU74wFS8pBIKAI}sOszR)onxk>DB(Z0<{GDG|o@wm4#)tuDb67lO%u3Fv5!TK@n zLatlgOQrVPXPsH(c;a!g$bFf}%>KpZtabd6udY){6iIbUoZVl*fo5lbh{EJTbRLJ; z@cE*-M2J5*%o8XZb;z;m3$3SH#74%J(K4rAs;Py7s7k3?e{^!e6g^TpZCTYrivwZL zKMTD@OC*0DOl!vWI#s23YgRo)ini|T+GCKC{R)smomkuLjn3{fRf z!41R~T0KGVfaCG$cul`(vtLFIIP=chwo4Lw8@KP6A4T2pNfP1jeKp6wQ?N#o?{R3K zsX4$c&Aer?9gR*();+}FzrNwv4Xx{DM;(xdn_|1JDl6a|=*GzXB3%7S?_7><2?99} zZ>uL(6%Dl^HVcrRmBN2;V0!K^|hRl!1`Xx`7Urd9kpa}D(T(m zJ)&mUESv?g&;~cwF{2$9j$?3@k+SttSs~wiiIL@=lH+1vc7-~FdH3^_?=tp%8jB;3 zke^)PDnS1Ty3o>T8c9-g&-3wNFGS1HPB$4F)9ubX*3`3{GGOD| z2a0XqFo!qu9!dE*~xgCtdWFWymY?=2oh&Vzqsh z!fYSd_YuA*uO$U|9N491PF{LZp8 zDNRQo4R>O{!x)4epPkv#SakFNbQKj(8p%Bl&GD%)bqFE89A!nExi&z-Jx6FV{I%=$ zE}>E_&~`l@m4&#PT)G4(EsiTBnI?gGDkP&Sq*WXvRG=qniq%GTwv2W69sYA*^M1Rq zej2!SiGXggj$dUW`q*8LKQ>EwkXCNST-rIgN{+SZ`ZHzQH*vGOe+HZL+m<@F=3J(v zJ=ol&J$2-AAae|oC9B>sXeM?`#Ca~r8c!T~#NkEQ&ghX<9&Zp{qBPQj7B9`U8=g~CL|4tSKc3re4ZO2q58`~p|ycH{ys2flq8 z!S#c}sc(E|vMj*Zp1=VUx9gTSLcCsRqf#>zLe#DnB=G265Q8bobQyJZYEr;y)4};v z$a^%1{c1}Omnl#hCDfV8345~KQD8slU_aXW-g_G3qE@Kg(mOYFqCDqGD`%V#I<$%l zGcMkzlgpgI6lOb9Zbgw$EIJ3^d>sQ*>4c#oF*%lrHlGsNIZYGDODo; za{^E*Ir^o6?`F5%Gq*?kp-f5PZHeV7=+p!WKZsHou|><>0mxd(Von@9)8e(b5GjI= zNkEg@5)5=+=IJC+0%S3iJPBiVDcapoU-rQgPT72+k2r_mj`u+lj73RU1+4yBhXN{v zOlyo$~k0fZGq&F%Lj zf_P)OZ)LB6nrK=8up(T)3#9Rz2giqY))VA50o-i=Gr|YNv3JH{0@0;qUXegu1InBv zu$M2m(+_`+6NK;sSHZVY3yF^{A%rmm9?C+02g}4ysppe_c>#C*WY@D22M4aAzu!hb zkl|T)*vC&y7{y4rakzhyjdlw?lk&N5J;%KjGIHr()(P?civpY`74-+J)B4r0sc$4pwpd-}Y`3(QNxbN$Ur zD9B|JDc=XXc`tO0l>sRRKf8@2@iG5eCc&SbOORJ$Gq|;*(z}j(l~}k)thW4GXE6X> zh=>?NCa5uo@O(WR?pM+LIbOzzmHj97t(4O3?)HK8#7wXQU+`z%5#P`9{4&F&#ePh( zD4x7E&hg{8pO%Dq;^iegWx>RjRlF$uhJ1=UlJWKK3-6A=uQ}e+r@Cjfa^EW?A2%j- zLaz5fGN+YUe60KIs2F`v-FlsV2{~)&1%WCzME=JFJ4E;q!l(8^#S}LIXSc$vkmGHr zPcS&92u=rY%*DVEpD98B317#aVluSJkCnLN8e=41 z!|WtX#6ZLeYQ$Mm4w`t$*B^mM8BakhIZl#25R23fM6!H&i-X2^-^USkWzvxa3$WcY z9B%JwsaJc~32YE#(Y@ClL%te_-NA&6!)>)`?($*OeQ~+o+PVXIUBfQzja?r$?uDj{ z@qG&ig$AHX67}$+CImCtRR(Db4RPN97d;SJP74~Ea;R*VKCFQllz6T93y@b#5-Y%^)$$kf{r(3*v z*q9W;{UG<3^&{!}JoACc5Z#U8hq{-N#9(MfEA9~b457*OBng=*48g{Bh#e=jLb;v~ z?M5%$5&4HQPUZ>WCB?fDL6|3Ojb-h$!edL|k z#;I~y&XcKY{$lUJFT=%hIG*Xa>bbUJmjl98Rl0TNZ)B`U1iDExZ; z)BE$sdERZ!s%@qzefqWtLjOQ}TM|2HRgIb@Qb%nK;=4q5C2bdPaQpb*6hr#3+ShJE z@~EWDqW9B@dZf;R6eVr3$5=AijdCSQA5&a0hVw0lq*ejyHsL#n21dCev5sAaqphC= z7fTK1YBjnx?dLK)lT58G$EgoJIe;=H1Wco z38FqpRwoqi;*I{ux-Cl3)oMHRvoyDfzLD14a6yC?%79i*{{fsh;THZwY*w|S^ZxGZ z4C!^~wFSk$KmixLLFP!6lW=G@=+U~X&U=%P1#xhtbL{VUP2b!F>sN)Idb`9+;fD4J z(BgJD0iU5DLZw@j4GqZWlzu<8-J9TBT>Hc`0jBX~9wN|2>&gq}`y0^I7Zc4&@hiUE zhEwL5r~>Tn0Ona7Ld3fu3aUG#gp@!Yo^RuGq_SKQOt*3VPMG8kh6q7>Bxx2buewrU zY^>W~%J8e7IjjRX0x*#>6#dDwBdIAEf_P!!Aoe>y@Q>!;INRCB-LT|^Mz-VPfDJ*b zS89NO0aa6=hP1vz=)v$&6ZtBQiMdvVx$MEkINcul-Qy3nupnXfE?P^LvmY5TXg^N% zwTXYHRd+ZZ3PV{{Cm6Ipsi)c%bK3>|^W050b%?9_h;?=J5~&hbX}rM^e!0JG0`~|$ z$A%@Fo+X>LT}lJosuLMAlKz-XvL*o_E-A~a6E!3!IjBpEQjst&j&XJ-hBp6*6l2GH zq9LnjcT^|31;ixj2$gDL;#Sq;+%A=_$H7uK{8jwZ$Qyw3PEH&f6amTxuH-n*9f^Qp zFD+5|_+6_XfsT>X2CmKCV&rpX6@7-;n9wQ_gC&U?RVWL1sm^Beju2AGHR<4i@YN76#?K3TSVN%pc?h*o(+OuCGJ8s;E zJNkYZ6jLa2uU`U1Sum?$WmKej@&j4=-Fq|shE~Hv4*kL;Hib|K4o%T_qXdtQ&KKv2 z3$KB~2zAUuNLDyHi#KgL54XB=0VtEpjVr0d>7~4cSMJOH^ZWHARSpe z!*b^q9|rR2$ZLGi-MV`CVui7$YegiH$l6%M+o+Z@N=i{%3Tfj!@IWOF4h)gngWpoi z68pmA5KuX>K+0boNip5m{-c5=Eo7o0Qu0oKmLfFl&@*H2VAL&=Pw47Y%7YR%N9N4gIvd9+mi>>;9{)4Agt zdaPe#Ygh|QHCwjOnnj}8D+vqUPAyON>OU4{Ofcfd@R5Es4Ct{Q1^BqU)f{aX=_~C3 z(-KR=9Dq(fbUJA=T?fD0?#xrzdIw~@T9r`Lu@d)6)PvfQ?$WOqqEDSW0t(E&3Guzl zJxuvKM+5C4CX20}ocvksb|GZQQ+xl)gEjKM*q}W|ovL;T9k4`^?{K*z0 zo(T=o!AN?o;*GI?YsBqRbAOU^eC@P}2!q(UBk?loZr6QH(eif^=5*PPWoh6<_1)1C zJ~0+^2{?c*A-X>x%l=9ulw!1H3Za(DnsMSw-n?MtrRA<-prC>0fLr>*QZL+AP$BWY72~+;M*y_g0f#L#5X3I1q zam{4jLEVwT4Sc9!e4>F(^7=YYKyH1#o4FQ&j9-|R!k+$OnL}kdHjJA^%7Vr=3BT9+<(RbY_<-ap{0Hc$8hw*~M8JGJ9 z;=W^E4paFnoKzaffo1mun}r>@&1#lq<=R+>;ruJ(S8Gp=a?Lr!`%kgPI(%+ng zVO13`j(vf5Bbti?u|145r#gn6U?#rd`Y?er^s;wqzCj~sb6s6^j85Uki`Hx&fAuRH zmQ#I-rT4{w&`>>?GZ>z_M6qTRIpg5{8O|=n_#BQc%~eN$j+DT#DMee7GP1f$)RSvYP(-O@MG`dvgIS`uw1^X}xoov2DF~$6cTNK}0xP zjx|e-{e2i6JVFyvs`E9BGnd#wPZPBMY+Y3NS*0yC4*Iw^<$81-=M1TQKF487(SeJx zD@!eP<<&VrERayE%WplQnkiBluI<64hwz+Rg;nb)0Z0SPceCO$M@%KoWlCEW< zTZ1JdG|5EiPznwc1nc>J9oAdkNBxdGN%v%KFPMZwLYUPmj_btv=OX1>^)PT-i)p_I z7_RIU<>zizlT;$QN4avF`59?Lja=zFPG$9)Clh491`KT*C!o9S$4H4kB-cgZ(B-XOK*mjLBD^$^cWzttXY6!ifLe4jtiT zEu7#M2$S>a3^mf+&|%La-(JA-DTU=S0X*Q@b*%W~<@3v8bVwq9NJfjS$q?Hio|eVK zHctO()>mozU#C7dEkqJbYfmthEB?_1Ov-*Cd84R&2KAr^U9XI~JzjjVB2Vi~Uv9jc zEz=$1I|+ONV$ix~na;Vpgf0NGyi*^$=*k;U`B^#BI)-j0JBrJN;ry@scJeqoxpSs| z4s3UnNO{#)ed0k^8<|~mbR)Zd7<-b#5L+~d&H=Z{;jhnAxr47moi~Bb@;@_tAFINK zL>jq5y_IF0QQO)PiOfOZ!V?%pP3IA5RBQ+}atUzE`ecum@$2OAEs(D|Fk}djQV`0w z7(%V=1?n*K_z2FW;CHc*uQlLz)gxspBPR|xN}Zu6ya;!48CPzsTE*@SZ2GN}p3SZ* z+-9cu2oHAHmO<4MF=m&R8zoELHPUbo6n-W;FLr%~$t7U7aDmIFj%FyuR<6S>n#Abd zpC?xNIX#mzmnRZlkQCU5)ghG+Ar(OY$HFSNqU~B(E3u=ET_CPw*I!yB4j;i{|k%U~9Hrx2qfmL=y?u&PnWaO^quG|AXFC#zdA+%cr1=)PZOvOGxc+Mvy*gT`0{My0eUqA( zlf2TcY^3vmjy;QQFAAP<0 zl(mbD*3VDy?O^`XiE*~wVUFN%J5Ntb{;vz%{MK5rM{8RI1jd0S)6;UFb(J7+5?neU zd-OO9%xN@aPtrpD#<9be3#Zc-k(Jyj?zxh^icp;V~ zp&$z~g;=s|(^iW%=tRf&Dx4PFb8+%?w6zw>kbtgry$)me>4;INLL7lUX`!B(H%YwR z_v@Hxr=U+(OwZ_gwsvBl@L%U&EI=wHD~)wkjE^) zQ)WCJkjl~WcaDdoRRdqIHp``r0|<$ppPLD46w38@a6*jxCIp_4`sRNJB8X9%KW)-` z7Zl~I3jFPux7MqujCOmg=H1Y%xyNO-p;0L{d12#MY(az3*c5T6#gC;reqipNUmr zSPJGoQF{Y=!OMFS+4EY#FBUma12JZ;DRfylYjgyNMrg^Fum2TE7&FF9t%nK% z@}H^Qf1l^QgZ_Wa^Zth%W#aDsjd%HuCj8z7|KD%7*~Rro4H5xAf>XW9cgeCNIr4bn;Mh3{urO`&jAq*(9H6zj4C0eg%GH6|K{%1t` zr`{5kzLd%98@A&zCD=il&{YuKL`P7QJitabg3U}(!w+3vksmc#6$b_@nQ@m zX2cC>1#G{RodMKiRZ|wa*RssQpAbh{J;{(8QF}NIx&anupp$eMF3i!YAYcXAN$9g_ z1yr8!m3*DZ%nVWIWqkp7A!JhSv#_Y=P+_tAFsw6glJxns;4=33y$i!PvOA zRSAX}PLU@)aI&%BHgEDwifPyujn3nXB-*VN(RyPyWZ`D2H@c#cRUra*HCe?uxMqfK z{SmJ_os|7yr%HW~D=xFE@rXu_?H`c+Te+u&hg$^cGk`CKAb%Vm;B)_DU{0)^csTf= zR|zW98EzlmWG;M$i*=tNO5i@EVIwPsVPYRU5!QS&uI)zO&mh(_EmB`Ls44UQ;t2_P z&7Cq`%Jiww`csIh%#{+T{YXxCKiG=j#P{^;rWUR%{TJ!TC){p7ZX`Ex||9o-_k@AJ+ zdzt4NJ5_(}f_ECq@p+dBk|KYa?m*F{gQLmod6cD7@ITIEhuHYT<`vuDu-)Q#fon`fE()4j<5T2Qdg>{64J;SiUt{qsbv z-NtS8H!6gR=>AC2Yb?w-G89ND91tKwOHk& zmPS3D@|3kofTAqhUwjvs$KtB zk!FoZaas@b^OYDX(8X~CS?1Eo(qE*L5tK}YHSLkelxT=RLPEAPV5G?wH}Ql2+j^0p z#yvd47vz!z<0d9LZ~d%)A)~(nYb9giZ=KhIaqhxLauDW&HrgYN=)TH zM(i@)zMfcKpIIaI`1!P~ZrTi@U0-dhMTKXki{o24p_y<^cK)rp$9`D9t8yp>tvc%8d?mgG2 zkSItZ*h}$b^bI4{$oqPip23m#?X!o~k zDTwwC?6Ki1{uFwAkcHFAeR6K$J0r^kI`0u?W z2nGa%_`mfMlmDkf>wnu+s=v{W>sgkNvMoX=SVYMotGzv4vhY#s`M!} zR%>7HaUYTy6>^1ZDzImnkhQ7V_RZ@jXTW=9y^IzY^LdXEj-t${H}xc|vgU5u#~bq? z=qoV#YMo~O&5WzmDqMfN?fD6Hb1Ug#P+w(vADc_{l59WnLU9= zMl0%+BG((!G z#RYSqDq1QCMG{Gie4HE`GJcTIln8`N;!+^zqOcMt1x@X@BxzBUWKArGc9}W8rwLUj z;<}~Iid4K4?m{1~@*wv^5LK0!PMO(k0YE}4uElUqg6Wz; zhD>{DM$(;_KQ?2PXd0p`M&V0z01D;;Z3)4;R7jE(V$CummWk1*OL6OhL%BRhUd+_D zWJzU#@*Qw#omj+)m&}d@d_MK2yWuwzgDU=!N)%#j4e-I$@kYWKXHAYhZjGMZRZ zW8S-IV)Q%Q@2Z>N5~b~0g6 z=P>JheK2*On`x$UN5f{)`5B@Fa)J(Ey88sE~Xvp}u z`+ru_l}>yVZz5Os$Y4RiwMrDS8g_YsCSUi3eh7atGV#+_Rksgtwk;}6P9*zP<8|kg zGvNA3?q6JtaxczfnwD70NyOdd7dpD<9huxBC4C&e#8JM0c>H0g70B`VGbeu0_3%HH zO=zOi(dOHG`k(ss-z!@;9ta5jf2(Z&cNY5p{)eMl>)d%y9OH9VC0nY3WkrT*1=V5? zMkQLPMQze90c$ixS_#2gRwGo@wclOYtIY40U;T%?Oz_bjcA~bjN$A_gb*YQHx3+cI zWSZp98C0IyzrCgT=`g1%oFCT#1KZ=sJ+Pv>#UtoaxDpRFJPRqF>fn;*3 zSn<$&(k4gp|$reo8A}^a#-ceP8fg^nO>BHl>8qTWlu||d#X4GFwp%f=Q4h= z*XcS-B>ILA>q%hMu2OCpDV#K7tH+Kf(Dywxvzz1dXZ+)$p(QusW4NgY6#lw(nxOs4 zMSIJk>ey8?PhrbuXZ76USh4tt80le4AGBoTGTi!ri=U%^~k5yVAc_YkHM>-w-0Q^Q6BnqIzoN&Vc9`{8(#b0#)CPgcSXoc zPc^>?K%v8d_U>7&iZ%Zrvijhv=jYBE=9ofRJKS~G@!K&rpWf|ST*vEw{kcdz^v#ps zo-*E$){edNSbK2Sa%b&h3ug22+9-{n`F4@@p;HH!p9(F8#(R<)%@qMwR&i@++KJ0kosuR8(NnrU_C#s=O|#J`k8 z1+8G>?Gk^S^Uy)oWuzj>TsYY2;14ligdR5CRVHg~yt ztJC;Zn+H)^Fdcs1d+RRz3&uPrgJ10O+(jQu{K^lie1k};oL?qPh=oNwUlUw!%(@eX z9XtYAzY>4}759gCg)sTTXsFZ}gs~oQ^=ttnkx)9S$LrT5EB(HWiHl@0g1i7YY(@x9 zJdCP`a0XMVKqpx}##woV@G!02A5rAX9@_m}1hB+|iFbQd4=`O`>d~%3 z^>2Fb*B|#j)^mrvz+3PV;Ne~JMc|yFB%KoXu&e$!j9E2xDvO~5tTrtADZxYaUB%FR zF)j)XZ+N`BKM2$@z3?A;QvXY(^e`=PkLgw$X($%D%~ZoFFmLMWQ{fl>Cb)%Ra05mo zX%*y?Upb+Hdt6!F@zNC!fsK@5sk7lmJH4hqyt!9{J4nf;;z@re*1t0e#tNHEqL4IJ zhASS@0gy>jhoq?tWPLL{aDETPmNrC)=`bxViGVsx z7dX~CQEX&EFt1ndgw6i0!sQvJ46A3{j!hDHl79(d$h+^i0@8$oHvQ1^Vd`niUY^B$ zgpKy}_KuRx{RNi{&h~ei8TS~6U@^g46%U#xeKoY5yu$TEcuuy+{|*9lrZ+2KyX_@0 z{c-YDY=6^6(f+>WR&UtX!~F@zvUmG6?GllPwAAU9rW;|-?Y!pJ?@%px2Y$ZCrb|E; zc2v8Ukl*8<=K0+Y@xBC=rsM^pJ@!Am42izsT#H?F=&msnq3= zHrDVZuA;-t1op&ZzG&ThPSTRW_@`kc2t<|oG%ZF$yL-9M(Bb?2CBKs*h+;rf~^W zMb+|!Fv1jA1SQ2Kq^e^G9~%8*^w;8ZF!ldaW+`Xsdy8#@6wdQ+Qb<Z(8=|ovfQxkrpw`oBuRDy9?NB41OoYZP!ty%W69g z8AOLH7djLQy!nrfKbNUv31T@VHOB`sm5KehU!3i|Fx_+_`8T!QixvEjo>=tm%jmNM z9b>OPy=(biPd|q*^QJ4L{yQ-8NxH^#;qf3{Bsh>#tXj}JstSoArU}LGgjK{2O z_VSJ;nd!u=U@r>1$8ZO+<~KpN;h69u`P~0^(A2k58m6^AYQ5Xfq|_$|_Q(;b9C^6I z9SM#^U@6=)C9br4x}MA=<|9mkC479MmM)?Y1`urxC1dl1?a|BQ%Axzq`V=ME3a9VN z!Q9)?aTY}uZ9`$(Xz!?*kyBlldgGBVPfq(Df0pY&gatO}M$yB+x>zH`x;xrXpzvsG z`_n?@{zI4ijwgl>n;kx#x+pqyTX`OswhCHdQ67;DhT_ruhm)kX-)d9CZ8STSgykEJ zV?Kx0DMzy0J2};F zy)fWf!o%!PreXqIlJl?2&7BkvKghLs$YCtVgy0Q-R#`frm;GL7Enr5oXK#ucbpXP(lGyH*A zGS5hq3PDE84)vh+r{rfQKO)pS+{RjPoVk@7rBM84H0)uf^ zMbWID!(yA@iy7KkpzuoMtH+`TxDWbKS8W*kl`$ZqLlySbf@a)CFE-Nypx_g4(AN=a zKpXd^l;qK2CSmjEh&fBu*}44-b@m)%qtS9|PU+>v-Xi2ucgU;ORMa)*z;c$%X?Sn( zhfyn6b*i<_n?&5ofFw(zSW-rOqhb}wg8Eg}^)I>mMHC+XSl zzd>SfwBkYc0DSWO-ILBtc=F!1e20~xKgT8ob?PYb)W}MYI zIia@a>|tij6G&ufbW~Vr{^q_vErsd|5IJZ$uTyY8&FqYya93#QKHuJjS*j>Ci&xDV z>}9tig1wMNgBsIG=`zTM=ywP&v(%~&jMK$>$r=YMH8AHtHNqNWU&1?Rk%~zQ; zc64wtb9FW{`6hS%@0IeU)}{TrIL1e9DHfZcF>V!JCj>^_zM)xUWMnfvy%Z(FQ#cce z1P5;7;7q)7cEP*+f4H4KSMUO6#q1c-A8Mq{)H72bT+drB*Ja;e=)!V30yXC^#fHUY z$^avN1DAw`th4Q}L<6n9MY3b>DGIBJDTe9fIbl0dK7v?ZWXcZJ@d_H$4A$Jys)b;3 z?!^Y>1SSXd_&kDD?Fw05+pJ_HS(|?a`7-lE#*`a^RUD$vJsKj zKAC?gfW#8#tb=E|M6c{QV!3cliiyVg2xfN{bCF86r1Oz%$&nT9Qxy4RJo7}^oMFcbKl- zz5O`v?YDU^?ifs4@8k7+IQ5~)cQ=f7Q`YfJHkmmBM(uS2yu;#>WUklX1QL4Yc^SLN z^{(@52QW|t9!flxQUB0i{Tt?U#C~PI4?cYy>U6R&u?!bK@^^F)!O)efsqNie+8~rW zZq2{$A89A7lfhJ%XQAwm#%AO7F=o6pNzKF{uF3uoCyz7Id10sVJ| zt3D`F)&lZ*_cLv>TA-B|CX5pJsM1H>xN_!%d@P+?F*{KDIaH7hr)mhC#oR0bNfFib zOhBDv^))oS+(-dM5;r%ic7|3_(I%HtAX-WbIAeijy~hx(uc~?(Buoi&3bzijQvm?Z z5f$9Ut_;*PD@}FY86i_Np+UIB6R@M4kbZ}5V3~z+3yq#*DwY|sLTvWl?(6Exhtn;& zcxTUJpbVpE`g!zLi0O$i`&6|9AO?Z`_+3epC_|N6fhXX*tP{z_6^^O9%a}bs z_&26Iakb{|6aH(@OqyHLIcyG0WB4v4YbxK#-wXLM?LMZ=I*%{HJG zA=#bPdwieUfqAiWv~_#RLAbo3Lm?W@xqhhu@0;mHmqm^8*o=9`PonPjOFx0=u`U$z zaIU$@gE=5%o!H{Oc47J%Hb`YH()P~tIPo0oVUvVpNT`zprBK`9f?hs7|SHeX&6$$<6NdQbqPM zmR%+^{Sxo+PjU;WXSB$~&2~}b+%v(gJ=zzml2{aybE|k)+0o<=fM@=j9}mGOL?H2LD22bTqy%~3OchAO+44_RSB<&NL8ncYpn)eA zlUE@>Im(w~R>U%5*@}&}RP+%4O0E~JhtU-g$6Nm;1CP*GOgqhtR}$SnzFA2&@pM?R zAf65+SRAwKl!ZMrrZ*ChvWT{}SK7o(>VVgQiPZ+fDZUPq`|5(q!nc1-6=->MrOp#S zELo7lAR#;zG;cYx?#4h<3q>5yuA0OdG1W_3O2ryR5o9neuBHg?rryNYG;ECwV#7An z6+KhFU@8bwiw_HIEg6JI2=DNpz8I>2NKBPL`rUr#*s^P7rp<@}s$7$% zI-!{CvhyrY=Ia8VmHE3jrdhW_HZlg8!Sk84^CFmUk{T6drjBy%vIxqi&xo9CreW2u zbe%G&U=Vg%uV%KinP5!0x4#v3ox(;$Y~vkZi0!L_s96oV`%k17ZkAb=HZa9vos-xU z?dGd1+Yw`UGb6+V?@_1p_!6KGgU%cLwMBSK2SL*jY4E;s{ApA=!oKs?zN>KIgG=S2 zL9P+44v7u*1>L|`w_<0+lyNDCuB5`Mt&RZF^Zbdc@KDOja%@?gM;Ipy* z!7J7c8#BAPr=6_Bm%f*!Mqc>Q-QLa#->tv0GNQIsHpP6sCkG5hAJ>2OTtbD1z`}@@ zdss=4yv93q$ZkW?kJzd;A0kRPX~^6?tyOUr zn(p0L<}}F+M6HYe2D8DeQApmR>v5HxPJTxI4pRKV`vEz*8!=l-{-yU(WA|*t_=A4xqo}>Bsuz{)z>B{}^Y|odyp$~oG+d{NebKL~;~w4EH@6Sv!lfRdWUX&m+w-WlEY~Atj5W_f?8R0E*kd`Cl8O|ooDO$H}Z^p79C^MZN9m-(OPr)h11 z(>&kBA-wLobWv!;*Zb{=@1m!B%ev4?!#PpTSxb1I;G#$e`5*>SDQCK4w)Z{~D^gm0 z>w#STRKq>-A>ZN2h&%a7?z-;eSNiYFdkp{gFa`#sHi4`JqjqNN+%5cE9D{j)M+aTb zT5>D4v4cASxOpF}c+?yac;8d$p9PBEc6+SAL5MAoCzMClA^~q zC$q*UQ~2#@X{Q38lrLH_*~Q1aPCBk>GX0A65vFv7&93XQBZ?jR*`ix)a$S9xzpta% zQU~tE@QUVT?~Pc^S1Li1xOHG9%P>yj>iQ06%275^O_Rw7sNA^pM5- z*IaIizn_ji69gM{Aw6;fXw8GJy_={?#Ei+4_Qge@oq!l-HO9zOtnTJPaC2<(M523v zas#KbA?)1~z#XVa&LoU2uX@cNr~rWZzjRSQk7!ar4n4jDc_D|(Lb>ygs9zi`@^`LJkP-rO=5{~IiV)>SN9WWRl3DQjw z?Su29vK}kPgOR~Kf*p&)JEZb<4l*ueSF-COWb$eO=mQAL0MS*f}YN+qP}n<{sNKdu-dbZQHi8PwuBwomBEG*6QxJ z`&n=azom(BUi!TO6Y!v%=}6mNMW}g?kgJ34&NBQ>Ob;UxW2YB4_V!`EiCPWr$F%HV zynx?b>;5?t(SZ@Gs>xE^1qyXcgFuElgQ~rMKb{^lt6o<>{BiJb=4}C2r*-7>fbND7 zt&J)+@5%|T1dIH`iwU!fsI&lRy^CZ&`{}_)64Ox9Q51y8vVxsu@E06378Vm*{d*Pt zw7W|rrBdwmDn{1E+Q8;# zY$a@f>N3aLH7R58VKui)`9B~Q+QoESxI9X~KG7!k;eMX>LIII@?HaTMYw-VoSo+wq zQS^yJS;P=@I*v|^qymv+F^Jdz>ye%RfmoiAAI=P7|AAOg4eN%$BQ>aa-Sj=>4eDL6 z?=0+5>3GkzM5_2w*fHt4wgXk|89SW8z}K3Y>7F@bpAxnvwU}TX^{9XH&xHv&(fR&WarCdVlp7#|GJS zm0FY-Byff5Nl@ew)Ie{1zb^%hkqgX5`#=Dv15=|n2(kimSO#36u$3WG{QAUS6tAKZ zl80M^uZ&^K%`S)f<_68k5)=PUzT>e~D?v*K6s?g>9n>=ZAlA#wJfPD&@WiZb=uT{T zRuK99U?t*V&XcT%C}B{Ou0gO-sQF>rVT#5>x?xlL$`eHpt;{f`Y(Ag}Sfw~nkRyY$ zp#vlw?n>Pc=DR-i(84LUaYT^&8O*UT{JrXTVzBRVM={d}vyAp463i^QkQq5=B7{o* z%o&@;SRkW~r6B_|1k|0gh++iZ_O5gx{c>RqB|_i{SW^K>Ghn94J0T*HXh(XvEf@ll zp0OcJzMR*?lHQeKV24(t9)BjhAI=P>6z_-Pk^pjC`zfK#H26{bxQi~X@z7vW`zs+F z}9?M(#-y;waMYT)W4LyDNDl^3{p7oN}<29-Si zucXKpqtc_GDP(dVR^&Fcr9I&mvsw)dFA0*)kvep^hYFA-5HYb};zaL~C>oWQmfi+| z(;5r8lOaAPq@kYR3wj0)8Ej@tGmiN4TDWhFGJ(kjTHV0&pa@L3X<`g*A?Pqrq(>N3 zx>(}yt{)b=eq=npEoNBaK0`)kYW_z7l(W<%Z@~_)iqoXdoKP4MvF%rBNH4MB#^_p6 zBvJwgnAtRt>=zr-WWI zQW;6#0g*smdt~v*4E)fx&<7ZC7C|wSe^^H#Fvi6=FtH zMBdmykKGM~JlI%8qGLft0Y~x@@d-(5^IZiu*6JBSVue8mG(r-O5}+$_;shndOA7jM zr0Q95y!J4vMinqvfy~9#`889zP#4Y?jQqAK&KK3QHV|yWFjcxE>L`)&Un)0=8d6ML zl1#fPnf-{AQ|F-2<50*e9&S1uiG7gLXtl{G>7GX>q z+AY#^gilha)2UF2u^ZgMf+MHObyM*dvSK{C-YVu(lph%zv>ww-lP9&w+|yL_UOCsa zQ-Pi2!HV6JUjBSrE1*y0;+I7JxTDdu z6NcLSJ1O@*54hnih85*Q?u)O{)s-kL(<3;2gvrJOvC;fX(Jno5(=2I@;vxX*7DoY+ zra~uj?dIvYBbX7Q)}Et7WvkX4A)b8n2$ub#T%J4b46$q)Rr!E}-m{`sM{g@2dL2Rv zZ?DQmc-U!;8G5F`>y%D`oPF1YTz2V-2@4MkIWxQ0v^#3aA|ADY1}xRzp377@Q0}+w zC0$m!N&AME5kh5NoxLvZ@1nBKgbMOOps`{zO?i=IN;4VLcM2AkcpB-yeW!5zh#VXO znPu3$luQ6iyUErXouEY)onFYMVc(Md`>RB*@@e8uzp4~r5xn=fHB&`+X({}bl(tNs16EuNbb!ePpHHU^W zj|ev0@mW?`5;@@ZFnKHGR4epE=w(FWibE@QZ^Fe81gj6OBe07cjcV;YjI>^YAjFW8~rsaUlI9DgH;rW?+M%l8)b(jA5Ov3=2 zg1Dmu`kaG(K`fqQt?(GW|0+j+4QT61qPUd7vurkZsjDmJLt;Na4{ zPva`oG@pxnIasxsFyjXLC>wDGm#1SXUjZcLG=T&9J^TZ@2)?>!`=x9TDnzvM1(jF8 zu@nm|-9JJa{L+e0wOx73=d1RK$MqPV=P0YhXPq0J#eVUlEL=>X%eH=M%eG(2e`2Ls z9hP!A8%4Cqr)WD9*r}&ICT*n=c=r^Fxv^!LhA&B|1D+SrIdcbo+yHj$h;2-v`7$;2 zw3DGsTeNky=WZW?;&ifZ-p^2K{Gb0q&4!jPt9QnBymCzbHPVGQJI|M_2Q>7iG^Xk+ z4?G+sYZ8YrQGovGbS~qS&37`FBX?q1rY|KgPBM(G5F2IX6`lEj7Mz&qHJf>f?;r~m zN#gDpL@g?rxTwBu7B}~>q2Ic6A~_6mO?hScu!1f~zp;ibI~aml0?vbv8YFm0+&D>y z<@v@De)d%m(>rR+98qk|(NOZm1dE8Oe?u;Y)z1sU{I;}AK1g|6>X0FldbUciQ;mN* zaA8X_+sw5mZPj&`Lt%^QnWxH>z!RTqP2kG<&`jl)dOBrXWTVhHXLiS zvc}t~n7y%n~@mVlnP?wjCROu-vQWg&Z_2ezk`8TgvD^h@U+Hwb|f@p$SI{LQh@!- z7=a}G%%6qB{KtQyIZ#$Sgo5-V&D(QVp)Opx|e+`Q+|M@0*hfGBNq^IAmI6Xb?)fpKG zH^J>L1C)ymIT?tmTAm zuOn60#K4s}7rxM^>as6eK(1w^B;W;!(wG!77K0fL;3b z7pGRwA~A8awM@lZH>B~u_rd)}lk(M|5=IIV^+#;~4*-91eNL#wBivje$)j-6?4Z6z zSpkD=cX1Y~U-QH^bF+0yL+;vPVpMX=znyC)nf#g!8r=?tj|QKq#b?(96&BCqMqasxk+#6q+Uz?{43fi{inqwT-3MYE7cW8A32@3m4MM?GJ-a1bMb#!p zLY1vuTB$yuB+dR^F}b$AlHHWWr3{%@s;9E&GqmOnUV zQVBrH*`~Kf!^(4` z)-t5~{nfS1p~&J(tQ=sN`5F5s?H>ndS$elRS&m=V&SuBeu`l86J;A!wWpSp%q4+$bDC~( z=q;JLy@Yy~c#A$~&Z3T>Qc}zStC2d+yl}8WQk0?NWnBa6OF(LtB273|^3P@1cMenh zBX*b-Be;;OLydT@m&{$B38X%s#2+4~L9SI`HB_B+=PEv);}F=1Jt~f4Cuv*X3tt&( z5C`8Hc(bVQ$3^B8EojvlP`jXqU3f*F;Vn~I@FB!@DJPm86QPixESArTN7Q-gqIQW| zFGPfh$yKC_H>9r4Kix)1i7+{>>YTN7rtJ5-=pBe?b=&e=4|kJES5l8fJ7a-X8`WCGLdf#2i;p*t zJK-a4a2cv5=T_@wR^|25M>WhV=`!S8Ww`|+*|yC`Xt-N&i~arG)0|~yPG0(Nw&D8f zsHrh(QEtXk+<9X@+l{3(2ddQTGSliCnbc7lCqm9!uNgxWI)CcG!qia&39Ufxdi;;E zY_-voDuWhu6|L>51Oa@T7Cfj4C8(7-BSLt%+WDp8yEPhfg%sknnTNzW+=lfvF|!cA ztdC$APYB+<$)Nn5X`TTDLS9{wC>F}Syy5~)H3J{NWd$inx4q9!E`7yEh;!m$$6-Jz z;i+cOYB27k3fkrV@D30I6y`F3QT&i)BNQ1^TlOD?$K1%qOs`hU_z`3k!}$`;?F43p zJX#9i1$)d($$ZZ#Dqr>_pkH56^v=^5|No6Tz>yaIvw#Kw@E@=Izq{z(h5!IK|II~r zur#(evoW-@`+s}q)Bjm`6HDBErzVq2LHkRPSWxp4Ea5Qg*o3~iAxE`vlBim*K>(Ra z5extvkn9rs^XdA^!@!IYuaZ4UTVVs$CnMjB|Jb)WPNh9U{UY2j_M0oF$@W?E$jT$p zu;!C$66Mkwz3zceU(uCrA&;i0IU-ujFZIwsbzou4LS1Q^h&jDrlB81nLn6h0BC1q< zohzE?o9)tIft<0<7w*{^ zm^;t3q2`DPFji)ynq7j!g>RL^Pf%x3A0hq2(_Xe>lVNjECG!w{O#PC43x!t7$W!5U z)!7Enc30~)rul_|7+VD*Ai&WdRrnA|iW=_-8zH%c765&KV=8ZxV6F=ChH9gI^l1{w z>u4i~Ddl@)E=*ht*AzN?3r!<2Jp9JK5@p7|7=_^=jZ_ z;r;K%ry?M*D#0iZFK$h@P0AS{9o;75_QVoLKsi2g23(ET);NmmFE`*%+C1M4aIEx< zT%vW#tGZ~9pr?Z?uo}YrJMA`7y>yuEQ83;oA!r2S|ipU{whAA~nS zVUIf51JY=zTGwSNXA*#WQn6{lUN-{KMC7O!#Y8ayDsPQZ%y?Q-r4hw?jkKVJO^zB- zzPQD&{9t>lZ~A~gTXhj7h&5PXuTmKj_TLqavq{A`#|w}A?if1XKdlmMr(8M!#;s** z@BtRAI`?cIk>Ge~d$WMQ-^1p4>&9=7XOv&2L%FKfKQD|PSo4LaisCRMdd|}qDID~* zwf*lRolTkd?2R0s5of;9%&}`_cI}gis(LnN04zDQ$WOVCx}aBB&XZXT-}&y2oER`( z!2!Q-SOhg@#)9V|(ILHHZ+IU`m=sa(5`K+j~}Ee0X3sSWE{*UKM-!ljlh{ZBO>t1>{p= zQ$cdsuczH5JD%cM|4`h(tQ`lK-l2yh0xUgoc z1}5KvEY-pcr~3r>n_$LZOBjo#6FBQr8Y0pr=~8ARb9F{UiVMsv2Y5;l^nsF!h=(ow zVTy1-X`Rq_ziT|wunKmDXa!kh{8<*bCj^r31lzej1X?d~o(2Hw3q}(FT1bMx#bBm@ zYgA1fVf}U5r#Zi;*;U=4eye4dZ%_wh4R|{Kz_Kemko-%IpqL=~vebr7?<9~@09zh} z_4sPNqR==zB)~N;H|)8#c#wBSjkRQil}l1O!(5{E?XMI+Oj1TsK&}*9?4T`{j%k!` zIg~=pU8BQ#@aOFteFRm+>}^WM8i5BisTaQEXJa4cw6HwZc6ruFVn z-+3*U9PIMLlk3@Cf6H|d+Vx7Ux{JTt57(EoG6vhW6X??fB#Xase`1H$j1#g;S@j4D) zgMh5-nm^`BRJjb2upqCtigO-}NA@QNF#xkODzq|gKpP57{c&)FY5RX)tSuytXvh9o;4l&48f<%FN;UDw$sOpQ!Jph2n7D-O&kUNn zTk^>g=!dc=Wg?vy?pba(y|}z=p2C^EOC?M6x7zRSg0-YyfbT-B6U+)Tlu7Lvwrvs=s14RVh&?hzim`>$D8FXCftWS9D%Vp;MDqzoFlK(Eicb#LaSH z0hiy;%VJ+m?AX`jP1TRG5wmzfQ%FY7B}2T&v7w@SsW1I_@u)k8%d%A@7CN#$lzmZ7 zzUkw#rEnee(?=7@*8 zRA7W7VFg(d=tNdYR)W6_8%XULcgK|b_DSN8MSUgDHKCY$h3x|REkqvZ2eZm1bH5b2 z5$<8J)FJyc!7OxQ0~g^x#Tpk1XAK)sSyZFRCmn4T$Di|fr#YlZ1tYD6_0ZZj#($8? zg14FiG>kh|hs`z-1+WW}f=(#P>#t3JS9%r%Nwu6&$HhhAZWpUo_F}Xvh~sWJ0Iv)N z3WW>D#8&fhsxom6v0-;dr1!8{7q=u}s-Q_f^_-aKDmyTRsHa~c`Al@soy;MZp@i=; zE>K;Rpuw@OLP(0541mWs$td9)2&bM?LjMH`!^#+x_Mke%qYw(N?NV45iNog$K~E!E z{Snrjj(yBzK;9x#(Hpu;yU(&2IyxR#$%S0{rRVs4cel2}evMbou}!!NlwK99kFo1e zTu1Vge5Z?5a~n=Ay03r&ly-9ia~FMZlx>}+ifz*#L5)@DnO18jUmsf#_||;O1D$dy z+C#-+8E*ZCp{Pm$B-HtF4QsribiX5(L0Q};Lzaw52h|fC8X0$^Q!V8?^g>=q(-JsY z1R3{(g#grkwfy-Dx>@yc>2DxA%?SQWzz8k|fMz{r^M^zEItF1c0zd{Du%ep{|L|d( zWF?^qU=Btn&$+TzL!vxI9r}k@7@NYj>qN3}oGAIANDT!RC~1Cu55ADc+JG+!a|Iw> zMLo=Dr6(B(IA@=l5L%{^;7zIIOr;i>r&;3yE-IWOir?p1tPGuZe$lQ3isVObg^P$Y zm5?_IpE~oa2z5XglYZSPoH_-|kgKxTR^|!BwCDuG%wWwTgJTm(4-VrZ00R=&5bkFH zBLoe0$ciXs%ZX}ppUqZ$oYy3$-7}leoX2ugk~@IJ1hZF{PstV>hmy)lyw$PgC^yM>~J<3NtX0&$a%j5CmhRlZ*Z*{Qm5ZZ$PJZN)QFGgm%ZwC;r zToif9;%=?8ps!bm=v)thiS-$+!(5dDysa#J#Ys|Y>xHGt#5uz}5(SqaM%YY3(fQ3o zGTCb{;bP-oHKMpo^Fj&Qxn~SCz9jC6sbJ)dCnFOWhYnRDD6@{Vd*&ekq+B}jCxot? zvq-mk48cC$5Crw+%Cz5LD@XsM11D~Yd`!yaw3!WpVQ*0%EL12ESw>c-cel6O)BW)z zcH7r|aL4C2)>9#Q$EVHr^BX+R_c!qS)!lyAXVlN*`*3@c+hb&Br{T4>x0?~FC$N~a zBXnAUk3Qk_Dir9LD8=75n%a8$nXr5XW{|u_HNS9*XpViA1}1%=YRd=_`J#)>q^6(? zPx+3iIsnR>C1@6wI{s1AhoAs08Za4hOk1z)Q&mY|3t$1DGH6iEKJ`Hs^&~=ii24{GCFFY|pA~cA(d2ZTpqO^Pmbm@Zq9~QP(9w@{;1Nqq?Ls*?fxQUkmw`Z0_R%>y4k*-B z90J!*8^~Me?jW*VUzM#wPMKg?9MdoPO~2zIstc$ld4{z52eZr{gG@Qeq?yLGfUrV< z@?n^Tmf=_==;_Y3FDN)ng9a$sU+7c9WjIHVW!MPQ;u zC9ao~Jol^H_!UF7)glWXv)VQJ+FeY0Q1om|kl}k1XUsnTO!*)c_9**#Jl19qaK96| zuo6I06+z_uz7ZmYLQE?gf+5_%GU8~A*c@^eHUG2A>ptJT&P<@=J%=(!@3j2oVH<*v z7>7tb$fC&|A>7otkv}YymfBb<;LFIi^+LMT?@z=~T@ma8#86sRF<^i6bt~NeT8veI zYzf989{zJ?WE*r!nvQ`02?sTXP89z@wHJL9t%j_zw~5(63+JN!zF^mbly=&>QCP7u z?z(6an`8W*Y_<8v~PYkmZwvzG}4e3RLbu-8U4&Q!}x z556Ss;O%f;0hLCTQs$|wQKg4FrZ)s$G=^sFdV(|w9eR@LpY9VdJb<~?k1nNXmk(lw zv*o}d8!}eY#hUSlpM4#^d}negX$5RoFp@ z3Js?O0I4E|#l%!r#X;u8qsK^15Lp0jaJy#pUKV7~B zrzp-eEXi~_gY2#%Qu!fI$jjf4(dY35SZ0FT-w>?^5EUK;F^mt)0ESx zX>PMtW27V)CN&)D#bbQB85fuQfZ-}e|LTW#ES%r2#m$CCN%PL+6EGbvy6 zzF<)H1<-4KLpbIbHwB0}mZf$uuF1_h=w<1z4kP%V742?}&h2T> z6TxP5Rdt~49oWQ`H;IdorZoE`?^t8qEZVV%?6M>xT zdPY}FEZx66JZt7_mx_q_t{E7-RkpU`zV^Jse^Wa;)7ikEi4xzE;L#%xhQW)~&3!I} zzBzfufrY<+_;x2r?O2I}=aC*U6bd=jmML0Q6CQz;${=_PtI#g-5t6G+wWYjG7^`RJ zlsWKX(yKS&FF~e4oXQ->yz_F}r?V0m{t~8W525LgZG`v5+KZ9*nSuXRCWieYNxq|} zJJWSOz{;0D!wtD2isj3Y^$`6*u;mT){R_{Un9eR942ya^}?>TFNwyg1s_Q_`zIH5~E zcdgDcxYMUeoDe!7@BKlIAYfw_nF)~pDV7)|v%L+t3B{wEtJV%$L zE$IUo+EDeygoK?n;i+DJ_U7N~|EfEs)@dV%E%V&Fu?McwJ*$onKqud9!!I#kv{Eeb5jOHshAnCV|HMV+ptcFmmaaw~mcp z%m^vib_wM*8mopD+P#QTi+^5qWUEup+Vxt8Sh($td3~A%^ApCe`*r(q(9pV|EW2pf zw$iIxU}Okc7eMIVJ|yMW9jpQtiwhAX`!2H5(HSJ zz}-c@^5n_8s=K7T2KWP8PWk0ZUs|`hEIw_CZ^86>95y1MvF|}At0T)(sk?W{vC-h# zRQee0qgyr6>O)EFCBxPkQw8P;?}s29nNpePha{}%l}M{``aYyKuYJg&-<=fHvc{RB z6M*8S_evVP-)Ug3^R-VUHK{R#hwUhu_KHNr@S2NyU(qu1nhi!?VFjHnpoYcq^bYAh zruXO^fmGIPM%aej)7m~X9Qg@tDVZo#;h5cy$nMY=**z^5EtqY_F(EJeYx{uwtLrB`2urLA5zAzFc4k)BJYRV1vDC>n2UM_eY~PQr?b-fyq{*BKX!DHg zV>{vb2ZkQd1RE9M{SC-vtg{YU#pE=VA+~u%{D2<~gwc6_rkx7^x);qO@jCb!PjVQqetqltu%vF|h5cmPp(GZOdSQr*@8lwaS?OAhaj=~6VIu4j2Ra?F_M zAz8wCpo%U~^ql?@Gkc=sV4-4QT_qLdzNL#2O5zAUdnBnn_yEA(>jDyir!_xTAwt%r(xmFJc=|3iMxo83jq%QCR*N7?F|9=Y3bANf}tS+lyWgNFz6u$<6W}`M}HVd00Iw zBg^K2aW4=jL;HHmYetuszHWN8BNf(r9=b|)3{J6|*Qax8abQm2?n(*pOv^NJlx$?R zACEnxd@SwVp&@w=Hc>@lqZT)rheJ}tK}{u*{K<9as!X1sV@TlE{qqtj;iRa4_e4A) zWFe{SKFTx#^vHJs@@-ROe{8uv(hBs8wi?aDa}FDAw}PoEfETo#5<2XU8sipFS5jwv zq!))m^5a3g7J|LU?v)M&(mrkNLA-LC(7e&Yv-meVjtoq=~gBj z0%B-&cv856QLPm5jIQ(TJ8{0+CPVybWq+ZNUDdmzM^;xO7N4Kz7e}_5_Ih3wNK~&p zqg+*7zM0$0b>&Q=wi7QtCEPx}^t;X!I~P{?9&}uJ!E7OTmhir+R&Z`Mw4Et`XxXB6q$E(lTP-pd^C&urFpfwqTyr4;|^ET6X%=F$J}D;==U!5VQ2Vo%X|bS9kSkJ-+5zc zLw{^+=FzR~o&s+Xr7R>$*+EVP+zT0E`@)ZHuuUh~E)o(=s{AtKW7DKf7NkS?bpafRJaD7J~-4FrKygSo1mOl3W zr!s)~$D=J60|4MZk;Z=yJ8pRa0Equv*ztc>2I&4js5Z;k*7lnm58eS^;C5&d*Fv&M zPXVBb92}!+Sb%;xB(H(pq4^RnL`y9$iB}}rPd|&_VV}nAJ`zNfQf>=C+mlACOAb3Y zGcc6bo2#|2uU?8@$sz8qm|VPk@38ATTZ7OnI=`>{^LbDz@A`MvX8 z!jlvbr}?*tU|Au7%U|C4@Tegk(@-6gA3TR)OKArRePzNBeWY(`p zC-uMr6p3eay|$roMD>%V3K$4fpG0cl7BFiC2XbF0)4m$qXThx{f`?VLbNXSG~k?v*008^Y>3h1FK@xi?4M^BjeMDNmFl|S z4Eo(d+lu%<-_cX@$eS)WEG-GF*)TMXy}jUHS2ttLGNS@3W$fuM)$`uKy0W?~Se+II zu(aq!ZN|Xu>}GP|QcNs8V#13z+kM8b6IdEI=0pzuw;N94A{(p`mj#lmZq++3bItQ6 zR`MgUkrAZ6ljpDt?g0XeotwZO|$>7-JdfyiqVy@?>j^&HUJ$%A;SSD0K#C&z*xe-gULj!?bls z-Q~7$ksEu^=3d8bsobuzPkuZ%+{ul`8~9bZ=h=n*Yx#6pTqS@+TXcxB9s!*OSR?An zqXn^zVl|eVi;>nb;XNNJ64p|;4 zT$R#YdjX4HH4$Jy{oyqR$3Ht`KKyk%S%tZhC8HtJ;**S_qy&9!1ul?yH zC~I^+mBsTs-URKD22`JPgxI`6I*{BL4zI6WtUTn=)=(Lai1E5{c9LwNwwS^#Kr?z$ z%%Dems$wthEa6*_+GxY`Kwub1G;rr;BXJMzOw)o+ph|SH!FrelheHYJg{#{2l-`o4}10E8(3#W9P+(~)bwiW36;@!)d``{#nQ#1js8>d5v zF!Xvf+y)=(>t3io)-mResX7)GblS~R5Uuw9qV57gfde<@jaQUmWX3%af7b^jfiegA zWB?!!>{12X12(unV+@KpF2j?tGIP`@g(kI03bqW4Af~k{`Lkn2Uh25tCb{BAKrN#! zMxTH8$MTLRDwuzDJGp_&@b;)Lh+AGhy|XA_;wOM)a!`uPKtnOOte_<339A*$k8au1 zm;lAcMZZ95mo!P~2@>%X>sT}*Xa`XXT?hEyp(J^Y$x=;+{n+7GNH?UV#4GRfzWC`T#yV`u03heh)@hCv;4v(vWrNH9_u1GrKE zC^vwpxW#!Utg%q~7Hs-;E{+OOU`)F$s$X;*a$aOS!&E5r8-l0L_h^dA_a1yGIG$NQ zxI>BE!b~y?+~aPYTANSe&M@BpeluqB6aGfR#Li1Z}7sK4jYF?2HILZPHi!U8+eqYVY|!3QNO2UtO%?G{hl z87&r2=2JnmCoT(<#IJyJWjCOXry3{nsuOfk#0d}swM2nZ$4QH`QZ#dX(F4GaAAh2H=?-_Y8SHMDqC!^uliuOH>}y#k8)_-22}uVCp#^Z0xH@T zXaQDW)YV9`W>eV-=4qpc4nBmB-%XMm688>NR!4<-zRuysw**2KnJR-!aIehtIu;x9 zZd9cyqANsbT^?*bM4tN#>NdcjgG%mEkpNe-o`yglFkFq2>o&mQH>8TT zS$CYIaR<26~K!W5tg$m&dy7?=>3c~3}>v7S0cqa30L z(>fH%rhV3#XeKAr%sz3Cmen*qG8dG^8R0yc87j?A`qQb{N58QvE`o z!vh=x;N!-I6*ol$*pGh;-0iA2uK~5>*wvL>KhYlRCF})zYOxaxAZvHdUcF#+`w-le zs_{>jCyCtR+173$z2R(E#%#hj2n=d87X~S55d&n&5(Sqq3+qi-h(~sldS4Ij0u&0r zrEHjb@OeoLz_e=pbfGNoTm2+C3CqF+Eh7bi8&$+0n1R_0{uPP+gP zHl#bDf$qI)-EFK_K?_^Km^CM(F;>g4FqB`tWJ^AKXv`LsO=q+D+x+HpG-i&Tprk3;Im zeKMl!;$dl}Li8q@p?GjVFhp^`MoB+0Ur$Oq5%}h-sfhOFE2-$V{gN&5m><8?gqhIw z^T3wg{Tt-xfVWeP{4!7exzyMeB(534!xCPT-s?QSs{+iNs<0j5GWWGy{x&{ucxC$f z-ig1jq+eWQF~I#K2r{l%NbY;zs>|$DJouKB+M&q)KAFn)aFvV zzpYVb(t>35?j^#~e!nFUi+iEY(;o3eIQ8|Z26@+wQuyQGw(Yvb?6>XTmj^#%it}Qc z7BNgfh4;?kud}Zq+c+c1udd$jF6B)Lz;@-ZZ0MR zRgeQ?BdgUG_NI&3wx9cf7XCzWO1~1xU3ocly}d8fCzUK?g0gB*!NiyLvoz3rM0I|C z@1G4$DwNO%(4_ul(He{@1T^G!;)}Nv@}dv)+5v5CGqcJdYOd%nd%Ge?^4pEZf2gP%A3jO)yccnk`A{&Whn&|8oh~0^P7l#wfL--zS#U#;$_- z(_!wy4JK#QD0t}wIKd-)@Rc2GRCDU>Vy9&ULnl6^VH#()O z?{M*DUY5rK5~M$VU*RKR1AqQt+EkZ1Ui4D}whqNjFTu}}A)fhg^@^m0^N1+DxKe34 z4cWz>opL|5Z-IUR6i7^PQn*Z292j#emHmSMM{GhWBxZg6TXg=9r2OwLkBJ4aPqLF`PG5A`^OwCN~L|qg8*3NeMWB!2CjJ=i8vh}JrDWCoM zEIOO+_q4ZgcWf-Heoi{Gh&>BYE+syljK%M-V51uLLIA1dR81OXl+Zyape9*zT|CJ= z(+j12I~e3WbB5SGPyHCNw7n$CzyK* z63DeDF;fXMGlcg^PFQ7n{0d!+P>9?ilbd1|vmKi85OlxO;Nc8X=Dv=5b9WK3;KKXW zojJn0cOQYXq^+a%uJcYXZYy@An+0gcPwu)qAPn3kTF7khUYj%i~A7^qvQ+gxqC3Uk31MS zMC4b+X6~Xk-Nn3*Oc)MsIxslVo)~TnM=5}OK;!lwOQRAdyH9dsa`x{Ie6HYTu#O)0 zsNYN_K6njyj|Mq8D)Y-3$b$FTQU37l?X-@q&cZdp&lhef^Sbmy@T}lZn#|#IIMA$X za68A!ZyBFf-R>;{O1)piW`n_`LTBO@N?g5I!+&(`kr}H5s2vod6r$lv9pEi{h3o66 za1)31WH@_KS2p{t|cv2+6ILhMJCga)PV?F>cl1SB+WRb;3jEGl~ZpKjN z2GR*B0^P`L4XLe1$OM3x0g`ccis^%lYy+?X>em~{2kc{$VJs}9>?0we)D&TU69AN^ zJUo}qi>JvKgk{Q{MrRfShUR8A_O!KbRr`bw8v($wo9ceULs->jv1czj33xB#H9&1i zgMTRmh5ZhHsewPJ;THVa>C&a)!x~%r0^1v!-384MVFxwH-@)1FYc?=Do3?DY1At3n zS*v9EfcI|JdS8x8^HcfM<31L1f!lV#a_xL*^*a2V>=@m1VlosgoDAaX0cI82qnnC; ztNGeKwh#JV(mqPuGw$xk|EDRF<2j-5`ROS*16X*SU*3}NlVawe<#2<hG^Q1!^~RN0s`n>4C?WPjLDI01;QtEZcIFj@ z2--Bg?Ahj-Kq0ntZ&O(GP6j>vFUH<6MwF=Q)@|*!ZQHhO?Y3>(ws+gMZQHhO+kN`| za+3S!z4w0gqgExARH~AdnaY@BK4ZJv73Iwxk9xPB-o8X`6ko$hXOK{!sEpnz=`OimpA!F`F-&SaQ5dDuLNYXYY$Ij$f$6 zbya@K@UP;p0GdvX0RXg+yItx*(-mDHMmyzxe+E?0{@nocqi$pvOoN4b3*mW=#eMLa ziE_s~DjH~&ApILoJ<4NGie$;i;eW5sIESnxKw+L50+D0ljYL7(Pu8i4soM^9iPHx9MA<`y4>rSz3Od)R!l)my9 z5{w=6*U4>LdH?{crA6JMYTyLhL%_g0vM5?=&Aw`8AP3F}U~<{N=}rM%kPPKlY<9ak1cR?C;`M95 zPnSye@VdUr)Ctp;bD2H0H4orGB}~B@xZBD}begKk7AHm8=H|K>Ad$6d)Cn77O(#1m zZFbSuB7)URwY`?vK!~ugj}GF_MgAxwk~Jy6d{;5SN&K-nHfHAmKVF#P{5cr6aM&ac z+V=Xd*c*%buDa1N8JdL?fFqSp@QWH_?EWZ#3pU?P7K2Gu?Nk?R;wZ?JdYyF{ zJtlQesjIA7v9DBUD^4*9(=bIfw_n|O3+^co%(=Mt6iL%Mysbe}?}vq)KGmV4^f7N* zhgW}uh-?UYJ2jAVU`{0H$SR9kyn z8<57VFy=&Chyr)ubdFHxcU*E|6)FK^r@x$HUPCpPU3`JCI(V;qNlmZn~WH+NO*VL8d*ZuYumMXJ^rqM5jFbZ(hry~f_jDJG`) z2ovWjBB|M;=-fql}caza&@zn>hDt9 zY_%$j(PpW}Sx-}Ca)F}waaDNLl7Py&!AKEMH(KPXHChf)%-MZKRqu>{Z+C+-KfNKr zmn!~5;-X+kQKX`R0c~Rd+0^HrIQw8wJt`F_@|*3!gic2l8c%NWCd=b@2Zsvzqf7CL zSBlK}(<~`~VQ70yr@u~JK%;q)yr7L6OcO)k#g1yOHCX`j=LFKi6Q#*I--hU^*&lOG zCgZ^|%a8xP3T?_8@amTHk7#LLv~g8>v7$g#QnEgAp(rQ{-_)V0H%4AlNwPY#AeUTM z4zG`OJA*0{1|~Ei<-z3gk;8>rdkM)l zI%%HbF()q0W=6yb_h`WK%XxH(F+Kkg5n^nQKHcmnxk2dvdpz?xMfj1D^CK&IeRo&u z`i()lZJcT6RuWE4ZMynu3P@QvLtsh)yB*7&TI)%W;aIz2b}qz?Gve0kg&%v-e7Ryh zRy_`6%o&yMB)6fDgveJ-)yV&_gXar|>4~Q3dd+jd;wQ$LA#er1hY}!mC#?-@uBfWzt#tu5uQf$G)t*tTX4?gi7KV08(z z-!uI7T9OYZS*S^g3@?|fTj8H~TTg(mJ3f`7aJ)5wt$plS7Ki&^7=cKua)u%nr|QPN z)$yS^zD(qchl=bBM=~sr9?Ezqo@>ctuIr*J1CSdX<8DoAad$g#9>WpvsMGPj2uN%5Q|Ar2_(CX$RsW#U#A1+VGM_{*wb7L^qm64+* z)H;2g&5M3>+rD7y(vI8oZeN!YqzNHZGKw1LH{)hv_31mvKrkkGAMyw|^2PIpH72}( zTnW*CA|}i-;KCuTuwYk3%SEw*YZ<$EI`C#A)Tin65hv_+UJOAJ2@y%MLTf2gVz)?q zJZt@2_4AI~>xs5vV=Wb#bxhdGu6!uK`4o3S5Xr58ZWqC9YuAPtncSj&kTR6hZbfDS ziTvs925p^s{hqTQAE2_Gk%F(*SP39!_S-yOL5b;I>74y+R7j<(MsYR=Ui4ahW!V=F zec+6|JL6-I8qT0;IQ;g-++1y9_0Gj19F8|3CLCiUHQv|X?U=fS|IpA5e3;>eR741_ zcL9PC>J>N;4j{kRh=rG+E^0T;_O4~kCp&-xOn#hG`-QM_lDg{Yd#T=-SKYRPR=o5! z$?uZQg<;cTkvdQb205_QAr?;dVdv63y2v)v?GDUxK9*(3A14^=#`i+;ML} zS!)JzrD5Fo9IBW&_0I2^P1>@Hky*z!&VUdBJ$hbWMIdm|n+gO6SJewu@U+}9`#6Cl zwTqwT1y=S(~9~$yRFpySfeYD zt{N+21H+0n(h?opg^ap%CU3r}c6PskcM+HGf^nREW!ZDhrnXfkl!4jUJeaA&5{y%g zTtG|mC|r@^Fisw8x?Xz)vL&csh)Gt;2YDopXvoB63HWysV8?VgASw`yGg>U{b$*zR z^khiRWSK1O$vkN${)nX(Dkv<6CazewC#xmH3~U!*7V|f-Oau-spIYK^Na;xf`N3Qf zZ7y-{&QtX*_K)6M63W>yisUb~1yQ#O_2DDjwv}^Q)#tNV?&(zWMxebrPJ3a%kb2sx zbxQsZiq0X#QtmHwgF_(6Yedx(<-QysFK(74I;9bkx)W=U#9YL@6~hFeC|}h>YVpDZ^hAW1tAA3D4bk-gqo4W<@t^ni<`XLX!7!>~pmCX7v(Jh>&^; z$DOp??9;#45zb&Vb^R3GmvoV}U< zX8=6eRxO|`8h>(Hs-Lxcd?qtGXkhYbP%5zp@lhjHz3V#D<&aC^FAMN*C1AXK_krt< z_lwYVR+f97mapRe-B@o&f+Bg(N91SO1{B6c0fMBNs)m4)KbXFNjBPp zmRZ4IJ*%KfZ#lNblz>vMaTVh=uR3ACI|x;o zR#HED_JGD%^yr;lc4{9Vwm^g+Z{#@wqxw<5&ipfC;^rd{902Xio|Fpap@kG#0!RDu zx*lQ(flTCBvV)5AF#%7k1PcKNIAs{@y!g1tqYekygKrEUD zNt&tV-L4$kXc!7X83y*!n4>o3; zO?5W(Y5)!RvgYh~U<{MTchr*LtK1>X5F>zDaeEx1BVqj4qs+lZ$WbFZ;#3h`^y$S6 zA~6b?y?*!;di10+D$Mg|fE@MB(ah0IwcAT|YNW=YS8h&yv}#H#c$h-53=1iYf+z*wt- zxhiJE4|>`1C74;o#4#rgiJ}XC(M4WLrJ(iwR70yX=N22v3}o_O`vNpzGT(VOW5IoJ zHAS)%{gdzohWZ;XLhj^y8xsoHNLma%q>2gZmPhk97lJYk>c|;8n&Mb5z5N(YXpJ{e zM$0)|JQiJxKs*lq3~*VPw@j;j1~o_T6GMqrZ8lHUJ+KAvu>prXB%?IB0Ee1(@YxBk zpUpcMXI~N4XM+_KUz$m6MzS}aUesaYDFc_=L!h?dII67=g$K3{Zw2*AcP#l$G&8#7 zA3?4V!%|cl`-8=FBto%ue-=0|aKG5)i?q>#%y?s6K51WPJ#pVusVQ^l3gn(k!-|-s z?dxFD2c^+JfvE}^{lh3jCAy*UFsR=-iJDa*(`vN6&$@V9$e2DU>iAnrLT9I*Z*J>J zx6(PzdgGC%wE4y1t5H+a6_KP>ljdEdhPZ9oQtn}DdI0)ohf9SR^dohOalmNnm^O9U zt{3OMwmPMhlv%w|?OG5im*Hij3w#x3d{Hg12QE%l)|EELwIpS$Y$Y&Be*G24gV)SP zwbe2w-W%Ci+d!9MC<}~SYy5U2*!PXgrT|6jHR&?d8=k85(G@LC`*RgAE6nqR$D5+| zs5OmYNYXoC@9s~d+|lU#gTAu3*B0Tu0bE_JlWa|=jo*B?KuZKO5EcZY!wPg(t7cA7 zqKKunp=pMXZ~r8MOSf&u4|w{vT3DxdwZYotzvrg05AP4$enGstPWQLE02Qk6NzOq# zKa1eM>z!@QYyMYxLXz5(Vm8I64i1npT4ZZgY>W;%5?zx+qOIC?4(FYGYy$cUXEAr@ zMJpQvt$J8&h02&jo*(4{aS`e4qFQCB0$Dek0_m`oYk7p zQHm?UmAG(SS8NS2KP`z48kdevUsl9~nU{oWg``9&6M{cyHv_wD)3V4HkH%d-ZL69Y z3~HT>U|`%E&vjWQynFBcxSY4-YwKgL10BJ4x-(ao@9iX3_SHI7^fmXzX*$)NXg4&x z5lJt2|0(|Y`9sW6zgd$1De?ck_yhmm!TWC(Hz65)OJiwsM<+*GCpRZ$B^Us(|Bra$ zCKX-V0(N-cYsn9s$}8SDp0cGaZ=m>A&rEP((D`d5hh7R52s>7Z7L6;{9R}9HxX1OB zqVihP;fIeYJh*VXDD0gKuxrSI8NOQ~X|0AYi6MdtQ#`&~N-8)GDMwnh<>dgTvrRv( zFA;VZBX4+&1Ux=`H^z3;09K{m4r9S>Bbh+?>E=+euEy+4Q<@qoN*!txTg+wK7bR|n ze}P27mKf$D5-pWRqT7q{O#voy8hWePjsiLEPi|)J6rNyYn@&O2R`$me^t8)h1|*q`uQgMacgtGwhAQ<%$~3z9}xGilG`SdF>cLuvrgYI;%s&hBH^ zpY9jBXD546?M}1j_&z!!AD2UD(ZHZIWjYno)K^vxK5gh!Xmmg^T9>&6sS=%ohE+gV z@6|}O4ii7yIkg+EkRwGkLwlFKx)N`s#1jbNq`eW(;fZ%&wm6S5%__^0`bv47{9%vo zt~$<()rzO?cfts!@KFmTj%l0&O&Em&#)m%r*%!&g9Fwbx?RSh6FtI}AbqRDjLnwky zaLXDzm2-M)6P@*VYKVaZ#Rvkqfu5rjtIrKMqT~+GcGp}CMKyMA3T)LtN_ft8$?20T zS+ri@CBU-?!dGe^K-L z0ryUXnMH>E%6i$rIefuS{j`j`lmaj)GMc^tRbp43c9l&Lqzf}xdC6KO(Y43UL-H#Y zh{u1<&6dI*(%Bs@U(3ZeL#STX_X|YlrRr?|Jw$a#mQDq&`{ZG7a6&HtipM*D)*kY^ zfI#iXTK=i-M(&1Gb&9iy2lamdBqZv&nkT;u2HHJg^6iQMb<_|`FRzQ!c@BAt=k{j_ z{$8ZE79Ye9@oj_V%wcRy(~7tYg|aU}P)%3QO%4rXC75b!ReQ6$X2%kFW=5l@=0vr8 z$&EsR&5&+YoRI0Fy07K%p#6-XrS`dFQxgdC@cRBw{0w)EAoUn90Kk80!+)cYBmBh#ExKn=9XE2^4t=W9y0KnxPNN=vUmf8?AfH1$HqD2cJ_(!&EF1WRA8(zQj z@GIqh!leT`@HOHqrhLCl-=&ND7-a)K!=O{7`tuy(Mcfm4ME4XbSi<|+>FV9ODfXEO z1Q6q8aR0FrxVMj?BG9D)hgeBn&s!zEjFz;z;hPWt{9>#t=jpp6(Etfg|KUe!T##!H zi68_UWfjHRgToC8$@kWP$5E%8m9V#wMKVJeS|u71)kj3AR-qCE;UXkdWEQ$cWQkw` zos!b=hY

BAC+4;nhi&5lBS3Aw1>MPLCnd0|E^~^Ks4*H?jleM;gP|@1e)w8P|Bf6KlZmW0J zk%Ee|bzsYlJ-%OEmh2e`@4lHhd>yjlP~AZ@D?m0XZe?eXO}LU;VrLcyPs|9lr5B{nr4;bpP!kx*c6J%!JR_as6-Y zNSuX8naSZRSu2|KB<0rLjn#)O`zz{E!*-N3=L)!1adPKwD1ZWaY**f#KGTCoR4K!H$F5lMS(u ze=_pU$cb0Ty}ZP67KQ$`TCA9@;DLcR>f0M+9-55rg?RexbcYuJUMW6uZ|N2czPd|@ zY!>PSkF5oM_3yzErc1~<@$>G*hV#URP(;_fr0|BBa zaxPVA$Vmg-0>jGs>z5UCnpbODbj^ z`pv%_S}}QEfoKOA7==H7XII~(!GJw-d(%h_FTPGgT@Ua?Z)U{QJfqcoFy+K>PAeJg zo`Lg)>-k{(kHKgeHU8L<;Id#{-BlAGv{da4#TpuE0tubSjm*opj!)ASwa-oV-Qyjc zCZOxlZ=+7gOoL%_7yS4U5Q?d0Z=>YQA`ld^EHYxRQ@o0xHv()xvfeTvi96Z_Ou&b7 zq!klD(Fogx6 zAO~>zH4&?cym9h_eYj~*O+?-{E?Fr55olH~JbY2PXr1uY0Qmv@8#$s{Q{B6;BQ|6N z3a9?L2r3hpkjSzVH)b8HCc;DxG?XW$E!=R$dEV%A5+j}0!O6la+v^?{KX!%Sv97+J z?Ib)_Nu4$p{~FUsCiW-S+I2L8?eKGC<3@Jd#ck_mUKjC{I`tPNQwi&)(Vuu}*Efo# ze0#3k7`;x$1N0+Y;0QToaYY&^uvAJ@`}ley(MZ1jh3oGN{JJt1Ci%QTs0P^#npIzI zp!+YakU*L%gWNVS-Y+}k)bS0O#y+Cu?pq2;XZqWftVDDOL@A3qU|s%aC#m1{Ts}XN z`;xyUf%VxJdi^Y?KWD`Vz!w&l6O=HowjkFHr#Rz{@x2?TpgMQ%(oEaP*u3Wf?~V>7 zj|u=@MkEct@(e#}c}QsO2w0^dn&$&YF<;UNrN3&Q!-?f8! zbM2ytiF^w>!dINiV7Hk~J--vCe8Lobm2)x7923ErXDTgg8Qg4&uZ6b-w-0*$vT5*} zM_OcJb?9g0oN6ZvxeABw`$MQS7 zFHd)#+~rFM#H3?a0VE$04<9Jd#V;752Yxmt^Gn(vGoX!W`A}{pWNv+5Li*InhF0jI zPer?!ULQEaChT_-9?;6Ld#yE3$zpQ~vQOn~L*s3o{JX92GZfGmLW1Me%6((Ik?5nf zjUMM74?y=XS<#x}2Y0n@&;vQ5!J?ItPvW9Wq*n!yxXs&XLHJ6>#Iiv|B$_CI?+JyZ!A~-pVV36` z39*RHS!i2rWW}IDKgw_8_5jxy(fi2ndj*$$jmNcNfMeLgHr z!ck;3^kkvpm>ug~{~iocMWxa5CoV=>TN58n)ZNjycn&P0OS`b_hU_TUVL#c{aZ-xg zdQhTL=N69K*+0}-ho0^EBL_O+7O1@_zI`26t^5mGGI+EfGhqom!}?4|KkhF81oT6z z@Tn*pea%X?dwpXSokLhGgDHrX#%Y%Nq>OdqJ&pU3sC1ZwO-{pIQX*4tHtBS(f<&Ol z^8YIaAjbilQZ9VOYu4=xoO~)WU}?>4Q?#_|5cu{s!9dUhuo8z>6YTGGW3pzAgKe5G zT54EdnOdqi(p_D4j2?>)FQwmIQ*acrNmOyZ7!p3YwrHCZ(aKOk9v*D*oZ_M5?3hE37)({NzF#|U7?IADy1+mjbg`wVImO!pxPc#2#FAp z7z#t;l6m<`r8(~t!wBx#>!{Bh3@AsbLtK?2fcWo(&6~s7z{$JXUKR3iUP(JDJM_t- zJmD`J*>_y^{0FrfpOyc$NA!(-ZK~lb>q?7Npqz7%%uP= zl~2NBLYQvlX-H%U6PNGoex~Aai{FOCl31gv(1yK}JH|(tIA|jhHR_pY=fC;)ZY%u} zWA2s7xxkY<_4GNT7@6aaba7b`bfQ+I!kPd^HAj1(X&|RWF_oJm zg!b|7^LBpU3YNGUHnX)F)W=O=n(%DP?_J$M5zg4apw9{~*D6nNJ?wqSqY@CodrLgQ zDcuiv`5(!<@csoNZf;5-0DwbUXWUy9l~C;T;3zZ~%Q%a4U`$x<#o$oZ{X7<*)9p`r z9Jy$`cDCPSrvfm^5`t$$emc7>!@@KbDaE-zv9wc^-?-YB3@^-n7o2Ks;PLdEL)Rn= z)-pjG7COsn=1hCd&lZHOY2u{!%{$c|y^xGfRUBUo}ScytOVFU`88%XAwDm9%&`7 zBSUfTOy)i@8u{XQ97(2KNT;+Q8h8?nYag{}7yd}YP|D#)iOi}rfI6{N%}@^6z)w%w zQ2WI3pi+1mKRPjca8J>W-?_xP2k^sE5&@u6Dm?Y82}65ko5+K!tryRw5?gW5{xh|P zY@e7kcyL@v@Bz5uqZM1HuSc$Z@0vUO9#Er z#U9Pps)qRdbNuwv(EefMobfTk5suZ6w=HvoI6j#ez7}>KNy0@sk99dZkFMORc`;(f z0RCoE^-VXM>}!SBE}BAScSovISnL#eYIwL&qd69&e`Jm>coDINTEB^~Uo{a3%Z zthP(Wm`zq=?^A7CLS$a3NQu3!^e$0j1_vVvz{k!8kIVAwSqvij9UX)L{& zhy{U55vPNH#afOQJNeW=2-Zoz()Rod+>8u=JRKYSkA@Jx>GUS#=iGV`H7dk%%$6zt z&z!jO>kHtD=DBtryw{@3R(%W-*2;b#mXR8i#lI8N`*)aPtw+5SSH5d%jorDrm71{} zAIN%;op+2nzBi=hA#A_VSu(PRQ-b7^LSgJXIHM52Zg&u1Rp*@iTk+l9!F*z^Yzr-~ z<$e3M(2z*`OC`bi(_a!$UTk!D7kv|$poeq zuV}YQooESJT_T3vtJX;w|3CLhnqeni5mim=0?`@}S|@^bb1h5bM$dC96};tWi*p#2 z%MmBMO)8T%MU2I)lwaJyDZ(|wjgH{y8joN6jUf3x_$okk7OI`Ly&Q~&A5;48-Km~v zemqu@l*)r&(CwH;0k-jJw)@7V+ch)?#6Um)Y#)G@&xAJF0jSdCynL1NiYO+~BCcfa zu_|d2VzQgK>%#!?uT%Ps>wFTCI{DkffT@uP|A89-*vBBx9JHXKi4h< z`wpM96~3S@RDIfMBvLmY{uQ1#Y9ryUB7UeWZ{H2Iw{HA=Dp6;@Y1Dzoq@U>HXt!`B ziv7E!Z`C5%P0-Btg=Jl7C$ZRwmk&}Oca6f&0)N3d;*TLKQH(_VE(Xl(`Rv{oz|TVQ zvaGRzBY9j^cHaEjA6_d>!J^s0>kn-z^vy}l(Ik}yPBW$W9Z?1AFWUK2Y?f!%rvWlNo^ znj8r}&BtQ-Zn8dnGE1YbOVgpSGP#zwR3WBbcn7k|vfW<}=0PQvMT@@<<&%Z;rO)4b z;e9#3PODpX_+ueQ1DbP%&dXX_b2$ssMjCT>_ z;6p$_uX8}T0$*JZLGBmP?#L*}xh6nL5`OLAkO~@M_W@|rb!IVt96>T47{egk7`~Ho z%04Sam+$J*M>))f0r%K&UG{r#Gg9Pr`rRN7NG3BE8-P#^5yS|yOFi<9)AB7?+KiP8 z&eJT8kjJOs1EAK3UivIh{FIUL69D6CmOco5mM5W2@dPd!O`paLt;MTxP`skNos{UU zd(da3gxM>;oL`You12;G6%^BQrLwtk!_8FRqDogQ-JJ%q(bK-&01MzoqBc)0tY90s z#urPMOjU|1KHzio#=`6uqoRYbmm14WV$RQzpNXmrOE6tDMr2to8)LH0SJiR27HS(f zU5fQhoi8irL#7YF-jTGOjG z9C^VeIZiX>0R39E#>4ZXb<){>VZh2TIW6Pm-6}(A73F5S75SXq-5Q1%O=#8_MlT528PN$JFu&faK8FEY zXv_$LL2WWpPL5bWGF&@Q;3DE{6)O00|5?bO1~hq?pk#dPkPnhc7_T5@ub_P)#?=ZCVt2 zb$X9VHAwS+RdH^(kyn+;l=7RHz_<71smfd@#1a}|MX1Ov81n??AknTeE>GoAs_R4D zkf%F#uA0RG~nV)nja`cYM;qhoqR6D%d9?u9hhOrf!6KJH~=3h+u} za5JTfyqTyUD%W!4aTf?y*(Inl=nP$2K>@6&4EFXI^ei0V-ts5OD+GW-%SP}`q!osQ zorjshAS}Vpi3)q!{K2oPY13Rx8r>@E8r`Utm5KX>1u@ z?Z!0J&97tZ0|kDP3O(A}WL3jj`6fc*o`Ka;v`_YP9Jxh^SU@qhXqD?3-Zj$YW|!(x zz^ncmF)d@GtL}OdeOcPT!^*#m3^glbJ058IA*Xpd9%^dYUhVey*!PEQsG~cYtA$x! z?GGfdd@EO?UBnGI%CZz%J+gK;>+mWoBC@moJfds*n& z2df8|>?gw4|0_frd&`X7BCyS9S{sCex&GSg#7FECxD9SE{PGe88c7i)Ln_ zKM7)BTS3DXEm1x9E>fWZz+4K~~5AG8uCgB1pbnhOV>%k>D|-NaT{QEv^M?)P>= zz0PZ}!^;ZxJf+?gGu^}GgrdnB>*W>?IBE_9tS#YWRMTk7 zfzeK|sNd1=IU?YmaMCO9<`qSwM6=Zp4odkK_$*8?{2U>F^EeMz(5|E@JydpoJVT;L zU3)Ube#GO{RdxD|#k4jJ)@h%UxI&C=2|GhHCBR8s9R`Z+e%TPb25c!fKiB33np2^w zT=9Lfj4MJHBHcvxmN*o2sgcJ33DKM z5L{9zZARI}4M_Uin1C!cLqt%J=XElM%fmoCOh$PM_Icy)i%z|%C{SQglph82cT*KA z1$N0qzSw&^%)QKoA9&bcaeE^Wo(l`h2*2y&en z^PseG@J&>G9(n5~b@Xk2g1tGQ2bPx@MC@cRVr(Y1_>8HU&)<1}_21o*ZQ7Q@vX-e% zCE#X6$kxA zV?M~|^z!=H=cuosU(Gw1!ZHOh}a zRc%lLA7(qaVBArdW+=BiskdQPrcT~1Pa#ZLLpr| zufi8Fy=VzmC-s!uDmO@1T_&1_wcGlbCGtH3e9pFpi!K4_p#_$Cv43qvv@%}jyn(B# z87lfB&`Ij?-kXP?THde!HkN%doF}MGy>waX0B7LBJ_nwwX7P4!-3pFn-Csb{j;87& z9Uc%J-m>ibpY@_b#9B~r!|zEoY^@Al4l*dU7OEvg-SJ~DBmEXZZWs6I27vmE+2;6J zi|^rO?*UkBZPVGi=%V?D%0%1xxV2t73WXfvb%^~Ql+Y9CbKi5R4J54VVF_X8&j2C= ztX5%QXjz?7gJU8NHLxYsLHp7T7t3~bo(ssU7T8LE#IR-(l|}b4t_AP08jT*q%?u6M zU}P@%u)BuQ*}A;|*D|LSNaPOJxM_9$DlAtmOS{>pb{xgAiym*$Gu?AB?KW~WU-Ea*SUzNiM0kg`OVa#X}bG2WiH<a;%kV2u;=mtn#vwbFI~TV>w}1)$`@MMz3P*G38W7Wcr_N;cl<*Y*7kI<4=XPRsT&{gHN@tOA6M3eWI5;R?P*1_=1V=7TV6M) zuBLAGVM~tx*W*(gqtRBb7`il^$F%E-+3N;OC>V>+ z1>pU{c%C*JcPvp$1>Knrmj0_CXumi5tH(eeA>aRfY9QLVWo=3KxERA#t4YxY?8ZDBANCrvl$9GHWatRxne`%>&DU5A$SJI1Nbio z(61aYX$%BrG(4gNIdRzE;~Td8{g`=5Lct;|0aAsaUpxF?VI$=D+(~&k$qLou>_i2Y( zQDyldeBUmNSRq{EVtyGcf~I3nk~$Z-BdqaQi<|Q>q3I^2V+!RZJGBMX+&;Y)^WGQp zp5W01X!o=zoBn=bp;@y6_I-|hTQiOEjk!zrwsk14BU370V!<^LHN!(K*HKz7d8)3_ z@J0*oVX?N+u3mE<^T#P8;r+L=SqFO&A%L021M2RYpJ#0AQM4W{b_Msmhw$XNmj`3; z#KMd{Gqny9qYO9t&NR8Yvy1UX)wXbIrI}m`Ok6+~Yy>)FifGr!B8hSvylsen%PNzP zW_E(sfYz1|wesrnRwAU=sp4@yB$VY=iUeofJCNy?iUha7lM)Vo>@N&)VrTAGsdH{9 zxtlMmwHQ7@m)kp(*_w)kR>8$HrRfitsB<3RNyc0PMTMF1JQ|AoRwssgTb>k}z=x%C z0Z4th$5kbPydx&@0W<}rxn8$5!1wjg)7obYA6wjG+|zAH802CvGL zwbwyuMLn1KnU-QRp{NkW^sSFY6j&{m2#ia-XvuL9F?K_oE>SeTz98{E*$tHyDYae%@ zf-94wOF)&1pKze5LhfI+TLd7CQ@@*fibto@8^?0_$8!cU3TFs=2kipZf~`rbaz8{sOt56qU}i`sH9}Y3F>Fc zQuPktDP4f0VH`}J*YCcs0fnq{w=uGLsI+;YRC7biNh8MYr)hyO*cJxYetOlBvcR@m z9`Pjlt9H@vDXXwGVFz20tKbr_7!|3~AHss64>L8F6)6yuG<9e&*B`=!fx%2K0D?4V z=)gAA_rX=+HGmdUcUELis-4_R042N$yguDU*hHv+%APA{h>hxc`AfW)5?0275LOGNL@fvOIJnrcc-cQaG{P z)*(c)(S}Wczxe&846?v?Ig6%u&DBh^bW#QJoFIx$7|uVdD#1fecUCAYx~RdN_o9De z2_?xhd}GUhC&+SyxwKANg%k^*5`gDs?%hYq0TyLlF?8Dk{!UGpuyBj+W-QvFeJLXo zyM%S#T!!cZ@51D|YGd5+mMdhXw?;N#-;7KUHVLKs)*Lbhgv;UX_9mc^&~O{;UqSsy zP|q3jBAjr@7F{U`j^%Z|G=uuN`aeq^9;=PpcYP$_G+Y2og61a4qQcGXvtg60C*O)h zlo$iOT?OAOE5}ec@js=bi{Y@32GMO-cw5jP%M<7;39nJg1{9jfao#U;K6&RT#M{=B zhcdC;}(y4 zogDNHEsY)iH)fnI?kk7&(fS|vh&8JuRXu3X&b2{SUJ92|X#G>9qg zfKvS;-1cQhi1dR}tWXE;il#eVkLke--XW2RQv+pe52Ub!rA%ZlRR6GMx|p3ys3Qir zY$4gsniBf)(BfWwUbmpCSBasEabYFx;4?bTY>N8PEm_q5RRjeyjZG700-X{{2!t&H zvLci?Vr=WDC<(zAZx2=p<)qN#{f`SLMUpwy0vm8H{Kn0Z%?6(Aijj<8VJ_qlWH6J~ zufvpqh#fF3dkh-MKz3lv;2N}ysH7aC0bWpU@>uqKIQxJM$i3J#of@+;3~)Z04_4I5 z>DlMAjqQ@Dl@Bl58x#8}cC~}f1j?Z2a~=!ukglh8`wZdpr~lnI8}6e3feWj?Z|vGbHJ#TtjJ8JE0Efoh&7Ss@*k+-7ZZloJ~_+J0=l85UI z4vw#XWxJ#APVe*2nesN=aEbT@5Bx>l!?qnadnfxf%-SzF;L~c+lze1P&&h2QEAufH zlOKn?{=4M+EH#?}L(k++%>w+5b1y{s71?Hv#8K)&q~9{Q@GZml|6K`h#qgncTqX z&W0H`if-8ZdGGQPoJAYsDKrN(^lJ{6ix=x(JFVy!r#$*g9DP23wgB5^PX{`TxMkpi zz3=Z^=_}O@9>WAM#e*k_|JnpjMX7slM++^5%2_U=6jG{;j~D9$9g1Pb|-d*|GMMYvyYj4ZX4@yhq%uuaD;)PL0sO znPiXpD<%e>%Qu0Q|JYD9xy4TD&^AJSt<>*N{t5S!Ye8NCGjC$a#`Y+|KLtadO&51JumxZseTw+8&t60zC}?05hSc>J%Lth~ynE6e zYVXlyRXecy$9A9>ui@4+7yra?eF~!1eJyQ#X4n}SM+wOEn)F{F0*Q`v|9EV~wvpH` z(JM92(xIip69@s=S%0JRV_YWG&@8IU6Uqb*yT)%_k5#xqBI~S*qEW>k(L)$)5vv4M zfOX#ZP-DsFtD}4^eXFA(vu<*TQ3KZtS8m6udi^NDgZ}+K z^8N=cTBYCT#dAwn1ZXQWQ1iGSoM^8L1pS}+Ge_|fDI&czr*}ON>IB$$%@VAgm3_}< zi1;OZwSf~M8lPE$ESq>)SJwp1R6}g#B|z?tGtM6~mh|as7YUR;9!0=7hnadPr)VBH z?cKpyCJ3b5KfYCrXyIu5c%LkfYcv^f)-27Zq+s|DK+z4f&Q?GJET43tr*T!b+OYML z{LOI(m~$(68{l1s-le*jZ?%Z-Cz@lT2Qa=nkm)eJPQp|!z z8iW3J(w<2pM6)(w5#`54;ai@JtNHcQPW_5#l%;_8Pan_9X-D_ZcK=c(xxJ zEB?O9{>UAoIWcMuY)yKZ^AV{bb3pTcw9l-lm7+PW=CDlAC2_ZOn}dX-oLG<`2g5;x z#Y=<^illQFQ>g;47Tx0nM78)8dbqRO+kvs(%l@%bQ`rB9vUdv7C2H1n+tzFwvu)e9 zZQHhO+qQeQZQHhO_vwGFeQ>ej#NKsLbyp+4s4sKGc;C!?LKMl{h2c}UXB`yQj`NGM zN-jvRcZld<(NeoB<>R6Q1`Uh*HOao(>bKb73?+q39a?vX7U;G`|7C~rbue=3VeK8k zdW)Z5@NF~(hUKj*Lb^h@3teV$(t8O!gNA@TYtgDvZ-gymXH&GyD7)#e9Ez|SK)xhBK*Vi;qn^E5gDj2}nOo1?dw(XxooX1#Q^&-KdCJ3*|E0Bmd z_Xr8lXm`4j;t=Mq{x|Bp*t4N7kt=z9%iGRywW?`6QWJyDcNt(B zSUb@!{`zKP?7JIF%DXl5p##Ql|1~iS15+Qt7wY)4#r(KxDjdJ<(KpZQ7`GE;l(5`JYL!wF# zW^!~RpnOB9g;1r z%})sL;QG@_*|h9w583^gMPT{tyQTgkjt8^vgd0aEK4Jx)#D;Pry-YJTu1EVd#(kA< zuffld;j89`k;H!%RRdF3PhY^zw8sG&KfZ$GQX(WO6;%PljMLb}^q-D55UL81<;_tw z4%KxDFFZDu+M8L8(tVnIG-;fk}5mCfn|hgzW}`2M2r-6 zAck;IkBB`pMI)86?04Gg9YJ3l9H+{L2lU;2U|&J?aM$-AXM)7!-@Iv7w7h&3@saZeIG38TW@V(`~B8m!Y>{uyrwZkJrQ zGHgy@zr+B()Pil+!nXP{?)i+`_t5Y9SoUtMv*6qQTRx+5!O6X|mga9`+sGWgO;(N~ zDy`dOP#W4)vua0BRV*SJ?}V1q!Rr6f+4c0Ngf?7>oRDN~9%OByvAHb2D3y5%trC+- z+(>ibSe1gr-UhI!3T?CMkwj2_2A0MpZ?z{jjcx;Y6MIsG1B?_27zNt0&QeH6pGnfH zQ}J`4Nu1R!iu!D26GWvH>D#KATg}+Dj%3TfyK{yp13+#b>1{mR`YK(rXs#@hGkY_| zaub|NLv}<2(=Wl6-ya1KZFwbk`%5 zkbu7X#A}k^<#IQNNj`Jhj5p%Y56-W0nMf?9ZYt!1Y)ux|3q(-PGDND55hK0jF0?V_ z9aZ6GFf|Nr!LNcEboRIz6L2~Qs_aMocoX+N$NxL`C&c^dzh)iy{ z0i9e+?zOa4US^DM^k!xt3ofY(G(0o@heoBF7j{dYAJy#}Cr02=Shwd4T*+P>*j%|% z#w5}Gayy&t?&|v$K;V@$0}@QpyleSfYKEKmO+JHZP-M)d^Y43#Umu2It4uEXt=cO| zHP>TuL2?NrSKVw=vkVeeShbGQr9|@ZkRgp>7pphe;f-pLcbpMvV!d0^Eu^8SUid>9o9s6@tio4VQ{sEg_Z zVI-;g;Q&H|jvd$L0>rtqLR1J;Q7;ssh*K|t0B7q?Ggv5?pTuLyi#uleouv$-W6%r( zny}&Eiu-TlWpf?M++2#v!>}YQhc@&G^R?xtVd5-P%IAebZ5q$)x9Yp`(kb@!tIQMlUdQVn%zOFkf3D8;R1(@TK)( z4?e?=p&tsW104mwfu9MwJ_R96+D+`k^4-XM_`r@KMidFT@$cjgO9N=$)`!16nkOzL zG(82OjQLZnc;_jHKgKDkxhRMq~XhSka0#0+GXuMsVk+?wO&fZT&)DN;G@?ov^c!N^JvEbQMl(P0n&NX54I zma=BHGrBmr++DZY=EDCTn~;}yc)3-}Ah5`!U7A_U6$m}yg2oezah>4S%UY!cWsK5Bzq^S%uf)s0D{)4)J(BY0^C6Hf;L-07hhfr5M5)3V~0j+RTq{ZMo~0+no%tzpcN6<)G|<>Pr_pYc^Yi|FKzjx&J_)EyDIe!Fal$j4-tv~Hmkng@ z(YheT8+%mQ>30soCKUqNDGDUrnEC8Fzw?EiRb|^59-d+eN_khq- zrjxI;Hzj_kg}2jBc$=H*K~;9*8BzF4TR1Bx`&pN(a_tpu`uIn$IfCnWn7WG7m5J2I zB&C54*|)aJ_gZC4lj!gpj{4%+ z{43Dl5%!Jb$#cZpdL6zcb_w&lBV;uP9hm9)z(r%7YE-r&aP37yLYg9OTU~+~3U_{Q z)j0k4h0=ysfqD|bn)g~q z+^rsG<@Yapg-58OvufFWJ@;g!q5 z3AYM&bU8!b9_c8RNmIR4bhY@LTj$AW4=@?|Dn7bHijVTlHO|9T5A?nBq(`i|zirL5 z{H#EM?6Cf@Q5<4C_^sL~>VaN@{20`@csU2imYs&qN{ug657Jlap4}8*OerCt`GZ%V z2uJ0Q7Z)S*C^G3-L6Mb~g*b5va1c^yo!R<3nymeI-UEIClnUOkZWz}r_idHmW-N1y zn`6u!4~X#06aFyYrnv4~Ua168=awcGJD5_A+|KoWs>l5^>$Y)qx2m?F30qNa z&@i>@?f@XHG>}3zLJxXiPZg9xv^ISWd`4?;nsuHA>yAG3zDJGp ziCs$G45(n#-3#c@ltI7eN46INIo9)HSjcqEt+q56-E@-wq{o_7AO0Isu+VB()rs>x z!tMHPc778${#Y^|C$w^xlNUf@#TkQ5i6Ewow_?s=G*3(u$Qa6Pzw>tJocEnyGyunh z7M4>Z*~XqE$Tx{koSjkJJeSLB zQ4@o>>mry&=Rxtm7l%H&@b_T^_EuNFw40&Sf z`~FfbD^mUVg=@vNg2mY*lz3w%@sg>gUBf0db-;<*$7SF+*;kFply&KmXFM%nSx``@ zlNhz4=(2;L3h`Oc78l6 zAAtu?#(#*Z=9*zbh zoF1-%BW=>E5;Bc)%6TzMIg*qdz>TlEzxYp+Ebt3~b~UU;@yI4&MrDp8QD<0_+|=UCmU>?W2;Jfd%*$@Qip;8^J%_(nrLn%0{QxxzlN4>ssW$J#>& z_5t45r$wN!gC-pptuDaB`>qYSJfN@t%dDjSVier7U8L{fGh9FsZ5cLa#O z5qSD!Yv7Jelh2SS+BW(ZBIKHO{VQYMBL<&|EJ5uE%C`)Lx|fqc${Cb1hohK^FO9gj zvggzrt_ z-~QeIy8X}AK|CY?0K@;z>;Kns|2>2F|1lG&cK>^=|6#psiv-^rIZkR?;nP6z=}FIlJ*@Lh_)X`1dp1po z<6)~VeS@Lke_RVq592IZANGR>^(E$j8@FZ?T5wWCHf7xAeg}?!IL8ceMAZ>9I=IZ= zb|PIkdf^Rjxq&xDN7C!iS-^zqPuOBNqXp@cHg*J@JX+8Lu_F8;#h&;!(EpgoGtkB$ zDYNsj?-%2x8}0=Dd53jrHbvUpX6lHPLr57Uu*yz|S!Q8x7H`U$O7Hlq$uVo87|By= zUX69R79vc^lxpgnMYsEBO)dT>70IIaDR%ASW`zZ(sqzKg;Fy!xD2G-0*n%J#W%03N zNUch+iedW>S)3lN-@rhT5){d9c?2UES5JNnY-Q15z`00wz7LMi4@8v=Ib680oqX8}`(sr3#WMk#-Gcszg1$~Xz5}X|kX|-+reVTOi#7VKU zGG4h)9VTZLi*vout5d5z@a+|V%-wb~(1uEqbX)uxE^o24T^;q6Q+}oQaKS;sBp2jG zF$AB7R=up_Xg@T*^}M#v^HUw$@dFXvx+lf%7{4ehD5_fkPvGPH+txC{^A_S*GsJQl z*UYWZBCFJ9=8+Y8{)LbhKBF#3=Bt$02(RRY=Bh9*eM+6nRG5%`D?e*wUPxzW&zHM} zt;_dk6OW(09hXE0BrwbTS9h6bTmQidymeCI)e^5P?H z%lwDQdir+da@--h@ zkJROUfJCEg?N5;xavsp54dGbcW(Npd(!Z+z{--*U6ZtLGZ`?;MjN(AQ<il%qK?$j6wdGiuBXRKBP-n#jaX4Z zdAZ3*u?iv-$*u=q-&+YFBEEp8geJz3%t9l(dbLYVRD=go-bd6*43KR1OONsnh|O2V zD5NwOJPuCZeOcL0GI7IGuu_4IEY_(3;x|}U~)csw5{9bm4_4Wzm5$ZZT>A)Dsy5W|=fx&m+C0w;T&TINB{l6#lxrbE`d9qjb zitPs4$cr&Pe=8%c!&Z{ukKNX~bp2aw?Rd$&Yv;iebDRs8=QM{4ayuXlheIv2Dlksp z^a3hjyOvtlZ(B63oip@G;7R5c|FQ1bCc1!b`w!c;DLS}5d>~hBgw}=UDn0*{xRuTf zRvrj4cEVnEr2En}>M?ebsOU-9GCR*}pMN`5$$)&)q1^k80fmqup?|XJnS=ENZHARZ z`1xR?<=JVz&_64hsk4o&{sX;)6Z`z>HM0>n59^|gwVhxib<8jz7(|uu#byZucw!QU z&5d0WpPi+G#B7!b2uYSuzd2-@t!=^m{1FSlB;{A`YtrVcfR`ch|5XO5($4!Ur^lG* zcSK~K+}(a$PpcF6SZ;l^d78w*q#q}he5ZiR$nh$y7pWF)2*#9XJW$+9c@a-Bx@W}p zg%ZmgIHlK<5Lx;;KZpO{U-+m>yLUX6x2Dhp*>$W_t&VLW;GB546b0=3sG_LNy4~_< zdaTpg#mhLSqO7xl|FcBx0WSLM_G0dQ0GotX2s=X7^!J?Z_E2s^{oGUWC>>av+0KOL zOx^F0ytlx9DQ{xYc!a(cyxcDJHKTP6tP9`VR#JJuPoZ{&R-<--p?C!DDztahUeJHn zpIQ%q6L!vMXPx(3eiig_SzQdcZ|rKLO>fLsmMYEcq`=jJZXd5^g8M&z_Ypx_+_

Qrp2%(p%anip%iqMmYeP78&6rQ#NG>-A z?i{dr-^>$)-gc`X@YukKcu;JCqW9MRaX&a6jt7xs5o zieK71RJdIm*}giFep6J&f~8B2xMc0MSAu9nOit)c=%LJ)dcL-QOFNVNFz4sATcsq@ z)tj8+J>7(NMlL|bv}(oU9=lJMx)){)11@=Qy$ z@V$g@(XQaGqF%!FNmjUuS1*4qQ!alN8+jL@&}#pA6)k`MNV3QbW_t+APv=Qvi(q-o zp!&DIu#pAq(Rs|TLpx@js?^eRXqEV$PTFIwK;F1(64IiP+LGR2xekq`qtO}Kq$H9e zgDZY(6h8|VSz^C(VR^j-zMr)<7;-aQfXZk z^L#96#CWsW*<^)!*KItu4q}`AW7S>6TG;ibFhPa+Z)?4Bq5s5stT|SYBgz?c7L(`H zC-at&`gTq+=MbCZsb9ULLP&hK0y^2abKoYbrCn|<2Of6Xi+Q3jL#;Ypo9S++oxZsq z?mx>>-?q7B9wPq0KKgKe+ko3XS?soXlniVPZ%c_(yj+lQJ11bP>?-%6T(`s4Vo*nQ ztL%A8d*M(gnb@g!H0*8w+}vUvD5H9{^oCk=4tp#!rIxj@I!2n=+8*bW@xU>UD2vuY zvR<$)xJXt``!-jnF7{a&ZW&a-lYB1WF!C@Js(x&MaNzzE_gLOeTt{&u-<+-77s0r> zkd-+V*3N04 z?zS&G_5`_Nc>70)PTIn`xAj2DPXRK^o*O4JDt9ErTO@?wNLVpFs1mGuOp?z45-E_h z59n2U4rg0c0sIJ61NIMZe-jahXV&xc8q~A0ko6UCwa4tp+sKYv)7|WwJrmY#xqZXe z8x$!8DWKCs_z94JvBR$+*^@-b@8^Xfly?(Gi=5HyuHcAHfOB(GQ%qs#A_BD#oqjqVVbwl&+9*oq-IU&~cqm=B}8eu9za7!)kl%AW9}fvb_l_sBV6;ojkKs}qE>^I`1U^O<`(9)HE*qTw&4eRqjd zZsCgmcqbqDZ#H6S1wBAeMh+MVF6%M6s)y<$GO$k28^I2vf3Cf81lym|FkrhUPH`V_ zMNqpYi}<;}#77y^+@DfuP~qS8JTeEiHNSYE-8c*h%%Ro$Ov<~Q_+%BeK_!#Fm}Uw2 znm_{xlKw3MwiREiLAzwsUZx>=3zE2<|etUw`J+4h6) z==pb{4~o0O_F+WwBnIIG2^5%WD;rybgm(EuPR1$~#=^WhyOP_Fn!1}1QQD{LU2a8sslflweO*LhI> zZLIjmoIGq`-{Bz;kG~s0FX$*@Vwt7Y9ZKt>%NNW*Gu&0gUbB8bJ47=t{GRA|)+eV7 z#+TUAAn)`yz5COHdQU*bl^R>iJcWtsx^W->Ya=9(zJ?(rsyLY78@N4W=`Oynb+w2l z2p6W{44s$?Oc6jxXY3;~Ii7yn0P)Qz5%l7C2_Fb!yq#{RG17By(}SU?RdG_}+=@4=c%_?1-l$OfCd8S-J*ENeUxo-d`(=pNH)v}D?O%a% zBu`z?H<4|GU|&^$M;4`H>8;azi$;5U*a6~BI8FkG1gpTnm)z-ki!w5aDBoZ~;LAJ$ zb69MC-q=o84%}7ui1FT_S|6JH&AP+OAZv=*z_e}Gb*F8~Hkv1x0)4?y4NGO7d+OI~ z_S&?hSsI`!6`4y7Rrw#@HHCV3Ffq_u0Gu?K!$D|kxhuMyiQ-R`i^TDufWXUhLBL1B^2`I&0 zY&#bmURfk;IX zLaEQ;i5IYO&|p13aLc<+QpZiCyvmrA0WB;VN?5QI9aI7ws(p4KGHRCKR)b6m)Vvi5 zX5WoO*&w+GT=%!bASH&lYYZ#7fpS|Th*J06jbdb_=S0F3Z%$BUrDUvLplr>vdm@Eo zL6Fcik2$5+oLxFR3Z3@~aqq7?;eNQi6PcgoEn%HAiL!J{cV{91p-^=9*rT>UGz=z?)z!joFT+oV zu8{1n@l?ZB;1N8f+4sPf0may?ksGz2?I+^t90-K3+Rq?$in25&u7}lKR+{5<=H_N_ z^Ip=;@zUPJ&qHtrWq_#(b`5A4@pxn$zC?D^>Y$696Nv+|9Rf$m6OHBg0UOd1TG?zm zRf*#4u;^>UUG<1OpqTc2N;h#Yv^;rK^(BmHa~BAs6b|Tm4}iZ%q(CZnHaPcaI_0ic zqoCnzYGb$T)>`(MR4!6b*p@M|p<1G8`LkK3*KzSqPsF+#G~D^lx4O1)k`VnEUH7U{ z&4hu0cpn3m<0QSH7DOQgYan?+cma%}2btjbqn4|S5M#f9oVvho(TCh9leuz@KWxn6 zw&8N@*dr{Gh#!VN@f!KFf1cs~1Rr8JbwRiyBLf2trg6>2;^Pt<=LRxJM{cfm*Dc$A@Cz!wkk|ZFNm6=6x7eZgGy6w?pPy__SygHarOZ52 zGyy$43dt_)rODixhc-ecLkisxd61U^y|dv%$OfoTC+E?`#);U(N=HB~CdPGVloD0> zS6XyY)N9g_e$2pG^uS>di?0j~74J@%WDPKjJ6MJ{SWM_T{EPvx0&+2cNC^2;g#Ml$ zqQwHbH}Kvf-)5=JXx;WRVBJ#var$1^@rx~4gh}=5oP9MCdfObQLSh)|&EEzxtmvAV zoz6z#r@Kw$U~vw*!x42IpjH|QVdwKBWxTHwfT2Dtdlek;{0knQUAuq;ZT*(wm+STVvrE;oOy-BGhBtG@u>35LusaFAX zQ1+Q(hA6(b%hoZ1hjYk`;%-E@<`omaLrdl0R)_M2=*CO=ur0brOFoQ10JT}~w;0+W zsXIdhvCJ2!{QO%s^8jRA$04}BBN&mU9^g?v?vI^2L*!uf*#%xKNU)0|c z?y~-6He|o*KqimA6PtMN)%SiE$9xq)#orUEFeY7p5JbR^$*p$up_O=e9j=@Qeni(=v> zF#<Fyy2{tidrsL817 zTT_FbL{i@|Iox+++yaDM@FG|XiUS5{UD|vct^u4PQII?t6kyAab5g;fgp&MK+#vad zbnv=Z7rJ#%G>7m^bmm%>SkUC3`f3dn+yt{E1Az3SGP`*+U4uo_QE1Ukkm1> z*8X>&0YxTj(su7?p8NMcjTJ~;wqbE*jyjTJ!l~!*$)G@nr_Y4uw^a2w!DTCGUm^!wgP zK%=33ndnY0HHBK*$R>Ylh$y-kx+8j+6c}!(r)jFT9{bQ{O5&Dl+$t)i){ow<-kzeH za>I_FPj`3F;~O}2jP^V_Bu!7_JUT^D={~7$?0NRjM?btWiF=UC+5)69mA` ziP9&fO1C9ka{hczcYt>sM42yX#=IJU3E#3Xm(i_!mxK^<=`Ft|!$9DxfNx5Cw@8KK zwo;`9wnP}Bm-srOIl44SSOawNyMDu3;q$gHiM?PD>k5B)9{f$5Jdjv}5!)lTOFh)9 zZayx58(I}cHvl@r_$r7_GZ48z(d{jiNh5LmYGaAMZ8)br)8=Z4pcOU{)?cEmi^8-G z(vw)AJ^2@$zIQ2A7V?_oo#nm;B5fpk(=EY;NL0ovl)3>kK?mHVLF$wKCL2mpwLq5B z*LrzSWwF41w&Kb3tY~n!U~pe)dO5Udr$~o?4{Y`sxu=m@bZa-RuJZkguG_T@%Ww%Q zrI1ZOvCh958`$)(r`8a&l)H+>#)OjT>C<6nWJgKjZ{xcESXu-AyD=T)Och;0+bsXx!BK}1FUO^4O;RntDV z=2_YMAMhHmL@F^;fcvfrZ>hl_U_Xy|Kl5&&k*4Q^8X-b(m1d*#!Kn;puz}dDK&1!3 zemrk&Z-}270VCjC_R_%qsW?6=y=q6LQMU}GwSGr~x`|qdQ`IxidSZdbPcJObHAH|T z>-gK_))5)fkau}uZrTE!Dg?_0-9_)Qv6s>Ddel;#f+F*A1Ag(O!N2OH;k<#$<@z#$Ou2+p-@(Y?C6HT> z=QVxZmvIa+PAh9wel{A&N4&;KSlr{$y<|g+6xe1gHiAED=PSLk_m$;6hpLP{kk4$K zIF@pEN(Y@ufy?iUFjus0a$kzsxhSI6m$q+9<2Uyg;%|rIMPgkKAt|u#r zztS&ji*1b!4s5L?rT;F{%=aC}@PAV{XZkH@?rP-4SxmWXx}fi`3TE0^`~3q>Xy#J|0ivE`K}vrV8;?&p+;SC@ zU?4A-WC3iTy5DrO*_l%uPoR>8^k_h2lV_W_O)wIQVvz+4ES)+wV;cS|>y~x-A|y7B zVQeWqaGNrUBLl(k5xCI@(D(0zNw`Nn9IvjGWZ#wYeD83BVvhGK+j7O0+BnV}@=kNvpfUmOfd zHk4@;(Tt#y`_@E4!ig*D+^*!ktKJ8sG`%N3K}z*P6cmLit_B@w?TOA;1ZNdnWg13` zzo7%pqXhR)*JATM1i+|?x66eU^j^ZrS*0_vo?Tg*WgO)E@RZR(j$+S@1f^10z13SgOw`bx-O+zTV%-9)SQ%DQ z8R?Gd+^u!+AaI9P)P2;-h#eB-eC6=sAn^i!0O=wr1OY?b;PC$iQJ0kAtB0px$kcH5 zjqa1tMb>$q{!V@2k{d`*|3*i5u7=h|1T ze?#PM95G<4f^-X0n@?dtd4>Q@+v&|ZB35x1cv}=kfJak!L|IH3L=P(a^+NANOn}0$ zZf&0rp{PE!P#0SNfeY2PcUJq!Zm2z3dTS}dM3v5T7lO**pQAP$wq;V&LQ<5l%Osc{ zP)?M17^~tkhs;X8f>=BRjYGq6z^TK%1Wa||QV|huHRBYejVb-&;cewlTw#ZTc_^$| z;Y_?8P$0PqdyJ+~1_nZxesxLh3l%DTdPFhZkkzsGfMa9?kv!kNbh^Nc_m$yhOM1W1 z3%I_Hds`Wpzbi)ZF#=TIurR>~KEmjQ#OErCMj}ub< ztl!@Z10Jg)Kks^zl2pi;L(@ZsohQjuNkefZMSix}3_T(XNq?0&n1yj}N$L(4xST(6 z8oD8)3>400rpK3?pmR@-`FgZ99i%?mmZVB=D5^~0*GY+Sow>u<~xT9xXxDyF7sL`M{wp|Ug?*o^gA9+^UPkj66aA+ zz4VnaHmT-bRL^}i<2X&Y8o$+0X70#nFB!-O#ZUX@VZ@3?x!OHtfsfDX_B z){Eh|zii%Zr>#VhzL6CFvJ}J%#B}2Bb5iEEDgy&oP_6>i6mzU(->cNBCF7NDPHnn) z9#X`U8UAd&bI`Vnb>%k`}|zk zKU~LKf$j|vyU7XXT=-aTk5XbS(m8q)>yCcv8pH8MvXbwd_g}!2&LPo+y zj*$$I9c|?CBO!qdDvlBcbLl>wy-N7%9!|yBLW5r=E)GR@ z26Z$Zzl)*S_hL?p<>ZO?bW@m<<#Z7H{z4z|m;1zIx+9jlYWY%s`1>*V@#0RUZqffV z?_}^Ug+w9=Z_-U#?G13IBGlK^l%NRL$P7%G{-$}YmufQ!IYmm`8hn_YI-7YtO5VEl zZ-p@YH`bW`xn9%k4fEH5j|V?43Dl7+>ky(YCcI3zMGZ~)dJ;B*P&C9;BF|74qhUj| zp>Nl6UZ4tNnrEKq%hTu{I$X>h|G<*V#lg2hm;9;4c}&5LxGhg^ZA&ij@ zF8GSzWKowan(FBp!TUjq_1-?7VaB`7XwHsLEGn+0oC&}gnx%K$hAc3IWudKq?RL8$ z%lRnYa&ZKqbm13I=-3&*^at)VeG*bi4~TS_bWS~j7YMa>GmxIXu&cmwpnM+FxVMG) zQAZ1l;@sI1jt5$`b(pibT3t7*@;wt>d_4z(KE-|}47k~|ArN>zPE~0*&B(JSr>Ni` z=|aoabT9XHGp*>8gN?NXR6`GM&tgsJ+RIEw18h%_0!FL}t96oy-4!V8VM4uHWrgw& zs81a^sc$tnN$$RTaYu~BY4Jq;zY;aB2vtSYSsKs@6Cei`Z$Y~0L)kUbi=Hq?61wth zNFjozaa-j)-{5+-QR+GXsIia4Vr^v53BOzkkyB!MCcaCE)PuV(=_S|J(xqdx-6fqP z;Ag{915MD3K*YXH!Jp(K_9~Fo%e+x;=5cHBZhmFX)B8Xh(VxfL7ucAcG*#*o@tA#1 z>wql(Vk1e(BUY%raGt%SRh(5uwUtKLLPZhQXy^%jUC?_?`ApIor$3Mu8CH3p$;*g* z78}l(;B5<={rn-RoI<>8eSAaf!kbR5v;-on&<1eW9Y;DNC+@Fm-uw7YKb^lhS?sjvF%qtctf z16Nf-akBU;!zn%;L!1{l1IQXCX z@c(~O{Sx;t6r(x8x5o==F#Dv?KqKL(Xr+;QswgJgErZQRW}Rfpjj2g&t%^8-m|W8$ zolE|fAjS4k#3-nPNUD^bi7awb3G4pVnD!dUtG?tZry=&X; zUi+?l<7z5kqb>DY-W``jT+aQpI8vMoE=4@+I62jw4SpU5k2hXtP#i(p2D~er6`I!7 z`>w?^n@Hp^aYM5gaabN*TV5-k6~19G6C_9lUpJSFK+a?46z@Lj6S-=7pKg4NNQTf) zTZ?3mA?^OTuTbR=z1T^pc^bI+X*}f5u96O*r;ZP1t``>v zsV{~OZnn4G*mN)Pmrc)4LF3Hri-($`KC5ZnDa}oyrraee)2P!nmY{#Z$_M*h7Z-lk z!cZir*9K0M{%Pn}!;pCv$M)Y?{mz%cu++flqms_aqyj-x*uww z%=iO4Fc8PLw?SQ^Mmr$wyAH6m90jH6cOb6pA^e{Q zI*!ocJj2fQ)Nf%`rk+~W=ag!S5%RrBDXK}Sc8sXKTX)@q{Y7!8phG^nmH1I97+4j4 z(SYR`p(e=3%;lj^%=1CU+(0%UkB*`vjM2|LUSiGt_`lAg<=|I4Aj<^KU|+s2N;>3! zF>oQS6>!<(Y55^L+T#_2?{@#BGnUl>}U2umALT%IWr_MV&HZ!@VVI8J&-u*s@Rz}Uk*^qZ4}_Y7 zFV7V-*z~o=aut|Tw|ekd?&YjAuMBPwkyht(qIqHSzo7NbH@19bzS?;X>={m4P-MIS zuf$14H%643V4J*JeK99tMjHA3dnGUO4xXHGX+Gj*Kc?D#a{HW=ye+y9&`Zdjv$81g zyU_BG_Zzd{sq)y9kSD(H-fG~iG6kAJz0dh0MC9$AfV7tCpeVx!2Z=4B2lbZNCT&q8 zwz4w$B}{c<9qR+vpF|nMc&d<9D}pB5$by=6?zT6NUuSdcUy8F;ORQK|FNEKhhe&T1 zwAs2ZhXZdNaBG`MMp4)>;yui^JR{Hv+9Q$avi+l_P|y|N*mxCx68we7aqpiY(T3@O z(FLd{qWl_S_MPCOz8P;>Gm7{2CVyIXzmPaF)2c9aZ1#MjcIM8G#3J}JW`ny>-Vf-2 z3}g9k%tw=KL+`A>P~l*##N#W@?OA)*Iq&=#P+VOxOVn#9w2B9WDzt*9flkwDodG3l zT?3Q{QH6|?_~I_#bwQNT!qoabP!5p?2n2V{pauF!>bPI1&@-32fr>Jz8ZPdL!}1dk zL;mF`BTp!)t2dM4nAaZ6J|*l5tlI0NIGx1+e?!c3Bp>}wy*z*0`%9?4TbyX=(6%2( z0eyPkZ-EQ^();RBZ~F^-q+fLVs6pThAhuoHU4 zRmrdBKfxf@>-h^5`pbzC7Ep&Bx+FjCJiCmuQ9J ze?Bn)xdD#^{)nR-xl?!_sfZ_p9fV-Vu!nLlL&8Wq(NA8XWUN84aj{a~QgI%h!1ufh zQpvGX=*{g$5KYHohk|1uDC0k^9K1yA-VRap2Yct$9TQ}0LYVCVrT;m*qHa}I)XY^s9of3G1Hj87wJ(OMo)1Io@YQoaU>YgogEmY`)a;sMG1cnwUU9=<0hWjrZXzA}L z_IgSrbJJ2H@&u_NJ`Fs)2B&A&z=fWJ;5U(;7!A<+up=Us{-4-hY=&yPWd!U|t=q>3~0D^Wlvb*R8z;HgLyLg|!?>3T2C~AK3&n>L0Jx zp}v}Pw!q(4vew?IqTx2$Ww$Zp<@g=5BxRI*0GcA!m(ZtBanC{Rld~00O=vj4)OE2- z7S3H-bpg)?i#Ol5{hc@{h4V(>e#KaE6HK=@7OA!$Rz-@G3!ytaIO<>iG&D}2&werb zOVUb@!R&x=IW4yUyB1NWy$DfWrAfRNXfC4*1mqTe&r2^U1-qUKDqjVAZL7Zb@MNQc z?|XRWakTSc% zg1K0wvuuYUH3Jycap0z|3&8mMY)H*NIi>Jz6p+KT`%@vuSB|aA_Y=<;@DN}$Fawxr zd)!e>=+x=S4pI^qPa6<}Bf38GDDqX9dyTYLfR1Y-&whO89QjklyNlrBHoj%_r(r&6 zInhp;PX*u0)7km>Tp<-;Zqf>GeiGppFo7-B-uNa9Dz``OgL|S@Q z>evw0HMhN&G0JP(@UQ8K>HC1DJcjoSRyRWNrDo6HpVW(V6D(CTx~o=PqDna2&Ny#{A%&rU&B>goQqbdAoC8+3H~q6zA;Fb{!6mEZ`(F* z+qP}nwr$(CZQHhO+vaWVeRpOzHa7mVGqVv-#q*&e>O)1=FVBgSC-XB@M?pDwQSF$;%naQw>ZTmwuW>d?WpF-MrZn{P(OD1KZq8b-Jd8Z# z&!Wcu4_1)9BaZn{^=Ko$qb{bDS~@0{F`+{ynL2I3+^B+Q%P>^r4TOQ?!70(>$vBlA z8Aa;a39BYhROX3`gZO=5&zCI1B+wNUid>UXLYKN!v+dfF6;W)v>Vbo_mxEOLG zRg75NSG^yrx^RAG(OO@j&h4t-n?B3ELT(=iGZeja)EzSVEkh3sI7?2V@3qY}kK=bU zlt+ci`&&XGeUCW}Uokh#P}eHsezFJ(ZU&bmJ;#}J9M{Zk#ytaEpnCYXe@hz%dE!HL zw#;oi2&%OGo(ZE9NLGDn?D(A6ODb<)+it`DXzS()8Yfyyy0|J8(1LSA#tjev5*u7$u(__xc~Qy^qM&C2-QAxUl2Dt)3O`E1JqZ8} z9O_d#YB3Hf9?nT?6Nsue-S?ly{uP-&;{suK-#R0a;3iJ!Ml3JI+sFL5pU-IiaGK_? zG*6G0@#99u&MHj~*CW^zfCZPoyEV23#0mi-kFlj8mf+~PEPZ;%Gxgs z9IlJg4xcCO?hb-EUsHP1QsAisWK_dka;sqLAl{%H%uxlYs3Zn8+*6Lun zXC@e|91bO~zIfCP4s-Wv%@x87N+TG|FZ5bP`TA0ig+uTCyz3M30sN)GKz=_|LDX45 zH{?Y;AyYD})3dB`T-L1??l;z)e$0SEWn0@? z%_q~uj$&B-6jny~YFG${@A`z9wieIAJZElcmJo@~TFc|*yv5@uG@eNTx+Kr+4l4I^ z;Rvr)t~Ls3V$kNM6;^&0OEuXs;e`=HO-*_16#B=>7MyiLA6|CyW( zd|c&Kd0oS+IpiF0nHSFrM&}`vi97a7@F`i(=3!R*rCWql-Z+y(ngd#8X?lJO8af(S z=(${vnl;a@$Xr9M3M{CNu-z3qDsfYxUoj@qrm);`Cq3W<#0g~lJ8_Gc_HD%VV7d$W z5S_;CCI-sT%j@CgdcLy63whCPk)Gyo^Ign-;`OLpfp|-zNrth83EfxTOl2-yk7>5y z0KuTFhm&pPo%CQ#{ZGnZb0wSG6ql^JmDTeYXi* zQ`+*C!5N{__WB8Vlu5>k+1S~k7A>j0^%pjIL)jHs8(|hx)<7gQs?x!<374lhCqlsR zUS7f5=B!cRdwycO35BA$AI(Q^NIc#yI~J|3jhyIqEoo`(&JV}P(PXM^vp&@6dUF{i zt#Js1_i6AS*?vexvm&p81l0r-0T@4+Y(CtCp)I1t_;86PSs49>i6>db2gGUrAvBE} zL{`}hg*5ayssYG7v&5~3;dSGpq<1Y@mjHFr3&_KAS}a-P3v^UV10_V_G3n-(i-sSE zFj8R`nz>sV_AN>PkwbpCM2%+$gRz1A6=8jiElg@O$Frhri~$9zHgbe_s`dh$BI4(P zE<k{De7p{o=Ttu)Uk|ck4ak`?pNj8 zF-4PjkVhij^MuMvC@K=OQ_D7PrB4GtYLMOSVjug+&{%WwKH3n zVbdDZ+Ur@aTqR&*5}DXab)g|rhdH$@-HDM5k_}o~;t5Gv^&LJ)YQIGxkK(Y=rViP-d@Mw~0>vGQl zGh=`8`zx9*Uy>8WUScKf>R|3Cuw6TdyOF*Mv8^{YXnP$4&Busr!gqc(f@7wKRTGf@ zEDi^vFW?LGW{ZqV++$o?A(SFfJ1&9p;1zMpgO2|qfe!{gNhyk^*wY<=N@biN9swWk z6TnzOfgOD;TqV7grPoE)C@a@}=D@5BpnrK7998+qdSJ-J`f?%ews*oj*fmsRjr|38 z#7wpwqL{lIYvcx12qwv|!wyC@v9ya@PwhnCaqPb!a-Jg)=yFd}>lpvE+cCn7+3JQO zXP+5IsLQ#SuL@Dz&($-$ZFek#FNmND#q7K|w`>h+@gg2pAY*|cl{@`H(_0i8xK3}x zm9KSmcMY2Bl+||4m*F9nxm5;ZX?Ys3%E48I_DpA=Y=@=gh|XtBmIF$=O~mx#j&Ve$ zGE6O~FT|C3DwIT&HME$HCQRr46>AQkCFE1bh2Ca*cYv-NC2Xtnt^@QY`rGbl>Sg?M zVkf%*l6QT3%1`3O;vo1O&_eThh1H7z(|#3&>bsA$i)X69q7J;8+O$-?iDg=@vbFZw z>7Zio!5S7G{Ll~04kb#D@ZO)JX~OcD=}We8RDHSwra=bW7}9(Yx*y(Rpv05UNYJ-l zY*h^;1Ac)Jl~WKhQYOd5=5xC4Z1;)2R==06GGnVziu z=%F|+1bY4{&KFrmyH25hJwA$+4Hmuk9S}@rjN^`P4S3V`Z?Y~aFLv-4Z5s^{omv;# zpOr1q|3obI*et#_Zi6P&8M%D^B>Ry6&84u3t5Wq- zOZYvF=%l)3aKt=Oa#pTHW;cm%+gFTP$+PGMh8a6zR^HGQEkolJJ~DTiF(vJOg$ zMT%*3Q#6);gfEBpX)_jHZ4AhvOz?=Y9Y*rX7D~_zk+G_*HyS!~>Msc+kb6yv# zbCC*0#WX~I4Bv!xI24y3q4S$Bn7n@rWT}SLqD`}>tz1jt4|ka67MR~FyE(1u@uYI; zs1`8Xv1~LW9MsMV*`I)rAw+ZdVPxaw$d1iCOZ5_4rVKkS11ar$!R4Bmf;0b@Di?R; zVnj1ro3aUN?zA3~&AKhh99xQO!_Sh1-)?GA?EofPm)-R48rQpJUUse^V+l7YdI*xo z%?~?g6^b=z%_T90&=$~83^{Ht(%dtHa z(9ke~G)Gptwq7s*B^^=uq&IGMorM#N`+ZNFwo~N2-H&d(B^Cdazlpg@Dwo$m$T3F{ z0P=E$5J*!B0^M%?%CF3>RjYDjIlMc3VNW0q>p@5w7&MfJIvm{Gv@~Y4i5Br4(vU^p5Kl{;~GL|0Lut~f_w5J-v6EFM8L99N}V)w9$q;@@Nzfwm>d#5SC6qL9^bRFOik)vn1Rd)nFNZgYe}Z zAe-zM@7A_7teQ(%d)GvE0z}OVbI#o~Is5LS&Cx(unIA$N{oT=*@I}y1>hb#l>5Je0 znB~$$ncETkT@X0;Ok51MUKy(1z}l-Ng%aC1tfvn_g}9oQ+Mr1P(?rloBOnatyCm5BQw2p19*|NeB(5`{+g!4kOM7+6 zpU+dRK%wt%&$zYeDY%{=F_G~W=s|_>5T%TC6*`?^t(??S$Vjo$6U%yd_eMm8aMOt3 z-rB60_5rM(>Fy(YPVa6d8*BMT$%;dfZDzsuP^7l$&LwRX(Xe-0v+HCXPvue^-0Qtq zx@pUq?=%14ETIGJ^{)U|*6?o~S%SQty}uo4p?d;Y`P$zu`AL?*L-Vh!=DP;cckMeh zPvZ+V>1r_5rMfio53z`L_gL&{BT8oy8q%uiQ=Pqh&8bk_U;BBeDoI)m1Sw z82%?$46~#0N$@Z6ND7E!01OB+T`YAC7OmkZ{y0Qu-I8xni&+9=l)tHa-Sb)W#jKQp z>cAdgz9cY#bily{UYzN}iJA8(ISOfDGy9vbp}f(%-MrpE_h0AZ`I0QnYw96D`)q3N zS*{ONnY%HCQr#*YXVbt_Okz)SeUeyOFbLfP|oY zW}u0=6;Y-~OL9rz&xVsT$ZYnQTlDP0kn0%MXYr!Gk0eng`oL#nR53`YTiRd<5pFWl z%4Na#!W0JhyaL6NK(>c$Bf5cp!5kUDG}<2SQG~N&%9ykX+ze}99B(2nK5rc#)5M&! z=egUpKi59DJ$|ykK5Gn%kH)GMl^&$PCoy_T1s6fJSN3jJ|3$?GTVh z4yCHc?JPv)S;W9NZ-Gj#MZr<0ryVoJz6iL_SDdn;rVRswCg|e)aT-e(_w@nGZLH~o zT3OF9ntzZ%UDUMT*bp?R@_gob+YqE$CIxK?gn^y_JjoK3jgr)I4L=QJ8P8S8n@bca zzYHt?t@|0`C?a#nx6>|kSFs`?(k*FvY$g_^2rL=RGHl=)QJjdhIMfXEHq2qR&Ldf% zj5C7RfjC7qI5a%Zkm%Y-q&C18T}&H{jLG-x=@KK@W74R^lJA1`Gt|KPuAf7cH{Z9E8f%64TE~v9DJ|2W zt+O59GgzSgD0&=&_V_Hj{%&%eAA-oZGOM{)pa!2>*r>QFHA&#yALXFRT1Uc~Mk4bQ zsq>**HfNmMQ4*Ii_lTdJ=<+mr=`><3R=&hyKu=rXRl~%eZ2H8XtbvBMdFU5SbmBEA zyM8gdcj=BAd~v@SSw%A)u24BWfsi`uOl>Sap{6&Czaf@jT`f42q)!&k~Gf+o!;sT z)$Ly>MJ5Nqu6xqY&e}lWn1K_q5|P@dTxgzTO%uc!uuQ9w2SIW)*=)Y<@B7F5!A*+0 zgl@lrkJQ&&1&~xN68pvBF810?A(qg76=L~L>cgQkw_7I2^6Mv#zY^@&Tc)eXcO|Us zjw;8hSN&1E9}bXFw!@`zypPwQ4#^C8gW4XpAIl27%AsIVsnrwB4d{OAM9Rsj-R`ev&Xl)ug=C+(Oj*D zLUGLRDvCtrvt76%8;K{6gQE4yLOfp|>T*N-gh$en-H61j1Xc}h8qhL|UP1Ha?1ym< zWk;KkN6hZ_a!Q#BHDkEJoChJf`T0fkM-6@e0gyh z0(8pn#L`FMkQlFkwj-&9fQZ9kD;BDnd6v(J!>P`p-7uPzg6{6WgR~j!LE^2N-yXdI z!PNVY`D(Kl`IQugjq0X%n-llQ>H^Q5nZ$HR{Rtyg&NtgGYyy0h5xFiwnR4DVoZC45#Pzcf>U}*>E!Hnom&(X z2|z*%g0cY1<`%Du%VQge=FNB!qv+9D-U&A%%mIYMeJVMtiN-*b1dm0Vj}3YUMEqI9 z#J_M})#Da9UHLy2`He3P(QtjEvKQI_2lZJT-``hsv9$VaGTw|aba_OoaIlGX4m<>j zGz!u!oRY-+=lj5{73eSv_HL?O#S@#7TDN}w?l)Qek=MMup0OqP#g{;G=V3FF+N#LAB(r z87ql3rn}$k)fAvMU-Fmdmr4lATEi^E^5cVm0nK`Mw@K*cF#c zw$9+gPmSK72(H#BW<^A@*ga=ADDGZncj>q>PR0^#cVby9M$+p(F&cjJA58vM19#vNptJ+~6=bq+i5W}qf*nzg9L z*#<6K66NH|;7beyy~L`6v059lpSG3#M*ByJ#Vb<}g^LFO@XsLrUytZXKmh>g{~IIv z|E1skPjy(!O45=4_}YA^hH0x^u}J5MnzDwLz)(50=ARdr{?c)f0j;pE6+HSchC z^9*+yb^yNl-6B&|?o9UVuZ-<(p2#?R-etM!X95<3a@eAJti1kv~lLPwE`ZrXR$>6Li~;WmF%k6d?_27`ITC`3CEeD zsQ9xpK^@>HU;$rGd&jG`flj^_l(^AqQ}9sISfFd}#hgwbA&wPyYrL~y|5+ao31sP8 zW=nAsN(1%=^VGV8+pI?+bZjJW(IVi4Su1s z>c(0B9TDOLYiBtlkGwrwFA4p?C zU40HEsp&0Cm^K!mk&bPI{u^WWJBM*LgYCjwK&SwO4mb*Pmp-B)W-JVt}b)@M_0|Pudl2 zNhav#quGns>Lc;P_SiMB%Y%X)tJ>qAIJR`}U5}k}i=Fy>doz!B7C*+tkkchP1C}Uc zKc@I{?^n?g$}k{1&+vA5DgCIJf&2N~aX&xK8mjw*d^xfdpiW1Usko%GTmk{iQ%gp) zcur-8h7JFTq?Gh?kE=h{av`PDChau{V&Etc;^rYNe03=eF26u;=usM5k}8%3(Ses`T5F1T-D6w6|E+X%c)-g zMYeaQegW5wpmMr7lMcfKl>s?}ob|720oYd~&lR|!buH3Q)6LmaDGv-|W($on6>&%o z4rJO#3X*6={r0`E2O2YNgO4wtiA3>(DF|x3*~w3-yVcVzA$JG|kapwbF_zZ@sIr%f zf#W@dt8*T%{^k)|!(JOJ6j(}J=q~ITbq=%tiK`QPwzM$G)`JVjBjFCay3_NoHD^q- z5j9?;cC(ok%!Tt@xdu44RzD<9~cl8DqnlZYA=()BjeA z1LKPF60_aJgm9loFo)m}pXlXa-J*4gVY7j_L*NjAZa_gkv4`w2nK!6m2C72>R4fR- zM#aKi7rbhVWQT5UX@=~mi9Fp|PB20)*hVOz`Hwv;2y`wNZU5tjzD=5?oxo%YJDQ^z zn>{0?3E9GW0BQm=*02+?bfbZz&{nGH(GVnos6%>Pl$8<9>fEEP%l?M?JQ;EZ&%+>C z;UxWsj$93mWDK{kC#Y%`lg#Bk3j^Jw zAtu4Ss4!m4&|Lh2N%CPiVG>PV)6c285iLJa-8AI#7qY(Vn-@F>J5Y0-Dnof;)>+j?G<$t+RK$QGMf)fPG2i4GXOB494@4o0& zh3Rgf?=D+OkOFC>N2e)Y$)79Tt%2=T+y1UDkf$Pxeg)#k?u+hIkvd+k&~Nz9hFz6Y zao@WDMV3dj)4w0f9`w>FpbVVsj_dk3bHOv`%+vPq1X}GMFsz0#0$6}&4>|)4LNsbl zuvOSPK;9KRCCF5B%?b@2vYy~H9IaNSj+d4GlAec@L0_etUFkSuM^^t0o~2dFW$A7H z{uViC?q612hYI9V{oq!LEmnMv8d|u>7cOq5@XbXK*kzfdlA>{nST5a9*cTMA^u>iI z6qTDTsmM&vW9E0t=CYIeGO=Ta+5kyUeyHgSujJ;z>WvI`Tk#J4%;9Az52(h(N++lp(+SW=W-_v0{1 z`8z?L4Ra;sNNM7~c^uku{-VqO%a8vs;lJj{f7p}mzfr6Gy9wccN{`t}+cKMU=-so5 zUInb-K?)EzK$XaA6LTu&6y3Ghn}C(!*6T7Q5cfBYhL{Fb3jwr<$8TP~qog_Y8Auv~ z4%$056T6iTUzejEAB^eharT(|<5BioPC*0Cvh@fS^!yYiOw5XZcdhJw=}oT-m4I${ z|0E_MZK&tWY8JUDHH)3dnu-s|OEwFo0V&|1jynRm?1P%aNCwyOPg{Wd0U4<>Lwg#? zyS+VpaMupQ9|>+h3>kd7P>Q9PsNz{M*!aae_H|bp^bX0yeZLB~+&YTkC_nqsav-kVZq5}$z391Hn2WLd}+kX=u0;9K1UwcA> zgMl@e{C=gmS`jU_zgRt}bU?Dw>u+{Pf=Oq3RO|DA?b%XTa*7yqLCG1P^lzYE;1mlb zO=!?h@4&p}G)7D&n5rVn71t*)4`y44Scd0;aw-?|2V50b< zi?RN4c?$v))ClhiDs8!~2YJ+>fCOgkBZQQ!Ck=X~-{By5+zjzcq>eeoC1`?wwZIl005-_(Ifvp_TLctzoNJP z4XD)ru~%lal6K?^u?>-FioabxhXL(ju;3qCK0XvqfUcp~`O>&`ZwRM%IL zG3b!dbR0^{th2dxSt5}mMbwn17|;f;oywdeI6jqX20NL~F`j*-$O=^-wLF?+xzI05 z?G&Pwd@8s(#wna#do{6}A{vbEp47N_*R>_&Ficl1!Uzt-(5Y}_gMmjs{_}!!PdM11 zZLaq~#$zS5ffurxk@4ZuKMo*_is}l)J`xGdgXW8Mw@k6?(4S729?nA%?YLtLO4O{b zLi({nHB-hU5;O~LNvsmy!HKo(U!^W55IVUEYcqC1&JDl4Ej7|&2nAm%eUE=f3g&%I zq#J;HN_&PnRx=5B9G;C1y1jAX!g0(uOg(q&L0S#IYEUNVs;4gWwka>YP%-tGY&cCz zYSK4WBqj3qH~$PrJ3Hi$VV&{-;#qe1J6Bx5PlCWv@20^{Mxr%5CB=x`|Nf% zEIGddL61Cldny)zz$#Y;6{%y*3(fyRv34G<$d=~imE|&`K?w(xj3UIGBz}kb2lsIU zlmm2sTaSOB_^*#ufWLSCWh~r3xc__UIy;$LIsW_R(f6^%HfFP3At}EHjRUQeSYW_F^>>M)_+y4qxV zt8H#m&ZU_WfYh;<3J})2ESLs}SIr)$&xuS!ZC9MRealNJCT5=WH_Q5K;bN@VV+*3% z0}uzh9eC%qEqG_v-vR!ZaCEEUgEBzG!N9YXQB0G)0ej6Yo`XL2-86vs81rYLKB7yB zCPwf_-T{-P8AdwplIA1CoVsQExRf+voQhCr#CshC4Ex9I>4_AG#H`; zN-Ne=!-0*d7w)-u$((?@F%_eTah_;kBw9T1uVasTIwbdfb6&3F8da@$f9SBWoMzMV z`cP+gSdwO+CHUkEZT8f-{2V3%cR0tX%e7G`9cvz9k-%*7)lwdFqXgZs6|J@cb>BVq zAfMRJW}Hx8yG-(Sqa)0dB_J(~c|nyzM+o)w9BP3Wd~gQ5tc#-^d8NTv;tuEBL}p*T zbn(wOJUdTItKjE3UYX3}&2QC)Ni5{5@m6Ow^yry#>_3TI^?cdgS z%=`eF<0a78CQ_f-lcSyfVFzp%E&eidURAqC8;xG3Tn&2G8yp3MaK=!8wRD;jW*4X| z_Zv5|tNr<(J?##mOTy*f1N9&H{A*xUAp!u9|CdicL%Y9$!Y}|}{||&^t8UtCvcY@5 zs?yQ0#L0`!w7_-B832}N7lC9jjTNsIkU@(SSrs&t5tDQ7F#YrhDkKm~$V8m=qdCx+ z!kUH@vQkASWXUa&%6APNkfKQJf%kk0_r8{F3=_nV*y;h}O`j^xR#dYQ;&dcb zP*U9~cp%6YH`D~^0rh~ea4G>-c_Z%=f8rFd?W^S@Cj%5NIMRbxIK&rhf@A~PS~fQlr{bn&abgYFdw(+GSbLZ-u%%7mN!0zVN`4Res~O(Qnmd9^*-G4037n?u zJLnXGzPt(v>vcCGwj%^KEdLg>q3dT*H8aX1u-hKuGy$p4;m`4dlbrcw zsU$nJw2X9RaiL9UI&$ruQPTi?k4u^|Tkg0jI?dC-+-F(6l5BMh60O)*v{QUD(WaAe z#0{o#e>!89uohoH;D{7JybbDdJae?BWH!r&bKB55y=1a<4<&I7)KG4UI-<*R(Rq_F zfW|3MrT5SRRqdRhf+SuqKhKSh0Ab1^=+FI%sVtB?0XwTeAc{E}OMh)K|8 zc|QF|8oag@d6T0vYyeDE;e5FH$xDnti`*Wamy@)iG@?Y>QfhR#%6qawx3GrDfIueV zhc3&8K$Yezp3J#9EbM%(?jBF)7}7ALiZ=w#I#$$ZsHO!j77=^R$g@_XXAViRh!P0L zLA$`{Xqhj;&F=?ueR4i;HK!|7KEAG4g$^3C1dWBY0&?*dnjDUD-u00yIp0(SX#xEv z@#{x*JYeV=e&~6Ek`@4iYA1US9Mwc}+OZ;TyO3>`! zj)9tl^h9u+7v<>-@8*9{?79Ir`XxW5Nlh6ilLU85lgLAmyu(MS<_-Nx@;C-o?<(YV z7M`1^eyty&o>ovL_l+lMZz)?8aZ@shdsxY{VCGvd3h5bk>&*kL(Kv$sH6B=Ow=y3H zN8mQo5}03CF+}m&b~mMpcK`6(_{MrG#L&V5ByjN=C$ZCQN8qv@7jYU$DwI}m=T?t;KF?B)5?-ei?v=sRGXtw9xawoj%YKT+~JFREZ zhz#$bc7l*e|GC4;r}=7dS2^sRiD1~$rxrpJzYb~uGJizRHO&I=dTBA7 zbFk6el@3CJCLROHADF@%+-SIgcR?U>Gtgz(K77ZC$S^g^Pd!EuAl;tL-1G68t$W&5lO()q{9{`t>SF1`or)-r>k*y(jy#w)k9(E2JshyW+Ji~{^Bn-$?$Vu~f65yw;YfZ#u3p?@#E&8_XM{__IIS>@kWt8aAe#r*p~l}23>^}{ZJ+$|IH`2*Q3>7fJp z6_bXQ5tS1f4nenVcLn8JiiQvn1vz%^cXB-0ISN9BFbD7^!-cErrX-RRBgRPrY>a6d z8478OsU;*CyAF(A3XL>`oQj(lmU_P!GPPmGEJk`Ky~IrntHwgQ3*Q}7kTvLY;3XBC zS&UHZsnbw~l2-_xF%8o-@~2fCiK3i1s1_yl&8ex6$m1u06)>U@G9dE}iy2cK_nX** zQw1|%&b5lu!Ovpxw+{uYf>P!YgC6m-Va^p8#Rm4nzA+cB<9JdT@&aoYlBkHA-&E~3 z-4rojHG@TJUNW$;*`^cc-Go?GRaKqpn{7+lkX?QW;6hRBk?>o%LI>ZVnvUW$<{dfF zwrQL!Y~#*Blm98(&t}pBak58Mk^rKJz?YVZiQScvkr8P=gbPcD<077#6A0tT4Z{yu zdJB9TVW4RLYhJ7VuC<PMJxXOYs?o9Tca#df|Ae) zc<)4%^Usb~P@?omQzg1nE^0#lTV;QuDiTpS{19<@uQf-KM&i8*T}~Hpt&{~k)>E)% z^Kt%Al_uWmsXhHv;)Jc>nDc3`{;04m^I1U}({wtJUuJ1E?U0__IShsyJI^^D!tG+j zyw?ahE8@A8TWTHERUB2n(B#M+KQ`~T2r}dEa&JlArqIS5`EdL;Do4Nf#Gy0`tWaU-Kbw&{6zi5GwE?^ZSb@6U zYuuxwWn@+7@}53KXujnjJeC9-44h-5K2W|-orR%YNN>tf^02+H2Di!SXkGARKZ0_) z)O#^8Z1-sK4y_sVQ+%yI&6nIE@D%8H&KA~cp~>^9Yn_YgdLDaOOtct0gHtGprU)&H zjf8?xK`Opc#IB_+D4p{PepS)%@}&8sro%>`9O}W@3;dFW;Z)hmrwO)SwQ^r&h+X0^ z10U}oR2OvJY#N4wq6nLnZU@I4o6{#!m^_KiMBC9e)t+p5&65<}O{00A1yM`wtpE?M zNv(G}$=ILFD3hoG85CTQ@c4w)*jGzph_-P08-|-Wztg$FfLrH_8iK!B@I!F}*E$BP z+2#p*u1&cm>Rs2)})&J49sz-SmS6_i;JhDE)T zwFY5ZZoR120N&FYf2}t0u*m3Ce*ZRmR!}v#JPbW=ziZ5&FwQ+y*w#1N%jfDHqAmDW z{)*okl*qy9F@KG|4(kw{HzjUXI+VVvUaC?9FvtCjCWT1TAWIxs*|+US=?n3;oWzwd zmFb7S)aa`Be5~W?x2JEk0brU+>Q;f+-r`S+Z<357!=g(K?_b!goEoVNlE@8T-p++d z7RSqQ2xx&sC~?E9=k>9y+$y*om&hNsfE4#vsM*+y#RaD(mL@9ly=qb_FPh|;C6&?( zkP#kGUIxB{7y!YPb!ZLI7nU1N!Ou$ncLq zbnJcdnPMx4{#fF+Owi=s#AeI6EAo{QH!GED4+2*pe-Q;N4{h(Y!CM#0&Y0Jg{S9#8z-e z7}06E|K*@$RP$Q<8*0^jNgapV6QA>DfB+8i@8~ITtrO3Qn-%g_=g&cBql6;L)GO+v zG=d2Gf~U*mnJ&;*BGPgHLjoJ^m?&#tNUD)^FHQr*;el=KDabt{uU>2|=-pZ94mPm^ z_~7G>tPD@buq0y5HZj2a_z4Z9SjI1yKK$U$^wXC{yjgIsyl0nWkUtdRUJL`H_|~RU zy>03qNZ*`(xDmteT||+AR~yt_D7Qi>Z;J(Tu%`50BK@|ifLIgAM>YbXCE`ED1v`Xl|kc%mK=ANE^cX;N<(c}gQC#c_) zh>2-r)!nZ*eT5of(Nr~^S;^Xqv0$O|z)=El0>4=>Lfp4Q)^QK+Z&=NVK!V>bn=CLw zA`UvU8t}d9`bag?^@4AM!z`B^^)MJfOOZ@VDKcy#!tY?6ntzMcJ9p z;Fk%NFmgOZWpE09c6Mm8>h?4}EBW%O|HF@K;t#iS93bYDuyEABpqeZQnhjDqd7qRY zg;BGx!0(U}6L-@Pe2F5?(zgsnW%Nr9O(4I!WNz2A46YKMu9~8@CWhBe%p$Qdo&&Wr zYwG#IBUSso?7nGP0ewFp#MTmlSkD=S*Fmbvhtk>m$Py~KltdOthv@W6kF5?fQcp7q zk1s+2JbQVsZJ-JSnJt_O0t;QNUEgh9Dj?a&5x%29jopnMxTpgfvZ*t3dfU0Jx$QCe z3i%;s0t%I(ksK^oY0O`-#7+F{&KDV*=*9&^stt7XOAm+tG`^446K|{TEmzN!9?w0M zDE{VWfQ_ms_9y}rGg~hk)ld0?9V$W^H8B|L7;tqh8VrB77pDI{Yd7$dJ-@e_kT8@m z-waMf2N=x;I}p$d!Vs@Wx1IjeL4wh4>?!wAHP96ZLZnG*OUwckn?XJ1tu`^y7fd}t zlf+6$&1LHV*<^uw=5O6i0iIe}z$w?}f-BIg<_zZ2F1OQ}$pyFVhG@-Tc^+5HkbB*; zc(d6STAzso3NySqJ8s)|?3 zoApEA`|joW^+$yw;nF{X_sHUJ2ECIm$W~sT#bX_KqFTnA3ZoUrst)2Y3$z9mv){&Y ze!~%eFa^$800dnzbaizjlHlSB&_*psHzcgDTnVN%i4!4%3&~Klw*x=th}Ss<<9Cjy z&YVi=TJc>ZV=fn<%R8`I{v&N_?v9Rkx-Z6T4Gu%j;2O!@t`jb-ah))CNa0RgP^oX| zk4Cjc7fKWE8D?6bt{_-;zu&yKx&S#4wnFkH)qMb0D>8IwU2`Eo!Iv3)MqM-u@!V?W z8A)*XB#WgSa6H~9omri!A5=yiGw`*(!3b`vh+)1UM|AbP5En1xV^|`X$pO`G^h3dN zV`qwi#Z|$qum&_*M~Z4q1EB{_d;c-&_z|K0T#5fs35^Gg2pA>E$@Z8;lgQcpGxjC48 z+~iatazndV_bb1-WwjL6)o-l(hh6MT4aX472q| zDoCn;_{24)(~{s$-H({=<;TKI5@{9CREZ=0%E}f9%TzhidWnKO=%SbDCN@YcHiIo3 z7x?k@&WrBGTbl1CUjfIO^d;-Xz3ucQ5GpmI3SvMA+)`!%^$_0quf{thT0PqVa>ZZq z`iwclQDGo!`9mrpbEIntWFISDbaptuaaj$11U%By&U9s|wg$ zVl7P#9H+RgDiHxe*6Bn%aM1#aQW#!6Y!xYI%h5J0QpQK7Z!g-cCO46$$}a~ z4N9*NJ4x-!+&)bSPS^)h%HJ^*4%9frDGQtTeU-y;(P}L2u>9(}I974POyP8bH1$lN zQ=8JYJX+HyiLZ_QAM0do_h3 zrls@iI1;5(ws?}+198dtar0qaHX4GinRJMLTYwq`1hvu#Ab+w>XxNJLwCI-0KbIj{ zC_ig8%A6d2hK3_@cj?_e`x1cI!uZd?`K^tl9+$)A+0RaP^jrAFWzSZdZtm^`Gb=qo z3_&g6AsI=mk#AwQ+V@Kn7}+C+xJL1N2RuaMNtlTeU)17&o7s^>#h;hqri1&!&R*-6 zZB7031BvD9WA4jo=7I>NE5s7H#n7lvM%uto!UViW83KS zglaC$?!TSE!iYYs*%ZN6e|VS$Y?#Y&1}#L&_qvCv_U}5fu$G-*zC&cc-6e9ADEfT9 zHaT*P=XvOurghl3c0hLd#&f3i_UVGM_v66ATwEmCnM1BQ`1i<)!;Q?AW?$gtgi7Ca zLVng@eA5&@>FX&0xhUY@nYD+PX~Qou_hX9RNF+R|3Fg&rpvr$xFrfshwpd@uYoN!r z=e6q#wkEhPUZeU|q_dc;{}OApM(Xj1(=AZ|?ZXRU`BZYLX(eq_mp)HykYzqp*dLq< zWP&x8fhv_TuPs;BxRwikBCZFQ25&*GVw639!L=LRSgf24)1X$zn2-fDU~Ev+Zl{avzjBd@*qG zaiq`H^1+<#NyxR>T)v(*Wu8BGv1MeP=~r0EDxk6s*yi(bDW^88$ol}`9xp$Lo7Ka( zgXw5U5K=5QAkT8c!1aI^-PrJO3R~%1^l;5sc(9;NRTZHb z5l3Dfn$ZJOniAw)<=S^#8>Y)h^|3KWMQfBaQZN#QU(;3hT-p1?%*q*QSbt8}-toq? z`33$fq+y^xX1wcj(K-#UxePbbCBugqfAEy)DYz&QtNneC^`{%vj0mdQa}tb*XW9 zstjD@PLQ^2>23#F&M8?n=(-;|bKgOG+w*+3F1z#*@tl6CCy{M%2#Tr@Q{aR=WWLbP z+c3}9IElf1ToP(u2hDkvRT?$XCNB;?sFYXD^xfosev(%*n@)Uxoyy{0mP0mjD!yDO z;A>f3OHf#OB_xFub{3H(Foy?x{2pk6qKzuPiV6@9VpkGsefOf-blXQr5kpw8_u-rB zqO4#_ixn!}113l0jTItr#f(=WM4;v}=|@cHeQ-+Az_F~_k*BHEf4JBCj5DS~!zXQ~DAX2nSy>fNem23sxw$wr-gxE+$#aC?_DOFl*FtzXK;oqUwkxX3_1 z5~~r<@6`>ys3s?$=qtpD1gbo);YJw-@}nxysBu`OTptXRAU~*IpB3WdnyGed?Dfg@ z&{uS7(^x6lLy|_DOd3Pz-SY>=B5Ny!0K)2i80AW1wML599IK0j1uyks zscnOJ-9AHvGof|>Br@b;k~Jevu-Q}fdM9}@og|5tyO^$=>QH2$sx|zk@cd#1L5jQ6 zgs>`K=llbz0M<~Did<+=8*uOvX}K=akSjKT+0K?XC~irh0qI09hNyoV5I5Uayi0v| zUjA#7IH z?a?o=m&0*PFSIq4cEyQBGAcS?VmcuTy*3i^Dsa8u2N zV9#AWE?QOu=H>EO`0eHMK=El;KY-ULjc&;WLhfp}OH~7c39>bXF%_g7(<5$Hq9{mr>-XTcTsM``u+qP}pv~AnAZQHhO+xAVHH*MRUf4xCP zRJ`hbeTLs?pZN9}?6nuBMT3D`5W!4gW-(~NAmwTZ{z_q&2EI*h)$70+YV$72uHX04dImwgOBH*bt-;8%+i3Kb_h!ELv6t1ehT8|0JAQY@3K7 zRO|h7X3Ev6XCOQ?&d=?IWBf;zju96Ba|z;!kWz#lP`a=wm%HU|z)u9Yh;nghA{%DoRSwwTGa#H>g|Uj&*1Qx#~C zw&>tFY-7am|DX+57j^qzWz<133a z!6`_csx5%2Q?GGvM^|q!_vNc_sRHLFj?0OeD%3xCLSOM~_UyEO2+m*r2JxM?Yc5dF z7A<4i>*6{x(T0ax#<_1sq|fAI+m@P_wRYIY%D`uWkNujeGY$sl4*wh-SXqH+OAcU5k`8Is}1(8TXnkS>uM-pW&ayW z>1+L3#9He0_VJx6(5@_u8|XIV0GG7g#QE zLH;bN${5V%*G+7}TUXKpGJwFbLT&edMYHZK_UN7=0|5L7K>Y8a z#bcKLmsQjMX43o*fW;PUE2l;AdoSOSew7juEnjig%UnH|YCDZ`&3;rMk$gwG5v)z9 z#=~Xe@yq+&Ixk%;9vtvzS$rIe(%r@FMIOcPy|5~R2MUkN(RC`#+Uslc>{o@;u&nFn zyLG;$?lw*OrX~2q``eg2GL~hr&)-DW^J~1koNbX_F;xYe1$Vr5iTyesEbJ-@X~o7) z>=@k+N{$ydGzmpJmd>IomPm5;hVV}Ymlfv5v8>^R69au$x^g--@f9Kl(O!~oHOt&D z57B=MWnGLTltGK*P%$o4;bwXWQyG<8VJ(sI#U*#f*=+V{XGQ& zf~Ai7Ebo#B6pSd{Dq9i)W28_7v@*KarTcFnWI{SYbQ5LQ(cRlOyc$`*>8f$~hwYjCB6Rxe65J{; zqB{l~>fm>60#Y%qb!@u}%Vv(qCIu&>yfRBD)jnH)$$jou^+0Sl9A2VsN;Washp7Tn z^oPJX{QTc&pV&500Q+f?ni!;)Pxv1!#_-gR2LcA8(TaAVWab}P9(kqz2#hYTS5?r7 zGUn8@+DiWle|^unJq)k5K6$DQ8))iB#rOPAjU3YnC|{v3w3Y#gla#Ek7TuvD2lF7Y zGcduMs^g2Zisp-zn|6E3w$*VsQBDuWy+b{DQrpX6#0Ulo z%&HE)n8R3LoI-7EQru#pwZutPE=<8!Q#)M;t;as8n<6>EjCuo_GYxQ0Q@)=fWomoK z&^2@h(;r7G)YZmx55`@&ZnNDc?gK(P|8UN=Z9p7qXbxWBzmRyWUJQteZ4nSy45LSo zU(&(oiGr1uwNbO#AIwAeNB3H=iV$egScpm!$y|_L&YTtPftH13={WXtkJ8Gav_$r1 z5!MWb(8O)9soG|(jJ6O%GA!>s=`Q9AQH3(5(2Pbb$`L) zKF5Pu7T+_{BcleVz%fINCK?;syY#D9#&wRKZ08dWs{fdkmQcqraouj4e zm$9DQtMKcHsX@m(`u?{o{0wZN15VIRTd068$E4&C+F9uddvUSDQ!L!pzFWxz2xnzzTkz>@mK$chTfQJKP&rP05Ki%~7lk zUAuVVsrp&7Y4X|`vVDvNXgXMhTs)mk3N>PH%9gxV>ZQ~nTneh zc9DpFse)M;O>~ke+O}{l$i&ayyh25Cdp4Oi5j$6|a3(PLL{Wl=zp0IJJ3!jX1 z+`)#@m@h{SK*~yfQw>VXo3mLm{OYrFDlX({aTWO%H`pwqSJh%C&O<)?)_9+#Ea>0T zR;03Fc_qv6%;u%(%?XS94H)JhhNj)A*=&@Ij+w-os+}>-4vp;)?28}KVMP&Y?x^5- zbg7ZgMZ*2Pl>%+H=%~o`sLGU#GBHgo6AgqAY@rT237mZ7Ag40rY4k+{n%R%u1bQvL ze0jYw`DYjt5QwHS#@xxk%O2GWHYgN@V_}T!t%4DWX49hTL=vy^p$a!q%|kseHdnX$ zMLIS{p7BoUm>Z73p!y!>TyM)L4X=z5bB&RDal%7yyKhQwU{L>ZwEF#{MQ2Sou{$Qv zc!A7EA&a>pYS!_pGo3?$l8wJLPLNyT`;`&HDiOm13GIr%PL~120XRdZVv`I(a}+Jy z8;7WQ(m@r4hT@pCF-jA5a{g|~0m6{s?7OqQMt)@gSb{Pjdy%2rI&LI(O`vi2XF=wDy3l@b$#^Zuctw<9Mp+w4Jt&otUBy=R`s#5g~JV_x`3KB(%$Om}j7i!0CpH~luXZEA5i~BYgF*g?A z_4P)Gy=?}Bpu+AuHwe{C<1l;U1&fq64mgBq5Y|$L5FPyEE+F0VfpX*R+r6pgo~;}yW!svBQO&+zP>D}oMXtq;hrE-O+%KYm$zVT}E2O|eDId+SuAY6mf$FsN8 zUtzi50D;0>ec1~oIeS1J`S;!R=n>uI zTUxf7PodAPt^Itykr#Q0(5U)K{GAlegHwSf5q*T`wI@BS7gt4KL0Y7$LEXeVTuR=J z7FlivLeG&tJOt4T1xMxM;M=Dtu16b=AemnX&4MFt*|Lwkh|tHb8AzCtATfUe*p{o)b6K?+E$Rwid>O-uL~n{keLy z=~mYqpD~2=*9$rq)Ji7d)mu~=T|z}S3d0O$H=Ax)#*7Y4&BfI?m((ISLdc_exj#Xm&_CPDe@>UZ_mJ#?9Q5BBeGi51 zTDpMxa)1Rm4S0SEe4HdhE0_~I(1AIF-XDyzNoeo7$*GEaB!)0zhFGu%70^ake(9Z3 zXSqwn1Ui_~7Xm?G^jS0l?tI2aA@z*nPZJboM{Df-3~Fu3~)?MyGOf0 zO9r^awjK6&jt*^fGm^atYK@fTU~fPho-#B2NlLiUwJPgOXVR3VXyvMQs#%TOw*DwsKyxYUxc z@j@rXM>oih@<$P=cDqJzd-V}!e;Ht_bmjn{9I16AG3@Do^`tVr8}6K{UF@U_QF5U?aarm5IoGApV+i0njuV-s^w}xaYG!Sea|Y95@06W zZ5RQv%{rj%c%SO-d@PtTnRyT_O1;dIV`C zKnj>VXx@+@!TyN#i&m{8P{Om%i9q$3s^YO$%Ws@b|3aPeN62OX3A z-Juf2Q(nQ8iSHUgc+G9w#}2R0YVKy&Ft{<&CNW!*Q%OSl+;-~C0@GVX`7lVTwrV1nYbDiV58l`B&SneH9YU0%7-GR~HO(hBD z(l-_bEQ=n*nZpAzY^cwH7FIz3<-v``>Yb`adBYKKJ|NMQ%lS@QxGVV>>Xdvyk{-@t zEeGm|2-54a`HHIbR`EEl3d1KA<;p|gdD-Gg9J_s0hwXh(hG?LpZ%<;Bpc5Hur-q}a zAjk2<_BsM@w7j4DS~`K~hc>M|wGOb*GEs81ba0c%TuB;Sv=^>E0U9bwm2Zv29<;Bc(w*B0WRt%Y{Az(gawe=J(kSY z@tlH`Hh|g*Pz8=9@U;tdvS<*jIn4qp@0r=IP*^z)Qvcb#-}fJG(9kP8tO7g$z<9uSO?ElA-EgL0;sC@7TvCBQ6}&HBB%X+8}go0##IwZXU)kv996-_aO^O zy1nkaIZZUvi@va5^5a|#^+&ay_K<^}M@J`24`JIhj6}m>7g%L|L+lRTh(-KFMFK4= zV<%dY;Ab<{?Tfl+EAQiQ1C1LOwl5DD&+0^p(?o5z5XHvm%l0N_f1`X-?%rcob{OEg z@Bj?e2+4T5kTZV%a7N!&)IP^);woAgtl+COet{S3BFn(XKzK?e1e#C(NcVovGh@P8#kS&4$ILH&xc{?ljweFqxK0szqb|LMU0 z0hsic`|CeBA$=cp{Mj8aCW}jE3oEQH2OF~cx;gGRZ8t95zBrk|G@VEjfyuNSPd~n0 z0OA1z6jBpjY-1KOh}xHQXdfY<>8lDj(x!x@n+6P-@0W6urM{WWeExbf?p_xzkpG%A z;+3<=9s%D!RcxXcl2x?^DaMOPp4SJvo|v&zcksw4V}inTKM0{L7LJRHUS}}N&g4fB zqq{ZmWSE>z%stZ@Nhq#8?Pj{rxw++20m*TGo>ed9EK=VANk4hsI$Kb=FK_ZbI3h~V zh9896xH9#01&E`LRpW;>WJ#8=_Zz^m)`ac;7PPcHxkU9JnPHlAj1cB{Cn#1Ob&mCU zeeHPNiyGSBlf00>7VdJEKTcwM9<}IpYYp@sy6VGQ&r1~I${@LS4LRB|*n`FcH~EZj zhN+4Lwrnc>$YmntMSJ6@BS{S;a1*|zCk}W6Fd2OZ7LQwudnJ&9vbv4*Q;pYgv4Lx0 z{TqZ>s{!W41oZmTk0X9^5kG@2+Ru6RIRT+gj%()kMwfL{&#@koa8(bwljpjY1b5b@ zfp>jl<~M+2RF?{e;L&^WttkY+A$doB{6_N!|;1CW$Tz3BeyfYdy68^l=Ux#FZ~U*Z6UjBVL+ z(E{^il3Wp#=zR$kB_iF#yUXX)#s?Bvnsq@fJt-gx&~akz`<1t|GTSKc5lm5#WR>*z zcd1jwiM%)ac1e<^?uN1cx4W{oFWH|ld{3^ey+yQjZHnp5KW8P0r!N z?#4Icqe-M7mX8H^iV{>H**UUKIo>2l4b@6ZUoC7&|C8&XbQ5Tqri*UWcHo|lLONnR ziEEQ!N{~DOLRO}DP~2I#(ckTS!adc0Bhx3s7iKTz?t|G@6EICbAl1`HpzG+J_hG1- zAhDwiI)GC6)oDKN;iQ6xsSSPkymRH@0ZHojD2?y6)DpjHW{D1?4In^NaTEYEGYpUM zx{m9e-dZ=B^yjDdkugVWXD+Eq?86#1RR!9hP*!=~XQJ6R)B!$RCDuY?5F?@c=`6VH zq4jHj$|U-xR$+8U{(FhS-?9uWjrJf$dB}o2?8X9-KPR$tfxU!^vmNIKZEB$9w}axs_^T|{>|U}tNu)#5uZKANw3rIG`oYnkmtTYNa} zHf)oI?25MUFwa?@bO4M7U3}=8s(?waZ6tog;=0uC2n*a?_?+)za59|O2=;5O zr3iTifp)Sx@1}6`p>0)hs8a>1N!*DTcF~~B__j~pcICylw$&)AMQF8QBTUjNa%Rx zaR2?9y;?o{^(eViJurC@qnZ#@b%Cbq$4~^oDpW9bBS5<&hFmFY28J{0b|`axV#L!S zCP4U!o=)}?n}`_f1km(^UT?|A!>P~=4YXVJ3&yOQ$@^dluH?pP+*43AYGjKkod;Z# zPH*tankK~$OUTxL%Cx$1kVi5d6rzdi87+I$7ju~ZB{dG+WOF3Fo1|TPOAhXzDx1xd zt@0gQ@?bxF@K9vMO@}=Go`&uXNWEmkxyOecUySwvw%oB|58i~zZL&M$pmv{0rfkPj zA}kN)0CP!XZq4NkRO6v+lb6m6$EFEUam2j~3=TjQgpV5#KGUpZQWK$Lz;sYO zZlWx5>>IOm_T2(x@#MLM;T+1|qJa&Fo5OvJ|BIt69h)|BhzHyLRl1Gcp+o#^rr)@6 zwMvL;EnpccYhkUGmBqO z@sc@ez@iuk=lpNpvJ*a*{;71aBvs`h(Deg`!ffl*2y2ceXnk-SgYTIzgL}IAtKhdj+8-I5Y zN)Oo$80#yN%EMU<0o5f5C;NS^9yl%j$$6W)T*hvDeYBd~xTFQv6iD>jjar%(l;0{g z-w;;amK<6m&6XmVi8BRWXG&L479c8Lv6haN`@2teJRs7?Uz0+ z_Ks+qIfqpKn*^9-Oj8f$x=M%Ap*gNX9}F_zyu}ihjhokbZ!wVPd4Cqc_jFgGHKth3 z88<$UvY#@B3I2w8U=|C~ss@ORd7xi`EosT1kH1a42$Y@U1SDZyox+d|n=1SW^UpI{^!9_LNrNccDb zy(#{#Pi#WEE&gg<3iVqetx}%i??DnT=2P$|f7t|nOVjC3BZH{paLPQ06w#)MwkP~R zJf|2`Uy-oT1L6&eI+eReU^TjaP{0t5*2`1xp({s9it;9Cadrp5^W>@1n)Qb9;TJLB z-#BNt)%Q~9(Y{tSs5cyNHK9C2F!NnDL+rSSHG*h}$A>@)n>?m2WAvDepVmewd|Nhj zp%t}FXTYPDAdG8*Y;J3MAxDaUh7e3T&}_X&p*yc3Ba?$qyRF?v_)NikqWi)&*6Bxg z!Z%lwMuy_WhbzskNtoaHvL>|I-qgs*53w&Tk4-JoV8qIQ^H*yw?X zCB;X*29c;C3kTmOA~wjCcr`QxReCW4>%Z1=Y&)-QafPY%!NxB-2eO@2ZD^e_a#dxh zJ0CPxCbS1Z;C9cL)WZ>cgI_QHnp_(?;(zFka zxc%Q&pAuRlqK&pDjo2GfTcyQxKkE)G_xMPWJ+Hn*ZzgkheIYP+1nRwpI=lHyHS(@# zym<>tR6@JnzwY+wD(poQnxBi+DWHKW1Q2=n)%<8R4jH`XyF&ZCDE}!kp3u^?Qpq0v zN>Ho})*>q!)kdo#4ZHf05ReG1g`?&bY%d4Q6`ZQt6H~W*U5wq)Z|Cz6%-Uw5-}8B9v97M+$2sRD9?aNxIP76$@-D|rwk@p4KSWf)8}?w{=bTY4CO|8zCH3DS|-JVJn(+l$B)VhN8u4-qM^nvAfVk5t`nY@PwWQh`1g?IrBlsPZb91V;m3U)MBt?LVW6=?xFfVt`uul^=DJRa&!N=dE%u)4n%yj@5=5fKbeU$;5G!1!u!696~BJ z185sng=+$1WVXQU8p)xs;l_yyIjo&R1Q++#ajfWd zv#lDngv+88!v4JDnszwpr=wCj^4jW}c_I*9^ax(#*4EKKS(N*$?fn!7tu*u1#@a?% zg%O;7!X&K?1Y2dk*dqPuz6``{M20Ss-l^yw0|vs(Q*wEPg0meKU}!83x0C}Y>@=>; zs~3Xo#1K%xF!*&F;!j6DD70_mykP8P+Isu46v|1Cx0wayt{UT$I$e;ukm*2pr8%1C zfuP1E!1=o_!2_(3xSKe;kvcFZE)L%to!`+sTGd;%>x(0o#u$dkK~dA^iUgF+F`k6Z zQ3RrUe7%6EV-EpHPc|d2428Iae>g3?qYA$v-r^ImzqhjIFw~RZ)vc&|Vn0QQapP?w z@Kn>bxc!w9u>!rkTA`QCy1X(2Re5rbbOSI4YSvVx{H71uSd>nW&}^{$ITR?Cn$GRs zbgEJ!O+Yz}!@}lYy+V*MP|cfFv|%y3jeItg4KIO66L%(1Dzxvt$`n8^h=k-&mAT~l z8Sn^7&QEKr3DpPDD3#raDQ>arW5D`nY87MpE!Gn$h>f^^q|N8~V`T3&5)D9~%u`4k ze~i2uto-b;u)t62zWyI&{DOB_`Fm~aBXx_Bl{ze0iMxZv{i!lacMlnzOd-08(JgHr zg%*wRlwHHIB8p-Mevg7V%4D39NTGLJzBMNNB#mbrq@kVIbwliv0`|9JCk4DsCapHd zcPT@2IOk;%ySZi{8n-?s6Y}ORi#4^SFc5uJ)iKPy0p~k25eO|RQ7BKsvd7N!lPq-f zzA7P(#=$8}5}%5|0ReQNrCT2n*hdL}-akRC^sJ;>Hfb=~^N}+80}Gn^a-`}_g36Xa zYgGoi)6s0#zth^li>z(V#V;jIC`I&1>3mJfh&5lUVUXUpP*3oI3XR5i?r?xWDlAzH zEvPWP>?AZ3fiJ$)`)}>XxA&2i3E|1L%OBWyDJNPJb+{^~nkQ8FA98`{u~}98RqE6- zcp@Z>*@S9T#3d;rCDX=p9uwS2=lED9&Zr{pdvc6X9k8mR{ybs1?p7;_B{F(QLwQct zyb+(;7WP8+N0RF~y33jBwoWNzR-X%^j{g+FQ>WP09kM(IsISq5w|oyNb< zNXBU2|6EyQyh`CSdqK?I>~7W>9i1Oi|U1@IIo%*YA$3I(6F$yx7=JhT^0#P>HYE%DDqhwtj@11>w)7VXgJv>S0ZS zJW3prp~${dHxcKm4H4o;^KII@QsQij5z(CgktlPNf_fHkfkoqH>sR}%o589&TKVP# zyJi1B043F_+T(|K6G9s;-;QU@)J}Xk`o3T5g`p2eSKqsfGd>5e4oct!VGS)AK06+} zFZ%!B+gL9@eTTmUwf|s<|2?{B^=sFI{C}d0iXsBSG9v$9-aDWJ1F%B`Fraf>O74N` z=LKPK@jSkkLh%TqYalKky=gk}Iygk)Wipdhe=2#f_Zm@A+7zo+hd<}dq132E4U(_J z_wbK)hUf|5JXyg%^w<`$l%_;$+%6hPDA5W*|A+|7%c`BfbL>%AeZ4~2# zNzXRh$U&#n4BhNo+Qi4`#$m6nOILNn#7Ae{eRWaWqOmS5ed6wlPTSYha+OL~XL;6` zT3?p&vvHP>Oca_;W6R&tQ_d`Mog5mACz7gr68eo=N;DrcWKUOt3!B@q!B(;gHHo%T zwkbo4suePio=djY^M&ACxzvklPnycH;?sI>6*mdh)Tfza^y4Lmx4z9$(<~8-yQQHG zs1<9ItZHf7574Vr?X%cs+tljQHA*4v4V9AujpY~%TqgVEPOVL{H&ta1=s7o+hngPy ztWzyoT`5+VO;WL)ZPxWh>QoT$zU+T>9X3&8lgFX;D<-?AcRHEOd<5^=f1$j2GX9?8hc z>>-?rao=8n4@(rc{ELtYJ$nr2n{XkZ2rJ7?(T}8kSA7`ldQ1jSqx?Dasqp%n{yfFv)G#7 zuNGm-Nig!eHBE5n7AxyX@#4aQh~!Yfc>QVFXD)1Ug5S-9WR$AvOzWsu@7zyXbC{{E z?t@c4O~Z*DGN*X{cx^&UCc0M{cQgp zr+li;bM)Bi8psx5_SD{*MyqmkTm_G4o;7=8CZXWkVtj}uh?4;aNwbeyHx6R$AvBb9 zL9#VIWPXOX*4bdyEB7A8mC$L>PfM+|x$%Ze(o1YO_hAL~x=2N-&_pzx+hIf==CvXl zk_|r$L7_+rXQNQX?^lPOAZR|}!eSu-X$H-Vr@PBqE?=yhXf3u+2+Ti@IPJL$Y;77M z3-USx83(s=s;lu_7m@jFn^M130ntRGb_$J^a@FO zBE;oz5~hi!5?$qry9@rL{bnNfRs@=>`;(p@HQMRxkDD5YK{8!*>$w_YB|Hg}WWN;0 z1~_>_4;JT>>I(`AHmCOQLh3XejaBy4`7hg~&3l9vx|oSgibH%x+L2Vh+q-<_;I7o$|e1hB7zja3+gZ;FCrX>c2D)eZwokWQ>FQ15 zRMv&tL)hEjCmy`-y}+gQ%5q~dU%z{Vv-F7cGVi|FDBpW;=LM*=kZv^_ytX3msV zH~Oi-+Wcu(s@0L=(wNZR6oXkZm3cuDb2iX;;c7?|(b2T9&BU&;@YsRSn46brb)dl& zHT;-zCA$jqm>^yWQ%sxExNx)d6Xzq^s$U{7m7AcP%p>Tg?5iZ%KzRm&v6s9M%>jh& zeM(d1YaY$NtZ{21sth#5H4udvC)1B#^;E7+#?|c*s}-jky!#l!6he;K6_y$a6fzNy zI{E;+IO%Pq4l$3M%UY0Ax26U%8%3a}V9^a@-QXXK^q$v$)~f zF!z}Z=`|^YuW?O6Vm?s5Wu69);2zv5el!9@;>8vrdnBA1P>V#@eEg}v3fNvHg&KS8 zRFOgioT)NWKE&(r^nl?5x1Iaf+VWcnwWGzdT5Vl zN$vQnF zGO_9&=`ycG$$QtANFSrZQ!c^vkH-uJUXAvnSs(I1#+<1>Lf4*0UOio4k%@6Jo+CH75G0dd*Xrt$ajAwZmN(CpmeW*Otsy|z z*NCThl|g)m>}m|6`rh!{qTbwm!7R>`MsSs?d+wC0NqClmR5c^w3+hoU37bZRO{1Z6 z+5@$k7*MJo{c+zWNYBwk6kj(Xc2Qo-(T#@30|VsMbGW760=C#tg#q4B9Tf5wCjw|J zbwZrcLYop;H4bHOl^a<{jb0offFmLbRohUXlBEGL67sV#hb4<%ML#61zwm%uT|E1g zIE<5BQi&Z&NC$<0N{BAvvjcO?J=8}Qk~{XeGDWq{V>rp<=ton#FA|Me!oNhE=EaMj4OP!RTUql1yYrH3aIab1epT<5%?6bgg}M_&BsB4)5`!DO9S;&eO~;`UqDhQFPs*PKy>RL z9+MHBpH8vve`LAw$Td(>EIAz@W>D2&G>Vj~$7HrUF4aOR?46Q?fQYUtFLX?4!F>}5 zeME~KFEuKuj>l>SIpSv12uYA6^h_K-kV4kYZ7db=Y=~mP z;~F#NyFCD~fJ;RzX&3*B{YGl~Dlu+BUUp#zsW%{b9f(I}F2V&SUFI%rtA zgUv*NuzKYgIu6SW)!nY25t^7KHqc^??vHE^QI?=|M*wP~87}i!Xu#Jbvnfa&LeAtY3fF)!wpJ%Xi8elvS~Rorl~s5-k9w0LOvd2uMNzp1<&zRiwI2MfZ~jx*2`76S{$KtO)nCMBmQtohCj z`0v5q1KB?W%pOAp4g{h+fDV@6`XZPpjy4HWCL839w^T#c-Ig~Lif5b%(83Z#fE+x`qgIT-mg|t$+BOC2VDZ)r0=u%H3 z2_;Acj}wfYIcigem#YX;|Jb7_R8Dau%8F|L1|Y@)Z!{nSmOjSfh3OEqWeQ$0FCzpR z6v+}s(fK(^Ve6(>(rFFaYAzalf*J9484g&?|0tlK5I4!IdP!__nYQNw@Kd-RJ=lee zgL{0hl;_gku4G8qIYC}5{$_7!#&(eMeaCkbvsj}&zF+u#9+=%GTS(jvmhAIa6C;XM zVlAAA?*qVQUO1SU3ylOZU`T}&R3~fS(g73MtN+zlC}|KA81ADG4~uTY{72*PK{^x< zsf7`wwg(KgFOr|QzCi;`hJiXEwnU8FFq^z;`fI8T^@p*SCP83GqCLD+DP<&bngh;y z8Aj--A#239VD0eHN=u-#5m|x=cht>#ztJWUs!K|?1(Axl)~8^6DapecPdk$%R;IV7 zPe<7MV}037N0Og*h2OKQ2#L;(VR@E*BS3<9a-^LBSCSv0f$R{m3FYg!J-v2=mg6%q z`RLOg!iZ1@m~yUGU>)twvxeD=b?s@?yU8^QTPT?;>DK_zp3tzHkeww{|6AEB2qKbM zF4ud8Oznq9i|%4HW1lL}7g7S2u;ddH0L5=TkbAWRb-m$*v5gI8l$aU5!%pFC_znYu zN2SaBnH}qzUa``v9(ENgpte%;2i62-4oeRT2J!#{@Iu^2aMP~sPp~dBP)LD0!BQ{- zgkN05RZ-K`64N&h`G%M>y4X8Bj7kgZXaM7l6S^fOobJL}6m;aT;iz!%pB-U)wU0I< zlqw6lDhsUMIaXEUKFLrzF0%ubLSOl3DZw>fC?-5oNxdVX@_iGimc;iL;r^{6AT)52+-X9MzM=R&y5HHF4@EX&kh)0y4E+mO~a zl!hBp5V=B;+VX$wwF%Vq#qK_Y@M%U%9#o44C#>r@J`f5J_p8TSDEY%Rxe(Eo_nB&! z%xMAX?zd3AIvCUv4^Jq1Zn5i{o->r84I+FxlqVd-H})ZNK?65wa7 zG=j8pxs)w-h0h$5zM}Ag4aCB4?kn~ZJGet)cxoA#3qgKC9OE9dK&NfeLcvwekWPmg zP`LUSw5TPL84g*?9-_-UT}oH-i$UJf4(p91}xexo-^#V#yDO-)&Jy^Ki6(fUHP&NrRA~{H|Sdr%2r@)W{3+(76zFA*03fc42Yl5vl)$N|p zgpe1T%Pv@SLb>UcWuuBpS4*O}?_OT_O1C1Jdgw!Z$K2LQLxB}dqSlje4p^!YJ0I%E zKNyK}2)g|J<9RF{tO@+ngG9|BqkbOMBIcPc4SoxKUiZvuMdFOjLzKxJ$;V;jNWD>+ zfMhiwZEP&5FA<3KO<^oc&=Z6c%9$Y>Rduc^MLe2p%G5!iMmK=HI6Gn^GBlQUK*>+2 z$aQXf%g7@O?}#A!s#g}aWFo%qs7BjcQG&%^Bs%PAqhm1;LDIjSdt0)f9lF6x_fQn|X$Pg7>EmmqRE{L9Ui8=0t z_=x0wcn~w3k3LYxIq(ksJcf~L3YYSolzGU(vvdJTqNK^;Z|~MvM|x`D076Nu?bkZA zTAU;kI;Ow1_ZicVBC8qHKNVFU;(37rFa_luS;aB^Ii_2+Q`N0 z(y+p2p8V}c5=zJeiKD!FH$WW6aLMs+X(Ayac=a8?E5ghszLP)d?&bAX2h?+dwG{Wb zXL=6fdqk-FE)E60;c!K^uU;pxk*CQvqg9d>e_%QV6+_7zq$s+v+cB*%&j?pZ^f%1( zIQ_fJNpuM!_@_ij1G|VbZVhY^q$on*3As0s0atk8*yC|)rDA@~3#BH1q$%)!9GpYIY6Xuys!NOmQlJV$k2g2{b4at#KqDFj z*dZVBs<#Ridk=(6cRVSYFYWBtmJVI|PE~y-o)m4y{~yBMG03yGO%kr^a+mF2*|u%l zwry9JZQHidW!tuGv$y{<@6J5$?z1sp?vLk0oX9v=WZrpYa?UO-9wqL2B=an3w~VHU zJ)d^i?Ej=(*+N)EUa=G*QMLD)H)iBt%&S><{-D{2XjYy>^mt<=B%C)%Z?;*ykB{j` zqP5%n*bbRH4#x?=BtCeKkhf>@T+Bls7NAfw?jZ`B$%r2Fph^e&k+mURG#&#i6dcb+ z6kFf}+TK}Z4hx4Ne1%WC3MPN<0dJ)#A57k`!{2*FrJG>`{2B7R;3zW9U&jKBb&yvQ zG*yL0&k57sXixH~eeOCakkeSS@7H;smo`-Jvkw-xa(V-$slJH=38eh_m&K6h{nRyB z7vXC}T?=xX$Kv^*0BAXSgV=ftTp@N1zzztXIBpDXJ2hwaxkQJB>RkeR=ZvJk7t#6-6ZZ$W4E()xAj#SAtc-r6cb=vNbj0q}PHnfcK_Q z8sn>;pPD|06f?1ZlqChf5kE1f^Be}%u|pU{-He#=VUPoBeQ-A`EHSowT=!F!;+5uqNGyHrwnesqhC6y+#!{#8kN%#O$7opt#J|~-H61biH#v{q2 zh$&p}nE|ohBpiM-4Za@-9%uGboUsCvSBKtuIN0gD^Zt6;iJ0KZ6KpP|8>BageBM+V z*(bOOl586>Z*d>usR=`?N1J#dF4d!sHjgvh7aIx39Ky<4+Ytaz?yj>^lfPZv4-87GR<#3#onCy5S*IG1zIW7ay!V&sv*qBv{ zNk+R00MP*6jM0s*jUJ74&f)H|UU4f&XTGZ0@eHKon?YO!Dw9M*1{toGJ=ZZl>mh zNsQgW{hCH8jU<8-&aHr=-mED*je~1|B#H;ECEB?wi=Ofg3XCVbY}RxY!XKj(IQELi zZg%)FaJc$3(usLl^db_f#`{Qxlwj}CwPNUe`g4FLvfrG38O!x1hT zaYMWLWIgB}E12ZW)l9$#)~CAEHlfm?9a5-GvWH&-QBtqii- zZb4`{6yKDjOggXl#j?B!Ipf`}Y%YXzcx-en?$MTe!VCu&4h?~>q7!`&<9%y%9e-aB zxaSuZJ7J3L7pznLj#Vp(e@1#-B|FJ1Wu^;_h}80vbB(63o4WI_aXO zxc4suSn%Q}uJ)UUlP+s9H40RA)4|Xt%V=VF?zFw4ORRy&8dpR{&PVn-R|hA`PLgA@ zb1puO44C39YIRm^7<@P){x@(46l|1+*lL+|)1vMHmt3RG;UUM-bYLbA;AU#F!k@iI zVcthJkab)~oYX**?XD8pfYL2!ie~g$G9_S#DrySF*|GABR_QDeGkepq_(0HK)t;)f zy^brG)`@`@&H&y6bm;=HwT3uBAa}ofQ4LKkaF)6HGxW1RMiC?kN4JLxioDmQ(WWP` zOb_k{7>lNzO^w5^h zPV2K%^!%7D#?oGroYWwP`I_`PXCW;*i)@6l-8)mSV@kW?(hi7f(HBP{I;z=#UbqtT z_GSODgM)K0G!kvNYY6%nt^6usb%fRNQ@f2Pe(SE3*^$sP@~CLHMZWP-A=jSRjIeCY z{^&arY)FMwlV zK{$A;(A$tO9;8EdYh@4pS%!Sm#e%7JZn19#95RG#yX`%P_$I9!gr{$^to9%1;tI=27s$;DEr)LxXN@xSU|GA4gw1Ov}|<(O7n-yO5pj##Wu=x z`j=#f#}LzXSc$=DlO~I`hkzx2BzAs+qe|p|IB3#H*qSPiUzHZ)q~JI*=gOE)2^!N5 ziO{#p2J%VxXF^g3Lkwi9k9wWk8w5@oQCRMVc=WB!_nqdq0bwR+vOB8#dP@h2Pra4F zE?APaxW_QslkNMk%_(*~#c222C*TA)_zuT30e&XHV@WH~K=7zr)Z15z^Ijl?>V#$53|M!a@_r< zOR+0mT{?v^Tx961sHWuL&Q58UN+?StNG0W^3bJ<|s(+1>L`FGzhmdatL4&>De8Lv5 z5lOiEKVUm%hDE_|Sd{oa#yu^Fb*~dcIHO z?#Kg-Jc-Hl&4vEtR@gVVet)9UrBf~M=%UYB*#kS~G#G5Db1bs~<8$q_m;j$V<8xCA zbJk}L>GD(Nx8JV1^oq^7kE&%!RgC0mkr!1jW5~gxb+M1Pp>!rtXyK&v=@LvtFh~8P z;yV7(cROLS-*FMVrlePpWE`)Tv+VD17#AOQ$V+Zx0mV59B12IWXENQkh zG$(9Qdq?a{azNqda;pKWfq9TU$IutIFJz|5%jpT{+JP;8+j3zZBG z_HFW>MJzO|qLP*f$qIq9CM8E@WCHtx$nZeen36FsvCWTwH7)k_!Cz{;@)*Yn=OW8T z#4z5_!Kk#qE1X30-F|180+5R&Mr)45y!$Tjm3zxW;-9l5yv+PL8T%PytX}Ux(mYp_ zI7%!%${!R>k72a0#UJ6rZ$V-E+vpkR11=iuQ^!vgucozWsR6^?qskFx(nxDM@V*iB z#BoO*d_u9kjvadO0zHuM7;O%V! zRnUC+N@g`u)$id8fUJpl(ap)}3qYkKR(dT)p`g5znmz@qy9-c-b9pwkY&0x58?m9f z=p+Tufm!iGn*O3pNB8NcoK^yo+C~nh+5&-Epcih3c;X0XRf@6Ju{_` z3#=j8w4@pTB;rE6%Y%Gbgz;`6I{>Xwa7b(~07Yc3UzIq{+uB7K!8gbYCHO9JV%qnf ztEgU>(NBO7HwE$aZPoU%iNdIL%u6^Q6$lyr4+kk4TidLdDRbg}=mRn17HULaFpy|b z@+nGEneiGfzRK?-BeE$^AlngB9cu`bIrs8QFL+d zne1U5{jr}MNx?o1`H({Gv?5q_S4dIoC(sY`}TFkKcu5oK_ zLSPm*-ZY+qJbRD5F2~O<(|CYHA#1e3rM?!Glc!Z6T)VutIl-Fsm4RcFkUJ>YtR3Y{K2BVske0u?ptw?< zWO*i!+b{q-p3H+2^I5DkvLdvIk^2c*Z@vD5u*C&C#533f+7J^|%uG4wusT&ffSFp1 z=PFnmCcCEI5kc94I5c`?7hH$|?EX=rw=7T5>6fUJ477TjrZCnzE{E(fZ!ZB*NCL8I z;D&Y29%m^hF^Y3&pYl&!nS=dGPGWny;5SNDQKt9(uVJf5o0N|DV_oIY-b!&K^ir-} zICOWJb{Y!O-1^>=v!YN%gVk_01dHx4)kwGLBHx24IPqs0#%qh>YRgPv=7@(SOwR7 z-&*$!R;MkuQ_O05O|+ZlYvh+FTrBQs+6x~zxg84%<#1f1Ls_8+5eLKL`CW2;ginhX z>W9MbJrEU|8zm$nOZuZ3rx%*TVMT{*rzW6U3cw>;#?BWbgTE7SMw1g}c1D9lpDBKn zsX$TUT7G(RPK z_U<-#4g#l%?bscPv2_1{@T(8>C+*@LjWdMca$AR{nw5|F^`GE{;$gCF-+j-#Vw)ms zI;`WHF4`MI2}A+V>V1)mk>XCt(<3|dvFu`O(l)-0*A1z{TgX}GbFCo7wF;0?EFBrX zx?mV1ZTjOFpYzDzNi*>iAp3VcfW0_7pepboUvMM(Vj!r_xsXE8Dxo1a1? z$eln;Ok!+jHhw1k7VW!G)DRhDOCe`0o@`H)w6Nh0$nyN`v<>}5c*&?PulAF%yG`4Q zKbz%LD(ooOKx_q4%`~VoJj7)V6tN)ZyEBFxgwLKLkRW*xr!&%!n~b-;5U!P~%n<<# zKHnS85aw555CS>wY&4X!lRCzUjcXrr)fRzhcDY+dkl@>@qfRGvuvXB49DvseraP=A z+cK7byN$mf?Z)e^pYRLJ7JLHq%{bZP?_y{=kI=iiAoPn44_}J!oF%=9`ZJ4k1vv8% z37$gKb~%>-RPFV)J+EJtXw9o&cKZ=La22oRBymkjRi=El)qcmHGT*Wa2s`1B{!wkg zl?F8a6){TfRYnAg>n$kW6tvx+28mCM_>zdOem%FvdxDaBP3+pjo1tr4)ag59D{Nz_ zXIop3?|WAF-^Xx%;N#eGXLD| z^?A3od$M&N&?$EnY`qN~x_Z9Q=Wc<-%sjX?Vw4y&c9GSQjitT~gl5XY1Kgb+a?su~ zKAn8OXk|>Dbj_b@H#*n8c!2q>X84c>ncfdR-|x>CxB^IIw&#DYu)&WlWyy-h@@y7? zcb+xcx&R4X_+@SB_~zl2+MTF5^`rAvKKXvz%V^PGm;87;Dy=-rZvS$2^K#>-lFbYIij`C9K`=;Ner50K&N8SyoeZgg8j?_Ah|KU zF-wJim}x|jn`eE=<()>^d4X>#OV`yQS!t9CaPxd&Y0usA`Fp<&xHfHFc>5cL?&0JX zs$yFc9Oc^`x9^yH+vcb;LC8=eAka9I7b~}-);qX$$;UgVAwV(~Ct3IX7~6?S#909K zU?S_k_snfTEQmqTBj^VibeAlCN&4pgVEYYNDF|}%aQgCie%c;XC*X!i$nNd}Hrz(S zcM1u`2THNGyD7md^_#pV8t=^!@)p90l~_w`-7)*MS>DoteRnP=R!f?X|$KGlcUxDPFhfA5 zuC8wfk?#PqdthGsA7LE!o|KJVkMyAvx0@&<#*&Sfg}0@@Ig5J+C)k1nDaJpdYz1@L z_~c+|`OAsLtx;@0a;2z9 zXswU5o(;hhn3ACdNT}q9H|Ap1H;Q#E!TLoS|AoEA=$@q;Jg7w^x)d zCxS8HOMH^Jp-+(DERT(x84U&zaXp&^#8cik1Mn7mnsDd6hj-X1 zt0WqqTsIbf_H(F%r+C}Q$_-<9HeDUt)Eq8{~h-9 z@MSBi_4JcY)0S+$7+uCdZ8Xo=mpvYQl+JghTzGn%vy)rScfh%0#{xpP!1c%eer!DU=o^R;kVI}qG~bOU=wEfNar_uriia03z> zHKU2hIIr!SFY%>Dt-!Vv9;RmBb7T)c@&Z_v(Ct|tbGWG@!2?kQsiPECcOsV zGCKMf$-SwFHwqksr_rd!Z7xGClU*<&v=qsXHb+z$cMH#=?#cazli`Q9dNE-BmZyng zx?;g!4((#uXne`Me0|Y5?E~YEo0|@wJzjlHEtQ6@E&aWR@ECBbSV?#GBAoqmNY{O% zs~vPS{E4FsG2y6XhzBJNx05T{U(6<=i?uQ1K6cn&?lJp8_g^ ztW)sDmi3F^+&1$((>Chm1)Ux#TP^~m&pbP~d)BL8=%A+PCPr*L>aSTzwx<8H5!n05 z%~XvJ2Y;1`lHuriUhaB_C~FaN&b|J%P`t+Wx7Nsr(Y zo8*TP%!^PhDfI#k=}zPdRiv%DK{jC}eGU%OEJIiEe#3G&FS_1nvzWm+i9?8Di@q&S*6R(q%)m8BN&>f!=vr0oWW_R7XqbHP4M zf+agQLMW|3Klo#UzCAz)TX#0U6lW-Kp zZ9z5R+EL}1vENMs5kj96IFc~x$KMJByXF{qQ+6P;eccDmJsBH$qluuj*k7*eI3{mk z*`|_}ej;8FTn6!>bIn03znO(?)2+qbqJ<@|o(xDyq zr*mZ#hKlxd4a-;zAhSneOCJT9c?6W1@o$aZ=;s03?0pkOzcmoCk`Ugk{}=d<7o+;h zLt0RT`X~{grrpZg&c+V5ovMHxWkH4dlcX_~R!bx+oFwv7<V1i#(k481;YpeoQe^R!7s(}@RinIO#w#25IYM=)$6?0f@*1KJ~nv3o~uzi+m`jTn|eoXBvu-1jnyQ)S8(c+wU4qCgh}YZ#Qv??c?%Ms*A1O z?WTi>zuRl1Bh}~A+u*oXO~{GaFp!{;wq}~9v8M~nd*J$Ll~Ihdk=E;E#pmKaa9Xx@ zwPtWlhD6 zy~T6oWQ(A)1E32lN=hX0zFg+E-Ap^#4SbJ3HYs;}lorkFIx~}tXiYE74NE&B1g#Ah zLgZ>0Fmrv@UT!Wh-_648Wt3q4uo&3UyWc)7s%AP<0P&!PeD55p_lR;f`nkfAS2yv# z6?qLYTG~~Bre5I2!%P=ub86`9!-=JJa8W5_VcGc5Cth*sX?%{) zaE)Zq5A0%qJyW_uBt<#hfs;9~_q4Q%rOmoF(q~p?I_jx|b0w7tN88#eu8Cnv|0$?0 z0Xq-M`SCe7_#W3pnY=_o6P4Gr%?=M9FuTW2cJ#bl{I<9GuCMzny$(Rgm{}gR?l(kp z|KMj2zdoT2)0HY8W9v=zoNTY4y&9`xvS0sWjCcaYtgUZM@=dt3{E=3s&B0xuPxIOp z!3vstP)&&G<6aUJU@sv^b8mLXb3__IJ)|T4>zYW7FaWr-%cS;}Ls^~3Sahbi%uH## z1abms?PuDRxarTsT@&fMtC=`1#0KhH9&USLby{Qk2Z$e$ZJk}gK=@N_i|(NA#a=j89jy*{gi1c{+$c zDkC>_)o+CBC-86pgNh2b;25SBbnYmtqbI92YHHaoQw7GQGUBxI*Si+WjOs(n{oO*> zblyb`u)TnokmqFFeOy^2M0t;Dnbm$f?%#DF>odHMpGVT0CL2EdTnyeMff8y!f*N>L zhE{bEGeINJRwPMd-;)o?D3)Htz9*MySAe9sBMeg0((W4u;Xpn}u-~8VApydt&(Evb z>JP+C?8(N;)crUNYL1fMG!r|PXQSkWCQV3EfUzg88qY8xx0f(M^yR1@%5pIQt=em@vYebtwPmnvZ^uTROf8W!NUO#8|h{l66*3mO_d^bBgCdZSl8?h zs+IQU@ey`S_rE?$INzEKvdSQdsSr!wY|pJ-$NX2_@caRYvz8Qzt(p_PvFq4v+*Ep~ zRC;~mixOdtt#-)FF7B%T&LO#KRL+#Uu!_VyWi5dN$ucV z4zl5_Ko950g=sl^z^iYIFMy$Uk$P&NqL4`&PeDIhbA!3Y`*0Dnq}{7kNuoKP3C*R@ zoet5US-rR;z+5V5k0h8|6$U+_UvL!QKoQ$tkqa}ztvyegvfFX5FJ~V*aH~ql6KF_m z_oAAXgW&K3mZ097Y+H!YWNcYn!bO$1;%^s*Kw0fS(3l2nFF$NpO2%aDNU^W^~A&h@2~rkak}R^CQRa^1HqC z5BaPH&grkX+tU4#+FmGaoA)AwBrhq-S>t=w@qG!%3eTLVDI*n8TQ4PlHp6O9n0FDf z!`FV;R^Exhtt5i(Ws{th5OSjix!PrIO}FY#k~>bCYqKE(fqN4y5p6wTT;mvkVd^>E zdD6!8MjVXQeDDxcYZrETi0XJxcsCzw8=(od%7~gU-A6v%R{3jnypMRCbkwL~G@lgo zV@OD1AzY|xMIfnEQ?YY-043a77) z3TU)<8((^z0u`BzvQK!#2NCY5x@n1!O$qGb7VTHfNz3AsWaI!UT@f^7{+O;#6G}Jf z)35B9vO^J#CKB=a3_QFWwgZpToyu)?ZJN2XJ1A{XcI+ zss`kAOCujwm+eXjE{!pOQtilv?(`?gCOW_n~sh2HJkuEQnzTE2kRThed%@}h7riOPP}Df|3M$SreQShl8{%0p*X zL1??s_3r80KewrR88efSIUXX+#;*48VTR>wusFQtjyR>b7)+Z+@KJiE)}iIaKS3B@ zGp%EBFK=!@x;366B(+UWR-w4qKRrFvqAVx=C_C- zEWx(UVF9(dW zGt{=W;q(c1ndmJQz?SdjTt-3@nilji#;%rZ<+MnQ57zSnnl zOi7#svI0q*q#A8lI!NL3JB?k3Fpjyv0eSPAEo_gDI`u0;VtJkA9U7(>uWeuX*~O&$`0ay z&31u`T?yb*Iq`f7h0#IsTYqzAt~}}C#_g?m(hv9_(%B?w+!Fb>PW&JC_wRXO49wrc z@&B0@{%- z^v@D^0b{Z3PKq@CY1*mdYbnLHKG1GL9?L(gsHt!|7tGDh!e}Ayk^H_@Ul`Gw@gw4s zBubg9dV9gUiw+<^5K+!fNH!^Irc9_Zbeu|18o1TyuhhI(QF2m{S0-Lmj&c`BHaDJp zoc@V+s3sXaNtKx6@g**JUTSVRF4C_A5F7WGh&L7;GoHT4AW@dAKZZhkGEzRk3yh~m zp84&br;Y-p7E0+7=BNq}8yGe%XTetyA>08)h6bgaSpgo#DVR2H+Jt09vOX&xmN7CJ z6s4BbhXg}D@p{2UlYoxcXOShsZFa9Lc7NwWe7kC7gbbxm3S00|uHPZu7OMn9Ilv2e7St(VEH8N&P` zn9;$+7L+*4M3KdwY1G6ex{W%8vy-#Cgw?LZ_FL&Yii$0ZN>9z+bgutiXhm0+CKpZ0 zZx0NP0>_B0t~7l+KW1<9-H#3Qp4#a|KMXn z0M&m#?*5|L@ zy3n~at`()1_4JLH1kdsDYHaoq@s!BXnq-N;L@!{bIHaoLheGp&Zgd7`@}Vx~^6RjQ zf!nya@2+cb0YxJj?pDR5!kg7}&IY(p&ya@FS;&Cq6nvBT%HMzQg&9j&(s86}Vns99 zF<}N;hv?$2N{c8JOdqv^jVu)l`&<}_DKd;$G5{8%MWmWjvj`*6T#-^F1Z;rXM7x#l zqhOIT1>@8_Cl%8yygaLmXCgY0Y2dYYfzW_Lqai#Pc1%*VIqn7d0Ho#DB@L7ssD6O2 z;y|8z+vQc222Anxv;bg?EUJGbP|eFj`Pyy-@mN_|6iE(2{z`&xDK0WAp{;Pd-jHE3|RKaF4UhMp;8igP}wyOD1xheTjd@B@OpOFLStDF0!(v* zI}Z-{Y>`)v7(DeVVE%d|>`b>1@<~drLZe{%k91dBr~bN|Zc%~GQ`jsv50_1Y1fSyE zPgOzV$3gY>JxDAsbL;H+A=YA)8`cV5*oqazUm{o|ad^Tw->~*Z zm6AoB0*hK1R8a+`F3B^HN*!`I*X2P=FB(hamQZx1k}=Co@U0AcTn!UKUq#pXlCYhA zYV0C{EvCDudeR(MmLP=7>{UBlnC9)ivBv~k&_G=I+aNkEpnT2f@cPyKl4v4 z?90D>?FKGTw};>hlf0v)X6;iWb!T6&z3HT69x&<`{BY3L?mw%%Wf6LO*elor->A@Z3nZ6Yf zfhZEYZAR$2*(&BS9Na=EiugF=|?o&90$w`<$ z@W}5Q_e-<|`PGT6T!9QyT#y7MQh1PRZwU?_4xW1NO#b{}lOoSRMQV?S*fmKIOkDg`B)ya_O0`XC z%@C`&gUb2*8T3Q`2e1TIF5^ynD+x+l$FGA>!kVN0tgD|OB_x?B{rqZnP{2JBIf59c zPto`CH5KUX6Y`TvrMIgTS%?N?C9@JDms|ph@_LzioHB-~DDhY^wbGfFb3?BsMwme- zR#uPGmzX@BAHIIfb8`wK;D>XFE+IUh-DC$VRugqLSQ^G~H6JB&T--oBl}tF9A=QZ- zm(OH8PVVIk8)Io9g$z$qzc|2C@5D>*k`;F6z@tUcndz&pQFXcOrn)(NXJFvrX(#XE z+I9SOLTk8|S1)DXaU*NUmY+sh!&uJJU0Zh;AVh1ypYg;D?vLudp%c%-5M{3b{<9S><%npb4K{8fv3!#^8r*!5`1mZ=M3mY(AZS zkY6g+GM#D*@;$*%{*ZGfOJUHjH-PrKUj}3zjIHKP%$1o*jkg$dF?EJ)6?~7TkY=ui zz@Z($HJW14qqp3Bx*BHA+aKFot1lmVTE~Q7=|tP=V?}o0<~ZEThF>YTTq# zW(suhmu6CdT%c*GU{wyN))_Qix50pi)a|tu9qskawq0hX4%b=TK8KBMrnThv8Ic-y z8fQ$tlz@~Vm$Ur+%;Ny5{0b?*1P@>duN&zU?od(4RZ{@ny!BS)=AlL}5wvQz`(y*` z*a`TAuqj?ndmg^dy|Pq+#`|B#H$m$??XhsIJXL(3|6d6(#XXj(0*caT*I{`fsgh#e z@s}moxGW(RnB^_^(PxZlS+=-_rZ6x7^k>zr31g%jObX=9EfCaoXk;&X&h+K;%IiSj zfztAg9j{doRyq6Ke6%IJq{kH4BeUx~d5vw8Ss8Rc)K1dMr}>Ow6M~bQiz_9C&kgEM zbLfyE-6qJ--LHAN?%d#q0k0&g*4OP{Qp*j-n$uw&H`n0VdZNp?{VSr>3z<&uz+O3N zebK*t7&6qiYR*rUww8FJxAUWIjx*>1^833{WkfVV z9X6XAj|D>ZO>VgHM`o4-zgH-u>VkTnL=b>*^n&pb2s4*Omr{<&`Eu%*tOk$=S`NOg zce)yU4S7NaU)N1sO!I@Ur8RUWQmFqCm+WnRqBoB+WeWZjvW>tY5ZA@PbL~oxdm5Eu z5sr6rRK}IiF56~~n4NQv++tq8hAeUJl=-AyNSJJ%s6qobU5hX*_=`;0{rB4B6FJ|_ z`J-cD()1JP6HrOlUDu<4UXLzR4$I?Y>fU<%TYr6Ll#vwmx5?n0hfe9w#9xhhMt*>h z>HXg|5+wAl#856mwXp~RNNHH`@VtqK*Ml#%6F&C)2S&cS&1e%8<7!NqT$JpT13L@> zvK-(&)lDTu1>-a_sm6=eCl9Gn)65Y+1U=$HzU(WHyOXwOF?Ji3w?2}BDbeU-;*C#@ z%D4N~v>fwO>6qGJX8oQdg}z3iDkdKT{VMNVWx0vYTjiTl?{Jv!z60W$(T?Vi=27m; zHAQ&4R>gkSWa*Ec6=gA_R8v0a(b5Z5BeIMi(FK`@1L0Q6Qxbvfsx7uHY0h3ibNhLI z!s4are|^B>F_Wq?3cIO9zG{R9K5__BFfa|!v%%L0)Hsy8ReoyK@ zv+^<8mDLy+U1=g*}&#EEmr&)M=mGu8ZL-~ z47PrM)p&_t+8A)Q$HU-O0vyZ#J3;&)$vQK+H>i5=iVQ-mU<0iBTr~%#VF}erPZIz1 z2L=~+#*l*gBS@P@_xvRMAh_#-mGMhr^!@LwhAfjM|EeD=v(-GwC^2**UJkTgf}(kA zS#$-5Z}LY~n&}OYi>=IuywCWXv6FGp%ZEv!PYlKp)$U?~f?_v9g}Oak1^x5ah^iKp zSZc#&MVmwxrWE8M9PGXHjUq0T*9yeUJ`;?$ICKD(*xS&Ure#1u_{F4|*5M|X_;A{| z8g^A>)$rH<=qX~>2E|*WegJ$7I%wz_C6;Hdi&V zlG2<;MW5})UqVvH1HZdDFmYhn^L+RCRz6Se#S0sNzadV6s!Faj<_QZ4ww1)#!hH{;*`p=^|E~9Oq zcW+IpR~b#RaxYxIM&4Do;)1^m-S=$;j#7eX?@wRP_y!j+ruk+fCw8!(jwK4aRnYH= z_8en00uOb-FkMqKjamlb#Nf~aqoglk!RS0&m@k8P=XsxpB$WpQC#KDDsu`W#I&#RS zXy}a5PGv1n_5Wy44IpmouN1%uTAxq(E0j}g+Vvj3e)2y(fkoXumXCFmqvZglt!Ieqp5v@m{d-WvUe~iR7 zt$PutmdeQ1BJ;*lpFjkIESr^6z)l^JwwZ7c`ll187%Rk{nc<>9TgCYGjxMPWJ~7lq zVil^tT7Rq|YwmtfRSIgFV(_k4YCat%8b9l&rXFufxIF;3skpNBu^58LnFA10cNU^_ zwhZ)>+U9_8MKxWM*qL23IFCar5tdFJ9twJ0isqqD-MJo3ve!lyci*)!wQGY*qUZF_ zlTFe?p{9hB>?Hjxinotf?HJkOJ&FZBpI2y& zi7lD4I^lo^s{+P^mIFWCY6tJALTK02Eae$nw*(Mmug>a0Od1ZLvBKJU+Y^kd=Vj$~ z7Sf4&6k^)>}$hV7k3i_MBJV6_=d1 z-LTJEH{rDiHG~$^*oT_or?{o*!+q&GQOtTp3k&x{7u>?ze}s0r1aW~@LIVN)Lka#p zS%~`UN1*?o$->_lPZ<$CApvO#K}7*&2|3ySl9+h@y~I?l*cY=vkI;2O^|wbSB@Z== zGN`GyhIL+WuHq3(=0L(|Z*>^J_ET?Wm7)x_GwXKj`M1ZzXO0_6fh$_g1=|x#o+2Uw zwaje(+=qWwB+=b2N>SMrFn!Uq0GoW2SE#@cR>c+nEZK%h)8icsX8@opKb|`Ahs`gr zz-{a;nxgRL@LFgsFV?Dx>n+gB<>ZGZXOAVmP}|5Lw4G(lAk|;+>x||#ib)=XxJExw z{O6Q_$qj!NwkWs3t_}3=zB@+nA%RES3Z{xhvgLWD=>$LpC&!?e0vezLBtssq;U7(O z#yrhkTW{}<^WSdW8*NzimQ|Wv@^CPGilEiVri6~+9Jv&GS=tUX^fOof>IMb^`UfHZjh%ykajXP5{F_3v|Jx2@Y~ko=Vqk3Y zzlBNKzy2$Me~+3g9t%5cv4))|s&zR1L=+c~7ch9&LogbJ`Z`XS@cOJ&jKMhT@CWX! zz3F_TuJ4=Lig(_SBxE~Rba#+dLa&a>%8JU1OHAKX-4iC?so~HO^n=K~U3+&1-_AQ+ z=3^G;EJwGlHv&-(iMg$;ck*R&MwT8)gA z-@j!`vUJc%xMWIA6i`=KymD1#66z;9(u=_!M+hK>?(?PXj#(~noYx|^wr*N=FR#1w z3kl`cMB@G4gLu}=b5t)mr`Q8~CW@*w9HvZ}w^)@PXcHhUj>=|a%peGY zJf>FVIJtUq8)|SKc?=m`BIczTV`koQN;F20yhTk#STq8KNo1pW#51$pSuRi<)r zv03ogk!~y))+?n3?Zxzha$e!OR0<>c(mhyyQL7XGQ1N1hLWe=bu5qMvk!2Q$(W3Y7Ouz6+4CCgj0Y5#PrP#O4{zF$5wTJt2;jNF;r&`3ifijdfx7wy z&YwTqPY#m5qU>PvR9#I(I4j5y=hI%Cm_m5K*(9>kl zbxMd>{||y6=o^GZJ4qsq+F~EE=r=#s^QXYb%6wsdS3>@-1j;FRVL;#$#`lH9N9qH6 zWjAS#*?*YZ@HaG%RQM$KS3~qy1LhaGFXZ;b1dR@v;wFWT`K81Yq&CtOtn!f9lp)#vg$`6s-LR!18yBm$L`ardp(8 zzZuUEm&By?-g5Ta!iYiRNVq!w}3v5Y|(g4xq1 zUD0`ztB()Ff#lJQQ$b1<6cPiOCFzVv6R}#(d{mo!e*O{ZR1g%0Kx~8ATmeEo)btnQ z!ME0eR*tp;#A+B^Yeg%^SOsD+&8~2uRp)F3wH;y{Zf%htZb!>UO|35mm0dNJW>_0@9cn4zs{6w! zy-16=SbLKfbvqcT(q?7*T?S|Gt!vikfZ86nmiu-4db zEYwsxBfyMZ=SXFrtpK=+j?!IJ0%v9${^igM1>A@f+ta!AKz=PY_rjsi^_;+Et#xgp zW#E>G%_3?-_MuOmuHp}BQnj8)nLT_>eJ;FDiPoHQR9m}@cm4{6BcJSKcqA1=zT7mC zo!)g>%}`z5>e34&ZQqc)4CmNlhnc;WQs>hqwiP=0!wXvriH5-=cx7n2NWrifQDS+Z z(PB!_ScaK|3^u%iqiW`(bzYo~(^!EginGaa|7*QA%UomV&bAb<>tG75>LwL+fTm{Z;ksTWR- zjhN|uHu|`}ERK&;*C>Poju7Or0hr|iC_30d@HE5*#}+{SHN3+A)t6@bY5YXo%=_*9 z?53V(&?S5fGdmq@Qg}_dAzHVn|13Ppo)<>BV_;Ai9D$A%nohSKxH z>UreM*Ep*VZz0vvZf&{Da{yeg%QJ;+c65+UVhCh0M^}CU$j6Ot)c=^1nuxF+8V1Wt z{d61F|JjQ#%%Au|q)`B4f@lnAQf9-5FAgM4svIld@NZ+R8~i~ZrmUz08zL=1iQBZ= z1Zos^Xw*hW6%Jy<>E_16hn0zxVtdyCl{>=N5Q`>D03rxNX|zt4Vv?4J9^Iv#Mx5OBHP(_%1kqWy7dM z!EDKw&=nID^-24DYnCO;r-_E6jQzcC{rWRq(98PX0_`Nf|-&YaN>Lc-|083h+0BHIh)*2;c zOS!Uv`nfsRWfS;R_?N6p(EkIBI}jj4hcN9f>lUV4-|T4d7#PEXn7}91?&diI?PCkc zxjRrMXf-n?={18lpv?z@%7ze|B+_O^w@F8f7kfy>`NxvDJ>t_YqH)izTF+}iy-l6- zQ>e=Dx>u$d(ih*&tO0+GDU@0l^{vxi!t8x=WoNWicCq+CU&znr$8q>NC&f*#bt}c1 zvBhssHe{4^%w8GC5V{%7XQa)pb^YnMj#ZDwFXnz&fScQIbrUk9uom)-FOR4y2pz%+ z2yutlp@cLOwRvkh%O3ikZR#q7^vPJ(t<+1Dt&>; zA5I+x72{0Q-Wu?=_ET_7aOxEr2kyidKyeZ0)~aCa4@*XXFF&=?0o!{<^2VyHNs+%b z1;j!9T~LJQS3vKWWQLCmniyRbvA)iwK&|ef(&83@yotK_PW{FU+Io*j-VM~TCCaL# ztL~P}J>yY|6qw_ETG73z&Bcn%W%a=R*3m8iSi|l=3xC)}>FmLYuWEB%kg3_|MkbcdB8Tld$`p$g?TN;Vie*#TCbim&4$ZIVwegai z8(m4)@vn?-^)uWWc!&}CfmX9fdEr5gOKaL{B#IxD^S+^AxTGpf-+c*=dKhnEe zk(;5U!FR6UO@RuK5{eM+jCetOPW1kvU^0ZZt|pa6d5P?2LqToBI6J$IQaw;|nkh#F z&gcHC`vW?0y~IBy3Jd=1=F=lNpDh?2DyqQDH7p0Lg~v>{!@xR>i$4m#?z+|#ce;xn zeoZ|aam4}k=^tSmIQu#{6_*ouCbkP~38D+-2P@TjkU7dToi@BDkmXfVXf4}I;&3dx zMOj^?brac#xBY-*uCVO9fzo}@tl*n7y&E48u_X03#ipAENF&L48T3h;VBRSpiVZ}M z6&zw-JJ0!TX=}1t4*`B+6dI<>*&h!|VU>@7%$No!F2A6O%T)?peNL2jb707Xq>2a= zXi=QNz-N?*Dg|03^A2b86I6#hMr!$hNbjcQ>xh`L?bo)SroyWW-2`@-d649>IG_AL ztWMG|XWn}B@1w%Lkm?Nb7+QsG(s)^V%a3&857l6K#u^<=$eLqkThu^C%>#IomHR*^ ziMjsVQy){O$hSqBgXh_Sfs6Y~S(n5D4CBSE<>l%2ug_(8&o9QdS45s-LXKCXq~xnc5>@_v^p zOoHO3mZITlPNV$Cfo==Oi~+1|BZa%ADQ8TS7b{yEEEA4=G&)XxP4}TZ1=_}rM5RlK=nK+ms}1XLg@JuO0W-uP`QlzDDHZ4&{D_c|(s zH{XaML;1sipbb8=LvuN;)f(pdpLr#hf&iDs-GG8;#fyO976!I>FM}K*{!s|(-r#3{ z4bfUgNXYZe_;QH^3|*G?>wc-P+i8BxJ1SmEIkjaIrlK&R#3`_6rQ97mnR^X6o_LW8 z3RP5S=xL}+5-Crd_e@rg$Q&DpQjmqPjyu5ktPWnRs$$gBJ?W#>aiZx3k(`i{)9LGp zaM%~vu>7v%)0%o_Le71GXu~a(dyp1c@FC>)c&HicK|)z}kI-O?7d3cP26*Clt@^eU zo-DTh)04!?*04Ug$xg{e_F>+Bxj&vXELjFU;7#TdV=xwyRqi39Z8VC`V3@Vcr~Z zv}BY_e!_y|f^8+`A~4@QAtk91*$0WN^F?6XqGVV&_Uo5&DXHyyZ-1_7TaWJav)Z&u!pWP8ws-Cw@wXSL8mKCXP0PS-cMB2qT3&h>|6 z`UDC}PK`j!t8B1n1zo>4=nvm~O{0>8qrJSJA7DtJzR&G7emIXO`Zb&dMfR zhhLlb-+w7$XUr5u-2hoc(=#%#05BY*c^yFb8+8j!^1D zZ!~m0(_|>HG|r0ze#8#RY{@;M7>h&}r!pQXCN(T$8MU>@pVGDU zi;^FkejuV-oraYG2QC3x(lsXvdWhs|Z$z1(g?XeVvu~NJd4l2xO7gA4_Z~f25^Ya6 z$%T_JzCZVBB&1W5;5q7qhS{jZuhWbqroIVUKfj?kX9M7+&%_r`ZlR-tO!Gu)${Har z@MBPFIG|{ecPPD21hgRUnIM8#RiD0p5U+=c3R5$?=>gSy^35mpsC$iVlqsOZ>Oe^j zLRieVe5r0YB>6{2f$-a$_qrkt|BRl^5@2)s#atr$bk7Q7Q5!xLCJEeKOI4tH{Hra5 z5E(+C*DB$7z__!YPRwC{;#ygDx3JmolDJ5W(+5fNDmx0w!R6}-#f&JFp16xwGUiUo zwL0yQ55k=VYEE%B=9z08vnow|ddoNwS9<*9?8%(B(a;Ve;1$H#Z^*K{CRTFEMdc*o zofNQ}jDQzR6LNM8(oV=&>T9Ot3RupZ4qma!P-a}NDm^0lI(^H>*8t&qCEuZ-UaI5y zAn4d`L<>)RBGt4{K+YZ0>^if?LWKZcWjOyAxC=<^qzQv>QhG-O`wo4xH7yg37hvRIeBZd8 zuTuV<@>nthv`_$P(;gzG8xW5`_zBYNBdU%j$An>hz+A)6S^t|kZ^fK!0P5BWi=sZ_ z*>!B1z0eoI?x@bT(3b2|+I^nlX;l-Uu3(R=h=u%|fSuM%rCcNJ=E>69hOAPBnDRjy z{;0Nu+VfBsG6n@AZKDuUVPzA-B5a^DUmk-{>3~ukLH|(iNO}J?AOl;-c~gu+T#sU# zC^xn+J^iMk-oUyTCtJzBFx-hBs^B`#>Y2U4D`aSNPz(*^+bz6|27;hm>7-r&^ar~! zmMNrC)ixEm0vc^%4gD+gm?y)Yie;fSIdT=s{aMQCD*lyP*Oi!9iIaCL4^3l)D@S*M zwc``cS$S7ke}>M1zKZ?YU0s8I@7>4U0POp1@cfQciqR+B?r3xd!Vk*wA6rv*D*P(e zvT4~N16h;?*}z^IPiGjWlH;vk+sBA%PjzDS+k&>PF3zBm@ipUh;OFb%!RW)+br!7< z_Zjwgxt;CmI`LNdQp3DM$M}IJ&ZlYktEckCs2tSMN@)_v5k^Et!9d^n9*Z}!ngLX; z=aDo>;*ns7xiyDZymIpp%dG*u;n`XtZ0BhCutA0BirT$J1hp$A2qD!?t67aQjC?^7 zo4HS{7|2C$anFAPtbP-KR!2v^zi+tC?0KQktEca$f-f4sESg+$1y`FSmvnhrDUF|n zp+qJ8Euu-W#j7@2)K)cNdbFp3ba;4UjYCy#BL;UO5luHd2-Q&eF)@k`R~~ARrn52m zNS0E$`x2qIYysEs*vr91O6O;D3MiEGV6!U}0z#kY_06SxQM0T6*50P{P3;o1A6jRX z{Y@E>qV)>D$hx11#e3-ayH;k%dCEM6qUkA)IL4JoARdOK)4GFr`Fi~n8*KIzo9@uE z6Y-(|qM@^Lj+?1{hTG=a_UG9+_of2qxas+}+IuVTmVKV*&A+G|_Mera@<6xC@enn3yr_h;ITrH5#HXTcR#s&8^;yTI(eCY=1<;f`abTATs7k$Mm2$-knzp z4^BD^0V65Vt_cq0vdJ?fb9^CL{$%EgbL&AvhjYw4DqIT@?P3xd^#1b71IG3U2zMLt z>w z@l@tA=5mH&>gs(C!gd6#{$5G(7H!z<-hVFf{6t0&awDRoi{HIAQJNl2GX9X1-;8n4 z`HnH8hB0CU5Km7G@cFW4mZXbI3nVxsdgbNJqiF$%OFW5%l+4a6!#%o83s2+=<=A1A^Pkrq5`pc(;DWoc+@s6l2R4J525E9Gwjetxf*Vo%R3MYWg27P~g97fy0`+cAIPnzOQ-%rv8L&xk-N} z;x-!eT7fo&{S9&J!}1x-BU)275(UOJ=JJ0(B_b0kB8w?XroRZJj_wb)-A0iucF)o% z;NZ#-0-A`2^bp|`Vgq>wn!eX1Zn*z8ujBL+|78eC_dbO%i`m&E5p}pb%LTtfu<5S< z%DrB6X5}(b=muuQOfO*&05JAwH*XX2hDsbh`{I$Yhhql^!GH?&NFLJniUjs#HZ**E zx0BA3OX16xzhmbEsljEM^!^#6=|;Wf?8j|#0#yZw-rtw!F;zks<_wRu5BrJu>&;(- z_bV`On5aPIU3dmq|10D0Ia|8a+SIQ|&!4e*|QK(jGS0WyGRh)_t&gZsex zw3-ESaQ6eP9%x1e(LbEz#z?A`ro)@2<5O_V+oikw+N~4sFlZ5@I;JDIPJHpLBxXc>eXVLV*~e39 zvd!Z}cW$=isbZyR^%q$aeej#6MG%>JJSA`w>-vOzDC?C-np5bCQDv&!sV-*u#axKY zPNc3*&{m^zPOxbL#^d>Uj!(U)N395U@W{M3+pEPoi#erkMTXlBJ(kP!+Cdox=FUQo zMWIm*?8Y1TWh}M#d2>BlX=CA9$*I?-(d?mOGhCWAjGc_-6SZEgAybj-n|xp!T0yZ~!D zo4kg$Wg_XN8`4TUa_WY|K`(Qc#8^p;$xI@pr&MQp(gT_K2prZf^IIK$C%S8BXWnYZ z#&gB|#HW<;mCD<*$aL1%uHv|(=3g{8ABuQvTdj0?lP!bh;df!A*yLg@EN~~X2|Y*> z`qjFU#(W$*BQ}P|;)wvZ*W?x}hiA&VU3-aP*LNklqr~pEeq1?&*+bes%5`gp8he_L zFS6X+$#=wXMB{yF>!dYjL`=o2!cK&uBc8j?3t<@&Zf+q1vw6UKUUV1{cP20!!bnZCO$#j*jpV-Yy zg^cOtf&9DIn0{5)YtPG72W|7usY%0kNZB@i^vaRJ-Fn9@|1e)tpK+^pqXOUJ+-@V9 z>+?F*9p+{lkmmd(t>JHx&Nc*ByY$^>p$3G&B;*m7zYCg=us-BYSK3b@1r7&4c-I-? zFu^Wyd;t!LmabELK%q4-VvV_(2KqqeJ!7Q8$cCFS!nf<7UJn8Y0o|VIdT!M(E?yFN1)I-H>ml8Vi z+BXyu6ek7`WH{RJX*P6&vN z^k_$yttH3NkqFiZJzne;VEpXPWs9PW_oRYUJk5|;K+#(^D0~SX>c^6)hZH;0rw*CM zQK9AKE5ZdUzzSB#_M-jnQwhrQdxA@iUm{w2)`6d4^i34ShsM~q#2brvqfeC0zUG#a zh#IrlA!suBr)V_H2_rrFd36dsyqUh{B*kUceLMYoRYeS8Yg`)TVV(!_f1y}~iGO{H zeLr+-j|`8)kA+E`2ks#jfvWXGv=Mm%qrD$Z9oaw8#W@{uG$Ec`iOl>fxXA5s&q11K zWn=R&8-?%P(OssnSMW{n^AsCLm{EQ(cN-EZ%oLHOO(4FdldF5ggCF~l=~9mw;sRX& zn!Zw1m}_tf`YnV?500h1Bd8rg)EhKwSnrqql3XY#^qcg=EBzrFGO#k${&1eo;i;o; zB6G1WM=3W|g`BgvJUqz)Gj|`p?(kA354D$qToOjOyH3yRA(rh z{2)S!=MPIRzj+g0)lW>;!AT#?D(X-jK#td7B6h@&ev1bsZin0OR72-QokAJ8jW8m` zm0vw8Jlrj7GTzMQQ<>ec{Rc0clfyHy(>IRE&{k~6Udh(70{S^f-sRQQgV7>+pEe>h z>cIvp9^BpwdWPY=7>vZ-LkxQifNHi&0S7OV5#yK~M+yW9{R{j*a5$k07a0r&0Pr8s z`|of_1p)v-`@h5Ce~BXc5B%}{clfJG+O-X2KpDA}@eUig2C^ere*uE2yd)b=N%UA% z)-1pTqHO19?ERz?GqFT#i>}JeefaLpb&9O#j^!ES5y_VV4%9c-sng!|2&91_I$*14 z(K&D5y)N%)k?9EF7c`Q2p3!uunG%P^lNm!=LPqBUqUcla5$d7hzQ*z1~%QT_#Gntmt9KVQud|5RX zRG8rL-Nfre?P5@o%%n-Fxa?KE{25MvQTYjE^qH;7G|LdhWeQ}m#{B6(+#MtNi}H@( z&QJ`&jRJ}>rMv?mU8aZ7+jEYuF3ikAc&1ZFM&i!W^lpQb)-qAaHqK{4t_jIT-HsN$ z3;T!hHo&OW#$7E9_}{mM+!&ecqkR%Xgw9XaR~wm04&mRa1!@jimVs0>sTATR5`=or)v&QvGF#BM3Jq zYiuWIIq#nB%G~u(Y)|b&3qBW_A4`XSiMQ4b8^!~%_qO-6FOz&*v|56 zndMiA)M|DFtn~DnJ&!Ir-IlMbK)yMaKdz%vT`O``1-Z>hF3?+;3BDg!hDBqwwsV(m zT)}u@t*>4_jzmDIwaC#e^P#qQmOU-K{C|ejZ2F;Ky5%K)|JYc$7yJ|ive)dehfH2o z{dR{6&PmE@rPa*tWp@K1tB1U}$n}U60fzrPOZw%*)`C;LZ(ZjSEhy?;`^;}x{>E!N zf5OyW_E!3b3PPh6LG(j)?tdJ0)-f(M&j?&U*Vch)wkZ*wZrAxs#Wia&JSWqdwGkIo z)st=Su%kp`Fg&3?JZp!%;1Ny4TM~l!2vqYTgaz;c*b}@_xGc@0ZI!DU^$6Qa0#5R%hB_$LO)|A@w`%9LL&!x~grizRpnKqiUD7e+&wl`$Mt8SmLy|+qN&Z#kPEnxt&dUR$SHnd~kkLZ*fl5fiU`uGi()R z=L0%<{JbfK+d8?~uh1>bMjLeW@MQw#+tEObnes5*2?xq>E%-UY>y9U&i-<^a)`x6u zodNRXL9Td;g%Jt!q$}W1HUR3LwJvOM8a0F`7jjN$pXJU)^5niprPGu`{ zVudh>EYQM}j=tbQot)L?HJ_rsSRKlm(#?km;&YIAJ;?yn!kzhQb7=n4$3mT5s|i3cA_bj}PG{$aOUFCp1AKA;JZl_U?PJ14MR>KiPcNefUGqCWrg9-wP=#O}t{#eO|DQ&uQ7{ab> zl|>l^!WQ7|I?^??II3IT5a*FaO3eC2i>l>xxUu7$-|zil68hV)wOJ%a8q39I3Whog z;}{j26|-xs;LKpeO)3~a>n*5H?wTjs(M@E<-sY!pv)xDGJ;`Xa(RxCcZ6+0u8KT;4fW zo>~uC_vZR9qAQtWZWolletlTSoX~E(MV(ThP>TosRS} zAUIDb_bsa%s-}SJOC>ND$rT0p&4rmyHc2s0-z zGc*1Z1Fj%m6~vafvl>pRmIeh*qJ~`nA(!JN0K}Fht}+c)=xOC8@d(mWMd2=Y0g?J4VXXRTP4i*7Wc;6xFtO>gW zmHQ?V0bPSodHujdBJ71>hmAyibV>EOqq7FiUBuxm^sk?5j;wJwy`V=xMegi${kY(Z zA1LWND`amLNBHBDId`0g7_N&Nxqo{$_|y)Mq)S{`f?oqAR&)zKJ%XJf*_nF8* zM#0@Tj1LH)s^4bd`W9@PdZEu7m|+?4SFliB5jdBBV27H?4CzfdR7XFHA5QZyd1dsa zW>5lz2ky-#>oXypaCdnPbw(fP+Q=App0o6yD;41P+4?ao*0GLkALdZF6p_}AIdZ_F zAjvJaoXJWj@#{b>(PV%oHFT^ISAToGnqt^zuT1IN-v?|h**EWW`Z!Ta`J$At50-o! zF2LEIjSMf~9WKZnE^ZH&dUV*_>~2H725od%(7E}MN_p7x8c6?M23%X)k2qwXGkeve z>w~z9ocEORETNdmIauzdgn1^f28gt+Xw$T!MO~ks)|{RWI@=YUue5Gyc5c_xR&}&} z14szbf87k&0sCUJYc+2AxBl^*Fl-=@c_Y)ZW?Ls~sR8fL@^_r;mcavXP1oM6wPB1( zCE*Ery=w_sba1D|nUSuuF5*EL7#em$92zF-6^9u7QEL!F3KvWj3^xdHOR;&Y*rs5* zXzAx&srM5OEQ3fyNl&dVPxQ)hucYPJ$3t$ckSp_MS5-eAV#}VdP&Vyr zxwmui?mhWCKNwIG1qNUE++lZ^-rv9Bu8t3%wQGlT2O(wOEt!pFF8#Ws0gu2;j<_?c zumxj-C&or@8LTfGJWqy+iONQ>11osx2pL+@xdahEkSbGdyCsU?@a=H)7XXtwjF1L@ z==X;33x`$%Gu3fuYo}HuDQOtJlG)72@MGU-A|U~zA0ap0Xo`8i-@~54$(mk+I>K}t z+;lrggE$B~P)m$}QVOL5y$0rAF%0qH=eG`rCknx+fTMCvb16)sDTTPBv6|J~ro}Uda{rPc#Y1C#K&A zQ^rNx)e*`y;H^55n#?WqQyg;1_6*!6c!ZrMiz;$7xRAaaXBLU~9%Ym_vXhJ`i4;^z zfjLC${+H{e5I3go>vBP;pTPN3%gfzk%f>A}k(5|zBe`p7Stxu*%Q~qMaXlAbcRxmb zBy32qPw<1O{-ePg#u!UJ!P8eg2!aFxv~g|BqYzj_e7+*i-v>N2*qTH6zoRRo`!g`2 zTvE-`3<#k-OmK!TXsQI0{t`|r0Ls`^gL089CL>YN|GXa*FwILA7)A+Z&y4HSMrjcL zvNQMTQ0ow}4$42=&q)f4x#QN-*LMQ89i4?+w=Z?T z&s0vsS~Hy3!e_d(=fsrdW9RE^Tqwy^JN_y@AeoMOpJcSXfzuz#x)DaNy%p?W#MwxxJU3KXi?ZOtA#QFGz*Lid?l%m-T&cAIxxv@ANW3lbT-lDVUa) zS&d1@O0Kuox>1f(ZYpvVuads~s2ieU@rU?fwUylabv0+ZXrzvqrQEaYnR?3b4vsl6QjN^VdEuRbR&ml79uPth1RcCb+)WJteJ7pII* z(}>Ba!5uq!^S9FeW!`K(*d{ScapIlc)OtKN_R`e8Jh?LISeQ`mcxPIi&(d2&6P2Z< zwb5yv8e-7WWRy#NX-1Jt9hDioS2nJVP1=}!(E8(uNQ}yCoZ2UP=6P&2shyo>L(Lb_ry|R>qsnNI>t>glx~A7y z*l=Xg1_R_lKG8ygQX}N?)Yz>K&z=Aalq-tQUkUc z9%)GS%gHI|rExR8sFJ%ogzW6#qj(^au~sqZuvC}yl9rnzrLx3oK+8v0BlHf%03F7j z?FxOTU4^B6?xjIS??y$b8N!6Bzi_#Xlc)w>+Xdy}_|P*`ySo#*8CK{%c^uOwDuEaG z-Lf!on0mV1dH=$wJDS*{r>QB6`j7MahBUM0S=TARrhZ@Oe7eJQTd7a z5)-Gq^ejELJxG8t>SaH_n;rc-n$UGsgYHLb+f9}f-d-|@v8JsR4G z!K~St%b$|=fstEgy_fZBu%>!O1KO*ufyVrSxgGRk(4H;g7q@2kJP>Tl0c@uMciCL|J#N&%gge>5Crs+STFzB}o4x?*EtKZJpZ3u4LvhQ3u8S)I|D~!Jp&dxdt=l8S)Th3&lmddJm0y?gGbrti%()mHybJ%6r5?IN?_~h;-6>@e3R#r}& zt8>Ti#$=*3Bf7HN3kTen)Wui(Zn(?8#Z@!)p`qooE_Q48k>$IK$jMtZ0}q?RYRk{E zFfS0ybrPW$KPc^9`SPE`aV2(_3raCoQiF`SRI%u@ygUy!U9@ub*y2!99I>~2uhM&X zv0L5@@)Y~)PZ=t2_%Qn`H%3SY&)AG*hRfGs+vFFY(6of(TgDO4h4p2Rer}*z z-om1&zfJ0bKTE$GWlw!Q{kxrDlNwnZ9RtOej%dBItM7i;x(?0($JN?70erY)O7Jrc=k-y}_fBc4oWKSzcRqUdyVoB6x z(R=s*1kQSL?;w5i3qRSYki5CK^&I(BscucL#Gy{^qKVuNp^a>8ak^JI>U2v_>1Jkv zKd|1$am{QPlvy^JPJxZbA3DZwQx^#@z#b@sN!A5>9AN-XeL(jl!0R6`9LACmFNwRU zWDuFbXULm=xoxHn+lEceKavG6KSEL!z4ZsMLk`Vg9){4od`@k&Y?&8a78WZ=#Uuo+ zG}(Pu9`YVzT8W?J%&29C&=Tr2qq|mn?LEm{4_7X#dW5md*=E64DMHzB2ael}Im9rJ zn}&nrYHn4;^ud*F*CsRE>3qq@p&&x|VossjBa1*cu+<{~8I>g#=x;)Jzln7c_yX&y z>%ZVHoOP0HpT{XmX@Sdm47=B^>i)TmP{dnB7e9RNYV-5Ip|<MTV`geO7!7dljbv{O)mz@z^u>u(`O6cTND^uk{p zLIS@bNRZ#9Mr5{aZ2;(Gh&fPD)htgcL#+MhYj$wfwr(#16M-Gne1gqcF62;2r#Ot@ z%AD5P*$D2I^q&t?D!R44LtWwJnbyH@kfLGkRb9z$Q$^nxFR6FOzTIOe2$ZsHT_j*W zQG~zihuqI&W_y=evn3WALF(hT;B9n}bmAnpJH1py^;FT|Z0STT44U=+sygBPYg|nD zWuf_P)c$()%x{xBK~jd*bLuzg;{h+l!J%P%2~lS((?Mc^^mKg$HJ9pTVA?>~dz$@b zFuSMRvO}ftihCgNI`qZE%pwE3`j8)B2ez|R(Ne{!#QKc;Z#V%_mLF_Q8K2>Q2`C?4 z@4tTK1Q0$5y2R{v@B8*6_5ygk2thY$6$vWG2vDM9?*t;@1jpq|?y3|;4)uVs{W0ll znA@`w2~)g|;r36@0!89`X$Sk4kMP7KI7#K~WAj3LD!p2nLGNF|CJ}M1c3%Q)^j#`V z!)q#zDj^j5XfS{E62qh@fB9RIWB?<|f7lVjDs8XKlt|5K!KV|fmVc|9dE)z-l{n?I ziAggl<&Q(fe65u{CEP|d-$Ow*HS-#PRXT6$oW6*Bmve^_cc~EQY(hXj*EDNg|L(L; zczG`hdKl3?%u<6=Mp>YNg30+O0;c|PSO6ySw$DFEoD`5ZH-cQ3@v|$?8PoW+6ZKO? zfJsG3M3LHoZQTNaME$~`xLub#D)SM}q`YD;2#o|t(BJ!Zm?b&+L9_eqGUFf#x8sO< zh&c%>FhTsYnLtH*oFp} z)xDYAo6%x`=8i-1M9)BSdopV3504tlS@PIO;4?lO@i~W5u$Sj|AB4ZaHscvk;zunS z(WKj5VR;ztj@$=EcR3?SaA&TcBmdhq5#zfj28?J)G4Efvm?YsU0fRkJQiq{StqUXq)Z;Jii;T79@0YC|a7r+9( znfZqS^!%DUmS@jm*&i;Y+k{*@gHU4a#)>8Al{GTZdc%TL!TTV$FEvH)C^JlfaF!ua z{&Q5T>a^^2awYazxxRi4EX@Yrl@Ybp<@^2I_x+-Kd1G`MQ4K$M>I%}6E3fm>&HEK9 z!^QH1K}Rv#f?WLL%lTS2?DMap&hADA?OWP<+3>jRE&MHi4HqpjCAacwQ>(&ziu+;& zp84zIxMR}Avt&TS2%lOgKcBP4g||wIoB06+N46FSKL0k>+n61#y^OS4kMY&ZQJ!!M zjmX@^P99UbyISsZ%aF>zKsA1p3u$N;x`-HR%Ws5blay$M@wrZM}l1e~ouQ`%?9De+Txsk9lu*HW0;M4&n3ZCABhsUMY z;4C?7%T{|Ja3elJ82+?Qu>H*I6CcF=$~qoM@r(EXB1?tubujqD0>On>>Ft1g#TM+8 z9j4QQ!KjG z>mjZ6_o+J4LpqLB(G~4sS>#CSJ8)_#$4h0DvJP+RRD-pK{Ob2#QmulNZ6poM_w}tEQZPHLR(`t*Z}#vE{gR=;dy^ z5-@U<{FQGa1>@N#dPB|E@Li{i2==ATA@_|Zo9Q=6&_64qD&(e0s_AxOFHheIT*omz zvBPldmK0t`TfNCjIW*mgEoE{QTKu3OCeJ%npP{6F2!pD;!i(qY5d1hx;kIw~i(Fw* z-4vmu_iV>jm~OiX=QtZ0kq}ZC@uiUn`Yp!-@s#`5aFx6W2PyaVoPlBRqnjaiC1ohn zW`B@EmK$IZSdr|=wYltuEnCVKS4I}q^Bz}%I4n;rj8^xGLfjq2MM0>P{ zfjy|FE=985D))PFJiQb_w zt|euHW=Dov<-+tOCS?<=YWLcNvnafQHW|JF7VU)~H|1AG-X3(G-?S-@#}pZ*VNP*J z*iGD{wG!MJ5xcDbzFgbpAY=^5oz$kTf~WPf?a+v-c`FvM(F5?9j!GLvMWg) zRfVeQS5`dN4<-N`h+^rWu3FENzRNdR`_DrDxK(d-3m^{yA3EWA5#-TtK)VizB8S{v zGk+gA2raEy->RAC%s4VYIGdSRI4Q+&NJXPRv@rj>6693t?=WveBa~Zua%hUgyGUO; zz35606&|%M7G?^Xd%hGytL<(T1T~rI7BrXSyT7+JOv=3lG@3e!EMAtdl(7>t3AG}j zf2YCJ0m`ae8P92LY!5Vc*guqNK5?=`ZHDyt*z_VyWvXmOe-PL8Mw%ua*EUStfzj<&GRFT)wRSX+``!P;M?nJ6}`^Mn0+gy{*d+ip`v?nYVs`5AeN ze1iyol>H~i>!s51wt~)Jxl{6`a(^h2+}hBB&$Ef0F|0=Mbs%OGOTC%C1nU6_Y|o$Q zrPq2(*{YRA$IF}4b1Hbr*B?U`0C^>)4ArJQq34-Xd*>+bQx!(fblk7<_)O?u;GCRV zea)Tnisew>kH&kRBlv!1hQDp=t2?1KfnxYgt3HC**R}ZiP7lliy&yTzN?)jB=Hi&? z=DJ+1$R}|YSXCY7vF(@tD!Ue4YPJcnY;%cl+M$z>_o0()#4&lXlS~aRe{NY8E`(UUxlMPv|4T9s# zfXCKp%4zmcsIO8xYC{?(5Dzemj3$#cGqOe zF6^}6s13RfLDsmf?&iy~7WgQ6Q!ZyPGm=wh)KZQmMPvHavR0&=tL)!8m+_CqnO>(k zb|>R7en&P&@(Ji;K2GrQH}vbK6zq$f)SCl~4E02ih>v>=Ldnct00lkbOQKn4C-`8n z>kMy0HYdI$AP${~6JEPTk12J+YnBnWPI{;BSNPsKqqr*;^+kx)3>L}7P@L)jbD_nb9RKp}84iGCrfLhhd zS{ZVjm&-QF?DZ4~6z;K3VQk;}pN27Hnq_#+!dIA4^I0?#N~k^aS(-o3rjV{-&VUtScIYyrVT1Rar4m|#of!o3ayMo0Pa70{M4W(Ojmz@iyP31o zL*F+*Hk;46D;A7}cgVs5Ct!O^x#b1vqL}D-_BV|MvrvbL=zt!w$bN#J=7Bc>T#7P( z5cvT8J0Q8zu<_O{TWhGJ6tDB^bYqJgVYkMv5F|ZmbO|m6>t)DL=C^@_&*p}ocsmCC zetWs-8?TOempe~eIq^FiKN8cY#f}*2PAemqONzcdyV3OyiRZTpE98~vnaQdP`xq$|`7jW7`D`UnBUkFEBFb3OWj6rn+=!((YbB%Q^&M-+ zdCq!aKlz=tm~KvQzTcN5vV>o@z;bjutuuz8nC8BtQcGg(Nx8`;?MeAMvzg~F-(Rbi zY)=BJW9vG5*xHiL(*Sllgzu&{D?6E3{zCw2>+;>Z+?es^`x0U`Xd!i*2OIF=g=nEt zL;wMF;JzIrabpGW?RES;p9Nl!oN_=vngkHScN4=m(s$@ws6lK)>o~w_>jB5tf@jU( z%fEoI9xgr?2H;mZqb5qvSGC1K*Yeeg#6X< zbA3=p=UTNz6XOezNM%~nj7v6l!WG0m{Mj-kpw`uaGGti3VJnv+;>S#8osAE|ycoa{ z)2NZL>NXiman&ZN#C`bi*s(}XW9%g3nKWm;B+U-)fq7$z9GQZ*q+fRX(L);`NwK^J zl2bYtcp2b#B6F}9Fb*M?(YlA!**$#+afS0* z&c9!*agXtZ3Z3>O3!ss+(GdUAJT}=ZoAw}c@PV`JTKt#h%=HtQFWoL z)w)4x|B0+`<%v&~b7l*Q6=N*^bZ1`et#*sL^EUTA{@}?QSShSDmG^sgpjS<&dR>Q} z^*ZU%OS8^z6;AJP2)j{OvshO%^xi~f+QV@X{i#G{lkLD8>L%GW0#niK! zt64%xC4O_E8-I+;F5JJVom;TUhMt1P>e#~1_cImjq+8xS!1Q^Y8&vWte?r86*ps~X zPq4+$v*cJm)q9wD7K4cwcKw9$VS=>l)ec-bSYagD?VvvVC*okc3=q{c`H0-nHVZt-k%g z{|uk~X=L^Bi61oxv-r#_#MtMo^N<%30Jj2G+V1Si?23!*>5BD<1$&YLzT9ub-|Su< znKxcFvuk>^Z`IHWc}~$r(_rmU`8@HHgTL#?!Q6wjWIL1Fqe@x{eg{^KqNLwF350(V zJ~0i1dS=!pt&U@39cEt-t}d255jkslfgbh7u)KD@`t+yG9+|#9g zee1Ah-RD57W%u!iGdr$MR1V6_-v3hJS-bwy0{f}T&!Dc-!_|js)J2bY9#W*X zXnZZ)7P!Bk5z7MfAOn)QxBuHf)vujzOhbJOMH4&)A7RNddGtEAmNs! z8mA85aGSTjBVmtH{lERZdMN0HgmV6QDCLfFzWhxAY(O`Ymfyd+sLbAYlBP@%$}v}`iVC=_k9lPZ6P$B zI++f!x4nR;pRp;iJ_me0v?!Q8Zr;}my^ha;lu>wUa|M-yPWy#?P5vH+)(Pbd7yjNV zgF9o1kXtqma$3*kcorUUNjq!p?GP)xE8XE`V|$R6g7-`Nz0G+J2ji0@WxO-I>M!TcSkjyXA zSm~xzpMK8!hqL0XT5CQ`cQYiF^Xgle;p?a`g*nm&H=L}s=Y9jOgVXikUEK8>lB9Jo zQiT0g>Wl(#ZaPsM89cJlU3Of-?2-Vp5YFj0QVM?mh1UZ)=+)ksUW33$HHyWA&ZdfQ z@8n4Z;3OaZh-;gG8%q&=RcE6xq~=>s{ibgBKyP$e(7Ro4l&EM!W3}YH6)_jZrx#ar zE*yJ8N=4BKRIb#eqIX##CxPIh5zfFz-Z;-yP&hK@aJYXR)Bp~0WU6mG5;W+Az7I)) zv!2aV<)di?F5{=^WPDC6cazJO{2<|9NdYUbY}HU+3IUEge>wSSckPf-RnXR+bL7d3 znFGGTi1owWbqV7ZoP}`)=mxqOau0!x5TQ2Lm=Q(4+^`#JF-~6sVX!(}{Cr-(4!dLZ z)`6Rbr*1KMjW7%U7yFmv?xKgF|3=Am#B4d@0v4;|Sc9-fr$t_j+J`^cnFe|4*HCt4 zVbc1`5l87iCw}yq311}H3A>R|5kt_*Ae)&KvND>OS567u#T2AF9&z@@Y2fDKl4k%hV47b5yr}>@EbwhG?I6G9I1#m>xa9KvmB1QE@)PR zu+@rdb@o8+&tay>C(d0g$Aw}-9poBlS=_l`?wCoIKaxA)_a>xOW8Sz?L<2z(p6hFF zgtxcG%J$OeAb+3F>5{|Ip*Ns0b(=j;Ct2-DeG_n7UP7yuTd0OeK%^v`=&>7ncI`N!_%onaPRJ`?gnm%X{X$hnd)E9&-1S_dt*u-` z>X->e8MW}<2S@qFK-tTsO^vlqjwz!m@xrN^RqNv=#4HH<7rb#wdgL1>FkkKw7+DCg z8%FD(m)-+u#X@LF{)kgr=ZE_hUqsGX6c6V(*Zz|(EG|hCmG2_mk)WBsAiYz5-Ldwl zRl!WiJ`mTjzx`#~LlX3ewYqpdUITT`oot?_S<H54c$*W8$DpfPXjeKb7z3%HCXxN=B+A2!a@4kZc+;|1)ZbrxhG}=y? z7;Xd|F27D}dib&w!Svt(235vm6s`wnN{O$!UJmopC8Kp01|b=DaH*MVm!sB{itEb> z?MX|O83(axMllmB(QG^9k_FwprNlu3j5t|&ado~B2o^e%LhNZs8gEner6n5VYNfj1XMlCw;x{%Y4v+RMmZ8f;A zEL}jtG$pe{Gt4Cn(;!J~dTs#-L0^);2NIBq{H^)>VS$|q11EYR z?C9ot`aQzHBYB;Y7KT?pC$f~H4p;*~krDVNnYx%)^d}W2&UJ{! z8Wftcxz(+TdzzWpw3`rKD>|f0Kj_FS--~?VZg_7WzLMj-`l*W$?i?**0~_=}uhBX{ z7pc&{K=I{>RBlX`d=NHE-eD0jtXaaMl-Hj&gnyeNFQrD!L2Wd`L8Xy6J3NzgsDH8M z0DxCwI75P#;&b$|ywBF`p!*yI;TgKSbDQCCoPj?M&F?YE?)Ml>^^N7-+fdObKDC@j z9Ao{6+k5{sR{DQg?L3%Rf!49I(-(V}B22GX*>W-qfggD+x8KdwmoW0s49ViswNlYc zoL#tmd=87-soXXM-5!qH)wYZ2MWlM;D6?^wBX~b@c?u~3xM8+;r*~*avfJbe)`p(V zM}9YOz#kVwa+0YWQ_v=0!+`M6%J)FBP`dtj#qHZ6(m4D zW+YmNNWikWiw|6>PgtZ;CDF_V`h9 zAY2}I+#1ryAdw;_CkKT zJv#R$sxz7w0Z=L1yTn0G+7da;wlk!7PYD{#I`22^;7N_f9m!>W;WomilW-fM>C7(X z|J+HMo|1yzQ{te{0?JQehy6FkvsaAvq;g7ktfI}p(G&;|+7?U`HnA_eIX-76TF0VH z$+_r~9J(Fzwn%g+f+xSTkL`W*IXs(*W}>JfZyAoBsAK9JXJaG&&s{g(kKa`}TxWae zByH|sq=eXGZVcDC({$NKBtFMp$Q!p$JBjUWb_JP8!3Zg%^r9p22gJOiBme#-GN^%? z8jZ6%J4H%8${F?okiOZAkf-+ISp+LSa)1|vj0hN8!Aj+EJ9Q0QwzwtdqxX2@oTNDE z>ngh!`#XV@4q@BT!Gsq}7zjZnzal{s7pF`x?MeFvA!oKX0Q%&4S)Mvd#f|Ki#f3em zOsd%4HkQjX3VyiC4H)sJsw_wezqdOTl0j4cVM8)*WZOMVZA&CzF#YV+EIs&gmb|C^ zlnDzVt-TOu&i~my;jR^awd(nZvlJnQM|--CHQS1k0*V}R8%W+QMdb)ToQiNI_XikRDbV9&2os14 zuf&Jf_a)8ZEVrN=hIYp1%qHecKeO6fXF}zg+Ah;_Al4i-hL&b?^>S7#GBf8#hghq< zn9I%1`+eoHLw)l@pg_LVA3b{MQW@y+wbT8KpXf@CE_$ih!V3wsPZeZ?iQ;LE-qhK# zpwKMm>@{-fyBL4!wGM%DyftO=#pVi?2PC9%6lUm>#=$Iv)iYwBo^N{+Q06SEVHGe7 zN*EBs*aZmW*_A0VuhW=QBy%H`j%4n2qbijN(mPK(eNP_iHsCU5cHxN{sKzl9{0Ou& zf_Hg+1n>2~F)62cA#1XjA?1{(=me6JG3wYL6pTvFAolfCym+>p*f}pcG}@Oh{~f}h zhc2DmGEXgWDpLYcuGi_> z-x#HwS^UVMn?|8r`JF8JPn%5Tq?3*=a~@xCEDIHH>h4>J19kD8t4n^Tj`Hq*=T@QZ zW_tJv5Y2|pJgJ*TRk%F)JYW*(we!^Ou~I}*ph2pGFyNLJLRM!-7hW^8rx^2F<6EZB zRb|8yn$&?+>gV&BKhfT0N`S^HFT4jFLbdLKWjE$6eT;F#ce(#vD$Wud-2!4cqgwJ; zuWH%pOM`zJ7W32-b@fH12%RD5W4u84zQV1#Y(_c43X5$x9Hs|A6&KCBwu9+)WIMB6 z`StZ6rWrD!7*GwYPU=h*!1gml{_BG9mg$}7v_N8$bv@%?8ieoTcaUKZ|EcovA{cSl z1Nqwd#Lif5-0+^Fa&N_j$ZsGEqs@OGwm-%j=a|V+x^~psQ+XsY+#ZZm>7`;~TL(wi6%fdTfhU{BbF?1-mVzHi?c~Xq zpqX;*e3T(z0fBk$k2EJ#e0Q&-8tz)n%5ezCn{?fiS&EBE)661NJom#fUeECXZdW1q zwf%*#eD|i}#MOt90S~>9w7^z3vR#vd*vs7~SRU+SSW-Pe^*LyQqq02<92WyL8#FUp zKJPeI=NWoW1-N+GbKcm>*2{MRRIwmZk*hWrU@5H7Wnr==Pr=m+J_0~p7hZ3%#+%9)gi3)Hh|DUbEQc)^*f);m+7p}H zhdyj^WUZ)QIPY)R4Cp*HQiacGehYZj`>hPLrD^7Zx=8g$>e55}kt2I0Y@!Q_ii)Zq zdK}NRj;sx;0v#g|j^ZsDG5MRAuZ(3Kz9Hq*Zqmg8@-h`>EHh6OE|OsL2a1&si5SY zomF=x-mbjcGfI@j>zfQh_0unmA5=131D zx8U<_cUwi5uO}b3Zup6kdpZQU@rT%i7l5$@3uJd`J~W1>l4t*UT}pW}u5L3f-XzD) z=IZ6kV?z#)!nc{}keYv(7Y6hQ?Fte?H{>4%G&9W~xsP%I4|KCF0qY;#oa)o?{*~yX ze!_h2CY*$p5FS5*=G>XNlb-Jq+xuuCS+sElrSLNADK{^1CU;i~*TCOV{+I_+qo2|K)*pFgK_NDIX(bI$Z7%Q$#NGCu zG7-6p4!z8aVXbCuFb~9yc_BrwAQ`XV<6yU)T&V4`&&ylmivO1*Ndr#p|LANxJ`-m! z?>uEYn@NxqyU;{Bw1auDlSWA3wmI>V{eg*&PcS+rcH!o9MPt|wJ*0=F@k3{xwEG!->yRy-IF|YA7^`{*+P_G&t(``=g9cn^&YAvz zXWC68P%+YMruIa$+l3kgwPPot6y5!C#@1KBC!okyoEaPNSJGsrb7U@r6jgC+#Sd=Z z*d_o3u($Q7LaZtBoI1*%?cM7;rE!QxI#YE63*>*N_FuO8gyVeNkr!izbW=xJW>I{Y zk<*eu?E2v-y5v+%vtlUN7e&B_b}&sAY4it1(FX_xMj_fCA1_CJSB6>X-t3L*slOL_yM{%PzJeA5{g zBm>zv^2T=M@c7=nR%ky*FM>bjNOOjrM!j(k`Yj5Dm?eut99_2T{|=eKKvw<|KT?(bjksf-m%tX& z6o~6+Q>J8+H!oY6;hKJqFp_%1$Y-Q7cn$;WDScPtzLV0;Qsaqq07Pd*>)oZEu=eaJLRQe z{!3|LDH5+h4lo8n1^@MEw)aa$yRsBVMsxdc9IHhkmc{i|1fv^Azz)aB2l(Is+x>K3 zLhRPC7xJ$@P(~$$`byHa8FllvCzfbaBl9#+^!>Xl1WnU8y3dHV3u-78d^m;EnEDFO zC7mH4japz|NwMxcf23EL5+K5<^DedP;G6WoV`rqcCJVAT$q@IV4JupLuBoR&JU&O| zOCj~#D|q__Jdjg1WzSjl<%#8pch}VC3$GR(#gdM<(>gmuhf3k13Bc$Y6yGM!i30Yf z3{rgX1GJ07Us*@FUrs@?;r@3XKsR&X*SBzA6T8_$W9OnpDl-I;$D?>ZhVf0#1I351 zX?kqgObF%ir`R%z7h{fe_?fd@GpZZX{&(E%AD~NDe<_yvV!t7iq3x?jrAlFZZF6^A;iWi%4NDn-q_rE+@kl&1GQJeSLSz83NN3AyEL2D={Uk!D`UKL5#uD)SD2VvRn!@13jpOF9PO&&g+;m?P9Y;g)cj#cnBqW;n2#jwM) z9Cjmr!sT#BfPip#b4+!=sjBPOS8i4#?-8jh1sD}Kf4j<{w&ViNI{|69u0xf3~zQ&@MZ6q|6+{i+JnLOK(`M0;AcYo}5;!s~3R!#! zScOAj)BZ0f&zf|ZzhJ~3*yMpMfFpu2X{V3#*8!AhZhpZK+!f3PMxcezI_vTJUe=~a zaRI8KAPbn_iyqQ3MS^ckj3s(W5HIu*?nG@37g&46g!!*bomC=^V6AV`}6_ z&m_j5G!_B?C$gNf`A6JXdOhio>4{r7ARhg2=lH95%PGJ1)Cfw7iS4*)^u$;u!EirZ zpC}lgW84GXb-5x>BhWA;bLH6Q`Yl=e*f|)Tv#9KQxUSy^sl8tn+5v{!*rT%D6EH*G z9{)+~(VJ0_jkE9RR#Bg?B(vmmMphPqGIlTQC zg*OuS=3n%7%f|eDw{uRP{Pq7eZ?=Ns-$|(W)iPaQ+~+`_d}<67a5D>WGNTUy{H&5~ z*QZivk?q}U>9`V9iP1?V+SW?h-Ezp@`ZvMDhKG|4nK zo9URq)v7@xXrYdQrt)-s7@yNW+3aRkri76cv&xgrhNzKz_?(GrjL&HV@%2KEH9vN0 zSKde!iK$nigZh+U0MbzcgpkheRWqdRAjIfsf_wgZUdf$x2K?Q#aO^?KMn)&^2hs+n zfNY;=18MEwabinS^YtJALs=5EjU9B&AHJ{PHWa1xn>i9BQU>32xPxb~BMULu+(V1t z`Hla@_#a5TKJs|>>UjGVWZKp)UIBYPGxI1`=L|etyDC%-AX^`t+w;sHDfy@8R9^-J z$RyOB#&KBt<)yh0$#p}>a;}mdE;&vq8p0eFciGMOJ^f2d~jeU zoo4#|`@}gdk8BeDfSj`5Bw=bgnQsg$yc$QP|_o$hjLF|((tS`S(irCWsZV=a1!RIeuE%%naA)U#S$I_ec zd%B_yiI?Ziw61O+YrB#e)S!j7OI^p{pznrqTb}2DcV%AAeP0I@*i&xWM)yWg@4j| z>edj(Tyrg4m%+PRc2)03qjH;o@5G^oUoEg=1E_; zp%T=4NIFT<+LFF`4qD%sFkpz5{!F9RE~G4I{Qk6eoc!u*=r;WU#ce0G0$X)%1};=w zt^Hm(*O~N@5HS^UGY{Lw*`zXTHmIGi+wG<_eoLJ z{?ijAI&dGoAZ6J z0kM9H0dH?_+A#N|b#-;4BzI4^P~IUR>a^>MML z*VX(*XZxZ$S1L2~MzT4hE8v5Mj+QuIctr9HCSX<}JT}pM?m4VBSEhd~?M9*6($a!S z?djgAx-*TMsDOZ8{UX};jBSVOJ}%ERQ==^-<&2_(A}0AC_x#=|Nh_&(|2{4$XYBdZ zl=!HxocgU-uDC4ES;ytJLP-za=Z{G(6(?o}?hh%K!+q@IsELhH10;k9jN zDqLTi8lHJ>Bp)w4Se@_4yBI>u*|b=E{_e;@^2I|~K=I|ye=60k9)p4#(h-c2I0IdB zwCdi~ThVc(!Q#x?w7Ewi8%7_Wt*1J7HgOvpMCW^`&y!*mEdN-WShR!?#6Oyk9 z`E1sV+NuZD{b$^D499u68p``-QoerqYoM`PVUihb@-aqCFXU?M#Lt1#z4J%cpqpf8Ckz!AR2FB}Miau@Jk@lFj*RcN^Ze;7SCq(^aNx#o3fS z<3Hl;%#o{EuSni$#^{DHuDlo{3qk$FaZc}II1-{GTTA?Ki7s^R-mDz{8s!*5le#H# zrEPilhpBXK+ZTlpu0VQw(pYP3-CX0~oyw?)H8qLH-Z&sm z&&LbX6^bxRV(12g9-ypMusVKS!U07SzvA$ok&nyvQsmMliTb;kW><3T)N(G?&p8*d zzcr&r6n+*dT3ivZ&k*)uy~K9YNU3?UlXxm;nC>O#Tz|Od)U>;K)GFn%UAIU4>GA;d zAcWAfb5yJG?j=4NwIaru)+@DVL+L|+j+E5REPrw&jVO{vHgt}f)R+QgK=k^1I};PT zCOuzt12b~1T2}o*=QMGDMoZPz4Y3^Evo(~<^&JxKdhFUUlK{N18Y(>XLVS*WHn%eq zX9-|VN72TNek`qp_W*Gt9*Ca4a3fCC~b?55OxMA_8Fqe{kk~gN8l*(cJ z+ys6OV|7w6p`U2tlC(Q2)9<~$DYQHBOaUv}$zLmon(u+sqWzKj^$`7F@1lJQw~Zh- z^j~uKao{nQyr&hg`MWk8hfBCQAUfO0W2txD$78&Z(xdt;gx0>XmBa%PbV3CyVPJ~Q z%{Yn`B2*wUftk95yi37sJ1wz-90y^1xIo7mUX+Cx%9{C3G)2DUFNIsjF9fndAL)>q zJDJc#v#rdq$%GyeMjo~}pZJ2xPvDnOHUdMac$9^>5}zXm?zi(t-0()H3~ur*+-*R$ z`e)({;G#2dddIB=jD0C3kFfV123&cS>#S#D$+%Rc0R!q6o|v;OF24DGVh+;R!81J( zX9=iIVlxm$(qO&@NqLtdvMV$AAC<)C?4DDI^ugi%ap`RD_>1S-&L=F4$GHN}L7WF~$$vFQXAVk&)# zl%zK6`S!oNjY@&OA4~*T@hk4KDU#V?ycbiViJ4>wQzKIfO!#lp@wKE`UGmO+`(#<{ z(5>tA6b>o1NH!Z6Eds{pbHd(jT#mj@2aTW;-Tc558LV`CCXSC06Y!A@6YyS>1eZ`y zewX;)D~Zg?a-2WDl%VQGBWqZ1kNL3jJIWie7JX=5nr;7SKU2Q#(uN4HH1&M%Z z6~HV>tOrtAyp)1s&1mdzV6-DH@&q0W;K4z4u0lJ0d1fDrLb>0UWNbRxUv|B7?b~DS z-ZQYk7OChpT&`(+MeGRU*vr$XxN0SToJ^`_l?~n9yT`isjkS&TmN-UY4xq!e5@G~N zT5x+nQC|OMs)%Zb@PTg%TS_TMI5L0Bk?A_V;u+6b58B?^%Fzx*EAa`$<$((D-J4ay ze{XT><)dU!PVW^yOg-f|b3xnp;pv-85jubK4=80Ld}RF~M9Bp0=xfe@Q-E$T2eC+h zBFTSY%P2?img4q4Cf(6MA$=3K)P@G)_)p2AMcURMw?IDRe{^Wgh7zCW5g&uJ)R!Z& zaF&h#RVAOV3DX7bM0jrGlV)-{Ta-F^QdWDrpFv03ESKL)Zz)@sP7uDf_eMNJLM%+Y zDbs%fu73BdN+?xx%Z5Sdmyoty_{5h(Sn13|*ffy|H51JVSV^c67BCh-OKWatAvyu7 zzRog5{ta+4^jHut+_pZ4=X^LDXkyhmA`sSj+>*?+nX1D09CuUXQQuF2MkdkC4<{tV z_Rm4dkbvud(vp2|Gg1G17zW&?dU>}8Xwy>en7$9GvW+U#RxR3e<(d&iP)*8L!{%M((@B^IKnv*h&{9h65SYv9{jXF^L<@ zkqHe%3rW%_qV)Fl;1ZkBX-I1qUhuylM(OB-jz_I^yu(cGV`Frp_;Z4EsGTz`$wCB; z1sX9q!{(z)aUU-;F@Rx9@9180?$TnjKJb%#^@vA_~d!-iae zX0{!d9p<|}AR&jFkusl2AXKQ~MD7SAMq5{%;fGD?v8)qYFph4=FfWJV8@*;JqR|pcio z{MMPAY-V>bQZk5-3H;A&_lisoLeAbel^)Ck31-USr5Urxzl8Ud7k|-C1n-D;I;7-> z+tmlz*-MH=9q;EatB6pv5o)=0WZSJ-a(Qg{l77`Vso7z>rfDQMKlztFOXE+>U5-q% z!j44WuUbV7M%#{kRvbE-HoeB|91>^k2>(sstA~3Diu zJu64_mAvoZ-1XqK;T=Dk5}TIPfy&S#&bpXtoZR=EFmfi$OHrXNkb5F?%|`l@KVoY>-> z?VgK^ZeKPY>ilE=BOx?{F=}Kdr(-j^z;Y0_flUWghF%_9e7&9C6jlKMku2Or;_#5*5)GC-u!$pEFtz`DQ;zmv2pTwO!IvW z)IEz=>#m&G@ng?PwSUkT4Sk~xC%ur-Ggl)e#h#6R|3Q@fpsDA7?Yg@UZ=Xkg9f;PC zq_vJr3pMdT%@f6YrZwj9OV`#^l_xUShU;$o0yyB5xr$v1SXB)m@qSxnwmxiW|2ltk z!Z!q?Q-vWd#ml~e4?3WJZ8-SRAAJFncz;g}WvSzU=3M_1)%2U4U*|>GCmO7YO@pq3 zqCTDDe+)|DyWQvQ-fpX~?QK|B($mUn_I-O*++@FQ;Gl`8>UlN2t}h$O3u}KowgpWF zel+>??gT;q#h=*=YjbsrsW*P^Cr=WicgjT-qDjA7v7gRX-KbkNz5dTr&91e$0CT|*Mj@52-C^;`7hY!ERZvFFl`H!$y{O{<^bv}QlV^D8ikt@zTl@DiALW*Zp z21RG)2g(}*A98;zo+W?IC%ZIclNaGX;a#Lg-!CN}u?2qK9rJO&zmWr@zFXLDBw47| z$<^6>?Q2&@Jxvs?v(}oGXMR`pzC_}XP4@%$*^lWcQvcmk4Hbb`f6L#K>N1X#~OA& ze9kT5#xI=EnJY3GDY=47TKXp{?Nyg{&2cjmOX(}fp$qf#gV|Ul#+b_u`T--a=Qs*l9PX7fbr$$ z#-y6l9)9C;_riNl8ZF>t^2+Y=7Dz7tv2l-sTtZ2D})T zd3%-jRAiomf7_v!6xAQNUH#RUg(aWr+d{?=3LL!jfC9damCr_22uHiMq?StmMyYQ zjLcXXL}OCcY}vAJVURS8vJV++$X2$p42Fp8CE1rqgtEWiuYSw(d!FC(zR!DI|Lb~R zbH$jB?>Xl__wu>VxzByGNf83dKEU}ur>w88I(N;8T@=But$w?8@q6B8A;UK&YFQ(J z2bG_WytLh(+sw<}K$tEg+?QD!97+*Z6)7;yWc>Cs$t5~0#u0X~{l)N!tDG$i-4xGF zWh#^eA_V?GtlEb%sP}HLj@(Qcaewy!a*xhJ%d2}14z@51Nt^}C)Dx#{0MpI^-z?f9 z%7|9V0J_73#P}g7;2tdlZ4lXO-YQgkkINQD$A*}K3YatI7<)5Pj~2gKLvDs8Id?!AE(Eb39k>O3uOXehckz`9fV*! z+{ujt{I{|ks5=S{0I0VZZfr;l&a)Ptrnh@3PPrq|%K;g3$~7E{&9OCsEzg&Z z2Pv;7ErL9pn48KpV{~grslPQDk+vR}O{{{)-!+nGN=(Vy?6y3S#ez+T8&Z+CQb>Fk zA)g?CZ)zR3eg8KT@0>`Ip>&?Pf@E!7GD_e}<8)G@yv?agU)o?3Gf!U~?}=}=jKr!v ztkKG3=+|8NSvj4M_aoQ=zGxg6&Ikg-^ud(vkM%jSeli%t0(iWjyq_nA3T>)>g4!$MFUwcnQ}^-477{+HUsC6d zZ4uX#0#H1@_1(7`6|6|+bR?p_tOA-@29=4{RJ4V4ytim|4-KL>D<0zecFumX@jw|= zGdfJqV80~BIGVXL&QWkE&e1ptw4X<-uv78XCdDsJW!Nte-Hi|_L#Rk_ltKMja7?H6{4>Wq zHG1v2dkGP9tC&tD_I_{Mvzn2dV{(sBtdJ@qF0LeCb1nmEydY>*OdlsxaqIJ~mOwAe zmc?9QMMaJ_Zolmx6k6|sNcvK$R&X% z+26Tlby4Y_gYCV0m!ILD*ulpFis1EFsRG6kiL3I)IK^v*Y6KHZxpb?GHm-7) zeMG!YRM-9VZg3t)It4F+f&H1j^sgDY#Lx>>3!eh*@4y{vq~nt1?VhYjbi7TA-1EYU40-^ebkQ^tosyiG4jc99r}xEF9= z*yrI{fwFPKm!$}eS_vN=&6F^4j_y+@Tj%%=cn!Qb+wJE~hm*tsN59VEEswKL@sfV5 zX(AlMOmgJ@4hY}Li;!LjR==8P!)syISX9gs%F&iJY1ofnct{oFH6w2tGmaQrwF_wv zcS~j?6Y>BGUV_MF^LoXr1}|<7iaXB3Px`5s6N2FUHx3tE%FAISt3=wumRZI+gJO7; zUybKqb`pM7!% z4>jQO0!}gl^IjnIE?W?fDI!pp$r_VnPS8Y?=;AM3m_d~TmYA?lW%_`H(M4zF}Ap$FU8BAz!SR)fPgpnGw!HQjKI*O2tShT zbHN+-&uD~_p(a(U`Hp+o5ZifOEL`Q)YL*^&d~3+ZelEJ@cXc!~m@=OOIGz|N7)u+T z>(pXdJWHi#o^5I<&M`T`nooDtb;xnjRP}w73*NVY0v|}`IJvS-c~Ow(zmq@G1!i^j zTl>Z_Bn|INUA2-yZ|Fm0YZ=dgQT?c|_yGGm8@udI;$e5u9_ziuoc)wCCI z)cl$nG{_&DGUnH7Upb+8OLOZgUX~G)F`V&Bw7dA0QiXeR*XS9B(+yV;f5c7OW@9jOsB17k{`3dL zRV>(w=MzZ?@IBtYH>%F@Ct(Kc?_?Z3Ts+h@$!pNVAViIKbnQmu4|&3-6thx560f`fCGv_;ENXu&0B9DDI^>KhD6W4<_H^lL1?D#=G6fe zmM!dW3M;$AXAZzSKw(Gds#M= zlr%i?Dzg;uLIx1|roXacFs@CFFe)^@tunI1g@{_T8hyDsT79g|wQLIBiUZc{^OQwEO~z=hzR1WTVzY?Epl-LGjcc!tlzF&yn!np;5*8-W!G+=RYa*m8zR2A1`y~l?a3OP$ zS-mvmF^cX`*ZC*v;gy*H+gs1ZJ-@1cM(;EsINI4;R`3A(sm*>Wp} zv#$%m+L@x|Kds9zeousxJHFE=Dy*P_xay2*10;PAx&8=$2H$#HzNuk+x&!#sycHe( z6e;IfE-!GAMj+3MJK|Q!(-GS)!cid7fb+5&lhWw;GqCs(C(3W+J}mzoBvXw*h~O- z%!un@Nx~0v=@a6VS*z?cPZTXK=0~c<=pa@W65XQeJGpze2@DtmJG6NTk8j!?>iV^f z@8GTiDu2tPGIDu*~oza{myZvw8bej*y7A7#CRUlKL+d+0^Q2ZDYEsEbUTC1r)nl(G;@<}nq>IW*a z_2CNH#N*wICpJ54xBcmC6az)$eOP$YxWd=3DZC^ad_sKYdNpy}+if~H$=U2kd>ZFe z&y{B#%F^Z4*>bK!cYca)CTyq7Wj$S_UD%rN@4j<6seRkOFkT*aIjO>TQ!0+8ec?9Q zcXE>avDb5NMMrX1Z&OeJ`n`aJ^OLJ>?t&>#TU3*7)jCInReq`2I`3E&gHRceOZe2( z;MnUUaVc*c@|_a->2V{B{Av_uDAl9*IaZ59qaUf(?oe4Nflo5HlxO+_fs_%T3lLFJ zEj`OT?9Xl4+GL(reyvQYzHsK#$r3;JPFLl?Ce@#teP`}<%qaA@n%kFOILXV7fRA}J z*xxa^6`**zRv)yzGjU~$$&;Vz^G~gFVuqMf^v}M^j7-|!LfPtQ(i9zdV}C~?r190y zcbcFhm+Bp@`FhB0Xq&dDTwQLl_Q2xg{JBT@f!PjK@*hxqzWD7ahx_>L8*0^Ck+t7+ zeZPhJJPfGaP?;Jm2Q1mm{H7p}P4DvRnaJ{p*l&?7_ak>ItI5gbCw4~nfBHt_Q@q0S zJdKyVNoJigV!^S{vOIsk^4mp@j@R5D(rXsYXP??{+SltwsqBjf);j8=ahBtJ&Ap(uv314XL?j6 zG5p3^(IQLo7x9-#9H z1U*r8UsgqFxeXp#$+sO%LS&+dvYdJ_muC0`k0dpVdtB_q zAFWx~zA?ICPq@F;v|97{m)%7lI2`P}YA#hHF(*(tlYcXWYgnU;Tm5n*pGL}Q z-&C2|sUOKI)pMSAYgTeh7+WXNsO3ny9rDsl`Ts*OTIC1k}%H+5G+f+}!aNC)C<=*GlFqpa`Q`6BAm{ zj?L(Xhyl#Uv8T1;H56;|{3!fHT&l9#}AP^}PP%OND%DY88Mh`ZwAaLE>Ubi>& z0bJ#x2&H0n!pb}ZUSNoZ?N?S8$UROf@{S<~$PhejVQ>lKv$nAEnP$tLNBAY7MGZkz zGV2#(R-@X#@E{aWkTKpf9=9=wy=2IbAN>YxffT#AblZAca#=GbPEH1V$=eV zGx5*jBOD4X^?0NTN1t#%k}V+46E@uEdGqGu7W#vPyg36zLLN0f=9=V+WoB>d0f9O7 z!47d)!a!`#MQD;?ktTY}k^__N3FAtwGGmgDB^ikFKd^wndjOmlvE8j_ zVWPh*m|6EzRaf8(<3~ediz@Zblnj*P>E+lOQx&D6bn}z#Tl*gWq|m*6exJ23?=JgW`(6jo`#4AXQS^p0 z$hFihkHe`*BOgmNY{HK&ZJuXx={yx0!9aQ={1KmqyhR=L+(&Xe{8^lNi9Zm)bz6(z zy+tLgh#W&SbM9x+>5Qg^9PkRE6GDhy5|Gmor`%!LbF-B^$DMnwj94aNyfOeLuZnFa z6tA|%iCgsO8YsIWUJ%a1Y+F+a#cE~H!3~kGoAv-WzG*686O9QW@UrV;nJx)zfJY_) zO$|5SfxqqH;ElcMfldd#2qi+{W;0YD_Mr7M8ioZR)MY|5qa&=UPQJ_wUSF1D0wCIx zjEfr8_&01}TEax_?(O@0 zYuL;uB>xUZ2@#fQC)=qj>b4^?Yo*A%?#*b z?=qtKSBoC0vu)_Cqh-X3Xw471$*Hd2YMs`fa&y~duqhXx6zj$(VapfsD<9BkkAL3fLa-gnB!&$`%dDELdoIN$u9W~=*TmGiKG6FpoH=VnC1ZM6{oCRXtvb7?wJ?^wADdJ{p|5$f&o`-?qO&!#SLG&&SPm zH-W;{ACWze0e5u_ncUU6w&h{a2)O4ercs(H>54brK2u(a#iHd~(-kT03-nQBIuCme zz2enY1#w?1(m3lljgZm19OZ>-=Af<62nX9whj-gtlQoxFg-AaeJr zW#$-Ch?gC_M!1{!Ygq&IN+@SUC{O@vD-kq)=d4&q7#cPUA-w?vfiAQkL)%r&$^;|8 zc`+N|JxCGa#-JxxNeE6B$N zoNg0v;`>o#Mvjy5@pubktjNhSBARe2cIEEtI6X9DL1tY=5Q5_62-}*$pRoY9AArvR zcee4JWosc7lqg!jBC6v7+fM2$>+vB(_IKwm0w>E?(DSvH&>yy67=6V)i z&qB7V-|KBNdjF`Yp#ar;t~QllWGp}{It&xM2*9Npz*S_G5n$OM|CC=MSLFzHrf9ck z+Rmgb1XG=u*wS@gs!sg~{q2%K$q!Q#i;p=90)S4Pp581tyY3vywKX%lL>3}$KYl?d z;n~XW0Cx^;O$kDP^zo6D=Qr(f%Ttf&?F)JW!UJ)q*}?Qb_pbO}e}+VpA|}*nhqsJb zRDUT{13`+S9_hw_Ov8ATyNgC4r zJq2L(i8DD+guJnO`<2q9VK4UhH-fu@#arGQmsSPtnO(-hmK6jJ#<}{W7-b?p*AUw>G_J zv1(G#gvS$xeFi__X7%U(_VrO@@(&GZi=0SMlc>rYyHcTFIq<9%(oMk<^!HM(2hTvtFa7NkNRDbu%L%Q@Mo0Eo1$H_v=fK{YOl|h}R+$t{#2uzUyB^GN3 zi?>@M8^z-Trgh`^2HwCKJ5$aa-tu@29)dsEF5!Ftn7gk5NfyQ?A#wJ1 z&@ciz4;0Q{>F**T@Ib?grpp9yR4nkZQ?KIyIsXz(_d`&iXxJVOIQ}a_BETCzr*B~r4JLZ)!;!REZF9v6)CmuTPkzyZ!8gc&3OPLNCh|guK*g<_R>Fzu@cL&8 z0=+Ai)yy2UgTYXo+BvkvreBfMVxjEq)^8TAWana*oX9dLp);kBaI95jTge#%Sc-4t zW6mewlw;q>yXe(mKWGV^9UNtP)JP1`ntQ-QfoxH4RP*k&Wi%-_)q06+@|~*6$IhDF zp|v}bhq+G1{cF{EU09OD-NTYgUuN&j4U#FU6!tPdlm&o_Om zeSvZ6NoYN@zFl68yV0lkP2aAUgDHURRhb&zs5C3u>pnmiI`7vw7-RO$-D`BmuyvMT zah;U@H`Crz*xJ1V_!~>U;bx*^(VN+Y-@FKn-+sJhsQsBAKO_=S8Qv%6+UF}W zBV9ToS>^pxF|{7QB(mf_42jl^n%GfQh;+ICRZg-WSu-iV)<(NIR4v-?Q37yCq=!77S(j^CC~dx&TFLXunt#sZr^T#k0I0T?`)xA zj8ko{9a*NUwVOP-;f05=UZ~q}{=}A!%$kLQ4`)QXb8oy~FIH>%p5lvG8Q-JiUzD9R z%pl>AjM9MfRRWWIp zFj;O2SYiV8i5RjBD!(AN9%0R}rNnSb<*T?JBe;h;0UjgTD;LqhgznJ&zvuM_6Z}Ko zIdDG3?;$h)nN*!q?nElmZx;QeW%m1a17Ufe3ZV2A1OQ|Rfs`=dy^8nTIuqWCp1if7 zJKwPlCbX{>6ox<$%76>68pUk>+hZ^pC`NB zxWkfW%z|o)^cTG}gR8v`)`vhD0K@!M!T{We-en4~i~X-M8A`>j zamO>@)cOiDE;j8Q>Vmw!yIbhuuR0LBj{r*nK$EnmcUSk1$`E^O!BP&tzf(d8&9}$~ z(;<-eX<2nY>y-Lo=iBD?sHvz2FTSZc7XZT_d2BG@G+vFpcABRN z4|BZr;_V#4_>k5t9Ykm?EKelVi$c=RGEA=~ame%Uqd&}rN@`$ew>htdY)Up|_4Y** zq+&Dig1XO>6!yf1p4}~t@o0ifjIZl>{qiGciiw=Jr=1M$?(wLQO0rnlDFaxJ04ffT zG=o}AURw_jTwILJ>eY#U&n%(fGrPQ=ZR>D%e0hCvHa$v$q5DlyY}5;<9QUW9NuM;a z4MnB%^YcmXDR1bLMRy&%ZM>|k>@FF7l1;P9P=cKyr4g(|gP)wi!oG0FnDeAuS1fhBaE#1dZ|Pvi zs2z}Y`)t$ra*GDxHv>8;xA*4DqNqZ;-bZg1}Mq}ltqb2FcUOY~%*z18)CTwQBUh-`)2306lERwm(enj%C&PTD20y;u6z3LHAvt0yv;s?Cw3J5F zZ;tNZ_sO7=Zj7qW7THGWnfpIxU)ff%dR!Pyf@i=stVT-*ZO8rqUp2#i#>MB zmZlHVU-cek50Uuz@xhrN$8{D|Bif2y2qp%P+-82!cpQpdwY(}}jE`>dGLx2rg9+?=na`TZV`w>xGZ--n2tq>29*j z5fK@a&~cG_a7jS0tAfaG6-C<-wKXk$^byW9MzN8z(ROA!Kn^w-MV^V)w1h-Bj?eXm zQJSRMlg)^ww9bjxr&hg&rzFlRb9#$pVLdTt=H3Rf4bKtAJQb+FK&o9~EvHoUkW#K4&{RW?C@+T8snzEb~ z`^%zNv9Q;1I`;E(r|vc#-Ibwu4FWMPgz{FOk{KDfD3*L~Z2kp~8)ujlnP;la{WPmj zw}3a|vXW~GbL!E!?n&~;86u#0J_v?T@=H6#o*n~~g9L8v36eAA<3PB=M`+a7MB=%o z4*RiZmSP5dQe_>s1q(q7o9x-b-WKzDLeNldxqxX-wQaH27-COv>(9Iw?zZ0eskzDZ zgu7il2Zu)jV?PM02R4%4%e}mC^1R6N{Q8fC{WNO{W4?QF(GIpjv4k;{^qnZSQJ&bb zvBu6>wG7o0ea{Dpy-ylTC7QHDS;&w~IG+A#l1HYf$m5>irrRyN{MKjWC6Cp%nfq5@ z$X$2TxxV7r9!W zm2f(rEL-Vu(|c=rPyiD$@L&{aAQfI&cbRt!W^qTQ%1@gcCw3JEo#;$4HlZz+j!Nn# zD=3%^LLIo;N5vA<0`=tz-HjP0;QX)j4miRhxD&WchmG0dV=v@cIoffTGYh9;2&$ba zF>fyuTRC}fa@U341&`S@smjYrJFPDljV$%bs^+v98A-paxgcF5bG>F#sc^ys7J= zg*673mNwq5JAZ2c68KgEZ{;Xo>LQx=X54Q7V>MrzBP=j@WU?r@@vVN#$(h>*jy8v{ zJmxdiooX@XL@2hlI!46e<%G&_BBS#19a092J}6WcB{vZg2anjoawUQlqU}>uFI2n% zoI`fkGGd2pM6S&jxes4#h1|CUW?VN=0O=H5-O zv7bfx`D0CSl-naO!lErpI3y)GQ#7wl>n16`-y@e=^4%)~X%NMuSoFeY^Jn|yBAz0& zX71(nef(NUg)Kroc&5JEJv$7=qh2-|P0Rg|6(i#yt>(!F$ zltjGYFw^kPSi0D`2Wxoch`)A|TKnhbUaVo#)x2kv_fNUytUB9Y-%ottRXl0mxkz7H zS_(hhBliLVE#x5+9edYIO_!~l>ZKFZ8AQ)N7m&$k4rvw66?X6Y5I{8xc@AHfFwdq- zo4II55HoYt4dR_YG}bM3@)x?{0?~x=g8>249m20N8&hl&GfAY0D~=A2MZ_ao)uT?O zH|e_Q#hhEyPJM1CqNANmq7e_De;H6Or&3dPHJRwUc?7O1J3<(w3dYS1;4kP z+4)-uIYbza$y`D$2BFg95+-3x$>`brASB1eSFP9uS4e;)yxccw^aJMP+DiW-t!PcIEf}N4*pL#>R6veII*4d{IhqPzjuA{ynq$ct~I9VIvV-jfCNflv7 zn3CH&H4~jtqmJF@a7GzgRJQ}N# zU899lyZad;(9^_{BWBu`$~0>W8+lwb0-dAigmvFkq|iPLK#KS0WvTT^o3K3Mn^D^o zJy4wg_@O-4jxhBS%Lh$f?H^r=9K3A*eN?0y$`kYY9_L&qm6l>jDO`)9nb}pR;S2jn zhN(>7v+FDmo5{Xh9esQNMPW+qO=U`ba&d?9hqL#77GHBCgz-;e5RjiicN=t#Xwn4ACAN7&9%q zcX4`J6Rdh3qSUHAq_@9TaePq!K6kzzj4DZmVqRn?YV4j!C$XOLN@edJznAEfDaZ+D z+mIU*DfW z2R_*=mT@Cnn+42P0yw6l$YXkpXd5&m`t38PKllRjJrHp?UOW`;lP9vR)E|iWm#5mo zyt9yhZ_Ij(BO9{&Wqp`As-g6uPbTe*JL zB!=Br+5;}X>w#Q;))z_a;LXa&@)rzbFb{7mBxG6GRr9n6^r!0afmqKfBA=`y0O> z=w2QPNYU@I(%Q+fu)Zhu!uQl1p~Ju*OuDw3o%dMQ`P5nqT%_h(d>5woFli-#4o3&B zVJwgbM3YRs9JTg7`;(~1zl6rgc?);ps?V3^3{~eVLf+b5`B%a@&P?(3hX1S~oH z8vkzv!OOyu$KT-hL^EF!_(m2=|3e}Pe@f)7N@Z)b^U9m9=NQ@>u#N|~>_Y$4vENF! ziTB?4)yPGoi`Ft+F#I4%a) zK7O_oLajQ1G4tnY`$Ka^=${db{7*68m5cwQJei7|L^pDqE$*-5#e_gfQmPZxsY@&v zDzQfYZ%_1F>tcZ8*|1e39DvGDCN!fxR4|_o!k;Sz)2HSBfz=sy*R%VSA>a8eEdtLk z)y07OuhRbSi}W9J`hPis{}&TWW0E}gD8VO_(1G4yFICh7zj6GN@i^#dkb(TAMhF^% z;h8t?P&i$*Rmv~ye)|WVcdC3(zfNQumnKAIo%AZ>aJ+v7v;j;|^bht91Obz?{2Kp7 z)&IrQcBxd&tM*MZhMoaw$kg4}KS}-fOqG-H-LWc-HOrqn|8K%V2Xr3c-;hAB{_m@H zn%Nu}NBl9c>F$vKNobDm#bGG_n|M#}m3(&6Uo$nIqmKRQ~K06g#C%x$L173-k? zZe{-xL0izu7AP34ljzd@$lq1P{|UYFzXFp#VZp=PL%{TrY~T~YNB_5l-Lu=As&dWf z%$AmZu%0O63K9)|`$v5pVcwnkf0VF{7#dHGd%ZA-dFT(*{?Iopq)xZLKXF%Ot7+`v z?0VjPHux8_0(SZzjR2T+`TrZMqC{v*3zw=IJrpEQg~H%A59prC1P&@1Kyd%A*F(d* zKgQPm`)r`yTo|UD0gO(@@eP>dr*@`?^5*iAhJ4C@=cs>TJ;p0n|2x1t@;4Re%)MW` z_8R^OXy{)97C-DCb)S*$KFD8Rg{=RnEB=87a{cK{l0PyE|2HJ{zvxy#2_C2&{dfPP z?7?qpF_xlR`XeK$|J}!14=mY5e|EF@cKgf5K1ye=(A$HE9~PUEi*clTU%s zUh*yC7CqU`;>uB)Md$m)dM{G{;=j3u7%mK(%Q2LgndF=}!>eGW{HDFroJOf#2N_)0 zZX8%#`yH1k?5x=epS6sp?XXx^aO;h|{k4i6Cp!4if5o1JWDmS)`xRWjZ}vn%s!y8t z?3{)7;z1Gp2dSJLZ8PUYlojv_qF1&qi&Ae;m9{qT=ZL|A;&lWn z_*VDCr0+d z`|5cl_co171YQ|ZKX4&@;tgY)VPDgDU|`W#{=Hm{x9=wG`#$Ms>u@-}cJ~RXxCsa= ze$K=^w!z4B@92dSTWf;t0lRJcUp8NI?M&fwQF|4A`1UdF_RRarw=bnT(Z52ieuF@m z@Z%X}P%N0y&fa4DQfe1|NerXbB<3QL`<+~|se|H#h;hfz(Oh8FZ3HnfqVuXsB>li; zl6bdwkP^knNn}yU)C6EJ2xnB$bsWtq6)781^xaPjj2h`XJb-+h4UMm5YIs(=Qg+M6&o-ifEUw!za3{sCj2E+DT4%JgvvtEH&V<3JbfO4ho>qq)s2jc?P zSyg@al!`g=qWfYw9AQKCj|RaSr(m}j%a8GUNDQDzLzcP6&admU9**ynBvPhzvG32CPj7ybRK>mw zSkl&20Z9!`doPX&y`P^1rg*(~C-@Z%rDff>81dZUi@f}sO8V7>KesolcynL}NBmM!ObMk@fH6f%tfOQi>NdBPMz zfp!maolZCHg?L6dPX3CO2oVxdNq9OGil8`i%EtFx<&0MbNr27+Y|%8=W2@rJ1eb#V zkCAs{7D5;k@{|xl?UsOA;d*?lSSO~11ssma=h*3_+-Ep0j9Q=AwGRkZU|}C%!TK0v zF)$M0$L=4bvy9O(OmL#xA#J^2M=Ts4KCKH8JJ~GGV9hYp<#!!D_^X!uehd@(AQ~WR zDvk>vquzW+Sk8gF<7AgZj#v?Zjyd$;L16ipc-Wh-LBzPi!RtUke|BIXM9v;Z@L>Mb zIy-eA7~>HF2ZN;`=9iXG29l02Fc^WK#6e?>vcF@hg0V2MSQbPYGrYdL%UFRibe6H{ zxL$dHl>q)22T%XO=#+K?ekDq?4^SQx2kSVTPu)P$vs(STsqhoF zV6e!;U-2=&2R?+1vW$U(4lI*ykBdKo;$;+W3(FB`JH|m{cBQHRy&)`}D)18*0O}DUgGt3eorH8Nh!k>yg*xm~n`;~OIz=8-6g6**<>K%d= zSnj{a=MWPQ!i9svPh^if|$<}y@2%Hr+-U_WnJr#StL#q9-9h8RuY_jz} zU(`nNhqhuBif7^4lr1cxeP{bwU-|Ye-}ik-7K9n6L~B-0T<857oU+kaYu9OtW)ZHX ze`vDWd3DvMw;2=NvUGA>I5o{@{L%LxOZ$qhY<^#*aH`z`^M7ntj=%qDbJ2L{M3TeS zu{DjEpON^6MR@eK?bcfbr}lEUPZDC=*G9bwoomUWWr}7#xmVnj&z;{1S6sY5d~hdN z@%>KhmW#xvZ(TQdHCB%1Nd0kja%E?#eBf9_suAIxGm7SL;CYgib7`?ntX)Q5=1&4D zY5h={?}Dj|PxDT?p;w-3c8$hL&G=3%`cnx}gWxVeBjjzBDYmqu7IhGxUeCO2>#$T? zS>2QxI0h~LY~nkR!h6riY()Z1l3nzj7jmr9vV&d6(B7@NZ5On8tbEb07F`z=D9GHc z8WBgDGb7bbww=Ljsy&ij@$F5oOg(1s^|J`Oz30Ghh)J7^DaM|)Rgd7G)P8LaYf~9~ zM?cIL6HLV3h*M!oV@jlNuasX_4CR9^vHha70mN$byf z!`z>oyTEjXGuw}cEn?|LE@t1tzOi&yoz%W&>XQ{yMm$%mABq?w-9O`O=HYGq^Oi63 zK%8T}L}T%zq1>guMB||FVU26@+ny0$1Fjj>sF-#Q@$8+`kIRN;cBZ)CXiM`AHd95R zE>t4ltxDFE%4;YxFDb1U$JG-DX85fzxs^b#*k%X#h1V-Lh>qso%2pvzO(YJ{M7)ZE z=(oK}MuJ{8{+j;-g?pv8t%ceI&ZjM}?t5+eU#+?x%IY_TN%^7&lP@B0K55~~A$rvv zLLbA0wC=>3I>JPMTDtEWEG4*`s1aQ9;C;<6V{{4a!q0U{#e}NmnVZHfU$JX8?dLB? z4j?zp29PEz#db_(14!aLKt{R6!8K1?m}0{!mx5d7yPK_I7r;Q6cLK!LJbl<~!RwFC zzm18{7zx-|wxTO;@e<_)(vZn_fFbXlj|7pyF`5A2aqLH=tjEYh{5_VG^2DY5C{~RS)Mr0wJYd0SF4Kcwu-o~>?SZ-%IEc^JCY+J%$1A4u$F7|D z9$v(Rx-WNN|KrUv_Z>{ewGA>fv9uZgC^^BJQR7F}y(_*V(tW!XT)2DTv1irinSf)T|jn)3%5x5V(=1M=}_|U%0 z)HiV>xM^`catnM!{3UA{QJ89yaqk^|v>tzrgrCa1_cV!H$$%fZV|dWRORzeuvM z#fpS^!k%Dg_M#YC^Gj-hSx5#wwWsy2-FLFdj%MX7!Q@&la(zU6pj4aSUZtLpmoFH% zF{eL#E0&J_h`6d<4JLy0sZf^@(2}byHxtEMTSSEsR*;YH`Se+|-mWzZA;<{uI-wdm zLe6j51E`2676x}hv7NLr1(wn?T`>lq4!Z~zOM*=V~sQ!t}Ow@+=k&+dZk#ZL%4tDuO-lON2M$5Qf#J$ zD;JvZo&H5X&{XI7)>>Cq1mSF@;ly*97Y8_MV=`8$bwBA(UB<~q6XJS__%rNV=YT0? zfmPvd?U`e_G59V%QW^#K z#Ctbpo!XgF!;1?EnbyT{ik^aP-HAs~yraXihq_8UP}e)ei_WjVS6|M$oLcu2dO_9K zI!EkN*0ip^Fj2n}Ox1b)x!BjVI(G)(kHHjSwVJxs(1_U>p)$g4>K2T!n`!~*>)Et! za6;a4j>*wd#f3sm!g=Yw^5M0iF}G{-0$N`Px5HXFXLI6}3+O#Hi25-q{cPUg`K_-- zprhBNq-!7ot#PMxV_?nV=k`0H_5y24_vc|R^`i^z!>I8q&Fk(qP$FDlqeA^zNP57J z(g#2zQ;o>FvK$k=sIbd?l%S^Zi=(CAU0i*J?S6hFouP|&>TSI5&oL=s#vAj+{??Q+ z!hVCv@EN@CESOn!ocyuh$Ang35~cZJ+AxaQvzV8yk%QJ5yYjB6H`6JG>jToovN)%N zpwZKsI*7E@2P;g(VSrDm&`MjFRH|U^<>~P4lIhLMgbRD@N);ukP?gHe{FP_lH&y^W z8|;mGw^q&bjZ6(b9vxTKmB)Mf48OFmNyql_2<)k+%L$+4&{pxKB$^g{m@5aQ7;35>SggozJf{W<7zJLhe zfK=6Gjg{HK!YPUibDCI@ek5w26G{t^4>btsP4Jr&4vz=nj4}d*cNs`a&*C!xwxv`W z+1EygIhfAtW_qK>olv&3_@#Q!bua-b%LZ9vii}<-qvn^$=hb*)S2w`gl_KIddH@{~ zjbQXfX;FEZW&8Vq1^&vYb!^VQ&i$@s2lPZ$8p_eq8W_+pUNH5(eS4qpEP4bp|~RzCzj zWKa;N_63Yo5Q5;;9E~2ieGQ~e<`8T8k$GP>*>E9+)-RU1;S{nO8s^%`hhxHo-0IIl ziYOB<;K4+dN7Cqb8QTL-$u6DRQXJ5g8jCyy-ornY#`NpBFb-{pfyH`#A>xPbm7K@)yDxT)dkqOb zR#?xHlj5I)G3<&~ zEiBT!W$ko7a@89xym8kP!cj(a>bC;Cuf1hNHpZbYEx=tn0MJYHD^oa${ZnJ z?M(R*`Os&`JV2t-ktW*))_k#4!Q5i|J5M}|t@U6??91>!)tEA&JCq3*Vh1J}xxKfL zaM$8nBX{N%5(7@{-mgV?R0hoigW~HMa3R-kQ^j~yIcNy_G2ZNaF%j%W>~#wh?P?-l zmmc^N8VvYH3CVfgEMt1Q1`%NOu7fTZ&iI@y7?sPWI~J>64VCAho%Jl9Y}I;|UV^sx zxXS|WsKZ+_Dx}#Ktrha?xU|CpO$4;OKq29=9>E!fi7eGEgJ$!@-v1M3unr>E^({89 zemoe|KtJE1)&_-kEleVf^TS)4u_1Sjo>>-qUL+K6A4VGg$ebZ%3h-)>mdU4Lu~!9h zZI`ohie~j;^H#-L9;hY4SyR1-ErXot6-1?q8N!s3NonA6WfmN7dAAx$C2j#MQ6H>s z80_c@S4js*t4b0t6mvnR3J8lV-!WyV0V71xWjMX~=ba>$@XccW?q<_Nh=5 z9r)FJJ*$@hB>`TeyTndW?3?yR&AlMFud4cr$i&N@*z({{SJbAO`P#x-9lDOhTab3| z>zO$K1OFL4y+{@UFR2Qtcdu2ulKd;641mhbTGb%reSBlmD>BN%9?|YVMfPKcW*(wp znZ6LJW|0OcmoK?YU z@bW4&cNF>R#8&p3xFTUZ05a;_qeqc(A37`}H^@dAqkv~WQpnY2NebW2uqvJ{BzzlM zl`t-)5+i1j#@;&R1Pwy*^$g^308Hfq04H34_@qe3l}faDjPJT9V3UEIE+hU0XRr3Q z7EX%@?L(A7D*+|>v<0rep&w0GGNHBYFD*WlwI9uoW2&xmR|Gh{7tEuKz*G5S0dRP` zkg%*xNW~3~hz;NaraM43lFI>aYOW{|`Z>1-5MUNFC+p~R#Wduu_@^Rw>D={S^!Lyt&RMYo4OQic{Ebx5aq;)XbAD_4A1)9c)Mwz3QAq}R!h zEjnLrvoGRQuzB^$80QW0bas52poq$ub%`4WT^v_jP1Jx60mHXp3o|8d|6go8!VoD;*=8)+(wN9rls!vj%|tcLqGIgE*w-wfkTEl5%Pz^5 zE!nrR{hmjk?fZKD{wOblXSwflpL1RJea^XlUzH|>XGw}AgZ&DKY3|_G*v&+A6C(2+ z;EikF{zRVqbYYwV18yZH;_QdviLBkd19PM+!zLDyFTrZjk%nUPH@N7G315uQ9qz5F z>k5~4^fSLUPljMa3Z;OVh(kHZOw)E2KHPITCqN6P@7|GuS{eW#a4S=Q?7G=){eIIUf~wvXTq5C6emetTM;qz|2_#EZWhM@tp^BlA}u zrfeVm4!>i(YF;TgcII&VI<|{dL-4_Bt@vRUj`3(8=Aw(PcBiVsfQ7hkZ8-=BmRAPX z;Ew{Y4~$DcN^*Edv1ms4x?~!W+jwB@u0inhmEr8w@b4BfeeWU9*B_a$w97Bh3Z&PT zZ@&eG`7^=E|LfU?#Gh}nm*F#xT@<|Am}A8ougHp5@R2eq{%9iVK;^p&x|M&tH5$1cKW|~wEc&s@(ot! zvRc=#@y2R6@um0sf;zA+wTu6YNhjjD&qUkND8WpSi01xOo{Xv!`PEyLy|3`r$r;+d z?q|`R2+RnSzHizr|EzRToT%8iN( zYeRiaN45|2wQu+zEV92oCwsBdPJ#C>v|rHZgET2qd-{iH??=*;spV0$tX$2Oy9wG) z9yO@V4U4r%0XTYw_FdF(D`%UY3-p@jlSjI*UDYr9Kk-j>sGKcpsPn^6-cj?*Z{5-F z=j-^eMe}Ptdam$J7b;_HRrUV4$-U@9hn6xz_a3I@o!@6tHZ?mXqiL?yvTUhg5mHq@ zS)n<+=P?8Rl{X%ZIi3*(RS~Jyif@%yK7R^cD7u>UP%vvV~Y-*hdfX}lX zC}od`NLAQye$w4qA)_sNo~9MYImO53V$nzXkWEd?F$dR520t8S8Y1@SNb=Fo2aXJ^ zgjPge*e(VNyK=5fP_!0lPCummFJ7E7+bhlYcBXp-KG0O~wLLzRY`y-DlQ7cIrUH8= zN7VJgFk*T~aU}=d4f`LCJ#C`u$mXkZT*OaUUqYA~n%O*JrY;OWzc@y?rWvrnrhKvo zV$D4r)i*^utzq&5Vop&@3DPNDC``R=vgIWo&~S?BO9@#Sh^J5LDDfHu2G@3;(2x3a z#QIVx=bAHgK9}YH0S(va2^!Udjb~X{XmvNfX8RcZdWUy+hSFc<5=;SX-HC!Zf#bad zjJI?z`V<~4H-GXtfBDk)OH1GzJs5HVVq*?U9{HlMYMfW5v;Ia=_w9r$^nCa(0-~-1Q+2mWa|L3WWN+i*nXBa zcbu0Ga61+OtHnw{kNRP5M+qW$MjZUiP9)FBNUtrT)5 z#ma86wdIGo8MdC})w6b#qT0s}@-`2Z z@4CD7LzRPm%R;?${VtrWtrFQrFL>INuubu)@Q#neyAQ*eh-_4l-GpQC^ku@AlT#|5 ze2)t_YQfVVD})A0IK?w&x&r&=FoZAV+d|vhwSuQtQ{BaC4amA-DZ82{Yng5;kC_&2 z#zS38hr*c_Ejz0mZJBQFay%n|#vLq&i>vUAm~a#81T^p`o^z>@OpEMx;Wfc1Z9(Ao zKH*;(6?$QgrMopL!*2TIc{JdU;>ZzW$j)&p0{`duh40q-Ixzs-cxL5|sVjmAlH=2= ziZvs(Pb;2q<#YPMmmpwcYhK$?@}fp}S3_4ELL&<<&ZZmzuHnLsOD8%qqBBGeiPf^| zK@|t!hM7i+X31_CMiJ3}vx0DhgS^{KIns)lhz2nL9K-<5&pT0|?qwdKfR4ZY7BO&{ z<%UUeg0|r#+F#)la;l0$Bt^70QNTTH2uEn(jT1C;m}Y9nZEPmZr<}M$w3|kF&*>(Q z=*`5yu|Omz(mtnzH9b`4_2|#pWuO?Y(3TNBHpbW}5p8KWm&!U`nha3Q39SIF=nUg4 z0Y1zGvkk`~bnsK1(l`epT`8ZRve_^&$KLl@7Fg|8=>48bYn z-&wCJe|>3gGX*Z^{+W>Ed3cZ}2^pk?sYSB4@c-=RyG@QyHGdPX1aoW~0_{*l308-^ zD~JM~fz+cewbrSH})LzNIJwPQk&k7dcA;biU+#@*kZN* zXVEx8c?sxmm-Z>cb^rtbOF*>0S@R>_?IU0D1wJp#wz#P9w2>6nHe3m0p0-n~_aKRD|Bs|78fNbF5Un)89xkHh7C0)pp?5W zR)S&SZux@U1&dOSms0sc>ce2yKC|m-oGY1YC&j4h>1!u(Ht(!fj5Ox#ur?NE6MAXD z0_~#j#!6hpWi6Y!$)}}r&bAt?C>9Y4EXj`TSxgHaR*R?fz5-F5AW2e7sk(5MRg*eQ zqy0w4FCy=%u#)urFrrrjUMZRZzUvsA$Q=Y`?}#&C_$*sSH9k+y#75cr-(J(4w7Ek9 zM3L_{Cgnsb$v5xS3XRyZVB4y%AT!49it3_^q^J|XPsj$)iw*&*m_O_;x(`&xF~A{> zI?Y+|&HIBABsck&L+CvTvZO))QM^RR?1L;tt6VKm+cD~?AteG>m9UgZDM!DHrI{rw z*MvW6WMffcoN_0kryAlj|YMoA0R|B&1gZ0%&wu}ehVKM<`C{5b?;sM5oz@_;L?upW2 zyuc?M=NV~C=&?r{9{tDZ>;@=)LK@s;EdQQ@yoQEe8`zH*Y90~~1TxYJtxhvQcmS2a zv;cVBAACaUY+0!)?6Iar?ZLvRaIUQrR2V?(ukdb4*88$PYzw`5{I#KFiY(9Qs)Yc+ z5(Z$d@fq90iy??Y^r$N|o^!aIp^%7@-?uB$_{raGIa2ug_tit;UG#@hg40(PA8H0@ z!K-C=zu#($4bhy?`y0_%_=JLmR2Vt_KENJ*g`4Q{9Q%J%FIGkzu&4N+k7hfVO*FXR zhAvBsfVzNN0m#3F!ExVCZcptpChJ;HG@L>0YohM}`)&Mww*J}}S}>xw+YbYB3K#H!sxl@L zlXoWcN;!vzX&>U(y6C<>z=Db^T98#C;f}I`d?sRLNcd)Owii-U>L(AnVHP?fj{mPa zfjI_rwXtgC!9L?T1ndqc=vJ{J;-4+xPW%T|F)5NxAm;=>He@H`Z+KQC>I)!4@G$3mC-ROwNnnY$0;I0pX0kjU*heTG~zm8<{@CwC%Z*r{nH_73R40I>XbySz80qX7C^L()H-tJb+FmIqLYc2Qar3rhEVLjtthbsF($OKm(y0Oz7)+Ok@RF*;quef-Gz-LRo{Ccc{Py>nFpwC!V@R36@t~ z0FZ>{Vm~UxM;Qi~R)H60ZVnmmfqs!oDEPsuu@f#LQbo7}zQ3!j1lW-$ji5z@nlv9Kj!iW7>vQF%=$uW0aJP>91G-4?g$d z(Ox)1!EMJW%lK4TM_aq0=<6rmOW>x!UK{e2Y3@&S(?n*OJDK*(~F!A)QFVGSj^a)t6@?k6<`Ri*7FT9QMKRT9((`{sQtvaqJYhz4{V?Pmqy+>cB1T8~q+NO{ zf*JPQ-9$$LDB2ZlcyF8zZrcKJ;T5iSZBP|<@5Kn)!DMduN}(%M7@oMM3Ts&AOF-*3 zmaD=vhHDpaTB3kEVc$F@*J*h?;A?bp<|klr!ug{!2w_gpI@_;-n6^!;8F|Jn?kK^u zUD`*D-&1E>{)97bl#DXFrv`IOLujN_d0C^(E=A)n7ZN_S=f!43#mPF}xT4pVWiw(i zMgwE^5O%yYxd|A>@f?Ekk#7j+sIQPs`oLGOJV={*H#W)uIaYCq1GnQF8Q-6lPf$M9 z#HvYQTKEFXDTiQR1Y+iCr*R5QWGyY;{0(MK_U&Kz_-l9IcByjnu8xwk;nV}Mt$$qZ zN&$Z4n1}9L6yR(e-WP;Ny4)Q&!O|qWKjUK|kZXSPHU4rG_b~7aaprG|y^Kq4?l4G{ z6gd=~;ba()v7OwSD)3i#_dh`d-_xv|a#Frp4?XO0QNEfwOKWt3{sJ%r2ierf8uZ^i zkNTZYI1#~}a_<0J5RRBdvcK!zUy@xmgae*WhGUEP4?4QzYf-!WTSWd7MSYQ0;KJQW z16D!DvSk(JL)I8s5E{C}i*3%J{_6iS26Ivoq+1y_H=?H^B?92$Pha9{w&Zy8hv7mV;^h0x zCKf?EyJv4r(3BEU!IiXlV@BZk>!F+%Gqky6IMpzU-R+Zr@_?2{v3K88hWWT*y0SUR z@xVHu$C*e3C?Q#zd2lL#&)&}izi#P=xlFdXgUdSWgOiW$qL1JWpKP9?Fo^N7E_aPv zxl?mki6|%NwxtTqxzwWA41OVsK=#gsYqBSc2#{;3*IZ$8Jrrc5Gc-tWVEg1D;x+MG zHaXq_YQ6@g2>iZo)HQ`t@zs%A*Df0N+lFUHaJuMQ%m^295l_7)05GlY#ErAObkbbQ zYfE=u`cPcUz(2dQ1-NQ1E**^UAPMbZyz;#%DVxCbe%?wu1a9 z(#lHt-gV`Lc>u|0hP16e5}C%{U-$3Vy;z^td%SWayK$Vbx@Gz}|GLbe%yE2Do>ho~ zk-`94L{Db8QYUJC)vsSyU{%&fgzB1xFCy+QsVd%AZ7Ht0(aYxdpB^5~)~(%sNQx9N z`-QH$h6zj62tvndzxbmZ^H+f+Dr~icBYU2-F*2$bVfSD3FVC9Sy=M(qj6a~CL}#qd47c3RTm44*CrL)dn|ETqI_ ze)N4xDiUp`XP5pwhao!oj(E_j%=)l(nO)`V1G>@_K*Ofyi~`p6>WYY;2U5dl-x5iw zCgD#f?1w!af?XFM1i-U?=|$Z8^E5?weKsw1V}X6PnP7cs-c!}=zg}kP`LX$Yx-S{< zVzU*)$)exyS1(qCt-g`-Jof2P=IzDBA0D31$`U5a?kx28l>O0>t`88O_8-W4>#`L4 z&o$Xm-^w+KY0>9-K2QfW6X>qqrSgIY(>>=`%gg*#RLT@nl`f5r9xpcU&}De`tfg-( zCHG$UX`-%L_o|(PORqTA$gIWw$1ca$HiAvmA6X?{KIdoS0}8+jbD`gIY5mr3rah*v5*C0 zRIYb#JPP)D76SLpE4`S29`J!C_3?gBQv<|DwY;hqe@vB5eYMIkVYil=n{sA${5fC} zG*#iY*sy+xqpQ;wGP%YpQizZTmLlx+y}CT_&piH9a$-%Ga>&Wm%PXmM9jY+lC9Rq5 zUcb7#q%$G@lt)Q>{h^&p$vIXbL`0&3>BDu7(IEE*tEZ&_3BbUc#tPL#lRsdUzf}eu z7vE;mk6KEcdZq4veK)S8N}*xiu()aQx7CO7($VVW$)i8AJZ)Tor>|Rddw{FmI*o;h zXU|s9Vtb;$y^EQf6ZWdIx*X%9_rcz^WkD=XdX&@u^#}F)TIkRLlEVhH&Tb&qbNZBP z&Mzip>~4$O!~rVf7is%2PxptWsk()p#T^S92Uex~+qgg8l|HX8STTrC#-?}B56SC` zN}7G(c0Y)ihnL)p&3Qev*Q@{8&l2As8~2`H)IAb z7m5L@QAwUNR#h~%(&u-H;e?@$zDgM**Rn3~FN-Y{6FH|_C`}@oaG4KV2WQ%jFdf|b3VWStl8(AKczxB`hsQHT2XkSpc-M2#JNmX&s^)22A~+0>yziRs-h3I zd>SG&5Ng;dhJ`8X4FWNRaulF|__GOB7ofZ93-4Z{IpE56F{QmRr`%-s#Juf1(-C0$ zd9JJvMGi;2&+9okjDOLf217B_E4;a0-EWESB>#_2y}BY4z97hl>7JPf-A2pV~PM|QgH!f>WCo1cBH!Ai~ymJvzusgsM z=LD4xkhLUy#3zVF)X&rHdnkPe9k`7qmg|Qt3EvL^*Xu@E>>`as(R%?e1l{1n6kgGX6I#%nw z698+6a;_6jxi^B1C*#0;TG})6`MV?d%eAj98(-qx)CtlemP)XsPrTo3@h%Gfa+yaS z@U3_z-yrQZ{!_`iNT&Eduj`Oz&)hKB=Z;J{RuHd(REI2i>!qj>8GbXveiVN@2Hfk5 zMhvijbfA80F%L=3`ATWJ9wpe13KaG5#sJJ==T9VCw)F^{UrNOMZ|Q^0zBrW5V;|_b zbmH65Cc3Z`Y2^BLa{MlEG$Gl6SKtG}V}wEYQ;U@cK^S9=Eo1|s4wNRjNjgf<30kzZ zi0B9B2jz)k!kBK`-|bL;SoCym!xr5`JpW{ly2J2k(7}Hvr^73saDs=!`%yRd`f(M_ zf^+L7uYuwtGJDF2%#$qJ$$!hbwsUjfyjk~0!oSfOw|SPX0yA=_#Hg-FA0tA;!JQ2k zA83(!pDC7aZ5<97i4akxjKOEkDIc6fAXk*Jg9Agqi zN<JMl^1SAT`8|ry zOUjE1Pmv^<0EX&zo=1}qEK`Qv93v1fjvz<%EJA`dC0Y7WXO1q=4$I5L-*Ep-DEI?P zPX_{vs{^G2K&O${2>j(d!nWTh$DN=ehXB$>M#z9^T)BwqdjQx@B_d?>&l>y9qr!?H z(Jpsw%?0{V*s84hNlPr$#|io{D%{x>>H{Wd9kekYUX=F%(2zz1Ya3kS`0p9oVOG-q zI4dpHv^}6^YK`H@7~8=9+z%al|rz>i(c;+*yH2i+LJ=tbr3J+r7g z_nBZHM*VYpP8K0A6NWO&G=#PkLmC>3i6?+{HE{pbSe@jNmYN&%|U>Q_Zlft;o0)?U@A$NV*oFVTQ`7uI7oXj0LobIquLy!^dV1Hn>tVE zSr$QFv5wW-7IG-Ain$A^NeB%an4A-o5atXu_QuGke*v2^7r!)JF*+v?EGGWPm^Q=1 zB(dlWuu7!g7GsegaRx0FIR#q2!YP;ULF^paFXPncQ2#J7n60o z3-xF{iJ)S3@0Uo?Mh?>(lY}xOcLE=(+vZUYk5TTBShnmE(d{z~=s4B{HXa0c)Dkd* zAEPO{c2}<)Qtk>p#H6}L>V?gtGV%#8#tC&-0urLaRgX2%Guyc@BDkPkyFw=xk;~Ux zxTl4S-2K}}kp@Nz8hUef_uxdMaY8XB#rzUKumIB}Y0k>UKs^JG7tKO9gEQ1Ug0xxLn|?DgT+qUIq^ zSQ=IR3vxQzeIC^j^ag*_KmpVddFZcD{Ulfk#_`G1!j(L1;fD2kX8xiPkGX;RMz@#u zy!~(d9@|Hrz7am62e@J&)Ie}d@CaK22wBk?T2)z03!ed0ix=ipI%ocvGK>Jc*4IWX zSyx^@5iccz9op*FafjPTVt17=E!u_02}^CQ+&Gh=S2=_e3p6!?WaKqMhb>os3>nUJ zyKAaAiYt+7=|et7XdHKn-~ty)cLbfF-|TdD2373_K) zj*r6He19)bn!lq88mLaN>q&Ba0l1(EVHYdk|6tW5d+M4Sb|bDwAO>oe{7g1Jgupeb zDEk3WVCOH+#@QYV+KeyEt&ek^HQx$Wa&cjJLa^Ecg}g1&<8V=B`LpA8Zf z^-mff2sltggvH^VZzjd87n^q-zjrj_aF(pRV%F)xf!=2k&$)LL9?us623|z8Q`n>Z zZK$sQ-b-hwXXe>U?sA_JY*n;Zg%gKpVRG&fOUVljji%0#;RmAF^Mku`7BiirjQ5Wwdgq`tA%J8y{Y~~+)MGO0&fgM3AQo6ZJ97>>k4ypCil%)J5T-mT086F#omn= zI36%uxz8E8W#fxwrF(miXRlworDxBfb-EL5qkqRY)}Q(f$3Wgco*OIwRJ?r{r%=(C zeMr`dlKUY3K@o9y^;h?wQaNU#U-!PBRVSi{laB$V{5cQANp?TJy zXFfLjs*Wb{XeWNN$Hvl5-@JD6!>|j)iWdwI8 z`kk=C$C;(yD!$g&WR3if1VxjtD@{Ku(CO*EIv>=a?GEq&YS=m!fc`&`W)IgJ${Qw9 zc9C+{MepVHJVXanYa4lPI8D-nXF@_ggE*I5aMQiLyixxbhzlxsF(6=a0vpwzgczgr^MU`(w&qeMm83f(jwPm zdhZ?c@TdDVv?mK~Y*wp&v@j15V6v>Tt0}HV2e#JKG?;lAJIN;@dA=l#VNZOOD7 z^Tkr+mj`_6c93Ha^ch(%aHFSvSF5pPYl}#>VC!0&wDTNXM*LvpNk>U zLIWItb0wgu@2FRfkM2Drm+o&$W;j&^SX}*@V}MHG`0ES z17ug#2la&x+{1=`Dn&$UK6oH){FTy|zc&D3NqCrHC2)w}ZounnyGjs9IY%?7Sy4iK(*9uPqub)eqx zIYGttE!s}JL*Pw95gMT!`(8?Ji@LeMS(fdBiuK$7Hd_(gEb8cIA-~15DbqqlS0&}m z2!n;_){hs-FFR1Bd!pF3c_Fjc_n-Mp_&{8$Abphj_7e%cS_Emnui|4-+gOs}GD>$y zUrQScySUZb$U^JR)%Tz92?!qP7jpWbKC~+T+z2ukOPKozrny0Kfk(k7=z`gshH(5J z_NLMq7fx*WKkoyeGT!WmQa!b=)pi@Wt3OnGDAPxPy9FO(Y3@E{1pVi3q;~reoPtI? zLc^$>IEgP~M%qgibf6N7AziDKOls3qCpZ4MJYIqc33j|A`!m0N+;n+A)j$B@3bo9j zs$a?ON9o%rYXrDqYGb}2a~TW6zkMst{kPMW2%`e<>}6O`btQ77VHbRb)t^Gi${@6Gqa&0snR68Mo1Bg>=RuyqH*QrB!XGCqbob3e7(a^?@d1J5YJE z+rV0JMIg8h=D-bXxC|xW`jFH5EpcOj7fINnIVwMTCr^B0+p_WMt<^(|l>cqWB?9I> z)1cT*54695Xq^Xdx9!dUr2q|+l|x7LdvO>PP&cDmY;Qz^qT>|d!@GCHnS-9cM{H>FSG+S=Y;|OK9>+D>j)Kd zg?4&h2HTF@2`nbQs%C0lvC#Uu<*6jG7yz3K4IJ!8 zg&0_bFlEMef;nGgG#0Ae5w^RD&g0RxDL%d3nt*;g!iFn51|*`-|GE0UK)6Q540k1f zhtZp8h}8s>j7Y%SpET#~y>zi40t4I08dvdG$U;DQHCkt%be38*QH1+FWB&?BUr7II1+1H6P=(omwM+g zFMlh*aoqrK8n&LH#HSf>a9^|8Qzn8{qZeZLlr#0)5Go~WGITIe)-keJRt{U+Cvi!9 z_EPJX@$oMat;SH*_5oyH*+e>IcM$|iKJtxq?B6dMda*Sb)kvDZ&kPkBNN!ojN=TJ;iIP50b>i607ssl?476e{ zoUlTWS{*;)k1ETd%wDoDio2FW$k7=Wv05w987~nUy5+<+MKkI}DyRjddIdHfkBv$+ zzX>hW^TPlxm>&#PR{}h;qqKn)2-xEpoPQfhy8_UT?WAVL*1h@W@385DAx2AW1Ln$$*fIA zklgiJ_kY!R&1TB5g5I&=B5P?bqwUShDjZu}@g0w?r6@D!8JfKzm~SN=)BBcB83sNZ zZ;DpugW-v;b*e-O`s7gz{5*D*CX@9GuLKyDB?FlM^7{f&*9qXMq#|E-x!eU%LZKJN zKjVCK2DQaQ_uEVS)+lYk)&UTT}$|)vbi9b2zh=fQgzxJH%xss#o&o4 zVPB{moy`=Wcw^4}FjxK^YyFv>bhuHw9a{vkLt|DS}9}+Q-%3yMa z#>2T@N_4>c^tUqImQk)y@mIx=KC=~bvZKrdyKA0lAw@NSexEeOWl;;Q0jrTF=@SOU zTD^*n8ecpWMN)wQ9xab)@unYT#g?6C-PHfz7I1=C5J?oABWNHk30^*91btix3w`P( z{z(`8WWOp*#Q^FCL_%yxL*XDeUjRE?B;i6Zk=o$Nd>*KFkF%B*VGuRaq}pHOZyVs` zuY+YqfT8b>)5Db{`Q*X5$WarV{G2Vh9@*4J5>tXDE5Y835l*;mIT=_aG|*BE5d_7@ zAuj=M;R^i)@Zv-`l~PQ+zyso~ULF{26+$aU^l(>O_Is6%5ln5ljiOZb?9=ijHZyOw zi~z^ygNhQR$tN>UNBTfHrzs4odgS`=SitwzPbOoXHwD7dm0_wX@?eJxR+0fcTP-sI zbxZ{|f^QB4KdI-#7(!(jL_=nZDr|UyxptS#u}_#So5}#0>Vx<*@*382ve?@A(Bo++ z(YEyuB5;|10=3~9CKf={Ki&wu7+huxR%<)pC_oRp0M==_X{wmTqxPhZjj~7a?-3tie~M z$T&=WeF*#27ywITVRY4f5NCQ$Jgf)niU4ep(d4X(UI8? z{lcQyN!|4*1>!$3eOEUQa|!1)6@AD$4t1O z2;~-Qi~VN|Qr8>CmL4r1yrGr1wLmbcJbz75^h!W;LgS-_BR+a)eD&N;-AF-Cv9r7nt4PLCzPva+~QwLV%y^B4yJ5ViG0&YZy z#AZa!-s_557cE1XKQ?#oK>7a`p`ve8C8O_zf7#hQc{pri?<>}mhXOm;+20OnGaEL# zJBO7cg0fd<2>sA!rODTyM5|xn7c#xL8V!KMUPm>;&W1OYwufUgR!=<}IGNattG%^0 zmK|rg1ywO))=)V+K()_rkzZ}v@Zz4EF4crr%l%UOSko!76HR(=q#rS+%OD0L`h&a| za2uye?@C^5yH#&wO7Sx99rf2CD#Ls~eThqm-==(M z{Y#i#?c{?zPF=d2;QxK!0hAVcxx$l_#dm1Zd&)Cl7J7()-XIh1;j}K&%LUlu$iy=PJr0v7$ zQe-6(=)DD9p`YY^4XVXcA|y^3y5bzT_67t^t1yYIaUYkwzU2Ff_iP%TOV=@sCZj5! zd)YmAhH8?J3?Pw41Y$sE_k*6fFJ+z4diCXRC%rr8rw_*6D3`S=xNx+=C|&KGT_k3L zQnXKV2fZqxtvR^p;=^qpfYHvOstB)_Wo?3@_ z`;%n9yn3MRTn=HLD(8K&uljPyEHu^x9WLr*K*&*9H!N#|xg7|Sa#A#z!WIfskLZ8? z__Tks|CcbcAvP`@pz11y79qBC!vO0!CqX@8!!1U9_^sH$+4B#dW8hf6thK#K0aKu+ ziT>*|0rGC%m*#tI+m+|HA~;yO%KGyfLB)qwh&+0DS^9F0)XeWaA!~* z?j?v3U+6=fnD!a7s)s`9q4NylBXx#q+cPXM{nrQ`ceo$BlJ)>$3?W65zmr#mzYWte zcz?zV(;un~jS4?NZaNzkF4u?jKBo**i=0?UL=%)@@f>?JOY<_}`y1Olp#}%dx#1b- zJ_6m_*uR6%i@zlhJ%9O;)rn7aB@7fxvx?%nchRd%N+gQgff8P1Jjt!k|1>^BvoMUt zUw*!BaX-u7`i#x79cl?Pyq2l1Pn3A!OCD)Ny(Sz$&V)|&W@&(D+XAEkRF^SW=D_zk zIs-gFg!8*X;WlqMYC!nZ@&rZWosFQrF-Fi=P2i5Z3ImedVI!X}05IdQ9Yo)f6*1jaTe zXacX?jW35_Tb4s$>~Ml^7u$@X148g@ycN z%*KLg71Hj5lW*ak2yU*Qd~8t;i7K>I7{H_EQ9MH%3mcq#w9r7qzlRQRku6+(;-No+ z<@e1;SLO9TxBdDoz0yMF(FLE0FM3E@{{TCyzt(IrHHu}?v!Ix;ZaHBQ)3&81b91FM8*O6x6C66P8^QT*xY$~nM<%|oQ~|GCrhNy z(UwpEF@Y1gggp4capiwL02D@-DMutZgVh==z>+VGsa`r81>m5Sd6ca(3_iP%jMeI< z_FOF|x)E_*V1n&#|^e zX9!dcN{Rri;7wtm4|J;&K&{Flg*kAZk@0^EYJ|*R8$yK=(L-1*ZWCP}Di(K!XLOTL zAhmX~6>+`EbojG~01vA*k!zf!lMaah%R#ZXyXDE#HSfPAqL-~UOIsfO;PX1%N}7KX zuLOI4S05U-e(DN9i()u0*kFGXFAEqi-;cb%mD|{~Y#GA|bHj|p^g0_t4ay-I*T-(* z02e1M;t(00<_a}bf;n4z%pueG@GG>8-iTtNuzmQt3HOv$lT{2sh}BZDKA5C_RK_grmb2lGL0Zz@uTVZWOrGT+ zjj_WGBgAx8g7u8!n^Qq?MR*hNFU88owy8@wr4Ht4|T!ZkdKrj^<23feCAq3yUas;KrvM3d_tU+)|PHCGsR&G zdGqIolTlg%-KaARNC%2@`U%Hghfv_cZ5%`zIC0|^Z40%*ESm#<&(@RLKsOn-{)Lf4 zzy{9vKo8)Co{bYsTS+2Gz61Zrc4e71M*x+8FWPvF;o0&U+H6v(De zW!!nFTb4QRa(9G%bBj({@|Ahi2(IMJLtWq1x3)f@v3^)L|CALOn_(bLid!(1GX!Xb zrL*PxGr;uaI2+BSHV`gWk`mEuT*=X>@Ty`+S{L2pmMl$Pi02EJSBMTmL=;4Cmuwh^v(qxczdcY{nI=E!omU-`+Zm!j>kQ(= zT@A2u##sm`!yIhrh^H1Sq{-Z9^>F^5vjY3NQ6qjB7aVl$Jm;K7uiXn71gSemqD+5@(205nJvZQ|UK#!?M zAJRYw;C@>IfEWx6>Sj;?oQHZaB5`XYYw+K};gk{7!y6Na5`u3^%!^_fK zxci2O$ozqvI*%c+4;=xF9ENZWjR`#lajQY3AXeao4GW-+t`-6%RbI_qaT2dD@SVHI z2Mlufh~6AhJ57~GdyNMZdK8Qlz_g1rA1HttvK2$Xt(|g6C1_}=!qFK;^GI)C*ney? z5&%4V#UW`^z}S|n7VJvSImI)Avx2(7ysq8)`>6(7@MIM;Ld55-5Z;ayEV6&jk6KAh6KK=ezSnI^J-TGJc=v15_`H1rP7v!+49QrJ{ zscqQP{NZoskMnB4WCxlOM2FA*>~|8ax1TY0+ruw(Mcnk%%&ye3OrzZ zij8!+o67+m4c5e%PzS&}0E=(IhTJs0!&QqEbb=ld*mPsj8D%l~ggIG~JD9%mulRpV zj`)^|a`_gAiVfnN;D-~%vE5j$^C~dEw9}Er5OPPZ9M34L%In{?jQt}G*=H3u#d#S- z)QQOT*I$r#FY#tw!;6Uk&N@2;KqT?CQD8D2>}{g!*hC`+1jFkmfg9JgZ~sORPe0MMTRE)a%>bSxk#~PMpb5*T21$ngyAwZ!W-ebKlM2 z;Peg1>09;5>A4tV&!G*AE}D=eu}0@nRx!t31CaScMzC50LIw-{o(&FZ zbTKhq`WcKk$af8EML+nF5`Tcwy1x24h;!J}U)Dt8>O{j<5a8h*1G3^5?4Sz|u|qcv z%~p(n_# zF-nDf+ee!7MTKwZN$albEqwc`l|~A>_^-bDL8a%{2CYe>?9zZe#!pImngNt4zz_Cu zxDDQ%n3P?Y_AsnCl*b+UOivzyP|leeQmwi{KiR~cuYK~idA)AcG7 z*BYt~q(ulKA%Bq23nm*@XKa4OWN0+Vxf6uYp*Ql{;bk{Ft4ABqbbs;XuH7LAZ*^Yw zp_p%v;&~tWgMW2()fRaLmw$vh-dXdp*NDzX?(

R6qu9TEhd&&_ z_3JgfbcVinkdUv8e;`&n8lBNle(V8EyNUig&W`!4@~NJhkn8VNxqy_9%X6&dM+0`h z;Z0(h$%v*f;4SGV*~`kK<+q8+)#yPN2+qtDi{9yTLQ^vDN;E7k7( zAC?xB>Hc)OcXzD9kCMC=lh}(QYXECeOGmi>Od z^Y>P^8KbucYK@3;x!>q|6rq2Z;eamvFXpINYfkWWzwh? z&vbQC_FM0U?e;M}ia|hs>blmr;%)|C+TR^Q0IFkI9bcFhfob|y0?rdVup=gai*4h>54aD6{p;fTi&-?9c5dIP9r;aZFEO$^y*6OTx{-5LeKPG zGpsyQ0;6SEc2>A;-Z4z8*$b23+}(3onm*k z+yrdZI*Qz)`7jsE&TYSCFD>#Bd*TmU=lS~UKtK3E^liZ}f8fhgcZ@&vpMQmwhF4?i zutTr(p(zWt&XsWS1hkymU0hb6fgF)P<+ir7p0NW?UN8v$^!hbiiN%7HN)hq@ULmUI z32;06vA>DEC(XgG8gVEco6Q@aQleh}jX(Ohj)FWw$SYm_l-(GIa`7rP-I`yfqxvBl zm$UTzn3$A^MtoY;Qf7#;#Jx&c$9=e=%U_!N^Z^{u%H_iZ8=7mqW_OixB)SM()1A1G zJ>~+&h9djhx%TFp8uJVY5Z@*ik?Io-hBfmj>;gzK%=Le;G_TIdzU@jx9XOi?$w-3T zW_t(63Jny9XKqUegGu66$OK!6CX|dT84;^JzK=zC5i*Xv-bDWzJ1;Z^RfcI@HiwPd z_U0dDZKLh7&D&bo_!VP(6PKkrMEgjwIi|0mu?-s%4L0;u_lC)h5hV8jzqCCLrKv{v zD;8XOm%AC$gU&^sL1io4|U0haf7t_M9h`5mMrULjaf<$^I zXI{O9J0byaHxAPx^KVA5@sN++3a;e99Cqk(IYcHNL2}peY0?28NqZpJ@>tX^5A67M zP#$HrccZQqqLZDV;*iX>PXG63q>G4dHAN8jLV&WA z3M3bz3vojUZR;(~tij}l0;?5~B8Z0idx96(9=%EUs5zKX)qyJA(SZ_j2ylYdA(5gl zIdOOL{2392=$=s$0+P zluG=FAMBzho+9CP+d2fGOnQp<1U2Zd3^(`gv(GNizUSQi zxT^LXkLtQtda)kQ!2~E!ZYe!RZi!FhAW(ObpX|_IRCq~|o9{5hgDoe(X3H*`_)cpd zt6;#)Ax9O9W%(4tgD~?QEpIGrff|rC>Yb50x>dn&lNB&1#4%6wl8g5g>$4`sNJ<$E zH|r@S8|tYHXt+-__jU#V)d3Jh1qqj#IF!857;urc;&EAR8G^{7J!$1tThGm!g=y@` z$%0}gQQ*ML!h#-wO_P+D2O~9Lc#U`*EwM`wDiwu8IoYL7MO#wL`<~+V!czt%t;~22 z;ZWxAry`579GN*$N$FTl$F|<6mZ3{eTdeq}5p@<5(;X4c0vKf`0FHwo#*R}1Htau^ zX$WB8Yh>`b>4dv0*}C8s%)V={}Ah;u|=I8L>Bc*`|-Wf9+L-^c$tF=U=82EIJ8JChzCdHijY0HqrBLwg5Bb*)P zuCB}GanDftGOv{IAHSpLVzRIJQ$&seRYm@T6Vh<_)w|#d(lDJ3Y+tb~*ovBi$sMgY zJp<@YlffMriAE;s$hQ6=;4N*$-rkGyCPiidpoDn<6*L~)f1I<|J6@3+fE>yRO^?J4 zWqwl&L>eA=CX9N@_?DJ-AVymVe-1uXV*waXgPtwe>=1|+K=qqJI1yz1>P;D;gobF! z4>$=>UneGoUkBh$DhUd8IJMM6iu;bGZqb@(VkkR|X9GB)={UsOwySY~~1zTFy^AlE|^W zembUofhk26Zv)F2*inRA?;~K8eaOzTP*0)jz5I`8r_O8VYGAfo{xiG@=dKD}j3b7LIU zxnAwbk@v!$gaBgvA58AnQ&@7 z{%i^Kv;NO0Xg5!TaVtxsmNKyr|NHGg1ON$61@9~c|KxOVyu@U2aXm-eOF+{Uh&q8F z`9PW3p=0)S-7`+7w6&I|1lEgo^zNI3H&f1&YQE+^J8XZ4?SeP&b*0ja3gGs>5mFL^ zj`k#z36;O;8a}|Wcjqhj8LYB~_src+bLvyDP3cNH3BaFtjv%Eep0(R9)d%cW=F4+W z>?UmSd(Q-WvMzMxxiX|4Z%dKwb4O2?5Ef5V$y}D88+?~OW%}ijd3uwzujFz(P&O-k z6l9iw%W3nsA-gc9Tchi@of?RP%k^S|Y&ubEr4p_ko~yb?j$28x$3{JP^%qb8J3z$0 z;ySi{0hp8gi7g)qw%zTybIG!NU7{Svx7Y9dXh|G*9tB(19Mhe=8nBp~6rx?eBXd9C z{+fW8JNk`VxU{jPHw`fVdMu&-i8u z9w@R?vj|;pcRp>7B*glC{nYbQ#QADL&rd%F^6tFluxWe(7D6`4M=MxrFd`Bkb|db0U>l6Ll~3_k{pRa&+~b zj~}rY9lJJU;nU}QU@bFm=U{K~pdPl-WG?Ia)K%Ks%OCTkuX5S?_%e+HalL~C6d<=Z zwd(^msH7pD9OtFksgk!OJ4kk=puhoSg6JdD`HhLdKNduuKQ^SfH zy~k6)3m7h*B9|9M6U_*e{fQvm01&U2Q4k234&-6rkUGw?&4}4QhJqxHYJ3E@Bw2(0 zck{S;!M($E?aSu-Ac=>R+XK!vjM7uDnwx4tDO3;$&N`OExD&|xT zjwl+e@<3uQ$*+v?P2Ldq6rmZMdJkoRXMl-Wa$KNJs#pJ zatjvahwlG&I+&`_AIYX&4ykb`^bYNflm$Vcb4~n6@?)ffDDO4L?*wT9{)IS#_7~>? z*#EvyhvP9|AdQ&<1O>dy!5abu-bgkGVgGN*1%!>jVG~~HUN8>1FgxMlN zY~ccXY#(Gk0pMsLIkJ)W0XP=8L^z|yK>z_3L&6yW;itC__0medr7QMrUjQ%p8A&rM zcOUGxVQ0!Hqfe7K;QLEfUjyI`NOaJZFpcXLBP4skW^G{Ps4lVkxKZs4!g-a_ix3em zaP}csU<9xC=r=$%4*uMz#b1s4lbo*`RTItw>aB4hTqPp?D3DCEW0_EOB6yP$Jp-&R`krI03uc)arXA54W}#(bJ1{6NW(zPBLm7 zmmEVeh_b>zvaE`jwg$c`gE|^K5>fE^~exV^_I{=Y_QM$2RLib z&DO>rwUiY`epOMH`{?HbJJR>hytp`XOuWERGFIfohZBp*udDLCx7J#gZKP!rx z-fPbeJ+4z4epi~W=Cozn%G69snDdz8VlwsRhnQ?V>GDFB_NZmelG6K5wic|(y?RBO zo6fJ_jESfJ5X0e}J?HBenLoPNG`1}JIopWd{}6uJtg^wx)l(F^KXC3gdluo{j3{4| zKzd23dfxn}hbMyf=qBWCo^@tt)Z7?hDFh9R)4vTJ z@LzVf|2z@n5Ts`)>umO5VyS&)X89x;s=(rj4wg9b-E3qc^2}(E+0v{gj);6O&8_yL zXHZor+b(uk?dI+Fd{MsIAQy8_L1VixWgbfgm6CqaA+8IFJo!!LBV5f{CW;np~C{DFcP4jvmu1g@y~ zmKdlxr39JkOLi$C9Q%!p<*O}KCL%T~~Yyh`FI))XFJ$}q%3 z)okL_u8`t~B#wTwjSpVc>3Fm&9NSC^7@uptC~_=?eHIVB6c&QO-8C&MCrS>7$KPyC z&iY^-vRD+P`=YgoCi*epQTS?tLx$cF?Z(-`_XC$&?PYyKpGd=1SW7EJ#YqRA1oV7p zY3i8F>FX}p@R zn4=zRWBBgmjycHOiwdNe%}_)}T>CvK{o z&|7{@XDhU0ufSk6cbW1<~!F`*kY%ZEUXM-v^xQ^FoKk ze*7q1$+{y|$TFG7d^s<;@DTezhl$$z;4~ufJ8p(DGoK=m;?B&GYdg75L-|C6x3tqM zhm1pEyyv^j2?ZW7O0w)@0fCn%RCM}Fb$S>@jYlQR3xvO!l@afMVpp3#b-KlbKWt|! zQItC;+b-{<{@_RHf@gz8fiLfdwbUAH#Nbc=h`5k#3s0~EiX=jS8PPGlkV`E(PD=pr zcU>J)a@qtnvix;bVc@ioCrbl9+b;D>FmZW&U8SR;xGg0sOGPbiSg(!!$+-t8G0uo4 zMN{}(!h|ENX`oxz&`3&0T#;Q=_=fk(=4Y%lqDfV??iVHcR~zuq(gLo?NQ7Gw z{m>#hQs|7v$W{ln8SE|_t?hJt&xy3rFiiy3-wnq*_wBjX4P&zTx&jr z(!Z%>4k8P&0{o-P$zA>V4QXv!AzhDxmMtDN2XGhc!k%|I|Ba5TPL^6-7m(9NWGlBa^0 zyv#5iH@Bj4aDBLvJ8uq|}kXytHt;bSe2g;VUaT9ygY4K78X z9kJYa6fXw0_S{s&AVY+EfU2juv1Au-EP1~#CNy+eRMWhpHmJDob9Z-s+kCGnO1#9` zY{!yj-jY`cce|SKZj7?h?lh}%!tN^<5BK0Tg-3POtSP+L3@&om*5jWnqhjC9_OEm` z^a-X$>xJs!QzOJQ)mPKBEZSp-+aF3FSD%lSDUA0j;fON~ponk;Yb&#C$7B-Zdwaaf z?tS?>IMFjxo8Q*fmLsZ!OPP$+<3b0HWf~ry@+f9UK~ze36St z35}aKJ1laTGKc@F3)B2M0CT)fWAo^J)7eIoB59%Iyuk4;_eZ7GCpBVmPD(tH^!|%K z#6K8u3FZ-4zTZ9A>xs^t#-R=jM1Ge_;7#GB)*8MTrbGKXVH@3V^RV*0K&m+GFW}-E zVAvEO(2>sMQPLQIv-FZ^^uox-f$3Hisl(l4SK#R^oqdepo!pzz{7q-A9v8{rs1Qlt zNTn&a8Ydw0=9i2DUpdHJ0cB83`g!qU}hNnLD3NvK${_b5sK zOVV(E{s6WTf|@Cpad#KOj?+jELsYd5Sp2S}qr+tZlaGr7KQIkg6yN9xx}_JzQa!-< z2%%uh6KPqiDCQoPxFrCIexd__W4F#=LAvQfL$C4mF*XjbX?!D^wUv)}?O%K;e(mzZ zQ`?$f8)98jn3mP|Nb{T{JR7(UxFhXvZA^GG zIdF)h=4Dnm8^*LET5h}V@~#B#=NI2>%7L}r1HbVvV*kRw=#-eE!Me@pa)d^UZ98UI z%U3Pw&NT}eM5jdA=~urE=w|vqji+bqKE2h3!@G|2GoooeeIjB~(Sv)0Pg!!Vd5IPC zTEkww7kG^rADT&vrl*(DuM=W!Xbu}|3^Vo4{J|Z0?$zU4UaxE@kJKN0g1q|08QGec zX=G|6PPa)G`U}PRwY#rdE83arbnZxY+?-rb$w11ayn2=U@d)Yb>jwgxbxVH;>@c8uvFb#y4y`akp+vGHc!!CRfoC+y3C#ei)O{44?GC8kd-#99qFA{GeUcS~{J%m>S;e_{3hHyX$`w68Y*OqJ$1)|E0#~&=QU0@$*{x z=ZoKgk2UolAud0pAT<1cvoAwW#~bvo{?1D5`;o~+N(^Ov*7VtoF6Y`qkbL#b25VQs zzp&}D{i2>`cKZK`h&AcV|5bwP5v@xCf}Vjx3FPe{@FnBPzs%KxY4yLdbpImL-q{`W zJnpWVTY)ZWw_fE>8=F zljmMQ35RYZrlgo2V>?QJhCW##y-wkp|AhQQrmL6v(e(Qtw^}|cT+MAVC^gQ?T#@ih zFk0SS(6-LWT=+1Yp0%=Gv67jotv$LUJOAp&nPNlTUKf4l8gIINHZW&$UtZs&4>|iC z>0J`#oF-nFT)+TC?l)Sz8vlob_mS^uor^HY6|kzvW-xi{mrNt($u*U?1^L}xEt8ov zPH6nsVJ_tBzo?Bn{S_U|X`t%@Zhs;xhFj5F(OJ=F4r8vTlIDV62xZZ{=dsa@v@)3d z^(B1j$0%8Y%^k|07?l6v%I|FxE#(AzA2;7FC;0!O>o%cw{?qxo7_C;s+i$Pa z{LU)=4@cE_&uB#cMy|d;=uO`KjHpg$Y<{H8ZtYWmqG-9-Uc9~~yQC*d8M)g5@ zPsAnO$qm>do(TDk)Z86?QF9+Kcv?(l#QL;_5e_p2GnrtYQayW6Osz zIspgr0wxBUEz^IE{EW}!pBUI#wS9+t5pu;Z5kb99Mw&f%G03tqA6XxwutPDr1)3fM zNNb-I#OXKW%jsuzS^H?lWJU5Tsug55R86B$czazS>JO&!7i8LA1`N$#%+wxG4opXOTlq}8p1C&0PRKLDy3)VJclsAh0n+-GwCe>m6w;V4i%#NJ%{ zavz&jn8-8yBb@$&>nDy()BleF;(wawns4CF&o7H~DgGI{XIjK@-5{RGEGSdBD^D-EIFZU|s*8Lgjx+SbO%TF87~M$v^lb zC?M_L+)OL5!(-n5s5$=I!B2L26+`808<`n@v7^sx9=Z43_b=NjMgzPu=rfA!n@ zr=Yc>`k0~jZ;2-pQcR=m`vaEvfG7Al{}$T*;V{+xWP(KREM4B#VWJordPrL+2;nIYyw!kt zrT=S=I;>Bz*r7zaKmDceGk^B=Ke^*@BJH1?Sp3odkkQ3IF=VI+CSO(Bq10JN{PMR` z{~T-se*#fV@xSuR-;;kS2(VbV^v{0-lE1D}fFp)O1$-I!!|eVNz+9xR$7 z!I{wxA7jBu`enO~($vN*Mlqw-{vW#r_cwn|{ws9b2sqg*T%^8Tduf)JIOj2g;N@=; zb#gY5%yBNJyJX1|a3X^^6Clr32U)IWF z!8dKZ2h}@?jA3I17QW^J>B(Cn$Za;D!*fRD{B9Lk5iUz*92enyw+pXRjCT=Y}f8Piw+< zSrI8Xj%jV!svO=0Iya(Uji6&?fMf$kCC3X`*Tr8el+db3$rM>|Zvn%|d9SX7Byic= zjF@C!yGC0Ag}eq=4MQPVhRy?ftA@z$b`%?!X4?C?R@zae#pPrU8)k$J%&4xWQj5Mg zB;qm|8?T|@S4PM^U5ua39Fp-9q=VRitD?MTO9*mNf^;$2!*zjfmyq5-3Wmri9gRZf zj?<*klmOodq8@O$8FlR=t1Qu1$aGjLD-SWC_>oDU333kyia`HDR3DVIe;Mp@3h|xv zZKAiNSM;F`^_^CSOkWNhX+h%?YsEG88|D$|l`-3MMLiGm!me318t+Df3kJ6}0Xs1VN686tlEJ{!0IFzQg> zGU(nxknP5r%JV;?6c43x>xK2S#aCg{(Q<)zc=7E_*_$&7GxLO zwuJnY8|3v#x@ws{%^xKu2{xU5M49I5uXb*E)Rl%BVItB%?g3?w94}D)Skkuv8m8=n zkN~V`Nk0({34Kb20zc$@kiHbii&M+d(-_$IXqSTqqWYhaG>|zOP?g_-<9yLNdsBEF zIC>e`3)^NScFAO?)QUrvI2DL3nN1+6aqekN*w7fba=$-kxO-1UQvaFU;l0fZ``U)P zLG6(Kkg5J3W=eCD)$$<*Kb-|$N9-(HV{!k^BMJnPgigYHg!UZ6DhuzV>%6q@0&5-~y8pL;*gFl>c zBO2l=()nTiBwJ%8poZ*`_JuvSc~(Yn{LE<(7(rioSey}I>irrmsk4rZfs}bv+ zhjw>?`DFlvzWMY^^mG9C3VhZy5Yo2H=gWuLo@JQlB6?D+vRV?V~s|^#S2i zhun5Y*v3?ne@b;87?OG`wcM#UX#MGnIqhbPH)9*34jJBpxL+IlR(Yqh*h@9;VDanG zjJfwe4^=JSeEYL9XUxre(>8BunveKIdtv?U?#on}?Rl)dd#p+iOaa5O|Am~jq4I=| zdOw@}&nbJao`Qudm&R_E?(i>r>UKwJTL(Bk#xw@6J{lO=`0$+dyVTqJA9{jH*VqR%tu zx4SDag6CmYmS6U0C2jo}$~La?mcsa~_iBFsvR&{0{GO_R)7gehw+4%cj+1t8z8^a# z%ftBQrMs}v@|!8DmB6G{+FC0meT_IOk}>{C_hZFR9(A*!v|uUr`^E|pO^IV+)Fb9s z#Gdnrm{QAh!s>eyyY*(R)KnI!8HoQ}$^eP#T+Brfr`67I?jQN`p$`n#8kFg%W(#+UFnla^evU7CKjyFy3{kfj_|Z z*iC7-CB7Nyzy_N0qdA|u7=e4F#Voa9NiGypL?+bdgWcU{hnUH&e5)5Sh3)b0QA_v& zwNxB8D;cVqAG79nP{80hcIIGKRY5Y5LF|gykp=rv+|ev3GWZn((SRX~J9sQgYy5CM zojUwVI}lJU>CFpBddota(FaQAbuhaJER#{yM+(V)WdXUU_S2DKO@QvoAJq0r(>8Pn zE}ki9nrOIv-hN;<zQYW-dHC48Mr>%va_T6iIY>)nC4-(tR*6W{tZn}h!#cljeGtW<>><;y* z_w#7e7X( zxf*8O*)@}Z@FzcpJU=COHmeYsxz#F^PG%9y*q(_NDGe_Ums=EFjMlJ)>B<<6eDpvXn>7052EiI<92kdE01-2^AJcuY2#Ld3Osvdc6*`iw+A!;O(B zzQ1209LT|fH6%@1N0^vz8Q~}tY^=SMtPbvO+nENQ^RAVke%^{xcq(#Z^V83f;4 z6oUp#j`eIzHqG9CXU< z^5G;?CJpC1^zfK5Qw>w;Ol74s>ujd+=@zDoHITT`gQ;B!J0-*2$GQi7DFkw?5v_XIfoaT13~A7_TA_-APQX77Lt0`X5J?zw2IQt&@Mk3&S-?cuu2|~n>L1L`CWkr z?)9HdeT~PIRMdkHtb)+Y3;nSWzw|1cF&%5*sGzr@7gvZkd^dx;nir)B8c#rXY${D( zIag%c%3C3hOp2>uSN4%k&jL7rI7ANhDsx69Sy$AMOwZFg9!yzDSHlKsIl`2*bHA7j zqTUot)V<;Gvu0~#*^YUueR8pPEh++cYY>qv>sQV(oeh+_9e9lx7Gfbed%B}=BU$#O z7K|{ht`im%G?XyiQt>2sTHQ4kKx1f{u7q<(w)N?r>|F4hR=3V)Bx=S)S(WvPxv0_& zJ-kEwtOvGB3h<@yn_dHHiOrVynjUdRv2@G86{^9&2SiM(5A4B;PNpIiAIUV-k?ry$ zCp=PQjplH*K|6|5ZeH(g-Wn^PYMY2YGKZ&M@_^ATn6pP|4kCa&>CBP^g-vHhvD}z) zLT}s>_D?}QqZROIl#FPfj81LL8v+7p`8f#*_~g8Sj5fcL2w;CRdI63=G<#OEHrczT z?}b*YCDHWmN9n5qrcd|67S^6Ycw=5rk&aTNilm~Tn8|Lg?H~aAn?8xp-q)RJC^OSS z38Io8C>fx*vP9n8$fGpOkl3>bC7%te2{&hS$4rlGpU>3PoZ%GM_?g;1t-c49fFi{I zzpQilKJZ~~{tDlQGqreHy=e^f6n9Il1dO~Y+CqtfK)Ffp1Q?|R{M=KVncyW>+1H=; zV^0a;7(g_Ab*M>E7s%EIhK-Xv)Zwo~{(_tuG5LoI$sgmhD;j5w4I3?(>+#VoNXNN$ zd%%Q*niSE@H~I_lubt2u08sS3*rb>)Sa+W2sPAI~%LczB8KH(R$c2{>5~YbDzvA3e zZRO1pD4^Xiz8L3c3GqYxk$umb&c5J$p8XQg!%lBZ3loSnxmj&vvU5Gqk_jyo01tC! zIdew}Tv2T`KY87w8i?9LU^2LRUENlW`C|yxQf8wkmU2YP|5>pu>GU2+y*>{Cd>=$;ZILy&f#X&&2n0n$BRh5oueWh zixIk@mruB(b2o0>uN+C*&w1@J17=kkK20idD2wG{1kL$yt-Y{drz+vLK6P7~$Zkc=RhX1qS%pK&8X0V0P^MuZMtM%VJP^dlB8pS1wAZT%Z`^@MrQlq8F&z^a)4p&x zs&ww;n@|S3rwqL{VnkD5^3nLGm1(CpSS|Mj2`XS~a0jq~aVA5kBG}v5La?FhOI-bH zd_5w?Ry-X=aPf9)BfWbQwz-A%jy>M>Q~!k1R9_QV1+I<;>EupTQ;LzxU;Xo4W!;yl5kf$%v~uYmaF() zaphMPX+Sm%r*_f-E)sZFNZ}>rfYBW3p1wVXAsrE=79IoyyX)FQPD^~%*dguP`aeu> z6Ewt0xB|c*1M2XDKxyPV#4#O8b!Y=OUjqt`LOQnLeq=j8p}s!49YiftCZuG@GtN80 zeh*V%wG4PT^-6zK8I;sSF9C<$3TG4)^4Hqz0YLozag+&F@1mjdQo7FGqmPMwq|b(i zjd&p8JzVjC9lFW!9+lm&m?{-HQ7Sj*q^_d|7XV7x<%oOU1Az79b43DBW2!O@DfQNR zj?|wXpA99NCSzaV5Os1(=@Q|Lj%7e4RODZTh{~NAi)~6(8Sd8OW;GgrQKln2uHWkc z3+vl?BuH06I0_c!z~x!qk@D#gJy%3RC`EWhz_Vio$MrGT#wR$cds&sy!fVNkBESSl zT2Mt2QCCYb%KSX376n)F5ay?3!Vv`TK8!N69RB$=ZROvPR29W=Hfa8qrw+kN@E`A`T%=d2WKUhMD z=?!u&Avil>mn@3rT+WkXB;Z}WIw_W$&*OwXy-Sxo9+eLZ^A}Nmy36=*X>_al>!^*) z?FlWu&zm}{*+=DvJ6snyCC+3J9crc z>9NwtQy0Do%`l&9_K6vFVX|@x$@O{Nngvx33o<6k$BWG0cFP)JOJL-iq;KK5QHhQk zn@ah-nhm&2W&Xz4TTQHHqzHd}K%Y7z;;rc|zR!7Ou2Zt7nLnk>FIdbX&r`C9%e}#7 z*4m3w_z-<%xHUeDyv^7e&_9$Awrsv!6|(!>JA?(5>GS%9M$Ga>3r#vT_5MN+&jLw2 z)qQ33=@eD=l+RaL=uF{r!l(n4TKD_*<((J74NYpm})7(^_1&a4e;q$Xb$7YSv zM^|5Vc)fEzzqT?ZGk3~Sb_OsSwnp_?AbjcZM24nIFG!^J*wJ^~A89b2>xZ^2qrTa` z#SR6#E#23BrdIPae$(si&o@1TMrj^elm*mefk#&Ao88>E&xexPNQadJ9NUJwrxCb? zo}lBK&he{#^>cQ8p4|&?cH1f0&0kuCdX%=E2QpTTSUWBcU8r6OTOB6a=d8W1q@2dQ z!vDB;a@Ht>?Dl52DYoM0%XdA^oI-0t$-4w?;ks_L4iGzoOV>4j+`atJXLLuj+;bV# zU+p7*h30m}qpf^d-bNriW)rB1Q_(F;{D?sFpkE9{E> zQfbPfyEJELW6Rs|oE*n6_tQSYSXJ*rZH-dp1W)e87Ar;Y?$@|2cHZ8wF~Tj3`)2#B zrFB)B+Pw!in%37xC>>=6dI(pHzhv&Mao9%6V(MK0OJJHXjW1T!Rd)Hxom3_VZ{%$+ z>NwW-j2jv525-EdX6@kmc5c{o<*?6nHIF1zziSqB=#l>7&dC1pkZLE}bA0!#OC_Fa zjn91>jmWDc(k$M+xAT2IMMcGm6J8f$@mWviMS(?MKUwlN+j3VIHoRnq{^TL-TTzL} z+6xk97f-SyBwp0eKpojwzj!R&qOSbtaYl!7c#_-X~lYTnn z&&tDP+-g^#<#u`VR#o6Pm8sGfwMd{*_b@i^YZyhe~7&5*f^h5ixA_y-~|ouj$@o zB)&L{TEDcSD{MK8t8F&#v!Ob);+&Qacb`#huxrT}ezqq}!3{RtI;%29xe28|P#tx) z+^90lwdDNi=LyMKgn?`BXy_11r&?9^cL93fxs{_GnOecKdOedrG&R3oUv59zT*_nP zStQ4t?V)?r78c?DBo~$2as_jKW`^d;eL9m5sKyT^LpW^X$=pE{fFCPJIJ0Kb;)_-X z{nZc`y1lSC8-ktgN|=(gq>4BUzaw=a#qUt%N{iA?730_XhKKIlurzV)R3K_+!m!H6 zQ)Dwr2)-6n2Y#Wt()T3!(4DF!-bEj`MiO$#`}Rh|1r6NID5{E5K3|_yh;R}rTQL)r zymqYNhX#DN@!-0Rs?N{Vf?|Fz1x?=d&V$X4umN+P7e0Zp+`h4wA+UTWwAvl+NQzGS zivGN@H~kq2v3MoW!XiH6jttvqqYQv)L?_Eq^OXxEPY6go-!75# zvesNc9*sJ!()A4&dgq%?HY#2%_S1==Ci4}Y6Ht>&Vg^^lo^oN8_eu$%IC2hWG=%`C zf*QJ&o*Rg}@c6h=L-m=rHx(P=F$))HFoAJ;%ek!-hZ0+AV&9Hpz+zgB7`Czbxgeb* zOf`t=D_D0E+jxyLXeadp>PVF7xo2FgR^zBJ$|>(@l$Fn{pEE+?c0oVie#VBE_DY6|2nvl*vI_G1&@aLatvf z>gsyuPi8V<|NE{4Vvdj|9!!&mN-=?cXq_Ac@AFlT7IPvNLtI>X(@Q<&rixu{hlAC+ zL|4KEqA7f%FnXWWANDT4l%DqKJ&I!)1sw!Cy!%`4m9qQDl;UWh7&>7Cd$RNO7=XZ5 z%Iy(#=dlc!#-mR`woW?kNTt{M;60^ix@u$P=6t-y99~2Q9%+j;GOLC*NyAl~uz>== zd6$sawF7fKV1d%`e9Eal>VZi<3GT?2uQ``Ed`XE{N_(U1hS_U2kAPkeE7eJEwdpV3mN7gZvQz~0y66)UL{`Q4HAf6%oIinV> zO2<&mC4|(Um6wR0oiPk!C`hDSHNh-l^9xcQKKE_<4%j~7s~R3Nc@;i)%NO0>{!Sx| z5kOF9n#^I>l4VV)dcO6zqqU@nH*8F5Q>!EIQAHkTpv>ng#BW`(feq7E^I4lG^I12~ zwcOb3G;nAoInvAMA3r_Ql9|(R2fQ)*bRbfD+_lt({vnP^wwjov1%6E@qc6D6%7=aP zqi}c-&I|3G47{}B3toJWUP@V+^5Bz!GvrFSqa_*c%&R*AaCTnZduo-U<7v3rli>ja zfYc$Eft`z=k)L~a&U&IhW=6^9Qqqc7(mSTNyjx&^dGR{J?oO?mv6J&(Q72Q9-$%~I z?HlgCpfrnY@iOYu@OR0W&B>~mTic69nN<&a=#KnkFmZ-w0dpHQhH9*RLYX$3?}!NE zVogWsOCZ3sY-Je80#dO_KK9n;P^l(B?^Y8ME3hB9e=slka%YlnNf`*&B~5qikO_$| z*&6Ahl4b2xbEPy7<>gWiB%;33kD-FSzUdk=p!AO?g*d_jQTm%K;3J7?5Jy;?KMtHf z5-oT`C=;xcxhd*b0SMjCG|okIWW+F-0PyzMCb-D2xz7eRY4;8&zClmafW^^al=C~P zZ^2YzspbI`6FLMA*{4H%H$(dJLU8;NnP8W6yDNdb9dkN|G6~FYvTPLX5>g*MZ&q5Q z%9XVpbOnA=ArnQv52%Av4>L~}%N`^q?GMW!q_~w~Hl5D`75xpsLuF9Ckwk+{(Q61o zk7q%J_GV-*P}~Wy&;0~GfESc=v35Iv58_X2mzQxzlDD7|G7t%S$X#urlBU#xzH>U0 zPOZ4)F_Z?;S}0I5%PHn(^pPy5MQM0p>5vJ;0AbXY>?8v?IVFth@Cq^TRFim+n^i!* z6t9R5XVlF3Ap`gL6fame;3h%}jR0ge0J0x4obhfMO*;04RtZ!`TPV~E{a(AA|C$Yq zA-D3wle*=urh2s+lIB-Y8yNcs6k5rrmPCV9HmV`zAFCmCNpz;j#>nVn!*{sOY!u23 zMzVD!I7cj*_pxu^CG*YoEisJ)RsJvW&L99tYCN@iZ9tEY5T9+=w}bX9U@w#l6*Cgz zVcW|d(=Ar#pSBo$bB`U0OkA-nU6^2sEH`Ut z34yVW5FM+R`0ggbh#c;L#``d zRKeHZKJcovLJ=Ei4JNY2_looCIY4?^Mkcwb;+Byyts_?cG?w{?Tayc{e5{J`A{d4~ z5|aH67$&FL^|}(WxmY!S&l(pu0Pj#cBgFgI(-Ee;5q)YyOH;oq;R#i*R*xl0bA&ti zvib5CKOmY%3;~{ZI(=nIY~nB;h_5R^K~7rSFSLw=9TWx7L`YjFW?tQZCsM-!qa3~w zZ8_gUA#Y!=e9t_H@=o{&HeLXo#9xn zArzpQ0Kt?hnPc|Nvu$)GP-`Ie0J-25DmHU_P>i^D6BpsHO;mNBR|lLa9m7z(!iNbY zn&1nZq~Q~GcWuJ2`IIEIP&8oEEe5oR6o#S|bEPGVLK@5aP94cZoZBt4xUuJ;xwZTCME1$et1p=w zF&SoW4;IH~zXGJ@6Hvwfnyrj}z~4L>jJ2BMt923wTmYwCD3gb9>NKV-1{21*X=PAQM$IXA%CfIMnNs6~5(< zUHKJGtzyJ{RN}V_%SF(oeyT{Pplw^Fq{jt9Er(|GgVWF+S(7Xqx(5;wXMx+>E& zwUwV;dcCPvr;lsXQIsg;l$p?v$u^LIFWKFVMeA(1sx-tCKO|pAGWP}DjOydkus>FK zIz=scR7y_T&DYp4f8BY}LjUoo69eI-4PJ5n`+J2GO+tseKT zwz4^WD{lWyLaDHxg!>}nQEs=d4Y5NB^B+)vnFIA=aUJfejGK#L)p~E`#{&FTYee3w z`PuP9njIlurqy{%2n*W@3EMn}S-uAddq4FUK376Oc9D=fbHW^AU;qk|F5OvoK8-v}x zRwk^{GR5!KT4*LzFO?D2%y!c|wl`B3cl<59ip1RtWQa*(LMdKEmIS}Tg$nDI(s(8D z<EnMt*r}Z^~!k(*bjg^ zAk0kOawkan%-XO`H469t=pp6($cQ-7H(c<6#M06^T8{Nb7Q1oL6tfc^Y8}_=P@Qr@ zOWWhULYZb&x@}>8Tb~AUyBMnM=MO)V4p19J4Rs)cd>*ynzeEj?ZkLzzM!qVWxOdC{ z3uZUsQ)V%Z<1*YGaZNiNc zJMO`^3!>*Z(t|mBEw2=d*ZGyrnI#M25-Y>6&jGRUwfr~S(IG3a;vOH9~*sa@!<2z4Uvan@`}`DwS~Res?m+?81{U2 zVvKgPCYxrhl`FEmQrivUOuh~msK#;%MiSMDZ5d`~Z!12?g?Qu-Jfir57D1{RkrK(xnvQ8)mBZ@=$-F(cO}_O;{+zPz++lL}G5zEvHLE%g z*l88KVIA;}j*Ke8N+wJ;J)^H)HBuDs&;K|AN$8X`Ct%~*$P0z1vk-jTc zKA}%BZY(xa+~|DD9ThPVjV3*SB7g$UK-O*BPZ-Gc?r-j1J^O85(~x1l;^#iVj;qKI z-ep8-h9V4vo`E+~9A*v`o_n+35vF67$B1P}sTBvZKpjaFGnr}Q8dL&RTjH~UNs$W} zieCx(b8lz#k-B(@i!Z8paMk|Wx4c@OfTgjWsWwMKCDwKSYt?ymkEL{LkVy7K{_4%U z{;+y{>*F>@7|j@}L=(?!6<0<8@NeKdiuojXx1!}nDgLRb{vc*BHWUr-=i&aqq>e0<#VDwha7g8#dliyZ1ne26Ft#F z>({EVYJF5+%4-%+pDfq#pa{FWH0eJp`|a*>feaakGPC7#rjVb>P_Jc_2Yb}%S)S}? zoYw*=z?a2=LZN-Z;^U9#L_}2F`=4-8aK9G@qXshjN|BQp`dqQfw?S@>n+zfYBzaxf z-LN37J>BdLR6>ZZgfI`7gh2-hzy^hKVAg9*;+(a zjPfs@4!z)NM5jV<;WtjiC@8QR$vl$|}IcKYdrxD}N zM1_V;k75}xfuSO1R1-46Iw&Ul0=Drw0FQwZh6oJCl^!8dRoJz}!m^kZ5$Pe;18ze8laLg{B9a56#EXwd2s zPe(4_GB2Q2mGiOkK_$!D=4>+(^CJ;f8rGRmQj=m7<$#h8P$Xa)I~A)5%)`a9`ZD@) znlRqpouXr&Lkqa0H`Kxyt5^6c`K<9-s!P$Yt$dQhTke5VKaMnAHt#doER-#QW;WGN z_3k_f2dWWL|4vnX#uYf0ynXllN)aGElXAeKbx@0K_7ymvtFq6Jjp*qUx*hLwwlk~^ zw=)3*_w9jv81(&Xij^XlM6oug!Nn z2I_~PWzRyWtT&j2;{2Ibx>PcP4!&|aGtVTo8?@|4( zA5hJRItj1?^CdI;O+c?+=-ea~p8`?+WnVnifs9JP9T4|IU+mxcs>KsI@KpGonqgqj zPy**>w1bt8@diuOH<8!)_e`r}D8O?Rm(ryG6=cc?jXxim?s!9nRtWm{2~g1=LzJmuZT)$8J-Wczi%-X4(L4KgiO*fCcu0Jw{^|XVu`?AgIjFI zq4a|Dps)kg4B#r9UI9zE)ElKOj$!$c$tuVX(O=Z+p_5YpqwS#=TnG~tj7GkW{&RjB z47zz*b#}V$gGL0>_U4`d+|JexDrxzXtg0KB&8F1O_8(+5A?Y|u0$$lRq-ab(=`&G9I!U%9l`>>H&dBeavMs+U*p)cNOLPkt!OOaa4BlDGNcR`TTr#HvzS;KBo!Myh zW$pv636K?F5l2*`(#&S3_KdsNqLwij!Q6TLBdwF%IwVX|ZnK=uVx0&nlBu(MFQM^j z)z8&0gjT@e{a_6-?ukmt`qu$ooCEh3+R$o%ODe%SRi)R*6b1q(TNp%g0p4)_7p7Z) zph5YUJs{;^6u@8B;H{TH%3xy5tc#Vx(3J!r#unMaIT()SE@CeS;5r;Gfu$1dS%E_U z0+xxRS+ot|EJEbqXm&U@0pNi%R7~gYY4`+yHWSEqr_J-gN8$cPTywkaS+u)rWC?Vz z8t8@|WdZPpC9$t(ZU_SoDv$Q%5j5td-*PzZ9vrWN9SE(dyKn5bRdNkwJ?e#RNPY*W|ZF+_9&@0S70HLL?0Tu z|6yks4t7NZu#@4NKh5w&=D%PEZ#-6@$J~fHLW*L7Ga0g>vRJ*e^dFa({2Q&s2J(~# zr25R*fCP$Y{1|VlDoKu*HwgbRLI7d?&Hj8;GvO#V^c+PH#xoPqk4vV%WpKzj{ zm9WFjbAthBnIqjtOlw$eBUu__ENot_YQDi7xy~3$Hw;a7KgSQT0IuBLE*ob}P7_Z3o9Z$)J&yunfWMIe6Rtng*!;`iq?D zY*|@P5ygJd9DG;L)ou&)QwezEdoS@fQwbDpsAh7r;>Vh-;_o!N>3~igTZM zw!SZ1aqDOm9Bx`z@9I^@m;Y*mSt!@83*mgroE0VMcSWo6A^Z9`CJhY!h}(QF#Hfo#yP#b(}`s5Jm@mVE$kbjLNYBh_!58@rv$KR1x;? zgs-=;z^`|kfomGu>rGjG!jv=C12=q>N9mbaqJsPG)spS(;`j-J%9uSUL2c{%u^Xn` z@<^{nCq?JaJUx}>#iEVL6|83a<>OmTSsSMXw4RQzl;I0^Z#VwQgams$J{zl3|9Ug% zlR5#$>FRvtIhNDI^UL#yqVl5m%CERJC8I@|x)L=Du}xOb13eah37Cotw^85mH-8f6 zS-RwRef?q8e9f$8s=bd|y>cs?*4V zY`JMehYIGOXhhNnUcp~#i#$fY3njw%xmyt9x|1(9d4Nl3+G%lys_8XnHMNai97tj8 zE#xJlmx~B2xbKd4*9i<^w0Vq6NLU4HgftAm#6EO$@Fv{Fq&Z~B0Gd-sy9%E23Ox9> zo1F-b_=tK0t|FjcGc)^Z3Bgk*+q2w z&u{O?iRl4=GDfW-qz!so=&zpN!Ln8_gl>LS;`&WKduAC>{DQ25NJra)o7Ikk^Q^?%FWe{vWS zdq@(1!72S!Jv)=sdR( zK#~+;xmL)OEAT)sk7VF55&QTw6ui21YRu!(nMIBN?5w9=KrbcHXfN@1agpT_Zno+@ zOVgh?TC2amAKUdZ>8zyngCCrjx=n`KwOArB(TJCC&~tkPWq)#EwB4E1c^>Q^yMeE zNE-+10yKF|m>R?0Hj-Nf$Q#KEvEy&3mTjNr$A6bakLmnCAP4}H1n!9=j?!Wof6CQQ z91up_v(I1)6=1~;eqg$D=fVx$Dc$yp&FA(@oS}oD2ALzLj~K%s~H~ z?Virt`<6```UxOJ7Xp%zYTD3ej3gZyHMFDqQ=24`khToqBMtKlNyyiH0W^PF<`H=6 z(ZirRfOr&}XEyxRfLvn|*0K2TAR@YbId{{N@BMshwkTD|C0BT1`XQQY20%uDaw|o) zf;RuknQ5e3e@+^fDUk;OkVy6jm=uc!Bk#-b-2S4eX$>)qZ|^w(Mn+zY`FQ+80!7Tt zPs<+aN>U#FmS+5pg_OM9B-Jmv=mLo!gG$5J+LwXvpf!hGq6Uy(0lIm*UwdYgQxPRs zjp?CxhN746Bi?N|pkx)`cAB{~uq{<7oRf|@S22l*TakkSlN&nEkP?-ZZ8GFl6wKy@ z`p4nZU6;U{NzA;2R`1s@gt?`!AE}}W=|D%aX(SJnHM;T$1YOC+4*|GuSc$1xThVx? zMC~bnWpiHIBx}R*?{i|4a~eEmGpT7KCnp6YfWg7g@4>!)7|E7p(Bl#YiTSJKlas;^ zGFeq|zq4#!IeQ5}Vp9}DWE`MTPADunOQLRJq|!bDt9 zE)^e<%&a8krPivv+tj9e5v7>xKB^nz`aussZ5(ze8@U|Za~Rk9)X-j*706Vj!MiK>MC zn@LD!K!o|mQGf$MN)@H~Aueme>eyMjrR1X>BFCOhrm5PMG~G~UFc@?D%@ES|W5#8$ z?GGI@u?Zvg=1T)7QnGB1NfsgY-UUdhL;1bAtkana`F}oX-4|MqE5m=hmgtrhi7nc0 zmZ>x7)=gK1<#6~@(+1eV%;>Bm{KRuBWN`oI3I{(VDJUx2r1qw+xJrg-pssjhdbWu@ zNjZmxy-Jk4N_|XM(s}VgEyws>JiIZB7xIyoG)=~%^tk$mL`7Y4 zjo-zAQ3G8yCnwda(xvq*KBObHNtyy@_l$m>$acB3U3^j%7X#?q(-*gk(=KmAt^!8? z>jW?{Y8=|oE1&^`RX)ha1og zo!5jxUh+aI^wiP}*Ymt8K(F}Li=W6M2jlKabhIhJUJs-dV~44;G0eun%AXJ87T)R& zApOs&>8U;1`Sw|55+*%*OFt9e3=cHg`IekOv8iE=2X|qEp``lk*sd~K=Mb^?-eSk; zWwZ-Q4-Ee?y9VNadIF6rRX9iO(1T}!tz#IC)mR1&JrHmLqkEG`Rrm+i` zKNZ=1|7fKDH_^qgO~|IJCB?KknqV5xQt4>3S)!oH1b~1;1*5!}U{)-<=>Ab|pH+Rx z=2rvu<+y-kM;o(C{G%-MSnD8mx|0_-|4H)4%sQI#BO69TY`<|Edn zSn@(lpAY36;2vM^d!U$C$kzh^AoPk1GlpY+#COjiobw2+Sb-PU#4zUfu|W?6sBT$d z)FxmxRMD*K;GBBF>GwqNkX)1{3gv+c27b>3sV~Hy-E_VFRTVcci%71ZijthSsH`5S zmQuwKRsu_<@#A-`RZ|%4i@-W-i0R@Xu%sxi*N4(pUO@qg&Mcsyj@6z-o+DW_U{aQw zE{b6gT)rqnc;iq7YldEMfC4N`G|VX)5N&B2c#}P)Nt+p;T9i} z&23cpgCXQ=5Y@t7k3Se0qK&2XAoPOO4t*F{y#d_+Jxpr?>$mtD&1%(v?ko_PH#Jy} zE?ngWEXR%?k^#rNixb@@Okg=IBxerrsrD2Cp$m4~xFxwx?zF>2%fr-caid0tBMX(v z+}iQFP&GN2fcasxl4J6-BHIlz*KF&20(DAc+TluF>SxST{=L_9vONz-AwVabvyq|V z49!^kf~}ZGD4R6-=SgoH_070QIB8RqjP4vb*{HF6Pkh>%Q?=+Vh&Ef_vRVAGtga zt!iQ3j^X)s#-Lutql8zA&prz0#CIj;j$N7f-UK<2QgH9hkyDhM<}j=23p^SX}p@tj1?#tv1wX6=ar~lnn6vWNe-CfHtlG|teT^a5k zb3S%l*cp0LXeRRYcfgHJ$o#gbo>>NDsn6I2&uXn-;i8y5p2Xd$jFQ*FitDXo2S4`C z_)S0(JyzBh63k!N;4A&l=oDzvYQ86BHs^e->q3b$oT*>%l*ym zt5bXS?iRsCbb9KPTjmExn})>E>;VUcr`PljUI-kh`kfTeo1sY6Cu+~w&rhZI{2kuo zT@9$4*sCeupQBniy3H^s=4op=XE?MZF?<&!ZXUFu)dmA zs9z3p;b4oqYEJ9IuO=`*Ch4$n*ENgxwdb-z@g)-{DLY_pP4G zSbUCI{pZYqhO@EGnWU#4y5(iRZ(m!l)snBBuIFwXSFAY*u$&QSIgndX+J3%oy79a$ zLHu`?0PaU$hTPsYEe8%Q&)>I86`8*ALL&GfrdoY5^027g_jYyrJYh3SPk&$IQW)pa z&|SQywf|EEP~w=RZ7`ECAXD6-?g28Rh@T3EHD96G~wI3yxY3hYgOMMoizGs zIUv!G_RTtE)h4#Y(FgBbPpl2NHJl;Wc#VGfI5nNoXJE~={3w8IJ=%V&m2|nX_@KTD z)+(yy7uns>ZG+A3mBEZRXQsqM5ooM7V4>zVYctuKK|8G(dn8Q-HGgM&7`rBEw)Og3 z*a@1_ds}nO3f6fcpRxG_Y;#y|!#hS!!>HD5VX;6fy0x^JV6@qGUT?%k#|T`qdhlyd zm!XAR^yV7}Xvk>X@vc5rYm*~x=l17rvkQMs=smbDoL0dKIFYEV7yzXC+P73F!v z`bfn|xJ{agSnLC4S0f|D-&_`mM4r|1k~0--lnj_`;1m@+yZl@+ul+=H0)_ii$8SJQ zM%ckFucmXB@xPzuF4?q94=(5Rb6C9gOhOvNlW!1F2A>BY(pA>=Q*Wt#&uh*7lw>w1=14rW1+ zg9*ENp-jR7p<>B?ju3W>$)gEiXQA{H$EY#N8)PXfuppJWY@~4MW;)IB^>2LBW#dQK z+oZ6EKDM1ags`7p(1&iCr=~f_5k^PbM!Kb(p`Nl_cV1qN;=cFLBslF^k)J<6RZf)X zb7l0?L($D~;9V)*j0P@&tpK17KY1alxR<9jBExPO1A_CLys?^@3##3SdymDKS=+qW z*H{ggqDb_Dav$zVnbQl{nd0S*=HkaNq^?>~!MBM%GL12axmTj#Q!hYQ3$hvmyp8H) zvfYB{I_CW;y{2&8(IzTL6m!YG9kDt>LnNc8pRQR-9TED3q@4nPzER;z@)enhXiTaP*0 zMH$Nw^TVU>a%J0W$G&CJ&@i$0x%BppXtN-iVNh~AO8=#a+V?n$oH4Tv!^39mZ1{fK z3^@(dD@PxFj!9-;A%BkPIsvfB)|gdW50p8b!JZKSZ%|a;1kMo+#y2M+8SKoH2pXXZ zuoRp$%myvCh8X125P&#H!#*g0@0p}wJqj>9FQk7S>smn2P)uNxKVlE%KCH6@mUIDL z&2vSWccq9wz;n%`z=nTU?)ipQFv!_GJexvbK{~(YgFjpX(iMx+X?a0tUC@Z&{p;?NYXX zH;d`!G!AYr($mxoAKM{fke%-_6A9F#aEv>v>rb+3bQiJIm!NS`u@%st5JK29k}?5gI&Xm0 za(L9y2TvdIhWO2pgIW+q_%wKI881X1Ek<=gnF_*yF{J7>8~LIuebgdb(=%zu&ieyD z(gr)NsVSlJq5*{^Y3=~_UT3(^OSoc1pEZCjsE!3pp}G2R=fx?(>`o7SXdT)JVmYRc zJ)18p5J%|^tk2rh_#lx9j25_b4qM`#`1f_B7z?PLKqa(T1ecev+Yq3Pa_kBQW4ip% zVDyEORBUTDz&Q~*;03TfEe7r^F-1}9@#CF8&zP8Xek1b5bph@aD{;HaFmd0F( zhuhlyaD2XSSE8oE$}vNZ<}7}q&^Dm=WtcrsfF&$y1yiS76IQGH%vK2ax#hNE5Kq3bVO?kK1N6{jRk266?V)QYCqo?B93IHhv7u z%u`m^A>^I@s&wCI4E-YT@qMiQEM+fl014=;jwEC5B>xK52w-|{foU#FN+xO=fE+q~ zQH;rn0dO12`S#G4FEwv;gOq^OXsMV1 z)f!gctJ`G5*jBF>3+u?sJ#<4n0K;ZAtRF>F_q?Fh3a~WBzhXm3S8P$yJk}@3P#jpF zYz_C;tjzS9mC)1wfP*B%H4ApKV!hFo2xyFlfG%+JM$MM7s^X5ER7+9xev5f(vzBp* zz~X{>8PbR96WS)4kaG6gmu+Aom2d+snL0bdzNKYR1LnxoztN@aQUKV2lRoFb3%}5fByjuX6UbYx-vJ^Thy`1Cak1)gEyvQ7Uahhw|2?PId|AjD zTK24{Oy1(i>a|E(l0KI@I`7DJl5(yD8>vezWFvzHo@I#~@qDR~@a!hLH zX8UI$!P`+W*{mJ1uHR?7c7q5sP4AoVna@`hyXMP}^=k14E@tCTFK>5^=`_puxw_66 zu%C%yckPNpxzy$7JI< zmS>^OVP=1W;wp`=8#m`iAK$SuTZj=&#lQu*TLp}NBaYyK`MWH=pKGu?TL)ixJwdJW z`XW;F#h~d_Ya)(xaBY>Cj~j`|$L%dVuU>8Lrye{D9~@h2+pX#6Jh(c)FuL+5mVKEq zXS8^1We93q<4k2Rt#e?=_in6{Ro?Af%ED{=ZEz?i#E;X$aCfn6dYr{9Nh^~FbL-Pv ze!iY;J*#zvKDy3DW4kn-eVd(WhW_eh-$wDViXFq}lt^^M=6c=lU;){CyV{y)H93p@ zaYAji3uE2Wd6!Yo3C-OB5kC=@C~E^O#j9hx%kDiv@?-6;dj61>oT^%B{e5Nh0x#J*XRkt*_2&NC@oP=SyRSD-=X*9re2G^Y;fHsSX|vDuCI{oaCNG2c zwa0eNf}mqzBKLb_>WuHZw1xw*i3qEaoqpimtW6Wua}$miE`6A3xW}-?y34=nNd5fz zQ=Hr|LDzRDMxV=STp%nrbNb}up7IPFZ&2G-_8N!s$)k84^fWo)zU7`MpVY{(8LW=? z782MSkC5j%&w4vS*3(ih4%IxlDztUmlsv^HjDy=vuARQi_hA3GXA@7yyG=o29Zzf` zB98yF*o*>>^C}yyca*FvK1Ba=bn{sf%C)&F?ZLVQ#eJc9^!WSWBa}P ze2Ow#r5lZ}ZdaSVwwl{0jJe@PH4OLsGcZ-d2~oURiXG_Rl5ggoOM7nrYviwm^trd~ z%gMV!y)o>HKSLWw2Amc)a!dbw5}!j?ipdKy(HNe_v!~tu`Fn_4D|>Uwc{(O)|D~*3 z_XnB%Pp$5d<@B7<&E1aQ&(ag%-H z?D~9}`@La2_v;W-r4OeUMoR}nVm>|Q^C#c-pIX>q(klEGQ=db-TY~+NytA>~a&rA< zt}*|ErsrgBXg0TZq?t~Lbfkt|-A1Z&~JU`xf& zI=;5y`6Z^awbg?`)T!8MReJ$D$z8YahW`nZzU61c9jmNHK}Ih)_7{rD19Y)KTCCCP zjKAuC;-ELkU|p^Mj9m(NVJe=f#+=O3Al4!5^`SkpS~0W}&z`$&GFE&<9`WRct1!Y< zL~iD=22+E$_F6M&KlL{CniqzvB)FWR1~2r~e$M4H^XrvAp=6zD&n%>QD5zsqi>h*Z z4|9L+uygT)bs<6~khAc~7QQ&zKxOa9@v{$}lDf7h5js$Cl<9F*7|ItY+td?RLKvX* zZOd;0!<<80h`bQ1ycp9bU>!jx->aeup`pW!Z!(LdCAnLdFXbH8R?(l&Dq4&@i#}d( zG&>xgnzHn60LcZPly><*FP`uJLn{j}wJ}z^DljpCY`&xaKO<|)(HP_0{m8hvP1RWK zb0K!Pi_@5yjyX45gbjLT4+W#k8Np3N!_9VBbG|e%!vf}>sP+mhJt>D30PiG4eu&zd zFdC~01FKH>Amv~#EZ}}6dF?*dwF6Uhj1VS9Sy&^ZfZNyn@SAL3nU3Tw!D^=}Mr5+; zn=l(;ohHBpZ`*L1(%Q_@J$aZAh$|=0#wK%w?*B>^O;rbXMouvrtAzo|e1Ks@jF-bXseov1%_vaB^ELUc1eG9_kE^b~A3Y*6| z$-x{+$E*e3c^7rt;i}S+=K!u|8q7`_?|W5vZSQ`M1CbYE3bW(CB_d)2Avti`eSd-C zPnjW`sC-4ROfdnvJiz^tRU}JBgNM&hMj6OXuV)5Szb9fQI!1x@80uq_1m~2eHqB(> zbv4@it7o^f&b+un71D>M@e%>t506sC*;4jeTM*Ka19vMIRGCy9#q8SuoxH9@(&Xqp ztjU8IoF0iC1`jmZDc(c%T|SI1)MFMVl5FWxzmHF$`o^rsFwsNE&^QX-3!1TpEeh^d z5+DjugFYg=QTpYzMWuwM81{KD7cFq~Lphqa^aek0I|K7tnveWYj4en}{JudB;w6Md zRj?Z0Fp};{v?R3hiQUCHdgNc}-!CbK8_d3=P7zng*BgRM<0udB;)>*8|GnUg*-VB< zdX-7ad9>bIs*q*hKHk#JAcyJAA7(&$S6R_3;;iY0YBj94?V(IJ%J8!5o+#E{Fen|2 zV|(WS{W_Eg5InA~#4m04<?xoZbL+x9(s7Tlhr+U5E>SIw%D{ZD$faqrls@T{ zG)(f%6nVgw?sRnk zOC{9+bIYQi@YJH-EMKumJLk_ilSZo3deg79c6#)`I5M3*CVBQlw#i_G)r`KofYQ_{ zFyUMT*7ZNQcH`?KXh!rxq03$UXP9XTY+dfdG4391t}NR6xk8Rbg+A+_j>jf+GijwK z!e}RE`1>4fh0yIbT98=_eq@!N#}0Z4@SW zpj-!!pEG8zF@C36#u@|ehy3rQefkv!j?w)K7`Q6dX`3u`n_qdAEU`^CA^KWZ{(CXN zoded~m(7|ui>Q3Rgs2p(eSU~`p|EFiusW0;R6$%U)sCN-GmhvAIlW9#AhZUJBPyp* zK73NCNJD<&23qZ+=}g}%Wk3h@(38|~!LSrXCcD(bG!p{r**&94E@wH|_CG)Glmq`z z#fhmsrFUKs`}%rc?py3^M-IQEZ$-e1GFC6NSQRzsF-c^~)i1+fdO{U9PoaI8Z@r&O z`?3n=IzP}R<+$9V#TmudN@ga~CM_!olc=iS6 zue(G1Fx>o_p5%8mqoD$DC?((8TP@N2#AbE$Y>pm4o)NB$-wKGyEXWechtZfU*c(9KxnTcS+PaY3)qWd z7*0*M%bIYiDYNAEw|kMT0QNV{ zOp&cAu~B-{E+X510GV^j+#ynfkfJE?e*o4N_{3Xpr#PG+5@L&c=*0mh4FTp}p41zI zm^=mE@>-9*EXHqJ^S^7>LmqO6MzI@o0aAh5#tkriJbY0>83NTp!#CuB>VC{Et z-6Ht+S+U9ldPU4Ef<>Ail8decT+ta%;3S8cFqCYQj5YMM3&m6o@P2fOVTC@oJ~{x$ zAF{#e01WTd$;oj4lapT*QX8ZIN*r)<^53lbOo`e+_!}HjdJhZ4$LB z;uXn~3g;Bu*0nNWR>w*JgeHz6_5~~*_QDzZ3~4k6)}Ib97>~be(u|xya`8h1ouQ6T zxYkhmrmt2_63}%C24yuWc(^gMI92Fe?~`0MrLQ~;B4U`?_@2S7cmq;6FIfNJZaJ1r zLtGj{f`!dYg5yq3u2ry>voN4Bb)6k!Xh(&bG?DLuN_?|hfC+00q=j=w-< zax_Do!RI)X3fAny#EzmDhaW|vxp28*Cnqyp0eKv$(O-~U-XJAR>`gy8*$$vfKeb5- zCNhF)$dY)d2W3PWVU!_EClWX@+<= z4^&JtvJBu`*?{r=ctxFIZGXKwCUDu?#F4 z5;;vS*e1ULt{ToH4ZFg{(JbuPOJDi&WQ~_73)a;qZVwblQl}nGk@c3gdKs?=45jiy zKt0_SKW0JiJmEFtK7fQPnFQ;92BYWS>jEF*C#QxIfvW`^2_DtA;Q+lWK&0tAv?7vw z_ooJskuJ8lcP*Azev$zjb#04TJvV?{Q_c|$9NelAE>-LjbwJEY!K_9%J{clpi zuoXK8XbCS-2+RTxm4<1oWdP{c8#AsMOjX6KSwUhaaD;%KJ7 zCwXPte-aEm^nD+4VgVz;nlAA&q$u{*0{=TyN;p)H2*q4Q3=pvAn=!Iuau zxuyUE=vR7VVS+*D8GEN7qrISO75M){_CZsK77d(3D5J%Wseu75@ZuM?8`m|kuK94z z!>qNt{?s%=86GUTXEyiB&UeOLZLz~HG=9toE?AD$E3?&{aZl{oicdvG?kiu|8?5;A zDf#4N-E}H}kbQHz?Gy=q*StSF7qb4y>ZzRuOPjjs&I};Mw(bFb`rB4KSZ!{`{WzLA zRahiN(OrELtUPo58EvERg4KXNAq-Q-3cwkIJ=C`ZTLCz)yuH>?deWvPwufF3JWO0y zw$ma_z>+U4(goT;`wE$yDIq4TM_|b@4HhG4 zL}Q+&G)Pe~6MbzZzG+>FRn=!94-YHf06gLUz?@s2DYHDW7X{!4O$lbl5t4Vn0d^&US9XV@HqZE5IdJ@savp4q^EZy^}lYdWR zliVa+AW(+Se|uYGU2pKEdMHR>CEw(EqGp|;i<_1aU)K=h1IX(UbPvHwVG$4-#2U2) z!2Mj3FY59QXDA-b9|$j4iWhM_@qmfTbrazX2gA#%{||*}U$-1#Rr5RB*m3aJ@4x%d zaMKl>-y4so`qd(V>U*v^er0IfPFc9*dOg(boKHeFvacE!_b(4P`iJ@K-^m~Q!bAaX z&lz`lfHDWy@h85-%{OJ=FqOYJzjE}L8?R63Zko*RCG(r$ZGRp+xu3&g+$?^Ku=Sn# zxV?uDBl@%Ls+1dIRRuy~pMNK&29`MstQTx`&M~p|)2?aR^{J`&;W97v7os=)I7n#w z#$%s(o1`2($8z);YQOSyp^kK6@yzG$Oyw8Z2lrM+EJ>^KX8(hPKMVjQ1b&MJY%dXkiPGCE>)Ef`3h2U<;cBR@O~}ktzwX?H^g++`mZ0A4vPkfKPFE zZX0)SaxD8UZ|yW0&%NG!`{`iCwW{~qpuX1g?=LGqDoCY{Zta&VMEp(88Ff$GYW(Jo z2B@R|r=O>PBbE)KcoPkknM6J|faZ*z zie6Z9U4JC&Yp{MCvl|$;@v7B^Ot)*#Id{X zTf(NtP)LHuu+F?-`(xu^_Z8=+z|~&$Oo6#v{>$y95VIF=c9U6oFSd6>%-qPoTIWs5 zZ+3jwtX+yMT^e&{i+QOTUN5?a~ zByq%ep%~0hidgTs}k6Sivpo(E`W_9l==A(9H{BV0iqWHU>(9)@UdM z>_@-{z5#nf6dX2|;0~h|+yH)bE)+bh^S^CA-WMsryueD3uBVxn-?oEcZ)4P>ov%v> zVR>wp5aq?zlMG6lT$x@_FFDv+0>wX`%fo$sVVD1YCO+>{?p{_0<_L+AAqJCaa9Bb; z4PEI9w&8F+)dIH7NL?Y%GX75^kgAWTRqhYXX52kc44=Kgt^$YcAOO1aN|cGg z3*UtKXDCt0K?p9`8H;f_qo+nqlB6D8M*?3?YLMzY(PDXwn=y{^pB5!Ii~x@;DHKNm zw~I6Jjuuaz!xoGY77U*qt-%}>*V97_*dNJVqV_^viD3VPnq&6=4$vh%wV5{q$U6hT zSeA2T&T8pRADK5#DmG=#c5yqS5gAsNZ339}5r*%{(nJn;svXxnWe*Ar6Wc5>B74nB zZXi8LVq*rFdQb~uj<;k88O;kpaWNEd-!%#52ggFFR8i&0w=1fP9qpIqVm>-FT-=5* zP>#d#Oc6;&*d&5R{~JB7{#zD4s<AR4FNoj6JxYTka=waReXyaiMA=z4D6b9+jD zetyh?oyd)YQ|8A|O;`#g5506vBxhk^`n-`*V^AS?upEpe9VHjNf~88bZg`DuC;Ym} zw)soeT99O&frWonZFPPV~~2*SsYr^Kz}Fs|~|x zSsu{q8$#f(aSEjdmv&|&^1W4~XRqXE z1z_#;@aL0VKsZ=qAB6o+e z)l(C_4U_5< zEH7LWvlc9@oc{bx7NkzfHqPIrep}evojiVtFW&zdDe4QBw@M=J=9k#;Kan4#5^_3w z!^MVfa9t(3?;h3o*|yTT`o}7QqkzG|1En9?JZ8xDNXJsqw<^y!|c2qd>Zk3no4O1@1 zXMbjYg#9t7CjHUkMQM27KGUdfcdgHOHl{3^t2mNZTflQP`Oj^FW%>IELC$A4CO=$mAJe4 zN__Pzbus_5`_VR1StkW7{r>2agj*48FIgFcAFhbA8`NsPhdzS|EH^`>4ue8arzYA zYA!K|W>+xPQgWSaS;qR@7xyv)$}d}#@b^JczGP$SYX67cM)eo6)VsnzkcHxAWjvcUAoti)!Qoe(^`F1TB(N2M>+;@b_(pD5Sid+(P<9>-zAxj*tKj^rb9|Ch z;2)Y3SX3T2nd|s#(0i(-wtgHlv#3M7tPhRrdb-}Ak~KWglJYm0iVXQ)3jq|3;mN%+ ze0@RS0XUXLhCvL362s_GPh*5ZDBwkx{U%d3sorgy`&lz^`f*uM5_Al6s|C;5Kceyd&7@`LZMJQ+^&bw_W|6>)o7Ic ztBnMTx0saIT2ol6db9@d)tpCQIKTUZc?{KS$~qbO)VIp3zA$`);`jkKUie_D=<&%# zd817}Ij^;e$<;BB?o6YCnZHrjV)y1(Bx?W41eK1jq@;Rpm{fRm|;2kZV>Fla$HSFs>3gRm-CxliTcBK`9_yM zD?rJi_N<%DLlz!WEeRGMl{fk1U217Q3U5F48=P_YsB3+&I?2f=U2iR>dGCIKVw9((>v(PMO*`A#Y23&0kVkmm$;$U4& zOSJse@~5I}R4gU$bR_Svp{$R!e7wZWG*+Re*P^;=dE$EhdiA8uv$fH^xer6-o|jyP zuD|+Ofj6!hpC4Ko*s|kM7r(yq{k$_Yhm*JUW6My~gG^Q{r_rvawuGiY zbj`g5?Cc+Mb+7Dl1BNO#ih{Kjrp{*-&loz=xp<{Z#0>zZ1lVBB4x7ODx|x)=J@0VS z^JeLK&9!ZmjqYalzZxU{8@$BQh#C#W8u`_Vs! zZXY%7x)a$t`X`bAKS030Pv-e@m*7tHN1FxpTLgZ^A}cqy^?y{~YujUS1*m56FeI1O)JD}?S6gF`B<<01xqm{Lp6($j{dR(rs9}`Nw&=A=Quw| zy&N^4+(2RUMOx`wqIgg8&r-!RFyhAooBU;Yuho4D=O0=? zO$RQ-9Zr8Cq!@=3wV zl?jMCfnPrA0@D*kpNY@r2VK96ztWC{Y~(J>yCP&P2E$7Tt<}=n!^jI-v2i`B*k6>` z!lJ^1rb79+9m~lSl~st1$0cqLnczh@#zV)ZLhAX8KLdqrn4OCN3TZz_=iOhkN=7n= z+#)0n$VGo)$^WJ3wKnkcnb>`U4FTyg&)qwrtlnU=vn-i91HI;X&%hGaj`VH|0_UHoxrE)%zn;jcnNdAT zZ@PO_RCEsWXqC*srs9pxDT_C=*AkSh)xY3FUW~lpEVO!st@2 zesVVE^x31g*3@tx%kZSMlE0S*kX1qBwN1BQKj(hpzn^Wg8uDupf;;=@y==fOnL6*C z31RBlX|sRd%s6Lgub{|udx-M z!{&`UA&+kuja}%tmt-uF>*Ak2$?4X&zZ-qnJ92ZDvgg^nHp-|;OB% z_Qt=pVMuQnCWR0d| z$~Lx!!k83NL`0}$AH+0f$i9R@vhP~Rn3?Qj-^!9LWJ~tQ*L7dl^E~(eeg5zJ z@oC7M<~+{d{yUcM_wvl)gl%mKuY1RI9&@&yud%gg5c-7jzJ#XiJ4WEC$yvBi^=yNC zd*O3lR{8iqgkTPo<&3~GH|<8I5_+%rM!zwi+k2@hboF(?|@D&H8Jx~4viPr4%!>3RGZQ=dJgX4gNn zziyF2a~>mw9UvvXg?+8KD0QO0zIDGQ&&?Q)UHpmF;Xx)j73Q_##u>{!$KNCjV`1l> zkuPOK^`8HtWQE<=J->>{eOC5ShHpG&eo4vS=Ye=Igg{Bno9_9Ws?#)_A@Cc6ESGZDG z267^I{=vlFNB+eY&gcT;totir_Fs62L5|$3>HEXqI6-#(+5f>`YSWKlNP3HFEwk6 z8U5dhqy0HpSq}|27<(fUe)5aFsE zFMlAh|MP{{SLXkR+rJ)A)B6V-_b%U+1OG;Y{rAyzyTF|Bbi}!zF7mkK503Y*&sFVA zg39R$nqqU;NN0l7i%&UgYk)7Ue@E*6-%@ZN|Fh|bo$ww(?)yoA{s^w|w|Z?b;C&bF ztMw&E>Dx|_NnR6VR+sy4h423#kcxLsaokda+Y250Pl&zuF7k}znAN`f`8cotK*G-V zPh08Z2;yM3p7wT%fIe=DZ%Hb4_g4aiw`iQKRuILWizMkcln0v%iH`IkG8)4<|^RH zn;u2~)h)zy59^Bk`Qtt-8U7@rzo~vq9@%kjgAsE6r(Xc^@xKZS|Cfs{jmxmDAv_ZK zZ2}0+e{!Wgz>s(TIW~;#kn<24%~@m9z^iS2{moVXhvnIS=uPF?x8+j)%Ua}*_6&H_ zE8jKJ;ox5ycSHYeNaoi6XGjkGRA;t#S@O)GcRywSjdJsEa^t$g0XH-t*xFT4u%8g0 z|Mgs9TL0!&|6k-jlBr$QWxvMniN?_gT zzeaD+=b%r-v}^0GKX8LPp`YQN2=Na8tvubUAJ`_UB>g!){=Iiz-f`j3TOf0gfBTgT zYyRFm|FhKf^)wK15B(?RemCwPF)YgN=>HT(UiWafJi6K`ulaw?kAWJ?110dLMRfVx z${DUU{VTdNFTJ&GE24E%Xr@f<6GK=k2CQ239{%|ROZ^^y_Xsoaf3-osZ(i4aNsW!#08G5FP>{8H zUw6hXUa=A@`eufCZpfhe&5YM#;;*hbgDY08GKZhFYO6aF`>)2?W4h0GWp;JLXy9pJ z4Q{DV700&JE-IN$8n-2_3w=HMhZ`R(yBkQ^&A)uKsu+^T(V;*tqhJ$e{UM zX*fgzTxzK5o!8c^$tZWj@yAN}qikoSs>yePZN!`46eESV5r}UN410*)ahC@V7Liq7 zv!nYpEHVV#(lirtuGK2{`)z$1_l%jNhKW0OP+&=0wFW0!R&7(cRwkSsmW&f{cfAx+ zMDUnx8WXT09hK`w_6s&%1Zr$l60%koqGk@Rn6r_#v8|)BkTsg|v|;aacxNt+SP`Nw zNWVVWZ^|<m1g^0k*5D&2f*kc4RHXA|@(Ckw_4LqbD^enS@d3CpUWEG;%gR84 zyrkg4UkoZ>tg*qe@2teB8+kwv#dh)n51HqKnmCHJByGw3dCwRUP z3LXz&do2iV6*wBmY#Kv6W{e58ySSqdfcIlBRDF#4$AUH63U|FH`oMaZ+|4Q6!K7=b z(btLjFn*-zwzuv;v3zPfxa1D}00=akzK67p^^Oh3e)9=;Y;$}dXv1P@iqiHi``$c){3 ztNHgXDnS#aNRPYY*({X*yG;{n3ldGcHDY52#GJimgxV`XN@pUtVUEp0E`n;tYre#m zPMEe#I71s2=|n1W)GI&(z!B(adMAZ(>h1zh-fOs_75!^)2PeMLgE-mQjFQJ9{YtnJ z_5p%9wS5r0i@ZZiJ!3q#gw%R+@R5I$dRO4?puJ3e#I&Kn8C)@ z^B8TEz~iT7=2t~E1NAnkWyYZdWoyEMhWH5hXdY1J>$PvsMzt{mB2-OlO`l6^>TM*O zX)7$B6NbSEuHfE{-3)~TfxjlSk=vqmHCW6sp$K=#=YP#qbAmd#|7V@lg50H?e*GE4 znZEWF%(fJ*Z{GBifFePqrngK87|;Bi?N({@31$F~Y`E zc(TXE+mJGlJ%^2L^6{P_H8F9%S|E(j-FDA)-4T(5$V7 zof#^igwUXFH|i={s0v6Y;X7a=V}JsG>QXI~6SNq^(sR~%_d#9W0=x%wC=AGZ$L5kC zM-vBze(z$ks!Q!p$u-$C)fQ|z5=yUe07m_+6Isy4q=2$60%~pGq54_?eX?r(Tn~YJ zaB#mxWu*iE-!=hm)Ol4dAqnMTGYNU@N^Ai4%9;DL$7N|PNKD|J_jb#gCL-D1+9pUy zHtlA2LqCE7F32`^risXR^Jz^a&)6g#D5pAJzbclHv|db+Q7fq!P?mI$Se6ZNXf@izbdUkrtR=Vmu;E$90lD(+mUYN%SH2>WQFc4r_gPO zx#V5C#|7>qh$OFRLX1nAUuNOFM+AK$k|A@KgYE6fJz;?&q-|K>k?(7_rh?H(L_aK0 z1w5^-Yc=p$!=F>$dF-1n)UVv@>w#Mp&O(aLUn{;Za&La{Xo;OU5<(7j?Ylo(*zexs(XC9%9W+NNxz3agUDlCkC^Vee z>DsKa5bIj;*{&!4le4o9KFfXJiju2y#iX!nWoL2*^GCn)yzq>@Yf16uhOlZO+0Bh- z-PG#CYT5O)*mBp(p@rfS=NB?huRq5;^mS7}zMfDfE17Y4C9h-c^(`x~B1FR(EM4N0 zw>Q7zt85R|a~n?>UC);-03#&Q$LC|t4F9y zU-RF&6>s~oNV`f_+|yqX@8)L71i@uz$A1LvpNM}lI4btewH%boVN8M}?A+eK=xogo z`YSJ2F2#h4B4<5+Tv7;P0mFr9K@5-IKacB3UnsGF{~XO zlx_N^txB9=Vl!YGcA@l|Y#}0`MyaYn{JNO#T5p83)A(u2-5r@Jq|H{2O9Nwj{dxy+ zA{d(?LQMIdR^$$;!WOCyd9>QJGD-`>)MoE#KMd0@=F}*;7FGZBK&h58mYF?GD&AY| zf!dG+;#OlgF0q!(jiDYj=6=AZeT|#it4<aQaxo1M8#17mb z#;i79d!i20`2<&fa7SwBCkTlfngbFBTD0 z9WQ|Z2hQC{bUNW{Z{aPbKydsqcXa#5PNajSruX~Ea9oH3Q-Cv_@Sz0A(uZ$D`hqvm zgGiw~{EpBrWLXET<~$a~hV=_>j?aLLosg&-6w}ScSJb8UJU!a0Ha&b(Txv+cRCVEW zcqj6z>m~l!fyK83+S8H?i9Zf1ugv4Ef`24BocD&t4iqk0%l$^4Jvdm3v-k*9nlV+f zGP}62wcu%;Gg4_v(DP=fdq<>__l*@1{L!7rSLmw#g_=l2|7oM8+Ym9{A_BY<8B>V2 zFTBkZ0Gk~YFShp3AQD7_voi!zbW04arf{rrx{Z0a8OTaHu3&0k{LI0}8-Q*%Pf`s5 z+GmuvU

>Z3VRxuj=%I+I>o(X<|p0F81Q;a4lZYNu3B~XyZok4=(xVboZi?qbEJH zW=n+TDKWu0ZkHBDBh@MiAHepGUG92!C`zl^IPiGtrN56zQnR@4?cZBHgUFgt2p$oPT zyVOzzofKa?!5RKopPwLxyveZxlDOFJ@O1gZ6EPV7ssLLQ-g?xb-(-Ykg4e=7KwpCu zCq-e+W!O4k1R6|(W5nTno+3?hRcb!C>}VUt3{|jdlKeBy9XH3DEtme_`igv%zF{({ z?+KoUHSRqSsnQgSWA;66g+&(GmFb_M88 zlOhnxkfRbt&OjRt-lfaDpi_7Gx#uZjNPCq{)Asp=$7O*OLLPZ4tI}6z=z>i{$b#?I zE@(W^ez4-Q>a5MVXjCVN9^{4+RME~`@g-7Tgx7r`4OhgKZCFZhL&xYt>~4t?BmJ5B z5Y{d`ZuytU_6i%vBvs+E%L3bxrs4GNJCF)QiTeI z*KeWmgyIko_t+0p8}QpYOTyE$aU)`llTJR_3?QnXt&>F4DG2I$!-UD()Rt2q!O-t!&1fH$m%&V4&qYP3Ru6Y z5-uF9x^T}B;ExIK-8hWQIA8>6Kb#0rl2^=jzY?^M0E9+d(%w3RX%OwHfpqmF+S6wE z<#Jlh?;z*TRrML16$-zQ{=TG^apa{vB;}o8hRk#{&ALfFEHHe}5TRiPssydr5`PTb zr;S#V2*i1iempdg34+$xvfD$nb3wkZ-*GMo5MA1{Bu-Dd8m-e_G=zM}t8D5o{B_N1 zCqharoBVE!ekq8#TWFH5$m&{F&LCU9l*kM$;fjXi+HxCaCfz5&<4zAr9m{>-ZQe%a zc1Ak3Jf#g=j{@QXPt#~!w}$}s=)iRQK5D_N%c!!8$}$Fo&wJ+CJv90QzTh@<%qlc6 zqhUrI%OOcz#MAvFoIw1zCX>}x-O(ko_2?^eEC&rdcyzEE;m_`c{QyT0v3~B;#bm|s2#Q;+F{icX~bG)(Fl>rFFM-8}H0m{3~Sb8YG=H8ie z3pU)n&pJ(yD?!U2fM>sVG$pHQ{ETmn2SkXz7l9$nQ=Td+L$73jGTYe)rlSx6XPFh^ zXT*b}Nvix739>7)nhT@n07I)FiL5^`il^1MN`efx(T+ZZB+ci?X^86|+apNnCYJ`# zo8qeac^OnQpc*=@o8cF;FUu@=?sNOkQZ1ARTdUTEg#9_Bomjb7(DN&zo%gOfwcKR7 z717F4k2lAwmtw=S8fF<)%(Wzki*jvnc(-Sk-g+PPe29r*sS1DmV{?uJZK8JOwnykN zT=iM(mXnMosm?px0xKgR87r2Ez;KTlGDfTSDsE@J$|Ohvo=xU4^dpM!dcvyFzK+Eh z)F9%PIbO!r+ZF?vZre~IyQ3433vY9Uh=9AUitrMf0 zx`LzB%Dj-m3U6P_p&`Gdx{H|K&G`5vo39L*Kj(u#s3X8}WfGI2kEb3Iwd4#*lh9a4 zh@U+q*);UiIK=2s_3zKVTl<0leT8^RFf-ug=!MjRc9w@NqI>z8>|IHMfvRiIvtsj| z_rf0Cxozf$D;Kem(K=X5FQ@Vsg33;gSHK*FKSO%GgV8g$nq9*YprIhL`$a0 z@%ZvPA&ur<=+^4k_$SVB_<5Kq9crpHyJw^Gj{#^ zSHgyu1m(=3T~iX}cjs?Czf4{bG{Ov|MRE!UZ{G3Tf6HrsNBk=PaKntHOeK~WRbDv1 z+kW}Z%N}F{-)So&eO~$nZAR5uxn& zZgSlfh>cI%2XCHPpmL?zL*kZP;sf6pAHbjrj>p-#f8F;fzIX0RvAEm4IrsS&MBn0+ zyMLRH^R9PF$20o(+$sR-3ZSVub>HiZ zKFO|awFv8#S;7@OJ{Oq*{F`%vZ(_rl)J^v>Zt0{vYzY|K#lq)Zo5?u7F4u8li`rK?eIUb=XN zNqm%E=bdQ%+;jEK%iikfQ;$|JfBk*^Y#V<(>Y={r3wqh8@UYLUO--0Jnx&U!WR5U)Wx7fTxILkMs7duy-yr+Y+YvCkNrNa!3ynws8EFPE}kJrMQ2 z`&m$qh;p7>P%de+tNYSs{Qz^LzJ30@%3^c#_-C)VM}eJZ9xjjFDSpX8;<{;<^1VuN zFk@C#v21iQ@cR2*MYVV?Z@9`7*1$$PwiY}(XoJxe7504gaGHbF+@cJ9jBAc(2Yd&G zG#!#os~OL8{qfx69=n@Hn3mIEepI>Pwc0j2PdiK{BQ1m1Hn}a_P46K&@p0sVA-p4` z+dWS(gHiZ-o%RD&IoZ`6?P?{VcQq5KyF#4}Nu&!SaE(-%Y2Nu>wtcEzC|#_V6{MvlR7jfdx3rKmP` zqv4%ienamaT~JTW0^rQc7T8{cVUAPf5m$mZFi1Ut< z8I0c*+eVDvwlKPj)48)dd%k#Tfa^|O58xtvR)^%C-BIoQe$;6{2L?43$=IEUv{vWt z(}x5w({&S(k?OHay-ye>`x20f0rjlKF4%TU6#jtZ*_}_4kzcbIg`+nHZ|#4|Lz>l} zE4_CGKUOZH!5fw3oaIjLYu%_13=Nk_LN-iD4&4wZx_qj`~(LIok~)aK7;H=S~8oiTJ~Oq+8rXlOYfE1TJ_GKzp4aFGR1Tv zCxDE$mOT-WR=YneP|@U|2ygu(TFMS3s2m$e-MY1!Uf*Chn|>faT^HhVSBW0O3v)Qb zz}*VA*CKHg$T~i~!hQJxy0)2>08@Y(%+@q7{HQ+ehK6Cyt)P+@@G1D`nKpLC+X9{l zM$b|z2qu=jbQS0d(lpipgf{eK-P|XK97Z%p(}AWhfD;kr=H7p1YoRi>V^EK$KIuJ9 ze^(tMrfF69!Cq1nGt)bR3;hNk=-U(8bu`1iaMBAz*@Q?3xk=~&W`K?rs6 zN=yDmk>3s!@Hb~WZ_11!nhP&5cPT+#UU!LMYcHa?FSQrpb?v;NMTFU+?Dvt)0=Ggr z?I8vORfjwkV%520^YITq9>@A2!n7`~wcN>p9yeHI2Qq@n&GhT1}!;uSRM-5Ad4-XHOxdVtUOXpT=?IPa|pRKRm#Ko9!8 zHqy~39*#T4?W}zd4W6A82DzR8HdM+&655yv?PeC% zd2y_$)p~tMLF+V7;*C0?7nD!MWXgDT(YoI#G;bs2{wCi}Z1aaFbLf)nX74I2BC`x3 zp@t*f$M$t7gCNly9rlnwS_(FHfH#bj>NK^_4LxCzf1!wry->BV8{~G!VEv-dMtKaN zMSXOyP!&h|{0v_GjG;EAll<*7BIEH8G9co4%!y6j^W$%pJ-R?@^18HWrgaDy_fJIF z&SZ+k32q{hrjl5=3X&?4HF&~^mLI@iTF3TNdvCMlC4d(Th8ZeG)2~h&iD%~L=FN27 z$!sk?)P^91+vFL!N>aUdoYG5HVAYvH?S^vOQ-HrnjeT-^zUnBrY2$0fp|GHvhxnqh zT!7|x8QaFA6C%2ZWW9?>CnrMEWv*>sMA|02;H%Y>PR5PtR1)kWqW89`2bL`&MG}BC zw9wA{#M;oTn9SF1rMT^!n&YG&Y^K*SqE;aS#?v*U=; zF1axJAtk86>HhQ3Z&4T;(iG@ZLfz0n(dExGfDR;@adCx0NoSlVFn6ce6%h>Ri}EuYSEH!GB8O$u1A!J2>!%G9o23+}w6z0T znsqeO##3H{C#<Kk@i)Ilelant#RDFHhKOr< zSHk7&H6w7^_xdcxrTo1-TuSUfOk9?tBw?QFREn`&!w>Hn@*a$aYh3qrTpC2?QO!bY z@B$e!RjWd3$ zH%ON0VSyST@SKZ;wH$D+w6_@_vp_|qW+(9`JyUSDrIK?1b z?Kp1CGS@ER(um3uL&%*l?E!hTi%{PELh;`-vKf6GNA|*~PPaa&<-n^8(d{0CIjzo_ zJ|YtpcW5uEPO)t^ObVqA;dpYT6?7GXbzU?B5%`khc%e;RHx`64SE5_XMc~fWTf4jp z3#>vLjlu}mzhEi};ZZ`w{MbzLEUXx53e?hE7=gwCYN(s-TDr`ueUVS$8nOj6ynHIM zH;5_IL3{cmb)caH1fD$tbeA%R*0sJRHyN7F%1Q1$9RQ})ZwZ}3=@zo z=XkcDgG)9MY_Ci>JCT=;NF{Te>OndHS?3`pz!U@G@4}LQ#$8>=goPFkXfkynJ=4Kk z_NohECNy|Bxafn6ilkgFH9SV*1@MU>8OT$BpShuX^?~-cF2nQsS|>%_mtn%;(tmF+ z45x563tTJ}{>Sy)MO-eg#W8+2)bP(AG14D9P`Nshihh^JjVGQLU`R~#f{lJxhT;j+ zau~ndiorcYscWH}r7&`o3bcl5_G%HKkP32JMP-q_Pu3$GQ((p|%YA65WbVVZa}zb1 zX0?7;!_tSC5$d*1Pq7yf4!+(3j(LrjXGA zyhE6DuIxt)kY3s==q<+%u@NOqjBDnr*TPlR*D1BcNMKv3q_~zi^ zCF%x3FS(+DB!lst4VOtkwpZR;fe}`rFv5Oa%L6D&kX1*5`d4JCTvwSj@Vgc1m!E`0Q(E%HvY7f~D8|?)9}ew=+xl7m=N;2YdpG zSAhsvdG(93kO8j*#qun6XYIADIU*)9aML4c3E3v(wwRVQa1I_o&9E{sRI%=^@93 zuAF&3sN8`YN>HocE_1^my5g*U;|of1UVaP#HwoEW23@wZ;d+Y}d>3*-;_OhGxXP3P zmam*!?KhSh5ac%WbNPUP;=ccGJ?>y8!KwI|UTg@-v(XE?h0As~>%E)Ey6G0ZN|R>D z7u{sI<=e>I=~zBXFdbb%Yl3)>2XWoMcb=X({Lg|i;D(-OIzdov!DhqArN&^$#yW3b zR>+1XG?OF%D4Z=x)lSV0I;mOJb}^JQNp-4*0psIessrMT->|0l#7D*;i+RKYJ?*gB zoBcqVTa^3#k=@llbSRr#EygAl{1~r{bmBK&9cq3|;-6f12)J}XlG5+j|u%Ek( zQ3Z2DUT9Q8k*nJ3cU{TZTl*La2TuB5mHTk|{l&HG!x^YJnLxPD>0Uv~Zgv>1dbRYf z-BLc^S9dFoV}ZCepnS95oKC_Zl^ zAZ4&s$JV1jC;?_1XgD(|A|8K#Us7M_WbYkXbEKQs>aL7n!%~N)2TtU$p6>;o0qD<7 zc(Tglr`lB@L%=7X^T^6xzx5V(kfIB*>t9+QiGR2v8^5t&qr$tnjNX`U9iNo_;1U07 zOq{g!yWmu<@9 zvvp?NtyDEqjAl+k7G+6iwPtHiPo$~LzZkfvI4)%7-W6V?qy2>J{Z&kKeMmqwglF@| z5Z5x}LU8Ir{esS%*n^pm>m$M$a8k1bww4|WI6x6sQp!WZ8HA6;v|>ZEWvx(covedW2fd|iD5}t!|a+ao+32kFlb&?=NKDv*2XOF0CErJv#N~1pRoZHiA*a5x(;-yI@Ov!>6ds72rgS*5a1X8M!jU6EdGnip54ckrqP z>dfM5RG)Ay2VMWQgf{MR)E=Ur46kl4;R1STNxM__S<1_C7SBJr$c^Vu9y{^McOg%g zAAR5SD{67npzZ3~gET4VbQ&;7|Nbb^T1NjD*B6Y-AEW^(tzh5XX_5E{n=NQXn5=$( zbEF$-1u34|{X=el`w6#suR)%PINDRM+{5oIraU%ZRu~T#b9(m(zsqTOd|a3IE(fTv z%yRa;O>L_WdU8Y0)Ft1o{KV1UGg)g>QXLx=e%Drs29{>HDIGDsT5c9I0oUd+=s8=T zcO|N6kT7#8#*Y@#OW?%%=_r2L4T%)?=QSLNAvA+&(A~yz2Xg~Oe!)dLtSgi z6U_lz$B6&>gKv3zP`D&BR9>?#k2rP<<>@LFZm^%~-q@C&` z;L<-jgRtiDioJ+y6ltokwLL)Iu+)rUoeBu9#q(7cvH+jwH!MVC;aWtos86AAT;;vk z0bw5=pwlD)#oshg818XHzjV!%Uk^?PI!P}Fys9|{0&W%7=dYZjjA`3kRr%I#`CEgrg7P@J+7sn8bw5HF`FeN_yPBu=HD3X zgGqnd37(sjudezuOc6KE>$b&oO|TvuTt43y!1zwlTux&Ns#V3gp<^Oa8#l}za@_9% zlVrN~h&$RjL~eFV07n)nzb)VIo=(jReb8~5Yl1#awTCEaJNtRyon$XAd-0xeZmnU^@SpD zC_QBFs9~~V5{}CgxD~49n4|j>Gu_>ctR_dIPejma%t8SvoX~5;y{|(we?@!-tmOeZ zhKYDE==tgadb=C?!6_!fYoGv~=o)&$kQv?T2qtRr-;|-G>@pGZ zX9~Rfq8UeZWFkV!XB?48XIX5>36!-bft z0KJ2*f8Um0*u$o&&TW>DSDIDfIr;Mg+H>(cK2ptAlt4nGWy`G1Df!j$azm0`y~p?K z1=9%59cf{KDj@SCKhOl|{W-AADq;k#t8s_8c<~$fL=@hJ5W3?dzavVc?3s5@N>yJJ z<-KMo6ch^tlPh7;P!vZGI_ohaMW#pR>2YN{zL=G~j`#rbNnIplXi8%mio?K5ID>!a-z{NCp~X5;tbn&bB^A`lo5 z_QC|OsSRQd$a>XAt z%W=>V5}aO#(4z%{Y$Wt!0t`g1oRm)@a?BA@hcMN|gZojdPpmx0Ir(4}pq^AlYAy&g z27i)BHFI@&1>*;bZ=48k2i58JSQcYv7~LuhDncCmQ`E=;WnP{f48kJsC?YT%_|m+2 z3gh6(9*f9*dXspx1=Hjrz7q+e+EM^l`hx*JNe7jExeIAFfwPh#%0&x4&*CS)(}zgF zLzpE|0%RUVGS2Fll#juxtYd!Te4LJ_Kt>p+B<<-T@@ETZrnVzwbYT(k805S9H>(z8 zfa_U22Y*f;mN|fPCC7l)G%@M>s8z`grrMNF^_U^Jt75yr9OY&<ufJ?E#P3OUm_Ruz1@;SV#*NiVi#$c5fR;>s0RYz#nJo27s z`zgAuIIX6zgiA~T3RtV9v)7E4PJ7Dtw8uicsD-rlh8YlK(l$xL?uf%F@UL;M0!-_+ zPB?c|R?6aXIWxr$W-#>FEso?c!6m zm0%eI#KpT8M4B#RZ42&U~wWl<07)qp3VK*Uo!l+XehWDz=-q z8GiZbZv?7YaWXdg^j&4>O6^Wk?ruN8tHyEL!|2C=gtrrDl!8Tw-_O2rZNZ(JTH6Qw z8kRYKRtbs%Mn&iTMmfo54x)rU&}nBF^%;SCx6_oMIu(si85WDyZKH@%ax(}iDl|_q z>#CyFkc;nP{7#2yB_V|rT~W{4H%|V^t2)gY4XE-D{QN3LO+FEWHvvD3Xr2rL_ zH5D7CoYd5}>@5@`UhLS4zjX+n``yS-fIrYv;DAa=eXuK=$83eM98PF!bzfQv2cH5I zP`3y#i)pf>6G;WSQ}^Pa);9qYdGKo8O0KjdRrATUPteA-`iwN9)Z+gQb!m^F|S{7W(eR+SYu#i)R#*8&OEFv7UuGL=Emu43s5`x?z z!MQh*uKDGvK>4&^P00We!N*cUbqP)A`gLZ>3WcEzrCbf0j-6!S3|1&FR4zYeCxL^;tNF96$(zT%!d%-zRoO!P zn4l!!*r*m-%AcaV;6&sXjG14e5HChRIvnWDQQnGQ5D%>MrIY(g2x>AIzb|7tWpFW7 z!lLqemkyW*=?G3;%U)CQLe+m%)|zcYWjkyw(y#e}6P6;pRJf1c>b-QuH^xP_!EkoI zTFEWfV!89xDnwyREhu80eqC6!*09lH_A315-D zTOVmDzCuhxo~%cV>x?cXtdHqzZPNsStO=Ul95>2R&BOK#?R`s?X?V4su`8=#hNS|1 zHA3mNNeJW2{GLYQtKF{$bOlDzVj;|%Z^AewXqp3efd@mZw9&-FIGvBKv{D!e=e_f& zPO%?XfYNiq%TTHVgIYB#bpzUg^WLbKF&$e&snHdRQjeygR3sz7IfTy>eF#^t2_%rd z7TErKa&H;LTYFkDa`Q!qw4wrWYQ~u)%w{CKN#WqnSQ|#9Kota zwH7i*(#w5b6}6$|h4}}t31hPZnI0B0qbbUpAC*BMIba=GS(aW+TtY~~CI$LJ_|94_#o zScLot_t@1a3j|{xa&slxXrlBmSNphV*_Ak%fu)WuD(K%D-;aCPEgyz1=FZw(PA8nX znD#C0#st2gpJtt)_@?J2@_U8P!)cWvpu(L$t*RaW@>t;4m+4$am0a1L=(^^3=P-Is zxJrvaoLj?F+74K?=^FbAw_oU)sBaXd8Jla%t(@1QDy}UvtUsr<`r02~&-liO?^pN4 zlU7>!CM3PfIx)U03{!0OWzP}sA5o&mR7L0)S1Hesrly|gliBN~-^0AV47|~gEjIqL zY5zhj=i`+L$;>o)71zy*^?St=%Il-vU&;h>%B0qpslz&tjrrb`IP{d$8{;#txEEqo zD?N*;7mlQDe3hJud@S>fP6a9>puB_=<>*cBZQLEVRi%6Qa||Skp2V*%i=I_iBG~o2 zuB~~;RJQG8|KU67HSf(dch%N`N@j*>r6El_Dn`iwL_oX0qYe#SuxWM!i5VO3jq5_< zIuy|#%kh1)3OU_H*Q6qsUKpD%<&P5!++Kb;^L%hazjQQ3r&o|=ES0q3AHRI1ENXv~ ze?gemDom`=y6`f-#Mfo!!g0R+p4`hg@1v2a=2QlsU^>I_@<9i}ri<@|RmSOnoU@8g zZ<>MuQXD4s^*KYp?G0Mxp10TU%c%8jbN*E}^j&YSWpQ&HZg@1Jn*4;9tRA{iQ1o8@ z!FvG(SG)fGVVn1rAR!XOA36lR@3@ph2MP0q3u#FXA);=z7W;4MG#;+Ff>z`s^F#$O z4;(``Xbzf5H5fVFs9o-g9=37JGTJlI{^MO5kHil@*YzLavkOKSY!cF1tWjZQFPfVCe(yDT_8U z78dUgO-XeQQV=^7N3BKBL5Dn5g&#eXG+Y8EYPIxfO% z1(mcZiFfC?fGbMC7&P`7-S3?Qx8NL*CoDb5{__ z$n=gr|EkDDDo^(=Q?!Ijm_vU>mCf zRgqn3Z2`WehH?4`GIWskklE5!S)&_wo|$4CLIYpr3I=UdNL5ZpiyB||q9h_yu7BKK z*yddN5My8dQI;y5h-C9+Me513F4^=vw=rKwQeXK3Vxh`PC0~Gv1@<1V0SmmG0bW?kl6Nn%-aDaJex6Vm=$HBzSaSyMA`(gZ0VVud|(|E$@ zt@P0bIdErm>4lsp47OfPDl+JGEHcFg=A{D)6G3${?IE_o#bG{&*6Co@`kvMfb`PWF z*su+*2ZgEJ|G$lC-s(y-m^F=(TZExJk+ zRFa81mrb_34V7#IvUWc_lTI!J>A)#rfiwlQot z(!#$^|7d;t>S8aGnHN43F_n^!(RQ2& z??j?}cf)s1u!{8-we`&Ril@z&3*G4f8K#sOh;XbXmLu(biBRwqHrs}2;iBDogSi`0 z#Kqp%vYlRscyRef2}{Q4rKiOqQX72Ae$WbV9t{zqacYO~hsehcw;t)GG{--A@{E67 zOLC{t-gP|)t6}D7ei-MthUYa=-rI}FbD?mtzzuu;#7_&>Z4dh3hY4eiHIa$8-%}=W z=LBEr%&f(sybr4WCc>-sI2l>j*K*2uWFn0A^c9i|GcuaVoZ zZL=ZJKePFsBD&nFS+h8+|U;%rg&AyLQ{)TRNX@tAGA5)`ZV zV8^h-E^VXzhgxyS(4sqXFdN4AZNJ%2qUeH=*bo>twtMMoaoaf7hY`dqQSQ$^vHAQe zyM;lN2r>6%E{d6!hcs=UWa*+S6%-x>@Z(i<2wFtE6B<`8jzs*~v=z#0Kq&WLzn5Pu!x;)(fJ(mIX%Crx zf&;fgzl{v9eg^kxg>!=#9TV(DTo#Z7SM9w`#5S3+z7|3!a_e+g2JmP!0w3@Sl;i|S@7laQdZ zh)joxWsnoI!{{|8Q#whE9|tnO+x#h)sH{-fc1BRavn25!?IEP>r1x&Plp-!(zFLWz zJ^v4DZvqZ=`~8oPM2SSQj0&Yj4I?w5>_jM&bqHf0gRG&lWlLEys5F+s*vi9N)MzC9uH9XoYL^dD+NJ;wN;VgHsx6y2@=ooSR>{Tr?01 zBd(7pT%Az%o#xKO!2^zO8~oX@!T~dOG^>=Uym7xXR1Gq{r>pnN222};Gfd-!_Pe03 z!(GsjS`obqinyNFJn2lHl}!BcBiUKeU-SXj=+aP!{p^-ws!8C}micSo-8iH)QN{Ok zW1Z+!J1Ni}N&u@&^?{*NB`@>vOJ~5l0eub0su}Lg3m=y(&kledz8MwLD-X-8@M}yR zoGFh8gJRs#QNQ;;PvoJ`NSZjhA>2_Hz_Mq$EUV(5v;sae(dZk16V$&6a>Zk~1TqN& z*wvVafLz=LJzT);ej!MBnU8;xD+Oqml+T@D!D=Be?&=XD1$h+Pz|j=N8k2_yq)X#l zR`h#7o%cks-nNITdw_=ZGg1qq2b*yqQ|R*i(RyzF=x&$Xnb)wE)YFkfIX$a;Q$m1_ z5|oDteii~?je+RB)SY1Wua>O+_?UYeFUjS_1X&pIuPP#UBSvY0m8IgOkd}=8pe(F? zC0m*3x8p#2u0^B-Fw9+Kuy)?>TXsM$Z}CR{RuF(^VZug|lEH;VY2a6o40pr2jCk2P zoR{g!R;>FQQ~wMbFiS|9>wFuZjQKVS0b;^_Kru?b!nj{XDp^iYeo5f7P$FuO4x?Pw zbC>t{MY6XxRJ|TAkH zcc+H3-F%LC=@6-$fa;y`%yfbNh-u4oSzkI4>A$);wZ)wGG=or+q$fG>T6$(WTI;R@ z6s!ygptB_v{9DnG^iy^CI(PtEH1bsa9`ez=X{1~iOjW&TFc1cQ|K<#3yMeuaDd5XHoodceLM8<-ORK`_S91fQ3M|-=dniqXA9G#lsej3H%6X6$#kv0E&LtArCK9M|q)R zCVk>&2(N^Z*P{ZwC@?{Hv^oW_Zjz?vaX$S`q$%)4yxfm%zTn;c>l$+2boE|76VZ<) znR!wNP&;ZrVye6|eTq4nx%>-H{?!<>4Uz!p5t|xq@zf(j zB`Ymxa9T{`Qp~KY&uROkx#XoxGF;F~I#{rBdI**47l_(!Lawu3t1nA?T6Lt#e=CW1 z2Y$TbRepv`W%PZK0uOXPeycB1HRZ++?uOfkKZ`4C=y~gw!C<2(>G`yYm?`A?XV|*p z2(05oWJ58N>2QB}S>v&H8(7i=bB=pU51UiXg6?viwW-2Jo3-4moV9Xi16WQZ?e?%M z>6+B+$jXfaA-rW@w`(^?cE4P78}a^%-kL=3EY2<6eeFI!N4dbhtjN1PB)~G+U%ooF z>iwg3pv2Ry_?}e*q_aO(Ze#3t1j}k?M?WdS?K9`@TEtH<%0ZUPEn4OC9EJ6=PSU&i zizuU|;Fo3Cq%ErN4q`<4h3!p~g+;gB_Mn#$Ma;`{6FR$7DLu3N37mFzzH=Uj7L>Q+ zoVJ{lBCeg|T{9Vd=+Sb?$L~ARW5kWcDfo`jfW)QG5XdE7=) zV|vReJKcuqudm(&EIe%7o~hHhrU|_gzT0T68okk{5x=>+GmKCD!u`I-#Pj)9HdURN zKkEH)Ku)DX%XcNx^eO8#ypqez1-V6o{-B+{l<8u_zKrsLx!0(NTNSPCR_AF+>w~_c z=Jh+R9p~dtVI3oU{dUs(Dszxr%P7&CT$es04VDwG%I+NTdF)8uwi<}lk_3Q2l2%~vE-y4$o^Wj+bG zVj7~>kD|Yj0F`~+;=U}B8IVAFkXI0;wf!TBv!k)%IvqdS_SN>0t_0kb%DE2*aCsYw z20kqBqgb!@*~4?j`AjbePfr(_Xa_XbkPJ^gYfYeeB0%Uy>zQf`5^~+62TzWW1zR7i zTW8+CPZm4>B0~4IWYStzJT_j;?~v{j2dEayu@d=Z2wc{6T3CN4@LK%CDvKKMj(y*4 zs>-=xjh2Ct`?>zy596jB!IfS`|O zae&^*;G&YI!zg(uVSX*>HGlT65Y>MrGK-ElWPTV7!zhiEw4#0{GqJvrH43Lp>GMX` zMJd=FU}GQ?9<@1AMUqg#4HxJel2zb}BiSPYtH^5(P=^unW`HJ_7PM!k;u3=Q1TlZz zgbiM+9T9ShsNiMua8&KWLyA5mdoN=5RKztBCa{=cY!QsmFE>-gFEvEvdr;(!=sgQK z%)rDp-n&nU{UCMg>Qlnw22|hP1A7jHc}8dQqnJ_7=l9i!;TA@=)p>aPcO`lF@89jZ6X^_T z;VCA{?Tx7yhrnXojyR$Yj(C>6n7|Ekawf{E4(D>WLoT=t5vCsIX+^c^*UJ(n#^Y*E zLPCD0Nd&MdtAXO-@fm`WZ$^hu@)%F#N1cViTzjuZfoq3(*rF(Yjb~BS|6#x z33iMhFCE+V5JMR(E7<7@leElF=$46|7J1$TuN{0b>>SbL%*Ml}Zlr8QCEFL}@wpopmXPUSgl4VkqXlc2E7TP-p}s8xr9ad`7I}>_ql#pr zTIBIIDfB<@PT>mtfGNG<-EN{FB|@fJ;~t-g)uGfedu>VUomgMb@)75aL$#i!uBj&`u*&#M zH3C({l4=I#AIX=}#scLD;9_T9U`y-hN`S>2M9mW?RUW%;lgyhXZ zmU}!|WN_Qz-FzmQ{gi&E@&)ixa8?rcG|t7_#YtN+-x$0UiHaXdnI06By(YBxWE$oS z9dp1MCsP2Y5ZUjLWnr6@oEo@~y@B&|7_|-HyiSo^NxvSHzdZ%5cXx*5oR_@Oc$b6t zXPKl)6vJ$ON(UUbgslGLv9HY0PSiG9onodAGyWw@V?t+C{A23skKFA?F^$K( z1t0&n*;9cg4-ksS#YCUuk`rVc$xP~#ZnVx|3YuP2`D+xHGZd`1u9-#==|N;W5ZiOn z-8TPX@oUiU+rWUa7s<)+Xi0V9uQ5gn&B%~8gacBOXb0-96`{sDN+gGg!WC{pMRtdsw zeY>mqzD0HC_mk-Dp;KGJU5K(dfS>U{GF*~Y(u8gKOsxT#C-svY8u9ysspk~tqXPR$ zVj`W`%}&ZU=JOlMH#qh{>}sn_$m*@Fp5JRV3Fl-I19iZj%?}& zeE1?TdZNp(TNW0W;R4Or?&Bo-XBcf4;`i5JjFc06KP!bZG~z5yH$EI%uPo>?nT)B% z6-bFr#thokfq7BAd)u%V0wS9ppI~$7lpj7A(XVof*Il)+BkE&~O579ibi&-S(trmh7GawM zkG@T>2I#9xM(-MxjxhD1Y`nmv9H~5!XIr09pdu6CJH17bxu=M+tan(s0o=YRn(|kO z*OEQ!@mZ+Alg*Zu`-VD}P8H#&nn59zhh+-ev{+u9bQ8R2@D$8u!r+d+4#y}T2B-)w zZ3uXd|1vi2XbRR~A@DE&)&QyC6HbAs;1dD) zk;m^fBonsGLO?~w4o`VYRKTBEM%4_yn0wgxP>Yzk?Fpr+G-;@oI^Q@@JndP@WIMU4 znGEl_!t_>WLmHMOszX$BOfm@+ws*Jg%JyyerG+{fQWiJQT5Dbal-Lt1U|&aEGx$0D zS{61H^_ooHHlUq~Dh8SKNfuVA1)Yitl!eV!1Df@eK;w92c93w;1J-C~ZR_xm*nU#o zbAJ{ISSXU98(1tTp#@cTK^x|Z3=0sQ)khwF8ILgnHi-AZ8xt`P%Ua)!IYZeaLdc#o zk2Rj%yXu?J35_-<@4W_7TAH-538NmoQIEGT;*D}5>RoW(y)qdHYo(tlE{y z)>@T!1 zX-V>ufF-PM)92`~JN1uf@aKs)j&}fd0gZNAf9+ETxQ0uDBb(bJYVTLQ=f#|SX9k9M zR!XX79h|(pww#J%wr`9yk9c`4L?pkPovqsbxmHyYn)z;?j*~@$aTJwNOvsk=9FTgv zxV`eTIfLOx@y{Fe2HeXI8|jaMZr+VqUpUQUVmF3r*dif5hY=WWudbocKDYSOm-$hJ%rT6f}f zI>BON39{-V)>r?!9d{*{QZ#yUop0T2@XCfNZ0Dj!=@ID!_qo8~pbxyB2bR5>J++By zJ&`YUh%+4*w?7~kCSHc5waC07HNnSIcI_SVl;1b>mmG-LP+(bm$9rbCfl+~3Ze7P< z@zbSacaPrxGS4RWoNoG-KO*HiyZJqfE`wGLdrbp1jd!M5MQVp_HMiG0Ek?s1=y0+f z$t{Y_`r{l2#)?%c!oeb(v7)BDFUwZqF@WSSB#Jh(vV17t}#aT|rg7eLu7t#VplQ>JC zr-@9NO|DuWm8yykF3$Z(s!&U5F*V>W(qF9q7WxgqJ6EHo;zw@2tu49fTJad67wvW; zVo5t8cmyV!&c)@P%P}@fYk0YP|GPEF5c4w67bg-=5&h>-Y^%UrdUwk_+j~G4s_5p( zzuo3r7?cQFk*ZSp`7|@+NSQwVgL7&_nz&ritVOnVz07vKX=U{*co%JD{0LwP8Y;qc z)x&hlm55^G_WQQZf!-dR#(0~#E%oJ?6YpehsXg_*o=r18!?yl<<&*WLw>=-OjpbWS zh9{xsp2(()1zm9Z(u;a?*T?#6%u;eh$OW%gsQ%R$qZ=i7OFcK_#8I+ig?=VimgUi^ zm7D5)dlu}K7ur7USN){8FZy`t@b3d9sEvzy(0O&H&%Ywg=NjR)4-x!TwW3hFdvmfs zbjMveGnt;TRY#W;U>XL8GNd3Uc_N4F@Jp)rHwjJLAu3bwF^U6Eq|Ih=Xwmi4PXl<^ zFcU5za9hok_0CbI0}lXa$GQL|4fE&gY%Qq8X**^0m5q@Jqk|#Sm3Chs`@$QQTmfqY zzd4HhrU0|!8@~6%eJ-x{Fn#$eXM3p9h|jsWLi`CxswV zf~hw2BLs^3;f3Y2v$L1MO=xf`jWtc*=71F4QFUqE)MbDj}m-B2l^sK z?l2hr)_XFaVpfNr(t*ZJwJMgd@p1#*0Xmf*j;q#!Vj`N#i`q%niKue=Nf$I3K9)48 zh(C5)v@vz&pgUX<7tTAk90e^5NGe&1%2^_%dyRDsOB9 z{_=C2HZYQZI^d#vbu#Q96%`Ox93Y}|MH2c^Hb)Mdas}@Us*a*mYw`8?w?SE`4-zmi zLGd?5yXwh0eB8HC%9M_gvW7j>5rjDHDtXC!PshP)pjx2QKm_hXK3?D8LI5Nx$H65P4g`85qJPX7VvOu=cB2^2>Jva#+trFYNws5zTKR>+RTjk?-H4W+6I zrD5+9Ct_lnEZHL)a35PvQlq{^cEA9z5B}2y?b(6I28ao>heo`8XhICdQEz|1q1tAU z3Pyp%gYHFgVtdgLF=R^DyGG0EA2A}ya;?)9%bSF$Ry9u?btkc(g;dqcg_y*eHG5!R(OU7c8M8Nh zlQ96Sy??4M*QLlNxIkFri+Cw@n4R;SW!TT|vtm!;rZg&L44~fV2eKHhBbw$$ZjYP; z8_#Hu>AWQM-^&+IsVUXrVao>akTeX~y67<7QYCgV@^Z2q6t3v{$l0?*RCy_lCL#nd z-!$N*0OAJl*Qmx+&UTW_W2#6yBJ2zDn^wu2oIVub3NaU5u2r~H@v7Yc3X=wp&jVlE zL+{;F3qYi}igYyADH#R2!c$zq?AZGIffaVAP88zXbb;<(>o%}!LJPr% zPiN9rtQ+m2-jAv7M-1?T7OxP1e>gEq0|&VHuJ_R!%b0Y^^8IKR^fSj>V4$(%tbND&YmigGS4J@tJsyPP%#OAPHo9M&z9r0+##?YD>S(eWfUaO5L+ zsA>-l_dwsjrUwl{)CzdZtX51R*HuyGF|>SIf2!ZmtGw)G3HbGSM>Y38pK%ZHap3?R zE5HW_PjK49JYUlZvY^wDwI36xhA{}}e}JfMnQ9%_w4j=SX}3{JO;PQ<5lzdL-U_KT9 z5K#*Sq&52+@|)4pKw4PFG;)Nn$smo*}cDzBTpf!V&$rRmTp2wGpwKm6*WeR~>1)r`JEw8EgO#S>LmtV%e>y>0CDmPEHs)lJe z_}C8Azu5Rp;HCrtwnyM1QL8UI-CH=^&bhj)DP2))0@>$~=t%x0A@xAuZEsTltO>k*qZ zNb`jJr&2HWDJz1JU8;a~g4z8c{wgJ+X&B`Wgu`2h5`d|Cpdsi%gaN+PLrFj<=?1C| zbpYFDbNt6lIhQz?C|D=Slf@;iZIn+P#{5M%Bw9@w$C?`+vsdxu8#r$ri1rJIsrC z;5#*?mq49EKYT+{2DB2Nk+F)1mb?qDUAycW7fOVDV-%nUrBOM2lnT3+W#<9K0Gu&tn30 zVzY)Y(3GJD`0EC^QSxJM%q)CNo%IeH&lOC)t&V@<0G%0@kkV~2q|Ss__r-7 zmJzPiinxX^8H@n%LK7M=QmoOZ7&E+_p}e9;qZL|_64us64QDGu0HaBZ zd;zm08I=$+)!GL@tBX=qcFmSzsi@{VK2G3neL9AsXCl6zZpuJJ5>Tj2jZSD zojZ5n8--p)a-@(_0{FoL&)BxpOI8HRBAR9`BSM~@V540|(F6J-WA7O7L`2hB>kR<@ zX&42Dpu1H}9-zDFRBe6Li)Xu!x}r5VUDGjI0fraAK#$9Kz$wQT$wi)s`~`_5qn*tppRSjZ$c}yqhVI`SsA)2TNnPZf9b*7Sz889ssEMw%G;8b_^IS zxG#Zn@O5$dCVx&UeN;EqEQ64E1fBvg93+zF<|j~iug?XGEJ{!9R3$%bbIVk_l>w zD9HnC0J?}DN#|i(MHy6ZMmy6V(TX7!Nh>y{N&NkwiB#Pv|@kF}T zA2y$K>^fO(6u}@ESp=Xb8Exo~nBIfEzjlT@dYYNflvIr?xD6@xM8m++d0PIsVkX=0 z5W8Zg@t8e`(w`zX-wEt)V`8WURipzE=14WW>N~6uv18duZL_ATX1KJ^;Fr#B6v|1! zs#wrle1W|DJFJ!;Zf;qe_rACtxkc7qEK&1OXexQWoBLq;!0zM$z`tRir+n5j{galH zWRRW5!0fa)T~EJxzjs|38(*;`I>ESpUg+yhe0izTe>j4#isWSG+oZ;ZDEIPu2euq_ zjEcL|Zfb33f4+2MJZ3BHb3Ul;hBg5gW5rCgNVn=MMEU(oiP)_6Q5_B1%9Y8-ZcRav z3_7a^MK9|!rqk@1R+jx;2cF1mjefm z9BqwvE!{9K+4iX@oi#4GFSVdoJ}R?NwaatsZAs-!n8sNjGV8Hr)Kay4C4qgOq0Y63 z_wDvj&&ks~!>J~L;#g&EVyLa&ukJN*zS=HNMMSjz?)d2Cn7BnT@DDpuK#1ca`L|7{qr9 ztGwT}=Tx!f8J_%ub^B%P-#&Zq6o6+~Kh?KD;W!h;#Fh8{C)!Q7C*4=3C0$ZRN=A2C z>h5%$&a!u<6jpch#&UYbCtcIs1gBlG4x#O3DPNaJ_aLbI?j+VXe&w~>)(7~4>Zc5& zau`$P;^u=AuiBHT3}f6r+u^)23UBYVm@g0Z6+1h|J03h~|7_&VvQ*R|Q59cqO=v=i zQsuqv_YJo)juwk*q@#e2lCs!PHE1toOIe>7;!qDT?f5z}>23YQ;(q?eI4p zoa$kQyr?F-7Rk|M=ZQwL=dshqx09C8dWn(xA`rG(hwl%I9?anjJgr{8!10l=b`H=M zZ_6;IlI=@H-BInN&Hd~9Y2?|s?rGs68zM`>eHkdo@uZ?fsY(Gs2m}Eh4*BT;?pl(H z@4kCA9Vgfz5W_3UsD=#?a+U{bS%8-@uUUZ)mXQ}A zE-`c1xGW3;dGqjXLY$VJfdutD-p#Aij*Owo>_{0sq`2U$8E zf>6X6fz?j@`bqK#o9yjt^G$~!@@jqvS~6XBG2y&DG+yyV(;+O-nB#>jfEmjJliVVP zPq2{*jtZ_|{u7#N7rsb#GM#0?z9K)g9%Sm$XC#fS`9oQl{7JqIHps?dGE*YQ6WqSe z2YN*RLt_v#nKrO}wu}MmcAtz**iIbaWkGtGmn`XQ6>+{gx&>RPXCdI4Iq@?1UTDAqK!(V#{J8HZ|#o$RsThk@dGdu zn%FEzn-gE-eqcxm0M!o#Sb>#IAo}4?-H_Y@BqMjU9~?lfG}176T_LaNFGw0c9$Fa# ze?zWs-*FETvW994R)gOqWU&EbLk9eTbs^4pqu<>1QQ?i8qwxj@Yl{O&q}=nwvVcCA z3dy+Q^~f2`1P9 znUhn*C~UGNMDD{Ma-oarBqQ>L;NV~FoC$nb1f6p2Vv6N|v!~RfrJZ9*OpV@+&N<%{l zv$NT*0!I%Q+_o4SOpi?Kb}Lzs&SzJwY$wGc#=d)^ZgtGFG0s$YVWn<5WHYyXkFUFV zXjR0Xf5Ua`&181&O2>N?H=6J*EeT=`EBUuD)o>u&eoj?yk?) zzndTxS^1@7quWsWym*V#4~fFtR!(Zo5yb3D*Cw`a51+cyU>f^hPsR_o$n^+ZS{1$x z&Ch#>G;DFu&3xHcBwgmlG3=p+?8FiUb)b_i4M)O0-Z2z%jF%JR%AWu3=rErXML3+t z(m#W*I}-M2cFjNESv|Pz)y08HH%r>Jrb@=NPrK5Uv62&<-K`|YO=$>wQkjYJG}2&D z;+qF{rtf&d$1{^Pv5VH9t`)o~b~TS=3~yg?{E0T~>wnaocfwkn3UZ^r3EJRBI|VR$-;DGJ)#Wy*X+7N~X2o|{uI&ZcD;YI> z{f2&Fr7z=V>!ng2Kqzh@X*fXDj=${dd8y+yv&Mrv52!HjWt3y9<*DVRZgI{t*oK;#(FTtkrszxRLWl^xH9G0CyTWI)zdH(@ z%s*beZ=8oMp1t8L(5(ObPRmTpG2zq8F;j*3R5;Gut~=@rV*dLv;ivT<3y)9gU>inb zvx_jsal_bv)sNatfQXmdLuFTEREr7kHypo88uSmVPc&F;iA84;UVWVXzWL*4xA=Yg zdpK`pd|kBj*uD~cmSZ+)XmEH)GS=J4_{L?%CVZnzwYE+8PP0Aq_{<|Rm*uWd-0)TX zz)%}Na*)e0afq*tx6^{D`uZa$a$F;t%*0}EFs6i^`P!DJuW1hn2ZPFX||hI%z;bh*YWSRWSWR z1W;`FJENV$Wo!a~R>*p6fVy1dVa{JQG!EwvX;jTNwY#Z+?$`laHK-WU_wnt>y)RM}u{k&?<(E4Lsv!h9$;o8Kc%o=xhOIYU3 z@tCad_HnYVUz=BSvDWJKm!c<#_KTwiYiRqc8DLDIY43TILFKDL>!8Ajm&DoZ(>Kl6 zmtxyTr|0PB-Hgk_-x9Il0Bk)@7GqG7;-by5z5NGZ=y%E*#lPHuPlqh){w`SftKKGQ> zcbf3?!41YV^|YM+i)+JnV(PQsYk|z5m+sxFiqQBo(D; z&Nm$DRh=F!w0fvnk21LWSW6{{N+sXv=+_na$Rj4-@S#G*^!?PC4OhIk^=i%fl5in^ zolOF+ATP%3+u);%YN3n^4ptYbh7S?7CV&dq(w!eKbFcaC&=_guwu!MY7%^1hWveZe5>PoEc(WLvmD=Uf-6HTbN#Igplx+%PzjfcC zkFi<#6fT0E_@$dcF9!saYu1WZ&OD^8IP|edZhkQ^pnZC!tgF4d`?{=ol(nsI!-!Qu zKZ()0H2==s17T?U`hvNBk{~sOtzt${Q0ll~$}6R(4W_q>Rn*i1T$7(;O^AXC=dShs zsOcZ(PHsi07+&CC&AK2&0;D|bfNlJ+q3Ox^L0M9tu)0Hnu`x8hudn{*O)RqWWfR5D zH)oQ)K_|=j?xA9Y3bHd6e9_-DgCBQ>hSutMO=<{FE?S%87c-id-`%mAX{OlVy`32I z?-yGbIF*Q|n<#Tc=a+lAm~U@A8X6j6?9;JvcDHhxwEXIgHIj0(aJQY5wx8+7>EW4L zW?^Ca9=3gyuPZHcIcpi^1+2NV4yTi<4Q+C_W0ie#S~Cd5yVA#ut{yLvJCaTyX0I_9 zR>Te{2EDBC@-kT5H$SfD66Alj*5u7i(3*w{9Jr=StgNhDwucCeek-V;Rtl)u4M=%O ztv$oZG3#=fatk34hwCm{nmZeW|1dT*R2Ipt=lYhj9jnK6VIu|-u2@J>b%2Hz${2i- zYBozR&8!pjIJ0o&e$e~o0l0)lOaglLuY0dQY8*xl{o>RXgiC0 zcHc|Ft$(p4=cOzrk-?_b^5ofqB_$y>t%qr9TsiK;W^^N><$i;>I_@OdS-c4foO!$8RSLGOzl1bM;s$_>s!v7OA0uM-w>M~P0tYZ8y< zLw5CQG0q}|ReaeYmAZ+{xrxjJX)Qe6>0er{;fgv&4Y$t>-}$<9ESism>}X@?G`~Qu zJ=8g|j=6O1HCOU7mg1--- zc~7=omfd%Uk$3Y0$;x2La}>1|aldnkbzj&hj(459CY4$|)#{CoX*spdk#b%*;Hqgb zSh`k8UL{EdpLcNTM2%-hk}&%eH~5o>ed@$fw_efTgpp)di{mSP?aTPP$Zyzg#v2dA z?<&bZKhnvi{g7E0v5kQiluYwpUh6T8Svv6P8KH<7#dGc3xOP7Wevk zXC7x~-oCq%B=`;bZ`p+*r!+#o<#%ePAp%ZH_}yC0e*nM1DMe0F$I`ogVLFiE!NY z!BnIZR1w{DV#XY_c?0rVkuPMz*F#BvD$M@(X1{8kQ;xhH1vpP;Vu#xWQ#=*$?0fag z|4Ncal%-RloKJ>(Rq$yBuwmQaNTGybulri*CcUfAMkY z6l3K01)jABQyNOXr#INzNiWE!fWA+W@99AQ=-W-z`o`a;pr~o5sR&FIb-GBOv-6Gt z6IhY`=?gDyE??)rlrTpD4WU4P{QqhwZ$GtP%RfF%+Ez#RE4Eu5L)5a0)&C2vzD;tB!*@`aB-8d<3%r) z&h`$Sm@SE$sBO)BM$TY8{i&}`EVr0an5RM*T(kDK`Z4zMxc;#Ck9GV9!C#T8N(lj= zIDm5TPkh;?fBd*}zd_6y--T+<-_#4<=~Ozbkgaf7q39(gxYNQ|^AjEk$$#%*n{-v_}-*(}5am~&|*aQCm&bdEP`gX#L%!ns{UCKXC@bu*Z z2>t&ojDXs?$$RR5+ROKjpPSbH|D-A&+jb5{)~tnAr2ZBhK4C>RqQ7APMZV}I_a7Zw zC<>4bC<49}-gn`L;dl&R`+t#!)zpVu^~T!4)V)hJmgs*H2ap>|w=Hw% z{>yS%|7_bob^+`7ALQl#Du#d6?o4}9D1RK)v(MKV$NGyl`yxXAfsEsNke>7q1Aevj z@e2uc0cgG7BK8m3iRE})+Sh6R@e9IZzpX~^KT3`x?bXBotG%DZ*7@DJ*>r2aB3^#) z>mL*+AcqhlG6*jB z`5#07r+NPS3^xxS%L8qjX=W%exEWP5N%^o=iiu{*Axtl7L;bJYZ{_$oGb&(?s`NMk z#PL2V>B=7#IS;=S|JOYYG=^)lS^oFA{*~{nCt~gVt4i|^^0569C8a-<~TH+7qRJFl~I|cOLw&%sM6&W)&ucepcoFnK4<8bvp!9ySD$uwlSK0zA*Rf z%CG$ZD6{`2=nf}N{ZAqZu7mCU(=v{=(Bq-M_l-OH9{|AKO8(aD|G~Hc*zK$4L~a*| zC-U%Q&6Gg0)&;T_9o+sml=)wa#^2;fjNCUCQ?ww7uV+S`T@Q|2oF!%BUZr#Kyf0s+O17v~(X5Ihh)`K_n#6QU} zi01xtx=Hk6f7cs-)BDvsOBl<7mjAzL1q|+r`0>xi?oZtf@%_EKzuV6L`?~+5%U6nr z|H0n<9nH!0Ce#0~K;K^hv~4Gg*fgD3hWsPSl+<6L`!6d6q5TiI`47tuK(IsuYSTAc z*hj%I0HOHk4=iX-{ade>0CZ&)f!i4s;DXccef<*-Sy2mmjM=j+5buLyH#Y(xhyTBxubSmWN+z2&O^-<(3sJvw5M2L4rNENzp9o{#PL2unzs%p*hcPj({{X80Y|n$gH0CZHFjd{%c&9(Q zKVNJct2x&7@P)9I-PX-lAARz9LnxOxx8iD6>wGiKGcL#U0b*P?4A%@0Br9xoerD0l z^o9#HTy*t(toEdp%QS?0=>az;abq#P!}7_n~voL1UWuTCBh0 zmy+R)AlBR>J+9mri!p?e4e?JZ2Sp!`c+O1flc~6)%BI01kg21?E8PNIFE1UyRI->a zU5242Khqf3hS@iVb#c3(W$iYm{2H8Z9&3)sx!@B;Kgz2RU$FWTJX5%T`o%P5ASMrc z13XnwmM^(&wPczcB8zPx5%g|=Coe68xv+XaacskO%BQ_!mNeyvGYuDHikaj#irkg= z4L!I;q!lG3xgmG1Bp&wtj(8z^B~gp1QZ1j-_V9`KIUm|YH7@t)}_J$^RW#pv1VgU{%#e(MEdXQ-tH{k1kF~R>Ox1t}xf*_%R-~ zUk6j?JEoBSlqqid5K7wwGFGYT5RnFQkG}+O^O)*Knc{krK{$_5o_x}adc83UfL=(o z%Nb`V_pke2QDH^X@FwpC9fql+7R2|WUt0p=o+<5?+SGXQ}@&_Xs2e+1)j zjTO1K8HhBP`T{ot68I1qqJQKg51W$jy~B$0Jg>9iHxEW!o6L)|EU3ZlgH+N8JBxp^t_fcLo*4W-kTbCym_d&t10VaAGv7jVNTJ~%-qK24~?F#w4o-qw`z@NE>@sR|NiUIpSWa?5P%FhtI9H)T;R1Y%(wJiAo20!(fDnGe8cj}|% zRq%43LlHBvZ`y3ixT9xXCIsX&$FmG09b?_H`*pw~X7_H$4PDW%$s)rNOn3TGZISGd ztRO4!Eue9LUIc?=mD>^O2TM9X6Wke;!51V=2E-ffXQ*oDn;Ze~i36Bg=RP=rw#e_$ z7)XV7QXU>cdt}q}js{s5-#d1wGTgLMN3$$0UpmNnl(O~H8fx!SM z2n@X^g1XSDtzj9V8N$v(3IsB2~!$mLXLTANdyB%xhJs<_yO>g86b0!-;_oo2g^1CWIND`=#TEs0hmU9gr6^v zB?4O#phJ>GBs&-(khCJ8d7$6U_X@z9Eob<4T<7!MfxLX$@{W(%i7i}y;Mh0 zZR;l?8;tJgz4ejlvWw&d0G1u)Kvy?E6+Ws`VPp1or62WybExhXX5Y5zVI~fE%BjnD zUuwz=2oiL1P2$>sV2&axhs?2mFe4ME5y3>ZTx`R z>qe6UfUeZv{G?jR^s^{sEF;(G*6w8)r)W>kor1e;wcFA28?$c3p(7qW1Mi0HMjTz| zisn5I+$vq&nX6i+cZkq))zB+P;MP*=KCOkX8r$!RcI1Ed?mHf$;`wd$U60+iKP^_7 zpUZt@w_ z@L{f^h##hJd^k;hv{Z#k55F9!s<)lPT`9q5Z5>?~9iH!qv~Bm=s2%6ue!5b%9&x98 z=X(SKH#Ma6Zn|m{|60ZLz|ag1wdC{o{_L?IGPAy~^jBnW@XYy&n>%kdnT;MmZgDL{ z@X?wsEWWyf+YnekrSr$B+5|>!twv6ag(GjX__NtPuAqk22%-~Z_tVG`pO!ksv1R+_ zH~x-PuF6xFe{9Dx3g(pFpR0>ya+$vD9-*d@K{r3WIm)2psqZhXTkuh1|8B#>g&7|4 zE-~XP-JIBlf>oXO(OaV&pF^cm?$8R&o!okmMm_M}Nv;WrRlaX5_THKv12poj@0sh( zoZ$5`57@x$hQ1%UwQDZ^L-wd#@#2?{gMo$ll!)Q`if_f4eHxUMhL=Z=JHoHHhP=pr zxUOBUb^mO*C49u_hwGsc9pSr+7rtt|t@A_R=CzMCGmo{ct>^!|vF;n_v$V0|l;6FA zG$=cJ$ZD1Q`7c zkeNu|UXk!UhSG*5QmbVa1xD>|dSwBiRpaoH=EW2Zg#kQ-0sW}>E~hAi)pBu72QB{EO@e{3{6Cxu_Xcioi=pn@y_>X zu-a_+O{l48Dr&3G`~-K^U3e|!M5I1`tx^jrdkud=9)CGh2~W5NuXR($8_gwBxJq(S zJHi;{^8|N5>7S#uhX&GM1C<^%rW)Z(ZK!^YsWf1!PYJ+9rI2aKguYse_4R071TC)UELAnEZF$H{=9j=dO zk#nPQRma~EiWJj>O3ufsjQPcCLF?=;;R7)Zq9>i6%^ltS9PmZZ{M~a$%f2N1E|C}i zVfUbq`WG(?`zUT0JY_a@h|Z}*6MFv-;l7B*1U~hIMk?Yys&G;!#pJ&HY@?D7>6Td# zkrg-Z4MOzQ4_gqwXjU@ipg^&JFxp60_)cCs1^jaQ7un5<*&eDYFl*nMmSI4u zQQvl+I|cXbTan~n-Yb}D4+VdKSqAqN6O`L{u?@2JQ1;uEYk>o=5w++_rUJxRa>${J zoQ3@)PkZPg_?T5P0!JC1?1;SH6tzHEvGZkSBPLO!SPM3d%I_Tl#)`3_x<~626aEiZ z?;g)&`2UYrN~LvN$|MwxRt~$RB8(hDi(yj^Db1~%l2bY4loB--Gn>Sm&72icIm@!i zS)#K;&WW5){q9@u_xJbteE#Tx?QXm8*Y!F)pV##|Xr%xUAixs`uJx6;zyoYUbigOh zD6`q;>ZT|tUb<2TR~r>~L#ja?FHFQ~? zLMzLUNViS1sV@j=WkqIDGFwTZ!9&KmaF+-AzX||8*5YIo`Idf&=cE4?@fUTeeE zDtWgt@B|UPbyk8-XF+KdbOCq+3he9>gqaFD_gvu9CT!OJm2eF-(89HwEtrZk)q$W| z_-n!lxi^NVDM35Nj)5CmW^F(U*I(!chTx8dyCg4)uvCYz$)o|mp5J0l-&R6#w+eNF zmZJwi_`r7i9K>&b3rbtenn;X*ZxSvkkoUx8t;BT$s%8pOx7uR0vKVexYhtm}zrqzL z8NMigo?ZE&r_<0gf^MU(6*l$Kz;~TgaRww{7XkrQ?+DS|cFDa&!4%w= z2d2}RWQ;a>dT?VaOZA7%bS9*W8AQS2n$qA>O4OY~58?WQW++49`t5AWdDUZ-IRkJy zwPwEPD|Fc+b6O81Kq@)X!0QQ3h7<)up&rl}--95E?6l5S3{Wnv@!kWc>-Vb=BT}yj z*E_JzuvD(|TkedWBHAunp;WCin&<`LtD}A0@iES* zp$6Z(k>M)T@Cq>++|d#q$D{2U8IGbFd{ROGbVk)B=DfqUZtiC`5~9eap_f2*Ka=^+ z4w9ehB8^-`5kp@0z{g(ZW6Nx=$Z*RP?fAFeliP9=bDDhcpGO-w@5#V8oqPW?ty9@5 zw8AQo<-1n8k$?GWhRoW^~Tqf zJxm|MPD(*!P)Zz0CY4E_3R@AUjUu2M;V`uL&|6C4$OIL%Atof2yhkU}2cMTQ$Yf^m zgf}g^;}`p|Chy?s%Lvb(Oc4{5K{-M|1#Qo9-|d0l(7|un;(0zkImJc~)gpHxWwtR^ z%M@kQ159Tj;P*QC1tf6nEZhDdsc11=}|QHlxvYZLb4EEln6&9`eKsuv*jCg(cy(COeV<`<=&FMj;ObhzMkHCf-;T8n%O=Z!}^qm`=VxNvB|!8 z>uiSB98-kDOMg#}?q~kjLFe!Wo^qulRy&5VSb{>WK1p6mxIW7tkLcu==ACmx?dV*^ zJEKJVfEKx2gab+5aopGpE+{4F_ADf%0nc85L#C*DXOv(sfY1r#bgYh6Z%>l>HcplpIwoLZ5=$d_rj}ml=qF_Hyu8J zMPJYUY8bgxj(CumlYb%#E)Q~wZWw7PHq&gQd7W*v^Jkce(}L&1D)8n~U)o}6HyzM` z#de}drhSpK{(yyB0W)Q{-k!!55w zXW4(2vcp-gt5oQ27T)7d6ARBqTr)2wLGzzUFjhLMv-%`Q|Regm1f7hA}M*>h7wG z&u7Gt9+=wPA>)t0@nR4XgjOl!!hKQOldiO~*o@XwuqGR6f{lb^fVYl*$RruSWFazp z*A6EwwOPba+!=~?A1fcg&teOWz|Ud}5E`pEkLlY(3{@R+gQ9I{4zLKhqBLr_AEs6Z zosFVv{c3Qmk4;vhk>18azmGiQN!k}h#-XePeTz6!!wrT_c3zO9s7}nuyR|D zWw@!w7nRtu|C}jwjB0MI1MS3->I6tIMyZd*kv&mQ|1h6~TCF#`%{t#@v_6Y_-!pQ< ztWg&+v|?+Yl9JmRj3a-G;oiSJ-spq(CG(SJ>>kKz3zo@bKQ2M|8k4MZn=I|xM(fBfNV5=bRd znYCEIF)?YVw#l$)hZdf25 z_)T|%FeF^0`Cpul{G0nsHF0?XXJun?bARoCOu5TcIt-L?IP;35f14+fv@X6d>q~BL2Rvk&`lT~}8GjuxRiHo&>Dyx&{IKnX{;X)1RenR|Njq3~s)D>( zr_1iv_CN0H-KV(kj^41~rO#*PHyJZ3Pn69W^#72La&_*%t~Zy0W0e2hb>%fV|AY6} z2Q%6}U%MWyE{jjqQtplmetp=-oxPNJpVphi?OV1#BJQN(73fZb5Cd*MstTugD~UfL zwR4UEG0Gjf!~+d(;PA@sR%)iD>HdU&U6NiA32Jkk8cfACCR$lYi*S z3^kz4sf3cHVO2kl{uOsBD*y7{-7cu5F{>Vprv4uP$h*v!PYb}igBS8whBxM4u*vs# zDf-<$e6}Qdb+7lh@f9uqT>Oed_+k&M>CO?8=fwy9;&2@r0sS(8st0}=|9x>fud7LH zAI=#&_H6NKd_|^zJhQljQjL2xteh{*V6w7mJ?^t!UvsJ{o6HDoUv)?$SASYaj<=yT z?{K?>^Pey1SE|Z7^?CZu?57hov4{G`a0@>!?wLUTW!#-m_52nexB0o5M#Y8Y$`9eG zm#0?6-AeP9e@vv=Fn)Cdv2P|yhdcAtXB~xEALF+9wLASC9W?7Ee2e{Y?&b0)i94I$bWqS55^u{-RIm5L#x1Fz@Eu7ufC$pozFC?Un>{<2q{fC8X zuWnWS{i8pkrKiqZfit7zQh!k;{Ht%#PumDwsm^_mofPcn|7!8TRM!9t`rGwS_cQli z`n}3qsyC(#95`FzN%)L;bY@HC1v}i|Ys(X%GM^H^X-@=7pQ;Nv_Uke?Qn?!0cSTkA zZaX;P&P~A$?|k0*as_)#H5_tV^$5LK@sJ`Nn`PT8waMzx4yt!)Zo9jrD-U+AGW9KKIWCct+jb`k8 z!@pE6C&b)~mR!D4v=Scvs%h-$OZN9T#v*2Dp_7%7nvg1nx7x9@mroe zWB#E;PRj0PH#{+-dC(`2%>O_amA_aX0O zPpto9M^Em>wq^o%U#37`;Uu1{8+aDH^q4;Df@;?Rt6~qa*U~w~keTA55S@0-&knbCcl;S=Mz9m-9)6p${J@v>@X)doVTUf`AY7h-4sdm-rkmObOSP5bmpO>ED z6Wv}8>`eMC>lg&Fn@bQnLG4=E3Q1)J)ktkU7O-~iw6zUy?%&FS!cJRZ|K&eNHEc17 z>vaMxsnXmuFRM^13^@#Mp0pzrrf-+cP*?mVx?^oMLH0)=22u~9J_t@GZnx6wx~d7@ zZzUVO1wUHRw-xM>O7O>97lWr$06mO2(w8LP!QZ9d3(Vio@)i^|K^1^Q8%MyH4e+iy zK_PXW8d^BW7qtocH6(~9yXoIf^rk6zQ+EM+VI93yOB1>rBf#Forfl#p0%hUJTw6p; z;iRAN&QH-D0Ui9)f`z;m3k3mqFLyX+MFoVo9klEW9Q%qwErs{aDWUQ6Yr}l=s+$*w zVl(n>^i1h|EWOotyg8^kHW_K}jLL(1F9eMQ$)#$toKe4-C)Ro6Rl_cU^W%fe(qU{X zjeL(|eOW-Ya=$()G;pYZ^AnyCO=lxmF}**sNdspi4Fn;4G%bddz-S+9B#Qh!$wCbvJTeqT%x`e!CBfn)Gd;MAj_6S zaxW7`ou2yOeA>e|R52R5;Ko@{a?wnIK+oPQ)w*yHlK+PHnA!`}a3xHiyj{`Ljn1fp zbtAbB&gSv@@Ju+ngO7%c)itNDcPZlC@tzm<52oOJA`SdS8n7sID=X~>B(W!7Uu=km zOv3JHGu8nKv8Qc1fw3Fl8>PHCAGX?mD_a@-Ndm(@)H>L2dd=7y@WMwFjlpmE&jKdi@_ z^KWxxMqBWa4PZHhpf4~xVt4OFrX8WLhm2ihD0ZK!IsKS9ioLRx$ZdIj?#jy-PgEG> zvtzOLX_ziTvei?=2b0U8N$D7dHbyFfule%DP1_mskAPv)ztaQ#KHv#C`fN4X{b~(4 z1+vCnE8$|uU^Tcs$FHjcCn1ECz+c;iryN>j_TS2-HWbkO*T(;zG_e(fFcw64P1jCi zhL&xr%6(A~Qr!z_fELpP^-Tz-5Eh!?-do0?XFi5u2KjDSS3M!QrE40SC+*V!74wo`^ysyQS<3D0_NtX<_QMm5;1XCNN%_t`77NSJc#GpqQSM&j+uepR?j1&%JNCWOkIRb8*~wP!0XYM$j?v_GUrAB6CMQ z+`e@ay;WJ-4b{VOSAp16HVLp;+Oy(gab?_i4nx6RgPzA3rCR8o9bAfdNrVh;8)WeS z+<{gNZD0*~7wseRwLx5+L-N{h$tiO3wRiaBBD)&$9=PA2!L*FieuwEyZ46o3F>qwP zJN{MZiAA$6Pd6h_ZAPQ_pnYSbUD2M02NdaIwBGX;?Z3Y~T7}eZ+TZu*x>lC2t>j|6 zGCjE)_O{B95g_8o#W>*MCu{k2){98FzqK<(Z zl%EhqxT9IWvMS$)yOpqTAaH z9!!343RKMmiiG-Lv#WmhI_AXG2hvhImR@~~(v`mwM-(~r1AAx=dnlU{+|y z7V$fFSTYGPgpV#aIRC#j9RWRe*%L!O#E}tkYk}V0D%1%+{DjD!iR638W>c-8rHgp) zh&0=mjd+-tqdjr$!@}jA@X`DWh?ouoU>?NGsons^D@YUUX`|ew`Sk(Og|G+C^4@U>fNxj z&a!B)l+{4|wvp=Ti$fRzab)l%@UFY+j(Z~v$-m7GDfWM;_zTnqm8lr4f4x{0FIRAp zS-OwmhBZU^ItJFnwkoGVtQvBC$+Lr6(}qZ?06(3#Rx!PRXXmPCPR)Gu+-L5)i;^1F z`*u49F1C*E@XzQdn9IrkE4ZOzb(A&ZIpvpEGJ)M1clN<#gj1ry8G~>0%E#(n;yLaX z!&nRNsZ-HS51>menv=d7s!xbb_8djb#dSGHKRjQrpUKrp$8@z_3_y<8{%Lew1*rD# zll<@>@2@m=e(RW~$ewAdT%4)A_4nbg!0)S@fx7c^ILQyu=_1__V*4ybSVV%O7%AGmDs-U=TG6oe&fibfU#=h)xB7qdp5Re8f~~&m8+Ms zO>ie4E*5Ua%^K$i)OQ+7eIL1QofPn-Ju&B%8alEY=snkVu~ojRJ#m3Pm$CEtqBwG& ze=yGPPgazXkb}KC5s#k49i6E*4k#N&n(xdHXU{85<$4Z$c<0(p1|l@HBUZ({ahe+E zSo5mA@jF~*m^sUb7wlRl7xwQN?5SG1C>VNRB`kc)+1xK}>{iycujnrae%trbFoj@R zG0q8EqTQ)C1il%m8XZYfx0vz4KjUFdYVwtEEGsWHv?21RWADq0+Vc%r5_oc2)N!p> z%-kc#wEjc)O{f04H^gGo&jrf+e8a6o-xb{8c5fc-*3_mXm46{)rZvAy|CkTZY2Vi*}bTWAD2{!SmRgdm7^s+@MZ%xJx<5%)i` zMdAk_(F$&Ew+eSPq^{y~67Lt9rwV$otC8&!*48#@!OI1$pBKIyr5Yf5hp$*)Ufy0L zCxy7TTyi)O6Rh?;04&{tkNr3z&D=S1Pb zz9Bl~u^yXj?`M{183Fj*y!iz&Wssiy#)SbF!u}3_n&dVql)Ms)pg*U%L z2?L3?!BvOy5ZN46STALR{JNmMrohF;w<_wBY8!dX2QVK z^&xSZ)pp{5X&B#I<;<4rkW7N!AJE*RyDZrmYwJSFqsR9-oqE1@+9%L))bH5{Hk>5* zX=gE&-q7(o2xWp|IOo7v{O3iZ$#;xi7BV9R2vb3;X8jOzEN!kxU1^*O{>riT59f>c zx*AB>zg@_BN>0%{sKh1K&j?{c#8wyp-N)k2&C3`0K>ZF5!sh&;<2)0cyGI%sZ4o{hu7&~lBedcb zUsNGak_+ne-Ln6;pkXzaK-qJFmKPQJ{-;Jcr0rt3xxA2YlyH(Z)0R>}87gF%9|6;6k!~pJP!0of_suVLI($)f9FJDkZ)Qw2 z6FwB92vH3-Rgq1r)ZxAwc{O3&IxTo;@TB5Ttd_N2$9>+%hrA~{*vo}(8#`6#T6v0j zG~Q1_w+1ovxu&(Au!sq29D+b;z+QL!Sj4LHYa2nL-lmT^z|ah^_Za0&DnO|NZ;X@M zSfvPoHT*Npu{JD$r+-JCscg@7-}I#s>rjbdm`-0G#YkoGKppVXC0lDPP}T=8W`+uN zMv124mf+5Ovb8hryg)fN8?kTKx0pvyvOWSu8!U>kAO<6q%}CyCI0N)l-e&m+pDm|^ z#6CP=yiciw;$7jeq5O{@q*O?~benp!2`B$p%=apta>^y}iR()G(8Y4fhs>V)GkP#& zI+YA`aNMK5cG%F9ufcOhh#dFgJOFO=HAE`gOBDP9udfiBq6eXjO`*Mj*yGi-S?q8U zx8EM3a3i=&%QTOCZ>Sj%DFWx~PNmm`$w?8OgDsy=(34UC zg!P#RYfap4EE%N_VUsV29HBOBwqm6V1jpxA6iA|mBj!fHBn;!O<^cM)6uYSt{(mqX+43EmwSi3mL>}=q zN%C4=7uNcIbKHd?^%kQ4P)q_i5U4^FfbW8Mr|*e25I+LaRk5%lV~C-(K|J=o(T^ua zZCNJ@_J0{iUD*m}xP1MkaU?KwHSHCBVL0#Y*Sh$k8Z(h8+_k+Avkpn{#}xFPuDPPT zcp86lr*ArpNj^ixsI5Ecy6!mQV+i!Z{^vu+4*5#lXRMs%j(2@WQ!yRy#WVe^tT?>+0}b?kx%YPEZ>x&UvJ{(Ut;FS(uJK!* zHmH)=ykf0pI}(RCKtPXbD7A3yp0E*@&-FiFoyPh+4#%5!Iip(tpQxoO_WV3QT>s{a zzoGeKzWyD#S@hSKO07xzx3W9Tv^8S?Weo!(MC_sxEa0FUU)QBTytk+2HPb7AF{|p) zxX{2ej!;VkIFIC{VDZ8^FCFW=M6){h`ml8M0A+j%?t(Wy+PFx>Nu=SqiE2_r)A<*lHAWNMG-eqw<^omPLQTE*IU&OEQb>ObA+=r;6uKn!HMueJ`UW#h(f~!PTiIM|T5h+S%As>`dN=Wsk9vJPT@(@;kCfbx7`m+~sq!u3* zZe_h4*9ze=OEZ8W6||u^O)^H@x3`gZXZ*=u2P4>7)x>Ev2weRm_@oDjSz_w@6>Ee4 zVsTNQV3lYRhC}(_f-)GqBhbn!;ZV|QPV0iQv)HYXpPeGspD@}!NO<23yvU+x%wT=a zFDf2u+UbnCxPes0gLp2)ZAZ5_N}HL`&u{o=w2wH}J0J;hzN<$0?7FSWl@`yt$CVa+ zs1y>tdDr^`L8g%gHn!G1P9Z92M@;H~81e{xvTfD_-4nd zwJLJa*ySeIEuCD;s2(MHRPzQm!J^Tpxc{!=7c-O~#~n4vll;F=#1JSP(s0!YLuM{ z7Z}Uq5yl#X=!c$6+qqbP_|6e>SR2?F}D_IPUOJ>RiM;fEJTK3s35C#(s^R9`BmOeU9~1v~UAiGm}b9ptvx zL6PdJ4oJCdhU(gSMzxyUONcaJdIsFVaO=J%=C}+p?;9AKL*$j3e1}>gMr$b(qb)rl zo8FV=O6R~g-Ot?na`Sd^;$1wV%P2mj&7(ITWOvF7m29ItKW#$f-@hk2vuIeXm>e0+dK#P z6|)O+i_cr1+e8xN;Gx{uqD$}xb)?{|#Pd*Vf3~10`Qj_XTPV7Ljzl;+=>@Lyvl+^u za!CKh*!u&E=0nSQ*Z5(}1Vlr=k=3kkj zNBt+`#f!T{1#Yalg;2mkV)x5cQF5;SOzJ1URN!m0M&qMD$dQTVU)I)wDL8(R7!nn> zss<@h$BD&u&A~enGXOCKcM9TFNS(luI?d~A2{gVQ_-Bv#L+2k%x_UrLC|tkEi?eUV zA<0G%L)j*|_&f58!na0O~p-jS`M9BczviZP_zhUXIaJ= zU-W2*P%BGS$wHV|FE?2n-|gi2d0mPi+hN?eh^J`Fhpa4|6k37*kTxqr0@K8iPvt`L zfW*b>4s!1kxl}KDa`Ei-Yy6=Io<5AUZQt3IZ}<;VoB;qw5%pisxEo1jK$4A~7U;od zGkz!%6jFtf0A5fj0u}bpWY~zU1Qcx6XTj5mj@6udqwf}6r%NfFR#wKVCL_zMLf1~F zU9%RH^Do&$R6`5qC0LU3VjuDw--1J`hu@YWdP>ol89-ym6rEkxH1R5ueZ>uxYpguS zaSvav?}^KS&|`^`1<3{VqcN#}y$^*waNGo0%qzKwLQ?HjWgs@XYl5O&M4@shDs1hGjOAK`w{R4q@|tw`J8)e znSe@hIj@L%rV1g>{3H$~+;Z^FL-^0y`*PY>$|(la5fH+^zq$caDN2kY&%1&WvvN8l zr|iBVNgjgTLZq@5x!iRs@=}j~s%&_! zx-U;`&FBR*L>4YucX!X+x?Ok((+l|SXH4$9X05l!4gLOL;(@>$?(gjpkLiU@m_C^u z6)ysJk#Y6jI2$qUF>*x_&M0=rteM`M+fPi)rm9m@J9lq)svwHBKm5?1 zV8aKKj}K-miU(%&cApT>{3DZ~-{)MC{^xl7#RkKZ4R#}|)e-?R3q9py-?uHD`&I0` zZgbzQJVjM;@~l)UE$v67o}E`TQKV}YLdLesjB}X=GH&4X^qhoR)R(NbZGKe>-X}Ll z2ezGIG6j|{5V%XU)QV_Q_4=jP{eDNgZ)6nL%-0nQ^=;GcUBIa?UYOdB)xW7u9?qZ{ z6&Ers`kZeH(-bpT2dXc|YuL{G{!3;59(G-1SuD)}t6fSBwJY2jvT1v4uow+xC3vuX zaM!s}9|d!7tEX~OYGJFJd`j(ZyvLekF|=}5P(~>%8CJx5V~+K0AQG43GaG!1wW2%~ z6&=;F+F`B$XEUi!R2FrR&lZ5P--mB@0~M2CSHUvTI<)T&^h~)*hjo1F6jB53`EFRPA^@#?X8;bahzo_ z+|j30kYwXG&cCAl%*nNM;g!?hf#P$&NTOBzNRcXj-pX9yF5Km#5R&lyd*J4w?Q?^! zt5MJEMz6V`kCoNTpIGca@Kxu{NdD5Pu8N$}(&zh^d#;r+1x7joea4ObZUsx6Hz29nS`x#3w{O&(6bL#K@Hev7f1LE)NEM4f>h+j)xz4m{KdRK{!az1&N zmw>oMe+4Tge_l_GVoFFMK}c`!ZUy%fm*4$8v3Dg)TFfI1LNd&i=C~iSI)OW8Zl5>f zVYlkHvb3g+daZoFww-BUjGdf{|FtZ>(@Jf&pueH|uNj!9{@bpX5tH0B)J({=veb-Z zr}a)&o)yg%OOm+c$n{+I23z9vphKI{k&SQr7R!-#^5VMD8xuR$UolT#&fq zbV-chMz6$8lJWDb2I&=sD}NO}j@L?PirTSA)KlBPV|(8tts~@t_&EPnagEooUm@M7qQBDiR`hg6ZFQGM zl>}9pq<1_i^Bl#?6wj$8zrWsB@ppDx-6#OT;h6#E3swU!`hc6Sc9aGkd1ZCTXx?|# zV4y?bZ)%{I;^E7;RrNwDCvRY?oN#4*`PS9RwNJ&oE}eT8?EjZxyjzAco0zjBi=sOb zkK5fWTDf@S3EOt|U`YvYOUmC0gG85%=1Wc=AK%RiX zc487t&EOFrXq*kOXMl{>rFX`h@z?D!!9D)(YYe9K+!Jfs#U*=ynjv-}FDm$9{nKVW zoG*9N0T&dSsOLz@R6e#XF?MIp@qni+bmYb7yjzX2lVj)h zoVzu1Uec_ggmT5|l>hfxa&!8WuU=9NdCE7T7`MHjxp8bo2oqwBGt~uOXjBW_o*?Pa zTg%0esvBnAAS&cT6+PYdX}E;Ke~0}MMyk(5SiinpHm=b273rBLSsTKJ#3e99jb?X!qYr9SH<)JTjFv&*v=Ztl{Eor zSNWxB`Lmhs58Te8vo|P{P%exyo9V>A!zUX2eqFMdspS~X2$Mqd3XMKP`Yub<8&Fcz zUaQNL7Z)CrgDBEXe^j6b~5_MVg;@<9jWTB%FZKTJ7pUuSs#)Di&D{vNkrVU)I*wID$3XipZE59AV)_9^Q)V8z#bIPN zbO)v`;ThRhca*M`BW^3HEdCi;>N_Q;p0hl~Fge!AzdDD}2`suAU>hEH z>P&^;+ua>U&BFMlA*_0y03k!LQQx}$kH*0(!Q^^Tb6gIG$SSwc0t>RBwP2D-WqCgL zqej8T&-VexSJrBnnpCz%2v3%K^Y-B8pJz?L8;y3PLU5OY9}<&#GKQr0nm|Ims!vY? zemSq45GA7IB(kD;-qIC$PoH$~Z<&BEwz4UhkGj*>w~`JmDov0Nk9Y2%hKCO|=e`ba zWzqC?L6NXkA^~Ly#T_-Y-WuUf{ObU5LD!6W@Wy!TNjEtfL^5MHsGvcjp9h{YZKoUA zAm$kGAd0+4SxYz4V3Q;_Z5=VR_~ZHID!eym7sKs{7sq_5{X;1wXfFdx%34|Y(3og( zMqayY_WEl#)T3ft=Br*H#woDm00Rr^Ei%<6TGM1kmkUEXcV=TqS+j#u3)_7Nfm;~iQe|Z zo9MPq60~?ow9r%fLAUoo?!6(k;b88$K*6Y}QiOm%{$5xP@WL1WjE}{(a3P>g3KF9M z7WmV+yJSa)AO?c}EjTpX zs+Hw{c3SG%fk_pEOwc4`sCHV6me&o$z^9vdF=O;FSL4|veJtgCPHE_A}TtX5VQPxhbntohDkx`AJ5cg53<(@q>nZ;x5Y zSMxtcpfycQiy;FxjXNqnXP#v z*jD8{!dtR?W^ntwo01AzFp`*FQ<@VMubTph6@kZnn{QUa{VYg9HyuC%EGMg{!HGGK z+)y1HYoWNDNU!tlm+0HRwDD}&R!^hl;E7$C&L};2ZY*hiFTi6Px}o;x!UfXxKVZfs zY4RnKU)o$)O1XYWJ{2Cz3K2l3!p9uzBgD5H>ppEi7eyK=SLT=sjs6RJ$b8_bEOFpf zj}A$mUW!PF%ki|T&xqn!qak|%EJ%JuBch|y?oF|_Ntpd==z$=fY^o6n;$kF}pktts zuw&p&Gp9hKz3>>K(6iQhraZT=&#(S`uRjBbnW7vb!*|oME>}R=Zoo6bt2b7TZ1NHK zKMT1Q1fhkjhUk|W^mLHpHKU6meWx?8l~Zo-W04t`^0Iq<*z>PG-B2j{Ve$cK&0?`xn*DY#aywBx-V7RP#s+_t5KTW47nYobRA zTkUY>6DFCZ9W<|$Hu$XO9tWbH6ghY=bgNb9+3Cy=rHH{1P;#-|P?AsS{)avOaNLt(6s%h@AbLg}4VY>r(|H4q-Ffh}dILA4_rh;c@ppoTw^({3Q2ZL%x> z7R1$&qmdXqCI>>l<5&Z~qNi*gUFdfi8C(k(g)*bWu1o%dfW`At3h(;W(6z=fQ1JX{ zLiEOS)|F5Ijw$+>GirlS34)F{{|LBqqUHK_2$Ueq625K!2*jwt=;9LEsb}F}3E}`` zxq1({I?r;ph||7u5Z?Ite~9S;H*I$n`I=k{^h~0P^d6Q)IpiI-&)Shj$!C8xa3D^- zl9+QbRmMpR3VIGHGTB)g=-fHz?br;+jv>Jto1b5ArH2wOLAVtihI{j{Ro8(SXO!?d zE4}p}fgA{ZqJ%Np&^KeCm@=|1CW`>QM>koAskKbPTtpS8Vrn55^*USy{iu}%3Be>& zNZsNTo;cw9QOEehpbClZv@09oqJoB0>gLWrL?}$Ht*RnuN5^)2;_B#v%pvlWd2jrp zkQ)jLy>CLq8Og;|xICtfTcNAsZUu4s_F`Oq z8s;Mq-84bd_A5@Oh8uHMy6?+{K%rC@taI(TIc|(IC7?w8ii|n|ixu`4DE0srNGm;l zF;4gx#n>xCxez>^0a#AJ4fchrprE-X>37u{=!>=F!;tow?$Gwfcc@m5iXQ6)9(~fT z__0eEim%_XM?>y$bvy>|NQonb>B--*hq&Np*BbIQaBwc`?BLw{GfQm?D+_w6mB-i! z|Js?$qstJ|N!NTZ32@Fnn2h?()c12~iG}B^&KMNy7K3ch^GbVGd=xH&H*yt?sC-2; z+s}AwxPVcp7^iG5awo^CCweH>d;!r&SnD41_}r#5kKo%Lv!_P~l`)HUw)+*?*pdCE z%(8j9zWlmat%(N1yY1okSCf(V5Y9(tzW)*yKy}^Pg_fIM!=4 z?CGov3a;`jcc3GImd zIyx!vdoJXZe1c^8@KjqDnpAe-Idx?VMr;#sK$_RC$`MkGv`)~4HP=@bxhkld;ac!He z>J_4zfB4tEoPN{Jc;~u^o{A56`|ySe8V{C~&l#NT0b)4rt@)R4S5OaRlS(L+s}>KW z(tG6$;X2Fj^P&9QLFRM=dFo_kEi!dHH4P9-QiO=kKy>dBk*vtN*76 zg?Xd4_yF$96+V9w%Ks?|x42VQu^B zQTb<6n$*hd{(uX#%r}@-D$aLovbo+{O>epHIclEQw_y4TyFy#mFHxW6Em<5?xT+Y|H@`F5!&)uIEtf+sJnYe3*L67n03(JO?mW8n<5=&#} zD*YIqThWvmGz$K zRds!%skZDeO_&xSc^Bfz?ZN*=)Kxfx$patO)nZUU+Tw@}+t4L}k z9CdkdpJ5(3uqWVw!6s@$m0y z@e3QL$MVrw5Gy~fy5+hcsg=A(r{5Q)ZKaMDnn!n661D{{y7Zq~(dhn6kl08y@ZPne z8FD@MaI_fGg;X}w$}*fk*BYQd$=rxmL+5EZO}1~$ ztywXe_{HAZ_bjVxE*Np2-VlZ6CG!-VFov@84fQQ`d|BWArc1Z&gSOn`-*)9M{Ahk! z09xlaJKH0#(I;K%4m4N!skHj+_AH=oMLqtiT-PpA)V%64Rs1^khSx>S9N?V^!cMvv zS8U-wobXLp@wd&{H@Absn6NY#nB3)))Xalf6&{L57~*Ly?U$`#|W zDw(YOg1ZJM_Z4mI_cNaq z4*4tLB08r|3XPobUEb91G}l)5GO*)6x6tuhaMDfJ%5j_>Udt?}t5I=ieC zK4kgnj7ozMA4W3E^k9>EzU{#9HRG2rI>>F0@gKm6x`!){>~t8moE{_|;r0*o4;dHnM8bPmZ8l4y zD=MT0td9fL9sfc%(C7;f@?G|?(p4TvFM6oXy(!|gzs(zJcKe@t9g~8~jMNRB3P`YR zor;;HD_$`?^)q77&XE>j?lo(-LNR>#BIK4mLD;VdqZ4TPnMMz*i*>v8`BHb|B?~Rm zNbGD|{{?D~Q^fih(>VP0oga@yc;hc6<;!HFs0O#k9p~(}i>RT~MIhASSWm90hpS~# zQJ8P?90&myfQaa!=F~Y$ASehm#neB=`&FYK+0fA=Mq8b>Q|`rLJ7}c%^`9ZQa*w+a z)8{S8ty84*Gx4po;vK~qT@Q^AeFJZb`;}M;{;TD)>)su;EqSs zfp0FQ+X(gok>}<{z~iq;bUtz181}OtW31ZGjAP>fdScH1pJ!1=PKj=KI_&O{pXZ0q z`;l3gS9^`8k=;V0kH3UiMhebqj+r(Cc>3ToGStvZznMd4d$Do$8IfDQj=pX=1ns=*v)NfnGaYa4YaNQR(xdhQ zEnFSKm&g2D9ICDzrSu${V0ig+sZDmvRMekyjk^x`pFSwd4 zW@i=g!KAouAf{s#@t>r~AouCadS6t=tMr4X%ugzrn-kiHjD5$ArCM2n#8BuRgXzqu z9+prm>m61_oUfXSi>QMScKvp*l;!MMambjJaYk_k*7{h4nnM&(Y~LEAsTcmIdj+7_ zrhgd}nio+9FJI(kQCvfLEe~yTfDLSlry0a=c8p_c^0T{8~0GR=0d+8B@O`Ju_}sYOMgtK3=*#&i_I7@5&UjS4Ugkk>rfkF z)F~WmP~RQ@>L=DM$0pP?a_f8YHMUicS9u}WlI@QA%|x6Tg50jQR4Ck;)pRoyy#D#y z_0$FvP2&&1TGdl(5@yD({DY3Mxzt*vd*qBA!~i$En6*pLv3Crd)dyRAi$tg3D-i@# zM3QkU>#`XtvKxRiLt0rkvk_0_YGZgU7qKm9d>mw5vwlTC6TZz4w-~ z{0G6HQbcZ$T%VAmP8#p!HVD|hvwHv+x0w)<*HTkXA7@j9;NFopwi8ew^kXB$MxZbt zwvVW{3En<@5vq}eaJSZTe@Xk7iLmZ1{=?(e`4*c4M3f$e5(tGdX}VS<{|1iRU!^mh z`4exhBwP=X&-N|C_2*m5VGqhp#S-=6c#5V9si#_57=QeYgKXhNxWNG}v^jXA5+>yH zyCt`D4fJ-_Yg4fT3Cg!pI7KZuPYUSZ_P?!j+FwA`24ifKloma%p%?$ajWpsz&rS~p ziNT#uelz!q4CgA|%&-zwLoX(EligWlaoY82vgrnId|r~C4(IOcf^YB^f){5SMqmbz z)&y^C8Ugn{eBk?^_yrkcf*C4oHRdWF6k$X9N;TM=ipzrQPtsd*;4XG}a2|u{I|NUv z4(HD!)ECn%{waGAnnQM&FBz?Mi^&*O_8pH=9)4=+CV&?knLSmB6zDlx=*?K-FH`rvfN zpQZngw=V&Qa_!?LAsR^{BT><)(O5=`vPMeAKDNd_COg@(Whq&kEKOsn>|_kGMIvNp zCi|K~*~yYMd*Ab@bKdj5=e*bTUf1_sU#=5J&)m=b{O|wz-2eOcvzn4IG*zG79(ssS z9Iy*a7*_j;j5sdz94aJ4vWZ|?9e_@6JHi{4Oo5`eBdNP}f!2qsBMHYfHM{MogoCgX zJ07(zgi(^+{UUXP!&rYoJaN;agZ1PA0nih*XtNqE=e<~jG>(z*@t>}p02ecWa`vov z$iRgj7UH5g2|{~@s1Uh(AsvZ#Qw;=^g@nhEAYE|96wEUpc;G5c7RCC?rmL;PN@hx8 z&Q2C3C@}}zS56kRqqhb;{aNAKti+uAsg#oyS-=J0SxORquUokP9qn0flnE<_A(Kpo z0GYwO7l@2ehM)u7yIUK!@bhs@@RP><#d6s?S|a>U+Gu8QJYjx-V+3NWn`##Wdc5ob zH(S=yT+I^Mh_v%jigdkb$5tv9cZ(W2Fa z`l6xvfQ}ypd$9^A$yS9|aZ2KhZYyf+@HCHKR?+tZwyBd<<0&bA){Dk|i01H)6kR>w zWrLjQK-UM<6~AsXWdgH%h82K^MLrQU>dJir|;_%lR4|5(ET?8xBy{Hai2aG9DF) zK1A-W!NEOO@CeVX@+Rb7?I|)DF*;Qd134Lr?*cMwrr9LyvEUSsVH1&`X@w9{)ry4ZBVYB!0$ts_2NA!b+yHTha0rbnr!MeP}4P ziH~FUtZfn+e3zbcx%gu#q>ys50f+h+$Xo)sDD}F}q!AaTtL!v_oL7-;UY73cM9WZG zj7|yHKHR$widH@sbEO~Al2r=HU>;>9j3V(Qd=l3JA0Eq77wV4}|4t12eGJC((`m!O z9#PFYLe#?L;p6@~yA1WuInpFiGGDOq|8@-C{YG`zSJo&8s3o``OrT%Ld;IgNk+N9y z`k4=tu@@MbXLi?Fs|fezDwFJ~aq93$_w#(c)uwn;DQOk%`8zlC1lK0wAfcHfb>Fv| zO7I#+iZ4Wi^W|mUy1BK*6wL1YZ1DHel;&Q~yzmpx+mzH#x7b8TvIm?{6@|1kdVcs$ z=w{uz{+qC_@v-lzNtv?$%weGJpU7VeZd@z+}I<#wjLh+cm zp_BGTdr9P#>BddT4K*hTbE@Z(YtpjO{mD?iwr2hCpGTk9jkxYQYTJpD^N=;xKO2*l zwzKFI-*l?D832o&WJ}a&U2Y%xcN0 zEbb@4(U*02d;Y=ZkcX-I{P0rBRh;IXnYVo(P^7dxJy~|<8CR1#%Ra+I)A%1pV^xjF z9>~bjvKC3>%=S-h@JX&@hgGRj?@fqF;n;q!UgPN~oFxHtIT5z98h~$&+>h@?$soXlT zQ1No74f_M#@Zd-Kr0iC^mFv9V-HDIwkk#*ml^ZS!zC*5+KRbPf6NZ`U<`lenRM@8m zM-Dv^u3WAV@otUwk$L@*6sYw~hcw%MvlvEB6pC82qPI!&WHhD+A|KU8>Iyk$ELMfe5!s0QCl{4ie!&Jbjx7@{|8y`VqP)O4!`)x_mgkLSv~#%BF!#g7#o#0*lPT-n7uE=G&k#Y zjEUCt2$L-vuMw-xT7lEa)=pym^OsxIUke!O(=SW+-n$r)`NQaB;-~1=)&)1>SFht$ z(7(J@+pn{+d{*mBhsnXP3-MK817QsJhZF`4R8<-vS2B`2QBdmM?e{S$OQPZd zM$Sb?Sd$e!9?B;QOS$`dyWi7Kua-X$#k}@pK|QAu!EdSYF5P{)^2=O>OyZV!ZB!rm z_*q-cxfU_8G-N0sp5bT4S8iTBkgZPqaT&+A<2`czgtr`_p{#9QH|9zRLzJm`QpM=L zju@~J3aI2)RmTjlZQ@j9I z7a}2|UZi{@bE`Y8Mu5O^_i%gx4#*C=#LjyS?@ZR82pxuzi387+@^NEF^kZz^_TwrF zaqTj&eB1#bou-YstBU!4@r&5k?mLHiULX{oH`ZO!B2vZ9lRZ)1melWOd@+qNi{Odc zf|^8V@H<%g*av--F1W{G(YP7c&X$dTbGz@AE++Vyr=h!3NZV0!hU_UEk0#!`x zY4gm{BN%08#*sHnV{ttDQstY$-7*VwgYQKQbq?Pzv3T^k(Wuk^^2LKa9mmW+E^2Qtt?Fb|Hw)>@&DKK&k=A zkUJZ{F!ch2<^y|CIcAmp23Tdr{A)!2=om}=a!uI+rVSD&o z_wE=RNCJ0bQtp{7vkOON;%DLzik5}J8(DGjhK&idaEVa#3{Hvg{kus$<47p&n0|jG z+69%G+;4Yw&V8c4=qEALiGJpS9<-Z>aDgB(wxDf8WBlu|mE}ngSF{UkFjWKhgd(m# z!D@fLzwU6_-@bJyFZ`!U)*fa2Q!NgAsN%wDTYr~QE2<`GM@1jVq72k=uA~z=vC*EW zWMl-RJybUtz14MNMQ}6j02#~6E?x}wj=*gFhtl4F{kzGLVPJRg?XnD;+#M-}3cU8& zYyN95O&VTdoT25)_E0qOzATI$@)7ye)}K3+nqRy&39N+DNQ9>VM@Le{e&7!I&#i)c zgR*2{-HX~O{TnBW<;2rV@N0PqSB)CffTDr)5&61j7d?Y@x&E!MRe~#fC(EG*FqVkd zfI7Y)s1!j6CFv+aDFQI_I-G&ZLYk?Zc=?^GVbUOl%xdA zTznJU!3x1Ce$Q~Wl?>tLjSJny>jt+@Y1HAKo|=x)1I3kkYh_XrDBSz`{jZA|o4-Sx z)#FNM8)x<{D<6?{mEMOir-{`lN4_b6d=V-8rONQ&0 zw3L;CsCcw8!k`-i1ZYmR78B+dC16uyn#n@KSn}c6g8QWqQ0(@@N)`C-7%iV1jx2V| z!kE)xyXW`ZorG}Or4oquN@lz_R2^3c6d3_oD7_4Cs1niKN>{kv8z^r;ffD1hWA{EC zx_chvo2;T+{Iow+j#UB3#PTTzaBUW{yQIZZJPaNDx{tRJ_pW%g6mka8=>m8xnUen+ zeryC;cVh9z-oe2NXDDgMkO4?Od9&~`g%nX^qR>-0K~TDIMJa;rfDl@_9In`m?L0?J zF(OifL*DHP^BL80@2EjPk`jHpaKhuH-}3;9;9>5{rfKQid=F*KO_hC0XC)JmyhBG4 zNpxsGu_fg$FlltdBG}8(&+nlsZb`k9jTyL>uyp#00F%Wt@Wp@uq!S1H&4|e8!0AJfO z0Ul?L1Y%x-uRq|)`dpVr#6CJy!DFu)F_2w20B5QyCJZ9(IZRrIlZ`H$li;zvAS)vd zoSb}w3X~&0=doG!r>nq^QCJHZi5H63B2+}~^AO-b!VaE+#NAvGL>fwUqV!Dv^qBQWF)aOgRgyJ;=A?*%AG0&qW%Ul}prB4Z@d)KWGM5f6IXsq)FR_|Fa zcuvL%m= z`%s+|yRI&XiI^U5Re_)bud>z5?703_j15qyXUV^(0Cq3%5|D7TGXI^n7+T^f8se{0 zg32ObBMz{hBs_Aj93;_@Am6gU<2h-u-~mEoV(S7B6J8H*_zuViIoss10DfH^_j+i< zm#i%^YSsS`EuvUZv)XA<)op1}Hdw5>#uFo=Dnt zjs}lr8N(z|9U@g;LocXx;h2_4V6CP`ZzP-qv8aGxd%UvaPPv44@^EH zfw25O##{pQJl%lmIZFdc1K2P~);4PR#ui&`epXmf1?MItte7DvgboH(RtG+c^e%k% z@BxME$93>!3RFTfY!4Uk!JD2+%7G6g2$6>{wk)||D7t)G6M8obzte<@U_uA0oOSbC zAW%;Bt%!Furtb_SG4J{0lLa`g(!GU^w(}o|ZzdlBLdZZ8PV`8uSi2$7?twQn!(hc^ zWwNg8Q=T_eTPbQ)_wC(Jc@&Oph__M0H6?!+ff9Ugw#zv(I2MrAr%{}}$T zU4g_QUR>ck1Eb&J+DZR=a{o%7=uOu%8F*dFoemzl9dar!BfGNg(&W!fm_(oHaFTXob;xuHJ}J?!S?-;FRouA{#;CUEfnPf5N6vM= zXudhuJmYozC%n<#lc)8)nZcw)sGxf;T1WNw0^l~Ajy155aq%7R|1g)ZRo+F zwTe08LY~;F`}Wjzsio(Y*UvSk$I(r@PZCan3=bpYxz}~`aqklDAvXgTkc4LL*5`B^ zh_riUJSstr={%}KKjsO7A9{QXa5+1Dmj=Btc+5r;#!2mumdvxBRqLjS4qte3cgjt@ zx;}{BW+1*A@)iQh$t3PowW@7Gx0x)OE7o~4sy_lilrq!Gwx@8{di)55F0 zQr#G*-QqllpTVJ}kXnQ9m5U=HK)hc>OSxSy)ddR2)tFBnYLS%^FAOri*4cimk*SWl zY;sv0PrAfP!b2t9=SHrqH}?*sU3GdvKpLjHcb`J$7IBgN%e> zT1<)|E_n?kkx4fJA?HAho{Uu_4F;$uf$JdGbcJO&8bGQS^Hk)DE>}ony4{UEa5`{o zD(!DR5|9#uX6jOKs$e!Rh9On1Jh(1~ZR$1dWMeu;{>=s8pUkK z9Poe1NSfr~8z2n%ez;s>aKe1|)-#{_|t6*DQk&bTm1Pw*LF}7&(4F zNDOWFgJKy&+AFj~+TT1Y&wL86;@nt(Z>cqsGzN!Sz;O497R1B*b#vXf0k`CJg_Ai! zK9J4F(Now|#(dxtK!}y^b5nTpdfq(1(T1ko4*%|vp^22g0o z`}P=d1UA_L=|NgbAfBi)h8ADc9;?aqA%ZUJ;n)rdNQKWzJr1b1enjW_XJ5@xWY>z-BcPfNS_0^^AfzHd2*3SgTU1}4VrwO-}l~|1V~oX0pjcb0&ijf z6e;T0N_ZdKV{icxv--hBkw>iMLPn6Y?M1at?XA}% zVur>lu*WOSCWCPs`wC0%-rQ`gU!UExZ-~ zc>GYSW1^vq^U~)HHDPhizE&rebT&l775}Ah^L;Vq4qeOYPFAts>+Y@*v9BwHczJ}b z=;t2eY$48Nw^qlPBV0i8rowWCzbbHxJ#?~nG^F8W9Qz}ylC|6DhOoixUQVmtld8Gb zQjss~c@7wgIW4I~=Ly8qxRX9(3-dX$@hrRJmZe3{&xTh|1dVm%=O@aZ3jXvdbodTk zR-@&gj8C>BVk+ncb?I{@yz?px#umOS z@Tttlop0=71TP`*un)%PJTIU~dR+9W?b1(B|9N80vHr5VyGRk?RYIeHGuhbcAMur0eVM)B1rTb+H%EJz53P#;k?aD$b7nR^MiW5*V z!p=T@sh6JUHY`niWa&rFHkPF$-w{!kkS-s2yv`LN!GquGvvS!5*UYH-$DYZ+42>EZ zyrpd}hG*88sTSg1eB@22Jh|`Tu~z%sL}`Ccc&;nYPZdzU--N^YrDFrup+(@cRq2D>s4)xxm@qX zC#4Xn#0JcuR1&=v%Nuo{MeGC9p|2A*POH-B;EHzM*ys=8buk4n-yb~ooF#Z-E@3E3 zS{VD<%jIjg7w{z4t~f&ro&rkXQ!9R~P$V&J`Iz!hCj;x2(ZJ_x3Ht?;4RMwoNms%e zEsgy?)fXScoOZK%t)t|hIKYE=5k$%7sU>8V+*QwWoX<@#Vl$Q3aCkAvw_E?XNL58o zWlhOY`WW>w`}a5lNK1T9(sGQlpoT*u`)#`)ADY?pSqmslMXeY6INx<0E2VJR=ZG{6 zD}WLlu=9`5Q%@WiyzFjaHM!C}CRX5bsw?xGeuC*D17^FUApexqAkCwcinU3~OtZMp zaY2nahosBrW-(Md%(2$-24O%AkN7_}ls*_4HZJ-0ZLyEJkKIB|YwxX>XM!h%Uzm>S zJ0l9P%*2BH7_KWCFG48!$Gqk=WJ>S`xEBKhm;GfEMHfxK9)sE^Oqz;ww!(&y>aLiE z5pRo+4=MRj{t8|KtCx^fNeO|;Rko7)LOmRj@OeBMQ2zyE>2gM*`6W)qz#cGaj+t#_U(G9rshk~zsTTK6Gz-xIaf|yXzl29b{=?XQh@nPeG8tlk{mA+jg zZit5lE5oNnW7t+#n}dX%lybnOQhCMU=^wEut+w_d=q}~a{qvdDdtL% zm$}u>hnX5PJ3$l7r+4{2YaiebgA>3gxm|EHR_jJcb??Tkq1fl4aI2<)HQi6&GOr)3 zottx;tC`<~cHez{R577gE>la-{GLuYHMGEUWbBUl>vE~@oV~(;p7AUBUw$CaXi4tE zKCvo%W#uHRR=l;*1`+Ym-dmFMch^v-3*B|7HTvx&9ySD{b^tnvABQ9Q2rXI%#)e6}| zg{B{VL*cOuV+EmWl?*msR&xi+7;ZMQ%kY;nIA zS-_Qf_in3c|KP{+{PO2YrY{DhJm3dwBt2jb&PPYPgNowgP<`qzhUHzk?Na16mr>H@ ztqU;1ZT+Kmn1QC2!Rez?uI3I|aiW>6Nyc>#3pfVSAAvA=*F$6$P!*3!^pk-6mYp+cYP@Cq<8cC);xdXRJI*yb zo)>0qbI61Adg#S6svPc}pBM@%9v{!>y7qa#dHGxC2{VpW0$YT8^;+IVh@`DOE9pXMF3wJoqr*f^zh-U z+4trn2Rg|{fY%dJr3#hX)qZV#`&we%+Qa8t&HRj6{=2vQwwLGZDelKO0p+6wl+QD0 zvA(6~pwOpdtx3b>Q5ew>D-nARXRg}SvR7&S<4jLl^2G>;;C$C*bDrsSCFBCifTxqWL95&Xki zrhskO^lmGMI}KrVwOR{HKdYc^zTJ(lcX2)$WO81(KJT7`xt0mtdBx5~rECO$u4p0| ze~~!}kr8B0eN%aQS4{LoTslWXTLM+EdSnUjW9bZyJm3-4fSW4Bp^(IA zT`tqu;TWr8*o_5|gY^iUxeZgKz_$Xu6-#=akX>)+ka;B27vu^^2^BmmM*Bkf7E!hD z;a9*;?jDR}YG(m`1^*_Qy~(GrWKxXQNO_Bw{k@HKo~U0FcApzv=4ji`W*~Bw(X>dx z;u|exc4M3w;*}Euc6kWvYOM(of-Pm!iuBLqj{}+KvXZn-Yn&`PS>b$RpL@W`L3OjK zibOTHkK#d%mXaS}EMH^?zQ=i{jeFK4OJW7{bINNxks5ljg(`G30q*UeH)M)%G=tUc z<=3s=yw0hSY(HT=znutjujd5qGLP;NqB_*!Xii)`4rKo{vq2MNBaq3oz5FPB8PYIQ z6PlnnfKao73Bgc(`TN}t3dZaf^_Jo@aC3a7s{vc&$m_g{&4u^3|ED z71!g|BmLJxX{GgibCPd%)icbDMsDC+p3{+?q2~u8tz5qA)HzMABmlA9=a_8J*}f-r%M% z{!&>JL7)eyL@fwsaeTC zlbdsg=QQTukUVnku@^J8k|-#}4A)Sgus8@+^W5;sx%_yRIl*u!kgV`>?)5QiR`>Y5+#&y z70HFn=$-hSIh{WU+>!q_um9xH{u{6T-zd@1y@!db4=8ZW6y&D*-&mrr*^WpzYs+pt z5?nk95|=kwUV~-B;B>_d|4xow7p$&X)F|e^$POXW?tP_%QRH(K{)4qVgAU!mL*9Nb z1k!C&{=#rh!dL42hxn#71D|EwTRNsOq5u;@8b&vVqx96e4|j8SAO0J?y-dW$qa-sD z4w@Y)DX$wzxe&uSlk{_O_Ny1KagV=q#XZ6;2qEq{Ymob?nuLFPZUUR zv!9p!A15HGA(88{_lYTFAq~Usi14}JeCMIme_-DZ_{`i+Z@VTrA>#KSWskfk8F@kL zZ|ez4Ao`h)_SOF~9{2ym`TZZn( zQ^&@MgyFrvB>u@LB{kHd=taLD^H4eUYufTg!7$qcwk);>$b)F*bk1)No(Vsql{{>( zmGEB|5C0eL_wJN^dvmxD@tIJw{-`|t_qvfWVMQ=i zj%_DwO5-2ya_3}v5x2yTbkYBi_dk=N>+_xRcZM?lGXM86DPe!7V!wO*tgZHc8pYo) z1J|Ydb3^s|qvMZ$YndnN!aqy3rRRFnzx$oPEnC1KLpXQ0kuUHV$U`L%@Th12;(rlR zY}6-7E`Mh%n=}k;?b{a__W#SyqnUqcC1co^1EczzfgYRT4_>UF% z%R@0tX1&xsv^NRkYo{guZo~he1MN(IGvU82+25S)pL1d+c6h+)dK_(){;-99krTL_LHT=i8dg;dRxEjDaHWRpbEY=ycz&(q2MuK#6qZ$5s`@_dCE41)7Zr5vw zq8awSg8xCUXJZd>Wc`w;chrH1^U%O5Pfvsk3S=!~AB+3PFwK75_HVZEcjej}IZTEh zZ#vCd8MVuzSWw4gVYm4vxzJ7IV??0@kQ7bi_eUy?KR*ak&yG~}i0blu_yZPWmKkoB zM7fzI&iEuLXJkaRDhq{U(J~Yv;}K)!NswbFbXRF5^Z&xC75@;ttR*dEyWUtEbnFaZ5cx;{$B5}phTVSrzX-FS z+6zwiOGO_j-LW)(vRzMSdKmQ7O8%!eb^b53lopOXr0e&Eqv|B^JS5GuV3L*yNsAti zRvym!Ph%x1wERt4|De!U(u-jKV+P3b|J+HywQ2X{v~p6P4_{S^5Bz2JX8$cx{fgl7 ztS+lSgrQ3QGJD`7YG?*qmVX~Tl%-XNmgYbI1pKcNSFS<8FGFtq>ZS*hP4&gel9&Dm zZQni9?5eka{FD6JOZ#7$|KhN19Q@GjwPWcL1#g(qKbgtHvORK2EH>Un+%*=`;+dJH z`#13MXSH@rGu4j-$c8i??5z87FnXi&`$)!J7CE|1df7dH1l8&tG}}x}W^h^0n>ef&0qNx7|dZ zbGn|itbf-mc&+kDfAKf11-^ufz7OToBqh8Bs!kb+F)m@0H{7J2%oLeEvJz-V#OX=N z*K&F1MRr;rmvM&r&mx}5UQO15RH$kt3kmb%WycWD!C##BiCsQ^b<`Q^=jJ2LPfL@} zrMO^mA(%o#zM4&mQ~sfVbAtpL;7}<@n&dZJ^>F@T+*H`^HaiI)VLmp*R znp=73%u6vKmm<6}|5*Ov^?2Mm1aL6t8*ezR2--u96>X{Q$9BBB$godjNX6c2D`Miq#$bidS-mxoQfS2r)u`a^3U++Jurs`SyT>eJaWuur zQXur|-b95O>mt91(b7=wPiZ7`f}C*sQsroY@qkrz7gaK1&}1AKMT(l!ytf7FwY?{` zrIiA=vLPJ=4pLx>2P>ckC+HG58hlBB7*B+PQ~Jx^u}OnL5+wkUX1B+x)F}(wL^sTV z0=cBzWJy1B5>U7gmO+#$&I?wBH8Fq&(19D@z?5uh!5#HW$>6Rn$lU{OCbRt7gWvlN zAaFgXea&lHkmK!4d`{U*)uvw>F}6W^%-;+QN<)*KBDKlBM*=sG-AC*|08s@P#S;aL z06xv$?(*-^!43Yso&fl<89<{&SA?gR<52u)t_AKVWFsA8UINqQD!PC<`8OAmIolB| zq#&G|DqVmH_GmWbu@nq^V|G>#s$<-BMhog`?RHQlBCLcdkO$mPSK$Nk1owyoOY!GM zke5RMT@43Y5D>p5e*c#IiXhF(aZNyQ^5A|p*d5Ryst4u1QU#L#*+hh?6Yo#8IVu2V zTL-5rJW7+JoP&(Q?n5)W08b+y!32C7>};R`TO3p>Adh*0I8PHW&NZV81)BwK$-qdI z9vKMmESu6GAymNl-e$OEA)rwxJ@Cn=whwhzYg*|FyZJ5fzP{_1Bnqe-IKtfap-7cJ z(eA;G6TAdR1-nTPaOhR8Q-B80?WyEm_XQr5N?`OnN{@thRPccb0ky8dW3~~{uDpKa z%lEm(pB7GYZU2m50WFT_S(=~?JHO)cTA-DUoCNr4R zjg|~6Ldl}$Q~C*qmhP|sB%6T$A81yG)v{%!5<=mP#QqpptP-f3Un3 zv^Z}bRfn5;CMpZuTRDFPpSSTW8<Rucc4+V_ozsx#g^M{+(x;{`9)-tXPot?R_U9 zQN5f-W2ek`>G`3m7i%w>*Pms|dC8w}II@#vS9WrYm!mQ>+re9QXBTiDn9Ab3k z^2nr_(}kZ6fqdKTJ7ThRKkrQ`PFLN-tT~mm9_z{C+ip58J>w9EKeOP&xA{KgHUkkd zrTF7fTI_Xc@m<#4-8qd#Ygmi)rj7>42rxSPjd%NG(y5K0sF#o8t}k(@WbthdM(+5G z#D1q=5b_)UA?G<}lE?FY2ZYL!yO8v(?K!LL`tqkbou|tFryJ{dI4kn1mVd~d9psdC ztGcJS9wlwudF2*+H*hPBgp(1MbfHaRDg{%%gHF4#IGh7F8>Liyp8hTp05>C+R@_pWJ^tK@v?fO&i|_BFk82b7Gws1wbRo+OQy$(HJsz5cLUAf4X0 z!Ajzf8=^6e2mMYCAHL^RmhSNyMq;eadvQ8K-^VCe5svLBpCD8lls%6%c>pEfW2cbr z|CUJSO4dsaLrj0qk3k#WeQWCMCHPo&zIEEI?|n!3CP}ecX4Rkkgq&Zg^|x4J8oGF` zeIGE+p3sjrwhyI>hM!sRisX(HeWRlr3|M{`W)&Ip&dQ&>lL&0QG3VxxK}iq#>`K*@Ok}FOY>xFr ze(GDRfQ^opIwk@Mzpggp{ujXN7D@qU{YvyuWb-1pG}G(M-4FsgeRH)(m&!I$nZXDbRgSVs)-V;W4>b_&%{Ep@ne54d8* zbRSXWBUFMf2nSy5yH{L_FA*%w11V$I1UKWJ@@qjiU%ls9M_t1uM>1XKj_p_jw3({} zfAt^*iLiaZj0u+1$j6}zaVRrtlrs7Q%4<_E8N_JnM+(gB2a5x41^-kzQ{EH#@e0>^ z(8`BpLZ>v`&wFCvAlZ4Ta>=QuItajXThEBMkLThz3p|`f;B%fimkKc5L z{x}{=)dYU?4R`N=6zois3(5_|$(&vV`@LOm;>M(45oR@s1ILLS$0Nh8R)DzXw=uz3 zIGq$MgR2^A!71De)GPdS(y(5OJm1y6JRbJ$-46i+NgT-%jRHy$D(5-}k{l+_?YEVJ znQvTa|6(zx5#oZ{M2nAJ_=!ELC;tf^2UXX0VeJ@Z-PM-&9NPk;?IBX=^GtrAkZ1nY&=0Jj?0T zxb-FT6D|fHWa!Ae?EXVuG8aIm5&>I|$goJ1o|U=4W>-jKI@8I`u3IbT8u!C%PlD(3 zHKD=xy`e`q;Ay2Y@;H*&8(&PY4@kQLa=q?5ykolWJ?~@BqYy+n3uF%h zWFK&?@9u*uCfZw+E)87pj^d3?>52JzE6ACQP!toU8|*~R9Ce0f0Hgk}>9dCpq{<~c zqTW%(tu)0H*qs)xMbBxB+|f;yV~eehCP7?+oH;;3ddYS~E{}3q#z*ehuLePj*A_lT zxT^*t`1>9dq8>dt?Bzjfc$}#Xjt3o~5f1x0=T|~`A1F3DG(-R<4`2jXgy9b>S zZ2msxl$JU5tRrhapkJ4m1>E~^mJkJd|eNm5iS%QFFa=CcO3dlOnTK9c z2-gqCRs$859pGxc3d6oq?3m%$1H|aGscm&_sAXgr8!@GG!x#&sugXwJ79=AvX8>tv zJiC2}XwDB=u}moIA-I!!3BqV0rL+eur0TcL5TR6)CQoxtTltk@64il*Jl z+h2_|dVz?)YL^+{>~HIzDkwB85b1e)JG=z4BG#N7g+*%Rn5xPZcd|78uo~^V!)TM~MjdNEetPPlfht>!Vwy` zOv9P6xHzR=L`wpy7ncy9!`|nDdgTmnOxGCfd{TbPZ>T&M*%Y7S7TJ8wvd{%^0&`@b zvQ9H5vKeF}+X=-Gn+kl1uCkd;1>^_1A=5}3xE47z-fv8A z|K)0GVotT{RM|sMH>Q^$up`e9K$WRa8yTjQ0KT?X<`)H={VTY>r1)9A77*_0pcIT= z8^eIu6wjjc#7?#OtbmRyjVB9{Hn&H!E&QzrL~rGJChDd8>UWqjcQ*r>_1JozmiCSMp!lb0|(A zeKs8XoO@^52qu&&XH1_ecZQt(N9JY9mI>W6EYQuTu4Sf_LR?@%#Wm{(isf9-_U@v? zsn#-^?D07fryo4k1X3G- zPz0fKKl3iJv}pNQQu`m>n|`N=6W!>FeRXaXsM`+%iI50iZ%WAaXYuz>y$fXzSJ{-q zYxSp_y_w*(0(cTcPP^H%CmRWfzkuQiME09?aK-SlYY{4E8%;9pn#64Ohcyc5KpiII z)|XqqrO+yYE-d#6b_DZ$k2gf{gPd2a1JXYzz8%_=9NXV>WHpF&GvJZ+=s z+U=YK5^Y-&qzH(x>1P$r(1h$r4dkc83(NYnvpUhszjdEnt9R+!yd1IW?t#LfPD?Cp2pC;ITa4iaOi+HjN3v*oeeMq2%T zFQT;2SQufLCw*fRE4O`zSBEgnCS;7j*!h?B6M9Zzl;1o0xv%lax(QNueOv6(LoQdP zInS_M+Ld8{6_b>mTol<5xBF7A?Vg7{RG9{&tmw()<>x;^ZFbrubV$xVL11lbV#L1h zp4k}io#&3c4OJ(9)pGu+vQ)79BfZ9as|0_}9(vBG2#1ctyE2awe{&l&im-8BqNax8abyTrtCHoRl)bxqQow#T@#qF{$UfFLlrq3NE znx7=}9EfTjIKVKZ`mypJRdU`^Y{QZs#Juq5+l5{{#JW&y0aics3`38K>^wg6&o|XF z_t&w}vOvo*}7c{O~ zSP+UEYdnfpzSVw^m#_gO;%tz2c4>4Ux4k|$hmR2?9?Pz+x)Isb48HLaUag8jJw=*d z4LVP3^0V4;`)(g^?wjvfEY9{TWVStA@#qzDUfnTt&IfgPC%#%Ck}3M~V-u?y>^`FT znPi~$O+qUJX+<)U!f2LFxsy{Pi4MMPBzQF-8EL=IyYS*ZMffPJkdj{{n4L1E(THaF zh()fq&)Em(`I;DJvD5~QUx zaaL>tvY}G!ZKsqQ+mXh@zGA7{_}=H-N9xoO;wNX241k3}}OaZ|*;4!fFD^ACV{oj{y_j_OAWPp`yr zkz!LUsG+*SIwkn>FJfX${m2Wonh{L4{=BSXaToSAx}dgiWYkEypis*Go3^~{g@{@T z54*nZZ)%tpuCun9TN%hGtc!FMw(|hs>F=mF$|5pwJvOul0Si*_J4mo_wY-p$}mO=&pgPIhD%Ex1mhx(pyNU{)ROun?XR zb*53tG{~7>#t=(X$PtyrF_%Dq;w&IKO%4mx$9x3bLiBd9X0E*_%S_$d#2lF{;F{ZH zmvbv(rzYbxb(I5TVfK}7k|Wh&vM?Y_HA%tTfE>P22{Y-jB6f~X{{2t}@YHV|ZPdL` zowBe)?tYm%bhqJ+54UE&HQ?IIGjcUYk(;Ap9WR;(_%X__HNvTydwjU1ftj-YM^d~rQx_BMjrzq4;0WtaW$1}(w4_*jqMBnAys5h@ zmTJ;4_K~2h0NyOfUHQw3IvkjWw!?V|Pa4OLY!HmX&uv99VH#AM`sTknq4RN?c?l01 z$Am{%#LVEU$Q8A?x|pv~jRFhJ170Y#RZEAewMj~DwCO{))0@i&l1-HPZ;)N)*wf_X z2K*`@^(Z}ujwBtOj-)MEs+`R#@?J6XsO-6Q?G$+5`|_NkwM-p2_FNVvXiCFZ9+pj% zufQvRF@Xuq;0~+^5{i9f42?gCDZsL2+Z~{`91REQt|2hWrqVEQHz7VpCVV&j6A}%_ zcOeaZiHSM49H7e5FcH`%ynmBRe(%1ll}JYmLZa5$~I%k7ULwe*&>BR)8)1~XZ+l(Lg8$-d6`ovG*h zet+-#N2xQ;+~?f)b$zbS=U%SsK29#>6+VsvGpXRg5smZq>l|<~A=1;1ubQOHg5|xN zHYej(&D?7U&|?&r!w`v$Nz3FFU65A|p}B&}Du?MTlXG%levkt-fktWwiW~e-LF15eTW~MULWVNP zgJk6@xJfr!CQrWu1((QYu!80}32rO423)C*^zs+C=wi(vEY25R0^>iMQ=1_Y|CemO zKpFL<3gsn0V)mcFX-I2Lcl_7Q5z`$@>|$G{=@1*g!g1*UC3o78Lx74Wjvnh~M~?5m zxklCih24rzZ8}O(U`fr5=6MPSiCtl|)CZVH0x_*Ntp{R%KUj zkTx74(|)G`Jm<54M`wv$vN5fkNDib{{VD`1^E~57HOp`T>gyUv4Sbh-z?#rtnH6A(RSO>IqOyiJBdbS@#XZ%>_jz+~7TsibH0Yef=$jZN3GMya;0d z%aX4Me?od|)w($+gk0qOy;xYTaj=jLL`X}iJwuV*dfazGAzUEZGyZHi&VtNh&rG!d_=XiHMz_NGLBAOepl%U{QIcB?H z0>rdu_=`BWUlB+cK{@Y1A{!nzH`)^I8%dhxaAYaWy-bPKVRxL(D6r-~^(F3NSwO*~ zjKId|)m3Iig&)h_vy}nZ>PL%V>CnUFnnZ{9O&cmAgC5QIxMOthQU+wBHnMq2(DHMU zOixsErhHdQh$^C*bTM)jxO1t7aAcyCV5A>*r@&Sx#vRkL3iMp4E3=ayKQap{nablI zvHWV}@&cAZyYwa@&B$JO6*zAsucbKchry~MCK}&}u(DG2u!?FEn3*@BL$SsZQM&G!A0lSG?4DW3V}%LE zf7L(NoYPDi1V6u9G$zOvoGXyFjb23=M=+~{h515+<7t0uP2HrfLSMDgz95Yy9$wJ_ zVKtF0DC5iNKntz{i{(;oZXBRk>p&)e>~H8u_x8VwZg$K`2l)R?!s}y0piqVdSF(@^ zhl$4LrCgpAu&M;{CrK05A=r~vNvkjC#0yY!`wt3G4bsla;m6FZxsU``RxFf_FWFzJ zQTAT^Sw9md(R{oztM_Tz9p`gJ;o;@5+k@SodYMXHvbWt?oqnBSm88ESIR*f!R!KK< zAe4iG-rS%0c4)+3&XRsuxzNc;MPN1ARzAazRgh*%H_J98LRRZru$xS?qg1ZKL8}mT zK`0t|8O)ikOkL6rpfnUs8)o^!a}?xqbkfm&B@ogLcJnf%9#0##DVW&rn7OYwL4k}_ z2?qiyBs2mncChj~4eGI1`N%(ITJ>=i*9sNXf6L9~EBIF#An`?pT`70KV&nw*I~20G zJ0XUA`cI}~mnrWrfV<#3&`723co8f0_!oeaGt z{^M@Jo_(oYpPtjMD?w;34vos;Ol3r-Vx}NN?-%I?xZ+d?Kv3JRyTY1%F|t?P2UwnM z&_>Mh0G9M;j>Yw)G#EZHUk6DLk1vVE^!43_59TTS5|8h_2F2&(Vd5=#&nYEF5oq0$ z*g62wSl=?GDT=%EJn07Hu{HN~AXw85xSx+q@F*p?`hJ#e!_FHr)yfKFAv$aV5z8+u z>I9GQg{Pf1d+`oj(FdR1f>Tz395=Y96;*AkGAq#(ewvjoHrSR(hx+f~I3QeUJhl2? zIi)*P4dbAJLSOha>Aq^G?3=^q&E&OE@dC<-s0nha)wNxB4CI>9{s4JH6Nc8=5pVfm zzVlyl(aZ@nc4kM!=r-IS&p=zrcfeE2!#d;%%_8&Ft^`MYh)4no6n)s&{mk=ap22ST zm4Yv>0#-Vy4)o3>d^&G}X0k#?R=_JC%s@1KBX`8W|HFbOdmYEt81u!@4quL_&aboyJqI$ZUc9>)s0eE)L{3t8(iAXu)0BYeJ>W@ z{bYURT;00&nPVSdLw+*``98P$jNzt=rG!=ahrj_l|G=GB6Xh`K8hSG{fOov>vM3|y z^1G+#5g(;Z@i%HocX)dYcSjf0`m+`m`lukmcDYV{bvk3`6B^n6=>9L!wtl9DbqcyA zH)U)1E-LnbUKIU$*G7?{`T2ZwORVYcNPIx7;dh5ZzbN|ohxFYoezaoD(UhJsj!zw+ zKf+^H)Rt+zLzQg?8_zWso*Lq@4Al(C%5F(#FJ5pp z;#gaBs#virO?Vz4q~nDD1TgF%|SV6su?%1+lEh*789GK=w~XNDbz< zp~7)G8YXblHFZ7_J{MNix5GJL@ij93NFJe))Kx$;YC+8$dcTHBn#oVDBI?b2OWczY{Hny45jg|5J%+r#t6i4D= z4e(RO4|5A+kh95l-WYy-K99hrjF=Ss0%zpr0KRy-7=@5(hZM)q5+p8*ECsw1}A(!boR@gPSZ?lxqlMT?gO3Usf3dkZf*nfyd

gp zg_3zDD^n-9)PIICWiAOZa_4w3{JzENd(|M?K!J5DC#^|tea1wGLo!5;%F6O)Jr^gN z5$Oic_AS1^axe^tPDkZzr1GbTHi9esVf1^)!st1Vd#%Ll zCNXBma3RTw`DKm$(WKT0b%aOGrofu`-k4UkEx=L$7lJ-F#h;i@y?$3TeqE9;B!~@dqjn%%LB|7o?hOj9Ubn0#JfYoiiIOZ_#C2JpTmp5^CWzF zCXl@~#>#41nv4fP=%p@tM2AN-2b1yLuctdg!`ZJyAD z+=Ms=DBUQgG=hRNI|o^5Z*ND@pYx z#agZjJm0rzBfIsPRu1#@FFUfqZbXIeoel?B!(MFu-gAZ4bkGLCIaEl<5-^YJ6{1-_9IBf z7`ClAdbN@4!Dzjl?)YA#=x{C3`{JF}_Ag)IpYV)l2|iP_eErkQZ}U3j2Ia>RSV>wb zvf_~DdBCc9I{@tY0(4(tzXhLs`!8!XS6{OX@vnp`%S{^t# zi5TuTR!M2o9j-P@WKLFn@~#v}wp?2vktncG^`AP=a$qWX?lmc2WZ&48pbs-FS!I^@ zB<4r4CFaK}rH=)fJo1Me$`l$lTtPx0rf>W)rjN&>qD`B%0G#34mBRioC6Ql%xMJ4 zZ&^DnV9thSex)!XYrR*W4MImUr0SksMizlzzRE^jBhrl!dHBKZ=eOY3sR7mLGW@U?Iv|5c@drj`Qc1Hx%onhs8oO zq#N1D1cMSZhXE@$Cy{5IRZR&(s3+PW#;ccZWCCB1ybp;*!@f`mk#iFcLp1D>f*BM` zwAOFILn!Vw?=P1UAOxPthW?s_997dCZpbR_fjM7*S4->;qVeiqf$3Eikx(!qN;^V|_uwT% zvwv`0P&lc~I-v)()iGobmMICugeU$NE?{W=Dnr)qB zjRTkOIBOERM>t;n0Y>B$6=a>A)norVyZArWKZ2T(s+>a2SVnWJBATJW;WvVK1oCgB zO=Z-KZtmL!qhJE$s<|=X=T`53`A+BON zF+cahC7c|DcE`PS-ZX>IOAB+<;41iWkk&UxLytU%FII99b*&9(#VQ+0Ya*?Y1oF6S%FYS){RK9@&uUWq-%99+m8c{;rM=6Ivx`{|nB zzskNVdvHxOR7$J(6yYuycr$(sqSwKR!fYE;xc!QgckOCH!{_jnDhF2}c>{gfXn}IM zX8GJg<)X^&LFf8M{r}jxCGO*YPXY4ZgPk~?9i{E;g{_0#0;%IrE3!^u87F*(z1Q#Z zuNP>o*Cc*Dt1|v;r>!c$C2}Wwcl6irO9nqy_`}^H23|7kZc-n;GZ(l{KQ9tF^W>&4~_xbLos)ZecvRm+7DIgGjPS=Zg`0c|1v=+w#abkQYs8CY9 z{k9ogT@Tbf^z~mi>BaME3p@M9Uw~D}hJ{qxy??Y8ye4wjw(YLg-d{k}&DdbovIa?M zSYqBjB))a~@Dv&iF{6(+5(lsU<34!b7tCG`cYGeYXDU-!iUO z5+<{pRM}XCeHuZZ$i_qYJT0PY;KJ)C@|#Ul1IN5|X1FXK(HND=w&)j`0A@m}`qYK_uO_Ki@gX6QsdSK1CBm@cWf;ply)opv(|B^yCV1VV78yspTC>m&?n1h z9gobsq>Nf-EhMmhuN9Tt28&2JTB|3r_-W(MITSslsTsuE zSK3I6vp4H0Dfv$*6hJqd^AhVr%}k_to%!!?oUIzhK`y%B-xc&9*GFnpb48^NA)#Lt z$s7Pe>PaW(1&|q~G_v;H(@s4$es%1`v`*PJ8pf>unJ>m-H6CXaG@WdC%C4%a1v%c< zQ%(qMpYG7hgvcO+#}6Y+p_NS3Om{>)+*^0W(;U3#S_$d656@XELwhP^@zXZJ&Dx1c zzL*wd1N5&fN!L4G==yxs*)0Htxni18F(_yRU(*R#%S4((A~p@6u@O(Q653CY zwY$TX1ab%uG@|ut*r$!*EvT87w0kXh2bt#Jd=`LSQ$y&xu?o%Q7~i~c3yx$hnizAb zH8;i#UFu-Xy>w=v&#t4={D1j6(xHcU%d=|*Vy^KiD@EfzI0I+&m#nSTMoYosD~n{;RE!dqp(81O91o1JExjG zdu~8-yE(f$!$pv$W~ntKc6H$8IXe*e??~`W#H)Ny%1Pp)`+eSanEq_*h0jv*FHh8^ z(*#BTmf|R0dUqz~HGwjQvSL-!T~Y{eUBKx$&{NF?&5hs?6F*vWjA7|kI8qjV6w9^RUif5g z@_5!fIcbSZ2yei(pek}c%h8W!X)vZgd^!;IGt}~Ks$hByv@f5r&wPxGA2r=5SCt?-13m?R!8J-wIXwJ zXcET8#5~~|3T@J4<+VpCOHjwqJ2{~HKB}>1_SIYcBAAcPE_%Fnq?gkPvJDW541ED= zw>w^_%?VupL>e`k^2V2-57j4XULxkX=k_prEQkiVR!OE1MS@h?+)hD}q-)A7*!i%y z)--F)ssBQqbT2a#H|btrOO0gamqT!;eL2rv`3DNc$8b)s-`H6nbWzlM1%%%)o@M)E;J@i>WQZKoQT?~0Qhk|6IZ4~(Kv0*uz>L&7a6)D()F zwaI*veCASs3#5jO;c}C#{nNIL$AQ9pXJf((gyY{{PRuX7gKl=rjKilJZ7bHDw0>ZL z+ouppIl@Tv#hg(_$oXRadOe|t83F1Q?Ep#-T?3KFnu0(!vTy)5 z3*M|+H562n%eY*E-pwEVY5lWfPQX^I{(Oh(liy*y6^ZAx4Eril*BxTFvsre-3c-k4y*^R!iO2ir;N}6EbTOZ;sNjw#81SUwTVK=Ch&ZJv$j>V zUdk5v%-;?0$_N)+#hWbTwX+uiI)vvoQZzk1=1>z_=KBJ`(#=a@3D}UdX+sxloz!&TJr!KJ#8R+=i{u* z9~)9jv4%nkt5~e*)cV{ryvZJkm~eMQ-g|SaTX3~j)Pp3vGV4q(+q4K@FUBlRO7m>I z7c0y?K4?YV-Zr+cwqqT+3~}|tV8>Xk>tER>KU1`fT0s?=f#*GU%{~-gMC2VNc74Q{ z2@pq(5Oe7#iT0T>;a13ovsPR<5GGp+p65@9)eh)}#8Ma&`x_E}X$Qp<^Bb<337XHg z@>o$ny=n8a3eoCHX=jxa4XG(5ycjfrBL};m;p=n5m@mDHd0bM>h>;WkTbVWU31yta z_epf%jqM^=a+kTOFrekq8>nt?U6nZe>NLHN^+mCnow$u@nhzHLjUL^7yqYzO+4d&=ks4njfu`C^*|~Y z@rR<}=D<%s&*q-B~I-L_&RfD18%YfM{At@q&LhNW3WrjE7`4Mgl3XL8+8MfA_S zd-v}lEdi?C$Ae)FxI%@3eJ%pj)u=q@GtfwnqKxwt3S6!IW?OwZpr~-o{^dqC>$FZ) z{z6|N*8b%zO3%0WLKa}VGS&8Kl}7<h(XaOs-leX~iPPmaa4FHb;U?toLN%Y(e`J+fa`&dYxtHwIul{mmgNpl3I=ep)W$ z95Tp)NOzjx8K+*TGo1R1OIr}q*&j$XG>Gz$RCrSxNC>1>8EbJDUB7Yw< zi4J$4TEBlA9-(GgGD*ff#M!@0!e5MLVp~zhVa%SJbfaIb13|*^5|G=3i~$>bE$l@5 z{544^x(g?qoG;NNruDGS#W!$-Aql-;j9$uxy7gB4k#@B|9EDYOA~Hl3(ZX_wcVK5a zns^HiVZrM)nJrU%*?Ze2@a-(bb560gifz3U)=5XVc^Tl_*#xM^pRh_Zf$*eIho_6B zF-jUw-5OZrWR`UQoEt^T%i!Jn`VDix$3CpRBEs27LKQ#5Sr;_QK)?Q}Nu2IjOsg3< z%$UI%nx)jl3O~KS%HZ-XMnYkCu65w`bjR^xu1^AnW|{{ew_iZ4J4*C3-~YR{EYFIjP_%9j zntA+m_3|tPUpBP8mj2W%*FToJN1vlx&Dz1@Gh%=Hed43+k(s!lbea z{~dB2;eRk}DDq3PHhM_5?JBWoDRLtIu)y-=OBZ@lL*l2W!kcFv*lnh5-1u5bGnyvd z*Gr+1*QDc#Il$279}y2JJ*`~HIcx$=ca~L1y9=x1!^;p{v=*!%{uirX5Pm3?(c=&>B1pq-t)yFCh7RhZ6R44oW9#p z_Wi2zvEBK8|Cynkg1#hK@vx!A`hbg-KX-p$+FdhUbSn0;3b|<57Y!E6`5121E}ZoH zQnxO;JMT62LZ}FYUHJlVRkF&yYLkimB z#GEgD_A7I-X64xKlbdt}b7CGyJgj55llR%Fzx}0U_tIMV;rDXF~LQE4r-)cXIgm(_W)prsP zcSHxw^M6Iz=QTH4O&-fHzcvQYB(-0@QdIV0^pq|BCaqz0cAS=!{b$g-Pj_hk%zqU7 zEv>!O_i@h12UBkvf@k`eKS|Awt=pk?I~fxmGJZ((?%vIe?FY550tm{h9n7(yj?>?G zbCC_^%jAvB(CUlxhA-3*>dtI31G}H&W|lTHvgyZaf4>e`wDNqqK@Zq`y{W|iP@v;D z6T4ZhYPWaQuQuo=wv1n|`t_irzIK_460~?6TjA4YV{ly|U(wEiBduEFfMpniL~;RQtoR$U*5K zvOD@3QP>1FEXAvDejhQEiP?TngrNaLW7+^QK1EvHxC8P zHfi@0Yvsi2X2hQdZ*o~@i}L-cXCd>TIAW9os=mp1#?Uhc)M_k5(tY|`Q@3U7?;6}* zAtm!?qMnl45W9mg|H#j<3Vu(I>x-s+je}88*I|r9@WGRG&D>lI+_c5VX@(Xzmp(eC zvZfFEjcI!VZA%kg{<|mi=LC2@^Lc2WgyGZkdxPx@F!gDN-P1Sc_3BxJCgsKa^FMM_ z7u$>9j$;MKj%TacZHw1e#8!RQ_*!re3n@D#L*nnY*e)F2b_~DIXo=lSvT*kJt_)J# z`iO0juRvj_GA*dnd##GeJ$x^l^-si>XbZF%gWX1tTUJQW0PXD+DiVmiP}5L1wJgQQM?BUa@=Qtny;Q^2C`enz|geC2%A{LA8jtg=DR8Y}om1GC>|Cm^soRzBR?>~SjK zK4l<$z}uwif?>}&n))Y-)S>?RdUqN)#HR`dsJvK~Fm%QCsNG-`c9|wTr|U={?fF z_e^_;QTstSe62)#-Ek&Zxh!0~9T|G@Vr`qc^y=Tet^kMwQ6`e(V_@6wu}1f;`(edi z>Bxibl8!&f6Md%BHiVLDsQ0_TQn)qsl7U(dIol6o5}=xrkO7xn^5Ozx7ADJ|7_opU z_M+|_0@$9KITUs`XDZ1j$!={@Ck>K}ppi4^1fTN&yEje6K$2eZ?(K~(&m53sd}#H5 zm!0d87`AROHo{$Cs}Ny!qIoDvN#M2zH-7X}0z#V>h*}6UXA>Co%duCoV|PxZ{86R{ zmUT}e+X^#FCS*E9r}ILk{`J>dTtic#Sc$X$t~cu4p@x4FiRvBAH8cc}NY%5blJb^x zI`^AVhgjBF8`nmjOb3YkFt8Yp2qE^MCO7bDS>QdAfW*}1-bDwMe^2Ff*r}ADRf~Ag ze#5fYa$wc{=B$*nI=px;(!1X^BF@L`r7w!brsLDb=2YQuteE^tQ%g97Tpxi)D`cNg zOb-oxYoz5lc6|&}aRfsYz`kRqedC}sLzpwu~1AjI6?sg4U zT6Y7d(>O}pv# zBk%4-B9^BcYx?e^@vc7Nx}e=Zey)nR+|E1fm5hY`P2}f~W!eFK+%B5pf}bg+zio0u z-eTWQv_VYF{&2YOp*`$JB+9r?n6XGNk7nVhGtP}K=qD|Z*4+8i zlF!+lynIb<_W*eZ@7YZofgi(2lckBe{?UFZRT=o-;R^^JSE_0F z#l9k{*m^xMZ0x;?PSP^M0d=v4!!*DKk+JLH;-8ly@26I1f%O_aP@A?J#M`ZrG3I|Q zcQ<0eLA{l#w>u-^;=et5ulZbnh?&m*|s7q&b8#{V$N^OiKz+vZq>O>DP8TD{nK zgw9Yt8s&z>(W5`X7XcD-+@#d-yapC|_MuKdBOBkMhQ5Ru7RF~q6Q@NZQVDV!L*ed( z>z7w|O`6C*Osi?rU$iT&DrwWPD+3CeXx(2by=`@vz9_f`dnh3hbW@4WCtNlVd%*ec z7PVfO0sTDT&k2f5gkfF%wH`{4G@q#jAw=l^yn7SfUH$GVBEncwq#(dGE9>`%Q1uiT z5HO%Ka#zVr%|f}N?E*R;%s8TrLT=$nQ?IfeQvFUDsb2Z5i5Up@$E5F`?^g>=?J8vq zlMlhULN9oTnFHBD#;oiCSzI@z^|LV_5u1r;25moEtSi_Cnw+*wCdyyswJSrwn=t;p zWk>Gwaw=X(RA7-}NvxO4NPJoPP**{V9O9J|l#c-Gzf6?tOB*Tlp8vVaJ&BO6Ha4Jv z-vvOPch}vdxHWSn*q@x*qoH?+s_F+=0xs36g)JkB<%X~?=#Eu4+ws&6>M`U?E}V%0 z5fA7+?+QCVCcBJCs8QM}1G4h{KwnurZlXg$LpKduVKv$Ay`>0pt4Oj+wkzX70n{Ah zXJhDHeMV{oDc^v-0& z-pvXE_wm(jD!$M!?>}(fIW3Fy*S&nlz1)l-0G=S=yV~D9u+<-P)cm(QZ|EE%%mGKx z5ho8V?-|EjAq|1#VR0-3oBA)l`##vu%TVI_P}5Bt^{?rk`|T4iw}VTtjPfD({??;Y z03+-zT{UNo<@il^fJMF9vDctefd5L+C=)(3NtZwjlEOq{fi17{zZTV_J@$5={tuAl zH|m3Oz0%JBOcJNByMHv%5PZ`EgXXaUBvp)jsrcw*>R%o`^w}<=yp_e ze_-94I@ZM%E7KFlb>|%h&|jfdO(M-PJZnl(R#d?X7=P-~d&E6zx7Jsh9&@Dv zfK#h&zys#6JahigoQmDk{`L!Zks|foE3}lxuf`sY`UnHP9SN)m4mwxEA9}~g`(+DM3yvv;J@@jkuYPD;QWU$N0;JH0gPO%#F8hRf%$D8IOK#rp zVzRHP3oB}dUcETLG`sSId8kHchDGfZYC?N{90MCs&Ikkh+If$~^f zxD6GZfMhzrTG$RaxM@+Tgs38n0T6e%W{3o5w>Fs~!FgMvj0a_>-Nw2fKZ1N5nCAKJ z4sQ${Gu0YhLB@3}2jAK0sywiKQ~f~-*HD$@JTaOs!m$XujZ14Z4^lQ@#7Hw%plr!n z=!nJy0LF0uAt4&-RNH>Ty?vZDkntSaAVIw7OleWHfdVUrIto*0z?$6m!M6c()#336 z`1Ou1PkV3Wmdt~KqXqfySjykXVL$MK3t-o7_RZj<1V&qU7p_XCTkGdK04NyDe*mo( z#y#KjyFwo;-b%1{Q@r!}^v9 z2mWC{$)XQOhNtE9Qi-(|F7{UMtnQ;(>oH``)0sS1 zUAXN#xAZ5*&H%X89$KRc%;#)H<16sIv8JAuL--8GcnQK>seI*mgRRL8nR z@fw8qYsoW%9XzOO9R}6eKi;CHH9+M9OP#>s1K?Y@fi9nkPy;+5LN;C1v7?1RDi8+% zhJpe^cj|s!{OuH>6X%c6MH$>(tzlnd*$JD8?AlSy5yzyOb-!O^Jj5>-PI=WvQI|_}NKMFHJK1Yb)Z{R>~ zbn6Urph>ZCuKj0J&rLo*CM>o*t39{Jo0Q3a<`%Ys z;px@`t(FyR=up^;f&5w)jPK#9yYGP_$X{H<0@RaFDh`jn+d(|OD6oVY=};qOsA7Re z-pFtR2j$X!Ino&G{w{|ox(<^s54__mxyOD~3>XRt7~r?WPjE;j)fHMkA}SQE-g&KL z%$D4p?=v@qQjxA9Dj^(2wqsalAC`IjmPC-I{ zQEa?8svif$X<`C3@3gI+OcfX)CNK1l9->iNSVC(={8K^}EMyJ}MxV<={2IHT~w$=E#e_T;Y3+8T_Z;bpB z1#IK`{!_G>_l8*wqMAF5qz) zlmYfA*-%Dxd$TI;GjMgve4}1YHKXrH%jOY2t&FgJraxj>7M+GQLI@yvajl!xZHiSN zWbX-v6=v<#J=`>`a?1M__Iaf#=3WW$=pejLbIDq@d229;Uh6j_RWXrtIp__dxnNsx zU?@%Ua2u5xKAA5u?FINXmtEvTdG^}4*yR@GNwoB=o1Iii7I(DldF6fn6sX*^BmQ{D zsSaD7GK*1dou&yt`uzPYJB5T*(Re|>K>P9B-DC%p`YNYF@;G@Tvdi6??BsJ@#xWFz zGvBdz?}-5_3e)f4{;G66ouR?>2D&u>*7~9-bRIB%HXIz=3HoI91un34OAJ#; z3C0YnpnAQcL2ERu{C2yd?#z8qS@o%vpovkAo6%FHh}%~sp?OdqwHE?VAR7uxz>G^d z%^2Z(pN7#DYQNU>ojMB_7s#X`=w*Js?2u*xtMsgK@qixSo%$o|^Evm(x&4^pmJPBT zBXdxkZ_sxm;4*yVYhxX^3;wRr9Y1}kpp5roz)Xto7~FQFD%33%W8l2r;G&M7lI_0hF6!LQYXW-=!I z4s@1+8l%Q+3s$6`^{jMm_Ef^+>EQ_$K|XVunNC>Fy&d ztP)`0NPvIgpSC_Dig0Su{f8NDi}PXDXk7amYh~A!D)MTEz9i2Rt|a(83l*jWB%G{D zDp5n=sxI}biw#y#m2c`beWUEse$z~Gmv;`&JH5z@wTGl`qtK_DOAyA&ug*Usu}6%t zMnNoHxs9v^FODiuWbl3J&WryoH2`L_Hcu+lkk`fbAIFq0jLHgB9SUx{%Sk%D%$EcO zt-1l&h)snZ?KdJU>D{5UChU*>{cYJ(l>EN=z0V1lpqd*1OEy@^Gii>#Ie;0!VP&;Q7*CyKCpuV(W>5H9Tnb^9{1`0 zBp*edIVB?SVKBIt0HPUii2DX;;5jdsEM6?b14`OE`T9eEFa2jc-QW5WThcUpa*p%} z=DaBNM649M9Qi3hL)4v3yvOokU!!5e6968UH$?!wGU&QzzdDHJj}2#^*wbffXP=n$ z`xAUjpKO219a|I7N8=Z}HlP6AL$fwQ&6_#k_hcU~bj|Eu^_kiNtdI1vGv%p#m%q*B z3ZS2%?+ngqRPG(=S-xM%y;ZqD!a^g5kPL~rOQsDFgb*p`hV-Tqken)oAYZ5$ znSf_03n?Q%cHva)y%6$&rV+#T^jB{hUZvuhFexQPY+E$Y%R^Qr+ROq%|QP1t)e0M~Q-lImgI7lx;N46POI z7fD*1fIC5lZF$uni~^%H#M(3j8+cfNzIVY|kc++Ch#v3Nofx4kSDoJqV0aN>exH8V z2MQ!Gg;MdR({9x5A&D03ZiJdh*%MCG^R1R5q5jzgBZwcS&Wb4NKGmNpJ>GMWmWx{H zal*Q5mEHmiqXX=Pb_~m(;n)nl=_Lp_c)$=6FQoZjke8=02;YIQL)rbK4*K^FUK)|C z;0t6NOA(9Zg7=3IF^v#soTEI7_(RwP^~%ZLwf2n3G7dG-60ghwF@x{Ds~XK`vcjnvNGy154P z_P*bT&WgCgvzKmyayT7pGN6QLnncpT&JRO9N-K14M$N4ZLH$r7b<>v4@x==G zQ8jsK#ODP3&d+O}cScZwjUpcl&yhN}bu-2*m zDBIv*MscE{6X; z+2+0pB$2D{q;gS}Bog{WH+1>r#|};s$R(C+v0^4i25dzJkQFrj$cVmNle~@_h8*qB z16hHCyH~%u8NuI80zBofFMHj{={`NsePUg3M*Q9heC574n~t_>Ud+O!<* zYCmzAC+7uU3=*i|doWvA99zM43{<@(19wTMC4>*CY6kOT2s&7A9x8)l_Li&=)P zp=x1}@fQeP+@4@=;Q?0$3(ys;|4e{3q8&k+t*deryAT8OP#K^sNnqv3ynrf>5k9_S zQ4vT7`c!4RhZ~VZ&qxnUfJ_6N7Sy<7*e~A{mIge<1}*Bpf*9Mox4n`&`=B8piWfC@ z2k8W8!#J+~3^HPCWq9G!WRw$(4SM?w}AUCiIEnLp}t2 z7ble`)(FUk`ZSlMj`$n2m+_mIm6gWjHPrZTVP0HbRwgnV67y1GE4sJyP;ATeiPCbm z^nFyzdoN)+wPz`8L44%`C7*!3`8YGsr z|FJ=b1b%f3`s4m)OxL!{&adbHGevJOFR~8ZBSPoGx>w4V3rfE^8OTZy0Zc0tq6DF$ zxGGF|aR^p+fki>Z-jC_CWnvBf_T(1?9_WlDyNkdj2Q?++^SwK=A$4f)u}boQ9i@*- zi&3KXW51BWxn@BABkdtn_}q@OdMwX2fL2Vnuc;9af~4Sg=8ls~Bd&Sm2bM@?4y4JC zbLCXUTyAw`^*AJT8L2Nm&u)nFMgRKSCh(4YSKnkprLd8Lx|DiGhJ5U9JJ<;;n zim%n698I!lcuvx&A02M3gh8;0K|C^uFBLSFNv%L6F;c87{=#BBo*K=Jw7x@}Q0(3) zwes^?_WJ#?({uST>%uep&3&pn(>}}b%F+7>&n%O@;oXnU0 zo`qRQc8%5JmS=@pU$LMks0l>Ach__ivRJ>lRy{!&E0w*ni0g!JCv#xAh8i|;=v!NP zz~xL7Q>gVx*0;Vaeg)BLQE+qKTX`erE5-;>=s0sV?g0(ax3{IKaZU6oV(@S(z*=iu z7}GqP)P^XdZS!(rDhc%i)1N{y*Nug)P#dR$DX9Zz=r$i@hp6@>e}TE!ZomTas%y$_ zYd+pXz`H8xYwSf8hzK5}Z7|N}!vh<#Z6Cqgn8D7A#SQ@a#m~5e9$}iVDo4#X)tKGp zA={VlPw+Mf2Nj$P7o7cFC(`7kzF>VE%X%ewb!SGYk~||@?wRGFZ0J6}=?WjGtu}jd zXHBK3jCSs4&?0qon}G-dtRu4zYYZ{)(vSPuR9Yz~#Pb5Cg6wbYm-J8W5N%t7B z4}QNS!B?y92dId}*GB)f^n-{M+$2j4znvThkOdlbYgPm;uHXA^?s#NS$CuoEu0G8& zR&3oGGiORAW(=+_KO_XbiH1a4GXv1ztxWk~2)9ggnw>Q#N~RO@U}xsH&}hpIjvs~7 zej-Jw5^hBj!l()gqHZ`8pQrcKu6qoXh=5o1v%SxvN&pm?mPXo}f;_zVogo$FX6aM( z=hcF)k0>5^hoO(mzsYrwFf{}%Sz~&LXqEDLY17JY1Oee#Q=)f-h&)q#hL$(wEzeW3afS>V~YTdBxPB$e(*+4|!{v9#2~)joIM> zvc_h%ak$J_(0USk5zWbDBQaPQy2gE_3fKSPxPMaot435(V#SfV79ka&+2Us#xOmdHZS8FQrI`|L&G11Hzg4Y6yDaV)zw4wmGbJu5lg8V5# z+_#0JD!u{>0)|sEZpX)2A5o*QWC=8`mC6KeLX@kHWkwGzKw}Rqkr3)jMB)7 zgSMP%FxWq1{MFki(m?t{9w^xd7SM&^*-Gyy>8iUDOyQ(L=F3e!a=pAL(n5Hpm}?F+ z1)!5+8a;8XYy;tPRL*eEjf3b$Kfl&4%Jxd7L1_~@U0raQ&8%X2M=w;^uMcD@F;}|k zdILnIk+cFk-Rf|NVL^hEMw#B=Ff$3{6zv1qx^u2~x%o3G{E4ua=h8X%jzZN;Q&8L@ z#wsv6SW90UBrO&weQ)v!wx@qmyHDao0oq|NmNKOoZcS5{TJj6lw8!VSX)Nz2Nx5A^ z1<`gTW%sj-VLuUvu#r^M<7eFxxJ1}2EZLpzv=mhQ{m+p43`-b^X2r`^ceE}QFrcaB z$6YLi^c79e-n@7YIu(l%K6|L=yPQvj;3m?oXxp9~>;_Mn{ik~;fzv+q&f0?0*YS&F zMwj-p#!KX4qu0Re<1<_-$*bjxEo|~P}c4x zh(Gss5Ja>8{IMIFe;Wer@9=a91+gGT_XDIpMaPz0VW9;@O_tf&R z?kEE*YPCj(bAO!x+hanGZ7Gun~<1^njz#XMml!ZvPIR{4$b+qn1QnCPtMqL4C5 zS>>wCm6^D2(d>>bY#JzFDdMBEgx$u5Cb5~nt36eDeO1+y*d%bRP2mbuUplOzuc5~; zr(Sobvj2IPytmx}jk)@Eo7#%x18=L%3y*h)q9hBL>$~_^PM=NZadxsB7=F8ae$QO= zUY^>1QH9Dn&U$*Oq&kiderTy30l?eLM@=b8PvNDu#0^a>Ah ztzyPm@m>qP`QuXMqqcm0X=g|lrCdU%?_eXLW=k^x!(L`2QgMI<(jp_B^|egww_Bgaq#(G~*t$QjV65b@8Hk6vJAEDE-QndTja4WSBLH%l7RN(;X6 zfSj*%GUc8myqEFYmz=tR`P;XEW;2zUoe!CI<_02aik%YA0p+s!UX#3cIk1?9ievyA z=-DnI2_?$zq^~Kvc}u)u1;LHmxd<82z_D%Ss+`1CH5qj)5H6WaRya>tqF9D z$sr!{uxC@=Ps;dpJGUB{coYN_KW&;N1mZSleKo1e4Oea@a94HR?fmNMBLH4ARHeG` zbecG%i6t2bXplRPV~dxv5=;_|x|Kr$YjQfVTIY%)^HH5$^P~5rjld4_Hg$hAMrAb# zq7657MbH3Ei_P2uTt#)WG%yZ`MHa6nkBD+Enm;dAV|fUt68UwbbghXmD7?IY`g^}U zgz?=&SHueU(4xE>W*P;wp;`(XU7e&F%XXB3+RKJx-ixdclHWYA-h|s2D0mxKnoV}W zcLW(;MlQZ7K)Im;zy_dO#ige=V#7*>JvVh^AZWTLU-c-O8?&CkN72`K1VNllqKp|x ztW5&{9n7-!ZDnA|EsWM>w>kVwN}5xfZs>e~smBv&(nc!Kg)9{u4wky4uw=bSt65)A zPWmFXPQfS>xG%E^79cFSw%kSqC7=?0bma-!h6pdI^jq|G z9ndzJQA=}NH*#^J-E4?M(qs?rg8WqjO9$tjn zf}UC;^>{4hUeF#|N3i3GW>`-9;76}I(6yd-U1@R!9B{snVk1WeI%iYhTONU&n0v~K74Ifc{Kdec0-;c zp9p-{mu@j-ZVG=bPJ}2@f;cxSHypt4KR5b72*0^6hEA7$u<_NNK8V23bYChk#-~zSh`u zH)f|V2R9?aX;{xIVL8*xMU#ku|0U2)jnl>C9>Q|;{<5Wjv`Y9V%t*F;PAuSsVTGJ# zMs<#mg~FFmZEW5w%`Ln<{Y+$&_9G!Lc;HnfEzoaM>CG&gZ=`)>$Vyx5bRGXuy{A~k zKf1R$YzuiRyiO&6+yqdJb{zPmof&PddVF?9x*U&-Z5P81Xiq>hC|jx&czm+5#&>C> zpyezgaaMacq`}jTny{I`esW(bydO5klC#-mS2+RGk!9)Fu#cOhR~{295i()Ut1SWD z9GTcU4vD*x;l2~-{FKjzQW_!;cE@P{vn*omMb*Wc9NGSSCMv08(jqCddWI>D23Tr0 zF~Yo_3$y<(ec^GU^pfi?)o)*S{$1EknAkxCRjD%FyuzZSAk4^j3zVFz@U$Gqu%IT% zIA`gNQrcwTN_f~GVux^%L=pegs6La$Ya`|OhN?x9COY&FK}r6`N|cvyu{}V`^iUle z2%9LXZDqwrrZfp!QoAe*`7m3x#oT5NMXw(7t4hCOB$m16bqRR z8+4NL#+Q%32{I|RU4bM^#1gLcLMxrU>@S@;l`TX!9xnU)4TdmBS?U8;`<`PZ3U^Kd z)inbBT4tuQG43Q4=*P|j5^GnFR-&}5z%qa9QQ`AV(=67Tg%;%G|xGmguv74acyDsCsfc=@=X-3 zT^O+!>#~YD;%}y;>J+_sicu=tigG+t{|*R1jeP)J6kN6Sv<~4PQBx4D&JA?y^O)+L zoRLVFN`FV#T7Y{fmO#|niR-jZPbE`NFRgE4zSx>(zxyi-^!#kJcJY>waL^wjc9VE_ z{4!tUrjZZb2x9T#p{WZlpPFSRv%D^fkR{u=$|hn1FD5Tz*mm4{s9-4;Of)obsTKIU z4J|V;;hlPjy5!jO3I7cm(~J>Bq)76jq|I^Ldwcttbk|6WQE{4&8+&XX=;JA zk!qEN!*%lT4*Zx&#c~UBUHSRebmlCOt+IX(pH+os{E*FkbxMc1($iSmL-@^JDm_a3 z$7m5vrb-0yuCEp< zHl6$0`f{k+JnqkXbp4$0KvckO9sl%U6YC_$tVdKsG~s@8>3~iW%Jt0oIvFpa(QymN z$TyL=vh3#fqp_M$-CO>w#p$TCxV+}TO|A@Hb7^+o5HA5TQb|~IReyWpx*68;9WH5M+x&3&Uwe!1;xRs z*^dB+PFz_aqCoT*P*1Cle4pfwWKBK&;qqBcpx`(#nnvg+qpWUO{b@Xtc=-k(^g4$M z>AV!#>~T{52*qxV_P*REb8{GipQ17zqD{HF12rcI%*yInmBi+9mT5H zTer|-m24C%Jr)HEQ7)U8QkNH`kW=YLlv`C}X~Ui~mV6NhSVxM;ae23ulL|P>D^m=a zVpoc`FJ-L<;l?8UJF~~s{o%>sH_Bz4YtX5p*~Ev9(8!fxDv#_*IXwqk;axjRS}diT zi7bfuB=fjCKSZi=+m;w`nrQhdZ}D%*8X}bHm8O5eX|~&|qP0)c7-&txUFXe%cwhL# zaA4A$DF_I)i`AQ%T@z3@&x-5N=aD?u2vDY!JMic8RJCdSw3iZFg6`r{Xx&n4Ya!cBaoAnngZZf`N7)Av4mY z<|RsPSbd9=b8#_9a|C^Dcv$w3)oo7O96iY(%q0|`T0`Qn*{bwK4k(dC+9t@jbVH1I z6q_6VJU{HfSqj>Tr79@I#r>wmYjHr2zndHz&E=ioqP`Lu4Uaec;3DG`GUV2+N}E>@ z+0uNg)G#{8UKUiOOOBKm0Ck(09}KQ4wEr^)48}_`fQN=<_{LUzJ5>vtey(5YqPwj8 zR^Rc*QB?zzOMC1_r)_r*ZZR@G@ zv3p)cw=UWGx(WXqrkK4cUbj8M98gP63pq0F7<7An^WJ>xGQl$Zg%}O_LZk@JniZme zk5ONA+{b}Pr)5dUq+CsOC5+fdbfbx#!SSLapfgbv3U+TI14#U=RW~QAu9Q4N!^5?n z{9O#r@{E}`Rn65dQMY$)C6jVa;;W-WJJ0yM7~~7h_Ig!FLB#8j&hCZIK8$EDhYfbY zw3&_bfVSy!+Y_H*x3XCcg75Zz9$BjvID~1Lq?dUviry$K7|&|cwtw`BEij6^7TXf9 zWV$-N?c`Jf>?~E_L*?qQ-Cv{t5B7KYqV%UqPUeU6PR~^30WHCLA8X!T3qMv08>z0x zO2L-AHY@1#)) zN+1p3tz!`-e&!8f$FUH=B&o5d zC?H3v_;U9A%g_2FeT#xg!OFhCcU^iHbXFo_OzXv?Sa6{SY_L|PJjDS;O^K%=1Mu~r zy$R@aS9S^O;BOLZg1%wFgACnymtD6$fuHzMy~@jc!pe1u5yX5{$5c05qr`5-S&1S(#+PqN2tgDo@)IXE8RDPN?!cf)t6WD1h~W+xZMEiZE;ri^o`yu7jieC!4SIVbtO!yrt^)x)kMqoxIxi<%IDL zL*d7kk1ilv33&wKcRsOh*mlACFv+r7F5$gpj{l^x7zqF9n9$F;%WLt30vFS~`HbTC zkHld;I6vH%{9CeCk~BgMM01fNR#UlGmWi+85Bkdr3(S}HEBTqBH< z>-z5KBQgbZ4EHaNW;Fwya|@2b6hP-VkqD5*Sr9$#_n`2J3jr4Zw*X%fZIdRUAmjW z#AhpB*HWK%i>W3@FZRq9Q{Xp`VK1jgHzB7(0r*`8aI7z%ukyaHEbB{rmiN>99R9-r zccutA$B>?fUMY8vj?<{wo!7CW4=TLkau;Ik0$-Fsj*5a5BS6uRnkZCg5-*++)Ekb; zACTRiV4qCL_K=5%T~t+72ICfLHz!|F5s8tX7=tVK#&;-R(K|0+LD@S$SLQe0=V{)w zV8N(GDiaPZOS`tJ~)x z&!;W8yZBFcH_%v#qTK?ksR>?K5ZRYkZ)!-4%wj+I{)-LJziA)!GPv7xyev^+N_Xm(D(prMIo)r22(WX972kGu_i zXUzr}q#-FWi$46}la~UAAeEzV(HjN=V1Wk)ke31mK>>jHcOM3%r~v%GS1>UE06zde zfPtfnksS>aEdwpXzXRgV7S>LBMh4avhK>f#7IwCD|MUBQ|DtE+Xkn~pXlLMPtY^SX zYp$XU3jj{LS7^j>SZD;YUufjw4h;YZas~_l@IQ}kjZNDkaRi@JstXz}qU5MUZBwyF ze+M$#aWJ|)J>xSihB zsiS+ZKR!NV1y0_MfU$g!gBYTde!mjF{+FZk1G8}b;YNFvjN*gT(s=`W@{8H@;SJm| zH)$Tp)O~s&byI@jXz?VI&VL@LUc=*k!!#0Sm~e87z5o-Ge`QiRrjqb8MU?UY&-O|S zUNHVXlFtqT;4U6fK;04h-8pdwLm-WgJ2kyQEgB;VUlm02fIQOw>MR269U)BUn#517 z+(;(@q|r8F2aWkSCmDRajw5$A|20TBnrB|R*G(3P7KiAIzZYZffN0?sELvQPJ2CJa z<2hI65r_i9vXY~p(vR4o;81c8WT4;#7D*Ri)R`F+xv5oh3Dyw5lZA5PgI^qrYXtg2 zzvb5WG9ZA7p23nw*Z!R7WWfe<=XJfp+92~e+g?^fz{bX)t>I<|7`!;V#fhIa3TvZX zgPWUo7njfzVjr#Jmej^6Gl3)XvDCSo%W~IW$Avi$_cR}Bbh!gF{>HGz1^$E*9by1~ ztDP?ry4Ys$+CY7#Hob(3!K7!!j>}9c*za>ch_*=sh$@oPaWbDnJjW|^X@WQkRmW`u zHeyc>HsQ*&(8?8>7u$3w5Sx=KVk4$f!Z6L_9C}jc&SFAt7X%OEY%?-cbQR=9jvleU zc>-D_@sqYk+zIYsV60(i+jX@M)SxGW!(=E;fN)!I;<=FF23l>|Hj}oZb+9dy*ovcX z(ve*qBH`4$gE37P_?MD}HS2|(=D1RJj5wMR&10!`tFOOHNC%e=#=CKP-b51<63J1Y z!v!|MzISzL&xP;4Z4mAF7e+K7Dmo*#4d$94AQz#?G~tq1BoO(&~hOEIl$&{*N= zDpP>5u@!71`z~HXC10&lsX){vS2ABMbH2A=>e`TjbhkvLzuhFZlw@}r#kjLc_r8f8=0 z6OU_@Dmpx8XidZ~aMUV|?IMa7tXwR~d#0B^pRErU>3%ABS*Uu6vzq6}cYGY9EuE(u zOOA4sqKX++ChmtOl4s*(mgf-@HYjyy%v6d^W0WFgB@UO|kv?21FI-mzPf0$SLMW9| zOkFCY6j%+qqRAAtdBxomr-UQ9S!B(tDH}Z|xKso!b8m|?HIh0fJzJJcIVnn2@{T%J zeHey3H%bf}!e0a_yP+>CWDH8nkX*KFs+JcSN0!$s9{)v_*Eg1MOFT=Fj5PmTsbn-? zH0wDZxHQ9|HRVqeuMj>uKKo#fTy#X5PF$6pC$&9V=c2n_O-R})u;h4n6{~GJQOeZf z1iVHe9bPP|>0HscMZ$hj$Qg1Sswn6+N9c{TO+2Z@HfcZ`GpS>Zm|#4JS3WNKa_3B5 zNNoIGSMvWAstqe1Nun-feRi%NPdnIZj!|Z+zga416}7y#s6HV6`%?ZD`rYAH9*L%G zsaHdJ;Wf#lEW)vqlgC%i)LLQY0Y3SfI^C|M@K+~Wg_mxPYvF`LDW_T%vizG@sp}^& z=YWbZ#c0=RcKu{?oL0|kw~C|J&Zf#cG5iTV0}2#pbs^Gyg00N_8g_1_7t85#gU@c*9BJZ!B0 ze@f&0@01pjDklZZfFO4JjneLZnVK_xW$S8pAR&)39~6#K9ZA@t_>6zxwi>v}cPX`i z3)SoVYVt5f?3MO8DwZQXp`d_Llyy96&Cs1AbDL{=o3qK+$2o?!{d8MPbgI4Iv$d#0)*QWUU7ub1K;?D}MKS5fsQa6W z?8c*ey!`9_oV#ph)wJPb{@oz+^ZC7#>2JxD?oXgceocli-HOev+-WW1oFvE=zJjfB z;fapZW|>F5NyKfux~$DpUBahI{CbcC17S_N*h93 zR632wQXjh9TJ`(I9-LfYQFDoS(Eil@P|k(8dIB*v+MO!J*Ku{RlT>WB=++8?H}L<| zN&pAhgp+^(0RI8d{{yZ6lt{4lQ}X{`t@NKa&VPrNje(<;iKC5yJ>CDHCYR$-7w5mD z=D(vhkOlyN@c%TllbQAZR%j{w_wld)Tsv+|JoCxbkLNfL695m$+FHeHMVn+{($nq{ z_h80}g@d9&eRaA0%3QKOMey_6RLKa&AzVIP*6!0oKF+&=1L1G zR-5-G<#Mo=3vovIeJ^?u`z+R*naUHwjuOC7;`73m^%fT?7R(h9aY6WawL#d}iB7GD zQv*p}VM2C=*eS3wfx!3*kL2EhQF_!3QrvsLT+;|1coKP8YmpMlN1QJXWPjA)ggOhK z^t3jK(LW<7vM~**FnTl7RN-(3*=7gReQZ}gz1gGM4n2!HwIR{~QP`;f~w{FA-6K88P zf0pR=VtrdU!vq;o>%KW%DR+>RwQcc2c)u%{2OopS6F+=F`PoG{yi}PzdzEMv)6A)K zon)s0=+HfMoMZf;w9sMQTrI7hbV|wAh95I=1QXzp)%rH=oWH;*CCP_F ziMU^H!;b$EDcas4P;FH+cclaGM!Q?Pejbki)Ml0403!o6%x&=$b@G3x5|f!jrC(E( z_?<9svDf!z;m;Jk6^(ItiRsk=Mxahy6fJdt8<60egH$i@*k3^I5=a0$T+R z%6984Ejt(7J@c_;iSdnT>h$?rbJ6e0i&Ndz^AN_zgOw%&tkxNRELCYYreB3-?;1;pk%?a4F+bh^n8xa}2MBg=$`R!ciXF}1#~(g4kLrGS2Z)R)cp^AG zI`@K4CpZUW-LKtOIhz0$50Zlz%7JNk5X_$~WD7K8+NTIiyr~h6cpXC^BN(69e%j|R zNL#`Rt=Az~=N}7&FyF%EX3eRXu=b*@D?bq;*uKR{#I|kqm*#JU=_|^T^D^rn`bCgD zp!C-mkuw3;IvU0Tri;?{plE-wsBXXawD8xEbqJ5=i z!yjJoWu*q}e3WT;xVVyl;!KVBDj)t0#vZmDxfEHv@vi0`wwuSkC64(x%KHxL<;oS{ zcz}?hto9x~C$Mef3SnEr7%V<>n8{>IC04cR=YpJo0P@f*K2x5^yUscQZxUd9180Z( z1_gInJYeIaM>T#sJ)PuVU`F{VJsW58@(CBTE0>ImGXW0WrsSQc?LCuKS*j0lNFd2syX6Ofz5^ot&1#ov}JNl%3)y@qDNr;+&s{uIur|OVeI1m zri>7iJ%uFU`@a}_ryx2zGIZcKiFi3c!GypSx4oo803}sWmH@1 z13+B~**qY3FFKr>N}w&xTqVsB8ux=Tu1jg~jO<@iH&pAIhG8%bj~B@1OMdiH9phau z2NVeKgM?IDH@~5jWxi0r!I37MwbEE>C;q(xfDvnWO15nZhE-#(BzZ?8k{sFT?!?PX z-4WIXG*j+?dK**i16i$G)6ZC)aaIGQw-c=0%XyxP>v>jFKj0{vqkZm2G<3c6^a`Xv z4g(nFHJ=gf+?FWWp1!O&o`fKHE=qW^UCI_wG%@R{ZG&vR!Aonn9(bE2lm`XBueOly zVSL|SCFFh{NIzd4U<*{(a0|xPKW8h?+9N#-$skKkF(I%v-%XJjU%4$)k8AC!-L?&XlBBXIKQy z?3uT%9B5#@!QM%ug~t3-(me5Uf%`fHt5>SaNrLfce%;|xViIR;1O zhB+rgp$QNl_3eu)pXthobx;^rk>-0F7> zb*M!GzS-qAeNowYX&er;yHj_g)Ar1`f+>@BS zCnO~_L2R(Q`?Pq9GzxTIXw*acr^Gxw&zwPm zfpSllV)p{@{D&a~`8zRKKQl3;Z3bc+NB}%+R52tZ5wJh2P8tX%3EY0O$x*{3T#@r! zevzFym+O!p3C_9^k%`FG7I7e)F?%P6{U!RD<(vd3P$OVLRs824c?P|iWOr36z{-ha zACo}|uJ9}FC3GoxZ6)@@NyQC1(gCkDb)k9mwN|?G>=`C$PA{k?oT^-Pq8#)c@xVpu zE1a4^jAV9Jk2Nrvl}Bv$kQ^>5OO@3>?Ncj@w$E1k81zAO#rNi%15|gKKqB>vDfO5 ztYimI%%p&q8S#vgHs~dBcW@+%^Hv3> z4;W5}o;+E#U0oI+CO0V=&-3x;oq`j8BtRZc2?~CAK~U*;A&7_lBo@9T_%{BQMYZ*EJ~pGXMR0>#}kIR&LYk7J}kP$hHP~ z6i@g<6fPpUi!^~nx3IO3p>Q%&lk#XJyHgs5BS)N%tCSPYRH&cUJUFfi$5<#mZ~&nH zRLR(p_wE?{Rz`)%B)1c@)P|vrKaUpgrDnx6qpe`WM@k{Fc1(}(!xR_=6WS2|Rj|s? zd&?{?jv0HTkuJ@L6c1&+mYf}?9=O&cPvf8h+EPV|ca>I`taC%1&BVT4b8q`3Hz4}n zKJ+P&=AP^+GNFSM9I#BRfkbQ^% zBN6L8Vk-Dov;YiCiz#P?trq#6iZyPwze3$8Eq}4t<{F%O(kT+lV}21hIL;8SvpFG`>!Z)YuXglho7pj-dQ7D#MkCa~s`u*mpTrL-S|A7Y0y|@*|u$Ti*Foaw()l6dZJF~uyk*) z)uYT}VT6=D8J0XZjFu7`a2hTR(uqdw$(u%d4*qMWVA+AU-*zC&wF^^nQ^J0&w&`MJ zE-qg~h3=tn1JD)7w@!mlD?(Q#r8s@KS(8O5KbJt=gKLr+W?raQ53fNFF2%2uz*yW6 zmznLO85&;85te3z*+{ZqYpqE!-K;o=@v$foonTN@%Y-wwkA*MPd|kcOsXR~teVtH0 z3gLi#o!Hu>{U)4=JRim(LfHU+WFpC-$c?mznm2I+X$OW#;M4%z>_dpbN$`;&1-wln z(hd&}xwgIh0svKh3z+r1FtFrG7B}~IDV%a8H6N4Q&a6okP?qS#;Kgm@W|~NyFHdAP zu7Xk)c~BI%AAnkLiH|rMVT?>r)1(qdEfI0JbV;;}M8E~WN%}!_=LEXBqM(nbxXd5e zd}6)lJP#2!;d(C3mGWE(`0?SM7YB@^KFbqzE zobEv|QTWRJb}^N@A7L*^1O+@oz_!O(qA;De$VD=6`~huuTNDJW!Kkg(@u*))X^pUo zz4HObT_VjD>aPP}#GP21uDi^s!nr#;#ee{b{nC$S48o!+f7iu@ zy&&09(#2OU3&FjwLChX(9QfGrxljve!p+St2tiw$#N9W>?+-tipRRh)L~t}M6L%K| zEch4;zuC)d+0ei+!O+w1`J=o0?<#>s>k5XKJfOzE(t zsSE#Z+_*S}#g>VFPqu4#GH_$&TzLl_Sun6^hMR-oa3EvQoqJzr4ot-g*ts&`sm|_n zxUn-%4%|NQ4)x-_pn@^woTDeKMkr29EqnyZNq@;bf;&0zdD{ZviegWSKuGawzLWud zUW9$+!vlxi4v*~y;1P~waoosD`eGoBi0c)UPS3x0QkSzw0xL7mg$o5cNyXWuF}`5Gn04FuWU3>OCi1VDhTilNQe=us+kKjxS=r7QJqf^LA*atZv+y zQEIm9zN{YX&Nf?au9_bp9)dpD96U)Z!I!DyO*|5-cE8B*b~s}}Oym=nvF zQlM$*TEg_1ktTpwruw6~c$@1KPRP;Dd(F`_I-@n$V>FECQc*!J`=peZ3_9JpqA)BA z*00_il6Y_h3s-RrN(4zE@=j6<5KYjAVdbv?T+gZ&_=B`{5O>mvZP*>G3?-EL_=r)V z1%$_bBIf7oJ2?b2knlL*-CWMEuV_!EE|Ej`vB5ZkpjotU z=gUv(e|Gdy+F2fOMk!xo>6L9bv09&_NfMK6f40HwS%&0{ zgpclUq!6*xwy)%EY4)lYRCZ2fmW){ytNCZ}-52#EezpW~!Vwwz>vcG!7zqP|d?Gs@ za-GGtlBkpr!YwEk)S!Sj)Pjrc!~L5yj^E5-hx zjYVVN6W;8djfCPTpRk$cJu2ZAuVq2mqo=otd~McYBsJ?Zb3R!o&07<1NyUr}lFCH#X{W^s^le=?hXYjTE!% zZ635pA!~SOE^WiLzJxV$=x-MNWz_n+vTKK%Oz@s;;)<6-Uujk^nr)%Ml9Y|6CysxD z$uYLaWYlgUnjru0bC1WUDPv|*IMe#dBhZ_07p`*L82D7hnM&dzcBGZUi_{>h@UI8#- z)LWQ7xZK*(vFq7eZHhdZ(*U+PRtT{lZ{^XnvDXk2FNwO&QE*%L(4;KeyEstU-~sji&+l9fUSS3 zmx7)Rbs&VMTp4!f$e=wu-~RsI;2(M0a?6QO1wlFSjJbd;%R*#Vk>!;Dcj&HBHM;SV zg#xs7Z2BU*$4caGMAL}WC?XndJYrgHd#sQX?P+WJUB>#cx-Zb?PMJ^rBZ_ugr64C8 zMy@n0Lv^w1UpL(Xl@89v=+mMgSv-Vt>sO~_sF7a zV&4DevwdopjcjkH1O>5~L)gU$6>6|@;l`1{qo5&ar8EhtmAAOIi1os_^;N!t2X9&J zPjh!I-hxdWvPs(7$T{}?E|K)A-A48#pRBv`f?$9Ovg46BoeM8;tYuv_Kq4Ttp(Ffz zW&nJK=fNLuec+N4_qqOQtnAjzhsg}lZ~2*E<9)Fg+};D}5Jm*nT#xdJH=H9A-sPWO z_#->KBNHwl3U3qHu7fgKR1RN3RbEJcYs7V*O(oM*`I^d?_WcoZ7p8FTdo0Gdk$E&! zzSunoQ9uRcIx$q!z}(A?Wxb!YO&#RgXS96l2JiJt0rwR{a%(!&8#Ah7(P@X(@})wB z@1ZepbiD0$qduilQ!w)AC&C#JDYhF(prv&jvVJi23Ra@t|E6HGHJuNY6+EYYv*l`( zG8(o_vS&`KQ-@P)9Blm|mAA-BwG)~`F@2ObDvuekpjy~YW`kcb1;oqtLUS3bIRZ!h zZg!Rep?VX|5So?j>TE9dPxk%bV!}6+U;_;($LHC>G7I|5Cvv-cm6&_b3rxdI}kZWUIXnp=^dEMislx*3 zmSxjcXLFwAbn2s7LHAi0d1rEnI>DLQQd5Y49YJ^yDVFJ)J~Jb1Q;1FkdA&FY>$*hU zc4E#al>*mRSf2P*lL{A}|2OX5dCthT}B z*s6QG&IHrpB+Wt+oV z33I{}amQXAuP>Ic{l)2&0Giq9{+N{2#=on~4Bi7aP@PO4cxSmXo;GcjO^TPzEM8Ja zDa2(G)x%hEFCWlizGh--jm}miE}JFL3M8S7HFUoZw4xR2O*$J)P51){A`mccD5yn8 z2n`9}40=EWYI9IRJWQ2&z(pdzV~Sf30)8A7jiT@Y!~tf2bAoC+HU54UfJu>3zO}@5 zuUCxXrW>soLLhPBGAm(CJ}xnK&>DKW<{}xYhB}8aEsgO2#00>@(pz>45GRDPm9#u*OTZNOK>73-_vnJzj~L5x-l;)U8!#{ zUnvcjTxnqtTA-@m(X}-x?3bd~G)ufRk*oa5Iqu_Eu>}~7dpPsP^kerPL(HyxV>=*J5pBx*fZs_h%7R}nSO@F>)D6us1&7M+$R zy9RlUF=NwlNjx3mGP6B_a8%w3yf=p;om8qE%v%l1^+eZ;5CzU73Y$}MblOXpWtL+6 z4Xq+v!#AEgJa>rsDy0wW;IHy;CJUM~^<>oFwJhdt!GkvKU-ctB#SjLs0*DE&cbAgB zkpq&CuACm1#u~02yTw1aW5){}qAfh9URzrZGC=o>{!E=tE8)?ugbHbHXE_ z>ePcH3{9Y+rDT^%d1uT3+JJiZEB?`i(`}Xbh9_yJ&FrK?f8~VoL(fqEO_5tpOt(b; zO*zN4jsBd-q9+u$oWfjA6+v4+P?0i8ew~nX*w^C16NSmjN6_0Cc?&aCI^Op{z$37@ zhEj>6pzwBW-;F$Pe!7H$nA!pFVf}^tS~~-J1_g1oKjZ-xj>9Uz1!=Iud>4ZQ?AYO8 z_!zlqtTdMPLh*0^d;lR~i_~&nt+}M#>>+bMKlHXZq~<&#XQ^Nyb6EZ6`FyTZUa2^E zhp=|;(Cb>dzMH?Z7c+1Ms3YvZ%h2@jLC?_Ui5ki|p_b?b;z^>zh zoK_%rcas*ejV(jLFSJJZC!gW$czB4`Bz;{8)-Hq}3tz&SWb`vkxzNkJEWwuC_>bu- z4${c<4w6qN2ZX#)mE#0Ja0!%E#_Z-g$)6~TqB)8x0pt=R$`#yc{LizoW)dM1DkSM= znIOOHn(`H|-d_9B+5Yez-TJy_*oie_Mp z>X4!w>Il+1R3RCusDABe?D>rn`2$)Lw23p?-o4 zXN7aRaL&Eu9t1Y~Nx`4PWn}pC(U0Q!-xQDYtpllex^`Qzch`S2e=b;j=UssIehO(b z`Sq>A=o1(*U=})y0ap&*a0M-xDi32x0TN)4ffc&h^g`p=B~_F`p;avCKF5`Maw2Uo z3G*facNVF3fOLQZU`=2Xzev-YLjAjPPs)%aBW)_jqiLUy zm4in$53URc(=(~COHmz%N+SmvgL6hRa(Kz{>ot_~ZVKmQrBe7)-pR&mOCF_eXw_?! ze)&i`9E`XDBt{N1+Z}L5SS*N9u%Nt(T)y=phj(?z!YX+jCh=EW{)C8B$ks+XELLXM zOQx;P=Auj)BaF!`W@L%`+0kg8n{pQ=i4admw8PJCZ5H0}+FgaW(tBieA5PluowdJF z+4oiU|5$@q1|-b|oLSO;_5XbDIj zL;F)Xn7$r5u^jBkl4$KIicUOn%5+fhiupS7%C(b7GZA=CEE`^OyHqy!!d13q(d*IF zvjU988!9{(ILqK#c9A_ReitUwg$Qf!Z)1k!^pn9&=N3Q_Dm&*7Aq%|Ep5)m-# zer|0?n>~;0aJ_Dg2u5viMA&=4_YJ-bSE`NOOdn+%`!(x}gV*8VapJ zKULBglr=m}0Y=6UP9lQ34^EXiWpfbT(13&URCrk19td~>EAP9vR|g5IOOp;g7nv2w z;FT?8pp+x4c#vPs3ldO|RE`Sf*|UV3Mqvf6y5#JgQI2Od_z%!@@bpmwGSsao<=gc4 zqJ^W2EMmpMaS?~<(ZR&AlAAFDcV1j*n(5wo(_3CuQN+!y>sbEwj>%3F?=SD4qqwI8 zM!cqj@Qk1*rKNK_yMVoNFIL8whS}++-3yUD?yvl&H*{oI*6eyECw%oy{x{{v8Z4XK(06N?5bp zSr|nNBOk*!xfa()_sG(J414HOUrXe|%(k?OX>tDG_>k2agIxgS_u0~fWa1%Z$(^px?=vDd`Vizc-<8p^_QY!{S@YAq zq(iIdd?sa($2a>~BpySu2Tex;{tgK{_OlV)?J*ogB^>4-9Y-AnriI!h?h zLYY3`8XzmAKGGEn!~3U<>(ATTJ&^7Sjj#YQb+Vf9bdfQOXwvzs?oSg(p!DnWmHw+H z?Uya4(E_2v!vUx!HfG{_6Gr2BeMLjkc86ADZB`W7n@PlXMlZTe^YlxPKn^O>js#^x~uLjQ$@|_j(Cf+9^ zqKcESjQ~R3G+y$N*J3=RE0Pd<#F<6>n-s6*o)mnv4RB6zzk!SX03rZxqO}0blLVYch!2}8Qb(B#r?U!%?m*tU|@>%wA zii$tp^Y9i4FNxwYE0j}HmXSu9IGswv2zV*+U1y^#E@J9otHT&i&1J>;SPl~*^osm- zMPK->=;fx=wYbW>7ggGp&0riBR&Dxe&n10H-(zJhxPUinauH`Ky#L<1W*p zF6YfshM@uTp)>d|EAXR>pH9xuhR{kL^F3c)#U-ubrxp1Ws%q;`l68 zpWhqQwIrQRJ!*-%5F~da_jm4ns!QC_ZO|gv&}n3Of3OiV)<(%&j*_#~nK_*-OR{=~ zg7hBgCXmsv8N-3*EuzrruLRJVy~{k|ok2-=ct-Opy=+MCYHa3klfTL+ zPoFCzA4%-BPI;B5FWfvp0n()`kokh7kUf2clF;(5Fmu+Df5uxdKX>s}Qs=}5O7Mef zMK7t=3wOhC-1e9PzR*j}W0q+xaybUmuxHj1<(K6qj5vZbQmE^OI5c-oa4q__s5b+y()`7<}6QBcu@iXzl^ zSENk+(DP;*&>>T|5ymhA%x$ad9e!(t6IGfx>Z=Kf%L;13+~j5~{KtG~XkN~Y%eaau zsVtG@JTUi2AzVT{39T;n*^zHEf45h+#in*?%SweDRAq6kes0iu=*>9? zF@7zgHvEmx`W^|f;=2EkRBe>az&_30?qVs!9128?Pw~nGoNbfeMva=xB2|(|SOj%B zpov}IiCorJ-GBCxUqgH~(D?ejeSJ{PHvZkB;r6`XG_dNAL99#1#GLLu&2Yo>@;rac6|_`p{e6LMNbD0(h-x#(huVsL$Zm+B zZV&OSR;x1IB!k+3(O^Nok_Kg^lR5wLg6O!AI7#gjMFc1$9O|~PZXz2PJJ2Ge{G2SE zgn&>oLC=LI0oT5gjxt^TKV5i-o8n5>fF2Q(5_pLZ{cXIaQ~b?gUSuUYT6SgN50sK!#R$1sn{5sk)6Sf>L&ST|&;uetXAt_v!aS*dzTj#T^t5Y;ej zCXI-%Aa$ThNJCbxDi-|!2xPZweo}ZBJDX-DP0S6fc7X)47P>vnk4l)3JYY9WI1(% z9o~~O>m0vXaP+IF&VB{s~K2FOZeFm*(KSjf|@!|JA75{t+3guE7FkG1;vfiT4;$}IT5T`^t=2Jh^(FGT zz?z-AS{p`exn*dGr7)F}3{phoNGz{RZ6xE`Vv5|5Qn@AyO7JHE)%~7~C2!d}f&J

chP=}L zsWfMj*;&AOrC!LlE#saOTWkA-aJJvMe&_Fpne&U+h-YRw_D;T(h~#2j^tc!wg(Agx ziCpAieqA}%=Ttz6U1WOeBldnUK!2^6n7=ly)qC7x*q)}%#>ZJCLRVJ-GEGh4(aLX~ z#0f3XCHL{#Now5l8MU+GJymiZtpWv&7VgRw^pr_$JKO@5<)SoGv+a2%oo1)Q@Fo0! zBCF=J6Ki=A71>oVaCW$pt~OiRx_(j9^xkC!SYml|WoND0_N)z6@@pECbcbTNuf3)x zO}5_F^eLm+R zD;6cGRh6XIUb_$+8fT+%QrWYqg09M<#KjxwkMfO?%UT;^itq7cpwJs46`kK_MQtrj zl9XiYpY%b=PF$Lcu#}vwua~2t&j*Je_cWeSt4((qY`)SQou&-DU3uC0v8g>=Zpu*W zJ&RY?B=wpCBMkoRV9Q~FX`SabF|WSjQkfDwlDkB@tMV)09ygAkld>cx4|jX}WZtz6 z{<1T~d{BDYo)Y|XaA~89Ler$cEpSoxXQgzku&$c?)6AI6tqb z<#>Bspg*o!Y1K+2ws*l!v#9X|b6L!U2*b#Yf~T;01XOIKD{k#|v#1NM|I-}2d; zQ!+egWv?sCN@(qW`*FQoJ7^;UkHgd^3UePNP9zRd0^p$c?-2bMXaX@c_wO8TR*JJL zLThubl_j-3M2INoZK7gNvDQRn{RV29^db=i zP)Y)`HZ}Mq=kJ?8Qq?+%DHBdcgajt()-!nQN<$4d6<9wPsWNdtqK00_vb&{ z`QM2&5&{5#>;H~O{}+tv*;}|X*_b$+I6D1rT&norxim)QK=w!!;rFf#L!koUI8=~Y z1?rq+Y$HAeiK}JJzMQjQWH(sF#;&;)csnBOKRFi8CP)%{w@VR8rrn&JjJvFyIr6bF zU2|1ARr)(E_OF*`c=2PwN+i>rzQ5^n@so;cjTb`lsr%hn^_2>)HIcn%q?PkBRxdhh zmP$d@(C1j7ouQ-7tZKF=aK!86>KIxqyxixnc+oC@ORWl+LUhly6#?*zRdyveB-?7J z^i5_o(aoFR8b|O$1SS``&pjbKDxhV;usA_dEWvZZ0m^*bwN!vj9~5P6p`33r(FB^2 zri#-aXR9r)LP9s2In{V?FTfzEOaGxD7V~FvVC+QO}CAXN|1sz zoYi;WQJZQ&7=QE`>q9isyQ`FUCeu`N^wD8%)ys{ms#8sxV1FmOtWvqU!GRYdAms>S z#tu2fG4grj4ykz!i7|G)zrY3#4B`vV4hTUOAo|$)d1sMROA*NX&7LUDh~bAw1xVPX zeD)RCXGFO>pAFI>!wmtIc#nXR!q>qW4d}=8-CzzGr`3^U?-?;3|5;U%=dhg+6>1sD zp!M-c0>d_##r1PZpV&?K*+scw%K-Bl6!4pjMD^8Zkm6+nFP^#T4~La`-h zZ$OW(Wl!mG89goY_ENwxIWU%D({bwlu&Tjh1rB{mP1897gR@zL$4R(xW-(phjYmj0 z>r!Z9-UM?&3`6tb**GZL0kM$>nF<`mxfN%3Ku{}}!BA(F#gezaN+sK*ktcHyH!zW8 zMzO3|wDn#g?qI3Bw=Z;Qp=zP>mVC9LeT$XjzB>j1k${T*T%3#qs7VoVNwYUAroHzl zNXyybS3g(0SwuKZ@f{wo5kSC(Wqjd+S2i}mz9W~ZF1W^1Ui^(&q*MF(3fg%LVWpsz zRK@2$MsrwgRGg74#ACH__+2S%*0G)CF@`dcS`#xC@0#`*zboP4Ee&&-`#LPHZjrnF zJEgh~@C+0?j!U=ywtIDHyI0ZOh(<@ZPhfSd2zxK@b0rS>CUL>1LTb%W^4Zk6vk&TB z<}>!;Z&=w$F}G(tWb4)%swe99{f zjmIF*h*3VKT?273=ML?8Cq8!}BDatK1^-UQciCfdxZ(Bs3;Z8hE_FYp(HjH+;6J18 zzYjq`WB>rR|GOdRWMN}(ZSwyk%&GnN0hpq8WxK_R^jlY!o&>7Nbq(pil`v)5vk=h|bib`gBU_w?|2bIH9zW zIwcr4D5)xwq3J0m$2eO$bcZtTy8RE3U}l@Tg?eQAoCgY05L|Gg24<2}ElU((lHrUI z&Uu>r5xfwY1Q9E@4nN6a`VyH)mi~nETqD4~5qhR3CBoCc8)n1eor+j7^MsWW+(Tv! zr6owA%I0_taJ3GgkdA_2!cUl|QZDM9mmoa^_9BB!%hHbw3ZPH4x1$=SPBSpgbnOm4_vC5=IX4{s zM-^-xF5t5Oba(J#2;F{mU*aFXJnKh*zk5MXE|(m=@W}An3(n`9z|b2Wuk7}?eZaTv zeA%$u4=&(zW`NP;fG|4=*!l7Livjzilx+enuw-fsj@`eozME;c^RTxPxh^MQMu{#V zgVyPry8EwYLR&!>(^<0K;N!6YS8rjhT#jHm$+1WS9WJAQ?`*I3@5oJLxhr|mz;hzF zs2nH=^!W%%(tE9G(O1%X3w?@DENi~S#$`7Et&dz9{Bq6Mk zq-hYS|4qx2X*XEQTXuVHJ6723iFR1FB(C9+pxziQ@X?&429eT2IkH_IMp7704wRg=68g!PfGBgs`IWbIT zqsEa?%T)NQhRsIWkhdu&@U}XNT?C?MU$%%8V2!^rfNUWgqQ99BaF8AmA`olt*Mf8`KGuXj^) z`44ZT@?eGy%}$Bg+##j9L?c4vj<9ETv|0* zM-dW`XJ_`zN(X^204CfIq;P*_PPCneSnPl$)6Ti`E_%h!ycc}5$nFsc0hqEwnY5`g zJ%YmmWB*Rz0pi_PyGE=WDF_vN$dgDN9alFD>UP-rn5!l6wH75I6VL}OSaM<4c=aIW zKG|A=s9@VgRO6d^hGaC0){RLcpN`~J*qWE<6|c)PKYKcc zM6?*oL1f0)6#cRy#@KStsD74@;-!%7egI*pYo*&c(WyK@I#H%}D5T5_61KOO!)zU8 z2*uP{cQG?56)^x;3vR`2o0yrJ8IMwDsAY7wGOJ(PT_-kEFF!_-(}dk86KpF{z=MxV zb0ak3c)?mP){iC^lPP%i_@c6_x7Jr41b=XD!S6)T-+#>+wr#hnJY1QpTYOa9p4SvY z87W~lHA(iOohNl`6~7>*XKwkDrHyNaBz2w^{WRUzc+H4&KrC=0V$2oU;0>U^e~k^b zd)tOu7{wI^k$6T5mdwFUMX8pLaEqP3jk*32Z(uK*Y)_i_iQ5;H2z5Qw%pe{@$kY zunoCQxKxk81*HPno&rVB6h59e#^*%!fY9Mk=L~%fU;)T^$%2%d@HXrz+YKDKii|b*c;G$ZIoZR@!#u~m2A)k3LC*8PFqfI$g* zU!2rSe4nZ)Bb8^|&Vv}WE?_8~9^ms-FPAv?8?vNiNm2{x zXC|vfch(+Y9a)vk40xV@SK-_LHJ_Yd*%PmgLjHX^s(t048)x(kNWEBpyu|}_58E-> z+PsJ-rb=G^;UvX;j+M6i+}zRs5ZuR(xrDz8d-;FCYY&RJ`wkoc;6Izif8RM!H~|2t z{!crHy^*n-qs2ea`rkN9>A$ZTE7(_#S*o9XxrfzmtRk!fqK=u%Y10%)u^A0C;Pp$^ zOAGn|){1~s1S76j|FdJGzVw z^1TdUV$%Ko)ICSE|I$c)Zxi%vM9-^mObl{QryA%tYsz8>dnAaoMG;9NACd!V91}($ zC6+~5BP}Lq`N#7lT4auN$o7hk@JRgm%%OuqDidIiA>##_kH`zD@kk$0PzVOhFuP!a z+AnN>gMLQ^ir=95!6J1tP9zfu&T`xqKCEZAY=Iyw6}VJBA<2PqB(ngJLiYfaM&XT* zVEEZ`j!+VWkkApheJ0)W8eZCordpAQi)YwC*c4shG;v_*P* zKK-@sL<6*@HhVsbrw;sho3t4??zZ=$t^Tp&R_w;%|2HrEtOsiJ*dg^!NrN7s^F3D{TuLH;9co1(BkKjR+^I?{@Ax3#?{5%?lw#*N%t;g*( z!Mz~)ZOTg9!{Fxv zkgew|dCrh?4g6X?1ldGB+jS54X|vrpNb`K3Yc(MfY@mJJUPtbYju)B-9~P|qBJG-^ z?RD=7UQ$$o)QHQCCa3CsJIE)YVVO&u-_n z7CV<91-{LiWl*Da{xwgaa5KJ_|5IjTv?`!-gVcnmOQob?UW;cCHul76l)y*r3~Web zwcqSWj451dU-V$z^g#a}S(At?E?h06uYZ*N-Q<$R11d0Lt#!NRKeB3xh1L(S z4HGz12q7Ev{PY+Nn4J9(#}FCd)d>rWV4V!q)0s1b0a8}-^a6%XFucS-c!$lq-^2r> zxxc8$oi}QbU(EPYeRp%muH_ex@DBp4n<3v9C{ZmR+pSyWK@ugq_xYGz386aiUg;A< z1`XF2vcK0B>~Na{pBi1%Ay+sx^21DO0DC~oaNLmhtq{a?)PDPlW~l=I?cm@;sRkCj z4+IZ({sK9N)eQt)&t4kJR@uz{%MB1t zF}2GPLxAq1Ak3PcYTZB#8UG?4fnYiy?JAJ(jRTO!SRO z7c?(XZJPpLW#?vrfp5@^XoO`jX6#c#d=UiV=xt5)0Rk|ND04NdzqOA`MBjOjO?yCF zdj67pGz^Sn`SP|3EB>M#gnfaR?0YDRV7a18yX+1tP78m`Gj!YPm3Sx~{KCi5=2> zdW@HE7VBCFWI#3;OY3E+4IXyD4c|N?IV*2;MAriVz_wDpWM&h9esfNyQTRr(1AbR_&Gd_B6&6$|~YwCG$^1Z*WuiJ6VWU*QG#_kamcq!il$- z-?H=I40fI#@?Q19z<>-;x}}1|=%12stZXkyj-HsMrtx>XS0{@PF0GKF*m%9!t&LIE zDEfCyY2@KXWOx$V6=`gOHyuG|MC~G`5)oyjyu(k(3%n0{jK)8X(g6o#CXoL1)rKCi z#NkaQIT$&@c)-iRi0AqXOnq6|=8h<9uZ6U+zOf1l6^ zmmmfrX5HduTN(hSq~F-T{)I&6jl+ zHMDr#cncHAmt9`Iq_qaso~%{H2fGmOM557Q_K#4kbQ5*PmCaB{O#AH6>J{Ze50e+FE91 z3$s>j?M?aWqN2zIPyr1BDm4CRw9kz^c^IthaCTq;PE_lJ`{CIM3M+EKsB1G}T_w$y zv8h9OG>WA&;z<)G0>4dZavZ7_F<~LB*44;)UGoy+FKGtowfX_vcg6GNJ!AEk^PeA| z{CFt^H8^lizG@Ew-2FsgPZ(~wAm#T0>(a`1;{KcPXeA=~3y$d9LF0=#wCbNx?DK>C zj5Ao+SaTr%-v5WPcZ#xY3${elwr$(a-07XRciOgX+qP}nwrz8#U3u<(tzO;N&V5z& zvwp{zE#{g%qDMsU-mg%Y$wmcE;@FFN&tR%%OcdIGGPCW=`iK++f3zO9|2#6RRxb;% z(lp9AEc|Aha$a|*MY@}LgKauaai)Sh#e!flpOQXG(Zq{B($;Y;DSE>BUBni1M5q@G z;L$QENlie>QbWe90y<6!@x$6)JUZuCEnubTX(jD)^vhHf`(#-5*0OM0s`adgR}7vI zb;xAtnA_ZW%HIl^QILLex1uStKsL}!X(;r;0VnpGo1*_1Jf7wy3T34~ezaXcv!iS( zLtS(z#v8lTjugoi-C>nX@d~7(AIKFNeuN?dpBaKQ)Pn5lS;|JH>0j1iU4+(^m`hzh zORUDAUJ8L;szR;qQ0w-n^m&)-_Q>~s2>@>J$N{iVNi$6d`iRP^cavH*2Jjl`4`@NI zMw5ww|EAGfp*Gq^C#v+)E^oCj^8d~KUDS>6r{bI}nOi8-;BOi6W;k12q~7*jc!Vc1 ztHoc()yXz3UI-_itb!7?7;M1;a-9t(i5Vqzv1-aEP%Mb9F~;u4j&a}WH%kD_LlM|R z{P<%8i1{%FicfU#!L(vaTi@NP<=pMj0`kk=BEbfFe;Uv>G`WCdXB7=LvkkO6cv z0`U@=_%9_LM4qGe0dD^ma-xYh@Ep_q4g}ttYi@A&-$CI0m2|g^`?xZSm?o_S-&@>G znX{SXxRL`TM}dtGDt4$!F0)1T{H@|JK77{`{X)V&qnwz%r}##;iO<$obm-&bs+nP1 z=s=dbs7gwv!iZW$XtGh@LspxV@KwK9#)}fG3CxVXMYYjM5NOE83mW;uw52ObhNq6j6_yX6-s6%UcI zP!USTNRJ@4k#n@#X4E|$v3qK&HIGK<{7EDR_Q%A5g0)QbDjZ2C(3nlCzxvA5;1MT9?wSF`F+%e`|>Gl z$JwVE*zJ%X?t))?$<{BJwpVHmKRBKTh++)y{U5dCG@;PF~yA7)5qama`S5#=Fg zrwoO1VYK{w*jHqGs~RY0*xg?g7fGWg{Wj@k!{I-qFhN0R5r4Ja71Tbk->gtq7>?y+P7>>i@ox^dE&o7Gj|L`Un z;!Y>#8xu#2b>&>eL-x+DI=u(+^hkH7)w-)M1A~IX(g69dIXj6lMZ`0Z>-aKwMg<|Z zmLc!*Se^qIW@zU>IyAFBW%_*-01Bf;WqzePdj9BjrY3u_tibIS&lHfvOV+PVgNr@_ zbLO2)!LKg8!)HhYF=acG))RX&bb?%XmZF1ahP)E>;P1R8=rqo=G`g+$op78y$lk=6p%J69_*&9IN3c}lB&NHtLP|S0kA$&p~<533S?B7#Bf8ElPDDOheF7`XkUEJoipAvy~7ezvXy{9a^VL1TK1l zTGA9rSN(mCw!SoD^09|Fdh7*md- zl+069J9m*-8EptEEQy~yv#e^pof>A3yJI>gcOaK>29L42knRZOVMMwiAY}iXo$8#s4Y@ozL;_GMGNV`jc z$1T3_p?IGpKo=;}5y)EI)N+fTjalS%pk$2=BvH5b(j0(n*{W zvQ*!Tffp}tYRxh}#zM0aksi{Ryn0gWhX|mbg-kS6Id$-HYOLW1Sv!i%Rqn~mP3g{Pb>Owm?nl_4=1tF_CsU-j(CXg4m>LKF>gEZX2&CY zuGze?Xc32 zUIcRjHCkJEq>|G6m5KJ6&b1li7&O)yM@Z6zPNA?aN42Pcnjn<9&EaxRSF#_jLqMt- zc5h#xtcPscECg0oD85ql;GGuf{SAdGh!TvSs^X3IM~UCOkivJE!6;E9h+LROuXBj+ z100A^FHH9Kg3ezuFrAuMHH2ew-QqsUbU;kE&^gs4l^~y)oBU=bF?3;fZw~gxf6#%^ z=P!xfh}O2QP6nI4&EkZf?m6%HwA2qHzb;vp>KvXp&tj_SdG+h@0j&Pu*NC#g;LhSF zc=^citpne50s@UzLnb|*CuYoywHfvNdPX1%I*HGky10vJc-evVmT^7@Vmft~KEM&bvnH6f4m%aLT~T`T7sp$iY^AXI?}AfPbi&ewPt}pH4Z)R4FpI$mo277(WrBEs`V%#)guz60*o}H%LWi6MDR3JDz#Ap0;JT zgB2RG#1b!-66h1}`_q<(gS}(n!@(izV-6Z;R!;V3fRxE~sPA?7_Xqb^6b<<;F}a02 zJ%pIOQDV4Mq2yi@$`DF+&QaMfYWrW&qhUN$Oak7*>Y9bsvDD0_VmfAcC3?$+Cckv# zGRJpXM=2wDeXcv;s7>P&phywTPEXoyDZ~$oZuSUuI5@jO5BvPKN2a8W7Z5t68FEK2xt(?3rZF-VB)7@M61hgwYQinBUZNr;s9;lRZx$RN{_w!(_C!oqS1h9!P# z6@RMgMkV4Wyqr=O)F$Pg|XIdCPUuL zh-c=={T0}mx_BetNHD>PM~Opa&ct@3PI@=ythnZZRrv}E;p_gR&qzKPe!en?2<*LkQ{b;I~93N>>#QtJh zyMf9aZiA^@Fq-&iQ{m{4QE;Eq?Mep@bAJpbLIw^u6N!%zXWm}#n*ECzf$?Ozw1{V& z(H2n%T6>7{Ha%H_*;jY>E_ET&4>=$eAR~8mjD!WivLKV3D;t=Mu`qEE5D%nQ>BZi2 z2)e+lS2Fc)^6;Mz(5F%&od5l_cu)Alv^Yh~S{#Xys-YtsX}4|B zeHgH%b=;I%pbw4<%!x@|f;-ZtyV>5b?{3O+ME=Lni6@{fcJ@s@;jXsD+^PnA(bBBA z`Ggkx1n;lzO^q;Q#I}ihWOkXL4|CdhL;L}t+*hTSiXAOBu)5Q-?)@-yRg%}D{M_bI zhr>W3NgQDqjozE?qo0{D_8xF3#1s9YQruM(o)1K?9Ribe891v($#QDa3<5@kCAvS?-?S+3t< zK}~Q;+sfOOABs)sK2xY$$oECaC_w92uvOQ$-&=o5z=H`ge7fpssX2?`I3 zIqS7*h&^Sfaa>&+C+-eHRtVNnDR)}V0$WjylV7pr{S>KGs1~aFmDdK7hHOz24t9f|8nS3d->on!D%=f4mItynh zvQEKTm~=z3dfV(KCmuAQ_PhDyNPquP8xW{_!~%Ob!cglTuKo=dy_n5;6@z~hId(wr zqm!BCpvox{YXPr2Q!3Bg`o_{8_O1Wg6DD~)US`olwy(fzRbWSq$TG7o21B4pL@BOJ zS+t6e$4toM{W#H;H+Tm4HXEjym(4aq!b~MJr_Rk~)1pDU&z7`1IYF9Tz#i~|TK@DB z5*RuP&GoMMSmRkc4)B!8#(M5)?`Y)VkRMtH^M}8q3(eiCg^}C!D3;mrkQ-d3xDbe~ z&B9>lc6*|n84&K`$R^{7f5Gdxko_#%hl{&lmus#w^Q$3*jMe*T{g+1+8Lko&xPq8L zBlowS5GJB?5ehS<2bE-CNB1JjSK!6P?=<;o!d**Q(SX%EvNHaQJ51ptNHd&<`>3pI zOVf>e|3D=#h$eNs_awvNcpq+FuaT?*^t{F;eRhefuptpCnkb<-m&+VvZ^gM<_y$u)YF-V=Kdv#LX`fXav-t_g@okSKIfC7{Bxl>clWnN=JzW#4KuFn0Plr?7$k7bPEOXi!K z2ZMIt-8B@}oousL@Kg|%=P7k!njHJvQ93AK!T^;}DvYYb1r%Fu<(h>a(2wl)$ zAq05mL!h6aTWlTJDvGAW9x#l!>$-o0kbd!h++b^Isaf&Tr1Gb_*&I(XAPW|(5e@T@ zQAVr9BV~dP2(iHbVw{N=!OAK-h+wr}ym|CEq|JpC(g~Cy#~WpUUi}?D;3}#;$KNsU zI|`oN$MRISjo>z|2XB8cSntoD8l~xQHh^=hk&2qCVY&zxQ?#swq_WiBp3)kGFV0bW zEwfASD)C$6n7aTcwZSC9yh8V+>#t$V1l_9+V)c@@LI8SgX-2!_`VFTZlx?TN)c7w+ z;z*zk*47Em2Ggp%xIc73vKhy!ElMKlmMBHzKvY0DxXHIp;S zQBL{gKxoA`sYa@0$yYqqxd$`NUxSLS?YWVYjNx{}5U`ly6dL8j&yTSG1gv2w7L)@J z0N|gn{Aa-akwgFg%A+IyYry_5MA1L~7jGJ-p9B6~Z=K%C&Bn!=&d|)@KVz=~nd z?=hc{oRn6+je3B8J{XrAr=e7lt3705U||5z6QUC$U;q%H14aO_hiUzJC~%06?VrEf z&#C{M{Qtg{|LdJx5dZ+N|NS8iY^hs z**Y+o`TLG%-+CoC~MeI~)B(k&(AH~%3zDy><(bP!{Fu^YQOL7r3 z=)!|4sSxG04QH78g&r}KUXX0#N!B8y@F^ze#p>n9L>m#7*rkc{wL`Xzl@-ux79blS z$|vdt5tV&e)=X@3cpFS%h0>LoP`C{13qi7XeR&TWuvwzEjRJG^kVbL4E@vLq=M6#3TQOxgf&1fRGj95VB-DJ1W2JUNsJCW13Ju;nYJl` zmtIwye`h=F?O;@kxMsIaH}TesI(m2b_@CaJ3oW~5qGteb1GFwEWA@BRc9mR1N%v9veVPsT0-F{md+!kGg72AF(?XiLCYAesYs+OK zqul9*ql3}jrjanJ0+`S)AmhT0vJelz>CIxPbk#(imzlJ5L=l`vTODsjl=0f=WxSUC zDmF0VNx5M*l%evk>&en;4e_TSRbSu#v=}+RrW+eLU z%vocDY1^3Bn~v9wvK&I{JGhc`xSO1l_Hn^8pVq0Uf?iH|_a9QgG-8afX!(=CWa}q> z%e;I~X-)e^SX2a1h{8pJ(1D7hs&p-}W|RZ80gQ71*edYMc@m2fl z-TECs(O61Jp@w7qK8!Q>1LVb*pe=$~BQ+>B6rM%4BC@>h=Zf0}o$%=qy$&&gjMlPl z2xg7Wf1i0M{6T*=uDoj7R`TfDPd4|lTT(7?Y#68qlL1iqi)-;(_hi!dzFCd9!jAtz zFMwrgO2LF4Z%Q#iRGF%3kI1Xvc2XMGS#b!Jhr|Oh<{Ygs@_WxLRwr$Cu_D$sl4R|7 zia>`d@UT|Gi2xd1uJQu})6{*bM-4`=^4k&KMt_8B)W$PWV2Ey$kB%! zY88+?yQ{no401+KDR9m)3XAW;3_{b11~~Z)Jw0Xld<^(n>4(Rz@X!QNonQ7|h;G-~ z<_Su7CNTg(IW5jAzr8td?&qdxT)zUmP`IFP(#}YCH_&_ps=sBVxGf+;{l3h4==s7X zZ_+;zQ1aZ|r_VCF>O*wuI9i}OnMUQ$6nU&q_r9V|W)9^iK>i^rT9vufVF>YqS{N==6@ZHG_YKapH~+#8t= z{o$g{o0bm8ZjnaH-&CqF_hi9$?uZPyIq~i`b(IA~jU7%v0a54XG3HsIj_hYREJPzE z7ri0s4?eU0zah~o@as-{>U1@U?Rq=`o_F`L;C#Y$WPPyU;Hhjl28%Lbnu{v}q&P30 zi}&*6-*+_SZF^b55y$?$#)(Ya%lFz(n z?_;&>yt!|)p9ilHq@(?M$?2?Ei9#$&w;d*HMI7c_y8i(3HR)i*#xr0L7%a~gphpRyS5`-_c8@3_T??4D;QZT}96oNBQ5(7LBo$~g0 z5E(-73wKig7H9*LJ6RkCg+Yi+TK$yMZqhO}xNo!Wjxalw@ylRz&?$g@#0T_8r644f zhzKZVD4hh5zYQWoLj)mG(W$ambWt6p0I@F297)yzWzvk&DFA;kdI&|+fyg!vnTcTf zWen=^iZ)8F^e8=gq@QR-cxwrS)VMRw+~0VedGWd>QJh5}!&?zkY_bv9;+XLl+k#vY z0~BC&;BFctH10wa(lK?n78SCUcICadgnBi23uI!=rAUrj~O z@}|ZMrx#I#YYpD!xixZq$v^?w+YF}y-+2YBk6#7xw>YQYZu}&gfyP~0Jt7Bxe|!4N zoANw7vQb7wWAJ$5!bI&2$c1cJw}@vagSmfa%*}$U&Yr`ycHn`v`y&NA{me@-LI=~|dIYm(IL#s=0J*2OGcqpc&U+qs~)_sfv# z0BS;tN#iZQmGieFUdq^kQQ#IB-i41eEU-;sy+(3bU>nK$<+7R~#xTh~ktM>jcbj$& zUMv=`CC?DOQ;L9itWqA7xDL21BBe2yG>O?A>~9t*GTTHsr6(MOjBFSFGcBEgNDr%K z`I*YZg<+63ND^eWyAM2|F^-enZ7E=i*g!gII+D>2*MN%D+>2>hQ_R z!n=qmYHTSDp-ae4hm;f&Di0{!eM~(ds=J$ULx%{P6xDi_jrk?ay2-C(r+uvS=WPIU zz@1@bZkfn^HE%{5=da!WP-Wf7t!?i1sc_0lHg}e=BG)-m=tneH} ztvK~e%S87;OOC;)n^jd3nWnCWnf#MZrg*{2H2PUWM!ctGu9WGmW@SF|eUhCQOVd@{l%HT_QbYlxZ!4T&PRruqfDdZrR1@Fv&y z8^kjL_tC1(*KX_t5!albY+fDsHlXh zpq@!V6|n9&eHnVz)yXp|4L{yWx)54${hB>5>|PF!8pwYAx844WqI)!opHPHVril#A zA{WaYqa)ge#Z$Nswh0kz}NIA{S zrO6>Q%dpx=vW+7oc|I!7A|y0%=5UJ8RkePx%u=41b50q^NQPSWK(cEPS9ckY*rPT3 zacF9;g9C6NKX@chB|im90qwbyBd>==;p1X%1D3N?0tOZ&PZ^xoc#=j-S7+#?^SpeT z#6i4+E(*`4cp`Sj0YN{2RmYOndmPCFXzW5aB6mV6(xTiJx8@tuOp9y-qdh2-?3vx~ z@fQ~qkn8c?rk>fR;*=p7R+mdq=e~P;WBRy)7bH4O%{|p53m|fGpp1e52j}D^36}dp z%y@Iz=?1A*%rWd$&FTiU3=m>j=p3=Z;pVmQL$27&uK4N=OBy2efK4~fXCEtuxSCa) zee!OxD)oh1MkjdVd|&CIvX9Qco9{`9Px~q8lTar%$vdVurnxn?EuEZfGEQg7WJ@1J zBPkJ{kmXG%CX&qu&?)-C1p_%3kR}d> zND!z+_5gtJVl1+84Kxd^Lef7|$lRp+af25Z@V^Tc%I*#zv^o1cc*bx1Z> z>=$ZH&V~W3o!XhLI}cOsImO(i|J9-he3szB)pF)(wWnqhJYi9_ZQjKaHEhfOIGx$X zh=fn_h?4{5C*T4gH+1e=1=x>c6RaKt?I@sI{0uM_1<}JmA-MAp7kmRvaWIL{IyQf= zXO}O?e-N_lx@g__UhiCE{)}3sy6j%gMrA?#h&c=dsW^=pv|l__;Pyzc!j|Sc;`HJ3 z8L6@EcriJMDr!FX#&tlD!I<1*(teDV_%IH7L)aU;cemcPjz8IRi(odygXikFOwbZG z@=jc1S86(W5}$@@x*l#?W>ypF3X`IUwpZu%+fNC_grBIzs1O3*91^UVZqqKzhp4!h zDK+n4!J)fD(=DMR5bna)J>w&uUz3Pf1fnkkzGkvS&wnkX-=^mB-704O2BNT{o1u$R zLU_$a;6+i4tt9VY_}Bu(V)|6NeHSkLcoR@6Qtz|bo|7`gq0INwKR(*IE_j|)@GUZd znzVTJZs{1A#5@Y>r;aJ`;=e7Y>fdqP~u_BVG6a8;H z(Q?C(h^Mm$<5C4`cO_12e3^m%(=COYxvOy_G91sGy+pNU=cqio=3WVRDt2-veP8im zS&`&bicHH+bxZva6JsC~?9?h@YZ-hnCgI^RU_?R=tqNiZ?Ypr)=Ztl;HCL@ z0lvWMVOhKsM=twY%Wk6BmUM~wG?<)}N31SxJjN;RHDc5D3_j9Okz?rt(&P*sj|=Ih z^odP^lX7JfjjHQnh5d(XSx`;198qzu%UzP=h|N|Rdy;-Vmn(6BG}*-jmm`odR0jIr z{aWV@`yhxi<_lJeZQlqt#6zlIkB!2Fn9f~w$A_r69y+gEdnRVvcrDgU4YLCw7<1tF zM+?J|E*#n(P8?$xM@w*8F77?@cu!ufp%k_W_`((y`M$NB7q49@JhFhG%_Jln$_rn{ zdI)Tl+l+yW%6uEX}p6iIIGO&9OyQZmbKO$SkwM z@R}$)WUlUs?AV0aRz=_c;cOAl?qS6V0|4+(W%BPe3kdxGre?9VH?wxs`GReq&+*i)kNBi6Z2pMD<# z@mfDxGD!(ut$>HW2X*xsUi$j;Yi|%Kn!aouH(y{jYWi05~vc$7Uj7Z|G^9{z@&@*4n<&z43aS1 zUJ~Q$5%CX&Wos6THC6)L+5u7|7Lf5lhFLNbRaYZrq8)lFb>|3zq2?r|h}H~iEzP=d zT?uI_EB3+~{aO3;{JT}LJN?(P-}St0Co_&Wf8u=sRrqG-4*4;>R(f?`{HUFnnNmAAjLX znQCo+_I9L{WB7>=AzQ;2E+Tg&)gO(Agb zmpYb)25!&BR|_rQ%mIjKW`iL8SS zT%2TJ!8))lzvyd{R!;VAi)|hRbz~kQ;8NJk#-DcGfM;tuft}5h>^tB4(|GU z!o=0N(zY~Ew6F*pjfc_G$FbrplvVW@z>u^_5-l~JdJTf2U|brc6>4Lnhq@(An;aLI z!FM)8Yy5D3-q}T5*4BUZjH)ofuH<+~Ld@kWY}{PiH@&?Erb(d9M%li5Sq{I&(Rs7+ z6U2*)5Je>Uo}wDDFc2t<2n>*51uT?}-uW|nujqq_^6wJioT|5?yslyXQiG3Fegq+U zbKldo$YAIFOXtuLU~(ZtYx8ktQDbGbxxZSm(X5pZK&&ML)w~={nY8CvX#p}4* zjQHBCF{1olOHoE8i--yRy^oM3KwQNYWu<>LEueqw%o~5-6iN-bQWbMj<>T1j>2>lo z+kLE`G36Z-3GFss4+da^fBK;}vKiy2XR8kxnA=sQ*q~mJ)gCIT*#y_dRjLY=(Au?D z>4IyVHztS`MdSU8A9I|iBm&xe3Q7~;y%k%@sL;NW<=Xcliw~{UGco2Z{Y9;GNB8X! zdV!$4)sw)y4mnNqZnu|rk!m3u&uPKmI8Ie>`6kAB`~5SBh7nd$qqO^fnO=CvA^q zpmVEI;N%RuJt$$`xOj9H&h(8+)jc`CPVKMiYIvXVOCL);nxluwwv^jBu7SUjhE$|z z_5mNxs@0y~sobWODK|X+H1wH&>7;RM@G3PDk8LK$s2?Y>oV=jcVLEe-kaoPrs6eGu zUhQgj2igyjzQLuW9z2g#`{}gLynMPuVgp%z;Qzzog{{W)r~I&Z|KQ%gBcc@=007DV zAB*Q`uV?V%fBav7@W1JPRjGQ|Y>Xm)=j7;@1BIQ={v~$d<)6olC0#eJ2$589_Fsfp zK9tZ1g!hvae>(ceyJmifa57FQ6x$GovjSb!xSF2!@MiXKwAF=Kcr+kOuE3Frk@W^l zp~Z;Nt$%&SKeO4b6C;sw)EhRD3{A)Qe5UtnBgTgd3_(_It21Em?N6Z-tV%R5Y$`l0C%r#*y+DhbWGyzY z39{MGOh_mwGwRE6P(sH7nPV0x7!VqkYJyudb|xt;r$2@LkG4Upz|~hGQxKWyLXHv` z6!QSf>LAaUI%YX>q+mEX<{-^Unr<9Ts;akYpF)a-ajw%>(t#g)$E^)`HEe6QvkCk3 zC|=*|$O<#Wb~mo8*y|H5Ofm7tJH%6n#mW;;YTK?<^++@?Q*0J@>Ra@c`mR*S!Ru(6 zwuUX=vmV#I-lY@{e$Wdu^apiEC)m3MLx*qJ65*o%AmeD96}&gY8E;l$ojiX7=uQid)7kzn-2ztN=K|&1hfAO7I0$$>mQ)zJ zxz;E6ALb5YTFXOFqJX&bwe5uaYqMp~o((&$1a`*RCNuBqQJ3dFvEw+~Di6em-#-lW z4JyXYi|-ldh}GnLqnf+tDQj&puwsq&Z766Dpe9<0!$dJaYAAJbGiET+Gq=;G?^=E;sy|;GT-;`LnZ!i58 zShBE`E{*OlE+C>jA9Yit1hngRd%%Z+wqiAEp>Ne{8N9#oJ-W+2p;+6riCr-kMlD&b|NOrX}mo zE|crz)M9Uzn1Pu7`14NjZ8bHShzp=)EYc-H5qbLR?A;cEOL&n=?M~al_q<5}b-ERd zv1GYEPoqFnyflgLlG~Zg*Bw`>hvO{|kV(dpetki2v3eAuql71xH%$ebtGMC)9ZD9# zj_%Y5A+J(Z`tqTc5?B^|u`)dd1+iOPPFbqb77<;iym-4s{`lfX^ft$>)^ITvsXr+z#>+OEy%DmY zTZ?z`GY)7RXacO_Bh*)xAf8c2?>Id{?C<{Ft(!s7 z6M%LnVjJdOBl)4qha^yqL9p+Xw^XR;C&VFb#}8?LdMY$jP$B0Dt@a)+b3=~t**x3IT&`uxJ7{iBQhMo<4!_Q#HlK@nLcNj1QZa&51|}@ zw%r?MnbI3io;be>qCx*qBuia+=@GQ+q-C~DruDP$Apb-+)onUvnH5H1A_?g+EeFpc zI*+f}{k?I1SO~Rt;U7N8w|&Ehxl|7^W1GXedR~jXAN;nokwAoDd?;t1EVf+Q70UQt zey_W6CG+#O$@|p)+=r2GZxx;`dttHJi8T^x7S*a7LI&I~C>JRg6x?5dpdL>!Ia0cG z2_%{0@ys?I;>^tIT1?s9{T;+!864QibcJ1{_=0~|j^^u*_V8ZSb5OE$gI?}Pf@ZOC z`J6F14seRJ0#Q;Bgf_tnKL|t~9p4_Q8*;5_X!fDU)ZII|EW_JX!C5IEdW@?lhd%V>(D0t|bomIZ4KUU^Hga%!TE56=fO~+7#(5CO|i>!+NX&N=;JaEyLJ^yG_O! zr3POz-N+XrWth-CuXb_4CA*0eX=Gk%bW0@4quli-%`+YpS;+BlHj6+6pq?%Xq`iA-j(?a~o zl)f-gx;3+3x)y$p8m2=vtn_o92p|#@g zE9y)c#`}%(l)Dh$3h!I6o!8>K%QAUva%iU0bHBs9hJouK(%I5&@`JG#_iDzZs2*te_|>_QoBvla)>1lOv%ZOco0&B;l6+dS3(ON7@yN&zjDvU~3K? z(RZn{@%8TG@o09W;Cw<~Y*5WAz5-ADHkCq;STLct2VV88hw$Y7(qfxzHn#LU9qgG1 zmR>XDQm=n;aZa`R4G&%392ht7F|1?*mC8Q1LBv+#4t=kO({yZ}fz3`U5y3^Pa-))7KUb zL}k!3rq%BkIod;2Zj3_7U5cvTnlQHTxy4`TGTAW;1$gm_x$|Ch{NPD5T~@qfW><~g zUsPlfIWd3m#BQ~6A)eLTbzILT|!dz;Xea zvgZjlgw(|HDeLjX>VZNu{Z=2W$9m|eGkmhOG9%I^V$le2`^I0A>>(gvu<&VqfM8H6 z#V*>7uyNNISk~5d93Q2!R@BsB{*-Ey&pYB)g$2UzGNFg+O7x;;d_!@LTzEtH7)YjG z{#K2r5<{y+qbe|Bzb%Ug|5wdQnCYc1aoNgJSjgL;Gt}sFsrXGnFH>E~oe|+4>(Ww8 zh8u`Lbxv7+*9>W+32nX+zfVB}=qSe}YuN{5QMMtX*ljrHBDx?c8|E{#^8lfWSZa%! zC@bIUqY1N56ioJ;{AV;@prJKyEaOoCr$N|C4pOt*p znMg0zJ^=zeK!WMHA!U%ZwLD2a$0;HYiRA2oSZ})K?v)2E)mlJ)kx4S@98N>1K$9UUeQ^H)7^$JVB;C+h?LY}NhwNGQkt0%!oDX~z9n=- zPHi=LVc?qw=CN46W*pU6U|(`YtY9E24Jx!%W~^?a1Yb^(US4~eSr)GqN8rZERD5EGp{J1YFvx zwM#!W>WHbzyGWG?*WFlykm*YBqz;^Hk>g2&`=iWT?^RJIc)%%BX#tagBaT9yl*I@L zCZFz5j)1^vxm1`h>itxnXaUU)FZfweKInj03VlLALXOKCN$OnUrzkR|PJ;Znz}fKD zkgv>)klbrIbk8(kt_c9M0_kCR{(K8s6Zt(LK4EmpTVPG@sUXmKUwxuN5cgghyMdVO zECbkZ*wx_Nr<_@be9)tq9LO9g0hNYfVVcI-X97YaTn1ZiIH^Wr{!LK&Kq>8)S_MXu zc0>jLIkdoT5mMbs22G&49aDgPb2nrJVB;wm6y-mQq!znghwL;mP^9qGf=4J$kAgK{M*g7EmN#2|E zH^BE}4@4T1tp-87?c~1SfAojw;0H@Y<+$hUn;qGq_|rTA!y-C z5IpadAY~CNh1L1&JYG3ogk7@@VX>W|E!j%})W8j)bXd^&_>v*4r2r(2dPrFFkH$b4 zQVKodoJ3V{Lgtzv1_D1S@=}{Icw*1vux9udCTbN9!XmeY3{~k+0`-1n^A_y>9o;$9 z`Yzt-z|_==N1iW_+g^K|8rj?Z3(V7ecjtL~aeG<(4VTS*I1-oYO#AUm>gID9Kgzp{ z3%fg@FF^06^B2=E81P$1wzvEJd>>|<2dO4ty+MKW1Nsr79|gQw!XSh@Xf;xVQ*VS9 z0aKE|h*4+IEN@#HAFYBePDk0XGrYSIj<}YTOuBIMSkQdYOgRH1PA@XJ#KkwPIlBM2sL@=dxt4?kuK zpd2SRftqbI`h|d+bIEUme5w}yC$~*xu8}+OuW!Fk8vC`QgcR6sg*acc@h4x`$0_O@ zi|c@;Q&b0_?=?aFJD&igqV0VVk#mqL>(Rk>dAiq@80_1(ZY>ZneV6z?EZoOC4O`%3 zLN8|=$E||BWgk8euu%MV4W_psgEf$RcEw=8Lub^6-ob2$y{M%ul<0y zkj9qPSRM`$)rY$+t}W4=sCN9lg2Tl1t}_a#`#0XP{9AQ1UR+`vqgsZ|bnlLF8MKpo zMu$9qs=+`zus81)$`aQ5S0spJO^T?cXxSgCCyDcr3SxZHMEZ(s(4RRoikgvpkuj`r z@_oDxW@u^)(CO;Msj?g*@Q$%2w8^L~qh4U}S}W3lpo&-VnKkAvM}N~Z zQjRs^)XzT5G3D+oF+)HcNLXa_2zW%i&GdYayDiFpTzyqK4j3h%7R{L(wzCOPq z-flG*LC;IpEUzmL;GQ%7=ndYz-s%T-W6ul3D#i^*;nyd+j7icwF2~X{mb5P2-o#2P zn(x3eUa|ieH5uB-UP+ck3s4}%=t>-1+IOF<<~20%JV_)miHZi3eBs7$HP#Y0s>CC% zbgmnW`l=t!dx$rcEUwxxh8Zn5Gx~UO&50`sX~9XMCh+bl=`V3PC_0`luCTGo}x(H&6B zAQ3Oj_n3XD4OHC(FP7@{4^InulXSkMBQcRj>E#s2Q@`^tw%fr5%4?~a6f3jL1QNp; zxOa#Smii|YX7JWXR5AsV=9tH&#d(0BVjk4>sR8Ol7o;K%jmwgV!^g2A8CuKTr4Om1 zXbi`4>!w^WM`$!dT4kssb?~5gKs=xle%KdP2gK!uFYfE?04ex<0&#c+k54E_XfJtU zfT_e>sh*uo%5e&Hku)i0z^R0oG<72zJE&Wr11!`t@U+q4=?i*J8j!?PH!<~REAXqF zznjT^mX7})z5TR%a3VmcU^FH4GFcW6U<8F<>qd*ZzkzD^FG#~MP4IC}&k?SD-;bX) zdY}3R_h7H-dOQZ=Z0GbwumWZ+l$JIni!IC8j7dO1Q2wk5ZeL4gR^TC%{NcnW+UOu2 zb$MHG4vlq(ybClAgiRxO%xe*783?iOS<-4^ieWU?%upgo5(5!p1S_Lra6A!NQ%fQ{ z$p#2!GEL?@-7}AJ@mmC>Q$U%emBM#wVDdQD$ErEB!f29+5%C%pNY7_6ba~jQ%3Wi2 z$eM#@o9U+Eot)A*=`qa54&;wZ6b_d-B3XSs=V8s=>;OeT1%hA;3;<|G9K>r#h_ukB z4>H`Z#mJ)~d7j)#;q%BG!(f68uNwXeT@&~b2nO|*Mu3Bv8JfVWXm}fMOQqHL8d-Up z#QtQ_k+G0~5r`id?2Jew5QPVthCaJIO2rRTn8te&dJ|Q279~ewZer#oM)nD|Co@Cm zAgbUT$8;bbh;URCt&s%ngqn0M&=L1xU=PoI>z%7h!UONk&MEIG(!r>Kid}?n zw9^3B;6OtbhLZ>!+&-tSO&Q7r%)rDYU$oJjrM3qBNg{Di`$Z7-Azn{?SrR#wMuFqb za{k*D3|p9LR{2ss@*) z>@L!LvlS~HIXy7};#i^t9kQ*#`%6NuPvhi2niDJlhp2F8>MT-kTYcKSgSw?u5WLgl+g&Fjg{czNm+~-#Wr2F z6M~YG(2f?*S$_GQz7G=;^!DKgP`4t<^12IMQaHjFONa`V5`z$C8*oz8vsx=PWlGN1 z282R27cS}w?t;}ct;689pT@v&T_kn$$7_SsKVIv0q{M_YKI6u_UXh`dHhq@J1B}vC z+cp{n%5-;EM-UFw6Cs>k;(@94)K8w%izOpuVtTOgccep7dr*`O0hs9dv$d8TPDNlq zKH829mVNi~7QjeLIeLQiYP%P-`o-~TihEXiP@-Lcu27Pwjnx_h!EU%G#SYk1{DJz* zyDn}{o8erkl5SMu|FERYK+2-(>@crLnvbGU^y$bk$nuNaOqTKM(SgZvdnY{d*px%~ z3-N|A=QFS3*9|(178HLHTwRNoTR@wD7NYL0E{sCIA-jYiL7x$z@c~~rgFMmjTZQVgKe{%z9-od{-ZnZ(cwL9wC z*9}={aeQ&k?b-v?1DC|?e$-bwK#3Hi#N9(qf0^DQe7Fhowel4)^;h(5mo3n^YzB#f z_i(8cR4eZzE~LRxdE>^bxnFl|@=($WYi4MkwC_a)^ij0mN(Iy*1dtKNzPY=YY zFg*U1q^h)Tw6eI4J4ukyP1t@HJ5`xrt@fu&xxP+l+Sui>i5vO|ojiJkD5dOeN#E0Q zV9}n~&FRk$dvi@2ziuLjp&gdO9F;1^CJqQGC8ZMHa*J;a6(yxEwQ%qb9S9#;Z$oAP zRVgt{SfiWL>)s`fYn;KKa(-ilMJ>OnI#nwcZibj{5sS)P%cu zdt&kAG2YV22C`mkN(g;BMD-Q=sE{xm|7)p8XCEn-c~$V3PssrOI+i)`5-WJaX7Z2= zdp95n_H@~;yJUHAFF#?kXJPCZ;u>Ft9tvtn(9@upUbAo}NRjXL`A7jeoJ&D)b_`Uz zoWM}X$_pcHVErr~pkQo?Hhe>j&ma&r3V^g3ww5JL>4GcP?-;p9x z1x!FewNHz1^6JYnzwJ+exBEDqu^;+AXMf+<0bcxB{1*OF|0K3Kl4zI#3}kSa9;0 zxq%f`{`G>5#kh5?+L=>bbr;`e8dyYKRgkE#Ac*m?Oj z)thI9xTL(9F`OwVsTNyWhG|u~^N{CZglvU%*zKYTUE{BA4WyoiMS{wvNs}Ta8mwJeye2E zX`{>ii+3q?=KQ%BA7%ihKcLWOA3Cr?#+ZAwd><6XZtZ?vgnn~X@~j_>x?0TNk{u*F zq3yXrLP)js4qZNW5tR2x3BEW4pYVM+`f|hFMV||VM1Iu=_k<*92}x3`@aZy(Nby0n zVMHO^?I?}qSG$s$w5=p}-5kp~=0zr;AA8VOFqzuNcUM#pGRwd-EoyVDkjrx&oMwv| zAuA!af-jD_<9|s z@~q!7$(FDTU!V+mQ&H`zoFp zxRSSKG~4gyVk(MgBm&{?y+b}74d~*}5ek<@?(SA7y*n$!z?f;ei_UU^EdZ?!;^oym zEpD0$nA@GKYxZJ2aZ=4z%24~Cvq>^+`d+)KGuG)zrT16k54~ZY*1L#&Gv?OCcd;~Q z1#f(oU@?I}c(F*4Or-+miwL>5?MBB0EZ%FoV8Q>0{c@RmuCiHs(b)OVp=pU{whiDr^mrm&mi zK7x`}y~(O_ib&&`|9H{n3FuKrl}Zw)oe}4mWLKH`g?sOuKFJA4V3K2F&W_0)2{I{- z$)ZGd*Y8xmj`5~VGI!TZX4FkF4oT8`E%xQiP=t^`8ccki zQ%47&qYIYdc`+kfDrq=9Z6R51M2lNM?7*lsUczH2X#(Z_=P{_ZVUYY$BRO6sRd9bD z;dV+<-8v^7xERFKVY#rmTC%uVTIg@k zrTjSp>qu9d5aVXU%3n%lz0f~2zn#Y0yutm;JZtMd+&NoVBfi!XY5h_@v>Q@ap8U7b z81aL#A@{q%TwgPotVNhulYMoZ^sI>;=exi5e)v3I{AM^T_9#-=9IfUm7nZgb$`0-- za>acke@7X=F(_~djB`zG?-cxRGN`>*a+et4QsXxpC?cKZeAlIJf5*Fj1Z2~EzFZA8 z8&;r0nR%Rbm-1Rs^u0%aA{&milkp2}x$sb9@gS>f4H(NGUbShWUm?QLo6Y4qmDTfj zD_QbIt986MnQojtVmjoLw*hX2OPn}ZS5!_6xjRjYaY4~u!Im`i8FE}jluEqtK7o<1 zdp^uNf`I#+xUq>Y%r&(2a{H^>w340e7*iq*cA9R3gqrtO@NA`1W;Kx7#aIuPZG}pb zuiZZ|cD8I?1md?iU6d#&&7UR+_H<4vf7%f-c8vEKc=b#x4jyK|0@0|O$t2BQLjt2o z^x8BhYw~_k7Fr8f`_TMKv@Af7p@6NNUM7bk#PohLh-W5HSb!~#vp6}kfZq!_+GGTH zAPuS#EB*U^lS~L0mzJ2cLKMN^)SlRr(Sbxm4F9w%*!_mnQfhunI;*bYI+^*K!DzXc z*`(5lucwIxpg%176AxV-8gzR^$qP6Phv|Ft6Bu%bo=+qQ@Vy$RNIU)FbE3KU-;DeIIhpA#A z+oB1DqKAXr(JBdwi-X>$_1X1~%&9g$52o(Rc$H9Y*1RT=R#6LUZ^Q=?#&m`i68Q=t z_Q!YZ-J|PyIrPu{oppLb)wEZq_$%W%R{~3A@wT>UL;c;^$%OsuGvDLk1>WuZg?3u~ z&Ug-wMaho(m;}M#|0Tj{<0>htOp?gOalc+t!Twv4&yrc1c)6A3EEdwsMfFS5m+4(? zYL(caBvLus^Ec9K9&%fV?!P&#TE{-|B{1V^z^`;$uj(;;_}MZb+kD6jeJjPpMJ#HU z&Tm1O?=4?Ne|_3!gz?|8(>Dz6=o5#X*b~LQ3!Ko$86vUav$+-ndmCiQTgFi1Iw~t- z&%TW6#FxgR;tSQnbYEVektsNH1gl;#)=gegynhT8PtyI}G{vydh|IyjX8uj`) z?V@of4?69Dk4{vLeFo~Imx?q%wRc$&=~J6}Ld+MMo`Os-4D^{%lhEZHD-((z9$&Eu zu>Q;ITGy-Ff~0p&ZTT%R6}AR{L!w*tQjq2S#R~ zlU?#%*7`ZE62{p+Z$XZ!sDlGM z#-YIPI)i~#DUN(hYIF+qh04m=Ti>k#cgsi55XYDZU54j7C5P$-mV5OjjRBQ88j?W= zC4n(SHLL26?PSbI6acG=)BMGS^%oTOqiB|mhXJsv+PWE$W4sn%|JwW3HTi~?X7HqX z+~2yThMHgy>!#AX6BzHg-q6mauP?bXdCVoUXm0uB^QDzLoYv8Qu4U|dO4VCg7;A1& zje3eb7AHo-##A<*tYG@KfPfk`I&%*uY8F#gu)LkqQf2S+nk*s!<3l_g$cr)=yRGQ?PpTFJea7F4%>*H_gNjb?4!}K;Rg+SnXqy|dnnq(0A`il zTq@BXzc)}89NsjI=*2`ZoYqY1mB~UssDc2n9@X{h?bKEKri!Y;iIKQG{Ai94RvP_r z+09>vUUe>K?O>rq{^_Wcd%Lx%^L4WymWe+wBQ44moR^|YtZl5j>(#yJsx!nw9^XY3 zS74x(?SfZkkwD;?<{I$ojs?a_-M_C2Lb92vITIazKb1C`p_wCO1?n~UvfDtx&}cS# z_QK~ky%VE1+pa$J{}$gFfwl{h^Zmt2(=|>5P`4iN{|NB-Sq%sX!yO(98ej;ngdW`O#XH67S*G;3AO_beSd)Bn#JSgd;DmiBv5@SkPxzpsInzXzrNkBfr;Sp)wEr1&32;Qv|% z$NwJ}1?pRNN8^aTXX+{_24WBM52Wib1fJl(x1(eQ+7edXVd4xFO{Py_CdeeDTV34v zsrKXXCo0LyBhMrs7z1e)H<+1Ocr_ zt@kXDdLJOfg2&Sv$2T{VAKUZ#5Am>C$sw3^hPwDqWKJNB-jin)P|YfWTxpU9>y=%D zXeh2sP(DJ(OYl!pA82p5G~e&^eya|<8g-q>)pu>@epf+d^M{pRLq%t|cVE!?(O4ez zL_B^aJKp|JT#bHN+({>k<2asdcpEE2!R$pW@0OEn)7aO6jX`|zDo37!iMulSRH13Pi{P0zjHkN<6=25wR>@c`{(JO$XYu>Yes&I#}|$FzZt-G8zwFwrQ#W)V6ycPG{TLEZ%3Du}oQB zZzj8inPap+9Lu){=K|%%alK zdNHHxop_sTtAFh8Z$etPH|th}ntoBx8LEvdTX;5eE|a?d6dm5IR8%TUKBq2V`?PLc zOJPj7Usoxxn0#eJ+0i+xe2YbuHx10&3%1O<4jp8^{ZbOH>UC)&$jFG&y;iL;+S-BW z3oQw(pRB!RrHeQu7@^yzEe3}o#AW+r6wl7GumoEr`*CX0^CVd*N~j0_X;4|drq0u( zK`#u9OLN4MM9i|e@}*;slY==r4sr4)cA`R|H68Xls`%01mb@c1(F!AP%>P0*OUsO+ zW`f{gC~K@uF#J?y;@Mvd%dZ7q(PMR!Mpp{t55f1}NbXXoln9!6n}Cve`IGi!?wwku zzl)fBPaHv6!7t5t47^U_NAs|39=7MQS92n|zJf?>jh!h`VH_1}EC;}VnDUN!!vY+W zdA1xsM2J>?vU!_@oQQFJ&v<@mKQK8L7v}-Ey7&b2c77fkTrA7?ufKfy9mIdDg(~et zUEJE%s`ATKncDtlBHhnt?H0O}2#6+Azv9Yo*Thb2IASpVrPO-P^i_s`>0Z;lE9!4} zi$4-}xvr0nh5Y$YxRO?M^5;LxJ!%VWCDYo8x}7P{Xww%Od?S~(NX<% zk?JmVHB>QNjb>Mb49(kcqmKLH)_}{=d(ERCE(5+^ReuV7Lq+jsZsH=HZgNdd0Nea? zn_kfyZmVqI=mGJWPPv&cEL&Ak9TR#|wbsL6r&5BrtP@S&3TqsZ!hz0$M_q(Ie2&QH zPGxJTeqsy~6;ALl&ala)CF5>iG8uT1`*iEJsV`D4WwMj)q2Y-i6iU2y3rJiG=~Ux> zKcxXbxM%oobaiDd+bz zAL^U<&}Re{gp(7FOj4q$vy)Sz@@SoJvR)UoyNvvdGv&9K?UsvjWvy<7BiZM-6#>34 zR}}?Y@{(v=eZPzSo2(~tcw+DOyY{~N+1bjZ`Vn+0Xi+dNh(O%r>m@0)ph;7Ml2u8L zpFqo1ftRtseeDwAVIQniW^QY$wX<7JI0jK9v7KOC9c3x!ui!Ezls2+wIrE0t@+D6c z&|WY4%JJ;ln-9x(H6Q9Wa|cJ)3P*~{Y-ek@l0VJwZDUrgS}7}it7_2Qu@-a0P08H| zej2*&oMKn$RX)O*kp&TM>DglRPo5}h6pFsOztJQ)gAhOIKMJH%n(b8nswi5MAK0&# zPQU!&Ui<`{$%T{2&rJG1a^&1(@$Q*keVEw|G%}_w-?ir$FN<8+_gaS|y)V9>R&h(+>7V>ytf|q-b7! zqZ<0Cn&W{zR)ld*;JOVLE+(HTh1ODoJo(u*ov~857lNawjAw#jvauOyfVo+$d8c$7 zkFX?WkP;hlv7S$@S2d&Et`50{E&)!;C>H39zM&WJqi`FFzY8(cMd z3f=erm*q&=nfQbEtC0H7=>6|QSxOWDfbjn>n{hF9cKKh!c;vqi;~s8n=S``mJ>8QZ z219G(2{ndw$=QwopD2TkRXR33ya`ED-4q(g;-~})Nr7(8Z^ak(ZT_|$-s1M(KH;;Z zsKnES`iq;38%(&D7k78B?*~4In^Qz?D;9r4VPms(x-Olsy`T3VL*gM<9^#tjy1z_V zs7?KF*9NxQPdm9gxrMfzhA15E)#LZPW*%tTp={1PXz$hiEtMx|1|Tmsr{K{FhS=m; z%=`uR{-}+i_MFUPEC>OEG5xzcnwtZIkwjZYQ~mnfXgng$#6kRQ0*<==M;`9e|9Gbc zGzn*opt-FGC1V=Ra!(+kGx?(_nS7za>IZ*wCzt}1Lag?0tS%!>55MD#HXvWQah+d- z6a{}nF$gyaJSa4N=ftI@GyY>TuC^j8ttAAtqncX zAu4ys$Xy}10W@(F@R-98h8K~a7E4yHVF(9~{y8xlR!%IxYdBW$+24cxV!x`~Ciwj7 z*2wE?S8)a>`*_!Sxq~0`vM)d0Wietl45qJ#&U)+eE^Yw(^&YIhn-Yfas`dPwEA_Le z&xTB9>cNbE|E9lVG{k^IVe4Dm^Q6fc2Q#}>!g{0MZGIKJJl&g%{ONKoi?2u6!YugP z^!LW0=7sF*CP7y|Y%Mr(G$C2pclodTlk{~9+&LiW5}%d2FR~P;}));6`-lcFYyI9;}IbH;`#1*xTOYM`3&%EDSK>p2LGZHYa^y!MF)m2CJ}m2@gJZ86_&O6e##fLc%qBhbvb@DCxH>oY1Z|Cs zfjed)QO0>BimRniuxsHID#+?+C5*s%ucIpl0SG1>^FP}=9gDLc?;UO{OAX!u27DL9 zvSFx8fo;wqkskc6fEOWu#C8BWUya37QMKgD@&QZB@m))FV!%)_E`;9}a75a5TDnq|%HVfFJ^fP5Oz3w=MB?{W>AY%aR)41$AOahc3Mu;HL>t=++4wl!&V z$J$Ut)US`+-JjtnOuuFX)A}V>V+>5+pFC~d$!(d})C>x&0nzuv-ezZEa)NDX?x$i{HK6SCs)%FF%Pj*nVXg;zn>5Gw%|Jl#R zH13XFn7-f#AE2msfV@x3sXU{-(|ChPNAC38JfTeQdwH>4=~*r98UQ_;)M?jN#a(6= zDEZ7&@H5(md$Rp;TsINOG|=TWHVl^rZUZjp(6wV-Lyc|Gvo*P1gy`KIpsa|&9JtgU zm7jk@#Od5)PFsLdK}g~Ji2Jg}T0cOLa{%#&*@9pj1l!TBBl0!e-jKSv=4rT1{RDua zH!y;?fQhjt4zO1^MF22Twj8Jxa_VR`u>Y_d2*zTmXQoc)0j<=|!J8VhKL#b8sw zu9gPR?r~%+Z@SQCp05A`sb?*P0&W702L1q0sAIQ)NKB486fxTL%9yTu{QaQYd_G-# z?oQ2Lt~M2WQ;C4Ja=JqK|`}$<28kr(_Aty&Z}N z0P?opp>A8OGlPJHOg726gwl~8<6zT4o#JgX+pIR|IA4|lPU>_b=rbdx4c2eT%7ktXTHH1@(kEYIdkmwwCi?HH>#psj@LV&l2t+?=% z=Z?2;MaY~BH1tUqYN@PX>~u{Hx?C=uugS-Hk24Plt~^(C+;v1b9{a&vKG(}uNDUpZ z?|6daec)cl#onaK&;%rr#Gl;bvbo~!Ggc%ZD&dn904PZhC`>w3vpT>{HMLKg6TtCo znPspd`L7m-830)vpo<3);0^n5gbw>xD!9+YhwR6Ux0WW|D;Jbr5_cZWZhEx?Uk_+; zx)BQ#?UVcN52*UNSnS7UixD_D2qM1xGL42N4FyGr!PRV>h2imS5upxk0ltcQki&pE zBCQpL@kb!mh#0VaxDX2GtIiTZNThmBF0HWDfG%V%Hw0FAkO%=OVyppNLdF5Kmjc@4 z-ayApNkgw=jYVCReb!YxKSl@;TN%|Wo^{_*tMdHpp+q+%2?Q$EfXPDnn6kyMee)kr z=lBc};ls_WdtQ42saKGt9O>VR2?{bkO`?0>)AxW2Kd@Dqc%=M(xDji>5}LA;w`lDs zp3%c2fd$z>u?!vZz|dqE7dr7a_>ys_m{N+oZUc+z)Wf#5fK=uo?>QJ3LMJgU<|DS0 zEPJON-1%RIQeAq4c|`=G>^AJd&&|%yA^{HeQ}$_I#bREQlI>CvsnN6S5HymdpRZW1 zT+HSOq;>UT{`bj@+hE#G(FF$;;@05@6F)=e{U>IwFv3WPyJ((_2l{iQXmAMeECpQVUr9JRRX@yWp}P`pW0Y~s*wVv8f!kQk_>?;b9t`I{%J|f7CX<6l4|mu|mE&O$uB0P$ zz_khN$u#!AA1yUmMNtFp(HMC7i}Y0ES%X6C)d-iWfb2UfEW46}+XJFkRmAC$N$_oY zcTNc&rIlhvnow)tB$fr7{ul5f@U1tZcU|V;*W?H7{XyiQh42b^sjcXRsVYLG52C#8 z3um$o(XR(2O=8EXP-=36m{Do6Od`5_6FQuu;;GW+o2L0M>$)aU(2J+7Pc)O(yD(y! zG{|l9rH)cXKdKgoy=@)Oa|(uS*`r$bPWLULuh&2O(UqfNDdjE1?63+^Tn4;=yj%Lj z#(_0Y&thmH^x2bZu&V00OKAPg%m#~2qPMW0Uz2lJJYz%RTpW-sewR}G_Pno#1-XHQ znXZvTdUlc~_ANwW&?=B69xK)*esW%8OZ%#of|Ngp+k;L(D@8&dXeBT7<2F$B)oOWf z#z@bZK`11!a-Oh^5k~rykJ(eQ6y|!3yucP+}em->$ryU4^BYccd6ky^Z zb6~JE)||o(Lsfv&3uqFigL&0W;sUaQ360BqHdn&R=zSgU+J^VCdXIj)2TI5O@edPN z;8e9YGk<$Gz1B9-L9=PaDjbnNmC}pZ7s6t$SCaAs=|f)9Fi$zPv%)A-wEYwVfu>Y6 zkCRw(;7}8S!x^dI@b=k}Da^k>!xP%iTi={-t_$2T4+wNP1?3^DR+zQa`6{O1kn%u! z*5>%&hBk0fA_6bVe?-m0my>uvf5QcYv5td593iWC#ftqt>jpttPjJ9ym2tiq9~N7K zeF|Wq#S%TMQQv~r#|>cpxwBkTd*as z7DGrCzxsIarKQlNX(Hnmg@PJ_*Y09J5REP4Xd>AX6{@U=XJe2Dx-F^fvo?C-)5S%E zZHx;W-^-v39P@C}?e(&0FXyzl3fNR#>s!-pNnkGVwx%MU0{Qt&7Vec1!paG4KbI~L zK9}JY*Crw>cJ_hm*;1y681c0`%2tLTObt2mP|!<~shCrflCL?TZr+5$Ds^(RGNIKE z0W8c`OJ^#KteW7s2c?i>K9#(g>vv2d=q4xOfL1RWvTkZ&(Rr%dwYGtf{KMuiFz9Ly z0%S4^Slp3<(%LFgOlorZb|DpJ~ zrrCtK;qR&l`UdU!ms?gDhtsN2!;}PZUeG3uYH2H3c#OaTf5z#Q5sHZ+AXq|5^Bg)# zWx_pMW2bTO!V*Gvyr>iS!3!8W9quw~5O=E$(yP$GcJ~J~B8*VE^C(X0#Hi^ zR}%0Q?jG3~ib@CMgO3JOLddk4oZCY3qmDYbghn^VZ_~e+69{Kh9qMxS0zDhjaIlk< zQCNK=;>?Y-A~><}rpGxSJip?ZQ28kar&keIU}_B1l&xlna6^Opre8;Z8rHC$#CS}n zykP2Dsl(hg!Av3N1P~fC2I$UHRjBFrwv$#2e_BhhxRSDB!nJ&KwQ21y!nblUJ6Buf z%4K4Mq5xS>x7qrL=$0SQ@TfQmL&^em8*uL?1?rzblftrrQfx!o@JgG4ls@N$z@Hac zWx4=T;nYbqC#aopWx%lwr-J!y|3dcX59$@yLfN2GH+r^9Ik}v^03q&(SlY&*`9v3YwC2pX0Su4xp``j!Q+zf zg1gGmiDFf3YG#4QX>B^S3-T$(AKM-~Mhx2ThbcSZrkaF-x?GHaL$LXhyFo$7)2-hN z&%XZYe1yS9!QGhC-mXTnBOg|6t6dC3nF01EMsYh?xUYx>rKiCjU9(336j!JIfYOT# zni+2Xl+7p=hOj^j@`!4L6jAzp1bG)(D#m{~xrZF@5Zj0Uzk?ijq2LJV)u7p8+4te5Z6f56=>;L7AP1 zPRWrJanaCW+mxz~&kTDtg+GIJQR!c^{~jTCYp>$EP_?U&Llm_hf#6BuSP68>q1`T0 ziej6SlRsOFh29lVX9I$VmJ5zitAz2TfFE_n!Y?oW9fp#mQuC&ECS&xbP1!;{A*pH& zSoQjI#~z#GDxfl+sxi<)9LE<#C4c9~WgvC>m0Z%9eS2KKfhef`lnV} z8%R8@^wJNTx|Bv7LRhGuTbk6^vT}p5GdTjov*V>NsLGbbdSS>skfpGJ;1dlUcq^pg zOwDy%lOKXeh!Iq4qr3b;vA+My`04TmL%Lbz$|Vm5e_==G{tBCYSwSgUV|Gh>Y>#qE zN2)U1_5F~?9qEIf<~HJ5!er!lKHVfW1nmuath!o%oSaGI5r<(gooA^&0+E7F2Gods?MnjrQzIa%Y$uk2jYG3 zr;eD8lQABhNQjR#HO9egUgK!6bk8$_Tb*hxFzK)H+X$Vb{E3a?J3w;A+b5ojfepu* zks?mL6>oIc(u3dC89H=*+9YYW%Uih%mQ?F>eM*zs2;Jw9H$Zkzk8DS0+|vvFz&XDjw0^+X|`$4BHd$>fm|Uu2b;tu z)zd#)#Q@#Une4h@5_2f0g|@{DRW|YSWs$uU`TVsUA*4_AI)pR^GVr z?AXh_KHjO&9$xHAd5^FVgH-$*D%+D1zRLj^hC;a`%5Cf%qTN1?#-d5er)6{^QpAzk z4`@RF)!0$%it7oN99y;Na70pjW?p5A<%C2MFrJBxQhNUCuPwnAlEiH$=7b)$nIi)#ZRoeF=htN@iG4vv%=-X^YgDOZ zO#$tmk8i`nUCMIth#pz%G?+glqR8pD9&^Zf$7PME7;2$Lwx%1oCd#3heM<4BfYfRg zx%cB$UCH8BH4T``ANKkXLho~ewR|sjP_0)l9uR+*@p_(0Czg0{ZI6CC#?H|QXJ>Q_ zXCu^-w}BmbqAPMF(X_iG6JA43(`)|<6;9P1?W+k@y0n{nayGpy+3_ZudEg(uS?`PA zzfnpxHGn2ZN0gvP^T9%vfSW(x&ly0w3V5Pr`lN?ec(SgRTM7@KzOgKt zaW9#<&(SlLPkq$RM@|HfSR=4JoMTOI5G{Y#kWy|49?awqrg(z6Xs+=q@T}p~=Dt|U zHbOuFH*&;b+8{N;$Wqdkxpy6+|My`IvAl%nO`_pb`6I2lLs2*48NInL;`%^$%g2_LD)#807(l$QjM_X6askmQ*Mw_5BWr%_i)BbQn{x1-R z-ZNMBPBQw>QHnWwR`(LChvvt7m)RYNiobmQ4}Q`I_T1Zso)fCTpu6VaP>D?72`MQi zj=ZSwl72vy>0r3kkW8$i?>0(vvQ*hqv&_X?q-_yLd|5Mp(kLIZ?-#PAwHGMG1h5~8 zbJhG@xzZxOoTxO&kH_j;Qr2U>JjG8{4Wl<>4b1t(M{143z(ZrT@2#0OJurT$*iQ^f zq-o^O5+;`Z6#0YDeER>CV4JI2bAkMx!~G{%{qK?MxD@~Z{(p~L-7W2Yi{zY4?Ogsp z-iV3+9=KlfTH9lbC+$5^b72#ZQC^;0fr4{C1f^AEMCc`8Om(aigqbMkJUWDN^AbyC zKl%4n`SpdBAltJ+;{40}vT z)XY)@@=ur4Of(WJ^Xc?0I@KkSH-Sk`OEHtbOHnoDs-xx-g>dC7C9OP7(SZpgktSy` zM;XlnjFL=Cq^wP1F(#QPH_?*01Qn2}Y8meeQH(-3Rc$q)hl9IWveJuxAs;y`pyCVz z2SPq~X?S$y3eGe;c5zth!-?Cy@`3GJ%*hJF6|52Do4BMTt!Bwbqi*95w_oY5pmrkH z8n88uA6t>>4;}pA$d(+C8ao_vGpf zpy$>{79z1)7-PvVV-6r#_|!Xkvl_E9MZF?zPmaxYZW0 zLrJFBNA9M;OG^ozjd_)|B{ju#MgepXc)8?~q>=(iO@f*khXCV%Hd8jPH37^Z$Rx%$ zMe2_z(2}R(D#2ytHt4_SX-`FOP;P>*pJj&Kv#gOPWudAAE5DCOUN{rWoonIJsgpI1dE zpgFJbpQBY_1dZiHIlY0UrqkS?3gT<+Yr2kdPFlf5bjS~keP?d099Q(#K$zb3dAR_{WJn6~^G^V*0>tx)Yy^rH$b!2OFt1#?Y`|RD z**YMJbqaw4cI;Kyp8Dnzl&m_)Q`w(z0FoBSh`SNc3=VJ9K=-BF-1obN*r6eMw(c&b z+HAic$6&;nNOrE$r!iB>-nw&+fi!;ZhX}8 z;eZ~#A4UK$+hN4)N0#`h{x?$&tj+BOpp_iRPgI~6T0oB^{-Q_^fuZST z1!qU7j%VO1Ovrl&yBAaU-!7+uDskYC*z3?AzC2V=o2)H$2TMox&>#Lf7 zS~TVdE*zJ+`N2~TOx>dI8D=don+zFdEQy;!S!Q)Gt#mBcI`tHw#{2@+6|qH@VyqM^ zg*!3tvX`74o*3A7tbytu0#i_5nT)k+C_ZFrv1lVIuh<7k;O0ZsONP+iEt1mTUttz6 zLUUZ*SUIf@EG|d>Dd2VzUHcvaEDo9g?oM;IHkSTii~%mSi0LpYT*S#FbI|8w#=tOa z08d<|&QL@d*6BDO#`A<`0#|l{WV+v>$f(@=@FcQIP6ncJ2hsajlG!6jMv0DDr7Oq= zoH@#6f=m&Z{jD-hst>~wk^}J|`7{$5A*Binh=If=?TpFe*sP|$i%CbuBShB}#l#^I z+F`cXfl-dI0>pXnZMGm(qpSe2>xMR45Gpa&09eek-HyZ>oK1js!;B+su?i!9zzPug z!M50dP>*aLhdkjoa`}StZ7)o0n7uSXJAVpH1*uqoJb~nTvA<&8Z@tKcF<)BJBF39~ zUZg}-Z2c!gSwLvMz(**N=Ma9|?yPxnA;OCQf_2j3;?-gHkc7t5*MVzJo|0{A|YWeAQexl!~NE?PzzqlidpFOZYu0_ zcxj>2jL?FXXhd^07EKOdsm+*~uhhVkbC8ORCN<8lttzpB>`29pa+G_IMx12lFS9EF*} z9(>Bc1Y-OUPApc+#!4~)b{T*LNPRzZ8nRH5J2QbJCs=lNU+CuLy_gnbGL8qr5|pq_ zMIkl=n-xVZ#v@1md?;z`a#b((+#}bx;XZ!z{}t0fhioI=lX`#SvF2F49^>AynQX5O zp6-kZ94j}HR&4?an7;H0axpi;A8^dLi_0~N^r|MIy=&DVOA(~e-9o7{AZ}Xf4cM^!`3cQ)ZpDym2$~*yJ1!@;@!%U@>!`-R^TLh7xasT+;3Xxz}(JK4z5FH&w#&fGIu&#iETR zo~0b4tZ}SzrX9mj{IqDn9I#kX-3XR(1|g#@PGig>Elq$ho|7GRazI{-e7tGPXu8UX z)sT3#3Dw1%^0T8|Qf;ZudZWNy)$Mxs)jVMj^&}Qm6R5Js?%B5;l;ki(l|bjsNraou+n{;b+M3t-jt9efV{HXEaIqz)iAPRk$jZ3!ZalQnceF zmlK#y&hnxyk(72xC=KAQ^i#ns

lQ{vg`P0PsL|2Q;%_KshQ2CNt4rtII3K zBiFHiVlL9Cl|gz+xyQEN2U-F!9{H57A|s2%(C(9g%W4-!&JT>^1N*S8keM@<*qVJE z-AD26lj~N0m^_>bh%Df-(kHY`0a*!8@zK+FpqjbBqP4&yQs8uaTs#r8G}$LzmxTDDTuH9oO4TBGcFv5IlWT z^Hy;5c?=HG?farI%G=J?GEOO9P&y4BB2kxd|3}Lfr&@;WPCe3rIf5Kt;H&QRZthpf z#79!9083V&U^w%}3lSw{N42t^=A|{)c^mjx=#OZLP|zD7;vgVKb&TfcIMEL;A;zc4 z7nsNfvq<`OqnK_{Hb*NqCQrcfxt51m*WmOFUK>T~+hu|L$yaBRcss!qM(v03+8H2W{Wi6`5MCyi9HPij zc$?p&@%UCq~F7aJ5MK{QHY9v)e;|VdTL#h7N4=WX1K2 zfF$ZYX5i%wV*~dSfSDZOz&4V4ugFqR^Bd;q%`)PJON4uBN7rfk0!#c^c^<2cf*=mQYQvBXE^ICvBpdkkq5=Xh&0^KNlGO?3+vY&T>UbO1Vwg3o+^sl^Wzc+op@9gxhr$Z1 zR^$yHy0f45SUeD`CnSvW#AQGw(Q@^*4bR{xFW&^EMx#f>@puy)2XSEo3QGhyi!xEL zalYY^m8q^(;yR4RNez=`d^;Cv*CRGBd_phGOFu6Hg^|3OmaIUaQV zLp2kqV_s$uZ<{l<9ZV|-u*voes zFxinedjZL(kvpnXWiSadZ&T*>u?R&mfS~V?p2a~h$cw?U2d>_wt=!*M$nFg0x@M8j5-B*s&zuin-AGOAkwR+5C6T-ht{|SBrB_apUH?;{N+FKVK z>`Sa{ANMsjP-_8C%dp4sM*Q~(a(_mkXp{`&g8P7*#(Z(e|HIcg1&Ou=X}WCNwyRFr zwr$(C%~Q5*+qP}ncGamlw|ly0CgS$2hrQoc#Eum^GxE<||7R)mCSb~VnO;+;RGV-* zm5x2q;(ls(Flx1VDKUD=lLBr{GXZhg2KTX7;>Xn0@$PX6>Ha;IsehQ4`3FAWJjEIL zz0{&xojXElmPYag#TzN?_9@Yj)yka+%I|JYE=@vZ(berPMOE@SfHlYtj!cmnka^SI z0;o-D!GbTTQ#t1z4%Gpr%N~X(r(fXoVsxfI-vnKDZWIEw(>ZihPIZN!l+2hFIPO5j z%;PD`%w2~b(ghu~Fg-899ZH#64)YK-sHqGyjdfp$`5k&dk|MQiUaarP=6+trxCQti z&}ziI3(FRMiDR<%Ktd{abyhzYL?C-V2mDK8T|RdacZ#^jHf_40bR>#u<`Khme#r_4 zKFm&VcTL(%M%f!=4;=Sg&)(KLB`9F8K2BhpBoE)c>n1xVL}@0085o8O+)GT8lV+d4 zrT&XlIyU4HXu~NUx)DR=lhypKkJ=Z>0C%9C=G`aZ1Wu~ZtIcS6j;169RAqPxjabYz zfH$(y{|7GA^*s>$QT@015D8LIB|_*T-l8!R#mlpZ)N<^GRb)gqu2-liOZ`0Y(*n}w z5ixhW=ti~yebd_aXlDv?Pq{Y!%LO0YgNB1v|5#Dh#TfwO#f3n@A#Eu&Co{SPOL}GS zXTDm;x@qpUj}(w$Y1*bvyh?)O4A7}U=*Ek#Wa-*KYrU#dlkCJSKZDA>U9COE50KIn zpre9y;6Yq$sSz4&f2vlk3BCpc77Pa5Q(;NAjXIKnFPNC-)>?SHmLKz_T27kGG2XpP zxqrNI*%($?$Mqji&97D_B07{|>JD|^OPZx0c67;6(r5vVPN!1WqlnKkv+l=D{^k9n zv{Lqziv6q%^qiwH`l1CSj~eDH|v`))Vh*Xbrkn@XMb%Pbb4OSr?FA z@imWI6|=3RzOA6YG!1F8_mD>?|P)qn+!W>GfE?&=w($;t{XkoAgT+lt2;p#` zSy;$(iSRiQ0uVwF(V@MRB&#+iieW$@(%2LoV-kxNV4XS*n)jTr_>-U#&esEm2)oy# z|J+{-R;KB%1ZiFY{AH#B_-Bd*z<~xhVDUUBphl@p1{6pKe-GWhr3&#*5K-6qa|=u0 zF#bxkB%JsC&=Od3(oZ#_?^TKfts5#9NBKnpTg+>t!!|MC89uiH9!s742Ny$=z8p_o z8`=oC9a)v?Nk(+-p7aWQimD+-qAjilHX@Z0Nhk_y7;bCmXXksxUky^yqo;x@k+K&p z!I-ry_uL`qevs8Y_aZZq+JKQzQ3mg!8P?^2-WpO{5K_yD57nkd!Xj2*buUZ45(SlzP;qC zM=12-k(nG!co^Xr@R}BxTO8V+^Vy8>HDuW*T1>|81up6nTY1j?@Rd&{X$UQudkc|#8MG; zZXz$vO2g@aDDen7gm?QETJmy}KcNW;LAF8~5y(%kDJfWFjuTQV!dkGd6Vl%H{QJ+x zWZ<^)j*dBCCgi6UO6Qa`+#!UWeNRqZw{yOAg2Kz}VntyAH4W zRZWz2MEcGxZ8uu?Rwo2cQZ>EC8zcvwT()6dczyJX#!Wz{wn1_?%HE8@z%}4abY^o)hL*swn775GD_xgjMeJC1%Ka~v9fby*>A4W(+3pJ<-)Zd z>nYX2WQnxOzhzDY8n?)G?vOf(+xb+L9OK81?3s-3#;poMC@5*4p4^+nOr!4HZ%>JMJ> z>uAB`CMptCrW=(dYxG3i&#ujQ+Q2&dNcLC?oK@Bz-%6lv)H7$6FUd!9$=mGY#tL9% zmfSPp6gyVq(+Z{7$Sp*B5W;qT`D>)PFb*I#3WN{+yv7wN}cu(&zomZ&_oD;QDwCOZ+H zgsZDJ6f>egdg3lkNjR%L$Eu`TK8SV}h&kEWn0u~n9J?gp^8VMfR_)2Fk|$4oWhf#4OZ^t!YQ6(vQ) zKT2H}qqIPL@8mm_)JwJ8Uj*gbb?D&xxJnTCkCyT^{bpq#K(=nA86`&0;Ewgd|{#TP)Kr_9*4CM9=+ zEJySd?VX(%JV3(-V+W(IK`Z$$#KltCphu--P5WqA9cVUdRO-+!Olsk#j8` z=K~Jaf_vG8FjehKGx-Bds$Q`1M$|ss?q%U7ML$v+q>|XWRqbq;5v`zVd~!yFeU3&* zW1v*17lYvNH#x#9mcu2#QHI{FE+Tc`R|Sn>fl6A+29{!41T*sMYRs2JA(q*p7KYG0 z)Z3HXeQ!&^=5bmT@rdJ4@EmjFiaI;*7wZI>7vW_q*cOI8@j?|`$5}k{Hh2ULjSh;S zfjqSfEun!RbSs?1^MNF>8-6o|RH)jfAeTcUO{}4RWgK&3D(RXZ8B(IwqTXGso~#kx znswcXik3Kfy7N*tL^o+>7uh(z(w>$1miJ|C70^_=UAwDm)b73exEp}^+}#xX1Qw<7 z4!J!TnFaF!Hb=M1RB_yY6=~Tt?~sEmMuTo}t&FEJ3{%PR#I5aPSUJF+8vbchTT_?# zrIPWr(c#3`(Z++>eZAWxQZDvAHh;C`ZEAQAysv!hUzy}(XYKp zO={>c6B(`^;ITZt`o-BZgQEXEk%>b#9_2l|7y3fbTr|mbV{Bu7xL$(hm#UPlrW#RK zy?4A)a5s&DV-V5Wj7BYTk9te;J7b@evYwOP;-2pYmFAT{N-Z_<&c5*qljoUYm%+ZP zCRQ_UStP0W3a%z`mVA}1QX1cju|zraBf=_Q-tz`*knM89bgRFSePnbS5l2^kGX`fW z9%DQ55~{x9V*?t7yerfoRVQQeku14l_celV*#eHxBNrzd>9n`x5g=doz2P>00F*vK z>|0QIN2_C;5gL?btX9$c}@R+oiJH$vGYxMQ%4=BztLYMPbxy0hx zP}p6ci&q>qXhGK4K7Ly%Sk)&|NDeN z(MBuK35FKLsh-&-u(n!jPhYoe-+E}6{|lLUd49@%n$6vDUQ#|h5tt7wAyrDZ$!8$5 zMPMHqHWEKTmIl-j<|g>U%a-dQ3?pF*OpMEe1mTT_gwhEtKqzWp*!KMo@Du90-%~6g z0Kh+I{O_m#4GRE3^zVJT|Gckg>|$f{|I(f&|NZ!j)okn*IZ^)X=oy4EbJ%1Qhd7kh zqz^$ELLh|qFL!5@jJs@&5JdzXTEiOseB*6OWVD6j{n)JWY{`EwAZ?xZKl1oWPakhFVAbh}1Bvgu~ zBJ4iPYesXdXcLd1u{$9#%h#oK%%M||L`pFWW(syh&3W;><4WJc!c+3(O7}+MRyiET z6qG9AeY0Ck8c&bA%RHn@QyHu!kiG2*+Y^Bzl_x>UCy{sziIcE*iP6GVIJqc=7tV(s zy%C^5`RiO>h7XFaTXM9-n`>~|1jG!JLmOx8Arq=)hibf2fv@wv8Z(A>bR>%E;I##P+_)XCHg?(UY8*ATitLMMcK{b4u0wrHe2wh+>X3(<>EXkXRZ_#ORs@)e{bCpXuZ> z?#Iwq5Fhp%!PW_&C;$()+W;y}K$qBZadYl92V;kmI+>ZUUbPP9OG#O_88rvR?cE+E zHYmV||21Zv#k+W)8oHE-^-cx0Rf~0N9DPl@zCNw2T%zTdc8B?K9s$4B5umU!3kC-q zC-+r&)XCED**F~WB-r=Y`tJg%{(?_+A=)HLzR!icm`4z1;Gl*xq5IFwR<&vEwRTi^WiDxYNt2TeF zhFPnK9Rg2^@n1SA>=lkriY-hK&Weu>lC%+u7Hb7G}%qaLCL)DDP)W!LE2|DPKPKh+~8v4W3uF( ziu7<7Na>UsT~_3QtHaOOT)UZFZ(okk+umk7s!D*0!5Yc3yOjpGMFd`Ua)U4fO#|#} z?y~FqE8$`eJBw{;I(&5K;MncM7P{m_U6!EL_MA?6zASJ9NFnr6wxlD=jhM^a{gM2f zoX%*)+wrVnX+yEZxmj^h0KbxlDEP`_;(-Y;nd|BR9xGRxO zNI$&rAx~c{e5=F$9Whd}A1$=8`3CLYl$P9&M|61t(8gKQCjZEoPlwkqD zb2tulasNHY{(BG)qy+%L`JXp+GPC}_CM|^jedlYeYsZa=XFj?5@oWbYLf`>eTdO#& zXp>A#2D&|x9?V#=a8MMfa7iFyuPwKWUr)oHGc_ctKscS_(w~LKM5>);v#+Z)l+=>> z=hMWyInqLk)#km4IUKCzLYz^4--})(K8y8crt(Cvql7S21iY|iy+wtJ`E!NDTo689 zZ4fqgqEqYPG(eJ9n2=o|b_%S&Kwx}@M{;h#s66ThDet{su4x4iJc+%mwaAF%BhD8G zvOa2XL!E_BdRm*r7$8bbA>g6JaYnuB%#aN|8slR!fwqLTvG7o#f)T2P8?-@(u*t8~ zcOdxD1t0{2$?785r}JBfiiKf+(Kpdn3}oOUfHMFB4Z+~YpIIjzLWFDnw&+}W)lLLykL7o{CeSiZ`Rx=7gReQZ}gz1gGY8n2!5sIR{~UP`;f~ zw{9c=6K88Pf0pR=VtrdU!vq;o>%KW%DR+>RwQcc2c)!b^2OopS7e9PJ`Ll~~c&Rdb z_A1dTrkP#oI>}B8(4l+iIQRF$zJ(6!=4xs6q*HR1HvE{08~;YNtQCMTm`*YbU9>T_ zh8^+tuLVZWX=rzwtfr0Xe%J--tY)xO@k^L+mNAt=HglHR%^1A)jvF19PcQ)vS*>r= z&iME%y4}Ec_Xwx1uo)FEPD3zz8%6i=w3ta03#2bCBx!9^1b-$CxP! z{CpPho4{6qgR%+nmT<-YA$>7fkFg;A&H^pP-zC=jyiS?HLY~u zqIGXSEaxtCCyoj}L7x_gr@^dwOir$J(d3ouBwF2q#1+7$KdIgw4f?#{Stgj5`B9$) zjHUx1z@GR6fCWYdiXC=rv$0cUfYmy~kEJT@#`LSu>|K9T#9yU?&2^a)6{-QKc~iWV zO-M^;Zz^n{q_?gW^Op`tgSk&7-;> z-T@*b3Z4i~kIuai&B$R3(P1lxo6`{UOxVU&V`4M6U~%nsn zCl?TCQF<71GstGixz&a`_45oHMG`KYBXWE>V&A$o+?&&>lp zszbjaEsR~<-;@zzvZjzEd=HS?cAMl{KN3q+*Z33_*5m5fXfgZl+DAzIgH5K1$9cGw zbyPl!KwgNSN3^xx0o0X{%>#0Fqr<7G1X@$gRZ<dT7bNeF`HpoAycC2tZ%6SJ<^*2~rzJhz1F zfwx*hc~J2CY76-u#P#l0KDN(hFdZtV-IAGe_@1T08qE1k(?x3Lt+k|XV#$A)r_~8+#8Zc)T%(@ zb|lASB*$N})2mKwU%5L|v1=Z9?%fcA{EZl_kC_Zst6L22-u%hClv&f z1a7a%{Nw@fADM)B(Ul#aGaDb{oyBPGalHX6wT zU$%U!Y>th?a-oQ5P4wI%%p!6pShF{NS2biWPS>P6aOr_8=9;3% zZ!vOiic{mhuhv~mi^zi7s*gTAQs{N^HIhvL{ax?+#7+Ix=h=MV_Mpu4z#EW&Hj0mL=tU ztenP`O$5c^kSz`JD4y{7C|pEx7ij{EE@5jQL*XQ*M&*%6cBfPfM~+w@S1Bi)$xuJ7 zIdEJPj?qwh-~d4X$>PyN@10Tj&Gd4U32rB5sdYmee;zH~3(fK=Mq9!9_v8X%?U-)i z`$;egCbU8P%V3qkx8@mK95ePvBVC$zDIUr?Ejc?(J#eiDo`wMhw8ipd?@FysS?Bs% zoAEunrk=J5Zb0$y21t11g#z_w@aCld98OX;9Z?1`?P@QDg zr-q0XGWY5LR>wt#f~`qO5G-pwgpmw zNFSLUI#BT6AbSu2Mk3a`#8mJvXaN|O7L(2jo6Yju<*VFmKSEt7%|BRdv-M8hX%q=^ zyoa}CY&PzbtxOpinPn%6P`)M$l97;XPVOKc< zvy!jM$-FA+z~P%2g0vQJj~iHuS9pFUW*<${tKtmI?S&hp#BRwanybgH`Msr*WtSRS+vWAVW|TmKCK*jiMYmc4q&S$%eu+ z7d3*A$7JsCJEytK{w~#d`9$g3!~7(0aGWMyV{<|-(?_3yUuo~nGP7eq^_Wanj7F%2 zRqxU7JB}Mtcm@Nzdy^@{L)y!LrG)u6G;v~6AQ5??>S zY~}69@kAZhVd>ghtwWi?!U!pSG%S9qA1NU=;51wupc9SQl{by{9Pm|RX4!_f-*O0@x<6}`QI?kY|mH}sM{~NwQ z^JV2mr($0P^krQAFoXm4Wqfmk_KR>j@@xo)2xT4ofr%uWA}7)wYR<$BqzxD%o>K#G zqZc6tC*DVf6!0dININ_@t;v%nq`;1V>KA3@|}B z0Dylg(*IMdeg`D0{8#Z?BmO@Lj{i{r|E*PBElk}0a&^uBqZT&&t2ayhd&N4;eeSp^ zn)vgMVpJ*#L=j$^#h$Q78(BcJA{GH9zJ7n|SWf_if_SJ8ARmUxv-Aq{X}HM)&H(J+ zaHZp=AptP;^z^jN6Sh#bYV~dIg739DndGc_y&G;qZ@o%xcKP#1?kPmtdKdb-NWim4 zjzU?`kj>!`d(~peGUd`;0?SM7aw$sCFbqzEobFyQLHN@BW+8>T4`DY^1O+@oz_#02 zq9Bd8&_yzE>>h1rOB4jG-l(<3@vu)yX_c^&z2hFoT_V*L>c;^v;#RCx*InjB;mn<# zqF;c-e(_r~24TS#A-N)07+PS4+Y!JyyQojt5;#44u_w~DPAZ%*TG8$XYwnbE2wd79 zfN@YRhuIklrN78&_XUW}R$h|RL{eW=0xJ+ne^CS2WtJ#Z35c5~5o2K8x!|4CesBq` z!ZHwz=qy4)ztr|>-FG0~%&~N$Ac&OJzw`XuUXbiC@%%G~h2YNDAZ8af7JT&ROsE+& z{`z_cgrK!m;`R&U&o@7qpRRh)cyKf=6L%*DEchr3zuEIl>0tj5!QkVcvj=zgKPv=c zsY;H#ISKQ3*6bk?B}PHga^Qv-<6-glkQ~_R-%4*+xUgb_=iphju1r}uhuY)}8nN0> zRp)hn92Xi#2MZk-a$q3u?0B*tg*$iF_FMkz2BJ*vZ0xxS;}&+z8+|Kl70;umN>&ie zzpEiRumF;~3+Mf1K&|oMs|EZbzmDvD;!qLTnZ}L`=kO0E_htd@7aMsoa88ZyMo9q# z$T@DZpLc+qHq?xPG|%)jgMN`lYtvE=g2$g z$bx}QF%v1SOy-=-}38+Yfk~i<%cM>K{2MD|;60)ICHT3<1Ok zd^=0qU=Ku0TfiD<$W>4X7-W+{B=$EN0$IPrIMu`caESVa=aSDh7l@R0DHz^0DD|!r zE--oJ@8f3AMzCJf#`aHQzh=EIk+U{vrpzwf=@DwStKQ6R?2cAjZm#NYARdBV*lavW zEWzi=qYXP6y%X3lME@B(&S_HN(aUD?oS0+F=MtbP=o-Sb>ET9zzee+ivvD?8$()cQ z9e0`|sdPrGu19DXPbH#)T=t2{G3j)=vxQ+;7ObB=*(7n`3Kp*77?cQ-LgXE!79g6S z^+U>^0l1!(&G7rFYas5V<6E%XSm{bAb8!(PLh}d@eMHPpSGRHqXdvOSz&kmdpP$j5 zOr0VJ?xO>-1VJ-sU&vQ5A2I6*ezSHjud@h!(0v4Uq!i+_HS4_QtoI>JFSUO;OQ4sQ z$li}YpBpNse+~Rv8yW6<+Dt3wkHc#U#>AvXr<^Z7sGR`YM`&kwz#Wae!YQH-XIA@@ zvB^!bYDMsq*?tSd=B!f-ngX5)@247MF&J(%L<2n7!+yDNH7@1RvfXgU90*aZM?rM% z#IXfqj#-DmMo2Gj!HL!Q98Qp!WcjlVWX&)nrN_T_g(HQCrL=w~ZAr6NKBKa8Dzl`| zs94QCf$u!4AM&%sgA)$R&|j^=A;m}-7~~Pz@sR5*v=&DthY)T;v7iP8yrSlxZyoH7 z#uPGwtBLEx6dJe(l&z+I*Z9T>(NBduxmYRo1+6a_10VBdZ6{49M?q_4y)HR0gPG_* zdWjbwzBWGAyR2ZJUm%cqy1)>}%V+_BYh;VaH@w*F_BNd64kI+EAhBV@_;Uk|CAzSa zSJ44yaV%(iwi7&ZlzRlA4()93-~r)}5o23ehe3t{U+0@#VOERjT*nfRQQqWgw$ATZ z^;)`OHS}2!m;;E3(`O0=2?TbCz3@ZxvsjwIZwP`j5i|>^P*u4^F$RNaZ41d{X{22j z|2W>3$~$M!uG^CEH(nhDd)16@u~}KO2B2nWr6VJq1Z(gq&tVxagoAvtE6#FKq(aL$ zY>#kjhLxi+bBnPBaDrm^K|P5De;VrsIn15pJ2AR7^_jEij(5DE346s)mhOX9KItw# zPYuhIFGAZfOK8!(wSkNpSDZurK+}tQ6m}Zm_E&)8IXN}v?TCX)hMg`2Nb;T{FR&ky zrplA~CnQ0@@R57U3kQNQx}oFsck3Af`sGrdYd>Zf1A?}B8=}!?%BW}we|`;Ib$J#y z-ob20!o&07<1NsSrS?SrW@^;s=;JsX(l?}N7(Qax+t_cGQqrhquC}lR-~13-Ct$dr z|4FO!6a4TFxD z1c%29GqW)fb6PHLDsNPC+Lqvd0U6-5eAMVn&^fsuW>!h*CJ-LZJ>xarTSyVtOY7WS z6=21BCrl+>=SJtOK()^-op=LVRS%oNc)NC(!-Ll21AA$WqdA&Ajp0l$mhu2q&D+k{ ztmveJ9s~`^;W}>~X$zJk#4L)+C{w}Jfy{!9t0P-#ROLG>LD(l_>$(e~E0iF%LL|j# zr97nWsy*_d%KJQC_UgKlt6As=%bPS=inQT4GB)7Daxs2>XB^okLAs57m)x!j__#+_ zQj2z#PP29@ALrDlA(M*ke`yeu_s7kW>hT#xD=BWm1Ij#Cl(i=dW@h9TjAXUfGN^$M z85{|8CIXj%{>|;s_H|}Yrt8@EwI_~c2_zc~e3~p7Y}N}Qs=aeugT}Z#wcuaw;hc7fB8SYUK}2&0=2DPWR?M1$?dC z=!@SkN0!{)%4$)2(4^{H}XUNXeolbL2ZqY4(JF`@XH2O|UazwTjD%Xraf3CWa`YW;#N9+?9e#2dx zvm%o3T8J^whZGah5g^}AxIOmEh36o*YLZK7FjW{g-eVtAhrkl%eF5-$+PE&oa`U%N zZfJ^BO459ltnc z+F}zmq*`+YSgKqC5z}TjXGI&N+jG{Dl?K5#{&~AHWPWpE<+zLy1+!q$Wy~Ajdg)K( zq{RtW?3)*aQRk_EQy%i1uSZK)EgLf7Kwp-UrBd97D9uD35cx8kIm*e<149j4=j@u+9b2cs$E4Uu z(l)o5UK=+no^5Tm~;bOMX`|o%0X{q4^REU2tg9 zqq$oZxl03=v02?Sy1^ae02fY-)G4wP=Np6+P-e$@yT!fVYr4zQl>G+IyngrCd2Gu^ z`KWKHTZhBoiTn`w#Ey-kf;m_x7oPx3SSRz8*@z+R-;i_gsL>W)Cki0E=5~XuHFH{D zmpB-CdJtQPy<c=D}`5o>p^73tU@){~OT_XHwo zqKq-EQhCIw-x@*Yls|*q>1Cb-T`aPLr7vk5k6V$kjz+FFh!GDnNE&s>#?k6{I>{Ac zlgMk&WYb%ZxIDB`NxbtSn3BZ&h0$x89lbuaVu7?Ek?4#SCD`zqE!Az7w1p*0W_Y6nG zH3-K!`_{_bSBLEQUBv-rP&y>BEB#F6&YnZKq218D4Uire*SjMpaJNyO8xG0> zg#XTX-qI3*oqlU}B-7gtfg7g>V9=yk4W@=Ox{;_I{e&4|@ZDh?SChaC6b4}$1^chjp8e165r}es{+B49)-{Yytn45l|75ZueGsN_GM+;dF&5c z3LF^>9|d!(g;VF+R{nIhp;IcW+vAD135hl+P6Vz7&@^Y_3|I!!=|TtC`NB~_iriZx zLtR7#1W?3pkUGwAURMlwmzOn@qSbYyR0ZwQSn~N6L|S8Q|79j`93d%v_lyQv)JQtw zI#L8QJKQn$jjT>6Cf6JZ(M%^rlsGCR742CB`OYyN@-(PV6=%2j`rF8l@$r zQpvIF+PpJm$g)a=#{L}TCT>X$m7czCM5^nmfnjhx2K}u)#ua7@Zv@2DN&3%1_%TwZ zrg@gMSPUAhrDxhJP%@}<%M%g?ncr=e1WyeCEWWi^X2A1%z=Mwqp(3!h5D&Wi5#4w4 zp2rrmD~-YErFZSUKf^JFAl0R3TMPbs8o))FyH_c%G#uPR*gJPv?dLiuo+*oBIEyQQW1M(3Lf*DNsLo4hyS>+Nkv}1gnHzEBCiN7-a!L2RHCnsJ|JF ztgYtt?NZwleNbT-swJ8^sb@seseerA#Kg=!TIXSiW@3)$nk<#&%oKW~2?3YM>`awo zTtFi7Fg__D4)1Q;+M;nKX!M06x$P;XyLG8q>@+Jd!6svTAc7Oq4PhgR} zO3}evF|^~zOiO#Es1&zQPKph{0J`x^%8@3aY%0fNYMqUjL&P)>tPTe=vZ%01Qy+!O zpaz*ha>e}O@{#4$Z!F{86v@p_p$ee7mxEAf96@$!^tQ>-6rMBn;G?-3F+!LDbBNl z@am-Gdi@Z;%n2>ss`Zzuo&|EQ_|uCsz60sxTw&oe>)d$`lc^uKMd|4~{+ z{#|LUR`askY(e|k%?(`kmyN{bkv$hM^L>bN?Rd3vZ)zD`^F+oli4k)^EFYo>2 z2}?2_ckp7<2ig$l4m*A4g7+hLOi5uR$5SCqlxkVGFAkX!>A|Y$-f?5`$uKWupFXK3 zCd|zp4?MMgv>Ylr7<5s{DySZ|?4}xC9V600m24nx_*G}Ms8xUPeukTh$!5uR+uUZ9 z61}G$fE?^w6IpCw^2`ZAD7wrcHcopGM*wV$<*J|_YuB)2$1DR?`3zg zTj1iZ4cX#|l(v$|LE>+|0d7GM*F?#L%@)3Mj5hL%Mmg5znvQYD*>YXTWIvl=#7a)| zWmC1&;qDb25~k?=JcqmOti4d^9jWXK5#-^9W*4KUwvvs_;=jDH=uBp zAJ*Xy_b78|AIGS$14(LFw`PHlcA~gJ?c-xm7|V($-ue@h**>*Yj~p+x1V$5#0R#Jr z{D?;Wda04}1BU;4y>bW`V6v6j7^{ zZZ{BDAWt)KXK32h*8SUCL1FHOc#Me-{(jSDB;vOr$7r~{vh@l)gy?A=PxXT$X zJ+D^*AwGzqFo)tXXUVQzW}SNkYByp-x?TqJRH&<{cO(9r8B7OoHuX%;w#fxA_T?d# z{a6Hu&zL?^$hx)JG-;!L0wEMmclZ1K!H4P3;cKxfUCk0O4W!i~bSAl>iOAKym2m=4vO`U$0qdKSV>Io?R zwoZLEzqivzhrCSbd3Cqm+yeKTsvDedx_yc?0I>vKRV!v?f6*q1!|GT##=*=tL0~S# z5X2p9M!E5I>B^DmR_`?xRD_OHFZ$Ga)IKz_>qld&t3u$c)ectALkJ7-r*>}l* zgGxK&wMqhh1XKg8)Bt!}_6wo7mK(o(E{92lvp;-}!JGIn&`XfA998slmUmD#trm6U zcL!vKUwZ}H4BR1$S_wek<#x`AR1-vtwqdtF#yeFIx?b*jf=mOY?HFmySRw~wd$T`q zPSMFw?9|>ivA+4W+{4LL;pz-se|rd{i^ zUgIQ%3I&*vE<-YJ+YwB$kan~fBShF~B+wQ35&@&Fkm)mDGX+kpL5-mzT#I6$JS@y& zKV)Y6bFk>>;LzCh{*3k4g{Q6S>-pf~dQ^b40eAWutKI+>uDS+W7evXlhD3S z3c$5cp}ajb(6nV#<=14&YuuN^bp{|Xh9Ee?S?rWH2Mugk*Ia>kJx^b@EGOKcF~nZ9 zj-Dt%t9+LFY$i3kK&MSUsqmwa)V9j2k=-7P&fn1}S8i#}{2?GKDv2{WX4E*FttZXq zgO;hmV!Eo0Wb@NKUMf$>250=Wx^ zQIg=S4Yn{?stq6Tu-?3737D1xLV1^=(!a}>D84oI0iF8{-(aikXP;JE_EkNs-5PmK z3?_q56Pq=KEBg~+w@ci4!3&# z1}Y|QUiZC^o@2CC`S{?{ApDsLB=Y0^m~c2^Gh^;EJ+%~~QMY|bd()a(SHN%lxJA!C z64egx_nzIqV7|u)nYu%9w;SEM`p1od_zCaFV(PxqZ@;i|-k<@&D10|?Avp*Q;OpG{ zMXu*9@M-L*twnoQcXP*#Y0;N(b@$cq-{Yl6>L{W&du}V~G*Pn);A>R;L(v=6ek=~2 ze!v!u%$W8YSh62R_g!W3b@!g@Jg>Yycm6ZorUemBe1ic1{F7AwJ>8;k{(sZ0y^*n- zqlNR|wx*H2{eL$$MgKkBE@NLhW~zSl<{VVHv5K(vi#ld3rA|>G{Z6l^0k2!MUYyqt zuvP@5A{chP4BIeUL*KmRLTAq-7O^pNH9H;(bb7y81>V`+ws~HBH$vOqMlW*G?;-om z_dJM+N%!Zw_9>$64~^v47D4xV^qdOE_yG4*ih+KUrYwfAN4!XD6p((LkHoK!Y&s~UQUT@|GG3s$h}@8BkF;S0g zy@Iw^=r>fLxOJLuEK)b)1Tul(Ovf$ZgF1H0W(dL(feYnhl58kPG7A7HbPqsj6yCT9 zhVM=12qi%n2~FWd`LK2h@?U@H5(rG*#zhiyc@S~3roJd)=>nAJRf<3uq!tj8{?qz^ zOEw}fr6BGb34hy~Fbm^EaESxx6&v8RMGT4YYxDy&4`v+Tx)a${QMM^-05@Guo1`~q zQ=e;2G(f9rGiM`z=}!+gi5r1qZoALg>hIfbMQ$AaKe^%0hsj3mbeJ4Nc)B`kD|w)M zSv$pMS~ap)lYfSv`+EKwGPA)mSO41V6xKHLuM(^A{B8DHOYaHS-r-s!S|bt{8*u$X@A)!^h2f9OfOI+1@f7a0 z)7hpzxH4w(ES8#M1RO&=N_tC^*YJ8XU|8lq{SO5S{=K~BgWxYzLy-I?dAap|;A0-h z)^mnDd(gQWezgvQY&?(csvG>I$!-j!X|C6`iVz7l(7txJJ?HwbnW_gL7OeaN?W&{g zRnIYAVpP1;u*~rO}3ymNNGqjtsh`3 zCUAxjLKf)R$q^bbIr{;QAu_;=6BZW18X2gkGiL|`hV19L2HW3a|3j57a+f=d8u?}-#h=5!sXw;Q>rx0}JaYT@f<}ov z|7CCQO^G@dyf*|dd}t^Z1n%yEk-HO!5dE-RZ4K_ps%48$q5n8|x=}FO_f&Hl^3qZx zGb2ihJJ565A-J`nhk=1Tp7~Xdg)U52ZqxmzEeXT>w?5`hOJDpVU8B#S;!>IeuG}}w z$oVX)1n0JWrFHWxC-N+mRe#xSUG&c;PPr@xTQCw`Fs$=LQN#phT|a^B-Ku(mwtG)? zCCe-pzxjFy$LN~*@IFAdK@b*=pbUu_$ed>@7E-9gH6CIFX*FTsHxk5cK8}!DO zb42gCw~bpsYr1}tKWG>jzvu1P$S?Sb{vqrNIDJl5*Kr=Lq$B=lN$}V8<>I&S<>g2T zk>)ZQ6~g73j}L8i`j(W=u_W`a>7|8F65A;9Z(+f!mP(##((G|1fz20bM#MyF8|!?; z$Zk77BPF&^_3kj5znHCUB9H-DVJxYWrPjaM05^E@h~TQY&=y_x2LM}3ev_Gu2m07V zJC>34RwQsnoFBM@^-q(D;UX1F;2&?oabC1j+S*bdk}oZfjgibd47tEf=5J*sT3nU_ zMMByjk_sbUV|mKTh11`-yUBgj0|NunM`@P|6r;aO#IdwFCE2@Uks8O}Y+oEL+BvmE zie%^W;;=G8S)%CPFrkry8<63R|E)k{9kl8IIw5KsK9+zeBjpu#K%Vcl(_uLLvX=(f zBQt`u?N%PL#~O<_nrLt60OJntgDJGm|IcSIzt2zk!xD#->-y$aVQ$OX9Cw(44 z9DBE#jUSB`81+7gocwzp5{YyGrq;lDg%*VJpb=vr0}L(xanec@kuyOcffS{`(oCE~ zL#SXL*!J^?c9;Y)5HZ^t5BppXFeU9>Hsc27SA6zVz%$85g%Ex4#DYd|o27)#MAcjA zxGu}2b>OTFwt;(}Vos_vk_XxCq zMVvh(Kf4dxBx*>}u+bVOkPnBPTyb+XsvTLgvNv`C-ho7e{UozcjC3P)`kD1;p2Gxs z^C7h6U9mb9|A?qfHe1)i_Qp&8TF9J&^n?31nlcMyBh7?{LJu5pQm=&>dTeszaek6ecE-c| zpEGE7lyzmOvo^&96W6+-V!7fQtkMZyfi(0zxgw+YFht-JBap^AkZpadpHb-s=k-`; zVfCdJ(w9$?%dx2ELZIiWP|I7?dR;0#J{5Xh^4*^TfNMN*0PGVoOk;w+qCeF;Nv(ec z@){fTX+ti@kcoqf(daKx8*ic$Re9@F{B|e~5aa$T?nKb6JS9uv778=GEhk=&V5^VP z-@J*4^g?E}ymeY0|D(+d;mng=SgIC_Em%mdyT&9rrKB!iL-`1b1<^6W*!j>l>R0n> z1%SCP0=ti&aEJggJHkNmfezlEUSehEw_UxMw>ex$e%@Uy*hn8h1NsL|F7Qys&y1z- z#hx~=oUm+-$4KJB5TLe4apDF8*|LSrjG|=`=Q4AVs60>KU(f#5ylBX($=&EG%6S&! zRu2LhKrb^0FNul&T*^`8DS8*+`nHG@O`?(KkWMTJcxR@$(Ia3Bf%ix9%_8o@(lBDW zj5d6CNhf9Qda~0}E|44rHa@8MzACxw2G!G-isR_uO;^k_3ICLGQqGRzE7>|eTTk)6 zudka{rd^RES=ziRDVYi*YBizhTA?plU2@`Q!+bd}N}LujGx`SAT02P~K^FQ`Wh}2s z>{M62s}rrFKHb-q#gz+NS;v|@kL+^UV^`i2EwxtD;+P)602Z26KOP=9hpG(wjTB5^QHQ%4Hca@C6nB;6nrHtF7q zbNcjY$f@ZaHc)s{Oo;;Q;xt$Y>V2nTvwlXen z!?xV#kKtP`zBRz^`}}Zc{5lK%Ub^77t$_RC!0w9Rw?epK?sB09i$6m~>yUk!A(X{J}4>)Z{tsN+ab%smD}SRq*1A_R~~Yp2(M>23{P;0z(GDe zE9TeaO)|orOe!!TjvVR8y-0xUo?do-3+CyP=}fQlP+tTF1%;&n3RrP*7H5h~U?A7^ zWAKU&M*Lllyv<{E3Sg9}Q}E!}%=(z+|6T|vj24~sndanm4>XsS;?1%Iw_P$-NRlAc zurdiQ`T)$Ce>4HVyzmB}DH+U^<3id%?8VRya^_Wr4xSbILez!7^_r;rYnJ7g`;y-& zgwK!Jt)E;=_MXKh?lqJ^RrGoE3A0Q1%yk@I_JQ;i@4A9a(M${$udB*owm(m2hhbP` zoID_7_+vZB)H9COos757gT*lgWXwzYJ1HxVwvQI18_vZm+bR|SY|)(|sAzBvDJ!Ix zJGoZmjjBk&QjLf5cqHC(QQmTcoVVvjMUYU7(;NxY5ph*}gMUPNR+a=S+gHZM54R;K3oub*^L-Y)Xt)DAUQ_rv$s~&kR2D0*bsmND?z5-qx z3J)07g9I>?MfVB4xu@U=m@Ivo(~8vkw&h&)$mdWB>_K!Z>(xMXur7dpF>09#`{Qu0 zRQl3Iwps~<&l(d}=q#h|waK>2$fy!O97E)}fb%peiLY^qQ5hsKFgJsoJUZ?wR!WsR zxDBMn&mi`N24I2jHxl7C%F{v#!+sBTPuPXoqA@Z*uyQ(yo}wM%ZQ+aF=rq)IH$>MZ zZuY4vCRz{K?f1@x(y+&u@$rv~U8&ZD-FkHwCzksF(Mq^VYjr2R^ae~mg%yiKZyEI^ zV2q75<0wweI!3kk5Q&r3fuO>Y{N|z6Af2j2{WXn6p7{97dJ>O^t+u0sPEPw%CUTAv zQIjc1Z&DfU=x`Y}C!HHu%|?MPB+!hl+{A6L#Z8GQ@_zPt^Ga-IRG* z=z@~AqHNv!x0%dEf-=j#83O_V9^}h>ih9EnNwRfO5rK2g=f716@%|sJ!{=a zVHt*=53t5rqF(+{P$^{s$RE){7?M}5EIL>sPe5tUFM92oPI4cRtCq}A8rh?eBkYR` z7K0m0X!Z(;9DA7ZR zT$sf#Gl*|}9Ej1+Ob!l$E}yb6?OIs1gx?A+622*PKup)rxiutJARk%l{N|>ybm2Fz zjt(Z8=)mZ+=fv(rD;pO_{Y_uy@j{PxoHu;h>ibcj=PV2Lj*pxtu{HF(1`YTC)|&XW zqHHj@)A)(rzOsC)z*p^nK*KeV$q%PVnNuTwjJtk3A&>^VM>4jJ(g4FUm~@OmueU~XX534g8$VW>Hp2|!uwsS`Ku`N_vIREJOBW?f1x{~ z`wyXRYkj-_Qn(TO`@&7N`gfm%1L?0mN##I^LgDkwy@#tx(nhZ}9B77h%>){_5wJkK zS!OgXWx>0+g6~r%ra}V+r3hS$sG`)q9mf>D>2aI$y+i^E1LkK z{92AAhihS`BHq^>X*WjK^f`3y@motKG@P1Mpj+4LN}Q3qGIUTFF%9FV3nsf}Tz*}~ zXmV<4!PEER zbPD_oznfsxDjPVCgWUIaWh)1xPbQ3$`#}|~BHx42hSL3d!IjG!P_lQEAtsWM+kbLu z((_XtuyHmq@26ayS@O~6v<#1E(G1VeL?@oXWk?6Qxq%8l3fKY>tc{qV-z>ul@hImZ zQ^LEqB#)=qs~o5#pEuL)((eQ}W{rGyyDu4Q;eqqq@ifA{D_p3IR@jHZ7d%KmzSI>+ zP6o+DWn|64qWFuxf}Oo^hSmPI?0~`(}AZBsqhF=q9s0ggK@i?B*VB)7(@cEhm^&E!7u`yB8v$p ziAKgqeW-;f>D6xPhp|mKoKUuH4=+dZ3_`&6g5^cZqJKJeCK4$p$)-MtPe?(~NO0^C z%L{{&L_cmCk3P}&ejw$g5Gyx)|fe2p=pDTb$CsnoGb3xc8M-cp1VE29Dv zU}5kp$5;g&;5(a&*GM%l1N*pmaK$QfG&F|@MCL@$&Wn0UmSKE)QYQ(@QL#imDlQy4 z)~3=iWAn?nIXBXdzQcEZGO5Fme1WM`&-ZCJSD3kg#$QY*;o2qY$!tm3T;TZ_ax*%Z z1L9n0wCK$m(v|HIFdt%ocD*`{S6lJdqg)x9OR^%jW*A(%?vt{zX%B>e=z*Y#3%6h{ z-QAO>m83zHzv2L{J$9VwKZJTmcnA5{V0Q8?T$_2_Y z)mo{5p5YiU0-`An{WlY*e-)6JiLCNwlRfV=E21tWN)|G{rG?Z7aDWcybt$Of%OUig zBp4(*GhO{^o$TE4aayXxTN^-_N7nZOdz0gm8|`cz#PIci{4U6vY1GP;pK((Vm9U8x zIFrz(s{6?{i3jyTwWx4W2^j)RQ=e$bUq(t*0GA8jpUDLu8wmfFSj!cRTN&^D-I$f@ zC27-yM}>a9p;#YF`TLW9n4KjWrdP}nZ)4ZyxQnqD$L|?OR+Sl?z*V5_*@6W}CzD5R z8jiEN{$TshEUliVxG~{0#nB27)h*ahs(dRBy$Ss=Y#c8}AHc7A^q8eX%0h;8w%;Ov zVZqSVx+HI;V6_1@blm*ZtZwJh-2A-=XnIZloAY?3_og5OMkkYTHjkj*=WXXPyq3mu z!{UCokW;0mbu|SQ2Un~}g{AS6VSjQps)B@#IWbo6bpanPMc-hcG|zznD0jkI$WAN} z6-oWh7fe)mF)ND@IkOaixQW1m$x%w6MEz6)s_UxAiwRM=d97WPXfIdUS2~A)K$*+H z^9`zQtX;HGlirWs_wZz5&PG-`B2M*%$|{7}f+9tP^=jdNOvtfYdvnljDucM7&riTa zkh#)iqrNY)uxnMpjhTPcSq%et+elZ8Kq;UC$kG~eufs?1E{9ekp~E4Ra62%$P!<0! z*C&{^EMv?H>=eM;;X)ytZd0Dn#m%oH@P|vhp;bxU798d*Npg&5(r=ufZs@ZU?4(!q z6{qV*n;mwk3t=JrN`lo)F|P|4Ki`Ho(Y7=zGm}!>f7UuIB0d`{{;2mLf)g^u1 zuOfuu=(nzhuJ9C?rf4X)^94%lO{hy?GZQ=jK#$F`cyZ%<<-ieCo)Ws+$kVDQUxI4i zy=!2Gg1%5dKip=ip0QI=7@wX>3j=PsI*s#lQwIb+_eYO!ZYPLo?p99M*RDl=R!G&D z-P;=`>$*?mT2)Up2Wa9?-}i4(cZ&c_zCRiqTO<`Oen{4Jm$)jr;g zsRV>Z@Q?m7fKn?rua)^Jt(6M)R^DIH@rgr=BjL?EJA_g2ReeOTPWG+v-#J$6*q(GY z_7%8E#yK}g|K~Y&eeDG4ksLk0od7$$LnMjy3re!ns&oDd@Ke4mP!edpjXnd)pK4Oq zvqivsK3&0<%t%^(qflkbU-o!5C~?F1TzyrbsGUi6psmgTg>Om1HTAKYDqgZ}%^}ua z_&t&(0i!uXeV_xZjFVl|3SAUR|$keBxLynW5|#t%O>AfOrEYa}BlVdKK!7 z^H)DmhzR57oEv^$L`K!{)&X9u7rQLwyAmms23~C{%Bu-GmeAQO#3IF2g3AeVL~DjZ zEpDYMSyl0St!<6>2?jrQ7HmDZyh1@(F8bCIK;MC=bjTQ7yAYwzKN-N6y??wmRnr;W zqrz}=z~_0{KYX0^Y`A>6b@_TN|FEeTGWe-^ZXOAq%^oPAE`mR#rai-ZnovZL)VtCq zsizTu%D9glF;72Bq_rG#6}xGsm_n3WsajA0h5NP+%Hn(XS|yN$kN`${$aFB_MsnFp&~EP5YfkRI57NZskC#ftfYi#)?j3CErN^2Yo6Yt zmsY!#sI6KrBd$-^F1j7O-D^S*&HgPipfdxDC{QrPkddB_Cckps8BBF%#%rEZ zH;_*&xrihlu44MT>He5WI8g}F1WsN*0r={Pg{dOof8tSnF+Oku8`EJ|YL5pM$tE4X zou(%7>6#39cYs>2U!CY_Mi^aSL+j_cbMdj8#;3ml2V+^Cgh1N~TGx7Lf}lFn%UPY# zKRu*|u8wJEpV!E`s3tgX=51K7roy#BReeJL#l2y8Z$SZ|0RaAD*niKxj{yMyNdGza z{+pqLe;rK{|9i@vEhiw`$AG}IR9i;{cLNI7-n~qwMgq4Sb3EaI!ycYd6rV{zGT)Wh zY;gh@)Njn%#>~B{PA8tAXhM-1bu8^rQjqyGVb|0|DMiYm=+U)p8^LUGCY(_HwHKKT zR+S8mQ@vV`On+45-37oj(A|f$*t6`HQ7xw|fw{FVVP0CyeWFns**hRzXg%C!iWEp% z-aDfpz;Xl2XJ4E7FOf51Y_b;CV$DA2R_8uHpM~_AK-FkiY6tdwpup#!lwwht3J zk-GewwyT4IU5Fi*>kd!$$;phj+x0~mWmQGy(hlL}!Y-O4&(A%m-*Q;w5=He<=_=Qu zVmJk(T4p&+;_0(mdK1imktJf=|F-`z))wKg-#h%*F8^cy|GIhme~+NT{`>tmanLt( z(zp757(?}cUhRDa0svtA?-%}e1G;wRZcNt3-~DjM|MFfX^Y>0RR_KYzWI*V+LoHOQ zxVC^^Z6+6dk}Ida(5IKFz^kChUZftl1{)Ic)8?_gG8 z_ZFz5!feu;+oopCPsp*0eCOs*DAJ)lU+18gUgi^(zlyHzHjwHRlG!d++aihgyjYB{ z2cpHojs@SB+zPCTzq%AjXTm_R=yy$q5x;gg;S{kEuX0?c?&3G8lO)D~m#>Y#!XXL`qHF-%L`2`E<<=tGY zS%w@$&)!aBiG#Km)>j*vtwA4Q-rD0|Ld|z{A7}iNupV(pUy0)5{h)N?!$H#Zm zM^TlQq!hf#nLZJ`K9%A3rsaJ?YCgJql)M(_na?_9F%tgka;rQy-G{_AM>Uqn5&}yE zO<`b(&Hc5vo9*c-mb0Bl!$aJAxx9h%$qgfy=)X@q%gFak{SLLieE;`wFGBvOuiF0+ zZvPP#PT%2Y`G1{}_$QaYtJSP+*Vqs~FLis&`H2Q%4BPnG#Zy9iEkg`0kepT+XrN(2 z3ap8cPUI63$0vNZa3wlc;FuGv=%oH8k<)>Z8!k9s^eGMw$~No7AdRi_3EQ9!!|eSiLqC6ji2Kc0f&oXK{D% z7DyGLn>QS?p-BaVik?PsHp7ZAr`VJ16VN4`>V}&`Ey3td{a;C`Aqd%t_FgwsYFz*j zLo^F}S>zAAM@@?WEbtC?={qSPsGDNMfH4vKMi(_CP($3Rf)D>l_P9vWsZ}fsVeBpr zh(fBzd3GW>bQ>czfxe1s3_nj$ERVPm5))fNh-=yYp$FdgL1aQrNUTPJ3@dKE4$SU} z{7Obs;C%%%!?uRvLc3)GepN8fO$jCnwzt6B_V__ZG!dyF_1d^?CT@hK%G3Xm6(A^TVxCSFch^o*@BKi_{l_lX)6aiH`GmYdqH$Y^wbeM$U;PbJ zb$k-AeyCXhV021j*%FRXC5~B+1R^U+QXb`I_Dov~A!U|_T+gE+e|4WhQC-wnkRie| zg=Z=u_SzX1N9$@@T&Y&Ae^Dtnd*_X9)lU}$nmdc_E)Er?rTw`HRW#abx zyeNOD1`j^yW<(pn2-=!p1l6|J`zO?sU{tZ&Cb*nrNmC6DD$r_t({(?bUUov&-CkZc z-VZm12KM)MX;-6D%&cZ0*? z%tujUaO5ppOG2PgpfKc-$SL?$n!KWZu$E#^gK`lv*=_Kry`%lnk4R-ku#FFwTF;6GGvy+8XpY^xRGQL)ET#C*<*6iR+3Tk8GpbZQ+>w z-oy_z7bm7n+(Gn=&)m^otz>h-BC0x+HaRa+O>I7YR^Ai@gmE$t>z+E1g%S`PL*VLI z^6bEsQPA~^)!;6wzz_)6a^=Uh(%4iWGE|xf7x2ez;GXny01!^aors|~N8bd@cK#}Bg%Tb1m|1)JTL=zTRHECSvN5TF?mF}AL?EB#R< zlM4^ai~5&lCe*I97Sl|kcJr}m2vYYOq5UlLB~b#{#PIKb+AIcnsGzdY_Ut3$%2X!} zz^y=0r<8m?LOXx$<{j@PAa7p%yrA*H2ve5j=eOu-Y2sXcbdI-wU?8BRmvuBSU54A3 zXcBUjSovwv#aLuqb>IZt?AhK&TwwnF#s}v*D(S-8of|Dy7=Iy@F0Qy^gS%O&a-0J| zFBW>g2)SKjrJdU{zHsQh!oJB0^9B+@eow5_ZpqaS`3~Jjxb}txB=|6`hB|+PjKg?P zQmJYz2Yk0R?oM#AYapvAiUdfWX!j5TW;8as^S+(o0k~v49Cp~B*8^LH%N^NP@DZbY z{F7lFtfuU@uXyC?>t!rhp&r0S{?8csA#qZ1K7d-^p+^~-(;ur(Z;L$}4976rRqt)g z<>lu>K!;8ULwk+bzP1Tu_ucch2_4UtzRn&?_P-_2;S_mwE5+nu{0tS~&^Z;VIFl&C ziJNAxhr3R>w2gibJOu@@$?2Nnp8G|0;YL4Jn@AD7;-78CzOU4t;(smxS-|;Z_@i?6 z#62N20Ib{iiLy8W1fnL+z2DmjR?7*f-9a^_dWj7Zr}>IiKYJ6#TAIb9A=IcR+FrjZ z#u8<0E@}5>q|XFYhktNG_!@WxraK8fE7rNvmkaHA4~PhI!6IQ@Hl{lAbvslO+I6H4+w*BB6drfPqK zLXyTcQzHpULL*g#ut2i0EceYTC-40ZZ{di+DNO?W@-`(mPXxM(oEPQvb$#-7J>uTx zoTy0aNg7k27VQsqtZNzxIB@c2l5|fXL$%%N`$e%CU>}bnIs4cFuSqG$I>LlhA64!! z?*(1(xlKOTci(GYk#GdLFI?9^kOZjxQ)fjI_a}}i3lP;E>lCMnSRP8iKBEzjsT=}K z8BRugLr{8H?Tnk|S`JQk=n+b$Yb8oDQ0Q$4U`7_UDG4& zFCRhdg~qb)*W;cJxX!~HgD+xA=58vgg5nH%p7S92D5|jI0?k97&2CPZ!Nh83QdBh` z9C$w2Yt|;|?dv*GO^)lmJv!>B<^Zxx)3S+|UiM|#L%h|)gSKB0Cz1zgnDBgQD4#{d zmGLuBckelMdAzYJ7BUSH`ev>SE?<^CgWlMkv9=a76)P`wRYtai*gzN;7=w}42Re4m z(F_7^mragXPNws=A!?OFtt!^ro46SKog@gzo*0!~oY@ku4r zAR1<=bL#V-+Qf4raeRZ_VuW}4y!`yHscPI5^b7xt*CIUgygfcxxPRR}-if$9d^ouH zx_9vW(eYsdB~mUyKSod1?{^;gVzP?pUhu0rbKdS-p%jkQtb40qO~D=CvIKj898E>F0W+*Eq}SS;xaG)fuYO6*aehc5{Ow(Y`$NGTvdPZ#hMKDH zx?nEdg|EJ$*1c(-|kEIHlb_T9O^$>3se-z;=cx#aMT9I${RUBaXQQ;788Y zuW4tDO@!zODJ#B`Wpu{=jK^bNM2;ezKFVi5;loQ8mUWTPw(yC8z}}ZK`fWEvmT-@; zNTg^bUg{WY3To*yIDhNMC**-l{ULK^FY)ll_ivT8V3*H-3|VqQ;ROQ*0Qd`Re-A@h zC;$N3e+`C)4#xUU#{UI?(ti)YYL$Ob?iyWtWqC0xBhtqZ{WvS%5skcK6%?5kZwQ#c z5{k&WO@4)#x%saSG06r}(-W{NAe#90w$Q1L>*Le{J#}11J7kIU5_Qofo;?Narn{_B zTG>Bv3QO+p^D&@v1vF(|7*$hgv-K3{9mx&5pldR<3iT4~O~;)A8p__R#l;kC&_m^@ zKKXf^s;I^|2n-H5De}eJWU;>JpkLzgaZY%+-C`(MW$Sfe#Y&w%)`M+j6-()Q`N|j= z?xNnt_ugi(<5psV(7Wo0H?$E;;&||ACfX^OdCUo?3Y)YYAq+}Nvsr4)U!xUi7F?zxc=r%fW9YRpN-)Yh6c3zRU^av|58^rrd?lM-?qwD!G&7na@U>1RMR9}0D zi;AzqxCIm0Vi#M35TQf)VF$f@c61T+?x25%dCUy4mvU0P!?6>2)0)XD^|c^-ZH*Z; zS)*Jj#@k;7uMln<2h3wHaXm%p)gRmP$J{2GxLQPXnH~0_ZOzD;#ADDR)xx9JCEvin zhrUt4=?>Ju7lIiWF@%*5Q(_XpKC!^>DfC)_UA6@zD-=v!6MDf{>`Idatl0e#^+&(K zq`k{BuJDALOb5;(1Z({Ba4BX7wGCYMtEv%W5eF?#QKS3qYXXHCTd7G>)pE2Mdl^FUViaYDitQNv3UE7Y|0@P%k?C!Q&Ns+^*|#vTtl|H8#ub>X%LQ`B-=)c+uT z2}85eOfIC^bbOoq`E`L}^UvPAHlJ$v(D7IKaY*R&CU@l_2q?Te*k$5z#t?10kzjAN z`x{5j>P^zK079C(?0dEQ4^tm@l{&On6|bG`j)BEeML4$!v*G6$L-k0Y3U7d}o1n#X zxccB1xg@4i%#8jEPO?bjTBy&N#!}E(GWbk$`aeTE3k$yYRi-y4KkumawC^<>?C6~$ z-0R>dG3fOia6eCf`oNJdebVndAZ~AQ#htUSAfNOwxxABKEVDhFILP5|c2mh=NXL%L zE(L~5PBk_yvr}>vAMXDy-=Pb2ye~k>DVKJws^eb4j)Cd6sS~o~YsZT*pt4j6*;ykC z@?D15bbvkj3X+}Vd5P_(`J5K&GUO<7ka9H@Cg{2Jnb+ek3V?1&L*~JVD6D z*SFpazVHJ6iw599W72?v008`zW&S?@5PfGS%Ktw9{F5@DH==J}wzciI@ngzH29*Ul1Q<_J zBF-#ePwtWz2lKu8@61p!POm!B_Y$V|_ziZa*AOgAxQ z)2Th<>SQ*Hba4v0(pQC&KUbAL)IeI4dv7h1Pql44x|jz(SUxANatlm%HV7=#s5=eK zTV9>N8jbbvzeTI}C|hFRRYY9|xgG#cYO~g|)ttSn?ZbVLn;z|3j|^LPErOOCtw()8bznZJDT4=?>)ArS5V z_7by$k)6JSll#9|1N^%+asTO>#^$ERHq8II^uynK`=9?^;{R!Bk-sebr-7&c&Hw}e z1i=4Uzij@FY3hH?fRLH3m9e9x`~SYm1F}WV&de(a!j22tCGzq(0bi3Z!j+ZfED6i(^w>=3QZ$MU{v}m98@^< z`qT(3O0Xv1d%PvJ!5k>jbwzc`grYBZpFMWaBC9u$H_QZDLUtYdFmc$WhPgZ!I`4eT-S>Aqh4r^TEd}x?OkF?y1v@+%f0G zbySH=Kf@TMy9B&%$xUXZhM}5*9%bOS!a!S1bg?%a5~UF8Gam3Ksy~y4H*?J9W%>gF z9_&UD=MpMsVc)GMo9ec1B5lW}2 zxPZ-^TTUfot9j&-e`Lw=#ck!9IK#r*#)+*Hy$Q5e=_FO<)u32OZJkq>D1d#fT%8ag zPtQSD`2J%}dufyCDr^2K%x0*pMnRxvuZFtd)xeiCE-^phQ~ve+*xxZ%rQtgl|nB zdn*Hec7tEBs6tfQU<(Q=)njfmMWfO5(dmX_&2tSO9+MK>K(ucO%bjgUmpPtRgWDx> za1P}N$GY}sJ^Kh_q^HQ+dHW65mN2>)xcGrX4GQbTm}n_$p?HRI*ixF&>p-efMR#E_ zfyF&J>8mCX#KZ`6QM5vMs`NevhdtQWphy+8+QZmv$afUUyM#U(^hx6c@t78&brIVv z9_T$BrK3!Wygb3u$ZC$@t8NIh?$qc_Vu%Ebv*`PcCpRFSnOICUJv2P2_j3^ILOb59 zdR116VuN&;`b?vP1v*!9hZ+R+OrI#e>EtI~4$e7bH}8&DaWUn0yl7Cf=@sQif${Zj z)4XGVEaf&)|ci5ZxUjkE4&&9*iC1{k;z-3kgBLaG3EtM`Rh=p%IUoi$DU^=T9wFAB4T zt+#6Qf3QoYvnsq6R+om2eshN=}jN@EZII{a+_<04xZ2vzpzx2V{Ne$ z8B4t8Kk(Bw%bx2tOPw&egsT)njbAdxNOksWYbG>AYLu62k)G(BCD}ynYlptaD$T0% z{0y1fIcC~qm8MIC({ispj8Nriv#sPmu+z=N_@V#E?EPro@*}(R`?ao)^a^xZ#vojnO;C{+dlH%QWVPoLR&8hLtK_fKi_z z3WJ{88*MvUSsy5(e{b}4f5_09o0Fq6?Xz7>E zvZWRDs-xkWT;8UOF34hNG7b3lG`nrQZ`n0XB~@OBW^Q(X>-~-c!u=ceU%>EL3pFbF z2F73E|M$Qc{MWO);`bBK(O6#Le}YG};+oAG1B~~RD#FE>M`H*tT%RA^L^IGx1{rP$ zARyFAfniO9(edn9r%w_Nxkw9;=S=ke4xu{<$ojASe8T8%PkL>DweBP~Gg*Ov5*chf zhH3^*PJch`T4R1TCE3-y zk}Vt6$h!jzkB;_iU2U&i8QU(jP^`nA9UgrT826Fh8FLwKQ#{+^2ALfotA15d#2 z&17Oai=A^`%KL7W;HC?YGs-wt_ZmKMLGnMPtgkp}sXVKIu&;=M0pyF|3nZ-Tg?Er9 z+{Do`9CM4Cj0d#2T?#40Y`1RC=i{;{Mz0uPSh3rh*i8XYJ^3=#Ldi)*<%Mw_?(?rv zrIiM!7Cxih^ao(wgX z-Y;&=$;;ti93$nC@WFpfb~ad_;@HhNpECkwab#mmLdoLEp& zii42&^&2*ItoX5l@O>#)9=B8u<2h?t*t{g(Vu$vjsW@l_I;6 zX-9^XYmXM(=w6TVJTmFxs!q5o(hm&?KZrS{qWSh_m0@ztjL2iilL2XVCCJRjDTQ7c zHRxfA>*8j2edQSn-huZP9~t(c7D0k&r~`Ix1_ry4ZvO0wm21jF^{x*BU#cD^;dgxx${2E-2vRW4}gVzghLUum@z>R2m?$s z$K%4sMboY#(#-3i;=O>-YjVUWbSoW{$j?t7n$pXX6)Swb%RZ~Ojq2*Ipg9tRZrGzA zoquq&Vd!ndepr8iYUnj?3|0pX5$W2g(bvPh_1QontC{r@n;C}$#zZU#>ft}80Pp^6 zxt<%UIk&No&tXuLflMlZv|+|Wd(ndqA$FeSq3IQ~C*HM#I35Tf?{2L~KA3J76A$Sw z<$?6$8QHudk^-k0dWqAeABfUq0H_lmP1^`+6fWrdESuU}0)IL81)zYtS#dWo@xrs> zwY9#uI) zsa2Ckc(K_1+_!}RZ6Cp7=}4nwL>D@X9GT}BOHeD^Dq?m>{gFummyC%UYMI31EE^m| z7xCuferuW1`;asN37u{&2D9z;0WJKGW3UXLoTgELcD|q=r2u#mC^-%ZO|CYAksA)8 zc2)AMiK9yIJ;9AvN`V?-EIcX89GQT!(Qjw7n8Y5J{SaHbD}kjXKUJM;dyL?LQB!v+ zbO*vGyGi_m4EZ#NIOWw5dkvJlx1!c@x7+P(mt{ODxfM#9Bte#kU{CZgTO)Nrw$9>EC!#I!+E z0ZDj&Abuv;fV?&mpaKw}WELu(W!7Ep$y;SO4H!<*ZiW3I$C&-8xiY62QbmFR9(wdh z7V7=gO<+FwJT`uG+5YKt)}&}wt<6Z1JjVL8ad)J{dK5Uya86Z=d(WImpC3>Ky=Two zqQY}?+kBu+uTyd~mEe*$;vJ1$3reGfttxmDO;+YK^M}w4N*}Z+GB}Zky(*jwOMnlA zv~NQxNe5?6>A7g8b>a;2db*&)lB{`KwmeS@-Hj}(9CbHZ@LprNIvKyJBU#^z%hy_u zcZ$ejNlD93+_w>G28bTt*pXub=)bB?eANeMg_|*zVRu0wpbWaN3t_P^FMaT7SCCg4 zO99o^K8PRr5F(|e{dj>=Lc{BCww${>L0?5OZqnoAF7Pk+9fsrk$7~%!rabt#uQk~b za8j;{jwNeUGio!8TPvks-Z(33=8F`Y4f9)Eot5S1p~|9l z&OO+UcSnV7N<6%WymMs8CloV8c2lh56O?@!y0bi{y!aj^#-hoH0EZ`X5=1>TOnNW! zOpr7*SH$-FY}B_=-|TDrc><9BH{dXNA`5iV1es?mLZTg3fD>K!KzKJ(2e=dnG;zC- zt**|Uq&@bpS|~8g#}nR`EGqOQLfgcEh-n#M&lrAr09g$eK`6*_b(Ui>3}8)UbYfoQ|&RM4o{8 zRNVADmf9~2-6%F;e(Aa$(-deaHvqi`aR&dOtq`;U219U#mh0}-eDyOOM=hR5)6)YM z(D&!?q!VP#>bWDX%B0B-FBoSq19YTJ(RfS609dQfjbORDpVtpiZyCKv_ylOpTfUNg z=(^)dXvAFyY3PN}a*s#V!JWCVexw~yqEM95f2ew^CL%XPvSdD!MsdwK%trfTt!qTw ztsL3zwn0R%^c7j#G90-?gOs`mb56KlN--0UtCzDS38>>d0jmI=ij}t$ZqvqpTS+hN z*V=8X^Gbp`M|q4Jk3!a=J|@jSd`0I}mV>{5+mHN6Ax941^^DYXD3|7z$;Lq~5X)`; zYkE|`!zH6kQS*dDrl)Pv+2baX9=eH|o3FVy!UODK>W5~VIq!SE5yMEsQk(#}GVgqm zZZ1kw*5y!Qf#fHHWcld+7P8p~qc^={_E$!dI#|NY_>Y|CVDq#d`b5ZwcnPL#QK&@T z6Zh`^SfUn_VO5Eq++}(BECQfO;j3ei0x84x(#aV5XAauP86!F}cmU5L z)in0jE*WNjfpL;?kzcn5BSJJ0?pS8`i^xTXoaI#~3$-nJU?JzbOSq!pip(o+A`F!a z23)eTet{~5IXV5MgV1JNL1bQfSfSr-1q+^{L5l+pphKq2MejBubR}JTH*N{z9{1{pnWXxk>uPuz1jOneGUvNYd$dWWx-&2kd<-6^p8rj3)f}4(^#koiU(q#+9O^9R7GYxjFDM|b?LL? zg@Y2%b@mFG(7o;1vKO*9;NK(2Z;=!+UH z2yl*Gp53ZCF~QZp=DOd!!<|cGy?~~HQ<9R{LuI<_SLw#uKX6{S!L_T?UDu~`oM+v* zhr#)L2M^l-N|mIK9YnA!J!F+OAd zqP!1+gn%>Pxmf%K^Z};71JaHGfF1H%tA&oA)>iCnq6uJPwaJjYR__D1j!n2)UWyc z_HP-K!+A&;#CBy)MKK#Jqdf)d1Ra(46DibK-QOD4WF5F+F_+OL9oAXpg0*by4Y z(_k}D){X}V2BEyHD_HnqFHjHd(6S((={#{s>bzq}d<(M^VP5IX+ue+KPmBb-*9#zd zeg=h(>N!u;fr1mT;N_JF4_u=XK(MhZIOi9)K_sz8Hq7EppZP7(WnA5bc$u+A1#+j? zuVEPtq4g8-OqDGzMP58+5?R{NCp@Qf($_0^eZS^SbVDlD6bs%n%rTqN3?_uTS=k%# zMFB4e00a-T(tR0jkx1ZOLdA~Ub%GI_c<|tf^@8iu?0Bk+g*(-u58GAXWzp!9jkl`Y|@|M5ApV7XAG9N%cfxlU_)E8I+6(>9=F}j zc2Y+MoFZTc8*(6rVMv$Dk|1T-z&nZfzc_n`Ak6}1Tf5X{+pg-eZQHhO+qT_h+qP{R zZ`tayZhv?3PtG6bo-^FB2RmX9G9%Z@Tu)Wb1|G#%u`Xm)l+@^A@Z>?2Ep?`wP=<>%3&>l551>~{t zR2z$oSDjU}yXbdxP)~s+$UMk%8(=tai9zmF0;u7@9!MYZ(Yir@@|O&MM=^>aR$z#u z!O3?A!(TFFdR4CBXXPU%__WBdoI{7kKX3s76{a>ZTq-a8DCMU6Ipe4HTrg`@O3r-v0NFWsu-dhqK33guSZ&{UwVnD9tz~Jxi`AlGFLD>}M z;~Pj&76f(*P$c2eSgiL#Wnmi#lIU8+u6bYayZDru@@n`G#jMH@ib+Kc9)|Di67p>J ze|L2mrhZmr1X0S)MtKx88-)_)^VEB>;SU1Us0V1?^r+L`oB$V;up-HSg5e} zoi>Nc%6jy!E3myKX_yzp%#vZ(!Ij_4K5239eI{;qf5K(K_A;caD zK51UOb6SSHy!N4tD8t_%=0EHGVsb07Jv|J_dHSIUxWp0*-?=$0DmnhTH3v}JwYuxz^224QCHm-cY6wj~$7O~O?>UxUx)6A(KzmadWFDhsIca=jqMf2eo;t_pvdcT2t6megD+Hl_)va2fsBtW4tDqG}?8U{XPP+5@Q zmIlcWxK9^Jq)Gn1Sg(*MQx=;Vtv`w`CbmEZUmG)K-UK`r=t znZk$H*P~u!!!_bB`5#@vy!i58j^h$1BZfZ%>d&Y&f9ET)=8c`!|GvHgF@x>3GicQ? zk7l3Yn+-<(%;S~7&4d)bW;dEvuq+8$4I#>-G*H~Z%NLU@d$|Mz7V;G^TjIS4pqE`? z*IRdUZvpK{v)_D6a67(SkDBE`xZHXPyu|q?(6Rf05XGwYw&k>a^x#9fq}`*v|E#FF z1eW!vp%nNizb+witg}(JbLfBcCXzON8P6!N`gf7P+<+)R*a)-;6(Ys5EGXuiCIo%# zrNLDlsF{znmXAf*yM&O)w_7`kjcw{)l^$QJB8j>}Oxg&d)t^CG8;*5Cv5QI)uoX~} zf23rth8U{}JPW31p?LFd38qfX&t2SXwM>j$0#xv40tBNxx6OsWBT7Q^5&VKMaa=yy z?5D~h2Skn5@|Va$+AI;}h9Wy#g`ie&9Q2*2o1TMbT=qc1FDXp~Vk&822!!Jnn4SEX zNZj=ZD8n*ypk_1GySOS040;}wp4g)W;M!#d==LAR5uY?9&BZuTG^QxwazlWG%?ebN zimxyX7-@?l!rV>g@)S0bRx1Ayvs_$=9f67O9KU4}?wOWM0By)A9C#>1S}EaCzs~*^ zaxn{4g67lsqG}ZAn)x((`6`{8U$#$A;2>q)yp^YNH^R^R*>MVb69o!)6k*1%Se=vD zN)K(P)z&47{o@;yB~mG!5{*qFfzNba0oa!(RN`t3v>z8UiTiKPml}NCtN@mhuU>A# ze?*ga+W%$tnXu2!qf6fx|1nl_g&@;(?+&c$XjS|HeW*{D6kO4|z>&8X8Y2nePQ}6w z{;N6xnW2ea+o@^XX|(N<9rV${m+XGKrw*Td(Kq}py)(emLU=OuAsi(fP~yg7a#sc4 zV`}|_6>m)H@6bo$Zj>&N@x;N0TNu)Tan&Hd!z#k6#tVI8=tC_yt$G>#ybh%c59dtD zn@ICJ9Y3vi=t55_ZL0&PBh5a5vvS80E6~D=E|B5@4CERmVs^F>{ClJI7uUVm=)QAl z)is;%$+C*D?APNYK!rUx7RrY6&V1tyrUliNTIS6m`Hdzun~qS){VteYFB!KRsdfYC=R7~)k*ZgWk7S1#tMoaN=_wIF=SP)dvFxH zifveLiohC}mQ*O0YDL(^#Ykmu5!^gpku+Kzu*>O)YHPHB--X)x#l@r2eNk&g@0z|5 zwH4|o?jNI8KxQN7D^t>_XRD9qcxI*BdYKU2DJ||(RO_l11Qh_F+M<0~k`9vYl_Y@9Mf9Z7E04}Z07WYCu6H@fOY|dyX zS|oQ(CIwo#%qXbZmHkeKviwytrKTB^5G^~*i3SbWqkeji6q5Tid6Gzz_W4&^5wBJ! z@E`KZy=!%;hn8Sgmy1LZ%G>38?k1tyvNbE_7i@MVJ$Alkl_mY*Z7q6_cCe%2XO{J3 z+TUIvc_i{wKNWz*pMMgQrSahj!5=pI+OVln2tPA~7JhRtSj9s;I5D0hMVjxL-l9i<$Ah2r0J)3?a#ru; z4%3~^jx5S6pOFvzEx7mut!kYKx!h;%UW+?4_R+alh(^-Tf+AT4X4R|ZIhnzrjj1o> z&riw1Rd=l!-eljYIW_8&qCkOoNX=PxmKGT2*-q$AE>U(XF~;7(=ma24f0u8LsKDWZ_hR3sda%^TBLIpQjUa2GnEJs!*5r(}|-n0}Ipl3I9UsNcr$4?qYCxLez!n znTg=Y*Rfq(kTl2?BU{5KZh$I%o}_PG;v|$IBNlhH1mR^cvjdA;hH* z67C6RpwZo>^SSTY%|5Hgw{|Rq0#o0o76TZb(qp2R_6`gUb5<{ z|Dcir0qX^M>@KPkW=BIdZ(!0V8A|PZEVffz&iGxh?Rg`quQjAn3F;Qy7^u~Os?hz` zwE{~7dP-iJIOm`}S#h22IdPRSvObH=Equ}ve_B@*{eJPRk zfI%RUP3RURXjDx-Z4IFkU6aUP7T!wN-e2+ztR@T`cZCrWz|{J z@WmwPxXN^d_n^3X#@09X5TA#ht1oY^0k5oLwx+0+ds2fJCD&7T?qi}&dmclr_@eo~ z-0+Dq-$cV+tbKw6uKFvQQRMF+K)Y6+JP}R5|4GawPI&={;icjbraQE zeyjz|!UkVkD-k__V(K0_Us|VFE|*sjUYCEJp*Kpon3~c8Ed|rb?h=mOHh&)0b)&o7 z$#z$3X@uQty3(cc7V?7fwR^PQ&AxHG&YC`OmP@e`knyr*go5e(?;QBKMZL(5PpYq; zX<%N`4ClzTnD%s#!LbxeQyOBEW(svGC>Ls_ic4i{m0CRVJCZ|yz4E^iTS$jssH{1@*i(|=EKOW z4jTyQKgQU9?QL&~0|BxAZ!EL_7sqTw$6J|1Jn1J-Ua`wNoD30pKLRe?W82Wcykou} z3?UDXu^~#Wij>vLb?QrCzvJ!ZWoo+8Pa4!X-hB|fqKk@}dM`6ow65&NT(6ouw+_vZ zK8Hf_Kt$I|8P6r9$j6>bS}n`3@^MEu^=xF(9XS@GXgpG{)r*%Eio^%58HI8z&x+?3 zz}UlykWP;@XPeWua`63)aFJ8w`$V@Qm@h8Jr8cI_b0*gW@pJtv@zmw_LPg-f>rSZU zkySsA^;0~97GkXA&an=KJdaav5;P$=kmp*7G&W7Y+^Br&d8qTdO;<^^GIY#}v& z2kOTI2HRGqoz1O&b&6{(Oj-u*+!1Pd!RZ}`M({O)fzf4@@*Slg^JfPBp=MBwZI&_~ zL`Rk*akem=R}Xe5Az1-I$yt`K-+^S&zbK!&O!?U{c7sGzv~5wv^huwWN^~3DiNU9N z9s~*i13|PiUpfidyq_{EXb9O-d;mn&hoyKzF|RJ(!CoBBnpBxzgaF;{uMPFN;dABJ zf@?w)oABK-j&X|L`J0-q%q^N}&pMiFyR= z5)T(~IEoSfr73!c;$n9+I@46wJ=6v}3&3?B1{u~z{F0zIKr!ml&Ik`h>4v=ZM2eBd z!?t3B!COl_^d>dWV&x+N-@=>L25Lruywt%vA|!V&NhoNT19HKN<^7{A+~|4 z`n6OWf!W+O+r|LY7sBwWlU@vqW{B`y3623268k#=Afs>8bJxgOi*i}Z^>|ocG)iPF zf|BE!5|SUos_DvL4tT1)4DO)Uk4xXmuCb`G?%cXh) z-O6**HC-CtHJQAg2oo$U{vW0}0$NSM7cs{L1S7$+iv;htn({fNje}6}bTR7HNSw(S zUA+#NH_Ry#^C4+Wc7+;GGDZWuI1Y+3D;8~osF532JvUxq=*!V7m&7N=!2zZZUyR;zOx4nbV=q+q``ehMao98Z*>vfKDZ|~%;t@AGy1(vxYkMiCYIv$87Q_>B zPidODok8gJj-qwKBhgo|$`YRlO3v{Ve|gcR)rZoSiLlzxp!)(Di_-(-Hd)mKW#%Mc zbs{KLh!%|i69gjIf0ytSQI*Pus|QfV3eq%8P6Y19Ey#&JIw=bCA-d(F)Ao(8GJy8Q z%QgFMKO|ua9U*YM$=RNN%hxrYjyCB>Sl_aWpbS}YFs67A$3yWMUL*xqeWQ19WJw{( zEd-wu#CycRFNVH1lkwfN>5Q09aF)Z#J0UOz49xxh`_b}($9&K8mtC&9rwwI~drm)V zizUR|pO5Ogk?88;|f^K(aX-Qeqe6~bfDI!Q?u&nF2q>Q<mNiWj4^5p`fuI6ew4J6T-*Roka? zXR%;7Z;Y3Ke&QHC#ApGKulW|W9+?#2Uknr2lZ3v=3S^jUX>HZY4$yMo^Nxo5qc%}w zZ1L%vPvrQ;8zQ0?B-uP{D>EIK+(IEtx_=*$OD7JO%gBgjAEkz-K^c-=l3<-5`dqa_O9aE_cH+T$t2U?1*6Y33`R7+z^6y$|4K~H(sojx>J5_`=mZ8z!T}({i*s= z2ku(}c5b5xR)|0=-Kl=tkTt%^3$NEU7Kp|Fy7bK9F@wJ$l9eLvXnJ&b#EHPrf0Zy@ za8!7>Au_xlD6qxv*@%gL9BDiee7BC0>{*#~J;fQtt%%EQh7wO5O-AVV;VQW+lZsMj zC+mKj`T#^Dhl#U3p1S{p(e^B0sjxb7qNC_IE>P_^K|e)`4?hlyS6_|To){Q4qEy`J zk%4iiDo;u`3Ztt$K$TW4Sq`5!b2JQ9*p=&lkB z5W;rJGnfKq^qLt-?aF8~BO4HfcA-*iMnB)gYGj2I&hRLU5qp#SO2i;2qc0TK^iDd< z-cUxzgb<=3F*)HD6m8kCF(+c^@`@D1egg&HN^&7jzkY5ktxb6I&G4zA#_s_J0nA+_ zF5iL0Rcq7B!rVX6fB2L<*h^T(OkS13?sL+EcFtF31c{d0_`*p(?ay4R8`ItNBMQpH zOb6L`{p=fKWH>7g4{Oq#Vre&sKK&mCS=c&>8c1@QhX<{W&?-vC*v#f;p4&& zwG8B80zD_g-MtY^B62$aMDN))ra1{ag8Qb`jliFLDkDnI2 zUY?UnSt^eL+85vZL)8w09t5{8B)jmMbnK4W4#LV{Ai#L)=_-8G-VUywZyt^RWE|S}?FRsJONO_hfKbe& z>Kcj&D%uT621li58bmwb^M0k6Rhex+zF>X;~=f<8F-PzII z-9@OguMJmUdr7~gv)2}?11B)tks(h(Xi)i(W$C}KS+<8L2}+{;koq1m)i*|cU1sEt ztIUdQ1j2xI-AKT|^*lK{nxTOGvNH2rwg6NE6ED;e2rnJD{9C!12@|#en-ET(AYhfH zNz2A5*>+G}4$n_)M>sYx9LLhD0`S#z*C_^%GFiy7Z|Yp8$xz9SLc03LYJlvi!R~T& z_E$SCxF1$O&i{B~QNFEkbRvSBi$c;0@4C_)%76Is>89JC_PT)}1!E^HLSD(pQ`UBv z2D|13Gt5O3f@vy4+~{-zWuLmi%dPOX=P{Q!t~?}^n$ASn=n5chKpM>U`&tXPRnlSA z*%+ZD2!~0yRKSiS48x|Wn|qJV^+-mC0$lQ{!`I=rN`rWq*~H69!c{Qy_7pv7!u}xE zM0L51qFHz0vL^SzuRlc@7pEm9hKabh$4rJRR54_YUCGZ#YK;j!barkXup3RvulSi2 z2|^~R4RpYD1=nCR$3vAeT;yC4P~LKID0Ow|ZBTs2ABK_Kt{T|Gyjxj;rdqlmOt;u1 zoozmF;UgdMYITX`wO$Kf>e9p`dgYWG%x!Vk*9&Y?pm(AxDwy6Y>Cls`g7~ou`UPlS z(>N)iRVdKY4whIF5)1s8T5y6cv4Gu&Ge`y6@wzWdi_11G%6LI)=aWOd&GWVu(4lKU;wRwQ!&V zseJPBNs70MGdYf*@?2u^(N+4m&&h#_FsDNsQcP1T+P zmj(IMK-%woO*@jm&Y?i87uQMj!$m(H(@Aj#{>4Ldp)a@W*YJ0d0j9m#!WsuCc%LVv zOCd@ol-Y;0^x323Sq|#J4342XzsFyX0F0%>?-I7S;~>TNGE8|<7NYQv5M&gW^t}*v z%;$X0r6a4@__fE($m3E=Ey)W*m;|!QQMl|VOeSu=5$M?&ikd-foF`3Ykmm*}>TrzM z)r_Dmvg|pdk;?u0u>mKg}VagLM)ksd% zqFb73#QU4|n|o_t-M4%N?+E{6n_nfWG+AyQ9Hej1ApYWhpI{qmVF zxg1(FkjlxcKWd*KBZ2``{ygS1znG&rYM*3-=QrKS{pZ=tBSO>LUy{NftAYYKXu6ir zy5Ak+h7i}!=TIt>RDbO}yBFGmgN2YNF16?6fzJ0&GPw8UqCum?!N%Bu7yoK=HE`G( zo?gFGg@=b$c#2blVn9IbhgQPoyI^68-DEE!!gIu|V+qwFl)Qfh8II}*ck>&-_-}&m#(ek5*Z!2# zVmK5{(0u7ejW1F1TK9>eL}4!5`Ji4q3QyDG^w4jOTxh0NzCw7C+gA$ib$EFB6p{+Q$YH;~l zM2u&V8VYaJ3z8sqDt`WSiRKTGegorvQr%NbuC*Zsx@Ldi4c?hY1tgf{K>C!92h{d0 zUp_buNL#&esquD%66&+*q*dsE0Z>GL^B=P1oOt@Hp35Z8jW;Sjq33+0XhGol@BcFY zUfy@>d)TJe8C++W+n%tn(x;bF+wIw9sGlDOcBQ=jjw|1oXNpIIWiamMis{_ z5t*4lW-ZGoXH7xR7HUk(W4Ed`#^BOEXDuo4pAe>}#~&2{M#dTDx_mkZGTPN9p-l1} zn=+-xvhLlZJk@SZzY$o#LQ&_chKS(2iJ|FaXS{WWf52u3#9wfOB)t5w>=??JKekzIq$&S!1CwNWrtzbsG-jrHZ~P4|2WMNLA?{j# zp=|(nO#KR7m}8Q<)nrj%v&Qy{qDB4gSn@$+xFUi6=g$d#18nG@;L^SOB0YhVm!q2i z-fXg+M75Q{C(aI(S=&6qFJwJbDFWpK(=_**o0TrLW3QsP^M@(tR*zG5LEw?bg!)rm=yvEfJ6>`D0i!qj5 zpEV)FfoPZ*v_q@VHLDzit^dUmo;K$0$vEMFy;yGsXgc}p8}DIoRa-JX%JSs&IL^}^ zP)i(x;;+Kh`=1u9(^!Pipg4APYxTW!{&JJl4ooj64lqTHOVoZ|5g71vZL>mFvi-)n zROD*Gc3)TuW>T6-+Y=k2G)f*Bd-rpQ1GDND8*KX~TN*aF%@KxY}Zxiq}T?Ngsdy zquds7|IT4Y0|NSwKKoxQw_ylCK)nAuaG%h7rg_Fl|1J-yB}H#47D z2o$Z=^QCF}cwv1?;`{RXJc*TUELVk>>{v9_G4JFc{XI8PuBuWgm5M;c+e`zklBMdJ zxl^MV3m`6WEuo+;U%X^eG&`lE20W0^x^z_Acuilt6iYuYUuLCo&7f-<0oKt+N(xh{ z(lvFfQq)TP#+7I;UL0cye$ji@5;OsFk#&o)v{gqfDlUK#@w)p}67^gRkaL9Wbyvm< z;((LzM%~{7Me*Q5Ynwzi5=>J?ML4q?;;$V<-$7uA$vv}aRXy8bK!j`)=LH3v&avxz z1A~AW68fTpHjk8Ys?#gW;kvG1#l#8qg*6tLYE?5wJX;PnRK_&y$PApa%BL|K>Lb#l z7P_ra_jfHYFPL3m1=xFCG>Oi{!JW$5l@kKVRf`cR?4b8GF0>Sd;bfG7MCukmg2E!D z=r6?SJhlX`so#~6P%Mn6eTJGylC1Nhzp$iGt z^7p_U9jl6{_p&1kO3a#s>`0=HAJ9BB+y|o!K0u&rympY?+hIpAkn$69=6WIT?(;d2 zC!!L`Ee=1Kk#Kf2L*ZKh#E&K#V)D`7S|c~JG_~E1^yf9eZqW2{3jUh7Sm*1ETMQ1+ zAm)z~(IXgx!BGxuFvXa%M1$yj{Y~28MIC5$k#aST-U^6p(4lb{iN`|15bDu#@4Pr* zN)BY@h>^gWEJ?p42}FB=83oS!T}&XKf6KNKP9WHAP(K<#8!XMF_WSi`W4Gd(5rJ9T zHP?g%5HfDcC6fadlhcg=(C8mmCt_iR@j(*_X#2^ByBv^Q%$m+Q0acn(^{cM6wv&<% zLD>r}CPy`FT!bmMZJ3+eRcX#Q-@*QG1o2>l3u9muR@e#SH>sIUl;nydW1G&UaUWGy zsF6H%qn2`iol2;g2hQkDfCEH}C{OIwJLxc*H83RE-M(#?A;i;K(rKeqXeAsZPjWG4 zxPjDH@xe3;+$L$5m(>`>+>)=&H+QE5L^X#weOs%wXw^AOFD<_uOQxG)lR4t2oCj4# z42pQdX7a3ZPoE;6n5=M+7QELZ?aCuYtBWA_o0b|McImy^-qB^wq7_hzFM0p-SN^|bxu3%Zn6GWLvsU=dyEVj zm&nPVM=kA>d$sFm1|mT2kYsA!e1@TILQ@NrtAqk`r>%Dnw#`9#M{aI=qPgz~j*frC!M z(*_QSV=pUy`2=J41f95MPg{1p4z70SIq9}u`=(px8=B^#_FIK>pg(4OZhixZST5SN zx2)PZQ<#3w-ZG(DG$1YiLWjq2*7M)FJppp6rjQyHR!g=t9efPeoA&m%o+LNdtauMJ zWLqrZJ82zjtoMTaY@%hqHEJI5`R8WiJ|y1C*d>zo=Hl;1VVZ_&xu|_cYo-RrvufyH zznmIBB#yG_*ic;GT`GCL$|wCDn6mzH<*acV|GpJ?_#tbBbj=L zB37LcKj~-J+vDaA7{IV^{Q)t4NA<71^{nfod_IZLTD|O|TeWDj*rptt?!C1_04mS@`~nlX_2k3XO|)Hq!>EfgQ z{=a4;5%|v@#Xr>Pe;U*O|H&cM|9i`lQT<=u0j~d}cd-ADz9VVp_AgP^RMOVL=D%-> z*V>o=7uIppXS4}ubgG)H^WkWhtlwBZf1f88yt>g11OcI4U~_IfS|W*e`{>)dBZ_Q% za#*z48d|X+`Evvt&fMpjP|A&$L8l4ke4^NYniawb=8W0!>q(YyzhQ)_x8RdLyW0bp zQMZN{S@|j>l(gI0m5TvE=<`e&8RQ-vb&J;Kg!lKrI~{8Cs3gw&&dr|wb5{@Dr`T7( z$Q=RzjG3byfM89&S-o2qjb@m83|3Xdgx=%pAzTh&k9_grBK9xY9ev$^wlPdUlYq%+ zW{89=OankFArwx`pFU`bSo`W!Wa1{8g9!ivkd2IlRz=X~`Fmja80Cs{e2FqWW`Npf z3V%fmw*2y~vL5h=gLYErjX46)ZYMx~5`w3TI*yx3%IMAl!bYTVi&Sg}!wG@IUlFH` z2Ja4(2^nb)J$SEN)SRrSAu;fdHU>7h)T*9hW_;5N9Y^iO%%5Mc;unrhOyV6wzPvB7 zp7Y@*xwZK;7c68Qz6Klbu>P{098UTI22Rzg9=q>X27m6t-dRMD!}G;3gMwIKYAe$rbd!{~Y*G5L5LtH@D*{FukxWCOK12=_aJX^xz}XiZeUPhH z%XcZY7mCm?_yxC!6ILyL{drqsiLtnJhDk}%i~q*Vi@92QG5@`e?s$NAG*4lCNU__N2xpFP!8}O;p}k#)c~7_gv^8v@Ernk61ugDx>FfEV zt73?<*P@HPg`3^lR6N^Z>vWXqHoK14Y ze6;mU4d;f*eeUBYc`CMc)ry3d)UseLEKZU-G@MZvaKPLD6k&!~Rnr{0s$F?6EyYuj z%uCpG#(Er>_ck0~CarS7bf+_6yj5yuHV4OB?6wWcZvI<*E~tMCv>-iWh9@ePlO+j~ z7cTuAKAa+o<)6WbKqP7%IEpYvSW%$Za!_t%80BGi^!J)-dznT#Nb(O;_^~-m1#jjpMsu>Wn_18_2yW$Ke0O>!lgbvEjZKN`5x$o^V zqsQOn0clHe0(Do;qS^rGAWp}6r6!2B;6@ITBHpLuR1m1k0xq~`5Y;z!ObL~SUYkp6 zTXmytRl{vn{niOboj@i9=gR@9P?J^W#0>G{>XLZcuU3P=y7ZBPubP6MXJL}J);;!; zodG+`HX3-A61|)aLAX>-25)iiOfr%!sO}rN4Q^OF*u;S7=C0x^5Qo1GQJ$|9HMj1Q zW2!M;UCbA2Oc%G4<$LYT-?cGWX|2pfr6s9M@8qV_`w+CoY58Yi(ob#dx6;RF}X{9X;+P0IZ39=rZ2fHzjS4OZ7nt7Eu5 z6;!O|l?^5Yg7ZS{(C%lPft1YI2D?Le~xjMWlw0B&Y%X-f7kI;C<*Va!PLSUk)<# zWZ>N|$QoH5Xb#qNmKyw3S9QVG=IN;LK!p)#@6@}6ZvAtLZXHgq^by@?#{(ai!KhMHJfH0vLbyxjEdbj8obE3%~wBD~L`go+^Xf>4QA9R)wEDB-1AO~Y9 zDB>ByiW-|KSEOOBDALtH8oWHRb$Fl2%jNwu>&MQ=+=%A%Fo;L4tUj$)mnHeY!|(ku z;Kz^E(<(nl&j|bd{2e>+TQ!)X56HaeV!;>=RAgGD`5} zRGFg84iX@z@BoBBc{_P%kV40!YiCyi$J_hv@4B(baG5KnL5fD?_z@wy3Y5vL@t|%( zfP4cdd_UX+e)JwF(`J1!QA;jBYEnMI$wE@oRxYh@y?T{EjARycAG3+%o~3+E4tY`4 zAr@=$5gs}OtLs7C@G4TAaY#{pNUDG!;&r%4CKU;qff{^ou|j5MN(FcJH`3V(fPtwN zE*rD#peTKvx;jim%xm^%NW7ybcDP3Y>sZ-(a;uO=>QPb5IjVtGtANdL)(#1DyMkC^ z6&F^cIx|Wt#9PLFJsl4kiu~-zi0f-r4=XWzKRo(V4Dg{767Pqo?5VE?)gv`;Z?5tW z3I@g@J#H<)m_vn@egj3k^d7(wg`0^4X?c4RD(7kL;+yAXKP{TB>Rl8fh5Sh^@x;iarq-O z<+N(e_{tNhh=?0K)0A~Dhx=(gSe+d=H)rGH@5YB#;O4`I*Mp_I zi8&*lK5qMdV8n6&Lm8rzX}F)@uR5tLrOgeysRO=h2#76^TcFCm7AaRkr#REWxe4Rb zryx7ly+UR=0YZci_yO7LnhJbP0!1qPAthDeyH;@2)oC_=UGBD&6>6LW8_>lJvnLn| z@3hZ_f@YUKq49JM*`?W`8i}2itTS(G*G*19(i=>BT(YR4JvX`T8cD*~cJ;AOO9>Ae zG$M{QHY|)H#-3fErNc?KAX;M3{x2g$1RTMNr&w)Q7se| z>J}xXwd*flZSMySoWc|1eciUyh4&6#Ym3im#V^Hbgmrp44-GiS(|%R~)O-r7B0>^^ zAe|IYqS8F9xQu`QG)_DtE7IaO<85~^S;vX{b>Qr&29Z`;i!zWZ|Iqo~gYxZbI;33? zV$pVxt~0@)O|V9apKQqcN{`c3vy)YPUStTPlq|hN2-|@~j_WY{#4OuinbAwNlEB4o8=ld7^sQQR^=LaFUDEz{uloOy z*%m6bPsjc-NB%Q0{MRzu{lB;WvspsqKXeLPOFKh5m;Zj2==uMmQ3V2pVu;)P@LN=6-WdZW_t;Kd&eiyXt!Q9YqSDEk?al~I?vsY!+>DUctE4j zAzJ7#*b2z*XUQvi^$XmcPxBOf!K9a!88B!0j!#=5N{g2gp;PvEN}tt3aMQbH5t$ox1zwk;lOBD@}-=6aIctHRTd=LMQnw za50K3)#Ml(4^T8PlW2BH(gHjm%6$!m8n}H4qeJ5l(8ep2LP`^K{>xSR0~Lyn)L}I- zM9b5FTFiv_xNL!M25x)_i2Q?PD3!?bs%?tM2t~ybvqXrL5tzvsEr>`uvf8`26yO8i zti8`Y%gvX_m{iT~ueTRpS1Z1ze`9yUzZ*ZAm*Z|ic#mxxX986UBermg6==Smdzb`B zlj(0dtVVIRQ-f(nY!{kI$JFQ0*}PKdW+EGKn+_gWi-3~SEvGb+G7UMzl(pv(ZVblwlyn1-Y8iCUhZ_tQ(WT9;%)GeqJq{(L@5*W52KSX&;2xdy8&{gWO_wkN)BFBGyU~|^~R?D!1_jS~p zjl)|Mey?tO&Ue0l)>8eu=DO)e(zx>zUd=nQa;>1E@TA$)+B1tIy83ZTY~34I!4k=v zdR6*KF&nG_-5tlv8*}YtUnbpGI@O07vTM-!r%)VH-33_LRMP6#xNF29-_J5F4F&0$ z|E;#zh<8n~hF~3>B>Cb{<+Hm=iS=znEvrlVU61kP>U_^mHlCpSgUlxliqXAR+{YH@ z&9%wf$YeBA*jMeKV^A{6D|w@1AwY((hO?pXt_G2LhP$jrSb;@(nF1|7as-@zAzdZx zX*77CAb9ca8y>vnvgOR_VJW=T7`ur@)OH)-6n>BZ6!bksR?ofFS{)cTobuksNVjpK zvE_@i%Uo!H*YDeVWb?Ra-+iqrH57-9(lX450_eU|c`q4Q71v2{m?)3gzVDRjFAy3CWa`7Ur-lZy{w*vlBOR|La34cPfyNbu}l?$&cc`7(q%aQY@QzX{lKbDY$(O03X#*LKs1? zq%>nfI&V(E{w9?g7urS@W!v4=yI(9~(YFDew$-rpUcU4#Ih8C9;4ItA>CVh1(ACMo z&&ko1|K9w7&I$y^)+ahtLQa{64|lTexXoz)bU_MutC4av@H&RxW}7zuj~y*7uNF5 zvGU{*hOFpt8I|Gu7!*->F8}sW58?ZkaCv3k->1UKx2kX`w*;eE?%xjgqh#%gHw7fY zoqA|Qj=)~UPoB2X4~Snae7Ic#+_X#}L$4e$ z(`uky^6v=uCJk&7A;t3d(vGlSbG4$y`-J8d3!!o-JinEyBg}n>nR02FeE*==qnG2Z z%hn=(NKB{FOzLDp+X15-QK8E6wZ9JF3&G&`?(Cdx#I^?~r&0%QQ8+?jFK=h+2dexs zPOE}lRg*L{SlTJ?{saB!9JzmxEGJ+G12{ zJ+DvUEZtQq|03{}C!JH3pq5`!HaRd-fMx?$7IKX77@rocWC|Gq3=9#g3nUG|q_8m{ zb{Qwu0ip#FB!E`f2BBHj&GLau6Q7Mrx(g<_UO0 z3T2TVCeDDlmYH9qXhncyl-6Nj#wJ# z7lKhlm(cd9=_llnAo;^zbPl`)rzHq)4!r>yuE(PHg}|Q!ihSS{5Vn@>$(5QUM~pM1 z^}wS60;hpRB_Pm(!WsKMuA=#He=T;E|CYEas^JU!95uL9&dS$FAWU4Am4*=l~S1X4JKk}x5yNya3TPVINa}x z5-`d8YI#!50gfN=;ZqV=4FMc>=(v_($oj<*%g@@w8e-;OjdI(K?2y~Lr`O`#6@IYH zrrb{}8)IXk&nV&11W1`Ef0z9ADvbp2R6;+45*VT$9$abU0_4 zhYp9hgZV0Jw-oN6<*!ii0hx8xU$aa#LonY3RFyJY?238$ns-jdO|2^;U?1c=fEc#a z#|JH3as?c;DEk$bgXFCXUxCNX@+OV-pM(gDTlKJ{2+Joe>gj*AW?#D&9-gZwr$(CPxootwr$(C zZQDF;+nD}m?&D0vz4KZT6&3lAu`743y*|hSPgTK2kA1NnE&kvtZ~bUA;`|c>%-$Lv zwmvEq;+acTB?VWQIWM5`aB9g6EBD)MIUoQQP>^8Q_`lSib*85Mh&LVqjb%zaavp6N zO@@s6gAn%zJ!|IQk&(Sr=(z*E@&Ry!Henrfo=$+aIO>UQAeLr@9bv{^OSW5A0`DO@ z{`6U4vQA~~SH^iz?W;~7!ChdZwbOBl%At8zwV`YTMlQ}F)jqeFLu$cc$skUFdGqZ{ zo->MKI}W+vQ7tB8zyG+WSx9LVXi!;Zg;i{Fe-LuWg4Nq#<1w7V>g+iqm>=(7jir;% zL6ma}Or3#z(|%<{#wkK6avYzRwPYJvK<)-Vd7i}e^@QID6Tth4MpgTxQQvci#0@|8 zY%RvV_Iw^7=^=#;^S9@|WvvW)n*&W@jh8;eb&P>NFA_M8R;0t#MA0#Z?UU&4Yv1_8 z0cm)3X9y^!Jji>P6fI!WrfNu^2*U1vg+$S;%N7;kYD|3X?CebVy(1)YWwYqOnnSa< zq~~J)M!An@>HzHvNv1Q5n`s`CchN%6nK9tO3_iwlT4*+*bq3wBjVdLIuRz=aM*w}3 z!Mon)Cu4C{fG-YW8Tmk(%K$oN!YIFN7~CT;t0wh+w1Y@0LZ^!}4lPP-S+u^l-)G$4 zXl+N22BA1mhRJ5$nSY6VgiYN=+fubK%{A%ql;#PwVtC)$ml7xv2rxygQU78@d|Nr; z)}6oVXSmIdpnz$uEY2!1CbfJpQsdAsY@_!NiVSD$%fvo-f5DvsxRpvxj>QQS4^rxl zV}sN_`P_VKsl+f?3Xo=rBi8hDS7zTSk9;5v&#k``A3!+y(i(78mNC@dav2+-^#2&E zx$K?Nw#qPIz-f?fWRSuRL!!2bRSq@6hTL((`P5;Z-3pb1VFf#~QF2|d2pTMo8CtjO zI61wcCt9mDw`p)M4)!hh%&+!p$At~EDm&pluG%zB=Oivw-bQzY3AkS7e4%avv$n9l z`RCP)iJrwaGNC+~qrVu<4-fi*&k_?xmA_kZVX8o7aF!$j>sbZU@ZL*aa-h=!uboot zftfif+6{WJai^zurL)C|`8+U3Td?6@EO3`+BS(Dvd;lE|J(NE|KXF<+(3 z!iAOnctXbvI%SByAJ3Q-g=*`T>zwI|MXto8D^bGqLR9v*Gp`1++hp`piPs%iG5l7-P=u1zNP z=Hlhb=;`)ymaJ^5hzDdBg@c8yd}?VJ5%>E4GuRJ{9z($cEO~C3d<-t|iCIlPm8>5+ zJf~X~1thw$Ve);iYkois=)Rze>Xo@OL!&J^pq_Qd3WP|rXDv`jU&H(W8G<2{6@U8P zX53j+S}+c2Rlf4uyTm)5##;P-9k*D0ve@jV3x-^3Kq7#H6Y{sa&`B}v2Bto28yu%k~{ zWQk^!ed^KaTNNPiMMca;VH<~)Tk9=)T1{3{6G=`xZ9nxCQ{yaY!QdA3$-o&u^{!AP zY!um->)M=4d6|uW1v_l13TT2t4a9%8+&?J3WA7^g?L^LH74ML43__^K0lLx#{YMSz zKaS%LpP);@67noGPY{HOFY4e*Zu5gI<(U`Hx&p*KaBtDm#nr*Zn}egPm!qR2yVK<@ zyy~@^t@F4pu&N3{uTV^p8PYLf!`h&v8dByA3Z_eO^hC{yhdm_0N4Jkxi0-D!*_lsg zM}*_HU=2I!rc0=yaiiAR3(Ga~Zv}KZZ4QLLcXS~^6@N2K#oOiQ>!c^R1=p+Ax`RK} z4hF0nzB{&eVJFbD5DNN}>u>}rcViVU>+e@Du3oI!zud4#WTgjGMk}SAD@uX6>DI8iw z5PC!jQi# z&a~xh*!qNRnLy07ZsgmNbK*`esz;uy36*Ky zhxNgfKF?+70U6Un@mH#Uhfa&(SqSVIfS5cwKFdcZxn$4Ns-`P1Gj&au+umhWXs}Yu zZeBh7Y#=^Z(&61H-+b9*Lt{zkpjcR@4Tp7#Z1s4#{GYOwdXk=KqBT3qDrcT>ajpyE zm3-K%=n-WIu-$Wrmt=Ao=yKA#^Ig%dh4F^jWEHyF z^96xDLv_vE6$q9qo&hsAEnMcc@w|{a|wvcCYXfLiihR2D5eOprCVs4rt_VKT)U4c&)-b^acp+U75 zAQkvs5W>O=R#M3)j;4aim3<)91&1ZrPs9sBfR)imaN>ffK5vu8{tVJZ72GfIDdI2AIu&$wPn{YC(kq@5Ovq5`b5+#tRM%tj=b8 zGgMXq7Yr@VKL`oqED3bY;1C<=y6q!H1K>4qp8?Cm!#Ewi@&BeboN|QpsNcSi|BK=NnqLWcIPn zLrwo;SoTK#0sv<^E}=e_7kobM7;j$NTpr z8-j)7N#=|os{Ez6JAauO-1^u1qF)6ab$%uCIs1L=?|ks5SO?Bgc{#CPV@t~5-x<96 zxMYg)JnDu4L{fb zHQ+mS#m!$!{G+XQ)qLlyNr9IDD9F<_G@pN@jc1w^i0Y*`rkBklzTdOFdfR?(jnC&< zMSxI?L<1pd^2svp_*@&A+ixW2sJ{;}3j)4BKlY4#ufk;oJoO^72ArW(%`9CcAbW=voO6sL4 zf&mw)VyDM`2l-R)BrupUXKs~!`#NJ4HeCOTZ^Ty3dX76m1qf}z zS-nkz1@BN(u)rFGK#eU-amE@sC1GxT1u{T{0noj*l|j-arOY-tUI=d?iJ;V=Tx4YD9@;)}smDCaRa1eu)#`h# zYVG+!JkF|pS^$2UrHQHL5*w#?=8IIU*uhZ&Ze=$LmF5kQT&BT=pl1hS6`2;0R<_s& z!RUTH!Yh~-yenV6yeAh8fDCq$u{}B_U>`Pr{FZraQMQ1WaIXu#*x1E1KAvoI9E7M* z*4~BHb5A4INBTACYuQO4{rmu}G%#MdK%3pif8=`b_pet3kelz?0>17e>J}H&Ft28Y zo1+{1gEX%ud~;FI4lKMFhAM(;$0kcy%{4iBAGQ;yz3686d41P5j|XDu z1E?dfmO|>pOoISV=1|J<@UNiBQtjv9?ov4&HsfM|a({|xRcpcEMW5!!ssQw->VjuS z-h^aohOZz(29!ic%DjcSCQxx3CivYe>RN`uTNN?O;j#mtw9#&>tws2a64+S9?S`*KRa>zgtv5qsD)K2KqqCPdnIr_JyU z9wA%24lsVWAR;|V$W8{2P2fPMh~+l8gmx2f*X8WQF1_L(Xthi*b=c=V0vydux&DNUPWsZw23j?Hq9yuDA2KO{z^zqwA1m7<+ClUxC z7+}@Ek^Z#cmq(pyL?YSy5M zU548p)bUAJV|bfl^<}*7!i+6nD`Se(nS_XpLSh)A;<{s3=s9P4?3N?;vQ)U68^xTF z9++)e`MZaEFW-F^^#eMK^ZK%-f+Ty66t!M)C&c2JCGo>(*|O3r0WGr4d!yP-4vz17 z>Qk*%s?*8dzl^^NTU++8tNhhD6udwu5@(%AnAG{*p_nD#;k0QgUz|Nnji@DCOM zK;ZxT2H?L>?f)llaYN!i5$BAn666FdP081MNk!zqnRTvyoSP)kHRL9@375-m@zx1s zsy`pRjV;ItES%X(68`^1?YAyEl-aVer}wncl+{};bh6v-wn&x)OA(B-kwrpTF916v z232XvrBA536dwSO66z0g(KB_gHDHNa$ZYDw%Tcm#T9seU2$d?j2va9kKd|Xu93;q? z^-j0sHHSY*(OYM=2rHJD7dAB0L7^^^F{^Wp6tqP_c~Q7YA~{wsLThEPtXL&$7dBJv z04rV~mSjy;fHkr(KDM~~<3vCZtQ$5lsMAzfNXX`=R=}pu;1WsgMR{L_NdFVpK(J32 z@u+SHyb%;A!$tZFAwjnTv;s|m0Ra5gOHn38$2NJTRUB-Zn%!Rpd=DFhSzRb($|ZI0 znPcr-btDJGRvNyr5*BRHq!x87SqSjb9a5}UXbjNtXxe}yXp1o>^xIDW7N&|ORMLjQApqRA=g9{eMRM^7} z{Zm5^aZ!GgJ>id`aDyWx=xyt9J(*}IA#BTn;3IHt;6P_P1Tpp?8BQu>L&djY2w$oWY9!F>OS&O zUPnYHv&LgCK=t+{gX-(87FzOgV+Zikgn0FhQ$GQ z!-7;3ui|Z9*pdd6av$d`xk}O8Yc`-9J;egsNyLr{F>@SLL{xU{sd=x?{-7ghdwb;v zDYPeG1y)mm;n$M;CO|<8U1Hc~{SZ=O)%mahokf*G5Ew8>{igGH|ebS`gL5^2x=Iv|^J z8Q=OBQawD%#<_EiQqEn=$!xbKiK+X>2>&`lMLCW1i!6MWF1-wp3n-_^I8bFB=|pQk zj{1$^U84{8cu@oxwR{ z_8{ehsgqF!Vlr^9osEh%qqEb2inOE2u1xt#?8NqOo+WydO&{;a7FLdv`^0 z>o@e@Z&qtNi`19Oe7>EEGUXX>Zd}hcvxSF|t?-WA&e35r`@j#EsxnB}Pot&rRylJF zB&TZI*NToZFS(u8ddlPY&NUDkH)Gw>Y#Sfbd(7N+J7OL#n;figKY!aNrOE|8Tew%}FI{ks9|88?S@x)DDYBz)V%c!~foEsVce?rA`V3$7ksU&x zm&K3t|GB4@fu4rO_@(s!Q;YuJls^6cs7e_+7@PlpqWY$+002Dy^N;-(udlDH{NEU2 zyTbmk-DG=r{Xy*lJzcLkSaVo;TBu6Hvq%+A0hPU}>ojCQNo;8!Paq$c>}dJ<@Wz)^ zL?P|nFyh#wllVmFeM$Tb%gTyth0aODjK%bSQB6W6$&QES`x7oqg!J%M;AZeD6;LWK z*`HF$L4`rHWvcjGbS#OZ%+cGsT z^m-Kf2#+_4c(7Y_W5h?Q?lqB+75@Qf4?YOkp5+f)N{}Vi-cAIsD3{PgkaQwCai~jz?v=wDR~nSHmE%yp%V8y);J?4my+;AFnvre@Bq@54a22`EM{X% z??-L!UnAI38e3|DR_cdOnly(}WNLy5_#r-!=$Ya_)hFyIE@XfUw%g!DDKWLcA&2kA zluGw$sTb0R2}E6g@1({ff{ASxBnX^acj%U#E1+{{F?FBlq!s!SIaM_w;gm6SY5xd(c1HvSgRqq8_ z^Y2BbO<)B49G{y02vp=A2_uWr$_Q-1NqHz`-W#~S?+%bD>knd|VifY+03r_V;Bdel zm2sS5ltRkghlIp)oLTRYge(Zesv2rdWP+9f0GO<3t&-+n&Y} zM~C!H@{JTL!JL4$Kkb-hwq%o*;Y7e@A%_^ujDw0SWmlAsF-EC@7y>sqOuko)%u0f8 z&#|b}sIgwx;z25+-#sy-FsQhMKi@txA85(V9N!|xL7Wl=@LoQuG^Y(Fu{wHfcV+)( z?v9iv00L9YI!}b4gIkLV-5JiErVwUQ&EzWjYU1RDuU=PscbWj1OwSEYKM+dUO0yi2 zU{);=LqeIyAunUDA&MEKo#*aZ((p}}8@M4P!67)}pzS`jTfWz8$k9bxUno5{lMrL7 z8UhG%vSlI;)86COWC^sMKv)g4iwoER2a{wrmTuzK2OJ@dCOxDN0n}6=Q8q;C!E9^M z7?IxL32JoepFdb5h+zrGU?PErz;`WvBx#NK%n2nYVe1#Lh=?tAFWU{W966O`jClIjW7eK`h%tlN(u)bL(n#YMSR z6BUmx`_(T(0%K#3HFWy=u{o6EtCDanp&3Ao5@fBn?hcOL-VYCF^al4YCa)YS{BT}A zJ^PN3fyby>1obrwVG|iWG5;!HQPM6P%QW`10J+j>#IGHh+OYtIA=&1z0mfo>HSBGI z_a^BusghY*JRzRTqj~v2KH8(bJpi7^u2k6u*ebY<;i5TmY7jGp+(*e?RmbYzBNEVx z#&0ZByg@qy&xrPK-Thuk%TcHpN0F4YxI#O~m9fgh%jEBI)z z=q5Qyoy3V^E$SRlCeWaQVLE|3 zj6(fx&%Dl>+YAK@1S`nE7z?La!X9Cu&>(sQg=<^^6=hz)*+1L8EEkgURpVX$Q-D9R zDU;(|g0;hECdsaZc(^dsN0vgLYI%%6*?;r$z?$}|lLplCu!>_3l7~4hQJo-hIrOYh zkpe1#N!N6VZZo$DrZ|4Y~;oTtEzjPjzF|YqtZrrNB zAp=p)){#F>R38Fisfw`fH2M zN!&4NTzrDT_QmZWo+0b6m|x{IH&J;_p=qAw(NkAxe$EDe1 z%zZG&cv(n-VU|9+I9w#@fC!~kmqg!tyD>Un0t;>rBSXn@{Ew&8Az_sx0phLyhG$$JP{r0 zjv$xmB9bUDIY!0j!bbpVSLGyq(LAiyJPu`>j%5v6CEfs?BS5(4& znLVeBFS7uEvh=aTIw?GGhOoE zHAE#qI$)e$s(8g3WQ6Z^9ahNSt&E9lMk0#BeIzs>)Y!yXm5I!YM_c1k)moDFC8#K$ z0oW>t0-k2%~|cb1iD`| zv}U(mhv9-5o%=b?+#yG-WpQ9bcHNdIzJ8XyXS)NK`oK(xeIeA7f(s?ZiTZ?0gf$w>4QRr^p39XQ< z{$$1;@O?Ox#yv&lB?4%C-?hg><(Xdew|^*F~gkJjB{0 zzb$wq$s1V{_Mx6C&@{u2CJTp}d~{*F-o=3?2d9#J^nP4e-6p&`|5=aOnxA~F^elT(rQ0(2(av<1f*$G|Sv{Wbw#vCh>d9(3kNgkGzwLjj zz~EO`nM|+Fm~&Q5-fL1%b<0VDIGCf&h31ZA{C}A&Ho$zE>2hwgC~S~HE2hUV)hLLC zwRGs$FNqkhS=aw!)ikCa4({L){{e3D7gYQuK=Gb!5`Z9=<)=!-ZRJv zE`c%B1(Olm;EONuAhMnyDEa%OVZP%Rl@Y;q1Qo3T0Zfe+P(obKgjug(ujm64=s{ye zqBtxxthQJ-Iv_S)tugkDH>F*2r&Um0VW*{ezF|%~VZma(^4BK}*kmJ_wb~l7D|;Q; z_zmLw{Mu#*@iHIz*>%vJ$BJSp;Ga-0ySA)=`H&+Ye>Z zT-_8Ndq#%8ZZ)7=%X>D1;@0Sp*2N8740Y36CMV+s;h9;AgL$-jHDId?%k=st7rS;J zM4k=KUk%x6*E}t{*%@?lK77A!? zNOYZN&@*j!%cOBcE>9z7}BMIfCGd_)C%ya#L zKUD8U*oe#>%Ns$R&-vWyetMWp??YdZuiFXTJvmeFEZG>Lry$48E#7^#^U;^#uRBHa zG34xhGkU)opIy2sYy)BdlLKoj~vs#W8Y%VR{w44nfJ{VSv;fnqqdBpQ7oVZCf)sGXJV}pE^P=Icto6x zc~Y#FB)KX=dpn!24s`IRXID{G*ITjyvayqSAF!q4;`6#vs~Lf5-Kc@gESUVy!(T#YjA-C5&lX^x_ga7M^H;?bj%t&{;mlAQ--9qpC*h@4>N>L&^q4l=hLUtLx;!hm76_gfEnK= z)bZd6BuGzElCaosV%&Z*V$1>M$nZaJOp0qlQF@XZ4_BaGd50zw45#*8naIM-0jU^iidK$1COez3ElD~Ur4ax|d)TO8pvXmN? znCKNzQG?I;Qy&h1(doZE13&58bltX0&U@fN}n-Kt=co$Rox2q=o zsXJfk7LjJwo~zH!?=2ACL(Uk41K|ci@@4CRmolRYckh?3@FrR5Y^RGK9F|mvhYvx(FSlkn$Kq`wRT4|Wf-gFg! zmxRG3X&-1B3V;N&mx4u>qPANY0&oD1ilP#zPr}H}6AIbrNF55OHX@V%D3TcfW)dL% z9$JGb*py_#SeWROv>?D(Kmv(577i33LZ6g>tOM^#{!HqzF<8Pe)|yZ-%u2ZsVkt4^ zQFAgI1!zt`fHVTI155#~=WZDT2xdB=PM8CLuKL8_xT~MpX;7q8x(_r$Dsp;%PCAKQ z`w4%Sxe>(4B4SJUJpu%a7)o2YtDxYNkaOk!13+=BLMu`^Tc3R)R_1MtcMq)jKqg1` z2%8w%qLjcsfV~-rH);Z%ANo2F-k_LhNjg<9VJ1{7m|tBmP`=#5#1>%@;FLvG!zm$5 zX%f6EX$e!R%bXbf61=f_p|S=#fT$e6#F+0Jj>#tK4Iny#Jac1F;-p?K`-S~9CC>wY z@72?!Dh?2&IDp*n9tjQLulo)b7C-QLd5la9CylijiVv`+R5-0{?OWUz%yaQ(|2r{-eET&SC0b^jQ_LN;n2fuX8U5o`fX$QOVvW|2&fYczLgf8^hwT*nAMEoUyc$I6<^98@iE?{8TIvneP~&C;sBvn5>#g%F)=urzbjNgB0Gq33ABk)_ByC&NJps z?5_K~#>Q=)4+Rcs{5DGhB}JDf){pdn|d%^Je+e3A6| z^g(UZu(l)1bN+`rr-d6Qr(6@7i26_oc-H0Tfv|_NDwnz5I7(>?@z=P!SwOX~7O;HwK1@L)z=`cA+fNTPi3Ez@%O;E`UMit> zkOv z4!;aO1NOSM?`mV9LJtTn`zTJTy%!Ip%KX55E+6{8oRTJ5`; z(AqgjuEe~IWVU!Ob!p=uD(eif3LtA{$Ec{$7y!NszvxrN$~F?5JhdqjBTu;plc&rW z-o6*h-2gR4aD5;Kmew(ks1f1HEcRwDy*}H35gPQl^9l^_5QMh@!hd!WL@f;!pO5Cv zf^)`wDu=(xNFCLib0Jn*CA>U_iMKx2U?wV1s7%_KPRa%-RxJ?P8U{Kc5Nn%Ggt|f= zQ_sI|<|MKTH}&+?)gU&xaQ%X^{{*^ldWzM^q)IFw=Z}5ZLDZHxHQDIr6|)9UGSXd z;C(}3C`Xu`g<~dQG64H{Lb13n2~kmN=0?Tg%1w9q9>QZhA?&WgThrAh6G#X1a5B)& zz7T;VMx`hOx^1^1oU~ALkELk1!Cs6uVL_}s4H_n6(IdyWvaGdAI(J2)lLvRK$@$v6XTB*A*;?O}R^COkhvAuvowXH5zhvn1${7N$YQ_$CQ zYRm$sclR>HJjA`dQ1jPe^rPsf%G3DtW<vrfp{!6N!6u6T+O96ZkDN*!pd2;*46U zk505h7%Ay2wrGT|NL-sAojE-dG~+#k@e)7Ai@1CwmfbzV5FOy0KqSbqR+J6?u-rZA~JA;sD+c0^1k1QV5nf5@|s`PNL(PRYkRIRAg-Jq3JR4tIB z&M}(nInsuzrgaIkc?DTR!}o?qOD;53w9nD8=9uIL4d`>}b0kNBER%5}(%lWaRN0yE z!Obsw118;2wZBVQp5PbLBGS4Z(dm|TBu0Pe3eVt_YLf$P2+2|*4xTtqEQ=VXKzzT7 zG@>sgF~s&p(+GgL$WGCRDeEBGo1ZMu?zQSWO-MBym+k<7-MYWOzw_U$apSIGvY1i~ z=NAb{#2jFP_%o)KK^*;wH+i(zb%3ysG^&AcjqOgv@1~xtt`rOo<}knudGJi#8FgdO zMAIw{{-HM37&(cZ;bLTSJ2AcoLmPeOEl=A?R3oyh0kx4h=wh@j$zLbjYJfEYW6{!g zbElW%#wgODxZeuUIdGXyD;Sy|JBBuywVhez;Ia%OkTyx_!A+QTq3Yi%z(DQVM&6~O za8z412$|`Ow5VYyrNvAO6i*_h- zDQDgJjGUCq+%XFt#2jRp;c9Y39aDkuBa%Vp#t_v30N00eo|{^8_ci6SjLcDKp^#w9 zN`j?MZ=HLcft|&p`lb0SM!t)Uh`KB-fH7I#2?w>t49^8vMr$4bnLvOYIYAO_tMZne zNqI_SsOj=8A%1srwFiHdQ|b8yLWBh*lK|MuL0vFPGgPAk5Y^R-SU3>f76) zEuj2a!SlJ;vPllsx^FKLnwdO;4-M(Aup=gWSbz5rRcB-T{gcyC(EkFZN)O~#Dia~%-vEQv>K&Z)#NiU(YuW?4n$w3p6`kkIpL&!0WJ)P8((JNwp<%q53gK5TBO5=?Vmu5&A-_H{W%ZT} zAlS>K#J=(nRz4xM@|keV5gMiKQmBnc{TRjbsMUrBZ5rQS2X+PpkgOb@N<)iZ@g|Ht zG~_USb0hR5jYb5XYUvA31W-2sYXz{S!x4PPu~Zt?pdR` zuru=Aqxf8zgpCbAsKQx{pEekm76)O)J;`^w2)N-8Q{AR5=&W&SwPg+E*7goiXKGY) z%n+`xy-ZLZfdfLZfSKU0&dSjL+rq_AQBb(r-7QpMZn2^{?xId@DHra^K>OR&2zdO5 zX=+IfgZJSQOa8mC-w?Ay7i09mvbNrfkKK5^Ey8T;q^Mb3>C_#M~oOPL!zeP^%R zjM$!*3U_UqSOEyJYk6@brS7TKk#ug*eG;9TEk036s4KN2j(ggb)h_k(Dv z0nX;^0w-`?&6pW4*Rd7R$#wiw_nwByEnIqKd` z|Iy7Rk9T6_*(vYC+kUQjjmz;t!1A-RLwq@<|0CLEb+HEcFmwGypKm>g)Qh1%#xNa~ zLvH@P3!I7iS2|GT=Mv&m`xhaQeW`|vyGefa@!Sl+r{Z{CjJkUe3`7JS@bMwJ2^d5ZCz*mFJ{ZPqTIhejEGjJ1vqFN ze&v({>Vi|x3wqK9#MKIw@Y_x}Jvo5l^RRqXRb!nHv^8-ua(@6tB2i^oX4bJx2p|za z!nmJcj*6CXBah^$zI&M8e|wu>A3lA`Ty;Xa-Yjgyi#((v zy$6YIc;QO^o$-4jT4-o$)U(q}5nPdv?#CvXh6ZNkYd_3TgR2u%F6wzMk!ZO(>i5yD znLcdps=xj_hc~j1m)=7J$z4iEz#tyJj;^RGO97hQPt>E3H;(ab3U*{aB?VUM;bWnZ z+bCXQ)a&_o(ct3WO6jbg;HV&FV@=)Z9ks`p1%w|huM@uSnd%OkMgB&YB*5}_bsfVE zA2uGfd{GtX3fLcIslIe&$`-p}FBUUN$O$QC_>!wDZNE)E0qCSn@lPDPPGU9}t6rIX z=zj+`8WiZy@?h@r6Sbfm7NKx`E1~~5J5*6AQ6s|CE50}Zv;5mmF8ElM{bd=)`;mkg$98m>Jyihi7PpgyO!q<9 zhd?QW(JDuzbwMF#!zG>BXQV0q7uV~~jpHzuTf_6~)MAwCjfg2`!P7P~$;%>?$ytPM z&~w3nxowouT>62DkSLif+$6b5F9tMpZFLDS>%`95)V*af^HrChD%3$H9XwguksEZK z_X5r7Z%pIqbq zYPJ~K*8J;9~ZL;N}lMGnf2m~52oOyYlZfpvG9rf!4U?# zt;Q`lCy``yeJr9N0s8LD8D&?&keO)I!Ju}xQLYac6OU$xt^l-vBGsPYlf_t6r9;f~ zH{YpbGZ;b{ewP}+XFswx!X!x&iLQEQLliM(du(XC-G3>BCL&*1dGCO(`cxNu)myl~ z^3FLL;}mE{uT)S2+n{+4#7;M|wxhHhFI4;px)9E;Q4ZVnp!NnxFBadGQcqgyTZ^k+ zPZye{vIZ32>A8DQ3+r*u+>eUo;l3_#kP1;eUM9L-r9w~~j&{SY3uQMTJ;|b~8jdwZ z+u?Lo@E@i{Xz5pq^@&obn7aUQ{Y4co%DaRSsZVbHP+2rnNV5J*4L(2YZ7wdk0WF9% zxFU>^ypouc@A6PARgfV4HbGmEd=6zS17O^6I0L%}!kWg45-hQU+VFK1r0y=oz9IFF ze|v81RV~P5eN1^DslG#;L9HPIqsbf<7r}-3XobP0yo}y{HT(RqPW&?%LhYU&K=2c+ zPdUxt7II^_?nw4(ZN4;so8=w{%GBZo(U2mLpROHP3C$C6V;$gDNzo=5M8obw3o zw~_Q4V|!FC>i*BvFB)vs%ROK_t5b(-lOLOPfagw!#}O=v)tM(o9B$G;O-DU7?9@d- zuMhIPM0_tzp{veG3txzi%oD@>;r%h37D($kIa3uz#&)C8uKuTDWH?zO0tI+=J?~43 zGZ&`I%?><9orIYWe-(8UtMa}SYx@CjnHv!4gAWiSItvd1tpl_+!E>C-TdQMjQCte< z{uMNb&vBC}TwUichXYh@&)i7OVl>-lm9c~6&xHgGc!NLe-ZX0H)j3e2?T8j-KL+H(s>iy5+m@AZc`!J~%! ziPEx`CNhoxU~NbFAVPS%{88NXyV0{2JG^zu{wN0dJUTL5a6m01X2h~q?NDdBa_}Zr zY!^Sfn~w|A+ttaz!^vgG@@7RmFI_r9e|*zX^ekhnI_&+r!<7 z4Ty-(W4>~3xZ?scP_-I+^^!2!i>QkY@B_%I1$c&;(r;RHYmj`iU@ExXPgMKMNE!kr zh$MLXGFvdj6qtstldLxjORch}&%B{lkewYzlIN@s)Pll~;`H@yoIFAx;Ig^3B0}evk(jiMpLqpR#|FHu9JI0IO@hXv zMUh>A8uFR1y%KI}iUuBPh+cm8jzAUn3|yW#^s()2mCvYZ^*i7n&?X4D&-|aDqwhA6 zz4>4qEyY8T1xVhO(fjS`nTMJ}v(ivoKz;JmBY#w`I{30Y>D=At+twEBQn^Kr99V0> z?YMpWYL$SVkAN#lziSJE9k4v?vx-VH%E6k=)8Vc$AgBd*y8R?N$9p=-!sT1o(I&ZP z%w4uragV6$k9&~XcCgJ}+zp-YtaQ)Z+X*YjP3A|@mrkUDqk8vpos_>dlm(MT;Zbg2 zUG`KovCu$A|0e7YLuI5$m5Mq0jc&{ttlN>Mv4I7ok|O*C$rw7&BMFp3OWTVQ+t?83 zQwSg)Nf6|L??_Hj^l!iWL?k??+P}mmS~|bipg>(A7l|Lr6ho#ONGLC2wJT%W9j`Jf zrNTlAk-E_=nj{e$5^KBuE%eLd@jn-^STSl&o6433Q7zF#Rq=Zi@~}uD4ck*akaFpS zzxz3iF&q*R1SS@tAubeq11DLB8naKeZiPz@NECdyg9Y-Le7kvUrnX97b084U|>L8N+D+07n}zhe~@9sYl(5j^&W))9b>}2ZNiJd)zPkTBCeng7maVpxV!9hY%!eU zWqE;?j`|$bDAG?1D0RWDXA>)9P-gdPMaVJ6qIRuu_um;E2$sXjhjBy7x=T!o(jVg2c_Q}2RR#>Pj)3F z`%;YJ`C^9J@JuG}oS7&DXKn${oa&WlB||5Sbm&9~@okHYXjz^?BY3D_wz)C=MFy*1 z(ZuKQDwq5OTerD3HWSoH)VS+7W25&pVATZ!*EA0!mutfUOON^v765cfR$)AteY$z+ z(q4Le-0bOAdYNZ)9NDr2q9GEJg;=8}IRcnGeP|Z>zc~BGAW<4+$+2zQwr$%wW81cE+nzJFZQHgz zXRznnw;Qn=@!r0@wA_DqS7KN)~5APwE_poMRy-dPi z<0bi4ZmB3{>KsArbNFG$1_!O~y_|{o;DlO{mvcZnoDB8fky?msO=Ge$JoPKZiVFrK zPJ$y+uD}5rCxtqdjy_0()OlpNVDCzK>u2~Ye6#~?D8nS-mrXifp-B;~OaAt^OawTa zW=#FfgF;s9V#xI>Siaq)I(h?*pVxXpo|%S4FyS`Z4j^RHOW@b|sH{A^zfI16+iMqv z#86Jl-s+%rebL4zWfh2oZJ*+AylRT7DiCKrXR*=EX2PzD)zn_aY2#YvKXP<8kFhuW zkdJ)sTFEHm=fU55orc{o7RYbZcwD&N`{X_HWko)EWxu?$l5$6sh@(UvHgt(Gvikl4 z=pMaIh(BKt#k4o?sa%at=#LxBqm%H|8<<6YbF(DVDB)lD+uuM;GvcbKKP{E`8F|gzgrvz&OYjwkHd49dp6xD(ax)0CaPKrr)GU8 zS0bKz(^FfgK;cE^4a@b_T)1kQG8@~SCS_tc?Cdsbt&dCxer=$aE^-8*uOqXFY1L=YDaFh(8l42 zoBG+2=YhmP+zq3>wENm&btN%c6|qH$XKU8X8WPOpJx)@K8B}Y)HVhNY(1CUKlP<<+ zXO=3UxsN`j6!9)zX!3|I>uASCMJ?mO@;BXYjZ>?S-jD6oYiUl(yVKm&8M>TZobX3y zL$sipPp44}#OH~UL|)`I=mcHz`kWHvKW{sowkNA_L$0Engp{R8f+D}5qQ%KnLRTTy zuLNfC`%_E};j0qw+=>z>D26-gUQHuuZaM7Px3{AZtO8&vp<$xt3tyV|$*9Di(cVxQ zUN#%FdqHP*dUSke>2@aO9;Od#bo#<@;9IEFS(1}g2H|mYn|!D)cG19BwA^?HvD?*_zQ_p%KXbf4na4&;WoSXMY{u{^#df z1Sf71OW+|T zQkR9C`>6XsIJ>0QD+CAWIckXV#0bTid#U=)RP~N*NcxDgoW@m%;m(8r2Cz7htWe|w z5fr`%)9T2C^CvhgDg~gW*nE>QUGu%C16@x82U+G15$-5WFf*DG9VHE~`*rt2KEL2= za5%kLJ4X;|LSIN=xMa$2hf4Ee(dzWf{fw!3mp39M2uN^7wcvg5G69sSWGxo#n0D3c z2;&Wb4A`ZWJDgL{th;bS^N;Qu0*rU^ybfGHcg$=q`uOOZx-~&Eyb;QcPoBbZs??pU z_CuDJSKPJM*n~4cG7hZ)Ry2#~1L+COV_cU5vi1_OV)IXWGBHg!Zxg0rOYHmk^UW;3KrV|*~)xnItCQRkt)}N3M3J55o)MN zD1|0O6DkW35|u+ZDIslMhx>9x#vhWe!hUn2@Y$dl&|>J@a=kt)KQ-5{VZf`8U09zt z_Dp4tf^$567euA&eTp-c4PMl!9qk*8;mj*2JqCph*Z1B0MgYZytq1K%2AC9&7^vO z3>HJW4uMdnld7~bZc(|8$vhy^$cy8c<=FH~7!w1dS@3qz&>BeR& z$#=N8c6z$VL+`-L_n=g^tMGmUi)NQSEmpN_4H->zWIld>_@>X22*o?0r~L%r)%Uo3 z-=h4Om)U1mp8ctL0N7u>?JV}`%A_U-o4mWcdq{gZzB}9_;lTH~NZ&Vox<4>PN%CdYDS?MP`J3- zmNV#pda5)9tF`u$tqzK7_bN83>1?x^Oz2cA_IL`XPoz!^PZrNdLMw6N{n;x2Cq zEIkYq8Si(l^2RI#9cx*ayNS#fvaNxk97pjjJ;CJ>!vNA7Y*^M^N< zT+?$^-wuAuthT0ZXU~Y-{7=7TEAPWL`}1ICgtHMon2_S16>MeiYsK`?{eJ9Q1T{~8 z35p0?eX-Q0c3q5V({`|n6*9lNlXIAjFy;C}>CC0;%l4Im$&i29+ zQppj+_cb@dJ#F5ug{zK8-ml-EGg!1D`CIa}jo#lahgIF*o~_4ETz+n&9zxyVrva4j z{^bIz^>F)w&=puYVR;olSgH(^oNeb*xllorILm`WsfL1BcS|!CEFvv z<5|>5$f=U2}aF#4Z9Z*29tRZXJho5=3H)N!o8Kfc#x)`M-x?ByIQNlsI zaw3o<8OkYd_6jvEqjs^_s*UR2bCr6pK-e4z7v^zxtOQ#BJqUT1B;S4PeKMk5HroxO zy;K7=R9SM&+?+$TxSqAxEt!xE5*I1Wy%3`fjUWbi7?HGau58_aj zo@sHVYaiVI1WhFZnzdeQTk!!>dj8cM6me$|&Fu`eJnR4TDf zro^&9b}BVY)&%Q-$`b`6+$Ru=Wcb`e2@lk$(Ck*r+Nj}8kh3&z4DDRz8TIHN;VDed zv@P3)5B(mO{L?z=YJbtyry2eI0#td&Fg|y9iZ~pDbUr+bTh`Kh+t&jdCGwN8cLu&H zQS1=$OL>N3)INt*8yz@(lqQ<7IU>F2AHV@RiVlq?xuRwS8`9WJrm9>e{va*F*iz_> zwmp9c4=2h;W2Um9QE(V2OQxO*nzB~|XF##2d@OK-iukL8iXdQ?Bqqo}Qr@B-S`G=L zZcaQTzlPuT#s0blWdj&|bgkOFa``d;*cRM<=BWenpyry`w`Sz8HHtr zK_()_5RVPoGh#N^a}E_$Xofp^i?o6@@B5I)1}q<(TA6{9Mq?SceA*;`TgPt7{N5|H zR>JPk&0M@+M7?vi5@W_dl#Gj(g|5?U_@xkNm6#u@$GH(Qutp^^Br$MuM<_bpqjeeY z#~lcMgvnOH22(}f&eEMxKrN%`fL^6hi4@OUebZXP*{amfQqyWL3HlduAgUVX3OgM0 zC(SZ0=-BOOhObhwrPt0XRF-8u`Wgn>$&Iu(n$&3KhybkqI!XooF2+Xtq5`$b0nL?F ze_P4eUED?7_B4ggm>+zmmGKxT9w;iwJcXr*lVVFnGBtp8Igd@(>~77{+sQwZLSmyb zsj*k))QT!rF`*3eksWz&3h^$3ex8~4#vNhl651(}kfxlXthCqwluL+UQALfg4T4~m z9c12&Et@u&`*=FPV=#yP@I_ufH-z{b1~An;gxW4xw(1i{lv+>aIj>9Q_K{YTe-7U5 z>U7p=R~d#H?O}ue0R;bRu!=ZxO3DB!6x^;$I3|%KoLNgirq-g{zg|ziV&8j}tLu$Rkoxhc*+>{9OXd-Ly zhl{snru|3q;xsAw@M@xMmttG}^TH<$5Wfzf^M+LI`?Y_#ZaS*pAwLqGZ0iisxID?3 zRs+OjWVq1??@V!c>nwG$YMkm#qgI@2`~zTo7Q8b~ZN3g7K`%kYmJLtF z43jUrt<^t_AV3)>-jAQ08y7}d`&V5iO~`bV5Sx>cESlK+rK-a;b_Zlp*X3iR^)%1F zCa(o`qCL_6JszWE8+r+`cy&2{cAa(B;%_(U=`;^&>|3%CP|2TEeEbpwHe+Rj=byGv zF5eT%x?*UJK33kG9ooPcX;U<eu!rJM-N0WanA`borJN~tZP%1`o z920r1ffGefV2O|dlFH7N;~Lkx0&Ho$((1Ho(-HCWGP4#Ia#yUSMRNaTn(N_b-wAuK z!i6CnA~36?0dESE<`~!k3Y45J^9A&d?upOmKdM<9EZ%{kX^h zL?DOqcEFkKlrr<>id-@vU;03)ggfTI?Z^y=hI;h(z)}$VUYSI}ddA_N zhm)1BL&zKf1C26-#;odLkZ{pnJM!p7`}kH4`otw*|6kR(10r0Y{=y4q?j4$;AVmNBE!d zVH0oPML&t!AmWaEpsOygBKMu%_Kwc3d^5i}?l|yQz`oLtRFP#^MUrw%7SjlYiQ)ll zY@C9bBMykB^nyuH(l(TkQ-1~Ziqo^R0z~F1j`j9oPD^++QdZ;{bK2+PseMDsa>Sh3 zLUXwiMmCasmsuAj((Ir%>9A$T$r6!7@l=(Pc?3bdWm|du9HjG%o)jGsYNpp@;?t_9 zfpPqFcfL?d$uzS~!}iwXa7O6|WZDboG<$C#?7S@rS)W$QWUT8?>Uqb!E0mZx_IsL@ z7B?b1JE9xJSaw1KI+gm!5~S)&#k9kE?OdfnbV_s=5mE~I+#o1@Q19OwIiqwKmH}LS zCN`J(az&7{lWyUv`}oP6p=8aI-+b?!%6}Zzg?Jjeo&l-}&`c@#)AI z7GO27x8aht!u!2gCfb{Z>LCR*`O6au%U?7ROOasBzSl+EY7Zee53vwl73**K-=cyz zoKeq&6Gib<$9THyQitBkYG8atg(21!f)_9ov7h6vA{LorR6=+uP%_ACP&& zRx%n8>CW45-e{Fm6b2e6@*-3!M-H?^J4gI}VjpamshFq0?LJ7tM#EHa2Nwh+Dj;>7wICd&tTD1gOQn}_C; zeoKSti#~!*fzz@r537(vqc@<^jF1*G}|5?l+{4`Sig+0091JI{$e)Vn+CP+tFV_ zMaIJEf5%|_zvvWo?Z0#iitlP2hgE=plx{oa2NOB$374(mR5P&l^@f4JfOONaC>d)) zWD?l>EjNjcW@1h;^a~4(fK>ud+O5u8f^{pQM0zl%H07S1m?NkmoKH)B7bu8Qi^N|x z<)`5F0+pg;N~w^7Zptxnm+P8sN;FnjP7;npS0Ve=L96ab#5D_BxAnAtlikiY6k16~ zu`SYQ>4Av{(4aRCk8%$S6hI2%)UN zXQrbVC)uTPD?8>Om4RZQi{vmAD2D=(ouDa;A&JRu1S7%8MyZNJS(4#V`ntqu6yy2A zhzO!WD`pBCVtMPH^aLuJAR0$iBYFhS>hN4FQK3jJEzyY30)|Av5R$HFo9E@BR43w# z=Fg%2(&$-O0i>Vj`Ymk7VE^s5J_BBR&#l*8*x-2LM6|v+1nQ{U8~j8p4=3v&1*uXX z+#v}}uk+x|kvCQ-Ew*k%ZHFsV+3&AKHUO^p^_F#3V?^S%N5vl)zpz6+b`1GUwC0@7 zX4V`Y-9Kj7i;?@$5}wvHTGlzC&yjFCNlp0$dYn5!{ppp)gAhVKZ{fMdyEQfxy|McS z4x!x2Ss~NnlrnZq(Lt2N*M_%J%K{Gmyk9+xr=EB#WzKs@@HaQoKUubOi5&*|eT_n} zE4A{gh9d?xpslWSs#SDwYcd?KI>uH>e@%ik9qei@W`V;mA{AMSJyTo8Plp|WZM1KI zzhe4Ym}M2jVAHbfCzvEd!UU?S(G>7jX{$k}KG8~HMU2%heQ3L|QMSeeo7r0q*mv&L zh{`I*IB_gzXv=6fytdO{V@r=I3g%Ifa72M73`7-Wkzwp3vx_7v2FzIp7L8%}*Sp>3 zb3(i8e#ONO?6{*iCxntIb8z_Q=}aorW9Pzy<0}j)B$cghHQ&6SIniH%?f>4*0lVp3 zNeFAV#UGH^1GIQ^5=#)Iq$xam=Khf|BB3mdwj(55ZE6%?9xMyMf`4p6ywdD5_Ts5^pQq5}qZE@d5J<=6yNml_8F^$RG(VvGsY&BP*O1 zeBsCCl@gavP|S&h0p^_Pc>pVW-V~qnJhO+tlh}2d{C&_HL*DC3emGmyc(?c@J-ZcA znnzDRn$!o|l?u%5cT!u+PNp|$j$_LmaG!qs68k1RLR;OrO+Cq+@Rij^rA}~oX0hND zz16JG$WnnSAFf(1o}19V31MBTji8@}w<*PMV)Scqw;Hz2DX=VNQ(s^;CjK8ty) z)6~Pua7~46CQwGARFGG#Z~A4oM!Lf0&KlTjVwK-2e-uX@MgxYvUT|$|E8z)t9M0gh zaLN61pEyROl7YP}`&)HyCc0{3I_!M+pTW^J=SGz9@8I}PKmM<&c7}gpaI`o08+xj! z^luXF%eDXjT>nNj<^NUozn@aCd99o_#}fWVnwaKLgC-M5J?y9+OGI#LzSyd0ZW0|& zUz6?_1q>+!g94!dTJ(Lq^hlHf%&RId z7vV#%OQg;SAwsfnY%aec`9?MK@+wT6RK-$7!jp+AcR$0y3HQ+Jo0Sm@316Uwyyi6@ zAvb%!D9Eqx*Hq`>=ke@;_v=BWH_1Rz>e8I7rXqI0S-jO7=_PlYcWL^pBcV<#XQvO% zBK+!n<4de~!y7Si#HulJ@CJqLre53=6clLMn)KG4A_0ggd84CGZF_R${UR_+DR)$) zC8253NR@#4yyyB!FSZCiq+eNN$%w#D%$Sm*wDmghxcyB&b1G1cNnjDG^GR@1sATLx zdQe;)Y1~n398GYOXbI?pvMzkj|E@JvD08$(CACMKL{vFcSgH0E6htb&JsDL6?C$~4 zi2KBqvrFpT)5qN zqsxO*2Tu1~KsvX({j&<`Bdww|Q6!xMCk5#xijX28rj*C#Jm!Ffc@BOWUsx1X*dC$t z8fuqBgLuE7_H_|Wj;ZL6U-GkAyMs};C)xnLnK~#QFtotn`V(O=h@zD8Gk%BdK{{6v zNmV|$A9lojDGCF`?1AowcWy%U?6zu?Y^AiuHsOAJO;XVpQhUHG1*d8KYIwnR#?nKtI0)>z~i=id~?Ay)$`}4N#&>z)AD}8ceMR~9Q!%6XpsV17S zWPit-o325|E7K`r=fip8XwjJUNqA%su!MpzwHeE#w%IUiz6|-%3mgYi#k7y!&@hatS@tc=42k$nUnILNaB?68bG=R zd?5liQ;0>E^=OkchWPdv<}P$VF3CZ$1e1{%fOG-WfYgiWf)gm*jV78>(OX;1i4y5Z z5-2V=hQ~Y&c_`98RN;VES8`T<2&kGZ(`mn#za@HbfP+pSb}P2#ec^Q(N14in^&tB zzgZrBQ^2GXDv$_-ty}9Rw~c0Sh;oRSs4O;$SQ@*pVIb5!EW`KRn|UOR6ZQ27vZH*i zgF;`@c>*9fS0{ww%A~)?CqKGmE+Cje-ck$jYDGp6PasGp<7YB&DLc{23D@hSrKC$a z*}tUCgQo}1asqSVeeCIK2aw&Z)2hb}D*@T{jkhN!p7_GkxY^LetUfiVIEJY!_)+W( z&KD_4--M)61WNVq4Uo#NN@`t`PhmaiRor2Ll}HowoX7+-$=jJQP71u1<@%xY(U>=>iC9?fEk>Ztzs-}V0 zwg00}ps0WkSWuzA0QmWsvXwrF;x}~`*(Fj%cyGW;QZdi0fV{u+ABu5TgP}h$wa6Ra zkPSh0IPGPlzBSMHvHpLIf(lFk0}5E9?r0uI(Y{6rs+KYSxMX>>FoSg`&GZQ~?CKR^ zKx`Wb7fjcl2tC`Ed6`=aIk2ECJ&_}IToZd3+QGCo!#biQW7&;l(DPl)K#cTQthB6G z)A3@@HrM~*>hQC))<(C2fL1h8ak|@^dkxW$BSNr(CuMNU_yzt*K}%{LeGDRJ@mxvq zK;-@sjU~|All*9&qjrl%V6U(WrXMO~$AeWQt*}ZEgaTmgsfw!9v&>-e@N0-XCJ8~G z9>{>nWKv8PTH+j)6lYibt)>j3k$MVUzS=XVHmJ^vCEHau+p)coz@7}Lrah?pyl1CQmS$EO zA8R5Eusw~K1%(7y?iacZ1PwX$mWeM%dE+z~&Dz-?C6PJJwQvZ29P0sMrNKT#fK`ZS zhHIPdJj)jwcd1CxQLJsQKd&2{*ek#@RgDruebovgdl?2Ob;V8_M(i$>#6)N~plsN4 z(o+oIkd3NQCKjbkKLRcOwF5mc<5SYEn>8=hvAY5bZj;MVdS^J1o zq5$Aix%3x6qg2*2k*RgS20wIw6UPD^*UOABm*ENA<`z<}3X&rEzlk)aE~`QciZkwX zJ;Y?PgQ!5M=RdKb6-L=bXWR6F0~nFeQ|9*l?eKuHV;{L2VnPjdngUs) z;8DA5>azjc92gO1dcjgz!_V;BgZG#xz$cqmT&w@A^VA&LgouJcg+2o8`3@mj&tQ0{ zO(NXA7)2PkK!wWSb1)@roj8+G)nH{+hh!EcFN3-^V>Ok+C!Z11XRPi;_(cHTLf#e7 zROX+6hv(qlN8_lDNOf;r{>?uu=cvc@mLkH&Dj@=yH~eYC8!(V)(=3Gx)D_0 zFs4qG?*{5$5@MZeiu=di6KHqB1ufdn=5NK)R;LI2fOB$ zQ|}CreCt>M435Hj?3)2{8&R0Krq~a(CoO=ZM)ExI)|P2PIm3OYlQi8PTQG<~W0kC3 z05^w*5U5M?K`b^Uc342F;Mp%Sq=TCq5lm@MHSuiSA19N(B2oM}A*PqMNb(qM1?2|# zni-zPjeWx`A)`ss#{`B;3gXoxamc!)vzU{LP)&R@)bemsg3c<>p_s8I*NrxwT1Or4 z$?WQZ1+wch0ro?aL(y{+w+TxL-ZGC| zDDuc7PGFSrzy#s?M?2Aw)@6 z=&>Oeb~1y6(RZ&cPK1)u%Iu0V57lF7&tkc&F-P!Z|;gs8i-Kd?<}@&E^*K4$cJ=ACpU|hxm=e zy)U(&G2BM8l3!P5YKHxm#Q}xqFrFlpE_%~wKbgYl5mBlsX~Drc5ZXBkAZ_1RNJTdxHPBg*+=0MJlC>A_t9Y}scbQ7Mh8t9NPdGf1G43_DJMJ48>xToA)=OUp6<2)>*Bc z{@qYc3KF46l18dc(;NWyMcn@MG>2u*lFr*F2D3bT8G~*&qKCsz8K8GL1!&}|XUNq& z(`uR5Bq<}t;%tQ}M}-FWU8Tazf6c`*U{0kZ;zCih4&+iK4eT_b?XG^wpib29Od#q5 zL52Pa0n*THHQ5)$qD^rv$h5vlq}Is>t)62(qA(?RTj;o}K`86b2V3r_QgsduvwTv{ zOS!H(j(Vde?I19^qWh)GJZ+iy7~PFCL}5)C>^!Si7z6cW#=vGJ9JJC~SpI1tK5BrZWFy~ClwRJwF8o_uA%9fNV$MUqDzoTx?&!jct}r0SP0j~ z0yDe{1Ff=as)f9NGJzcsl-yUmahk>o9=Ik2TsKxT!6v^U`XTb{rd;*NxvC7DazV}R-vImtyZBF~FiAqbVm97;6n}_9(HF?NEI;$R0XKF#NaT%{qnu@VgvCQ8u z^F$DyR(Yi&4vPvjPq{(F4=HT>3pPvax7HpSUbG{-y3#zV{Gw2XHP+Dar1MQGGCEFL z-LPUYiuCkWp~}fv3{okiz3Nm^OfyN8YJ05QW;QuF;Z3XW4wUDZC5jF<%1~S2a#(Cd zAjOeW6jea+t~$<4V0PX5(8p|)^Qr!gxRVWFZrMWw#GM5g`)MYvwk~Ye3PZmV5hM8Y z|BB|>m;kD2WF>oIGpP`v$xUU%7RRVk;_j?*9?S-}H^T!@;p3Y&Or>Tyt8I&(#+SL2 z4>0#5A#0Nu_J1;}q`TI+b7z|$fcA>nx&)e$D)mZ1k9BJRzZ_QDij7aog<{0)mrvEC zDs^S&N&K=hH;T(CwhAf%1^K9)XwDj-vl`Eg+B3%wV5MK9pmv!|Wl^=aO_1c{Om`R0 zi0{mI6~HFdGR3kKhE-IwM(h|#)oa;n)G#eEI5*Z+G|+=^xdz>a7zj2Ck;=UWN0;t) zfo@SwVQ`{>OLHP=I|B_{ZTy+K9hXUN1C&gSP6az7&PNy7_Ws((TGwm&l)M%4X{TS~ zW?-y=k+91YVw56&4-ew(O;STf^WyZ4){pHO+0BmTP&PWYXH84o|3Twsl%Qy{aT2qs zdY`;Fg?;-befJ>vtY^jZ@qXHwpEdk}9LvL@c3Evy!Y)95q6j!Pi1G_BEdZ!X9|+a= zB$2*Hk_lu&nU!;~sC=6(`hgfe#%l7f7aOtyNS})0sq&vb2N#O_4Pg{*R~563kX+j! zBz(rbiU2iyzHTLGxBVg_he7Lkz?7%Xdw+c!NIXX~3m+FN^ZePN+0l*}Q+6j_j z@3z|x4pO(CfQzs{*$Tv#@lL9`Xc)JX?3x-;xyO`A^R0N+c;SyiIG&3a6_Jrp#UKiy zmR$N2spR3byC65%Uzn^eY^Ev1iuX~BP0M&I%rSJn1wOl*L3Oc6){QaAj#%1L4pV(F z5HyS(I=T4=2j+OVhDq0b@@wG+Dr@lpx8icYa|4r+S)RM*2a!{V1+<6e9|xp_SX#Aw ziugu6mtQE5!=H#zU*16hS4$;m4?YA$w-rcu*O{SUjYweVMzowBx|;;kPTWwOLHGkF zm7rjJlyU_-?c>@P0M`*2sAj2aQTrr^T;ylJz&8GHr3N||uJNTN^M`Y!Wt%6yLYDGY zNC3(~Q;kR3uJw614=MCc0bg)L3MOV8&s(im+MBsf*OoNWqi_u_2F5eK#N#D38P&AAw2AwhvuTHj>tL=^5kbLCS)(N%u!dUjersF458hx_D0&# z42)gQU0e$PI9EqKzV(FYO1AB5Yz{lA?;(D$$$h~*t?KI9>*m$l$W7A1f9Q3G)P$yl zma!zU!M?OCD+I)ug;6DUki9FSB5Jj~HQa8A!GhpED(R~%(SZBV#$$vDK|5s?x;+>$ z95$+x1xi^hLyAzlb}PSI@AWATi`lxa^1UFZ=5eL!-@0QiXa<_y$jnn1CK&0N3auEb zGxQM+*lAc>6xOT4!)I2RoW}VV7*kWb;>sVUV`8D#4(z`9x|pYxohm6?5DL{DqOZEL zWP=_1WY+WS?&xh^%%99fm9cl^pubmnr;CTvHTYAqP25Ke!yIFuvbIjv?_!{s)L zRx}j2>F*)2mX7NIu|)}Ie2Iu7Satc7=73HQMUoGq;%P6XTD23(9pMQ(ilVXuhq`~8 zm)Eo`n%Fhxj*zYEP)icZWa(poe%*C!a;yli0sMYtu7T9H=V@=+9oB&n+wfacggh#KvM>Zther}uC=gzPArP^&xWH9vr! zGBi)SJZe`11@Bh^!x1Mi5*2A&OTh=slayMfaoyyuxmP8O#9;0g^yt+YQptc4lvCar z{o2|)n%@wFGaB)EeiM;Z8WjV-Dhaf5 zHyBRJj^OOfNfhpz`H_>z47;FcIQow)B%aTBqT!1egF+6Jk4RDTE!V~2MO&A$rf6~F zmHC>TxElUuaV&YfC02g7Yfy}yGQk#JzjIt^lDk@%eQ8J)H}J2ig-6nbD}|_qgg4$i z=wn3#l@mnS7hHAj1;SoUanO+Z_6rY`{M#0{rE7ZOGz%Q4RQ8YvO!t$-gSm@PZ`Kb- z>w&qcJ=43~7y^;S2M_)FQQO=c>ys)QT1!<}Vofpi{;S`cXG=Vlk$_JU_MJ*NoOhtn zgvAcrw04E(a{!mdN&p6q!8DC^RX)FS{!vi?V8)Zbkv}&l8pyf!}Ev~ zlb+le89h7x$hI+0_}Y&g6CH!nZAkxtakr^^^Y=%^;gGwsx|dkihIYc^o5*&J!uc}C zSboM8m$%Iy<~ODtDIF>A@%gl0T!9SBUx|NleOOy%z~V>db%Hntdx+U`P+7>6-N*A< z^zrl<>Nbu0Rjo?jke>CDx%9m^%F1yQWfn!$3#NFv(SEOxh4?1m*4)JNJ{i_sl&76M zuQ8KLhdZzGnK-2dP3NmsldIvh6XehU-U3$`nYg4Pc*UJ{OpeAawQ9=NR6Qx-q!kXi zwnV4t{7^N9<^+gLmNe~> zmBk;M>`wYkH9Qudbz(FJLhn(uT|TD;D4x8Q``Vg{5Hu+6*S+uk9r;pbo)a>a?LP8q zi)W`{FI+C(dRy2uq<-e>#JSik*vQTw0T?^+Ed?>m&1EQ84m%u2y*{0zFfxYuuTltG zs4j%a4$vobzYXf2Y{uR_K06oa`1S;lU!E>@z#A7AcmqPKUz`=?%02tT?L3W(FQ&`V znvRU|o|p=OTApd(l^)Rc&iqYl zJl+7KIXUb3088u=r%GXHbUr()3aq@YJ6-}aazlYcZvbLqul1Z3H>Z`gaHHur zu41DYHk?}t9PEzMCy_DbC}cb|7X8$>?p4!^48m62ht?p)$7lwTk1(%`Kb;&SPP`kagS6D%w;YN|$j@MnTjlfd9 z6smRn>~_k#Ji1Vyq^fB>o?1@7MDaYcW?wi#1W!Ck<8Vy0dpwR`9?jx)%jDY5S?gS` zXBpf8dhTI{&HPn-?FB)i&GsqmFLsl)2%Y7esS&g#RD0KW-_LWV9^vjXwpb_$N=g+4b!L{kQ*sW*t1htc(`nqureUc8X z#N(zQcC3^1kKb7P_i`Mohn2SNPUz2~@g}WMluwLRw)e}AZ9_+&+68T{{3>&}$4VVQoL?aY%V+7|(@+tC{mdPW!~ zquzQAvjAKQ*Mo+Ion}$FtK?xB_Etp2dFcePE1atXFRo7T7yA~&^Bt;`A%SXulXHtl z++Hs?I7RfjJ0;%ysA8zs@17O}X0`JG<%zV%c@C{PW3-f>XoSu|0QD_m$sYddUpakA zBPtM2#RZ0`+%PO-@#;uWtKn~}JUGTN-#_c_pVkcI7B|1?nA()+c0w;@Dcx77?9!P@Om-bLi#9HsYjXXfMJdQ>5{O=J@S>+8n~{MBOgbTuR0p zeybL!0%!#35ZW7tR4s-Y^9QUivZiRaPaL37(5X1V|I;DPAUKa^KNlZx2b_JLf)6H@ zx+#ho1>=P^*td7dj$&xA&kLb`=~vX-#&gnHjXcQ0`|T?(Bjm8s+dYRPe}o{U#oBEc zk!j+u7pOur%cXYC91Xk=@b_nsx7UFO6uEDWA)`OnuW=5tTR=a%LAI^j{_wFHA%=m< z7Xn8g85O-}T@(oMhp;3zz%oVEnS|4`pdH}^Q>S%cy*$eLa1qA1zP3?8IwMeIR9W$x zcyaF=9~i;HHp{#d=BUktID{X_q&3Y1WX_p;N*>`GRRHRbJa;&VxsgBlo4Mfu4bxA| zke?JQFazaRvoz%F+D+?wTG6z#lWC6$N>lkF&FsZ42Yxc9<}|mW*};7DAHI3<&_-}B zEwjo!d4yZY8T54LTxzS&%JdDKI$=JSdDFvQ8)lcFJrvMWKONU>ey#gKxE&PV3F%r9 zVf8>U*kr~4xR3>V_B8e=b0pwI{59S@wqeNBNQk^!Q`_U&xa_W>)l|EJad;G#<`&8u zlk?gItY8V!dYpk)t%leauaIEuM<*RhEn1PIbbhLTK1`uMe&ftKm9S`ov8`d|e_o4? z@-+y$4_L_2(j(Ef{SdW+J9G|o1G#l)GD>Cdvq{d@3S#?;Zp%|vPC{LmWw2^$LWGP>ws4VFzPx=5V88KHNni8eZ zKhZ0azpJ6>0Y(fJ3|Gv%_5ZVt#B;g0omcQT{_FaTOJfxUnstOcc}&p7gj025rVpp^ zB+|A6IpR&^t&z%$Tu94xa?oxL zgEYst?zr@V4ILnkW_`%HP~9-*99hC&-XT2ag@zrlZ(}S<8jN(>aW| z19^~zf$CUeZBE?JW;^xJ5k_fNA)F;uGEb8Uvq`Cu+orVe=JwUxL-I9I*hNSXZI$GE znP@S&sGoC<2-H|y!gVvbkWL~hy|t+yE~GiU9P0PlE_uD142uhV(v~awi@ujvLSsG) zMJiecmEVhAWg=?_a8x%{x^RWE8tuSdUORb?pl2xo}3$32WS!n@A~T{jl?go=g_BQGhQ~^Xf0OUMe3VrxnW( zN*`8vhj{69)H*T$nLtA^Br>BVxC0Ii$80Z*U_RRqP}i8kO2-=y_ZT0zH2HYPN5T7f zLhSg6@+0Y*q7s!jvQRJrGf>20SQXhQnjl_2dJcUuhD_m%=0a=v>fIjz>IdxIh!>Dq7llJj!&f979sI?tjL ztbV!QK{G86@B1DrQiu=(fktZ+4dcnQ#X+x;EYw-ZszS!S6~U3mEr_`uMaDyk z^}91n5URti`Xq*5$r9aCU}3z@iHP`=q|e{bU0n@=ez$#G!|)!E^5y)vj%>5zIP3ie zIBi0zki$Nn$aftNGIc43et1;`SA+nVPmlG z5ptAIavbMXmysdmhvSe;M`L9MzBEQ#@Dal(4$QmHj_E)Ej$w-=`A)w(jf?g10b`NQwILK9e1P2j#aB8)L`{1Zi>o+Y07 zOWT0Xpj$H4EO8MBfs@z40a#$Pqz6(}?S=6YQpk#IC-eyEC6B7Kx~QxO|4-Xj4pAsE zSlcp-OD1h3W;r9QhxQ#jLqXmQxOxsN&}?CqIgv|J)jq2;>n3GJ1m}^VOF{*qW}k(j zkyXS0;Ov}YMT?qjy=~jJ?Y+;oZQHhO+qP}nwr$%w_x$PCPP+TfWUa^fu#%NZRgE#e z=Oy)TKu1$ihxFB6>T!cBWb+i7b`CRR2XW{GMNJJ`!>Vo*Ytp0P zc)cSPirTE6)NhZTGNwR7!Fqqd&I0m~pI4lQ5k>qI|qX95AAF z`G>r)SAh+paRwy@g%L(oH8HL=BeFbY6aZ#Ty0>v*Q3U+Xf5PyHXCdC9|zbLWdFLLvx&8T=hN&qzG@B6y)Z5w|HuH#jRl1zqkf zTK6S+WynSLF~A&IFr}$knGYLfMfHa@5_n`!F(l|9^2bQW%ZN}gkDx2of0qKjJ za~@I9)hrd_y=(G`6j+_>Cj;8Zy%{x(jR=rO7|m}i#-X}G$+g`$7;!blS*RZN$P&F? zp6S_({d5EA=f&L3?|^SN57|ne2>%voCuiXGnXkV3-1e=z75F8bgp%3rT92^d3K@L! z={7&6l)92w+DzIUDLhH6-yQh%M0cw(%?WeSI|AHfH#UQ6-(BI+zfjbmILL6@Yy;rE zW{CKFm+Zq&O~}Ux8TaBlMo73c9B}5ERY*>X>es-OH`Ip34TCoy@XYbup zXvUR>ILzgX>qK=bPOXa~nOd5hqf)mIJ9C(S%=hxrHE>>(X)iz-iaHCE4oa1B%d{Yx z2)&P(5B{TdYB;V2>qQ$oxoAkzuqwHRDYi(dxtr*EHKsclrFi#*(J{&;59dfLZ6%X>_xmFi`Az zT~4KrpV7lJEu^0Pj8lhIWOf-qI4E#}K{cXLYd%54qY3O&vAs%MD%RMfc zGNv1h7}N6;(RKy!c6@&P{EdyRN^b(h%VGzw81&``y(=rh{ocD}OI8kNbEl5mXr&ed zDN6H%lACUZN(6?m3MZzeXu~n0NcljV`y2y>J5%BM`Acfe?jfUm0HS93;lkuPi$EJ- zkMq}O(sblgmJd^|Q!*;gkyPodG*o}(;1PkYkoOC?tEj>A%AdF6NBSBug4@u1oE?(wdJLK zxPY_d!KQ@!$fl6wwvL#gA`e9!Az{%OE0sk-`R{vd*OJ}uahQA2E*<{dh0iDX6*ger zQ;C=-@l%BRg?m?co7Llk+GbkdxDtKgrJ|tzk^%nj6dQ2rl6Zjyr%~X79)AAtvcQFY zh`oGJd-50Vm@yTj zpeh&T4!(|XNfGBPbB_i>=Y#jeSU_!FxO1PZ94_l}@?h1zsP>W#CwdQKUkn1s<6kTigjkZ)%+epYdC~d@}-g`p$`p0C!@W@cxsTMN`n--%+*GLVZeG3YjK*uV~J! zsI!7_3SzosggkG^OZ}s#oElTvwnI-XyYV!TrT0#iENI^wfYT=Mc4aqLw&AHn43DIs z(<8G7Tslhfdl40`$8lqnI79G_MGQ8BCyfa{zxQVzm*TTIrPq!7>DK#-8Tj5@V;iui z6qFY3>}+42??uI;Pv5J5($~rkJsp6_+vz&JR=leK7f-PtU*13(ZMnM6y|g`^GTo2O z%`J9vwWFsc{MgYyy*_{VJ`eW4O_<||q1C)R(hD}L@q5>%?m`xNvJ<+M5Dny5dWiGp zIN7CKeZ^X?<6I&F7K4exgI3?BVrOU&FP{+^)^6`ktZT!&B}TaoU}z#MA9RCqQb z6n#>lElvIX>#66>96s0uk1Rpd=k!L{xU7|Xg3e=Qi6Zv+_*+kCQ#@L|>i7aojTD5^ zwC8uGQTsPlj~|bXicqq0Mi;bW?nQyQRknw+_M#^m&EiJufcv(2;a#u+l27R4WN%W| zH>9y(zM|_F_vkOsf6Nlhas9A={~0CzGj;jzZEY?85{uaWZ}S*Q10y>_3nf+I|9J#+ z!~5g5#g^E2RmZ>OReL<%c(mhoCmXvXlhgdtds_4>@Al?c1)dNel1^lj*jVU&z30me z><=IzpLkPz;d1nbqy@r&0dtC+9pLJ=@gZz#O+!4e{}x@wDK&as(T(De=72UaCDDuU z{)gN5-v7jqE6SZN-yr$Xd1G_OQwI>`oqp9za0JA}??m^8?c+M04uOsIP(^>KfusYu8oPbQ>%g)S)TfGZQyf)U?5SPGw~T0m8OFGE?w%~@ z+)x@6fnlZGDH78g^>F!M>t;zir2j68)z;cF6ZS%6UYA-IjFk7u3}raABZ z&z~lL;Ld-)EaPc8=y2Z9s44q_{pmFGwqMg991#h7*6E}JaTuk5sK55}mN&L`cEGCE zs)E!;H%qt#CS@b}IlsWJNK7Ucg~wp-;HrG!hD1817EF=DD4am+?rd`=-V(3?L-iW{ z0TD>Xx!0bvN&}_M>A3-L{2wp?5BiHHY7ULzm<*@|3nQ2bHl`iflWmq!@(_R**<)!= z1jBIROW%%#`CvrA8nHrHX0H}h`oQ|hneoC3M7~iGFl6mv{FaC@4$??sQlkbE;on3O zb^8*KHtGC?y<3(M?tGwNPVBG7-!u{<4oD_v$ar~V(EMe)v2zW$UyR$)-1qRjykLuH zS$;WiQ(2tTWD`74VFpac4@kv~z1BUzy-V&+`mAYn2vuX8jVR&Q9UvsVT*h*#{%{mQ zHMCRp??-UMCf>yXajW^qkuzpueSAisKUl`#Kg!4T{&kzxIy;)K5L5&ed^h!PcT?r_ za@ZOGV%4XD>fjd{Yb7g+_8dn?sDCjD5bgT%7uLDdYy(m!1Dku3xYI^5R9Te%PH zSE8St6cWu4Rljj4wmPr%T4P~&yhnA&E4M+O!@i){;=RbSuv*^Oy4roDVp`{o>aB@J ztD)dMCcjD`Rjmer2qXtlw8@O2b7vobz&DKk78)r$Ufb7xEt*K>H?ncxldrmNby}H4-xW*LhZOFWI;{aHQDW## zm^3rDaQnC9jX9`fsO&ska?Wxu?}b;l!l=2SYyisX+?M?~zaEeY^E~8li$ujPI8>l% z*q4=dsgv01`Bn7ZS(n$J38#EGb-zT~_eK)?+aWb=O?lc{sXv>0L9Nwaw%8u}Zpw`# z`z}kLo#g{(7g3lwTM|I#!IWe}1@dRsB8d#%uUj2s}iq z8)#orKCNXM?rYQhVPD4t-~|skvPdx@N9&mKvH`<#P9!GjN1{+T-r1XEQGu0PWl@)2 z5UZ0^tEvsPqWLo6Jl?qg|1Px%#29tATF;wL;aI(YSZ9>F8B9F~Qn9Qk^S9J?UVx_# zns}LkZBHFr%oRkhYbL3Q&6s_IWnuIUkd59IT7J{rT7H9I^mwWFw=i`NGSuQ)dGu3I zHwv6i*X@PzCOjapS%k;ba^Ai<)wS5bnezwuY`Tv!5Bv;e%(NVBUi>|;?K*wI@_&km z&H~(4)Uy>o@iSZVJ485B{q5W3+q=EM3&p6e#`ek>mlH%hW712t*sO_v&Ii~RN|`fV zK#FVA8$LsRXu>$l%KtfFhu8Do+!{*H3Zaj&M8Drwzwwnt{UjY-2>Od_l>J9L-pP#l z_bbxj7O$n6>1YN(l46^z|I=FZZ_=1}-xGmFPu4sFC2J>S(2DI~{}~xZEd~9HuB{;O zrZ4+J61Zp9CzM|{{~dCudme537t*TFX8o-c{~Kw3mkWPe0B?o9M;^NJ-#MW!dVw7~ z+~tk<+awXWzNYmHspV&{$jshhDZRszJp$d$ezkIakG}wy@CaNteH&%Tb}Y-ub}|a3 zNy4^GwF;6Zsb&n6z_YmI7br(GvrGw+0xu9?nr!$NAWzjT0_P`lGu=9l-Kwz6Y^?rxtFpya4xEj%5V zj<|222ZkZCncZ(ggkS6g^44lcgR%nr&qv)CS)7_MBxHlf-eh? zVYFfK81rQqc!X>HQHn-wk`}#OpW*;|I5^PV*uA?2`j@a>o}*mfAZ-A~Apc|$okC~_ zD6>=7x~f!A4&>yuRjZOUSlVOO1I!Oxu7;p3`%#j%zs5gN#58faiZ)f-ZB+4SNn#Fp zzVz`1g&vWjy==t-o{<}vHSO#olUvWpV8s=i2&yG5e7*cN3<_mukkXzX%34nbQ#0bW zH2~EDSa%~dG>wgEzs|%91@YSXvw8+(&HsEg6TaJhcr}WuSEv2(lB4R~V>!}~DZz($ zA!u4@O-=j*si`jzqKIgIW-q}F-|I1m7AW%`!|$3;1+)ImaG{c&m3Z#YcL8c+>?l|u zVR7B~-jA8k(nD0VzHo8%O7J$<>D$k%1JL4dn8f^xVnquJaK+n|&zEcOt36TAy*o~x z3rsdw?x&XVp3lMnG3t$`m_RQ_FB0lf{mnE0r4VqcCej$o8=8WNHDGjsRo=Q)x3yjs z0m;wPSygWOjwC<&IjT<-NUc0fu|~3V&XP2C64|UFyRv$Q96rf-tlpCU$mfQO-KFEI z2)FGthN|srT;}t)*P)@DB9->XEH7kb)y2m+{(kz0?1yB)sZRCk6rf7?%A}{HLTcYCC0ZFU zcfJ8H9K{8RAB)RROPqD!|U2C9L0>1mHqfVCj>tJ;7!nu)wC< z_+i$(gPB>_cVxqe#_?309~a2$Ql%T~FFXrQBed%%*k6#r*uQC-{Ih@>7%l}+S&*7A zcp1~26xi07<*6B&W#$4pfHh{b?U+SW_93q_4G)%UEoD=Q9!syKqqcR!$%LfgtPeq@6wj*303;QP+1)lz--85y%7vo)Uy;$)MRYRd z^FWRXC2nZ)<@`77Cl(erM45$;f|VZ32huRz1ubN|L%SeZie{wmF-G9Z9$mcJ6-*$Q z7MlIJNBOjhemnRkVH5@Q!*wC>VIUn7nyS4rgc*1EzOC zGpf*}#WJxk0(!L}83M5}A<+@iWI^L%isO)z72ZL@M`U69s!SxMcS2+)BoqLyDS^Nk zf)PQH1nV*$EDAq|P5lTFW+Mg?UZHe?^({)+9{uknK_7`^m&R!g1Ouewi`!4m&xv*d zy=7hPyTIDV@XXX85GPK`P!!385;JX0#Y`&WU4}-akg&`_QDTUd`#wDf>mJw?8 zjfqD)*QRe)jOLQG7h9n7VQ521F$er>^wETyZ~?bYKf!`vvWrPN2Y6}QPssDX+MLG% z-G?6T;oco02UvH*0IhHV*TD0gK1gvj5?P@OIn6@@FT$3~(5Fq84@P*vT`!x|*okmi zUBF%zNdzac5<4fWQspQg6XRV3-uU}v3nSWu{h1_1NIt|xne>o6+!3ag@Myf;Q$X#< z0=Kb5%=1g80{}1?xG`yJr8mW~cF6XKth3X^(j=&!CRmiv2lA)XdvFf@WdIOpa+Xc= zZ_oIJ?>|#;WY()5{OZwf-t)c?j`sILY~x;5(I1f}DXU>oA*%%u@zV#NJ3(TSyLz-g zN=!C5TO#J>&4@rv>8|I;Eo!*HbOTy1H&It^E+f3;srPZYn9`T1d&PAj8=X%N;q(=K zL!el@0b{_vgPb&%u%n`3N=92GsT1jaR^VP9Y5wh*BQ*1(1D>LJv+RTah$6;vUK-xh z38)2@Om_a86X(0Z+9abXvq$%TyRQehP5Y}3HzCNyNvVU~udmKfVkIE2VPV6=w<9*V-zb3j=sD`HP;?guClgiwr>TN~b^ zOSZdt^0St-RO_cxLXk4bC>FR_6<-_)K>i&2&%FpFEpBn=KQANz0Rm#}h69l{38xPM z;{u*%`Nac`XhYG0h<*UMUR|}7ri%mr0P+liG`s(-5_d;IalJcYN3LsP!W7U zmMCVUJ&b|iPa~`dB2kvqPsmRr{Hvebf4z;4A;RuSu=@Tx|Y1?570K{O0}OL z99uEj2f8oU*lQvkZGUj45~D5WOa+*_99P3!6L@>;7ybFQV!e}DA1x}o+3CuGUJktF zQ~KZ^*Wp;8jf1*25U}}19Gb&m&4?~i{98H%+BRoe*Ua<7-XjGw=R;N3IW3~_xqlrS zA?qgVVh97DKFj}F6|~Y~XGZ?loy*(x(fj@J`2t=}E==zC_xqtK>Bto~ZW9ETd8lWx z;x)06_F<%dhl zt~XbsGI^X_@>lq52A7D;VlG&{jc--Dq#KO2*jjYu6R_jk3MI0ptGRSUze74Dyyn0X zC!xxd2XV*B>QApkN98|ivwr&))y7e)@5Wa_%LLa7Y^qXt$UsomK>(%+43%G{w0|Ds z;{#rSBEC8avFgRm;)VpEB1?6)m0n;U#uha( z?jkUU%XKv{-x&h7p1LJ};o?S9Zz-^45AbQYCfAu0#yA642ykwxQDH!g2-TS-m{lB4 zR^DBdQ9m8msWY1b41KpE9G`tJus1>oRUj?V7$VsGxrndRHOaPHR9rIYo=#jCx3@eV zUpdm>ZWO-W0cs`nLIHT~&=N@7l#j1sr_9LJc^n&H!oadHWF z>WBqQ!2zDBqzcpL>nIE##3DI*(U52B22rD)3JjOa-U**z!V%{9I6~N2GSht;1W{)u z;j<9WT(#|{Lb{&cCA$kVgviP^?#t{2O|j&d;tXGtL6_TZKoiswy<;`jl!;f{Rh7uz z$q4oeOmG?6AW!H{O&~@=cB9dS7SRi(#QN zKDS_2Fy1gRS1P}e&_e7JP5fLRL&+OLW(Sgzru3KgBj-S&yZKRohov1!?7jX^%=?9w%lDk~xx z8M&A78L$gZI7~yNsI)M&B0sVom|-Fdaqz%_=SvPIJ5d#PxdU3$E&>&n_H``jC{LXO zos~Uo>CLZX%n&P?-ayrXQ6$gn;+bEeQB{J~nY)6owESJz&cgv_&A>%8~fW zuLxiWdTy&TtmQMT?OWQwbJ~~lug4oxd2+eAE!5mEzdk0rx0gcqLqaz@ZkBrj@`I{j zvf=Cf=)Cf^z1V-s=LxN$a6K&zD4Kie$<+T6txM`Ysj|cy&nT{xo&(BGm$MCn(Pafw zU0+=aqkpE9+?kF|UI{|#vT)pHD&vcDL<=b-H_CTJF0$#=7;{O+PTJ;I#I+DSgDvkF ztLG9N+q60X4$hv2ueoVne8?t8<@u_#c%RW&&W!U0JwVaX8SvC&P)8{tF5a;W*aki9 zzhZR3Y5QPzRyUGb#y~X@i!8z!`MMRUVQkoVYgs`Qi{e_i-ouW*rUdnI(TJw)fHwgh z0?ydt-=4}@f8ru$xoSJ;_B|j1aN@oMwgoD;YUlf!hz>DoMJ-;qWW#AX5dt_fDRDUk zTtM)ob6DJcZFR<0iwlh$cP12*5N*LW(MPqtySE!X`Qi9jA!Bqx!7Fa}$7fI^GSEt6 z$WweoJ2nOB^W`WBv`gm9lloFHQ&$~bAHDj9+0@mg0xy^2#7P@a9FmNXaJL|MiI+)& z>VGMxXjDHXGV9(HR{QCWvjfFk(LV=*pzNa^`a^@7T-_=Ok z3U^A4SaYk-gn~Gol14Ow{sml>=EVbqe<^*BM3q8`=22W55(>-rQV%NxU%E2?vG{x~EwqLe!MnbfwF(Z$!^hHP=P zpAcR)!*^C6LWP)o=FAoFd36b@LW?BAnKJ&0oS^X7tH7mXk&{DRNqg^8yisOKh-FCE zu8!1he&)raxY{Vj;h`nlM``Y3l1Zh^nWf5CH0$X~ABV;1MWDbf_h#tPsNA%md+55X zuPoQuONFu9<^)q9*8v=fR87Djg^t#tq7s0+P26}Uw69xp0v|guwtK+~Dq~`%)N?l)%SJ*)7BS3* zf3nMaI-^>-Ba5(Q@M{^5Bh#P%wgF29Rol$Dg9?Ya9J>#lbR3KB$KzJ|h+1f@k_xn9 z<6nVHq4C$5Ca>jMG7K6qHqq5laXr1zsN!x~8{O0~(H(UiKW{X=(Gdw;{tg2nkYs0&laSq|A#Mt7FSGD8n)Uj$O-IzT{E z8;~MwHrcna@Nf0(TZbM)Z|Z2$Jm~bz_@QLXFDurN*{mS=W7`EW99lGH%Yhj7S*Y0pirGNc`xB`<^5Br37>nUb*XuRd#SG%lF`XF)}pJZL9fx| zwwP(Wo{vAjk47~rY@xw~x{Euxo;-QaUvRz!EGjq*rY_rpojlr`fOdh#8lWCYXH*T- zZ;1>HpHv~0F5l5A0%(+o(OsA8P{pGV`!l&yL#tZl`)1vFJz4trMkKL{#a&yqp9O%q zTag2fx)wSf3pTLB4f#z4aJ56a(#1aAHU+PlN@<18vA;w98(_=Xv6;yM*m=|&RI2s* zL(SeijF=Y>((YpOTaFXxaqc+oS~&-Yb5Xos9SMr06oyKA@x!e8T;d_KST4%~9o%?E z^F*2w%pfh>41(+68!keYr9V@LKmM8|Golb`|?9#zDDaXA(uRT}=bTXRvs_uyM z4k}HAk~LY}dQ;gM)l;sS_elEZ82scB^pc{ViOH_?g*Mz{!#PL1qPaY{oD@4^z1pc@ zeI{%LcVit8XuWu?V2>_}6%xnIPyE-vfPJOPB__(MTrYU<5ga*?RhW?53gZ)sq)A%o zHs8ObrBqMK0XxVSw}Gy%9u1L8dq zp_ABwDh3uI;0jmG z!2~9ROHDs;$-Aitz^2d)Cq;r?5~Zk5E+rxxHgn}x^P@Hd_BqRn`bUQCQsYwk8v6T>BCqR&=3adqc^yB8 za)DX;y;ceAt?{`n<}YG8XZN>B2&304xKnEUQ+SjBIc_%$D1FWB^FkfimLW%9pKiLQwf;waOE;MBKZf}S9tP^=#!2v(eRqNhJ zM^=yKTJk(4b zky(SJvcbaCpR{>+b3NkDWHCcn&tby?kKwW;9RGvp($mu1SO)G0VA6^^_E3wO;5h?H zcXrn^-Z7SC(ne|A4``CBs|5+fV^oJp0DpC#Wp4$=&KRZ{(Bbac5*ftKLG>GVrJ+T~ zIxlCFzpKFE)~l-3RxC-(VruL(4CShAmILfnREjLEc9e6RUE2K&`E4UX{6k|BOk9Lp zdk{OPMa@Sr?XL1#nY;WVln{NS(;YIDIAEX$b{bZmLZ@8lisFysyS@E|mu-cEF_N22 z6rUbHg^})6$9-E4=#aR`c#9xr#EEzJ(}YnF=YFic}J36X$c-U@(q{$d3z|@x#cBFTWT4= zdRICyLk2~JKY0`^XxppA*!hyPOOG5=k}A&I`v={*uczLKFz zl-?x~C!_M0MCN+B6~v#Dev$ho&hf78(__}Ag$Gz&tp~4>(ND#}{aA`;*Z5en#qG|& zj9{o;RvYq^2eLd6ZCHasY#(*{05-!F>ErDn(5Ju|C!@}_;42Nb_&sT@9Nwigz_3+Op30LHW-=Sm?<7VR zo0qM$B?Bu~C|5O-}4nbpgJws=4=%gHYac4Sns}b^uS5O1f41iusY89P;C{>Tx(T2J|*tWo6|q zd0ek*-=E#cY~C>KF!?VYAIuN*h}Y#EGM3mGztHnG!oHCIdZoq3fOB!||D`G*&m(&G z?x$fRAD;8;|3?3h_GY78QG*#A0N_7G`oAyVmW%)ZEdRIi{ZDlxXyEj}0HuszSt((Q zJw9EiIpc|_3Re^K(vu^=fo+ui3)X;mJ;Xs@F?S=8Szzf6o5t zh;BK}`|gX%h}h|igX>nn@y^|C$P=u_nU+Yej@Q2c1-`Aqc;6Erp?}N7xhpt2z&xB_ zW;KB9o^Xs5i}rp|JH2j%!V~0lFh(eKkW300MqGiflZV%L#)OKfmGRS+`nNwLSn2kQ zChFn+{rL0q0y1ikAf)|*{=t-(2`>~Vmd$e9M-PT|9)XPXR3n?5Ppld+EX@HaVSLH^ z0sD=aU$K!@43Jzwl8PU`?&ysO2D8R5iC*wvC~i<}8^>1XeRjvqpi`LiAz{*RA`AZj zPJ{Re1}MQaLj4#M9%3YCd=+axO+UkpME01q<*$>#+)PidDS+%IyBrV zybE?m_l~+D8Bh!~r#CZu&TMxhDrv*`cWzgWBb;g->rMjg!FlL@S+eXv$gaH$dQGr4 zkz)@)a8_?j0Phj+`tncvt3o=ZOpiWgTTqnnelH7LGhzQAbFG`bVdPc1H`O5 zk*!C5hiBhGs?hYDBU)t(pcv`aaK*SV&CKH}M4*n48bpIDBrS@+a+3hM0D&(4W0vbRXR21@?dqT&^14^g78=Uee6zA%?RXXV8TB>aRj3*Q11H3 z^WG+?lwGo2jEQ@ltJqe;Cjv+1tiNbiKCvh^QzM}8xfBFBt{G;Sfp?gkc}cl&aXX`i zRUinnkfDqZ*mwX<(MdQr(QtSugd{Oq=r#_7I*Jv7g+~V_0tqhiUn@&UfdS5;79kPU zL5b_;Db)#(2FHK4LIgh}BxCDo(S)V`t3e4*A&3Z#9dDxE;$eB{(sE%(;X(_YNRk<- zNER(by2F4d-6jSkZNi#Su~ZvXv+5pPd7kS7kIy@;gqBS|2u&2a5dFO=TnauVSZ zJd#ef9<%&-g> zF-?#3M;38!x)yQ~6Tz_^&;~)n^y%drbPQ=IdtCM9QA;HTn5zyM$fmg^0kqi`Pb5Bn?GI4_sG?}D|h@_Cla0LLa2+(;3i z3+ef^Xi<&9`4b!snxX}(ks2w->65u3I+BxTbCxGei`?JKV7|E`sh%}p2>ZX#j%m*i z0JWQf$}X*kO38EF<$TI&l^E<;76iP|LkIT|wZOdsLuSXm^S+Vx@6$e^QytU9(a{)G z`$WA`a*awToTKMbC|IL0RG2j%0h+E@VeoWTGgl^N=T~NjymoY~2Hu}j#=oAPe11-h z9-JNNc|E*;Ja~CsHd&hI-&lXwu6K;UFM%l0{D)<1GR|J zV(zLk)BAvW;t`%DhfQ0&mK$H@8#b5^QPng(>?$4X7LNTnvT|iuufmtb=gXIyeiR8B5t4H@s-&$v6bh!gTZxhe69F6#CRZ%gc@YQ+ z$h0Ldr1Ej+F#(7MBNB`&1ok48na4&5-$@6GoZuc&1pNcENcO2?q~Kwsvsp3gpnGcI z4%!lCMF$+XY*8_S&I^m5D$>|rhELN=B}d2FmFXdv&_U8YPM~!W0o#1q4=sD$7(Mb` z*b1A7|6q*^F77s&M6&`ZbVSf>#{06Q9vZT%Y;8Ms?QP-$9?)EOHXPZpJ05XLlw){} zMkAbu+CK~DEkQ-#OiMmV`8M@y;MG$Q>{?LLxoce^PXP2GV>%H^jV{EmA6EuP-gt)A zw{UN63&&rirLytmSJ9}ZV4_69tC7N6&fBc)@f1;cEpT&?q_RP+tbxv-Cz6(BBHc#k zrK0o77e(ilS3I>_cHY>glg3&Vv1HMc_${4TQ^mI_tQ7LiOrl_tK(vN}hyLqaqLpOJ z?R|>^zGmdtQ4OuJ{I)@dBprv|Ek&YPbg|ux?iVIPwVLwv>CFY5)=<1VcFl}i;l%C3 zl#<*$8``ohGgSQ`@n%!&v#tWmt+SHYO8HC{@WRF<;sP`qY=7A0;K=hl`;qlr>{BaDbFSyGly zi=MlP8~gI1zW0IEUW8Xa6;a=flA&;Cp#NYYqdmQA{1;YpH>^M!XLDEN2?lrDsKvB- z0pG6xPRavmnq3fHK3!unO!3&e#4a}Pjoki%*0aq$?_W+#=r;V|p7-7qg0m1-WK(uE zw3}P55%~U^U+_Y{45u_1A+GobvD~}5P@D^*AQV*6LEe2iciA$gL^QJqtH=?XmB3Bn z1|xZ_-#l&AxdNM*6}n%r%L0IEb`&1Fzl4!j5m98#v1(0B;ND(?eb#TG*PKN-f$J^O zOlOptp$DKbrJ3qJ5iWL%7Skmr9_Ja#B&jH#XRnwjx@4)28)65V-i<^%aZjTu=0d*} zP>X+M&S6m>Z##nF`V_}Ra#>^5-nlCPPUhnn6^sxCf)mQ3XW-@0s=Zg_A31$KXpQhM zFKos%)v=xuJ~b2g<$nvpEQ$AyEIjWa@svG zYg-MY_Ls9)>ModV%-PF{x|7naOg<}@sW!Quz;zLFN@<0p$4HWqV%xaY9Ra9r;sUV}t4yg?5mBw(o zpi1SZ=pJR}*9u*+xvGVT1xZAM!82&6<47N`P@iV2+S-;$D3F?;)y2*UWJ~Gt-jK>!sA6GLSd|k; znJ{Z(S_L>a^;R@?vr+=O;MH#UB@@<_agaX~KL{DIq!Gn!w935)3W5BByTpWEFU|qY zT|O@^4YF}kE6gU$kTb5a;Ap~T#Vf6lI*GUo*Kjm^Mt|!T1O$YO5+wd9IE(eD^1Xg- zM}Wk3Qd9LUWZyEn_o{ukISx?_YyhC!+|Sjhf1?PTdplbSxF+Mb&7e0`&cw~hb#S$*O%gs5i&8D$fEVCxek~&bQ6r!d-nRm?b)@8^eG0kY&B*CT@~)wtQ9Ih;rYg zEuH?5|3oG`=$vjW`xlXo;ikA{dSYH)+s(L46@spw<}~SLr~>-j<=cH2`)TPC+8YqU zt0zdbdpak4rjNPruY|}sl1?_lic#OuenYY^7Co(GvkG>StzpK=tS+r_F;@3dm4cfx zW`BPg-0c&~x-%^Osk3jbpFTu;yT*ej{0<Rb80eI!jj-n)0u9l zU|W8%ZFVq;_8eO#EO;iT+gU^u6{ElEqIstkm2xiM3(01jQrW6ph|nzhqE0I@J5^z& zu@4@e%u~+uG|gl~@gFqUR3Ikbx2NYxcHPK&ae=A7`K^ z_9Xwu9Ctu`e>oc6AbO<2+f?zP-VJWi)nP(AkfN`t2J@94g!n&@z$%piO4Ue6okr2{=Oaw(2&_jyv+%#o8zC1 zobK41=D56G-=`yICMPUKOO@oHFg*{fxEME*OHV)M9RI}0Y7PF1G?WcmWWpYyvafOX zBIl~4n4B>A86$N)}adu3;i#x zF<)L=qY3}4G3y+AXF!KSL^rRV#pSB0Im#B-$JS92S;x--Bou-mfM5WmQxUgzeID1y z@ClDcoA|Oav<3~_|2fS69u5u!J9GuQQw1ET_a3-L!D6QeqE48kRtRAn9lFRYgukd| zHK`PXD_n4q2)fdZ1YJAa90*S=L1QE^Oo+p2gvo9V7=Ql?QLuS%Ade8C#K{gnopWV| z^v>u^W)d9!{}DMUF)F>-U%~&_K~Gk%W(AJv@m)kU=~7^Xc^CU!gE`2cU_h zhfmbFW0IyFUd2EpX1FVXNZ{;7F5N~^z$bM>Kw1Bw`O7Y8P}By|K#?&llBkDpCYu1b z=Lk*_mDG0N{C1i&7lGgxN;4p>vww%cmtB0a5m&mG^`7Iu=7!e=$uxxPi_bO65XF++ z+r25K{=7J%3Ol%E*2ZFM_C=Oj;2a;a02B`^494wH^8KQYBGm*=-Tre{{mNjF9I|A~ z0%J@rpz^qseK!jo-2n=nKj&R|;-VVhh#i{Ci0r&|nxo?s62Th~FlaFRQhR@1QBk0I zu)_^$?827r%ry2sEWv$0;qwnNgigRDkz|8pWpH!`2i}&@y;~*s!$_ha%x5_#$q4y_ zH+`vO*2ITB%^Xu@qgl#EF=(BPFTLM0`QVQ@_{;R|NgtY1^~RJkFzv_Gp1Z+!9a_U_ z{{j7WPP*$uWoKZN&EZ!M2cO>(aI?FcGS8hBRCh4b>vMN`xc;EL{~p&57E|GDmBr^mAD;q-8MeZ@yF^Ye1}d}H_W8os##I2W7J`4(MQj(0G~^9gef zHIOk~`u1egL*32WI;^L~d+_^1{$7Xh=b%mx?_;Qke#jVY<}G+#Y4E7LT_G;|L1jjMSf3MpMU8QlK>4a18;06Y7e2H=<5P+v?o<)~*50Mj~Fs6`j@ z>CFDl76RgK2Qr^@pT2T@-+#X^=*Q=Qc|4zHr&>W*r(4=Ai(?!4>pSm#122^-%NX&Q zb`Qg2>@mSOBQZ|32&mYp-jRU}Z0rw7Q|&n_-wq8?d>T6djnGA#rX5srvN|Mxq(-=j z1s~L0iHiv-0k~i`|C@cQs zU_=Fw^+E2-p9#CDa7)xE*z-l2>@ds=?EE#FNq&lvVs#o6NJSjuGzQanbPp{iC_xSX z;Ap#sE*LW_P;Uq!5uii=$9t^&F`^mMbyv7_Z8C)hz~2mT&U4*(9A|3Pv$yvo(3*>@F znNkAe3MGPH6f_ySS^bA$zj4%VX?L@-GJdvGRpSU6odSrw&Ul5TDh+_*A)c{ZTL)Xr z#Ejv*vO;D(H`RP3LvMeJ^gver{rH655X3!xfvsgxPnT!&eD?g)wSTv08dK(P!;0Hp zGsO81KS7MgF>^xGH|dW?#aFQPtO(BqF>wn%45&VsKtnSkSg9)B-_wi_;SOhLJ*n>x zA?yYf8>$2UEAoMLU_mrJ6JaGx47`?;^1;DpuqQ`^Q$sd}E6ejB40Yf^>`MS>LHl|w zEqXSpb{egF!29kD?zn@S{eG^2CRBn;b_0h4DWrZzOAH&;!*;@BYy9;|hshhaHX!<< za9}BKHUc-Y0p)KkRo!Vfxk1@N9?G^;T%R)=fAqAwdAwX6ey-5J@(5r(zM%H3)$`Hw*NoQ&LK#Ys9UpT z+qP}nwsp(4ZQHhOyKdRGZQFhS?&v{BbVR?`XOJ0@Imp@BXGiX}z5z^%0k>;CZ8bGk z;;xfRdtVa3u~!A9KZIOhIV`}Sxyq>J!eF?YX0s(DfZEa16DTQ_0+94$dQdG&nVD3@ z8jtq95e~l`Ar{m3@M;d_)O#jkrp8Rb%7iBR3pkFjO*%T_0ZU+7OP)(SZRJt}N0McL*fE(1 z>^%i6L`?xy2V6c2~{T~3>pi>p788$qoO3jvY zCR7M@5KHzp1AaxORz=@Hk=ZY=Af`x;X_u zQC;yu&idgFB`gk43(dg*r?ON;J@|vy8y04N?3feKPCJT z1V%lia7ir))uV1?wEOWC;3-HV&Y^KeU+159l@NHMSVFJ=`t^`Cae$78IpLY20xBgi zI>O``+*34^a<$uSf5oNRHNN9k30d*>6w7V~r6z9h***~Ij=RMF{(gM?K0mLotQyUi zPr2!u`>t!fV~or;B5=J^%&a=4O7}r-a9(jM-TA>;j?ANR7%*ahGuJcdzhYaub=!#T zQAuP~oFrBmBG{C*C5ZnMjWiY$rOqYHbL#1Ck>}PfnyWn!?H?U$=?usr>DHigOjX}K z9Fia08{JFXypFF4#wD}FDtJnnp*FD6zey9ILd6*(k{pZ^=e50xtptM1U=puAn$5GS z;8AQf7d!-%BD#phubGkW$9EyTKtQSCaKt@fy;$*cfGP;0A4Qq#VeBQo2qZcGG#11a z*Sr$NflA;uO}f*>R~d9AZ>o-{-ZiEkLAEFg=taP97V1R8iK|+^z{EKW)MR$5*Le85 z4pH%kdrf71`H??-ODgOB4P ztMmIT^y@4Ic!oPuR!?(L$V)4*6;7R1ZKnm^Tw6-Fb=CA7htd44Oj}U06(Xi)t( zZbRy%M~8ur{iC^?8%MgimOp$LvZz=xvR1*U#@a4?&yj$uU1Fr^X(KTvWs(%q6gBM` zdT@uCON~QmsyG8WIi4?2Np*0~OdIYAf+?Rhu*U!gs{o?>wAuZ(+yu3&+VMh2t;5r* z9;N*WJM#xZEGs4`TX_z|0?>*&yMS)42p~#FN#;k?SLd>Y385i93>x)Mn6h^&9U4W4 zWD{vlY{tPD9p9ki5`~zw!8nPm5k=%fn`Zoxxn#3R+UW)Sv3jfSOjXpDLqv-1LRD0T zGo{+D4DI0aPTS!~oAL3^XKN{~HX`fvo2YCQ1wZg2`vGw6g;l-aZkXmrsR-opF?k{5 z@N#a{3=2Hm9m^tT;@04!p#@K1NP!Fpmw6-$)Wpr;LVkSNp2xIDs0&+zc$F-kmd0_= zfcPe%^VxnqTskjaE9xjn?6lDufxAqDt}aWj39!@-bCtknjNcSkkRQ-H@1Rv7spnYB zM@Dg=v6*=}oD@%$xAnwq2M(fZ=%5iv|h|8L9>DgV|hG4+HnJ zUmus3!%1{+j@SaHeuPyE@0d>${b3g3IPm3V-t}&>+K0=GjSM!0#CpcRpy-7vLITXz zyD4#cB_C_Ge6Ce-ygmEQE%lWrshJxsP|~cGJ{B8Xod_HL-(>PF$EH5`l$_090V^c< ze{qcZHCdxWoYy^Jo3enbB=~W_d%~Z%rr_A}6B=iDz|g?*TQx!Z6b{SRNBjemAoXEX zJl!%wA3Kmv@l!GC3%u)h7yy__Q1bV$OLNyLhfrrpF~U~@z9Zd@aZK=^1c z9fnWx=u7xvBvqbx--%=#WHC^qpBwyEYaALS~{X!;WPzqVBex5lPaH z^!Ugn8SymK07K=%Li!TOyl2F7m;PXXQS-pNWVFx+#PcLjk_iMYEQj8vY{>-RrvSsk|V z0tt5}(x8HSM8hwWx$@D%bt9BxFw}s?xdvifM@`TrkC^GE?X1-X2E`~^V`7-urpAz7zeidg<3#{1WScL&h ze-SYde1PWJ2|juq!Sfv|SIeiRuanZd9YzZ^YOK;LbDB}<1wq?xzs-<@StQjj3sz9Q zx9!R3AJ)=nO);DvAimHoQv&r0pU}+eAENI2w$zQ+NoZ*`M zecbCs6oVE{kWd8v8iFboEhdYms2XgY{@n;c^GL~b%qR=Bp&a9y(_E#-n(QhW@B z)FgmsYF+Pvtk(yy^8ish+^|XJ%+d97chwAX@nuvf#0u_?Ld?;&Y)N`)GhM+S4{^5l8io|m(CU+7YF*V+bLDz60~|ox4_mZ0b1agAX!~IfIkshu2kyJw0rOLeBo>jg zf5|Eifb+0Fb{v1K@J>;g?K{{|GVJLg=LNJ1skZ`j+tAz(G`J5l7ZK4@?F}&d7cw>c z({9;P5h>QPE}Z&OJw{7=*O>p7RcvyJRXw?A0ORn^gkfkxYpp!qd5hEr`>aFX@Lxpw z_y-(!L%cN5t1i?6ptCHr!t|(NupcND zfnjm)S|Kco3AEAReGJrPR~uel)jI+V183l=T|n29RsS9Qs3Bpck!|A;&>r@$FV*NP zgmv5oOvuU=hQK7LJqKGEQ^$x$^_-%+`E+>nsu9}4B4ZQ>zO=|&tK&786Hp&e!z1~5 z2rF(%F>oesL*Nhpz2FS(a-5<_!cs39MD2$Xrr>28zFRwgE3`%>uvO%>qb|0VE54Xk z4KtZaKu|JGk|@PhCpZDrRZPdbQH@t5kR>k!BZS|(5%yXv>IuSv^xOtat#s9wuKXOC z(sc(JX8-2Eravo>i#^F1nXk8|e(FIVkTSaRDdz;6$6Q``4p2ap2qI`=Llq!Whg~{@ z%EIPD$2MA3%+Rd3Bi3BNTMT>D)fDtaaa*Tar?0RqOZu*fReVh)os~-8l zunQ?go6Rr@M$-qGeoCl>8+`6IKlK{tWl*-dTc%gu4~gl7Sjw@1Rk^(E=hS%2*LTt2|Qnw2($9h6Lkc|5V2RDs{Zfh(|a@K7%3np>hOg zb5SJ2*lLV1At9#jJgHMnJNM`em$G3f(nqp^4U41Cx$hs1v zRC(b^1R*x`PTPYCRnt=Y=O%wxv<#P)QrGW?4bM5rd?2_YVNc8mVFL z14)BFfV$pMrSAhKXn(s1vRoRSI{=otF4uMNAtJ$ZA$)T`FPurp36{7ztGZX7MifkXnsM$#JnU$S;71PpwLly1j~y zP@k7w7;g@A_**@zJ3~#DnO9WPakw+4aYixmT?N^Cp!5QGzQ5hD;^^vYzc@{Acjb1% z)yeB7{&gD{X@W{Uu=Rz+pj;>!0DV=s!Bdw)iiYXVOO*{$b+SLOX9d%9j1lO#IgN7# z`ePh0wI+ANF+BNzgMxUP)oYZ3g$(~P#&jtnmFR@~nULf%`~gb<<6qN7dZRTq2q<7; zj#!5hz|ha6^AD@CL{Y+Wsd#S;m|zWIRhQ1+Zx&<9_x z)*6n_?Av)3^0jJ6<+WJKngFx^*qwilE_1`*z>3-}TN0u#UIR8yIjeCMho0(~CZDWI z=^8UHHyLFh7SJ)p7TtXrbb!ie2ovbqxX7Ft0&WyVQiJ|yw=r(PToVRtyxK^l;GCn)sF#g--I{xA zoGVAi_FUI09CV9|mik*HC$jjla|CP_UEHQJ+1b-K)Wv13-zLhT`x1=as~yzKHPjuu zFqt1gKgh?8r(6=UbrJ=vSi9%PL*%oMi$4**XDVXP=uHNayF@5(sf|g|)5;ov8xy$b zG&=Oa<<6#7IqZyGD}PJ60({?tAI2@6$g6*ANmg!P*JW-x{Op-&XqqT>)4#M zWL?!Q?5F^rl)a{gg!j8u3WO)X0kq2V;^;{t7uGyz?x4MA9vKGn_SLr==`?J9I%EDi z+;Mi+6Jqwja7NAdA(Zj~%qhnSlXdif;fYg)H(G)>s_nVN9x?Lz^d{J}cot>h{MTE{ zvB3{DpF|EnFInK(=PQq+NZ(}g><>!{Z5~vZ>gu(?TnwSIYT$AlK8}7{$QGKnXl(?* zpJq`ss#}0tVhZwOxAwYf=Aq+ZQ)0?{HgRJij60xSre&hvwJ+FD&exeRTq){D>DYg#}jT|YIwkFA4wKuyhKZE-UEF)sg40rjmCTS;;TU@V0$P z7P{#6lNl_otreov2`D>y)SBll84Q`%IaJ-?nj5Tbf6v8q-}NiesBN6?IG2-rw$pf! zI@RrVu5Fw$GeBNhW0@!GRK4=*=z=yZAL}FvOt(Qq`~U;b5^u|JmU9(-0oe1aiR#oy z8ApNtUrM;1z2&`uQ>>+OC z3FoF`2R1?(1Gz!-fesz2FBKAXmQK>7BY`><+{Fmtm_<3+;(Dr^i+iDgHWULZ9~YHU zuMY4}XYi^mFs6D}@fWF>ZhBZ%3BM>Cza@V)lDmGt$E)NI>8bu&$0$|mystIcl_&ZQ z-I;vDX^?^t$o^F~Re_}@Z%(ggl7yhRJ2H2c$n{hJD3-S;>p;29mG$Q>Zc@0&&W(!| ze4y2G5g%paajt&yLHR9J!1EttGX|iDQCaZX2E*6)Al|(K-f|*pO}&ED3G@+N6-sL* zBuv(ZZwke5KkHS!6Dv{zLd*}v!fI0vDrzF`L@n2C%-`6azh|}dkvsNp_Dn{&^iE~F zzPdG`+!UjQhnmtn@cs%(AQcCe?N`!fIAhRB)xAMN@WOWk3c^2#L`vy9m%F0O5cx6r zVM2D4KfVJeLCBR!2^XokjuONGVRz(iDPi6yI=bwEd;rYNqZvjgHn@k{n~Axv_ap#K z{q7x(s>b3ZoaQ0$SJjQp4Ehv@2PK!k!436nie51-l@8V4T$+1J}>KKh^=f z_3QjNhVDRX0DUOsB0c(4)BrA9&PLWps{zn8(p@Ax{+U6SqTd%~6NtPiDpj&BAo)H= zUl-X)6VA0b=bq`#j_^8I==_FNGv-OgY*yt1OOfJU@dEHGrKYq6{+WTHCKx4W_g#_mp;5sR@!Ve_xXLP%X{w zD|Q{(0OYVyd``IAMf;bgyhODg3P$T?_J@stRL+=lVb@r-ki|pAUSF-w!UoOWrSrSze`8y*gaHl}M~B5@fc4_FjNH=?F_gR&Fkt z=TC@WETqaDzrFSxIA0Tj4_>!lL2h}iQ=`SLmL(iVUM8@j!D@;nsPIlh|FFo3ELs}& zhe`?e!Scx`O}ALu?KzpUY0w=Bp@v`b!<-^C2~t&VEK0>Eng)txcNMkj=2+e7l>gsGiHeeivWY$M#Zry{N>DWc+en<@RGbMFJh~&?qP< z5nQkcB|K@1cxld08XlnJD1;<#FFT=RH5PwiKRc2$3G@M2*ciKJQDek)x(LWF*gCP| z`L)5!M%;?ceS%TdRq+s!teXHYYF|2dD@U@lFR#P5`xw zTFJ&*%5pn*pjq6g8|@zX;t)J~d<~-M9~f>_)~FcPJcWxpuHH+E_Y+OCa3?!!pCj&& z8GncyRI-B_G(hE!zTUzEi?>KMzq=H2<2l3oh=XT$4XNd00Kb`Yt~Mz*ZCia-XCH@* zkV39DL!ZgS8sa1n^Jsl>9`rrvtoX45R}z}I7_Mo&;*d`5)suX`h>Oi-84Z3Zkg!Er z7&%DQ3^_x$YWCC|e|SbSwTz_55yHxag>c0Hrs`f56YYEn0-lulbMnyA!_{ymIH?@o z*z9Ldaok`wwFe^ zhL47}s|B34CpJc*t1O}AxUkM09A%4|th4dU5XHY1-H^eFnM+jYxf;}R`(WdIFBzn= z$<1D2H0D<6nk4n9*M@t(T!(*kogFnT_=Jn7&$}{*x#;`aSvQ-JoFJ_1VX)O@3-@}` zKoB?>EMaDM|v2#KR zPw;%5@hI0K9ZIS!5-y6r0kGoOo&@yPD^yt?BXom#O4EsxP}bJA+z2~p$k8|M%;
    M|?v(&38_rw(`?(zH`n3#-zF5#5yI34HS&ZgoOTy$jRc^^^*qICQ+@g>; zEHjJGEk?rf#%%aGudthr$|WMhvFCZ?(g@6$BUGJ3-lB(C)#_~n)GZCSiZf=;SCwXZ zUN0F-DlAI7JYj%yO>8J;0W;%_iY3m}Z@IZQZ1!O$9P8 z`{!f$otdqgMN=6WEC1Xs7Q5&Jp15TG5p^4`Z`U-i_e@wjom!H}jF4ppxkjy51RbPa z4TAv`3%M=lBsE%L?w`a`j4d_+u(yCz@Ss!*+}r{w?^=i-UY+4-RTXo)Wo6uoCkRth z2)j5$*rOi+%y_l?pn?<6?_##3xz1ic;NpxLh)o>$c|?)>y|dN}*?vQ(f|HCeRK&-r zXTh2FSTL!;z-!sP%KbK!tYKNhGbFnzf-F^XvvMS9GpBDJz}_Lb)KB2t;1w53Nva_7 zRB)nV^nS+4{&D8zy~R8Q)T}M!7cQf{W2zrCTV4y_Nl2Zkf759v#dl|{rdH(C!InGt z6QSkv&5}L94|`k^qVG~?ajOko)yZ-xO|^z_=26s_GbBTVlaRVhJ)efnHS2g}L{yxc zgK;H6)L?|q)=GQ#1P2<~8=iMkcK;&cj&%X*iOk|eiUb8iS$eDcnvHnL>SjQ>@@cz_ z1oon#_8qD+Y}lRQyu`8xDj~rpJDg9DzA!lYT&Mwdf#a*alhTs9yDzCB;WAAaV zY4NWmQ_RHBqUe;Pacz}em^QS0)jl3C#HbYqH76L+g!jFLv<6YBI4@3Nw^XQhTG}!CuPvJN26TD)JKADo&E0pf z%@MZGDpGu|XuyFA+Ed}MtWeKX>_9B5Q~5NZQn6^zk{rN?VzZ?Giu$j}`9N{4e^xcP zoh?i#79EN?uIIV*|1ujSnUW0`Ia+AcF|Jjw_MPz#kV|>54%(DL9H>HFGOrJ1mmc~A zQ}Uf*HmQ|+4+V@Z2!a3JyST(}C}8(JB4G{?Je3r}qy+!EOmYtzvZkJ{d zjYqZZ6zFklcH-xt#Nx4BJ{dV?c>`!_GUlk@H1By)Di8O1&O=CQTeF z@A!kj=ocKxCm;$}kvT~czRS+Vnv?)}^0P8S;0%Pp_jMsHDxNh$oMk6 zwpy!&vx|I@3}%95#vsAR4vK1+a-ueNUYHJF%Ua#1%10J4ALlW&Vr`VWrFhT=pW%-e z1zy6CfN-a2vA^@u`FfG+faRu^k3?4L=3;EjM~aw>TaPOiF1q&^hT@mc7=^Yw_Pwwe z6zr!9qF=FCw)qVg=>iLk_Y-zI-i~gEYMtfs^pm~_+=kB2PK5A<^L!64JFzC_EU$!4 zN<76eN9P}}fE&;JlMQQiU2HcHY_W$Rm9-Hx+pJWuL$c>Z_LRxDMga1Tt+iozx>kM+ zYpdpC<(1Td=KM{zY>(LPeQl)lk8&tgB1_d_kEdaIMWz@*P@S+o@9xIU>mcDt_>YIV zAbt{*uyKyusW65xrBsaJ&@C^jaa+Q=e z%4o@!jCT~07FB`F4|TL7vk#I5D)-lHY|JZcsHW zcXUqQe||=K+fh6*udqS+2z%wQ#pGTa&JSnCOy^()?vvJ_sXk@6SzH(@!%9a!LJvI# z2F+>;SAZf}s}NVnuyWgDzJ z$B(fw;VhVMHlM)H9<%k?-WMMZ6i3BM!X%x`DQunqwxxsur=>I9G~A`DW2^G_BRtE% zj5VgCrJfc0Me@R>N%(^?HcKclu zQ6`nmCLmZ-c-FA<%gM?h^N!(2syNm)(^sfsPH2V|9q9DyIq8mjbUNh$s#jfY&5a4c zk{4PisLxBk3(kDFG0T!dRF4aAxWXXRp7Y@R6fG`cd3XjF)V+`CWwbK&w9{55MH-Oi z%C(_giD17{BU9^S zly9+F_h*OPoAvCNO9Y{3@255N3Hs^XHkO|z@&y4#0ne-ai*K4S5Y$M9QeX_vKR`|7 zmCWE&?@V6gE4*d9|{GEF;;T8gAm#L6EI9&O#$=+tt&<_+3KPHl0rOj zHnm-}f5VA+FuN#v0jGO()1O^lhcvNrV@3V&l3GJ&T>XO;zzQ$7D_*jVH?>}brHv}% zbQ+$N@sNOOY>=m=2JbALr(fY+7djI>u_;Eac|^A8wI-Ua@Gq>{f;!wU{|;KFRkWFo!N#yo(PF z|HK)4c`Y*`jK9>iNA_t!b`r%Gu855>AE{NjY))ADu`>K;gaKezJ!e6+^SNyn4D)Zgvc1RCe?Gg;=Ovqynaf;rX}PLPMpqYoDV_a1O}*~VCdq;j zS-dfIj%dijIUlE_kQi;5%n4Ih!hNqv0=-cRdPZhSwU{E7a)z`L<#FfK$->l>3YLjm z^V~X9+qoL*YBBR;-DF@Yml`xHyMuL9q0EAmskABzQ>kjHol3Nz11{=Y!d)WChgyj` z%c@278Wp>kv}SWa`7?mBoTp+?#wCWQi5@{15s-u{#`F_xlqHsuZh1#Dp>l_)2xN9c z+_k;M7XUQTOp*kxN$W2u1VoFd5G>&MFsZ%|C@8Q#!ERLG%J{IS9-WC6hU+?JG@L+h zC_|Bn%9xC(WbgiZb!@|yRR0l6;sizmLriMoJP#Gh-i|rO1u7L-KJ_22NyMkvfGHAn zD5g1*MGT;EQ9vANU5U!_01FuZa#k$?1;&I+QHM$BUOEET)VibWCZ?PQ?WvSvSoze zk@-0QY5ep9Lh_^?cVm6nA;umhVMc)g?d)&4ixk=cT^Gu^)1QXUrpVm$6VMj~U_>EW z=9*-eS~6Np#CIrRb^A6)tDK0yh`L!6wj*xgFj>+e$jAjL{z{%L zWSl<3tOi`>Mb%@+= zezTtHeAoEB?WYQ?eVhSU2--LTOpE|ebw zI9c^gp1Y_|4ioK;wj`Fln;j+z2WuvuxKy>T8c7}>Y#4t3Phiil~@r zKg8o*Ye;eBZEI`mT7G?z`D1hSR^JDVk1qG<1p^cIQZ)U1XJO4=uGU0F#nKOEJy0MU z6Jv$O--Fe%OdRLJsRs3WS?QQinBD$c*oUW>kn&)#j&qH|88~I9N|%E<8WiiW)&8mh z9(lmevKQ%`o&UZ1P?OU+anvXS)gqM~T{g@*5sQs2kRQUrwx7j;eOnSU3OavqS-&3X zCn{|ciCn69P2=)ZSp?Uy#(gmyMdqVLzf{!obP$e(N`b)0{!XRMn&teZg0{T#@ipuZ z(*!j(_FLua_wKlj0jD)-K@)X;!TVsr({k_kRU+B9FuB^E(|yx_27um_yGo|`mHh~g zR-*L4E?;TK-Q2%iq;t=HC0m?mUW%l;b#JEPg17q$@6DNtx$~|a?D1i(DUVy#KxYQo zOA^6G{5Zr$CpXUUA#C=nIKj49@Mt${$9Ha*a8}MB_wVh|>?8VPLFyR1t1ju~s|D=q z;p5kd{CkbTY~RhRX7I;{>ndUA)-K@_=TC3Q-09mlno!@#>c`Y@+^n^y{q)c>LX+jd zfn9Ia5Bz@+$997HcI1B&qW@Im|2yJ1!Uh1q`QNJ3|3`)Xf9nIU|HZIlx7~C5fo4uo z6gzYAF2GYho0~|sE=#mNhm%{NIQ4VK2Yc`^ydsp8f81{C?%B74Q*yg-UCZzqJ-GMN zp?&UvHn$Ahk};VOV?u)MI^`P6#H>}|M6DTRi#qa*qXF@+-;aPz4q4;f%k=j%?2ikZ zSw+RD0P!0QAdeI^_`mXXk0cne`bj{vdTkl~<4tyLZftL@o7Dg1da2SKXux>jHGVU8 z-;KTu?;2-I+{7ggs?qov(2G>;FoJsv(WtNjre z;J>PppD-uPa9*VtPvdEpHMR84*qZRjsqmRGTnmMGkZ?uUp#QGhAl$Q<)T!o1MnnoF z=;);c4T}7om?6+NC;(8LQl(<9Ff;}-V}|SMrQc_osFhBb=Z3}41gu{!++W`D|_zEZiybN1%7+xQeS5xnDBy{5B6nHbm%gH}+tP8Z=&ew{twTbdQo zj?D9S9recQpkD`1;1V6@DycpWWY%$uwLYY0s^~1IyQ&-?_|>U8v(6;jG%(Cp6;h3g z919P;e8@;Yi3Ta3-hmI9z!y&xzMnewOF(Why}-r^#F((9*gj9Vc(=5GQbL|oQ;Nz5 zIy$ql38UMVK(2D>BCUmYE0TjGJp;m@C}UIi_c?;_Q_ij#jcQ%&CMiMpUU_=!KbHa9p(7Szk_!{8X|s~ z6~krVzvs{y&uf1)?~|StN1o1FplZIa3koh9RoX{P1E7f_JeF>Q{!Y3hNb%wAo%I&o zee;DBtd2@Wi=CV4OD`E>GUdPU8lzBI6gt6NYJEXrD((^8X{kvM$!tdea+EI^;#$sw z9K^k2(0oYww?*O#!EL54vRF)O{$anc4f>40aEQk7M^Q?{Vc$o0y3&beD9FG_MxO8c z>$peDxCOEosN_8dh?|28L)P5H0diYL!-uR?nM-HlmZ*-a*jM)mIA5ZQYom9mN!4~% z0JM4?kU9<47YP5f=T+EI=9kaCB+tYf6i!X({7v@vCS1JYtYMUVvJ#bMfzTN&G0>e? zzF&YC)jp|E#lwxRjO)|Fh(L@~NOeH*NFqe8KHhAL=twX>F*`onnmV>{a{S-J?mtTLXp{>Kh-TBdh@Bdb{V4(*8;;tI%=yavN5xLXJZJ7 ziFb-jfB=no8hKqL1a!t0o(gB-_I9(3R)-0iye`0N=#zu67 z&_J|FU$7SQ&}y>vF<72r7nL1Vw(jCEc&=yN*kXw>JnWu62SI%P%`>~2ofb; zWc^L*0P>ckciiyT?JOrcG9tIQL8S0PIl z6%RHDGNSarRa}(C#gs)4rew_4b^ryzcYXz8=yd>|p40rO!no@sf(Zj+)D-M9UXaI* z5ce!I0s#PkB%E3xAgx^G&nn4ERK1b4u*KHtT14-@zy<0uqz9=?5ww6qE9d`TEQxE$VLQhAiI|$&F z8hgHawOAwA!GZGnD0c&yc&>O8-%uZdhkyLG67Rnu=k%iibRqzzxy{9&3f_V{&5=|{ zJVygUeUM(*IV34rGpPZFF!zR?U+Zr-Y}h<2Fx0hBRvJqEbm--8_=-m)txgQ7>`ow@ zUdpkJ=8b!+2#kPiMbVfpHph8etUo-f(+ktQlQxzQ=VCjho4bebEf?jAd>JJbDwYoq zla7lI$nR?VvrUM7jT2Z^YC+V8z1z@q6L1>559mWJ;Cj+b?={Cvq8ayuA&3Jv?#Y|s z=ukZB@r*CLo7y{hXujiBGX2G>FnVJ+lY8zU_Z(jJ5}ivrqWGV!*ssx2!=Nh)GyUHj zbSxqM+2LA=&9SvbF%U%l;tEBfXOM){tk%$J!RDKkWR;BIF6b~K+E@*HlF_yi>h581 zsNR(A$Qqil^VcQJ6m2}=?!oQ-=7H93bBY3XGBjSTk#l@I16X&X{u8@)r(EjQchoLtL zw3_av>SLG5@fBCJirW~Q+dM*%P{VJ1Y<`$Fbo(-5$}baG7bI%t#1@9JP&B=+Dj-X!E7d4?|Ap|0>cTFE z_qZ+9*N{g6iaD1v1}s*{z99v07UUz-7+AVghtf-{8{q5xMS#EMs74_Is$r?wU$eNV zW!x;XzFB}#ebL}W^>uT0@$qDGzhB%tx{l)?$T|)Ib;*&=$Ssy@ULKQ^+s(txgVX!D zJ4xT!p~Pg;?S>)IXPIB!Gqf59nOfR2urkQhyhkn|f;)y_1#Fy!ai{z1+Yy7p$~Gsh zz{^e%j;Ej+A(i4a^-IC?BnC-J$+uaSXHYwX-QOyZVvnW zwEx69K{A{WM+}Np$?_%pUMC(ZCHfrbSN90gI)@UrICaTmW+J`m|Lxl~TPDntbEeD> zY)TmNhpM4!zu{#P4o+u~B>7}xkX@gDi*1k^Fl3PG-gG$TSF+Bi8lZf&YA+);(qrlR zU1LUJby4PvU)?afN()3;iXQ>zN&%X^=|9oJ8jq5}l+v!zmjB z-f8bQc3c*R5>9l4wK+k?ZR3%duE^G;CYK+$%4w<-g4~1|ptp7iqMui2!>IwyXa@zv zbY)3$67BGjvpB8JWyB!0nfb+H zT1b2>u5euSCxi)h@gKM>Kk?1YtGv4o;k>S64gdy%J@c>;H*;^ZHpo8d!!DNI%jiQB zQLj@}O8<6*NPvoO%sHQSL1%nh-*W6;36P!oC6j9yC_g*c zn|gcARYRV^gU^1j9F;ymXJM<}t9KD4Q>WseCx>WWoh$_3-R+zdodIj&w6-~NE-(NRp42tZF4l;o|_YLRAwM)m^Ar(h+ zf$L{=J8r=0(gN5Gg(QR{rY2)0r@r-PZ;aTIT3u zHzLUjL?6gO0fwnTO&GH0F?-;g>=exPVh^oujvl`FP?)FU7 zjpiJZsiuT_iQq9lZvkX7+c-70`fWQP$OG!#PipfB>^K5zUh!}o?)qNUaA?_JnMKQ} zNY(BlEWWaE$A$}@Fa4XfY*R4kjMbQbj~qKUI)IE*#o|Yt+tu`N^=*^9wM* zA;_b8`6PcE&Huv||1;1KQ2+pt`dGD)+SCSat==Bc4l_A2G+tRM!)au94(wI z>}>zZ-U}2{$Z=L=~kBsSuUy z;-~uoFpfY((jk2-R5xd^7($;um2MISY<&kk&?0w;9U|GU2Rf~g2ru$MKR>@ZjtGWy z!Kv)Fh5hTAE57`VD5)$UM1d%AWcj-rV+7JGDoHvBh74-^WtXKnb2xG&Xt-I9YyYS( z@&}boafXRz+jLI4Gd^53o?Y^okmt(?X(UnpsngBJngGG2#XiLiD)&wD6M@WeP}!_t zC;49lGuoLlpzfG9@$u`P%_jwfQ20Sjy#j{YzRYf!IMv-OGMy(lk3B<3le?b|@8Nm0 zx+G0LJE~9a0ttpm**)SQqj<^ehn?dq8dd^LC;UHv zwS6w=_S<@|*8p)V6Af@sp(u`;Vl{q%l0+x@>Uhuuych=ih_4nLu$^V<0YM~^1fSHw zP4Z-^xqcFc(^49xASh5l8WF;x4PC-Ki!y0>lFR~0uH8>w_To$74Q7MVzERE;!7*`#Y@a^-pRSA zqF7~g@tN&px)s8RY1OmG;>Oe5Qe{iCtyYJU+UQQgre+Fp0p8T7wwmC#1ocA!rqIUB zW4+I)NJ6ttw-O8wVzHjDEhABx6JiYeX#QaR(8@{6Q1Ky{{F2NP>pbE!(%Qngui2Dm zpkZKLm0^hUal@0zY{?3_C(PlyMV1!EKb~bOJvUWqT`u5aS9Z+YT4xOF@t_)yzdj*; zb7fri7*)Ju($LF!na)KrihginUI_hnHQ5s%-=Z$50ojAUSGCD5c+aXno6H6}|GaLC zEiT%7S4)IKsX4N?{9Cex-4FP%J$L+$7>FZArW_0HiGI^OE}gOcU-De@>F+-Hhs0qa zJ_KY!);tb_1v_LP@9)g22X)PtO|{ifRfh~>71m`%ly(~Zpz^_6VP;5l73MCWGz*D*J~s04>a~l)de6d=sbpAHx(lTJ9C!qsoV6#7xt{I)M`T$9I8PuwSoSscv#3pZij(uv6!j$q~p&zk)ixpNu4sJ|6sXa`)veGSMv5`L+`fj!e!*w zasR@c2-)3<&0jn1ogp)&@$GH{@bL0ArD|J|4{g8V6hb~Pivaaw4QDg+X8+mC&>xo7 zz{TyWF(W9NTXvq%G0`gy5uJb7A0%suHiGSv*QJL`f+yHlC_UcSozLE45)Q_7Am(W< z#+g7rtz|t1RYg9JiT}XMHP(~7zC;dVu$OZnWe%98cxFH#{fdC2WJEsc%Qz%<_VL1vsYR?1QVq%w=oa? z1oYO&nE7I$kITA}J&E%NxXo5Q>!oe7K^eDcVKxM42IcAX5(rj40hual8Lk2rW0C?N z7OaScrVkWoSD2JwWOozkxi9srH$rP6x;JT85ucrENz*h@=W1q7T`b&$tGZN93111M zfne@sgL#eMG`TI{aD8LDK)x)Kz>v~=Tj~OmUJ&xTQRwX922z(ba9RC>gP!r|hY<|7 z->TMciM^p_@C3)yOd{*6n$9|*pb`PKt#SMV*|sKWNt;hq=(PbA8IQJawdPkB9`qLI z&bkx%S7^mP6|rRdpqfOalw?-mr-1(@t%1_X$e5+dry8A#}5@a5&_ z+)z3yDx@^|0kl1HNdNDpg&+B)A}#gmylsb;-&kgpImr>|OECtT6~ZF7yV+cbNgolu zG9Yh{14{hIUlX zdxa&;RgqXX<+zv%_3sV?sD<$d?p|Hfa1QEOL-_&A%!7eq@3LDpg(jVHR9z;Obr~w1 z{>#$3WT@HMW6L+_Z>Q?hY6>HzSl01sjmUaP(RYQzxx8?{880zekJ4RYl+pTCtz#Ox zuvd*FuJ=kQ8TdHo5boSWC5aCkd}N5oyPfsgGqU?fS9DjgQ{iB-{7xqg-j!zzcO!W! z7hz90THwS_e7TOf!brt>mR1#{hY}TQvisgKq18~by8WoHH%}%QxOhZ{=jjLeRMXd; zA`wD|&1s(g2@X*MgN`sW?*KwFGmnWV6;JGTX zpzm3+aZG4azud)v%nBNQ?vyKwdyarOg&fHck$aE=WBUS|A?1`5G-q{z4^d4YwR#A) zgR$+rhI6<{%eDI6ST-Xmt4?o@Fmgjucdf|x&q=LN#BOJ0Y6qi`>ie=$*yt$YRe6N- zfbFQeI!X~NI1V-U%p){?VY;NevN8`ZZzEQe5MO`-nhkdpLaUfgb3sfUb9~kS{4wRc z?Ctb*?8ULbZ&bi5ymgdbVSa>!%dIP9#b*rAe@m?{5)ET zlx&Za)W^k8x=k`CgQN{liC~iNSXMD=yAl)Qd8uka-+&gNBUYEw11HA7ux9(jRr~tQ+u>yFqJj_dq5YxL-qfn zXhg~QWbJs0CQ&>aIMHI?5gN=h#5oNg2{8z>HY5?hO%>2XD+rye)tY!NNlX@;S6ie! ztQvEkwD>YO=cKgIX6CC_vM@RjrDfD0eZu#`gjTT_(1Z@?Ybb{(1*!!7N(z$V*y3(L zonjKWq0_mrIEmV1M#;__6lEvJe$stLNNJa~^DHo1YlnBW%TE|?c2rv-FITZOR`D-r zB)*c}qt~A>m*~vWGmVK95CphpgztJA$wi>Q;3{m#iiY2iaykU>ji!#Y==>$w=L}nf z^ugjQwVw#wEeI~97;If8xl4Ng>1L0l za5Vd*pDZAn?J^qP4L~$^bxACnR?1QKm53MQ2?HGID^HEZ{it^J;Z@LQa-=heuM9 ztdu?tW2+seh+aih@(kKeQfRu;bB~W=t9IHVy2)-BO<(f1)XlPRNO49Ilos#^9CeeR z7u=$tMq*A))aIlBYw%0%u!bijFK8FT?q8c+bAZCCaEq_5QjTXy#`wc<*spx7n&96R z4d{FcKpB=;!9ZEnx!Pj9~?1y`ub1M6biVZ}9RG>k^rJuuW?w z7=Dc;)ai~U$;moCk0FJ-rjHUis9m#|TTmdsCO+kN6E1~<)_9@x7DpEaZ>tWMT1gtF zW4F@*LC$~;R&csfjP<%(nhRhWLEO}+1$#ncY(nfnm`T5Iuk@u7vuBG#pf)iEEU9WF z$;m971z@8n!j&6dHT3mrw~xn$%>>D}6M7DhD>)An`Qi=r-NcG}d~a0t^J)hZy8!H7 zvF0k;XPn=d)~~ZZl)74%gd-3rFJN{yRVlhblo}5d18P72r+DdhL>U}rp(;|zg_XWl zy-j8cYeN}J)oDFWmS)i_QUqvS*=kBN;NE|eX30-orMEIP*+)xIkxE4U-43S^G^OHr ziNE%1L|f7nZrJ85p^yvJA!Zizeu)#zNmjl{*qt8ZI-N60%fvFn5Z>j3d}`uf^K()5 z$f6+Sa&4`$`ut=s_Q;b%C6h;lZJSJVd^78M>dCg+pRhy_hfDK;=JQAMd&)joY>IWE zDjNnau*wrmOu}+rx=Cct+tLHDuy+Vgno5TGTGZRTT6$EggUf{yG28R-jZ{b&9d`M! z@0bnVv`>Ie2l^IM;M@WRdWKw}Vkk(fqktqEg8PxecXMQzzp&zVlD46V?2z+k+G^ISXEqv;p(%qd0Hw1+lsJ@eknDmQ58|lOh z8+(6?$WKM>vv}iBfKO>0JEblv{Z!o~f#t9SyY123nFT|n-b#c2V6dCFFe`7&v$p7# zj;8z5MhDP~Pi>1iC!(CG#mpvP&@~^9l)Y3uBvrBeJ9*Q-c2=F5o4el zC5*e)SIgSk&dh}D{4jENc>O?kTCkudDqCjGIQb-v#Z6E9cC+)~f8Q>2DEXtp8;TRI zAfOJX=at<#5dLa?5M2E$7TFHpXw<&+#fHYa#s4VrD_~iWrj2U1mE9ZihU`=Am`Ww2 z#fDE@{xY_*<7RJeXYas--2C1R>9%2~eYtxq8UWB4&;xZi_L-49A$7-*k}_`)3^FD6 z`KRT4Mvhx_jCZ_zHaSr^{_7Cj@HNv*vC;RsNQ4A_=o*F?n3xM($F zxMW~UZ7m-M>^@5-gI@l7QY+RjP8jBnbW~ZgB^+2zMO6LzDi#b5$WA!7-0hi3rsPEH zG2>*JtD8n@mr^iWmWeq&O?LY?1@7gD!Vg%#pwAeLn_gaXk0M~7LZYhz7fb1l@ON&+ z*t7gEeY%^<7;#hP_zYecvNef}%Ht-wgc;YoXFqzr1Z6*>SpVW`q6C=bx03xSOwa^3 zGFMAlHPk){@j7X>0Bjv_@axm@5VZZn{t@^|GCKhBbG_Tp9I=aVTM>4UA0#z$-B~3H zyE7u5Q`3NjFxR>iXC*oS7GNLNf*4{$pdf1LDVn`jA*liV81js1v_j`(L)L}`yW3YI zpr4S%US(V680ftFpRzxxIyu^9`CP6FX`4_tMG-UPz$sh*7K13`nD!d$Nc;bLriPQ!F-z~RU6xD7ePNQi+u8|MX-|49LmCIpt0BqAU17^13PwlZhG`rBP+L);gU~4_TyN{+ z;;B5X0rg;3L6!blAMNjoUo7Rd&_0a9)gvG}B=K#$=0?;5+vk1wY~? z%ZPcdT*&y1{s-LXpYaG+XSr5m$0d&8nq?{oq*(@P`B3C$>l45?$Vy0tld509hCqw~ zQk|pil6T(~+gGB(JJ&dAy?O6Uuh^=|5w2e+I3_ODYu z!ggXhX^!|>V?alMQ#G+oB;Cp1uTunwwvK>RGD8TC6|RtKU@D^e=mWF`5o3PKd%f=PqEaX3Z3Q9j9CY~LxUpa#{~TO)-~Gtz*Sd8t zVbN5nQ5a2(a6(PKo*GX=KXHvrEJjsXr=Xfs)8vx4D?S`3u90%nwKSyK!%r#Pk88AFV}b>6h=g-AM0$sF8FnCaiFcqq@8zkyEj|Rv z9gw-%UsR@GhwEo~^yK08%dQEf^VtyjC*APYzyjot88fRJ&gwK=ecI{lgWZ_PC?r&V zFXI?1yDc%Ik*yZw*6tBrd==)@!v1o#d%sg^o*=tHr6r8lITuX8fRF>ARr8e}%hQn` z>k*7HXfs7gV4Lsm{WD&y__?^rvYX}hl}l4iz#M&)4_Xs-RsPDnx^b*N88JfKzE6VJ z1C*C}TmBxnw;ZbdDQcfS?ATvwtV3zo=0hg1WiRqvG8!vo-^>C04Z*Ja_3VB#gq$l8 zdP0ws*6x6*kFG^OW0)A$qzAgB*<}s+{^=91Tp4EN5>?}o?@S*~|K@uLw^qMgkd(`H z&AEd_2zgDfyO@`BW97cl(CqkNg0A0qt9|(Ai?? zgk=PKWXbD7nzwwk9I(+jZ<)i28%?J3{%6Rz0=-~7MG_k~R_`P}28 z)~>ZaF`~}acE|Ke9BB&#;wE3Fn9ak{C9=VQ{DK2`q~H zgCGnk8Za9fO0OIA5;H-$O~=>|ka!LI+=fjxnpg4QPCQNp5@bUG93cu|!Lz2>9FRhR z!W{2EUzbjAACK0?W=j5%)nxaudpp{H?mr&Q-Mw8r%tcPK%|e~lbsLZ!JLaL`+zO(Y z;ctpDf&~q72b82-cC2j)>O-@>hY!5l((S$Q1{NKM4JS=VU*VC?rFFW;A4*OpkfWSk zJm}QC`GneR3|~i1hr$^VO`lu>d!pTy8G2qabnKk<`eu28nWNZ`o+Dp6g=A!0N)9hD zkDIKVbVXbQ^p zmn)Hr62PrQYKNhKAibvgE&^2#UjiVepMv|#zn)gc`sy*kxrNdN(Z;0%xTl$U*eCwv z$+>{ynjMUV270ky;dog;wi}u3VCUxx)>{w{Vu>t1f$i3W|9j6Zshwr7sXjBg@$r zx4ny14?erdBiA)<45SP=a~A3dD^O93gW9?7QW3Wah@6fqy*Y=jo3jY&VRFf(oD*;b ziTK}lCDA`-FBo`sJa^l1_B*M%RCcxC`tG+}fZ15?JL$1GDIuSG_Z$$G^)_$30lC4m z>-uu%esR#(pDFn)eeqNAalIXt7!{jJ;02F<<%;6b2UAPDDQEggbeLSnrktsp^mM^$ zlN>0Jzc~fjx#H5UZ}7OAS=Sxg)1s3J~H+ zs(rQL1#PmYt>=!;a=vDRZ8039eaPC&muq@B@!Apisuw?kjZ&Lq0ZoO%SH{5HnP=mP zFFyw23+9FPJrI|6!}GU;9sZ>cB)F$&#al-(Pj$8^Nzt>)z58VDLB(VMTNSsF&$#ka z0~1NNIH9>O$iP#pbb13+F2wGM$0E)#*P*BLqi|qs9;PV+F$#%G-GxtgJFFS8+y02P z<MAu_HOU45bAu!AJ0# zAFCm{gW{XF0et00?F;QlsI&_86r;;{{bm$eyLkTD%e54SP^FC|4%j+=K=Cb!l4Y0k zRNbps0S{<3z2s!|Ky?fHVq|_oifzZ;u+T}*8^g_%+>5Hiw+$Put2w=nk9Pg;B!QoY z*Qk!b0OEG5MT>{?W;V7YtJgr%Ox?@5!lQAf|;0MCS zgvWCSF<$3<6!*8SX;I?$_y>1s?1X%R>(Oytn+<^?b-UJmy%yk^WyV=N1h(%2$jWaT z4V3RpHMDaobd%!EHVH-9U+<7?H8^r};ra#Puenf1q;bVWf@tNdlic(~6Fu9+_9-(j zc4aNU*DwnZ21$g57WLdQM)4|Tk#s8`q!J1MEFC_>K>TuMzwH3V)Cz^;SW}d&j$-6L zmaD*t*Sm?GqvF7;Ybr_fMM$QnE-SmwWZZ76!yQ%;9iJ-xsMg0wq9Cj7ZqH>eSydq@8uJLHfdk6(phA1a?{*CVH6Z5ZsM-GJX1Tl#3C{%rT6 zUuBkAhi!|NK|d#Y<5EZpX2KM%vRY$qdK^y^Bw~2`e#+Q8*O^P@-hz^pKo4L&B4^4m zadi)vO-gHm+K31_DgnY9uQWK`W&R|(;d?7AgmkZ^3hxnj*btROIR%#fA9pmvVn00| zw4lJSQ^1Pqx;P)^tsh_|SQ+Erjy(n1N<$#br~)qBEj7m#km|`^RA>nBOGX1FK!~yT zR1|X45ZP)>j9NZ&D9=B$IYsK%-F@-T{@mS0o#8CZS;xbMN(3UAsL6rv{Li6Gy7g`p zq-zEV!$A9d072cA-`ac`K&^abOWMyfru9wJvIFASlX88PPVO#PX&SDTb&XZ}i|1s# zSX5`#u&PoEUK*LIA$I=^wTbZ)F;O&QDu>`e(L78h4=Rh^pXp!x_g68&V{wM&m3!~J zLB54u)Bw&5tD^Ey*{_Cq3WN=zS&|$PsmLl-cjXK7_lIp6x49wH0b&*V2Dsw9ZZ}~E zf@o+%Tv`g#SVW<&{rt@x0xQuD@UClpVB5hy0WmaWF$2i8GJD#z)AW^l(w_a&AE{6rS-nt@2kdZZlZ0|nI?EHoXqV?vjkxz=3i^TCqF@BQc8Mn{UO(|Y@*un+^qPos@{~-9=85u$ zDcnqoVn0^RlUR-`ocl@|n_yJf=!HvY-H_AU38E!#lGYUU!JU7>B&h&kX=y#bRTT)` zi%=f#rj3h`h_F*C)Q4(=6->R+5O#`@D@C1}Jw+rF$Cec+Hx7~lWl35nII9S-3o zmKnf(K8om1+K_yjrc7w>h2LSaqCk`6IEQrixLg4)Yr2ypBMSce(p zN5<`UOYPdL!4<`%OUeDIPb#PQ_;tT?9f0r?p<@{PXcRL*x!KLs&fH9~NFSX6w;sbE z-=-eq^RM$oayfDSyzIhxp$3Mgj@dub$sQ*H!Rw_=c0U7(^Nv)x;D@=DJF{JrwLz2l zxYVczipcF4BiW-x_C=%e-u`p)kWqpB5e=to_b(u21hs7Q`Xm3PTr%HV zg~z}$C&#Rre!ua7W~P@iUSV38c*R@fEtYk-Q+XAbQOcCujq9R!W1^ig|7=+|n5cL8Pas1FiKPn4GdMdgELCR^S47fA9uY^{A|Og9{GF2DxMSJfYEVn1_CK zXKSrO1onjG7AQ$Q4=~Ed{2J6~Xpwz^#ic}KS!(=)9s`+*~^=nlo7KCu6+F&IaMh4s_z4vb*gP(JRFqcS!h$Hq#SAK;A?#iWYnE;+&jJUB=x8MX;J!*ZR zjTtB;FLaU?X1$rI>McHAKV$YX5IjCg1|eam)Z?*!!^x2C-l3Cl%#1xu2+W>!d|?3A zDo8Adk8dqX)yD*F(Aset2#4^lM%~i&fmhv=w!&Ts_$`141AP8f+kqknE1;Jfszy`o9X^tU?vG5(MFkXo1VQou?N^F-nq4^H|)K**4SYSK0dsVzFu5H+lX zs2ZSQx6d0Gi!T8MaLUo>m)-)9`{?Z$jGT43U@(9aw@hJp@?lzCWv-V|y~yiFaOU*u z=Y|86Fh@ov_;?q$hem0q^H1|yg_loR>?f)i)S%#4m}FQ6oQ_jILaeLbTO=*OPPFHF zr=bKdKJu+_w*swy0Lddm zTi5i%1^dA@6U=L(CaMkVS#sw^U)s)3PH;Oe+(!}%eBNL1r$=d$2z>Jg8YuTt)Y5K; zteyj=NDeh+8yXKOms{C{*CJpkQJp z@*pRYmy5lJofqrt_2TsO@t@uvWRu0Fcd;A?s$5J`1G*3}7w7le;jP=_eKy@FByKXd`j4j3$>yE*B|KEt)aRR<3Ou;0?N2IgHElxKS1E!z z03$lgT)c(4OjKJ6l+}U@KB|g+N{S8AVSIN~=uEFl>oS&#y}_@q&F^IK<7=4OJX?Kq z>fEN@pePMklM>F{Y`bRP+^fVvHREgg3ab;t2z!q$L2G+3>0)HvJxSO#`)KUU`qeye z3QQs#ikk3t;{ry{r!ro8xbn3op5Ft4er8gu3|V^XA*j*1@0pKWZy_r}dnj{US?cHd zv)3G7DyE6s#K^{#B!I_dQ#G9!&*&W~$G{aXHy2$A{LYxLUFT$~ts$D|Ad{3uz*@LH z<;;TDryE|>aFYJYsk^8@l)1+)soGFz513(JVBQfw;~`lQITPwu;x+TXvt_N(YOve^OxEaKN6JWn${H&^lQG8^= z(Wjp{FIZ`DDE&Ro1!m%ojdSmMTuzW3SW6x+ePW_&0y}+7@1j`oup4LD_%pfdlXQ`N z=jJzC7QYwDWguPJq+>8UP0O1`pgRV@>5812Z=M<{vT zTLai%*HrqxUh%cwM+D+9o_>#6kQVmW_Z6=oL)4bZu&ktG+Wp(s`<6r3)33vk9)~V% zsRJZ8Y}M2HG~{yhA2XR5XX~OuDzy>F&6RL{qT&s|=yHtl>!51@0F*;tOtLltXQx82 zZ2!e3^~^Z%U8<7vI0WnVO^OKp`D%fG#P7<|j{Xr3ydz%n(3MB&xE0RILsrVcr#qq? za*1k@uIO->@@Nemx)ESX)Vb&MJqG3h8gcZ5;Gj-d{p@JA z=He?zI?&K)$yKCv)msTl2PkZPYQW#%Z$s}INXJfaK*(VSUgJKm56Cpl4)ay@OWSxB zGJjptXIr$;>!!+40QRlli~P-S7jK99agJ}53wn6;k|XlVUA=YY`r&H_t)5i|F0vC} zXqpl=??v*)I;xb-)}_;ysgl%vlVd)_Z=G>h_3{YS0DK=yrzqbb%koqyouEvPaYq?Z zH@lx<=>6HyJoswK?`2r*Q7~I9dxY7?G7K^R9a;}o)!~bo7q{0D^=rbjHpAan%ur2I zLNZgiShyth8qlUTV-h3U2qcy_NNkU|bJz~g(?jG_{xEdrpEYRK2|HBouPSlT%zW&oNW~8(=e-O_q zw7@On9ws*gL`MzdP;}A#huM*M&!G)xkSOvnmG)26E6^jS7qx&#Kcu(&{gyAxZik*e zy|eN2{qE)Nt({1H{1z{tkN0y_`s|7?e$tn`oY>;|nd^=n&(|IoNUZ~&n>Y@Ly;aIo zfdK~0z*tVGCFM2^X~E4M3AOGgd+$F}1P+6WN3`9Ciij&ZhD%Rv{v$)PCOXbbnm2K( z&@~EuEPfrcSu&pDnhjys%6mhpp3x)4yFCO=lbVNa(zHfny~ z{vMaC@8*+A42x2;j*gXM%XVcdV`8>#v@rk=4I=^PQ|dlxR``HSZVCCbgX-Kqj*zsi-{A7nns(taz!*K+kflLk-HzkKJR;K19J>=&rb9XG8x zFRY|xMGkeOK7vg{m(_Qcc*rAfH|4a?e;dvfY~Y|z-MaEi=hAsF-Om!` z$ZZ!J5@zQmh|le?{9Uy2lp?6R4kT?7IQ=^0ZNQ}!z%=P$537Gdz*G&LG|R%`Dn{?@ ze4+pTuH-&dN#O7gh9uV=Sk#Te`|(Ep=6(A()~DycB4ARv#0ri(VCe)a_H$W{5GdH* zp|kHxhnDi~x7WG6^Jc`0VVkpB%xRtcN0e>a041uKu2tQ*f~o-rHg$mC{hart!So28 zJr-g?1gvqw(pz_%K5?E|vDfHWS$ZaqIERT*ruEMuF>b)Po>zNOC>TTDO2a(GA&Jt> zLYrc9BG^@hoisrrp&1ub8N@aqXf;V-KzSJHBE8ohEW9P&P>s4)h_s|~IIM=M{4k{4^QZrGW-UkuuXqA4>s?r?v0 z?O9kQGH(}M&x;fgT$rW3t#0k3EEv`eBvBBlFluD&*7Y>{{sH_?1JP>SPIJWo0QgVo z_@6b9I%og@f&Y~T^8eU6@c(@;P?f5U-MTo!_q85_Wg%1?>iTv|p=+`ct3k~$sV;Ja zG9;#_L^F$SJFCP(>Ccxb8dqG%=2;<;|CPJOECf|%s$Kh|XeD>#7rm3>I4TBMX+l{ck(QveFJmNZOQM2||$njys{ zo6`y^Yfw1iA=-Xn(}`v1OuZlWI68NL*u85o$uOVh+>viX^!^4YFzVF3(BR~-iK#g< z2@s$)-2T}$;(NO@Fsmi@lRz&doY%^VP2m;(v!7!Y9UNq<0e zpWQn|Y#bw>Nyy8HV92mMbdVktEEyp*XAq@TV&jOEY(#ToLFsAX{zQrXU7`rE z6sx{{s%s|ubAAL!sa0WmbVrhGnP`SM8hgnXGvwcYU2bW09Jyi0*nV18_lQ9PNq8Ob zlwI;o)kqSNyQq95_+~&_=}?#>27Al3`!G=d%D1s@Oj2Q_#4kodV|2hC{k$1*T!mB$ z^vX!sg8&$M(xWVoR42oVVqU`PD;lxo^)Y7~F8`cBw$}Zi&bnbpgw8ZHsSG}A_L8%k zuVeTsklun=?A*#dkks}Rmx-g+a7xZ)f41k(SO+Tzq3Dq>QFOQ5J;q_jtg|IeHJ5*L z+2R)1m`}LZ?^w&{XfOD-jUtj<0jmFC>tV-^@vD#68iJ0BC)d9oJ0>oka8JZ(CbVh& z6>g6I-E~g!ImO6VOS+36t!}l*+Beuqxchmh2@XrAq22DXf9b;W@0$m_Y;}c)bwM;#>?JbzDhAS&wdMFv5f9s2&AGi~rfNcHIgJ)h3*Fsg6i-iY z9s(q7BG7h&m|-PE7WVxHYG0-DM)VBbru{b0;*dM0_#ysTfk$B+yR^k8TH@1}(Hq!@PDm`jx{vfAHsZa}?Xm1M5&Mx=zJE?TkW=6?-4S z9ywo|-M2Zu(#8%TIY!B)ghg=G3BLcv`iyR7vp6UKz<TLc0 zN89GHaK&zm-+7~olTanCLNl2ufpsRqlESlE38fxOOcQqZ(nls?uy$GSKCLbI=~e;F z#Xc2HOd59CzK+oyCh71O%(F#-8oj3N$Q+B3F($$AqIFMiFz%NF?|ROhEJ~f-qB;$ed*m5@a3C* zo%m+awnn`h)Uz*|&!W&J5W#{1U_(DMN}#iERbqTm_GcbJPM86a{-b5gZ7n39!BC)|9OHF84w}Gt#5nV;ho;~}TBG+zgw#~xH*xmy z;9c@%5DF`8^&xWN7|MW%4$XgLGFXDir9ZR!r3?Oj($^OlU}wE_`PDWW$vnJ#;peI?&6P>JNJ&nP}6Sil#<`XFi@j;nla-)i73VCwSZf- zdv1TgRYhGgj>Z~-6Md1_{uH<(omUa7h!CJ2TT{l&I&6d=WqO<{e*MML7=8|*vxf8o z#X@}_eyg{@*&eJq;zF~0yda_hF*Crgk09P{Cb-2=I$Y zG&Cc`lWKGN#=jI(BnHF^Cn)>918G6v)EdVQfJ89^{;&x2z_q*@(_)MXZ#wvY5yWHb zRwYQ08}|m0Z$Ztc3l71+)B22Y%1Q`zNnmYGKZGfPIY}(C<6(3GLmXYO0`nk->X@9% z@RlJQKslwn(TG5}jhk}?8W)YVvHkGfz`*q97iWLf^5Tw*$tx&Sv5p3ke=MiHE8`Gr zSQ_421+3%y^J>G>i5ZvVzJLorX3i7_m%t-`S+>F3iD%tRMut5X?qGX#*h*`{m%O)T zyGa*6d}as}RuuL8Pyz%?V`0~G0?jXYm(-TvC*LO)a&|Inty56uFrENm=D^4gCB{qk zQ3U<8On?5)F~}OyyR}Z-vrEuvE@4PL>JQW%E*R(rvSP&b`92XLCQ2*^6{lZsFhQ<5 z4#=O#1v8+R`0`1NhD#7Dw~Y2eUG3^#w~T zg2Bn_LRZrO)py@ebch(lL@31!1)(EW3iSRc=%*BVPYstGCwdL2v%yq^oMQ2V_pas> zL-pO8zKV$8nIG<%NH#=`=szVQWxLo`2hXfF9qJBnVU)g#I9dF)%Gc^bTGM&ozmN^V z{{gdR_=NDuO;{NETf8{x4dFEvf`XGY+6L>Vgw0$V0QN%DPVf>wDN7g@x7)%OZtvP( zAkBVbz-d-CDyaSzc6S8Ry?^N>^!(<7++DuvK!^r8gsjh7Kyt_l;Dq_DIjv%ScEDNL zg+dM<63#!7Je7LV2{Jl>0E7y~zm!0)6(KKMhyk2rj1msou}>Yi_7CPyNq0g{grYSL4e*L;HkomL^1TcSEkwvYWBr3h4@ zQWzi^&XAywq9MIRA}DvxxK*Cekyb2EU+ydtMb%E4Ms_Q~R@0P9+p1qG-luQjvN#lD z6Y?81CU)wUZcdgW$^-+WxIl`4Pv0lZxNP!Z@R)j1Pp6d4MpYolnK+&X7?cf==b=E$ z$_AByxAX@X?$V$~sDBkxbpgN;wRV~vSRH~SdYh(!5wLwn5WC7d`qg@jq9G9Q@mKjn zO16-UlIpZ$^mXOs2ZHlD&MX$JCjo)h*}9qR`pWk^TNz;!QzV31!h5g6Y?D2O-LDLf ztR5x`S&1<6L;xWD+BA5QTIcmSer*bdp&gv!t7a+X5K;G2h?(BV8J-?y=dA(i(R!|I z{jQ_)jeG8Zm6LbroS`Y$UzIg1Y*-4FO%x7=G_8eP8x|Wp|F2*pP{FT09ct3qq`NcY zNMTiJTy|nI!{Y&>QSv^zl*8o2)s!3W#yD4h7&)aCz}D}q>DEueqOMF7wI%ls#uXW4 z<~|Fi9r*qTrzjv|jd;)z$^dup?Q?iTZ;MBJewZAN{XiB@%RUStI>Hqu4qs%HC5!&*3a;gXi>coD@gz7UIsJhdW7&*v*ZNZGP14WCb@b>&TOep zz{W&0z3oZsUqaL7BpS`?^kvf%Te0QVL=&|0#bOObS|At-4xCLQb0O{)jbm256uOzFwvLf3`Br>4~OS_;7O8+)u&UBT*H`7hXXg7srFyW9AT|h{>5lb^f6RFRPFmMn~qz`K(Fe zj9Aio{={$JHIKt|w~7}vZ*9ED)Yz~JBdnAp001gM@I|svJnMS*Oq;E?$J-Tkh(80- zvrYNkN+2$OQ22OrbzZJCSPs9s(l?AD`;5-u&X7LI9D$@gwvJ_d*e^R&i z-?4N7p`k&Z<}RA(C`MqD4?pLn)ubAfLQ22k_apgDev+&#YRd)CJRn|G2OhvMLo}9Q21ECToH~!{IpC_| z0`#KQ_xhV4WR-~cyBcDa1R#zAEHh6k7NG+zF|1nK(x(o?VAcG#ziMt@Vz-C zRGirx>b_TrQ81((Q}BE0%}0BF7yW*PMF4O-v2}qE*p}Li*3Cy{%<*re*b%lWD=1$s z@4$8dh^#g<-*}G;xN^Wj3&xNPQ?iN2WyWtzID3ac5jh>G)4CtY-2bA?eQ0^VL;?a) zqlR+Ou9HxHKnq8k9JFoP0ea7lyyNuU$_o^5eS&#nO$+=dH^y(_9ZrWb? zl#z|T8{S1Zv$_rOsRt?I0eS{^c?k>2&S0m4|Nnjz_p~ltQ))X=-B%_&lu)aRJZ9uJ$ zx21jxG7n{b51A=8xzIM_h6g#`4ExQFgDg#XDD;FAwSBe;?1KeNb74wX^?4oMtz?6e z;F;P0S&QQUOo||;&m*2(ojFGSrYij~252@REvP`X@7fpx0%hYFvllHmNWLAKm|N%o^SHt0r?{Al;nC-?$>yNyZ|TJ zHveaEe3q<8iI~Lf-T41M6fk~toTt=YgcQ9-uHn(HX5AVHtMjj+fAg zW0F}Ks-OA!Q@uaSlC>vvs?a*W2Wk}CUT$i+qDxFM6A9&5)DE2}lqc5WtR0vLC!MSK zb1z{D4+b6q2fw&7aj}?u>H7h5RV+jRxRo?0jR{1nJt_zD1YC2#y?W#4f9Z3SDG*Mj zYw$Q;Ki*s{o>snL*ES6u%404lAMoM84AaNMUvzRcy%j8kcp3oU7zT94lRv+0MI!ET zxUA#uFV?c*ELCp6&@IiYT-a4^686&<_{GZ3dZXlWZV{Yh@dFl-;qGm4mUX}v#jFjqGkiPlR` zJw=~9v|->ITGn4|Xw|wBLVmjGM*A=RW<7VMhcg-)i7i1~33Xxul*;}SqWVVmxdVE< zre3ekz7CGu-v;Ri58eL!0?Cy{x2l5+-Q;Zya?VsmLV{ks9hEMklMkli@ATxAs(TD5 z3(O%L_pPymM%ffIhgY!Tw6KDKvTyPRQ*dB&3Ix(Csb_??W58Ef7@G?Uv4W^b!@@2M zE{vP#tV)~-aiof+mePlcp`(+ZrVh5=?!d|I>gIg8JMO5E&^9;YNWmV^<`w!?NlsU+ z4QZCCPa=9A(`u-zFwCv=E7g~AEk%lGR~Sf?)` z3st{dYT{-%!rT4{PYs=n#m3pWsoM0?Ry&c^GR&!#;DTG<;`kgW55{V9+>gZ+v=Whv zdtUde+vB94t>wtP!MQ$*XVDn0#C6 zcTsAW<(qDW7E@4M(@#@#UI6~d{aQf-}Wc1ioKY9O|)oOoXu-&g@#c=I3l zlOT7*P{n z(fV%2t0D^QN`3j)Cr%zF^&bCO^_}>!>%ycR*uTfa+*au2Z37F4RtyNM+SyoAfCo)) zH4?R)BLA?B8TZ#E7t>h#6a4FMY6N&Oro-H@CX(#LTCcF7n^z1Xm-aSl)YqWHlSzoH9a@y2xG;E!-9~Jj zSdP zAxR3ilM95SnQn4$o8LFl$vJL{x!ZHy9>V4Z-CZy%TC8<5vSnqoB3Fm?Wdtjg({d4P z;BpbAhiW5m6nx&}phwo$+&(Z#+WtSZ&PpzVKlY%TCtgcVLcaap-`}X)&cbD0U>w=) zI^9w-f`Z$YChDkpBQ)$@4^0|REP%;?SD7hbk6Vtj8lAU22-)^+Jpv+E$Q>lkYM0(k zIj|0j78Ln}l;_OLyc7$x`SEliQ5H%x`wc4Lq!L%;EM;qlP5GfMnYb$$@0bP6-xHR# z*_iPuy&QQma@HY36O@Owb2+O(^|qw}Tq|H7v$t_%QrieP17grjDd1q}XO3TLRxjF4 z=f5%A{N{Sj_t*?;N7;l%Itj*sug^&fJX(Ef7i1^6^8JE;58X{$Mh~ zIJBlsK3`#-u+a(>S5A#><5Ib;`Vo+OmU?pMbkfAxY<^z{2JzX7alDf@DQG7^Zahv> zi>s;}&-Ra+b=R%4_b50crJrQ`^w*5AK#PEd(~7P-3+kyph)gI1ptojml1_rRph9&g zW0Mtf$M0Lu=+A&_P9vaKjUlC5wkez0%_aIQE3;x{E!9JpZhVzxY)+W$+gEs%ijxf# zZFO_eM@cGRg*;$8I&695dtMd(m3r!%{sSu}dcL_a-+X&HE@^YJ5Ih>jk$hYD_y)g# zW?HhPXlpgiT^f^#u}h$aPDe;4`khkZ39AW?KtGD>S;OQRyy;)0celO~)()OaTD}_5AicPPZlKjL5afM4wK)<01`bMvTaw!}gBYN?S zb4N7sbhT$ywvL|?k(uA{?%kUP>D{-9K$u~OMAlui;zHNS)G?;XuETr~67p*(*jOpj z_?UwzkyHye3Vr<3Cey-1?!f4y44@3L7=tO_pD_}OUbjub&o+x30mpA1=_^->r>0|t zG>MBC&(6Cy4HXGv-2_Z^#9lz5l~nL}CqMOh-mQGydFWvJ5Dw($ULUL7368XZx06~~ z(&)_W&tR&)7G(-Us;(n{Xb)`v^)e0waPn)r8fs}^WsJs_411lv6BZUNnV~os!8&y3 zgnnZHF*DY{-5El~&QNYz%q_$k!8;`b__Du3P(%-TzjSDEELWqg1Q=+36i6BdAu z?2?(xfWK13eOStTnoe`ORFY*AMcy#*vXp39PEs?i9G~Jj+gO6XYAzoKdb0n7b>`Y* z#dZ-cZz-Kg;8dkL{MJZa!dhF=vw8LLx`L&+#_jy=KvRCao<$eL#WNxV%k>uhPw~e}6vU&2i zjLWlB5`peTyw3|ANnsVWk)F>sxkpbNDCeN*IgG|kCz-0?MS-t2b2SW(mSf%beqgwalffskz_d%bs z;1&PVQ;P4u`-lA`V|ygm&TX^lXj`M*-57OPhHn!IV3^cwz5GMV#xmbc)PQniH;f8y zciq9s2>r8LPE|4}zEbrxov=rL!Ka zjeX-jui(15c|+weMhSfX8PbjtjIt78f-U8}2}?r+a%Crdluy$qBUt{Q2|=yiaTf~f zOdQ}^upjWLFpI0N+%Onw$u0&B$sW;!6`%MM8++7GjQIh8Q5!0;o_LoE;_xb*Xo1w zJZdneHRQL#CWgTwHDE>(z`*x8skJ9_*N*Kp|n-OK-vmi_}9`%jx1?; zgUHPC_eU1{m8(Su1ncymI1*nf5o^&23rwxa0-=C{dp861xZnBNFfR)Gv@qHpxDho%#SN> z6oaD=Dn8mMZBxXAqMo2K!Fji&QD}MN`t1U{F-m#}NEyotOeT2gg%*ZL;H=-2slwT! z#Mz{u>lY07g)ngY)!ZIU9b#0;)A!@UD-TDD4o)26O7*tQNQhGZ zG9`7{CEOjcuZQ|Pn0Q{dblr!Kv#Dv6cM|T-goVY@tPxEEm~mhnB#8n{!j{FDboxp- zJBIUBsSF}((m|HOvZ<6qFFHexw1)c)-kK$rXyY8Q0=`{*!xs8zcf9yg#p4S@P-Yeo z2w_MLU66o=GRzVIFiiOWX71HFV^L%yN%Hs!#f%}TY4tl`dxIgDNQnwMRdW{Z69x?j z+@6FqjxKR5XK4s4Yp;y6h)h6pvB0`DtJNSs@T_vo0Nwq|Y>8ty( zkdp`{Et=pGt)q$nnh_R~=y z43w^hT@%f=y;q46B+!uk2)SSr83X_E*nTBfIYC4rWQBfk-HV8h7Chd6aJ)uS&4L!^ zQCT5#SQz%B!}r$@J!v zhEpVpjGROiHI5}Q#TzQTsSpJan8o}RwXc4SzU%EclV-EcKCL#U%!;O#T>(n9V)d4< z7o3(zJ~zThG?&c*mgP8QbZa@^^N(2#$MoE&U2gqZ1lN7aGiw~>J4kboIlZZ32I_~6 z-mwer-OXJix!{So_o5D(Dg!iQ_>RgNMd^wiYA(rz_-9hPrSbt^{n3oppO25cT7B^Y z27(S-+37~x>=6)3gtUY{?rdD#$gi}D&}KN_h*F6o)TogcD4$4q(rUN2MAvkErGedV zt*?ISf>Z+~v~Hgzp%W*`)u1FH2o%u7O5)5tVGHF}C^k2EImyU}2N^5mL-XT^7tBok zh?TbYOU2?PMIV1%Xh|@Ich9q7A z*0p=Jd40xyP1XB(c(jUgGM0R9SkE}O{4smrb`A*{w)SP;alS%vBmJQ{ogRU6Iia^! zGVPtdwMO4u*XPG58R)&Vxk0jC*0|aZ0q>qp4X&{@w!FgE^djsg8Le&JHarm#lIpDA z_If@}ULJ(nTj!7-z+lDo9(`mB27>je9*kspyAUnP-(!no=cL92lNGE(x~&Pe@1*Rl zX2+Jz0@{Mn@7?OB^rkh3s`^7vh=5Nf#d5>N*^=ef>9JIL>FsG!8;T>_hYWCCi2~WE zJa%!^K_VcqESR-SBuwxYs7)`lyW`*T*u1^KSp5D)->xtpjT($v2lB5@#5g7xT6iaP zgo%{mk6R#p?Pj}$X@0|{$c@adahtchm#KA+A<5~OZV(ui#waiSq4&+{3E_kTeIHz3 zU9j$`R3VHejyZ_=tn~gsWx&w&057BlORPI)D9iT%9t|;yQ5^Y%Ldrw-qzoQY+$%I{ zot`Sy_k^uHWXhXlYf*riBP?1keUxA?6P0`!Z?Z_gkK{mF)Z~&yp|?*@B#6u;)GuqQ z{$z~vMQYOOg-0AUxHIZ_yTjRvkc1vBkcl%m@S0hCyl8ewq z2c^q*k@AT#UL&mQSdp~FZ=RTn@{5oB%V2wW)7I_A?K`xPl~y4_R%bY}qr&U`XZEcD zeLB-ddKX+`r$&wlwj~R!HqCU8vr4q92PA+4wla7noMKaK16&#e2%%YXS~>RlN$?jQ z%T%~I=}Jd9+lN$6XLX>->*sqnxKk%8ZsErZZ%SSnQ=8mKuVw!M|JnMa92Q#kZ&Gf6GV4Ur)x`&+%<+KA@TiZ+*ej!pm z^Fvr=6WQtpIv>DOai%MAu2n}q=CoPkZPR<(nP3?)Rr&69O4fZ%vLtG12wPI4a5p;w zoVG(y0QnvbD<*E^abZ98@Zx%dU`1)=`ch+2)b%dv5?wP`zrv9%z{Nal22=6G9ZcSS z|DJuivt306+Qm-e{Zcd-%=$wucIWy}=1Nr^-h4BC|5v|+nWCWXF(d%Me-Pz=Z^F^R z0|4OtA0S(0M*~|YYlHu@%Hv@T8@o*oq@Nl+fjoZwQr-4UUrvsQ`kkR^tkhJZ=NH>3 z05DnwI6G1WF$IaMynoh8@r&sM9QO5LKpE1+K@Sg8j;#DpA*S9_N=WxH2p(iAR7Ak^ z2h=F=;Dor^n`Pp`-|_X&SK)dJ$Z|u5`XuF=?EN?p!GYN{1qt&uLx!6HhMBAgW7_A9 z9gSQZpSL@BM*$6SIwrJHYYFDutSbFJ9aP}nJ9WnkFh^?-^Y5N;Y0rO;?O$&sCPAG= z>v#MU$^sCDR~VK=g~*P>SnB$H196A%Q)^7eSZ&AHVM=0nI!?zwZN_N+E_i2ZH1FOL zcovd|`Qfulr0+~hQ(|bb+S|axxs4tsqi6`yJw#CR?jtyc`yI_dTVy1(7db%j9TCx$rX&P8w$jAY znAA%G;;1a7yWKf8HA@Th&4ttSxU+z~633ML=#cxPxTSM5+yv}$F6HP8^zp_7ZgCYl z;aMQr3xNCxuDiyM=;t};Fm7AX^U%TEqUYoi&T)N&Ha5QIqXJ~amHPen7h zaX<~l{c%220UrtDiH zKsjcbx`D5k?`q<16w0n*HRDL0L8AT^n|_$bJet5C3DHouJ)VY2)iixIHx$K7ilCzH z0<0!_7?8Y3UO14Y%LlS=6iqoJRtM3*rFr+Hq*8mlktKkT*4b_DgmGZy>_L`LE@EVe77(k@aM-tWTgUT^i){AuO{!EJ^d z&rpUH!b8FatwIJL-sic16&%5}TAI=2xIN}2baMjyO=ojCOmku&*^qV##lmWG0*%(B zj3OiD%T8mnZ+RK)uw8c8jcQ%nAuY2&;cF*9#F_XN@P5dSU7%H^XE7mb=?z~c`^Oq; ziJ!Z9SL}WTs8V^`($|XA;+R%T#}_ZIrH*Uq`pSU&F{g^usF7s46Wgl3`n7Y*1svJq zQ2Wn~fhZ6$$ zCN`Qe!>#zBO>^*ek|*tUzou+%5dUlcC@Ml30F-}2UCHmB=(>p@7iv6~6|40AnDH|(Yb-$xRjwD%3**9(m(nujRfs4@uBl(Ut0G1p0wE!=lC1TRkPmZ114Kn(?}#E=s3kfG zT#XE{%5-a{(4>nZDv)y~J7k-$z#9O|;s^ZpYV=tg@X>=*y^A(?wttsuR_dx@env~(n%;t1#o=|~F`gdn^QoXFqr zj??@wT5NH}Oel=#lHKjzb3Ax3dmn13w8%7I-xF!7u@ZYSQ=aDl0UFa*%b9cbtS%qu zNOF%Ulu>l#@uLB382tD?=!oG1G!$D|oa8&EK4m*j-u zVMK}%`S$dX^C{rNLz~|Wsp>&S)Ci*(8OH`gzMbL=;YIp@cR}ECbr1&r%9RqK6p70} zW-zB0gxu9?ISckD7l1dRv6j&cn9Flv=Vtq#(3pHg06Jmk;Qqn+((CYSGoQZI5CRX9l< zwFqOLnBkTt(xmG%36q`jF-Z@G{mXm6hv_Ni@e*XGCV5=(O6=;|Qu&6_3p%Uqu zt44@3+|DvUAH~FIA@+IExnvU~`su4r%mBrQIz$YsFydJ~Fp@tIOgVL5uPPoFV+~C6 zj`rD+j7zGF!dpdV3bI*HNT)N#V^m{c7fn2sL~7jTk_MuaAv;#6MQ46yunrE{Mm0q&PmKm@2xVMNO*9uis};O9 zmx{n-xX>yVm@)Er!fC=&KAMM7=MXzb(mu@tFxI4R;mu>`q(B<( zl#B1-;s9g-^539R*y`TKeMCph=X>nq$Ay}n>o3-H6Tis>Nm;37!-Ub%Juk4@ z5_K}3$0dkuI8TBkFao08H$)x)dDLE0FnuS+r+onkgLISbj2KBY| zWl@!y_3C70MgJT0^-v6JUk&@W()c=bPwfnt&3n zlA8z!wP}*{JHvPOl<9)y$8ez9rKT3= zs+zcuww2GVujOWXyJrjX=PDy8EXb2~p7Eo{*?p#J=8as&35jWR!-=?^%Ea<3c3o37 zt#v6~g|)5bjkYK4@5QFEH^^XbVD?0OvOZ57XO!!S;+_QEJIW`7wV(EFHT?CN3zxNu zq;teAQ&&r}U~6c5{TNUsWw|Ujq+RdgR0^Jz{H3Re9;{aaISV6$U=LE`!hl9$s4A^y zOYvYN*R_!JJc=LG_8=GRisxjB#b;XJ1qxVZwaSZadguffiiYY$lg5)X+Uq>A)Me<` z>|Fcz&vWGEcdfj0q!WtawA^B9dtt%;mqc$lrl3>K8?*mehyay z&n%P}{}NM@jYb2GX^c{iC&Fc`YCuSa8%~uE~?Ls73^3@+q++k}+Xt>Q8}cn z(P2A9It>+W0>?;P&#BHKQ4q+gWg?F(HMETluJvxMW^Sy%ZUf9E6rll^h7QGIZY-Q| zQSd;W@-Y&+$uKL4Ed#5J$figA9%LveG+MNXrI+$P@hln$kT&X;Do`sO`3S@HXyI(t zfFBYm!}2zlH!xfIDygdJ+L>0+*qQrx%x3o~D-gho_k2`|#*8)6g07V_pl1$353h~Vsk(FHIS96D+^PY89yHN*K+9MwmDpJdZZoICS(9Axc3ICE$ zHzfd;;7?J%S0C+f^fMsmf2~ILzW3TB$ZGrIJ0~}If<3Wiby5SgDy5#Mm!Q31d}vLL zecC(Pc<}Xfa%2AB>Gj?+4ljKFY_uj8=;;9$v#fw|5EIPBYr)h+SkUucm0{>?&uxJH{fP1Y zJa1pweq=Ohux9Y57TAUh5*Pmvt#WXkZDfjhQdtj%N*`9&SGqVTvJ*F|`O%!a?!>Jp zH=%BKF?axp<-X3`Pf%hMl|qInKi0lh(WB3wjY{ReWweGvHT;H*trm0c~Jdm^~Qfwjof!dq3Kff*_23HagL zXU=_b{qE*dMA()s_Pnb$I?d_5bnVgEc+c9SbM5@`1@ELoeYNW6mg43Hq0d3?QiHaw z^EyN6TFpNQLY3Ac?l;AJ(dXS*txSeEE!fK?Y2nJhSnu@r?JF`a+R=ib1=lg-@~g|q zfoMF-F*&bvnDq*(bg$UIT&7?6{jb4u`_L$_xqtN7f8gW)xA4pQKLC~njz;GHL-iLL z6#zi!e|pLPTMO1xQWE*!W7=W$%YVEa%{)6B3I1e)nLtJV6#q*TAr772kaUy zm{3HraHd}3(Fx;~-yccep@{4!hwT}W>@*_Egg*%di|2ixoX89&fS_N}5UB`q24kiy z4gUOnrcUj77jUPeqXZUdAi|2;7)}FfqNTu#X@^F_kl;vD6bm*amC27B8Vrl<5M>-xjk7S!JscBaNyH|Hmm1c6hgpl;ua|Lj1oR)vvK;fk^@p` z4x(3-_(z>qvo(iFauih0lwXLC@*b26_vl>l1V(XAk$m^^6t&BPm+sSn{uJ+S|2Be= z+YFJhAfedV+FFbTk5LYp1c;^L-PGy`fC|(DXM>Ndvm`I5QK89B#}dWX0_7Z_kdXv< zQiAuzgagFWq|&pTxeQvGaUV6nU0m&3V{9;b>n)CyhK?Q#-$ptydVF}j|9l+j=)rgY ziQcsb7254G7bYnpB0TE_L+KGp9wB<-Ap-Pf{|mJGLqZ_fM?J9)`%F8Aw_A|OQwj_7 z#4vp3BNg$4g!lP2_vaXS2sJ3f(bF+-Qwtkc#R9rSK>Dcf%@$ye0#?8Wkb`$vI!X{r z!W}RHnM|a2?e3^ZyNTsd1Nbo|f;9pW6_&{_9~=V^P3(J$s!XzAFZR?OIYC?+7_A&9 ztOG`l*a=BYP<3S{Jg@j$u8$aFoGgX5GTv@$0Jbrl#aejSsXM9sp{wqaFDNd&_ACKC zG$${?D}n*n%M$h1rmLB$UfZ9-Ht<-qRLP*_s-cLHvPUtv;cs7`bBoBRq;r?vlXY*| z*@*MB7laN<+M#ITv z+^j}f7Pn=EHftdhN7jl!WfJA2`e~M=P~}1QnI;e+wPBSV#!-@(2;MJ4UDpds&NW%k z`_Hj{n8gj{uhYDrSCXbJx=7YG+p>3Q742dZ7^?TC-pJ=?E!8E^0vQXt{e+6(vH~zZ zVndqVbV#!h*0c!ZWALcp6Hn*>EWe#{QiAFUo8%(*f$mMrOZ^x$WX__LoWf_Zud@oG ztz5Vlh0wZ8LsFC+0Y7=3BrYXYZj{W1G8UWTZBTi~{{G6eof1=r2xLq4P1I(lyPX~K zZL=lRb`TVFeaC=drS?8A!aByM`!l zg^Utk{LqqwLI(3oN~IUPEb9650p7w*3(I|qRFdr6wQX-6ob*HNqerSkv!(IX3dZWC zsA%g*n>q{A3!fR|$SZMs_%pT1-`j-0k%<*uSDFOde;>t*PY@I2_YEC_?|DL(FU-5g z&MncjYf-ylCru<)lPk9b`wwNYhXP4ToV7fggWRea`s0VC>oR0a8j9}+keN%XR8vL> zDxJHP0(J5b)N9>9QzoMUdOB@%xB1{^cYASlet4B@&3Khl;{SBL+w*!K`|#lEm8o+3rSbr6-;>YuC~>o-uBde= zNZE$W-7^+a3+V+?(1$gue%QUR#y2U1P`&{@V|D`u($fAUQApBOpNERxRdRBtwF8uJ z8h$$2@$B3<3fXZQaYeK(W6Es8$W8*C0i5wFym!`_v87mX@5B$luSkk}r3UH6W^RnC zp@r`>S}=bnfJ)ep?3vhpo(u*3+wspsr`y3JYoOj(@;`bW_*{Pm02t;uRwBMoWmfpE za->3e;$+S44nW_V^6n!`u6DGB8)1y!D8tccW>$`T`0Pi(xq`d;{Eik`o)Uw-!_^oG z3LH|Bg#L949q`p+$|MlP#8J1=gM(Zp1{YX5k2ipjw)TCdaZ0ob15q8-j-|tQeR})! zmI%_li9T?kApz%X(*~U?IT?j0?lJ2OWP%~Qxg+~x3vF7b_eBourQ z@cu2qjDkV}J+}J}?x+E}bvEe7)EJh?up@z0&8iioCTZb-x)lhyk?2DoL*lwjos#h8 z_RV6H7r_@r80i0~y zQy*?!0#;6%H(>z}M8THPMbB)D)Y7QNK^OW-s)& z2oSTSQRVuj;9q^fN_Q=p#Fwk#N9$*+$jj^-|SkD z0vb?s#aDmYuiR1&7Nu~fam^!u;@{?WQPkx&HH7^Rg)6`VeZ*=40FV0&Cj2gp*F>Q9 z&3(r)+!Q2`ke#G_ms~lNnzAPFrRE1$@jE9Vdzq$N9|B#Nj^2Ij#i8ho9Q7+6@mw z$YQweZfr`>8_$_-c1$l^x^^@J}{g+ddD?(+Ns- zv!SHNbp{gC7Uxo$E2vh=$@*c!$>gq%_JH}YtWx~cRy(zQ9)wpiDml7dh*6HFG!P>=Zlw?Kb=mcS4vM#U3-tF|*j5E+vC7yNaexe%oQf9Jh1Dcq9-zzu? ztL81R_yAR|rz@`c3%+jbn=BzAh$sT8Ud&Ci$dh4wi74!g9%?k~2pQ zN}cO)vVxw9E;xjy9|*Kd`xM4}Bg>Q_hia&Kw9lK|AMVElRpKCBa%i@fEa`PVy1E7u z=>Hain!HgQpr&PAH;RNhbfl`?FdT$of`(;p)!H5)paNO4`oVst0nYbO>=C$$2Us}s zh4Dk&nLLwC$g3ZRK6Jok!u4%y$3ZSA z!`GFg>mGkUuZyZ+JOMd#Rt>#CaKH*O}2FH;Re|@?if7!UX@cCK;~qE zwgp}~%JkZA!avoe-3V8@xX>ySh3M1u-8i8sbEOn}V#3iNJV=q){cZJnVNWS=8`?uj#YC+dGz)uNUL8ikGyuUq2ld z#MWsMT};$|Aq3JZ=98KY3~!B+^xNJH`kl)D_g>n+)Hc7VGgz3THI@Ps)W8+lkZa~W zZw#5-5lOc(iCJ!Gg+MS5HjhyeY7&8L3|Lvj$BwzxZ}m5pT(ua1P5t49CeWT(3o}5H zgKkR8qf{62pK9GfnS=`auGPo3Y7Sx*ZJa*&SeyG-H{QZHVZB;SoHe}k2%$#wx)XZ; zJIg5>Khw@*?OqJrVMhjt?vMXqFTJ5F~YEtVv85LPOvQbSykWX zSmwc2d!0%T)YIx3J0oDzVpIOaWfK=bR(-w;q15&LJolG7S%ssP-lS27dx_a_ukaIB zX_82SkW2qEel8zY){ zgn6t%=y28)&rG157ZyjZR{se$)(t(b>8Laj8*|zWFw6>;dER%`eH;CL>D+ewiTvRs zaM(QqzJ0X?hh5P2#4Duvf;Wivxdm12I6xFw%?8{e+30QLk!4dt`Nn00cjur5cU((2 zltFQM&nBYfTpIVGVnpeEFz!R)v7V=3ZiN|XKG-}2J5Z;Ja`H9As8AEYx-Es^{_q+k z-^E2AnRms>`q~7bF^k9!s1xFwAma|3v4(m&kF~ty@YZ!QBWA#fF&T2V#cVX2&204A zxw|lH4JvSF$8X4Xot?D^tprMYA-F!Ve^*R_%g04C&RHDj>-U~7qCCxTL;-vgyqFU_k zl-_Mu`%cOFK>Dz#=XL`XDeSv9RnJ#A+b5tCJS zLW`@ije$-TL4ys93Ie;{#&hN9+lp?v9&1^li&lH zlMQH!O*XhzxIQZJ$-2pLj~{+73&^I}RMSrN&#w(bD6=dJ&!<2!8za?h(ZOm`Qdb>1 zWTCl%xTQ~OG+sTL0~&zVs*xhW3b08^*fFe#3&vuLmzsPJQ}tro^5wU|$hSeLe4vMn zOSOZTtg|zMuE)plHl@vtH3ifu1h>BdMOZc{jaG2Xc58u~ZSNE9OR(ZkFsZXn^4BNr z^Nb`1aP6;N2-96GFOp4fMWTOQ0dc#)dc$Kt*;DjV+P9HQ_hUhGuP7b??cg=ir6FIfniA8W2^1J_8 zjXuM55Uw1{{E*-pSf?NPYHHm?tpj3cWx5tk>JVX++404S!(0smzV4(Akxbg+l2nv% zid{k}_9l8L7F3fI!7Yc7R-~@fZ}u7A?{?2_J%u?TRlO>|=++R6TpmNsq|!9Jp1r3C zVKr!nZvggXiCrPZYDlcJ_<3X0BIGVU5?KmynQIM90&u~rd3Jz-chnv+;KQ531s5fq zf(J)ZO8vSA-v>5i!skcX-a2$5n1D|qm8RD#p|15kOd=vGy2m1qj-18_1VmEnRn8Iv zm+C%ETer{5h$jTa<99;b=nA1{51KS_eB$cqvSa1wpE)ujX_O7LS)}Q@i zr!r^;VbHE-i!-N956-bsAkl20r)ymeSv`b)CS6uvK(T*831{M+~*X0#Dd)Fhfob|`s)>P;4;x` zGF@sPUP4#Tkx(UgB;xX1Jk^*u$p{e7pHrQ&pzGa(pYLE+DL$;Fn~I=WJbUGk%ZOt) zphc|q{Se$xxI>9j<2V(`avG3TTEIIbcx~gaabnC%_3b#2U6X1|{WM)cgr-BA9Uw9m z@1x<;|CQgunWMXD$+%_0-J5jTnP5bng_K7Xs~o#{mHFltW^y|w?_zD_i3+CLOEat` zQ3L%o7v%gXD}6lfge)?oT(})hXu;L4d<~@?B&5`tq&$zQ2BtJ#BtzMYxTejv+*F{+ z(a+XA5wVxZ*D}@tW+(GuFz(Kodf(m*!?uh2!BGlnhPeAoH!hVOB-@TsQoBKpcRG-t;bQf>F4Eb5K7 z11s1n?ES?|kXRT&P1iND7C%ItH=ZFIbkIZd%M8PKZ^kSv<{cgy^;L6~HB9}W^ouI{ zR{o1j#Dl1ZnPFxzQir#{E&WI5fcBmyYd?9#JsXVLH{{W;m}Hgau22Ll{t%Pp82b{` zbWH)~;I2N*hhO**{rGQ`jdU|RxqU`M^W-j^@SV*YFz9=dW~iCWt}N_1w&1VCV(TK2 z4=_=$#|PULA$3k%4`n&F=u_`PYiW_445Mk(lTFZmbj6C6TuRO#FE6l+pV$O;Qm@Ka zT}w*L#$sa+dIh=H41P^xyFi+&dGlQ37q+Y9v*o{Y8C}gCdS63h-N&gTxjEn4S~rU; zE3DduJ||Q4j%F{Pr*R*}uVTiD*FA<#sC&(KnH+G#k(X(?^~b*H4Js)QUCg~V33~RG zM9ATiIHGFW9|zB=ReT@p*hMTV}P|0{uw*| zks1Fz&A|@$KchKBT&ztT|I7RFe?W6gt7+J6iX!-))~0cp^G|SzUlhj?x7HMJ09g-) zAF;@wKu}v!R!>uRO5saVG2J`jBOBu zd#`@~U!0v&vtYrNgpY08wr$(CZQHhO+wNoAwr#V|^u5m$F%k1pKVV1HuFA?>U&6*= z#_w~SNe-sd=nq7*+PSQ~jN%g|2Du7*YFsk>m0i*S!+ELY=$0~->8-PIi7nmB?00<1e8Y!zoL8BZHG=qD2ATz(>neJvC9Y|S!qC$l5U)4 z)lZDVE@U59K3op#TfzZK6X;r&*{40|XR&FS1?$n%$+#_Z+7Zs>ZCSn2T4hEgqmCPw ziyJeKei)f}pIO*=nDFTGu;mp7I&4oiBc(Z|GREkUgz^ELx@^^A(0^h%)!L;!bV)V- zJSEbcVwv0TAj-iC0-dk&V@TIIV^SnLW>hi_C%uYT8=p{NrdF^$JA=vCDyufH>s9tFTian6z8qoyIW}A<3%m9Om|M+|t|XyTdBhVD2bqkp`O1mjDCB09;wp zUQVC%gUA_37`$~FJQ?pd`m%M{+UEvmIGcz9i8;^fYrok%TTC*DP#jzzKSIfshSl z``7Xof5TNVuup{e*>jTt67bQ|_TEGOeb+m6cemUJnqav_kebrKqFGrbJHv54>{-&N za*Nek($D6rHXRK+Pytd#UUH})mpG>MVn@JuF$!dNFbnRU5Ev(fimaMG@`FE z7(BpYfS7#ax5eG!#>66R9|U}q_6azds$TCCo}j$>83cz;rz=BlJ{Em(eRBA0@w#cI zaaDHZrqr0;Ckd@2+M)+d76BB`$Q$8Iv4jyvI>kn$z+vRDDz}TImYQ~PZNY{~8&|gU zkd0~S#q8OhkrywXtlq(!+l{|vnt|cB*Qn4CQUeI}@&>2`A)1x8Rgi{dMc|u6X|=#l zkP4QHRO-??7}jQcdh0z~?`wr}%6ZS-!2ob)5Uou>@7(TAFA3~yh|lv~D5lafVm7xrqZ&0$Nis@~xS2U8DWn?309w;P3eph8sP0DSKK3x4{`gq(LfOV z#Q5HHu@}{keL#7)jx_-`p5Y3mfU@rp4c-9NZ2XUS;x9-wKZ_OJd)Ym@ECXB1#kHfN zJL}BIJa52Mp*w)O@UqZQY^cX!VK2v&t7}u3kdf*|b_D!6IriMOlkvgmwpA(zT&lW(DVn7f~?`42r z%lGekusJni_o@iUI=TJ3Jp4WM>QXTRWNOTru#dn+afxWyHDlE|N6VRm=X-_{~pT!b58v4C&(Tr007Vb!)z6_ zu{5_cH4(D+_`hA&9_)Y9wjD2j{6M)f9ZACzjktNm_`0HK$g@7j*LQ83Uf{ry2%%x& zX(2bAcrNVkyg4N97ZYtR8%+_%yy5Ts0M@S(w>ag;W4>bge?enGBh5^P?=;U5q;O$?% zYSW^Br+LP3aQn7%xqzD;yQ32?x3A~xy3?jFz+G2gTY<9dPXY~Xl}=1BU$lC0bD!AZ zjRqn+BxjH4MhS5r8~WmqLO;&E=t#h&6>^)w@67&WksJpo!D70zZJG8aV+6khBP^8G zAXgHp+S*!+$G2`xT1tV_J{{3K*S3L z15o`Dsas3L$zz}_H3USDOKD;x7V##g3Ft_B_BnPH|G&-Ds*xJOE6%?AmGC+C6RgeUG z)5=uDGvuy{K}-_nU|2rT{eI%RiWq{ZL=rHegWty2* z`>P0i)0uARfUQiIM7-kOWLAe|Bb+e0dKWL4H?^{Uk|4Zz^%6Ip8}7vpD(L}Yl7V?6 z_|_kkJ25V{d#BH=&~*sUrmDWi@XG`>R%q}>bEdg#GS^qIzm=B7Di>^#!)vffzpq#P zj&{276duoGXzvNJ`)lP0@;P#t@cGl*Mw8IiDsr#(S4 z!tqXpNMc-m&WeE$orlNo24E>|%v+A_zPx@tpEr)zfH2>2pBIZcp=i8$zdJT0BFLEy z8A6U%*Vux^z`i*2ddK~~`jTrMjNf>cP*(So4C^ZNQNXm1+eva%IN9KSj71~aFHQ%!@v=Sb6%e^mv}hD_pRhnf z1T)v4BYLzcuQ`pM(e9+{T2-7@;Pa!M)j$kv5l-_+O2hPd(yT<<8AjFgyGdqR`%Gs> z6gyO60$hL<@64AwWoFXP^GGPIWeXy800?2AK0={xske}LP$9)xpdBE5=llI zeWV4MfpOVgs4JCniV&?q6tFv6m5Y|7uyq__nG0m{GoO-WTvW(b>)-$YBk=$!IuupG|E|acJ?}4p!8BtMGul zSZ5vNou*Ky*>Z{J`|WVki>nV;$FJ+_U>_FzG|=kJ+x7GDx!CjbY`9EU(jS-l$$k9B zf^80JSE2Yv9J?9L~;8Y^~kaJN)WA0|$WcZjAkQ>(_H;u z>k=&1>~^5{lOYREJ|M=n-W5*O8y0^CM4x`t$;Qa5aAF#pV%)pv3Z^lPLbDH1v08a~;bj6=B6Ma@6+scK- zQ<4YQOcYW^3v-n7$%t@_>3ya9hIv*aTY`$^Yl1ZI?VWfM|Q%Hpn+0qUjo2{GiGCT9Oi5A(L&O|HLvVOaA2 z*fq!4o)npB59x$$uy*9ik#e~z*iFXO7!%NXF{Gdmbj@A+f2<5O8_u=3HI+fpO>+w; z((#2h=Xlb2751iGUgbZ1J+B)b3jJ=qsyLNnHYd-|F~GD<6KM|J2!30#;^U@9kmI!G zlqNW($o|bBfyQGFr>^AeM0t9y^a+#2dYbn}y_Qr@Ms&RxmCJOl)p$j-N?Vc|l%L~J zLAO;++USIE^YCGOi?!BgzVd!k&~#4612wNc8n>X(Jl7C$NuJe`=q!z`U@0}2Ma{vB|mEH(16c8{Vw1GNk2EbM_c2+G3~NM8k@)t{&d z(zGK?l5uQDmgqn9)-Xceb6d5=XMOCgm>%Ixp=uV;JfS;~3Y!otxVO$=69I1V0Fyjv zXQCKxa>?-o8%OD(_--DTRWD7hLSm&9nMupIA>70rWBakipwXRr{bsGvp3o-_dHL>{ zr5?zEs7;YVzd5<&^%`*-+QT2&1<9oDJU$*MYo^0(S5rh-wyL*bi+`%U0?Xr;^=Zq! z^C}ZU+w7kSYSRl4B(6U8jOl@u0{S$0mATgtYmzADp z=8)AJI3*()HYB>EP3Z~POcKD0ip3egM@teDV3dmx<{ta(FMaklg;|G;(@)C{TJr~Xib&0#HDREV(B@8655-|K8|C%+RtaP#H%=uN}5;YZ5T z;;eE*Mn=PxJ1RSaUo)7!dR&vXVHm94Si6ST)_Qge z>Ov;D6$L`al9@FTIrESTOXr$zQuJ)yTi^3Z5m0|AwGG*5klv`m=Ec&`A6#%xUQ@fN zt>Yrty#gA&s7ebZ6y6|Y!_RyOGz*q=(I<0QOAXTCXwXd}gt$6YUb`)OCjJ_Tx`}J6 zk7h;CENW9mld*IaXy#SXEXL#4pfQ4&hYPL4JPi|3BSYjwLd_Ys--zvG+}M^MZwUJA zb69+o3S*u&gSKmMJO1U12U8+sW~HRpwlG{3H=Rt{^;o={8;P@_qGRE@RPg@TEJQd@ z(>n?B!#hl=Sz{+?Fw-ep>f~`n(4$ZqE=dpm6J$tQ*Y~)u)wyn5 z-R5};m>{H2p<%^R0QfsJ$ab_QJlZz1VCy4no2=q_0jntqbq;8qm|_}?C)R+z7I${ zWRE%&`+0KPqmC39~|J)#d|C7WG@%!K&H#RYf#`b~?BS015)_%bF? zo_^oJJs>S}C=mU@xVgMw>|*5Hqv_EGkM?A;VtGdyu>7dJ=rOhA@xWujpwKio>ijUH zs3_d=kqqEMw4#9x0)uvvg(Q%%)sD1GkJ<$*)dw2%ZVeZ1?oP|f2!iV$D=-mmC9q57 zRu={5yOby_*y@G(9X;Ja_4iI|OxH9-U4+cLzT@dN39B zRlx6TM}TEJ`=^Dk`#&G&!0$Ug&)EN#mfpLog!o*w9h7L!f=4-3f$nCrthVUIIh!4p z(u)&MJcSRU*4-cLj9w#!>X+1KuaH2%)Ln3p`FSWyT9>tMzW4u9xL(?UqKV-F0RAJ% z|97!&bp8LE^7}8Vz|7vs_W#!EH@sioTVip2U-cQbcTbXWG}^O&9m>~lJKGk|SL-*W z+IF6D`J{?y>?jnamE5+;e!l=S*f~=w!k^CTdfC#(Jq;Kz0Duh`yuE9fp^(^Mgz^XW zD$&bnu$t5y?&PhejSU_6rSN^f({p=029*4HV0)Is(RkIqolq-q$z! z{hRQABvDGP`+EGAjl=!N_+RjNtJ(iv`CWq=_Tb0nwqk!>$Fh6hHM9H812e#hzgP1W z>AUIH$YpfKnmO);mx1wlp#Ag` zW;OP*8!FPj0KGFmWTrPMX31rHdmHb%@p$2pY*;k8;zpM7us1<&ft83rq+Wvv;cD4qGi9Jx@HTrEV!l~1Vg;X8Z1zQC$0WS5qsj%batyE4*XI#ZwAToV z8libuw|Q_)z@3<+<%${o8ZrR)iJ$?-gO)$8<&G=?XFCA%S7J}7H6a{ZwRy5X*H&3z z3nUYKYAl8LJ&ruZb_kB*&ohA{=CC-GHHv1-h5R(k=TC}dZcLs{5Sv+@ z+abbJnq8moj((}xI;d}-sC$1m%39zN7MpJw;zoBEYlGFDKk#YU(#8tkcJI7|O?q@u zI%dVX+I{Jt53vBZM+~3rL-_xy7R-dKXkCRj!B)*$S4mxGWH7vj4+^4~e$P=K!9MsG zKqnC5uiIjc?Doj>PYaoo91L&ufg}%55A3sg+XKuH5r~VM%QFZe#PHAC8?Zm0fm+{t zPRin|iR{P6(a=fSK2CNU*`XB@p&>O5e(hUz251ztRCjJO>wUVO?+`n0yGtNRKEnxN zSPKPUUA_KPN80MSREyXrsC@bOFezRUB&k^5q{_n93p53E(s(}L3fg>N?$i^IlyM= z72=X0n!M(Wy|V0O!*nly9)|_@MPdiI=@lG?g(Y4UpbkCu@)wt37QpJ`HD-?3;a`#H zwD9ENIpS6@WoB%lpaQ-(-&ek`TK(DvpY^xBFPwvfvmQS!wDC)DfJ*;`omPFh>L{Q4 zIg8J{Ua=-r%gZphYJFf3%v74+Sm;xz_`9~W_fH>F1gcr!~VpFv450a#3kyi#XA zV0H8mIY?N1Rzyu51U}XwH2G^;F}X;lPRqO)%^G?Uf?8X@8T>q+TqRh}1`=Qe^AB|t@Kp?v*MFJI(+@33o1X=SJb3bP ze^*g4GzabmE(4dJ$r0lV0KN`Fqcn@q+(J>%Nl=92N#JHM_pw`^h~*3W8@p5Zs0xU7 zwg;ZP*TeCe$M>^)=U)V5l;1Uz4PSZlhue#E?SRd4gd3!+V)oX;LDfe8#TB!3o%g!W z0rotAlDe@V}k$#4p5XpQbAv0JwpMumgF52 zLKbyCR+Sm4QgG^jOzNOY2s zg|NUHt3IY9l&#_=?cpM_Jwr14Fp!kwEe^fs#7r~+ITFCfgqnV}l`sKhA^@`eAX95a zw6l!$Ve`v0ave>S7+SLN=%c9bAdNOL|JdA+qXjqtr)y7%*qHA}$jf))4*-!8_iK;~ z7-`QveAOSNH^MS^eDw*nnH^spcf587N_<#dClfIq)Wf;RI*Pz zw6HfYlXb4^z-+GT)bip5f1Pw2v4uS;wtirrTl%E#!u>aQQW0{Tdtvt8oy^Xt1)O@R zNRXiFtS}XF)+d*VI5;rKH4$#Dpb6J^c+&(5z+#`l^=;9{?9}@wZn`)EY3FQs2JBmA z1^m*>a14#S(eE)of^jP;}?8=g$B#%TSIJjUl*rhyd-RnyE{?y?3 z1OY!ATC*!YZWJm~0>0t74Glx!2E{Q)+%I?w?E=Oil*-i6(k{sh_)97q-24si{LT66J?PgvFEufjbu8&n zZL3fa=^8c2dif<8BpkmRtkwU6#_!(MZeL$tZ^s1z>uw1%4V$$I1&Q^{-@l35p96UZ zW#Q__p^Bx-@kg9><1V-jmBiSB@nTF6eiB;M56X*f4CY$PfSC>Uvz+-~bJjh!L7%rQ z?0goX!EuZRuteTy4@JnvIH!Ky+}_{i-sSr}(!5r{x=4NgIUbcM5cCc0rH~9(l%HN! z(mPZn*zo(qWBS_L3D2+csa4Il%Pv>v#m=q^y|%xbwtcs~*13cAuX}QSJoc{o?f!v8 z?Kgd`RAr!xEZ-CMvT7Gj3thy0Dz;OF4i7G^I~sPI@hI=#oNvevj)&&<_IC-|(J;hF z(=<07x~Fl9C~!ztm$7zNqQzv{P<~IG&EUB9RBm3LY^|iW88Kf*A#;^RnT}Q4evn6F zbsZ}RT^kz{ShG4|OgT5Pns&89-?aF*I{>MgDb5`y85HvSQ=ih1Re<^XT2A$)D2C{H zwD+j3le%Kfl4gn;R0XWi%--nIxKLU`+pFV<1eNU@BnmCoQbfr%uLBGK1<%rd{Hct3 zc}KuM%B0}c#?db%^;!IOlX0-)CUG+7qoW5R1J7=GM*$s74a6*f&cBq%HIS0P5gMH#DWeO}G=N(7I!^B@3a(+johs!Tj<+!2P4WI5itbkYR2DhXZ%1^&#H4a}w56*4j1ko0 zWt&02?e82n;tWTteOC1=Yl9M>i!)AokO-;l%3R6F1z^ZxFk2Cd%TcxUj@dqeJgnn` zU`UHz!rk)t`1gxOy&-^}Ga1}0p{Xn1efc8v_>;MQ%)R)Ql3?zdDLADJ1X#ATLD0ZS*9K64f*!?ZX>XHp8-tnaUN#t+pZzXmhgL4b`Dmai4ToxZX1O2SXKzI& zn2}0P{$Ngly9t0Do9yI4tiW8M))j6UF}?IdQ_#F3=3de)PQuNUUzK`lN(@ z&A=Xt;@`5$vse~GwqQlw{_Zi=o|`Q9)#B~sz14N00@H~}qU+Kv{r4KAVFN{F+lJ5M zU|M~0tzO;!4|>Z5zjdGAPM4*wTUWY0y%zht>e<@Ws%?9;D4n)Kk@JeL_tvG`ZcA4= zd3)}yX!X5+PYx~7$O;HAoX3Zh>XQTs4wK&7$l|!t=;?*gY}aRbSQ$F!MbkYP4*brD?Z zfGujIm6be>QuD;gF)c;W0!ZxU@$e}cYm3Kj@!SfzawU_GazhuB&+|`-fKfCDYAfF3 z5P1cAJj~9k7e?kNUzc0x7w>_dKU2<{)iz?YWt*f;_C|o6#j?TB{7m!7ptF~gp z+2Nw~^oPf69{Sp%>lN6|cte3)LGqM4`PmJ#tsWRh9o?UD_4GR}_V)YME>)-NQG^`} z4ciVO{Ga!Q51pGwNM!%XYvVjXcq94Ho>pYxKN7@SYTeFH(`J`Z2 z>RGWkDDM3ifAog_oS&6)TGDugAy}3w#D+#vX^*)(Z{~xVVhCE7*q<*3QBFVjS^T{_rEEgy6q7{>E6Su ztZPRLypXq=pD1oLF>%b^>^;<^=UxjTh z#ZVTEa1eda`EIE$m}yXhP8ZtuvoC{+xem+tdo=1r;*c**x35V>CU}2G(u)~6;)mKG zv~DVPwoa^c+EceaQo>C2Ifrs!o~|hviM_96L5AZjD?hAGafUd&K!p&*SNF)T!)BLj z@R^D)#R%8znk3Jbt%_bMhU$Ag(HWWgOf|g=S#_qU!xsLd#EvEnP=k6wMavojd9Hk% zZB*85q;k~D7O~$+xwGu^kSSGG1yj_}x-2~50|*w2kT6;JLYVt4(t>>Wc7Sg=a5_Th zT~avfb4)w%gmtdzaF(;~g~EH#h?RGiexWf)(PSGiDsmnAzJvxqK3Gn*@+K}RXqL$J-ivsC8O1bUXmhq4j}aV zseqorLG)eb0~lS*8%%dyu_vbm&$2K{aSZ-0q&^LQhNrPYF$JJ^oM&Y4WzD->(E2tt zC-l7iKrw3fJcZE?1f-%0;&`&_!^#j{p40-VDhci=7aOSqRIm->FsyJC-I1f(>BD2b z;I+B}m1;DaIO#uS+3n`k3;NzB=!)0kE-qkhBv9Oqu4;?E5|xAUoKD7}rW1r~1)+HK zGDMC9ibK=FHLw_(pzRCI%ko)=1gJpG-ZdE~aTbrE9)^iYFgrC|j$V|)Rg`pT%o);= zM?IUW4$bnSuQ%>TGD~^L!2IHWHPrQ*zT!v9}i5n&Kz=fhUbnPS(-Y8jbB{vjh8M-jz zcwj_&+YvoD@4gBqrUXA!+Nzdy|Hgv8E4O-i?DgA1P#lLzW~M9)eWO_aY?(cc%9|NR zT@nQlxY`M<`Ow2|omNK&2WJ}@-?iciP|QV^t~m9=gbOg9gwtw9anRII#K-uhRiog) zIROpxt*D9lbsW9nZs$I|X3=_|=F!fm&Q21c2sEPC5ok(ze5^CT8GzF6!q1S-=o}_; z{-w=B3)&K5cIiSX^Vbo%6Z0$Ptp+_ zBSaRph~$_`m&F?_KO?l0AyJXKa^xr8>Nsgy@v+GTl^DT_(_X}2c7*F zq$JlNbN)cbRc0)u>zrhM%=iT&=-HAEbZWhZsqPXcwnO+2l!ZLn@d8z*T;e86ehC`d zbI|(iItnu3vKGElinVx+xh8gDz{x4Ss3lwy)g0!psO6M0mU$uP(*>DiZN^3_X*bP? zYSoJ*Nb(u!G4H*b7bZL~TC2*Xj%Rp1U|D5RZduz@6%`KpdV^E)$O18LWeAz~M|o(p zVRIujH)*hXi$x-%#drOB3I@@EO74n?{E>0WQqfcfL9A+0ae59R-%!+PguqX&fa_AC z6=!R$RY;}}zQo+v#mb0lyRTOlE2z&vLbf(2;n=nz$C3Hc7~mZ5J;umg4@XuaZUOrr zaWuf#Mls=*p$`1^$|ZrvqjbxDR>E1Wcgyh&kafb)bE{naFcg1sIou1{C4#IMhJgd= z_q&48*Lc(LPh%x9LDi~>wh9-bl$}wp)5bCX?UQ|SHekhdc{v|9G$aB4~jv! zmOK2>(?f#=L7`DURD`OSWa<2q%6NRhdmkH!+e=x=L~`#v5lSAXl@uwc&g^E`Wk++& zwb+Teq+`lF)yJi2UhboSS?`wK0UH{N5-2qp1cUA z%~@>}`C`El)O~#8yh#mhJJgtp{ZjH&!zriJ^9(FYr?Oq)Bt(Wymyvi9Zg8$B0k8UO z*^_*2?*wmImlMi>t)}BO zKE~3wb2ZG|uM<>`{f#)gPG7v@!C~@R3o2S?c<_cbbP&3eujPNTm$D(EspfW@I4HRu zTIsB!BFN_sdNxhsxl6m2MMyccb>xXPkAy(M>mA7&J#=TmZFZqfUYa+U zP{8Xj4C6<-_af3(C%XyUk3>8HA(PT5yHA@$6+4se0&gVNtv=}1;~36nLAlju0=V`J zF&jjqo19898nTMPc}bk>9v$?fuQM)}D_6PZ{i;bV%+S6;KO+PmF(BywFkjtB(VKUrF&NG_6=H2W8kIds8EH!2JbR)^@?|>|o>zF}gW4Q4B@x1*`ipb4x4j4_cq~p(WMW#81lOT*L)iTF9nyy0= zNVE?fEyT9xiY!aB-7hu{A`0}9*8qiHe^AtH zmQTo02p?g??_w53b^c>TvbG9sOqNkO43xFeoxrB*E0A;aW59;T@4Av8z&feiY$ODQ z$6YEIyU9NBuquztog9%XBvOA1WS#DrBfBtGBtm$pA#R9t$?D|Vfye6~KLKbyKQ{;-M3$|pI^QI+H_Ck%4MK975YwXN{O=`d;oE=&G3%1Y& zw!@Y1M{}`NA&2`SLl#^5j{L`gZG7*tT)M*9Ukr`bYQ2N}{`2^>&2{zXVeNKfg}!eP zdC<6!co0=`%0104H$*ErJn~=k)g)`pR!uSekB>?x)+{2I)$R#j?UjELkv&Ln*y?C1f1$&2=F0w>h`zAh25#t zO=LVD@_=AgEEgdT4d_rEUQV=uv#Y{6J8RixQvhvvTg-8`K&H&989s?VNRTe=T?j7d zfL#zL=mI_Xl~LLVF|44Mgljuz*=IC>E<7V>0#pjxPn&_?Aj+ZFyE8axvn5LqBfW0w z_v;1R*4d*kj*zxQZ`y24Y0|{8tr3$VSK=-AK{%$&{h23nuDNc^4K2F%Zt8=sOnco@ z?KMXdrjTJwOv9V&*bEx?Q^2l2j8;H-JO*T*$0ycc?VIzJ$jqoUZ)`O$1BztYgIaF}6Na_`Emw9Mh*i!4hPDpgd3 zQ-Kf0_l1Y!-Xzwz8Lct+!Q^siRIyWM7fkxrePO=~iHzK_;ROmqJT#EW=PLP%w8CZX z@p?3Mx&MLTERp511;OAOs&ur>#7Ut9VF`Qh((sWV2!APfD z1H@lEN@kWOztUi~3Sbjj^fOwg@#*xOCD5cPWY?%6%j&|XqYP3|=rg=ck0&3Hs!&+4 zLs(5_x`E9#%ZwHNv5qGAcs523A7X3xjm3(DKBb7WJ((rG$E>@ltQiNMSIJjy4`@#D z^;5|gEW;*AhjDa%n2dfy)Hh~4PO;$=rnNJpq%$oH-twoQR+kc82Rh`;Etx-M{eW{n zX;ioEUAI!YC}rH_bS)Yosf*}okmYnnAcsi}w>Pd=Ek9UzOR$Ekh4wnn7FTs>4M^f> z>sVLamV1*X3->pdkKb#z*3J0b7u1)Oi5PGf!OQgLS)c6b|_PDqrzBkBVpy`FGQ$C)wq zfsy0KmTce?PcS;GMHZH?f+=s^+eceQxS{3ddHLSQJMES%Biaz~lywH2X+@~WOPF+S zLSX2W`vffBR~1B`G$ZWOGHJXfErfPSPtScEMsT5qmKTqp6bJBvVAMG5TL`2e!cR)I z*PyU1wn~+(`VhpJW>Sec!!p%{Z6RQo7%OS!G?#e1;E0v(0%DI}lPN8v$tx725@OUa zXTz^ELk^EnPR!mxL7{fXrK6+GAWJGra-Llan-H4QI6|B}s|-3`5%2esTsVvt*j$4- z=qS*{x4mXI>2)UPhCQjl%~rB~41-rroD4HYpNFPuo|f$nOr7vQ$?yznKE~Nz&!LML zh_|GGrqUzX6}*lM9nWdANc?E`;^x=%6pC#b+bM^-DA5I2TE)_vnUuUIQh6q12yz` z<}dc=y8Kgb*MpgvY`4H*xT?QlzT#sudnfVA=(ZyyMhZ(%zct^OKGO`-;>xcjOm)Xt zdQ*Qc5jHynp4h-AmdI#Z%AU5^0K>b8pK30%VnZSSgAUA1dT${&ysAI8U zxjm~I#awMyJ14_+(ApnuY7+GWBow2-xXhvVhIfRYh7M1CU)y@kv}Gf05W|8%b%x{y znp69fB+q>N+c*AnIVHb~Iy9qLp_vsCfLPAikeLQ$A}!8FHJX;oyeo}s#44QXWZ6`j z3eful+twLLmVF9n>Rb&Gz%+M~ z>K0fI*=;7RF zBLlOvS{?~_Q#3tS)4&z@{es05k~wh>dl(C|U>XeJz+NWkKk{YBiGnOKEuR)tzH^>i z|Hv?cmN!o&tUs9~5eog-*W^b&!J#O68?=*g_Z!~y81(l z6=t#1a&r$H%gM*krbvv;G=B4x2arlh)kc6rA8?Sotx`XRa(wvP&%)^|Ei*tE#D}ar zPTK|QnXzgPr3t3deJy=r`H8MfVFG23&J^0N&#ufdvP6$8qcSq;#}!49t9S^pq)u5s z-K}QQQ_ul@>oN$ClK$@xP+0GLGk$a?0sHFn+9rF7vZW)|i0bYlCg0|XZmij07`?Ac zhRK2o9Pi2NI zpTjWXS0ob}1?#lM8cN5 zV*47gRn26VJT1-^^WBA6oA0c^kqCp?F_$Msk~w;e$}aX9@L8k^Z(Z5A5vQ zlp0)*3V`SSF~wIbl^aFy#PK0{rSAM>d??zk&swC&rP~#*K1eE{hnNGLlFEQnq%Wdp zlXTyD@@9@ZS+#aFPX~-XjTH4QBuYmWI|ju&Kd_7d&iyGkfp+9DM}lG9q(?OJjgSt9 zcsaV6T6$le5#fR*>69FW?S26;s_j4v$fR+`gyPvKRl|_+K>lYl!>YkBl_)NyqgaMw zK1YzTjlB($;mqDAlSvsD=&<-*WuZ&>n0ux!+{i7ygKD-AjI*YSiS^$xnuw9QD2PBb z9CDLFm4W+~5;b(~s1Wxvd(6G|WkYij*+bm?fEI84ZLvw_SB16il8%MsTOioM1jC6$ z^rdMSpYCk%0@64s_D7Q<)*2O0ryD;=c{9q9DvA|Kx(lIZD)ko4(AA%X!~sg(kK4%y zohvk`!`Me8D8yp&EY>bnI(aW*WGqc|>rBO=v%d%};TRI<3MZu1S$ZBpaBufYiti%7 zM!y~P{dVmiNV_WWX!h)1&6{rzRRwf4y!>+1!tetdyJmZ>oM5mSu<>R zN8Hu$-RV?E6zkU>p+MJJI-h-wLpBt2zI4wlyWIN8WPaqa*>9%#xd3t zap(zhj@Vk?C`f6sM#zaD8?5t}S^3{OC^HIWh4N3#bhZ6pDoMt6?}&x7a|2)$UcCaj z4ISf6CAb?I7wHCzd2lDb{fw%9hr$rG*`|Moc=1W8e&%6+Z!@et z`3d3;3n-t+n;D5|7J*JU`9p5?5Ni)_p@x*J!!|(p@cAd}prBMX;7838SfjI0!w?=E zS*+3f%|?vWhco)X{oEF5gXh9Z8Ui;vCh|vqNQtFbqfBj>XcdZmKEB! z1ap^V!C|hW3z=!NVsF)7wB>l^Sc3Gy8CrXY#*tr9sm%cDa7M&_X+zHx9F)I|$@wXY9-1x-_Prlal=9ou7pV|_Y0 zX6+Rft34=TBJxoD5&GV6dD*e3*!anVQE5oux3abetrM{6N{_y8rjE2VerbtQe1r0$ z_&hW|q+QTRc3v8+*u@%PL|ouCl;5Ki?esUxCyw-EjlxgiU#SE7GSu}W@BF!4L_dIuX{0)o=KYFuGDDpSZ{MQ;x z?HIdW0#XGG&bW?~rJt0h7U6SRSN9S`nSN@n5gCTP2RUSg#<%d0jPR5AI+D9)C~kWD zA#^mD)rQ8yX4y=rd&21ywR2Fdp!@Tmv|0V^8|#rdOpnoGMjWT>;}T;QKVz>U)Wz7nSb`h_tCL!% zb5z}!N%TO9%dn(Oc_B7=26ZJ**x&k=810Uz8xmY4{IIqso&r;l$XE6;yw$*NI-UKp zlzN-wEUoC}2nHij_i{JRdN!!ZyZ8(%KCw9_G$*BVt8AX%&7%&RI2;S!-aLQ%bKl1y zv%z|%_ACI;v7;joD{jT~LlvgA%~799{T}x3=*^Q*n7xRafbS9z8a974M_02_*oAT; z6JlVrt*t*zSJ_lww8#W{iP+O7VmQBC@qnu3032!PIq9Ycg56063nFbAsf0+ZjbZl%<3=je`pR~QSf|f z)Bphg3Gx2#@m_y?006%K$1JXry~}@l$b<}?P50{o&{O9I_^uzeQ118~K`=Hrxt525ZZTav~7emq$njxY0 z8+7Onn`~l=ZHZINv5Did|9H8cwI6PSSEGa%>M=ftnqh03+guCL6Q%&YtT~?BlmD77 zQuf5T|L5uuWz63-a{j=#B}EWH(0(|U0b_WOqgz`vJMfB`^BYg+v)}Kv|8I!5?y}$F z)&{=RDtSie=PCjIc0YF*K@_rDI9t448o7rE<&~&i2&0G`{3lZJP90*N(E!L#5RN9G zlVlz4E&c~-uvKZ#WRSjyzgUL zbqom44s+t~6p-8;qh+s|BPjLFyL5xFumPZQaCvt!X`11v z8r)irRcIg|&E0Z<3CcTt%r8Hw*aOinCQQSy0%L3-?S(NR5U+K?f+BM`^V&9PRC^Q- zG3xC0gn3A(?UawpOZ7A8@R{pAas&QoYMI`>JaoR4-<<^|C>3l4hyp|~JTvoqc36`} z0G@bH3inBYZ;TTSx6?|)QI~k3ZmU8Y(molq3pehFc__aX zwfs%N`Z{q9Xii#*B)w&uOlC?}WWRT-gq?_!@9)?&XC$GZ_{Zrd&IPPBsZ0qQ#Z zAqmr#o1hA#Exfa6ZJkZ&w9RBq4&Iwp&=3LS6LD%4?J5GfPF zhhmy}M|I6JxNfv~z%&nnP2sdp**#<@Y!!c6=pF0G6wBiiz z+-Lgb;LH{Ypwu)uJZF`8MNJbTD4U3hRs*A(wTTw4@owJXckK}|3xFeCs-;pi|ez4Ft(msnuxK_<$m?>Pfsa<6t zTnTS#Fpry8nOZ73`tZw1Mn+DyLW#S}@l40TT@ihUlFUQFso266yuTw-^s~Y>;gCOV zUickiX^q3_?3Q*Y^R_FzWe*Kck1fl@+n*Me5MaTWO!`7@Nb(OjEAxsT{B#p9K-_C?yP!_TQltl4WSHUZa(z4^ ze(S-|1y&y(rE|R~T2yD7sH*EPq1ASAGGZ>CbG}RYT_-AEoO1H3CeT$vuw+mjXBf7X zL02}|(^JH(I{1{G9!em`CI7gnLz02PCk`|%q~Mp(0#-r zBDD*O8;b`Hw0bT^hrRTAlhuFq=5-q)-;uhw&2g4M9piPiK9Nk#V62iQGeG?)tM2pO z&Up?|n|t)h4%xiTd}lZ)veG!GYH>5BuTyL6_L4$ATxY4WM{E!YoKu#mxP@iC)iBTJ zu8nCE0~X?dzR@m5hM?%F5xGpn!X#)smy*^OR_qsXtO&Du$+zwN(2K54^V|klx%oH4H)KPy-nM05;Cr{% z@~;Vs@@8adMY0x*h8x=U=!wHWA@3oMhyk_|lg`sN5JnH;Q5~2|yU<^((X|an{c`LH zj^%7aSsQx#ic0HN$)r;R_jYWx@989$G!9se(HnE#yeYJsXLE+EpYs_$>5)aZHtxJ1 z9t$f)xQR`=*3a@E*+E8+up3#ri%n6k7jDC64!NJ(X`h7;R=x3!rl?;FxABvp(XP^h zaU#72NK&W5-L|-fQ{YyTiLt$$yzvt8vrCy9u7vN@fft?{wTz-H4h9Zwe zN|Wu#%pOD5Jo0mv2#CC?U>Dbmld(!0EP}_6$qy}@BF#>q6ms*k`O{umxxl}&nCs!P z0~A|t-cJN`I!y8;=I{7cJa2I+wOL?g3gOt43YxqpGP3=W3{3bESEazmf8ff})+H0D zyA3_8BuTxxb#=zlI?EifoiDQCs#+m&^RR+N&14c*MI+JC%VzXi@fjfgkl&1b(|2}f z#?<~TQ$PG$2J!t_jG)p!wr*UDy9(z)IS>n_W$qDI(k;YUSK}9im-(1{gC}FkIXC8K z<`C%?)d46Kq&*Ez-7o95Q*Iic+VaqteN%<&!{9G6g)VEmMZY z)3SMIuTp){^}1~P7wA7&qK#e|1pO~t>_71F-?3yH>wjkv^8aHAqwxO>CCwTZcGw(9 z-?e%Q`~U)u8;N3hXb%ik%{+KUqoZpR0727&`5lx|o!is8teXv^V}84%Meq`|!;q$d zLk;T2%T-A#Q}*JEC1VzZhO%!{=?f(2&Xl?CSO`Vx+_cY;S$WPs_rw;t#te%%!R>|@ z%}h88f>hoz97;n6s{+d?^BRc?lgMdcaw|i6 zqm&_8)ytV?2M@fGL!da`M6!JosTkBB4S(?QEEf`=5`i-$9fP*L+Y|i4*-cNrd>GgI}zS0iC=r?B9D_LWfI1kksbvf$LiD}yNB@X%KUxPKtpIq zIaa0jh>wSuX`5$81`Q5`;fp=70#6YZLW5*agVc)=!%Y7ErL!}GcUv5P`nYj*X83G> z1iYlz!>&kb2tLIOx>+H863v;p+wTo&U3e)tiVA^k_k`fIvm57nqM3OfuoOncE%20u% zNy)80gD#m6Wq+ZL;Y_2z1n8vT71h@W!>PItAUpDQw>93~)6mn6C-tdS6bKE7am!tw*H%{4swxGojNd8V3J4p|z^I+CQ#7z8s(Di`N|YX)q7LBdSiAEI6Cc zG1hT)Qq}NsUfDd}9-lzIc*mf6bwn#DspbyNHA9M%19u{1gepIE*5KuGUA0`?mG{IM zQA^8D=Hy#o+|UKv(wD3jHN+#lZ_`IrlWUA-(+P@^kD7mP$5@41kPd-{_cO%IK5IHn zR7W>Lea8!=A`+fVOPc${!4fvtFJEQaR5tunagJGBOqv%KL;B&kJncU3oMf-LehEWx zda0>OqLGDb^-#CE=GEDB zcN2uzRA-)Q-Bpjtn$FvjjTU9a_xyaq)(EsjDHJV!1Bam2Xa&Db)6uc%(OoL0lPE9Y zrck2S)b~&hXYTa4Tg|^(p_g+zXo8^TF1z%PmAV2i&9chRGA_^dCce{Aau=9=nb`(i z+#O?KeOTizu$pO2mz$jKh@%G7sseh78Sb@+Om*ye#bdWUKI;r;El%BZu;>=6WoTzF z>iI+}zFgu6Q#Frz?3=X}!P+3EfQ-y2b?QV>sTnnG>~Zbf7zYtrQ4~FC7$pgB0T}eh z40hY?@LOKqLK`+gxb4iDG=JX!?JmMPUSE(#KD)DN%^6?Aw4Qm6G*YbT8kx%+k@-9SCLeIYdU2#9XwC#wLZDMdn(JISO2n9Q~{Osy5SQRiiR)TKDH{6`&=o$IZc| zIQw(N$S65uke=yiL>-NptjPt_nH5is?7A6sg-=6%R@2~{Zc>-6G)~5C^%j~7#?9>D zKBshZdzG!vj?r2-d?m;PM(sOB3UU`>6|ozZm`!jXRl7TO$|}~^=4Bo>TCBze(gC#7 z0ek-+JVPZLsQMsM9OEQt40~uK16dg-Z1jzCqepJ>ptP?dKGvCwa%A>q5}OXb)Tykl z->V-XQ_pF4UYA(VkxrPl+lYNrLM!DUh%ma`lKkixaQp7j+-Qo|`9SkfB_6q`o`dLF zgS+5Pq82u&=vG<(%O8G~8A>zyMQA_WuJ<;qI{F*a#F}Z4KdpuWvPG0CoyVezHmZk? zHg5RCGqBZO+BA0gay>oz+KTsb*Yh&yzbpCtKx-v8S@+j~0=Q(eA++LrQ0|v>?z~U2Ev!`E2JPDomtZQ_u%&O;L*v*SWkOsvY#$ifs0QAyXT13%X0Orko^*T z`Hye#ZHsP=%VW+TI)cho%-v<>H0=#*wGBM4-itoRf@#DaE#EY1hkEOmrCCK`lbu^< z1jXjwD71+#J-&N`Q;^glvAU3JfsfKP^%}f-F-nw(_Fuw%P}J z-0NoQ_U+gLFPH>x|I#zX{m6Sb4pM6y9I9-LbLTdm445%cuYN}a0+yk^mChymyMMP# zP0y`oI%U6=PFTd!adx=Q5I8&fqo7~OCi8J_ex!T(Yd5D>v+(q%0 zodS79XHTfP1Z^i$01~Cxd~2cZjc-z682f|-*DH~Ntg18fdr}Wb+`nZnTI{~hI+8-cMCm5!b{Xall2e+eP0luRe;{hSi@YCp=1vcON&q+qCvm5UI;Wng<3 zy{ZI}X9CGU%|8Q+{HA2D4`v&!AxoaLRUccdDII?T(k@d-;7+(ev|qlym~_~R*5?4iPDJjeimE&>Ot>{AIkr}CuuvkuJ3VWSj356`^i35eT5YL35 zF)UL-)0UZ)=5cfvGhY-1;#eUAIvk$OwdhIIFs6D2PK_|4IB=}^2=b1?$|@Rx6oc!g&`6fP1l#+@B+uSq8sNNe2R01xy1vopRt*RfK)LUJ)D z(d|nL^7SnsIy`bY+mDv6~`ELRGM_t^PPW5TeJ@WR74dlz0-Jtb{KEFGLo zO`@rcG5|63KHOPh(nZ&24g;^pQ!yAB-00ww#fJ$P%h;<c4Q%mNb!qlpP_O5Er?6rU+QX{ml?E2aMl@=EJ;2%6p2WjZqaXC(uk8qfS<%uL z)zb5eL^7NN9;0lDgWIiKH#dGAQ!dE61JYy%*MROMIw#|!EZ-eL_5N0({wZ8C8r@4Z<+3TBe^A)PtCq962WW#@Xq8u^}JcfgkQ*>NS;h=Q`cL z3(&|j@+!>CTMn^%h}H^2>y{t;;6aF@J~h?Cj>LuHTQBKkr7s6vO5skv5(70#E?F*( z_oWtE3nXBU5q7YQ;&nw2GexdraX2hB;IlE2m>J_4iWR^sn}w&_clz?kqUP-uR!#Sc zM{m-p1J>EfgNu;3)st^ewFqaKKL$!=?OaevJ8+LwX(T_jolet>cR#L8t&YvDV11iQ z%*1>-v9{r?(;s>PduEGkf-{~}Q*##rs7r?Q7{mQV#COpFixZ?J`586m5IA8gI*A;k zP6m{ZKE`5w6405FseE1U;^eTMajacRC+W`t^E?jvJRQf>?j{0xCg4wrjMFL&T2QLW zTVa`#Y6X=GI4)X2a}5p?KcB-erc@G9xL6~SJL89!e%veN7_rMBYQmg>11zUuCaHo& z%pfB$vwyKKbe>htlB{JBNt(3Y{l`}iZx@Tl>sJ?#!}sMK zw^3l3l>Onj;M;`^>XVLqbueJL;DS7kbIgBVM3dQ(TH?<(V5`47X}$l#il;dL*eERi_ZgFeAt=Y!3P&(t-Qu6UW-m@NuJH+T%Etw znhn;4tc70gj&qt^d^kTdPJ6GaJ=~OYvZV6jW#BQ4UlPU3&Rk_($1Av6ldDrcigVLy z)ca>9KuP32ur8kppG;$=ayTyNy{tZJuRrqY`RyCeRX^5ZZb2F|0_K#K07^A!m%+TK z3IdWelD|I1MOs-#g8Zvo_L7hEEsJck`3H$faI%+E5+uZm^!?;E%vf9z4cRJLw>G5=3y zW)57-Ni8@4z<v&FkR(EzN+ML7UKMVN2j4Qid70)VsZk&G&oW@J|P+N%-#fpDo z&Xh>gq^B}n>5*JHNbi{(3c~$#=Wa;Yiy^`uwhS`p$lvkdA6|(w>l-e}kU)bY;VQ{S zi4g;kI6xPogEwTTTkJb5DY}7oDnpwpbe08P?ysACpEXXBe>M4}G)hF~>8i6hv>;0_4GeNv@zVsjnx-e5{h4nWATh{Jv{{)nV_i^M6e z>62);ZHOWXWPR3xR?{NI_YrJxx{&qr?kio`pO=@e-R|}a9X(jzN^js>1E|PIAT!a! zc3>g1MoHcT$&!UFua4dcy!N4;?jdMklHpy&y?6@$GW?wMT-4DY04FX)j1#KzXo|8;UQC)xdqhtvz+bj3>{S46#eE+5s5PPdRRPGOJ0utcF|pKn z>)Z*i$XGMxNHt)Mb20`6J+FZhD5XvhifCP?p#C6Bc<%rtOyFI{7#@8*Z_@6h+U;0? zf@zQ8KtKivk6@5vz-FRDAV_N7MD_Z#J5Rey?%ivI>$>&%73Y&tsN^X7;+)1atLrjj z9)m}@oE)50-j(50xBzkLdzKVc(_o(30htysAVzUHvg~CENx}0w4yF7su`KcVsA}S= z=gx^^_lfHF&Sg$qj^6R!Ux#hw_bQy1kE&fr%pC=NzHfFijVwO8!Oq+-qIfig>FMwx z{!>te*RV1R6laIrrnzkSj8MR7HBO^^n4txFIzh+KyBR~Xy4zg7l73H#nf2nVUk;Vr zRb~mm`O&Yn1A9Q}%;Wp9Nn%0HU{cuo^e|(T|GKg>WZDJOX4!rSs~kvuvB(}$3_;JQ z&np_ScWtWcbb%D1ZEQF?iC$~E`YHXIbI#2MxP;Yi)f)+rp}x{Q`MCV#3HlC8fjm?CLEBc-avp8Z|5!cj~?scq_5vr%2MOdj8{< zX40Bg^d4_O(s-^T#ob^@!|3`AYnVyIp%Q4Q;F@t3!oX`0AsZ=&S(R+6S#THN`SPIP zT~2usNgH5CQXn8k_0wlUH9%Ns#62H22zoXlZJy|4#SH3)jj zQW;wg@B@8%iXJx)?&9hDGg?p0PB=vk8`ofeoGWR z0Ke1er(VZ)wx4XPYJb4HtJJ!yY%>(zqQzsrnkFPvbP;VTu$1I&8Uryk8g^38!Y{Bp zTlKAQ=8D0gcQHTA;R`fozX5?^@0hc-{quSsV)e`#YeA+ei*Huws@b4$t%}T`GrC{6p^MwlJG9hcNVpE5pJ>AERhJdf~P#`-HyV{RDCkoX|FsI7s36;0;V zqnY9t$g6{{NKZj?Ou8(?_2zTdK2-fPJ|f#i zw^ZozJE7GLH>pUn9ixs`?N#Lx+5>vY$46mKPN~-?WSbuEfzoj%#WFJdQuqpo{$dzE zpmiZ2mrpk0bg>mcQH>rTfkr3+JnK9wsTlL`+HuAWv!#wjT0}q6FVtCa=;Ug8gUVPu z9=PCdmj$3GxzT1Yhg(@n|0D%3Org$6wtCZMwMGLgv>{MJY2pJiSV_?=H!~8u2HDgw zxQ#j-s6$7Ot0gvBl-*k$Y!MO$Q>yS0|DI)Op_b9ylkSr;rLb$Wd+>_GSao zOsqUS$C&`JzF4{B$grfEW31OayHbT;hus}Mpy7w;cu6%w4TZ#xu<)-|f53_Y-wt;V za^Vs{AfM~ju$=9uoOI{%^xeH^bH6qQMi(QNz$V-sxjq6|KF=^M?TI%HgcVVGiHQ)& zTZ~)^jxBDz8)0eZ(nuTwy*I)ea}roO5G02*Zm-wSCs0nVAUSWY@PI4wg+ubP5X2%Y zkQ)SH?>&%)2drksnlxJSr@V*w&x&NN)O|I2afwtYwRIqBurl3zQ1@H53k6%h3kY>K z6!#xOsEHNh1eB#wky(tEqoyx+yj_Fm=g@UR%_!UV-XG& z_A_mT(6UrbGu7ukP{;;Po`>2p#%#m-*081dpnbMRuE}auiIlKI1%6o3=``VHvdI9Q zmePF;e~Hu__KDML2Q3_daiU-dID<2d@oLf2&*-j?YkX7 z$3V3_26nRIAkZn`Fy~0Qjq~kp-MT!n9#u-dpxn1GMRRfJSNl^Ysth8_0|VqCGIFZY z6mr~QH_ElhD>Qn`U{5_~I)P)Q3+GO=j-qD<%tiVF(?Qt5Mf9@VoC5DTf1$W`mr*e*VxB#3458?8#cY${d;AFsQDlv-LP!cbk z7#1C-t4rma0OYKZ17DPF{KQ6l+2b^}{41eVfjj6AIikU6Ip{1-3jXM*JE}@Q&AlL* zZSoI5EC<}}I0evS02Z0*3&UQCjd)@-dfq`HI3^x&)>a>ep3iA(LxWEMMp%`)Ga@-= z3s6X=%vWw>UZ;j# zT4R%trrP2fJQ^Y~BscSvQ+`9L(96Bwuo}znm6TPBEVF}#7_hA4vpOUK4ExHg#9)zTX-GoD}Z*- z599Tow_)ajjV1y~>B5e~d5V~Que zTmJK|NYwbM9L*iNiPK9|FIwBeF`u(kJftiCyc$k)BCc?FzN&zu3skoQuoUWkuCl=v zsP&co)XT%M_whr0h^2rsF?BR=RbU)kG9~OB0|9kx_0;bgZbmO4bfH`MV|=gjlP_o| ziV8Zkg{1^b);VL=u(6luu&UgDIuW3vB1*AOQ5U75knb>YEbB2#tM6r04=in!?-$5! ztq{#ggCuF4<4~Wuq^L9CC=-yW$;g3mc-f>-Gw;<4y}aGU?n6aUW#x^@MsRiPyh730 z1;zdL0$2VK>1?C-{G0pCO|RDjG)OFaR?jT}svcFQBd1;NHoPMTSg|dS;&#!>%+~Tpu#USKx^ga)dt!Cz8s7amEs#-SC4FyGSC6^(!*!KEK*_)UTV<#`xRExQkq|@rq(KnHep4Pgd z6od`97fi!ZYxdTky)=C{Q#iEyS%seTD_MA>c?B2Irsq=ffEQw{&M%XdC+pvgA$Ca6 zT@Ds@X@UQA_IozR%-hIepEh*dF}=v|hNfM`Ioh{Y{e$WiVN6BWJE)S07k$Pb#+h*# zl`M}|XEWHv+w=VG;X=Y2o(_F_f!k!L3>G?PI}X6!_{W;#>%Ca%O`8(Wzo$28$Gc-* zw$nN~bXs(zBX=ge8P{pVkKPvWG8J*AVW72i9W_pIHi!5DylfnzEspB|I6W?Z?^lju z2(lsi=x0$jq_e_c%$nxgCWuq-a=(mYceQC5rLKutPiV(JIIDp(n`J?L%>&URUW<|Z zBzY~eewaMqv7lAQ_E)jB1e$_tw5wVZO+?@0pbfTZA)OG2)CLC&K^&iAOBGL`0*XQPJ-Mj zMQ-^)Z~j}m{A;`+>DwFB1BQWlnz~6u0pFyBSi{*tW<-Hq1KqIEiA?9igp9~$85rz~ zXyX~LE{^VG-SA+a0^2s#-;N+ozW&>YD7=8kLeK(kS|AdaeDI-F!Vc$ZghlF9W*RiZ zpEVU4u~$lo%0^njS88|NPba}eOSe*@^93+I;xLvlq?mSDmpMjs)9@=B~z%)Db@1whJy^rb2U%*C3X zw^(r&srr=5q%p?=yfsg&cNiHtBvF?wS?X=EfJE>A~JTfb{ zT^}q>BUl=#to?Wp>qMc$8}c)_5s@%3t>mpI33e^+uU=vTe>r};-gUe>y*k>jd)*g$ z1z}w*Z?5Jy>B4;UcAf9QfvF!?LbH6V2DP?s3;dSd>>Yfy@VRea|2q3{wD}Uk0jXz` zDI12c#^21^=|0nWeyjBoOoqFZh8aVJCOHWiyKwp-$T3$;3ar#H)JRA-4obUnQi!eX zo9JvKr&hzPBxlMo6&_bPm2|w;Wz4p8ArQ{cCk!k5({Zr$+(rP)JfEn`rQXZNi|Tgo zhqkj<;?-6kZ|#v;2%E_|qf0gK!1*cdmqWn2GImYEaKS6>8!7Tw-Ny@+Za!A6Gj(ae ztS~eKBWU16vWv>rQSGRj-p6lMO(*OZr07=vISFIzfxitRwf=;8+9seYbN431o3g@c ztKldWx!rKfNHHC6GN}=6HiZnUXH2~2X~+9mpyWH z=7re4q3`p~04Cul-3?*XfL0Jp_=l%&CnO0=v`V{=mHg!CAJa+lefx*ZjYm3 zM{wtXg`r*t3vpj3f`r9oiMV)#9jj0e2f>NAP~-4*3A^yU^(yz0)Wv zfI?H4XL8Z_38stAg5!MSKl6FN%BTLqvH2ZfqeUCj*s(P4fw8~297%mr^nJ9Vu(Sh1 z!a&qhU?eW|EV?*`IH?7}--b6>@uFv<$!u>1x$7KZ9-$J6r1M(*oh_rF&xz2+ohOy$ z|5-u`(_w{~QKXf&lRV8fD9RcJDa#vF@ao3~Iw>W~3j1%Vs$#<`)v=Kk#sZWivlD@e z(gIZzLE-Wtm`4*cu()dQmtib2C#u)^P(HUpQiM9yl{Hw{KNkSzD)L(=!|}7(ik{uiI15=R0FGHZ!Ul@8jIiz{=^iq`S zo@Eq@1~H7dhLy5Dz}A2Vg3S2;(WL>RTlyD?LPc|WTS<(x6)qHQn4gBN9nr?oNWg_ zUH+Za^9v!PeNHT^*6>(z)0m1FUAzy+b;S!2$~#D*C(w2gRu*jxQnm4`vPMS5M2UPv z^dGO2=FGvItLCh$!;HAyzNntzcA<~>qqyrwjzu*)nW)1Y5D8mr-($2+>myw_1-}dGM7tp`b6UEI zzx)F8sUYl)aYE?m>N4LVSsXIPxqYaDB3w7D{M_{-y$0zEW|bdr57s>8f-rdlJ#Vu* z)uC&TpY*4^!-Si-fvV_EI{oFDF|E(mrx>q}E4EUZ^pr3*68^cyH;d z#aU`5gHsfIhVan@s76Q04BcAp5edgMGelxnq{U(_$z%zfEv&rmvXqWb&4%wyK^C{s zk_@J`h({`^1qdCB4#Oe7ND_esWD zX1l!;4xa>P{x(pdwANoo1@{6!TYPVP8`@kXNPUl^Qd5T`ll$KizSShC9RZxo?U=YD zkDsn2e8QBW94OWx;)whh6GK zMtP*dr{9=jpqjSMaT{ds&-*i(hoAbnx-xU6F0Z(*!)J_R zO2o}Y?acn|B*_h}xHZ+L{dcY}jG!#NYCR1r<-5|?cbt8;(aG+SoB-vH!tk3s5t^3w zlX7NN&cft`kD^+I+rq7BQ3Cg6sq z(Fj!|Hunqw87119HgXKKT@>h-Ak;!6O5E!&jkOQV2x_vm+iAu;4I(vYC)R2FP~^j| zgdmj|etg}xKEU;!QC$K?q`T3KKTZRxKXOgX4gP(Pn&{mCT+|N22{9}d^zBTR(w@@G zX7t-q*Kku=4Ef1eSt^!Xa+V9Mo2>(*-MaJHFQYcR{u=6A+8OtY_Y*ayEVLRWDHThz z28_0sMO!WgveRm?b9^5-5BE%$c|FxmTjceuEFjnQ!~rei8k9&Dn`m-z7FpFeKww0W zS8A&3Nu>FyWAtUGDI`{pxJGCSLJgADpR*_|^R9-C1*;N-5hTUtdomW=G(+FKQlKQv z81wYA%Jqpnj`l6&8i0!va4?z4X1IXTF3`b)V9@Yx=`X38FC?A|d-o7A?W4(1vg9Mb z^#gGBcR_u=QnQk(MnKeWpraLyge$#i{dP8ca@y6SqeK&(pcr<41uWjxx}(v^zH+&8 zuKaw7D1~MdPBj4eWBn;?GtwUNk-6^$4BiK^L5yzuFNKRT?YbU&_58TeLxNxRw7MUt zsy$b%g$yUL%i`y6w_g!kuRnS_*}dDq8HgPDqI>0sFr7?QCuE208S^EIi}Dya8}y}fE?lhVC?NdhfL&P6IMh+L)2 z*!vy^rSn4n_Fez>8s+oh)K`Ky7K%?mX><``;E+h{NVCDv#O#fGl8y}%?z!??i8)G{ zwA~$P7VEq%b8r4a4=-BHe7NhNZt8aeD8}UTH+%eizU6-O__r5s%?s}>el-Yj8r?9! z=}&rtKv7piTkGoH05mYBR2T0;U<2S7D?J<&@L2>~$M$3V^!9HwG9A%pOB~(T(q6|7 z#(Ff`3`}FUDs4aK51|B=tT zv}dCP;{pKur|0|MyTQ*y|GTL^IY(!6I~kLI599xfkmhAg8#!zVq<=axg;tJwBg2sq z;j$P8^9Y6rIsb&~qX8(3CA`*a*%79mT+BLy_gl4Po?ATKfy5Lz$gJ~P&yG&r+}fK0 z-LQG>H+ob!@Go6POn)SZ8teftFxXQX3wNFNCHg1I zc&UY7QS!b)@LSKq0KcX!Y@sh~AB>}w(_7y@E&2ltHg*me(;_uaXCVtG;q3eN2jieM z>+qwyZMgh<0`#YCg6((XU{CfZ+fbth#eRsfxCVn2b?ui=&f?sR|@Lpc!jsMyBO+qv;Vmz}q} ztEkBzZ}6C?S!r;30oZgS+8@n{5&Q9h!Dw3|ZUB$ZlBK^OhnD?;@9v(XH@lH6tvwP77Z8f~~d99k3 z&t9S_oR=x=cANd4>PreY<2v;` zb81~4-n)PYNICsM{^Y1~iP|(HktrZI6R~M(-6tzJ~Ry&5NE??rs#)@{wx-jFof)ig#wK846SMQ6o zE^_ss7~ICyA{s2cRPq(3;N~hTpi>@g2}OZA6+>RAMjUzWIYyfo8jv7Qk&gT1DN0DZ z4K%mUfJ-AC;Z`Jck&Yy_i3H5$8nJ#rpRh;n@({V^T^abPT@l_ z0t5QD1^)$tfuH?0-E&UxdULkCQe{{-epoAJc5R4T-`Tcoe!)-|=t=;$LJ9N4saC+@ z0&mg6iR=n(>6o>JsXyPZO?&`q9!O|9Z63J6zW9U`0JhjK+C+DDR_b< z>3S(s1O9U0%p^;mLU_PxLqo)G7m5^QHAFIE?n*uOn_Mmb5aKpXD;?!(%RB#}8`<36 z2Z7KVz85hY(fz6y;EZ8zIg4gD@8B2|#ol<{br=ktoIucx9fBGm#XDRGPu(MdM$PH| zkZj>xo5f)}aVEN`;LU8ds+}W4?*3zsiuY?5&I0r>o|`fMB19g}aw@G1-hsNxLFf7^O)Zw>4R!^ z`Ey+??trjRd6|9z1ffTS&Pt3FGg*_acFi78oSHE1<#6)H?6Ue5RW59_J1OZV-;1|l zhA+kKL7Q35b^oN#SE|b z^ZB4@^*l!Qj|Gn$J`U80oI5=6a@_*SJ9QbtRH@?$^$;kjgs(L6Bl=)xs@>4jOVN9H zMFPlFe?K~1J+FzZCX-{wM1A_LQJexs?J^d@hr--E_&-(Vet$onwN3w@At?=-_ReopT!GMCoBmE{3p^S-4( zQVZc$)VIMMfBYArFegZ`u!$d<1UVp2Arfxvqe}UhTRXZ*b)W}0mNh?4hNU}ehbw!F$x=3i`irB!>)g{3u?&z_7aGo;B#QX@Xr>F) zS`wJ0gb{=^0OAfHFjporzFUZZB&1??I1XnKFYf2)uHNmZ8mc8dC%4}bm(i#@fOHL3V*Cm#Y zF>`)p9Yt4$5DHbGvw4nl=so;?UdW5LINPXpY+aMueEWc>DCsM~=jBVde${Ta&7sc?B**VZ-N|(U{r< zZGGpM94I=dbD0p`^1L8oAxUE0{4JH8TRf0Ab6(ib`*Ij1mL*lU2%W96F@?Z$q(5CK zMsBB}+rV5=xctwbC_U7c5!)ICD{fR|g_I}7Ur=fG*(be2L~@&tmlqCQPe!5}Ke~Qa zy)b>fsFwqm(gjhEg{6r`K`w=1$eX0k`)`_Vj{_88?B*?M?ZWto!|3)5XfIihLsHf< zAE#w$_ca#HSG;!- zTj91_4Q7|03+jr$tMU=LFN$vGe1c#9Z-zX|>m0Qz6ac_~IQG92ZadxoPVXr0VQ=DS zZ*5@vf8km&jb-7qDE`vvCxR|*ay*m(-($_;fRThTMi-27-@v3);V`baX&b+Uh07sc z-|Mq`DP*Zr&+-3o_6|{^MBB1x*|u%lwr$(CZQHhO+qUgpcGWKYeg6Ni^Tr+H-FH_b zvyqMLWUd)A){F=@a~Z;M-yXlW(%ZL5pJAjXBRX@*?T`o-VIQ51Ddgs9W%?xI7y;1U706hhS=9C}d$B(3(KN0$`N->+m`RjqhKHH~* zkwXFs?xW2cr2sRY0c455Ezp5U;7ga!Z*P+?S&so_58p%wdSFHUW`|s7nj(6ak?lrB!V`Qy z&(;^hR2}nV|-GQ1qoN)15FhR2`_yHy2 z8M3!{E9vjGr}s`#BAhT`mrG#Gv1lBhV?d1z1!J}@Cp;zXXiDas(1fQy=4gTab>$heV%=-j$Ye5z|lBy`M>!&GX8x# z`Z_%tzDDuO{blogFl+Ph{DG$F=8&96yo?8K?-jBTpZOLP<}X6S&rYENuF}dXqYGcrEUte4yWm{`j@-ivX6n)b|1S( z`DTqkZwn)Tne~1Qz!6JU^K{V}#aSX@S(M9YfDNS&4b3412sV%#HdTKnsPg`$O%6wx ziNHJ+P0es|l1u_UFk(nP!pRBu^{{fQn<@;|#_-4s)M@3L0CkwT63!Mid?nRR$y+u8 zgkmQ&M9fHZ9EQOOV;iA|c5@`tT+n_`120}m5%QF0q?y#2P2^S$gN4%@S9(eTp<@$U z?T<<*!M#nq_Xa&+ZQf(3g1A6(8A{^Tn~1qZn|_rQ;o|H4QI)wBe8SU6RIM!usCpR zu~2fEI4B1UbK-E2UTaa%v6p(CI@~tsPK}i$9I)HU2KrYQKGYn8*fr+Z| z;RSxvz>BicEHUzk7R9Dp_USf z)3BnUtV#N-5H+-xrtwN6Ac>hEDckVDJ&_TufY7=`amWX6Dx>N{go<;!;_W&FL>vT; zV+?rUXo%zpav|;{vp*gMV3FKF9e*wkTOc>#WUQHBc$@{`>Loq%&VQnPZ4y)n7_OG~`6c(?AhX`fsH zr#F`pTP)a!GOzBFQs`TGQ^V2o%)0{$S`kXa826AsIz^EhnXH<|MO4Q3r)LqI#Z+l2 zg&vl#*HDycQ_WEj$g-)8aVOQ|E^rvBL(^8TqlE5EEmL`bZ>1pV3WB#X`6J(|thVJ+ zi%Lrgk^h9c9sA5KhQ(yqmwq#eW&#CeU;r~I5?(7=JHu?Po6B6G@5Z5{HIIvGhG^c3 zK-+1uPaz4-#Gd0R>ILnGCZsfR;Y{1nV>U*5gR4aBti9xtHZ`oUBmG!qvZ|OTSQ_Vu zCYc#@=;}5ho06VZe%_r8q$rEUX-dK0;FCbTwHOTvko`7z_{)xndczMim(1IZ2q|f= z+l430SM7AAVq3}r;P0{8~g5trImTw4yaf6C~w9TBcq6jJ_*&D*(Vc0h+?dCh>**EAG5wwlJawg>P7*}jb3 z#z1m%c&MLGdGj^F`EVmc@ggNXT3H4!yDon+lboadUUo8R9J~K(3#wJe@RXpTn84!^ zK`(uOn5|;y4tL6+aDA#L7c0%}$r0Rzr5mrbA{YBn7SsW)W=CsrJ*E{=oo}#c@N35y zkYKRQ#S0Yku<@}^og=aFL{$M7_$>5VH$~G69c^WH1FU(RTRj8d0CfV&`D|xz;AWQ_n zD%^*_E{3pii-97I0%bp==9~XXfeY9{{^T}cz`g@qN3Z|V?+fh^s7)XHol6haT*TC%`%yjf(C1+NwHCm!~x0%FqS3>sMy5 zR%V3uHe>2uXwqWVl$*vR#khnePqaOW*7;NEPYVc8OxK#zyl<}MS8P`Q6<(Xh{O_$P zyZVvFNAdh^BYjs3*M}BE3nm8lqh*L7-c&xF=VCRBKcN`dHzAPDg{yKD<{anWQJVYK`9mQ@Ra&!qC9farz)4E zpI;B`7u*`kcFfy)mC{yT&d04@pBc?*`MI)91Jtdii?Q@TCy!Rk&kjnr&ZSFqzT&Ss z)48u*Xy=`tb=5?JOm*RgB{HU}(4S6%_N4X;>nSR)K+C3yX3eU$q*nlCZhm?bCXO^n zp2q|TePcrGcqYfVcNkZ2?nnZ-P?5@|bUrH;S-$p=gW|4a`${BX6Dgr1hJnlDp?aw( zgB@jxT=m~=VSOCVKys4J`&DG`QhED<8}Y*nNHukOq!G8)=;l*eqoM?p-C(XC5bXvB z&D)}x; z%C(mmJH3wEU`oPR;4pt*ro9)}LqSs!k~zda14`#qa3U6a&a~T~d?z{C22o=09mOU4 zZTH+L?d1``kt{Oang}}dPj&$PH87NFE7OeWMKjxRKz%4VGvo;0%J(ozEnbD9#>CI3 z70aJMtzn@MYn{|Pmp!412`n@0I<~&_|8t6vxE)!x1p@%^pHAw(?y+15004yk2SRiO zLnlL9Qx_*oFH;j4%l}TNb))&`AJ9Vk&HHB%*ee7H3)i5p7O0jTmSTnu6l8OEOQpop zNIt33Hf|kXh~oJB>OD8}p1L8R?e#WYyRwltp852iyT0&e(1jLB11cYwj~IMiVa9;?L?ERGHR_9Z?*PutgvY9I7B5fjd5c#42-7pimZ=X{)(kzkdhpZYv(?x7 z#fc3M<}81U-XTp^fu|s~37|YtnAgHssJBI{S9dpqwj-tk>i#V7Whq2(CWLyU3^B(n z+1!f=v_bmM@XU*5(g0~R=4>?m4)<_#^oJ--!a86frG6n|5`ASRaWMuVkH!ulB?N6e zR8$EB>P*^ikmkUOS7T2){AY3~o)#f&=n@MrVzFQ-%pq8Q#N;E|yp5z%x=r9GS@ET@ zF6MXz2BsHekf3r=XGk{lciYuK_T%CO2)0SLS1Hl#DYLrQ7-dRP%LqfiTV{M-(R@R_ zJK~TK$Ic}d&5?T;wff_!Qb$lYRpk;U2s9QiVxZndBmkn+(su65OmLg0I^Tj^##f#TC!;?qIy=bm?LIlIxQhrXp)b>1P)pIj% zsbSbkEs(*m5tCy9#y zeo!YQnJw?dM!Z~kG_&VUL-MG5xLdJ|n)9%XF=SVwIgS~<;H?b7qNCp!0Hj?S3rg8-1T+EDQ+zm&J4O$_}DJ37p!B#=c@!4$S z(5#&%j?viy(H4Nt^~gq?AtCHNj7$ecxRA_n7Wh0;g}N{>6O_iC23uDHZ!&(ppn_na zpUp+3hFz+v$l&>4$EHSDJN$%d3<~0;Crho!5-dRd(@So#7L47$ESO1%wLW}$s zS$c4}W`GFbLEO70tg56t-gL*Cdj!-ZK<+y=s zA8f(DmGR7K_{`1ltGtf*J0Oc( zMP^|VtBO^nirs%RV^V~+iGldSbD2uXuw2Qce&jS`EK0F56|<66B)5^^^&uKEWC){9 z$+5XjEUaB@i!-6SRbC`)Am^y|4N3ehzHabLJ!?e=oj1|JCqWmf#5sziMjqyGQY=U(~^#k zqWZ+vWtNGUWL7|fF1E^DKm#tm8g$iJIiUrE{=~t!v%xTRd^az~X-z-83C;9Oi<4@j zxQM=adaAJv;ufZ=%$CL_c)fyTdPNfQ9tqhVKD5)@q={;~NT zmTi*8#_)47@g`5j=4X>w7QC5wc zpDYf}q_);<4%wqJaKb%3_>(xhT?w5F)H>JdZ8j(8s}NFo-VBid)1`V_vZAo)scTDw zxHU7bt9V7g8?`U!CMt%BfX@nZdj) zzw38xF{Tj8`lN>i;{K$=G?l5{$;O{a*?&0vYkF08$A_7#Gp=S zgusa>zoS9pf}Fow>$g6;YwY>7nJ)11!N^~-|2wwV!8zD=>#U+L55D~1z}L}-rz?Ad zd-V0`#Ddd5Zs;4Rk(zjMhq|@4&NP$G{NYkM77+%S-e{?u`C5IuUcul`^_!aX?uS`zHEpM^ZM!tt zmg>duOVrHN_O;x$PFpH9mxhDubmP$EFr%);VpVF#;ip{nRoAb#`xISHzg8=M%Mv}d zS-o!X&AO|faIWGWx~o*GeEr(2Ot_BA*p_}wuC)8HNc` z(qG4j@_+t4{{ct;A8Z2nw_qJ+6#jGnUyJ>}51ZtjOiZ2r`S$$(V;A(QDzE_Hd7Q_3 z@5e>PAcsZ9t{%_;fFKvZ0095*<-f*iFarNqeE9$VQbAjj|FizTR{Ps|n=ScA*B|uJ zt&Ug}zb&WD-FVb*zW%Btb8>y;*2SxCOgK6LG>Hf^sp)9#WB+awR3HfDlIt#)tdSN$ zgT@WLd!B9}7}&8>ty7~?0_sbyw+3NSDyLc-Gd_fz$hDi!Ey*wH!+`>-Q>1lH`S5GzNeO6Z?DME zNt^AfJ&O5MR&CR=-u=F3-TU|O@k;|`#3aoIT84N{kIt?nCiL9flJKA4C<(Spg0X)9 z=rO7DSa1H&KoSS%hXpC!DjDUEw<8-OzqdP8{_~n>A|5`@wOhAjpK9n#=8Q?Ejlkdn z38kr06ptn<>(WB#6GNtJ~?bZ~=vk@U>tI2hZ(^=klFHspC46>1Gkda;? z(gzud&~wc@IWx|_=;FzhIg^W65SG<9s3RU^NvUBlgEzedDP}`4IjiWpwKHf`=1$in zBT8$8p(8h{r~2Q7e(apd6qyOyA`Eq;vzkI{;MzN?+9_6gK zpxR0V(5NSSIy%6+d)?3T&-x2~H~aT`e4RhI9lx$-PyaqeLqA*%lRJ{}<@t8`F#o>X zY?41btjpu`>*UCXbR;ZAwX9PqQ3J89$pTG&G~KI!oWA*m<2gH^eK6E=L;BK{b^+_> zX$<-F3F;~$?LRWL4)#fZ*@6fwQX`U&N?bE-q){aK^1f2>#*JiqaAHQ{mtP!>61t^z z3>>Iifp*mwkxYsm=}YP*c(7&BJ^3-l_D&wDqC7Jjrnk~Q32NkUcBg&iI%)mGAV-6riUh_FZcYu zb0aq7gXvojWUi*W+Th{we!HwwIz?aZX+?5GvX$+VuYmKAeUypFy$87=)EA8|isZ@e z6uaVg+LE5$zTfKLryN8aUjj}Kmi-<}Ag%Gd9EC4UoIir(kMJ_(DPNvdWpZcTDbt9Y zL_6rT8pN%)tHc$wS<%NJLWHfPkc;g8paovcNfyiaZtXA2CQ?lS=e_N}G>^5{Q% z^#wHXKTAFVYes7s`0$oc7wehWOak2h#C3c^@I~PeeGj!E5@`lQho<$&+cq6s3b zK|ob9%tMF@sz|o%j9nlCr1$n0+>Vz(w6r2nGZQVB@wS5mf<7cGow`Wc&k*mtSk)Us zsI#G&AMo-s(qa4Lp@DX_-y>$w!ysA2WW<^POjbGIBe@JUfD6)t5Zs*C0ytbNrPIt*bU`=8^OzPA>3DF*-m#%j_7uA?}@}T1hu?ozc;00T~ zr%KU1Gm&Ng)FlH~EuOZnowlx;>K|{r_dKSDE$~F{C6bA;a_vWdNchx<*pGer#8a+1 znfSAhCDgTy@0^vC^xVhCKh0|j+BIE@6H?>bZJWE-2;+aPNeFy0B{@p;1H2yC9bP}s z=EO}QnDZYZZs`|@pCkg8|MZQ0J>=sQ5JEx-BFEjKd_!D-UtCu76|eDjLFSD}Yinu~h+GZgI2Fn8-tK>PI9 zOsYPY^REUg<5QCQfP!qlAs0Aq#)H3Oz=I(C!A=^*@{TiVcf)tf>&ufE4ff;VV`9Q? zdFYM#-8tuxJNix3H0mU;m1l_mMD~Fx-%&F_iN#%-55|A^d*QirHO;#pUSywyOBf1k zTh?jjW@pjY-i(?ie6rDw#Ho=K8q>c>f*Rus>7BNY*Yu|GxqfY2j|ph9P0BFwk{eEv zU2zr|U28BU{B(fnHvWcgje}g@s zjFliiES((RDzzG#RwTW)Xnc3<$Ao6hCBwIcrvxA;(SoF8 zG{Qs<#4NRFZE8|oB*unW6JxY0T>NxS^WF0|ME84mOw;S@EU&2TMob*sbNM|eH|CWa zoB5dzDu7izDRB#O*YUEXwY_>=eUrGOgF>@mhncNW9x_~TsxfI(b53LTD!$w%m zJl14Ai+(1Y^(=vLC2ZzwsrM8qnbEiX^yeLw2_pY-3fP7=9}VC@SNv8m8kdcPdP5|> z&QYW_U?!OGG(|L#bF#yh2%2PMleu)jICl2MUb$@PENi`tSi_6ntyX0Uul*BAH{qv|h@CVkoyNO}W>Gj;zF)Ppw(DRC z?hI9)G3f19V$I;14ciYLYQdt)-CWCMN)68XS5LBkcIQk7wu+B9>o`@zJ-Ia{*2`^q zi4r@e26ZMaz6}~ypMfk#cGFws_Yt8tHZz_f3&%4mrQkp_4w&Al;OQ~6f&n8<1t^57 z?vjb{A^9Dw5XY-@9ocB?@9mUT=OwjbfV+6LP!l9{$?yTPj|e+6T}wC7fpx+geh$7z z_4RAb4W=Qk&`h?_>;hcRHm(FNwG~uIAzcy&Sc!+3%mguMSWGPy;@(8J&klHe8-WtG z7E9f)f@TNqY;>mvgvlux!ug((z)?6zi4Ds%6GRqp!k{N}193x5y+Uc&gR7_3^xc9U z#n<_+@h(4?gO=ATQO{NKqlA_U=NMwu<>XlGtJ4xCKLXnx1;SbistVN?z*B5~pbfy~ zVPT*kTc41k7}hgcbj@9QG`y}!6WX-Eal7wgwPGn#+xVg8UiX+@`ZdtqPD_2KQRy~OA!-qx+ zQ*j+7zlQ4TG8-C|5_4PHor-?edv}@JEotZ{ zvi90<@%U>JLiYL`v~#y}p3wp0LQ~=i*LrEId(HAg#9%BrN{fOV#cRI&i{=~IsHCCs z@I+hywQFn4kAFya?<17P9kc|c$Yi}Tl(ve?F|NS6qjL%3^~$@Jf56Iz#NVW5DZx-r zTBL#N3#~~l6{rc>!ouB}xL{)wZGT=VQtMaY(ntKJZ_SEpM~S_=E=wqt$|+ej zZ=XBRKx81QV`^z9+K*~NBDVN>m)Rx*0k&#S?_AIODd;ye;A>9@^ET~Y)J9g(op%eU zm_i)L;O&R`RUkn&`LXS{gv3^yH2L5{G8;MN$dMgn9VZj0rqxdJ$5Z|3bUn<;f+>fT zLL8NS>;k++MgQm!MJrXO&Y1M1>?`y(pycc5Espv-N7+}?$a#j+)k`!ac%yzDLWx_5 zW+^$ww`ME(&eMbrEpz@$acE^u#ESHHVg#CaWi3o6C0foUcc?KvcH{B5!x7 z^%D4(w6I&%N@&_z#J3a+0d!N4o9|je(F`$mi;r7(r{W&TlAj236$zRnflm)e9q6(E8jjZlZlUlsD_|Fm8-jaFWs9&A?Sp&s|FP|r^@SqZPas`=9a5fsx!CwbWHxN? zY}-b`ZKUXWR!kM$aY&Vu-fpCgc`UQx+e#aMZG*xa`&wY_Yn@a3qOz1MAA?&aw)Xl3 zKlW~O*B|QgQ`jEk@|Zxo({G37nj9h7(%Q_K4b1UeFe>gcl8l$%#pZGCQn|#*V@TDa zm~6+ckl6>ew+9uwowE-4 zJ?r8MVgtS2*6yMe=vIvOCpvj&v3cCY>yf^31-aphmrYPqrBQygwJBGHU^PYGJv`Lm zypqws&sa+EZ&0&~gT%T;=?;KYe$D+cn8{GkZ;L(T|I&snp4Y17v}iRGI2I5-K0vg< zv1kOqyaSZhCq7Q=7Dr_%`xA2Ug0Mof$=GNhkNvuabY=`^Q>W03-PYNbY27yNCN3T% zJM7Hx50Na;Df!$))sJ|2>ZR3I5UmnjelIygH>l7KG@&Kzo*2_7sn+l&_zygRzbKHe zW;QJl#9(HHRIp8@J*>1#tl$um(|1XXd@V_eT(gV!Hx!rC7E{_yTNs5uP6NmSEsJV{4(b>l5Ji?5#f2aF zQtjrAs#FpAD$hIxOVSqF-KP8=ARnZ~_x%*Y1Jy>?mDjF5fRP*g5jCBW>zg#TZ<|(F z`zpgd#>-FNR527LAwIaDM3)NW=}=VP>#*W?T4v7# z%#X8Tx5!7^h>^7z`)u_4)du&Mu8lGxxy@J8$2sy#vf=LT3E_r74!dx8HCR$uD`#kn zl82{iJj=5+qr+)-8L3{T{&)v^M7Qe|HC8N79|uixsP~FEr-h5 zsLs0H)Irsm))z|-8&U-&-uAVn`zWH1K~h6B(7t`OJ%@LN;w}#??Kdzs%_Uvo@{Oq? zYhTk>enR83>qs_`ISSl|jjWoi#)iQ;j6)gD1`r({urnRgemjySNW?R-GoXcAzO;Ph~vB`+%ha+|P8d67Dk)?$i4~)4s59 z(6ITexd74sQhBP&Y#Y^Jd)w+$Sxcb7f^5ts7InU}VEu3=6CY3ZwKQ?NKlrHD^Y*we zz_jkURV_L1y77SS2ok`TU)Rs{yW5%N(f(8RhV4?y+x6K;? ztg%%{jM~CmX>A~&6`N@zv9I>J!R+bwHo{0>hgYMl1+`?%F@EH$@|!Ty-G*T+C#gF4jK&J<(cNwF_v$ZeUA@!{+X z`OVvfR+6M0=FCQ4U(4=7rM^B#;~RR5E_iBfdPKly?$yungMoa_)>_rSljkQcU&DpY zkm5yxG7ektU^*-qnbw*@lH>K8zO#fa2vs@T0vc$PFS$11aZKCc74>Gb%5|FAEYr6v zSo?TdHM-X-ve{9)V+p0z0^dQGK}J^A(X+oYG%%M?!gQ}q^dB7rA>3)xo~LFFK#;DP zEvIb_#0ih0yjvNxYH#VySgj29=8?T95qdM$BmzlebL zrkT5*pRhQo8v!nHpU5{P@Qh4t$0VIob}1qm|1DW z^4@K0Zy?)6HtonIMHS_@1pJnM|F5QYC zGpfXpI~@$^&6v4Wohv#>sTCi?I}-n;hGjzPWgbMeqtOwFW)tY>LkSY+$QOj^ zFSCqO>0_5*!)!g=J|9t+*YUehCjT!v_0p9#1o|H`zUY)V<499XtA4EAhb#RQHmMM1 zXDv*Zxwz&f8Pb^XB)>_SsW|l0ljIz&Cd|#ykZdwq4g|lBnZ8OA#G2o-91<%jbSo-X z!b@q1`k~h(o^ZGJ=4%pKpw zC8AVOx_>6vVL!V>LAboKQYDA~+!2Op5G`@&;Iba2h_SUuZVYfYUEH$kz!p4ylTGAEb9H0>k!Ah1H_cIb=y_4Dun{R7C7lz<*Y)yNu!Er4YR26%rR5-Wxw_jucuLpOWkyp}3B{o^PnJZ6#5|SI5+OE9Y%O?- z1>KJq!&mJb_16EeTpxQ%kUQ*R6-M(=n=ITScR0KHMiYe1IdZ_(LubGwszU}@EEMc_z4LVLpVdbARCV!nebBZZt-Nct$ciW`7(CsSib&@j zD$Q$JUZw#Bz8_mW43?2R>74AVO4)|vFPExrk=eb|n2Swejhb7USa%pDJgvrH)seHc z6iK34rxA%>Ze>F6Hz#)K!KUy$Z*#RF!x|Q5OeZ!utR^Nd9`KSHzo2xTu6%u+3N1K% z8C9FHc3aBIlYJ_$-PK_PbXp&Z!y&7g@aPfjrmk(ETF!$VH|Hv z;K!IMgx?EIswcgSc0uSgLJfH}g6gF6I%e0w9;1b(7vH<)T#n zCPK|O=za}WJ~7&nRW6Roji5i-Y38%ItJJYs+l~9kgq~F&scPEEY>o3R*H$$$M)yp; z>J8<{ixSD8t07ItS$F%{bn0(vyBZZ2hi4~-3vgAKwyx;uH)wH26RAYj@0TOC2$wFH$6g>Dc~RNXnOYz2={ddGw4>W z!iUD>jlk5~n_&5SlssFFng53=krH0^*+M2&yx==i9D9+ zIYd*ei<)pCZS3(2p{nQ-hu2#SJe!4p_*eA^NzVq}-TMgsn-a}#JjMnPNFXG3v&6~$ zan=`ZOWXWNthS7UEgO2y-5<5;g$?DI4|HX980vGI4|T`%mr!<1W!Umv>odDLaROj& z69dwLo!nhl!U0v>r$AydGn1yXz!7}Ey%w3z5@%kI#YzM2Kr5ZW{!%sAg)fF0UqPry zhNcsZ+_0>|&Nq}v7dbsw4*rKf;HV77fC9?lAFQM+X!$K&~>Te_Eh)zg1jdWilMd(|V z+r6N4%=OfYfvsex_5+`Ewc*U~VM*R-z(vcVT~@9Sd9u`e6K@3=jM2Jb+&lxC8i<6H z-mjDAwHLvfvD#}Ur~?^TNZO6$I#?o@|WC5Q-5fo(+Ac)cCF zlB9O0&M&ADXtZ)|oNNqW3}U$&>-f0$94Uv4wts~dY+CK_znTjUA&*F4_W}k0@SjTi zU)Nx+CjbD^|9K4-wKO-i(-*e4G5qfwGv4@GI%A6`U6?P@N%btj1D2) zEJhKrmasI#)dwvCV3}kKu$OfcMzy`{>+89?vBO2?xNQNOd(m&DHewwz8M+ z?UjOJl`Lxv`kgE8QP~v1B~5qSQcTPuOIJUYjrpz5ySuGo%9|}$#Qf*Y%QI!)4mdp@MzWK#g-dB5W>)PS(P@y*>nlyf8f>>^fSm`gaz9_?syWHNJ z(%;)LX#dMB`9yLh`)CdnYvz?l`=|($Fy8pdIBm}H$B6NZ6)&}FM#U3#80SeduzCQ# zzIi|Cl4a<}9&Ol?NojnNLM~dv_o8xm&riNLXMjtbL3#Ofwy`S`D%GqMi(E95d{`7S z9&togNly@avoY?IQ@cVjrOHM_4DyRSR#l~{x+#Z$Z#(;8p_itA2ROrCwmb@Y?CD`_AP1~^Gp2B1>S3vMSf55f-|Ok6BbbA*|>$GzG;WXH^e(7 zMU*ELbto@C{Q>0cv#C6;m?zWpUNt3dRr|fUr%N>$PuL657ht27@#mahToUmOE!mPD zkA4gHg-(`l#4|CaMU!8ynFmvx7t_}Z5`VfH(+)2fYaHJo%2@;32Cl{m3$~euDw*aq z_pAPzN|m2<*)S&^_hsKP&sW7B%zU1krLov3t<*To#c5Nqe6f{FdMrJF7lb%#NC?6J zY&-a-gO;u^27jA=?wIp{7N+QD36N&TAB6dbn-2KQal`w>6*s1C`PvNYUl@~!7&uJs zmTa0nvKvbD2hTJh{mOk>+qTS=Ps+$8#G-Rz+~ss!Q2$ZRpw1cMfa<^KM)&?-yWj1* z-(zhpTHl}PpW?f|-@WVwNj0D$u4MbID)z(w@+Lfgl9vE8q@@XHEH4(fgrGDPN^BmZ_G@C%)bX0z(3C!_xuIG z=M!rfWEdr(gIJ@%f^M*2i88bm?sya`J#yIzB|U}UlCuA38!|duyx;=DDc>Z!wCDmj zs>sX7gV*af&{%-r#^@?M2MXxWl=sBAsTm$V0}~3ij_R04naqTiw%l@ac3!4Nlf*~g>-WMJiH3~KYe^E`>Vd+65p9-1I9$(Bt|nR zKp=4DFRQFMeMmuTTlVVy-S3CH+tI&XZ=d1D2c|1m1xr^K*VoV2Mh<}7ZjAGRxkHSG z({{?so~@UL!pkTQZ$z>5hb{agJI{*B${WiCm+i8$%lkWNwYToF%)8;0Wg$c`5A(6r z^v%~r8HD@AVZVzD2;`ix%hQijnS#}S)5Fd>zCbAcjzbH4McX(rifC31(CxFkB!)Rf zzY|o6PusFKcN(k^HtYi*cprn)vz2{M1MV&IAAx&?%gM*h1$qUnxIKSfoY+#^54R2c z67wB5>~jA-hpmP`d&zF+e>xo;oC|OxmPN&yHks}n3qDTw=YOQT`)4}=ZA!>ve-(K{ zx0ln)wEZ~);CwIJ}zXE-tVo#|2 zd|PKN1ownXn?HE%2#Z3`rThVp;p2$G1s%MCTrP>H;!-QvX5h0>-xkRPLf!yM=dsBC zC&=ih#Z3Q(VaDMsRq^{8)>!-~}ei)C6IUUmCRI_>;}zxCq58FP97jN2Jti!LED1iV`D zT{D1%;*&dsP^cKw?Ou>0_6HWrb~g}U9pSoOzAnbZ18!FA^Ae9^b`)^M8TtgNbSl-o zkd6drv(32)SM0#281>GG#gl$akV4SMi}}QIE_r&TQAUqKjaW9_`y2hIo{D} zK=^dUJ`rGCE#~9IDVN)>EJY zZwEHgjUXsh-T~}9Qiw_^`gCR^^8qqZSWva_?f@xB+$4`n{&Yz=xJ&`s93Avmz&IVP zkVWY=#%QUYkB#Oda2Z(g=IZ{b$LauOwqk%3sg4RPBaRXPL%oz-3l$l}X}%HV?YOSM zK!d28Q!%|QGXN;?!DVg)hR2RXc@SA)x)`&lba)kisInS$EsO9*mI+}p%r~zE!Pz0r z0RA?<%x z*1;*ZnA!{B5$3{0r`EIx2{$vxcZxR9#YM%D6knaoYaMvQRrLlNaeq*Uwn6a81J9ov zd5^Zv@vAprR?E$(foDuj4?ChQI_IUm{+J3)>xjlN3J~VKS7YE~f7oON?@dNvTH6a7g4^;Q zy{O8B8!S;QwAB2Ah2YGN?S+#*;6W#`o^0(NjvXdOl@u~eFDeHx)y~)zVd7@^&rPKl zx^+0b_mwInqWd4B6X(Q!tg6;vv)toGM3HA25BwB$(p}wu9`4S6)qbLgHv@&!eET~X zwGXfU^YVmbGA*e##&!^>4HyA*95|x@Y9UB+EGP`4C)AJcM#sbo@&(N3+?25-6lEgggtt=_ z#B#Q6BWTp!)UBP6XD$#-p@zC;>eh1O;y__Z^}w3Q#p&QLtW)2Z|6!Y8z0DS9HZ?1< zw|P*|wrV~dc1uBa2Z%{wLo-=gk#KYBm6MW;_Gp|4`6;oMXK2neq2ZV4X4jA79 zXDiJ#m;izoP8<>NHb&u6R5xsfq0#LyT6ItknroRYgb~672)-E1!KKW}L~XNN4ICHb zz&Z-YA>8B~O6^BzE`mY-Ppt#rsq9!09+1GsFie|S{~PXYTHM$LfTaVG5C_&!WbB0T zb?jMUoDlVaN#L46ZAKxP1R!qD@d`Yvi$EUCas81tNBkvVs8Lu>au?xZ zG@!c?5k{=B5`ualTYZ|uGPkYk%}U$0Z5x%gZQI71c2?T9ZL8~By>-z0 z>bCHccs_jVjnvE`j{1>t)~GRlY0N+6WSjTl2Snks@`Z}f)VKCtf>CHV zlZ=;I)z%h-GfTUB`9c?y_#M{c0a*>iXJV5PYxA}wc7r%o29Up%Zu%XwxqXklc0wo> zdIN0b7B=`+U+*uL@xF?orLcm;!w$jZYKR`7B(crbRQmivg{~BLLnwQ~#ZqryH#w5%WJwJ5kG{=TBj5ud^e$@uEm zB+;KqUrx=d$r48sX}Q>UelE7?O>OpDMh1;`y8ID9oWyzd<`aUBpfU>0y>q5q< ziOd(|K-9AEVZt@4W5xM3inku)58{>9CI@E(1okhq20|2wA~c&@KpkB<14ZwYJvf{* zoN@}>fOp0h5a%ORUnewK5u}5;cZA6gy6-*cr%aa*Xbcr|^tR76Zbw0;*C*8dfzTv~ zi_W>OFzwEr1A2^vBtibjkSn+)Lx%fF;>?(%E>NCP~r2C=QEl1%>J(=IB3(!L9qmf?mPRA?G*iZsTQ{DPvl_o4mCmux~2y zZFEe!eU~)l*fVduolK>!@mdY|?3^Ch0CQuOqs-j4bL6xTdVCa@772n7{G*~PB?_~4 z)s5D(-)Yu%izF*$lkJZ(Xz!1~W9c=B;Mp#rNJdxEBBwkoNsHvJi61o2zEF6r-FEA; z`n)!h0Rm=RCOC`EII2tOq!k?iX(lIxFMm`N;`%7c7LVvNql5z*qqmgrK@UK23p}M#M*NHOM zeR^aO8D@gQMx@bisV@{1*Rf8&rFHLyH1&xL&QRTMs}>w^0Tqp4+NU=oQQP{_Jn9zB zIfap?zV4ov>H0^7%qXn5DdH~$5tDTz5$;3pCw)Tm+H4>v*_yukuM=pYf>4L2UIKSg z=3p76N7o%49*ebtD~mcIt@G6@4m+lO!QSzmmIbvPxJ3r2gKmC(o2_588_UxfJ?5z4 z5yz5bR@FFmg(HgCZ-VtS42UK6zx}F>MQ#~({IA8PTpYd+70>g(p(C-P>K&wr)6M zin+#FYAS7+8Yw~$EgA+Q++YTH}#cKPRVS$31L^P zz?QthasXuK#XVWvG#n7`XQ_Negiw|u?yxbl(7=($)~2Z#j(31>L~;u|H?IIWHECqXj`%}+ogK-Vm3pyaVDRWOGk1#avMT5= z@&&8rG+-h0!756ePl~ijThem#$+q{ZgG!f8mwy~R9Y8>c^irzn1??W41jS8Wb_yJt z!vD+EfQfeB-{_8!2F?rf952cxqiX0)sNq2I?mA6+br4pS??`-K9cnc#g_W_37F}@! z_)2Fs`w|i=Xll(!b430c{0Qy%a-`$WyT+xwpkLD~F~6-899#nm(xmXoEpiOD(+Zm@ z()qLP7k085Poohqk6iDxyb_35$G9Z@$-G`iP(m19`y6;qJbQikwSza z7c~Jqv7@=gw<;A1i+R^ZWha-(MgtXOZa*8p*$J`U24kTnId{}~5qG2#oRBfGItExT zTO(3Dq+3uS)rgT#5^X?7L)k5qSwa~#Bi@M`HAO+g)k|y~&a@ylx-}DgszmX7J!AQ$oSlsbtO0S?P43eQAA7g4yUvF{N4( z-nNhA8^tN#t}W8k#rwh9dYYC|4$AYM5n`>q@25&SSYK-5b+b4{IKLYAI%!bk-9)`5 z*sr3!S!xlzxo$2)QjL0%bNm2Vtu~UpL}O~x)v=KJ$<@{NJ?4Onw_?IEG($hcmIV6Q zTSYr$amSDu@`44MkMK+OMZmx9!uMpHZEueY)$Na6U-P46qUZp@fH@7F$0!bzBq-V4 z)oyV*4$iV7hay+!zK?`&nT{QqMmNDl3vENh0{ubDr#EU78P2ZrdJWs@6vm@c`HLFP zz<8^>JHA)v{jr_zJ=7va!z*k?r43Uf2w;k7U5xM?YKvwZ*xoXc9oPx!Dj3!br(F}gc6AVR7u zN#Hie3NQU$7!&;9ii(;;DQymq)6O&KQ_TZKI7O=LpLsJ?v|0~cxCQ^6w`5GZ9x(4e zdwmfOi4ll_hVdYiwcU^`#P&VKbmqA!UxWoo{}{BB7u@z?kh3u*=SV>qshAWsnTQsJ zbn-^rLIz{#+ud$nf`TAg*G9O&K1A4H7G8XhiID~$T+&}z%!Lop8s>A9hqSr2_x%%aTX%1;Y?cXiEkKkwK|?q4a3x8WPr-# z8?eo0>N7uSq^0txWCLfbT;X)qy4Zenz0y>iv*ZqRi(o#MTcQq4zEH1D@H~&$NVX&G z79^Ht!L21TUV~P`og#eBEz4LVFpMmrqy@<&sS<*w>L#^5WY>|mKe0)Zg7~v^t`z@VEVpF4a&I$JJ79ze5o72TqqFPk`D$~P%9D$ zWEJ`Pjmhb>>~`Q%O>u&N&&7SYMaN+FNtJ!1bkh4K^dgV5qZ2JNPW{?!l)9{Jz}{yj z=V2tWs;u6!fElDr>uUV{w8PR7fRkXG46F3JVO}r2qiWEIs$oKn7|w8yUd=G!ybZWo zGf{6C`I|t!dFWbh- z8^BLMB6D$PoZT}uY<1Pf^Gso2J1tMMQ1LZ(b(?=}CBe|N9v5cMS~IU>ffF~^O3jql zU+OYI1*_t_t<@VZeI(XCf!=`O=^b1r(erY>a)M9P=iOw0PKuNyC0wpCASpl@BQORA zBH!S|p7i#b!$u`FUyK$RhRZzDq&T_VASvQG@(`VugQOa&O3{5wUm=gDjOgzIP!m4h z@}eKM;#>|O4Iq;{%H6#-q%|2By=!#5IQG?i_(O8;1~qZcS_%Zh$00@RxiXjGkf?kz z#tYoy7mL4ox4|hG5N5x7A}yZ}PPZ(-PeQKk8SO7sBJOYnb(6H{}If zR8@|=a%AEzbxA7Lv;i$^{&?WzZXD7pe1Kn(s@?!VNy|PBXy9$a4{g|H*+Ex~cGt17 zQ>MHAZjL0MmVi4@5%$vuzfW;2epu?K?N*HnOwj$j3bW1Aj&v%7xXKv+MMG29P}Ir8 zHPWpO3VC9}smtOKz?(sj1YWrWem@;+{ZphU)B>%`HfX9zFvG_5@5$ohyqF(A?UBH< zHv_C^(Nwy;t~+PNw^=`Auh0qHxwj-@tiuY@f%WL-rw)feoGW8I9)mQl>MTI3A3>H! zSe}|-vQgXc#|DNG2pd`_nA}-+28esctO23~P=v1vnXA+pQSoa-QGHGJlW5vA5*!zq zjdl(wTG z)y~}=#hPzH05h-mYyIw|ym|VQE$&c1ftu5~#u|lL9({YF$NbDfqg9Mqae%`>0)O3z z{psG50a>S&$u(kJPt@g3Ln`cY7@?%C13DymCbC?Kxw&u!gtx*YZo+`CZ$Ih`bV#M} zXDoN_s|Z^lYlb*Oam%QEq0jHrh5`PHoqmJwKK&hT7=5h6My;4aq-pu8aQ;sqRln;f zhggm$k4(vpI0AtE9-hSmYAKZ3hX**fjKuO6=Rn(r`kA z9GNSdIKTE#EKW4*^g8)CsJId6!m(s-NeRub_(6F*aPHk|FwI}!{fy#e#mfzUNv{zC z6m+sy_het`B%vg(sxq8HP?$f ztFc>NE62v;h=l_NHgyPbAkvXOYI8|0%Ro?1uKnpoeX7)|-8v|*z#+d&N*>m3&} zdtzYLpRR~(FT;Bbr)rqTYG`sIZ>hfn#)ITD{VWs884FpFl*1WU%o%lo-7SeYHDYa5 zHhty9eV!Ym@H%odXF3sL&aXjInF(u}+GoHkcu$jLI<-DW|CDcB3^KBNGud+D>bb{H zG`$5UXs^ND9Gk3qU52BmrPA;~*qyUwRq5M0b=nAuU!9!IZ}qo-{?Q)XT7+#i>1HM^WU_jilrlVEmaMwjw>rM zc31f#J$t_o<=JP5=j4acjNM*+cKsATJLitBH~9Q?UAG`^BG65F5q-lJhd2>wd~to( zaSwmj=Jbs@&((hX)rqz&nd7n3!`EjbxlB>_u3>3`{SsQ1efl5k}8>J7pXt8hF9z{&Y7lAmfK^&kj-yx<;lxE*ZJ&xhKG$mX+ zkb3oar&@P;^Mxa+`#@XnA}1F(WaAZ&L-5WJADi@qjEko`(-up^e3xZS@&P?DEtBnC z#+aFWvTo?K7k+fd8V^iqpOm(ClKebbffE)b{bgH#tofTE60|P$LxlXv$DoI(On{;N zC84ADiklbKE#Ypm3)A4agiqJHhJ??lJ`YOW%ben zEKK_HTE0dW*$1v>B58?(?T9r3m_cq=w+G*={Z%`f&%(}m_ zVa`o|Dh9h|HjA|q6VoPlJ zZxaz8kFR*^+W|E!4u?jCi&n6okXd8)2!&>YEt3|^bUC6p)b z<-8W#-!0EL3tekwB=qEQY|4&Uvb{lt=hx0f`#nzNWaa>q@dm#TdC!1c<4$e_ zi5kXP-s8XEO4d(l0kJSU0~@$3mgaN57X(NcVj%TH_=8cb&P zKb2T@Zq_woS{a~rw?z(Wg^{>CTQTl^FjNm}{xD~xe$bx*Q6DD6{@VK%Rw5mHh=S|j zc+k%WSs3PI-$Q1_?~W8uvM*%t!_Kh#B3qfIlOeKs>|(J@%vJxLANW4j3_KOZ>u7!` zmcKZZ#VLD3bzQt)%Thf|J0M0cjTd=Kg%CWQ)3~dL6=k!IFWU5J?esX=qsitSbp$K5 zF&OL+5$9+vznkT8xGm<1YA594N##mmwI)w;ur}{VPJk(hOzF@;oR-Gw-XW2?;`Ohw zTot{t=w1xXwInqU$NCM`L)t4K_mt2$JX#DZnKdIh8WQ?(Nji@G8 z>A-5Kfc!!k55>%KWA)TbehI3T-`CMdt7RFNSz!)Lmq+hk1o{Y?WnU{s+)%E-NO>u{ zUc2R8tAqOTv6@`TCU>le46*zTw3a;yF-ZxbZP<);4aNHTt`z)1)Ad?5QkZpVXib@5 zGsh0$&gh1lj2JMcNov7IA{Mima0v7pWG2tMySG=a+AXe6vHJHCwbE1jS2T?c+ko?& z`K||7h?wIQ8%7>`eD8N8E?YE1k_u)+i@{@)PD(!~H%Gqp2okN3L<3{4PShBphoVRJ zLP)c-9+0zuCx$#XJ-*YWx~fo(-Y-kde2_`x_`k%ta-VN)coSyYS_%l@^Bl0G-;_o< zwN@8d3fde@D~E;Bm%p)3K<<_FMiODD4A{4Id9on|*LT`X@Mh^XPMX9tv0NJ!DXgRm>$mx6(6E1Y5 zi0G$q7$D@Cdy9U;dLkDy$$F-TH;p7pby`X$SoRm8W5C~wOm{UHD3Q(%^!PFD^Am+u zsgV4iU0UJcAwK4dt-myV8JN?xt%JdtC+4ds=fOac?SeY9@T0ug=~DBuBz8f>mF*Qj zpYuheRyi2?qMcnkZbxd0#<`k{g@)Z9wZnt?fp59W>(aT~j4QiU>Z}UBB)Nt2FVy8e z;(hYd45Vc+EwV>&;cpun?MW}MRPKQ)5yZuF5z{M;>cQ0ACnv2e$4YElnJ?#qu-0!n zAjf0OB4Xx(P*SS*meOmoDk&QkNJ*-ZWzGgWlXk@}uvuq)iwlj~5W+O#ghC~bC|(!G z23@K6*j!`NO2tE4Q|g6s9OcxLjE7vt)Pfne%qJRRy8i2s!%&tKZ1(gsHUZ4#s0QfB zfjiVKBDER4z2{>&WZRYZj+NmVZcG^%3T~>P73`P}aBtZPtm3tuQ-(EJ!6bcJ5pj&R zAY@t?qw9Iso)ATpMpNDn5?r>x0-HXK_WJIK-S4r5<1B*ZaP=~q90(^oNIVf{Cej_z zUq6UN%4o2-uBO$Nl5KQ&Rbt9DM`k0S7(Waxp6%Sd#$qxQu-v6u#C*_-9KwiE3<7_y z#kSlJG7(7v(X{pCP;S(7w^+r5p;ZM%S1@+VMU4DsTY})d4O!W$I#vv(-TEzr*vUq& zcqSspUOjQX`{*oW$>lFwxqXr>H>ai;CUTdTYvKwfvV(nCM7EW@iyh5)%a5!CU);~6 zj(}|B`HWdr=2Hc3QLfM!lV&lwh)q<_n(Id4y|%D89nKZKF}>lwdEE+ZC*-%xgD^#M zvko$dw81^fr57OvI;aZxky=@x)?{5N&R6@`91a8;Dwb%pAn%!$7_q!XL3HKcE}2j& zSoOV-bk^w2g|-0zns)M15ZNh%p)@&J$@SYvk(J>^%{rO_|DT#j>|Vfp+nmJ)Dil2- z8xs$Y-qm&I>z^7~W6;*Imfl$IC5CZD=pOS4iR)PRR4?u6TDS zxmZEE|0J3JcAJ|1cd332am8Xd7js;e{*9&qHnT#GjvLkclz&mOBNYzg-kyIE3#o*p zT-b-tyDxY8aIRvqH5(_S$2VwlDQDY0&rN?A(URNk+7!Q4$`msR5-kMqPZ;PxRwWO%>l?yIKfj5B_A+G!Al%MePTeLs@`9z*tvZ$tB03WE=ENG(hUrpvieZGj11 zmGU27CR)14wH@(ZnrD^kbZFs*A2!E|C}1iTMTwQba*r_{Nb&vM;^{Jjpo6YtxQ1@% z*Xjt3|3Y`QTO@&bRzNx)8y3L9>~bVp&Y*f zP{;wzaJ#EqZ~ab(u4|msSf$f^=%sUaxhNf`I-NzNE=3ZmI)8g44VlkSov5SDmd*TB zH;kT}zPi+7e>ob{jd>vn^6Lo*ez>~P*03%Db$@lyTZXOX%yiF9mDOW*mDc3wA4>CzW8V*ytmwIeL8PpdY`%3^ix3u-qs@@a5R*8|5? zAXs0g>w@!2MK8NYHogAIiY=a@bxvh!yq0vDT(sYIRZ>Gsskow`{s#r8ntu_0Ne4yG z=rPEc(wdHJSnvsCfG#sH5ZMzNRe#bZ2v9*HDZi8OXBEvN(V|yvyOTa(5Y7QB;E|aU z9%FN@`M&RQogOt0f^@wKc~^{R%0z%J&;lS777jB5(E`xMNq#R-4s+nm5p#a*4J7Uqjv`f3`NZDd#gWnq5Nk`PtQ#~j{RYpomNaYf$ObCO-mbKfa1G&PhwZne z;UJ&FM*ij%wY3)^o0he}iqpgP*5)em7o18V9R^10W!l#ty-F=%bXOBOYWiCc&ENJb z;-|5Ltbqsu;?4>I2Q~epb}eC*8T3!PGrPs0S-#Ox4=w6(Do+W2>LPi(bS-MB>@dm! zdjf25>dA2R5Z$UchNg<9vVwJICe%u- zPG0AQ<&ES<%Y)C+r`eUlYUDjL(otfhxsm4IavM8B#5LwOxGxJ-pI>c**8PDdZqL^d zySYgt8a=&w^;$k*y?pxP?2BvLm;8@rsP)SAUc4UEtXW zio{<$aHi%2{=kVx5-C}-6E~}g!?nSFweb>GOQG1rx*;xIhVc_Mak`US7>!r8C|S?f z*Gy197O?g0E|cd;vwOF)sIOmXnVn$CcGoTY|-JEB{QN&8_3TYoWGwK z%#y?b-g!j|i5m+_vZAGp(Q(3}yU$TPZg}hA7fBTKlLockKFTC*rJYQ`Vi2Ebj8go)d++`F|ZGp#dgF( zsoIjQkh{6c!8)v<#O6ba3s}Y^5NI&OnG}D~pBHKyF)V!;95<%YD0h46L3!vB8y0yB zCd>v~+;AH25)vvIQ+D%L*;^o2ri;morNI7>7hd*Fss~IBeFi8Qw zCM~qhJ_gh(T8aEXcAl!%X_=(}QJ{pxvaJr^SThD5*%olgHHMt#m*&PJu0EZRb9Y}C zU0b`78l6w?TYy63+fKF1u$cz(rVnu-wxc%=7563bsVQ46CP_3nw-id9%Sh|V+lEQ9 zM(^0T2L%An*F^~>TV4$>DO8PX*-2sUZ>RN~X%H2=*EvzSa=a(0PtVErHfU)Xe~IA} z?xClf&7-GYK3n@mTxf=XZ^s{VM-q4bwedtH3|{@nbdmYzA6a{r8f8_|thW|V=BN&2 z^Oe`wv^{Tx2RfAw6mBfGz3nRC9m5Hmr>w;sLr!Nlf732BXAi?^T=}=F{YcG>jKZfO zj%7fXW)U#P1sE$C?M5=Y$yRzjEvjKsECRpm5z$leP!>z_gkRM6ls4}$Z;Oxx21+UB z>EF%h<)08Q1UmwIy<6-5LghdbfqUKl>ATUtc{0E2IKR{1pKCJ&>5pPrM+uP17*wcn z+N0q_DOGv0l&nWNBdi+OGa2Krz%#8`6%+=9HQHFGXkqA=xtnQ*=Kw@;Apw@EmE?Cm zu8f)fFjb6pN3mda5!UB>!`0ZC_o~B?9VIr1S^%Hwge{&k<{YGCr!7;=){S5^Nuvo0DdFrjTE( z^494D&2x4Trs~vqMP);=lbY)?F-Xabxof?lZI^Y;`WBUjZMKg>)!( z&=ZB2#-zME?L)sT7bgR)|&{9G{U#2c{y5Kf~ekA?OhMA}XA*xO-FwLx19Y zMc-({n!SY7c@4ZMLn-dZ@uWTQ`0phkaAm5c_ospkb9En*RD)F_hKt}80+i{|kwWb>-X`tc4~K714VZxvE}UNUiTv?Zh(kjK@~E{M2?x& z_!YEOLKQn*mhzrfKl2)o#$%B{$=Ch|_@b@4v)0n^15Dt5N4i!Ebg4AMhXh~LI3Zw| zsV27%$RpogNk=O>j(&ae>Cu9(adT)P10rBB?3TAu)Iynu$KY)uY=V&@6Cb52dPv_R zm~)hP5H%uX-2rD7qtnia57iPb=L7i*8q@Q^QnW3$*b{0kg^23;!N{C&L6-(fMrA}2 zKwGZqt~TsZu<5tfjQSRRjoe1?a+2jtcDc~9EEuBnRibVC1O!%se;)lW_?H`%KQhM} z`@pVL^bSJMkH1lsKP~X3v*&bd+8}r~1xA?+YWU%d+y9mx2(4lISAMx)UXVcngI9mO zfCc&QQrbNV>}YKNO3uF1$*aCn*7=$x%u!B~utTy+mDHUy9p5*! zqnvuP%nL2|>{5YQ@IuboETe(iEIv}x7b@F&RdqX1S9g6)X%k-LOKyf@TeH3)b-1u9 zCpXVZNK~#?Eg=w^iYkeLy?a^m=iYFHlc1*NTRSa~?Kx&St!?u>f<1kbc4rFG8iPH1 zf}SdNKPARC>=%H8i#Z- z)qIL<{M9rn*ufvbk=lutT>QLr8wBSH(Tsq&MhIC>JbjhirLbRm4K8>%{O?@ph2e4C29 z>@a=H(O={Mbrt!m9Tn3WrDke+)KPuT%$*cS6)AftrX;c)G)Y;lZ%U@OlEnYJ^j%l` z!+aQZza3=tCid#>huc(XQxMq|`yH%%#(-Z2-_7LnmnS2b#s_=`X|rvBc&^x;j5oxE zUjllbRcz-F)K~X+MK@o_>c9wM4o_|C4_euQN#mFQe}yO2fxMV1Ie~!w6OsIX=fU#- ze-BSex|li{x>&lI{s*0J=%j3K<7VpQ{QmEACSA z7$H_mWipo$NIYhKH+Q*w#qSqBcXMN583RoYI>J7N-j|gV34knza)Bi+irlLnqp3vf zSy1|IvuHF5Q${9_-S4x{B^qX*9*Oil4`ixRwHUXo5v4u$BN=3Aa=aN~-d6kRBcl>L zdxz~}cl+%g-%&dlpSdSl@ zRGh8rrwg$Ov6&MmlLvX(R+fRior!uQNexqfsH0Gr3gwN4l&8+vi{1CK;@^$iIRg`{ zQ>)}%Mp;Yd6=<6kiT}dI)r9jHmgbKKEfwyVijkxyM#G`LN^vm>D;s0vxOrczhAGLe z$FGI9x~*DtAsw(DL)rfvgiY+pn+JWr-JZV>zMV|Gd}V!~OdzfV?J>k){u1PTQD9SI zKk@2ELQbRWEE6m8^^wsR;Z|hURv?@+5Zk<$r{@CA*mNoh!(^UD+5QD$SqwJGRTQ#M zk})y>^;$q_lsW1!K1_;%n$Z~S5$WJyi;dqjF-~cyMRFCLyMH}K2Za6#8g;P)60GAWVzYl|owk3&vk&5_}T0@mbS`K6m zHqS{#r4 z$Q$E~L72n)9j6x`Ur9rOiDeKLkE)^^EzMy;W=Tf{ye}4 zHb2ZR6fN;!GP$3DR?&cfsw4WG0tJp?S=#xB_aPi3G$(Gb-;A<_V*kY>m?fI2fCUdn1-)(x`;P%Ubc^81CD! ziprC(@zz+((=xQkXIrwovINbED%G+NEc}I@G3A~hFCUDH90tMA5WE`k`jfNTwMsyp z=(>Iz{bYpuLVu7t?&gqS@Uyh#;l4-xI@D{`tuGjX)v}#CZ%^-+>almMXdYy18%J^B z0`V%6@yx`Ws?vRT?vXh)t}S}YK4*TcGmVKQ#{r_`rD8EHNxymzO)dU7YukSFj+Fn( z!%7IVC4U!8woelm#3apXKmQeULOY->hB?>X|5VZD+3{y*;Bx+twJl642@kAO&RGrJ z1`wjqVkknUEJdAzKUmto2iiwzoSa=8V(x%T;FI1vAC(<*N~)1Cyn3J+rVLq}x-;br z(e%oPPq3Tu_&H5)V@|>R6_yQmW|pH3h2h@m@1@^nt=rW+YPV586Q%9X4mL_5ty$BAPAo5zApEjGsa-xT>$d-Ex3qIyiJP*VnI3 zuhtMdxDq`En6I&_#iE~$n!1I%S~ebqhRvU5Yq%cS>$eSYEun+L(^X zV~$AZBIjoB^)nr3usOd)rfa5vOWG&AjMfsH8=jn)Yr6cVqV&;z&Sb*@(p(ZQ6K1#Z)lBu5cIj9AKqtolS{z~+CK-W;)slClUv2U6Xj#m#x_q1c zc>iT4Uz@PnQ*;soD$UoK)B3CegU8F?O6qmmqi$25`0dQE$Kt>K<=2XByeqv=d(H=a z=dt5U2j#yxe!q`XpYu1J*<|sps=@=wY5&+-u@{|2hx*rZ~hDbk^zQ)}5W82!o>Wv^0!3cOum;IHl_xtzt^ zgBf9}#somBS7m_r4C>LT63;Nrp7y6dkRiVek`b{3(-ysybwO#U!v0JVSa}~iLA05I zpGYySU{#xFZzd+gu(rg^ht4Hz^sh)H<29#l)!A34$7=h>$6z9eN!4>He)Iv$C6T}t z?cS#0nothV(Cz*?J9xZWI{L`kh-zEN^RBCpbl}}NJ@TQF={IbHW%M?>V#^rZ&o;lT zSi!|7Xasoe1!)nQ8-?T#qmUoJ9Az^yuJESZva+O(GAG3mlYvpfU!?Ml^nv^l(n)1J z#vtgor{lOR>@LF`xq5?Q@W^E*K~6>|1~wSBU5Ecj7M?0>jy^S^uL<@NGc8Gh`J;NP zYiXGW5?^jANKgk|$lfFbo1WMhb)H0u0-PXp>^x$u1N}>I(u|pirit!O6FSU2mq(4q z-$T)&C4o^nk(|Y?fh$f^KZ*@ZHE*V}FzHdU0_gXF}1fK{epOOfmG_U}_U}0SxRi_R0K8fW#RVdjh-x=e=d% z-B=qO1S2i%7BbPnb$hqPx31{U`z?BV38A;osUK!F>pf60kAx8;J8JwOy0LJL5(i&{ z#Pb)7q0w||^kx=v{lsNk*xb+f)h>#K8M`O9-oKqks+QzFl~<#G8duw5c`A(z4A*zMY`=y2xBLUYOnAz(0Uu)c$tm|D489iN62R=eC;bzEJZYaBh{L0q=w!)jaFVzHZ0_RwkRC7F^2~;)i5sjZw(e<12bK5M444R!{N*x}l$d}0vec}S# zmCd&l5MY8@cL7X)q8T$v9xoeTN-d3#mV7X(vx^t4WctB9q&clYh>1L=0P1#p$y2S! z;Xo?C_YF7(&Csrv)Xqp9i&o7+h29dWLQ`I+U(`|DgU^9lX=t`+Beha!RDdYq5zR|# zKdhF=xh4$$YO3Jf1HfGm=R|`pePO;-R;oHJ!x>8FsbnZ9(OP7hrd6J6)Q zQM=b}5zWuS<9v$Ff=`UGkz{ek_)@IWMEm!b) z=K;cEbKf){rEXYAb9*-Kw-R(~wLm(gbHRwd2)vhxLhaZdyQ=C(LDMjNOtQQ6PP zu*E-ApRmdpp1OZ4+=&j8^F6+hO(F2xs|HT5m$}af)Rd`Z*e0}QCb|)AKZ(8ka|Jdk z9-J++ry8S!XR$6Ed$D^vfud41SxNJk8cC!~L!}vbm68wLwCF zF4m!$I~SJJ7p@uR7WU-7na^*;>%Wp6hsk8((9>r3Z@*x;zCXxg$H>(4KR08O5n&~sJkKV1!t-M+fUeTN7eIbcmj#%(16bct@ z4+s-8$_-JbE{z=rlXUTFO0=)Yrpg$v>)n4GCxZ8NfG%%1)HExEKg`DIxU5+mYYhPI zSLqowN=UmveoDuZizPL@^wS^+WKXYxTu2)5hM=d==^$G_pF-(DQrup_o&W14_XU~2@MvvvN9;$u z|5D9_-7Lgky$Uv!FEPs*#m%mK z5_uQ6*QpYqWggOT9TvLfc){*N-v;8FTbUP|`d{2@*o>&8=w~Qv(f8hzl&Tv7*yeP7 z*u61Yk$scsKeu{ke;G`rWRNNZpp?Bbla^H#8AHQ~N}NszP`Y>Dx|X|3WMz2!C65iL z7Q%HCC0qE4wKR(tbtSd=qyTTM^;TN=?G_bETpO(f9SniLDd!owm%CAM)ERUB1Xm(4 z$J#3F<;`wtHv@9FNFXl@L#ITO-8yZK|N$LV0T zT?6F7u9`vURgKOcwaVCR*>Y8(ORp`c6St>%kM!T^Ri9^snx=gHS-R{I@BJ&gI0#ni ziU~l!{sl{w0RD0ESs#XUO{*0cwy>cou|dbO`OgYZ%xc~6uhnNdCzRh(TRHx}dkRku zmVKZ!R7Ucy8VJPg|AK9$p5?xk)2qhfv0%1Dxg|PD*QEVgk~;%t4o+J59omX9#QVM_ z+Sf1+>+m4#E24W=bh@DXJ2&4Lj5ZX#x^mqAMf4v0&*>t(Z;q#u}Eq5q;Ddjd*uV?45{tNGn=z>$D9B$X#o*5fq<4$ z_M?5TF0Vv=?*NAbu7A(AUfg;2GS2~+SWxHT#aa%6K_%+X49C(xWHhleBt9}E=FB@(Ebb2M!6#uex%j)i zy#v-Gs2;lav=BMw~ykaLw@x9$m4{e>mmuF=tnX^kqdu`FgjdW->t*pO;{os{?E9@$!R2`W`g_jpCkj*Az* z6sek%b6qEO`rnK^yJZ4`lp;ZyeE(jH?q4@sx+A$L%_ zDNUnsj7g&4D|hcbc5(HH1dWB9a2xvtIF^FV*n7bJyvTK1Cnnfc*X?T&5dt|-_4jzZ z9glsVP^_7VwQd)r0s44p`oRk!$pHI(zZnfi0~?Z#T|PB%OWjVNorvkHS7z#`_riIGv5f-SHk zIl}u^$}#aPM*Q8Ru}n-k6WMuPn^eYHAZ|~J)~uo+-4<=axmJO{^W7W4+AZcg8+hlq zovaW@+FU2w^bX33h@BaUT<(VHOg9l!Ra`pNg0vSJNbr-=X>k@7YtTh8nYJR2byh;+ z$NXC?*XuKH?o&FKw(M>OMcg07$GJaB$rQqJ+B~PvipUnb-Futm#>~SeSe`tzV`bVa zCnOFaYd)eh0JbYha)g8N)cf9$X1zo{HF!p|A@b!1CazB)lOb%vv;rt(8G<6Dv=dI)$_^!nVSYOq5cv65s$y9! zdUiISFdwZ`{5~QAUdPMM;JWt>9B2S{45tE9|jT09t?%qVL9mN zmKNLpAnlx*L;tN3oj?u2VnMy`IP98`FP_J+mPVh(tZRS3g1@7Wl!*7#+O z>Zq*MMOKWim}19}8clKNYg_zT|<0LtdK6;=L>7m?T zRSR8o_E5tj`P3&#l679R^xhyzC4l+wjY*msz&dmqft}X;H>Gq%M%2EsvU6wy_^&fv zdo+I9su> zbj1M`s301mcGPh|C=n5vDwwMpx$I0atmN5PIn4Y9^e=JjHmFDx>Agq6`y%4FJ|OtoP?|ule5`Gyjoh(C?3U8 zL^0NmO&}jYB~sP_cSSI=oE9#qPu5rM0N zsQ=4Q-e$r^5D@lN=ukOG0R$UtXq)_JMtUats0$H*SSQk>i-wWYYtB|dkZT1Ca~s4C zPmzkz#`WCKDTdfOP0g=HpM9gZ^i=Dh~{TYpbjv zqwVsIidw78T;d!6NCNvpMrHq3dPZe}(C=G4D@jA~khs^uSvz<>bp#bEEf_vr;|BX= z@&s4v8^JyJfz7x@9;J?(a8>`q?B3hu)?cOvV;+Cxc^LFzRYr?|=G`#+^JsS3giR%i zFMA~IN$k*FxVSyV8x`x0Q%T=&#B=)#ra0I1-Brd5GR-(#$ERP>r|(7R-U;aLuU$fD zmlb0D1Ych_{ZEDNz*fp^_!1bH^Jtjx z8#a&MLL_dDJ`99*h}&`f>-sRhSN!N#WN`@G0>kd#dW&uEcErs0q5_X-YnJA!G*Arj zIb@}+#Ws}|fjxi7_Bv3NHo}9KZHwicX&AAP(~K!!I`wpCeQGplD$A`-{|<-9Li;RD zi1((J%bPp<1Kjp?BcDyj%(D_>t#ZyfoT!p&i5QArmt-z`=!#Fq<`ia_Wqeao;wx9+ z{Q>F5I$GN6!3TPc@cBOe6*ANN?5QnJPAV`qKaA)HQpk9a|em@i>H#LUgP1=uPv>M$kl z!d5ivC&Z&m3eSIZ<96u1bevboST$7mE+z_+lG;Db+BmIcy&-WpXcRpRHa^9l7Vr>~ zRO|Wd_YVL|Do_W;a6$R!P`2GWXwadvB|&}WY!z|p(FN2<0$4r;bKAj>G7=lc#4K)< zHZuZ(XjRIonn}-$t9PGg4h0oKi<<}hDygnV%-$YE(XUrmm>Ydga>MD}S2q4m^~gfr zq05Ew73R6o^~9jH55uz2Emnuww7p>hPGPeMCaR`8JUNUI-OxL59qF0}3L!g@l=FfFFX8@6Q4LIZ(5-k1F zW(?>IFlOMi;r~)okkzlRvQXGfMN04!4?ySo%Nzdr(a!MAXQ&{0*@I_KJ+hu?4 z434-GcN1oq&fyfZ`^?c~$m_H^I2_+c^yYCL6u)~qA3cc)GP)sTe$&{dqoCkks-Flg zHqwhLZO;-6`Cw}}DPG+T8r7T%5?>{v76mm0AwHO z(AonN>`dlzKM@}|Ijqqu?U_0FD)2@2xTOtNP7B`o?9^=SA$CSd8sE{r{^o}2uIMAh3Xgf!VYKQUfwx1IeXTup=X~)eL0Qyr&ib*a#on}c^mJLR(?0=s(Oj$3o~Jw^ z>tC z2mU`#3LfygQN}O;0RK@s|6KzGasvR!{_i!Aow2>GgN>=Psf?=1|Ezw7wZ9#)IURrV z!YDlCJ@UL_z3RU@u+#hF zlS%cJA|^}|06OL^o7F%sZ)tz8yL2*dg!SNlpWpwjYC+o5w!spgh>*VIorrz8-aO{zW&izo^_;YV$b z1z#)#bImk$T$U&8D9Y=~$j#FO!X_WFJ`>HSn;uiq?=185uutj%XCSE#)N% zg$Pz9Zt^g^p<1IJS>>Ky3ikFUmU~HZT?U!sH$HpCjJ%p*$+NVaA8c>F9!9;^^8bCj zK5adm%$hyqXX_Eie>p6_5hI3EEZnQduPY%My@RtJaV;JXy@vH98y5H_v;?JQ z_b72LQa1sof_6-j#ZOms$YK>-VX02#!cNgYtQ(s*Dw)V$IL)aq^%~8cH&3{uuk%bN zh*K*@wWtCA`Y7G#55)tdR&#VWx=%}mKB zVmUl{adHZM+XhzkS3#63x1X`@3@!?zq0qhKmiW;gA6)bU)!6+1z*u+FZ1JP z&KWPW>Sy*XN6Bt;qawT6vT|tFdkkDcn9hLG2J>pi+VTX}$oe=d=2Dtb;$H0ad{^$t z?PAphfFZJP=>QCf$%BNW=(v~>Vxl%NgteGdSafo8OQou1P%Xr+nY*yGY;wkhy86!y|9Ok!{G(xtLNOz96Ns zbrQ;2D5BJc?h8t%$~HByZ)TueJIL4_91CQBNE(Ikiry{QXM%c><41I%o}di0W)l>D zV{l`0G>pWh)$S-!WynH78#K&}0yPh+Wt%-Oe1IwsoG;A+bA`t*kXdDuRAss5namkw zrCUXesE*Vnb`1K&`nd>V=DzCMcw|LJMHpXFb1uShgIQA6ED1P3suzs2hfroGpC|F| z{F24TIi7uT3y?9W8e7^kF4vfY=M$_psU`N1G~(~RZ)?%$#eUZF6lf!_Bd-p zGGFKbw2gW8fI&cHa9oxho=^vGJZpX5b?&zjc~q0Y<#SPN&l4AHFB z80O`r{P;~VRR7Rqnr3In?@4O^J->d>s%)Lwj~f>g&W-JjvkI*P>NF>?ZkX!8HEBcz z0%cy2msket@E?*FIbGFi{0r2t9uOh1i&z1w@rPq{gWCq9-=vR*%PR1VPvKXq&)9c$ z-*H0Bpp}IPEH;qx>EXZ^t4ijnuNm0IMB6s=fIpn0 zJ|ap8rTFyDq+%MQLdu1diRe6acubg?L=Mn{wQRE7np~6Ao?UH8} zr5O?qaZP#`JZO2%1RZI@-ySn6BHHCdjYzfMvUgU$=eL-zW(ggr|CB}G+L`KV2Bg`3 z|2guGNAqgELg%kj+&+R%ly2Fd90t?XDtIDi2z-W#83P2|OJJsV7*N@x$l*S1KNU1)lx?Phe`PP84>JKfu;XMVZDp>$u52Ba zxTt(bXeSHd)eR)pIT4mNU&`1|k{&tb0}cWhl0f8H;Vn#JWXgijm%m)GkU*G?mI!ZW ztnjP$x9G`)f_RxVrg+GlFWTN5CFLZ(LMp%k(Iiw&5d~@Wnu#Z%KWA6^!V0Yv2=AeZ zLL^b~&ZX5rlzV0$S4qU;*y3jsD)DlEz=tev9X2N~^YY&v`-y9sXPHLW*49Uluy$#M z!}@8TdHkSkq-{KV$Th8=jM_%6Z=lq=NJsq%<>ohQhPsMxp0)I$ou2vH#Pd%PD(4YL z0DI@2u|61m3|&Tzr23nn?e)_%?alh2h4EYs*J-SlWPJD7avoUE4=T6s_+Ymzy>i~g zcWi9W+-L_oDDgXG)btC*X;^O|#JrOXaJ8Mk{&z2aQ_C;u2=z%OxwvJUaPT||ub*8( z0y9=$^FwZH;hTolsQpDCvU8RQvrse_=7sE~ePi#W{+6CAHqY)mCq9?QOAdFn3ckS< zucl2l?gZu07AmTUN4c(*Ovt2p^Xu_0x#ia{58)K@Q4Ho_##qWZj>FCwf9;TyHO4dL z6zjNYO;yJYUj-_zw4ev7t?RRHDm6XGO;)1&4muIbT4w$&A9OVURHZURmvIl%sU*B+ zV%}p>%Br%wb8~Et4*M3i-go?Kg8XdzED$Yt^wurc+(0axNBMUT(d2Cjg^y4q%w^;v z{{&_#x5*4T<1ni3p`_Nag1D)?9v-v`Ih0xeOCN4pCzCd%<7FB?GzgV^jk;f5PcOWHd|b9NL0gsu!N18N(jOPl0z4@crz#?jL!UH)nzx%Nj6lUiik3O=T@U;=`MQ5#L0wd!!em zhDYV@GJdB<<9Hvx`;frDUF!V#2O@#tduu0 z0{!>Tb1FR>5O^_$&HOl)^Vzvr>Y|~qZEBbiTnX<(+akqlJ0u>(zec448Y{%1IcB8qceUDDArM5{Sy#8lfmdfQ;*0k5240Oh{4G#2 zBID~avURPrnMG}H2@Gvu;dtX7O_4M4?jHxqCx(M;x!xahG}5UaQT(C5#E}kMl=s=C zNL3uU>6V4{x(`MSd+}%sxFiDgu@`#hHRy7&cfYJ3w(30cAbh_aZ)q%k_pl93ZBZ@# z07(Lc?`vZL8pf3^M+N<ORBGYABfXssHh^%ExS>VGmsAMIu52w3v@rk&B*en&|C_vw0Qr;lik9l+4(Qk93YSq3|t0%DS zL2fGMRCXRT2c^a9>yGkN?bpueIqb(tjn$hgQfC}Lj+XOyWdGt7-?`XGAi$xyt>-As zHZaj!CJQamgMnJbK<0{$(Cm>&C}`t3-FyY%`y>h0j}uAVqgW$j)JR`^AxL+f+a-;# zlnnh}8ZO6-7>tQeN2%Hh{kqyr{J{nECTwcFSz0;@qJ!KHB>FUGQ!X0n-^zL|+=Zn_ zv^@zlSEAmgy84Gv?#41vd@(AtMytqFunle$c05spJPYMzB#AMmyQ%5+XrtKAf z@nPr=G)f<|fIIY}Wp|F09gW6oCUiSQ#*3=a}vFE-`UwyVd#eAf*Qbde33~57K5CQP5CjJEv)% zA5m^2W)c(cdq5{fZqbKNA5^DRLiJoXM^z;xoP#V7fY!W1|CNWlZnFG)ko_~v7-rjz zx=HQ&vWfR6#x0K-kIVAovBhfiufiy#(X7bgIqLELltTaL&t=zwOjhc>g|kYl0;g8s z)w6WK$9bjSnq0AdU2>J*f~ldKaR3w(ox@SRxC_JL-71F?2tQ`JT02)TYRd-sA`fANT^~d(&Gi!-WE+;ZlW4%vlo1_fuRCj+?k39HmyIA za5fBX&7MdDP}|>Z3&J!W3|KYD1MbaTqrC{l&;D=_m9b1EA8Eyr4y$!%U&u?Tp(*Kjg-n$sy-Flz-%#CL@0*Qfqj@{^O_8uXvKpb; zLiXZsX<(G%R&Dy*3(fW+ohMZ_%M2UKNi#c3r<_hCt?8=8VEnJdK)6=a#%tgw=8D^m z8G;G9BN~%&RdSC)61s*aG}>%vyujyzBS#BTqllamdwqnF&W9qND|Q_V-N*{!iP4u-w>#RQ|X5&#AwLd4IhC=8^(e_9RG+pBym@7Zo9C z-9m~YGfzF)%$7CYRCF82dml*=rxVppQWWrH63aoVoy8~e#-dy?IWD)uwqV8Mj@Fe{ z_Hf?^*!*-Ss>c@Wf=Z%sQ+oNSK8rRy|6EJj>MTo?41tux&V5E^xeRPVuy&lL!{xA3 z1H@v1YiQGG(4L3zTIMKNU{m(TU8i58B0x+VyalKJE`$(8MT|?h{#*pb`5{c`9-p-_ z;HLF#S6|dBW|ESbp(+L$q>|+Y3gXh%kHD>VR9_UQyt-ip^*0y2%11B0wKRlhq8e~q zX!JGa{TSf~fpXB~nknLrd-ypii6n0mcR+^olBi>5a+Agrhe`RUk*B4&If>>eT7^Wb zCbZhKYr1r0kY<8bUoFH5wte023j-Q*KJN^{>^_0ea07{Otkb?mc7FSA#6Y}JP${f$ z$vC}oQdtEo{@KKNbJ^}>v;iDvWL za(Ll(8jSY5gN@ShjD{x04l_pG+_!qT?R&lI@qOxc5unrOy4~CE_LO^f+96cATBF*D z|FCaqzQjh9K7r#sfScD?hWHd#YM3O$95p0=qcbc&N7E)=XL0vbrK-`&VPVgLZe|Fs(_Y;R}fVs7YcD(+}#VrgpU{69OA z)moPS+G4T(wZ-;Z2K3qCbmCr-bC1`M-FYwa;W^*4Jl86-{zP9eXG6Lw=;?T-`S6&@85( z0?`9aKRZ?Knll&Qr$f|W#+?FP^3p73A*b+JH@5mL81nb}yxsu(eg)&MoCEkA1~R+@Bwy#3U=V%-%+rw?RF>P^{@EQ~%Pcg0*;I}V~H;XcLJs`bro zzvk2KP?HO1bPur|M&&_qVlvu(l7J#9SE7u?M5i5Xh|Ci}zm7z-ElB^i;y5h!?B~0cHTY2h!InsUA=y6jVwILL1N+TGk#} zDr9}PO%QDAPtMTdp-B!9hoY&M6uj3gFf}0#Zb$K?&6f=Sc&ZZrSqE)=%+2Gf+3wyr zW+h)Lpy$FRRcU>8 zU9Z~OY{&RpkDcj#=ANtnxr4PE1zG4@N`)DS-vLgasCjLLGH zh~|-x{PFD~OAUS3s_@6eUE(|qaj&c;*Cds}!|16E_ z(k7|gGQBAWqYR}@hvrEJjwZo1bmdubeZnRh3Xe|VwJre2a(XS#A34AGsm;0~U{^nq zd``#;nYyiJq%%>4Ude;|8bMT{(A$Ldq!HOwIaB<2?~kDx>!d%1C8Il-TO4{Zw^VIS zDQKjFwov_!4|R9ouwH>X4X4h^2YogZu3eP(sKVa|9<&Gu{#2Qi)Jn;9}&q zStVi|3fIs}j&~*0vPyZ0)lB7iQNB>SYUsvq;xHR@a~Ee(EXC@V<++UA;T^#cNbjq} zg?x&_gj8(zp6eAh3jGJ`50JX=QNxhmMRwh~esk3b(L%dkEKC{STWagn5_r7~hL)Ck z9Pcn=-wO^tD$;9*375!#G3*`#P7JmoKogB2ymL&ekAB-WjR^|3@F*C&SUXY>b2uu% zmKY5ZZ!_b(TM^Zsl4miXZSt%h`PpT} z4f*^_(YB4bs$Bs;s&}1ybK4${EwKUg31inSDC1bY>!DU`^O{YJn~S*KtoIu^vp8)G zWGE~_mNXC7Ho>pD*m)vtalje=)eA3M;cDRuH-JkhYrX*%VPovopV?+ACANCnlR^&m z#tqt#)R_`=Dk>wxtQi4m0(@I+co`BaKgG0YVWPf1)%3l ziE&jLE||gbuD{vFU{BrwkuSl3Npl$>LY`G%TGz##sGwo4mRheM9c!SAZTF)vOwFyS zUztoRIKH}*(~@=SzDs0ITfGaR7qkt%pEVb>m8CMF42eym4W;tcqV>ViDp5Qe) zmFZd;;^Vfr#1GJ$4Qto7+^U)Pnn!MU@LXxdW9U>9Rg+?B1PY5QqfGDRWZe-N3$S`d ztwpYyG`BVrj_*zk2$p2VDgG^^DifyDid033>?&BG#35$Peo)G>S*CGD7nA-znALEB z^xyRTX;7O!eKpkl79gonBc>D?%N>?LcB=aOpNBDp(bOL z1B5|5f9)V6pjmuEHH+&LotFr!DG_I|u0+U)!f7REjN$TX6#VIG5Ph5n_Jyw1{7GYq zd`gut^$-#|6Gx^@&ax*ttkY{{Mq?q9gtEO`Wbe**{2|-+?8EI2!j+c#i}fFhJU* z)*2zxj55_?+7v+=-mGgI#H8374jwha3+VG^t5^BfnQI;&_=h$-Wm>20=SAQswY~G$(^Q?T; zD#Qb-QhkcB2I!fL4^0^?t@w&%q2*|)KyeqxvZ=~|v?oOZwLhkku9+{J7OiC?Hw}qKc8008 z%kXMiDK{KTOSUd_&Ld*=^exsj-WFwr$SKp$jA|o;WM<>)(bXt+^AmA7WR};kVJbit zPIW;#fyoM5V_1Fy$kGgyexFlb>@X(dbZ$o?gPpjJ#)DMnB67;L0EZ?3gQQz=EXFJ1 z8L-lQ)IB0Az!4xxCO}z;$4!_ZiDA5IfcdP6F=^T z`;-S2^EW1Tyj_hf=2&}c5U(yPiVS&uy4%Y}#u`JZu0N;9j-#bl*FovwZe$*thHmvYO1`<_)BHio31f7{PrvE&ESUSbAt zcE3{K9lDy#Cz}`qb&Hrf8n}CJ6cSq*Sq15e@89am{q5e}Eoj?ngqj?& zt=Qtd42EC=^`b+EuY8uSx6kYxnQ*svV(o7>Tx}iy`0!!wwzySvb;?$6N6l|fAH|*5 zvLD{JOs7p6mmIz_HQMBvSpe2#iz_hk><@dZ+3UKkV!BCKkP$6n$G^9Fk+1!b zRr6f$a^9)OC;n|ciCwbeHou)oCt}IsY~@UQ$l}x{%6gS|)dC@$$q9C))ZaPhI~Ag+ z<+0mb9JrLluTEG-1M}N^pj1h*aw`is)N+_sF*)*l6sv@)a@^2)q0z2YuEq&wikP3m z9M;D2rkGU!;>Y*z)~z9$7qCkIrJnE$_#ZJvilV+z^Do-*AIbFJ#S|X`0D#>8T1@@l zRJ*#RvxT^esnh=tCqms;9$OsY$G6ugQ(`59!!`0_+*JYD0fLHi&7#h z)ED`yr$BjIDO3OsEx-{-2OI*Eq`##8aLrHvK!AC9-M!M$F-8zK7ORQEkte$w9+T#F zpg9z5O!1YqNyLkGzv)Ov{%jc_QukHrAR~A{V!b0WOS`Ke3SWE`Ifhj_tMwGvN!7ug;d&rY7`aFL-x$;PC@f&pX&)5D8&%#1y4uTvmeA=GFoxsG}IJT?q zS6dBEn6MCFUzG}L5r^j~b%y8iG^NtQC3a5z8e5zhjGvKUEb6t3%atT7;(xsw8qj(> zS@}G8{hmLX9N#y2xp`bC%${TX1FBUmyGC2RJvUJwGQ;D|uLOB7=J4s?lh$4-f7A5j z26Qzh9@a|P-!B(-^JqfsgL}uHos=UmWXyfsCI*EbRYzx5TP}V6V9{Dtwcf?(h7aIOnxPX} zgs^ny-C$GQp9bzfWQHm#PGzrid}Af=WoK|a5LX@2NiN=Ag`K^zCV!I=^DSmBYpwf5 zl9+Znn!{as@-ru93uN7?ZpV^X`F;#lG0%O26+Eq!4=t9kHmCUM%lgzM!#QPF?0#<; zY7G%nys69*6L&ZZwJ~?)kax{G}nFONkaNa%!hhF~kD3M{6d-?dgGhkg!mC#@`II z6zthY?PgHORnnsh?FwsBcvlbU1f;7h@G z!{nM)dE1sM%d>EAn{-i`nYT#tlQ>j)m^5CvKPG~S(7yP3=n%OWc)i`j&|71~D7Z97 z@1xAm=Yx^X(K9W%O!Y^mq_va7Ma0YHjO~}l5rld1w2kf-zto?wg}sfb zleNeHY_v^lU%GCNH2=(&rjzJWQ7ZmD(p!Nfy;w@fQK`16ELm)HG{UEg$4C?o1OW2y zSX%~u=KL`Fe#wOfBPgPf^TVlOBLeq&x%#x->lf(Kt`M41r2+jhGt`T8rqinkk@+A( zsn?>J#FqR;Jp~6ZNY0{xla2si74Yif9)dA z#l_`ErvG`K6*~U?D0S~nk<<(h`$eu9jNynONi~f>TONn4{*feYhYIrWU5UJcKj>5# zIpDUDJYv}rJ8%vNG1y15f`9;L=9X)HmjTiz8E&=gAsmUib|y71rchR-BVC(f2Zapu z?ULfJ;DEFIU3SH)%xF_#&OlMp0YA`mKnaiH6k!GSv71~jZi9qQC@KzDQ9QBgpfwet zuv2LViAMC)|BAO8rjZfhq7@F|k3cb`Of}7b1rLhh&*Rny1d#GT0Siym>qZlG5sfGLLa9I36Q`TduNI=u`i?RfSSMZ!P#{BMDp{ty8g7x}%J4 zcxhL`25pau*(!S1)sLpn?Ir3u%z!cg$g$4ygbc8=*6-s}(l+u6Y`z4ZJI;lMI^n#$=5eUH&C@ znTAa98rt9F?1;JPbdG5pm?{%&z&TS-;zzjq6$4d+!&gnRM}e;RM+fXQlT{eJrE-rX zaVGWg16)OUm0~kMBdRn@5jg;@4c zVV@SrWK9h05Ffs*E)Sn~V8i(p>}NvtKaDDlq#yus#PcG{nzB-7U4NCb1Lyl(ABFz$ zL1`Z~p_C`3zya!o3=lZ8a~Nh9IppjmkSZG5+U+fb?|px;8PU`a+S@*8d%EBoY2@vP zi`%|vd5yc+5wKN6QHX*Qp}eQ9gBirWd6f2vWcTn)RH{H5@;CW9`%woOl!Bw)5EjNv zn{p6wBz7^75yM$Gj0}Vpxy?%QRpn`v8TBeWBxmn%=OF=o{;;E@HJH5gAQoapX%HlmB3=|o@(^Lat1#sP;3JEtJ zbnsRxyXs%UV}aIroyH8^&;R;xeQop7UT`=t+V8vKRkRr}x@RZeic%`!m93K%M}|-( zP?|GK5(&115!h+|DPp>Uk*Pl`jE%4otIt2}ir8bqLj8@KMM$9#mvkZKZ z5TEODV0gacv^p|EALN>5SbLWm3At(#rQrdpew@)XM+<`pQ|)kCx1(Uv^^E4sj^WJq z0nW(20m{Q-OAqpm*(@(%KX*g$}k{t&MW$tceAWpxzjn!_+-D;QY1JGgIF0A<{F zQ5X#&(5TG6GyeAM`bY<_s+qnx6FS(6#8vuxmV&Ifsi_|Mdsy@hf^WjnRY62aZ1Lp_ zAP#KBfisvt5Ypw(y9MAFH!quKzfKd&o_&0A2KWm2^ql;r>q1}~v?oO~GYu4#j}214(pmeh z8^&!|M+jxu8~YZENy;(4Nn;Ghg?_m?WXgp%l*obXrQJy{bH$U&kh%xBU{IzNS~sp> zb!xA!j(oTH^M-`ZV2yZRkG0h1!zij#6EUc${v;H_JAM8_Os1EX3ACC^X&;UxLtS~E?IU~SonW4TKjTCiX9>)`Vr>JX%G`Qsw=3` z#n4ER-9&G9$&jY1QyuD!qvql4--cB;*U{R2B8D6Uc#i;;d&U=i@aF>$U3v6$)4x4j zFTefuf=BzgO@#tK(=Jll`fEd~f^Q{tJ54V}lR2JVn+Bxf6>2_7tw1QN#wlW=ksz!U zZ~;aQ*7A_cvgLcb(cy5mBzk#XE{B!{FMCffq6YJR5#o9#xJD!{YKx&&y|g>w`PDmG zJ+5xQbO{T*X_sLx9Z?l)iK@)!&1xD8c-ID{qaUF4^w3Gn;8R!v_mUMuzjE4RA145@>1x!yTT zRHKvN4U3C z_+ql{%4;#5SMV_Nk);IdE_W5-o6;5HS3=ZyLAoUA5IEx?d-2W|C%Y zDw06vz#u^nzTw(gfOt=`MtdpX+v|Ds*AvZTzN;|{%+0L-`{jIJb8;slZ&!1bpIxH5 z5C<*`b;YC<=kHMkHgawwD*rL*x)Jf}ij}!kBe&>mP`lb%0brs}LaAoS>_VET5ycOc zDOh9pv#l~&-xLrlz(Up594X&05wrVQ7IyvAj*m(bBzQHF)2$@7%{(|F4a#;*24j3r zL%j-xX4~W21>J1Y5V#L*HWNuLtYqhvP$Yhad^t2vb;MI_DgUqt_^9) zMT2qGh2XuwwEdqHq4u*;-xC3 z>UTeBcVgf90$6y8F!xEqaq#k>1|;n^2LS~H*1TV^*z+-kIHsAr@x7@a2g;H1{@s&c zk%o-#kS9o*`s*mEYT+@BOIx3M&yBxYwss2h3Nt&#qVtvDOdcA`ubh+fT_; zMot_Y3@rhJ;Tg@e$4X2{S)&R?s9Q4FanHg;y=4WDL=2B*s>oEq=dmr@^S#!_%XG-% zs{4~+Y|j9i?2(k0culHprsD)xT)Eco~gZ7czr6Ch%gx z1bMI7#W9+pD*YK#XWbA6_U08rTl9nDk^`V;H8-}_51JLjNGboIeRqrISp|D#AdQHh z#QT;GeycTAU+o$Vj|keVm<( z*Ks%l#?r4Af3s`cGKN;lkAEj61&KvwjL3XhN{?u+Vq5H-ek`Z|CCZHl(YhFw`I}Jc zTsroxzL5qs=^j7=TRcKe?mK&}diXX^IE^Yx{4IvvL@}r5@QQt9RaHGQjgrbM4#veU zmU=ZTH&%iB=QNay0V72}l=6)sHL6qo21Kxz*x(yIfH`fQofQ%NV+^eMLp`NA>fw!8 zcGMX88dG#|(R6V zSsRs;(~Z(G^8*SAt_`PXz>T)2j5l6#XfmbB2P}IZiA$aFrq-o@Y{ZOrx{Fim_LxT` zZe(*g6Ug>m`2v$KvH5H`*5TsqI|NffaZq?{kB`R>qRF z>!6h!4&S^_{A#*)s%jFZ^@+vWZ~HVsm9@-quv`v#yPFkIee`X;$SiD5k#^Qms#wOo z3EKj|%R%7AgN>`kQfXG2cks{}^)aKFiElb^2p6^aX|LVJ#fWX(+=Y zx0a)hW;&*o(iM2YJI~cUs|ZD}_m3cZNSm!rNxN<2ppku$?`}D`58HIvGIunCNn&0P zTQp#o5|nfz8wSacTzu5QRS2A_dPXi8CqPZ#gsX8Yq zC=izvnw3C@3OG^7rPh9)e9UmhoY1LE(K`Q!wQmX%t!oz?h0LB_&V1Y)i1AzU$?y9+^W> zeKGsk#3zxHeTwPH@`7IcE~;3%sOP$?fmzKwbl^$?*6~1UHgSW^D9a({A&-} z?rWRc%ky%bf1jAxS6-s2_kLx$*M%VmQLwRe52tF!+Vt`aiF#N7L_2UCx2a3H$|E0? zTe8h@;BgS)$*ENQx=WH$dZaPwhh`eHWRc8ZPTZ`xDe3NWl>5E|;;jmKF*F9Sr;`0( zZNdD4U83)5dinM$7(ypwS=3WO22mutizz*Vn_@5|gbS`RVgcdWrJ5FI0%4& z0)J@G1qi!Wo<82>h1F{MdJ$kP7ZGP!eXR{CyxXX(T<$W};^>BCz8Bj5*l}$Ey8i3H z8Ct2ongyvS*Jx$G)}@^ce>H|(!2ot!uuDsRq5qgV@S9sGjFsw70QLMYkkw{&+2UR6 z%}-K_a46jD$RDc|&!y6>31?SBZlRCvLzTOIGX$`9ykpvCE_;J&nvyWj50$ThRgJ_add3)PJVSom`OP6dI^O?Mc0XD z@g7yhK>v)7r%dWHz2QzphbcPSCg&@mW8F>aSkVhhO4dIU!VDj@txPmI4MuGUt8oq~ zqeJr>kZ*k48>Wbwf(3~1-k_&bjs>=H-C(HpOmr&81L)GM=s6`PRJX&}2^*)4 zrE5T$7c0uNFAV(s5FmprdE6dnh)3j3j2~^(ZvlKq@`749#aR}atV!l5Q}4j^5}|n z%pL;D=H=!5m6L@lM_*%_+VjQs>BGa_$??5zN4`+8zdH7OI(K^ex^$7cB_>Ueb=!mykV%8&(lGP-q;2`WJJj%^qx+w zp3^Raru|3fQ*10*KX`mVxUhW$V}~CnyB@{1HGuwBZ4C8K^LANL^ED2B3QuHu%F49X z1!3*L(*|nCXs)AzAn;^jItx`jWMJrq8h z626;T6&f_~+vulENwcm}T8JX>l*Qk!z9wA}0<=moO;c_e*GMLNGDvZ@lNe$kE!!XB z$wUjlji%9JRq#HUKW;*cZ&MQEv3zBl`8k-tvaZG@r{;#k_;KgC$d(ruu=DYyssR+7 zSM0g~+WzI?%oJLF-jO|e_4(_{)!{z^J1-auDD&}*oY(A9Ppc(> zm@npSbx@5A-$+!h%<1sH(vGn*xywS5X^JKfpCcKOsq${=m#lYSO`P=Ra$Y)t7)#kW)=X6$IwE`x4N&^8`q0)uS2dJ;X*}5G9EImX zK)=Ns2NB^YB6eA+c=@sJ6f_?e`ZBH&OpbrnnpBGogZUNQTB?N+j*InR#L*#&v`=S* zayS76LlLG~vy)tu8DYH&FK+N8w|uIM_*K6;wel-Zq};kA(uZ$nSw zC$xvDrVMPo{bl%6P(vL`GpSf{hA{ORiC*eam_v*8};l&+wryTrfBGbx4 z&K@4QuL|s11OioO_E;H~B%$wP)P2B;*Dyi{K{^$wSLYt42>18Ciqi7rAf7%v=fm9H z$h!G3k5rG<+slw=Jkz+~p4oWvVoSxYH)yzHtxlcqO z#Z=b%=R#FR1D@*WZ?9HEap%+~@5&rep?=`AWw2-k;@xRnG z-3;FR8Gr_DW3GeIsOX_x&MeQg985b_rJy*9%=GSCrGqN!g-8K^Z7x!;z9_Tt?+OI# zHpJF2{>}L<1f?ZPjqc5`(Y-NEB9Trrr>cA8If&>h(b!-->rw6NL0vA4Jz*i7)~l zTp_zVr-%*a=11^2{W_L=+Q-6q->k&dkVo8ejgYjw>ai$C=Dn|4Qq`*Zkb2$z4f#;&c(Ir2hQGM^Lemv87tM;|=K zl*N_oi3N{K`0JRtlg=Ej?UVOFhjq3c#!^WP^r+cw;juQek6KgxuIOd3XGU~`UKglG z6;V0r2o_aj`M{`dqylQ{eh^TTt^|AT%}P6%9-gnVesn0-GBvv5mvh&VxJ6RqaZ$b4 z)9=BHBC4t24q)u&^~rAs%1(tT6H{f-fq)Hb}5`7(9(g6|@vYfL>{6vvqBo+S=LGp?Rh8Xr3i()7)2n z?u@TyuGT>B-fDyyY&PrnaY|BDE&Cj^)DkAAwW-o))OeN8c`;|@bvk&A>Eoshclr)W z`Mg4jbH+=$N}vX5a=Y~{J1>FYwhs2@g>OdfpRU?=Y7=g5_N)2bx#tAC)OWNox#~Lj z`-5k}x+NK3*3L42D)iWq8l5ff;<>7traa$3yNW*sRs1bfcrKHes!*P7d>+Xq>k?^K z5-OBb+lp(&e~9hQw!pMjb5>0-MVymjSKZ;b2>ED(9tFKE+WaLi6ML0{Ul?Dv)tB>A zph2-w)m?6orn0qJ`36>N!}E46cP<>g8B`RK+?RcXE*^gwqKtvpY`<|I`2L%r$q38W z-t#A~^Pf@pzYod()ZW0_Ps;y~`kQ~A%>VTvS={colgW=TZEWKBFZS*1q5uH!|7!>S zyTku;QT$Tf#%`Sr;b;5AK`4~p(R%Evg;RBzWhw*40(nr^-_{0JGasiI=`foA z8<%pTexGgA?>AsGK^W29RU7&iFAq12ffpr9A<_O1<4g@xiV`yzH37#kI(RX!?eqp6 z+R>r!_G>0>x0R7r-C+SrNLo#751m zm(hO{f!DWK4f;vmkQq)BrqbOb)A5YVW5yGBOq!Y?r;*-k9|GN1sq02$OsF1*_MQyR z)*eq4nMSPJzl*MNfKow+E5TV=5UT^tN+w;)kHGU zmdzZsg-7WXa+DE=(PE70WlIb15@tp43@Ajw$O{<@o$X{nrs=g;HA4$PH-U44?-zg_ z#xFY8fDJOl^9h3lM$qBC(YZx*F=uShl0FkZlC=sHOK{(NN3&oez~p+^F15I7F%3x5b{TdNzzbPRda{(t zEr8RN5ma^ki*taA0`{n+K9Yc@B?c)f2Giv)jH2l-)s2ygrB7LX5IVL4JEQfqc;`<0 zWTn|iBQ`hw8Nrr07(IsSr>26X97$_~?=SGFS zK-cAKAwu=p%*G_A3I)%8u=5b@X=3WfHI5Tmg zM8(ke$0`a2ZdZp6E)Gwv?50S43(Be_O0_&?T(qbQ?up(tud6{#i^TAC=NS-H92FKv z-t9>DAH6!EB^YM$B||pk_Od}MmSdOyP%uyqh1K3T`3I}Y8I#O%L2eeo?@M+#pw*;^{r)Fcz z?lKVyL6pWusWM(tX_xcPG(hMOsP!jLUM9rDmy-90jxbjeKrZ}w$4nv{urrbthfdZi zz?=t#t+JK~eEGAE2bZx(bpUL%Y^BoaDnuUGR?kiwEHIIRc#(pe?0_-NA=ItTw6_L7 zXYb0Vn*QXqVW*sFBbX`6i2h+G$EHVi2QD(J*DYa*^onJ`9S*zZQggW^(Ix?TS}6ZF z>5?MgD}r#tZ!U(4x8~Xvv2^t+CVU(}zlrSk8vTkF>XYSFzZV3jfG6@APWHli`e$y4 zzyi{p^RH)1bna?|a=I;yvF8%u>|UJSFLKe#$~_FQYv%dD$3?Ipv}={y+4E0V9gk?MopvTWmdPLf?8KjAK#si zaqbf``P*5|I67a*ohl~p9k*y}@2XplH1%06ma6Uid9cInzA;T%%Y{|hCUj=@5}HfW zo~g~+Ic(>NA^DCW$Cs~KZqU1IZWC43yR^_<(ajLG7ISR-+7?$;WHnk4LKpEMY~8b# zO?bOh)1j?hm(aC*{|0mqSRWc^KlZGD(B(g7gFJsA@BgCb<=kP7jem78Qnl|k(iWMRzS7{@v5$#LDu_fBv51s}Gjjah zy%`NIfRtpyo!+&^rD7-nGE4seZO;Gxe&Inz@+T~f*-bA*V|pHv8(k?IgvPioZTe0t z#&>mf3vc4p5HplBG(-W-)V1o!bd)c4{4(==K z6X7oHvvyCSUu>7kP)x~f_Rku)@6SGC{}u`NE#L`$?Oz@Vk?AjHoDyP}2gq#?VvptX zZ-;gWkqzvUNMsp62iN54dPZ=4L^EH>22e*TwE{V>%myBl*C=4URY9WTmqVscqCJkm zTfS=1I*bNa!%5_^)%FqHM>vm*OAupbu)T{o{O!7R`FfHm4HDz*@Hwhu#DG@RSC}_* zO7IK%(}?JSprQgEl$#WLv?J@35@?gK2r zG{@#(CisM&@rzfP9_AtbY4FS130V{GP4+k1jYoP3IBsB3oTYCCiN?OQegh-(t&=X| zUkvoedQs{?u059)Cd$m89ZIcTzCie180qVEAXuq%1E|X^x{WpLs$(AG*ng#x@_V@E zoh~-JJYoWE^XrNVKDf;?lunPg(;jO^a$$Z24(#Ea3^zWjcp`hb4fvu;m1`x#kWrps z>=2m1*^1l`4Bfs;wEgzifdOqoGo@(XnZaVgn#|(w%QbpR`MnDBt12{rq3_+UV`U3? zWXFI1g)o3=p%kx2I1fYRQIcns8uzO2)^a`JVCp&=k}oN#Fwi z{yordb5J2;!Vj0nkH7u%&k)6@m)si#J|56=DBiT64!1t~8@W#2d+4h8L7FLpKJ*?$ zlu6H18rhE8C0P^h+~RN4!**`PXgydVb4G%QG-}SckYk|9;RD_;4uummVQ@fz-iv-p zO`nkPxXHP$8;&m62WdTuIrl}ITqCkVqKDH)bh^}Ao!zf>^emyHZh}A#P{5pgiRBP| zhO%e|A-Y;8DZ%L7a7H*ccp}Tck;OudXNN|(|{dN+g*PO7=AXwCP7zYHYUah?rVMG`|$NA7@PCDH6{Q_!zd=wAQat;MVj?93SjaY(GldVDtN9aY2sB_AWLMHLaY^ z+7qPv!VxCBd@M)9G`;ACCcuNCo&rOEsj}wb2Gv~`yY{lpFyL&pXp-6R^$&t|v>Jm= z{-T9|wdWyaB&QWOW84Ke4cEqVSLbug<76=B;I`OoQI-s*tc(rl+mUpqcyxJjbA5q8 z3#&V4cIvU_edqz9@VmzZzcX&q7pFGDU(j;T$Pw5G%>2a42P|cFbn?u3J!JgzkphN9Bsyy@v$}Zd8_-B*!J z3w&4$?X?1IWV5gusxArtiX!iX4vdib5O0hJ@DZ}o-1fmT?G!+EUn-^@}=?ULa8(BTxyh~kwdAqlWvf2F=r@u+(2A5lz zBNs=@KNMIVUj1|{*JzbrQLc0k;GSid$^~x0o9u2_uP?6RjXa~&@*)MXnX6mJ{-UJ= zvAKO=2ilbBMT)<42e=6rd*KQl3uVuv!g6F~dhes_W|G=x(WOm*L!Cn)_!FEU^Fr$o zCPT5tV31Zm+blCrW62wx02n5cw&9*mwUlPQ#Z=u4gxaoalVX>^a@^Q(vdJW?aw;EC z+N#Wx+iBq_An6CsaKd}awByut%G_(Y&Y>%^aXb;yeR+B7Xp!foemJ25$G^;j&5J58 znH&Mt!vvCkbnV78W!Aa?qF2rESZG6f)*y%9y#8cpH8YI<2U8u`^nT$9D~>j#aJ8Pd zfIcayncRSe(>oSbD7E8t;b6VV~z)r zacV*Eh)guLLJE)5aBH)0_1{K4j;8ajDyGhds5hwGJKVx30N&uRH(sAz1T zp3)kK58?xkCei7`TV>%*1H;U}BOwiB2G0&7wfxotOlJfO{A$BZXL_5l0cpaB@Evln zvgT_7nUuC?TLWN5Li>2mr0L7f_4`*mnO<+fqtbtng{Y0 z;%x2rLZ|rii}0*^^#0B;ptIwwjY4Y>r6WUe_!Vcr+T2)*_f%;WBi33>op#12RPE{v zx;^6V^?dI*)_~0VRfFKVd7DU-3BWz7(&9U+yu)FwCu)&h0$uKui8$#3$YnpP?1k(`&ZWDvQtdRKi=#DQWR%7g!MoU~QmMm)hNR>(X=S zAn$M}{x*0TcdA}UTD{+WumB7exTwDzq4-s&K2NB*h5ec*l}RX-S?-y1-4D@@F&6PP zD+HxBLg2dx5yZMgp2p)PUTzKiyG3SKApu{K>+S(UDW+AJzPbu$ckSfP?c@@CWfk3Z zHyo@iBq7=*=u zNVG8c0GPEdTvhtKwY}OJti_)zEOpW$p9n%t0M+FC^>}{r_z6sBNFpH z)S#po3%J%Fds`Zeh$u@hC3@(TwxQ5H56;a&bC!X{hd52c}Bc%l=dz{P<3x>iy zc^RjpgGqN~h?Cs@=dPCA|25-5-2|lXETU$!y8kDsxI&AtV#g6)GMlA3YIM>s!4eV# zFPUlLtrGS#6g6~dAwuYPracf?$Y16qg@qAnnnxjVHEsOOIo1xD_hVEo<8h2f{-^A1 zCY}np)IFTI-&P*pW>;@ube7(KXSXOGuw&bF+!%TMzP)vZ17pu3@|rQmF3aGQIHfw9 z&K>8f+E&mQrj!+{uap9C(MA!Tfoc{_cwM;sUuV@eqpy3pC!P1J2R#(ntP?O(o*u$O zM`m&_I7-x%CmpQlhQFj+0S!`IQ=6I-lq{*N)VuNs9$=aj_IWggVE-f!`yMtOEg!Ot z@96?Hjbc^QPeJW1x)oVe<7qV9MDBg7YSxF>y<-#DrO;kU*uul3iB(y^b8gW9ggWdk z4=8DwxaKc7n@;aeRSa$AJ0~JlB;@KUsKDQ>F#jS5n+K{;@YgXaMW2a)x$<}Z9Hn>{ zJ8m3A^Qre*5x&Es0W;*#ArdM;w-%$FUm>a|ps#!=p(IdkrQ@z6$^53$y zQl5$;=L#9ala%l%M};6>m00+!B|tH9J*Y56+tE6{f)UrLA9oH}$Z6DI?Xde0Os zm*uJ~p`d*sOe3Nbk1F@l?{whNf zYAOZ7>zh>YJmT>*`0>A!YqZaj>%OW>gJf4v6+b}3)X$ON_567546|xAx~`Sr+P7QS za8s-lkM}Yhu>tn|`+eKfD{x$!QA7-xcGHysy!x+qYH(1^a-vT$PfqA0ydD~~oLO93 zIt_Q@Q$3PT^y{x}>A5W=bw3o<9AZCQ=lXlQilk8&&~xEc8R{;V=g;Up-doTgz_!C zVrHCl@jJTkq>WO929cm%Cc~5oh&YU)$Gr*SYDFqjlzsb+J+V<_8iFVy0@_IKwoV@j zkdX8^Ns+|sb6dBDOlZ@?E_5@xt_A})zjEQ#qQH}=Ig0)^?mU22(Fc*;6y;_va8e4c z=k2!=J=eME+!%(b2Q{q6TpM~8S`p5u-O8P}mzR@pei+4Nahb4r zzbK&~Aix<`LkxhI@S_Y$ns|2UTIO{K(s`ISgqn9%?|T^{!c!i7A584pHO!P8C)PCV z-(RPOjvSZt;OS1rWXVwsYxm?UlnkJ-B4`g75eZ8Y7E6ed3WLIKfrNPt45+0`EL<;l5Ppo~1#lWHr=W zF_-`Jh)a#4iwGVd&Jie~yfi(G1J%&Uf zy<*Ndqo`(W2@*CQC1uJRei6IN7CBm#bSTm&fQuGbzN=Cf&i9u$*4w(q{ESZqG$?S5 zRyu|!GQMH4pYs4d+gneSnwTs}R};}+yKf#}c4&q@@T}45BA!R_ zV8kXK3{6U!UWHHHhY1gQE%@(oPQ}=3G3AQ&W#{am${;kHV=0nhQ(q^~1x+ku=$DGZ z83X1CQ{8Q5ruc_Ij)9NKO{o5kVyXfs(ng3x(H)Kg-)KDVeqlhs*Y!ZoFvlx-mAIx0 zr#c*Eq)EtY}d9}De<_Xvw1D+s}h~_3~)~gHU z4(t_Xj4Jm}zSyX!G4R#9_qMaPw=x@tS`^)LkJ*agKKnuLJ<-K|c^aAC->%rV+mp&7 zw3D2YY~4h`}?K? z90^j!>z-8X35y?asHv&FKkijJ6w40HPp;b!1>PMBi5m(ntBUWHRq`HK?J0d#>?SKK z2Akr=PK%n(O3HEe&83^hU-gp4=kc1)c@@&n`z4mYAGgLzjsSnwMdG)bH$y6?NQIyu zn+ASTw_Gl-zfCo7VJUJFpS)~(mIfJXIQE1{f#l@5HUx=|+f>?FkZ+A){hACGFBjH; z%j*=smE>vS>@nt}2-)ntyp)N9fUB*v2x+;a9Du<4jmuUa(^N+%uv9fT5bJX z#A*NlqW|)l|LYb0bHKX%pXw5`itc#4 z3Hh^$RC8yEx~!;L^I?5vTl${^WfVvW45h*pf=}`B_w||%z&HSj9whR_ib(1?V1D3e z(Vn@*CpK<9sIeoWJ(#V(J{fh!({MupBe+Km;xs9%s3U4FH+!HHFP6Bkn4vKmXC>@a zmo{v2iZ57Bd?r4PJF{ECrWc&z%j}eW9^f`lmS)G-S~V`ZSG6s_VprBPM;LQn-AA9$ zW@mL!V803XezF_f+iS>)NXR9!!Enf6IXx2#sfE>#8u;Af>SzpB6M#KVCHKH?CLDgq zf8ou~4S1(O0!YeoPP=(q)9mqRHua!lypNkzs9X1qNVH6pEk z44F!}ciu6Loe`RJlWxD3G-f`d2^y{E<`y-}Q`-c(W`k)Pb(@ZL%TJmkhf)8|f|gM7 zg+RSwv621VgU!>^mkX~qsdKXvV6LsD&4^FbR4aUQ{^NmPj2$wAweKsjD`gfU(?kJ2inRk1=3ob&4>}#%XzVY%X!_I>~9+ z-D%l2a9oyLHU6I15z-m<$7f?-^)33+OxRL<0~jvM-CQhQ^~C2R6bI6jHPXgRjC;BO zO0}s^1X=WG20_SVd|=L5k)qpWEhJor^)M+%kpll~uyD(TEJ4FPc{Y=sd@>*F zc=g~*^X4j@D6Lp4weo=UXK5UHr1M;(2nWL6B(wD9IV5LtFN^0iqie2j&tKyDRxKn{M69gL zbuIVB0|g{{JofjwmjfH(A`YnSMezKRboOV5!)Vwinkgt?cbuUglrbB_lNOr0T*9L~)*Ny_0zKEq^kUZ_Ix| zd`km7s9`idgMeL?Hg#Y1Q3`roddkYD0}K{z`?l!bH(r+d_luVzijArK2BA7Aaq54^ zgr>}GPei}CqBjoCTXS@;wX{ubj>xa^9($g2JGWQXXXV7tjD;%>96PwV*l3^;PI)6r z1l6y3Cc8s-+^1>ddis{0|4U@`{LY%sf`j*F{+*xuFbopD^QZA8Z6POvd5av7~dlR4;>VX0g&d;sLXor8qOEoMU2Hb(l+pYS~nLS;Fp z0{P)(sMm1K0P?EatJf=K%%=CfOk$ofl*C%SKfUA3Bu2c_Avg#SA^5ns#>ba&8Z9z| zY|rOzC<^klw@^|hh-Ibkeuec4umH>Rl^tnN@zWDPPvu6JDWu64 zU`Q9HtqT&+(c7+Uh^3?8dp9DDwvmmOloifoidaw1a3^;=)(pIJ#ZF&Gy`yyKgH%Q{ zucgS!4EeWLU*Vt(YaZ@5e#+!aWpi=;adXZR6vpx!*&t3~lzfmS2-#N7OpxM0dfPg; zAXU0nmkGuhA_|NSASwWaqIc!BDyjS^EhavC`^o#Dpe6zgxny$_h(l^Fe!|D`9sU#_ zNW$0QfR-x!jk@qYS4T3T!23kkw1Ma6?l2{|onEnQ2lBPj;{(xb0U@xRz{Xx8B!ed8 zZqo&#o?o`?W+$%Ni91VZKYhz{OXiNiZ!8TPLlS-PA~uCp#M#FN&<-7LpV7Qm1Rrk}B0OJNnou4CQ;})h}er z!XsRUdlMH}-u!biG|stzAR_x#RUu9m6rD<00s^p~;III34fC%+b6J((s>aH-18b=(`-k)kI6e};L z?!dz&QpS@#7&ib>ZqxRGq;vVrg=L?Ot)&UJs?v@1nkJ&IxLwtw=ct0VpYn?_%As!A z*CKJpvKjewtxmLrh@NBj#igW8mg@`ea@>h${lAMG()_G)fXvQNqkHfKa(Ad{)cQy9 zNt`CNvxu`-WL#GI?>F^UVAW)Ly^X1z{3cqbLymojqa?(Ai-pb{QxaM#)`X#eB}pMp>(I>ibjomf*UQiCD@cAg)f5N_GmX7$V}>D>MS8rA>$(+O*;~YnucI zR`s*O7fr13z(Wq)2&n^boVA>Rr=h`z1=xc5K|b)EO=i`SaDw_`XAOY7A=GKT&xk>0 zmn+^8!%`wpHO5+Y*i#10J0^vH*8By3#k{$mGcxZ%KVVj1o*&X^*G!+ESAF)m$We9E!=OXHShNO;Yy{kx^Gjrf{YvBgwud_!K4)!)@qRxUP zLKBa+{~8>qo9B8SH3TkkYzBY~kFKqD+=0^Pv8~fde)YB}V@8RuD1u0V%GHQU0bts% z9oICdu+7(2jtivbSsNTCP2`ISq<)*r<0%)T0mzk^5s8q{=Zmm3|4?S`n;DJ{zDcu@ z`8((vvp#RY{c!D*H_vQqXCwfE7lLg*?QK6KlqNjb`zV-2_yY1uHJkwcI|K-tte*~h zWLWa-_VZU{$JB;S%N(fqrbmM>ifNM?W8&qzNG?i31V~a@ZqkhV_`csCK_qV~Um<*c zlMEDED47UgbRJ-J`7y+p@p%$MNOQxC+#R))UNNAQ3>f`e@=R_E^4SYYtplQi!dang zz$ufzH+JcdnpFvI176?_Uu7&^?Q;%}8v%(6eX9rd9NwSY90NU{aI{6l$|$iXsONy+ ztBNj_JG!RtMdmVdShti%usFNEr>kp5WAO%)e@ib3SSi0%NP0jj_`|C z;-|zSiZ=Az7sUeBZ3I0tFX%QQ0GfpEmo`;+xDLfSRA#6Pxs~B2Q~DyGuH@HoZ#{6+ zqQGIoJRsCZPA*ZrpI_4C?iHpW=jANxgPEaQILX4iM3MkbPmZQ1WRP%qa%`y|d%c z*;FelrBee;_6biIE~gGawcg*wP!=Fl9i>$k6AdOCtyb}ShJEy@t*9e>`F?+^Lrt$ zFjkJI(0c!S8M7<-lH1?kE+A+Z6EnQtYD?zK3gemdG-u$KXqcoC&)6x3x%z5TkPuNw zXj!}l;CX~^c~)mxe&Di#e_hAFH!VN0vm7GU~kzZdMo_*S^UQ>ut%%p$vA zb&6|?NfGkqZPRe4fKcdNSmnJOyTEt%>y!Aq<}^pK3VpHQy`+mwqwAPwQ{lB^Tr@BT5-Zlij-}%OciO@CYEJvZ|#h}!_9XWmL zy%i>x;4A|QPz?MwJNq=)!Y1k?sslg@mEbeWGr~F4jlUv4mffQ&e0D@!i4nD#A&Bl%>7TXfFPON9Kpb9Peugh_?kO zaxI~^uf)W@cRY)TkW_trY!BdUbW^CuSaWJ^J6wa)e^FZzK@ERr2P$yQQaw1dx)E07 zSQXvB%SvD9*G7G|j{tDllW?`x6*Agya-Mq7)r#mL#2WU5>m01o0-iNIe6&5xBmn9q zvai(CZ}($HN|@GhUy=x-a!9A-HNxoN)hALc*jo2q11)etgcO;P9(E%Nab;|=H{5-)u-34Sn-LQfZ zNsp~PXi?8FHvfQfC-Q5Wu0!85S;J*D5*__eMrEul8CM??g0AcpbaHY6-nv3RXOnw( zb_|4rM+R7!-0BjpChaemG;U#;uTel=DjCsciSY`AkfBOWV`xl%=S{VNELToUe=XB! z!J%HKb&Cy16PO!dN83q0(fyi^`9OcE*P(_`G`8v1??-!`!pQzeZjp=+3qIJ@zJpxH zNcsKblKP0?TVmo6u;~?{TqyRHLO~$Js+C84D}onrRiwu!Kobm+!%UCisb9awR2UP= z<+Mbm2w)G@Fn8+efkqhgs$yTMB^6=#^X#Dw3VRmPz>Ha*hDMlebK zBRmXh_suMOUMEF$opf?Hi!y#?Q@;&y!pge}(O`itfl1~ZYrbUbKzGd?5uS-f=>dn# zXKtm}m&9gK`?$$;?(M2bRg!-i*A3kXsv=jqJV39+WTw*sY$BGv3X#mylDY2k2Fy^N zdL?+F5X8c=vPOcJu@=0i#J~usXC|{zmUBnIW`e$>K!Ccz`!u>LuDFj9kKa7uC|m&C zeh#%g%PduYNM|F?I~!=jI4ZhonCEs_!gzPV5n~&L<*(o$M`2iMf2#k;Z2uSvF;Sv4 z9tvJ{S`^DTl$mu*LAe90#p(tgfwe@`Uwk$|UrGb=T5MFdh};gOf`X>`$m%)m)h<~F z*=|7K22N{|C-b^-EbXOcU^pb$xN#?Bw)$>~a9U)cLp7yJDtdv8YU`#9i&Pr$RH$-7y>=GF|f8?F9k5+GwJa5bnZmo z7>~SK?&k|6c5Km;-#<@T`PC-~*8`8t`2lBra1$E;VLR zGcFI8V@(j+)$?ED_M8CQn)xx5}kSV!m?vHEjE0+;wQY#22-z>4rb&AY}luUvojbxJu z3F(l?)pSw*390J#=N0*TcU*9+KJ)SrHoR9lYoGv;ZnqG)_X3#JUJ+sfr$9MmZUrL^ z)RhLVK-PP4+*kI#7z_Br59b(4&*{}ASW4h;oY7^>x9lv%)9ta0#dN*wOvNfRd>Wuq z#=@jCy&(?w4bCs=eV&J9n(n0a`lrdb(+%p~G}6FdG=eoJ?kfa*{S@$9S+SS9%yDUv zo5M?4+XikRSln{_1=(LV87s1Yd{Nb(z=$)_P36@01WYd-C^OMQ#A8$(=7B36R)aPZ zoj%z3wZ`m+pK~)5j{NVo=wo=8$RNlbI z>i>{O4@tCeDu+p6#x~2Q*>&gd{XM$)`Qu`uM|KQ|_}Ick`wC z)SLjZepj9ZIIj6X`fc6rmgFUYaztYN-q{dR{etc(8g#=4zpEn;XUc*f;Uk7oN}ffG zZ{7;Y1ERoBcbnu{_#+Zdw@VOGV-QdlLRuQrv_iEf_6RYshOiH2cPFFQ4L)ROQUIkU zO?#d5Bp)9v(AVdCVCT{50htW&jgr(ryqM#0?uixVq5877$9$CHYHGDwlq9_~N|BA& zZ;|}OW)LmFAY0aMj7C5rC;=Pjq7D=t8$nMt9~=ury^>F^1TZVlh>Mtz{G>Y6=LFW{ z#2ij56EM+b?3J;71SeP_z-t^?w8TQt%YQGMj2)mL_%QEVm@;D*L1Y0$=>-)j2-!K2 znzgUemf^TjP^Y=YS1Q|}$sQD|T^_j8) zS4j>dyeCG0HUHmOd&l73qHkL;wv!Xvwtlf~+sTP-+jeqd+qP}nwv!X~`B#7G_o`mq zzJ2@C-m7X?&Dyo9)?9PUF~`7&2iCN$tnEC@+2tSnf!>#gGD&+1EsQ+(TN zti?;e7@{^r4fEVn9WTie1|JgFRJg<(EOd;jR@-e7~!P+-mN4K`VXw;S@m`xVqj zj~28aEc%-B&I;;hp3lZ_z|ND<_HwZ6`?__@`cZT3Vn-DkxoPFEU(2t+9(gf%h#btC z92ZAOnb#+g*f6J>vE8^)yK$*^b**S;cdmKEDtjvdF}adU(n}5c1}ph!Sk1aQfS5LJ zKL&+Bcs0e{_jm8LhGR`(Vk9@$z}c#}KqS3gn`pwrP<|F0a8cs@H!baMh0!n?L9e zUWqcUTr_wY~W4{bAz zQE3*Q79isbplAa4<2w?y>_5l7T$PA)?{xei!kP1HGrD()gH?-_>r)O_c)OmX(ssCB z#uqVZJMFKPZf#Gr0kGf03+2vto|>wG{ECh#Z8@akY`bFpj*Q5$aL3-`wQ;75n1H!+ z>@x@G4Si4_^Zd$~uCjR!o56E?p!|`uS6ObCu#gslB|t;Di<;G_?2bTcDa>Kh9zH-j4eMw(V&0yZ(w zZBs35=yNN^+IG*aEpuMjdX1DZ^X^RikXdOKw410D3Aqqp5+GyAip=6(;iKse;jYH4 zqm86SPry+v8J$#>0%T}5~K}(d0-h&p&$jFXGL2z=@YAOyLWzFdF{r} zW#6TX5@vvlyP=Wj5Yr-;;<^%k%w!gwSG@X@GeKc+8ahLJX%s0i${2ncM`G1cyXTe) z`eP#SKe1MVZ6gbYkr>F*XCuefklyuJYk)!s1yBn2ScigU6)ZJ!`})OcQo5tQnPZkp zj)3<@Ec9V$P=+It(soWo+t+9&k_dJ{_3H0w3m`CSQQpjeEqlSR2EaE&2k>;0Q~>+Q z8$JNZC>q=A6sYrTPg3n0)=%c+-vT1&P(&{0I{i@y4Rd}0uq95)tD4p z!4HCNJ~4vf>)Go;M$eRHDvmchGqNb%Q?<&Yp&~o5B9h?zgM#~D=Q>r+@F8L5i^2F5 z`f^(6*j#wfVL#}c<{RkJ(PI44KDJY}3Z@~Vt-_65hWAm{Aft9#7&qxbnrOZ-s#t-Y zh`trXR0O5B8tip++P{RrCW%0lP%sqA22&dS zntxG-jktK01BHPK+Y=uIoH<^@O#ZUSL+A(3u&V@Bf}R7_6i)A-nlKQW9@bEf;nVWZ^$=JLyYQ65FXy28<4c?ksItvAlUFmj*Or1CE$ zir_eOB-v<<*Z5>{@slHA=WOtT@gP`Ivofe-4Rpn+zr}`Ms~jm za~jU&RufY&oq0D!m)%foU=?+0|1N@OM^f4!9ma1ahx27Tj7Jufo`|~jG@&irZWLSk znv6|oN&S+-cnAzD{Jdhy6XQDtD*KzcYKkWM{95_ zTY@ev_a(AbB2So)lIjf84%@tWc1(mkC7va9QtnA0z>>EkZ3QK^_OR0=)hR_|d&LUj zr!$UgjqARU_CCZv1ifQ?6yIR7%;xrGRHtl4v=;sS)_z|4{1kOw5@W;(X>OCv&p~pp zCFTfV9UZHkogN#-B^kI+P7sQ?LCc5aP!xCz`-OH^vn^Qsj&G&g96g#P1Pp2AaL^W} zT-ce?MltDBwvo;3LC;dkGb#fe4$96DmdAXpiCqxsqRfTn9)hyf_rf6w^{{4f;1Z;A zryj8arOU#zj8$?9I+h(DkUdOYnaOPj2m+kNE z!vaRntGn(Rn9E$qI-RYmRD*NxjF;-AU^iU>J08DRExEA#IqqyV*+irzTFwByB?$q@jfW6+OA zovZBqj(8(E^ zkhYAh6Xz2m@a=9JW}ihlJ)<-tVU9RR7FV&NT3oCJ-hMl{Bw4djWTgkCg?jt9!Sh++ znQ3`FLP8)}7(kS$fHbCdumMz;(4X?^L>gzmJ7Qjuvz00eR+?2czMx~j(60Kj0&niM zG^4K|ve$i)%b(^$E$)a`ri>qK_;yH(Y4?DWfp+8q%ah?%ft zqp!uUtZTE8MBP(lxXl8r=Ax;_C0Q9*&UFetRCg)I^JYkuy?%*G6B21V*tK@(0Z0kC z9khhyy6J(%U>RrfZ`6fM-oh-xkhw(1Qd<7MnY7amBCID|$dYG5(Qd@OlPU?uaJ=ArZ-D|Wz&fBB6 zm5sTf>8gl!Bvb1LP+eK$dix#&T(*m?;)8XzQmH1E&Y%@H^Dt~txtd~hnYr~~+%z&C zrB(GD0An%X#jq*06Co938+vcc@WAfcRu$kwY~6b1xtEu={)~nr`T6WhKq5h-Hb1Ab%yJG-Q2fsZD!X4wp9u4i)#9esAoB!=4&|;!_R{h!~+kbx?)am$81|=Jao?1rZ-Da+M0a$#}F~x z7%j?Olnx9G%n2u5Guh6<7QVR+G8Oj{x=nN3cYXQm+BbT0zIG&Kto=qqY?i}=P_IDL zKEz(tdou80zfzLC!Rl*rcbRVpe@vJKagEx_*FuK1n8wr#9s_^ z{E*Qe9L$#sBBt6fsuC;y#KP2}D_gHT!#+j)YGj}dbP)bgh2=8@fK^fL%ff&|F zKA?W88^}~LmcTQO$oYPn^CM3AX-W@BmD9Ve9~?Hif3@s@Um3*UoEeKvTMwTLb4j{# zB3mzYb68LIvf>{_yYBJ*BwZ5h4v0ZAW0_jEJX-%|r2_L|@f#dwK~$Jr(kX6*5#Ngy zP56zmwr1iP0o>Rpq%o ztDYg#Yt=84mTKbV%WA8jPCk?o+B~Rb5W@>D#@`m_=uyif-Lt0krrg`)ACt4minsc%%Ah8C03_(!BbMJqkKbVnS?q zv=3jlt2vcU*apE^{$NwLs0S<}W-v|*1=s&gn|1U_xKZwE9QAYKDhBT0c{c6Y-SX$K8|4Sw|^xp-J2;U8#G zYVWs%p^wd5I0!=Ep3m@Y*VYpYIuy()IRE}B14fg7B$&4;gtY}%&Y<1qQ9fQ+2F`EO?%%T-W9n9;FaVV)@5$Z@Yukq6)4{??x?If}s;~!gG-KIWZT-Im zHr49C`K@ifULOfs^ghS*G`9?EiElc*%|u~ad|<$*7u)vytXEsBPZn+^L;}YXF#b9r zNMK}jKYjjU#uaIN^~P_QGv3F7eEC%M$Lk9Ny-m92L~r4bHH+o_4eB+s?cexF{*m9l zZ1P3s?0_IMA{z^NH2{--8Deb+nQu2+5YK=#9DSn z*vx?a_QsYD@_ET=t}V!nY+lQHl}b-z+D+i#-HZM;ft+~K;n%(a2>+<~;Qf=!F?U&z z18qf3+e##)73_$>6ygUhBeP|5**L^v(9I7%d@27eqWD+gAXlZDrth!It2%;9rseLh z9fNmE*7v_ft~^_Q>--j7xVSE(ha96HF@86_{k!kG-!Cl#dk1NZ3-li?uXG<%_}9c* zOwCTSdW=Tbowss9d!G&HB33ut^Gn)cEvFER@iwe$P_T%!>0Q#^P1}qg$`X}tnYjV} z!i(-I%!pJ2<)fW*D7s{}c5yAva8b1f-)Q_>X)83Ne>4%G3etmr>B|=OaUE}T1@wif zamt=l?9k`C_@MSfwuh%)7bF@>j|REWdt{?W=6A`;s=v}dl64@)s4sd5d)*y_BKjbB zh7TqBMZX=09St`%t>a-kZA(8J*sBw3YC-f!3d4MaociVE0Gz#kD#KT7D;OyBg-NBQ zaoBQaub-W5a=rGSmR{)x8X*Z)|NT=ttnp0h)@w{)24x#V^->4i9!EU0d8c%3f3izk zEghj&2YdMKBgT)qj)?T4aB0wZ5Gs>-20G0OY#z+ghT5c7jd^>jA>P12=e6hJ32Z7_ zHDPLcJNkRE^S{b9Ol4=6qhAU~i~8|$5bm4CZ_;~xcuzYBN;O{Zy@_O-U7}go2o+lG(MH1Ze>#2Wr5H=e{i1P zW)=@SW#Vord3(H`-sBX^X`TpI54i>6PG5?$admVMFOPV7tO^y~(I`${?TyDg%FV?9 zyH@>~o9=W_>PO86+cA1kPeMzEr>^eJC+=?}=F@Te^~%sf{Fy)pbZNU zh^EFt-QeSps5XGPPWaDUm-P_4YT&?WJQ}FrOJWRoZK7BJVrCTq^W2@)EF$Ph``$ib z5Fetwdr+lbT@;r zJ62d|P$B^v!Dl&W#6*>UTbsf<=wdxv>O=$8N)`!Lw~+w1y7_9%p|^s=`RD*?PHwb9 zjPd)Hh1zlTYYCm)#jv>+8dP)BX)?lnF103V?v4KS<3@<)p@5OT!;A^%R|Lu4e)xpF z&$3wCnZSD3yR!iD6G^f}S{3@uRdgQ{*Ht}(e!3^7C8AfDOF7Y_IAl=w!AYZI)xEh7 zjL^(iT}u-qx=wY2-7+N%dUVKRHSSmN0QxVT%KNE{g!!$&ZE5k_4oYNRd9G+)6|JJ> zhM<3{%B|4JPX?vSD8jW|?G#~9oqSTB8nKd=Jt!((t)eM~shU^^JKadqq0&r0o~?h$ zm;sAXo{H2KY>Q;5l{io%=FgVY@YW(RwrVUZy$Br9@0h0YtH0TCZ((%3gKvM1Y zf-Dl5GDKUXb3Eaq7#BUl$gn{T-Ca$`gZ9;pT~SxK@y;1_c~R@vo7on@7b}sRwHeLC z_9!Ju@;A6vZ48OY=PmvATX2pEPLQb6!@1hyKI$Lg{)*qensWjk6cquUu{c}G0TE_@ z{=mJYLw+;?9{MPH`tpioGeQ}W_M~S|kvV;M(7&RO8ma%}A?mG?KL|9sAMO|FZg}qL zCO6|tn88>6Q)dHS4CkJ_Ip~Ibgs`%YijGi|2t7&!|GfhL!m7>?V3pDMH!;WGp4@PK za!m-aDCs74X$6k}0VNz1jB34B^17G@eqO;q6$%<7-w>}JRj@?F_nXFoa$ujgCf`;L^c4};QyTC8zUT#UX$3t#u9v*_znAvWH z+=OZp%s$RqErZgOw$L&u5l8b=f%x9*kCYGoL$#DAIl)I0`05|pMQUEG;@&_- zC2B&+HuYH8ldZJQsR$A)a7ifY=EO@OEQv-8;byHf9b=bHM_Iw4TpQnh+Jl&KMxp|< zRGM9oy)ztX$&&NK$qo6Wt&1^yot8`OeC;Co0MBg-7E`(f6O!2jgTrGKNbPIe5jgq%3K0?_^IRr+j`Gr4F@)Ib$R?2- zX>&FJE~3cjoTq+CXYPjFR^#G=U%%_?=qk6thiX?4LZsd=@|SJMv2=OS4qfmJ zl8l)1TA%}|UYQZb&M@4C^J;G!rY`oo0YsPqR{TZ>o}q`)dX_|LI0^(oD3JKP0ceUu zi;MLI7*ZO#hh=RsV=&+ki}VuofVoU`p+Q0Nn7KiHQK5^n{SaemC=K_X4p=#fc>W#L@yO1Xt*(Izc|yOdM? zFmO+{rV}zfb1i*=%inO`~~G^>KsJ=+p|cjRPo{+a6P2~ z;Px#w%fgx_MzwJpJQCAYHlxA!5y|F=graGQXtV8L8>9)S?|E}yT1v=@jYq|00)QjpaBoRt%WhH% zhkN196YH)lw--j}22cA4)k@hrOi;rl7sZ@=2_P_U$z7Tz^Qx?=gi(0sQHf@4!RCB4 zuuzJ|GDt#OBQ@P-U*F2i?e8+!Lf?kXWgx!W5Re|B5>Id7p!gHW$B9WW*a7QDOxuZa zK?R5k2b2%& zuie-#;Z6R+c+SF>V$rJVMkdZ4sOD+TPAzrSajP~ zpb+xo=2uxE(w>cwGnhx(Ue=ILXPr)k>PT?P=t@JiENTXZERC>1=%iHP@AA}8!)b_l zl}e`YJg-P@H6HEt6<{1^%x6;&z1GWjzN%BJxk-A5s=-3vY_QuwPWRg!(a1IK{d}sx2V7;4j2dw zB2>;`duEu=R=~bRxOp=PGxN!WLuj5rw(l$OC^OijUPcSCkBG6LzB@;|*f27UGc$SM zk{1|}FRT<&?+hnG?7umzX{I$8rwavT|9IiL@|mqPKY^g*_PUyPrsAwDfTUm`vdZHh z_pp?bciT)Zx&BKIuoLnR6RRE}1h9X^+@C(NA*te3E^`Q!@YW{;sPmv91I&~iLA z3Rj#2GJ4!sca#_?>;$le;RuDxaIRLv@y5H3pe4Fc0DMCLd-I@_#h*^(eOFU^k; zk$6(7R8GF4>pT2Wi0{JjnH)WhK&fJbu4ls$%%~y?kmQZ;^1I?qG@XYKr2XhZnf$X! zATmA}+o?EQRhOB&Nn#;W_8~#A;&k>Q!;p?za_pPdYPXAEw)TpMROP;+6(lY6r-Q)2 z6Hsu#xDc)!ghIFKlCwG+?|8r%&Ny{d znf`8*t=+LRI>XI}N4~0Sxpzv|aqczz1<=;N%ZL1`p%W2$)0lqAT=rHl+nQ?ZMSMR~ z^Kg~1KW()fdvkW0w>;r#FjF>iV&KCp$kcD(zKm34YiA7P>#M26G?Rsn5S8Bi+ZfL! zd4;crO&kLF*H`9epR?Kc99wJ7@>LExOA-J-Z}?&lf;r$Mj-Kt zaQK4zwmF3P@6xSLov2wu!)Vjk-C+!I$h`FF$74=gbV!}5kmixD*W%miC(y)OP@V5s zHsyTZfEFVD!CJpLKfT`!-}iC7#wVZ9uiesRkNE+N*s>!Xd8gne{*qr?{G)5JL(IP0 z1oc5T?tW{x2$)+0h;hC*x7WAzH&FOES83mGY?n8&u@Fi3-+S<7vMl@@5k}*ABBD}8>Xq83=SF`o#m@K zI51_)6MzXn+DdB4h%<6BNS>?!Iz-hWDU|25j)La54ap97=z<{qB#<5-4NiKV69GUT z7v54JyaNtd1Xy9trx>&jPLO~Z>Y4t40ul}$3r64u!NoO&$2FqzHHDa0dF*gA6PHd{ zPxSEa3~)dA)tRIqJl!l=IhV>Unj&JZo6f5;9NMqexP||G%{GH$?LW@N9cXmYoDT-2 z>Iba3OWi4bFo)_|nNI9ZS4@}f_mw6AXidy671m$}4z;?im_qY&}u-IlE`yuC*Q z9&g%r-8=(A8ky-)M|N4(O@~SL`qYxDCjVWGkGMdQp8ReXbiQBPfO>m*YlQ#r-ccm7 zMrtT-JORe9k7^V&&dR6+HGzY>q}*|fsKQ_c_nhX zLgWGPe1KJ!mp@8lE0%(vcvZHmt`erlTU7YHTxFkO%GgfVP!!cZiW@|E%1Sl0)%LMR z2vN%6-tV4MWj$Q2g##BW#;He7dol?`G&xjBjgYt=cn&*bY0vcrN08+S zZcPb(FET7wZ{_6Wt~-rp%J%9^k^Gp$>8~)G5Z@6LVF7Oy9+hLC&=;>dyRzA;R>1@dhn?%^#(#gS{Q5$J3CVU9ZHh!0 zYy^#Z{9>P}@VphwQrDH@x|X1RLj zC|Vm9=#{qA{h?~T@ojgJ|LcI5MDY7txLC8ZI`nonQCK_&#FlS@vxbLEjF(L8Yd=CU z;%%3XYQnX^!q#Z1*Gg)szkjERI|o0glkd8O3zla68S|oXSypTt!~bRH?##Vo6YtsU3YOP7>|?vAeod&)4DL^N6JA(i7Sj4e zhl%lsha+N-8#%VIUJ^m zL{qt(aa9k=A}oRBx3~cO3%e9AHW1K%+E)MPCK~Ji`$2zMQ)dgO|5*#|>Yvbo z(ErDX|IhIMb^B~tW78H@63HjGmNF1+nsJ1jhl^+32Hqr|MAaaa=u`?D%bq zmaT_5e?-)cu586K`>tlgsHxfblu)nX~$*V;#J<{bzz(C znn#r?lOc6`uB^BjjMLlF#m05-`xTE!k>GoT?F8EW^Vs}FcKW;Fb6&5LJ{I@Em}U&w zh+Hdt)BJcV1+IfkUrmdYqwjbTINP^~YJhH$- zVBMv91F_$lIkW3rINoS1F}vByBc*d~oCKA+8kv!-uxTnBb_zj8S@59$7c*OyC}|oL zKFke3)si5i5|3hPANQ8fhy-r+)R-b#Gjo87gP50w(6xt?`;YP&)*M^pWz)$15{Rp_ zW5|KX8Wq2`0`L)h)XRbs>b@<6pkMAC)td<>>7&%I~_K1yLSrbSbKp=|Eluf2y6}ae|%AHC5HeG*BI&V93svQN%TSQq)(GV z*z7HxF}MLOlpObnk?exMk9wl-u;eG5DpNkGj^!Cw3=3^pN1x2*(VNHbU?5YMLDX!1T;Xd^zdS+go zYQaZ;%8NG3Pd4U|Fqm84t^#iTTAv6|K^_T=?gkO=f+#<4#O^e%ynD0nUpb=1Qb=Q{ zfwhS^_*ve|bP=#)DPQ4vvNsRcd;uvdg$g)Q*b%`+=?!hW;t3d>P{$`N5Us|onPJv5 z6j&E}En!m#C_<_GTO=|)ar+vkr`qVEYv)%yR^r=R@h7-O6sJR%;Rk7+5T10-k>`qt z-p6&agUNVb9pLY;vmt^h_-7PlQwGYq_SFs-Q{!?8hl~ae-m_+T_XsxZu0-Q$37=BR z=mY6?e5hMj8Eth@={;FZzJ^- zOME^Zr^EHMt;>a@3>T9f8E(q;&-%HGEqu5 zV`ESFZ;DBcfAkq|wNXcg9=ErTRHwbNmo8hmYGHu|iGOi_2xK?5OqEWUN&Rb`qmEr8 z7x}{8{L=XSY51MfdV+a+GUs3$KZ88@?gx8i1~H>t6q)kK@E@)U3#G%bDFhJEe^T53 zInDkzG<*~c9Zf8p?EYtoRzU8*#Z~#=V*ano|2o-T>v%X}OQ!zh%HIp&<%5F@4Xn6( z&g~2MUq=e&?cdcG>JbNsRJbY*tNlt`-rkwz>rKmWag?y!E6PoBY5?hGai8`(YI#nyjr!Xw>*J?~LJ2o_7tyS`U$?1*lbz-4RYZX@ef%96 zT@iolpn{ymzE|rD8o>Y#@y26 zW+)zEMr#%LSo1Ln?C%`vKQUJ>7?Fk z^|CeF`6noZ_R^W2@0n)pF5H=H>$dgtyUH!=eG|)>=INjy2BPbQkHF2H0B|p#!sVA~ z?eeX1tN6;W=_Uw!-t96sXytMkg$wqz;o?OXJu0I@DR*9riy=It%^V#~1w>VRVBrl- zhxs$M-CeV z_>*9gmYsGs@bm7{=5AwqIHg8kMZfI}jIuX>wL1D3!+-wNGQy}|`yPG<@S#EI z-8Zg(q*lMwZmXBgpW|ScZeCIbLci3oSRq_Qu{raqznT2_2wv!lIVxGqpFIaB1D3Co z>&9;LFzq!V&6TOzHs=?FB)4}UMQ-?6ll>jI*h2mNj90%&VCsquJP+J`7s4P<8zpVuxW>hPJ;b+%a zKS1BP>mS!0B(x9dbs~2htyOiDkiSfzr)NYYW(UJ>Fy(q&vL6Ve1{E0Vpy%R$ZR?uZV2w0ae1}ZY{c`92@yUGPAh8_+vsF3>4x)@N`j0up znHfz=1`kwp3sZVW6L>`J2+Os2V1PM~51fXMy*#GhQ7FLW7?>WTDAwnMbVLD-Yp90I z^WDvB`SL*$Txr(H29j8pmC1^cYnF6{>IRVaLrifWe;tm2Vn*Cz-u8S+ehHokxAIMF z_iB*{y7|ibng9?5ZS+Djqgs~{vKZs*aJR}0^>e=8l^1FJZI1sf@XqHrM}>#~CtqvY zym>5gJ?5#ta=EUuc$ZD+R!Gf$N{I0^b6a=1*wBXKAFbB}>Bhb6cV(Fd=)P^$S%`vq#V-ADz zwgJg%@VKJgVlIg^Fvn!zvSPY8l#_ zQZ;jNFK(^nOFz;NRB-Do3r!yI$n*w?C;aSa+$Zy{ndH z7;RjP1nU9EM#8kXA8F=7p(><0DEcv2L!^-8kqOA|wZRK3LJs>s;s&F0|9HBg_ZSogCm}as%UfDF)FgHAq;jlcH`Ae0MeE27H(vPx-1zJ zq^VT7;jwy*uVNZm$~>B23*NY^bqKURg;=6P0)YW$WGcgCH6&UxlD+R89RM=4wJFW0*wQ2 zoIGO(!)4Qm1eek}7Of!i1l_1`#h&M%Z_Xfo_8Tv9!crt$G6WiM*8l0ggcM}qQ3N&; zkfr!cjL{d@X5PnBwdKa~&KxdATk>x6iTUiwU)|;4w5t!$zE|YKw=r;QcO;o>0)_JK zp*T#n|4uN_v7Ydz-rEwhL?mtCXZ6Q6ypphYB3Vi&o@$p)vyOv#J02aOWm;BsiLrIC{xENht$yJw^!n0~3I>&z69+On*By71#KN9-ggN*PJ!+mH|cke*8kFFsaqrCl;px4qJPsPQ3i6Z0>0 z?>V?(I`Qp>#@khec?gg)=Bk2-@vPGt1Jc(TjbcdfqLyrQP(e1B%!$1>kuZYYiNWNf2g`xpXhWxx)RiH0fgf({exNR5DA$DWqw~uNfu0G8YDV@$CI!^ShGO3XTs3{ZvQioYHdv zG@R4|$D8k^7ejN>EGtYKca~XT{9_=Z40)DKhZh^n)+~AoT(5Qi)Nu<#m~RG)H@7@O z&6xK!4A?V=FpH`B-Gs*Ycvz(Mnq$_mW6@Mtxt%FV+ZFvqY5&C3Li?f?4FkDR%KA5F zR5d~jL4@(RIO1mxQ|#HeW!fR1qCfRB*DrJidtEYwbEgH%E56SjJ37e@WaNJn5$XXo z6)-MPmk!8j2mQ&O%l9_^4Ux;f4(qdp)nZq6hduAspbmwcUa_*H*+;0RoMeHIN1@}x z>;sp-1e(TUvTnQ@v3|wKpMl}+)2ZU)NeZ~_?Ve&*F~6cBQ=+!&qQ&&I-r1Nypd^hi zU?hEX8O$mlxT&V-lU(ymxIGEog9Gc8d@iWR;TL!H@>s4!iBBt$ch;u)r08P;hxrq7 zrLF?fHU@bz30Cvk(*Zj|ka;hRa;ul#P4BHSTFO0(?y{+_1enDE)1&o+XptAC6>4{x z?rEyhD!qO2G29GQ6NOzU8!h4s}TM4MYXa5H}qi(Zw~{d@1*^Z@yOrJD@i#f8|-H z4G{p1aMEr!zkEQQjVp(L>t1Z$-M-y;`ez z)7Mn(y3D#J^oV0(pAF^7koHLhKo%*7-gsR_^ctsO}!UNcL zoDPm@RwBX0dPa%1%ARP7N@^J&y%Ff&)2PDS2ICA_16N}V*>Sfj8M-nG(I?eTK^z2* z0CqO7LuUSEnuyL~okUyeZ&Ar-Z#E*@=(4jB$i*q^>q1~xKgIcLwC>*;tHDgBHcLp% zrVMfEE%x;)?Wy@EMU+btM2TE{JCO)mJ#r~}J}*nuU$B-Ak?_q0FvF8`9AxdjXNCZ8 zQF?x(PFu4h*o-k72K-*hv9Qu3Qszr(o$C)Sq$-DsDRbXmx9qpK{`E|cE7j=$|G5IDKn}4~^>9q{JpMSqW+x|UUR3BO-+2;*^c z`JjgbKAduj^l9^OmXYf{yoOghH3{w&_cQGi4EMj%8uHNC=hauz=yS)~;!H_GP|-#< z$UX!hrPY&-*&OYu4ekrO&6u7-aA>>yxo3JSkQ?Tx-W(YUbr+X*gJWXr^V#iOkO)Lfe`rlArA)|vi{2}Ri7(@<+pKgEO!Mfrb z$K~=YSJm}1CVG$BPH8A%fjNamU1>8eBY|2vrv`935(2JBP|8t3-2JAesC=}FalN?a z0(a~0uQh;p*p-`0{XUd#|332jczR{MUA-35MchSkGNUW#{bs2cT2EHycM9J}wcYG~ z={_cAp6_w3pAX^C<+9F9PwX73A-I5ra&ZyEy7Lma&>-6NSh}|IiDgE=nmHNce9#%i z{}?#!xzQuyBUu4!Pje}~fiw5ppE2uxz(@DSS3I6X9gvR=wX+d4LS=yI?WrBcJxfbe zV!#vWQdyd>$~VAHb1aIyC#09Rbo7{e%3700|cLTN_tC+S5h{@}~}`hj`Nf#twnuF633Cf6$w zsPM(CCFxx)!6xlaZ*s;Loji6e3vPIxYh-R;u!MkXv~9ri8aOz38F zO(i@*krK8%A@{cJfJ%Z6*!%d!f_+zMxVBn!3(o#@)WC$zTNLwTAX}f-W0Tc*dDLLk zu_vv|JF~;H<7meOPY_hfKv%QXyNCfr;M6HUyXDx*;6uXX;@xqhWYSR$2;v`La$qQb&ysJdSijVGSOnSX zhd>p=xh3}2g`n*DjBn?9@K`omLLgbsusvk}Jh9WeN}aRG6py#RQDy-23%;|+SC`rf zKRyn8z3S-hIBa>uAqZ~E!y}4+{7L6*e`X2yFSJQP&ZmOuqcr(+#{-3*Q8MtpGn59@ zr=XZ-_6x2>H;`|5W3KOJ5Z<;=0lg%6+qFszZ7Jo~+kzm)*JtL~xmnISk-|Kz6BhfWZ;D$8Dau!^zd;X*!<^A(xF?qvfUxkZu55c za&v!!UGDkeTM)>ynOJpq3}Orkq1vN{a-k>a_?`4!uKgJci=Z}zPIT>Q5USpe&G#+3v`u>Y(TIx@ z4aNctPrBV?FTkcxapePk_++bTTa8BE}0X+YKd;fdX$ogNOul+GlanOGUNB`b*FYYa(tW8ivQy39jWz&EFihloIDcQFKm}Pq|vbJyLNnG zl2hfdjo0zoi%cqJl&0sLV$y)r2Jgul#t&q8Lipk7ga`!127|_foT<^g3SBXXgiWbi z0G(n5=frQYl&_`_E@iXn?ICsbcT8 z?hpa$*NHjih^|KiX!YV|tUvA-NJ!Y1zD6bP)or6*;F&j)nWf8(?Bd=ui&pI+Np|kA z5844s-l!-Nz%>{mgL}B~A0Bc)Y_fy92=b*wpSUp^A$f?TL>W7Lz%q1y%6`;VAQ7!P zn@d=3Q~EWPy><2ErdAfY8C5)qVc7bg0A@JFe&iH8dgDCUzrnHsotpM%ZGE)_va~^| zlL&a3CKfP2cyfZ*Ah&^E^b3^JdiuG687nP?PcGB(_f|e)hckQK<8%ic#=wlSiRaf) zCEZVcYUF>LPjmdz;q_cy3?K`VqE{^t#0vnpvv`5pV&_ttz{cvvpe=g`H!zTx#H|Oj z{h~-P%N{axPc05W%K>Cme=ExKmQ)1sj)OQFJejZP%>vf`U{{-(;&IF6R>W^!pASF_ zh8)#)0>}u+p~Sg&ElLnD?0E74JlYRlp@aN1WlGTvy2M*?G+L}oy?;f!bXu(b{)+M_ zo)HLHPShOqfk#5jSkPH0sgXQ%FJ+cm`R;n8Dy!i4+0-0`O8ji-m4975u zVsLE(YIl1C<*HqF%|;73#cN;m0Iq4A(R{;gzTP*-Hv)T^^BRthUey80p@M-$a(VFL zxM09!^B>N=Pm%+N4VvpOX7b_l-;Tu;1mMZKUf0>Q8*5i*KQ5!WyW!ep$)aG$ZN; zC5mZS29+m>tRH|hJ%D7_C#~0*T6F74k~oP6Gjm>ah7WaoALywZY*mG^un_WjdldHz5c6N=*G|fRFmU< zr0+?=ox}U-brsjv(gV%FXHJ?`YoGOmjHaq(L^d=8!Z|tkntkU&j4;S986cC_wCCA*J$d3V_!los5Tz)t7aZRNoU_)Y{4#3-_7OmJZGPNV zw6B`^$YoQO@(E_snpz>vb^_%lS$2y(-OZfN{#1FOPb!W$yk)%?l&8Po{VV7jL^~Q9 zShA*rATMe^{gqHo?#`kkr5Y(FP?c)gY>leJ0{+Vc;Xwmnk=KPx`>!okAM>p#x|Irg zxoJDenxZg&RMjdr!8L(7g{k3}RyGvRUWKY7{LzuBA4o^8AaQ-s)4VV(O_OB45V{tB z5j@Zl8eZ}9M72^}K>rx6f5t*@7AGe{WSpl0s03$fj-ThW-iP*|;<$0DlwzW1P>eWb zg?MEY0Qt2Y(ZwIJJFDB0{<6+uHFdG9I~Hl8ejd9Y>72WnCkF?Gg*}8u5B7V5BGcJ55#;GFK6bn(UB z{QleG3%2vhe!o+@*PYd#bBW7wd%M>)v0enM>E~QSO$@}S9Rm_=lry^qz{Il&rw<}? ztt!J|V+4Rr&uNV!K<9uul%AIzK$HA6ic20(i>4iBg4V)<4!em=THPyjMf_>tq!|sw zz~VUeg)boF1bq+EHs+6jDGu_^H;SzuomCpTkNn45CEO4}Fa`B35MpE*0?0$b0#Piw zLEarvY!FsXP2ba0Fwi`_{)A}-#g&5&*#-ih@Tdm;fU%`@H0OyEi5v|OkvtCD!~cBA zW8n;?7+jn>EDBZX!m2;2Xe{(5KHpKrWS?eVwq?u_N)jWW1V;2-L#q&OX@GQu7R(Dd#= zRbhNjC4W#gr(!O2jgvWPCcJ7f651xZ83rkyZ~n-no&ArT?Mn94N#o6vEo|6I$0@K! z&TB~Nwn8b=fz#6N{O-_=9IE*&Tql7K;M&gHmDSIq8`Bm0dj3x>ozcqoNWSU@>@NVm zyee(P0Y%s#lK2l*e0jT8w%2916+9_@k$}}P!-no)Ld^Gkj5znotD*oEwp!lqnNDOy z%~C99HdHZ7W)W^uM^B-%6OMs3iL6olV}Ah>;Iw(BuivGv38DmlM?oL>FAfdxh5%dM zLLd+j`(LJb#69YuWDZCpG-$!%$kqvF>|5wEl>}$}DK6v&Vm|8N1jQx7Y~E1vYrZ3d z*TEp5H3c?A*BZ{{ofiG1sJI&>wNN(YVbBThB|d+Ur7_=>E1Gu7)tQMm&tB@~9NIB} z;fuJC3W+_7=syy(!eq%~mGX{hWj##LcHJqch3Z;Q#T}p)$>G`jzEw4wypScfca zD;I6Q63zBfbXz>uU(uCm@78uz7A>>GpS|NvP9E1;IkQq^>mD(q3e~M)5ll-b^C^|# z(Nk9@ZqpE7HRh`svOxC7TsiW<)IeQVHjLOE&P1n9;a>E^^KHc|fpuLP0u+ zHrKDw2`WU2oOM%+K<91775sw*E$BgLIs!)&Hq8zkb{s;H*c*??D$0#gMlIFs6-{xQ zppH_BjC~ySYo#)L!=8|(hS?(dSQHP`>|4uV=9zBd+;h0jp|+)^@a&)t5z`gbDDU-k zgbEGFYv3p>hgc_%K?AYPM69Y!#5N(-)&97IY8r`Hnh{vUrPV62M?%uBNx1&vy$WR?*$Ei1(AST6K)WgnFW9^CAnH*uSm4Je8IxjqBoH@?asfT$u2R?1BZz1k5OM3MVQV{-z1rop=1UAcI(r!Jgv znznr~J#L40NP0@Do6!X~IQVu@7N>P#35IyHyRlwR?^y6)cW3kh%AQ6BSIvmSkba=( zQK+BfN@0&RF|x4@W|L_S=HsCyP+l?9fG8tn#ZX5uSRT0`2{6Ly+JdYU4Um%OnVImE z6|3fdI1-zU8YO-5iHO}iKbqnr6Hp7Vp_QQK$K7N`2Xp1PQT;ZSlu2+vI5@pIF|sR2 z`IZ8#Se4i}Bvgv6k9{|zM|Wg#89?qt#EozCMftXe6OKGOhjaX#>VKyvx38g$6sfI0 zlnc)#s(Ti3fnOoKr#oB;Tr-x(LD{^j>2T)mA@EIe8R5z`RzAZ}I>cD$(faxrO;;Co`D$kZOwP+p;GC+Iu?Py zLF&s)Bz`TWo^ejiL3EG@z*RgF1m3X(Hw-i}(+p{7I!~eHaEji)q3xE{#f}Obq>Ch& zMaxWe-3JVl$-6iBu%pdNDXtik&$_)*N#P6P08kB(u5l{-r0lZvCk8i5NQ5oqRs}H< zSdMt^?;ns}(Ncqo#_257==0Xye^l~{Qsz)O%3FQxgyY12nB(lWP9t`Sod0q`z`ypT1bZ?+(8$ZX*ifM+%1Sv~zV^r*;&B5- zPr~DB?06ndBXRi{XJ53<&f`G)#_aUlWGhkOHpY)eSK0M=JsdNNJ3>t^JQgZZJ(xpy z@7kvX?N$Mb#$mZ}pNzww_B$4K15;17(xUkBVq|!DW^0_Dzs;w-wER8Ln{(SJI3vB-H0mMObEW8uVin~ zgMw*~^w_zH!ok#rmw0Uh#ZBW-W*r0mhPI@8frMlc@HrH)xj4-KJ;ZacJS?T_rp`ia zM^|QL_2ik2uU$a&zs8}57*iX39q7V&;g>>o-1yqcjsh#hzcwEU3y=8gx3(46fs=qS z;xX_<3|6r=Uj3)3h01IO&k}ms?$)Nt9cOvk9Mqc{$BXq*=~M1CB}QoZ_&S{~udi^! zjly-XV8V^*ZJ6@sV3bo=lC`B@W>)is?1MF3sUo7WX%9Qa`MQ7F-t3H&TBRL+Y7(4{ zM$lJH5+QKXsbq^x3%Q#jMW#!l$_S+tCve%Fl^wU_U9~w!mD-jihn8H9ZzE}vBP-M^ zxb+CSvt%!h?}4PnpW-rk=L?ub;A&9en8*0rLdpevHp16@P2y<(fk(HFW6lP?Of0!T zW$4wPG0oFFCxhzdtLtj6(FL}^OjfS$Wx*}t-KYTB7a zX6(W+eGO*9cYUuZBIz?2iku{dO&NyP zQSz>1uUF}!&f3+%w3G5*I4pF)Q^evO=`V?~0NU|=x-cASA~ zlwn-SaOvn;X6khe#%l?+7Gok?`O;T8(U3;^l*qo&FQ*WghvN_#rO_{kN6J!sykTXt zOp`f)zbL`2G$Ll}L!MCUR30q@I_!ms}`R2b`G#|8R-cB?dzQzn2yNJ3-PYI|*@ zc-O!2fRq&qdYDmNDa5psx!hQ^@ddxMSj$Cbxxp`;1M{#rZt5%@vs9|zDk9l>)@$p( z0rsaxhhv{ZReI7}?~rQK_cW28qY9QEwvj*h{{ecIiPp_iNB{u;VQBw*pvUxIr)x@f z1`duU!nO`3|IO|{QcM56N!% zkT92o;E4Yygf4MraEZq;G~l+VlrYx^Pcu!|nZC+si@`6OjYq#spVS3gVUyFEWV@P5 zcYL35Zdvr7L`|&IM+E(n36mhy?Te$Ov<37Jqg6W(srY4Zdq-02kRwV^+)9Havgwio zN2~7>mkS3#qNS{9wb!_YIXDtKYy8QBw1tE7@pwMjdych}G6yNeJkFYtKohbJhrTwc zzk@yuh<_1!x@_z60Uq7`Ns;mT#2#@YOFmi_e@L&&M_1G?v9?hy#csY}Q2J^bMz<$B zL2(a7ku$7UU756cA z#-K&0<-E|u;p7j5jqf`|5h7FSH`S059yT0YKwVHj(z^4^>d&$ZGov(k>!*xEQMJeb z$)4E=vl%s97tFy;TCwolactQm6xEBC3q3p^exE-wmm zT4PEQ#4@ACkYuN74Tl|s>nfuzY>FWs1z<(ygA`F&iYGAR{;WjjfNY$11*2-$!VjfN zFpdkwM~U&w&7JNgse8g-e@6Sj2%3p*Jz){ST9(m6c%v4z)bCtnhH@fhJ}=e~NJ6H` zmU`K7-Kz0Sc(-%-5g^ITvMo4rmWIX>^>xdj0Nj%iar*+Us5Ecfiax@ zb}YBvZF0d>$#LW7{e$(?DVZb%nP;S2#iTfii&(SNEI5E0Wi*N=c|~&xUwP>AEop!jG~*K4T>}pB00t{3yd>V8b*T_-Ce(^ zLQ9yjs9BY*iisAo+}1>3RT4=jb0FW>aAifx%Ykm7PV zOs-xJPc|$W@x#geqa$;MCsz$tSA~l37Xl2W@Da6?DWTRMk`fTqv|&MlGp?QzB|&uM zKYXR#)^Ofad@6D+tN&Uq=Z1T}BvG!X-4PT9k}pDDz`X%zP}U z6P3a*o*Y0On*;VTL@-s(HIR(zRgS%}5|Z9BUibICH_Id%6@i7a>)O_ur7PllE-Zz` zzIX=cN;osFxdRI?OvNRU7^$2cO}{cKfTFJt7IAdXbge#p%s047kXP)#SgWD<5X0=X zn)bj)^hl+q;45HOJz2xtVLzB*!^3&9%+)KgLpv2#q9u2S-k- zi<4Q0E%Dn*g*pqnNbzbWv*lyDvhj68f_9ALf2El4w?icrOd3SkgPx$3@&Cpqzp1k_ zqKb1EM&ck~5Q+ZGv3lIB*3u68ZdTzNDp^#;KA)32pL=^gW!oFg_d{8+R0_(VM?#YB z6RdbF8(hy}z&2$|=(;J>yDhr|h>InSxdd#bn0X>$acHn9EI%iO6=xiHX`4H43xy0X zofF4|9Q9bYbu*7J*3jAO8%B<58&HHYnWzg!81!k-)m&UP5 zbe%5g#Yrf3hcqm)%2k9tOoP1R!k>FpkL7kQKNfkL5$vL4tbO>Sd(_%-5@IL zu0HFLC*7(Ad|s~d&}R49D!9V_LyVz{Jt(eN5Y!;5S!|ImxTe z^~br|Q@U@V?ot4?4bQ1RPb~wQ+T)bZ4Hp=?RQ-GlgI}BST2b`VPlkcjVWf8phIf_V=C+BCQHe-rzvK*O_+Ow^eWNEe+u~LA; zIisAG`;nthWmwh~Mu^>IS)?@GqL#e$+PdU$`3B6d8m0u$vPi~0JvH(H^llr?)b+Kx zTUoABu(TvYbd!lbx38&^cUg10k_=)i%fWPf8l3@a^cX~UMbYe8zJ|*==`W*@8Q16u z+qk;SUeEm;5cYuJQfust-teWXW|NH0bV*KZdFfz`c72}0Tj%IJ)qdM^(sZL5(-N~L z?1!HrjvMdV+;X9|mGg?DR-d>3GDtuA3-}+o0un6ZQ4apkQTR_J{7<<80RRC25Rj|_ z@c({}#sC14{}=K>$;8T3(D<*dg^kmHO+Q@oTDWeCCG5Uadn9;!<$)-A@R9;?GTnvJPUl}5v zSmB9f^_yLofl8lTadaKjPkNyRt3@7!9O}I|_~xQ|C5!p==N~XVHg4|p17?zAenqwC zGV*sE{NW2Sta48;YQ=nZ)`eShmCyZIO}x$F`;>nPoF#q{9zRUe`!MMfQ~SfvwE+5y zJECz0f4VLLL_{*1$dqXhfMxeWHLejf%UZpQO5CIDQ)SwcB+=p+Qs5eOQQ2%S; zjv37SLY8&UaeC!3)`QK5+py}Gb^sH%q$9Umhs|$huUJPg6-m=Y1C2)zmRYARfGtUr z`b|u^J{7Cspz%iNHI(%Zs)ZtYfs0c$G&e}n$pw%G&aly6xBAJJH3|s+(DSqZw*B<= zG`#+P|Mc}XU5PIK>-g}oJuF`v`^)xS|4Q2g=wb73d+i%_Rteu+=*uuyBes60e+TcA zG^)0tNM@bWj^&g-F-m@yOc2xF9B{dDY}Qf3eWvg|Qa?S&{$6R!w$9(&DLvTl(qd+k zz~DTBGH7FHb5)8R8LSx|c(GKmQZH!i(0(UG`dWNGe%8Wtla+(9{_zn0@@%MA(5j4bi5}RpP-m9 zTKR;B!7ct%k$?@(RbK*6`Htp=_yyBMK0Oq%ASN1Sr=u$B@s8>Q(1l1$)+5i5w8Hiz zRFv;8>R3Er09QTaqjGG84G_i_?h6%)UEHHph>rG`PZIi5H!N$#sk?mwC{EOjGZGk# zu`%cb|Fo@IrA7Q)DYLX;p2Kou?3D}cK=btWD4g)p!tcL{sYzZKX zYdVILQ7Eradi46DU^X0l##>iZfp6pZ?z0Qxa5+Ndv)H^*xw^>MN`Z?Nni{0rg77iI zHt*XA#`nH`J5h7LuW{=L5UN^=j;;9ZFDbuw7T5qt; zMkcyRRWKB*mc=d0Q$o&tw)Cnb!R?f`O^V1fLVa*P0P<#+|cZI9R)4Ge95YB z&~pyK?*Y6|aEhcJNKWSh)mp`Fp*k6VWnjNUBiP2n7x!J2%fHZ3w%wV{O&7kA$}xZd z($}l|oiOsZy&MX0Y3oA?nya1(oE%#L4pN|)>3d4V`7!eWyB}fR$r0QSjflF;kHtmZ z^%bY9Ng1@s(D?h?Yoc%(bHb&D7#{cU+ht2JBsHuk5MUEbLN+)28+Uj+5i(CF-+(|m z3^CvF1VT1*qVjG=mu@cj*MU(tk*j@oSaLLUJjDwuve7=L7&cAb!AS;4^T3OwGuN?x z?hC1ht2UKM>Qs9D^g{57fDq~iV3605%v36{-mZ}1W@8$NMU2<@aTSNLi{lK!6({hK*Rsk zXD)QwXAVuS`Z~qK{*#E!l&CK!E!83sV`x}10lQAtG8wE$!NR3YGBHyl3iXGIRI!yQ zIW?4kpcM-t2qJ#!E&0BxZ#fu=>-dl2Af^>dV1oQ@aGH}nPT5b6#E!`UOBx?_^V=VY zMKeP&qxVhsk|*=Xu)6H#RS=^rifGx4ZA^BL8_6Fg2#0es>NL(m*Q)ma&B+XO&m7cP*rA6^1}b)=?b;l^E|l z(Z~?6!u+H3!BX55)H=ZK=Ex~n8Y1h~G0&#%Y>o9h3P|c$sR~OWBovSU_^JtFw5~>F z$s8U4W|oqLbT&S$hUU;hl!A4b`?Xu;LKdqKG1ef%CBx&L?7wL}{QP_wJzSibc(}g5 zKj0BJ&38`h#BmiG#JqhY11bFJV_`kJ zkXR1TBdk(3cI}APA-hYEAbetgmKg9ng#6CfilTE114OTM#5IaSfB2;*+5mcTNZB*7 zyJf;MDXYKJX(p1=X&WCZ?${VXRU)sA6}YE3by@wccWQfW37oI|lyvQ$ z*;YFCnVo5DqWiZfem@Kyx!)9Tt!KF#V^i2H-1D1#@!nhc@LZGg|!s2Gg+ z$-dBL6VNiS4GeD@5W7%$P&tZYBC@wMeXr-djvZRh00Q2$aJA3Q7>Mz6f{qqbAY3cd zN%@Y=3cn&pMV*YO!6G4MBOlUeok>ZBJsz1`vOZ}_zSEULPyvN_EC3jfL=!sHg<`sp+Wx55Qi93#CE{RIset2y+T zsn0)(L)1mTOSk*ybJHj`YI7hq5JG9AuCGuO+{7zDYh~r7FDmoI9?hPgPAP?a;AQv= zxkMbvy4E2r%_`F#Vt(Amy^|@=u!aBuYCqK!DrUX3NNqUQGYb5Y*j@zWFP#r+eR@>B z9oF24Nsu2Ue8;$p1ylyQAW;_U?5}ykZkXhN$MTWn_%4PWmcrDz765K%4>|ALQ9tOHr24D%t zN_-10BN6qJit%tQng+gsLI5EQ7{-%0{3#syhymkYF$g_^1?x@8!oZ>v!mS-*L;E>I zsOBskmM-prhiRf(PB-zeBMouJTJ+vNjF=eJ=OY9B1Pj4{azs+ucp#;MKII#7&HY-D zp^Y_Wh5T=xRiVPzaS_@xC`4+Jo0*shu~0>w&RNg!MNyRWD653@HUFrOTrBXrC4YuW zJ!cZDP9;;??A1Q+@SS8>U2qlaJmXKuzy%}owTRTJ$F5cTsm9e{i6Nu=e}u~5jU$Zhh}QoBP#?^<0+E{@tJ~^Tb3oz}hz;0w9qynfU@b zD`q>PZYH{Z=ZpHjLPK+j51l`$9ZaxX9e=DaW`<+cfl_J%--UEc#Q(8Ut-14nvQZ*G za1aYSEf1oS=GGOTYns=*_K#s$Qi8?p;|$FxOrGI0V>4O{qfH+j02Gdg%7j^c2~sA~ zK8Uv%MvL5M9j?v@1Ps7fdK4&2iJ@TiKsp$6THiTp8d*5tc&htb=eUUhwB+PoCTa*B zPwWKe$$cp!YEVS?V^6b>pLVvZcW@g7zhXJr5BxpMD5~QSBF*(d=D@7WfyC4(68buj z{(x5EmS$LF@Mkr~D=kjoeH-YyStwiAaAh0pn>(teA@8~~s<{k6C8{?p5M7YK6_?gk z&rs+lK|nGI*l@WU13JAQc}f?y^o!?-15ONn--WBK3;z8dY4HDA_3 z*+ak#oG@l@-MSv)kh-GsrD})}a&I8GP;t1^GKs9(S;O+cTqJblB}Hp`hE9wmgA07o z&DDWWafJbqd;Q8x!icVQ-03F}&Pvt4E8?*B{3eRyCb}K!6Q^s#{b}#@nl#l_X>pUP zkXF@l1IJ2V;(ZMJx&cY#dQ;E!lTX-jq@^bTU~=U(Z= zM7U+&g{rfoV}+UaZzb3wM}>lH5$`R_!{A#`O=;_)0c-thLQ4jCVtC04fhu`^6l2mI$*rf(|V~gSd!a1w8)l!0HF_@K#Q8v-4uW|RZ=?ZRlcI-hLyp> zK?vu7m7JN6ZWKarcX%N8X&@ls5rv(io)+vUnOGWj-V40&1dlvkwjyzdp##vnRsKRi z5*KTXKjR8#7l2>(l@Q?X-4FD2iNlRp&S9T}eD6euLj_Hs|#U-ZKolaysS>o)SU) zc#=`D{DKl@c%NRVn{sEg2}%3(wuB#>Rv7nBOqj?N$g;X}+EEMgEEPY^TgYhzAew%W zje&47*PF~}PQ70b%(0~P7jv1EqwW{|EYf_UsX>#Yvysg9_!fN+vj4hX)gq-Hqx?G1 zEZRaO((L)+=`ncSA=7cN9}H4sogIk|BP|R+<+0kDg)tzzNChgDzq9$WNda8gpW5_r zEOqP)Rs-Bwg!?7;O*=XF@0o6(g56o!6+UqwfUKv%pB}yle19`|fW~__)zG<(f3|+B zdkInefc0@J0vBwNV7D9~YOzK^X5kGWO;oyn*#yLarDsT^y+8&XnPm zL93U`suwDf4O>}?NbSV~lJAh?O=>jXVN*7N2t+|9nwN6!wuNTuORkv8KRvSjou_rI z75jsX4Xxx_v=Qyw?eh(LHBx~ACn@H-AUUbKZ{^4(H%zQ-k{8D6KQYGouY|8+fORcS z6@uW_Cr>peo^sRR%_Z1+OCLz^f4|$e=2TxBmp`=+o4@P7=QFg@r_CJ*(yrl%G1$JB zjXw5PG;@^!mwU>H@_EJxK+!cTBQDgzqE0EsRYQtA%%yWm@2LKjD8~UT&$0S7^mF+& zNXmD6FCRDD?s4$VTo{lCbqtp2v~=p;8qm92NeQ=bdS&7{>pUijK5lGx zfa|h%Uu*0e@Sd&n`q*wC=5Xh4yPZ0+pWYhCD`?J!-#pBiy`tb>PR}+IJN5ip@Yd)n znys=k)O{O(o3*^gv)hT|{VBt*J3CwVFz(n<%T7k2%J}ep(19AmbUnb^$IK~-Q z{cM-pSnU5>`uB0&4d>{e!`PzQzra14W0OBwgIrJxo`&Db`x;o9jpxMxjzI8vEXY|0 zz?M^b$)&$}`XYm!*t+X4*(p_KC)AFr8uhIt_e!e`ueCjJ`HOk-m^;M1@GNR=GglztiGOqJ z{0C8BR&h@^L!FQ&YFJ?ZpJKX72%=h6YiE;+;|!D?ok5`d6dm(bn?Kd<{bB<~yzqX- z7uO{&IqbWH@pewD)^rWLK%1SCW#el5#*2uyb?5k*5FNv~O({|jX&&9S`Tzb|o@8918!pNGN6ni{s)oJc;a zwR>^^)y9_(0G~wT6I2Ze7>Cd;WPLJ*5J?#coaU_9-s<*UKetN5g_+)GVTSJ2le&W>Z|GSeF$^@#ddJ8K>}0j^97_8N~bV`?nMxe*b;!58|?9)xj@8BP~+=go7l zj^PuLIbI+#MpA_S@`#y>+!T!6wro<9c8~^`V7s*lYIdrWcO5{_8u(qEcis;_o&0t4 zX3mMBo2{)GWoJK3JkKQL>8m5 z0!;5@0YT~SCd3X;#;;>Ap25ay&<#e2#C`=3kL@_J$L@vdLneL#JXTnvKirfzhL>1H zAiKoR^+=vT2DC~)jVpMQD)zP$;Ip^I3|o^&fnR&l=BS?(ut?jnO3ugy#X$&7Pre(2 z31Nl9sLR(D<(o-#Zk-+#sQP6`x9NJw$uJ-R>M)k*Do}vtl&WFEL&ZO?{1Y;(Eg26+ zGlzmAq=Oz-H2oJ6!4V+2It|_5-n4k7k0Kd$+fO2Q7ZJ;)*lS@4EmtXQe%ACVgZAU) z4a94u?TMJK%T7ORrd*Ez3uAI)6Q>9Dg6@8qtkK;pAnyUfI0B-Y0EBeUWvwkBZI5KV z+wS=@vvG0$>B*3($A=py+R}t;`M85aB<#L@6O|8|qR(TCS|&SW)zDk+7s)>((Ko5P zG%hJ%QG)hb19|l-$A2loy@?qCk%a8TSXNeG*^m&|>j%IIfqcc*n#tzE2L0P)8kV3- zU@!RY$Jigj(s}I#F!G>pvnkJ%zAYj^vm3CS8MIQ>cl-PTqIy{ih)LIOu(wXLdxuzl zLLVZJqA(t7y&{!}aJ(D8mzn%$jCvsBSULORRsTbq*n(h5ZJ zOYwn6Mp%0svcMm-B%sKwq}bxPZMH|_?9HyMgSNGd;lq#U5lsHPHiesUtEga zp49#F7*8%8+}VT+0{BhS-&2TOTo8UVlFj}#_>fw7XfFujwyHhGo5;9HuF)xqpc@mW zA3BI?i@khfy!fkgpywQgc4BG)mFzM{1L6VqB^Pj=9dhhII`Oxwyian#9^8v>0Uuon z^vOhgSi`m(&DUhqozYjBco+XxV#$r7U6gu$z?{ywFD#fyftuSimc7L+oG~!)pUJWy z*EvoPT)@oLZ&pU^Sm|Ej*|T4g!`ppOA!9ei#A= zuSOEE`#C&*Kk4@Y@eSfpUax0k&uk3Ja%%x2Hbn=>n*l`T@yPzsOWbz$2|N>6tYr_0 z#*?=eMLG&r!a4=~i8Ba8sM?Q&08*S6z-3jW=>|%{lN2t5xyw&d8_H{=^&SGjd}^jG zrZ#gr4H*@k+SR~xda}-}wYkQ;2BtXQf$ne8toTo2(@gBysFqa~E<)kzoI6ahn7C6( zJ}oRv%n#${sd3!l8Kw|Ewh9aN8w)HyMHV09*_Ec(L8$Ys`J}SP@?KU^|n5vM*lA9F6P@E{(dL`{<&8bjRQpUbX zv#sSQ3_@5v`MxPCg-PrC@xyeB*9~ZeLZKx7Yc)O&RJ`jw@(b%~p#9Px-6V^~xCzma z+p)PYdzGk)OUkH@32aPVFlB#B1*Z@5&$Dau zCeLWI9Y>ZIO7TBWl-2Xj_ue=;7jqDdw_9As!(b_Ue3%RWSp;6-xin%_dT-u*)BO<~ zG9D)a8YQ>X&%WND>&>?rb$z^8##PW61~*>Y zluD<+-#byjX5;b*M6Vnj*Ow-0)pe2sTfP$fVLCQn&m0$0(G+_^R>N(uPp9X3YrKRT zya|?yy*8P8nGmjC#`2cFzRwE#w-_d}5sx>zTMMyncmuBxdF1y-w=97PW}&cPH8GL5 zo|OI>9GP%3ADKehcLNHQSfKd(wqUF;bZVrLs03+hIdTNh4g$4QS zr21x4aR;an5GO zC)ua6mO?YLQ3u;}{Nj;loD?BsAPmOxK?*;^mWP;&B#S%7*qT*KV4MFRZI7ElyMN3D zMUbO!QOPi<>bPf;w=jG?P?)XWQu4s6h?D;N?qYtUfNy9M=s^-TJiek7d8^B)AR)ZQwz7*g-|{nmod~@_iX=5rKu; z;nqp_)(}jzH@TEeawvcwwZ8dk76i?lokP{sK!4vkbKqE0r|P)U*@??Je@BK-Qq>S* zugMo@W6Y>86p`R2f;CWBZfMPT>TfQV8%49_(R3q3Uq}c}W#Wk`)3t=s;?fr%o95ib zbb|pq4nFnD86`eWeyc&lapR~|2D>9A?Ks{r2zff7UAy zle_3Yp#T8>BfJ0Cg8T>{06_G=wO;Z6NpU47TL%NP|AHD{*4S3sltA)*)tfI@wr6_T zAajOS8+pMUuE$X!$!F-)(h72hw1_gBUyU|K9&qsebe;`mAs!Dgc7%TgNHHzx^;uk8 z+{S|2|2yoc{tyQEW7Yj@EIA-75+xmMi^XW$SD9N6iw zhtGq!g-l@^hPGPBy++nDD^6l^&BhZphG7@)gLzW0veA^gYC z8~Yw$#=S2gtKSsh7OW63i*|kpAelyzZf3uKmQWHJ!d(}_r;|=yf(Fm6et;FLitj6< zhVTwq!WKIBP=26~US9=e-HjtE`Am@NCS=SpY#}62?vz%Kj8NEZR!*LeCWgPKw~Z%# zR{p0wP0zcFhl^L^tMU=;6me2VnkyW?k>?Q+x?TPbA$TZuuY3{n=5~;rc@A(b z)IA<5rEtAXodAV15xeKUkQMgSVb;-%2C`Z(CkVojkHGYa{R$&B4J8(nm{p$<{%Z`~ z+Y+Go!}SWL`j_VtBtG}FE!IAy;)rIcF`L{tZ9E&x^$yVw13@=~uq=0QBWw6yorADp zLU@w^xPd{mN%>}|vlpqC?h*2^HyfTFlSu3jrn_@DR)wbyCmchFTfW_+*fw8}dDoNH zOfSRtnYaQLfz`ftv?Q4PtQ5d!Rz8bvlZ2uRQsFJBQllUv3l%4ISZ=EZc9G;x!6sgj zTiB56ilrW2NBKdw7NatO(ZFcxd8JcTI-MEVLwzM7z@D_37aP+FrXhv=mRr^+h5$N> z0!zGL9{e60z!MADH&Th>2{a9BjCUC<2hFqk_+xuhvwEaR{zYE9q&viWV6J;DFfF~% zQp}2)SO;55!*%gylC4fv6eBh5s#7ZGk5aX3h)(X$Yzwhf6|}|>l#92L&5VJgkmZgD zA|`XaMUKj#b~O3b{@4nFxAuD2rv!g8c)+SUcO`zN%{g~KdN`OytI6nZx9OGiwpW4% zGQ%SF9NGUM?H!v#fx4v8*eAAa+qP}nwr$(CZR5nYtrOeH%~SK~R!!AR&HHWtfmN%! zcdzcz^(;(8XKPCQclc6t$&7(;_MbEGcJSYz3=tC2R;Xo2<7|~< zr)qUOJ@Laks3hc6G+a@lIWGLN?$Fc^Ngou_uIC6H&(_a~s1%>Vs1$KL)bg!^6}S|S z+>x=sWz#kGv4)1GdlW1Wz9DGZB?EaKW3T#it8(`&A;J^~0V3&}Jj_d+$Nl`JA?#=? z+#USwQq0v;K{@5nB3i7_f#@V=H)!r_PB=O8qTmU;Zd!7sTxpQSNK0;Ppch_?0%z1E zb@9hQh((QJ?@E1K9L!^D=@*quXN7Q94o+utKpJGNRZ9$1(GPrwO~UbELZaWQA+87; zzjLbMII}HKNDPuJ=%yU#seOB<$-N&_&VRToH615xEY4QnXA|_QK3&A4@X$d#Ap=%Z z^Yu%`$-F%y`8tidj2A43CE^(~RiGW!YVgBc(OS0@{$AA~K$Y_KPz8}NI@zIqVkUc@ zOMN$#HMJI(CyPf(a4(k$_b(?7LaT79r{};(W~l`2+F6Q|ImNwy3KjaKMZ*_3w!5zI zLmq&da(Th(uW6f>D*5a(4~kav1q>{c&rvBnE9(6{rs>YAz~Vn$`n+^!Qtz zR@kPYh-WjTL69RmOB{))UVpXuIZTD@b9M4T=d>3n8IIlY*6Mq^*_< z=}judP4gOPFBhc^Wr!$N)W10?eN%7J`=~s~L;jsP>*#B|g$JI2+%jVXx;;y`72Va`56MrxJCK)Ckle|wiw88t?!bXjuKOQy$f~3e!K2n zh{ruyNpyNAk|x{*_*b@|PF>%VGk^N*%N@&H-IKRQZ;oV5h#wS&6CqPUrka6&$`E8g z=}=QYE2ARMkEfUCgw`m^|3C{xQGA@ojy6 zO)qsOSI3G;nV4DzPefHc$e8i`S~tuvRqV<1Xs&JTq06vf&r*wOGO|s2XnNXO z$leI?)(WZw-7O`?+1>>3*=T5D7&7lNVByZP-+0)JlZYw#V~ix`wPT=xQ4(izGl%(> znz<9p6yqzfsiPsKV-sl_M1*t^y!?)J{71jgY9gwXSFEf(e04~G zM7_;6bg;7SNvi>9ODM~tS3wJ-L{a*Y5ew@l8z*@5?B+@At=Kzy^Xe8kVGt!EtyT3s zs6fmxYBk0vlR0no$|4+SG=~b^c*5@dbJXnVT;|pDQL3cOMf9iVChjt__B&zZx>)_H z+U9Dm&0E60XOs*N|{9ja0#^W=3L@ zZP7+;y6UF#lSO%xmMly?K%Buz*UHJ2$7xW<;>^JG&3eh_yi3HzDWfd6V8_L)=lj~R zy+us@&_)koq>nO?Eh#}0ZrRZslPQMlMazHFsLBU+js~DA!%}o>$EfT<+Rs@}iDdUP zdXtl)@57aI!q38U^z`7r!f_(C{+?9*x>5gwk^X!16oCZ*An<=ePycn>BJXHt>|*5n zztAx?Z0t5!;lFG39E1Y+9Z|TT>Gkcm^eq-#0XInP8x63aAex0Yv5h71E7-3m{dRFA zde|K@(`wfv--BrG+()}ka}Tq?f!Xt*|0pFm_3tK90FNN+hGV2L(2tE++oops?%$p( z(R(YLOxYt#BP&(u)B9T#+^RU1`X4jJUiny)jvFY{CNKYiBU;;DfAjEiI~~p2LpkK= zu53^C9;}2BWwJh-%?#BGRt|hBv)sjMl+8s+k>tRfX78q63dCMnKC;Wjqz6ss5PMk? zR04RsFLkH8&rbNZU>O&IsuP(gIkBG)+y0iti!DPpjFe@iEUPmZXC52mCv8?RRK&)?KM+$ zs1YH!2$xhbR2WjZKaCaqc{Kbpc^ zt{N%E=O=-E%&ijCy0;HeR==In;2DjrW(185;gM32P<*jH2c2|k*Y_A{32_L_S?t(D z;|>~!%DV5yjZyYM6{W8+wxnmZ!e!8#5#b!IMTZvxLth#YA9kKVNh@{0mCzuc$|Zrh zYg50oHjn9+N|1g&htCyopYy_fy4Zit{}2E>n+Sw%)U+3lJLY|i*K1r7&YC9Yjd`|3 z9_d~pq$|F;kDdIjeC8OXpA+i$J>m!gH4ENvp1|6Z5T7TcqE3f>-@z}3b}?2ZA^X>l zz!`IPZ3mx&KUJ9kEwOAJp})5jz<$5bzRAKn2D(Uxa@xDU-QSKqdvmUk&LM$5qEGXj1qSk^)K(old@f|D$p@l* z+pFyPZ2)Xtcgh)hVk2#5UgUa<4f+8%Loh5rt$rYVz>xvb%+mO-I&I*Uc zG)l}MG2lSvm|J6P(=@+^2R6j58C%i(HGa7bfqATNchiKgh#-Cc+bXQYEoC0AaA@V- zELb4k^G9+Wqk z2kf+6!4`7LUUFLZK&QL%yM8Zp@Z0=Z(#^xF)&Vo<)0KKicH6+H1Zu3Y4j(s1T@ylE zo@*t8xETR8ij}6T&Uh;jdLOU{(aC(Fp`crP=4-C~Y8fXt>TJ7W<4&$};~rn!7VBQe zb8b>K&4V^&fsx*m6S^(X5MFSc2|a_)vK|?$ch+m3^lTLlrMRB%JT@Xb%`*dt60XKi zDXg%TS1tp-ljjr7F}9D7-(McHYgZpZh%d-tmX|F#?Y@Iv7X)B73qDH)%K(mrlQ_kk zO~Fo#F0e{q?%e4kAUN`(TGO5?5|PNu4N=zXDf+1m@kqz!0cdUNTkApPu8huQ*P2E> zqjoFk89Vl`Y|knbcBP6JgB!__#i<2P2(6q#yA*w?s%BeX`}&$5Qpz<;vlt_8f4zk* z2HMoj^!$b1!BI~ri=!|R-AN_y>SII91&~7*U-uIlk=r{W^?(a&P-DW#&r6$>cGMe> zGnWHTbh`~-pIVSMAB)uQx{NCfu2$;G&->1J?qYR^kY~3Xcj&tA%b8ZsWTiC2_6RnffQC6ids7F_h)w|MkjXL+q=5ygXEk0F-X|CyQXd&;T4zVHR|R0Z=(|l&~`uO z_sx36KO`Lgj;X!(o;%TkuR2nQT>Yx_ME8e2uAkr42o3=*k1m}3TUqg+h4|mE%G=*R zL9zdbRVn0V;bbCcVQb*%A!q+TFU%_)EvF4}RNqrIXHu2qaE7&9Zfk>~YMF4E7^5!w zjP>;}709K%8Hfm*2=<7>uPd*2!U`?6{u5RVC5p{|ljlx1ay3DUbw%Geck|)w=mR$u zBEUy6@?p^pS|X^9W3ROBqnBisH&+D!a;32-`e*3!QNA?G7v@I_?amD%3CGb4&8ztt zPt85&Y7?iJS5Tas?60HW^8@=@&b9{NIkWW_2LUWi^W*54mWSp0dBY{cl`-a0hzHU; zo=lv>{7Zk&dc?@04g6Sty;y)y+{jx7`f;+}qySy7dp<<5Mh$OlO#wooXNfQk7ePT@aiDG z9q1Z>ozQ_6MY?(6C04jNs{y7ss#U9!C9B3q8|X`$JU7}IZER&do3ZQPJChczcdII8g&;}n34^*2Bc)q_D!*L^)K8E z<1Ax1W#6Kx0QrJ}Zqk0H=;M8xrHKXX2ZT$e6kZ?M=N@beCv<13ApnD$I8~@uq_pnG z?F2OV_gYZ~`b}uE!F(9-AsT^w`FBRf%i(S!;$F;XjcJ1Uv}U3|j;FwH1c47W!hH1u zovksuxE*cUgY*9=?MU3ZL~4u`Fb#%l%TMcr*up)f7cg)eRl+lrQwCw`{Rruj z1ac7NfmC}Q!tVz*8}sgR?2uUO2Isdf&}-)l{31zgR$N|Snsg$2ZZbo@;;iwJjx)de zV&~jrwEMc};&JNYFzWE&yr=rS=kojkBQ117TglVI zT_AwG4PF$&ayFC7*?JsEmP~g=c39{p@I%|nSAw1qT#&BaHMg%-QaI!H9Zooi+!}d)qb1eEnIxY(>kyy z4dfRHe_vZU^cXe8{{lW0atVw0ZF7te(LcM^rWZKcVpk7Ty;55`#z~ zU^**|(rMKP{=_*}Z5wEj2>J^Poy@98l);(?Y_7huR9(c*AakXwnLjYoahGAQVcYA% zo?e?nMGA0QuA4zBnH0$RFE=HvZ^nH`)5%&+W2|`R;6T8R&Jb22UJQ2f>ce`a^=*ld zx)g2l91YRE(#N>DsntO{qpmLoQW=V%79byy8nbQ5(9hae!=y^$~VJ_xFM3EwqS(U6Q}0 zy{VBQf5soNL1;}-6s(I|0bK@|?OYFepLqGCs(M zS#j95_>3Yx?x7Z78M)q?6(i;q|46`q2-*?~Fv`J{bRl{_FO>DPCMooEp|>g^Aw6d> zYo8(#av;hgp7rG}c3-9wu{*;*6S9ySg?iA0bU}J9lq*1#b$50ky)ve8pfo*sEoV}} z-WJBS^f%cW^nl6+FCGZ-+&jY)K*W21>b`tBcOe|y=AJvD#PssReyFTKT_~)fJo>vV zC)t;7=U*}6FZzO}x7!*GW;v470vnJE>G!63di(CckjGj`PBonW>mEL5dyjDfn@ugY z=QbLf;wRqh)!}9C_C4Mh8deb)rWWd&(}%xN!mv^DX1=Pyu;CIpU+da?%?)>DnvDjX zp=8eH!rY6z5d&wBbfnjRT?wn^G^4T#;mY)?OSeYDt|4=@9~ z*yRUTpC#JrW3sE%Ktm-NP-+UM50iqmXwEFGPAqAp?A%SFMSvX6*K^ z{v->HZdK1S52IU$h;=HT$HjA`+h~o3)iTyzoOLC8qodO?81TjV`mGpCie=RgwLGhy z=H3bM(LLnTY?Ugj>d;s4pml>1GB3^; zZsW%NWg+voVr9?Te9u0(YY_v1?Ff10M(y7~vq#>Wsk{!!frh?I*%jN#u6maIkrK*A zH!RB1CvS>et{Go>adqv>KL^yRfK4Ly9i>3_4OW!UywwniB>t04lO)4H9R4JA3n7!s z;(!g7rgv?Z)?*eIg1qB&h_+p4?4=LfM?z{L-iEso0yd^74Vg`<>O$0=LyC~KTROu+ zSe39dlQDGtRyw;0T8n9Wxe#TAi)~v$3(LQbp|sCy)@;qsBbw7a8k>k6Ztm71^MChs z0i`R-`rWL|$JU547NdL<9?8!X)%36qX-dIe+1Oi8j@``xhb3zzjsh!=%T?S~G#dTy zfz3+`OK8O{Ty{ij%nN}n|Ljy>D0&38Z)p+_bm(>8Wt=}*d%2}Q2&`Ww0mQfP1$ zUJ4&CFlI`|OslCYLX3Ui?S4p<*ys%Rj0jT~iHK}zwS>z>zPSx!dhJCz5lgtYoqLuZ z!%zNr4gZ)XAI*YMDIJ}!l+f7!FPS;Cp0Kz)?AeK*2u9T>u$v5lyl)gh!2tS!6oswfri|QRs?6ExJ zQ|U;asmwejWf2gUEQJbovFmqX%Nv_i@ z&sHrh)}WNo@~WjEDmwibX{zqg^+;=d&NSL2EkY<=!#S`Ce*JD0^rkYr(JVeCHxL5s z>#OnKja+lG{uzU9qThNU``(RGJZEW6MBuxi{HA02hWig|I%$<2EPw$3_zySw?^#pa zuly+be_~BC2KM$Q#{VTV${091TDbquq^U&3#%_@w{ySICVS%_gEzubXFP{pf$hl~N zv(iNzm_WtWQ6dJBt1-ug4zn-EY0FrHixW(5W7zFwYujm-LjVBHsg~e`0_f{h8Y7+o z#yzkQ6h<+3Y8vQ@?(yZhUq7{M3LnEXvI2_^0zWlU7nBi{S|)zRhqE=ccgju~qicIN zAjtLO>LTd*8;ji_eNZAma4#AK!5NA3HtBs27%h^CPql|cUgJm@l~Nce20pfA!g`=H z{cCv6KSBRQ{J27T6YO$QeCM9ogw3b|D~G- zHwq$RXMcRpnv)YV4m__k>2Chbn4Ytf9Zy%5&r9ow-`Mu?4rEgPGkUu}$y>@a^+altZWz3HImGp`Y!>UZ9Fkh51bNJEFh>!wEW+>LHsTMqyv6?H; zrK1#5&d`{u;C#gdx-Z;`Vg@B;=xm)`GbU}KRq?pM{BWEqkCO-8T^~X>xZ)|~gz7ib zAG<58V@1FnTBR%wUn1+sa3+dfpmgB=angqcV&t``P@pUj0XlD6FwC|=J-+>$w>s0F0xT0Sje_v%Hb7?LsajmO9ICa zj)lb0WVOZjAHsUPoW~6;cJH-cVE-BCE!49RE?@wF{|xPaKhCwkKMB15r*ZzTLH=JR zSYYVb9kSl*^cnht!gw4uEgs}v5?|RSZZpx2(N4a6Y4&%hJ8}SkMX2u_W6A#PKkflI z=GG#nI&Gy}m9`C-gFu(umHl>AOQmA3hP6v`m07kdgRya64ZVcz`n;fhzNo#9xdY)r z(~{&h5r!6#(88oG561nrREI+QEJz%~&!i)Z9|+pCYyUHZ6^qyyZhk#vG$F(grQ~st zMhCQ0E+C36HiX4XmX%nmPWL-jfb9tUj4d+foECR~cc|!%AT|j8=}0Fd41`8-$Z$}H z+yB_#hcAUzmJ6;{AI1d2$9dXq zK@m^Aw;qvqHBxd1@RJcw*8DAl3(RM}Qs~uj01A)_72MiAm`wsWrVv-ljNs<#6c8JK zl?$|s<;G_ZaDd!D0Cf1YyuxDou@JZX{ugadF( zU@!?2D^YHr7In9F`BDJB-?E|ISSQ(s=7FbxM+W!}8s}enz!<9Y1u}4UrS(cUx31ja zSe;EdZI(t!ix?|x&n2mzDo}%^*}~;SGv@q4HQgjlF2OtW8!ZtspQJIbI8^hLYNt)L zF_98TZ6X0=m5R&_Jgw9s+E!_P8a|~cm$#C2KHyQ>=o{O|>PFZZ^rtiHBo#5zSpO13 zn-C#aWmx7?y@8qR1OXrTQF{l`gkt4PTMoi_jN|^9K6Y@Mpn?uzLDznogfhDs!aF4b zghEaF-rfARjAMkRp~^$oTtmVl#BY|-xwLx0Z%s_q$P6COxCDCqu-+~lQM|ITdr6g6 z(Kcu~r^L8%WNaspeiSXkXta{g$V(27+v)KvBi-r)Npy9Bw1{=P2k_1NQs)k)DY?xU zja0|oggtt6g_?=^Pyq{xXgb~G8F`!xq@P-lDye^hQJ&c?b1fNX|b?*8J!=RX$Q%WXZ%$66R%Nwa7_&oP?e$8mfm8D0aV6+)ihP#cRw~yZGES)LS$V{m+MwkQ>bT6qt6n-kJA#^#NgZ z?o=lcUgr%jH+N#Qpdto%R%pwHF*<*0TNvZs1W~A~7f_r{w>XL1{<_Ve6%iEm_q(X~ zp`5-KJ&qVvb=$1Mtv)sACsW5Z&_;L~D`_`zScB%qxyt;Ukn{R|{g<|CHiuvN)mng} zjVASMj3kpAeg}=)oMaU?6-XS#+6Lm1_A<;{8S8AdL{{d;wxzt<^Z6x`t5CXE#(2$I zFp45|D=VlSvTF+Dv$JyU3QU$jHJ1vLn1@Ex8J|}AL%0DiSb#-xnYu0nu2tk6($uOp zlQkNB5Ybmkh4R8XlnFXB{jxGJ0gQ{~Hv6Py=dd(rvOqQU*q3C-Gz?FLB_?!nbrQ{; zd>3p=WGwfOEFD&i3PD3wu8P?kWDf|A{#O$a#f^+&zx~}Z}8ZflX zx~q)JkZr9_LSr6yTxxs*E3S7{ZSp6Zt6zG4<=3blfdt&r1TPMD@OIdnb=)ZL>(L0c zK!)^=V%^fXWr6}ZGaQr7WpS_tF>W6^=Y!zvzbPSjtLP$3?;7E)af`COwI5P$m{UoT zg8iMyVK=r`zMhe1W@ebM6oN2a+S-*$;mw!rA->lVPCuATxj5ZRcQu^; zENVS!`kTLHOP#oGU=F~g*1Qv1iYWZ11~2uE4;CWAYxQz)^s`Sg7yF;Q!y)^&B~`!! z_-npJCSN)TmW`=RJiP)TCodEADh}>Co<1U`)>Z@R7^NB>5+Yh5GDc6I9~XBGFICL@ zb&_dv0DLZVFCyD%n^+p3agr0~FfSDQm}N{g04%$&*8W4BOot}BQd7QeZ)D;Nu}?uk zyDVgG4kzA&CY)F%In*5g46d?$UI+el)q1ZT7;Ql2v{E6xvi^IIepz5ROL^0+y$yYV zdf#1!#QKLsch_ns&?T;G{Vm@Z^4Uf7yf9cb%hW7MI!dxU?!=g?3sPEqg#;H{-K13G zBt@+Xl0$FWbf~qxkT#8~cOIpUUlULB`6_KxU*pri{{65qFe=}JO>N2jy5P6lnVf%$Wq(Kf|FX=q>ELyyWG3WS%W>C}GnIrwRm93K zc9L1l_;3Lu=sR23y(?3eD{;k94uqZ@L<#*0x?PY6{#5F*2ongC<4CFy6Gb?{)z$p) zh&i0@1fTq%H){>Xp=NF@>JNQ{_kjB>RxR#mmX-!{oJn->6|@I<8STLZK4ezD#?n$^ zJEzW;avaMRR=a`;e9l8O;bSzO=B-K806Q{gT@JonJkN@je5oDr51u&s3Yeno1ksYr z-8n%o#N{Jo7!SKkFi~3%8sm7_-)no6BKvT#*P|dI^+%Ps(N05p4z**DMQrX>|Q(!&wjjJwp{4>og)i&RnN0~f$ zz~LJk2)~!;51;*ctfbk_I@kb~HcHf9-+$m0EPP1N;xDxN4~Y8j;Z;5A|65j=u!Vt{ zovnfO|Js%@t-fowAr9~RqQ{_E5>C8yM7TYKAxTGK5t&SiP~g_%B@m^dPqk@vwLxH! z{PShnZDoXoq{w0u2OjO_=Iiq?9qmvCd{{C^j|K?d{a2a<|J0romD>_Hh@U!jJaUl@ z1{RKB-vGNl`0%eXgUgLGCw&@}9nlPOz5am1_K3*_#@MT_Nn_0bFE$>|*WLT;S=;V@ z_OA!^w^Z4CVgch3wSA8^GK5d07{uwc(hkK$c4tia4LfCqy*rJPILw9fYw!yM5pq1S z$cu6b8DQHxSx*F>KCw@>EZ}xu@RfT3+g69&HBK9ShCvuFhg!InPJe`1m@yz@E&_3p zd7nwK0dX90R=s}XHcooL3}MV-5JZ;{mO8*Baagwu33IVlISTgQWqwQS1$*5vccw$I zo4cKM4U+XbOBn+TPQwVz7rS4D@ z5)DNvU%PJyE9DyXT1R|P5_@sJSlH40k_sN4^+H4Xv?k3q=+WM3X&>!q}V+Y9Gt4)tqg+03&m?E z{t-5T7N$hvpZir3U69>_g=lf(i_54tsbak4x?3f|@V%K1ev5=LyQazj3T9WlQ0#~6E)z^h=~lu*Zg$wX1^7AuwzAbE zB%dS#KN~^|w8@Mp*JY2(gU%$SqO`5iZ08}F(D76C7>ANSBkvW*$NcwiTbBjk87B-{ zk2ux*2lWBYiB0Z?``NczsKvn|s}}U04ND|SM4d#(E31v)e|&hn%G1urgyr6{O9Twr z-memKT@gm76BS@cw=PTL{N3TRzMGh0cghc#G+(;4U-U2vV8n?w-0|u|cCf~m#RxCB z61r`~liM;%dW9rNh?b&UMWI-2k~M`O#}-%)tXbnZ1K4f}bnM^PL#N2JEnMsWkg>}X zT2i>5K;U-y!}#!he%@7=I?b9BvexK)<@JN#)Q2-NUmH$Un(xU)W$GsqwSlj(z9fJV zuMO_jYW`dC%}U+&_wDqMuKDtDcQ59AZwaPlX#aa{N9=5BSFK)bRN*nZrx;s6A#^r1 zqC`PiHe@xnF{|(16vUUk-v>5}mhW9(+FhxzBXjSbTl~`$Hui8TT36a+fNN8LRw)Uu z$NM08PNltJn6HPme-TePxlNjaB9d!{4dgUlT1z3}I0~1(BHyB%Y~3W0T$reF;a}N3 zeJ#sx0Egrq>SmLicgGd~`dR&q^N@XD)3DPhXv;o70x0db8QGTeDM6O~`g?E+@RnE- z1)|+#RUEBSjHJ^@_rcABtD}=E7n+7PG|3c&FApHjNAJM9hoq5MN!}I~=Q5q^m5Xu- zv|dpUl$&p!z;ETxXpWn!&o;)2fg;+k8=$=j)?k4A3{?-qin|10hvKGQ$zrXAVi3Fx zm~|*F`r}CQlpzc9on{`~VEA`Cnf?_aW)j}Es;G0&_W06NsC;x`T62o+IUVgE9afLY zN7H&!lwTRZ`ylF8ah3OC%}kyk?*XP#Jm^9dr_Lhx(i?j~n@d%Dkz8T`jM3*PH!1<$ z#48t{?)Cydn2OYz1w|^$UYZ6!>sBb31=e2FqoeluceH6H8sNE&Wr65Y>zpGbI(=ql z`TF{0Hen$fH&@p21|A!qQ@zEStAzl={_w06Uz@^7C65t}4TA~X@?$doW=TJ;rSjgS zK8>#8tuhX?huY+75^IXKPu?`Q<&8vs>&!5e)(ijNlhu8KN^k$6p~eN<>n*?@?5dC? zsX^sb1M4Zl@v05<8f8@#(#<-QH`0CIC1;-#;}XJ6Rt+19-YM(p$~O`-DhlGQ+yMGN zOJeU$Lq!t;)5LB~pHkWsFv9+)@`=4dJZB4CTvmo;C(K9=LfUK=H7xXjznnXRRloqfB7W?_i z^+>+SL@8MWn8b19=Sz-|Vx#qXL{_QJMw&V?-0Tw<+PX#CzBM89FyX#`9#bjI7<%k* zx|xiAeE8k4w*5PFn3k5lJEv6ozB|3Lv<~PM>#*WJtLuLj+l1VDE zQTqXAY7?z5|%A3#G;9_98`vMXG4(CF<&Y?YLevD&(q8zXgJ5#TBmGndvslq zGmkrAr;@Xq3;-xhra-367|b%%K-eIY7Ai0n5{_E;Bq^Wir;jqIiQiJmWs zFM!Nq{gGkTBP|#zb;%~BG!=m-_e zJU)-7s?5ol+RLPZSYbH8oAVYK6SA)Pt=?NKTm(jkf$evO7ME zdTVjPq%F-(IzXnmAVJVeJJc}hsAZpZvFm7NHVlQbzk+~d465NOli(q6E#~}T0^E8@ zbd^e>IBd+^Po$Nk%_;w?Sw75Xe40Q86%nH8WuEX)VR)GX?qZ4tQxuVl@-Ku`D|a&F zAgW2{w2InB0UuEoWJbCT-6yIE!2og_wG}3rpxL^!T^IDC4(HY2%1W|zZv($rS4+8%3Ts{E zvWwX9Z)4k^Enw(O(Zo@QyitS3{-9{N)aX8H=AJ(%eiV1rHDhoJos`}$Zg|Xf^)La9 ztF;_>mYwc`s1Xa;iPVgi$>7xQFMAWu#22OZ8^|b1&$pJ#>utTdd-)THyB>By;Bf&m zmO&Xf=iLf;=DPe1q6`MjaC;ZQF;5SLJh%`_TNia*t9_@qdTw=`y34hTOO@pY*7RtW zxohmsc-J{$;Y4vP5e6gU>g?5^Phmb>H!Gnd%TA0_cs9G`vbW_ULS+vuLGB4oSbqlS z`9lkAj9VqyXvBR`+&ome;aoVeV4tYCJM2!q&8GV^=R}&+Kb&t%%kMssZVK`f0z054!)HF|{EYH)I zg`t1{*gRFcso^7_eB$(RAxAd-tH>3aYXcX&w9=BwDjubH*iuWa%hvw1IHKy1FuO< z?kZkjATXQWI0-{fyGFL(B7G75!zpalWXp+$(!s1LE)K4=0_FO52cm zS|3_ktby;dFH~?>H(vs`Fm58!qgdaQ{eJ&J3a#zSiIKk%*Z;u-|29izYd0!8QnI&|6tS!ub57x0U}PZhd9`!8A-%FDV{ZM3xPpBJ$~IB zYnwk@-um2ua8$UX-V>?>kEiT&8EC*i$PLKVOi5y>38s$O)yDk@7GwK9glWU|nlg3n z@dBy*t$Sm++LVa?y1XQMBFGGyejS;jg#Jtjx9Se<*Zl%!b-+Uyk?8nIBZ-qt?FLW> z#6j}q(vjzshXe)f2v}HTq!LmV$sUG zdRXkm#X|+ae}F*|&wAe0yciRLb&))&6N0Aj0>(F^9#|KUvM+=hY9Hd+V4Rq?1HSbc zezQxWS=%7GK#J>Iul2T`>lp6K45kv{3F$%oe5X?0w{PK`kxev-l;uQ_@^x?bTdG%8$h6`cGT_k+9Vyn4hbPpdqg*Wn6gT<4{~0xWniiuh)rN2mri;L#9$XL~#I9EbV8CVraWOscX(o6gX_C`Cmn)b%Smg^~QBC%d6hEO_;{Y%0& zp{*gdILh^V`;-T|?oqmgfvsqLtxK-o&!&AX7btc$sKZqycDoOEsscsLarhtMzS5=$ zBmlpWPSN)z4{cInTL?b$8_Q#$WnU87Tbs?oe4H+ zOubnj?A76kbgN{l(HY63GH@M&=a7O0rTnW9jOf(JToBQTZ^HQeFrD{J18B178xm@b zGxdiIxCS&3MaE;oPt|+f@zsfY3o#O3X<$(9q;sY0ZwiTDL&93M1{9)$+Jq0L5rnxv zq6&EvWh#1DqYjS1(nSM;=K+|krI`wgu%xF1&>sQ8Kq;KS6D00L#Cklo7?9$NMYAHs zZBnnsdzEO(z`M9?wkKZED8}=%CH$hzg=A$Lnxw8=cLp(>dXX4h-_Xv5851ga_eDrv z{!Ae1pg@~*yFG#%ffKR%fjJBQvlW_Z`!I$0Q|QN5xiuam|JhWq!>0H#sgfMQd;sp7 z_`GU7g>zdTL#K{HM`S%oH+8K)+>{a>!6kF`wmF_jd%wP!*T_f1HO8lv^Q3x8f|W4{ zgta}XY1Fbl%-!mwUPqw@;49^`t9F)~2lPN^Q>` zT~lIgI&_Hwlg3#T?YWwfL%ECtOpN^v$p}&%PFRdIC~JuTR8lb)<;TpEGBa6P))eOn z71!oeX>+^LxWij^7_ta4co_(lR4&NGa`v_G9h0|S5-sa`Y$8M4_hb>~&D=60-^qb@ ztu-;w&FXsB;%nmMYg>ox| zM$+7$55dR^@mI*g_J=z6nmD9DyKHXOqHChK9+ubc+HzR$b|@)(>msZ zO@%q%zk|jZbRsH*KZr)z)q?f`ilhmtgRyDvuE}T95Y;L>N5ycm++y29lU%*jdZpke z*V$Jy+hH(faF7z|C{8f5f%y)b?vm{~w9ksNgDSWk=HN)|Nbs;M0+`j~|mPWlew zuRH$@8+zJvp>@~a8BK09OZG5?rOoei^hEY&v#oR{zjE@()`F9xSzW( zD>q)d;~`;DCs(I+bD{&S!fY;@ot_-mJE~xH&8{cDq%&NEweA?(m2g3~#!H;UixXzUq#w7oa4@TQKYV- z9+|~I--U)&np5_~YtNTLbSd?xcp?C*;Ow=(_@+Tg^?mLWmJhMx@TC z#sURwQG=XE`rZ80i6D|o$18u9MYym~IlH=JTyYBosdDTR6;?*cT~sfX802tPWdq~s zFKM`Q+R?&`j(5uJzY;-l<66f#VLs-ZSYd=%<~>>%M6AC&;56BWM#`5JdDx~y>j#R2NtDUC~ea1EQ_Wc^$8-|)vJht5|i-dJNRL% z2xzdccr7>_b3~J`RXx-HX`9_ftx5E$SEx3MRx&OTx5W;%&8fFZr_K7>H%dor)@;>9 z*$<#=$7@WNsp7_n^|FR5v-ec=)9)AVgF}>XCgWH^0|5L7XnSiSqj@nDwZeXGxZDz-BV$E%C-7&KbMD zYYd)*e*a_Qtfonmx$?5Evfb@OtUu_|HgJDihXDCbrQh-Y&b5$j)c^vI=1PBY{Rj1* z<_(-SbqsmOvV|s&i2d;pi{Y!G+ziFkiQN^2d4HvpwMGI(VKfrQur#gyue+t~c*}5M<+mqvPBsIgm zlSMl{fZKFHzv_bujkOubuyI&DwATt-eH!9?{OisM{T9`xoil**(2v3!Z9SXzOn>_p zF8`}TA{z*DEbobe=rf=V&zZ6MwqvKmDedO5VZ~&S>YzC;@Mr%iUMW|j^m<;yaY(kl z(RmrX)N`r*(0S)9R9O)2&?O%kG&3(ou2 zn_xY7i2BwWeSwnJLX*5P9R1t}3_NCH2+Npsq~fZOR{I3LDWRwNb0ixHBHPho_g(>u zI?SV7V+57aeTw_L)Eu~R>;EI|oq|M(+AYDdZQHhO+qQYicAc_q+qP}nws}fZfA{o5 zN8IR{==+fQk`eioU+%TnUT94lG>K+dJU-rP4Y^z6_gx?`!|S^`Y!~ibj>_@2%6Y5M6${m5SO%g&r+1L`=(%u{XDpEN}yE4hlR)@>jFMa?s z3RyzLh7^E^RYPR1S=r^X5vnAtl$O|-E&+Rk3HNcKf##33#aE|qJH@A$aBPWvn}Z1Z zSiXP@iFvV<6`oO&NnoWe>`Wr2n?;?Qf9TJc&UvNwMQ=DnRz8aY#rbO)=wEgq`9R*&_;cEeFRsPNJb{Th&@Kn0Ea}2zZd}H}}c#N0Sft3kI1=7}RxQt4c6_pJb8jAjqUR=BsnkUuv>$)zz zQM7I)7SCo+*j#B9GLL38IMmkP8hZcE$Y{k5cYl2_ECPDRx(cOo1A1@>SAgF28<7YDyp7fHxGf&^!oGZBe2cjJruiK1wH-u=V#F#5 z6qjnDIPWP^H`*c4wV?<3wX20!2VtP}y{CJ$Ow)*_fQYR%riULewwy%cx#G0cu#%z<{Wla?^*{k53PW zur)~uppUPMoD60bolu-&8G92YT_mgK!oHkIaVt509=iNfu9=C0RZo}w8Rv}O3t!+Z zKXk|?3A@=iuLBdqN~eCHu?Sn|PrL;iQz?`IwMZ8*z;txzKFBa$7kWPjrYtcv(IPmq<-722+ zNa8aTi7Y=F1>y!Ww@`PCuiH0koj9udVHtsOw}R&WFmC_8Zl3!vp!PAe_ANjZqf~u{ zf786lBtndOW=6AC@OAXuc3h?#XQq$;0_JpYveVOnpLm!%Jn${?mY8JdWSn{F`~$-f zL$QCAq#UWR&{kCq&e%FzIwwU)VB)=fr zm8pW1guIt|&RH4O(?M5aTo$Hk31O9(!ZdrSM`5N3Lwgs3h*~XGR1Na4mD^W)R#%-k z+^p{g9i-y4F%g%vY2;m06g7`(Tvu7OKnQy6?pgnGciFyv^-4uIliw5`<@soKddauW z=mxCTb>l8QIUZh@ts1huW+(h2XO?j(#{y-xFH|Wou2GK-xJ!+Yu?^DLEZ~(;W%Qda zu>IR_DJab(tiUeliNdqmS<;nlH~D3vaC?pXk({|s-?X0 zSeA-pGBFp4Ic)zyKmn>+C>h#Qaf}g_F6^c#ud%4OlF2lx2(P(J`=>CSGD*x@g^iij z3!+ZG1S)eJwBeFtU|@_#Nqa%(q_{ePb0WBua%@gugyx**L_X z+${xp5paLz8QZ2{>79UIB};L~Uj zaPXB`$K9oatEg87ImbHVE~xpVvotJwCwa@^#g@jy~Hu zKe$KkRO{1GP)2K<(r`M0-+H?umrlPBq7F$cr5~Q`Y7D*CaOH=dBPeq%$aBP>#mp6Q==KeBV zWOb;v)F8&@Vzi;`A!8J`U{$@P21$}1tGmZo+6zM8;6$UE_G{6K6bEkcI`GHw3;#b5 z5*<4v?)Ov=;6Fg|zlM;W%m4t&|5p%F*#4J0{^M%sZ0TzHKiTB}?cDkQ2e8!s_@$GP zzIFXT;X$D|=hr3C!M8SQZZ~u`nB(lA$+eqWH87fFH=|7Fr4>C`GJn2$2%jIQT@JdS zXy!JM{$^p$cxU~sTC%z_p)qDl$~Sn+akNdtY7pi`Qtab^KDMx#0rhDJ+SWB2az^_@ zEO2I7L*K0x4Vye-OVVb>g990*&M1=v%-Xr+TJ5J`So`ww{r;-%_3>kH+YYh*AtDlg zc5l*`K@6iJ{@&MXT0~k4=R$32lFXwPegn;b3-Ka%PDzPF-mN^(K1E?R0(5b1DTAGt z34f6ZBP@5xPui{UvL1gGNr84%HKC{aT2aM2g!ZApr2lXpmi?F}I#Cx86`j&O6b4w& zk!lvjSzZtHqDopdOI+d^D(x*A=r}ksGIi0su@qiI#aj_z4!dBbI_pLFcV3{c>-zO? zuQNQ~_aE=I_s^4}ulKvR#mpJUfA8gw_x!zhSL#0GHjvC{hak}*n zX;B8bVSleC9+|}1rjKRjP+VDJfKzr|PHsiAf=@tNY3bRv`cllL;0(CalyeRDWSj{_ zM&DOuDg_tVbs;(VrkP3hNuk5*J8$Q@OFjbm!9c(~r9x=butw|?A&6Cn^co4_jTP@} zc+6agwNJRL7**#2{~96(YCUr)UOXT2!3W5|v{#O}t+=MFy0YnMr&-2_jA{CV@39;s z13p;^&ViB!yAkEb9qw%xU!z!oCW$X95Z6B!=IjCHESywS+1^`ZU>wh3pY7&MhxXa8$6Ng zUTVS48XrX+V!R6NCvpRi)Lps@?M_kQ)OD+bY~D@CV%9O^kp-vNu4#VwheUye!3|YS zLH`&rm#vl>VL=~if4v4`lqd*yR!+dl)@rmuE&Lr6MDst25{`;f%+}*fXAlc*Hpx!F zr4z9^N&=$cbmAou!jxJ{w?0eM9?`wDbLz=jFmsQ4m)UjO&aP zpQ3phg-=GuCG4qfR`nJveBGIHVLAxb`%Yr8+H0Xmzr{azWXRu#glb8(^7$CbrC3i>dqqxdMAzx;SZQ1F()Ll#l`fQ+MN_^1=Yi`uMvVep>v%w>9Wn`; z`FKF6U8q~8!&yQjWhNqOknTYenp7 z8eAt0@}k8H_Liu#X36!9Q4>bnOf5*lr4(Q%G}0E*t0cFE#L{C9h*9EL2{og?-g(x5 zqvd~JAB#^It&I1Y4SX#MEGW*ts#eie*-%HR zeoRFxZ=l253YrR^Ex4-4h0-CP-K+5VK~V(aD4cD|&-|D}N?c_}+FbazBbHZ_W{3B(;mAszdh#Huhr z9c{tW9G^*erq|#u1q$_ss$;^ru_m>Z;xi^sg&Dnmi6-qZx{e=yB~SBcR1GV3isUQ< zotzPn+%g$P>YNbvVJ;!d=2R595zoxHEWL%6+a@rDuSD+8rK7V~G0mY*v`wno;cQr?X-s3GvW|_cEeKpHp-R(xf z8xE~ptF2#fP;#COW!-?v2(l$$d#$b$FR1p=$VKv1(x?@IzROGhIDdG;?6g?kzF$|x zOD9S*-Xo1ztN`7EvBqXIGVMM*Lvk&{26^1X+U{vxx2?37mFpOkqkZ+|Ic;|S$R&Gh zv7zA60rj!**k!G~4k$m_z2@_39w6So`=T{kqxxnc4?7S#uam(s?RP807oqRE^bYP@ z@uY1@b)`?!Y3ky`c5LN8g~`{n z=Pj!haUGbrI7HCW5bao(-trPkeT`1FS~IU^mE9X4CHKq2N2`a|@I`}j8A$u&w89{c zN>sW+u05wKoI7`tcPL}S8IlY87Uwa`TJ?sL@$~ipaL7jsh^mGu)N3cToE;z70!hr9 z-EG|@ubOqe+3gFazz^?dMdW8RV(QSnGA`=bEo#&)flSGg^uEbwtAiX6TBVN=RO+|O z5Aw4W{EwusLAJJp&AVKF-~0HuJZSR$x;vY~6k=QOxOm9He2M~(rxt|}Px_!Bqqhh} z%3do}gkZ%oJmByavOM%Kc$vETX)So45GJr@aeTi4F$@nUL<)AH4Zk&3VUtH!yP_3u z?f2=;b=c#!Tjb_P-(pGfB~cE;6O8c$76-4OXJ_Q&ZO+aO5v{yE>AeZuR?4Eb(;fGtFw~XMM_WIk=&eA#VExoS2 ztQ}IcV?L9&J8^pdyw+V{m`x8dJ01wPf|0MsMjgNMrR9fC%vL#QGnE z{yP!r47B)}8hF$*P=O2YI?uKG{2y?2{M+^%?l*M$KcMu#hN~05ZQuVL8>FhUrOp3~ zOilL+j6wGQ=jGxK4FCvo_Upj>AGhV-%*0=D{`ZYOqg6447Cwn0zY58I41i=j1Ob8S zjmo&z6|9YkSG6uTz3k(zz3Z18451I_a{3T;%Mu6Isc}3W<1DDqB7zA zC}??1n!;h&W?=}yorAg4A37u4mFUcl{bXZ|CWqqYK+df0%Ucex0=Xo(= z=HzjNn=p{vzk3XrP%U9X7ZhRKXf+CCkSUOUj}SHo!1}?#`>FB)!F5oBdCNAx#CTAo zDKcZ`*oqCth_>rBH_9M4$8BuYdJ%K>GyQ2${`0tdGPyUNWHI?sHoou?0m4 z%f+)i{p@O!SLrFF&~=4fS8+|zCdnR@srO%9>|`~Kp!w2oXNFd;#`QgK=Xw0;>iZ)8 z>#5O2tym~mX|CZaIIR*GBT3%5O8B(l<`k(AdwLls+f0S_yB@~5^s4V+SNp5Db^hIdewUT zLieSs+R1L+q3mW}gkz0%=4 zU^C;#=MHnCNgjTlE9WnfJaJ(M;FKMirm!fi2Xzei)_9|H3j9}VY{`FwgsK?$%5ss{ zdigo1!rlA!=Y`+YVAX;#jO*87?hVnyq^_s-Vj=3|k2b~7W1=E#8qK(1 zWn`_h+f67@|3ZR7%3w4U0n>QCuKf+P1=u7-iu5oP!~b%A+5wJW_*hLCI?Hu@-#<7l z)Q=;`lUomhN@%l=sU;KXF_F&Y%D7{~cwkjFU+TW$V8`j?XZBP#eRLp&evwsgfGy4? z(us{HeGTVE+zP*{gQ9D#(S^$>@k8|+NBnYwzO`d;I+@SeK==emSWy?KZ5Z z{il3s>s6sUA#LQM7T{uTYWeiUOn5iBzN#o21@0ricHtX(P!DcS5 zKbHlp97#$P%Vmoav*Baz4tmgbRyzE1X8L}Bq@ab6WS0j|SB)g)xXn3(h6%F_+P?p$ z0%U33Ol+);)6l<-22SgI_c016ep$>>27KJc9wYCRpv1$3w0dX-e!RC6L72d$U{sZ6 z@8OxDDWy$np3%y0Snzo&2$JV}w15AreW}1GyOyXfx!#msJWUFDPE0(&{!Bkcn^|V* zx@+>$IJiiHmzH|RJ#Y7M{Z^1tTko}d2mJ0aFf-FpohZUAyzpdt=euf(fm*&bnC2qN$O@_o_v>*j5L4UuJ}Z! zDj`|HGxfn%6IC8w9@)m-ubx)M5$lr14lCukn!wds)MjYZ;(`xhoo{E-0PL9stR65H zX*%C+uFkoBtdN6Tj61Kxa6nHyRk|LLSD&`3WNY@@cdA9}B6&*RpC4(#DI{&}f+A5v zx1&PT#TiJRJa!!Y$CoX_Qg6B;CT`)Ve`;cAA-aq-IgUpzX*seTElT?RF1ZOzMt8qOL!1c0#QSDYor(iNr^#`|8la5vaYRKqZ3UY%gQVDI zP_bw~eNRt_+S-M5wQB68$@dsGGilQB&haNhHkE0ns-a6yiBN=H=;D>$%I*A@zA;aNWhC|){iv$PeCA9Ci}dF zdFy`Z{i0xb-wG}iF9OeyloT%ONU_PBFBzj6v}MClX~#(Dc`H5)!VFu1m9lfxa4_Ao>uK|htpG;>91PI;Y7R`N1iYFG~z|7H}*Tak^QjfJHOaAX!7_k_x z@c~q;9W~G3fLSe@w=wdYuYTVf7a&BPd{T}A`K zH&P?&bwa>Oni3)PT2oZg<%JrMoqJhgRS3T2P)JF6W@w$hdSkn zp73}8?JLSGp-s=tTA2K2t@~$T$`9MG{TVKTvI>}lr!=)H38M&V26Q)+Aq93W2+rw_ z%)k~*zMWt>C&k)R)J;;iU=_poOjo7YL+}?^Zl9lsm!9C0kFMw`yu&%?kZzAbbWK{5 z{*4)3yc1nlOXpE<1Q&?r95^6;Z<{y!36i)6W!qkZaCXoZ*{k_uiXAsOLAJ%kk*?jN zJ~guJRKa#6X}+}82E)Sc5v!fQ0qduDFD=g8B_((-Uf)*V+Hdp?S}TV=48W>MRq^Gv z&upG61FXhu$~nR4)@XtxJiDwZzKpW-2V%GN%f1Lg!08)51Qo3g(-iDaS!>xZX5&9s zQ}8|cZ|>a+SbB{o&4KJqC%YB14}3uS1tiLEhjfS9@rv>7cRiiA?Eje=GVNaCQXl|; z|4hbzJu`2{|Gk+JvavU|{{P0K*SOYBn`{rAzMva3Z)FlGM>70d5-B%0qLRF+Yj~66 zO{-=cO(5%0q)Ng{u30RvoA&7TaRj966UJQ6f7eL-hkNQf0n%JEb#(qxriVC5?Y%Nd zFd@y3QT!I&C4!jX>FJugq5O~ziUpZC*JpuahJ;R%NZeRov!xG1@`$lWNHFvk-1UIg z)|+C`-y*ZEV6TiX%AMwZ$a919C#C{sC#F(ki9RuD$d2!$c3J3_qyNAalE7#+nh*dm zl8oL{r7Hk%6(5Oa(ID(QyS(SfF(nL>be8z*HAut*c)R2J!JIw`LFK@yaQW_1&}2}%`k5HB)JC*1u>o~I0KgKo4wBTic;=^dtKf+RxH zHxq>DC6Wq^(lK9e*tDa6TdL-0w*sDGn_973w&D+Iw2%tu9;Fv2|9-nV^X7TT?dHP$ z9{nkPL2d#--;Qpk(3o?^1o)C+J5q*?$Eu}Mo*-chKdlr6X(A^Hzg@^cSu%9(E#gS~ z?2w_`yCs7xjN-{0P0VyUv*3X{^x!I!JrT@!KpzD-P=H$`Ryj3Gsj_f_kxE<;jEJ)ULV;eam zunlaRjtw!_*k86Q-yEicH_0;mu*6k?QQV%n39x8HonD>-x? z)$7KU+|gM&aSC3Lm4EF?v%>x5WWDk*-_QFGBbT2e3yufWpY9RQzlffI)m%9S*Ld%B zG8so0`-yck{|XvtK0$>SgHAk=@r=bh!1%@*;~oY&=HasLQDQlozb{C@V31EXVW@O`HTIt`0t*j!45UmhZw z7GRoa^4F=tZ9tjtEVjWOQA55nR?z;=5$CQ>fz()h$pDp{ZMsZHGuM}MtWm^#ODAds zoH#?rOFXZxh$BkH4Tm?~0b-7;Zza4-T#^Dd-Gz`NR!!Og{XHYrFdg-kETrsWaq(x# zdJ0pl)ARH``sm@T5Z}QEs=~8m*^&OW|0fqV#(}y4U7G%ZIlM=OWR}m{CAkgoG7QZd zkQpSpgCUU+2{u{6-i&Db97!~QgZ>~XX-qF=DK8hjP6!3Ck-!umXjRpA_IraSj% z1(*_Qg=^CExqPlxFk5NjEK#LkQjpcoUhf2oIL4rAMX5Kn1knpFvBVG;ZH!NoY(#db zAV`X7{@M+l5s(@I1o@oBBETJNXphJgND|&G)}MI4!sQ||Zda4GBjiYbr_2_nAG~$$ z-0ScT4VgVaB1H!_jFi6O71ti@fh8d8$x`OedSCQPe6@n@9>pq6cG>4|d zCT-d9zR75qf6f{G)BBvlpW+I z_yB37rs)8c(P2yhT0gYKk?RKpQ|yRZjH|XW^3=EhIw>Du(VbWE=Pqp=Ea-#tfXIz( zSkBc2vKsuhNno6Vi-%HndWu{(I%iyODbZQc)1|#ep*HVHs(|MKWqmdfk*1~>fs28t z+hIQQgL;~^e1Q*hsX0Fi-O^RgLcmO|qoRsFSYBpTfVqH-;0bZCLL^rr;!0fN_ZjLe zX4c{EHwiU+VzosD!bLTQR;(9ed!Ui-`gd#g>c(5-4=AEZK?vC{uO=DDHDc2kcZ3A} z7uL+0Lt~r~z+rQGR+o6h&D(d#JQsO^So=Fqb_)!l$Ot2A=pKm1XZi`#S-nv`(VopA z+4CG!l+}tj>@g_4p(59Ms+P_p3 zrL)O#)K)oXGu*6uOrcLc%^*5uv4Ws)=hS|f%!Sg1Z!~G86Ud>=@K*+T9E9OtMROpE zq)Cb(F%(+;`ctzc&K(&BY~3)))Qm_C1=eVGKnus*BV@xi?27^hp#!XQTFuY|BLi`C z{?vSSgcfl!^O(jN1-*rk{!B3ubU^flK@WhJCD59P5|D+KGO5-JP7~)s%PlE9Nu41* zN>GAA9^f+q<55KANWZ-`hcKcEFgz>H3hpT5>}yxB zHRhQFam307iaQp@iYERc{sRIpz~;fO_06l5OhlUii=77N;pbC&s5KzUgyU7Sf5O3U zl^lrn%%rj^Uutq;W+CLrBLZAC+S6+dXYwhf@ojqJY}tUMFr)D;X?$|$K5(M6;E`+$HKrK+9V@hohQk{gypkDLC`qRB1OJWFt@RPd_n z@w2bMtNyKarsKZ1FZTYlx~b0i>tf5yRdQ@YGUYAGsqL6>$=Jt*cwes99jlzvh;J&a z_ELzxKTsbbJd3}gl^5NbHi_6DXfmC*+t}=sh`|9*IE(hZc`h~OXrc)_wsqcq?&f)P zGN-9y$6~kTJC*@6_GDj`5uI#~uN5A*LQ02!TViK|-oj{4mI+(D*d}pomBtGt!7jHl5jkg4@_$(0<&tE=N!%)Z1pHRwe`q9AMr@ zBqsqHD_xKxBSAV= z1_RbB(X~2js=hNPz2BJ92~KUC&H>S^cX!+=0ecW{7l6N%bn}G{yQQ_?@r-?|@#iD0 zA2tYIPC7yTjDbWI7J}t)|9GeN~E3G_7 zfu+oRjRms%aY2`1LG9Yb2MHyf9(#9(VLO-;>_#byhQ8hzl}xD{+xV5Bh~ z;EjjxP(D@yH(^?bRT$;!PWZff{9gS#vI^P@TCQ3`_=yx*Fgqrvy_2C{RRP@x+Dn`L zo>zL^;lZKB`51@Q@i^*_4q+2>o>L}04W=Bf9=#ntS5SXPHO7S<-Zs^G@~deQ@6e`# zB|8k59t6S#4aeV+eV&Gl^z2g&F1H#suYH~eXJ`}n-M!-)d?NXQ6i>HDm2BFP;4 zvQrsmF+s25e1`#kAxnj~gjIKmFbTSZeDX+!5kO>Q58~w*Cv3@wBTKLTtY{5d=G~t# zUbhj2czLRp6ycv9_fG3(8P@#f>9w>BZ=A<$+(%e$@Bq$^JsN%-DgoBq$2^TMvr|D> zG;Pw4W`4CEgHw@dqZVU>&ofI0={D+xy)6|g-TBWxh#z{p7=5w$qV$vH@WXf0qzh}S zm73*CQqUJ821uk5_bsNl(M5NM;dSw{3Q2}!0oZhP>oKub`^+x1sip&(uru$@%Qnxg z7`kJuusFfRFqXo#RdOXCOq%1F6MN_0m8^n?F>kzka6QYfjL|(>Dp%j+bV2cK+&`n> z5C`oxX6xfnxWNphbK;-RZI|s6H0V844T$pNO}qSMiQT;SV4|D1)Jk{re1v^db9`*G zlMnBfbui|#h5iS|a29soLD41iAzXyr98O%uFt3a+?XD=v4s{<_ zB1?xP&!RT~6!RN4iM5v<$WSBmlDgn?HqBn;uVU;YlH%;6#{m5q6+|73t(r$PQLgAC zut^hCyPdoGi&3dg6JM0mwucm4LZ4Kb7O^9h!K&W5Hq3CSj(xVBfzOG)xj11KfkFD% zk|>sC!8C5WT>7rcchK`6q+wrjwT$STZRg)|@sil~7b@=A&7Ew=e4}eAmaXYH=8|Eh z9v&KH!jOoq4+`P*I47-uEfBciIy**qJp!1>)dd9Yug{~XEl@<$2ucN^h?`B6u;z1> z|Biyp(lsQKt#{^iuV`BeCx8(bSwM4ug(>m*lnG-hG9bC^d6ff_0?JplgQ)ko8C1V+ zFV8zWa%LiWGI#Fyq-yYz!l2~$TKpiLtG~3>)^bOdqDy%EFU(D-8eHD&xVjz5(!F ze?lTt3D$G2_>f-9vkak+_V(cQ=Mrjwz^*+n@c#@+qe$27BqgK{627-TJ5>ThPg-Hh zjqApVSd{XYR8~@l0p3A78$7JC6jMSbxPw~H?d-%>C#;3)!grdo(->t@N=RZIE<^jy zqt-h3XMoOs5y@FVB5>aVC-^zcS7ERn1z0lRj!@#^t&|Xi)^Fs@i;tMnpY*F*Nd&?spl8*}2{b3K!W0<|(ey36t2^Y-Ae*z{H1jMVDEa)S zuPv{bC-GGN8Me>?PtcY$@|}k4J3>jHJwPCv+|CBg7|$yxyzcrVtPXS|;MR_?rcH%L z9ECby0{Qq_qooH|ZS+M~IuRlMFAAx%!rEJGz^7#1 zTUt`pCJl9_e8Nu1+=Xn(<=2BKj$T*9sl^+uM&NgC17k91$AFAOjt3*UN|2*iAMGAG zyv;fkiFYrvaz^V>66aovIqBnyuE$-GI5=>>%X2g3ctLzakDu*zU7h#j@YLxH(AdF8~DAbAe&)h z6)?H`1-I;l=KMIx3O4aiwjki-Q>+)_{dw8#)^kb-LhN%rD0!O!d`YFLl^a^AXPnJ^ zsyy@3-XZJ&Q*7gc z&J7FxvsK^l`^nL?`_q=6m$R?;)7A1AGP$I?fys`r0c@Q9r1gL|WB>b{-o4u-i}Lg? zmnBOZUAO?!t!Stw?jzJJ&a3b)7FjBc29Ac>cOGhi73rLeW1G2FgQgkTVH6gQ9XE2Dv3}x>Iu9Q7_&-M@iGwIgp zuHOY#=<>f@RFw*q;?3wY-20a{Eo~nv+4(n&s1s&FAnhA9059`T%)aO$=P@ve!&A*Xt7Am>-QwP zArIbY_|i^0wtt!%esBxaJ|Ow)*apo`{mAeChq1h^qjW_E2>{?f^wob&Y?=RNOAG%u z$Y7N}hIUR4_D=t++V}rJ2v@7w+8=QICpwyOK??QiPrmwjk@8u=B~i=YrQ))?{hJR?obV4H4V$)5R(S*q*>om?RfZGB2s{P} z_bx_wiyy*gDKIdtAbV4#N!)bjBNZhgOI1bSUQETCmW0TjT9hDq$d4gx<+k*0?L{7y2-; z7?5T`M>!i-*#186WIuM}RD=0=1a%yCa*zN{c!7K=l zwkZ0hV8qb(ebb@N5hl-j_UVFSAY;jfS!e-$Fg8(=LB4*MWj^Hxe1+Qx^uEu12nb0ZMBB;N&|D@cpgltNFfY7x6g~q<@2&(@ z%cUQa3YG)xqYgZD=B#5`C}THO@>ei)LkO#LEgKtGAp>h6BcIpvH_+`mga_b}OUlWd zjacYVkhzkv$cH4E`~j3w|CH_-^fE-JCf^+ASVN%Qd$8yIsO#`c>IPjkzwz2Q+19>h zc(pgXjHlf3ju?cnv5Dgx38bG8&5#Nrzy z^}=**ML};??;Qz6_$f$kpDPhV*q%vHvZNy^a4ety17cJfaUD!AREVdIL*tkuN~5aT$y!#0v=%cH}b{t zY~3)0%JOV8TyZXq%pQz#1Pk9(I1Q89W(? zWk?FW6^PC{t@`x4HdYXHv#Ht*rSvvI+R@({gP;R;vf)3s4q>Tfv_pQy6MQf+p~g-( zG0pqh6LUS4zXT0V?R7%=n%NG2i^G~Id*|XpRNk+cK2&G3en~jsVWqyUGh2_Id@*y} zd28sB10G(=^@PoCQ4djTM?<%EN`KDa7G=U0Riiflr;8ddVpx#s-GS%jqD~ND!en=- zShvSxgYGZgwQKXA{IM2QRxza2OKy{S38badmBq!mbJWmx(g>J{Lxru1m~lMi3J`uN zyZDEJe=sH+A$d}|;w7}orPhh=Tf3ulxA3W#2e@;*=%OH_*IQImw|UN$zwd83NWH24 z0saqb4zgB&J@u=k_|Grozy7&UQvTnHI0S8tEY(bne_O-ZIeCiVC0@(XKEIHjbObrN5OalVSn z&x#7|LBe*uhrl5oLl8c76^Vq=qd=>}adD9b=VXO(10%Y!wWm;F zq*EYYvnVK`M9`pnK$ycRkDd*PW_FI-M11kW-Z=Fn(j(RJhNx*v%=mL4FfeHLJM|n$ zIq-T8W)>7bbq`7*uqPrh-x<+}F0|uMe3~SY6A?O02eJhqk5PR4hgu#&77e`kVpXu^4%!Hc0mdbgahjbQ<1^!mD=o{x)}=&AU0Gqt-t zz3;`ZI3t2Sy2{;AB~==Vak}Zj-o)P+vjP`UWJlVy>^wXqxmNJdGAHp3ake$Nu9Q9jZ0;q@_q5R!QW> zj@@NeVEs0SSKwaXhT_;?IAoYBMfs$@tYi(2lJsPzKTHcZSmF=G*H0gtR@X7_Ss)n~ zR*-jIW^|3OOEPU>IHVL2cKA~v|7JFWD5Iz>Zasd(n%T(wrs;Q!3D+!Qm>;yGgz{kOT1|~iZGuvS*wBwKkw`Ac5^jKHN8ktGX+P+U? z!c|vLCa8d#02#HnQ3fs$IehPhhTY=6+QeQ;)*PuP6_v8ZHPXxTSHO@c<@clZbvhe1<9)qDB{3msU1Y$DZ z*4^!!qNw4#>Z~rhbg<&Cv&mWwDCpn0$#)IeE$imLuT$8y5G3gB;M;%8kW6qg$wO|i z2fD|db`E}LD2$rrF~f)iLXu9}=Q{#G*;hK@pgI2+Q*uS-7*qpA(0>^rb(;xgF|R(N zGGKlC1$y>q?C!~#1xu6K&uQg1riZPz$z$2d-{N!ZaF4a9KC(zY=F0zNpO2HU^vlr4 z=3vYfKyK0r$nC-~JBrwPre=P50kA%*T9(JhIhb!V`Sm1`6x4dW3*BkhZLjjo=zO1p z2+t(Cf-qW%%-PkwPOd<3+sl@tnk{DxH=-=&asko6j0LZh=Mvmk1r)auULM@<2H)B) zTgTS^lB@LG%hhdKx)MM3Ugql&A^ORPUVH(lkwwQAsP(*!iNm{^vU$9d+r!#_MfWs> zeKjP;A4w*+xB>=RSb@tAkVA5BF2_vU0JJ#0j8h0!kJ*)+To<{E%BpH%j8<0a(w)r^ zK3^cniI5u|sh+kVfkfRz9u(kT+w|qBf)-WN8f4vknw;cwoGh>__+b=5RJ1bp zEGSl4np~TcHBA=#%5+wIRY0a@?2F5hLo?3O2y0#IJT@>mO4ZV!`OjR_oo6Q8 z{EF?hcM#Y8mWP~mcM|W4`V<^oM{QLt_n$HTAh@UTIWwzLN5TAZrmpa|fKYI%ycS_O zywm8|)y3%Rp_e(;%GAwbX88UrCNkN57cD-PRMuPinwnkx9Q{O+dnwv}6@K7&0(&8? zvGR3iG>r){Y4`5umt$=t3y)?& zvqr^AcBT6<7rTgd01F0}2&b3{XFbJB@n~#5t_LUJ?@E;<0AqIN zD^NT>?gv~!>gS`DM?KR@7TFh7OM13l$EDVO8+y}U`gT=phkE56Vf0ekMZx^qMfzBA3%c-6cTDtzvPLZM!2C#5ta}JzQBDF z=onG$M;NYb^{au(|Jmj)nFAB%FR!iKdR~%B!X&2sg2O4Egjo@QoECQ7x>-tjQX}ddqWpI}!TX~54F1ofh-nRQ!q-MmmWmaRLy!>d zQ(UmR9Dwh_Q3GwPxnr=%>DI25$hb#US*I{DLQK|m4uI~*w7>ecLQ%%vE52+aXK6Dy zOJTX{0NAtRApAmXEF%I&<0V|d;`4N6uF&+auQi4*;#cwmXnl2ZTngG zYQ3e*Ua%JA@xCn*y3;2!tXcbx?!~R5bvmJ1Xi5B|r~5K{$=KQG^gC z8wOy}BZnM53;5>nMKhSo0fj)|r9Tb4k8r{otY2y-wP_*ibZ7ZELallo$}C8#mf&VdM2CTB1T$zy6A3` zztwVVZK0?#Wy&8?1)!&j>hLtRv<#8Z@6FPLLnF%9BDwDbjlP{Q`l2+)btU}7vrX{xld>+bvOLJw9ynSsBAG6?wubxwkPl#+i4?XU<%Hzlz zgcGL~eIH$0JL0DjO;R(;O;$+IqpLEF(A_LvU~NbkxD3g^3q>8s9Hpve4aCwQI+E5@ zTJ7v^WZchnceQN<^0gW?RqItg%W{p6K>EMFbrvS>zi$RLJ{GcrqnnTN!}Z$x0NVpZ z?59@KxeWYzK;gEqsX0pkm-^)d!v5QAv0DydetuU?npB&sCppkkwPdp0OG~E zq`=b^emu8{|FWhedb8LWwBM+cPk$q&{DXlRI&7ccigC&qy9fl{9a$O~%npB&5vwGi zho$fw^i>jBMXR)y5zDjJ?<~~_>k6NV8;R5hH<>vCI`#aAF`YzIzH74N+*U~66Z&Y` z`3}{Yg*c&2M&zNM$_OjIm2H|1Igf2kkCO{Nrmk}qa8;c6jILXnguzB5$<{j-14<(e zC;`1q_sue8%UE6aDsn`qDx`ljtN|p=l1mzqsu9HX7SNR^NA3~vx;3nkQAr{riMRU| zd=6A7%+ju5Ol-*+Z5QafoK@UbkrpbAxFxg*1gbrInG>iQ#3b?CIaAGuDYiZ!=c$J3 ziSl8I8j`dXPDe~0hb{_;D~E4knm!G z7B2eAyTr-{?kt<|8qf#q3%GI)%IA#C(>5CnNCzJgSx5=0{QYtG5?K2P zO<P^M$ebWSG6g)<$qB(Ay^_YIK#xxVX?d|+ z^rJ&p&tUe)@swP_?3AA#qBagj*=II~yNF@VV&{#c!2|&xj@9{j3;=$@0RW0Umpr>$LcgoACwVf-vrwGQDKEy};Wm1epMmeju4!Uj~+&4%foQZ}>5J1)1rq#K}{G%FAfZY(stA&zcye zf-N?JFOorDpbwI3-{0uNwmoR12gSNy7J+F{|90<( z$%0JPV3k9EfnJhP2#x8Fz{}iN>u=+@aev~_*Xv;u(#+Ie4+kMW>08V{Vrfgm?e}{< ze0?~0_&Pbbyj>kUP&TJ6*S&;FX~QIK;jW4++;;&N8)T22KSl$4b%+jOo`yc_o<$J^ z-(QcLL11x4xq*qviL`RtbQ1nTnvU-%A$`A}8Z-_#uj; zdxH3r9Qg&T=-Na==&=8a1%Pil{%M;Cyt-eD`gixz(?K;<4k$P$%F`vBF4<(z1C*R! z(j$poIYw=p;B71Tmi2M5o!s=7& iA`S$ipMhL>K+)I{HGy(-Yaru~tH!9sG)~_7 z6^h#kD7Sk8{1e`*AYv5bw|O=dlEZkBr?3|20uq2H|7H=MFVvx9i{1*FJX0U^g#^}o zbjMa0FtPoJkgqlyRJ-Lu4os^iFA6V<%=i}^Spy1x>_4R0+G|;gJdQ9M&FDkrYhseF z-G}eD07oY}-_(~kADnmW^yPb2V~Cm641B@xH2PHSDHkKfS#?wtf!`vZ@T2*W&tlPv z4eb{%_>BeaR5JKZqPQ_W1ZEd!$8#AibsM*r&Ip{d_Si;M1(h%t^V^dTZU;lzjEJf#XQd1zHPXSH-qKIw+hSWeg4-d z(1-&uo&M*+lAve)HWkPqr+K>&Cmk|_TM6tBV)CQ0LolpYc;oxvC%L@!3>jFH|bI0wh^G32lNRV@hT56th%5L z#tzJJ>kQ}CCrIUy3&_=Ae=)RaysM~?!(v^D!{CbA-LZ5d&;w4mKj?3d#U|xC*2KGI zN8QVCNWpk(LY5To+<^Uw;G?FHRAwF-~_B^BkhgoD^@V*|<0*$PVWLyt-G~XhInRbaPzdzl|mA`i}D? zQ_YkqhZVHi!o)8$3ju4bP)UUH7&~2}t__$7M%2R*TlT4%V%iU5zh%IYm=2YWuUn?6 z!xO<28NKL=U2IwkLzs?gZQELUaR=*e6QIIFo8<8`fUvv_jj#o#yrsD$VB;^! zf?d>tHTU-jatVL{wuArh0-zy}{{-4qOm{qe2~4U*V%*D)!C;z_1F$AD2!$u@;#(z{ zE!Qy4d#6|!bq0u(?cnaHEo_jx{1mCmpwu^ae=5Y$up9W>&7Et8Czu>@=DiT7K-iS} z->icNW8&=Z);0@%%hFM1+O#G#G&5-^3DMVWQq_vUts49qp_qqm3}6q+0%8NH_(1#% zG`uk-iF9Yw1|ZPauOsBk=bij>_D_PRnxwm;nh4j--HliW@08dOga4VwZG*p(Vc?_; zBLvuDw-8R{HGb-B(166F6;1pES{=U_EJ9*C;G$L`ERNG7ANaVVnsP z{L^s!Xmp~KLW^GyCB-^IZvxYhVU7%p7r^7dpB^BL(t_=bxD!eyN6IA+^9OLHIl~cY z*t95oJ?Y>H&=23x2&^s(qCuP4cegg8+TZolb3BdFRP|(Y73H~@AvzWr&)|WCv=?Tn4iGJ0j9W~rQz&ZX4@CL<26AcbN>+y18@crls1%e7ojXNXc(}nJwL(QfWPhfl z%?d3*>S+^cE!{h=UYj|cIm&Xls9ZVPhz>oqLpG^1;nSI`l&%KN0>jFZmlA1jFLCbW zsrxDtdL)E007MdCWA-A;@9A#PJ_m_SmW$4=7oQN

    ysPv=_;ORxoQHbZL6*g)6TB zCakw?1Y6(-pt2xWjuuIr{8GZ3xWahn^b(_@TL=@gvn#~plUM_h%Y9|p1Z)-;w3WDx zo2UtAAe;NvoFmo;X|reoQ7F%Y4M-gRpr<~z(FH_$t7la*S;>N-Q^7-kSR(ghkBA0Htk|k#LSyW%_E`Y&Mi&QGY_p@8LDj@aC6LZrdwRL4f0g6T> zhVD6qXd<&b`f-Red#3mOVAUHpRe0iXHGf$vI0pM119%6Jb2FBwTcq4%f+i$X#&@j6 z{p2((wy0F3`@RL~6ZQLkVt3*2Y!|M;=oX;|qz|K(eqNs^w~zDhu%Y(P zTXsZG_;+w_zpZ^cqf@m15oc6?B%~>iI%lF$RZ@v0TXiHyMhU(Ta7TjNOZS0EaoaSz zhtR#;9%1OOgM*vT!_li^3EB#q9as=lDcXZtx}pI&pXT#`DC=@Reyab?7$>u49Lb!Q zphL%w;$*Bo>y8PKi=H7`_~9#XqwNITnpj!Xy$S>a3UNA5w{t+4b!uE#LA;uG9Jmud z(Ns2~b4w^%9yx?$ZCfT5VLm-hZBN`4mc|*v7rx%uF=4!c?;Q=I8>x6YwFPwrh_<1r z(89G3mzle@lYKb40Rt`KzZp;quPRXgT`YK+5y@xl)94zfcOZ_ulsNX_TV2QIbCD!= zcKaAB12)YLLuCr{+ zW!JjX6pxto&1>cjd;S08Jj2rD=q4Q&+`GWmiND?$8yq93(tDTl5Dxgcu$%BbZJLhd zt8q^@%8t3R!aQrC@#5il1Xv4bTCMzH{itxylOZ#j0KN3*LEGM4H%*bp_4+*H zPZoX)^z)_tZTW7UuH*rE7W)zU(%v6;oXt93`mfu>#T8KO3d0tvTCQ`puH3qTWMmj+ z7p8gjQ7(G1PcQgEbMi}kdJwcgg_g#~mk)UAvwHUQ1mbfnZkWvZY4JCss{8PYtn(dh zAv8W?1p`~aWjB?;jSG&R*NYK7@9IPN%&bg_)@c6FCqd-nsS-xMVk%B!M+{&#AAF8d zkxi%=C{yHhJmG-iRG&&mGfxp{A3yB!Tr0Mpxby?eYPi)9b1gK>bBx3Pxt`3UKVH0z z28*P?_!gBI52Iio`J6Sg68XwCjN(tpd4O1#mlZF&e21Mdx~J~ zcxDV7iNht`ygY8O*ewHOC+qSREig;m@URtZ z=Pen<#*v1gf)E&gEiv8kl{~D^x@yf{Hyk7D;qbK}peBd`&jEXA4TE;$uc zg%L{RGBE&n*+Y+P%{Vw(r_dN;ANIMEFIkNL4H0k^Z)F`{$Naw+eafRky`PkY-7WKP zTL@|jhg%KP=FUj#$uUKydXAG>>Sn`LRzMQI`lT+CiqG)jUBHn`ap?{cDT7l}t(^#d z^LvgtB~N$dbV>A>6~iDA10Ha(?F02p&3OL`P|pr?8nzX&5YS2Fuv`LWK;_LVQRtD2 z58f1g^J(`phk=m&bz7UTfqCZn7`(X2JnP&Rp%*IFk?X+ zIQ}D{5{F%!o8^3d-O5>OBoLLm`qm26%U6JY)Q54Z(-3rAvk=QU9M+hge&5q`euGa_ z9XbcD4%HEmZ-N)&vPHv`0-{(?l|NyyNS>K;gUl@LH+nQoxb|pIL+>OaADT(>s?w{H z135GU@B~6}XTJaW`S)bZ;)Q9vP>Ak_<7=G(nvzx#{)V>UMlMgl(1 zh0ce|Iceg`Q&SNgt#EiYnKB&sf(-}cPa7cy2i`DR*a*yzBSR_0C?kNE@+?M>Bh1P< z>G4eDTVoD)kX#NQutg!m(fbZ@5OuMqM3Nz7}2YCfmTdJP)T4 z+71gj6c#Ed9wXG3Rj$pk>{oX74?E#?RUOw)W@8h1XhHZJRYVK!3dGF{F-Atdp9go(IDy&ULZ zEYlzn{(D<*`&IRNT!weAhQ(TZ?M^}y(YAPcAyCm+Yg-KM;kIP9lXlQK($4!beQu;L z0gh6du;`w>neJfmci=F~cJUSqx~mScv#j-`*$teHnOC|iOQhzZ?7%C~r36}9));nH z1K(rtpA(44#7H|DRub?$UUrIUM`fhej0;Hu4Nn=Pm)VrP4eP^ECJK=+17;mx+OFAQHh# zzM8~*LijBcYsUoz%cn6$WYP}XzDG>U9R562PL3ei4gQ?@$12a+B3-{(X>D75faDK~4fD-^$2L6EDBn8YPFTk8ZkT%qVT z9&n$WSiA7474A|kG^C3`<|I;L;1keYrEu%gQc_Y68zqJ3Y&CkPjLwJj{;#n5oO9A| ztm(D8eN$mK#>D+-JZ%-=hQn)xnEE?qpI;`*r7qK+eTZi75k0E88{ghRp&!4%)YKF@ zIQn?_aPaeUadY&9RIJ1_AsKc>2?U}}5mkCOeLQGeDi-mGeEEHteVjj!7pITs&(-SU z=Hle&!^v)TF*C;PQF*)g`7j|HCua~Edik*X`G3UCeSBCr_&NG8yEyuOejiR=AJ)?- z3_aY#EoHw8H|N*m?e+2Sar8QW>$*5X7(b|d6A7mNN!J@4p7g=i0rnRfO3hBRRv2gw zhQPk@eb%>7=b7TQS!0` zKDcN20O;04^mu*(ew{(5e~}Bq#~%X8?ZM(gK`4SwiPXMSBJ2I+7OsW^05Pd+?O`ha zpb0KMeRu zv-f^Q?5jV8_^t4U{|%V@V~aB=VxFT2e4&}E9FkX+_CXQ|1{onfj*+R78qe^oYket8 zs(5Uf!M;LUs|r7)i;wo9d%)sFRbH8^acIpm=7gnppRWHk7v(=i%v?@h=Z{n`H$VFM z>*eO)_M(*7=H}sI&z^ncUuQY*b3xW*Ig#brFV;O5g8NQmKuqWtdX=GinOw&l|x0+(pawgB_ww`UjB|14L1@p5)`Y7|6 zF-W~(hx8FDa@ER9oPfr~XlTg)A~oM`kn~(h-wH+1$+O)Ycu`lc)bs{a;>Zi?^znK6`Z&2jB-!X8 z!7NUG=RkCx5X6-}%4EGUa!bzLdG(o#s$pGS68bUi^lq`Ttah8T;QiSGxxw-%ao*e-^J96IpTimq;pY%5 zm{nJY{ml=U*AFxmt#M3EGK2N^0!P!ti#Ns9xvY+46yN7;4>dm^BG2u9g(Vap4t-K8 z{0vi+NW0SBi*wCOQ+2h?bZAcM<9&^I55od=6|cN&?lJwRX34FW`M^)p)p@pQ`L2_< zlOJHBKCw%+_hAVbfWEXJhwSiK-W^%C8Kk54~Cz9Eg)$HTc{M<|{*<%+caP+>a2s zr@6TkYhiLffIf5db9D1^(*3~GU^H;m$-(g&j`HcAgCx&m*oke0Qn%C34zZ5#;EdbZ z%6Ht|10(V*3YeXp*B_ziwpUlm1AZ+aqDKf}Vk0&(GpGX47yB_#q--|M?#-ZWwJyXc z;yf_TxgEbAlBax98tmA2oSZJsuLNWNakl$8`Y^iqVBq2RvkMspd{~*I#~?vz53m~n z_e^Q~YHu~aeLEHiKPN!cP^9;2^b(8bW9yHe$7rL3FM*U6F z=QIh&Xv0B+wvxS}W+$MA?I6CB@WREQ0wU10w`DdEtd;L(+6j>@(AwfUpGD8I?*?1j z>hnD_{I0rn&XKa|s+xR{wO17|Uo0bsqLt}Kwc3PsX&jIW=$=+<*3r=$W8Q_bh=DS z4Y9Y#nMzT64RO)`9y6ih900W(_h0Y%K(u&(X~!y}ig8U&0hk3fXMuDugFya!=>}?* zR7M|9pu7Qb07eA}RVsp4z8{&6ia6|$o_t4fdLR?{p8=wYmEHqT->r5tw8~;bmG8u8 zHT_?0{QJmsbTXw0ZP&L;URqGF$0i8FHCo=o2#*C8poS9k-@4H0xhj?5*?v6{wJCWJ z-Q@(iioZ}J3JSR8*n7AFh1g(hRH3mFkRbdDAdg_K;u}_;may#ZRk*PeDh&$sl#3l# zlDG1`&h~hJO|VxH@hGKTMqX}a=9GM2T<6lbDbfAT!NVNI97O`g@EIYvF-AP=)C0gc zW@y07D@{Xd29Y@OSn`QaG`JgtzosJzyKnF<>=f=w_at)hwD5q&XtySsb1M~UnFvO% zSf(qmS~xq1zR8|!AXLU36oyF3Q7uq83Q_C*7-q3zKEHz-q5n~FV3(1h96RI_DmkT| zxU-}yU_ByG*_;wDt6b%r+E2G|@M&mJ^<0;lt>Apu+&FI*Jb9aO5vjf<*hZXKyJU=F zb^g?JaNcDpz*VQI3r%y>I%ss4^tkjr4ukkyKII_2r3M#fMMrzrz^t7ZjsPoC6{gjr z4Q{EM@tLciu_rHZd%vY8`7$F}RsuIksWp&T4+5rc@@iO%e$cEIaN+%_;1mWa?5;)w z#bbu`6XV$O$K6)!OzQ4ktaC$AlCR?+&Pw0zfswxL)U}GIA&RHf9&|?f97J>YrwIk_ zF&g*Xt5@st{ew)i{;t1$A4Pq5x<>I+!%)&n- z{t+k_E1ZlSn7~QT-T{}oC-T-?D^AW)bTsSL8EH4b4bIyCUabUxU*ZEjj|ifp;cwd_ zSfGdo;(Og8D~GzBBRpNB=9!{Cnn<@8db#_Cr?N(R$^-N)iCt#}Ncy|tqwMsQ&?xiA zOya4S)R4**c|A0%kh%KGxQpgb!bqYT`l#|s)zuwF*rqrnWGK5(6ysE=$js|uQ!|WS zOACujYLx4xD`~=A1$RCdnGX7uRT!1iY5~jY8}B_=M)8>?8}TO}B_q==Bd^kag+>Ca zLMmjkI$y8T6aH@Tn|Emn!f?FOCV=pk_yE9bqWuZWGli`CN`}s=ZwRn1%NH(Ozk#rg z$tQV!*4!;5Jio3Tot@3aA84qH3#NY#R;Z!7cojfp{A^Z5up#KIzj7f4@fanL(v@i(_d6IrukYv6Z-%`` zUP~zYr)SBfCJwX(Ab~0Xl|*;QqeFrA<1V=RcKfPD$3VzSy9@q!>FuB_qlBCcf-yC*xdca;b`z@WprE%)AEl``~=o#q~0abUp~BF8T$XBATcNMfYtP zt2%UK$t45JSFKoVdLj2?825q86GOG8^t$cKkBAi`uU%}}vZr%5K@NVjIF8-pxLTx# zDMBW3R^EW-)HEU8i+k?$oUDQ{0qi%OT(KD0;qzwjI}T3aqOvL z7TY)64_nkB&e(F6RkQP-5%<6k*GD^Cht$w8e$MzDCr%REuh$T4?784>Lw>ykij`4I zhQX$-&L;V_XV-B(LOQjogxz5VyI-QWe4#iA`cua{A$g~hJk%O{W5*xI{|#e^-9P8t zP%B6+_edy(BZNER9K73}4ph=#BzuBL|Xh2e}obroX z>FOLp=~VB%9dwsgT5jHy+_p1j#^5#*J>BZOWYdm9+how>t2ozY*-ROBOn67_cZd1s zxdPS)P?l^aZ(_e_{?3!&#ePfNJfw}?R%oER6w&8{?=Rw2>4w7WgeuIo@3R-;4_W-H z@fp%MSv$)7l05CQ9 z-op`aYmj5+b>VrWtgur2vCaKPRo zP_TmaK2?SpHgrABV2U7o?^7x&&+;&*bHtLp&DZGF|GU#$2N0(cHu&3h*++((!D!%= z)=Reb^W}XQr^sl^2XrY97K4VCxdQCI$^;AuEdx6u+Yvj%e!#X+4)^PztlfH24DW&f z;GJOmqvB{o&1$L_l&W-(N3TE)Q+l$Vu|ZC|CgaMhIG2n#24~W$=(M_(td)r__Y6yw zIV^6KStxO_=a4E?!32c&zS^WcciqOylCUWIVLLy(U*MF-?)BCz1l0Q!Jsqj7s zbdRMi)7L=Z~`R5*q2ezQQpt6Uu0MdKtwp(=$hkv=^E^pC1~Rl{tv-33-FB zbe)wH#ot_zlXb4%A+!sItO`BK(SA#~XnyqI5xfElXr`;25ZSi!VuT7Rr*gZ9Qvdni zAKLUby|+oY6fN%{vWZT_`s^rFafGh;PVN5v+PYJnUJbNB%!Kxg^f$cUzjM(FaUE66 zo_3d0-(;|Y{ETz}1WH)A-hV142YiJepB(Dqmib06vIZ}=m7Rjsr6*K(e+sJ>aD>Bk zc;~2vm}A@DCn-*KIm24XbFIQUVK^YDO2A`>)S>@)@9y}K`xNEJ8WZ#e+#)!u2TE~p zqUIu;CeisWq7Ls)v?37mR^c%%6e<1#z_aM_TMF4=U8I`FEOL~q#P8D9ZN`xO zyW>-{mB(^SP1iGiH8Za5JK*Q}@Ts*N9uI73fqJVIi6CoPYuK;`3O&;IJ3Kl>hm740 zl;IL1@1*Cd*;e*x>V1`9qcE~N9bFKXpJCCbG3Pk*1fs^0RvWYUS_G{a?U>PPW4UCz z1-|8&Xj*I)e~;aXv~yj?KH2{yb*|3-NRmFH&dA2GGq49yCx&sEOP}>bL60v@A{v&? zm)zTWw3YR9KKHNu_OJA2b=`haCQB(xU80S8x!UULV^6{i(7LqLW=a?m8gH$pv~kh( zLMQ@U?B-6BK~0P}Gt!S0H8VfqBCptLM6oB*xLxEDSNvY#b~41xbI8|_?cVi-&5P%3 zY`p3jBey;3LZ71}Rmt^CcDtRV}H(KP@3-g zwE<49kLry!bx}Zh3^rDG(c?3Dq``G{d;9jKf2ZF`i_!$$6YVM*{g$f_k(6 z?8Q@DwzhVmvz6_dB}SRmmWx%alRST#%HP&N57x%XmW)#KgdAVG_;XKycA|d_tKW~Q z;jV7XI(raK{62^4BjGX!-SR<;)NDG=U6^|mW}aartvV+DQF(0X4A`RsJ_9Mm`m%U8>3lb<0QP)d*!6_fjshJaW9;)cuI9jPOm#k zt~28RBqY799ZAi6wT#C z8K^Q{{yPKU3lI#RG+zU-weKl?pJd-7g}?v!2ugA=xA+rO=MEDPqT1CLu+Pn?)$BSzn^GU;n2t{z%J)+`<(j1AuX80J+PGpThcQ-Z` zuB)6Od+26OG*AL)L*OR#E+M(Rz=9?Wwx-*@578q#sGmN7bIfzF^P^4{S>C*}4`T1` z##4I;C9v9&VE)q%&XZBxIs7Ef4j`cuTOw4PuZ_4{(Y*Y<-R*qe8?DUGs`g>Wo}$hANL>y5_6$`tOHS_q)PvLV}rJ}$gtWwgwK&$1?f!v zF1sn-t@amxHP9aqg?kCPBnemtExS7DLTbBAl6N>KF4ZoeV?}@YegQD;Z{Yb&qW%Jj z9YSC-w^r*>ru=T>z4j0Of4~QbQtUJ9|HPR8gE#!2!G}T|007bd5AZ?3)XCP>{RRC=ehZ588QKblh2Hvs{lZfi$|m>%3*Oh-|~0C=yVVY~K8N z&m|u6Y)(e?V}t056OoWcxBqv@0b@0g{wH+`dqsrBazuh;MMip9s2H!vPl zPMP0K6n2P2K4i-K2%ktbI24MN$`j*{RdWg)}X*V;p;a-VGO9*mIO)@ zsWH(K=XvSPtYfs01rM~lfm~$Dp!6n?JDz%{2ZepJoVJ0-S#ui6uPu#q-RzN&pbk$bBvdf+W(ryE6Ti$bKG29^5oQiQs`NnoXqGb_hE;Sw4kP@z8bBsaOS1 zV|@_V$1zF-d$}}DLL!@mQItnQG!`5q*Of*HqE^bMcq0&V<|$a#ZI5`94Ofkt0o?$? zd53wUQe_VS%!uW$!B3MmK3Gq9pYH5F7lQZB`J^CHc_x4N2AqT@$~<_}HZ7T7D1nW) zM2iEMmRm4pK z8nfgTLJL?tNeOTf!wDgy3BBX^p=k$}1})v&$r@px@lj$zJW+hMtqX@bhOjFLX1IM! zV1@2fjao&LbM8~F_dV5oxlKwWxR4iX!aLVdYU$$S5LcrpI@a=KPbu}x7TvfF1J0L` z0}VN9i|UEpg+&9qjrS?2??}9#mn}FKKP)1&kjs}|2eY^oJ-i1858pdd`8X%zO;+jJ zh}6ZCY!g$u-5XvW?((Z14JAlzLThKrZ6X!-*681&pw?Pfe$uojauIWcu_*$tv$1bX zSHNNU++Tf-D;Zx#5)>xsmrJE@$i2ELj<%qkkDmu#hM_S@p2SL|7ub^+L>3@T9^qsh zZQPTzYXlJ|XJpkkSrbxiUneRiWeF2Qp{LNKQ4;{V3K;G|=ECpF4Yo1dh8;Skf|q}E zcd7@04(G6yZj?bW+ipcs$Km3nb$&{rNy0eCu_h^b{3{xxP8)-);_0s~N$-Gxt&axr z?sQ&Oa&r|d85Z+hg3_XU)}kxED=9dsIK{vVd$A?b_z&3Eql?|~fW&$fiB+hk2I>J} z-d?i{S?RL9?4zS5xMXPM0HZTUSKRhd9c&7Qe3+L}-CYZI`opFKjZ4?zgj>soCH5G1 z($43uO}>nLSSe_25)R@&1i|b%_BeZ#*YGjkF>XG|L<_6nH;-t&aHzGHepqrUf5RK_ z3KMrs%<$^&3%d071od9M<;N)b0rT00o*_!RCcJFpf4ZCmgoefXMD2ch879l4-qEuZ zkq3-(ZUa*|w!wm#$f&FV)gVn)t*zHmMFq~QppYkS@c=y780=zuU&!g@=kU)OYikIo zmnf)9z8E)OK(~B#hq_G@(l);MOAvYwP{)!t_RttP(CzJq|5F_+@9gxn6;Yv2jkN$w zBYb$uzw~rBAoR)$>qEsDa|8ceYJqvhu-^TycLp7OX@3_U zu0hMT_1nPQoC4?WnsFR?c6rI}0AF~Ec^z4BZY>Vs{ z?n@~ebD3xz0mc0Xy>!hKi4b{f`2woua*|?4p4u+0bbBBvRd;_fHctB+u9!X|DIJuZ^2@Id3=pJOelzO80h|Cf!M}TZ@-~>CC?npVXGT{u_Hy>; z=o1nDOU3_G@lEW7ev85YxFT8uV3L*V^MldL z2quLe_X!axK^wocL{oN_4Qf@p;F?e`$V>Kmu^UN1gplB0pq`H<<{Z>jl;#5eiT0T7 zkw`CbnD_@MG%#)~>#+#M zDHdyK7%x>66KYBmqj`;o6Zcx&Q^!m%9^(B-g^(;RIDOCntw-z_aL9B{FOleT?GN~0I8E}16|*Qt>4G(8zeV5!%N8gK(Aki^ zh6~e!tzD)kW-!gUM)QY%CF_(~uomdD8yv)97$8&^sUQF;v0$nS!`me&g5zVwv_Jsk zTr$hzk|INbh!8RCL@+ATXiKuja&D~F(>z5!em~}sYJ)TsMU~PBzDEqg3#uISGh9LY z3wMJdyU{jJl!i4Tj19cZ7>>%=x5+JXd#4`|>Z1ji$!KUrs9ho-IQK)`4Fys@geg3y z{%cxjPY4DOnxP+`*Q&byjstHgm&4%F^}QAqA1MuGjR}|7D%Wn# z`+Ow8lRZ#QOTuLCub@41kO?Jd>eUTZwXm%Mz+!6n@>daBRmo-{XjlQ4mmpUd4ibjT z?ux<<*TlRvtK9anIR5(dj+ zj;+n{7Hq@~>H<%zTqrad)@6aqQYGaB(S0tCRC7C`X; zQ*isbx^F|TGTxGMVD$3f!i~Z+q#0+N7@9;f;WpYiv|6Fp2SEtXHu7OiG$N|_KoSS= zG>2{}rkbXLu4%ashs@pXKQykm+PzMRezN9rC#?#o23GG+*L=^sGcN`=~^>ps+2 z@X*yjU)`>}z+&Xdp8!8cFv1_S##RE3W!P&GMN!XOxqw5i7WW+x2~G{oRh##ULf{IE zB?s#AeN`o@JtfWz9e4!tai{a!AZLE>AAtM{&3SEh4l^80j+e)lN@5YQ$uciPxPX8z zEnyIAbcVm1XU-rd$z;)_$Z_Z~Q?lL5EJuRRiW=F=m}p&g{?`oe;w%5CgrIvcFrY@n z`~$=hSg|Dqg#;Zn*FO z8tFBLl1Apz8Rtz0rtWgq+w)*0N~EU%1E?~=R%bI#9+fKVqYp9UWH(ZcZ`2SIr=$^$t8D<^~%q7}4ytOa7obKFHKz4LLg^X=*TDV>JV^h$^do^pJK` zH}Y9d!+4ce(N1&lfRto3i$IDsv11Z#BK^=T3v|#~0C60WSx+T@dbRw6h^S?YNJ(r%7OI*vcLYMB+X~TIOM$$AiVyQo)rse4J@on4i?8c= zb<(o!w6;3{JDIa!-DLj20MU&M0<{F*g%*pAfzv@X+k^0e(i9K4($Gp=P53d~8QZS$ z(=3P%a1-7}n1M+zv^obV(df&$0s6G~X;R7 zquZMv_U=n8v5+)gt@zRZ1g$T8Z-joznlb}&15#$?MSz1!iZve>iNYw03NbTwBV>(w z;4*2Zgy3)laU}^=(JNc+!q8_APaT!q422V!mG#h&44iZ7U5 zxwJXcmoGP*o=p%dPs#GJ(1HWZA7&RQ}_1wvuFFoC;-0>a+l+VEiRkxIdkcurM z8hgxc3<_C*fDWfgUxr2nfLJcwqkZ?j7j~6@x+m2??)T(~7Ci*dgrZmP;7z1yFasjP z98AyGCI0>WlP}C|gFcrB*um^&_8`A7t`4*|r5Wuumi1F;IT`8#K7MschGr(kvxIYb z>S{i&ExM<*&9<@Fo{4TbR+OSxoivtLw7RzfO@hSK1*f`<`;lKxI`(?B8!DP&L@El` z2vk~Fh*OWT2wAD(ni~n7%_Dvkgs-(fn&>{O8nmGrQPoNnnnboBcDkEP)tX|XRTt4> zA|*8*4e!Z$U2zGbcwmIM4A5}AJ(Pr$yqt)jT#~eYpAcrT$FxrutLgyLMqSaz01#=+ z*(9oC`xS~P?Q>$Ujm#+E;`k2YM?wN}%xD?jutX@^y1%kP36nPPZG!!3xL(r>I8x9N z%_?Z=RWq5P7{@))q8KZ)(~V8Zgse5Bdrb_3S+1dR#lrCJoac zO;5?>lq3j+l_r8?#7dO0sH1R5BZGIRsHW6U`%{Ucip)52mO!d+o{l>#y%g&XSYq%i zj==^c>K6YOY3~puO0+d?w{5#m+qP}nwr$(CZQHi3)3$B@=YHcmxbeU98dOw8tjL|~ z*_o)Q?>0#CY=s}ZP^PlQN)?;uP;sTPg+$DFs_C3 z>fs9&Nn`|MVq-l}{6k zv7{YjSj=O05E2weN~IzMBxB-p;Uzwy!xCV75*;J)`7>Ae3Ezi3lSb-a`G#1slyiu8 z(_*`m*;Iss+$og=1*rh{@)(TjT>(Ny^LYpTN~r^Srex-2ndtvAqF2=c&Clst0*h*_ z0bn;;0jI)gP_Nh^c=8N4g@&X9_BpEf8wa_I>Ig0{6QR;WLDw0}ui-H6OSS;T8}tA( zp{=g!wbQDsbvFsI@uRtb4B9qYRYv2-F?U&aEhsmSqHNfHP9$QL5=+<0(Nv`T_B!%r=y+~Dy-IPTNQ7c6&7=#Z%0{*q+eY!JkavwM zB`l|&7$`JFcU$l1RJ66WW=rk<4VIPTCqaT)^p3Lv*y1>p1CN*UW&^WQw*=Ek>3mn5uH0te937yHM$?JV0DYcCk77 zxKEbvtYt5+r=9F~9Vri9CE9cmTE@8ms_h_xvh*Gur9@t{ppArPUS;nUzpZ3jTvnq> ze2i$btZB{*Ilj_1uS|)5_@h`nQoe70TPIkXzWDzAD@pSn%n+AO?1$8?ug_zu2Xb2E z-W4?i<=x!ND#QocJX?ng&s<~UACyoOE^W5tFbzsgO%s-0t)Tp$?nr!!Fm7BRdVX#% zMM0+3imxtb@Itea9dHo+kkse(_ZM5^j8PHT`F#;#qGAu+#VU6GsYVQp=`d%%)5sw?zvH?XMS)o6sC#s#pDw!Ek z>I2A_05?C_glKBItOK@C?b1RL)FhI*Bq9>pvr|m5s)M42CDN?oKuueQsWkzoh@0+i z!W{;cwY5?2_fD7ztt*lT^F69b_OU4M#R92tsEI*X_& z_Lv?`WoL$ES-vDyvuG7H#Xz7c>t$x7jEGu0(L_)OmcFWR}L z+GiX5JB?^5Zlt{YBCfc~W>?kcDUmfC3KF@dd>&9{#BeCs&5iSQ{&CV&8Az);W_k=s zyC^xg$YzY2T=Px${>0z?LG(NGufG5BKve^;gVFSGYjeIA)c&U3?X^$&V%HHg#Pc}d zad(;FjftSjiho;l^QUv!!%pJpS^bVw92mCM!62bo*cvi>W)o!tmj7FDL?B?ZsiB?} zs3|N7&d?-g5pR_n&?uQQu1&A6@St&8zFF14*(s|IV7RlRGx=?{k1Z1T{uK-g{vXU4 zAvLzvD*#@zc1O-l2(ygxSjG>OBp(&7!#g)-{+H5wO`w6Cd+#JI-uNjPAMsL z3;nUoUWx6@>)EMyE?iXQV&!V)YUj)B+W|e@vc61Wh3? z`}Wsyc*V9HASVcAu;4keX6<6QUz*oG~+lXX&hek4ams)pECmEefH_ zp8r7oO*J(s-QIBV=VC8M*VaS}hjgI|?}O2O%I~*aTiv_p=T?Xic&b)-YH_`FDZKrB z3UWQi)u|*dQ2+{)b%~u9rQ#GYZ@y#-Y-Gr(&?=)LRIn*=QrRO;;b+FL|68t|>LEb) z5&r$yXApvpT^#QDbWm0IBl-Age<5+vxC}Y%Z~u>L&qxYFv@JRm0Oc$pBK7YH(4n-`%qLV*6O`% z#j+}pdT6g1CrlPVkGCJoKR-N^ijhF1dg6<(rUS0d-;w8R&%9;SmoB`{<8+FmW9sLb zJBSYNg7nq`EzX$38R&kO?A#hP&RqwD3n8m!@|X8WL`h=9t0t?#Gm7`Oc z&5Ew)9k5V!1r63X#QvoI9#4Nw-~ZAh?c(3@ohfrlRsZe*J0;dKkye-~D%R4R4_C*e zNd6%>u%|!~I7WzW0jjwLXc6Nx0G$XyO_M$=W8C;8FfLkcO7&!~vs<-btcLLij$z?Y-YjF4;70}8b8p3>9R`im* zxj&B0^MY&QG<(Xkv+^~_Yz}4x3bF^B9ml@^oGSfNNfV07I@!*Z3x0IuF(af4-BVCu8vcYY+~uBHaW+oK6-KW2dl8={2f$+EHZ z1HDSUWvRfd6o|r-)6WFT_8ROSq9S5*C)RcBb|z&L_kWfay5F|EfTqud z;H+h%jp{lHhu8~Wa0ShFq(_u6J zur)rEZ$Y+oRPp;TBUBH?1Ha<0`0IN`)SJi4wbSeZe^@q5yZg;B#w|D@;)L8-#4A3d z*=Mxv#3{$)g}aY(Pu8Z+*+3kpQ(#PhPRA?|&bg$n(qj&S24C%}!<(KJ{QH zNlRf7n_0jV5M3eLl5gOQt2yB6z;MN#Ga|1vh54>Kx7gwz%_S?weVGp%-fjg#>c;ik zr~H21HixCLGl`wdg;mfQAh4Pw%b6}rB@NXZu`gQET%Zvqu{bb%9nCc3H7;WxTulgl z?6H1ApuHI)%=+{fhFrUXs^zXqhFjvwv@#QodP)ye|3(DXbiW8{!sA03_j-T7HR&kE z=LWmvXN{-!jpK=o>$=8H8bnpM#7It*x5y?zoDZ56bRet~3#2kqHEUP}3B;AjUIcR}w#}M5aN!UL_kCH6g#T@9!KaKx^fl*Jy2x zu^kJ+iPuBU!c8hwsDT*WIs-o@wH~IDY+#}>c`mhuPs4^JIGx3bx#($MQWoa!e&-_1UmkrMwR5Ct}EWJ<0{FRrjU+V zLl{e#e{cnfoqZOjOim3f=Y&g^h?a?grqE{qG^QFOAI)rzz^KlkprlSTho}Mz*>Y2{ z-;@o{X}!uj^3e5g;l3C1;=}cE*xsW#J_>Jxf5V4K%eSBW@OtuZ;SRG|i6~FCIpG|k zY2<6W`CtyhT!?rEM(Vt62h?!ZYCg+g}}=k7(D2bp;FCoHnZB``+H;C*P$F< zcLxyox)Nz!9PH-FJ1_lJ2R4Z7!IPS&d!=iYee$*cs#hRtVj%D?x_quCVyB)zcIKw` zpM6b((umDAbiH?91XqIof^Jd<@(2X`y8l$7--JKj1kfx%>>u)B^HL=9F}ZTi)kg{r zB6>cFP5Avk^(p0?0Cocj0Pr7;`QO!NJpTVJ?Nq?Y$-?Y^;C*H^w3IeQQU38h>=LHj zj`G%nPX$KUZ6FXPnIK?HIjwZLEzPZK2`!o1sKW(cuem+qn%E8!Ks3Jf3%QqVUba-7 zI_!B&kV>hF{kz!^px#hn)}l=i5XIK4YH7-TLqDr%h2%)2f#E9i*MrH>-qYlW z{EL_)&v3L>le}|kgX5u}HtQQZKkqZMFPnLL;qxf5P?;vqf|37TK>KXEGDJ^<6ysca zWS)XiHrAcMFj5j3>b67OGR%ZQV_rSrApZnq8(FFX@GLCui%LqV@K`QNV$$%f-!M}G z3LSU-+}dr=JrcplxeO&9Wy8I2lEe&dkD(b zh^b+G0!a#oz}JcO9#mjHcXWW}u`*LXAnH{hsZhTh@H+@YWFncpU$cJj811=OpnYFA zQ6ijVs&3q=GQ!A+EyklXrPbD5^?4xLTHN&>C4fFAo{;FGE*+@_C#hniMr&~fmYKJ- zqNs7YdPhBO0OFN0^fj*~f-)*$kYxkD_HM|FM0_qL{!Y!$AB%>7R!}@m+?;=r9P;|w z=Lm)9QHo2m9&gS18l_2yz2J|qt6T1~!AW~P+L^!sI z<2Y_0i9;kT=Y$iYa z!oo3KE0-D<2%&(=dAf2a8@LQu18$q|vrNAMOf|;2yh4{)Dp>wh@T>Iwftvaasb_c@ z3-@NJBt|1+DwF9c0ibLk*A+WZIt+0sA|(T)cU+AHBR@jPQydc(MY3J2i_Y}BswGQC z6D+l7kwhkED_W#b=R$6P)7#V$onpm0< z%82cQ8WTcNk?W=!=h{K%jd=dw=U!VbwyG8k<)C4j{{qqGsa_{M=bN*z8_BynAQrVC zSg?jn17z9d1RxV9vJX{n1>4W%>Rx$Cm>_A`57Y1`fSgh*SiAXGWu#`RzbDrj;H2~b zHUUt>RLn3N>PBy9CN-^8{TB2&1NA2BVR;@A9+g8!A+iK9ddvHp3sx9$q;oS$<4WK< zYNd_(UCY{*r3235GlDuW{aH|n3W&;u=LY}k9%V4SQ0En2*ipKl(G-xQqBFyk49YeT z>;3J;lAF53B`XoTnYW!YbnAkT5*VU=Hn6f=o+TC3Goy=n7dUa!wP4> zpd~D|2uErtdJ~~=!Cl_f#5*;;($ve*?U7ZIu*1pCJd|e0I-KtF^;U*&>4YvsHV79` zI7Ji%S6YSWrTQk4j-qw=1o8#L#E8yFYy1Q?J z;=|a*PSwriQc9U|b)H|!>d-j$WLQwEf&|SrPD07Mt2~6q-|4g$fImV15yVcyC-=9^|Sy2&8PzCTZmUNU=;%5m-yF;+$E0Vgh8xHL1& z$R*b|mm=i7RcToE&T8Tf~CE_OO ztwxSmJuNOczj7~x+Ga@#?4{(krX)|xqJ?*xhEM=*{@7W(=*=xGtLt*9>$GuQNLj?b zbjhxRe_k{FvEhd2(%>mNq=(}fwO}8aU))r;Bh2#D@tEywQ%ZN6t#ECz?o?xtC3Qkm5FL!UgLV*z8kj;Bz2t^|vzE%>$n{e{KJ|CfaOM zJDAb*s*}PlX{+u|sOTs?YOPYNWNR=I($8BuXLi;K!8=^S9Kl!=r{7Em3$Q=~q@sH8 zoQ!eAV$$KX0bZ5uYi?mGa1eVy`AkWldXbv>IzRf7?~|V>zn*JE5%r!NuhqMW4_UXG zaU3)Sr8A~6yjCD+cR#Z^_aDWkGIQ$4cxCOpowARylD}}$40Y?(bBM&gbacVBR=zaR z`;~}%>kON(tcrkDUydxGy_dd3xUE}yWmv}Dj`OS*E%nyQK<|=G!owRtpl%{CN44oo zZ_kQIijZV732XKF1Gkye0NKPa^rs$pVM|)UWJm9_P7Dqs!(sTg@6UTH8%jwicG|nl z%CpOlpA{!IEiAr$Ut3+l)xZb*w-7gIeMhz6{;&cXoHhz3p%uI5GF7%UJgrCoh2 zj8#Vw#+-fPrRJY7*opnQuM*KQymvg@GYszrO-R&nXV#_f~UqjZT=!qsO$P;SLZ0H8^ zM1K&wRF`1%b*9c@Z?y&Ru*PUi=jMrKlcBFi*U4&=)Bs}pJx63loZ*uV+C!~vtRQ9k z$$HiMj}LY_G;8?v4^sM%-uUlI#OzQ=JjH&WN9%EyI$Nc^a!QIT^l+oHXi8= zW2X-}S@5L)%54WwhN%nuZHiBARBFax!tv~!1O6#7F#!zpMsn3tFtDQz=!|HMJ7BJ)PVm<9)> zTMpihP$0lU*DTRPsIE5C9dYyL0BS;e&vEH9#F2-(*{|Zuj;3udwDX;R^Y))U*K>Wa zceH1BKf}d?4!y&qjZH*WChH47SPuYOFJg?T+b8x1f$yPOT%LUr1wNMLt06y z&DPobToi0#hB7nZAbScWMw=6G^=OrrBVVE%gvcX=C);y{+|X~GSny}xXE=yU4K`EGA4N;D6`g#fKQkjzmbW^rh>B7BZA>Dd{EB|HU|Zra#WHrRN%Rg_3E3?ve>t-9MtUDbDA z!H4ZSP1@P?z1=Q$W9ZHFKFig6wetF|YSSw>p|X^{XmHMUaI(}-B=ii!9s4a-Ebm>k z4oT6h3VQDIr>>YKrrUmUBY}c0^)H@xr=2(N3SAx1O*#5UExn!-8Hs>uSkuy)C{mBr zJ|MYn4sH4A^8MBHRpH`wpcU)5nNzdeiH?7j$GvfZjy5A6;4sj;wmhi|2Zw3samaT! z*^aFfMIU0K-hCXX@AFY^U-beynn#jOw4Q;=hHbpLV4AjB!HMdVbzgF1VdHE&azI(j zj-v}Un+58!WVV!LZNm%A!oDsvi=AG#9Kw61r5Rm{nWgfo<+qJtZ}seITzhF2rQCp3 z?Ky5@g|AsajFI_OeH{fCwd=E2#$1R^@>{8{RD3ElXrXwUOIJmk?sHYQ>3E&gc-|(B z0R3hGo7iQWa&kH%>3IkVIx?y3J0yPh=KqaLwBwO{vD(5xnLC^Ec#$pJc4eA*f^eTJ z;tt%lQdTMZ7InzZcvk@ZYlG)$)U8DIk-Mk!FspxsVrUW^C##);k_*)xWk@OmeYNZy zKn^q2NvmR;$1N9^?bGw?U|r+x)lw>PUs%G;f;D)|@%D)!MPQ zCe)xs(8MVsdz!wfa5SSYVYUeQva#V5sS7Ni;=ObL{^xQ4J{Q_oMC<66-F*j8QNz0R z^;hj4{r?TQO#2Q6kbg~X|3=w=A9A-G|F`4T|Jvm?gKg!sIey*cJHndbP$8Up?aa9} z8COM36>;)~B_WX{Ys!w&(fBf`)=`Xmy0ELOkAFlfF`-I(&fxflSkfxNbZmjFN`|tTF;-I;7 zPt5y4Y^XyYjL{5*#2quk8m5ax^v_SfO`it8JGF<&A_5PUdG=E1I*9QFSePff$pF84 zb|YQCj2v>|zzGdSV_wi=KoYtnYQa#ChPRjxjtS(%I`aB75gayueDn!3v{1a-K3X(_ z#|e%{i)o6E>m>B=Z{7@QgD75l4cZP~GB-Rjhr}fRdv2pB!ZN_ZcB6MF{p5PjBOgVC z-6)C1aUL)}L&@&!>IZJzt80-&XTAyB7l2bd`OQl=PPq+6IP!3}2TSks+1jwBjkjxe z=Dy6%IxaZ_u;O*zjfkG`hvlGe=0{CJfF`y{K zxPhKV6QJ~$+ke=ouoiqJMAsv?STD>3AitB9;=S@+Agt% zeB`Y!iU<(QKI5nxo$W4RivCaul9O@RcNf>SsjdY>RfwX>|7XgiE z@A8fDrrr}Q5X4AIp`v=yvz>bZoWikY)HVaZ9L#4hro!J11SJkUKh)5`Pp(41$8MIo zn2GNCa*G`h5sw1mA@NBHj%%dgF(hA&$3_7=N z)f^=}d_DO}q}J)Zb9X%r1deZGXDA{E6KB-|K^W_0uwZ}H`P^wKKg=cS!}w?tiJbu)>C^2eib<@Q zv%$>37E}3v2^R=9nO-t9-(ut7QA9hE!sySx)4)|Z&D1!}){s9PIABNE!jH91Uq3@v zr40EMJ*+OWL^h`?#?D_k;ya<&{U3w(<_px7?VT&$cre~1yrr79O#W7glY#@yJJ;Mi zXDvNWjOS?2jxD7PEvz#vxMkfXP5tXkHNJr}YnrH4E>gmLj3){=DDdBnedUK=M zRhgm*FjwQlP!?1m==bIiTYQ^^;wtShpS4B*_(=RZ9_RmL@Mo0 z68iph@qik>@9oGz`T#WEf6t*44rZ7O?1ecKMP19WFn(-rI)9CqXa~RdIKaXi44>0D z{7%nX8fT4sZlpl$Ub(3d4qKx`8&G1Ihq&Ka_gEd1&_C7V3tAshhUT1w$TOU4;5b*@ zK75nrerd(I1GOzzgYZ6WGfT z-ZqFrG~KjlG^Ej*&P^KIUcK!oe_}B92#~PXb>U}05H*_T&)VeMkt7@>d9ey}5rZ)| zWgOds*!dKFTdzS|{2P=SKd*Z*1(@<^S~2tET_8~SCUJ2%o3w4VbqaSbF*T~};=d{QfgTuZ(IyqJHVDdLD%a%`dXZeIv^|kJSm-$Dh{D?$ zlB7;_Q~UfJqWuO{ayxZ)w7b)zW;dJr&WzkV_*_VL^)e%dP_nP0YD6)Q%a44yJ9-mR zh{YC;3rs`h_*04&)~M*Q#7(PwSvYN39jsd@Fy!_x1YDYj$stn?)GJqb>d7Xh-3p3! z2gK0*HK2ak&2_PM~D}l8|APxU6vY zC4pO>XH$()5YLZ7LMi>-*pIEpAApuAT{5j;TBU&YJ6Sit{1)qKN z^1vKQ>f$e2nM_SKdOED!EE_vs**;x|b9#4_i!%F>-0-&~5ZXd|R6nLh>K7h2gLa{D z{!LYf^QyO(&FB-HoKV#V5Y{3Nax6VD0c~*1SSF*#Pc};}n~CU(%9BmeGdULn^_?OaJ0-LE7G-#DT3f_=OXPQS zX7dt_Rog6YE%@U-Un<>Tt$RdhQmTV=3d-s?6v=n8VCKYw>K3WlrjkecE6eN+mpLTP zqLfA840Os1Sx&4POk8#>b3+SEFIO)2gk9A@quWcdfq58uP{E=?<%adV_@R7XHFFB!D?DHzb zAvi;LuB+>5$>JR47-a5sP+e*fHn1I)LvrpJ)ZiHXy>oMZr8J%}74Swu;0Sy-&I(NG zAn$zm9ct)?TQIQ1m1=+9S<8~}asUYjoth5ax;dh%ul!qICkZTAc+m}T%?0Re9co)D z*&J|)CI8;lU7#8w6D9>@viJVh}q~6 z!Z7VI+Ujkycl2M!E*jO|qRIjZ*RS}2thD&zfw!j`ak|bKsd0UgJr^JNAIg|62fz9F zB`~Dp6Jo3s?A5yBhrM#OP%PaP*a)G;+Rtm8W6l7cNwbTb3gGj z)3_>cz~;=I2lzfv!9hfPkK(x-oNeXLu8^3=h6Vb(UKc!8%r z5*E|me1pMS6M7qHHwLToR< zU|TV5m4uu9F7g483Q3<3=*WtTKk^xQ$|_~YBESrS-+@X5&(#BpoO!J{V?X0Jz^|m& ztHyQ)3~ZO88cGqi=t9a^+B5|t94b8x$9PX(fT7W!)qU4PXm$<4vb*dK=%fePECOuq zgOJ!~a6GE082T(4Vy4=zVa}2fS({#O!uFzOEU) z9?V$Z6nL|xk>$nKeYRR0xE>fY%Vt=p{7`wVb|na1U3fcsxW4mtJkfhY9TW0gsT*lJWm zYMOUU=~Cac+h|V~+y*m_pZNQS)Dy+ach@{jd?V4%(lp*R>-l0J>3w3wja~NmU!HWdlu+n|8 zg7(0qLqlo~(Ix~`T$n!XEl$hWS2avi1b=Pmi~$7TQ$+Xth5=rU)40KC?T)byhJbi{cXkn`$dpI8-K8fBMxM-n7x zqQa*laL{uWMm0`(^A(3`e4LGHLv*-|{_a-M7WKU-yH-R1^@t_|AS2`WAHz?qsLfQc1w~kUcMuU;yPu;5>d^1f=FnR z`>K`&h1D;O$=EVi5}dD`xmWA96x%zyy{FUB*9}Hw=Oie_H3&6kvsSZScs+RD?I;Y= zBIAI5bm@}(visuG?#qB+1?f7ZYuP_xLu7J)_8&#Ykz$dNN0w!()`BXO-!L6Y{X>{y z4|Q-#GlV+Y6|mO0tcRAqgZhTBM}^#z9>@=nQ^Dxd_xasY;lG50CF^gLW2j+ib~~g~ z<`Q)K_gj>m5?N%)`keRzgasWZ6c}0JBwRn(Q}jeI7zg>J$O`WEh2OX%Ika8&E!_H` z$CR{l;vSC4&B*L$48x6q0>Y6=NG%3|2_0w>rGgtgFZ#tY0_O|%Ff=jL>~`S`H%dfBmm7d@j7%X>R3REJNv zb?LRcSRuDMg$M^l#HfoGrs;!@Oa~xAWHlUbn&KqcB;*Z~* zl!f~F_D;(~C?zDeBO{3MvKvSCaJETK#Dya0f&z1fD2n(lP=;|c=`8`D3=E`=DRzS> z4|WMbkRVF9oyg( z;`F4G`D^ee-?c^Q2MnMkj{yJ!3RLAi+AG-&5GlcsZK@~wwKp||v5q5n=W9uuHCzVb$Y3k`8?`hDYO~;e*~=u#nQ`OtnAR z+VR1r-l%ZKZjYZSK5<>Rn!{)3a{^?Hm`id}pldM{u@{#GCqSO3ftyA>9iVQ9m=Pf& zxzXUDcY=6&5=M&rgP{>G!29^eKd@)6qtez}7B7vuFf7Nm=Z?l_#z>td;h& zWyEKSR{?REJb6M#l2t@*k-Ohe!Ut`yU~Jh8Zl@U_yK%K-ddPE1aEH15V#OD#K2kzS^o%zmBkIgQ#XTAN!~<{P2P=oehG1HM*Bc^&vHonY}!4o&b_Mp`qeLaI}ozEW;qLdCd!r~%UfkH zDCp+Wa|nGjI9O(DYK%l3$qpJ)$d8$c13F+D@>cZEOjH>V&=?Tr&|0el4aUm;!CKdk z62I^78j$gtrv@y7d24$-9Bq$sR zf^jbfW@FT@?9^SaWZ64hZ{5Ol(0p8Z3M0<{iWC8mUg@3gQxxTNoys_^RaX~`t~GD}Fje+Y?)cWiR#DAuiu7P{7Msg~ z05>KubgmRZjIW|HZDePI`gb9c6aH}({PT-FB~iB3k=!V0Qk#6Q+U);Pwnb%v*%@ni zQkm=;TA#0kOH7 z9>Ut4XqXMwZmn8ZOe8a;K0C!M50O)|S!Fq3zQ;<};<;?cQJ-xjALIHqmg~xEDQ=kA1XWRiiCG`43E18vpsM zB0lKdZ!yqHfP=!h^K(g{PjmiTGF2?B13+`p*}TFacZ^GU!$CvnCTm)jUf~%8N|PaK z4%WOiOpvF1N~e*Xm00O7EuZ^*9F}g3o-ag#c72T-Lfkn* zr6`384I7PBOuEcw)>wM=i1Q3hd6TM}l7eTQP0GDhMW{oOBcSLoR>s0YCnK@|N!Yld&`#|L$mf!-qY09+MLCqQrWLhWPTZ^v zH0UQ#$j**?%e5xLTY?61Fh$HTOh33-1(T8sc=RGM(!NB7A!5wVdCs#z*$%Y+zLv*k zlxdmZU513qpY{=1Qk*s2cWKC};VqmjH;mg#%fyv1&-kOtA1clvnrpWzPri|geYDVa znz|Ah9tGax%RMDzQdP)rFFPXN#u3YgHc+bH$N#0B@9 z{asDAd}ZOEyZ&sLT=DHFiZuP8w4wZcB!Aa-7-&bn{%S2eY@)LLtm%;R+7J2d(*F*? z%W%*{&w{pn{JXiU`8jAMRZU5UgCA*;tCZbzN+bW{Qt)IX)zdS(78q-YtLgyhju+Sq_YKgzHm!!@X(Kmk7x2YfrnYgM;;^&ph*#{qD~!Ae!S* zdzW&+MWZOex2QswD(|_DEuh{;A?=aj9b)|<9;5WDf z^L8R!<{RFC2u%dmH+Q2x;>a(^Pjx0*+K$}TdY3?Fy>c+mAl z?VU6K33ES+V$cp}fG2`;lW||MW;384S&3QbwVn)vZZ|^=RvZ!*){Ic7eh(Jjg60v+ z9hP%>qc*~5LO2p<3W$pbUZP*~T(D>Xs_LXzsSaV(Dz90oUeS%TVBbI680dQ34PC?6 z)ziuI>&EK-x!x{=_U`L$=jg-w(e#SoKAS9Cwv71g>{?Z9!0b~-u9c@rKa#K2Q@v66`2VPYvLk7%B6Ktlr7p7<2y2Xb>-TJ4

    a~7v*H;JsR|XjzjgXXAB(toJp*=5zH93GXz(*}dGVm1f zKzO`5tF)^vlvvyeer=4H!$y)D2?j_-sMwmklmf-vY)%MN2uH+_JOm{vu)%=bml5HR zn-=}VFbp9`SS$ocaHPJ0^^_+7#z{QN7FgFVI&}11bZAj7Mko83&`AIrCo_MRsz1L z@$U>~4=hs;yPIFv$4d!zpiWeVREFH6wt5pUD!pcH_I&X6i!xr~z)R}0-)kRk1Dfep z^Vu1uZM#a%XINKZEyD+IVc)Gxv#`%V5fie23`kN+g~WV#>q8<;^zMmu#vMDKdPe9x zpNI5gL9UJ@@WSUOoLAyXD|&6#<`ut7e^yJVnUzeoOqKOfU0%(S%q<-KFTZZd9L#-Z ztcjL$f%CaCVD~;*{Sn<}<7HlHFYTAjg6Wl6o!V4>v82qpT)j(#^-~BvpR@paj)W7 z-nhzZa8EyCa6RGVarY#DdgS1^@-B5+-SDQN8QNa-FP-0e75^{RzB$IWZ|kyb+qQ1$ zmTlX*W!tuG+qP}nwr|<4uHXCerIXG}`s|{K@KFo|aVYnmfqs;JY4W;~K4*JP-XfgoxUw zbfjF~DU%cvT|>!$d+h2wH1MoYsxQa5$(iCe><>N&k4{r4{kqiaks{qq&N&q=c0+as1;-L z`Xg3{vUE?fTh$Y)eU*%-;hfn^|CiCim!Os6r6+)S3mb@PdYzK`(MVm<_U;cr*?I9$hfaM&7U*+uMur|L zj{}T4>5`2y1+vAVveA!F#yZqQTFkWk$^n+xg65MJK;!YVI;p%T$P*Bnd^#e@++cK$ z?Km_GckdZ$W2Sy65CK@ja>L3AEx-CwYypjhLE}B;liV6B=RxXT;#CdA6gS2JzNwN4 z;7oEu%jrXWj42_g>8s0M6A}_A&)!-oM9E`MATKTtTUXxcW{kz5s^0fYCRX}3?jw5s zY=hKH+f@5k+^5V0MCABz!B@NQ@FST<{8sAPrpYXhaD(`vk3)a_oF6cmhiEeS2#~&% z>q@b38}u0|yAK->DUQuBRooafeHlNE(o*Dt81VucuKgS=iOc{INzahgtEX$kpJ#S7 zwgFuqOoQO*KlX_rNOpHWwuY3W^axtX7cL&LYTTW{a_3TP`R;`gl4lPW8pjVz4s7Gs zOmC%vKosD@l!E^kChA~8Yu=dkqKE1P^ zX7yB$Bq6Yf=0^aMrfqq$A71zPZ5(w}3P_+*Ri&y4G>to}wBV@X^#^Lc;TOT$&}IC>|F5sw({J>RrC=94cfx$)U#mN zbG?E1l`;Mp7H=}i4${}y&Nks&HFfL_@~B|BG%_B+Y|K-+N<)B= z@Iq}}QWKYf;iZ^6Du>4?i_En{7XUq&+xPz09oi*x1zKHLWa>hx+I!%cm;#aF{`2nw{ObEV(Y z2C%_ZND$t<^~R0C2?k~2o#&U4ouMfGWzMS!xu^M+aduca1A$}TtUZQm?S=|b5L8Vp zpj-@{ipxEOTVONdB6om*hYxsf{qphZ@Zh#SzBDW7Hz1mDl2J*P(EHG4vZit|9)sK*5gyfQ7B_MhESVT+|#|%@GrYhS`dh%IheO4Y( z1MEUoz;Y~fPYPviL+4TNxIo-f;0T1pR?0{&1T2^Y@-?~7t%2yNHhSv9H+z5{&M-

    -AO;!!5a= z+LEzI3mu)Of)H;u^F?mqT0T=^{V&K=mv?L;;=K z69PTUIoqo3-Zg58vcY5_HWj!2MS=$ZUfKYQk~s=B0PN&kjlmwm>3bmMFsEZ=bY<^? zT)~9*?BYVx&5h^%ZAz)6Iw~uhkj}@zhO`&?Ez?Q``wnyeo0aUjYNN?Fw2O>>ZPVHr z?z)?uGsnv0q=9#6dUDG&jZ8AAi&Z@8J@Oo^WM1bUUgCp?1B6}aV=RI31BvEd-N=n! zS(oYgj1vmwi%m1wY`pmyEq@QFsG*uc=Mut|*0+lo)=X5rFxH}fE7*Q*)m7<{0l$EZ z*OyKhgSU+EotgLPX*SuNllq`rsxsXLe|9h-gyps&R``UbRI3=#I73!8_t2}t+v3|buSkoi8k9)>K#}~x8NZgt2*EK zJvH{`GG6b8*Q@LzK25JCTsovSy*avE>#aC2&G-O}AV+R~v_FTI+fP z%W}(tw$+$@WZdVkNY6xjz^a+8@5~341?6X%q0WK47~sTnl%KSAYnwkOE$c7HD`g4I z6A>8!TgypD{yQxa8$hWXyizz682N}gq+K%>U_YOGSb#kA?Rv;+Xu+R>*07;r8-yU4# zgKSv{Kxrn{fHF{NhK1F$9xb@%IoZtZhD!ATkWEJa4wYDP@h{18VB=d`8VoY39o|^{ zk*89giIuKfbT;Uvtm_1)O@_|}(|!mnu~PO5T+G305t*{kdyi5BFTEU}V2w9yE1;Or zHd23_9SC@zV3cCPS7LGIQ&aWzqUXii5xToZrpD`jzE<9xDw~`-ZRh zO?>Xt`c`90n{{*^KIx7gfZuE!m0RU3(lk(N$=3SgD0zlL#?JrImL3!EnvcIfXQ2X; zPF01@+x4Wii4BqBf=_cz9G}dlfG>dcDz1^72C*t1X%uq`h42zi>qsIfxIaI3%hK7`;E=&Yu_&W?TR+*HLPbDQ0K;4KDXmB0E zAb<-h8m9YU01Y#;9>qIX)o3<@@l+VoG4}$++w%ppAHLJv1o*{nZ^RED+gtZ5BW?0L z+*x_S@$7g9<@hmU z_bvy$o-gj*!pkPlLG5DRVE7MYsGTa1erJ*|h6yRbuHeh0_k@p z_NtMS(l3ibMmos@8E_}|vVmV_hAk=TU3MJ66wx1`;3IoR-ZJ!$AmGd1&V`H=FChqW zdE)FAM8v@HtiPD<6;RGR6+(wwAi*^{RZG4Ij3qJZ|5Exf=Ok5KB$3Xn9umdj*}oy} zpRo%=hk2(cNGjNGm}HrPoa?_+&BxWq+YWJlXjX5L>PiCX8x04fzAe8>lsJDcjPc$u zK8Vy(Iq%?UI+8Hrs6Aqbdm<&_#Be4D0?}DW$*~#c0qt7WK=OB&;Z+TvbexZ=H4? zEmkJN5u|W~NE?vdG!7W>tVv9k4^Hz?j_-|j9zC{%_D+cz$cRW%pLks?KZ#~sD%q4g zf-#X)V?1BVD6F}j!a#jcBb-Y{b+5~wVc;&1(WbsO%)0Oe$ec(@5E1f6k{J;ig+(+D z0tHSq4hn@%G!7C4I9i`X&J|}!Ef>QcrHyaT0i^|Kh*I=cyb;4@F-)vq(}^nn#yBgC zq*EI@E|B#?i-a(_Xp01DQqLoc@NZN?e)sC)P->zm35UHaQv&^=SuwHbGat;WX(cg! z-$N|njE&P_8=y7joh&l$D><+f#@(5eC|t=Srl8KG)8WlNJ?}2;wF%cJ+X{w`ARSX@ zu$HkaY}@1wmVMgZ??c7`i&3NCmDmZGn9S8U_#|K(M0p{M!G*MFTR~L}gZZRty>!A6 zmFLicL4xgHEQ=4NmZ>{LCaTYKZVg#Vgg%gO_g`?+I`K%VGlV)Xan$UuxE@R*r*LD0-8*8c76LukP?!5qoI{t-GNxIi2&6d;tkDz{KjPlyLE9mB=}i{zv)C>^6E zXw4-Ssdi`0-SS7YY7XQ_{2jv@8cwYJ&j^5eglnyaKSy!o@X`?sGm? z(p+HN;26D~4bsb%v1v`enMROO*S1pEqWNX%pvE$*(!@y|Iv57U*+DqX3%S8J+GX^*651yveb{leJP>Jh>iAqrhan_pqZ%RqVwhx!*~FoG zTy#J$YgoDZ&dixy!Zpz2c25xf*}uMpHO{+`w0^Vk$m>9PwB(K;0-`dfP=VE%wgd=p zhk@CAr(=*IKzp^@!buqIYAV!{f>27KkZww@pL3p2-(0|7infl4_>00R)Zv-}b{le= zEGPg>Q@q}-!ZuC5KwI7)y7TY@dV~wzFjTe*%J2)9Rlc)gJA%3Bz5U1=71g->UdL}1yag$FNtFwQ*=;L+Knq4{ol!pN5k_~f#?AqMG z`1afr18D1%P`V-Y?i}+2{JF#N?HL&X_~^+7a$PL}__%@xeEF*bGu|%vEDGTH1PRcy z0SwUHzIwDB@$FUp<2&nd_N{aN<<)%g$6T$hQNv`leIH-OHC@4t8TYDSf9C}1>zU;H z4iIJa0knjXwLe-b0v!age-~$meC^Ep+<|=$%KI=W|lfwf9Q9%M|ls5pCJu`^fF0m(lXxjEl1^SMS_+5wj;i(YoJRqE7>%S#4OR@&Uf zv;Y1=S)1DmVIeHNUsn5*ZEn*M36(*6P)dn8OG;QOg&tX3%A}I$=V%i)c|~t-F5^_R zB4q56S{f>xwxw50gl6O%Vt{H#%Vc0m%~-YC7+)+QU+Ov}sJEzM{JS}8)LDN++){Kt zuiMUCBh4&I%A)c-4JJuG254i|nQ;SiZCY)qq1f&ej>rX}BcQNM0>yDy&}^|_kmV^j zjy1ANZ+|SZ(k8P#U=lZSvrlb_3Ddj)Pq?{`b+U7B6gyg(8#*e@FM4uSYI1RMGLD^v zbgO`fXB-#CI8=>TEe=&PEJ-8ncl~g(P$q2ZS{&|1Sk`(Pcl}7S0OR-yjPZxMvCQG1 z%zmNFab#xQBs+`lv555rnf1Bx)hKQU)EI>eV=AF>8f-p4ml)U?0d^$VfuBHq^knB~ zMAx8X*Ce)^fh-~BQ3comFHM6Ub7aUEJ+AS+8$TV!DxZ1JoHbfN245@T%+@C=?`^0s!wrTU zzg&U+d~=#&uB{tlt|gvsx45qkI(#k+gu4-3VG48JMq*_f*gFLi;qhl< z)HgKlUcjj7O!=6wV_K7Nu68s=cgdQmZi+eAyO?SF6cSvZGXbt-AgW_xLH{v6JWh(iFtuWJ5O9IY>mAH7mUh zMBG;MhWns=b6v1Ha}@sBO^e%H@oaEE-f$e#H*eQBoPwTQr0(35@d z?>Y|VvYO&~iKr%6+zg9TM@xtr2F^a4(+ zpYx2Z=PGQDU3V2%zs`*DUFi=!19i{pJ<5#lvIx3b3z{adI;iSmAea{CtiPf>rWo{5 zlFX-(+>{~Kb^iaX)s4XmYd?Pd%a!PO26qt!6#(F$YV5zS(+2&l{zvX)|AK&(+-!{m z^&I}OC;Pt>V3yRZY}UmPzNTwZ6^rmnA!=_46AMq-Qkumeh5bZUDyS?NEIL&;EH0}v zW~shEjaQC``0T~gwH)yQJdB;4kJn60Ow3sHuoxi$BYrg1Bm#l(dVOh46~KWIH3QG% z&uwh~bO8w;FcXF6>yw45siaFowDzt9A_09sBBG(D%CkEG(tAc;mK7{gH}6&V|e)oZ|px(-!K~$(Zpe?FAYh07WT6 zu3vVr^2_9dGlD38B&I=q(38!GN17za2DTQv3JeB#a&`n`MR2&pR-A-Ht1nZWbd^TY zv07V;5j9`hPZ^iz7RECkAcwO5hCGiCB~YSBbjmnWc57FEPAEq@vudqWNvD<|O;O0@ z#hU)EIA<7m=2EtJV2*R<^QHK@tEQ9h_r7g}FexEJ5+y&$BvD_C6`~}9f1r>?yGD6} z4k*(Y0_j;oD8vl8f*Th%B$12~w~K=#N<78s9vcN2er8ljPUqOeM*-*K=2^(Sxtl92 z?Gj@VSzZ)0f|7CEUE{gy<;B#l{wZ8%3%;l|A^!+IeZ}6XBO6vC&P^gzerxG+?)kkC z6}?|Kh(f@JHaMiOsQ}zcXZpM6PR=2H7p`U&R;Op%vPWB|&sFy`R{^DX?labURk9s) zs^7SfKboEj_J0>CSg#Ep`?<<3XX9iBukc`iIADp`PC4&l|q(llKK{W1NdQ|ZD9CZ<(wxhR--nG-q&Hw`D^ z9EhDGW{7D-r)YgnbXoLrl4j=f5zgA3kSMr9V{ur>aDptIK1pIBk>$Jxo{F^Hdw<~m zel{qyBj$Q&<4TwduYfcLic-{s8s=YrWR%sSDmdOOX>K=IW}FSemRDRvK8v6B082GP z$}jLB z<})Fh$>V?U^LW(M)*)8xg3t&3T#KEX8o!mEmwVQUZtDFQ{u}Jv?x+JYyFk$MZHh$91#RTwj)9ab+*5zlzpx30!K^OYDL{C_A4m%$f*>}d@uY7& zrQS*O$RE^8s!E+?4qTw|q^EMX>(MDkWa%T6I%YwOEl)_`6&*O4Qeel8)nD-zlXhN9 zm#(-aBrd#}QC$sVL7LQJpEM?~#I)&(#nlZzA3<#sLG76Vy3PYvD6x^b5qlhuFILn7 zvHIwO83+ePn?JS!jmU@d6Sk#GwZWpMaYJu0uT_r7eTDmVRXbS4!Of3uQ z;7!*>7M8J;suagZj+6AGdSFqE0*ep@s>(p+O;2kJ3Bvp?z zTtZ)9-hG;JmD1%@2b$iFdmg_2#i)e*ou#A*3IOm=B>(p@UJ>#?w1E3pjQ@X>&a6t( zmffI73BJCkjt&HgDn;VcLJb@i@RN|6UC+OyvPUAn6}y;prl8&Lxn>hL8(h&)DKnpL z`NP|6xDsSHjxtD7;Jf2521^voBS~=$|CS3BmKpE_3Fa2J0~^<%gc76n0`%73s079?CSrWcX|`imgMaRugN>zuE2e zYdGm87{(1Qy)8O=f+`jQM8_g3ZZzaCGcy#CN|UK8)>{htlOGssi{M8F!A&(Vr6GpU~m7VkPR~0P{A5zY; zTIQh=Du|g9IH>F;!a=BC!laP=%kQ?5QSo^V?k|uTV?MlC2FRP$5=xm_Au=VVY=XFm z4RQEl6rw&C=DXeC8qA=CqEHDfViYcsd<}lSTlZ8zO5u8n-E8welKu3mRzYTDtw8++ zPz?SGsIu(|MsifhWk_XmSSSMnmysf$beY?q7ybuq&3!5{`SK$*7_QmZ8?{}ZNY!T2 zB3}4I8_WC2csa~CGjA@yHGkqPi3)CGGWLRaF?3*qy{M-_=0fBQiP)a+6ospuM8r ziE5RO5j?nQxZR6dD1ZB>xKp>;1Xf8~^}Il}eC7*RI~!Y>Y&)|Izz2N=?1GOzMKmu; z>lVcP6&%P0tsl;$oqC=31Yb_CjBH1}#!B{fT%m7D?0_^qk6E-(WRixqg!WjjKcRj9 z9#ckA6*4jB)i<%Hoy*82?+KJ`ejQ`sTO*@j4Uwzvzu`8n2bJ#5H@1?;t6Qzl2E-?5 z+`BAzwXSzJM872aTs!zc{|5-4HT(`e|FM7l=N0?+FJCMI008fQ421uWC7Ui)HGh&T zlz)th6$(e;bX$~j#KN6dW=RwTR)LnD#;`VkCzrEtqelqQk9w}tZi_aNg7V9?&F&E{ z*q^UG@mI6K6F?{QhLNCN(h$q|CUtv{6I=ZF`j4TT3g38Ns?aFXjUnYxVDm`sw(q!7 zA;VfSkswLZ6uDe()igchwj_})-r;_b%O~y+{x)5x;c)%Hz=qk)4mY>!>7dka7FkHi zO|il*s+co78YoQpNle8T3d8dEsfZgJEJ`_`MSp!4#wn-ow_^>iS`tDIZ>2!Uh~04E z#1j;2ZP$}-yFL40WRX<^WX5)X(lI}1P=<*lL%lrHN=2G9ja=CvW$f-yAfkT$z;ODH zU6fG&AO-c6`}z7t>ch=}Ogxo)tqBf&COk!<=Q~e&m=A1b*e|FLv+w8KehvX>f!d8y z&QPTO6I>8ZQg>0NiG7kHHxUGshF`8)-1<0kyCicZY8c}Wb-1aS-S{AIIQXn1Mr&uT z2$?a((Uh*zFWiSzSI%~*>H^mUMdpP1upW&7gW`rtNTh}pTUyTD+SvemU>$G0z(i$$ ztVlSl-YMefZ=kd*BX`d1#DhO=)pGIsm91$?su5?jbhGr;yK(xdf~tHTajFm)0kQ0b zhtva7pw=CmRo$iQy{JSzwWa*1q60zgw)~{kPT~xS=p^E{50N5~Bo}@vkm(ocx4+5G zc?PUgpvRrsYjwpdsV&f98?&P}q0kQaIu|Cj1<$YwM}*Cn#yJ)sAF=f21s{z39;S)o z5ik#hu|h8VUU%F;F-n$O70bV#UXpA?~i zB{*QKe^jjcT<^@zWr2L`@5gj92F-BZ17=db2wvE5-#FYA$C%>zVi~i0K(FkW&40#v7nFMjiBINY*>QU_s z)~;OY#D27kJ*dd|0NnQU-C5LjcV+`XGG`%X!*>5rcFoqSU6ng^o}pZhp;|hfkIK8U z2?|P8_DCl1fJxcC@r>@%I-t@w;Ca#t*ES|fok7`O-TT!j`QET4|3vXZp zvHXFsAgWooAiq?eyC}E>9yA{G5@P>S&|F5&9lynD-eGgWntE5qt)AlCariG2_g3*J z86*$@fPaF}e}$)ijNAXen7C{FSkgM$*#C!u3)tTOVM_AfkNw{rLjU)J=Oy>2!v;$| zZ_XE#6k|#P&N>?9O3HfJiI#fUr@18FhMC98Ut5Z>Mz=gMTwcqfu8(UQbO3Q*5K0C6 zHxAZcQ-wsetJm5ze6gE51gSqZ*LKKd5c-R3GzsfEJ+RlGb1^-F`|cdXMw~;q^&cJu@4R+J>yAdM z@r4e@p{}cDqx|kRf>6Do@_X3xta#TOx(GUX_tYptTKJKsEqmEo#@-3E2wLPBKU26P z#BpL@`oOmPg#$MahLmqA{<@(>_sA4ya}uXqO+FE4a9tr9)bxnb;l$d2;TQ{6{~Aj` zMdS?~+l<cAfO4J)U17H-+YhvK1&tdQE#`EFpSf81vdQycN8)7=s?3fY~akb+{9*2mR&wA_s-*7Uc#=4UyZ|}ES`nb44N4SPYxp{-;lnM zQe4wsc+ySM+{thV6$=R+3n_2t1_0y;(Gd_fY}FqqPejp-4^7ORcb#wLTM|ZmrbPS! zQlU;-Q4gdH*q-;kjQ{W*F zR*Wa1gy17E;P`2>L4d=O|Ef#Z+zl%XXmEnqOm9jc6<3STO!Hm_O^*z^u3_%x?!nj) zjvQg&_+9aZd`ZQ{)BX3n_j#O8IF%M&>+wX&s_-@-D>F8oASa873QCW3pG^BMi*evW z1}1Fem28)e!~C!oKh{Gx^Rb0EwnNy%9>3&#c6cLrVb^0}*HfY9sXHeBDKykq8RnJ9 zIEq~XSjN6}J}qR+i0y*FU^Iv-`RP#V7_HBb-IhC&X^(BeCV{@sm9y0WC`UDEoNBkfMHw2KtYFTn`A-Y*C}4$Dllm;@8JZ4 zJP?stg8$VMBHB0TE|AJq&60h@fbqavY)25LDDTqBsSjXP--5rq1F&++5sDI8hmJ#;m&HdCXY2wbC0 zqu^zYMp+R_f$!gogU6$xn+I!<1}#KA%m!Zs;?wbPp1wq&hL`@Q1N}~&tZi?bY#kj> zj6YGsEbAWTaKz-yiOf*i1@g)2MFWTBat4nVmf7W4Y52SZR3&! zKfbbRKtX-;aCY79y~1(mYH|iU6UdvG2L94IffiH&Y~?J2?_*OjC9Ed7zw?;~u`e~H zLyRMJ1sA~6y>riY7Sj%lAApsTbYajqUI`%8=jLJQ@$lp#&7&9T6#x3{((%enPxIZl zkihy|!>tjoaV4?{rY$5a2A_!#SAk$ zh|Kc`g!-!MQ5?E`Jv;J%`09qNuxUDHkgj*s(Puc>Oc&7x>1@aF>0E;Mz^tjPHeNUS zKH_~4qsdPwYR!?eGTixsWlvByw)k|BR=rU!Vu04cx3bQrw!7WKikdWyz*>9wR zs<;!mwdJ(6pLe0dudiNo@RRTC9WI$?BA%MZ}P) zuKp#;>xbMgBqw3J=2(Dwf=`Ifyy(JyzSu3TL2sGJHmzW>R}b4_fg{9@zRwb0d-^A3ges+6T9~)P|Y`ED?;K z{;u((k(o6k&I5yGolv%Eo8)RgkoHc&>UrXqTnmcT%QVZrd^X`%kIcL*pe>Wso@t`6 z(y=3|u3G)av{uD_;Eb6{PEYVneSkjnFnD5D#~Pz585HLm&Y*0MjH(F)lF4BCZX4QP z&Kz^Sn*4X* zf?|im!CmiE%I0;ebR9^ISmmgY0T@mkV0u%tZm-#lF9SN}?#3x8SfnvbVO<|oG;Zh2 zi(!yMw*l;u=q@tF>%3PrK3y>J{pZLn0&~nW@0h{v^cd31eSs0eT4(F`G_-LJqn8;t zdCe#}=YtjevF!Yw;90jYK>qr&eu=Cv4l2PTUBdG$0okzCq;G zi0d^XM;=ap1q8ib!n?ya`p2t4z$=f{{Dibfn;GA=WT10qAWvAYJm&^e&Z2!z;;Jml z2RRfVQV__PDq`P_ISGAdK7dY|5B#c+cXPZ(cRZ3on12I^I`PcRMrU-BTU>)%T3wrj z5kl=rGq@H4`K<}F+5tduxv&5{joRxmSPnOQCS0&XvN^radUllfe&EVPiwkSQE%?2@ zryB#_ky&|U8FgFJJ=9$-G8nYH7>4MG+*-C)>5_O#!rwVFS7Tw8GyFPCG{WZ_IueL) znbj2j%Fe9I?ul6rfrtRiUKED(NQm99M;Hv{pJwU`aGj;V8=>l zNv|+@5+5>f?rmbM40^}@yVL@cQ{79bzk5=SKc1)~-SUyR%s3U;ce}ro?mfYZMSXT_ zgntqpueV5YE9Oqc4_)r{hfR2yX6A17+c@d_)v*}B8-fDSfLa`gd4W8fuPE5_MwZe7 zmePhIerWHUb5`h`52%1$Sa=|!CTehEwgZ}hq?l@##7uHTZBU~y5!5e!gS5Cy^KR-w zx?boM_oUUf4C`Zlxz^?f0)y%Y0!upg*uRF`_i$)vT>>Q5-X2Ic`-(J6E@X&-_X9SP z#o`N{WV#0PKy|oe!Ynmc*9p()yxLLGqinrjvya5HM<$%X(~T0}R|g>% zEPF?X4>Z3xobeD*X}NAhyTfFi-AOL@kpY5Mx${iyx|vaj;)LxKC=27{;fRTi4=zed*p%;pj=qog2cHH||@VY~pSCLo}qW2y02fP(# zu;W)+2izrg28p$}BxJ-6>uD`EjFiiyT$e~l{1@n0D3tJ z%8*$H2tioALj>U8gT8{6l|A}g)yf29ty+E$5-HU%XH?3$I&uW_%A6@WM_TU3TEZ4` zhBZ-CGk;axvUT#J`rz#9rwhc&aTv%=5BqaAs5j-EPgoWJgR5FAe$<(`-Sb99-6I8N2>xP1aC4z1`EOcPfs-!)!**~PLj{>6(W%vb z-8Sx7=EG+0x3Z`q93keGiz&bD_NmH+4#=Kr$`lD?LIqI-7Rc{2qer9jFi}TOe93Tk zmGfDhed@n%6d`NP*#GV)_sP_7$m3Tz$LrKi*?4T+irt86^de|Ep!*bAr*PwbelBNh zae^5&a!ir6_Hpe>{N#Q7C>Ln+Vn#8yn<$eHQ_MqZmRu~>YCb-S0?G@e0`Er&UuTBt zKy!nI9VrwhrABa+k;wQG_J>1CgxYAR=p#Frcgm^rosnM)@Fo7c6dQWXCe|31e zr=eH`H8LrkRgD0ZX51PV=&+(CLGUz&zN~JVy?R0$U)!1d0cdCuK8W)xYfci|D zXQwrwFD-5IGC!w&=GFxqp6#fiFI$>o`EJr^8+(=o-ZwNUOnjJr=6zMpO$W1*WOC8A?eI3iq=F0R!k7Wq;ZN~r`J?4+bO$r*ASq+pNC~bk&6tzo?EBk$q zWPn=M>5xj$PO^kSz};r>2#u5Dq{~zSU7O6*t%jzelVe1$JRqcT?Ip=ZK(r1!*=$m( zFbfTO?krL%S1NMrR`qW37v(7O)=0GR_hs_4$@06x&XwCwpeDqH>vut)`p_42+z+eM z;6g0n?~S9O@vtSm!3p(ymi=H|UWpCz+iA^RkiJNX+gkLl8mkBC ze#3ea)WKT&1?b2mTe&A!{P_6wqg z=?{XnZdc@K@UVq6idBl_+aLY*rRHW$E5pvE=4A_6w5gW2ng;ybhX8x=wbj6&O^Z6w z0k7FBl%@@iyyHpB6h+oU{}WYy(isaAzRlG|_KSP9jXqTslE(zm0Z^==1ju}ys4)5s z+Ag8$BprEMK$*6zC6i{&ZL3Yb-=QW^#vrkmD8x6Je~UyIB5gUl*j_5vnOb3n8bla~ zCY{p}+pPB)GwnB)Ty>`s&VfrwxN()8{$_8zm^a;^Q6|rXEh{>%D@etdlA%UiWc@}# zJ2bW75wrWE?5Lwqb2kf#xI$WfPru_9j*>YTeL`SURui%_t{N;Su5G8u zoop=(pcL-BL`y~-rfFkOSMak4~aPrf(QyEn$vJ`=$06&+{y&Do@M+M}r@)ws(tYJ#-~O%!Yq^s=gPM z{&;ssUSWjyLk_s<^^4%b;G^Jl%|frJQE}Y19z)=TA!1NsC#05*rVlnxn)ft@ycFe( zRASv7Jear8`4n$ZyL^ADbozBzz&U;AVdqX;jHiK0Eu@!jNg(kCF|&ejbdwuJ;i#Tp zA70<=X^1>tP+PtqFm&nJ=Ie=)tgPJoDbVz~YLChtwG7(XDwHK+Rc_nPm@PtEzLpGf zn(u;TrGEH}aw#3vYPoBU2o0Gm)h2t#TK}J9GYf(oWnz{Pi zY1R}k;j(M`7eBC;=WoF^DKa-gRp+-+1M#!Sy$?W}J+t^myuumwW=V`h2{*q4o$K5Y zVNetAz;j=XR6NGZ*^>mi{T`vgW}+3ivyDdFU1;xOc&>vD;hWDj9yIpB@Lc z8ni_;(aOK`kC&kjfBq6}97PUgn-p`EK0gSZCqA7?T+iDsv4o=-HlBi%p-Bn-!QB^;f>`T}TCehg@9j#f7 zvCfK#wC)mEO-M1EB^M{uyCiOpCY~_6({OjKYAVFikP4l(Jren51D=`#5ChXM0tCSL zb`^-ZMkqZ+m{BHh=D>D9MgK-k2{Ow{Vumu#=z}eE|MeUDFbtB%NpP0t;y2e>A~LSt zHPLN4deCwD!q{Zx-8hn{=9q-LaRD@}V^kVbB*DWZ{nzXQzQ|j_xmiSd`m~kJt;$#&mNFZ@aNA>@I21vfBMeCYj#QE zdq%w6mWF)?^ChhJk`#D!Qc@hNMzEb89_L^9?LKm&y?^rR3`S%-d~;qwKs7BeRUkC< zfjT%}U{GB<@k~H#6MKVdOo@a8&3MIx1=@QjFhSJv?dxBufOh8_2c4NpX=GQbsYJ^Q z&$`=m+$op#h83Xv)NJ@5hXg08rxB;lirr&|nhoHdXF4XA5jHDAS&E2Gq?~@9SgYJD zjjp}VxTm5V2fA&4*JPw3lL!kraH65hy9*2Q*8@fK?Zvua%1&ZI=P#Iw&DY=D*FCjM zYf7pn8cXb&X6>E^aYqPn~e||jaKD3YhUqA&&q$x#$nix2d z2%Arf&+vDuMGi%8yM>G%_NeJGZHwM~3TzFDE6V&^PW*ss9wTilH96B@F$Z3eOvLI!+ue zR{6V4xt@&9yvA3&rmrxC;f#{(7sV!Gu~hTgt13r^{F!Cze1$#Bh31K+rmMzAEUjjP z)2MeJCJZm0{MUR-eS$Y;=K$||z}An5-c028zi7Nx-kiXw=l}r!ROA0WdMSYT9~y7| zcb)$Kv3sCP)k=2br$;RN4}(Gx3teB`iZc>A9IgcL5uAc!5NDPQw}nAX01Tc@WI5dTjCs!P+)Tf}2 z2{=haL#RYBG%^3svq%T59+hn>J(aJBLGV3?OhuA+x)*wpbwdpxLnPgYiclu0ZT2vO ziGD#W^hlzxtyV3G9yznjd~D}ZgCd!%Z$)7I216TKxuHC+>POF*b|ZwlwI!>5bC25FycND=(?ooFR|7mBn<#+5wRhvqv=tk;1iElFV+DjC+C<}w*dw? z4FsXc03u>A1t&|fE=_b>)&ML|>;SCuPsA*zBS1Q`Vxh{&$3SMk8cLW@24gZ=yFKMs zle`9G3u5_}Y3H6E61`Mu!a?6GCuir&A+9#uJ34tz$e+%Eg@^=RaIb5{1K4q0FmCc? zG1JMrNd3@pn4pa#%4}UrB&;&^$nHT?SJd4R{_lsI7{3+KR_N=@H&vBGe)kK(;nk(v#Ij;H2h z+JiLOTE~Fa>ZrO$2=@)&wXpWt<) z-5eQlXvX1GvKD51vS4Dm8YC-uPf7wL_6sY;o2HL$?k08(3}gTpH{E@BI85Kp(fnUu zXkD4A>^6LdU?z9bGk>fl92ke)arY1P>44BiL@0w&0`ceA0x;ncozWK5nIhcgGn)vA z{Zy9_F1-l^0CKAQgq!l+P+bG&VF@-bWPc3lnM8_pBxhti2NmNqsAS9lgz}8+H00@UBk$IvI$Yj}xW%AVZ_Lc^QE*YYpnN|vcIAq!v+%knD{ioo484j~ zWyAwLiDsBXgCtsVbu^B6H!r#K6)3WZ?r;>!*-VkUx05s%J5pk@Kp(c($G>iCOfZnzt@(SuCn@YE{=b zw`%;kyrHd3R7DvvS53?MyW;#3bE|xGX&#onM7>_0`&yd&>a-R|`c<)7PNl?ydKWfP z$kJR4lwBf&%fh8&-4^VEd%OTpv2Oup5VjjpP-lFIythj6>N70Jg^kc!1@~m+Pg_TW zREXdef?b^6>VgDyQJ@5lf&K*|!1YIp564449s113?|e-OJpk6#-#ksM#;sS$3m|>Z zbhxgje_OhTm2D!8IfbIk7;GKh>oHxOAX^&Pl?Qg&>s<)X5^XCJ!o`RU18p@#d;fT; zzG|=;)x=G$ns*`o3;dt%89zFS`tzUGwSRV*f4~2Las90RC*3puz5o1=8)%L+|Nf&; z^?lW&?+X-kbbc|4jv}nnvL+;LpE1ZE57woP0!I7ao@cOcJv%UECDJ1b7v5`Vrk3zy zdpE4`a3Kmc;Lph9{&ffTy)(W+3@--sS)x~Gy}eF&VZnA5VWrpC^NS=y4U> zMohGOzUa7tG9D;Q0s?o)IrGQ^B5+KnkZ7Ed?juZ7-*a1DCjj6d(bDBVIDU9LSdI|4 zopL}Sz8IaZ+(kEJ@gcyMJNZX9hUEe&H&D%R_)WjMR~YU`c0)FVBQSYO)1i=08QVkNj$#R-C}rG3j%l-x@qR_-6Zk{oP3#R07tnJtq1IM zP&A))Kj=h12}LS4VO)C5ODzHVpZmm*znYU zN3ssf0+OeWlAtGh8%+nd8Cx9aGfNx!4IJ)-Pr0!TJ$OKb(U*;3qVU?lcXCH`V7xqq zk9^APeBUo~L{GoE2`5Y*AZ;6=5Eoaj7U1LOI8z#hl&w z+gX>+H?L6)4upa`n`S^}+iF{rwiO{_6xa|sgkM*X$ob(928||}$g_)bzIam9C%b{p z!0<5k&3VCnpp{xznfGRy_AS(RIlOS3|B`RJn&re5K<3dS$4}rwjlUDETOZ~ncbqg% z^`YuqM$-oAN?xTK>k_&;&I*7L##5{e#?zJFbL%s7Py~VDcIkBS*Me}IS=cXGD8jH< z7|e>WMVLbUKwWaO;?v1Z?~lo^k$Y&BR0?~lW=Ig$Qf;jj_!+G21I=wXO9|s-Po-Aj zh)a>sOnJcDNKJe+cQqmnjWXE4326sV}!_78c4+c%2Z^FqDHt} z$gkz!Oe;r53E2#2Xqm_kEFl;)aMTuXm#nIR)xoM#9u7xoRKk^F#iccftb1OelLcg< zwUbV7@ZcDs?XG5O)}558Xr?B|fMsEt z)m~Ts!^Fc@Z#eGyb!m{1i}}{qC(laSX}q`363NLh2bM$W1~d(It`vwQ;z&460+BNhD-2lH2W6pyHlS}FC!h^<_+79J6+YHt> zB{)i-t|YODC^Qq3GJ-N>u3hU!;!%9;I%1H61|IFoTS}A^gsg}v%xWlquwCaw29nM> zH^~mr`T%6GTDL7WKL<}eruJRIlES5OE6h?bLHbWbWQWk&m92Sk14`Q(>Ep74=)vwL zvLxo9gs|v&cFV)7=>2KS!M#yjL8V@=WjB$QPVc7LUQ+L~POuMqwB)TF^Xrf-A7%EXk|jMPym&ZQNl^)UhrSId<8!#4Hj- zl<>Qh<02FJBtF{806+e8^5?+y-O1{g#ZG=so2c`3V~JAA0Y$f#s8B{{VRf=7Cm@J1 zdCcltMj>8OY#o}&qRhc@@;~jXP)uV|crDdYZ$r?H5+hSUYMllzz!MhuElG<7VtZV293S;@W#n{GI&yTc&6H% zykU{+bb&h75Zm3nqNeNDA~}$*<>ZA&9~ScU;Q91?dYR5S<-yzbMRwXeQN$lF*$7GM zgVy{T8%|=p5#+y)9D}ZNPmJZS4iO{%Ib|mZ{e6mO{VTk$f zZP55!yL7#X%02|-kQpXeu!1OW#UP|aiKq=}1YAbv(~t-E2{E*!z$OTG^&j*XQ>k%7 z@}+x6+=Qd`v^;+H;8Xp>kZ-_vXlPnhfaVRSw<9jsv+-;ESCM4%t;D3&nAJ5FlY`7G zlf=qXf)%xwnNB{EOSPGlwdoZmuEqI8@Yx#UHeupCgdcIs=~9 z#8d_+Sa88@02lP)gFa3;X^=t~z;94zJwfmv*ypveVm7Z|zUa9G~vjc=~9XPfh)cf*`(+lqrVyqIhE?ANLuFFI-(a5hr5sP;+NJcx{bM8^JTQTpM2_4 z<*<4C6$Lch$ExaLsH3o>v1Z`gh&@a#KAKGeim~;-6>?ovcQwFozpuLn>6Hz)FDcuc zr4|`U@@o2$D?5ABO|8+()7hV(las^J$j|{x$0{k#!h&i5>bHpdcCYdi%F`)$3H5rp ze-@CAn{--X7!38|6HKVvG7jkZ)^mj58`t z=0B)tHCznGO8$hNyTw0jxH%%uz1P{1bVigbhMQ4XJ}p8NH$mG@iKgH9KWscNZjMJq zjm#4(qPinV3zqvU9$Vfhnq>A92M1s{5Du>Y zh%aVj*Auct(1_IyDWI1_*UKvY>+d}_ z9b)N_s*lGqx$8~}Ae7MNuHl0YC0U^UuK-!!Fbb2n*I zUH^KtJ@&sgTskb6c|yd^J2d5iLzdwCH=KI8;p#Qntk+trDYkE_=^{Ok41^LbZtBsXUtCim%DdKu^x|&kX8aI;&~f#%ALhsBHJdzo zvg_X__OV)RgTt?N$K2?uwRGdxgUQTof)o1Mx&$)$=peP$;$o$!i7{0HNxB5eer@{? z?}Yw=tMWUNX}r)8aXxRBhj@fumW;fX%@;4+1OCeCCbGSm`Y?6$ zcD(g5LT@bfl}XU2yTf3+Qn-0{>mFDCu|DO$6lr%vHg^{pU%KP%jipQ61T+^)J^3cR zfDBFt%ff$$8hQQtOX;_)aO(!iZGV$v6gzfCWVGQh%ez zAO_Cs`j5!m>?pchp>E}QXuHB~0GcUw9Hy~Wiq??01)^IaUexmJCm~8NpOM>kZq8)l$zYAkrcZBuD7#4X^vECR#!0sM%hB2&x}`>451nhx$UfI?MpMo@gH4txo|9-|+0 zqyz~GkXt>C2nrD-V#v6mo%*oaM)d|PNpuqbh&<$wZK$&c?$f%=Bj-@Z!IHJHTlAil z-gl0AQJkmqC+BkXIGc+7?45B%`rW2NkD^03mejIVL5h%kND)|xp)ji?1oF2Eghqr< zUTx%f#8KZR$jfvHWdTjJQ9$C6HDr1LN?GJt^vstt2r|*Hg0oW?K6M5}9c=If{H{OT zGf^Y#N;dPC#sz8j!v!r3TP6py6g3mBbaN@W1f(5RvO(*f5PQ2H2qv(*}dRW`F#SfnM@purtQ@H6QGo^TY9;yIQ0xO z)h(Bux+{xXqtre3`1)rgf;4K~v+&)L@zO5s3Aq(0d%unn9^Xw*!*b^6xmk~VuuQ;$ zmlHy-hM0%skbu)(wa1}V;_8TKkE*duK$Dy6|2pceD;ll)VP_hCwiJh5uO(r(>PtJV zvrWQ%Oc-_zUDanl)qkr!482fGA#BO#5zbGOXi4o{^OHzk(a0;D^oFV=NqF>q}36HMqK$7(gd}oTiT=*X~>P$?ew_C z)BkF1#>)Slx;$J8YOAMpmTe_-icz^vXErL{$P*PL{mL6D^%*Ao$gnHd1}`o)4&ChV zDBE?8%DX<__1|#G$0urLWI5`p!kT4=uRk80&)}M7X*(Sq|AW=d(t17s*e-%$#85aI z2?=k2NRxIM-)}r@q}10;#ABSm-(v^vp$ovXUht3hW!LPV_mzMCH-7y;;jdi_Q7q^) zdo`@tVVY?$oo4YNUiH>k)K7V8Ww2(kPg^(1D*p^lKmj7UK~WA+JrF+#;^7OHH^Azk zXQN~f$@ZAVq}ulf;d(HLCEEyXOc+e2wW+T0JC7iU|e2K}h0lSqK@fs`D> zBxW7nv&E6zFv#2G1QU3Ol6Gg(+jel?$8hbMMp>QQ$2lQ-_k8PrGPaFPLl7fwdsOe7 zHF0wsD#$p}5|Io1(eQlkD-tx(+3M*Wz3-6ETHI}oHEfOFByC{&G_ZwBVhu}TFTsO1 zmslI(r^OeDxrz;cR#$AH9}|)I`x$eDSL3c4Mi&LKT$9vBD_&3(V?kP5PVJyb5}XP- zE0l->uYFpHF&WJyE5;gKeAOytBryuiv*9owij`R{5X`|B?IzH>NcB@)RlbYzvF5?% z^3lnP{6yU~gxRm*f2H|!(K`IBnwg$I&efi$3;AG1T4`Y34W;Wg>O;S-k9w7!G7lWW zzS!|vzs!qRvnL9YMk*_T5%C@o!|~=z02?GIRBH%v9wNJ|7{Xf`@dj~L>D*w-j}do? zH8y#J!Ukl$L1y!wb%E$?RWp<|qU$BN(OyG8DvhWqtVO3)^~w`mAe&>Lm6NMcR9e)# zfFKo&>4nn(vo6lSDK8#W2r_djX}ua=wl?jnZ_Q6 zr1G>Y&`~%CsdZ0a-e)iej|XU(GHIyESx!lFwbD*f-ffsPE34*G_&-`wavZWxPUcSM znK1G90JFi{1z?qDdJLAPVJqJ&^o$X{3l@9J4)y8eMsGH{s*qXS`^~%VA|Gdkec!UQ zI)N)2&4bq@zve(M6585F`JR9o5yP))Kl4(?Pjm6qf4fp~CI-K2lSakC5fM|u>`cPkt zkX)v-A)s5$`K`2-zBmXl+^nQVBKyHo#s|d{Hj>0ez?Dj;LopSN#}ZajIY*T;oJm?q z!6pGMYFMZ-Ap`CfBz+deiGt$|H%1qvku2K}e61a(#kr5bci(;Rn*E-D%(_|KSz}da zkjDncNLzL~gfkKO{m8vP0qI%m>6sds*OQKc4hW)_2&8yJ{kPWwgDG&}_Yid`^!s)t z>fbbmWqT$9UT{FKPM!U5V7r9uM z=M!p1-$d4fwcxfdcb1}{sG*{$sZcMB?lCl%sG@p8g=8PYQ|Y~zz!8@Xt8dRDG`x$3 zbvlX@t6XijJuM#1z=uJ->J1Y4yTsrB0**crC%!!(1j2yOu(9?Ch5CG`gh|(k^=DaF z?QrLMQ%>z(#3C4WNx$49A#{mE(;0n=FcgRBi9Q{o=>D6>p}N*4cPx%r(Fhmrf>mGyVK`* za{9VFI(aiWh%>v{n0dxV_Y}K4xVY|;1lQ@y{?m62h50X3Tp$I&_UkBeEA=Lu*ggeg z$F2(`M4jayY1}btfBlT!39m{F)Q%(i^s3-S7emQYjNu5hv8K>OO2B~zt&==LCQYA} zHUM89N?I=po42eYN3-hrQ=u&!@D;We1{MKE{&3zaux53$WTw$+Iy88N(nQ|gu4 zq}|nR!G^xfQgLVgfbGx5cMb3zIM-0MC5)zV`O>;kEN$*6o3+g)%T2>5Z|&DVc2jV0gnpMU*n!fs13?=u^t2h`1`P`K=pVhi zbJ1MAcFWOB%>Ya>H7upKgblQgv$IfjTc6m)ZkKT-O;Mi#o-U!<7NS9eG>w9p7PVoF zX(y_yuD`d6FT9g@{F85A$CD8(lLkdB-Z-n~3>jtI8u>#8X?K5g^G6KQ9t{3@<9*^8 z=F`R}&QCIDLdQB`e$o*`b#9YX$qL<2r#HW);r1ty7j2)orA1-P>@+$+vmCoyeiG>C zO|XqOPFQ)Oa{1b((XOGmtu_iafc?>czb#ujz>=UKhqRUy0+p;vD<&nkTuEw1A-UE{ zYRxIum0na!xLQfNnvi_4l6*lS`D`KibV~ZxO7aDr5Tu<5%sKj#b|fI^q#^A@LC#rC z%9)Zdti8c)V$9Q#e_J&7m_n~_iIm-#hLX#|UJQS3Ki=8qBkh-HV3{jrlZ70j3POlV zM=k-*%Xj%R*;0a&{nm5)Qmk8*F&Oi`L|w{oy&G%f6zb4XsXeV~`n-Hz*6i_C@vN-j z^~DmWjK_$LJSRk)S(X%7 zGl&gA82=u)yRA3*0coxCb z+QkW4^Gcx5jVrZ4M5OAEzG}Q~154hvaVye{z`aGjW6DkWp>Uy*cy4v6+`r~OQH-+h z-FaT@x9?GKn%5_Or8c1-P#GfhtNh_?zK_=*Q}Bw7S1aypohv{2jnR^-gbVL&SpB+@ z@tP%S3HG2%4tz*Vsj8dMN0V)z29>r4!3yiOMP0mgr&GC?QxMu(2Xye-KQ6#SHrK0u zvZ!fK(bH=(#1a6RVvXisjEE!KGI@#mnq{g%hfBacW4N@7vaelQwwiV3Q4w(peH+8G zmTfkza&}UT4gP{`mPucKvu;&Cb$BHo+wV;se_8)w@we!HSr`zUnEFaGG-X+2QVq*o9ThKQe2J9yb3>7G3N~q@oNt@Xk0E%%Qz*obbI;*=Dj{ zIuiijJSKedEDF1h2RcakNm;=?LQBJAABFDI{G_~sx-gDEcSIVYpajAnd>(TFLeu}? zzN@=?hxx^6U^_j&KcfEu1&8RiKsw0iP)56;Wp2Bk54%RO)>9+I;Z+5gyWW-rK9P_^ zch0oe?pKc?(!4iP@W0;w=a0*JO{tJ>v#ywMh(Lio())$%3ZTnK)+M9?mF|0=loB_2 zu!^>&c|dwZR|Tw^d|d`4g;l4^XwoILEVbcB74@ou@>5ZsRc1gE8F}8*b|PGegFrmw zad&x8;8Cvw*s00!*0NupzEae~%lDowJykx8#PW6O@?{N9;NHi9yVTf`b4oAZ+wpSB=iaQ7g7=UpEc#2Jgn5YanQ5tYA?v$cItvKmZ-gFmyTfWr66VsrF8ea#3J_Tv% zR|SiY$Lp_x>-RzwrqVAFIdc{oIi5hCYCRb`JW0&7`q z`?}y4hb!p_9MSnQDiU`DWm&Dyx?q&+MN}9rNt3er+x4G2*9)j#Toipd-Ga7Yqy7r& zJGX>jF4xe%aB(DMt$(%xMb2Ba#%j-&(Hywf<#RR%ZNWdAm9^`y4Z@ulg{~hYJVU@H zTc4BidV9p(#E*^Fd{FD&R#yqPY;YUR8@pN>zoXwN+JMlI)_b8=D}zY8Y;yylR%?S= zAg>fax0ce@!bI15Tf0ry1OKxWw05&?Db4`KSAvF#7*MFM8n*N&KvV~Wrsj#Z!g2$X zI+R#%fOwRH)IQM)9yQh)mN-K)Ne58(NGE6l>745YO;=>X!vzSZfdJ?&Xv_lC6clwy z9|CD8xxbiDshqFBV>8z@F5>b3;)U1|LM0D_4P#mG$JU}4McXeemFm|x$SXA5Is zA96Y!P4lhyYij5M4j}!DL-dH zXUjTStjKmc(q=~8Ka&~-+;kx&?#uF|V~nu6QsKNRYQi`!uXCCwpJ&ZEg>q329MS7C zGfDH}IZ!fPtmeO0hzcjR+1u@>me(BlL-Wq2@E|| z*+0j@6X{QhOy+1*G$T(>yx#JWw+MiL?#Hlg^Uu4KDdpY__&MQ=z>fvZrAao-Tb809 zg6^+Q3(NP%^9SLRNjqQz=(uCh1W`bK;Ya*vIJ$(@nEoN~p=wm&FA}?;TxDQWl*1g0 zQ(=CnFnjqK+xwC07O!OsO3eE%5|Go6U5A` z)BEH2Ja1tFva92nne7pH_RjvGlr!4g=4{S$*@zDM>)rOJ|C}7V+jq(dk1R0TxjUoS z?!&{yY0%6ust(az`2@^4?$nm2ls%ZkQ)Xm)^v?v0Y}>l{O$p;Cf;i&XQb=#h>A_at zobVd_<`RcZ<#|xcrAMM1r-Wxt?uey?jal@>?mLUQ=k$X%TH-L2Fmqna_=6qc-t|ejn={wuVCk-W9QFHFXgP)cmI0Ho5<;34Sq32z$Rx|STV6?8MlYQP2gV{9zQ0q5> z@aL@6S;BaaCBex1Q|$hf+?(E-<}_7JL7TJma+>sn9fl-ycJ$Wvy>_;?d9!XAM_#W? znR$cLC`y@Se%76YkYq5sHt{^3w+&mDn-7N%A>$wQvSbhDjoS4}80rf0xGT4-Q51<} z^zSlxZECP(Qu{Oeom{~}XKR?;g*CMu7_Qqiglp%akwK1bLli{zAS+WiF|a>mKp;CP z7<$>UoL==ccCpx>k&88v`Y~t8h6G7)wP7qG6-lp-&qZ#BFyEN@-HmUPNFJ8p6a9GF z1l`g^29Hs|`9_3b0Iv;1a~SP&>v}+CWWNRG^GhM8XYa8dk$th?Z0qR7{y3NGJb#y+ zC}QgQzfCDNsG1ku&r|BGbMo@{eO+374RpNu_%VNY@TCxo4fdrX`{Mcc;`Qod9x4JA zRIc_KR{tBsDgS1_dYbf0Z*H67Kipu}D{ITxSv8yC4cqA)s2*u{bFW+IG&E%Kle(Cb z)8H({{~b}~<@7V@YhM3nF|{+jdPaO6u{@}W)+yLu5CNfmat|>v0{f-k5ZXi_#t@CR zA5wM=j0X2TPRJyOWRBocVR_sLj;Lu8ho4xP*0k|Uy|5E;_HH`woX4kL#d_SB&i`Q8 zyz+#^R?gdgnC|#-3AGW@USIO+G<&wuZL6u>xWqcq^R7JW$H^73ZqU=de4^RerD*>CV;fDOJ?vwxjNPdtNQgFyxuTeey9f`n}v*}1S? zV)(=zI@{<;pFe}*qnT=Kv72k`q%SZGgx^E+@#@_0#*D>#W7ssy=fnN_hlIuUcGk>& zP;|-r2+DHfG7xTe=DWng>gQ7*yMt+Rsn)l2{=(gJQ~g9Df)N5G4}t+G(E(C)9;ECQ zg}`_3ausLESu6|#{Gyxv3|DuiOft{lm?YC}MWbz#D&&7`8N&`s!e{PqzkunF!IjT1 zDX5mh%y{LFi07B&q8cEBzL3I{h)>AL%+M=srVgO)5?D#yCA;|HvldqTCBem$0nm)ua%h z1u77tM#<8UmIh*<+Tf^#E0x)J6c)vFD1VjpM6!ya9TY_pJ7kL&v4T}iEQ!d1^g;F( zq(S)bXH#1}sL~?TWSd3LAV@4>Du0KGALOUwG_#oWr51n#bh-|JNY3Ri4y%y1oWXQH zE5ReY%n2eHW4OmqJ@?pc#?R>ru+l72z5PTSq+yDEFB9IMtWR0k1p19NR{w;!`XSJe zFm|S_yMRaR(}$(7g(Jg8A`ujvWnm|M(#~?%a?_3;NSPWP74&$|`;0a?vg+~b@vc1a zqk+=qbf_Ta5NbLgufA;r>kUeMtcMyWnGQ=IXJ+X$?8u*hu~W*^=`=lozNAE;M}uV$ z)WagC#P)hj&0E@16Sy(JzEi*%f-lrJ&Gwu7c-j{TeQ%bCV{uG*0#ny5D1e5BY$Oy2 zMf~T#$lTA!vYZR+ybG22>(;f-9~%7A>n1V9)!6HQO^z1I@h#S9wh6DVJ?vESj4wwH zoi62h?TY}E_;f`C*#^*1DG81@h{mG{3vB_MDgWw9MvA_%?YbxNpKFyMssZO4Dc#o| zRdgmdzbZ*`uQIm&4sCr#Dq8JL!xMl-C*G=5suie#{zS~_Cf;nj%;J3!{MmHy;R2JO z=);R2H7^cGDO!xZ`0h%o(WcV8{aBu>+lxpw1o&l?6RVq;Xc`FI)rr>$F6T#H_>{9{ z;rN9;(X%CgvTQ0VjYQ+-*?>Lq>*vN!ID1<2`7B;`nSL*2t2E9bDKkvk1*PYTzG zTzG~S^ouU~39ZHREUOcNQ#vQni*9^FnTh`maG!qT^byuyEY*sbu-_u(Q(__Azf~1A z-sq`3^Vb>KE(+>sGauLv;F+!2HER7UhH19PKXvuo_1Pen9E<_s?c2JsYj1m8dYXHLZ=I>s&Q(7 z1YydCN@u2iYuz&|EkU4`T`pNe=Qebc4W2d{6e1acs1qzRoWgVaXwCkYu)6?E`%vMViq6%3Rw0H?@zjQ-rGB08hb;3V}M^ z6gVg$ryI>?8H7XHIk(0EbZ^)Is(^{!?r3=sLp`(Hu~p5}5lubOI=+(b}Q zXUb?p18|fY(y^YzyGY3i^u1hw!0_aSGLWV>d)Y?=3dhOi;e`9hcB`t?mJ3ev_a(9M z-O}55_uG85kw3maEu;c7LXT~IvEdpTCnA1r_S?F8dikSUYREaV$o(C+x?x^p&diX6 z4m1H+tR}f$|D-1mPR_fu+G3~Q?*!WW|4@@t(V0j2fN z?v1^#OTr?2%AFjtjiuM_jg@YXG4N}K?%B-V*s7t8V)&wkJM2<(!A;yon~m}s0jY#5 z90_U6^ckjFoAqXx*`>imy>}WZDNl%s`1<8b+1xAB0aQg`EmnEw#x)?kD|hDtZ%lTe z#e8;{ttHygg@v#3Ehet8`bAoU1=YPo3m~NcgsI0?l>ox?u_g!;cuIsyEb-vxD4|93 zhPi05vq)czoPcE}?7zaD%MnoAMIXFAcRRY=dxRk2vxPS^ShH$X@qV}+qKM-_3+0sp zmV=cq)JG3C*>6bK3$lA&Jso;7AOcAv(9g<0rtiWq6eG!vIlj#Ep((`&fj@2r^MsXx zkzTcL5D4|8jC1*)o}$gpfG`iQOEQ;B z@UsfB$Zscf3`iDx9_h+Pzq0k(xi;ZrX|+Y?zlo#qj-K>KrXj2`9)arRXIk> zdYuXZGfdc*_mKd7KD~oMlJ^u=YM(PBHL$ux!YC?%qm>9)!%*ewT>-!R;eJk5o3ou! zr59I(2+6K!n5~d@CfCRFnkYGdkNMjCbZ~^qbYd;L76GKJ15g8#tIKTUg%&R5+)5d} zj&|wCmqf1pbk3726vea~K~(p&2;7a(plLZNWdI54HEs)-R9cswXd<$OVDi{^VL0Py zjd8_YPuk88QT7R@1@M)4*hVQwLMzox!rWm=B^VpgUzo#i6rMKax)#}JOle1~^g z9qVXDa?nqgPqFcwmSNXkQ7XOSZEcweN(nN)?E8u{UnGI}()bl=?UJBA?bF!SGwtS` z`T{v1`MF$76GDRqeRJ7X8B_Kfk2$yP3%*gB@rv_KM`Dwj(%3hh1bQOh4Ia%Jolb*M z;La}$@rdw6!|~b<246#;%d*B1N5i7_1ERPOk_yfGak~;rC21{4g!%t?>O9Ky6Z+TKA5%v<+7WT6`$_JSA+;f zaIyru?vo)19!pQ1hU$J$%$#UgOI3rAB+I`MYE!xdC?AoVDHswHWi zTFzvHQj5;5Tc+MUSB@e4Ry}dXzxACtJ|+DhseZstq(PTEwHLP6U)XLr?H@0?XSQBi zGxL@FKG1S|dY=MYCxnk%3`|Wl z+5}REd(r9llrT+mD=4Ow=n}PC257}U=H&@~0)&JZg0zs7*EW&b`M%Gm7*#0$pnnSv z;D`1u+Jp2}vb&f+gk7+A{QZz$e--cV4d_F7UeT@EjQpsqy6Sgt(Wv)|EOK!4d|@F< z96uCU64%}5Ky)H*EasbI+oOFsvcz=XEvQCLRiUZ{8gyvVHLB9;(eNG{snV>txLGDg^SdaOStgz z5*e|hhv*n?wc0`Ow<^HGd+Yx0pZUncwb5;9oV79iMXLF~URw{<*H>F^>a0^ibK6Y9 zQp}giO2t$$MF$_$ivjf3Z}GZk`w{&KJW8MkhW*!X(3}5)TRx#X12%s}c>e>c{BO7g zC@59+KZ3mf*$Pnr0C@hJaEq|JrL(E3ouQMbnx(1x{}RHr*ef&!+5fNI)dLy;5abLP z0N{TvEgJvDuD{V|?3B_GS_-*rV@|}4PK+EmU`+sAx#4kly z#vv<@EH9ov8<3&)lI2huEaV(|pod$Q(l3=Td24^Ob@Ot(J~R_lT<~!hF))gNunf7!BjKMvc^La5jx-2 zUh1F*-aCl{lopUPXP|@q=`$bP zc&-mKFQ)e+A8g0`U(q9!`9g9RItOI5XByK}Feh<)9egARZbChT_*5|0;#A5K)Emj$ z0o8TC)m~D8?=IP!*VUg2&JIP!f~KM$A(Jn%fyWYA@#EP|Fb=nV+Vr)+8(apY@#$2O zktUwS-W=S0o1rl%3s9yBmlkX6zpi6|(HWc8?E8Bx*PvY|^^%EDQ?B7WLq#>P8-b&~ zQDYBrpEOZ%Y-{Pi_#;8y5#u(t=^PQ;9NmpZ$|Jnc5O<6oKU3W$S{9)P{E8Af92Y9c z4Gm5cDWdxpsrNkA#0cr9Iu+1c1LYU^uWp#7GZF~Tltb}fK$!ccfplqmXQ)Q)Oz{HA zNXl^Sv=GEj+fI-l+L7QHki0C#IwkV}&+5^)u*?rQ2Acbox#_OCX8duE5uAsX2=*9t z9c^XB?2sai>B|5`1p_Cu1Mc*uT}Hsvn3-&QB>bX0mjMuTE-g2K10zwyt2Bi^$C6^F z1+Ziy=TJ%`xL70&N2Xw62t0d95Elm>#@J=EZZq2I4cEfY)hI};K(QN!AKV-|#vqY- zoVVjs-t!fzG&V5zXUCaMF;Cld_T*LN8gdgQY_Cv#?Gb@3ynfV&9XMrDS>9)kf8^*q z^5Ob>s48ds^9A^)p4(d3IK~_eod2{*_8X8zXr>HuEx{wa&p3L%ec#G{v8sN|#Oc&& zWtxzv&vd3~VmV|tr%Di{HO{e&{vdP6(zFVcU6qG7o3QgB!GB>O0&++KrK026q796I zcc}xoOhGECD6z3X(a=p*r3Pu_&2S*Sj~EMzs>yQh)W^}ess1*9OZlUgsgLOD^QgXL zmn<{~tE)Pc#$3Qx^{Y%~%RMby{q#7-3KOm3wRTvYz_PU9lt6;1)F-5DM>LnMfR%`| zW>08~l|Q)CGU;jx`PE0{OETk35KRruL zZH$2D4C-Lb+JUnJol}uaZaZ)VmA?!RN?MaQ-+3c_^U$TVoO8*B40ROo6@))-mp zRb%tXzCasw)3;%tTrEVl_+b2d7XIAo@A|a&j~Q^>ixoWZWvYy6 zDY)2OC)Mjl_-6Cb`WWC1`w2qPdbRHV3{-f!F?>bj<-U<0-tYN%oWqj;thBImW$MI^ zYVXusW6O)F4>@o9F=BXWqzV7Prs$Z|5JB(t$}A}5*5>ksgo_&hVSdAm$|1+t(nVBW zV`Zgwbzh4z}{{S+b;6WS#9d6sGB9F(sbQhZVdVpMc=t4v!pw=9zOFqLhL&hmmLq&M)}%9s>S|i#MYw;TJ>;6Lrc-dci#IzqWxyh7c{`uoWv{Ywee!grJcP!0OhA37 zENLP!6Nvfs<>C~O?v0{ zK4BujV!Bc9VKC(uFaI&=BT+`=Fd5M2kx~HoaUkk@VkqhOXX%A+llM90i$W5&;k{36 z-H+d6h&%;O_)MJFnFt~yK}rJUjc4eWC4ov94IHDKm>4{dlP4nOi;3t+PwuM^L!_Ee z9sA7R&ONQ>MUeac*$Dspp;z`86<-tp*gbX|x1+C{bKS?!|Lx%C2>}F1{Y*a%Q=3#>Y2}gTvz1@n4Q*IF|&|pV|Q~9 zcu=!Y<~9ilu+Nx?HnhMCq~mEKt+A)37p%DS8NQuOy@#|hqbUQZ)V?#Tpi>m4W(7Md zQTErD0Sb^UrBL92{i7j0{>oID3Bt+d>8*zmU&!W>|1Uo`KUeq1@zTnEcznJAiMVL4 z+nc;3lQ~}*Ar1>i%LXQEBY3ERLlP-R9Sc}R3Vt%tp=ES{?slUD5aW7QX#q`Iq9cu& z$s{nIES4m;(DztSCme=8V+JqX)v1#FDjG^jlXX3Q$OKzKjJvN5(ogEjHQVXn(p>D{ zHXEd9(HpA`d&<5N!ULH0X(b*IA|hreyrcKV!@F2rh%y?%P`bR0Uo)ediLxct5^51dIJmYY2Lx{hvB$DlH~7-=#SwybBC36De0S+&Bm_fHs`SuHvBXn~>yLy(26C7Qw`gH`8%jkjy^$IBy zlal>R#jy*82OxN?$I^nRoikJ(hOuwzJWYcP`Jg+C8PdbU9?;|L2#Bem77#R9iiWlD zl=%{gsUDRZGI405wQ2@@;y#%s$T3`#%lpRa^7ePN{@tuCAt7lofOYGnTYd-6pNA7G zK_CG%*ae%%E$Ks<$=Hc1DCBE;D!X!FA8U%k@Q?*&!U$@digv+cu*C7^3a(Tw44mN& zD2Su`67fX#PhcUbO77k{YX7S%#aDLS>GPETk;*;@=g`H3cP1QGQzLRKQmv(mfb8j` z17zrA(C9!Y#}J3c)TV%8ld*zw@aXT!^uLaE_92=e;uChz6Q8YIUCf>>o1bIZb40u3jar!#ukCiZi;OQ$j+V~vWYwLj6Ux6J;V?C6$hOr zVH+e~wwiJuV&Nj|NShpq%LTg|Bb!+x$B3LtoL5X5EciDjnHgik{h9`Yxz1hc^op_? zkl52S5MvPD^42DvfGEi%de z67aA+%R~VyWj`ia7I)`)tI z2~|>3!IAPp;5x)Aiyx*ky{%R9KaTKD?5uh8pw%|SnJ%^eGR}%PjjX*J3hFi2n`MufcrhN-bhfFFyNBeQ- zASC4ccl6?*7(5>C`I>9>wzR`B#oU!-U@i?A$_pXI(Ht=BL=p+(DU-&`Kw~kK<(!;H?LbdEdBed}qA?c1N!7^Y zs3kIZx=qyhwgLW6Qc1dyyzLp12+Jifrh7~}31r^`8C1Ywij8C}oM;9VXp_Kg#i<3b z4IW=ah8}yn*-GM`m6i{|X=3-^wvMO_ZaQIO6S^X|@Z)Doln-uMr5F2_XR` zv4Ir8NNYe2vIKT(807s5OcYNAXFGl{zEaRcAy_n8)fbWm;kdleZ9vFn3p#>c8H?mV z7nit)2gAkVC&G*K(Yk8-H=#sV(V_L7(k*wlwjA{bP9l!AIY&M9{EgHAOSgu&7Vlo^ zTn|GyVxwC|S>0DK`Lj!;IqyUwb*)6uA$Z&MJZTPk1%R_n6zMKu*UCUUv@PI{7%$F!pG?X|bLQhgX%H;1*I7oM*=xuipV^OLfwO!=ws zYsnD$W!n92TTK7VRl1mkFPD!3^JiGpyS#4o3eH}iu4WbieEOe|#?MOUG@K8#nh{*W zz59=M?BcyZ*Xt3@?}+@$$LJ<{SkziX^~xqs8b03-R0mqC!xI}9@Y?an^ozGrF%iw) zY8-|5(FYDr=&hO#(Efahr)6PI`g^^cs^!3gG-bSmKmYXU&))J)-)aU~)uaXFZq(kJ z`gJDt4A+EFozA#4Pj83%b6OBk|+t6ts~r~}%ua^=@>Hz{`7*JchD zn_M3+aH;yN4AQu;Q?iR!fhAOS&)3PgHQZxoWAHLj4Dnz7X8)2C`zaEiYu~YvQnkdPsT+PV3UIv(waq?}o*j zvK^)ktWH_1ksu(HJ}?L^{TjfzduSQVZ7yTpMvAA>EbC-%Z;jcAEoFZ9;SrzVAiAti z?1i}_^W(vB1>YidwBghTvs=xMfW`A=1=mfj<;rzQ>`yas$vKiJbr65g-MO{gSy?)-jF4JD$Hs24%u1!6I1ou(njnZT^=5eF-(GDhTwNFe!}y?lGVJE|5VDJY1RI;zbAF;*<#UbmJ<9x5nQ;s4Tg@%A?<$} z4I+oLo;no%gE?Q*&%)`eW`^4HLOyXpBsow37Z7eZA<{>jQe^&7mQx1-BhY|2VUrN1 z0s3GA=Btk!GyL*odEBPuH!5$52I{OYWo`<_-$&f7 z0I<*UUc%TvuQfB3zIM5|x-MfcpMPf^kX;&|{YFlu5o+&AiJF5h$A>ow^yPiIkg7fA%?QFkME*bl zga2&YPfM*O-U(a@dUSx99r>X-Jp}j<(qk_YcUZ_9e(?Z6iwrWuVNgR=csnjNa;v@a zZaWiiD$`J{)hru{v-jgvyj-edm3+@dxKW2LpZDJ4YJczCojtwElpMaQ*+2bUJyn?W z1_Ef+q72N)jVfIV5>%I&NO~k{nC}tvoO0j9@aZ|y4{)y&yr@~J5LXW<)m=KY_sTi& zL8ZdG3qH4Z1t~aNKwY^2V$JkwMpvjzl;C^?U`>dH8)51|Vl%J+%5=~7b5DiMhQGqJ zx9q3k)K%hzM6*E4gn(6Vx(hV1TX&fkks&&C?B<`>^W^uNxS5uxmfF|Z|y=NE12_lr8wo0M_jkW<@> zte`O7a5JG%DCa=Xcd(IC-R%H;b3xE!!Uuzh1%c1{9H<~+Fd>E^piLakmMg!cYvmUF zl)jXyX@=gQ(v*qKdkOC`kQS@nTxJ~^r3ML5v>cR*loOnNnk8$ittjPO7Z}}U%WbeL zBg+CxupUjeEse3Wp2*~?H3wk%NZ_HUp*XCDqYnuh>g$5D*;!?pM6t z9FRP>IPgb#!qmM}Ip7kQCQZSz)X@KxdgjFEN(*$V$FuwAxZn0lHfejVBg?BbW~sEr zErxc!BuFCM?y0S~3xu}xM|UCtT+aa?jk^pw1aERP#pocR(``5)P-Z5h`Fo-XQ{6P^ zwjLr5H2UTQNh?HXz(_}E?F7s}S+n$oC0DQn^K%bG(RNggy1)nxtl+<0l3}7G()~TF zzpj_>V4#vCkYbwd9krEQbAeWr5B?yIv&ZOgp3wVjEQ=pKY<4@?fAsSv(semDMOBn$O

    YNW#KCGqAEV4zh4NmT_5tfL!QMln7kW4Hp87)4*jEE9o%7_4d>W~t$D7GK zH#iOLK>qHfSzmDIqZfI>cUwwQ^_hRYMVlYMZHvppOa?m^efQ*)@k4$vJo!PdTcqt^ zC)MH<%}P#kZqp1HPWid`rQ(Kp2`mlN?;?b8xeg!)| zWlzSW{yRasC6&N0sGHyc2So|#OMxt=d~=Ub-sOh^Er$we{w(hrfEa#5{_;ZmY%>H< z0Hy%&hEpb#7vEzgk|08qa&5|QHJ(>93<%;d%nfMB;0^|{_o+0TL+S@nim1Z273_oo z^+~!z=;HkV4da6i05?c?qLQy19mb_hx!{?CxRjl!2y`#fCv*I4bCYH!y9V$& z;BzODjaT3R&04+ID)cm&m4PQLD(vQ>dG`W9`qwN0%X;_XOazp@0ai`kh6*rFG1s&$ z!12J}eMK4LSDsg-*!kjjgH6aibfo!gSP_d4cLJ=PXb6B5f}jWdPh=VZo5G{idxX*h z?hdi!2rdj7C&kh!=pfV>c$Ic~fyu3CfmENk=}3enD5!EX5H>*}M&WWmr58{-j|_iU z3m!*Oo^u$bdb)BPa>9kcyit*IMHE0k=t|vQgx;Mm0ISNLAUXOYzZNKh4T9nCaGUlR z9r5er7!qRhLSlibWP-bX^t+1e$Sz&QL`%5yoa;TXwBBzg^O(-?q#9}Z@2Je{Jqv6O zvP6)&l?gV;2!wU-=2GI8ZOwDBAzX)On_6M(s!SH@Qj^ghh!aD9dDh0UmG!&f8+iH8 zAw1ugSRx^ z6xJ2Ifw&DtCc`h>EgObMi=5KgB7JQyFACOAd(eJu#&g*=bYxll*?_%{@ zV2skhr;f`_9+-F8zh}DM1YHPKCxKYrej9;-J^Ld7<`^VE`~3{er)3*v(%8?gZxXqG zHCc%em$PrN1~>3P3$*a$(CuK7WQ3*!I^wq#<3vh&HXxeeTc-hc){yV%5#Jd30keAn zQD+pKouDf1oP>D~D9d%x|28K;I9)~2fK1|oGnf(DoP;F`!St$*2WWdUIrgzdfxWP; zHka*<0-hZ=Hp#VPCNvTy4VJBFV+jALF{puUq*Rl+YJ(*gJ9V@;%c^d|eW53g z!nLe(vq@3vQ?FO6zG9{B(WFIKq|gFm{chGZw)(tP-qbfOMyN|+^e{pzMlDI47=h?S z3+yGoVVU*m_lDA#0?KiPXbJZDeQAEVmJo6DwzVdg@iB(#^owC$j|)dWa)<6y_89f# zo(kMO?*SSY6Si^$w{dUXduN;Hh~1VQltCB;`%%+os2b%S!Vx@0{iAko4b5Hxo^t(X zq}KSoF;TxK6`(z8aWI+b1gr?QkZRMSKqKH)E6oo>HQDnLJ%UiVkyf?>fj3Igms^)o zTubMTZn}%l?wYSJh+U2ZAj*YdE6o1k(eT}(nqi~MyhRQ&1`Qt57V_qpd12N`%24md zm&^dsGGe&a>jfI7yKC62<8ue4ZS;ZH#PSQGL^1_lvW%!qwBe7}6Tcn$bo zJ6_=K-+S}`*f*)=@oAY3O+Hoo?5kdb9@_cwf=V4=A9OG`fmRM!&HOsH>K(&NTz5 zZ(@OuDhc2lK#9%KL&ApRBVGnM3Tm_R_68>N-kxs2c;SFB$R-_66qwRJ60tN!ye2$S zu6B#-v4=7CdhnR4A`KbfN5IK3p!F zJK~y;L4#Uh$RjfeT@A`2dx!veCTtiSjE78V$DmMk9`0szhFHo$;ZYi+T0oX(u$J3y z!l3gCDt<5SQPM@IF`)DZyL3CEq-ohQMVQ}DB&~tF*rPx}iZY*slhQJ(%8NV+&Qcoh zd|)y?&K%7$$A;RE3AWq&&72CH(Wx;jBUtQmj!Nni6FV8P_J{(1Ed7GYTW75L$ZU@h zBgQAag!aW_tvLE%t_po$+3>M8{-;78pS#)cQ?q0%F5OpX6hm{h&)*k-EA*LgQ=b8x zyq9w!(@aHgt9MmhwH^D*aNAWE%(*-H&8VV_{{|ar>Q6dN=%VNVaY6#;aDbGG4e363 z8sfHUdES`ds5Cz+V<9Da;`4xZj-=mQ*&rn=(&+3NKw;boP#>ePrEaqs4$xrL>Dci*8mRYfQNFks6;XNbBGWm@v!ni1ncNpgebE_4dqOkMvlaHmi3hEaYu zuT;>8t=A5X@qG;hbMBbl!8z~513zYi2HDkkEw`LgUjF`#hx)-^_Qov9LAYK|7#uc& zEvIv%q;_q|3Mg+}Eq@h>3ZQ$mF!$x^~MWpg%{)S+N) zHyMpKGW!GPs~z`;uZ~6APt}A_I#t+5NUG}GQS-DY!*$Rd2F`OyXO?GG%qdur8X9Z=i&b6zxSWDD)7Ex=`n7Yc@i>@_ufZl&;?wJD*+q%f$XQ`#iW_NcFV0D&g_(=d zIL)K^f9)nHm0i^k@NrfEYfv~l9M-mUibtKmr+<& zb)RgksXp@`e9+(-jZ4w%)lTta!8pPp>5y6k-R2vU?cv0P-*H9(D^JFRjub^Sa z@VUr7yCu3zwO)GCK=qg0Ep>)OX%352G$X@x*!f2h0k&7l#mvFg%p(0_RdH;A+%L-x9CqWSBAwy)I{%aC4 zV$7c<-4!i65M6hq1u0D}meT(|16JXI>&Q{LC8Z}F*PB;VBlQ2)QgDrY?6&9fKr-fj zu&NFPz8NS~8keIua%1C~w{bbgW4{qb2~4vOMczWx;73bSd~pkRu6AF#bsJTHas}gs zz%Z`Z6S%1lFLgKOpJ9^r59{Hx}1G6 zs_{Sqik~D)`R2{pPUBR!4qS1ZS}2Jek~$$U(Z&BY$9avvj_;)cQpJBRt#$RoD7xV9 zLa>G>NW;s8ZR~QL_Z%00?f+C5CKImI--8i*4c)=vx7+NEKP&&a{jef~`*gfC|ww>*YFR_#qT5<)-jx z*JsP|01S!&<*^P5;MR@CF+dw7Pt7w`1@uZxMEPC|@VZTSCLj}I2~W3wF#wGEI(meO zm_4pb)p;LTK+boT330PaQNYRhgrQ7$RM%%s7%Cjm;4%EF)Clm+KlV2XZu1V}PM9!I zQeU<=laN~2U}PEzJ{l^95=J{XVN9SEv8X#8-cZLF6YFgU)^MMus9mCv;0qvu?r4aT z`HIqtDP>?Uy+Xq8BVtm-{?+=N~wL>RsC-w`4;M{eYNCoTkS9a_>Vq=6HoT$}ve22~N6I$TW3YT&6b*Rbk zf^5^#lnll*nnP)L3_1P@9(pn%Nr(Tt#wI4~;q3B6{l}Om#GNwU*l&7)6UNS=!1)l| z54{norddJwbZFR}QknJe%zkEHzLF@4RkHr}O(r<4z@AgAtSH2&9RBv0p9ltX-Cw3& zm@$}{@z8N_zZck^OB@%2o}n9a^i-BFZy<^kK^oRM(So#2dHVFoi1dke#?jSk2t9K! zW`v-g71`rodp2yl7QOejok{wQgzKVczOGK~CS;Jh5#lVTn%mdSlh22z4`-fFN5&88 zpFzPIT~nS2&EaIyp&D6c1K@W?MB`pYXhUQWO?j{n!wE|$AGF9hrPhJ?KgUvAkDl2u z`^q&Y7;z?8mxckEWf~*i)=a2p)N3FBJaWVZ*!@hQ4luDf>-6>6bJIC5Ug%D#IcJG6 zX&U*F5gwasl$}+LpYM>|EZ$e(Z<}d{*XO7AXD%P7<&TJQq*<0%B@vJ|4)h~9Dp>4h zOmZ$K$Z$kuo0@=dO)Xg#cFq&0oOiAd$CSfdSI-uJhm6ikv)+Z`xtT}NqQK6!%7t0B zckL{%j0GWjb443*OCld$78_67P^BGmsyVUlA~Y^^+r?}+hE*pIx{E%a0cu7swi9^$ zj|z&@O$j6j%dDdv@v8&~>-C==mV1=~Fz2zm%?zd-m}@z-_gaf%ed$&~uR{iCO(gfSk7a9lrGy(h zacuX`Ncm8@tgf|A)cpfqm05Ga6zsua8yrFE&hXjdE|L5w_>ESaGkUj9qe46hSEav4 zONgnbgZlR z5YT`Psaq!At0+@Lhxd@)(CuEIFj4aBXwMtm*X}CaD_1a=hXbjmHiFzCF=^2vqG*7I;xF)wafzD>JuxedKYu&vJjE)C=cpGFXAFk;a)ST0ztJ#6|L^Uq^H z9+)Z;yXi|b3=?@zo@9?Ar|!1f_EO@l8@bvH@a>w!@8VY;4Ge~;Tt1ew^_&G;wT>-y zdDWt&qZ-9m=jqY5>dOOhn6@XMK@ z!&S%q;`>N=bMyUs_xbwUw?|T9AMqcn?WnFw1XJ$GANHndF^Msovih2(X{oH$?)dH< z?ug4eo@dN0J?cPRGLHaMs192S0la-TQVDD{A&}2&r4WiGgC)m=^;czcHF&CDJw?th z=P}4USeAn_io7RxinKpPK7jtmATB`-%!?nLtAz8jJ<8k1A!~J3W=qm4DOLvv&JqT+ z&MFqWiiqlNg32eEDOPkwG}cN6X*lvJl3+NQJl)i123lt@LREL`w3UlrV+eNNuGxo{qX48r}#(O8L%f>kYX-ZUYJde9~-Ftszr6E z(V|j>54uFBIP$u?HV~(Ld3K@vT+HG7Nr?Fo4VNk$BqdWtT_%0h&7bU|h{scCsTg2e zDk?%w6=oE2CpwIK>NBF6c>{E%gk_buVz1ksJpgDFP`Sr2P<(IG`#HI9ueN|h&1nBN zpGt60S4p{LF4il$^>(>#)QM$qzS(e_4Zc3S~sF8hipQh%ITa09uGIS8zx}5ZX7=sd}=tm)Z5eJ3l$|l z`@Ji?@I(MF(0y@yWWt0eD^Eu+PfxZuTTc7|^)vLoo*w4By2YbdaB-|<@7K;roE3wn~b z=8o?%z2?q-igqWNqYe0C*S}(6{K&pV;1OC3LFuFO<9*xr9~WcDaJW=0H~_$ZRKb7O z3qP>`cfBBIFKA-A{Hz2RWIkJ_rnv&dF5;#DSW;YN33{JDi z1{H-OL0yIY*nLe*AzgQj>ahWRF_IR4=sp!h5k$g5!Z%{Vm^ zge{*p=C^*!28)9G^+EctSXESKv5&_2R#s!R={E0JlN-OKU5oO9Pf&j_N)I~D@ zZ|L-ui<fcT$R)+{DmuZLiSkX&b zYfYR%1L!;`GHs03`@~q|m&G9BNI@fpluT52TZ6Ku1|#D%R%%IsKj5_m&|b9Z+DLF6 zO2n#rD@NKL+27|A$jRzB>4EXVw(4sgDK@Rd$EZ)0j}uqy7&lVIRz$a$PIs56%|09| zTpbJ7qUeV9b+wy>+=-7F`KU>14bDSBwFs$c=90+5lX_!#E^h2!3!D4NcLZzSWnfF% zVyb6&h@fo;c=u_ckam!_Z#L@6KMlnSH;;Zre$Gejne4Zru4Z zH)YL`xL7Tdv+mm})FQPb3&(kQHqZ4v0be+NkfCCKJ(I7UOHUc~Y-d02O_D@Q?CRx( z3W=!5!iPLO>Y^tl%zi7NW)rpO76z{%Dw2WEre zL_If>spWq=?s6@3f2g2;&JD5swuFzUx$0sCliYE9QMxGW*3Bi|8_gwQf2TRI6{hL-?X&1 zcn6>zj^WS!Y=%)!(1wT6EbX|+(K}>dn?X4=_vn(uI%HsqCG6_*XmpB79mXuPDWnbG zJF9EIJ;NyqNNl)@9$h|vIq03$G3725yh9MraMZMU3ma z`*gLxlsq5l@U;=DvUY8~Z9;m==CoeQ>U5hdez`l2R#c6EQ#?TLcUU8stI$T*K7zVf zavuzb!YK&81@rL~pi1+5zr#MX|Ie9yg+63G0s#Q{&oTY)XSUz#|Lz_6pM;d0tBuXS zjFh~?|Nc9>*7g499YOldmuF0`{VOEYf2F3Yi#X;QcW9!Ux<+}Z!`8W_D1>EzL+I$0 z;okuibg1w4^u`$dW^<#37>-@s4^@Y~O^5vn==0Qp$}pMh(6JLZ>2W%quMfV|{;#&C z@9O&ddV=1&hxg_00i8Fh^XwrpwcFYc2%QVrL}(v0J%XA!4o*d2#CRY+I9s?N?u_2Y z01PDD;XG+OG1@y#mJe5S4E6uxL$0D3$#wb3F))@%26 zW=_{3crsngdgyvruGk?t;|mVl6|bkO4;PP@KNAODUa$A}$KBV^-PQG7`>4DFI)~;? z!M-Ll-VE&?@I-_!D?KDU#-1jf&T`O3eBCLIcEchD1ytSaiEWyW_a)G^`S2ighud5L z>Dc&8KaygHe+vSk{Kqvm@ey|u@XBgW8rb)SL5%l(%s%$0Ue^kV$?V^(*UzQ_VYeIl z9gTFqI~|d^`^`nLFMA(jf|z4ccC2mj_%-s)*1-hR^RQkAagXHw_)~!V0QlWExhtnX zg!XYjfJUApym$aIZ|R=>Lke$r|K`1zp#$zhY0G#32)pS7!s5pU(YB(6%mzd$*}`M% z3g0OJPnjHc=Y1<@H;H^M{-0yd>sI^-m|oM>aNEz=-vucU@( z1tK%Y1REH@rbr+O(cEC#%A90Gd7=$r8OrdTnqaLsjdxwYL1(Ddx5;DI;%g8w46xqT zgENmu(mwYDwxKfaZw>gJ;P}=fC9-G@_WaQ44qyq%Gr@bOb2$Kn1&UfMCgNsO4G#;x z;S@w;VQGSsfZPgHlikU3*`Ota0D{*ezzwD47Gr}_m_!?o#o(bRxB+ea42x7_do!Og z%ityiilsXb#upTza10S;2l}C8{WV$u1et+Qh3WxukTIdAOJUxtF{{VzCs!wTxc3CjbtT|5g-f&R7wzo;HP3)zQ!ef zK*I&92Pc98`$tg0zryZ)Zoo~6-I00|1K&{sn7i&y2h(_v{QDDxgX6CTwzBTPha2Yd z9sdCX2P4k7enY_Yevs7%madW&NnqkEme)+1ATb@2S{5LVCAHx}HGdv<<4G+Q?of4T} zu}i$y;DtLwew2cmo+>CYA1)|kNsN2Y$I1~ddwgHNo+sw-j-C$w)#2{XJ2G!}E{{LG zjZMto-yL@^5_e_UR@JEQ(F@)EdD?l=^`K9sSLJ@tMTjls)vgU|iS%W|J^+yY0*3Qp z8z#(p3+JP(UmaFoKdru)U}O^&dmt#&-Z!(Mob0Uf82hKSBJzFK*#*=)S2nQLqlF|{7 zVOa^}pK!AKsUZ-JcPiXsa=-GS9RmZYJZm;^Oyi7%vNrn)#0@eg8?yvx_sC4V5lrSf zBI|3Vc~nX;en>*Lxyv!bLAaC41a|-ZxIdEWrv3E)sz3`9CMpNJn;^#p`mM{l4F!uS2A9s&F6AEubCUT2eE^#RtteU{ zEv77vLt2n1bZuAT?2vj;fy{Y_28hI)bWjtwO}m^Uo3RKhWE4W>+83BQg}+xI&qWd0SqfEqDmSJ{9usrYqyH9HVfnrd*E(nPNHML*2;X zR&}Q0Qbb_t+18;rrQBA*y)sV22iGXEpn{&$%lq;BG2-O-@UR&_MRio8RoH|{gG0wT z1)GA@LjZx4+KvU9>NBsx0}7Gnac$gLpRTqwskH?PHylP-EWx4r?5>ZW)%~x+lgueT)7qsK}JH zCJ(^E=Im6uDnYdFYQ31_S@IADN+@D?-yo@D6HrB$c0ozjmP^9BdaNxsDPY0Ankcbw#xqM2Y-UR-E+0algC>c)o@h+qoP`6wzJ z9ewdn`;{RGP4Nyi9gCx8d1XNMz=SSZg1KoSp)wp5?ntkdy)IcanUL~4g{Tk!B8ud+ z3r6z<&Tj?!@QmaPTDo%v_{i)Q!PZ{aFYeLrc4k$-K7QI#2=TjIy|#G-6Vc4w9b4iL ztu_p&Y#xja{(#3^l6iv*G$FKQKrHl};OGI6XjKoQwMl=9oYe&!ZyP6h+Z;~_BTAdc z@wZ9sqeoCPp^HVEPagY!iT0rIHi^h%Pn68YT$JFex#kdwmU0@oq#GxeP?LZ^~IQ$)}fO;2lh$eVfY*}h9JB~-Q@A5p#C%4`Cz4t=MN~V zRCb!gYwRt*Z>o>W@AxnCy!#v;FGIDRhTOtRGj3cBEuARy7_IdBDbUBGdiJc|*wL|%mQjz@Ut`?IS(lVap+GhU zH6ynqnuW*Kv}`=1go*3)>{1vPSRTX-z3OGV%%=!0X^~LsNRzla30y2}^dQ_wH%4cH z9G|${Tv3go9jqW~-)KgOX(Vlak>N!{-N3?BSMLzgUfE%jDMz}p3VqN*93yG>r!ZD} zqx3lXANgL7d0|P5ppOK|&A#TVIt;^-bhS9;h|I($Wuba|{cj5?q6F%Q_<_R( zW&g(FIA2i{>LR5YT6q89(U~;&fEChBP>m-|0pOU^kO;mi|31E9)v!xZG z5;We(LV{rn(+8#42o=vI_dC(AOQLFN&O!=Ravu_Kp?()@q0G-uul^O+!ZtjWxxg3Q&eozY z0f&Dhz!dzt84wKqqYZLNdGoifoL;nWmoMCA_hg(OO=>72`#n&cUPf`3X7-qE_GzX0 z%MN*&FV=BjmepmuYLbi7gl(%v22Hsl zJ?Uf@ANyO@$*w8o3bC!XHV26?@rUjj1TO=~WP2pQJ6*G@?6a$}<)ynE^79W>x$X3> zQ`O2+q~{6miXrFa+rz1pg<*MTlCk|xrrlKUpRsrb$#-)eOhTnK=E}0&BRHpGlyQ36 zwk&DI440R;6a?%(4dVL++8#~fs$VM;olXriW}2oLyXQN%lC}(Gx>cqSWGK}DZnPql zoYW~^Qrf97*J*AM$IS!P*GQMA5z&syd(I^E&vf;@iig!9sP6IUukpvteaF;%{!X-z z&u&f1iA!bRzkb#L)bF+gz$L<8sGvhyruYbS z=-pfcutxQnJ{hG9^Ruw*^4jE8jF)Hj9@AV%CLn|MPX;%rP|8gKAp67P!MQc&E0S!W z(__))r&R`p2yYMcihcaZc@)~lkwE(pO1>4G1UEUvXCQd$v&=vwHABDUm}ccNCHR_y z_>q*Kg{7}=!CZzbY1s49nUG_OKIep0>b6$dX3euJHji*c;UE;DVmy~HQ%YJFh0+Ny zJ%|xyu`4@Te#Hi|z6On==Q~~#1jiCRO#@1Otfj!n%$Jj(yNEp1NI4)xxvs6jE`X}a z>EsDsV|XM3(}}224XrLU&427N%wM@N$SS9g?7wzsI^GJ;4#tY2Z|zzC*-&aElmidM z&Yc#aYJV7OVf*Y7v)efdQd64`L4gasq;%atHr=tAX36V1b5#AOA-deD_Da6}Bhxkm z#H)2N;rf^_p?}2ifrKXN*FQIQK3{IdYq2#0mCnO_(EnDAFbBt3>$Fq>l8+vi}|#cgpxxQYF8VG67a@O%|8&?4(Z~s#C@X zsU+hqZdiPQsE=USr~lwQ{QkpV;1CnD43nWq0094iUjH43IVA!B@ckcM3Mx*PhIZzz z|7h61c4j9_kN+Kr9qaz9W#&lwXIBW!T=FChPfLDxA=l1w#UVe`?JKb%XLU}cLM0Vs zLylTXQo)%e``oPWzLyIsq2W%>5%-D8yb6@9~-ZLK@iV3}E4S(VzIZPgM z@l01-zcGyee!5!sZ${^lEDri6&M8A~`vv6xK$g1X|NVR>iaGdU(T({kb>HjzHLMrL zYhI=PS22WCXJ+$@h4it?wSTLaBx>lN7i+>?5uJWcmF+~pb$F$kMcdH*ZuJl-53N>G z)3HC-X_ILDdOv3Q;f*pznC9P{H9Vh^E25ltl;eBRoc}TVapeIAlO;s#n#fLm#Wtmx zgl2$dj}T_(`kVXqnOAq7;JYLy{8;+D#dCY~b!rSanmr{!BNw z6}sW}nLCqgkvGKwGjo4g+n@csuLfa4onnHOtdZ<9xQ`6p_6`L^Q(YE23S)VbFR`v-9>I__SGh-K1B375B4!tVd-eh^og5Z`3ftElLs$+#Dj_{270`)4^sN} z*&Sa`7)vHRuL_)OsCQ2JF86rJ<;@__0KFt zCgbJjXh@u4>HE|b{ww*j73x@diJxO4fG%`&`TO+(H7`n^?|KABgkci8_EpSjL+=eF zD2-ZAy7+AzeEewrP9Cn?utSlh(!$j?UX2e<>IcRW-)z(k{5GA{QEj`V%Ac6QOT5hu zBcgME&om{a`u4HjI>q!oTseV?a4o3Tz=WEnkZBR{uAW|xIFwZq2;}y}0uMj^&3GxAZHuc2RSy;ydU6Z%Qh{Vn*tasU^acyMItF=uQ$qAvj@Rd2A&2F z(vuRcMA6{gyq+E&FHS#qfVTPQd+q2PDbDhwn| zFWmV=tpJvu^R#8^5s5wk1Inp*%vCH(#oe@uyP(x&O?Aw)hD+q3FgM+q0i3e)m`7U% z0p|BP%lxAX9n7k-bxs;>gMn3d!4f?^-JJX$JpBAzoP1o!N(R?=FJy?n+B75Z>JnC6 z^GA3fmgx(_rUBOBMOu?>rL=dk&HA*Bq{W{N;Meyl7{vT#Rj&09oegt z==XBQe17w>F==faeuSN zAiR{o4Cv+o-D^{-6duL&xBck;%ix7DWauT75YTV(Y~JC`4H8SN#hztoN6qGmUO#=x zCvoRu>hn3n)UJuJRMdz3uRnN$Slt5vvmYI6vrqDs5|ud21YwxugqUGqIL`z_I*PBtg!Cr?OZ8gOH{ z)?!0!7vji)B!_+*SO0X}KM8NzRC7EOKHkW(_G`4}hG3cladRXIo7JNQQ4MjPdvLccZ(}M$fOKt`3F{9#{IzWe-o@`KHad11L7sR;~qp% z3bJkc&|>q0)I{xcfmoZj-WoxZ?GsKykd#1}SZ0KjvIK7JgpJrqs-5_lyF`LZB6l?47tdNi_qaJGeziM?#igXv+C zvdFSK{d=-FV&m;|a&%Ni=*=uy^Kn#3p!CuXo;CzW>W&^cdH%eO2lN7w2B5Q}jNdMr zvXWQkW({y_%uygh4y?X7Fe0(EE8n0Va9TuDH~vC1J;{H?D+@mJZn7Lc641ewvllcL z(O;MbG_A|B<5wlhp1de#>jw6EW5xYPr;%*l329)epl*tI@PV(pVK45KgUqbW1)Fof z9ZerVU?DcvFqyH}AKP$~?|de;#^)R8eoonnG1r?eOkT1bXm4OIX`vg`8+o8i3skIJ zWwlvT5ALnv23g+gI=~3K^GT&*<4fXsFkeujPf$}oqjv`VkJWZ0pNR@|ie6tXx~=}L z=a)XIc~2)RqjpXVkm#4zc|d12?E(&yR*}rbn|ubjRo$RiwB|#HNAphxTBDp1*YPXKPq6p>tnMo8T1FT>h6J~vV)$FGp>{&Qwg-ZVz)p}*Bi=;v(Cvh$@6t5$G&59#kWd4T#2|Vv zesqCsyKOCX>`j<3e7W;+@?Q4FfjJ!Zl9b>kUj;AMon5{J5 z7SL)}%I>UK>_5@RBmGn^=LKk7TC-LHv=1VU&@x-|RTF~}m6Z{x6`aaJ%O}*3vUOA; z=8CC#q~Sq+Y4|vzoQA71Ej5y(XtEo~l_04V9y66DZr6#XS(`?t;dVSe!`z!Bc%;XX zhfH*rPTVP&qrt+Dd3d@yxcYGLwRQ1yv|;6SadUWjo1A+#gH>33^v2-o#jJ+F*ViR2_OBClz0gjb4=3}do8q;bOb4tZ21Mv&kd z6EljS)Gs$TlMucWMLFfZo9QE;->?DU2e=elzD8WX3~RKrd}5fLL($AEPP&J|bj%Z4 zsJ>j?eLYQMU zJ<|+v#+@p?*UMX2O0r1N&ox5vkTa+NA(3N=`S3T#i+mN_OMY#tnA^-`)aAHO{DU=nFhoNvGL!_7~Z~` zq^sb=8);VyU(F76U62U9OmmDth)bqp@U&i$m8Zy7I#lXFO%2g1nqrrWbUUhcN_AHx z`*_rBJLYp=A!X(rBh6kR9fx_@W(q1kA@?=uno(LfdZ(bz36EQ90h%;*+jU93#(h*f z;&tZ%yfSEY9*H^y{30~SIcb=cyaUn$6EWMdJc}+J(7NsBT1*gZc=$BH0YTHEo(RJ$P^#Vuf4O{vzh0@kSh+Eu zDekznLL6CM811A_f-PF(V52evE#x`pj~-zv*O8^3?!v{?)u+45UnwFZN&>oyKNkGirG7h{tPc)h-{)dUT`thbYv zbuWuo_aPZIWoP89ZQW5ny_p}f2p5~bMnM=%At(+^2z6VgfcI1`}sO`)PwD$A55(r?;Glu2^5# z9~Uif&IOX$OSD@|gB!KTm2$3U`Z9lt@HPp4=AS-NnGtgVjqc#rp>uI{S_u>k?*zpsZrh#(+ zae=ILlGK5SQSdxzoiNxK)(r@Ax8|8~wkxA1-IvVY50f(iPT0o)FtC^14$%gd%@^2f zvJS9*cR8H|Jc!w%@am@0@ly!CEIM7geE^DH&@3FSKQtAocp` z5hGwb%7DzS1df6CF(d#j`0sQb*@JdUA|s4uNMCrLElKOWz+5nA*iKH zxzs9(J*zd3;~IDtF!ngS*uD;xHTxH6a0Ct1)Ai3}Y+EassjV-_`zBV6r$=@gumN0i zVdh=_7fzM|JkyF0NHz6L;%wo5`Xw-M+3S{!9b;(GEq;K^bOyW=!5dYRebMO(e7#^E zHQD#5nQS_DYO2@@AYrTWH3HlE`UKyZ+a9b?E`KuU4t?)W3NAW(yGEhQ#AFx4XNtGp z1Yz1BgjK?Zz=F9p=8ZXtZ42up^fh2IP58++zKma?Pc+(exi9Izc2(o37#~7btJ&{R0`y8i}m2MqFfFnXoC| zb#3Fc!|s@3+ZYaYj<1;gZzSFo7UdO>5wP24LiM)p%f;L3BC%`3YieU$HvOBhqE|C%;I3Y@7BFDszWr zut-(vDr}%GeU_hC!Y5ppwm3J!APUO&G&*`3BvoJiWBBq-q=izgH*~ZFH^$D3+j=Z5 zW)Cc|QhzvL-H|Fa5ear|jDtWAUl7%WRBZm-zI}PNvfy zIe?`Xx81BVP|vDhW)vG z0oT*V{KjKNE-Ess&?N!IYo<`-WBrY#(6Bx916gF+kjVHi_9y-^%b<+@MbPK7!o1$% zP62%)?`Fcvt_i)7aG}lI)72`za?T>my5&AUi(6 zVxp9XAum0>3M8`h$Fiw`Bd~OzEYxOIL0BK# z{U6<$l=i#*bLRtKWx0e{w> zDCApWO2H95yUrCc&oT{vz#eM67arYesBUQ+?4VZ1KOXJN2`8Wq03Q!3&Fy#^wm-^; z))M*v7HP=Ct^#&+QtO4Bk**oD?$Vpwto1yAgoSD&IsH6qXv|&OKfS?Ao#<$fZ4^he zKLqpi^odPGEQ;Tu#5PBQ+{Vl)6&oRk(?ufg{WjTUmF_yp(rZiEf%F#H!INhv41omz z1WN|$L>u`oGvV4dC0}2FT}}eq(aZK>4$Vs7*^%xsyFU*pAGic-g3Y(Q>hpbTYMtC@ z(8>EpJor!BBt}E&O5fS_b9Va^0HI=cS~{bISybM!){@vsk3#kj*08r<|5QIVEU zwx5LoT(KW-Q$aRzFD|mJjJKKKXgwLg$~?*r?|6@9>!G?IYvXK+U9Fmy#-jfv%37_8 zQ%&WfPgB-J-wdP-Y*n8B#M$d42WSp!RY~YINyAM?ZU)0H>ePD-IA}RPkw2lPjTI=) z47)?K_0#Y?6O0I+IYbWi1Jd`nLIerCUf(1M!hJXFkb*jg9?)KFaE{=8*K0G`_jAmo zn=h$_(~wSak3i(k$N$4FhaV}~$G47CSemk1TikW*3rk6J$Ewz7QFG&6C|eBGR42fU z3Pm=nw0Wl~*ZLfY7``f42-Y#au>1^LU97W6=OPnc_3cYYcjw#5BRRRM8os%ne{FKc zxeob4Vd{r==KK`Ehc9pFw_*!Kiktuj@fS`i$ZZ^&RiFl1mA;f>MExZvWxeTTo%+f- z6LR79DA&gV4DqzHkBNpbzrRUT5U!NZ*>@V5LBGru^Od*ynMJ8pwguWX%-OeS0dlvT ztD1p|O1H{UK#daiv6+y6sp284wm7~jXeR1jMknKz>}0(ulLMW0=Q166Ii}jxO9wII zB(>9Y5>nQ5a@A$!h6$ozL;`FFo*)*BlNvy4FEI`wK(nT71a{-pC zU5@$*r*UPiJoKnsaW@mGv?W1&QYazv??iPl-4}v+LNJ8@``xuG#Jh>I>tgvg$}Tr~ zo|H?G@PfaV%*n4IMa9#ZDVoup@iPGA7y%^}(M~q0G{|2lBJKG;X6k;ZoQBnKweFtT zAy+w*1Ybn@BM2)yj}IeF?e0Fb{#d`lmG2a9q-1bXg$GJmhpY5AGT7ak?bkj`Ve9R? zk-g_5p|dUZ1|nrVu>}bnn(h>J!XE||ds7#$XsNm-V4fyfW}a-^18uOEb^1!{Sp7-T zEbA?^l$2JH4@>D~kE$PXk%eXNCAt}TxjV0#q{GESYQP7{)Ft^F-)2-KE{TRqb0}Yn zD*!uC(n%m~>-|qmbxHMTGfIXdMwe~(IUAvf<~bt%6kd0+)c(UL&_@>y%#eVxT|1BT zY1M9A)=)wtx=+$%5{e?SIs~-HHi# z=(E2xXnYnW)lJU3WJYPr+?4dapdczKcKgZk^ajBdrna>$T|(OS#c8mHmQTs#ogU~Z zF#ZjqbHV)M*6JH%q8U~M0`H2J%yXN>UZjg>+_8~ebl31W@oaLbVT1-L3F{4Mjtq^z z**bKy6a1)Y>M45;2@MP$w!@LRo(`ycc8dXqOC%yd!_q zo#$gsnUy~6Tu^8=IhFbS(dG&VZ47kCz&+FJrnp33I$7PzY6qDP z^AH+xt7>X*&lG5jm?cn(*2Qx_ar2pxUqp^%5z?~$>iu!zfd%=RRdY$_h>aB5eIm|I+W@|3zipN{@3vo&-XH7q zKmC|E{r-4WjfXd{cGo_5bzG6T5YJfLu|TApOUXxU*0+t$j1Q5nMQ#QrcPR#$ntZ5o z-Rq)%Xl8dh`1@{VAa3I;ixa9s_0sh^C;kJT@JMAc>Mp zh-AaPJ@}GDf>q{y|4w*RyS);is7&4)wIMS{Z1#Pfa&3D^uFSL9CuQ(u`u#)IdbW0q z60WfgtLFZftm7B&R*}qCsV7OY(C3Bv0$9zH)%W~NB8k%~j~lXMX11Yu)~(ex1H>+7 zViYcL1bPajY7cfLp`OcZE$o8gc;ho1naAa?pDsr)NyB_Ymcr{f0V&O|k`6L)lK5p# zn>AsfVrqwPq?Vx8Su#!r{N`lUB0anU$cW%5>`0|>_ol;bOu{YOmGfFms^wj&r#8~PvyP7cT?79%f7{Ja%kuL+Z|6a zI)Gbo5iUNo_xHuY+uqglW>QepBJkVKbyrvP@92u{w4UQ@Wv0G71*LU=GQaIi4b>Fw;cv z_utxjw{|^l6D|XB_|@UIb1l!q(WgWAzxh$oDZo5TWvm5Knc+xjc#I*V<`wtspTVPL z>N%cqqf$;f8Wd&t*xNxS)i-6QQvYG<*eAwBOVdO%_=&NOB*ZR0p0D$;)i8d%0qzlF z4|NC1_drxcoZ5H>z2#v2V3oj_w2NX8CNaH|5Gc+-F`OBtl=yzn`nKZ&u$(|WXBK%< zPEG-Sx&=QG9OgtneHtUgfp&=YDNY}}!OQ!73^QpLMiFA`gx6DtQK$HdP>Cb02+;yh z5d?Rk+JrKgRB*o%&|n#%jyah3`Pw798$4bG0(lIlNDs6w&DACxqrHoPur`wFM9>1LD z`i$!9Kv*XvERs77Fls(8!=g7;=F*TZLdnZ(j(~SCoLbTLu@Z?^>-ygMiDZpq1!ZB> zw5OjlZx{S$**vtpuugr#Sj1Cvn*=BV-+QDKxX( zr9eMZk9i=RlI-1sCx|5$bkxVRNVZbVA`&Lv059JFg9B)t@M5yMj%@%?7lZs+ztazV zCsN*~ijsigKPFM;ygW_PAh+$+tK&y@G4OK!+T$eY4>78+<1JNgyR@QpWbimT#Gy6) zq9Swgw`d=DAaug73kM>D2SSxidLQr<+M58`?rbC*?hv#=X-0R?@x^K-lKD7<0Ruc@IcUc#`0G6npFf*=q|Gg2=5SW##qsA#$#*JMS)N>0N^il zeyQ_HCc$`LvZg#{8S1lP@DlS&9)2IOV^n{EcJ6Kl6YgM{+6#wz&`xMhsc}ZOhfEDi z8QnSH$9!wsh5*PK}#fOg6*YYTopOeP5X&Ae`gT@ypTDw@G>{RIXQ6lvxkP36>A z`1P;ds1OuzTXSgUi($){na7FN3*7e5bJcE)sWuHT4rZTtl? zgkM?YyBI}0v`lvyDaFbro(Jlpr~7fB5ivs-J-fxdla3`N#G@)zID-{eJjltbe?OEO zhY~}M<9fXhgzsEmC>NXsGt@Bvxe+x#$l9*<>yTj*<`zF>1}dhCqmCxmOdfhWgYZMRoZq3nTr4=C zWW|5qHBfglIYsrx&Rf5nWMcuhz)Yk<;xmThZb-8Iew_=lSxH%yUDZu<+52Np>?JA+ z)4mF;wLB&@l#A(=`|pta^j5p`%qGsYLuQdWF4?sF)Cflk@04EzP1JhMMkMkC)to zW}ENa<4teIr(W9K?oMKu2pG~uYvw*YP#zeaWjxT0Kf6WIy`s?Do3nC$*XVco4z()S zt1U0P^n0Iu_vts?ovzvF62r*2Y2LM-zo7s19Rf|y%NI}pfd9J7|J-**|Am-w{V)5D zh^d{ksq#O^6hm{<|N9iuwa&k_yb-j2Yk7`|GbVk6{z*%ggl)s=YfW%70Cq|3*A{4& z0k%*1UTcm#J$c``+bQuNLJ*kQ9PGK#F-_hxxxBNxnh`3M4B1TJBQjwZCdi*13e^K^4fhMhLtusS6g#zhwtNdMW~(jv zv@OziU230@auCb=Lq(;M;zNsj&mi_HWRKXrOp9j4OfB%pm^eIx`uu~4th6Ts_9D$< zcOUpaWlTt~RG+MX%RF2cJjjceL^{YLMlAXRyy@LYPaH77H9S15Q)4 zKs$_=>LMSeC3kZAQ62l5bmr0zH*AjDRSs!t(z%B@d#Wey`X2;H$ux-57`}{^24b}rU>nWv$3&8u3YE3cuj1s)b0B6W8}VSlj9yY-2uZDpsGhZ z9mK!1En>SQ8#KlErMR1;lW*$*63mosV!M5GudG`o9(*Eo*;g5FQG5xwhMgS7HIB)Mn6cc%HZ#3aAnQUJ zFB;IPZ(+f4nDX&lwWO>V%$>tW>A0)`(?zq=!AakBWK5L8oQn6lZVVdaJ6C0cJ9h$` zdi<%uag~>XrAuI$v@KBB-VEvm0^S?Lg9+vmIMWD@gg^*nyg%QvyYD<@t|0}t`KTSW zdGecW&V}5>SaKQuA>{;%s~MD-Vc^hKd0>4rtBN{SF#QB)=y0n5CZ1$wm9f(~CaR)E z?+&E)r_S)-Kc~ww92u&E4X4VMcD(_JKLdPFULc#0!27!6tTw=&3pPUPPcoi#8LmS5 z0&0fv{3?s(vzcOuqBz3=0aZW2^5Ug|Zmn9SkGN6ffa$_>?~^&-9(WH`iuv7d{1u}I z*KjilS1MQp+VV%Bnr;V%j2ytWYjl{wOW-u!Gn^tGjw>moS8$)>;<}_jPyaW0!~1lu z*1P+$H!5LCN!xAv-DBmHP-}&7N-Qt^!9ynRg^uAQd|b7N1rtR-St~_w_*1+cnwFxz z^{g`q#FVkN;H9|_wm4%EfLaix&}saeV#s_lhW3uP_#nPt1rzd%DgTG0e)^eDlDe}BKDGzuD> z9a%L}Baj?{P9@L`+3Lq>e>REyPUFr0=-4{#4-#YKALbIa>cKV?S4$a~ zQhjK@`6~HY7M5(ioO~5#QA{o7QazA?sHRn8$IUGJE-HNffJ@wLF|dt|Lit$9`=s+lxxQ@V+g=jp6|Z^aUY(4w83 zJKYw@xH=P{+K%V2FWG7Gyhxt*3K@T(v4KVdjQ=>X_LYnUPkch`a!&cTm?|Gvmw0l) zMu@Q$8Sg#T=bdQi5Yz1=;CGrARK2S>wveqlq?X04lmF#)7E!TSrC?PaMrDIFxMLib zD~UA-wFL>FzQPYD{?Oam-5bpafnAg+OHmLAdsB;gy{0s*da9=0B~NZC0ml#W4>jd2 z7*O11o-O@wH6afGb89dYJlRIb8tGQ8gFA-}q0am~l)+J4A+{vAaGOVMbN=XKd_>e) zT{wXQOunY0r56zxHAda|WTUKkUZZmpM?c5O@4!iy?WR{BJG*ID304ciaY<$T~K zr2vKZcILu_7G6UZ)Ox5r9c5RtPZ^_>LrRMGA>FU0fiEq)w5A?7aqSZ)<13J7AxBU( zYE166D$|}?tVGvL(`HVrk@Q3~eut#?uGtu(L@s0vIr7FK8!@yk`e%lf3y`vCXyZJM`Wz|O^xOo2|OAx%VX-FSC2aQ%?AQ+Y8~4H zAgMM2dY%yOzbZPvQr|~F}ZSsVWCR)<^2~h$1PzPj&-?8uugo3+|Ob%#8 z?Ye( z&;DLboMx*+DUjoekh332-*`OSa{sQl3C9x!Cyjz52Tq$hg#0bUo4WCLyYfg%r&z`L z+S=+amk$mudf@OC4*uywvN4*zZV3^nuin;)!n|DNd4f@oOvOp?J-$YA-lIuXcIQ_fQul(rj8<8spox;%lfUCwZaVR8hSSz_W7nV=tw${Qo9A?6bF{1Jr&biu ze7D96G@7&>IZ@CgDs5h&aa@LPL?KL(#0X>fHPsikY(12AY)X9@HM@FfK8Q)nMC^rq zGGyC`j9nRun!(K8dO^7&ht7nO_h9XAb_|`mUMI7}j*X#WriW|} zx~k+F_idNG`wlERt`dsMPl`Xso#sQyvFAW#>XwzK-Vi%5tyr4S>OQ=>SCwwbYFl_!@R4ZWe-PDxN$RP=Ex`^g=3rz+E7fdlI= zHKjE4@&F|#!TfdVRAxoq*u10&{)l+2RiKy6w7boM`o@5@C$}YDk3whN-GzR!>DZmpuKGWvqr1wE+--@` zLC)LgybCrc`SUkle6P3XfzNRB?HBOi3q1IsC?N@Z==N^t#qO5P4rq?uCmF5UQ6Hgt z^tzSPKgk_z@W=C({&nD!#(nT`UEf9010(*c zW-`+pNZSL*0p7!>u~nf50}mel@fI~sJnlA2cI-hk8%Dq2oh$bJ*o-Or*8Uhmza|wq zo__KhHgPBy^1Gw)E#ud_~s)f@NVj4ixootjUQ{sPfhbq84W+x=JC`cWM>4>Z=s3@Kf2&I> z)vUWCTsvVo?3#D_B}}A8oH0%-M&vEfn+KGe4+ab0t|aYd;6{4C58IwgK~Ht44EKm9 zRiLir-R>7+X1s$S)5p4HP{WkF!UDGa6dWl%C;nnKp}YMK>)i`V(5ADmnrmZVM;fV~ zM;rHGhV?9jlvGwN$n!88prn(EJGm%oeN-_h>5JqtWBX~Aw2v83FwsfFwc_D;)4~sM zB4r!;e#TD{Zq*|dGch2S%oA0^8`Pc}|6iE(X&g=S z7DqqKE>>XI2^*?g``&^=1;r#N^|q#Lz^28@ytii(0RFUW3F*}{`OG&w#ynm-RA=x@ znc{1SFgA$QFe|fEUXOu6UdaIr*<-Y@6^ds$wPrQg6$KI1pt zT<=o$4+n->+n!iSpt5$3(9EufPDZ58fy+qvDM_Ko5A=m;+}JIXiS$M!woq z_4_#K5&eIax+%0$NbxT!{l9wrpDXqG;s1vNk-d|tsGFgUtKmPg)r3pMByB#&;nEdQ->g~XNh*cocEv>Y{0_xM0 z=#g&(MWWHy^@S?~rBqVd3Kqz`l!W08>XQUyW$N(v^S z7?V|`0k74g)mZ#y>HGuApf6}$`@zl4y({u)f(GO_`{U)s$JvgNll$ZHwLf}zKYZr& zFgU}02aBQk;zuCMtOZ~i(FK3nPeljOrzL1Tw?Ok1q66y5LEP^G zwY)&Hi#Xt^u|+Q|5~af=;1~2Th)Zw^r7;{JkMLG3L5_s~5&8moNt`iLm*L)o3gTGz zxGC6}d(7U?WV6!T7}#)66)YEM^E5^ZBlP7CBb2REdq8lR@T%yL17x~yjWHW%o~NAe z8rKD#s2LYL+@!zguC(ADN&Y0cQbXq{p@@TYda5qTq;-(!miNOqCk6PN$>x$VqCXJr zZg^%Lp0?IjBF|u=E~)_F9DSl9?FHG{js_dkNHCseiAR{P(_DhpAcbM;IL?hql$w;a zCmrquPC~99x=0aT^b06h;ssP}JHEV-Mi8}t8g7l&e-;g-pt*>RApr~`t_NkJ&$y+I z`4u7?S-S`T5^prNt6*7VOfV&+@J&$RPADm0PQ^k|tx#5hSU~qiQu^&H zsRlWvWi>?%Z<*v2JfHw)hbWRM0IgCjb;L#Pu88*&PC%E+TbTPNa-cK!2tWSF7@*@b zt=GKY33K3$ccx)ak1s|jUWbMiDvf~_0I&n5y>hI7MnrB;ZL0)M>y{`KJxo;9k=cM< z^X$cG>O$J1uMZO<9Bww}O_UPgA>wfc<)Uc};Lr2|&g9`+ij=G$&1#2s@n zNt>Ay;FTWO@Do`44RbMCKN2}0c10YZ!>MkzoPENGvz(5P8>f6!Lacz2HL$q+o+Z#v zV{v(t@haEnvI*_)-K|Lsw^&jb&I?pqDbVRWD_^FQn98FY{#FCWH`pc28+6;TS5UI4xit zRp8(kEX1&VRlyTQVF6;;c#?){hK;#4Qr?+CoU3c)3gXJ}LpO`7{GJ9zbq57%&bH{V zJ$Mp}`O|D38Otaq4TDkRtC$i`>!9rXmkq&6w2jU{&ZLY5UMF0%7FxKIV!IBfMFHk; zQ}1Q5r-JDNMkdupaZJ^A#ccqd#{7$d3$`SNm5|%~kBPsng+!R~q>uYuPoOIPL%p~j znv07fp$F=u(Z=i0@N`q(8U7KdM;wBL>ds9vWfZKO(a9_^kZ7Y~CxY43OkIl_@L<@$ zppV!o3e!{=EJaa7;iL!AD3N71=7D&q4LR)@xAJ~m+?+W+zlZOTg@6Ra)j4pNYaVF; zp}H2R)b3}yy+2}~Vlnekujs%olZo0$Iwh5X^M}VQpvsO~By-JX+gwM}uz=lwj$FqE zFt=EHRfCKU;)5bT3Vx}bDI8}(94lAq)%o%h$rD(E)Nxk|dx@5knR^|=4ye-G{wyHc z3=}^Z)%^Z3Uh;_+QaLdDHvYb?Ff|q9aBBh6IZ^X#;&FR;Qxe+(Wo#@TV0*X<6yr2t z*bbnJX7o~t48rnwnE;!5i$FFc8oUeM643b|gzrhqfp8!~v4>||g4k%mzt3>b88}4N zM`mnXs$NTcuc-&n0+B&^MhY|NF3aGej^UL8ZQ+d?{-U;y2xmblIiWOpC*XI*4l*-D zC~EoX52q^geA=$z7|sm{XMVSsJ-iz*62{4|Z5?q)R+6uK_BsZAXpboQ3}vwQI{w(; zx2f!B@&)`%%(k|1UESdN57Hcu(F9QfVTC01BPhz*NU=4{Qi2xv3KU(=VX9&><31gB zYR4q7r;mub8~x}*USI`GAh$I5CGPk^vy@uEa177Qqtd@1y9-xs9Fpjh6mX;SL{I8Z zC?*U5Mta)2ltUM}#g4wZWeAm%fC^S1jY%w{^=>^{b%dT{)%X^fex}Vmaq}VENW|K8 z&J6LBm`x(Hn8R|Q?+LK>k@4nO37Kuuf^cI-Owf_}j~&!B?Zd%V1=1K9jdh3SkeDY!RA)_0ni)lIXr4@~xZJBFZF`OV^jAow^N*d0o6l_H?5~QIEYqUGV0o zW!yt}WBIN7?ZT^`lBqk-Yl-w-v7J-F@!_J*h0dwW3ADdXT3_G-1oSdYPZg{y=ZUxf z?t=-O0A#QV1%Orq?1aB{!?+{b&V6Yp9L;i=SUc9im$X$;gN$6baAuJfQ^u{Up9qM`s4Hj z*a#DtYPcY9D`_mE1|Y<`eU+&f%XDAP7F$LBmcFay}HKEn+Wp(wV^=zlE|+xsW6FgfzVO5*?Gw{llyf?0i*9 zGoWg!ljeU}+Bb@v6^2^WPD@YOt>oU|H->;oe>kxFmU-%@T~6b9ePI45n(hHcd2X?uWJ@s`sA5P!$^{}B*yztV zeyjvb$?!YyQt;C=@8hg^g15mf&fuN&v2wR%Lv+zR{cSWLqkF$b! zg$_5dMlNk}b#570X$T=}r@zuSdZ%FPVV#P}!XoR1|w)AP7Ukh6RVG%$vBhitu25wWdb%q5hp*goQmQ z5SkthF+WbOT27L>9n2w9AzuCzV);7vK^_&Gb-K` z_(ou`MRpJ$vZ~VUEL<1q{u#Qd_n_&f9_5msHO?-`C%Gn`?%iA_*#W~WrLT!jW^{4) zVZZ=|02d_Ne@#$FfdCjV8k`&y-;&h#8XL09m?aL8Q3#Qus@!9((&bR=x zMQYcgzVKMDU>{36+`J&{B5sqB5B)0zYfFLlVxa=@$?G#v@9?zYaVNR0%v^&f%8!np z8iDmoA)J>Ou~Pojc&`c5@5NL34Bm?VGef*RZQx9Oqg$=nQ+!YVs49fcz<2_+rNZV2 zPNGc;T0_`S$m^I$1=JO20)_k&IpQ&V7noZkh#e%DulRIE(nva+$0=YI)rSm=0fTHq z+&vg>{TzeKDVd%U2)NFRgp1o<+Q(nySU=$@1L4M)j#f!P=HcM)HtjuSqD@rYw8)HP zNl9U&3@FcQh@zK{iYwJxt1p->kPGK>3l#FxIqNj|-5&m(=}U=;(GWDdpk^ufJo5Gp zXYS+MU?3dz6&d4;JUwpR&`B--;rqq%?(x1je#aV<9^)R695OHYN=is*sm$JpN#jLe(*jH%9{YmCyjG>ABWN*Zn%Az zYZMzt`N6$MEV>R;beXCsqly4KGTDFvP%7P^mAJk!FMDhrRqP7P&QuH8 ze4&E};h7^FDGH+N?aiQ2b}x}1 zSR6V=^BeO+P)lK#UL;VA9Lrz*ZEucYXlS3HK)|BKq^MVqayj0>nb5FH0$|3m^YPXC zKDzp0WXEgBNQfe4ESY}u*{t&an zfUncbgzelj7JcrE1qij9woMN)1`%N$Gclo1hEMn{TV=&K@c-F znDXv^GQEv(BAT!*7;QA+%PhaqhpK?(=?JW*B+(yJspmhkn3(M{uAL%=TjvY#te=V4 zpJb8Sv&%qx7hNsfO%BgilC}R{s+oocHBl(4c!a)W(nuiG5}F??Tn#Tdm>sCyl9Nk5#kEX5>6Ka?ez{mCYUX4s4pP4 z<(o7(|01XQ3=2Sql8kKo=7Ywby90ph_-xaHpP%Dxo*M(yJ!u#AA`*0R%~|=Izf#ek|O ztKdxv>G|9VM~qt^6qB*sp$sz5?K49qB%sC}i<1i2ER7)5nh?XJBEcRazawFZA%-$t zz?o4QCa-TbUqVT96Pm2D(mfB%cy}fjOIz z`)g_3K%H^kf(~_#uPqBqvRJ|$S0ZgpbeOEDn0&X5F1GHGT6u)ITknyW@qkFo3>t6^ zAz9&z&n(dhgQ<3@IZWZC^0_cr)Z4gp{#DuyF-)c(HV+ZxW^j% z5^TDJe7xf^+3h%S?LB#&bxbFSSKh$`#LGCoKhD9}NX{IO*+Am#bZ^SA^@CZQEAY>3%(9^u5pfHP+g(BEC6i%nCiWfqMpBB>-0g zFr{uenNkJf>$-cr?%+<>W}>ctd-f+b-0BHdv}Ua;s>F~36rERgSDT2_Z$Zmmj`y~= z!wex2q4a_NO+Pp|padJxIdl|f*TzitaW;6j_ICLAIU1K3XMPe1x?MXhka+8Ly_>Mp zL7lLUrCFhns7fdP^iB>u`YRx{!#M8)+X4c`87#y)H2wPlzT5&}e6VRELD#=qrxiZ=9lb0yTjd-py zX}<$NV%cUF*tc2mGJ_ER@7i42YnBflm7sMySIaDw{s=~sn_OfyHru`8ex?o=)@|!q zkjcL!H9wsl;QEm>{;Z#V=qqPNrk~Q%I|dn^WP*6lZGLxlp-0n=5x*9UO>?V@R$?XP z!Y=esD_bW^(A2cUGW}$F=H8gqRv8~_43_}+Egq>=U^W#z4+T{BT}TCNPX(n%n_>z!Zb%W{BbP;jp|>{7#z`$vg-{;7{k7^i{x7=-9qE zlcw0d_#x0MnPjGD2QSGr8ZuF<1x))a(GQTh{cLf$TgMvvf(eSG5?jyzSSs8a7kkts zZdI0m2u(4+9|5pgejB^nfj!V$+5pw=(LsNbl}D?kY8@&|8KY2nHuqN2*eXk}EtEQ1 z27xW?PlHrj-spnU)lgY5Idj@LDTza@ABraKTaP=lCLnSvD49&He9C$e!N^C%kv*Q+ zjSqusOv@D8%X+6C9NevqAHLq-yRcl}T3#NMBAS<`X4vM_Yvi>I*EBoKF6?VksiCIi zxT6T%V6IVkXlMk3N}Zir)DGZ&yZGFqo-`)S-fBCDAJ>KL>~Ad;J(iYNutINmnSHEN zJrGeXI_=vCr<6LMxWf0)Dp+epJhCQ?`y66h#&qFZ38%fe(`MUN@iNyVcL0@V~Jk}eu*1ZK(z+RZlwO%^Ji}_MH z$4w-_AvpW^q(7uSLr>%Yi`UxO0CSg^&}i_kB+hOHsadc(;o<%g*ltVPQ4qKFLY1?( zT(0v$9&$``+>$dqB9$$9^yBV2$L((lKL0C4ONK1nKQ!|IJWqY|;YUA}o?NB>=oEUdz8)D$R&wbcI)h~K&)|)Zf zSkAOyr6L&9ch>JxDFsxwVKa7BzpmenxvtufxnaOEo+vT5bHp8Qf8nv(&OSsGYZ9%UhzOIw1dio-K&KSaR@TXU0SiWP7%;}mFSwrfoaeq-^{D?Z}f1f zIO&Q^QR|W&H4c2K6ik_88K&li+EAAQvdOGU>TC|0E83n|>0nhOEe+Fou;lKph8u3Zo?l^0q$ zXcpnVTb9_&M;iu5e4+{W)-iezn<)f;xg%CZ!9UqZ1N)w<9`Jf8X0!Hr@6SVzBD*|9 zUyH#w&{yXotucQ#>bEOH`-lVd(b`}w-6hkabV$oaHQemXh52lyrq(rP&Hv_P5K08| zQcuVCJcn{wF~)OFdV}YU!A^*`A`#XC2E-3;K__m~rcXGxx>0?7Hty^>)~>n@ew7Fm z#Hw&fEICu>(U*=> zP;NGqE@E7E$p_qZ`?-z zn8G{f?8O1Q|B5zWlBP9J;ZM3TPfao8p7*#s2OhMlNQ*!xh{$bbWXEBMcQr=kBMzx< zNT9A5jRhx0|Fm<-G4a*(*u6d{$*KB92Opt8B1smc0^S&C!}@}k37bz6DvvZ;B&U_s zSoqDf@|++^;x%?Kn@{W@>FRH5Xe*R06_4I8%U50v*`vBY*sA zpcuaLfawWmUbk1Y4AE+cM|!$>sjU4cX0^URk>p2>g zlxA^%QML=a;iNLo+2xL5-(lK1R}s)C{I-v7$d3NjYN*}WKz1Pb+(RdDkT!{WiDhRW zSYQ;lF)Vb`)Dt9VD0zkf(7Aqj5yUuPFaX#DSKWV2(IDB8=eHRZ7g#}eGQ{ic#gxYG z*S(%(ZHDck#K}UitVIL)p<@6?6ng&l29x2uaHn_UvWof`Z7h0KG1(+K5f>h7%}E|R z$mRCtb*~qbPwHFYQB3?y7aO@>$O489d24LZQO5>#fEEcPI)DcW;5q>uC=;S1JaBuF zh^0)cd5D*1l3!P=Q19CPW1dz+OW$qFt5|3L@Jl9Yh77Mhd0{NvC2-z^E2n`iLCXKd zU*63Jbipry9Lu})UQ7>glrD&;V!CWsa zi9R>;vx*LApn?^fCDECfAc5BHxq%3)^%MYT)=TW$~`g*3ya zq(4TE^k5@;r&M+Me?~jXo>b`Cl$yWO;TE^_%EzsN*yWhFh!upDXihKJ!Sn{7L%X2; zOD(eopAY1G_9eU~qH;*g;ia}--sX;nryi68Edaiq)~B<|49tM9WNjeC!6jNA)oVDs8GTegG6sKS- z@2(7Eql_0{W=37Mwf&{G8H|-%=;i(7OS=6Vd6~nd z{kEI!Vv86b{a3aJG%b3_d**#TxR^@@-OlaI6Vf(BQ}X&qXvL>L+^vHxx%7ftp! z1bfb(acoeWpL~A*d!#kX@P1MkYuclu5yjm8)0l2LgKcPjR?5{=O@ zavQcn4d5UBK#kkNJZ8fibVtpVg^wKF@Lq&+zbv1E?E@Q9&qvujPQq2z)GOPs*I~ttV50Dz*50Mn zxGiU^CeyN!uadl3;HH3sTym@>xkexjkhY6}e-_9oKC!z^wL=SSj#KrO;aNNPG}N@T zEivEFv>LNwYYiSmQ0A!l<~`;;HTHM3doK|x>Z#GbUj^sWX?FuQcSM%$G~Aufon~2b zYM%k!t$>wDCgr8n=E}Xh#^Q|v$Gw!twAh>p%B&Gux;2#?m0JE$C)nTY&oazKk3xbM z!jY77KsD4)w(hb_kO_pc#J^M-09j`Vl-$(xXN5VNbX@o(XLd;xxJS`ztjqynYUa2` zYl$i}*Nd1ul}oNlN6NmRfEOj=h>1{%&=5rKfi)Md#n; zJcCh&ICtopH7vu=$KhJPY*TGwbg|!N@I2wRwF$$);+tvI{e4=k9;a1dM`!*7ToHzn z(>vyMMvXZn=P1`_*ANz=9_U-SOj8C6eafQm=E;CM&UZ11DqHTwlcwiQEgg5uKt@)A zzx%P$b~5ir$&)U2-%1;tRwKwL(}LPE++ArisjG_VX3KeHcIzx;7M6I~Ib@;uiCLx| zY(-}OB!OOfrpS;Au-<N9Be*Wm@*c zEUm$Jce+}eV*t+;AUB~Gs>yr)-AIuPG^iSM266!ep2|pfN!$&poB8V+v5XR+M>_=| zHEh6#IVxo6cM#DSNSG&Sm7^1j?7p`X0G(Ye;8K+Xo?(?Qd!cNf48EBTibHn|o`ndg zQI#BF^|wkXL*gxVpD#4Dv|&Q8s-3c_96UQ0Si3nbsK#cZdph&3E_b?5>g%g;d*S#m zAgY-g`593Icv-P0n4W5!9XV-9sHiV}0;#as zX^6&zkG$W@?EH?ePtfV&7N=PxKW-Pu8_F^w|QX+VbUqgps0 zl4YQ%?O}1n6a^wlW~gSS+ILK~F08lwPMAxT!B-H-gbSNA!RaR}Kk%;Vyk+~N0?9-M zk2(Up=%JW!(HVo{B7p|Li1+<3LgG*g6Qzj&F60TE^+eHeuv&hrsg|uVrzAFm`+iT2 zXWt8Tx*#)nSK8h98}bvM`_C-skyoBssPvZ0eJA#@Y~Q=ePRq^gmcf}LiS1lcWtNO} zd3cVJSb|Np+~1qoJ0G^ueje#FM@0lAGEmgWosfuU#UX}GazftI6p+xG0k~`x>}1hf ze2)%K=(bu6$!Tm3`9vhCQG>q+R!Fds0=eP(T-bCemTF*qCIQ*ukGZ@FwG7U<+c)Bf zS=Jj|CcwK&2G$u{$6$a~i_FQu={d%V7F9VR$J5+FTcnU@KA0M1 zo?snRAGMZi3?1b~o-W^UANx8pz)4|@ z0PqSVW=O`yg`kGjXl4e*QIOat978rF>pg)t!Fj7O&h9xVY zR7Y^gqJAS=o%b6||%(q-s2=_NFw-ntGHMXt|MDk8A#^h>GMCv0g(Rv@Y=HBr0e!E>;1itRlq_-o^zC+| z8XE`u{WB<@7E=7fDco!L62HUgu|d6^>JOEe{(OhlNON`R18QH$>1Wo>^B*Y5==AmO z)yReO&G6*^nTNk!TssPo0|EVqSNrcITiCypJjHhv%kM&EMjtwL!;$k=ExJE48O_$apDhNt8to z;FB;df}$vCL_T_<3kw2O(c*d~CFTw5#`%UG^`qPTW{?e)8IUN=X2Qrl5jY_i5{gES zZIa|P&y2HYaN1>Q!%_+(Z=M9^&pNkfk_5}`9UF~^-W3rmqaCn?;x?oS`3}*Dq#QVk zk3vm@g_Yv|UF<3r>m1G~JXxF>FFWoI+H;CaoG%cU{pYa|DI_@ES+jFZ26iQ%ZGqg7 zZCslfE=b*}z^Dl3DbCxxuu{+6!_U*fY5U9hk4 zo(!c85nsCN1Oux9TnG6dc5znUAI9)!rw&!YigUp%#Ko<)j#I+r(Y4m<#x@@nsELS% zl2+cwT$&As&-&G7#j-UHg|Yb-oBrujW%G}ALcjMaIpFd-H4rnTu7&gZW7m+~11jh^ zlidN2Y(T55NGiudv!Z;?Q>=lBgKNn#htM7^)0m`P$30!px>&6WRS=|Y&|{*3 z#N6}+Z6JPfAsR9?ku)-68n>7v;hjll#|T^;f>U2*8Uz}5r9s>Zlx2pD=yBF}wE8bF zwoAL>#3o`p4r0i#+r~Z%SzI$8>zMAK|H`;`SHD@D$!2-AOjn$W_KQTY{9LQmnOdcZ zpl>(O8Ob=^$R5*OoL6kCMHx4FU0z8J?9quNE&P!Hq;kGV3O9ZhdXRe4YS`$WBz3Z@ zkfU^s@l;IFf{0cPF?kPZkhHNg^(*!iJl{Fd35$pT(MYtQB0%zuSao0gV6=A>Y4Q6p ziImf|&EYZtnsP!IG|Izg(KqRkMUr>DY#zff$#naW$34jnrzRr%E^f;8T1~68Uy}Je zMJy@v%tuRZGBU)BMVFw^u>Mxzp2*39)L-scOC@9Y;GXJN+x?`nO8IG?Nq34_d0Qft ztVr!>LAerI#MH(mxRo-i-PaXnY(MLT{PXVsr2Y~G zs-@~*cJ?lhZ&f&GU3WP4s>#i&O11fzxA3=Kkl3dqbOdAC-7a&_b4yYePcW*IKKcTG zd@Juv3Pq#9zjyFY(Av%9;~II?ka;oc#ylA|2~dVVf(37!Gr)T7PsvLC}e+)%0 z6ixNMR*LM%?}sKt%Jnm~`?XQ}oUN~*-z1V+X|APv5c^inX{|hVq z&o%nrFW7ttARzw#p z6*z~w1lB+yf&e(3!Y{CMZ=4#mH2t(nM%C%t-hx2w^G(TPEDVZ-!@e+`GDQ{LcGqqN z^g7QUx%BiO1Ro5Blm<$LNo{7X5Wztpes|cf1I5RaGf%goWsL1A&2sS~%pvvj#mqM6 zPx3N!8sKihCi1BxynVKIOC*4x_KzqpIu97-oB|doZ36nQ9z;nwd71IUi{xQ6x5)q% z3?{p(?``NA z)36Zs^r6NjrkvP9f^nuENwXDq#E0SYN_Qbkp|@#h`34l(;ol+)WF8>3f-D46fzM^> zyK$>LqeU_b>X$u2F9Xb?g1*O|;q(YPBWL|ktUE?*kLv@4uihxbm3OV0E_F`+?76aP z<2D(S`-6AN@4`IxY5o0zL~yF2_*L@+eC|qQF`=f$2WT1hx;NvXy9ruk|MHanMxZl? z0UAUsxe@M$8LXGMw(x1e?y}i!5eCPgnYc=prWM#!2k5GuZrIlv_{wTjSS|1#*G*T? z+-k>y#k8%VYl~~TPW&T|wX9qGL8smr=jv!b;^uU4QQ>0}NeVr0f?;AK$PYGpg&yEo zvJ}j2M>h*BB@}ZyA2$}R0skr9*bzHR1`r^i|CH!|FJ4@0ARzYtW%2%BLBEip^Z!K6 z&ui_xA(pW7L__YD9P487S59|HcRaz3DxxJlSu$C|JCRpEU%-Hp7y=jqkvD6~zt?XP zD40TW+)c?EohXr-<(_N_4~DqQQ@@*C0onm5K8X3)kSl#@iyL8PK2F$`7vz|$EZ1SgUwWS_ z4+MH$K16b+NL~@Ib8Z9e9Pi*iXEWv1Kle8)G#d{ea&27Y;CDN4`!RIBcjU=}gePw2 zk%iV4r~2mb{x3mejUQ2`B6~s?Sz(rk5@d1Q;C z2<^H}pncK0z4uQT&|~p_JLIh5f1*klQW&L^UJM2Yqswn07G8h`cmg%zJ-$5Wct!Ok z_vO!J?yYhW#Fh>&^t)JeZ+XK^^@V0ocn5YT+^vTtqZ$v}n^FhYnzs&|hOcJSdR>B+27dohZK zklPOhegszR0JK0JhM96ppZVMeSra1p41_r}i`C0?p#w#ras%Ic150JJLGz}HYn+V5 zA{SVD{-a{tJDM=X+_`Wj#mtutxbXC*xDH%cqilXf#N7u{gohV;NRfCqwjL)`x!;sB zU$|JnSDl?sd3eZGZ>byIymWW(fLF;t)RfI9P`+KJzn;Fj;lgH|FUFEJ36oSY!7Q-; zHYBZf&(C~+3?P^$L0pZ>21gWoYVaj^4RC605G=sOdKrR;vc>EtV9PTQkM|`oSNOfn zgZnK|pG6`-OvmEUuOy~7ATwncUIbNtI!o&A6`2#XO)|@&O*#kBCbV5mf;BoOYvQ_j zm3RwuqBc9!z}AL4hZ3nw=w%pSglHh}oCvq)Cl?7e8Q%?ZF1iixc97h5PBOiU+Tgz> zE<8-xI7HkJ0^06}r>k%$pmwASLJQ^~#aXN&c zxY>ywfsi!9AsuQBmOu7s%W2I4^S-3Lso&|(X;~1LKuVIA9Y$5e7%vcQ$JLP)oRs%( znWo_Xf};bvQK(vboy%)fpvPcD;GJi9$&tzp@m8MMZU+GW{6q|}J9xY?A|UG62cCzh zH9{k+SVH)>LHff4VzYsG6F>t2)(9&m{p$`lfeIWz`7-DXHX6 zOKDJ$KMhfsBcL871ea$JPZ6`iEW(HpmIp7>6^o&Em-GxxMgX=<2#Bb*sUEL;duU;S z9$%o*^$g#B$<=(~8PyQf1d4<)ih@GGL74H3;)(GuZe$iY1dUu4(Yx}q)}F?Y&{VXR zESYc+jZ$Aj+86#Kqiux5sVpWN;DKq;l67`GB-oWF3f}QG|Il< zpBjVc!Ybs8nZW=k zbrc@FPtycJM4JZtCOjJaQpR-$8x9^7?YYXopsO4ELrylYORJEV@;dDEwU#m6GYuFZ zk~?Q#U^rjHvh5xkf8KV^8#}EQe4Edlo6lOp`0_UF;6r&t zJlAg-hD2F;!PeP$L4q>ksFg;$C8BFg62$u9j@lkIB@@Alh268z_hCeg{$$l3aD(=$ zH_cc@6Ef>i#CxM?Nf%fH>kFQz<$Em z#Jaqjo6cf(dg8?1cf=1D$PKz>qmotJH2}2<=j1(I zv3T|jV_PP%>IU(H5kXp#Co9Sn9IuF~($U(O2h$w`erf&be<-A?g432~R>sGJk)4HT zfk=l#OY2_ez$uQnkc8*w77uC>Wins=8}vc*J7a*Y2+HAE2@2+XSaNuXrOxtZ6 zNN7=2xHhAV;q9EZL*B5GVt^VAk?+1E{7r>cg7qx-hn+aL8hb&kL%IZDthM2$3tdCe zfzB9l^H0M#31Ui0HaBx%2tj4Arx2e@TB={By+#oz4KobU;c#X1gg{&v*=e39L%{wfpQrP)`Y zxh;GJJ#ryv=Z-oszH5-J`1!igElw3+Ym;85iTM)+OT^Z#I8}o#SJ@wf4YGPAQcOMcJ=5uOZ1;8%g5ZxAQTJOe5NR2=LQi zXG9+*4jtIV8Zbn5E)0iUjNqm#viI*_r8W;xrsCWmqwwALX3Q3uAEo$$Fofv$G5-O< zoa^9j>Z@7(w?bN!_Oi;Ba{Jq2X*nu#fgTvaSvqQEuaxRU;HnKSr(LO{d&lmjfwgG6 z1CM|%(G3P)TEL*Y)Lf8N2Z~l#q9fWkpd3524<}_>IuQ!lfnUA(L-ygyf1;OWr z3+aa~yTogv(cXd#%C)33{B*Ux>Lz5zt!6oP;}7F^2-YaA6&frT&ewnvqd=NJ^l+{Q zv@amwaWK=AQfmYE;Y513tfTBJQofTPVkv6#QMS_=w~o`!+kOfy zHVd}df%`z4Ffk|>rojz17ma`)WRA;q7+rz@jWhY3^1**&eVV)3C$44^oUyDU+T1ga z0#m-Dwe$)>@uuIwb8WfERtHpR!9!y58_zLy@HC=%J8IO=3tR)rEBG70ucUeL#F2FS zT!TT6aO2}{r9QGH42-^iJ-Z3v_$DZ6N6ao$6=lOU#0k-INManZt_*oRJ?#uV++xdM z5&5F0!5+!70*V zlvJsVGRK;ELBYkG8_WrKb6%8a2UTW3;2u8|)f_AtK1UKiroFRm`)W(L9gA)BAS zszh+{RgKxU)Sf9Zb3&0d9ggrB&-~T}&&HUcGp>tO9mk6V1izKBq<3qpVe4S6E(Rz% zH0*kIIlV*DW4_T4Y&GV7;56oz77V>Yg%gg_{u@|jj!ctIE6hGJ#zn$`qX>uT!75_IRN{$~n!7h?u!)8iWy}E z;Gn-owNuPyR)m91##~oIcD<%?qO$ID?kRpo5SrSMdymn+N>>*LDL(?>*S@LWJbOBX z5y zIyk~3(npn-`A1P}pC$8p0Jems&bK*EpGXAEu1%@(!wR;uK(npKWukaVgv<;JlnU_n zStfzw#NoNL_Ke(BA#-ts;T4rip>r`-hF%fXQdvGF;Rw-#T=pWKdBKDnr@$l3JvZaa z(}@XHF`9v!oNxdw^w%oH8s1#3(4Q5nw_fZZYR*G~cd5=dUwSN-8`sq&<*W?IFZb>m z+i(#LS74D05BOmN@BAwn&gL!+66_O#9fcl?TEH9`=d$Kj`n0$Lv=RlMeQRy)^{iirZfI( zJM!AGZiyCbxJaxgyfx~kZgmynrh;V4hsX`aH@1>^$r{Vxru*6|P@0X2MT6WL<7(*) zvgPXqAGoUcF5)ud41TN=7Ewg*%l8Pk0*{BwjNL7&XBOe#vi;G<(*ya_?0(;)R#2|q z%HUu55pph<&oNw| zcF)t)3dTIF6gQrh(c!jn9|Vy1^wg+&Q(KFIJZ_t=^RF{)Ar3dz~KPsGCwB%Ml##g!Rn zq~o-0Hx-?ZkKl|d=y|tOB^4^9=nt(rZuSRz1#ys+ujHmVeSeuXTirz59kYl_knu&{ zvuahFCEiJQ$pYcLr#A4M&4&NjWRM1Me7IRQf*hRF)4osRh5^u%D^mVFXba0(KhN&1 zII?5OjbZs>D44AcbbT;&x(KwEEy8To2m3j*iP>{8-8)7{Ws>$I9Ji-)nV<~TeZY2g zA!(pL^hZ!#JH>mw5JC8u<%|R6U;-RbtZ$pLbB~B8?E4l`o>~pg*$E#=EVQ@w7sDpz zxl8nZ|I~4>_Xx^upsw%9%7evd+g1>8WR0z`AK>6Ix~bh8gNkdTj3FVXapc zjQ;-dqLX-Ps?2LW{}*yATDsl5gTH1UYE}qZa%~y0utd&RkwXLRIO?XG_&ebcM@L`@ z%LvTfcn7a$M$;2m_oyCvMOVOR+!NR&xV-=k^!iJ7(|?SMDbJ-?Kpr!z)(5BVW8PmU)fn?Ue>io6j2#^0Y1?upbeqxEynu<{`sP8 z+cgiiKZ5QXTAN3278)2F;_c;pU!aCW>6d&J36IWH?Kfz6fHZwTfG6v1P=0`Qod(&` zEcgzu%1XEFV#sOJ$R5m=D9%k?q;+KagY^DlS9aPVXij}LuN%0b~c#_ zytQ0m^!G2A!Woq^^^uWDL+ae57fau4KsO*Wiy+%<)nuz(-=ViWce=QAw%<;aRZ{F-?Lg@MH(OJ(;{=Gl#@@{yU*M3sLi z5_?o$*D~ox6FIT+rfQ|)gH(3e5~SPSgvA~UxkS$t<~Ts9O71`_2+=ogPA^Zk~6r2N!p?ctpj5_|(*qUDe(?yPKcDWZ1?iN3WH8@d<@^G2y<| zKe9uOzk*1rc6y6xCszg&?ZXWTg10~pvq9BQ(a_?=R&>iL-e%9%baA=MHoevamR;4> z`OU$2iY-?#c}ht(J1{VktJRA4XA?NcalL)1?D(N!O$lP%z$`|XKPA*9lz#6v5GcKz zEnH1(Xt6aRi)kclcbWQ0J4y;ogio7q46H}~m(*>ZtX?6f<`TD+W=t7qVDj8i;z4+I zGwuO^d@jOAhy178G97)rl}>pPzEWFj=916~Lkm%&Fm6JX>@n_$qGRU*^?*|1^@7o( zP}Y%lNhqwf*4FO>kw3_GH_jG0gwIjy10Tc8jC8{A$e_=x+)i{wW+x@fmUy@kQkS4c zypmk^zCE}$ue8;`^Yw>bPuSFEE5+~{>D5iHWiyAetGTco+`;SiN3v(sBCE zQC4=1fV`CHqEeKExqovO1=yB35eo$?@o*PbFmOA%=9bm%;M~a(n_Sv;g2lkOfV-)) zA6sf1lz!0Yr5xWNrd8#dlGtwUOtzvXQlq%E~=V;_0|l)aU6g(aBWI)BFLLvrI*5~# zL`H(T=#hiHWLHj1#9wT#>>XN#E7^_XuU(xlNo-(jAoA~Dpx-rtue*zg+4489u4CW# z&@bAHz9*3W+(52lg3T@k>_N{tB_mOuQ!G@^8!~~*+oB+p;om^L1j8jC^C>Q--94~I z7|TA!Asw1DeZgiaqAl}Gk&9QKt~;Jc6t*}~Z??odj*#J(QFMs_yaO*(-(oP3Qz8*x zX_3?(Ws_G!2fD$vGYA09NfPOkocP;uB8QlzsXMj##OOnd`00=kL;+M|7IcXRbEPs1uH0 z00omn!$-tfP|c+u{ZmF=)J|Vt_}?0^V8@vJv~Q*SG{mVBqTV1xo}rsJD4`j*)6Fet zWgi-VJ{>F8Raomu?%797pO2UMx=WI^hsbr3~84EZiHm(^JFDF-o`A{ZNieUnQ zyxp76zP3s|bQaOcPGDXx8zk)841|NT4JVOI{g{0-OpAj_fW6kQJ2;n+4l(zby%YPEOD+hO3r zuSQS09^FSp!YE=YR-s2XrjtCJO+Y@VmX;Sicg0Lx{}N zcRpP3u1}UbEJ3Pw3tgIMP++WIJvV~S_`8I9XRjP7aXdf^TYfi|{3lccFl@$_ZKmg9 zacKpUqb!jbRye1eeONE#P_y0r*4Eac_i6lywzKzkJx`gM?t}xa%^A6`7%fKqi`mD+ z_I{sCD5ICD92KxHiJ z?i!f|K*SM6+iz}omm5wcQ6FkdcchiXjffep7bV{-`!Fz{k=mI59 z8TXocCajba=L^^zOA=khh0%)^R$CEByRzn_^j-mO9fgX?q z-e$eKCYB-+Q&+2c2Fly6&uJC}pM6!F{JEl{SXi{-471Rg3}}<)N)BYTL``p+bUF<- z3ZzEEa;XvFI%H!z$T5splyoYjd{fj#^O-i&r@N&!gV9p1XU$O(*HQ#oNte|f%&-k7 z>iI(Ao^AhT6ycqF=`^nx`?Vx>!fCsxxCziE51*k)TDg@hnuwDw0pEfA!1WVx`=QPC zcm6dOycE5zpOlj3;i?Q*I29&YGXatgAIWW+>a9ZA+9J&rK_1=z(&=KwCY?r%S%~G_ z`2`@?-f$>Ay=#eH$LIALVsbrMQH5}BB}Or(DDxnD*UiKM$_zod@+e(MA`)SF1b!MF zE@94e^I8;P2(4{`U4)-u;g|3@_Bb)>xjeiK^&rl{Ex9HmwctOICl816CD!5Ll-UE7 zMS}!qgLeHRpU9Ah89Y-ZJCMg4JH{F!=nXLuQzBT|q+e5>8Mowg6_9rlThAVp0)@K@ zbS~qjB~*7{ht%}d9Yc}A=@f`asQEND3B9b_+k-KuCF&2I-SpQTtt46+*8W>-D?0dEwPt9zis;K2dd#M<` zRS|5C;K4hC>RW{d{lh>lw|WLw!v3cYZr61aH9>@JgYq$7(UYz<+l77}IS0~mMi`7jyw8Mna)K)} zA-|?FVW=t(&QhOC-+1Gi_z{%Tq7832`6{cqeoydN{Nhdo_-Sr;aQ3|n1zlm?6h34qw1}-j(SQ6C+m`l zj@T{o>@5LV(34s(m-h2_B14gJcwf ziOXfFG7mk++$pW(lg-b}Z!Pag=>+C7P@-XTXk5i!r1EvsY!M=S#R z&7YgE+^-O-t}&s~Uh0rj5QbXU_(CsG!&TyYw|qSBm|t66*eQi_nkrgNPXSmxW5?*w z-N|bdPx)p0yrl)5e~n$^hGOH_X5&}RBcK~4eX&6;3_3I(Ax%;KjNoN;Lb_;2y=Zz^ zZqp|3r|=Ecx{KPi1A~KuzPTRN{E?tB{op;Xv-!0(@$(%YY&vJvmpnVlj(*eYC_H0z zlMqOl#Md?ridM7_)`_q`pAo^(_Ofm5n`++ zp^$6jhX!o*(eyFkw(CgW@TaZMbAPSz*He-;Rdea0j3mHHzTEmRmjiE`x@yg!^Y-NFz5l2D7+Mtt*o2^`PE4BmKBv z2X@`hHrGwktIH3W9LVOue&^?nIEg8Hf#>IH%C++vqb;WY(iaq2k*?QAiIz?qBOwy4 z1uZ~jzb=qg(nAuxpuEzq7CMI;)FV6?$e5O@BOL5wnY`kkT%uhQD80nRZ*U*3ak`;< zS?~mg@f6{@=6(oAfHLkjID<25C)F!n-0Bj-Hh_QV1rpbPm~P*vHd23l{H1%5y1Ks~ z1}C%w07!|!r&EZi_i^CXWX7ht8XIH$rnmNRcSE3beyr3J112FdK(Y9zVmfnw^d_Mm z^8Eyvb6x?}OTI?t8{8FadA<`5TiS#9+5<#&bAmgCzIBXNvtneYUB|&!lg80E12g-}^`yY?R|9`7FtZD1K(T4n8qhIfyE;%lePkJ(+PTjJxIIhdnoXv9AykO~t z`#Xemh%_HmVtjh->&h2{kW48BmEua~p+Diap>s9WT%QSZ_Dx4Kqe2FS4=|8aRQf12 zWim%0n4U2;k$l+e^7zV_%%pEpkhGeHX;|YG3@qE+KO+PqOq?lMC9ZLtP14=QbZzH= zHoxug=JL9SO^YJn}aPB+>kOBiBr8h6#&|3(*=zuH&VHDFUonWj=2GkhZ*< zoWN8`sk}T(dd$>mBHoEtdyb*tfNDEMpyMgIm7)nH z1x8n?!p3s3h}!fosai$WflPHV-CNb3($wc{z>d3OuTd_(rhR* z($}({5_por?`ZWEv-MxK7zs18J9%`r?@f9h6r#(ta!u2xtN4~WiK*edlzBl;vIS8r zVVoEWVm3?BnkZ{ZNeUIztLLnSOsdGcZFCo*;Z1N`mc+eXd*TxsGPHPoxZ_fqZ$?JJ zx9!|kCYo4nA>7E&#zU$|^ZkNT%yJ=gtvf9E%x5nV0RTLRK?awk4FC9KtXS}=HTKY^ zex`==M7V*vow3^$sZ=S9;uBmhM>{X}8Sm*RBn+60X4v#yW#1s$4uc(3>1rjAa9sCv zgf8=P+JCShCX|@;=$e?j_7OA8j=jvHkDRF4(H{GnVfALS(MzvpZH!j#X7S3_g>5&V zSIAA=X)s^{#Yk#h>8Oe*s-DlUste1+ah>97JIWtFo1LUnS zOl7dpK;EQKJ*=XUG%Zk2Dqe!$B1j6MCe=}6+8OG@FN*kxu$~G@yhrp*lx+db4xsFf z5R21e=9ZI{%N4!c-+##hRWPG%Xoo2MKx1BnD7+%Fujd3nBpx10|FHiDm)9GOR`Dll zNt@Jhw`}QBKyUDr1u=y*!1)dRBh1%B;Rx9rtGaJw7dmEqEV7k8<{N3wQ-uUB#{o7J z0~SzQ!vuTQ392l21}jtt@}2_<+B~gC<^xaH8B$&@4T{7axrnN@=dy3ISEkF4)@WS$ zBDyrcP(dR7{b{`rmr`8?=nC6%YyuQPGkHyA17Kb{%9C?jLxa)rO|ts02x?>YxZO)_ zEwB9vYpji@;vt7jG9dIc&K5MxHF9mR<~53f_3q3Xs`M=x#jO*M7FH-Q?TovwAbQE8 zYUVl30ySFGL7j^XzpBQwDy_WFHT$gM50|^U!?tP9y($mqPTaTNQ0g`733x}`v9VUj z!1nc%%jk+8$ddckAbH_GKj}f)xMhX~!rQnVtY-|{G~koY4vuWDij&pisg;wLf9jDZ z{MU~8PbE_;+31-#TzJCX6#z)4jJDUdBs@5=?#08cw#D{<*EzUzH;g9sy~)D{e3dIG@`Quaak`<#70$=BQT_M2P^Z4N{-6|N46Q zxdbVdwa_|3Uc2o-85oS%sLeuduCVqNbL1z@JYpr|={fT)pnu~p^2+SMmMlu!Gx974 zMMC+wxKp!hz?8sV>Z~#awnoT3gAb&hdxSw+K*p=O9`{TW`RiGq1EJ+30&1~ z``vvzh$+=X?Sfj^{7;$F!CWelx)s$6K46~bjjt#jk#dCrz&NSHShjdfqnAZu3}7xI z^jY{H-p1lfB=g|=_o>|kv=}bE*s<6)qw=A6@%jf=y#~x#nuwZgm zVjx8vbsLKD)ARo-OQtJVYDShcFD-dr)hq)co7mh(z$chOSlc#1MoZ}a1H`MTK>@>wvSf#1jRP& zX-I!pU`lrsH9KDCG_gCcDMHJK9n&M0BQ zwft8Wa8Oi&O@cw+9BQXrcvdejDn}kwrE>cx2~#LZ4UTDYROVu96e>Ekyx1OnPdPS} z*dqo(Fvn8 zil~$JJx-~dxA~UO;eJ1N-?2{(BB+==)wLOv)F0A27V^0g0U~j37}9@#%8~g5MA^K% zFND*ytA{qD|FNh>VFOBJLM%F#(-hkhc17hRbfTC&&KZ(0O?Y)f8S$$7wf7;@UiDL| z(eGm=sM7^10a&s-mn~#`HYaTE_Gu!=Yp+@W;Zxu$s*3}f)7MJv6bF5^x5+pq7sur_ zJRR6rqVuHmJM;kS1|easSbU&nR?5ZG(%b1HS4e-EArJ-=9Zw$EBBd8vD&M0 zds>q8fz@UE9Y#4X| zUMRv{HFnaB7}7CpaBS{O!KvA9!i4h4_+cm^$e|dp*&7CQfT3i%JdY;hz+ktYaN3lw zMnOmg)jC_hEVyi3eR4iTw`a~QCq@lxU0s`x)h0{P?XF$2i7yGEC% zg|>ZMUEB0Fd*2q9gG7ON_~h%tcW}98v;lbZ)JzxD;`49_xx(Oo&jg0%&`V*HjyR_G z;q~#he|Y@qQ;OjGa$N}LHU)dRscg$Q#lr|$d{Yb60oTsRtZuzsT23d#IeMPj!{rfw zIdq3MKIii`~STd{~yy%XD4$jdKG0@ z0Pq~n1D%(H0z;6!0z+pvXaGQv(_e=8e=YxgmV5a-Ga&K5`J9NkqrQRFuW6dIow<>k zzJraqjp_dYC|<2*DSyC$@-p5UiOFdv|)g!DVK=dUNLfTdRYSj6cNN1DDIk09S$lJkW!OlKj2amfO}=tq{`$0k;KbC`4PQ(4g6_K+RqNtX zPm#R(ulx6zdwAO$`T_cbSnjAU-XMl+jcQPeXgM>3oxb~$}W+>1XQ8gaHDG^x_U0q9PfvH+?YQt!o5_}UPmgq40 z=;o->8tG-f)2@+PLkwl4MS1ejrgW4((A=<1Bwx0oj zZ{=L-ldu&YPC{>gr6K`{UstB8Qlkpe>RgyC3~}&@#ZohyCW9URz7li^N)d^4V2HwqPEphUe_8*}M1x^}{H@(7LgY>IBJYwfIivt*8^pkZ>kI6Dq7mE*as zKVMShiOjw+ITRyWjnRUkk4W&+fm-85QZxpKdHhc4Eh)>vne$g!4B$?phD<|+YOHBM-Ye& zQpTJMxv$30#et03T5i0s2gFlvLy$oRXTstVkk__%?D%P#P@E?c$Aa;8M3M#ZDF83= zk0)7}Fo|W>jT-?UDh(=_~H7tSdLxg%valaO-U@-9Ji zJ&0{ZU$}c*nA)j^33|!p+mWqNy$8T|Lk%hAv;}@rS6JtKxC8l@cG;{LTY)<0 zxQV>FFz+~-I5@CgxClHwFdW!BGY>z)p21ZQ9*so6Y&nJ=l6Y2nC+qfhal3b-{ z=Mzza`Iid|CrJOd4kyRk1qWQNA%6DU-1-a?=U;0t?0;Gm-64YqF)vGPDA-h6ZNgQPV=Tmw zch|=03Sc1$vQIyFnP=XAo3&&h`8wfMqBVG5Dn%-zMICj~JiVth$$$o$FIY^dlQkL% zgDB)HvC6yiIB542r{etQ(_vH+s^FM`L@WTIWy;si!$te#M}}o%An*}we4#aG|M9Oy zuS4xIhrR?1DXzjg2VY{k6DoBS7{P-{i=dr@PNi2*^qWKNw0Z$z;T%Yk`{!+!9hkbj z(951@iOTzdcxVGah4#n{Py#HHa3O&NqQ`*A{Mt{XV~&FsMC*PgI6v$Tdt8N=ELI-0 z64Zs*V^7P#r74%_vBu5?_3@HzVeF@q-^6f0m*;QG3JB3s+s6=XN8FKKcAl1Wb32{^ zGhTRY8{lswC^11QDuMoAjZrrhbSHJL9}`I5_-W|$@NTt9^4mTMTBnv<1~udF3-1?R zAvMk#Ftn5RVZcr%D>~$=#Y%gKi3v0nHCUW2?K-%vs386}Mzi+gJ2Sb;UD#o@9hG$%ipbfN z;9Qzv+{i!cc2j53ulB)O5XDx|3Yfs-qe4(4jwQF<-Y7Tmi=&}>|t5JD8TPc z`m5N=ojoK|anv3}O&Nnq6fk}Jlp-nC(|+mn%W&C|7~eMPquhrkQ0=qDQ*|4)P6DcVR)ql~5ucgZEHa zRJ7C&<`b4Kt!WrIAVW6LX4vU-a$s6$@vJp?csE-9S-zj`+e#<5PGNvAKmE$h!ZRkS|RMIZ{F;<)jNG~QfV!-inK|v%Keoa+}_dB+L zx1dP^5s$@R%HCnb2p^XQuJs-2e?~^kT1tRu%f%5sVHsl)v|e1ECJ~=iL58^*XmVlH{~bjH-@3(hau;O<(tXs1#hA&g5OWTe#r2` zOTTxx?J0mqmk9$2&I*Hfon|@BJ|Q(7`o&?6Z9!Pq2>?dMNsA7i5yga26SA>r4rGb! zSU=jL5rcz=(Gtn*$qOLF%yLEaU*FZ&YPe$P;sPHt+HqeuY3|G!?;_RBK3z;~ye+vo z?Bv3PrUokb&gcG(wJm*MufEX(S}k;tqweKHBm}djFf61WhJY1-27K15OV<3PSq~AB z6Kr$@nTRMJ=O~GHTT6)4LYA8iA@CPO1@znPRjKjkg-45CSTlu#79kPz=yEbEk@4;U zV_aPDgYf^vDA_woFp64-$TER#2UVgCV@w8ZGYo(Zj3em5+O8^Z6k{ep8Pp<5?Zwh2 z{8C!Sj~9nA(u)v@!^Szj&n`6OeelPzAg(JZqVs~HmM+D*kPfw=U^d;EY7Xr7@-}ZA zjI(gGJTXo%=g` z%IOg-Cm4nd(s@z8!h?zK7|Vk&W7JK)mMCK0%9JeK3tNg<9?0&|t0N;7x5!MegMNp~ zwQl%8g?Oz4_q+fKTtvwn#bcX4kXw`72j|4)EL6u0*J2p5 zBVc0Oes(5Xm&;e)bfQy~(B2`p??CNu(efl=TxgKATAcfQ=`MgaLTlhP;k-0?@|}7a zQr||2I$dzwlq7&K6=<2)$w92hp_hJb@Sf_BqTg$#z}@(Ui((L_gfItq4K|u5U68#W zl4XmaeVJpK&dcq6#g7e3=FITJ*sG7v!jCmie8BnTNr{~}cDh;w3H#UD;rq**6I;%s zuI}_m;@*)FUw7h|0+FAf%`NzFCEFb$mtx4plib|Pj^zaJMfNyE;bz;0tOAul`{`PI zfs6u)L4cy}p%hp+L$3&AU{0&n4x)S{>N!_ z%a3{lCH_QDHH*up9>o@3H|2mP=971qJqdPPfW}UWI@Se z1k~NI$^~uj^)s;07o2^lJ=LXeJclm3@)qb=PWs>>Ht`lU*Ej)@pnN|e7WD?Tl$M0tHb_NTelP+ z)-jixpJO5~%N3<`M>CzAo)*j)(uj`JNIEp>UseCJTIc@LxP8<>sY;r-=>pAs-e1&;d>_u`i=YA*xl+`3>wf;|#KhbA-5BF2V_7;etX&SI8aEnMYTS zUTttXcM##MO9PBSSaf)^l(lq_h(eS+aDeoo{D>%Gnl1x*W?!HW7NH7nL)l-a&LHjW zjNc|y!Q$UvpcLigqf($+a-}9kBv0l2=8ta{rx!^xj#zX%<)%Woi`;0Qk{$Sp$)`Pz zM(#0cxK|VK8y{!u&7pFj5-(7od$u*$g*2QIuLMWCDr1%+@YvbB=Td58;`10M)1%VB z2$_+_vHEa6TPhVlaYi+4hw_@)H4GeZY9hoc_eS51OKot>KhXh94?b>QTWn39z#*58 z1ZbudC34V7j-fuP5RShsZVOn!La!lhM))OFSY@Ehq}vTQK6(s3805r?riTr0&+|`s z(@hQ7(eQ(BRk}bfw|C9}Xu#l~R(U2U4O{4NB(m)T1szN=MS=Q;k@| ztGg@lHZq-7Ya7epP!$1e{6L6z$5|rqtC{pti2}6mCPj;(fy)b=nTPb1na-@u$`pyu z@Df9f@xMCnG&ftTdgcVN$tt$CUjNJ#a9vAjQ_59j*`Rj0jEPW_qWF>4&MA!DVDTDb z3a;-x@W)&kZiqg1T6L%-XTha`A{b-}0+E&`h@&v;fKIiF4@JHM5`J~V?g(!r0Muum zmi#`c?NADy08moxzpZ^}(~=?*IL)Oh(F8`)m!XE19m`?&CWxE^l|m`(PX<{!?SIRq z9y*jwTA^!L=(jQ$>0v*#Fui{OrBl=> zgGO_QFKfrS$H~y{H_@s!)Ro0LdallK@-jLBIet=Z9KpyeGE4^}d3nolGk$WLw$9a{ z_e|?EZ=MvroJnu~?H)T`h{4q?c-{td-UPXPUn1Th-TEQT$CA*s4c(>shJT=c;`Xt%y@K#oX zEln3fdhTh%lR(l%rBI6*d4D*zVNByB8HzgYI(y=w`m10Cf$psB*AjD1?%n!bYkL@$ z_dIFy^hQU;sKHN=PQ7WmI})env)@&BK&}2{Yc6!I!=w6EBp6b33N5#IBO9#(<#?P; z3U}L9on|z{oo>&T+*vmzu7J;)beoBbcg- z9gZL)YLuygV>HPt!q~K^A|@VR$sD<)*4|nFK7%1wgr{1z9d)IF>knLcuC<`5_nXyO z*RNYi`qx)k_C#_kW6DQ$fN1+@fdG9~3ElJ+ICbnJez{6a5za#V=nVad9RZK_@s3Nu zVRjv~iT6x@)d!99RyPqGvrTELzjdSL<&}QL5>39?6rqBK==ux#eG}0fbSjZ&p6fd~ zOqLJXHAF>?ZTJ`1DW@JNE6?6vfus3D0$5engcY58&jBwmV@Ut0l$=?kW>2?Vlv<@J zb{f)%Z=Hj*){lZVG8y?fs-B4w=daofMYQ+xteEFbD&8f?G$vg#P30b>c;=(p43Wd}R74d12ic*+5fD>IgvD_X&lAaS zuf;-o*sOkFRu5$i#mvLD_p3p*3rS^_h3cZ`8Jl{2czKGmni=FV*ckW^WUFx z*0cWK8Abn9myOD?Ue6< zPU1G!I1gkqF{fE?ZGyq${7i6FR?_SymRp11bYpmgyeOBcuB|@p77oD1Vm`x$o}ju# z?Ko|oC5n4TW+PcHT4-5DYkCKI+uCJ%^B=?vgbq&{b+F&&IUw`Bb{x5-C}4ViIOZ?% zH2`1#Q|r=5gUrOqhZ~L>Hjlp+;p)`YKztOTNU^9_tv3FSofvv%yyP^JZnHMeG7I$i-*+g1TI`NL9rSc7_4y zuAll~_zVE-xapUkg73C$hh~Q?$fMqSA~2?r{&hLMI%=234Fd!H&5?x(*Z~`G=F-fC zSQZbe;->*>wIr4Qr>v&)s1o33l~dv#qm8lssE|7sWDOwP_1_p-h;;`sTMlPouLExG zl&_?n?Mnq3lyCiT%$Oje=Z>p9IQdp$V`MIPE|jmoX`cDm$k_4K!9nA6p10SWHU2k@ zujfv#3p_Ll>^8F8zcKrE!~{lY0X$$!kOOanWp!8_vWYrgn>6_dQdA(j<2qGGYY2}M z{x?0?Po@q)Er$2XS`QDNH22;*4@>J;lv~!JxpGTRKUA*QEL&ollHetGUr9nTa+;4h zZa!PqH4rhY#+hWPBP?;&2Y+ATEJ!W;pYx^{#2zO4lH{j4|HV8I%~2y&h@_@gvkq{;4F7@=!Y0KByPWv zGI!2Z2UjpW{QE%)V1GcwL8p`KNC4%Wxr&@F1ylrgDB>05(xreCN8h5`cP|m3IYSEv ziIGxtc7dGYZX2bU^8gwLJc#o6S>*;zjBD*V%@+1Cr0-hU7c6nRmqDX5&HlW=K)#lT zW!OE8ZlHfB)|A2-7%q*V=6~ec>YH0K4@IQ`$5nK>(Ii{tp7F-;gMbSO;Uqw$NrBRh zW3c?i-EHM^Z9VwhTs}7V!Q|_}cv#z7Zn@N@;-De#yf52&0c=meT)yJ*^fx;(0C{#) zdUxq+S1Oqfx3q3izC;0d!G`jq)aQao4}8DN@?_(=UE!e92BvT^e6;4BA`e7W_2vHR zvej0xx_irAX2}30RiiW=qz>3BBT7PLP~9ku20Ej9cpHTA_AYJuSXwF8QihhieI5M=woawD`MJ1A0J&K~s> zqwO1U$j@&Ic?PI2i8_;JCHoI@ArzrIOAhc0`ABxEX+t2;40e-)C_4L_R64?fh2yN3 zmA&9qCX-mITa$y-a`b@jAhwpwia~J9b?VZTbcacH_XDJ4eAUDnb#nq618TL5qb2qv zh{>P;N+z5lX&F8t#nqVg+Bk$YjKwT+$eP%}-XEbb8Ib)GEwKwbmic2qv@rEYFESv1 zp%-}}^l}8=V7+W8fKWjiM~+gKY3!I@cm~MQr4Mz?r-)Sur+kg{Z4f?di}Un$JHQj7 zPu~dsx=&Ob8<5MtvMoHupG*w|*u(G>%%=QR%AC+luB;;}c4T?9-!+GbvUYI-PV|m7 zs&g^{3&A&_q4I%+ZpyJ4iq)K4I{tnV*o6dZ_m`o_7zbE=L+g4Bzj?QMB51&iv4w?~ zh_Kwy4Z#X3NWP?bC&Ekr^FsY^5q)SeY&LjOOLj6qFNg_p=ZbVMxu6;6(P)3$aj9i8 z!FqxwDZQ0V!1k4@%82d_gSNmFF9Wpv++ZjIZMj16#5Qd+?6YQp`3%YA)xKS_7-tIL zDp`5Q|0q%G8NfgAk57!xe($aKHRw=1pbeJC)QwFWqj5Z_&;*-HSHAHtza9-)dAF4b zhq8-U3HnX8)k(-}OgT&5M2^q#kgBb+f-tKmt>8bQQ z#NcR9ZzS2drHnHLDLMlM6vBQLR`4xLUt(?#U+S?zxVHksF^oi9=RisySTj!1-Uw$M z4z@#Hm9u)-i>Of2P+%ufasr}k)2M5gWTPJdBE0Y#Frm*;Ubk3yL|X0w+*gn;OoL^= zZ*`py9lpjfN^evBQ;3uISi|hO?L8%tv(2n8g4|0j^8|6^A+-GAPmb^P zq*aHERpjrq&!g~(raKz6dvm`7=W--xyAs3-S?mXMrYZ*Q?u`2M^Rq=UMQ;wadSL`n zFN~UwSZtUHV2Vei=8#cZ`%S-yzM`ORHfYWKhexHzW4@lQq9S|xB&okKGkN@YbzKa1 z`u;KG+i)aUtD0~;;9N`S@Tpu_ES_Hmr0>QP)y-mD@a?(3>u7OtPIiKq17LUJmtLMh z&42)ZI$j=S%CPv5QYV**8&zShcx%8Bc}-Oy*z zT5r2e+7N4|rZ3rJ;+iuH91b8+mONEt7Tw)Ot`ydNXHdO%upo7v0?_~3TwImJD+=bQ zAC$HU7Dt(fr4H5UU5tgeRLzj0)ai-p(?FWzNZ5w8nlRDE6Zz|PJESKO5}T&d%M#Hq zZ%7JvVPyJ2f(AlFI{qH1p9Np78ucf%bu-!|I;~=p_!kpobjW(k9trvfxr~yIb7h!P zdeU^j^Jk8%3Z&44V^x<6O_lj7=49#Q=)(Wp|WdDFwQDM;2 zS1QH^UXr|Dcn-qt^$XCg5k3*gUjNLKwcH37#L0;Np`xJ@V;q-|C$vk~n*w&)Z@FS_ z+u`qv>Xde7Xp)amK>$%@1PH(e*p$aw*o7>>_8WblND>9aq7VYVb`wxW`@n>gCaGAW z3OftDI}9c0ztiXPi-1~PbtDgfg{vmk>yfyzBg3=lV@5B56}^2}$Lj8>`P`;ADT*t6 z^F`EkY;Z1$>kO&=N`{zjT&v)3{^cLn`ra{j{wN{{MFk6pLN|_cPa1SAdWTlmXp**c z!Ddi6Ojg41y|^0Tm$%)5^1WdRT{nGX%MVEvD?%aC#6cEpCd9{*TrCW(#X^+~I(RsH zeU7{tjDH0DYJBVTyH~6>)wE8dtG$4Q<4DOd?UQK`Ilk+^9**){JvOtsxAs12$bw*@=hA>=I+nV z>1d=Xb!kOsPZ`d0s+X6Tv}kG-IZoHLj&9bXDQR!(6TAzE>?PXX(Z+8va z=ex`^`D8|_F_W87G!Y=S0H4fT#FI`J0Qm}k{})B2|CnAw{e<3vf~24@BkB_1Fr6op zxYw89$AM~NGw*Ebtz9N&0dQ4I0}it?4)n}$^njnALrc%F>C{x8o7SQ5N$Uw1pRT`o z5%fWAp?+60DhNHD3l%3sjMTFg_cnDrKCr%^p3Vymj*NBoYgM4<6fKg*?C_9|J+~4{ z8O5h&h=Zm|w?sdBZ_HL(=~yLil&xXM2oOh4^wS^~fw}Wt2t)x$#PYlP0@Sh)6D@k9 zdt!K*IIT8t4R&MQ;=4_nV%D20^O1J|%B#1v%bSqxzyq!qh@mGw_tnFHPG&Bb21}Zh zxRn$6{ubY8!C{gF720&I`$z8J#VY18H(T>CJX z=OW04IH%iPxpZ$hx*~gYAOcbk(hIuAiW_Yg zeGrYRtz}M4Gqwz2z+n~8S|OaTAhICH@QEo87XDkogi)+^J31*eL*blgPO8ai)9=70 z?Z5<{pVQ&C;UI8H0=;jK*AfLHaNsYmhu`?%!rwt7H8vEiK*NJf zZK23;JYiP=7Mt9GHQRwlfui+;b?aQ-ekWkeH5B43KK`0%dEhu`adee7Fgv-jB}9_q zxJ8&Z9^_)je0CA8Sg4bD`nu?2dAO!PmhA>?2t=`U&@t4ELT>eE5eL-5u5-UW zJmqE)bt5OC>(}YmFp;SG1jN^Kf^$z`*)o~qhMD^$gxCS0PpMO}h{%Mm5C1rNPoZVo z*?A@aj^kCSJQYY5rsbk~8}Z;_a(yX+k2L%)5n?-BwE6HpUX71bsp4!U7?{A(0;oy% zMHrCgI+HcbyoYX^zA)y}y5pkqjp(lVhT5~L<#rit#9Bb7Bw}pv9nzfkxKuwYVxjGqCVLW+89)k3GV2;mCWNkNPL+Sd;$QIT_gbih0JGU6nGYmIL%(6Fa8|&_ z=l(|keiy;{T3^fs>#A1W;`y+Yh=s0t>;*(3q)<~+2CBr3Zagm8q1?mh9MTdmb7LfrH^j^zN?)V(rzLS2p_t^eVZ9V>j+EN^v5~UXqmpnQ6EsUK}uyJeEqC zD4P66B)-XqDjX>0p;5TlCNHwPWTyrSi%R2}tVRZcu8%m}C|t<=yl`5oOCWIn-!}!R zlz#N%X^)(xnTbv%8)b-j#siuMQ5!;ZZdEANB(tRfxBBG>=wYC8h;fxrbE~wOP; zX=s3(SJAm&%nX-x5cL7MA=lGpx#?bb+oGL{tkS*|DWnL$pQ8&W$91;O7s}H6L?$1@ zEcA>!q7h;5ohJi`$XcF&DWlMAc4Oj0-`Ej+_S+Yjrg+8e3SD77bxhE5Lp&@P$+!VD zSdjB*0fRo(q!{b9!fI?CslsZ4# z69HbUnD%BS3Nb{N0&vv`GM(W8=G!D#I-&-(wc`QY0t4}5gMZHLItc%Q+GeVq3SHW< zGl3o~NEaT6SIk8o(LSZRW^9R5+gb~RmzsJgk9)3E9@D!aN+>3ejCA?sjvX7`fZFbj zp=6$n8|91c;2^?$wt;3Wj=>tjkmsm|EL2@}@h^avwn7uaf41oyRqYNFy2szVB80Cc zqtU2acpjFBoY%2kPig`p%;J~glhw#W`58BvLwt;FT2plZCFxd2!S{TY153(@K^2LN zOhKJ+u*kGbA>wE>H-{h<52PfEhgvxlt6L_;KIYD&57~eN1e6)*iw+sH`ZduRVYa&3{^MV+6~U)VZm+pM_6y%#Yv0bdncvcy*J#QB2I9B_OePN}4)I&8 zPlJ_Yfw@sv#TeZm)L^L zB+Wd4&G%^d>xQ5D<#K{Q58gM?&{=LhNTq{M zNB@?jbQ&Qw7K$PuGp6!RA!#eIk`E|kY-&^9B6mUo+ib%i*5WWD$%6z}x9`s=mIM)) zJ#ejx3LJ{_Q2iB_AZ8bLyHN>EfpieDlHcpn$vW%b)NtGK<9r|4=x!(^flgtnxDR!s z>oxh&xi&s_cTqRi;u8bNwsv;5y*D{tI5AHUJmhwPYg{#PT*H-!AUIF`vHZ8MjP>W& z_)28<{d?e#!$ z;v84dKZ5*$IfmMl2GXEkQ9S{-Joe(;>S9V7VqwPlK~Cc4C2Fj-iqLtN&>1d9x?W90 zQMY*1QvcH0-n3pNTNZUTFj-X~OncI7sCD(H@SCWs2_QQ>BPUsH{EeA7LCFL8BoDRe zsqG7dfI+>|M;1kON_VZ4c~y$aBiN&*TBJpX)_DzB?0qwr1~*H})^$fq19<#?ex#ZX z6G&9DUz6_0`EcKN(i;Mv8_PMd5x7g(sG@&ppbPXb{e@txBJd8mtfK4389`p=&mxwBj~1SMy@GjL%aHuOHN{_;d(&v zlic}uk%Pl`EyS0Jt7@WfZmay9b?h7EDl1Y=bd_$)|0O6m8wZt^w0^$Bh&{!i-G)`u z94b(~ zt>7}ag~I-WnN`NYk}d{jimvfCCcI6(P75tZ)S;3MtckIxh&WoNKQ23$JhiqD;?MDJ z5N9&8o%5f_KS9$B)=a;bi;E!@eHZ=xbCm?O`pkpA6j)@jna7Ctg@emNNO90 zJfEWd3;AD{1l#RX$r5}5n?qeir2mqLrE+P3ZqqBcFVSIi5J$-$($VO-q zGH~T_T8{p?N;5=T?&w}PONmTadVqgDcQ2W8-QQ%=)S!uxezsF0i#A^-KqhWC#gv}O z(-WCfr<=)DfK?`-L=%x7`2pE1_6>(?^_^_Z zLPuI#7c+M+6!n)){!omCC$bRXji!Ic2Ip{|kRI(+^=0!B)M*z;Q8po&p*~>9^^u)M zmhF*{*AA<)Tm=6v!j11gj6<@ZbScMBUS#EACpJ)@nZT@b_kPIa_3}$@>CLVoh1sSHWZk>G3EKr-qI7 zT=hI)8C24ymm-~lJ)U2n9UoDI4CQ_z~8U);|H$_F%0=IfYQ@Mt9>3qO_c^ZeI`D~07~f_!uV5!&4D03F>oRZ#hXy5e}){~QTWiBfs9 zQX81ca*4jS`HA)j?#oQG&_76G?TMDw-aw7xhc(xPV-6b!hd`h+p2yX)#Isa!Rk753 zJH$0Cfp>7L@u+_2+O5Mz1=~OnKHE}e7ALQ`aEoMv-7ZLnBLV>c@tH_Jh7?&?&$Vuli9Vwyv-Q!)8_J* zYTyJu$Kww=yx6&;uov6X$&+Q$kt+m%`2c-AZCqGt0g?NA^Yw!|F=qM@j`|X+BUQn1 za3Or*GlP9C5)Zz*y}osBnGyl9_NT2Fu>-^DT2Ln1DDig?*)kxLHtXO_PqO(K)Jv~2 zhID3wW@Cid7WoSxJWh%+i46Y`h0k;h)oZiPx!RG@8G5hyv(nHOZHNel+XHr-$=(U4 zJiOc2#zU~4KaAJg(*=EB>dQ@!2MI*avTGU{WV!8*7@kE24@<&5!At(U1prfTl92Ki z`!YC|)A4CYEj|vkIC%s}@hbTQOmZ;=SvSB;Nw-3!u|`x;_E=wJpWko3<6sx#4}!RFIO-*Q@HMwWi!Se@f|G_qlc9yLG0-; z>QK!I zBabTm0c*W{-3pJo1<)IWgr4FJtH$LfaAIF1&AT?0T( zc7ALl_(QUJm&*`G!*FMg9}maR!_CWyF7HQ{^vW#f?oNy4dy((#SWaCNeJ4-vE`|BR zc_R6p0E~e7s#^S9iU{XWLWSLbV+94?5Y!Zn1pHR!;`K5+4UTsmySo1_0KW1_zyehb zz)iU2D+~w%_@MwF#Rn5H88_?n_h*?o-3v-oeMbFLyV!Ry_Ij&Rjkbwgk18wZq|Zkz za@c-viQ9vCg2VRM{I?O_YH0<{sJm?At!369;NtMK8N-kMq^`@l);zhSa=(7~R35K> zz2FbMWYM}!b+l-&?et|@@!IIbJb`CqW+~f=)sSU+{7RHd<_^#UBl&Zwg48jd;t4&z`ANg16$i1np%FnoVic5H0z$CD16GVwGytSVCUig*pie+ z%UUm#WqGBQrNx3W;>^fy+%oiS|HlM&{-$AkA+F>NvJ4lpc{`$)Xi*Mq@t2Ix=ID1N zRTpi7W5o_^RVb;ag;XVjYV2RV(okN#k|Rk={k(2jZ9)m?V+i*O3nCwLVA;!#QoDl9 zcpFWl1Iz=`)0{L=OqRfgs-YqUP=Yf_LFEF<{ zRHih01uDUnV!6$!L+>f<`3v<&oY02g z{ec8VCq2JyqRb)FThXN+g6@nnIcRR|f_QzmOz(kkQ>r&kPq!+XG{U>Zj$oX)G$1xc zfAF*I+C(ssG6DK5`Tcv7WWl?wNebh8uPm)e_seXK(=;t4w@)&bNq+Dl*ap5G{^HBd zd~+IC^k)(Vu|7wNO(gwgZ)%bncqPjxZXhSJ`9-i&_lON3)z)L@s$J=hZNn*V?)JC$ z<&${IKtAGa*wMqPa`1i`$M}8u{j-`Tm&7o%#@CL~f*Nndj)CH#}dFDNv4{mT+M|d>OWWp@wrc5?BLLx{?s+zi6LD8NvXOoYi@Fe7( zN$w-Z3e%f4ji{6YujPmzO?ckpiBGw?H>K=W20ZgKqI=h+_&UkBp6xy4nC*5K2!8U<+WQJS3rQ!;<-fr5Mfn|7;c4tN-=y%twn%pc4+cZkz8iI5A_CJ=( zn(NoB?rQB3t}yY2;Hwlq4*&R@SzEKQvu8M;KO=HCvq5M#nzIo~NCt3lHhmJp`}G7O z42sWTbO8EAs~S4u?y#R{!WJD+%kFbmU%1}P+U+g*lFc)tk$3uoHh}3*4`(O!C2fTT zX?-IIHSGEWoWju1)=}i^Q;b9>GSN69o?aGP#x!b~<75egt!G+!g3(}yJZ;|BC|1oE z3-*0HyWjl!2PWprVa*+NrpS|j4w1?P`1oSew;3=rO!{|y_){V>@EdOBvZCnA`FaRa`P;d5vLa4%vi^SZ zyehx`m#AwX>;zPf6ae5q(yjkq)FrJ90KoIV8D04WeKE;8wWSHRRwGG7(puLU*BU}b62w4^UwfJT*B;#-69xdm2nWU1iUvsl<}F@c z-Y>A$mc=8I=_LxesDPRDX((gya}K=Brotwv{kx)njITXhpL^gcX=gNZ!T#WZGN!JU zT3QxH%>QJfr<3G{!LD8R*!Vb`8atwnYw&H#wyv&DGCMZ7`77AhNzP@>=NDm|Fw4~p z|IOikVEaZc&@68$JS$Nr{eVzx{1n5t2ij)Zd%9< zLen(eNm-i(7#uBIVawdlcyPFl#6+v8t4PC8*JqoG2Y0)h{zfAYAAUPIA_xyXC&9~L zVLxxLbm`dmyMzsx8X}ON>)=yh<5Z)lRYox#NrRUZ{C_w*r|8TAWn0I#ZQC8&wrzH7 z+jjEDwrzK8Cmq{%a(mzVy2m(ooYyth(|TA{vue(-B9VsWbY%@=Zo7)Utz_7jDjI`@ z$8HmGN?_Tkqt>HqYN(5@H*CAXnc9Fh)!pr`lz62{L3x(EoqgWVZZDhtJN&)Ye;(bg zkhjA0EIk|3&MU?(aMa~-t9q+z?D+hq=sH%Utd^Ee*&sK7`qWvo$HaW>mg-96qubk6 zE=qZ>3waOk?9D+t!X`fe8`)@55FE3HV%cK6p=M`n#*&U%nBo${7~-fWHqw0Ro<^*w z1J0?N6-ru}`?6S|UHp==n2_`RLy_`hj@$@>K-uxvhC=n2!BeNRTzs1Xr@;GL0#S~z zu$tDHpd=powDaJ^kbeFA$%nm*_5T3DPBwOyfu{LYw*k*f$1{^hmlFq$Fp?V?Vu;3T z^_!5a^bBCw%*G%xK*0D|sk2i|1S9R0gO0zEpZJF1WY&7|=XVN2Kj&nGTmqic12CZR z)3nSNNIFcu*U@^djvwiE2^EJg|FP9P??^Ip1~a|D!9JUNh1h^;+Uya)LB?qia9kU) zyCkS(^K_!~JZ{v9nhU1SsBnFvy5LVHw`N$9Pa5R*8n9#cjo_k(T(ht$lvXLahLju{ zl`ieXn}_Cy;X!kMy~ui&PLlAkFY~{NfTdsX;1ay8-RyiP) zK&&O|r#kHXbmFFo8_gB2Y=`nLA0_6j52n&s*`*&jHR|sCwO1sF5()5vSl%9I#LbL@ z=$Z42+3CVfS3qj=HJ5-CmZ!-GrgM7i*%3oW<0F9AKl6}gDE$7a%@UUtHnujT_jC8hV z2Ok|hN7KcGcwr-=wTI>c-vIXKt8pjI47tTez-XiYjBlZVcnMcAh zUKtZAT%48mo$609*wEs=WQ}7LP1K+)lI=mJUJC8;3?C*O2B&r{gFjivEngLszK^6& zE_YK;G*`~fiuYma%n38e@H8|$nW`WrKZ;n_lZ68q1#pY{Ad{N{cmaEd_XF)irI)Lin8 zJXl`p7adH@G??Thed^M7pUv9O$tPih)!mZtZ|sp zwYQGc&?OdQNWqCd5F<&iDc8)E3z|lW(JCm*8T%_u(XF3e{JEYt5|L$=s+3SZ5nKQ$n@&_M7p?Dzf4U(%rTJ?n zIv0F35Zpc(fI~Bi`MgN|)jsJBAP7{sQ%TXT9}<#l|yQz^Wt|E$;>K`xje60np!xd zSI2~K?Xkv9=NSA&(Amr61N%kF5#3=#$z-GtISTNV{reAB$^n^WELRE!QXCn(c7U6X z#2lzWaU9u2$Om)VfEoi1m5v!TB-SAPCYuw5{&y$*wDN!mM^LRFfde(Q=>D;j zHYs91E9Vk*0;eSp5J*qqYz_3Qk~xy|641MZi(o;e&0#PcTY*S#O9cN5du`z1{2CyL zl;l}Z4wAs*aIWa+CMnh=xVm2|rn`GPzKM|H;LO9uni7Et_Q4x$XrZ~34-Ozl+FcMl zjpOk<_^bqpqqGGn(RIkS?yLa)oh~J%%8Q6kfEM|Nz6(q>pgtbVQOKDOA4(U~C$?+Y z5)um4%jygf%>DoXnfsdfF>XN8I#pBU^ z`)b$?9SsssLgT9JZlUNv>Yx>tVF4@vjr{tExp@g^tc?_iGTjo#L5;W=b7S>bf%q#P z%J|?<0-$qW1@~(Tre^PYUfq)&;BLmKAw;4 zeiUqhAX4Z6g0yn56X_^V(>sEOtgU%Gl&V~s6{j>?g?8*DE87a5;+^~~2W;2)J(A)= z0V>hOuu`1|lthC7bSVWRKEFcX$&cfgA!#;9smaWU6rH652cNuyq0PX~=xxX_OhrIB zQY#5QP9A(nEL3>OaaimRis#EIHMfq^!iYV?9-jF)KC#FQ>31tp35r3PtktSH^l_7o zx5RN{?~oDNLR=_|I%tx_U=XPaylp^Hh;l~y0kdd9_0Rz4(FLw4^<8p7I?|t)NCY3W zGAj@2vpA;OYmQkxs-D9klO(PcCu`0v7%R72furRu{>Fw_kgnPMIcP@IoaHy=obz7h z{RLU-+CWxKyNf@Rj3_x?{zf1$zY=&g_W;6{8o<%y70>}Br$hoL`zKr$@9DtgTY+k-*VIHtZyg&z_3eBJ`n^K# z$Bc#NSAk!Q_VewWb7jS|!$W;q_Ar;)1Xtbc8>!2hNGjt~4?7}{2Fn19U~SxWH$ zGcK+`_rCqV4b7H<)55`oD^PtpAX#qWhWk7E3Tx)%|=i?6A)xRZi zSWv=`OEUD^wySx_n_|u%kmuudZX*=AAFXurRlv}AubPQJ;N|!7!r5AO~NfVArhtM8Zngu7^_=>sjp zfxa?a@n_|H#+M!>KTbmq1a`>ZM&q^Kv@ysI>n>PQbcViDl~2d(3gdKQ+s`U~pf)1& zXim*tcNc@Gv#nLe?rOV2A9kXol(_G7w~NAelvc3K9_sR5c+(1_P435O2qrw z?`EKHrjmABZ>HUy`=`6@;~+lgT)kgv00~0#izi`;2ZL_bC+LmJO)SyuY@}Z2F znsb-spgL%76Yg(3e2On;i)w)3%wk$92dmC-Oil0sl&6lFC{0RC3L1N6SBcUSKJrF; zq9xvJwXC(^L_VgYma#wV`qR)^boZ^X^B4BNb@gIn17FwZ0x?Wrq(Y~chRbzr~~5JaBa zuz(h=?P zv}RlUYy1*V7JxCoHI}0ldB~p&RV`rjhSHR^BnOp5>ao9sjoXf-U0=o|F_z+No`}6? zHOz(vG;a3uhlT-_VkZpNYa)lQauYH3AvEc0AC7@9#h&MKrYlTmYk+3zFp6TRbh-nh zs6!Q1w}WC$EGxkIjhJFyw`^rL#{yDdUu2Tp2Z=n3fNk2C9X?slr4JX7@&TNzT?^C& zA^{brP2p>&l>(_k)Ocz=b}t{U;l>Gy-l4i-c7>J#oNw_1gw4EfcauLiT zA2rRnUCymv@|`F(kzA}NZ{AYj>rOZmwYjoO;PeC}^s?YB(zUFcs9?d`YCwNOu*9N{ z-=YA{v{g?-gg})p+8E$`zh-ams0L6pC|jv|-g*k#sR>z#%hr6%^3^`$)4s7@S;3y-bM&Q@kB&9$;3K$9N-sx||IfjdBd z{fKEe7nd0{7n|obGr|_Ge;$gyZLcH&orY{fo{=Ig(b5}8L)SwVuAXXKT$b3eBz#7prJVNTtE6Wpwn z8MO(UpRlS^&N(J7>xAj~jK%wi``AoABh!CCn!nSLUS7`+ffD>16bIw{=iV25-W>^B znH8A$4EQsIt!>(9E&O06i_`YkXll(JKGum+e1kt*TrmifSS+u)g8$ZNx*yY`0tkwO zw9wWe1M`Flu<(EaGmhXlWV&BS`y?2UIOmNwx%d7;^hdvuTVl{*R-XhoINGkhd_%iJ zPlWjCkuOaiJ&&peEG=O~UOz#haX+VlG*T1j-H?xUGLhpB9?vVsWN?}X^?=v_j_DG# zt*x?F2<#38nd6{qb%&f!z)e@ADVH34@T_5VaO#I9VxFxMqApY!@Q5exPru^>6Q>U> zPWn0cgQ6Bpe*L^5a51;iOJJpnTb=n~NDu2e(eeHJN=wS{uIM~+WYuys0OBQ^gFEJm z3`u_shbucJxhQ$Ek9*RSz(D7|K3L$qdHb%~1E^Vr2QfbX%FFUPVUD)h@#jm)yOR&H z3*fovE>`nZtka>PHk_m<(C(v0F|G!GuxP&ULlBa`u#h^hH@M5)d4edaVX*U|w(`O+ zx>nB2YwP<`IP|nUcQsQ0D@~BXbE&ePlmZW4b-BZUrN*_r|08445<&$L9%UnQv$!lt zj>llVS5U0E{co^pUQ~K#P$>sxfz{z8x@aknab`fXQzJP6*lymsWRYfQ6`-ZXHy*D#&)b4AjvdW(gygJ%cP=^6 zuL$2-8qokq^FJPLXtR<_8F&Us$YVSg-*^F?0Z=a)QIdq{G1%Qhj`lHdjccM_s!RUEZT>L12d`i|D^PZqv{Nh0Ug7;{RGme{WGr+fhw1og8_Z% zCnbAO8UfER=cSz#b4Y=yOJB2wMhb#=F|q0QA{~L$C{WHkz($TR7ZWAxF$;D0=`Rc8 zYe8c?naa5RKn7(|W&F$0R#3mo#Qc6tgqa=VM#yPPa6K7ohPKDaptxH7W5!G)%-Uxq zQSJ$nK-u^^R=eDoJvDRYAER0C5;|pY1_a#PU(=U;!`!A@Z1g+l@t-gT_u;zoE6QYk z*V!+fbNit78g}KNCQWk1;QX|$9qw5_@pZu28d|Ko@D&;uS<#8B3)}HtNZdV!=fwVO zKYg(+iRJEQt7lk)a{i+%D6>6f#{B$M-~O#(SC#YQXddqv3UQ;5ZwG3dI;VNVV&dY_ zSa0~}8c3VCvj?n!HJR$|RfPvly=I0G6JIU4$JJl(_j=@xgK^^KwFNs4_Tir?MFl0~ zv6jEHRNe%=xN>M}nT21w^EeY2usJeu)CSCjr^O;|?_USf8TByAhSG%_A|-!c1m=!V zdwKczdCVvaM79YEeX{EY{XqKJzES+$LEWM49T0~LsXr*w`PwTLP@}FhVMJHT_F|7z z9EhK|T*5c$tzSazW?ZPIK7D-W{1{~?+uN3za56f6t+uP14f!cxuYzK==h^VXk|Wk* zUx@y=QKsX|N?m-qn#c4VBnu>N4Hl!$YTus1fzQmAEyVYEnUt>XjV#q122v82uJ{@< zj{6C30e>X0A&6!;6oTF#!S^Z;l$`Z`yf6RI#TVd}2-s#EF)FSHLzjGJJ?5Zljt@HR zUro|50SFRvpD_#pwcbQ*ZXc@>UXt3DMd(cMP9=${yP)o6GvHQ%9{POWtOH5kPg0eT zLKx1fKk!Jvljs$QO}6BU6=-7GLP`}?LCs=}FYQfZH$LMEnFTd7lwJ_9yth}6_-bDX zzz`_+PO%E#edW;Vgk`HBHH?Rbg)xekl z0$GoySJPYAEAc_a5_8`3DD#Bos`KG_DtX>O-Drme)}PXOJ9qLaz{856}vTQY1EU0%rK}e=g4zJY1cm z9E-cS-GGVp_5Ou?@r)jieghV^%C7I>XTIhQ_O>ieS^dREab&k=?tE*mh)c#+hLMNH z9t2q4{QraWj8q~{FNh;%8eI- zY_0j-SJMNSzcU3)@REGwnSkRVmv(js%=q`mL{L+5vOiv44j{MRTiDKnP-V3wo-B80 z1O?Y?vUx9W3Lfi>J}8ldOpxEhk*P@1MSd>_lM~MYOW@yv9V`)YK8mEfAG!nRbFb(n zb)94H;pRXhdwMr*x*S*ebs@OvuN2~M461!Np;DD=`@PJNT`%M*EiCX$=D1TpvWNLR z%ovrK>)tQMFl@&G?--~d#B`8ILv*q4{2h0)i(E{)56PzZt@j@F3(8i96SQUThwt~_ z@6XTodk=@lZtn$8sI7$%(fAd&gTkz{M^nNM5nar-O@*xrpc(6Aa8^)`k|*V;{MiKq zb^AhTiM(4_Ten9W0(rwKbh2!NM{X}>Zg566%U;o&Qk@GyR%BiOM3%$~@O za@X{=ZZ)qVR_J4L)b?qy<~!;ZO^OeZXc2>b<~G0rormbpP@FGTJdfiL`${AbT9u*;cp z-KRGsPhhPDg#iG@?EsRC#|v18zvvEwp)-J*=KaO09tJV^nxG=b++g;3EUP&^zeTQ@ z{?Eap4x9b1;;RWf&LxL={Pg<4`??92PE7Hrq#R5-#BeS*m_~r>{T}3BJZ~Ahgs9?g z>o2@b7iYF)4uy6)%~9;V!l|IuIyNX~l5j-+9A@LDIv0KNCrn+99>HX8)J-ye5HTRk z^fGFlQ<#Yty@uY*?ti&C=yE@J3!3j@*&g;#-AHTq&X@CT?do! z+M9ot-zYM5cK)(p zKK%O=k`d9tFtYSgx6KSpE{A&qn1+D z(WtNkwAdxJ78{kiMB^!6y$9)Ho{hSBZ*OZ3I<^}1H%t?yILK}(PI_Kc7@8aO%C8f}k)kV*+03 zvHt;G?;GsQ`l97Mgk1ai+1r`=TyB+_?qlypJOtWi1K*fOXG1Z5&%^t~ZqXnY_Vx}O z@Rz|LQ^}t>26~=r>9u41NAOAJbGdto{!~x68F%U3;gjLubXN zhom1a>{*I^pJb*^Gcp`ZN&RgM8%jnCCGHvy*w{Lxf}=6gg6JK$zj+k-kXq2sTJaFZ z{ys?Dhdd3<-VU$!$QyIJScSnWSPc!h)qABp>8#5`Y}-iKgw&ebR0(M|E{(;zR#-nl zaFQY)v!nl61Ys-CZ^V}du>x2KP7JOyMxO>tCJX5%S*lShb3NE>rIAVp8?Yj_!YNOwXjeOjVBBVsC>aAa$4hZ$k7F@yQI+L=23k@dr5l&a>aU#q z7tb&y^mec!Y^9!{ zqYU7A$B)Qa-?f{zLkc;=bkb{sqdvTdig0hI7{r=e8x!EpL(oZ z3npUuAg_PZhQ2Vcnf#R@Cc?QbyfJtPC(pd3&`z7KZeY30b&#$SLI0bu zMF!nMs>GTj6`mSUFzwPnO6uChYifn|Y*X zj)Vq&xp4(Pfyl60aY!aE94u8f0x#Qi#K1N(HWF7xIBC6-+F@)sh|a4R_FeX9LFOg$ zCZCU4hahfgN=p47nwum*Qs71Izo|k_?e*1RZ2Wjh!wL4(Fga^*5pz?D_g@8P?=ktm zl`WA(waj_659~e=1)8Nva`}Ah8BmC`(m42yo9K}&ppc3A@7J&^{qm$ z7ox}Rf1Dqg_-f&oV2(4(9=|ws@6OfI!pOgsZwRcEJR8ElqIs>)kHcn^VakVb8y%H< zxNhcP8xoZoazL%+r|({kU=35LBtvOMWxzrU1&Mi)&T+eC1J($m|`@)nZ+l-c`yp%1tN!(vjo>#7p9wGjS3-OUw_J9@0s;L;DExN`fk6!f zB=EnH5GpSJz{(~<&dz2|F8{NP7}5T)-yg;J=JOwMp|vY0ky?}1(6B;TW`^j7<@o3C zDy}r;VnS*&B;7om-~PUN;bCoU@WdKCKd*Jeyq)s&Jz*XjI1&o>v^`cJOtz5!VSOsg(;PgB&P;cp;}z9^^m1|={YS;f1AZYno-V~(RdCEy zUvjv^f!@f{wji9D{h8(_$ZMEMf&})zO*3)h8VOyr^4t3*5aDyw#U=gHdJh}%D{tXgX|=lcC}=uHRwgI`5yApjD{MY+vs3s>y!4+IgJ-p|Px z=b7@Vnei}Rg!y{+xgYWs(HHYImA{YC%f8H}-C2|^US#in4gv}m|La6B=_uN^HwN{& zA6)wZTuf_UBsH7~;K+zXf_1pfy5~_QB zBvf^0dbw{H!mnqcJ0!{|4W4LhNa-(V#p9ooYVjnKo5->(FA(H~*4#>H{3MBX>%$QT zQmt-aA^cBk>PYL@(!m6bpqE+aUeh2>tSlgi-053Q!! zx-7Ycj^oaF{Y&}wbUIRf+@9`sa)ssf)w*hm9M;j}dE?fYGlQIR*uM2AbmiW4-k%am zt76IJOT?|-FRhZN&s z->$UjN*nqJ?k*<<`f8Olu4h@m{Cfe#4H8mmUxt@|@jBy5Z0I%Ay!f_H+hKgFxJ!?o z*~@HNbr<_fdV}QLHKxTQ>+5y`6@RzsHC?qny6H5r4LRCcVI|APERyd<_Kk&yk1kl2r~h0DbT1_=#Gep?RXdGYD zd`$V>7o@k26ipx%YaD7BUZM%EnaQ>K_I zmAQMfXFVqmgUG26sOvzuDOsK1Gi!!55~6Hm2B_L5r^yd2iIDI$W7wAW?CJ-7#EB+;a6vbKuES?er7 z6>fzaggQQX;x4$LNbu2_UP0v2X^3nzr zTMpKac4x9!>P5b$O;78>J5_P=%Cm#uykeTLXffF{sO<1jeHl>_8XH_&=OTFw9$C=> zGqtYrN1M||DmHC6y8Feb1!sBc8xz(Q<59sT~JI`WK2|34-stYAL( zJ<%r3VCF6Ee&OOW)D;1fvs2&32m2-o}LGcthq`>}kta1YOz4a)T_z@~I6=wa~jt?3U4f zQ5dr`?hQif9W{YXjrt{i!bH_twXj_vdEaO3@a{#NRXzh5z+y`r4V=-iKrP_eXJ*M} z=%)Yk_Sz#TnT%|wL9Z{+JM^#gT5Vgb|3+M9z(KcUcNh`MKOI#UNN|!yR4aDP%TX?d zgKlf+YGId<)4glL7NE@t|Bitvj{Hge(r|K%x(Kd3| z2>UxjxVqeYZh)4UUPf>Q`!xF(^U{^EN6E5=qqiZ;l425Gr}$qqaa&HDu^f}_vZEXa z44md>o^+?mRAb5TULl!_L_oN`_RYw$NPulGTXdi|RHO@T?_WGar@sH^_`HiEHzw zxawu@NNAYw*bqq>QaJUll3rDpx^g%^6}1I(sOjAINFrz1#h!Vdl8HHm*%r0ks5sE8 zY?1|^qlHUbUBo%r@mwbbJx2l?+|HhgW!DEd6*(-Lds9-JC^?l}5KB91C0SDY0yl8% z0v8!?M~&ivt!aLKKD>>zQeIg7d*6Tz)-QK%VQBIuR>S zL33QxVVE5?{k8rg;+xdVJTI1ghs@s&p)I|Wm!IdLcpv-YAGsmKE#wC-L=>*^0_u_s z95UjETw(vIzem5;ck@^@V+$9w5PlZ~AL4sI7xp8T-ccu$j<6peB#aFpN{x=_&{^WZ zNX;5OV(LJc5H!S9a;%XeiW~0^A5UuSGg@A18>8nE+%=iY4GeSx#_E0~8;qwCoq_|s`i*g@7pUNvrn?Pk^uQmJGHM!(^}Dk~ zV!2u+23PEvp82v8II*Wh!0d83D{?eEyuUI@Auu_%`#hymo!x2ZUo!5 z4AhyPxNBIox9ThPd@8kU@384}5kxmE*$Lo?y^ZZTy5bRx$wtJD6{WzgH|19R3@iOS z3#EivThUPUTQa?SsWvKlu0>KhZpZF#o|OF%t|_0`1;fWSZ5vuvT>0*5?KyXcAt2Z7 zstm2aL+pRJz0yGZf!u$=Gq*&~LIhzj*C)%}h@@2B6`rlMX4cLVo;J>xX;L@TsRPr1 z6Km|B3gEM!`kSdvbn2i7#0Jx#g1&`3*Uk0;$Eu1T`#AzsJ3*9D2A2@cb5 zD_NvZ1fzo;uL(e=3oS=Rvg4qbn}w%jz`OK{%;tx6J+s;^*^Mv<%R!CdF2mxBl5id= z>K&|Chdce(`YW5JlXCca(48SvqyjYf2py=g>k|jVaUK5OlMAl0t&~^~TFMF|oOP3+ z!TC-;_CD4$XUh9eG7M%1xs$NCgv|T$yU{YNIctNS`;p|OGn6kL(_Ml|nZ}cMfoRIj z{WlNw` ztIBKcmbGPc8)YE%>M~&3Ydkl6eUcY;b|H^O)|iNg(D2Si(^2`!sDsIS3x zoVHk;v$5;T@of4xGwJvcq&~#CPk7Q*K8grp(sq3FVRhQml)hq@0x8JNwZuOu2H2i$ z5&Ulh?E@)P_xg9Vte=v3cA3f7ueJlCO^&)>#CLUK9A|ut&iqv0Hy)G?m^5^{vKdbgAx=SpS#M{Di73YL_uUnMud?M zCb(3eiIHq4^U0LDide7*rFKB)4^cYBwLo)_e)eBr_)_Vn0 za!L9tO_5-Y!6X9I4ntk%B(;XoR{VPUXj^<}8@&3;PR0l0fA$p1Z}z}z|3t=rq{M$0 z8J&ngK>Yt3ks&7|YvAna;9&p%qcK|ka{){o?d#gW5mp(Timbk>61_`%+!2CBdraOA zGEL#nFe+A!i9{=CY~}Y$E{~g}Fu|rYeUPCK;mH<{#Wh?GYc#;8mFjWPS&Z^P<=w&2 zbDbnpjV81t<48>RjMpYPr_^*ynntxE3Ny8tJ{lzTw2|iV0I*FpgOZgV5eoR;yZY(5(BkUL6;yOWVJ6NNpFimNB9-V%r)5@|PBI(F=Ygz$J&4 zQ96Jj<4=)sNq!JOHLX8i6K$7ynpVu!1}Q6ms978p>s&tNt=Q`b+#YOrd?FL4DFUfX zOB=k3vdUF8trR4>uosT{v95@R2Px#lXm@8K_f+YHKwKzJ;NQ$wPN1;&=2;Xe>FVir zB^qQMUyNTLZ=IMVe$8<2Aa}UUh-fh3GvLthRN7SJz5khnTKJM|)=`4*Y`Yl>`_BWZ z(~+RKL-c2wklkQ)3+H{E6%j~TyuekhiB7zcOvErlL=kGFZN?Vm<<GWEkr+Ee481hfv{3#`_t(C7_CTLZ-rTxdUsXSbE8$ zAn5Euo@Il5>uNFN?t{H&CVZJ-=L)-e`#%D_tvk(}F@;^GBUiS8A}GW!%#tX7>w1#% zO4P5Pu(`9Km1#0zH-b8`T<5^gC01muLU*4_MAp)$Zn8{D-Dh3?tuZ~0{e^}!Ax>Xv zC*OC*RrPZz@V%cXxb~g_q$Q?7_L$6~!Z1Kap0owbFb7d`*R(NG z47o&A03%+yOx1ctrTl#GSRM4M;i-?T zHDoh+b2vBFTx<{{l5fa%m~)Q~FDB;<)bcgw)EO&$PIwW4J9pu?dn;F0%S9cpy2Zk; ziO@SLipsKFmHY%0HaVTvlhB9X~DI=qZ-{PI>Zt=d%;=C$4fn=B>JO zm(`HG5JUHYy4{=U!gkkK$iE68j+C(;bM6My2-Cm0pCxsboI8Ab9w6xNvgd zHjKa`^`CBA4dAxe1ePIs3Yu=DgPgiYgWOKCkb*iX|{x*^6C#M@QhVab@Z3i6DC!A1VAk76 z&+9iPB|l)5{v1eWA?lpU@z7MH-eB9#K`J8fhjr`F_5|5It`f7>Jf{dY3#KlS9lSDKBu|1C`4$i&J1|08s{&G#>K z$(gkCMVnAelg1K7w;q?w*=k{?<>oP-@M0*SKqwPP_4`F zrYdxIJpM%u3Z9P8pm#gX+h3D+bUpkpGfo9~J>rU&0G?X(`o4=W9uvyG{kr#*?r*$Ks)X1F3|kp<-!vNr-eWJM=CBbtS-iuV@5&SZ6d^L!Oge%dTZR5 zL{+98cC`ie)*V+@UDKCW(M+dveiATNn4UP_bNz1ZTE86FogujUocKc5 zXm2~M`6+_4Md0rN#&A|XLwBKi-oKkV5d{~u?p=^fFNV!M?=v&7HrE+=>gC?c*p^@F z-n;-yLU(;ZY&xM%PPK1O&TBo(JnjQ2cTPjdOnraCxM-WMV9l#+HcPF7mQwAy#VlFc z_!ifzHkzu#7@y}q-%oX)S&I_S_v9a)L#^)`<3gXd_@KGfTzUfF9^-v@QGlFp^-zDF zAR|l}O~ZIC3U?5j-`HM;9rbyleb4m*3;ITre9y~H0eg7cajSapwVP8X!%1=*`ki*5 z$!IzdyQ*#Xz+=OW7HP8n$iVYtiCh zzcf}qtcYP_Li(pNiQ3$*NM^9U!ook=7f`iV8!e zJy|G+vn<7E`jz5Mgbwk=&S0xDiKA_O3xLEULqJ4(i25^8qRQgQ!`i~X!w2@maiUgog_x5Z_rbaP6dZ&f28k{`JBKrK3*y$Viu`fVCp zl=I0ryI6ZH5(W-ogD}M%gK(2l4FUc)q51Z`R&1u8O@Vp1jh|FBJ7cqQTHhQr0{yce zjh}j|-w*$daZECfV-WuI*Z8{&j_z#WiedmHc4`TZmEXZ2!Zh2@ zoA^ru4(=C@X3Vxa&@Vo6m#ECP zj5N9dK_eXzHM2wENpImjn1N|Wu2z&AXaCkdc$Q%MPBK2a+fH4W*-d(lne(UzEp;T zOSi=JD&9!TBUmE6d7MLqRiKoNs_#s<0SQBrN!;?OtuSW_rFY=rmNf~FjR1y4UK5p^ zFLr=N1>rkago0f)?NTaA(@7}b!I$GuhQcj@YOYW76DJ%V1PPkwEXh!brf15H*iJ4APIHYFPuBowsCl zmAD3d5x070XmH6axnL;plGeUE!F6^?Iu&LNHjvf2{Mv+bnJp9Ljtd}eCJV1^b& z-mLWRBSALTHj0H>6)4n=>hhbUf{Kt^;w)i)Ax9=2j)B8wyqO`+L?oIJZN1Wb`f zKjuPMd@H>VmV@x@tR(C}PG$7OL3IR}lq!xxuu$K%sGn%!5so5L6|0+Gm?_qLii4Sr&WfHfyXgESb~rXPOCm+Qti^uTX6U@t{~30$q6R6u z9X+Fo8&{eUEF{G}HfHit5Wjb$Yrl-T+pMQE08Q^f8T}|`0R(n~z`*@$<8iWFg~_lp zljtwYEzqMb>^|+{v+hnjU=cC57wiEdhRGe=2}VS^i{Em^jN6hXj1XSV(^_d z?oec8{s?7OZxfQmsCuLp2a< z%bo+lXU)wIbFf2S(RcIq9;)dJ##AFN<;kXI!m&Nv{38SYAR3ekUDjrhs-jr zgi-HcUTjbnx%2z4KY@4=R@vS}9Tc{pWCf-%o{CONmdX(G-9BfwI{L7XP^KpaFp4t- z2oi?DOZV9zi<<>-$Rh6wqAnC3HHu7y&9P)kGzNH>rYl34=jOS!83Z!~uc7Oi_b9~U zAc%s}Jt8CL^(J0@+soMODtLpyFWDOJ9gbkdsaN@SUmRg6M-F<@+3305%>tot8-2H( z?ba2-7o8P(US8^sq?tXAoIaK+ak?;mQjR5vf^GW?XfKUp`ow0koefNSWIxHmI~@2h zow7V&wD&W?t?(1oZun(j^M2litiF3GXqF<)7!}kLVj<|Z`95Q&4G!+p=fS3j`n|yw zXi`v$fes-p{2Jy%!jmbPwOLGmX<=5r-2u|~sY9t)VK3EytBdRMtQNr57}a5X?)VP# zq+fV@x(O<%1!18GG;WmC18dE>Knu`YL4XZ`#*^5F6H}IlgTzsu)Kao-Y4q1JniNm_ zNlZD0Cuk!g)b@_70g5!nTP9%rUsSD#6o=2=N_Wp8DrE zbOp{N0$cwm3MlKr99Ys}7Y;@|2p*TcJ7i(~qgbv1nbtzk=VV>%VB z(($MyEgS4~6rOzGjC!=Y*X4GUxU=40t9x^$Ub0Z*v+`YR`GQU&?WU>-8HVYfSa(&n zZI`v-Q*YbXOLW^U4jzrA=8SHX4~<=OBl_BXDUsq3Gi*;gVa=@Pk6Z?P zAc+GX6n`9V#<4Eq<|wm5xuhD{qE$XjG!E;o0 zAg)))Z7ZT(I3+#&-gykZPN7mqz=JAjtL}>b<1KSupVyGZmW^_bO`Zf=XUo0`J3B+= zSZ0ni>F?i0U>hy>2y)Y;kFt=S69+Jb8e6b^jRZAMpNm1uhCKL)keWK4Ko!c8Vr0fj z8(k+$b@)@k>7j2QHY$RvY+5Rzu_CLD&KYY+_jc$9*mscW_N=JK=`FZP!A@%qp*%%9 zh@aaVViVo>gF46TAn4fa2QX2c;a7vp+Cww|vdkkz+^s`EDP913Ck`sB-ot4=9%eFG zb<)(s6-=5bw?)hn3fZK*^8!>Z+E}WXoD#)Gk`%H&yWEUlmF%-XN57m2ZI~_b29yVv z5)K#}x(hMCQ5VK1r~8L-zY81+vP+p0=w-PyjR4&}PcMEj>1A+l78QdNe{oPUEF%7~ z$%kiJm~?fXOJ?d8`H?gNWXaq{-wSg+g#kfZ+^;&{Q9O($5Fdw;Cbl{iX(n(em%%rf zr=&6`w{Ib5VkmxwkFf}2D}nRwH)jsKh=G;9a31oiHm6n3zxf~}n?UG3M zWDh4T$Kl!gN_4gS9;&tE023tQAmPEz{5UALTlby-&#!)OxW~Pxb#}R2WglkFMA4Au zE{CE~i55i0C*UQ|aC54@JE)7}5Z^+N9Lws)2GHh2Dm_JtMR=$gHB= z+kN#qtMLC`CXEu&^{I>unl#Ec|CjW4EG>m}_Gz^e3a1~mZbX0Mo~cyIC22>(_p{W@ z>I6xGn+(?FuD{6BSu`Uhab7@7l%8~OTt38v*j;GM8GE(nb&`byD%^aqN6&ecVtq0Y zT_ZtuA0US*a_o!}L>_oNE~EDsrO~3jrer1bwI>(ta$Ytza--9~_onQ$qMQ;uB$oh- zpG>8U6^x&aXdo97|BZPXX9ilu#`{3vJRjTsp%bp&5)EC+Y6Ab}(PuG#ng7DT5lZ6V z*ZRP%d`~8l>r&S>Lbn$8)c9&pPy2OEd!7qEyp-g&_Yex@p;2YkquD#HMlyF9mkhbR zb*OaZMSmhsTp5BL(;v|x$uuvgK1Y@?&Ww(CF~THmDj&L(KbaAMT7s2hqNCAT)=`S3 zIhIRN#oo@E!{b2A)?Z$zi-wmF83d#Is%6GdhH6svSzYz=8-LlqYD5TyVZZRPFls52 z`Uy7)R|WpIxPj1R%K(UmEJ1@(XmD^Omj0zi8(UIBP_?(S^Po9~On8A!A2NCG%XBFmTKu|7tvNNU@}AjRxtR6oZmv*yXLy zDa>DAD@3kXRfU4-ZEpUGjwR1{-)ocWqQc4FLw7d7Ep%_xyzj7%R@?DvA`z=jGw=m^ zWOj}_AR3VU!*1NlhdDw_9^UUnSDWF)X1p@E4o$7_a!6Ud4yqkvgPe}HBAKnW41+?2 z)S^~R$nw<K7ZouWg=L=fPTl)nud7wg?p zNZ~^^jww~EBo<>qV4O>YtjkYw(_|V$QxngCdvAT;S)~vBk~*bS4T9)nq~c?2ojKHM z9ZVKKc?q(il5*L*GE=4sRX(_;;4{)5iitod&^;2)V2OHkJT1#(SKesFv2uAfE=*VY zHOwxF4gg|Wg)kkI;geL}=PEe~H#4R0&?E$ZS$WdqwklG8(iCxvcKu`4Rtkl3F5OdH z6LlHv&^9B~CR_$F>af?Od-$PY{TS+#?q6PHxCUU%f9hbn4oV?}LI z!6+t&|!;yM6DK_A=l?cAHXQDIWEDDr_bSt*R5SN(uN2LGWk0$vt_&kg57dOeRQ@88gO>#U^ZDZ*$NhrwSMWVhYPdTj4;Yq3^!UI) z4SS*u@4qyHHpQ zcy2D70N)J?zv}-&VfJf_YV}_iTvy~avh*^w-~k{m;elq_L)cA1fV$CY^n+aRkDR%7 zJEd^IS`z4t|6w?FE#gs157cP9RK#Pd++>l4JtJV3!leXLYBKZJ;3J*}Q}GB}mr)zW z@k-`n1rySo(9Yn{{dR1;H^j-*W%u}N#O9b>p(mD1 zv-tYmUzpRCo%zdoks!#a26i)zOa^5jI??b-BjpI>#7RV{_9769fQ2aSm?eoBq)Oi< z;59z_4O|!altvLIovW3(918uTVC*0lq6FfLgOu~6Em>&=qANa!2yV3HK8BOXE^-;K z8s6a42(74HP$|6YAKoOcO~ysnryR~il&Y4;(rW~i_*G{y$=;JiWX5@+V_fHYQ~dj0 zI1_4)XzBLwzwl=XiJTUO9CAlu&R*0JNG_F1YH1S6@oF$K@k68{qcx+#$oWX1oCm|w zH6^0SB-l-Pm;=jI^(R1M?l8z~HpotDl8r7D!<>(~tDru(i$@*ZmMC@?k7&=zm+85U zUV<#szA^Sd!azj@tv-E>(KTcj9+@vVvbOXqj#S5n>j!Y2DAFk^?9|I8By4|qBkq2b zjQma^JeT0LpP@2<{XMoTTWkw5IC$&}J*rp(;VagCkga{X%xWx4e7bI2&O}v_Ud;<< zI7O+Y5)GPPAn0Prc2+Pnumq;;zVUwL)TaDu5$BaoXl0|)I+6I-#|qSoWT(2BfhDR) zHPS%~fO}Z68viCL6ItMN%EK%49wn)BBnGF5md2jWUm3}GV1wjn!V871ps+Ck319cl za1%sBi)x-cqQVJlbn|oHaW%oqTEIk5 zRaN%0jyfm#3h_%wyxa5>UPmo!39F=fqaWK|Bepf()Q2;1O3ZIXfB0@B1pm75`=Ndq z1xYI|mpLqcv<^{UShriR`RolH0M#^6E_ zJUp=ufmu8?*2o&1_qPjNFlcLM0Lnm8F+?VGnr|D07-{-J?o>l7wHtLZq4bg&j3CZ3 z#PmSYEMVgvOcb8QDDp)VfJacCIk^7NB^6IBv!Kz@!Ck|EdPHUkmo`nCVE$``rGtR^ z9w9E^jG;?v9zsK2TPE_Qg9eg#mQFYy6J-<`v)n3k+U@C_vD`KY8h-7K_2LpwooL-hH#aqgNwlTU)e> zBe+8Z7B8&waeELsyb9JW{dWT7+A=7*&@Ke{`8emrHnFA!W_C)j8TaNGP#>^QDi8kl z-gurZw%g@cty7W0wK<%o58Z?^SUl`ddV@;vW>qHI{HJe8OYz_Qc|zieD0YHA z53(>jg!I(794X&L8BC~~v#nCS#t$RK1lkzGcva4l=TF;=d5i^-N3pXY)ey!Yt|kG- z_R5^))&vuLo}^SvPrvl;;CJY!FV5Zn>{7>soeH-+cogL2H=q9HeVy^9nB!?Exo$fY zj=e>4Mg6S1P_X&=3ZeGE9C;NBn3@wo6w8I21%~0g3!yl{skukMl(y2brWS&qJQQ-s7FD)BA65yFfFCaOR+OYg5q2^?sv>(H0$3oSV?5Vw_P-Dv42axM2D@u@YoWdv;A0 z!A%Dlolp&7pLR7{uu<^%{_ssrJeo@M8p&ewhlmcpK-DJzINduoJo;`rVuxbrVN)T)dOmE~OX?(ygXgnA%4ZBD%cIve*fV>rK{gi@ zOWXYJP0<>>4V(MYw=8T27v4)e0fE5t!u+E^6LB%cMM%lFw!MN>h)lhHuP|1i^x@GS`F>RLlIQ=mIWoJxiaFo4j23+_ovI2eYY;&SjfF}RX-6GIkoyRl_?kuC|U z$W(nHP=E0a@g;-tLC**j6=H$-dntOip@$6u%I4yzg4qoz1i>IBmlbfyBrDka$J85$ z)LHDvyQU^5{&&nKtyax5?p+=*oscfBe!<%T=82_2`*z+jMe0bC(y*D!qS2nlL4la3 z$0$7kMS#DNZ$o|_)hPi`3PFDb@ZxBVsa=95t_@T0njAS&r1s8nmoHxtg{AvJhe{gI zyV?Os1cchSUI+HyNl^&aoJEa$JDD>Nlg{XdCl}^9P>xVWiZJxXdP8}F^Yr*T9?-;h zy>PnY)(3c)Tul>*l@^>Fn1O~vpG?#6sd+D|9_Hs5ODZ$@os*}J%+YDIWI6x&d4-t5 z%{VVFz!d~c?4}z76)i+^4EgvdM|7{dsSZ}x3^2Jt1A5knoZe+Oa}E391u2l`xD>p}no{N-Q0~qVz}ll}@#qMpDf@uB@)1tuxa6QceLY+2BawrT4=RE(qd#vCgS5NlAQ8RSyOZ_rpWRC;Ai zHJ_-i1XH@A06(uqQ@W1erV#iSyBtN}y28*8r}OQQvpbwNa*eMQeGnX}$oa70Hn#yO z01CWTh&%r|>uKMc-TO?3xyq}wJ*uvkjK5P09m+?Oj4)!xs=|{6H9N(&+l}_!o#-sA zc3tah26Ez5+K`lLnnEK2Iz|kY$Qz}X35~PbY{`DAh>-k14KCC>R7&G+iNAQI9s>iv zY>lwI?gvb*3hU}KJxPWkD@^DdjdQZ^3?qyA;z;p_vnlWi`WyWMMMv_O+7TSChq|FA>t=gNf7lKMc0?JKz>w% zYmg2;)f5cjXeJYt&JYAz!`LB598_H;PNif(VQ#WYc@lGu^-2U8SZlS*JCnhwH{5r4LA* zYc)^~>L-p6$m^mon-_H7#cUhcv&j5?ugjjjqvxR%Kl)0gKPVS#!V-pXW_(}e46nu{XQy z2tr*T?8btaFGgps{rt{E=IyvtSmReva972=O~O-kA9+1Y9wdf|OLi&81yncspbPMb zX>44BVy=cFCgtH;gD{A))7ZLLc^R9|g>XpJa+y*nz%Ce zCrAjij%P+E(aCsE0jNEl(k)xE*#?Ag^R?k}PXUquub|==Xxu2g)XarXPE6u~Piqs_ zSQ-AS(sI<2*TCRBo_TPd@V3m-HNNP%RR? zp*r8&(8Plhl##Y7GSWAeyE`YqWfvFG!Y&%F6-yF*+NkBlg^)#KODi|ocy)4CspGl=wS(kv(|!3 zruxwLhYa>onwQdX!0%1sPrWKl-U1nc4f=vr89_&O!06phS5eD50#!7mxdEzjP91LG z5G+ZS%VN$pA#$ZK3`GAlQb32?*SAOVaJ8{Bvq|?rB_E`@%?Gf0@>hD6giWhSBbsX} z<2PD}JZH)WKeySSZdhfLT5L42({w<(9-@PVZ&b z@81+UZzu)z%J3J^*><|p;f?BC!s#rsWTDon$`$dd@V=8B;lpbS6BelXYIJ2X%5Y+ZN8A9w@D+On#{e!tj zT)`5K$A|_Gh-KUX`+K{6BdJ8t$}Tz5{O!`eUteG2`})9j=sEIdg5=9cvHTdi2>(%_ z`4hQL`0*@K%O@xD`#_J+-{7!gCKvZggM*`Ie?{xoOjH*l3+fL9j^^bCUnum(lT{r* z4pso4RYM6oHv@S19lVAuj$KZh9m!7m%!kQyKCGRKx#XCCDfA5=Pge=kOg^5Fi%lBB zuBMW{^K|#ZUIK;_Ps8fjc>{CkJKeI=JFu*Dq84x&AL)Uy?1vcm0)zP=myRio!|9&2 zxG)Ec2B4H6-jAmLWVqoaJnf62O6pvz=nTVy_1HEaS@cXvs3xU=qfw~t={2JxW?qHQ zrVF3XNTb2vD%YBEL1NM0LG-+kSU6{RrzXk1JAoe&=R_Vh@7U0Pt^dAkb`Wbd!_htL)VeTjpa+YHv{oL=;_6mk3ce&$)@FdgeCfQg)I zt4n9vOeVzjF^b7I^ zI43$B=eMw{jlf(w1*_I{A|u&7CI#gDpjjshL2!(tVuMMFg*MGfD)SC=lv4}sfmu93 zI9@Z^&u-mZ{m)4om&%*bXQ1o6f<11^2!>fWm-N<>kjo=>VkfK^>{2;AC zzZj>N$1I3A$>`&J#%PxaDbC{{+wZqHu@(x9G4`iXziO&RrfIs(TlVIEu>;^^@}BkP15xGck}nSLnD%rC%l) z?9q@UQP`VVtP`rFf^dkb8$dZ8hD(3&l)#&8cHsKG8x8oK!R@m?o0L9OX|t#lh$I3vbh9uu(|G-0l|8F)tX6Bb4& zkI@yJD~u5QhVB8XY{csjMm3_iK}$<0`rR)R+Evx51tHHu4$4K~)`J#9&@-I5gkyAQ zXa_!8_t#IG0AYX#G1B*`k#^6SaM^lNiAZtj9acFp#Esb_-SoVQF0-r^!|Cv*j)Z0> zG%o~;50Yjg)Q@!R4Nc7pSN_8ng=RA2+ft;AR5tE`x-x~SEQudfeF*S0GQ_Ib}0l$<>?A`Qg=leT`D;*IWxC>gbHKrC#LypuDGTX6k1u=3A#6aAVg$ zg>1$QZ~K{H_`F4RD@WHB``=2#Q5Rhlb85cpxj*SMR+=HL!0z7Tn3UOTE)DUOGbl}5 zKfW}VT8rkDzs&O6g%C8$%%|0S4}D|pz6WJrU#HD(!w6-h+T@^FZ3}E<4flXU9OB8r zx)E`ZV0oRsRpG&P91^?_x=HTmL4|7D;t}IgFH_l{&r;Jc=yLss>9K!`o{pqFMqjk} zT;xdEMwykzrHi0MgK=kaT-R~WEfXAjWg1N&NP;1SL z4CGwh_yq<^L)On9zvzPk+nzt{hPGnfHpTIcPdu*xD^zKV24>>;q*)J_*H zInErx@I<+?*}(?O8T#FGF&PdA+FbGubwF6M;`;P^ z_r?0s-;^RfI1D#%7fAL=9P5L@HWaFv=mmU$6AI|+EkH~2;%*4|&$p)w2jq`(_?J~z zm>DfMLo)Ex)7v->&xM1K=S3Ystb8|-47NZTDc;4BWYHIQ3JF`ohdcMYnHT5sGJv*$ zSf6*Zj4FgiRbyx#jg}X=jAqShadGNf$=CI6L8C$(pAs*(U3rAlwH-E)2 zKXd6t+??i-XXdDjz<`!deYNO{yyv-Sa2h?u^)m0-R?Zejn65D4@(I?a@B@9d@XT>T zRGp4@RY@J%ZLvobG_%+a!GM>dUK-co=2vMQ1*VvMs^qV(8GBIArmUKRyD>+Ee=kjU z)h-4?sz|~;G*7KlfH5|8hBuRRi+X10{C9hDikD{)SDQ})nEFvWgwJRi2Fo9P^S`lC z`NbzT0LmoA#W#pDL4_+^wI8zGJ5!(qbMPEFV@2If2c))zHZoIvM;z>CXby);R^c7l zcB>?ar%7ma&@^1B7}!y#aeJ*hBAdjBdy2Q~`VU$x05RRKR;DB&oa3SM>;BA4us;z7fu zG^vsP=E*bPkPs?)QlA|0dbAj%MY!Y_wu2M|?is=9B>NNK4&xbi#Em`D5U?7WyR;WP z)!A)GvC;SNc4<1$6Tylic=X1ek@xkTnwgc9QAY#}5@V^`;rOZbO;zOuOK9elZl-!j z4d_ZGMVH}CxLn88dU3x`b_QWxMSA@Q$-N4_P0tUl6)g28P#MV`S98;#PUKmKm#Pse{K0jJ%ZQ ztSr8+Ak%qX#eL`Hxi)M|6q<(lPlII2XD}jJ!bIz{HvF0d(}Upwk|Se8jOyT3rAQ#{ znOk#+-&PJdQ1?x(0KyWA zb23=dPRd9n%v8kKmXr|>`xH!T`xx6PF(n~nZtn4OUfpV{1(T!K65K zzsMNX-fOOk8F^D?6OxAuz@!qS-!fsycDkx^QioYah1Ua()r5@CHYXTx7@~lvC$45D5Bnjr8>k># z>hLLzJ9AZbz>mDwf@`-{+h}BKyVKvRb2PtxmMOF)mE0C8#&h5F?Uuwn>W`j?Z#tN1 z?O~+Z7?M%>b3-%>+mhbwglP02AMFbI*_$`;m6~UK|G+wsi~QI}c1`TOW5Ril$xf^l z6N$GQ>SECyT2Kz@mgdVGZy=NX;9m2aLd6f@2|Cj4QiSUtvWqVNxaR6_%sTQO2uyLe zkL?YY(7vaoO5dQZf>gXNWSyy7%Hu#=2t`)P_Qnqhjv@A zly!UZRN_j8dM$M;bH)ktKCG@v7Kj75HF0bOt4Y52kE_}}e{8KO&`@dy;HNI*9yiFg z#~U=}Kl00xYj8q|Z{VwtsX+jlE$g8L-;IBRTXcma5%rEd?aYfkw2NZSuJs2ki7I>% zmNE2ShlVMKt>ts~uUZog5ty){wjevT53Gvnpj&Qs~@r;>Vw^Qni(%Es|-W<4LoiG&i=spacf_EJIobrF8uNv5B;Ew_h<`vf0ju1^LyVk z$J!rgKHQC!nALybzduEx90^%`rPr17>ipHcQ@?u_N;7bfNpLFEUc8;BQb_o*+%hxIu-KSJDvoPlu?K>To`x zruHqm```4wFlR=h!H82-x5_dn%G;~DRC#8VdXSf;{ykZ01~-O5Fg*1W2k;#f>FpU5 zkaJn-s;!ZKl0qKZ6E>Fte&1<1%ywJmLotlTgua8gaDNMoIEOOBVdFYeQ8|JU13-+6 z5;q$AjApvZb&f2)Fnn<&HZn@Cp5kpQH;@k8_cF0yoIg!c;B%`=E?YCpe4KiA{Z=IX zUaJeOi`;>B@s@_)NR^UWPx40hynb0G(H}iqZIxoqC;b5jJ}BBSmJ_3ZRqmI3dM`xe zi2cir-6~tAhI^z^PF{-2d7EmKa)%nKr_|$~H;{=ZjI#)0Z=?&^_XUBG5qs>#zqPL_ z3EWpIq5}DTY#i-bRT8M8dYb&s9kN(*_X^xM0+D#7Y1R7Njp(xiQ4UE|orKKAarOH< zNT6MMS;>ctq}J|AW!L9Q?KTta`kkz1~&_UwZvNOC}zDi+-h* zfp1vKj)R8EfQ#!s@&4eTX_JLyC6dpS`&tp_3#2}3%G-hALqKfqU(o;X5PiQ_!dRq# zzkvU!$A9M`)Sy5>(*GA8qGE3DU~FP%uIlFQWNoHt?BZbUVEO-H{fkf0l^yxlIkf*o z3jt#wL`U;kuC$^AVoztU?uXMpMTReBIddzqWO(P`Qxxvwy?s5)y`L++eArxwlH!(R z_P(8CX3ddlBAE9|5GgHq$@Zwrd+F3giA9;J%qZKub#GrYbaCyS`|7y|RoFrhU1A-_ zI5n#I@0L+(Q@byUYgDsrT&CqhG^y?aYp^T=L0Yj(hhq-FiC;N%c5EbIK5a{Zc^F(; zFEmn*Zclh3tPQ>9mIzBt-F+JQ-UYTonwVfxal)?S+#4}xY?2h)bs&0f%jIDbD?Vip z)?E~^l3uTlxdx|#y&hzjpgSK2FDla~46EEk%8T$0+61B#YSST%9t&pJi7h#))<_5% z;~`J@WlHZfo^b^hPY&9}aPBv<+HWJU*?zOI(v3ixdst0!WH~D+y!Z6wQnJ_os}bt6 zPhGVKBhs!3S(L^w%xPdsdvl`tqb5G082|5#r@yD~i{y{R-40&Di<^F%h;6ZM8 z*9jO1=s$=3-^V~52ndMh|1t&&jt=rlaxDKl8B?8?la-cNb$W60e2IO7zh{nldwYsL zR#Bj*nPybEpOu}bmYA}1j{$8vDKjf~2L2z$_ZY~L zDgJM{|5@^X-%NV=|FJey%gIH`+|J3|<$vGK4ZpSP5l8bs2P;y=IxTlApGSLpJ6lRi zGyTH(Sh_w6WtR6Z8Vqt_6jqd~6XS`j**`Z8J#jab!Ideyl2|xcD4gDuf`t|4mnInBnBRxXMYEcxgx~FW*~DA5;}zJ_l*sYeR@t=9ma39ah?W@Zuy7iaqO{a zIl{o_=XfdO`IL~IqJljfjJZ;gYTGv{3J;IhFN7#x``jlkWZ|}W z<27VYOvnazBZsw^26@A6CgA$|?)#_)4i~xl+;#h(9qk_YzkSy8I_=&0!!{Iw%JdW6 z8m3Y~$Pk9yx8OoV3mTIOc%WKM^~AzrI3vVEAP}t)dt$~)p3g1h3M)<|!s#T(9YG!H zy$I~N<=Al$v<$HKTM`lTfhk9APUZm-1~nkM-kQQY;t_ViF2wT%M);lf^XfoJhymkL z8c%*>-SatNcoQilPBPGuXra}bI9`0;jvE}Lx=E)^0&k7S?&R>E>Hmy?^K$*mGVpvq zce~!+uf4nSjWf?$?(1q1{W|7% z@s#o6l03K4r=^ylOowP)_fOn_-@y*7{b3GNv=>Mobma_7l)6yKUq!% z1UZ}Y1rZ;zE(MF^J@90tv$A$&Y5#=2S_L|K0y8QIHkSiA1p=NN?SQCOA&cxp2$-M% zI@`37WM6eIfugDgc38J*321H=-H0toANN_en;$Y5WISg;iueB}XHVWk}o)QJ#?zpsOzxMl^JBxkcD^L=55BbWn!Eyt2#Kn!z%exN3B!1P!X z@ImE((;Kxn3l$d=fhv{hrNd`7W_cp2VVgq>VKyR~>jO)t$yV7wiNZW0!>6v%Kp|%m zz#9R89zeD?QR3r;yzb-+XU~%lfSu00P9@~&+ZWXxj^UynIFy!9&~kkR;OIJNx7w(! z)9t})SRwT3x><>zLI#1cUqz4<4t_TKBz%()+lvia{g7t|b4?*bxDha74~S8AoksbV zK3fTk(hvu3xv{FGIPqv;@XKGZ>6#jSk_Ym!(9{^ULTLQxj}sJeQi6c0BM=S1OvPyS ztX&HqHV7IK)AlOk%uw0b%J()!cWBx+QZL(pwJHLk#YT|CwmG3YiL|gRGvqOYWk<+f zci}SW3T=lbQ5>8CIZ5JU7APwrFWa@Cx`n<-2()Fi!e}!2Nqtq_;L<^w41;Zf@C(o* zyz+%${gQ+nMZ%lfeGv&Dv75K=t2gf4uHsQb?WCFmEOqVBz+hFw=3hrMbxqv%(ziZ} zfbHdX*O8tf1s+@YTer0!^PqDAf{T1*BOC^e-4en&6VLpY;+6jv6 zk!bjEA7#aub;7_#$7M%ut?o^nb>8R(`ADNDCJ9Miv{{Jq6yHt*@q(=AmyIP^Aj+64fMq;H+>InGaac|iaEy}^iTSaKD8tGw2IXOD|7 z);Oz(b%Z+wVv5H}fI~(cB8525R|ZYs-Hg)ZtCftgm`m%I^$*6dvHI0l>Pb0VrV7#; zk#0O3-gn`&vrPuZt;pTtHHrADSMXm(1VN@!Z)P9CfFOY;&Zi8bpaiU{!JjO!zlNs# zqM+YkeNL(3vue>Eriq2>Kt%pJ;d}h64$E;By#QetB?Tm!>9sNh0)l44=T`Ag02g2x zPc&}Qr5erw=kpwjMLU6uyPT9s{QADruG!UO-bDenmf{^DeKHe9A3UnSi)*|mRzrSH zSK*TW<*C)61Bl_v6C|B!UOQc`#zz%fj_Q3}FnI^Y#r*?Hs;`MW7k3HyUQ~Wn)HD3H zHn+BiDE7_aeCneK7xX(4jc;&k#S88)Hy7(Lc6lvwEW+6^TRcN|+tSXvm zeL;}?$R`YjGI=+R&JK%+>Nx!iAcdY9fRR^)3W5y__Xa^@L^`9#^vbS+G5QwUR;h`kV8?!xAyc}vjP2uChCWv2YZ#Mdx1icn!3uuNC?gCGS00YdQj!u{ zeQDis?*X0WEAkj!e$~Ic=Yowh>hW`62?BO zK}|rsb!Ud*!N^7juCx}iob*scb94cX=P-ctG(QbZDM&OIJU3)yx`DT(>T<%;|nX=X~oZjTesMxUqu*;nc=etzGShZrT? z?!?ms7AVYfEt**GjPw^g1jTt1{obk#bRk7E`6VUbj1HaQM5K;8ai#&}kx02iw znx-X6Chb&LaS6Ikvpg<)W70nnKDGK2JpICA5Bq02G&^Flh%gRWy)?4mjMTh_Kgc(u zXcNG2oJN@p_l!o_9FMNhx#3~jK` z(QWd2DfwT2(s2CZ7GuEy(c#AI1*Ts7K>_33mZA+qqN$*#zZ-Fl<%WCSs6M%U%m$v2 zOh4@Q7sKgajDFNV9r7A$#Ds@b!-!x`8(GMD@S4bE3#qI zmvVk{B59Jksjb3w9m9n{Zb{FJH!{(a^!4Z)3qkCbD4;;DCSE7D${jY0+kiFi3JjGQ zhJ48XDV+~6y8j&iW{28Xbr7+yEwUjc)5bM$tgq9XubGdu#pNvZ*zezGFj=EWF?4XEV_4E&z~a3+9*OMHir)suEHPeUMkb zqDvyH2amU{FH-JF=(UFx)md%`P(Kj|C0D3f(zSRK?w=yA`4zSfD~*jA9nY z!Hd_5AeS<$g6$Et=u#0l)jb>J=*uIm@FBg*_=2fz)a+bJhwivuLEpM}#sN zmC!%s5%CCu?qo?UM$JKfe-TeaoP@z(m#vI=u9h<2Dz8DSp5x6Y%mv%H@esnI~0 z2vKw4N+cJX)Y0lMHktej{WoDJc^kx&UUmjgQ%tZOwY&Dqa$uRG3P%=6-lKs#EhWxuGjx-y zW;5M@_OjTsH>ar3uwbYjp&E^OVWqX)U7a=|uO`iYgR6wJ<$YB5B8rH|v=~|m&c+jJ z!Sj|)Y)%d>mWr|KWXsvk4Ne}`sHYo<^8IJ|bX~{V>8pNhIEuV{ZEzN!si0sY)FG2K zl!F|~Kioz=jlrxSoqW*#9Z^qMqeV?YYL2fEO2S!T$I{+fmO~;cuiH&+ zeQx86Ng8iy|H{(e@1MVt8(V>GPuE{3-Mw>@8VV|{$Pi!^r#$v413M$2bWrbCN{vp2 zuePZlQ+SywE>-f~@Wm$|U}pB~cp{2up#CdUT9ku(Z<<-iGHAHE^-TKYrVROCAt`z< zw5R*^ad7OjvJ8%z1Joxzj-A*692HY<5^k}|U+WF3)Ex;;K22nv zyiyniL>_uB81Of~TvyL!Ci2W*@X$i3B{*H&EvZ~mwldxYY4~QtJ}xlkvCi*8e9_EX z5&K(*K}{JGw946&UxS`eU=`JOys6QXi)d+oX`M0mR!3H~kvogAPLs0}w<D=|Y*E_4%d$v>O2PJ|Mw`Lj zM^4KK{!wF5aCvN9bTq-@{5{Qsq@Z%wOis9KNh6G8iB?Ij8VOlCp%e0O}|gtlzeQvQwP5Nyoy; z^EfD2K1LcZm*#%tcj(tpda>aWibZ0A3b-Qfs9XwQKE@Ve3-U%Tazz|UaaYY{@$>~t zcf5?}KX0<0)>RWjlLX*RRJ`M7#E9p2#0X`Ol+f>j94^1iRJ+0py>?pBOnS7MzL&cjIxox<+_2adpw*o)3J=39mHe^%RT^xyAIb)p z8x5JoNm0<|@=ZhA*{nNhtTbS9XdeT?$x|$zLYthtT-yL%4_E&fa}9TQ5cG0SEedXk zK!0OtT=@@O37rFuM$DEzo#2!vJ_mRVmY~tus-2hOu#N3LXY(MR0XP#}Cov?5hz;Nv z9=hQB=v}te6PGia1?d$cS<22hr!L+Mp>07Hl?_+bqj?!Uy~FWOpYX$@gO;ASJ<(0E zuS7blS2_LkZxb=e!_5OG&T+Ji*#}YDG&Ntj5n>0sHoQ}lD^Y~_2{3Gs-wibOYmmGI zz=-sy!?E>ugwg?)C{t0XDKjpk9L23DL7zL)daWPwIy6UMt&G+P7DaUvx7D%S%Xvr# z_)v5UfQdz~sty!ve*<3c6vz`v4}UG%Q+(Y249+^&2qEs1!uKntV>C^s$wZ2f^JBPNnrauAT*eK$hBY?-rQ(4ADr>s5mf<6~8t`d8!_(tfS0lyOY zRIa2AtvKN@PPA8HDarXtKZ+PpYDw_0N7Td`+C|F6>ost+FgKLCoUQB+HYF;JGWv|kFvqgww_Z z%`SJV&I4t(OSjwRN!oHk?!RM*Vzw7UkloH z#l%&6syH)`UB-?f@pra0?Ty%}@^}$!kVq+5%9V=3{5@)o$#cbEw~u{bS1FFv(Z8CBOWWFLnCR%b z(qsj6ItUn?6xLF`v#T9=ZbU_vosDK5_=*B>%(R|(25q`IA?RM(xh7PFt+FpM^r=X- z!SJsi`)q(2Ps+2e&x?!RSTDq1x8jZ1eZ6mr-bgi}_ne2V3bNMiP-&J2 zrw66n`VJnnRU&$kxvnk&JPv$GSAQ1MN7Onw1?ByN<^1+*ud*T8Z=dq|>B{Of@YRlJzx2&rO%o@%}7rBtk%rlfzFSEE;|>8n7#Tw}WE z3e8taysz+7AeEUZs|xii4}T?tLdn`AEsE%c+*k1{=1tW7oUpl@+l`jce z4Q++05p`lH-Vu=mYhu<$rkf5@ztB{&nkq2Y6^)bzt|D_`OfG*dX~geg!Jo3PL==2toeAvi*yPnREt=nPm5)!xU!9k1E7DUYhz~OyzN=cI(&a3^lWz=e3N>k(&FF zow*}w6REpn9yZnOD*eiC#{5#bGkRkJ=;kqMXOw$^sxc##!YW#fX4e>Is%b)j*pYJC ze0I!;{DpGgD-Mg|D-6F>se{tLLGYdIx*BV^8Vl{1i#MvsjHTXkTJsa=Y2GtVnr6%$ zX9AcEVcs)_2Hd>UoK&q*0T4_?TFA^9N|mHk4qCgAgl;EoTG~6G1`QMXk~kbdH)1~S zRM<=bLcKo2JUO;qqb*6l90dDdmtcy?qqfk)2TxLJDOK<{5A-iRw{`hT^ca*{`yQwZ zs>i{FSYlMoU@K?$apUPGzDoT4sOP8TT*FKeka7KLLWrSyw8{+HTc0-;j==> z)nKOEs0Ki=A14#$+lq!~*TeMjS|wc{WiPDOi_3M<4oTX+#!HndLETM})}At4V52Fh zVt|0GyUWLO^T(tfE6LrUq7>m19>{J8`Ju${?{lmf5?OinLI`JA6^w8ldb!gsvYV^&R;z3Q27ujsL8SFwR zHzNCTH7pz|o%51M9}P6-%KX&V_zxIVou+uG>11+#Xj}a|SUtjjPZ8V;Qe}IeOU_M# zobg&0G2y&!KfFkQ-JuC6R)XmJp$;Jx^CQ_I+M8x0hlRwuEog09>4WjsD@1h8Z+w3y zf3$SYGw8Bt$`e2JRq{orlUV=#!AYUq)dVYP3;{4}yBqbONvVeW9JX|PU`Kv`{+3;IJA|Wf-JD%^MJ0El!b? z?jZ{azUX9LV+;2A=q&QYb}DR^QBD*;i|EpG>)vJ{W~2>W{}F`Q?D z**K^|)gaqD+;0YMe2|N~KDH6lOSz4%pPNvN<$$LhVl3rB0elet7{xQZ{Us-hh=!6d zJZA!>D+CZWb^0@i?Zewd?FlR4MNU-CM*0-dLcf>fICZW|tk3fapo{n8BxN(Ax4XEK z?J;ICDpE!-G_@z*DsFA3nV_XQwXd2+AsLKd0aNTm)Fuy4#%ZDK@o%6lSL|G2r}7GfwtQZ3FB^mY2i2;6U?5dyX&DkYJeAcy&Uw- zRlwA=%=~ArhR%gN(4n2K7%E;M3fV`t>(CA zvcybkL*SajPX!sw0k(K7a{y7smbRaSZpm$)Fioep7G&_GX($@OSYqRofk`Ovb@oiy zeI?@5tbjFph4D)+clNo_veegLtE)oyIZ&Ms2UrDg3x_gq?g)lu!BjzC>Bm|9S@w(J zA84U1(p?XA_Tw5DF8c#Sru9J}5J-ThJne+6N?>Z_k1fIVaTsSw4xhAm-54sOz;d8! z<&+W-6g0J|YjeOnokW}F>+1Ya3~6O=MIRAA)K&?r8F8x1}o$qAT=S@M1kPL+eR78}FM7)WIZ`VoH8c1IkFUJrsW%e=sEN`!UzwfrQ28Muq${U?TjDYld1@!&WU9_IS0D(5B;2xr$Fxv z5{U^^4BT)|zd#cX{V+c$CVAyNRfBkPLPhE{2XhSo|q;b&m! zy0}xjD=TmEHe0iQLNjjw7&dcnI)q32iN5KQ>g?`wI7fYVUFf)kH`~uQZtdu^H>o|! z2R*=hcOqgn2)1M0R=Xo}e7+^Og4Ebri@|PCLo#FC0$;Z;J8$|tdS8G4(>%ayd_5$_ z2LSj_B>&&T`U5Ed0G9u;c_3@x>}cWse-7!7d90K-C0hQ4^dBJ`Rnz|pbga!*VQ!FV zQMdn)tcixE>q^bVY%3xuJf8m9Q(v!Mc-u_VJs<3d2w zBue+|zDJ<~))c_*mPejRHE2-c5N1ac0wXp!q*<3|g!B0F1%2LK+C{!78Fsfv3s_*g z_Qt({G-Gky^-qgOXW1YzG_j6nSPdbX0yKHYaU#9ct1I!v24ch`5~^{zm37D@tAfMDkUzjH2WZ z$ly@aoT2t|Ofmk2e?u0BpZQ168lC}h{&JC9l&=K zs}U9r0<3Hd<={JkkpWT$=oAhwTprXD?NHUWx7CpV7HWb_!J~-1(OmyA=x5Y ztLU|&i%wOHYGV_`=*nD%CL_r?3*?cie!)TBl}*X_Lv<@8_t)UkAm#euk#H!*9puuz zB0^hj7DR?wm<`DaGXAAgNO&l zw6jE;!o)xOx{emp4n?r0tu*CDj4WyoZeE6@GEn!Nb>NYo)Ellmr^DWyTa`I$XL33k zhOdRD*&G2@&iP}(;@a9eT#Y?OGA{)|zYiIQF1`+=j!J#1b7TTo&^1j@UJuX34W?W7 z1v(u%L@Gga0!&8!YTOYXmmdmob9T##k@Xwuh6W%59oG-9_~l>*CXCu2FGyg!jDr#R zXQeCJz~<)*sG!?(-jK#0w<$>jZIJISd#Y9#+Lr-hxFStx9q=Gw)uNC% z5g`&#Vg01&-OKthCC}{7x=8C9f1(F|n|v-eT!j;f5}SR|y*Csy$7*MfgVG9d}%hXMwMVsg&!rbPZRFxKXD z^kc;$+T`_VCB6(FNd1qmhlZ9P+*zEhcp}?urDitN1@UkS9PA9OMc_aeTC;JRE`9?KLBosDgZ+Yxm3F9~K=a1$rN$(a^4pfWgktX9N6+NReJSp#i7Eu9QTE%COX;H? z(c(mQH54D~o0Q(4_Y$*Yf3$VO4f#f{e=e<0gv^82c;PPanvK}HEqAuJ}|t}M9^XW8gtL| zd0VtwzgyGj&0yk5;Q;a&j;R0yZi z7A&|CWdCINmR+2%DPf>c64=L?rtnt?UhEp0`+WRcJ|)j2cu%#zD#1FTtscIHzpJro zESg7Ey^_+~mLS){^;I+U>EZ|9>o>^Rwsw(qxAV(K&(BT>GISSy>XpvV&qdu8tUD(q ziT(rtk7bmG(e8jfYq=Tk>M+pfvLBFdu96@X_Ju1Z0DuEth)#CSs)zw%t;&m0YD%SU zjMpY^+kiy%Mkd5JARW)q9O#e`r-8o5=maJHj3jW6`IR3KJ)0URE^Iu48R2kLpl9z{ zK`d>&>LigufR@(9s%B=l7grahf%oB4Jn;v@2lr#X$gPR{9RK>`+b{_I={Xc-bZ25N z*jn|pNE3dGXXWchrD9Rm_BXAOVk78Yw1P z_^ZY~elvp&{vTo`s{!qCg;Mk|>d?(05(traxU-;-Q3g+l^TeC%YyDf8hm1HMOt6E0 z&G3nxwGEAVE>KDe%s{zIYqosSh@_FxAj?{#1NGVPl)*h zYp7~k8ez5Tmjm9`YNT24r;eJ5h$9lTGhJ9DFP63J%8rV0u7EpX;gk{kLTt#Np=!E&=op*>`4+9m#7ACoBrlMhW<8q*T+Qb1qZdHzW#%WC0WKfp4_>=LT zZjWWn=~1k+Wr(&-R^kzCZ<<_|OE+9R^exZM+e>L6TvS%LuJU4OQw! zJB(-w{}cs$pMB|;DY3#b}G;V<_7qZM&S2i zF7POqfFUKZ>p-8WrJR2NC5lq`6DIRVQb>B^lnb-p5rdkH%*2)J zwhzb%_7+~nBxd*JCd5v?z6}9d?IY4p;=Mmdw!;u^^~`}3JN!~)KR-*Q1>;>0xOubr z17Qw@Zg(U1bMtCc>D>M$jE-e%-9kxi8$O7e_+A%CrlOaHKhd*hk9T?SLkE`I- zpdJrcH?mr^65AZqt>DWPxEw09?sz;dx-$$!gTdA=VV#=7r3nmJkh&eTQlG6aVYZAD z_$Uf`M{n5nesz7~i}TNT(;d4w7LRb+>S%@-qBX zT*McG4=cxXC+2^?^^nF?qLmrXEJX7pR9?M6z|f}xi)VV(i#!t?=AL&Z_X$gLNxKqk z0Yipr#*L009Yoghiu6801Lm8AWoMzVIVyXD=6GP)P3P~y60!&NJ0oQ&8PljTgiAgU z*BfSXHLG+jUZQ5jz2CMy+--N#U57b`+<~gP+4FwP=|C`ztrrAq&AzQd;KzjB_C8}- zql&+7aHS7l3;0c=9rkqo1o?_fUDA5L#I`FNVhK>)ceZE5;!wNY%?f0Kp&tpnY&=X9 zOeAcaXQdc-<$m)MM^kp+k{puFGw;;PCiBy{%Nd_m-1z}1OiF?-oK#Z;7w zrARGt3zU8NT8V{mJ4LXnC{#2q)JP0lGM{?fa}SDBQS@>>On%bo^a6rgR#N#UL1b(pXi~2K0B{niU0(Vj|>Z>^+MS7!S}r}hCB zZ>s#hJNHt{dLpz2vQNUBzxTd4%OY2awhn3N?I;0kZ^V-j`j8tY+hxB+F)4QBcTg3~ z5D%Qs-MYz)N&Z#LVqHxbkJ%>AI7yZ!ssI&;Yp?y^8FwCyAO3um6;_Kh&bh&Su-dQ5 zRVbdDa&rM`g<`Dn=Tj^MlgX?Vl?92>jhd-piz}^#<^|Ajw8eN80CGZdf38~Q#=2uT zmg^q>pm?Hh=b#qCXjd#XLdl1*`XVSW_d6DJBB_Hnd% zqc+mWtqV&mA+n!BSQ?U%h~dCxB&D~WyA5OXsAy!+j{PbuOgF%p^B>M6eajop{@8F5vl`K}d$K zB^F_L3xP_eyh2d!SrQaK$>!Oioifw5b70sO(zrClu}$7P<3Mfo15-O#x|dM?Vj)bY zoUAHmeK_I~`n7mFp}dYB#yfrQzkPl8wc};M)_|jv2hJ0J&0Ejc^aUaDz8yH)J2ACk z4Iao|czuKinu?EB7I+;W!SrEWQ1BN?jLQXEZLtSSZq)ij{{SRUH#=GUCg+NRKCQ|% z9NWQi4Mc62nW8PsjU4Z zMHhSXeO|nIvTy_kEOT~uy+h_4p{btc*HIKdYHXXdc3l^BSJWw&KF6{AEO4kaE5-;N zrW(GpN(~e~EK0$Vm2MY0^tO9brNq2$h_qRX0Mx=Zb_aWC= z0lle8nzgFrMe0#6))$Rr%ZgHEk0%PiN?KDnQjr55v}#?q49w%)g+Tfoxny|w6s*%;LX|4%IdPP zR^xU?nw%7hW%J6LDE1XG*#%(-upkz*yDJutbBfn3r z4oGPfk6(ll^DFg-p}E^K=Q~wKvQRlT`r9=eL5065bZ#nE*HDRu5?eDQOaS!0KfcyD z5%WwTQ%X#bRDk^b^|<%Z09!~GL+=X?wZ$P-^_aO-*x3-Hd6#aYuv4U3j-7i5+g=T& zS!?4HxE(|)J)_Y{6O&f=u6|-uSB9LW&ex1XQoj=LV%VC{diUVdr6mcw|FyJ(o@w## z0E=b7?`KHIY?b3M-&oC2Y7W!-w}n&h_jHM75cQ+}bI|k6BH{+pz;EufyRfB=UF4lv z6R3^OZ0p&#ay=fjbp3~-m2T>F{tRYB(Y=N{4i9>4txOi1k+#p>`K7c%V=OZkY|ZG$ zL=tlcRu;_c-aQ11DEW(fgZyk(rnD9Alwk%fpH~~t)>B3dQ4L$q&gg3H)zh`cmEUvj z;Lk;1=q*vK+O8lTYc2fUv#_o}6|{9d6=%I&qL7E$K+>G+WnD>WO9-%7`g4kv(hfJZ zD^2dUn$J5fSB2ivdh`3@y}Qi3!+W=4EZ`dI4*IIxI=$_(;Mx8%e$~ypqt_ARsE4SSZ;F{X$n!+TeAXd88)eOq-)B$J7 z9=ynCom2XeK^8{yz_1q1bM7SjDe%ujdNK?{a5eaA>6&8@nsRAg~7u7!f|bpcERkdy5#pz=aWVW!)(H$Ue6k zfGHO^_q_)QpZYnh^M`8sPf~g6w&3#io{%Lvb%UEMb;-~Ehd#6>7tnGW%UJrhC1s@4 z9wbq8-N#Svb{3Yqua|gIG9D6%(PdSJZ9#BSVP~ky87z$tpd{|&L9k7ejVowHQaZ91 zNL;6t&bD=Ex#o}DKVLq3QGWkECAb-}X~u2v;oU+QC7LmQF=uBCzsE#0j9nXHeBd(H z`fHv0sN7Al_nS{ddL5e8Rr;2eh~d^2s3o{wV7zTUI0MPA+r4?#DTIQ#(&(}!s8?%u zW)2^zAzJ8oKW62}z|*XP255{p(ZAH9nnM z&zm#g4zK5}`Pw>P_m{IQTJ~g4c}s<4e{yma3wKALBtaJyb)>w?Oe=oh%Ww;>Cl%ik zd0FQAs;@&{*6I^3-ah+W?HZQY)sS$ys@1g#sb6Nr>o0Mz0(U2b`yA6lsPRa-)+8F;DD~4=PxMTH2nujCqCj5?ECf;R&v{V-NDm8 zF;u&3f9o_8ld~HSo4&}D8524rS2_o?#PmvRMs&j@YuK@efm(2P{rT~9D$E$uiTF-G z=&&(A>=zW)N&$3 z?@XMb*{pxP_XIN40ioh(!Kof=r?Ae*P6O&HjcSOfQl^ZY6ETrteS#?< z)@?c6XYPc?m~u%;i1e2P=wS$Llm?t<_fR;T3ft{pGx!Bh!O};WnFWcy)_G~kbkYCLlXQdp7?xVV`kRaZrSYxO}WxPeoBoOqR(GbZX2@)dKEs5j= zm-sB{!r6~eavio~O_8~@VhSK z7Q_0Cz;ty>%*v;?qaeyRdM!!X0J(TVVXwbQCWp46$$HAghACEz>v4YlP2pgHC+GIw zoEQ?k7UnJe(6P{{^lLUbQOvqqIOp+Rj_ZOPPDK%~^F?=KL0QWl0P?aoP~(~@#|#m? zbuwu@(ry>3ckbi9uD(52Dk*9qx2fDXZe~0y13taR_V1VKg3-=1DNq?#3R9j0t0JZ@ zjr;EH9#~MAox%&DOtnju=f$x=lp?!0&8=7uG2z4a<&mx~p%M<&P`~4l+h2`x0MU%5I{0J7v9L{jrI@`nR zLa1(}SSSw#!QtK~98dsD+et`U;yH%Ko!Wr?pd}eFqQEv7MHGd5VZu!OR2*hD_M<swyB4R^Ecqo$2mfWT_3EXO%KtCF&SYG+VlRwbFqeOI?mL}hx7~RYRW-*Mki*uO7 zY!p?G;poBJvV)Fu3?LKfY_(w7cg8k&WUX=1`%5C2RxWeZI5(C}abVe>Le}4iiO?FW zmXSs@BH)KrmAXa9+R_Ey2&rHBJ1n3)n3oNgi z2XAwiS`ZuL1-o<=*A@l7c?tjsa8z%{wdtKTz9 z9I=Po!@4oevkeqNVt~igpZOk(Zi!1iLZ-gDFyx`dM6}IT)YLF0MTkOiqLbMh7Wwq9 zE}BDNqCzABLCkm`=oqo!I8vD#bcO_!C3pG->_TovQ9O1OvP>+f=NWBWp>RxDyk2}m zye>5zqj+HrGnpGW18(_Th} z18(hhm@O|8jF6SFBMnpxlzyh3XH)gxwy2sbgi0L@x=tHeiog%y9=h!Q!B{PSn$rMj zgF}ct(5rdkWwj^Ag~r@9EBSfOsh{&Ylj&;6ltHZC9~a_id|;bkCw{iRatW?gcbbpo zJKBjvW8S}-`6SL2nTH(h0~(M&%?#_JZ4e|aN*CNMx0^YKrRz%MsqhqdP^UD%_k+TY zWUMv@t}+T5)#o&In1v$w5u4?IZelAC)gln3<#mZi5&+6b`~J}h=%=LQn!lUZw?IN5 zekAv#-A11kHJ#)ANQe3Wm-NlEU>GZAME63LG$YAMa0&wpI>0vh(}{yYt0foKhACvF zXsvTLh+YI6A(nec*;n;0yL3O<2EW)ILnS05Evxfa=wpdVo}5)-?J@SaG(V$VCq+;UjJWfi(f@qf{qP z+O#QKS7xOU0SrhadGX+_ynL=JpA1{S--%^d3(8GL4-@x?JyxUVb+{3Rf&OScS)Fp* za=)lqdJRm54BI+d=DeTJe2jGOy?>wd7G7qKU&^1syInrg?y*MaJ6B$-pd$qe*nlDOIyO zOQDU7tD%+!iunwd0zYS|0dyDy9QE4DzPlxtZ}8Rz^j4MvMXr63PNF0!;E9#TSG%&v z7)Q|xWx13Ezd}^j@kk&6NMuOV^8Ex+Z07#dV@B=MCSuBJhFsWN^Dt*v>tSn>6tgKh z?(uuEkLyoqGkK!WGt3TOL~pEq4W*^>7_(d)pI+}#`+R8K8}2o`ch4~ zf3DlRvgL>&ZB0<_Hz{QD4G->S0Sgtc7_YDPlh~KjwWU|u4qrvi}r3lw@anV zL;<&2;!{tVG4!*-WPG*g1{La5EIW36Z&PO#qs?txE)%b=oT9tv+(2uD{%lc;UqBD+ z$2I+=7N(j|k1`>mqx01pM5gFfyOQNYf0@v~O$Jk0POJtc`K3CqF8fr2e0|6XTfF%= zG}noEC!Kmxf)l$@(xmqN1yWaoaT|QD5e)jtCCI+b z^`^7s54d#B*;ko4yMOV^`ojN@SLRQD>MDf-0Qiq1{_kEn5(@x;`F|{LDBD@Pn*5); z8`m0_c39#FzcYG_vLwzVARA@5{&^cgMSl)M4aqHwrAmXb^%FZc7jJUHFW>xbr*69Y z*5q(r?+MY^MrWMNe3=^~KYci~B!QtZiRZk?nn0WV%e4(RKmqHuYp$@~>1A^GKqDp5 zpd&@nEb{3!zximAN@6LYV2N~zs$b31DUp+P%*nB3xbD72bA3ZrfsEXAn3KN+>a^|xt%^OOwoi8N%XQ~idK~Ru;vEpJ&MD{ z06tY{yM*9$Roqhw5d<`~Rij{UuKOZyajMV4I=R)iZsoH&-2wz<19)wz`2P8Q=Ii3! z>WYzO!I({Ti&A{vILP%HDG;4jHPaojS3Ke3KIx2V0wr;^N>Zie_w_{9ypz%K5*2OA zTc%7QNF07%JU(MHi7X;pQB1B%h-O`3GnlkK^7sjxH`(|t6Lol=h&Pasy2=A39FLi= zFzoflxDB=aomUHz1&El~GZ;?QR|<71tb!7@7a^(_?+zf?CocK0C6bAC`St_|FVopD zG*vV`gcv#jE&VZAp{_;a?pUP^WNmpEXLArk>3{}QHQGW-jp7p0j|fI=9O8_=0k=Ed zf%aS6y)CZD_-$1g#Gx`AKIJJw*VA0-l~Nsy>&@SiZT$kK@p1jd$9>*9F57DbmJJjt zTn8`ARyxXpst~IRrPQ!k4AYE$G|!_T8El(PY#6yyBD4-^sTNGaNTPL$l9i3z%&d;L9z#XJ4Aj*pTqR7|I7BWgQT z`l#_)!Ew#{|SB@SLP0G9D+2m2}6m5HrU1LB6Kmh zv`0@QwsRB5Oe^e{Z@3J=03U<9DhgcynMV*h+!EbkLyJApKm&$5D;xL9mC%F0h0g^~ z067#oG&@BRWZO9Uy;bkMnV{UM*+)x%UWEq;Qr$;=wT2o>hm&5W zLv|{QlMBs*v*Wh_PF9FcR=Q0V)XqK1;hwx|wUR?7CVvu=5Px589ZxbL1qAxqE=#{V zcTOKahV+oy9bDNyul(f=kZhqxQdzXj%caW8>GFJ#Y(njAqFaxe$;9`NFF8=|m-Ul# zzd&yG_j<%6*LieKpw4c`8wFX-2|O{Ffb9DhGHOdqr{Bew44f5@irfX36rvQrcR`&j zOrALG(WqeV?Yp3oWS*82?8u{(3W^Z&B^T$j5fb#bnVW6%ooO~t>PzXR2OMJXosJT$ z1wHFU)*J)kZt>E^yQA%&%s@$ZduKMEPfI%{SST;tnOvUII@FV|s8Sh4Jt!)5H>)5t z35=VQWYqLW$#d^$N{x)copHcj1SW%1>Lqwrrd>IM?7|KQnr>*qzvNllsJ*s`XS>YX z!PA1naBV>=@9oV7yhYnY<0uIX#ymWu8{A@nXR zw;nmW47_F4ib=-AEyG(C+P0sCYP|X0i_lw^v$NSXr<7#DnQA#caR*pHM&;j#3A*R-KS>BnSlS$4*o?QVtIYmxS~Aa&IxSF=R*;)i2*fKM)FD-;9aV$R$(3LI^f@!n326=+H(3>ZAPQ-or%j29MnGA^v!8o&Q=bjDkIf$wL4;|JecctzE&ZL% z?MLKkB(95)D{TYeB4i0F$%{KrG3Bb+=wIJZguBY82Rop@*o(ZAEnQzyfEHd@8~X4A zscu}zR&)t?MDS9m+O|06e!BtClX?Uxv~YndDZbb|24fh6(w#RaG@KY=7f=;u0C?%O4&$B> zgqW^?BuSsHuKuXC2O;L!ZW|--8SN_>a~0Z82h-cY9iE$A zh#@$HrJ&HF_);*&!4vb0yN`s5cF9Lhiu6p~v=<0^V7OVEBTdNPtXIXs%bM)QYmVt2f1&K^He? zq&&w=2VxGRVr@N*&MfD7IdR{>W$RVDaYRJcy$?Wz$q%9mb}lyzsMS@i+%tMR@*;)U z503?a4>bbVM}b23AEFA8lrbMPt`$B6`*NbnMEL4LVueJ3FPH}Wu>_+PS$OLyAo2lf zit(36h&s)}=EA-=C=w&TL|wj{q=!t>riVe|r%mq+A|DdpLwNvg773xK4W2)t$aY*N$0codTExPdZV6#qnp2#)w@ z!5rvU5EZ{BEnVCS^&vh5l07aF7vwh-)*|Wu*fa@2#p@4-NQDDH`!)zB0o(T_5a0s3 z7g75_NK2y#Q7F|tqLM(hxnS8Pk!y-4sV3YCs;n9wQhp9|8@1m z(PTD11Yw0q<-*=qH!8($mt?FtfZ>IlwvMs<;*Rj!Qt&tymNnb=He|bh?L3x0CTm__ z8==1ZoYES}#jiHow1PcP$IcqD{dyE-{cy*ZD4(Dq2V$FqKlJruIgCe*P%i|v^jhRa zR3Ej)gO0xTD0C<*w7>Tg$^P`F$8WpWtp>dJwRR%In!=l+DO4c#fo-qymg&I+ykh7} z*4rFj3+}N<3NC~>STCdkL)Q>Yj2;SCo)@h#fi4xFAlFh@%c<>Uj3_A{ADmDNM15io z`4XFRwB>n-xQsA?_#qv7{6tGK(9S%luW8LihsKUWNj%~g0|mCP1kT5LiGDW7e%#2e zWP&PXfpi5QzB#=n+7MGy)ZeaN76tx|B{9wZ{V3>So-qEl70uD|0%mOHg!;N z7BhF&eUJ~Rhw$yH}18-sHm<f#Xw;=mCEVCAWb1>CR4w-A zat!Wv495Bp$F8)xx0XLi3OaD=Q}y<4X0}~77{=~-K|gzDl%f>DnI=Wyuimh#ZU$gx zc8@0zZx$Rl?!l&LSNM%-_7>=Nu6!Ug>*7~N4CQ1oBg|G_P}_9cui1k{nB|Q;2v5=o zUpJi3L6vZqe`g{D{z~0Jyu!87j!$faEN{x01L1K<6%|@aDtg(N%$&qSh?TU3>N}a0 zbovx4ldqRzRy!43r?15F8WPtw55mfi`LqjFJfah_^(M?^JP<4$&KL zs$mVHRd3l{(|K*WF!K1}i*D3XY=qV059Vb{jVz14YS5G^q+*R|DiXE(2^5|1b+KmeJDdYSZT^9x|+t-vDkcOHGeVzf#56KMVT{%pv%=nep-2ubhq>O7GRvE@l=!4C(m`OXl)zE*pzlT=2cI4ymPj1gp&KVOX_4= zAgPk~T$-d~gg$Q6&)+zkIF3xO)`>UIhGHj^cn>zwMpayGUc2T>8q{yInujN} zCsPC$Aa#oV_=F~1k3}O_;nRd?ZE`XT$5;$lk7JFg3j*e{A|h45(5cJ4V?dzL=uL1} z{Oo_dVUW;X21rC;LkkXh>Sx5M0`YT_0!hRxYqQ&HTxY30YnpHGzeC_mzU(o}ih`!1 zo}#E(J)0bTT*~Sq{lSn_je)xWvzIgn{C_xmryxzjZdn>G2ZcvR9cZUa0?}lDf_-rS6Ew2j3~@>x30UI zIvuqtaf)>*%FYVmayz!GeZ36vIJ8kx5#<7FRGX)}y7#__0E(}fs{(y!FMa4E_+Twi z+ySOtDj`$kDBIHeH_**^2sct9lW0`yImrwv6jy0F1=E2$%wE&v8Gpmdpd$ekR`$iW1; zk;0KY8dHF3S_8?x-qsZ{oqR417Qds1N}TBUyRlcX~m;2W72{<(TAipo>C^ zu}Q(!^go*^VRyf6ch$4Y|uG+M3 z*@3Oz4?+Ad6)-$DZxh|cIZxTe-~4hxKOd&%epeEDIb^U!*F|}cf{ms=pCJJ8N!9g= zNan>cYo>`a`v^Vp*xC&ZFKjjilxI>kYWirO-N04raH>ISL>*NGZ5uO5iD+fnw z8HH=x=Xf^oA~=OWSYX#PcA?5SK+kD^^p2SQIe@Scck!&wp(>Uh{0Eo`zZ4|)l!X=T zk#W;NMd`9@iBC2+BsoN>dB`sKq;GnEh?Y{*nVx42zNtO{QfI}{f=iq8Ku6Towt2XT zUfI_5;Dl}9gzf8uZR>>X1K2t5VjwS7wnx5~Ku78BtDzicC zE+#GR)}ow!>k(q&Z*oFWQ~i@34FPEg-(9IOjNrdUF5v zl3TZ0-qvzR1Kb*WG%FJAA-xJPs0(MeCUz31n4yWU?DiIymk)Y-+mN3;ij?1*PMu zpx)=Aem<`D1wcqB7Ge@RTyeRFYzsKU@b~Ua64jGG92QmN57IpKERG?c8_NQ{Z_4SF>czJ zmNezP;pTfdHkiP&MtkE3on-s|&# z<0G0JdgzIKh-Qz`eZVN?I7%B~>|yUZ4wu$XfRRvxj?-PJ+FW*CI)QVhc(*~Yo-?3z z-vQhau7dbpNi{C5gd|g9d{1l~D%qIy$dm`W>S=jEnnn!B5v(IRq-$HvD}EXacY4mX zW=B>|Hy7X6_xb+vbZg@v)vQ#EPxfc~0|tLUz&d?S>MY|32PRA2O!^P9YgB1(U=rD( zQO(G_p^U5_={aBgRHV8r>62A0twNj2eEq20lF~5XLd2Nd@!+VGr1K^sTUq)Ys%qa$RToAI!YY4 zB%MG%5XC5ztU6OXB0P4jS&Hs&ZNJ9R1d@&b5o)qDQ80cvcAsHgIpT_3{#zzrhlw;|5J2#;2EaHKp&1+%zqB==-@v#Z+Q z0S_hM2tn}-nK>icgB%a&@{|&xdirI;qE+1G4Kxte6j{RGR{nex;_Q%4!G{e&@Dt9q z%+N~kkV=9lj@9~@$@QieSSZE{MRjDrd&c~z;OV0Rfa7`GHZHMEiZSLU#@hFE-DtY%cuR7vC?ZGqM~CQNrJe&=RFlxwK?EasV9#;L_L!(}TYW6N0+3DuZy zFT0zh<0@I%V1wm#NwL{rdQ`9K+}fEQcp*G<8uRnM%xLv}y=Z)u*@RX=Ss~l&P>3r- zYKII_{JKH&0Pa!Bwy*uBK$Cua~s>{ePA zn4xoM#B_rlHZr33W)LfT+Qcz}kWHr%*58#3sfg8u8AUftImA3VAop&WOK3gHbr9?=DFgzod%=}UZMkI(_)3I#qF!QP z&6$D;rKpXtKL9TvPb)9J^{T}NpKx(Xn(Ee;OH?z7I@y8DzJ`%iIPzUp_nBU+m?vr;8ff9^jr9f|)Q#Mewt@=XJ zut*&g-QlAFy8U5Haiqp*Cl^l<2L?}LKr=Y+eU1b`jAlgyT!Y+z=oFd8 z(eWESWlLjo*Ci!fGoz6?R@OB-c88=`&hGVi=w?4RQjzNm^%00J!C4$W)8W$Tv*fU* zJSPk$QnpgK8vJv|`k?Ug_8Qid%#X_J1o?;P+tN#zuPSsr9u~)|N{F2u=32^i1^+8E z>0e{f8t|ikhs22XHT4OAXYOS70@^^o{K}uv?bQ9$GNi>dJ7$_-E3a8}^}o-O{AZi$ zdjzi0k0CX#JE*4|IhOMoJd&`@T4%=9J7S>8VBS9mfKZ??vj!f5XpO_I+`BdowfqsJ zdkTJwK)3uE!(O1|By#|xDt78fECNM;`srI$U<5K3am-YXCc+nAWo060fDHK3w3|$p zPcWv^;s(9FgPDaQgc9&HL)G+3PkFNS^Iwh;9@h1_MNG=)$`bUO3A%K=B^;YZc+>Z} z53j4{V6$))Y!cV=6Tjf3SSiMMuS>WoiEamag8(K7`bS89bG;C1<0Q<dYcP|5jB9BR9-#9(R3sU2r@c%_!HNov|{6Mm4qr;dXw-mYPqi1U=tClx?M z<`?th3j{kx-ozxSqXW})6eargI?Fh3@mi-Hx=4gkIyTFa7?m}HoS}QlSE9HnZNjEg zXUvS2nm#i;pI;?%<)XB6Rpzz1{^%nixk^;4_}8$KUNW=`2eD`{0c0?(kt&w;I1G|z z2(}@hqn3i9smC}W>-#olH{cgt^@<6|^|vUHGb32c!Sr5teWvo!uW8A5{EP*2=eIc_ zC};=TPa1EZ83U-qd(&jGBZAV3PJx(m94tfqcLWLjXnSF~JKMVP7Hy+6UY0vz3Zpdc z#l=m$y~g+oTp}>7QgyK5*SyY275)R0SezHbLWyshl>(78giUUgf65tnFu)KkivDT} z#{WtU`b{&R;ct?Galyo`2;76L$QvD~3_z$9=^tC!H>^n%91oadYI#({Ks!Y2sImSg zWg<=BbaJ1?Jd#J(_ZPmu6+yo{QWO61+U) zL2KQzdgFwA4P~@jjXL$yLo8Y11{x{M)iTY~Qr21_Rfax;gjl!>eb0|=!jPWf6ZV6W z$^aaQa~@Ax=WI}YU7tBQDTdb*yS~Jtp1j>N#7{tQ1ji&&Ew_QUKd>|NF=jL&M={7W zs7#C`b-fj|k+tqLBM=#-M|$hs%zi5HFS%URIS4T9{aq2wp>r@nE>ZgDt>|h@4a3&d zdMHD+x71B1xI8Oee!Hw)xJl<}b1#JwV{K_^o+j8s_YGu#B$szdHbnH+YMY$LOC3P!5LP;?5}f(qOcMCAS5X#0_d*e3qx;=+I-ccHHbMdPBnQ2;EnSX z7*lL5xH0>bR8_IRj;&)b2{rY<(<^+~E^GUm{vI~B0#`9VGQ1#)jWqt8J*eh4bYdCa%!%|aXc|&B+{Z3N(k=mm4m2TQ+pWkd# zTB2$w{vfOUdp>X%KmuE^=YQtReMmd7UG_Dz756ZUj@puDg15-^i>>8`V>`6jJg7=v zzjaG-g;(j~5?cvPyV+I`jS-Si@uIwG+MW2R8r0e|i)~)@XlV@gzFFO>+AW(6^58Cl zUd>MWOMtm2c&o!E+}bVIG*mU>Iun=(f2*l+IFBd2x(f1!ROUo^(s`psY>RrygL}n7 zQ9fyEIN&{F{;T>0>y)A5oXrk4+J~tUH1N`ysqaYVvMiEK@e5DNzojlTw13Tl_z~?> z-nm6}U3a0JI#7LWwkn=w2~|l0QNiI>dx3M11Jwx6NSvd7srNJer@k25k%Tb}7?v#T zI%4WAiX0OjILK{iR-n0K{k}(37QXOoV;9YDP95FcVVw7vCKf!mP86fshE^V`!htEB z(S2z5`1^pRkof@)wYD2bF|xC741cWIf(su^m#d(amjE6shI;ylv9GxFMS z`~he^(Mx^tcmsB8Pg|5)F5}S~F%g`1fQ+1MOQP>n#UFCHo3r1r5ClZv&rkr%jGS5T z%lUG2*^?CItu=}whEMG)i)@JtJM|_P$gLRlzIfg0+2Rw#Sr!+*z1ycZJO_ms>%_>o zao@x01en+#P5SWAesXkg{N>%It9c$0h0XI_WdL*eeZF3*X}hKB#qL+K{#1sidq9&c zx)*1eDqc;MF%6!92hQl-?Q8nUX($)ZpG2L#cX(31X` z_3@!GGJq~SfVO?deT4N<*8-3mqM{5dWSi`wxq8o3(ZXULb#*>Fji+@<^ZO<|uHW=#EU#dQOZo-o({k_?YvtHh83bfhMs!I2 zp4wNjV?)>MrYM8>x50qQqAZPUm8-*832E^Bu*zHOPSL;5kUJ^f_@C9IE|H@%tnh_qx)m$^y=|`^T4i=Dvx!@?}03bzUpTad?V-Ic%`N;O*U-y?K^h}*`Z(!RUucb!oy zI?pU5(G8yY?dxwvJ~QvUjo5xxJe&DuHquqE^JA31hzYARG>hyOn2Bso!w1iZe-}mr>g~8t2XMmEF$h6`l5?9)==9wYng1F6hr7dfxWDM@SFt zRCzj1PBb@zU%reZJD!1a0p+wi?`P;Mh_78;x4OxYSr|f+ItsoITkiJxo}5JDM_=2K zYR$lU&tM_?G5K97_?@rqPn}O+*G#taXW5ScplcTIe0G@iE$q*gDwR=hv0iqk>&DR~ z1^}C3J3ONSluv5%q)2&SZQ5qVVpv5=q{=X7c zMWj~uX$3HT4T(lHx)ajnP0Iye@dkjF}>Qk^~o1cj1(2!pRe7`6p9I)M-d9(n3 z?5`rf#d(QKCp6(0X|PXpF~^_t<{EfrR0zpMcmt+cH8rN-3HU-?v9wcc1u>R%z}kBA{;;i%j+ufz}RlAmZxYer;H`n3n(-35C1_n z?R#cI>6FF8P_7IxN$PqlILFM59z-@W!&fo1_^ZuW9XV|o!Yu`32LTw>nNyRTh-)}e zx>?%*;4~|%0F3aZJF?Tj(SHfE5Ylm3J*s*GTB7Z3MZ*wkuI8v$Q8SJdJDTSv|0ctr zN{h;d?quK##| zXF%c9p(;y7+T-`Hridr169Z=3q6S`FHlF|VG zwtjUid=FL5?VWWVIydDqPM0Mod>R$eZju8EgJEofMvbAV)#YfsG8zZ zO`Kk6xY*mbeqiz8q6x@rOUUqGm0n*S4spD0%30V)x!*pk#7_-vGUHPvKf%U=iNQu+ zIpO+|7K5Qrk-l&-)?(Wz-@vCS&lG$9`>VtT&?IzG9Bpc)1&UW`kxZu@GTj+WrL%Cq z7(fp&4RUkd)%7gL*&qQ5ISntwJE~Xat z1lPLGsmQ?>O;Q!IhFfJArjW#M@D+uT(NHroDQ2@4kfhkjC^S?a_-Sd0TdUBAs;Kea ztiDL6lxHk?RHHb;@V{J4Y}>NucTA%ZYnX<21<4h^gE&D#rYz_n2bWl3NCvukU$Kldf+gp#I`Ofg_u>`Hf(&v%@^M|J16h=wbNyd8e)$#|djla+ zqP{HjXUF4yk}%3VVhM{ia_nT_8BJI5YibrQZd?*wiX(looe`?%oleyjSt3P9F42?W z{!}Syb;~Z(HfMN>E8~S0pG6$TOb#D;jX5Sb<=YyL81eiU-j7A}YSZ#Vj|_$`gKc!- zP+iB1((8lT{cxe4 z@8;Wijrk0vb8=eSO-*kO^dJT@9kB{GY2ZA$u?q@a!hwXPQ&%oo3G8?$QGedM-vSW( zu@9%YeO}iFKP?q=JeY|M`qDy}PezfQ=Db$%ePHT55MU~)EoO(yQsS7!gNO+%2%;59 z?@;?};%2j=(yED{=vAYuuo5hiT|nQ^ly{0uQVS-fTe`RTS_(V>&`GwaWt$~SKCr~u zQiiTT_OD2Tn|F`fW5ZS79d6H+jwal;_OjsZ05U1W*IwfwuWHI~FhXo6 zfq_M-KnmgOsLr5wKkPG72?lsA<_2FRkQPB(1VX6trWeT!E#cqlrr-|@rHg!{pNG=l9}a*de3f%Q8+8nGJe`a>(ghB4=3x4n*v z6?njC_`zsP+@mb^Wvfb*YcjWKDevR6$Sm{(&5@noxbQpZ9wgklU`9q*cY9$5o57N? zWnrI1{Ow~_&;H@wYgG^+yGhrZzFpW3Wf8tzwfcVEugV6BY;|U}te+Edo}T z&{#bOJD;e;aSl%@Jfnr)IY9snBS$c=&z0;zUmb3)e|QMA7iG9I$O_V1@X4fzB_atiN=z z$S&t+r9zFi&Hh!<(D`v+I~is~T+?N=YIB>)gh3FQm(a`6ueF1~^uQ!wVJWC@_C-V< zZLkFcGkuk}r?j%*s>1qm6i9G^Wq$jY=oBBzuygT4xr7uWiFr+M<-^;r$0DCfmXY$i z^aYtw`*Y^R6{w8n!vwBO6@bN|m|KYJTfD%56tpZ#r|Rs3>dx`0>Z5omeNpEfuQi87 z>w+ue%Yc_JMgUzvhA+a=0i<=L0SaXQ%DQA)3Q5bV*^5)_5RsQNhf&`&F|dma7&^k$ zXh-48;ZHa1nS04iQAHj+@SRju?iyN3Lk`*zMYZ6Hd|rmn#xosbER?PxhC_0CVJcSU zs_QOYxX3Vzr(CUNS)lm?Ws-~-IDZ>fIOX4+o<1V5Kz3$tRuL@8(GEoy7MfY<B0&UhivHdOJ~>ZOs8Oi=@8E1Bz+y$%L*%9Lv$#7K$phEthM zex{_upYKD=Eeg^=JZB%HC1qBpVnDqoMy?Um?ih6w9U(w&&fy2;>!;fsv9Z)l{6{K8 zfy(NC!%G*9pD~i8&rxI$n6u;}HkV372gcBx>}6e5vOJSMgR>sBA~g*VAskbD4mQ?w zjg5^kJ24TZ(z+%-wx}qI&BW$1W{$u-SW^s=#zqey{xV7 zy-Z6`U_IU}T zPh-pwJ3u6JYh{Q2qwqs1i|Oyjh4AO>gHNOdwKJS7)-)1)Jz_9JHbwt7TQE+_rVvvf z7$wabm9Ck6yk*ZyLN~lkVw4MJWUURE&Y+~BX17D9KP%a`w<=XLfekomz|$(pnslCG zZH2m!M87sRT+!esA@;WDY*1@T3Eoc&J~|^!W((*_?UxvHA*@XE2Rc)o_%v_J`k21JLO`$wsszF9PLi59QbKSc4I!VG|etfOzp>GmSTOe=r|?< z+5|C65$yvSG~iXWiH3M-j_^}s2NB*M63O{te>+|n92W6ZBa4T;c%q0pWv1b0po#^9 zM|bhXiOD8QDq;|=ImxRME%xkV65BZ4g!V-4{#g?dF*?Zmi2e<(M~)tOgcIx3nBh*)< zjVRRxuIGI+3W+aSGwFjgr;bBLsMDH>Rw4WYdTmY69^D*t+s0enE`K~sn%;j^z(DZL z4VaApb#|aFNpr69hFpOpCobmqa*0Q|P17_mr)zd?im|-3{6|b{hK~ZpjZ4F9orkl2 z*iuKXtX(|f3{wDhY=!&{rsUB_WazxVM{vGo1;Y%YKszPYji*{OtwZxD+0FxPL{w^n zy@24r8e8Ho%8-%eoBa(YC)&PkD36G}N~dSSeG$#sMbB}@kg-**-&%ck)n=DW-Vhv?r|^%pahp3fZ4y@k^=3ZsbXSmW+aXUK z#D*QugJtTA?k2U!_I)_Q_rYhrNgB*qUl_@oqY7jFXHYcL3g3IqMac{5L zCeBiR&n52bA@pI^8TB1m7KE^{^)BG2aj}t8}{6`J>>&|3$2A&JGIj|Ne1hJ}cyiEacCkl;DXp6+Eq)Ilb4MnPJ;&)WV zuE$r~$8@Ilwo8)GafvDQ;esyLbVo`tp$V(j#$ec3SdB?AR49_EjVV=&yF*LxLXgtl zE)?A^#dSt}a|Y$?2xEP~D^7DeL4?`(e!V?ZQ2tKt9AMp1)KDA7!n2d3Jx35`R?{cw zTRNB#G(XfILn8RsUx`9987ZFUf9ZEdJJvGxn$dm`+Gtnt$jZ-f!}gs+>nm3nmNcnT zkZwFlWto)DV>p&+c1@@;8=`-U)Jq6Qq9+j86dGguvj#s|p+$JC80lp-a|_Sw`5S?0^x`GR!s=SyFFVq7;Q3d|p*_2SBO zx(g2zM$r+O;ps|iK%F@m3Ap9D0-fVJn_i(pwpo1w>R_$BD z(H}V@!{f)Sy9L4giW98EqSQi4BobSUr+5jVxbYKXg1gUuT^rKfB<1%pA zHol`Q2d%oc12lo9Ply>-;fB|lqtYqwpO*f4X_N7?E^dViKO>;dD0(I;HQZ^>LlAr-G5^y0}bk|AHlQ<=~YA8+P?hX-wxNQ*`?JFMdfll+>Hw@bs&;OtdhgnlV) zfHq0+E3#Car8D09zB70C$$vrj+}iM7eW8R_>n2ToF= zf7&jw@0v3X*rLE~BiKjPGRKYcz~km+tzlc&Ou_zm@30$OrZpflh>giH*~GJpudD-; zXU^Dr9=9%@N+A=`<>p`#<}(`0IxDEQEe=cQM~!dvPA>b$1-)Z2J<69k%_VhMA9l!q z<}&D!DkQgpX9XCUER6n9gn0{-R)c92B6)0)v%$&eLj*M|==l)Kf^eft79l!T+fu5a zcoAW}N0>2id}CTZvTZ`!yfB| z*3sEC=eoOC8mBFIM~errYGqI%Ad5`&TR>ymUTGnFetDzK1NJJn6c=7GrS@vW`W!? z%>hVK9ybdHJ9zf?qEN=R0<}DLatqa0tl={>LzaPHeT`pq4P+Q<29XW?6t_NRi^;v) zD^6?Lu%0o+stZc2;pgh9KWQbCKLRbqrL5j1G z&I{%)Ph79GPj|M;Q$b-|R-T?JHw)N(lkl&|iBdjT$CB8c{W(@Il0>dGCQI0eldA%V zzhSC(mKQq$Sk{`57Mf7jDC!N5gb`*wcGF~{uumfzPrr=xxJBM&kN-%4?qth}#*|g7 zp6SR)h*s${mgLUMn*9nA=(5@7VOZ?CD>SXHqMG-xm;3v<`5x#l?0fCj)T^eM_)~?1 zXOj!Y7VMTNeY-58i*?YZbDK4kp)+YSavIibSN3;^{_W0z($tfun8NVk-QX|#4~*0< z4h&`kB>4ezMU!Z_1O==P+gIb0QqhPbX1KJyH3NQu%P=O-{>seuZ!mklRY(Z0lKo*t#IVmt?7!nSBTVBVOO z3y#}ma7$Q`2c*8Z>|XSB(n8fs@c5B9EtE7Gqf(dz#3z6`$PdhJ8LAT93FSyQDf$Sy zyEm&>?M$&=fKF%}ADLa3)S}U@HhPS_Ml3z!!BSK5PtE6=HK8U7_JLraoZHDE&{(gP z{;)b9Cnd;Tju<|*GK~Hb&K9rEZ}I0Wz)(o%()4;~X26M>*-h6mq5IvFr-H4caCNE^ zE`$4BtW^jU_`&CNA=1uFlL>Bdp3mYrP?GX*lwz4lh)uS`Nf zYf}4los{B4o)oL51?GsLN8hEz>Oow_j6txNm@FB$c>IfdzRx1-id+r_t*~f(wzXu)#s{0 z-$o=Mq>)`FFkeD(0sMmV(}YhdK*7){V9ZbUwndXXQIQOvBOOA_vc12F8o_Vqk>{S$ zm3z8(XRl|m-XutHqc+mDhNku!hBo-f-rF`BlNxBh?LFc*v(jF|z3pgH#m8>P%zUY<;1ILzOu;^ppYlBfGT#~BSqOR*uJe8dKfLH%C~Mdyp)uwh59D} z(aU4sagsO^Okl(^*EclGdd9Bl{jkolyC6ux+6jyyt7GGCne%EVsAZ_r;i1`$uKBoX zD}GL|U&}GkGB?dr@iWCxb-M2%-#~{t7%lTSo9nuBNj$%BSch?mUxaSl8h`nb+TfO# z8mW56<8n1&*o8LpvEG^pl8M z=p}dzl{>50V1nNW2`{hoe)mVZa9!>;-)?s*SQW02L+SVCYv5i$ku)`J#b9CP8DV2t zLJxGQ`y zOXO^RdvVPr3_o!D*d!(3U*|qPdseYL_Zwr8qB@mj-&zA^SbSv=PE$5)8&9>-9q8@u z$S6GzAoU0I0Oe2t0w_%V?19ln5jC)V6g)L7Q9Dr`QQ1*J+AdS$eBz)+M?5Pemk#d3 zrYV^+$wr48R2%`T!6=-3DB&eTUNN3Z;@qR7c9(qw1Pt#`By1ciCLIxLhEagWg9}Sg zj89|+4?~@lX@R6k!Vc@^PFI@fZy^qdAAq$w@9I6G=9A-7DH$c$N<5F^p>J= zwfaUlFY0Q&sf;qBeH>J-zz^7Wy+1=OBlivCNnX8Dtt-VShOk@^T1X_Y%?F8RQ`6j$ zEiE2FI>_fLwI2@AP#g85ba*Ir@ivHd>I;F2-LRwa!@ury{NJ}4@!HUQBkG?5zDRTX zh*4A5B8}o>=@;2uxMNEbN-de4|}ImI4Vj6gdjB0wf4(>y)^ z{l@@*`U6(7XqhHaKV?>^7+QKGN1dA=$jaZNb>97_^X%H0?DNll0l&M7H0C!MRO&gs z`UJAvo;0GD^g&wl#}t>auzQ5Q?7*L?DvqdzMWU^cu0ac(=cB;Lg>$yeDr5K`dFs@# zM7McvXXPvsM`lf$^n>Mf`|)X~Tx8WO8ub-ww0YOKU0;3ZU-i|Cm*+Mx4f6avo;y08{uHU`Wcod0tYO{lnm&`lUYuly638MM<{l_iDCv3N^%U=7NhJ z=a6asim1a*zr4YqUh6Bl5y(m$pSS7qcw$BBv1d4jGx{#m#eW?=g|_Ah&HUQ=c@{+) zDQMmA_Q4c&QrVLlCgTl*ON)8Wv72gCF;oTTnXNX+;~*81fYzj{m3G5<{57(jdehJK zd!}(>1_)$GfaB1%9A{r;E|XObLkjKMbe16G7eSmHUZXOdUHr?-R{i~4m%7F@CNtY> z|7BMhqCFJh<|p?bZwOk{Bj*L-Z4=wnDEA}Y7DqXtZxp?1^9|Vk+ut%x2^l1Rc7u|q!Bp%ad{qn2|2&ZXh)K$bZf<+9O;BSNP*fb#8)iRKg-BGx4u+ z`p!l1%3|b|3bS$7=y_U0-q&li;nwoi%8Z*T+1-1g11n4aOZw;B)a|+3^|?B>(-yU{ z^*Z|{^rS1ZqOWG)qL1(08KZ{*F&{YVbCK`O>BZG*bw!DwpKn;NdMUXC0n%=OE}ghSv* zu2qXGY|JL4)?pMv4r0s+XC}fAD#sLNsBTUqNfAp*2_#4LuQvmIPPKZ%;oVO8%O2yy zo4(GT0A0u|rsM>Znb2@L0dzbKH#Q2tc;e`}p6GkulU3aKA6O@b=_m9;{q_h|iIOdw zdZu?64tw+N{P?f(BrEjssu<-KJS-g*+AxI)nL+ByK6w}Q3}OudFa6FiUFGG#M-if1 zmqtTdsoc3Y?AlfS?hExm*;kt~Zo?P!Sln`!*|LNH^~ zi2i17z?r7Goy^d9gz3)n=U*n3it-`}9D=vwj>@zK{tImeX8VwSRB9gL9Tnigo~kyG zYxx8Dp9Cp@3!^v~2MFjtuHXOT2Lk=O;O!>m|MUF67wiAh4>bKxdeqjzkzPd^9tbjr z^Fa6I;J?j{{`VH7nivp}$p7D03R>70IJo~;e)ZoM{J#v6|G|np()P67;6VP_$u&d= z2jNz@B75oWlZckewr1l$Kg@FS2N}Xn65co;D^N``Y_sV32hdfZpK!@q-DbgPbe!-+Fg zG-)yz1N%HtK>M{4M;yt}ptI^6&w#A8Yy*1dI$VD|JRh%b@wAc7`$dF#V>3wV_l$$U zrxY}AZAV~n=W!vjgW^!{Q$+kl;>%?A)X=4adU=?76sd#a1UO14bQ$&xf%Yf2@);Pv8yqV;_{#eT-`F*O;Qv!6EZsYGd4>k zne>{W`-|}Cn~LLp-crON4I7-cXjO$9ZW;HL1+!?4RxMR7ZF30Cl$32xL_Tcq4w&3D z{lG1 zlk%cIh?4Jb-vH6=0y7jb*!mhD7a^3HGaqlq@x3|f*S1ceUhHsZ)9dNwhN4Nz_ zZ1KU3W-Sak_bAN~XBnP#4lmHElHXRr*pqx2-B?x=sfb1e3@Hw^1a*}lDaVA}R_)GP zTBK5pKdZx^6{qIR4ui}6FMuARu)9Ts2SpL94G1VG-FA_yk^NXFs z%lG5v_~LHox$?8vg#%?)h4IQ_XzIym3oEb`g-X%XHa&?6I_5W${M5BiKGawyp#r44j=g!=Vw zFF>KQG0<>;pGYC2JU$l+?l^ryr{YMtiNavi3uYz+Zm1%qR)@FTW?28WuAv8SWhZ~n zuNdu(3VwZlo#sxV#yYxL){Vkm zM1u??+mcDj2Kr4Vs0K}lx=*T_kWyUpqmAc4<-^~}K?1j^2WK$e*4*RrirKuMY%O#= zG*CSz;D1G_A3;u{BUj_p9IntPU%`4SgI9FMEb?rMcS;VTGg_qzP#bl8^(NnC!0Ku& z$zk+9>$w1B3SUdX>w{8ms0OGX%i%y96A-Jharm9fr!3xZBoVD7=fiE#z?*~@EJK^Y z+F?w6v0{fqP$Q{BGJ$waGO#um$d_~k@blW}M`B5j#IT}A^F+LwPIw#_{&7ZnD(p4O z!Y@=RZ-jry8GQlof_aDh;>{>DSR9aTJ9Qe1jqfQO?$an>HRjLp8&?8-~M;JomlN>}Q4DP7^fo@q*= zIACOhAmTt#T*IF{qF)b$cx_Thti+yTYHxQkK&B>(t+U;+Gqs}~r5*sDmQ;A@5^0DL zcI1}HPlId=R44ukHTe6E>{sMqhpZ3Ugqc7}(XAq3Ej;A*f(on}wI+)N!L_qG7@ z>TY$}@a9~KN1xPaM{_%jM5zyKeD$F8%#1ru#=X{6RP#^VA01 z2v&5h;CK4YUB5+T2i{GZos~~vpm+`Ax%a^PlIPI=0g>Ds2Lyk110jZ=&Evz8tzmiS z9jZmDUM{gE??Y9PvCW^&XJJJ?HH9vT&KKb{u`Wmt75=u6qk1+hTy?Nbnc!YXL4Q%ENN-Iu&TBQYzEC`KrHiJt?Pq<@+0;YMDy4A%SO;0x>dmhj z@2T6PM$K1K1{(9+)BTG&2{%oZU~hUg=SCS5np2sTjSN@X)6}3T7t9qVe2U;_lG>MJ zkXUT)*u5LKX>uwAg08W>asIW*%#lgmAQN1h{_5?A(4=s7Ng{cT9RtnvK?#+iX8ITc ziUWOrST)0MU)iL^VyoIFk)|;I!tW7KKet3xzuHxeI%M`G7DX>@F?f_mR+l&!u+LYG z{pU4|%ydfyn#7P-7u2jaXGN-MrkQA^aEx1zIE)Qy9b?1V_=*1?($29<5T(i1W!vtu zZQHhO+w4-8ZFkwWZQHhO-8wU0&ssC@+#isia;+z0XGHA%Ir%DLAS5!~=SQ8TA$s^R zQ=jilvw@89F;c!Om#uDIN&s78HXF4u=Gz{2`7T|Ao5O{MVdvL|wlX=nCU`05mUMYJ z-ZeHvQhi(+VSzX`K-y{eE7|6@7V;$tcN{#j&Odl$_J)N=*>4iQ%qB zQ&!Ir2-^d(5dkxr2Y6K2H|@9j9l|~$d9s&yZgJ06Hc%ZQJqa=Rh=~3?5i4alPj*Ln z!ErwM)N99^CJXeey6NiRywRNHHBETio916{+IX`qGOU zu7vQi0E2ri6D;k3fwTEcc0-L^(!U9-TGDIMR}b!fEM;+k3;$1Ewo7olah>~ z@>7andp@n+0kpr;$*v2_3qUXp(jlKQn^1EDTC7nNMx#Sq+oLM1v2gBc3Vpc*8BI~n z)UG^A>zxCeK~rdZC1Hgz?JLPsKu6gPIv9Z zy(@CQF3P7OTNjLaS6~g`wFv>UFkp&zmyB1#^DXg6t9Q9pVHuzz83Rvb5t77{ zKrd!h7L}t-r+Hfxd&|o8_a6iciAinFU&vmKiKnEY(qc zt=Vx^IArEfv}*qjw8#@}8_;rNlA~l!+I-SxkO|Gzu`Ql2IHR>3WF{CY3(Fg6kp|!p515-`B+vi=|5WGyUbmCm z000R8U+Z?2|Ez3Z)cGmfMUlSsatybzfO|89Sp{wg33%X5{GbPU2r8%@hvUEQ9V;BB#F&E=~HN>yhC{WwSD191aVTT0|~ z!PnQC*LdMy{kDJI0}XP%S|u)c(LX`{E?u(j8+g2(%N+nWl%v?P+p&2%n0w6jp0d(T zpRs6^)pOOn%-QA1W$lP5*`FZ@8?t8|#E!CX+|Nng*D7GRr85@L9_3=Y6GMTAviL=SbEih8Rb%v2CJRMu~23qrK_n+ql^*bfJaI7kD-bJNs` zR+vrOZ*71vgS>LJWYM>QbSgFPC-z%!6RvCHiT9h;{rT{z?)&zBb7y%i<^|@m<@Q-h&goz2%t8vI^gG?{=479nZ3}AY|J+y;H9fh%o_-_?Q}JFqFJQPzfZ$+oUf zXIIA_Sb|&Z{r=^9@8f02`8riaF>;V1?|>&3DaI+d7{9c{E37w`XcsWusMQPhV1?Qd zGUlg1KeP-g2>KJt({a98!8PrHQEnKRgOY1|woq|NfPi$-{B|{)RtqT&wU#Hs+W=Hx zy$f{qpp2u!JJ>?lQ3oi%JEo-zT=Q%PojQq5^E!6SYCk6#^3UuHQFsq~N@I8-33Ye; zPO=qT3DXx9oB|_^c81OdGS?h1W%rqDEeMY@VIUzrC`mstRlLh%!3hkPZ_$d550)@1 z7R;%x6%fT>8K}9n(Hn-NkT^aMvOOINWwiAyh=qK94Q^lC@T@Z0V(-XfN{{w23KM!h zD&TaRTR+XsQXq2*8%C=$qruFTV9{gCr6KWl`x1tfk+*6OgkFkyp~-8+lAz2&I%*fB zmr%_4p^|~jcp4)-AUsoK3_Qx0{YFTle;AXgnjF8kh1)_4U^B)Q;dIOhk_l`yPLXMPqXr+siB)b zdW%S1oTaCMs;vjHN0&KjI=O;DDfU7>q6@NpOF>&Pt|QllK-=Q8l8lXYg^f$@>K?8b z>%avnh|a8wAV#vYEn(J}HciClKtOa!1MJFMuK{F5H5j0{OkSuUt0?#Q02n3sUC4aG ziTQ`L{A}%svq-PJ-@&sOmC{$|7)%#?{4wDKy76CNieRJ6GI0$9kDA{y-__-h=U0ejt100|_z!TIf_5uo#r2NE8Wn*`QkZ<_3+khUYDV(%|7P&w`uZO zNnPM~nkV>(`$ndit5dWdz&fI+98m_V;=cUXB1A=Z2^T}q7HMWqKcrvJSk?+HWV<~S z9#tV6S&u2_xq91h_;Y}{dPt5x{3pmfHoa_pNcAoC6twXO_I7&MLoGI}&04UY;VqxU zZS~yVI(^gC`OmPS1y7rPgIp6iA^B}WwS2fd5D4gx6Tjh26DFWt<-7ZhaeCt~3eGe_ z*jV))GYkI&66gk1&A;|X0xNZU|mPBd!U z_da*Tia)c@%bP?IdF|+l?Jmz1K;TZ#(7PlXoi&P}S6_i#mDP_|%x-h#uIMo8r^V%4 zd(NfRl72dB(P$fm4NX6J1WoRV!T0M`MrMoooohRJN_aMb&2pnDpStAsLJ|nIgBnLd z>esM+3}Q}1uDavCuOA;Es2m3Odc}Nc?e@QHZZ62xC(6ob3TfWsn_TZk(iT1?yq+No zN`?r0B-;as8JkpCdr0l(j$rPrVDZRG2mHZz1 zZOTpw0qY*XZI^x(ep_Ipo8oR49ZMS}{5x_%h4`zbggZ_g7-x!8l8+K*EX*pp1s{5Y9k$^>{c&HLJB7S4(Hz5WSzEfmKI+n6%-*<+&% z)U3@oFP_iW(>@JZ*P`>7Pt2}*Q+y?9aOKOqyL|~k(yKHZ1XzxO$z^&srz3aX=+LzL zgdc>wearSpU$UJ+?uHGMNB1}AUv>TD9q~0s42*i?D@dge`mY=%U@58T3`Avn^hxhT z#a~|>i_MH6CbUpe!W2bsz5LAxx~A_LbJ)m9gm4;^Jz5G41Uas@#vEm(h{YQYra`Fe z+J=b`bhlsNY;(R0Ze|?N6R6-iBf4)3!#H)PhHx4v3}obP5ge-ifd;k&9qdOzaZeGg zybhE%P6NM^LMsdS?McpNlgNXX=XQv|qv{I6>80Qh&Ab*tG{JiMZm1A!!aQ3@-b0%Y z{sN{bBRY%{2-;TXrAk48=_ul#AwAYeJt4Y{3INlU65hoN1#RiF)S|28piVrSmd~tn zd$fovn4VE=SKvQ6D|W5Q=03NOuI)4aS~gX1KGrGppj7V?#F$K0t%jjjCAHZ-F@M|y z?z$&gZBn3O%GcU%Gwug7s_I=oH#EEU{w|eI3zp8sEBUKt>y>6&w zHb?a`e%9Q4$u>4;f;=xvRkH$Avtjz-O$-+j`3kaNOVr^T0k%HC8T`Z( z??qBym30D&>+o-d(}%VFQF|Oy(f$Qfld>b1?(Zj8yrF`&EU~$(-I2wEMjhSaew$N? zFuGgYng*>nCl#oxV*@0rkw?;|2sUW_IHohhI3@~1hN4X(G?6U0KZ6Y~d+L#wO?=c{ zMo8rtcZyb*!N!FIbaxi;9&utUXwY*!d$DRK_WRqx4@mwR7&dx^h87^2It%c2yi5J$^SPn?-8L=2et!0$Yut%x1L;S5=D1I9h4-j(Bmi z-A$c->~@&+y;1Hbf@*=T(=ice;HCP|E}&5qt6XOqDoHx(xO>du!8j6hH%TMw?mcRp ztr>4c9nMXXdQGSLjmnf~Om0?K$hxp-9Lk0$}>+K`Z8Is+CqNV)oQ8Xpx!0!+* zfndjE=8zRsfHGlsl5n^yKsz@57BY0O@boAN&(nONfzcd3Gw@z7QDRQJZ*xO{C#8qaBDzvPQcbx-g; z8I!)D+mAPXsS}a2_4Z%;wVvF;b<983ZU1Pse^+sOKmY)u|5p{KY~uKz={OgKUfTtF zgwA8C>;>o&5?UU6eh9#F8f8kUMjbewO42D}%!8G<%ZoDnuPlcWD5QlDc3-=r*U5T@ z71;QhFryP*g$W4UrMY@O;9d#71ELf<)#Bn2ZrNx?s#)Ri=Ol&`!G(OYaQx-^y~e&^ zjo?#W+Rka!X$Oa|JJh9mN+w=m-UdLshPIE6b1@{fb^0zJa~X~_p5M+DhS8^M^#+=2-b&hrf9Mk5}cHWM%JXPg6DB}KFA(mE<+bFaxP zGvzVolfKPcwp(`BPbqqA<(ny&mtRUQc@?J5&H{%P2h4FtH62jCAFyG|0NkwsSoeDl z{)$klAfD*qrHkbEt0;*WLdm;Tb>prYryf z0RFk+f4_YCpVe!@|Lf%|Ia~kl`)-43Hg<$;2wzjx7!-396wVqaAsY(eo_Vd>#PNRv zl`o5vZl?mYsyiR0@c zLpjRO=wl7L?4@A3>8)9N4RpniVnLYtCxr4h|43uMmB(W0J4Q3(&DzJpxZLWGH5T_X zoebTsU$;Au{gL{EM9V`N%ygu5GHrpMUJdSxHU@!aVp^l99G_`!#~we2vKz?ifp7hJ z0e=9O3D(S?XXc0v1L0ToXhuK+eLn0<3K|l(Q$pS61F}gTy+cWa%n_$ehZ&3ajM@yCqG6O2 zhPs?19edH4`!L8;$-ab*dLcH|voB{;U0&q$CxNGb1x&rVbhDJp-n0%pm6^q;_Nb@PrCKMC~8o_IOgR9poWj(*|Bor{=JtN)R0Uiz?gXC z87;*J-+kReQ*+nbP% z-hER!kH5ETDZsw&#LYMariSx@SSLfMNfR;-AtQgtt= zwQ-qROn_T$*had>MK@WaRlv5@KFyJ!h1Os`d5)n#bjCa0b;b=`SpJqT4MbX~`-e5P zkb+#hs=b5JVil-WU(wrC)?CGPWL+Aci4*)XtMI7Il0gVrkEMfSUo@maJcWwlmpD&R z;;U&Q0Z*KF9>udU1<42tsf-Dx&KQ3SWwWEiVdm01eN3C8wuHC_mdLE@nkHNC{_N)A zA}l0o3h$uKp32!fl551)?zWC&WeszyZE^G3&40&*c%IUXRsUE%{{xAC$44Xv0D#2* z6(9e-MQmeY>-@i`$fml1-I_SU=MP0n6+yzRjy?5cgY3m1Wn!_gK-bzO$uz9Ie%nk` zHMakmEBXF3T?UhmFUm|WkVFN&xwyDk_qbnr0s)LH((X?!hIq(gFyW8R9VR2^){njW z5eGBAg3mhuFjIAjm<9gg42>0_fRTlHQa?5gQe@(;ITNl0RP}|9PUo9o9h}@B`-kQI z+i<&y22jNuQ2vPH$mTL5J90~Zx?AKkUyT-NfjMG@(#kO?%mZ#j%hEtA?oW`1z#>7I zL;{LU*KB)qGso$;Wzw?z;>0Loc4=Z1%!69tt3QN(y&0_;O5-mp(QfqxSRl;t_cbbT zkHM0%4g_RSye5v`?c`4om;xCaV-(Z*_rOR;jiw9GQzbtYrh}j`{apm=R`u!~CKQmg z`)*)^;OaN{cDCQbj_hN*2H%`*A2)DU^%8(fobd9o449NRi>%vC4LC0ggO&``r_cbj z?ET{XXlIP`uOb|T955F-WJj+hfTM}wG^J1i9BdT?mbT(WWI`E|ZTJ?jQ30f>pO~SA zB3pymWVW-xDr=!{^p8&+E|<@ppjIV!TjuJ<@PP@*AAjCdFlSTKYiC)KCF_L$w4Ju; zZkP#j3!Javb6@}Upik?e_~%*@C+6IW+pC8=PtCj@umM~lzd;B2br=D+S1p4~ec3gl z4m7J_qZRyIN2jHtVR@u0EZ=?uV09aS;twl1`O0H@ttr#|07&{0Y4IS4T~x7-neIZ( z-)_7`YlA1#v|OO9vgm3a3rP&qs&I0OaXwm%_` zA@61?qWIb$3Bw~XAAAu&5vg@mSx7!drZ_vSS3@zmB%`p5sMZry=;!vt5t+POxQWE; zSiQ;%SeM4JyQyN&9ce$a8h;FXX#Bo-6w&aK_t_LUZw6@+SxJDn;FkNPqL1?J0Fr#e z@fkKMByQz$o|oD#`Okp@RBkT|g(ctQh9-!2k^+~$u4Etu!}X9EqnPhT)rl#mH~z|Zg(B+ zx$B|0dtGS-f{vyvS}>u2hh{?c5`dqejXLp&7y7y=y1{*_b5r7p6;#!%3>kD(!UlTg zg3KZ46_Ma-`WM?tS!>7SA}Kqo-ZZQI)h>)F1$kbU+qiun%9Go2Gof;1PM4;0FO{W{@GG!pJ5aVO;3t5lO67G4*#4{c1leZnKUYDJ zK<@M3#~sIsI}Q0HHs|3=a3xTC+y;|HB5%b`bcBH%MOxv|xQd;rs;&C%cr4MYh&4t| z%3l7ZqHGk)RY%f_!kmtx?-9|j?Sae}&T%)jJY`qBQ{DGdwMpws&r@gHr9TT2x3*ce z*ijYl?dp0qd3J1>cCal+&XpS-xNX&?pTGWT5s7@4MTh@*L;v#({QCnzg8%;^E@WM- zt^cFhu0c$TpV_XbcE3R?C})ykvsw%ooZ-z1vPlf_d3-VdJaQP#JR4VI2_Z$E0l@DfX-n}Tdty@VD!@Q->7uvvdA5h=C;od4 zEQU!3BjU7mptObPwjpnXr^6pP}V0=BsxPoG~~O`6@y+f8fTy$t(^IA+|@ zuc0Oc&SWh!sVLCjh_xsc49PqpBlI3|#*90m%m+8TaZHBlCi!;UGk=k1l%g+2(+B}i z4u$T7gb|5e>a9`20Az)Gj0O$1em6&{0)rW$Fz}N?$JQgam_qFd3y~)#8zx%dA%$Dz z7P}8ol!N6YzyP5MG0sWvrRKTbdO`Ow<8y0F*gh+(z?}&dpJXp-|F(z(~4IaJ@&+qT_Yw<0s7 zf%Er4h$d~Oti9^H3i!9~A)0&UWNf!@zyjP~&`C;tb_Mf81bQ=tApw~LYAA!CG-3k+ zcm=dX%K(O9g+qrR0?d3dC0l}%bBh4Xa6dT`HA!LyL-8hOH zp6A1#QCo~X2REM#Q+2&c(AxM3=W9SLg2Gn5L1J)l_P|>l%DNeZBRtKK@H|^;l8)Q^ zRK=?oj)VFk2I3iwD(}%61-?@OHDi{rs)qGo`5>UbN&tuEg6OOxQ74HP5mxb_gqxAq z1WBySGu>Ilx-@9S)iOlsm0{EUU~NezMT{2@3n^4J%`EsA;TRGXgI$>&7_kY1LcTw- zc;^*jx+XG^eja2hemJX{a=NYIv$Vjd3U;fBwnbjFCRyruC=@TT zNER_qDAAFM;Dj>oWqBV)I2?)QD-bn*g;#jp1h=?EJiMTmHBfHE|5eh{d<9(SRlDik zF8ErPY!&CHED`+6*hrPaL#L+5vs|R)0T?JUoR~!aFc#c&3=>)#H&thDGfj^3JOD&+ zXPWu9LyqY9%$lG};lk$*n@;!CD)#X6QAMy(y$N!Tp>3CWv`L+Hv9~SZG)1=qOdiwg7HMZ| zwgHPsK|e)%Y%|m`dI$qbFrm0jg!0;!8Xj~?ej>PUq75^GV4jPg^BU?z)~EMuD*(Rx zv{D7K-v26);Gt@BwXJi9RHfewVqNjYHHzoBJyizDRdPTjaYYnI1)|H_4(Qe&;Vp}`Lo#oe ztLLx|Q^ufJ@DYr8=kA*-j;TMt7-L*nk zjJ$27<(q!g@ky+Hkf)B8_4=$?3hjFAjaF~#tg>ovUI5pNe{{>m<9UOxlclzDq;>3l z42Kn-@!stQ_G_HOsCg$TO+rG{UygIU?7s<)d@I)qj*7HGJbZ7NvsqaGu&A2{pc*Ug zeL{Sap@dg4<{DV^AN~QdJDvIhS+7P-9bQ7~w+5H?(Cox&`Lm#m1NoWi`36y>Nn8xk9mT7(-VElt+CaJm*8o65E~}G zTw67y5j5qJAmwku5$6XuIgQP15u%3Y&Pw_Ii!T$FPuu(Kd9Axqlhmy}Yk$7{>*mJM z-O<_I;qnQTZ&p2M@a&*eo^Y6NMd^TSHPB>^z z-=)c1e+ZauyEI{bkE0Qjf=`S;4GjqX1WzZP(GH1PPJN8C3x-<{URP`|Re4Y{)0 zVk3I1^}=ztkz#R=-g*H>*({ZK_ zSIHq9PNDG_uQs70m+7V5G<%KF%32RqgK@8}zms(AcWWbrU%D{v226^dF-kVgfc+AD z$vtdPvN7=_yM1GWq5=5SYVPrI5~>s!KT_-s(ZH#F5oV}y#0t1{v_bvEr}vq=Ghld5 zYotyg_>eAYhv2NJ#F{U4evJ@72r9$fxC>^3{Y)Q_r=ouvOeC=%NdQ>=KB{-Az7vem#kbqaGT%_MRK)2cwbioN3PL6Wu5 zj%3I@%UGmv`jXiA%Au z8*Uohuus|?qIvw3gwp4lN`^WdSYh%np*^|$68!3d@q1>>ia6rE9nLB$f*eP=52m3E zBK{<7bH6Mvp)(&Ql+A2Nuh@YC)px*zR8}ASB{jzAhW!L8T_#)z)|rB(8Pe*jO`=br z)rswqRwz}UOCrsuL}9{QK%s)jv@5VvjD$`yJWVJmENL0hIV!V|2L(p174%=J#rHI) z9%~Ac`5Vp1Q{BTsEyFXG$a?XD*d)$Z2c)hHu4?V^TIli_62ov%SZ1(cNfGjiScEg- z0>Yd%AqQd(e}!7LmtzQ9vm2F38c54QgGP!y^+DyYx?{MHL<&Nl>-x5xXivLzN3hTJ z?tiHfQS}m%JSR45H56I?1f;%@8$8T-$cL$Z$0b#zF2J(RVv8;d*>o#tO=LubmFcA0 zJZK?Xoh5FdHB1nn%d=Z4}!iTe;*$^M|UhAbuXjFS*nC_(+TPO8#S=5c;B z`X`OzKELcw1?E*)9AZdb^;c0LTNpW0paQFUW+k);LKojCgy_h3DAHBgcdLq#kHlj_ z-3S3W6N)ZJ2l1bU3BJE>$qg;NSv#PPDoVSZXtn%+#0ec%Lj^^nPPf^V0A{p52agG&vY~J?<(^w6k0Tx8 zs-X&~B{IN5BoSh>ILp=Wp(KkRIK(uSTDWLg#u>JL`6JL({IEAc$pc()e}XuQ_T4u! zuH92dRkF33NB+r)iI{m_f+2nf(MIQi8#CJ2qIy|+lC9?+WV@2^Nw6V5D6C5AZ&va_ ziS<~c@7&E5gR-d}!PPz{Cd<3pGhKapomlN~+6m_e-wXqiMfU8aSTnvA^8KyWR?z5hd)^6JS8!?0K3#MMP4ywD`zf5 zhz}}hhG4P+5Mq59D&$qM9KFoL8jCFpge#=8gs=6K3Wge8(U^fdFCbpP_PCc|O88CW zGwBnDVwlVFk)<+Yn~H#$U#!iOhkp6ICZ~E8a_twbZ^lI4%Soh3_Qu9&GC{y(KusbV ze~Zo?om#;&;j}I3IWT!fq(e)5g?)gTE_S$Y_gNez5rW1QqFsO4JSW&clLNY70eY(?aCaf)}T%OfzR zQf3#HLN1e!ePUT*Z&8ZiKsg!**oMd#As6tm)gNg{wQLa8=!v^4c{oWizYZYjePy3q z=a+{#x0kR*hR zms7S~azh-KXNl%ku4R;DF1k!MIc;J(r>A6fYq_2eaq?ZSXE}M@)N<6=wFOSWLcBG( zY<}2VG|mrDX8(20=2=VGb{iPOp4h)~oMnAD@zE z)#R^k3YCvSwpkOK$ytTG8u8L=X$ptK?hJz1U+5W8+J(&9O9GkMHmNv?viu%ItkW?QluKZE-#!V$hHDkREELhB0R1tV`_rWz+C zmuWd;zhr(OFJvmol0%x-cZWq}5M^>Uo8E)B4~g{v_;kzHX?O0}`7i+d7G^yqXCc2-Kl}d6k+a9E@Z(QEm(>$vQ~g0)J+a6|=cR0A9C^3b-NH zCBamSL2E)kg{O08zYFrBqK-cDF3aUh}nW|vrdwOuglqOgHBOe@FRkd7}y4K8ePe2>m zfH6kEgUa23wl<0GZ|<})@QNR;5bP7~fZ0-lm9~5B=33@t*)x!exdi&+910}rFn0{! zQ0xqFg3MND1RzBPGWoqun9tnu;%-`D1P{>Fq7Kks@(90`CtG_*TYKpS`g-U6v)TAe z7p6uA#meUDy4^Io%C(X~5E2sxj~%a+>5xz9EYYt{9HPX;$E1dQ8(>@%dpf6jPYs>| z{2p&qucGck8pm1}5Yvi0dviU+OgqqVH5)RXq)Oo6AMG@6RAo7>>kq9dh;K~cO_C_t zl9LlZqH8oF@@*R3byR$0w^5Bks)yx21)OFqRwsS8&tNa6Rjusj>)&}H!F8Kvh1ZE&ymjZXeLEzX*xV{<^@BjikWq;uX99<`r{$3 z9CSEsQFEK%1p5-FF05)xe~BJ}SKX?aUy&g#WRKY>k(2F{o+b9y1@V4U2R%gU)?EnO z-#glNRWt%JdFe@twQR}Z%&ov7p(3l$Rp|n4qb*D3kC$4wEB4MqyP}h#p<+(w zn@^sDh>Ohh7hry0u*Mvt7^qnAUoiPgerSg(JB@HXkN9F?S{Uf|7`a?pRsmXO$^%c0 zbc6#Q6Z}3-j4mHIv^%qK+DEKHk;}AIWg5r9ZGA&v4`GkVj&?jMHWHhJs+m@o>fUnX zno~-NVOZ2CRIEDbkSDiupo3y$P1GKui=U!VLEejcDxuinRk_lzX}lVSqxd_Sx%`bE zg-7n7-JqiEebjx^CEeL@(>Jej&o*v+vm>=^sdfBWHzoFVMFv1Ery@!VWw*H-bUT0u=cAV&jWC0_zr9w@c=6Wh$?f=JM#UP%v{`wUYl!Y7Ynh^`_7%y5!S+ zH`6F!kS;S}^}_XV!ffB_u`fHT$6(kDwIJDWck(*k15c;U{zC+QwpSgvQh-qDzKh#6*4Fp(t==Byg^Nr`nGC5dC* zW#hJl>vkW6>k?I)m&*IwUEhbVw;TP;`zdl6GK&(OI0-C3LY#=1kE#0TBBeyrnN~-C zS0oU{jZuiqg!YBSLhsi|lKIV*g3<8nDLTv1CPMaTXGYLbM~BUJi<2>A^kHTwR*`G7 z?CR8S2I>DHkewY(8XLsaMh4Y34^5qmmr;}<0(O{uAQ>|rwd^sA>r1ppK$gMqwTBY! zFI)=Swxr2CEsDKIGi;jCEI;+|vK}G|KZTWj53J$Bapm*Fa;2kv>%Zx24#Al)WSQSL z7ElqS_tnB~0iCw$^Z@pgHp)YBE+ih8izkLm!ULGY%#n&CO{JCScS0;=V1XIV6gS;y zkswwHhqT=ztHDnN_BK*N>PIa?g^r*r5O)PmMT1Gf5W;8}eS?}#9_9$plO`ltEIs&} z0?D#+jJ6j_e)f)*t2%tOhe#bX=W)lPrH-zX%!J>&Pm*j5DUGdIW?l~=6lZCC{PW`y zKSx;{=U|N%?Z4&eq4W#OElQYz$%xp6`yyz;IgMDlyx*}7{yIz$oaQyQ<^c7s&HUmv<+vEcS#ETq3yua9UZt(Z#PvG;ijcU`Aw*6#*3#ftiKy6c>qp+ z6X2>#xW)W>2G93(zr8)7J_+vC-}sg7?DeUsQL2js4|e_DuaDy@mcR4U#r_r956_O< zwh!O05UhALNeS*T{O()21rKFBejcuK1J_{_tJF(Wq>wleqS~}q9lN!JA0>l8gd-zt zYn+eHE|)3aD2na19HCZ#wq`HOQ4ch7Je&;Y#uk4wiU%#8Rvyy*%)4zlAzDJGmu$56$lGqqA8w^mZkEKKX2vRBuBPXvp)MnsMZ(CSJ#6yx6^t+sQnRAzFqJDS_ZM{}=8$9D*m_Ca3(zotS!=um9Z1zePbUfbQ(GD=qP3>+Z>L4iR z+-NNMb?|X>A__M^zhX_;R0r(|W8mM*G!kJ4eB1{(eC6yGN!Q~Wl2M$r2c6zo;uL(v zl`kSN{o}uq6dO4Qxt!#CjKMa-u2*n&H)k3E7Er5g;oUQgYSL(^{-&KH>ZV~^_;_>V zW@c?m(w+PEgWe7xOcc;;idrgBt4=`~f5waF-oAU8??ESJ?LAC>9s530hNy}B&BSLqm4#*3_m7p-ZY z%bX8gA++1#ThVh>5YOZUiRHn zLsp;nM6`daQ~03 zEElx1voBg~Vg!YhqS$egEdYz_!OW1~ z0sx}OkbVqEmpfTF|9fhkjU;nBsE*X?8~}hsa7$J!3?xB@GVFuHYR75VmAJHg>3(y1 zasuCi&m0^P=_or)9Ffb?3+Sf^`!U#JJRo-R2RwbtI*I0BhQ~$7u;0B`HDAH&$v*6~0-9%5*lcRVD zM7GrUnb{VD>7}nwd_H=lh1a2`3C4lQf^+PGJ!vW*SYKNvoURz6zdoe3K$4+1B%Zz! z-;a4V?9Li&2peG%CAwE9%;lvWT)+V5&$40eS{sq6ld!{xX@kLLfx5NByG=8;Cl3qm zhjO~PHO>AXA9^$lJ=2XS5VbaGJUCNfFZ0Y}^3o|{z4A^Kg2v=N35@j7NH!cC0NzjW z8Da;9?LVc9Oox0Nq)AyPcA)PZJF{V+Up6ivEEBnC?jr$tP?_nh+i88LNKqOOOkowq zv9ZdZ?7?d6BPrdC;DB4heMx8AJ$={P+mn5jfPUe@H4^>JaXa7=-uUo20L#{6Ml0Hs zxMU@ZJFL%&s{B1jM6fkAb)gE;8-(#|DXCJEAN{Mqy=~?Y&5>djf7a!5cF=Bb*c6Gy#khduf5ga#MI!Nh#G^t+3)sFPs^mS90 ztW8HNOW$Cx9(}BkR^K~faWALz9x}8Et|+of4F0x|-i(UphM;;nvaH-&FF`5Qp!hW{ zX^RdI1aBY0kH>O5%gCr&wH)O6IYo8j)nwF)E5x^-RdN_xF4up`rTGt7XQ({39^?DOg7-u%EuC|q2khJ$z9 z?8&A)eacs0uFrScg-ts;hV9Qyghk8aF@uzAm3KxeR5tDHnb~j3m!cc-bER(oW|5wa zSmD}NO?bHWKqvZ&d`sLjr0kfLx$*2zGWnE*WBbnVr``MT!<5I$JuBsoOJ-A*0~FVz z$D_q(y?@Ax-T_QF_Y+3)4?q8%tl~d4G{=8fCCi#PISYEI{$!Du{Lf(RR8#l|tiIFL z7#4+4Z9ib`KTRZTfG*@wMai90)jTCWAO?1)t96P7K9v6<>wYXyfM9j8m&8rvaYmZm z(A18{4gEf*w0k7~bs`0V>#|Nw}=8%0xJ_1G!cfe61$W;T9_o1M}k*u;6T~9SS zs3dmq0ajPNJlM>Kg|4mq$cA2*Eb@>MTcSicOuo1Su@fpGfhYuh0p6u7;ek$g>0p0+25HGxfF@zI(S4#@*1F5jQIHD?PKQFa9n4o2-dl4$U zV^o~Kx;;-m56L3z3xN|v8UW@`_!9|2>Yucw(rb?}mrF^OM~HbMyXRxJ-L>~n;b(`>(zYU-f5^c1$N_0xhTz}s) zDJK|d2Z6&h;SLkAyHNHyt>EbAFAtF;oUE@dg3w-KHMhn#+ttfcsE!96I_{lbh$1zT zd%?1S`3-4{B#$UiWp-a=MLo31D;VWBVij`x42SwLi9L!4_z^( zV!m~`%e1P}O{9h5$EE3l=XnG)IY}~8?2$CCBAo!ll26k+>eY|0tiNpCQucRQDlck3 zM_h{?F-MNN;>1>ycC5m6*==x81=R6(3GwCP4>G%;P6&L!z97L$N2`HGUcR4S=`Y~I z|62dlHQT`EcD}aja%pRX9dD~|{48BQjkd!B$L%>z3}8%za!RowRe~=3>uFu=3??Dq zl$9zmq<(5?b$fOgTRtZg19#6v-a2CGQbVhHuDUAhe3?w;&H+l7c+0@uekjZ>!Ip}p zAc=_Qzq#f?$XTrQ&HPZA1@>v<4!s!1p0iU)+gzTjVVwfObEGT@Mp=@yz>OPABmn<~n_}#sh^cUfvpm%Hp zkAreE-X`5l3U%Hzq)$+!WkehS^tZ50V7|i$HSYrbVvlicdeS*CC>P$b_8kOTxD^f_ zTy-s37SjsB6MMeO1NPTb!OZXP%u6?yZG-r46*3(CmYz4iP#PUv9w|nVLFUPAFFpl3 zz0yOHbjnhTx!w^v?+f5HRwr}YdZi4|NpoX=H6NB{`9E_XBELDx8uvC}7_V|U4%X)8 z9h*FjohnLPwKGEN}i)u z{@e860tJ^1=Lb>$fau>5 zik5^cyk?*lhj3xE92H(b>2Dn&Nk}D?;d<14Jw8EM648&hNgy~jw!f*?RiGQPn;1-Q z$_wf}6&BkwJY#^2rR@KEnpEjkc#*APyBl1>%qd4a9GOU9AWyNnKNZ>=mK>4)19I>d z3$8qkHHR)}%c{|aotOLLb?4>g1YydeCoRYiDJ5p-q1RnO_QLIY|K zy@hxoWIPlM5I64sQTC3_nQ-CKXl&cIZQHhO-?8mvVw)4&wrx$EiEW;FzMN0HYQOtG ztaVj)S7SV62^wLUVk*c`n+U5SPMnoOw25mk(TRHSfy#H!q--6&ctP`ACIRm#g#=)N zLG!#a#r`wvoB#Xk%j$>~vo=FEBw^4LKHfHh{WM-#h+(m9d$BK=5=Eq++>jv?Ap}qDO%Bx2>MsIaE{p`gx1YF+MINf%vg2 zBQO8o&J{sNc%E6uR1dDm1IF0D6c9tJ^;_;bA;N#%PhEX5bLZl9y!M+nuV#&m^pyq( zDlCWmz#q%a^35BBDg|jk4mfch6JL=N^>RkLvg1Y}^W{WvpOuUzsdQ>(hi-GEas7Yr z56t5vI6otc{uYsM`Ep1W!fn8TC+{(Q_;z#vblUJOJwHmfx?ICKXYpA!&r_KIfQ#+N zWwpP6AB^3uSB}pbc2@=m9?)_RR@Z;!2jB28B5|9kGC~$?IjGG@_8+%!sWN^6gxA_k z$p6j0L!IjZ81Jc*+Uvge{K>Frj&cgr+XbLSuVC|9lWbWaQ9PZl0WZL(Z5=|?Oaxe} zw;4*|lFfE$x6Os|8uKT?f-JwnH#_wRLQ#CbUH6tGAAy?EW02@{vX`Cm;>Xk<+DlD! zwM!|)LuQkPT6QAHo0s8;W4HlPh{{sPy<;uXiW8*jwI-_{u%Yp?8fi7wwdR@3zErY= z%4oqQRs#gF810~?JefAL7Q^UxC;n{0n(ZEd@a?|NuFGdQeNdTw0@E2#IBu2oc##Rq zOWyPGvx}=pTXu}9dxFGsehKbVC;xD{N~ckGY*apRMhOMeH(QdiZOIMV-}g~Nv6Iv< zN^ESd3o}pk2cfg=T7ilfd`a-|gh5paOX8z_z(Yvn5Lj4zHX9Pflvx5TW$k!Db_NdB zOk~U(zmIG_>sFhxYBiHG{Ae%%m6v?RtsR?Xa$L^)G}|f%J7C{MsTo?R#Oy{62YZtr zEneJKo3m6cgrb3iYF?xA7P7@fJvwofK&>UFl2V%k3T#j~VyvF=ro;3BFs%EavnoWT zL~`NON@2$hf z!{0D}ryee&o8sSAbzwZ5w6R-1JbYkgY;s#F`=OT{f}A>f9xsB<5NqriUX7|wdQ=8; zqSN}@D8@VnX4ONb;4sUVc0jYS63lp_5}zsUJTMo5`XHC&DPx==BYudKsEU^8wdHQj#hFm`A+3>G;3<(E%8jsyziNSt@@^(xj zbP~i}0*jG>NbS%%R5mvJ25AlqaCkq_U@{FBJl{H`Cjpw7gJ}V#9;R*3U+f;HgD3o) zOu22kBfh_cR)uxo)fv2;3ZbDvkXRB;L_kGg8p<$T#wVl&uMRRcZ{x%5J zX(TE_(rQx-^ugsn%?e3YQSK8&&w7=vC;NxM*jHDGP)u{;9u}tno;~-Fg zU(jGtiL(W*Qd&Ky&fS4+sqRrOkQDWjMF% zS`={K6x~7UeotD%QO75V2qi{elyPF8+hbbQa}cK^6F(?Cw@Ax*)f}$NR(y22|F<9M z+N#NdZw^u+gy+yyIBc`LHo2?8n?Dr_i+#7r4G^~0p-Ceat07w73YpP};+6T!u1p^B z)Wbis1@kVkBz9W*kR|;=KIu0$I?~#E<~{llbRlWbJCJW64Eie$y}6?wG=#Pyy?Gm^ zr_UG=BF^V>QYzglgTwqPa9=SrTCP#p!)C{ULrRhImy8lJO`hWX+zuobW)d znxDI>{?hn2Cji?WVrGa1RQbJ4Me3$ANDL75kP08LwS1$KWS*Y2HaVW8YT|M&#oHsI$O0tor zSe_RhKh;qS5JNV9#+#(m#{HGEwZ#-B6TQ*{9#;&5AYKby}^%}gFfxO&Cv z?GRwn=KpHM)|~w7acTdT@*DAMqpxi1-LjU^y}g;LFClWyu@rDtD?AZQ)}0NW&!l&{ z*vNbB>{Y5f8hf>!rM0#v`+}0haV1f3A+1xS1*ym01L{D<zjhR|m*c5h~g`lR*YNGmb)*{6YAK6!%nqr;zdtMB7 z2UY)uuL5p`mOfHW?KG80QOj7#Xw3Iv6M|vwYLXuQ` zind`^4!;?7Ot5T5kg+_tKqjtGjBey24D&hSar^$uOCIVy$Xy1(-HrVYMhXV<285$& zaGKu{4zz*g#mKA65?eRwtRK4iN^Dihg

    Xv5TmAIxo4pZ>&OacjPxIWu?DbU!s>v z6zRRX2NJx05bxN@q#WtEam65&2oEIT)}FHsf}((rlnu(0zPwUsN+s_cl0Ub=qWInJ zFGSml<(@cFfSxC2slRR8j3NzsuInunWXEoz`awu;*6feKO~8Lt+~kjTzBvpK(0^$5 zf5y4Mfd9M5sbT(K4X}qbz+BPkf9K-=MnN67q-y&<>aYrg<`nR|HimpWodmq24qH29 zb8-&db%_FrWDmuB8jqGF7wr~)z7iiw6WNlEc?`Qe1{_djMG+#767XCswr`Tp;xLmt z{;GoXrMssjI4MZ{VTbP=rs(zXOWs!gOo!X;CWh9h^W!bNHNn_e@T=OTd|(Rx1>8bv z^09`N_p-;_iyc1o5joHrfqy@>)%Mf&HMN!7b`&D-cTZd@EM)0^p44OOIp3v$_ap_pf<|1Oj+0 z1NqI6Rgh`?(uU)*v=mCxQTQNKv3M+BKceOSP2SBGR6yda?;LS?o@hu$(iXv6=}W7m z!bv|lB$XNwX8F-!n9sho&+{2y7zcsmdJ1EidMBx z%LGO+Kac6|1Je-M3XpHZL6G818Q~JJIhH7dPIr@`oK@24?Dodm-~@swo`Z85#+E+F zk4gFk!FajBIzU&&Zhu_Pc0t82(M4qj$>T1;-lt7VVzA?8)4lXAi8ITCl0%hizZx)u z5QvTq_Pi0SJg0^9p7i$ia$61k%9uFDo}sCJs(u+CeGx!JU3o08XY@LcN}#=ogpg4X zUBNIMhl5IO@Cv*Whe>_~{>5<1InnMn z&rbkFtKI13&&AGcLvQ0OcUVRJ7iZ@ouO zCOHiRXoAN%B?js`IaM4yC>u};G9pBJzw<}dH|TPbRRCxBPh%`r^{aj86i|Vn1OYd6 znsrj5Oo*$nQ$ncRVAm@Xc6bc=dOfwxqW@^&mmfPLl$WG?pf1lnid}jkUbsL0q@6pq zQkoI>BwXRpf}8>rDcUPMyRUH5gjc*di^c;c%n=Q1QH#(y<9eRVp%a40{cCIlE|nA`kw z!W&iu7V4ok1bp3ER>zp5f!jO;LsT`3FBJ^)41GC))U#vC$(hlQ563XRIz~~loKp0{ zj1OP_4i zz`bzS60#g_LfA-;60W~n=dJSV9LM){!j0fL6mO8xF>aL5-%b35Gmo>rO}8fH=gq_V zT>X1fb4~;+2S3izj*8Cx`s(Z~|5yruoGH|;RKI^*iU*@A39s%#lr+ba(gV3KbpG+3T*iFU=B|@rX{+6hLpu_YSN* zK;Rq5;`Y&u&n8s*u=yWhjc4)+=CODMbJiICQ84Z} zh&PVfFmDXz^3GxS2W}68!2+Dp-sRjKrEqcWZ(Lj9Y7q1>b=}-&{J^VG!}n%>TnQSA zxf(15@CDU9Sd~^OFD_5~u_<&M1HrvfE#^^z+@=$>tLa0bP`F32V}oTzOK~>yi5!Hl z3XnnegxN!A8hi$rN*>-U$V~LQs8P0FI71MxIfFe0*`zoIfe6-XBom;EQ{P0IPi5)7 zSM^M2Z~lIgD|i&uankC^+uCC;vb0A-=6G)(Hp{gNa<+5CP+#Q4AxB^uA-L#!%+q9i z(e-tR+19u588HNo2#2p9kHcP`e(R;@Vz~=D@O7BVp+XggJ@7y9h(8lU4BYiyp9r|g z6}SvE=+IZ^FToZkrX0x>Ytg&4SS@&wNl-T+^^Rj@q~Vt(;w_DLl{(Z!pKfF%#p4~4 zAf#LQps43|Iwhgoo205>i3sF;Cr))>sM^Hc*I+Ws?B+^OZ-^zfr$8^Z zr+Ca@(2j1~j-wt19$t?E9GFBAcGA2f^C^>M(#SdL!F)170X8ASR^24OD#Zk``fZTR zLCT;2<(sftarc;r30nAmO~QU>K<5AYf@v{r)|1JpPPt`kG5=aO%As2M$QEnMe=y0r zWa=&zbdDmsNxNYeIF5Ipq?Tu#GMC0`QmWo_sdKQ%ig5&HDs5ppZRC4tX?$V9d9DV2 zb;-VeeG_!JC=V!E>!X0Cn-?C{_4L(Fev7#}j4WFo?o2JY2A-Ann^**8=YIP1Qq*DP z{TU+ZF2xX&_Mz~!zLviU7YI#Q7dOV%JccfL{R0?MPZg%+;a=TTN{}P~lp%DksTs7< zlHLBUp05NJQmQ__evXswiI-~axuU_MM{YArEL2s}+0_ZRU9k(=IPs2LdVXQS(Y!BR ztcDXMJQ&N5$Pe`}Y$Uri=Q%7(1f+?BCAlwv^X(%O&G+O|7*cT^%%{Th$0Nx9|t?M9GoJ(yiuIT}8Yp(Lv$VMH++O*DgrYDi?6 zaEuWX9g3&P)GGb0Z|NQ1!ZeU_RobYm1#=A`s*{c+1bCB5P&Xw-EF~AZd3teY$!&dZ zOl*vtO`JB?Y@}^7O}F%ZedQ|T!oPWcPjvSC$JdD3x_nnXd4)!SUz{$X5x~tU3g*Tg zHyI)_)-0sMzB2J#R|`9qp+ZEKt#5Cj#E7~5CKU&r!R;e!` zjDGcIlk~ku%0G@%N;S~N)T#bV`NPzg4#0X_2eTMUzQy=9GZ}4|CYUe5A zkeO$c*$Mt0e{X!m2)i=|q;8`|5%AlmT`?YM4VzNNB|9mvpRAFZYAy8p@b3FCVa!KQ zQ#qi8f_t8Nx`XJXwlFSO{mEO?C%q$8R@YW&nXN&lPEXe8AFm00Dyh$sDs!#dj4Vp} zgKx^V+g$9fkliV-Imb6vT>}<9C08?sBBQN{N|wNS#~o5J{hemW2h8FT_fY+5pXHkL&W82c?AQSmusjv_K0Y~n%pfr7ksU{(PnESaqhyS& zb4K{tgUqt^LS8Gny9=l8RHp>~qW)Wh{Lf@-P-@7FmiInUTb)xRBL@lg#c

  1. }way zM(Dw{LZ_umDtJ;skW~+iHare!c(BHLu8gCaS&S?Q3fP&lN`J;$3>0!O00Y9dBisk458BXt30vo_UB?!H<&%K&1y^OPibJN6_ngP z12A86x45V1d;wo*0bWoANr8N#9Ewj6WD#jGnAhqyd>^giB%;ggx>jPu*HS1}DmgH)~a}XAku}W-!yl#cK{fK@x zxI*RE5cHQUh;27rgG)OyQ#Ir(9+5ZV-XBCQ4Fs4IRng6xzgkiX!V{&DO zf=?0K0il94LNLt^&Kp{z1|C>c&yfp2L$WdntX-bH=I!+fv^e{)R;^NFvmpcDzGIUk zZF8ms<}p&>O_KrlY#hoE^@%FfJMBQG(xa~K5 zd364s>~%}mM;S&Kf1pI*G3`(#kie$AHma8+S<9ZQ39Y_T)~fZF&mT0#@kC#(&lEwI z0Tm0zNvWKFEbM_z!&3QM$eKet9GF{64Gys=1hrn933m^UP67mvGR|p-Lla}gY+J3X z=)@<%P%Ihk={#aTxKf?w2wlHo$KKDjS7o)S)+29Dk+jcr-T_^vzkaG*aqCe(Kk7DP zdW)~ET+ovT%Pu;H=pA=wam?K@RHsC?FOWgsL+D0My&yc z;ztXhc#fE}cb|+CH9KyL%{O^0)vaw0+aDh;rZFYEAcd!hqJjOMbTdHe@-9;Y){w{a zvxJ|`z|(~3vRRgOE0A&4I5@&ty-B`%a~0#mL;u4AT9!_IAIrnRrQIt^fR)>6@QT^X z_T)P&h$C){Cd-!TZ`Wgq;+?!@eFBVN(-o(UVz3Do;yCI2nL5lrQi z`jUNdep>utTWDp;Zp%RMgE#^xdz+5RNa^!e)G7&U+K|&(lxP|WPJ83qvq}nGw&g}g zBIFLO?sgX?^p0ce8#^WD5QR!d#DlNzdrOV!?+s5IeS*BWYDP@d3qs1n!$FDB&lARR#k-1!v{e0owLq2E`{hxYv(lM$6)EojX>41iCC3@27X6eekDc z1qw8dU+$BCtr7HJ#HC+m2xYr3q)ukCiaO*holyqF{FOmAzaL<%eB^<1OZ^Xm0^%;f zn7cS-ZWfN3o^tNFbL0^Ef_-6%ytEQ&yzEydZ9V+psbXH&yPmew$@jhk;sZZ^G44gV zdoF8rCj#S~07U z>$E>vi}xj(XY8$GndJ4ja=xLp!o)q1Y*sHJdrbv@{s?QE`OCyjkrs@ z>le~_*>Mxg3JPSLm`>Z^QAKswt)~K(aVk)q2vn_MBt9DHJj1+?!4oT@$cW8cZHnT- zT#R@3)4KQP4V#=9eM3owOk6%kj&5Ol(h+8H2hH~9-15S=4o_ApS}+X0zCJc8zNs?s zi||J8OP7X*(U|yDO+!DosUc(|)BvXs4;V#ylWg}ZgnT^u(%8A`UF?ahrr}}GxddeK zbObm+r|#kRxv$flu)(KlY`Z;I?yqpOk3h#rdW?_JM#uy3EhAaHLZXhP5$95WHY7)d z&TE-Flx^nns*tRH9R+6G#Nn)L(9|_zmhGZgHx#`+CuFwtxNo5$aQPx1wf*JtW4>lO z6F)f2eRg=OjM0(dPWMPz+m&iDb1)*#jV1S9Ds`S%&F&hI@H6ngpZ-I}Xrtsj{(oX3 zWvmIPoo@lx9N+5Uo30zHlBHR->K}248^b7TE@=)Wv^$+f8LRAqArSg%zDwd>Se6C} zqkn-B%3o~)4AnS{mG0|=D^{KnG@m|$#z+NSzs&`Bt+DJ@+K~IXw$#CJZ}e+UG(RYZ zO}bHv&S~NE(pHmv0Z;Ya8JTnhqI|rH!<#2x)k7Et(yIA4ftS^!nLK=#wAs_$jQB3KJMH$tq@2fEC7$xcqIOVa&5nDo13C0J zl6ot`w`Gd0yow`_J-7#DXoL+U{JZc#Re9RpJ1CkkxEwP_y%?7ajp?$z4GD}TjkY27 zng(g>w-Eao_Tp2!c-eh{VB?v|)-a0028{mNx0Z+pjPohQRL%Nw;15rEchTC%_Ts;b zdZ_*^PM6`k=SG#A+mv357`H7{(#wF)xArEyCPqoZy&)14T&bfds z@C6`X#HcXEuqD`(c?jbTsaU_KjA=j*QPMw>8h3zGB+8aud}0Y>SK-l z`Rdj%Y)6`Yo2yd0g{$=nUnH_4@x;!RWYSgf$7Z(EKUu3chbU=G0GP5X(#CXzth;oT zamT3;`zoQE$py>MA3i2QO%HBvx*&~-ff=%axhSkCnt54WzYrAx~oM8;~rjd5hE({EnHY~xTqBqIxCf#v_y4w{t9X2>8K*NBGA+gUT zZC7M355T5yyou2%$M%AF2cvu2!~u#XZ$)PeTHGBI}<82(Y#rK}3jEusGni_YD+CxtJ=(Nm!PTnv=5*dVmVo zcyJD+$@2I73s~8{UU?0F`kiqP?KkoM2v5rEIIR$a$|LG4{N&1)O{{EjCXYQ{=TkxO ztB{oF3*-3E@IOi=eOaO6dMhN>4|PF?GJolvvmSso)9J_i{kqt>c+2JXcwzr(C9D`Q z7G8hNa_^dd;?+|PSqrFfbqnc=Y<@K^_VizV`@+8B$QQ1%hkCLs3q|~Ejo&?hLH>!* z`$xH}FWujFdGt!`f>#cb<59{Wp3HPKUIFbQ?t|dv5~zD+``{C+Ck$?&ZUhwvlD&7d znE1ZG1^4%ppjc6L&+ZSkfX7_|_5W}CZH|DuT&Cs{)N66M*H>J$ z{;^FOoIu|Z1rABG%C3>Kk*4|g{QaMEiOsd|Nhhv*g2|G`_Y+tjvN3h(+cRN7RTG{1 zEhn47*~5Y|oHxKAqB3T#l9mEaIdP2MNaQn)xtJH^>TGH-^g_L?X~!SJ_8 z%o2KG4xgBj4dV?oTWu^OU%s#3$R^MsA{>@jgXns8E*>fY8lkI;$=={mOO;pg<}}| zs)~tu*gw9t@cedotsAiVY<owY0D#u+Ao97~2`A5(^QPjz9L2N(6( z?lBAZ;JILR?TU299umRs;wVCgy`~TAV=FLgbdgK90}pO>qJ-t-VS;-~V0r@=ur~Np zG5;4TBL7Bk;Nc{GlNX<@m9$#@uG^)bUP4SdIHtC{_n{4MoJJh#A@>5WiNa27 z;iFy-z;6KiS`k#RmAVjqu(>r}CyX`xd1(A)Dw1S)bBo}@A?cKUPN5@K^v+jB%H(Pm zh(I^Wg}Z0i6Lq6QAJXa*qlS|6+9qeqb}=O;ZYW`6?S!@F|F1~W#??e1x9C3Dy-7cU zAVW2$yZrFl<_IRP)XdXSK~d z9|;`>;Z?UxH{jS;nfAJCUhZN&Y-TmA^Vk3l1Zwp3SWgTqlr7m}k{zP6ba+g!r0_-9 zMU+fDw;(T2!3ECFq&+t0-;lfOR1#dD>Lco1s&*mS8&#J&3B;put@XH2j&&?95}=Pi zJ`Bu^&j8i{QP2R+3UQi>lJeBg`Pw;g5(N(bsLN`5JOUY_g2E$c0kX|ax??NAfddqfRt+|@$U_+)aa5M_GAY=s7K3RcSmtYSMIOE3Z z`-K;SEiCo+GGS0zgrtx5(_w7M>Gk+6qlcZH#5+1AH%6#~k;AFtv&RZqm{K#N>#bik`g9 zC%OSXD7RczkM74@^ibU{o25beiHfUDIVv~nA2NFx9#a?-6+rRvdv9?nR2_Q2Gsa#P z)0@v*+Dz*uDen*494{^WAN$%}=Ek-@?f_>^F%a?Bhc1Vkw$f;W8#2o6=sN}Uj%;=u z@%9L}BknS+20~75F0T8-Q6)JZxV*kJZi0xl!?y$B=|o@}>_hE3_`WX<=&!lwz}r61 z)%)5A=dE@9t*ft_`pXrlI2n;p2X>h+!dv}`bMxPrJIPa5=sB)D&ClB;vnrQJ4)rkh zBB=$x?$w}XVV=?gX#5|K7LDO!CF(>T0zm~5yaINmd)&?q`d=uSeX(N0>jJQU%|@(+ zT-?1qJsG(k-u~Fh?`Iks948OaURwS^c>lpN=ylFhDaG}@MErxg;O1OwV&(hgKaZ%_ zwRDyu&w1j3tXRP^FyxFKV{LyZkqy#~<`iGiODX?4YLpaJ0!1IK!qG~u$pnOxmTa@12mWn(QU=EUi{ExFop4_ zCqbz_a;qXxj<|!6;VO2-C@+iSWEfo3?)JtPj#2dkyhDY`H#kyunQGnGMnyQ)o0mDI zLforAAT{j+6!Y}6gr#U^Ps!V+J58DFgmRbxP zfTk5h>vK0cgAYvBl=36kPvTl;%nI)O&l`S>T_Z`_LbufqJdW+o(%|jy${q^-Qti-Mr;o5F7O zeZqeCl5G9Fq$;M2KCOB^5D0>PfkQP4jcPI;_p$FLA;n}g9>#GehF<^PKiB7mIF-z` z1r2>hd=~nLd?|c6XLclbDiZ71q=C)WA;9|clN;M0g_{)*mUZT_ES-!^6Q?eTRi4h! zY1}mOYEml|_saFxsGm2xCwBp-9*yxSzwAnEyyK-IAE5E|xGp9*icdk^c@xWNK)+I_ z9B-6G!7-J=u0Wl?YrlfHc$|)Va8cYGw2cw-JbN5q@g%s`q*wANT%xCuqru!04aqEj zB1JFm^g@#_IG?3XmRcyMCK01;?`a`l9j0xf2&y6$P?e=ZAw2_!`kI`RQCP}+%p?tS z!=vGy*lz*iD7}5bj||9k?&o>?`aFERKmRqc@%E^H18vrCueqIEy{A5r&{PGwqgI)2l{f+5a3LTq%G&rrSCuJG?mKs5sd!5f+xRGG52NQG6eoGPhl&t}LE-EqkS{x5^ zCU>C-w2m_CUbV&K^HM5!e! zo2{S#gWLNeBTfdz%U*K6t4l?71I)z=wmC#L0tvj6`x{aTwp5QtDZN?A^fJV19y%Gh z@m8kV3Cl}W0m-lGTrvVQ~-93k!>~PToj@U_mhurU% zx+PeR`^$)+YqbUJEy(G2FCnRP7k_JkdMD^FM}k<9cCHeo)2c^5 zqCA5;Na-WX$CClqQezo(KJs9j190w=47m@w@) z{DZFwz#lMs8-Tq#K#0(zl;h?_qaf2oOghkmPl-T^b?bF)Rc}6&psPh7G%ppW9a=+ODmD$xVbvlJn$LFEv+x8PQ>br?t>A~@>tEP!Z@#cNIIKbm9tBbd|>n9g5gK*7!am1mC*>>5A5SMZ|@!-^C<}x=Vte^=7DNeal&22 zRR|e4xaN0`Kz}TVElaviL`nbkibtwkE2EvOwnx7z;N+B4306=Fi4nD;%^Y@#F$nc; zi|uM7Ax#8i*Mgi3q`-*wx}dd|B!eQGtKUs$RryO*Kvweo#ww>UaKy%HJp>aaO6^x6fqR;RlB-%q zoA?JwF7>018S+yKQZS3rWG^xBR*`PFhxJ!W^ms$y*-sH$d zgM{M<4+Vq&4T!2pMA0XS8xPg3+s|a?Jq1Y9<>gCL7}bz@_}LzS=CLW~ zVT`YkFYw{)p#TCBiaLBMVgKzw!%(F>&x$w zflr20cO~i+A6g}Nu}fx0U5Epkp?c-$V_*+Xz}L$4TM)w1{xyBN2>0GHG)yw3v8`@+ z#S_MvU0!0_S{+J2*Sw9!RB*aTS78lJ^D-MPUzV~E+Mc@in9qU=d&5DKbHgy8FdSzH zfMY|U&epFQ&&_}{;h*!*3-(T&92hRJ{8489aPUaQ8pN<+siWGD|bl?CjkbNeSDI=NGmCVA0L86tDH{3 zg(?MX)?w8dhewwWTeq)_y2>vKWq7*ou^5qc9Hg9(o{mz#`BRC@`Fq1-jn@PdwS@=M zG>pYYvxCtS*TRyEI^$G7C(R~RReKDSZ+QtjB867%uk6~42wFN>1U?8d??LH}_ZULJ z;Uu4HJ;m7M??bet-vSKqQ@4gEBxqIN4yK&vFyF9HF{c8$sQQc(e$jdj3H9P_??0dp zEamuGtzESKBHYT1-QHr%FMDOrq__Wj?qb#^2e+vKh=iHZdfy3!s4NiR37xhgd2~KF zMyaGs!jz>V3}I89iC;WBDILri8_db7PhuQy2 z*=;}~Mt*QJZJ)y#>!O*#LGWbQMb+!5n|*fe5!h%FBVqG>xzo#c%Rz%w7aaN%=WOCp znY!O=39@Q^Isu>AZEL&x&2@tIZ-R8z*FCO+BX`Gv{Ni9zL@(TUG!dR>JR+8eT>N zydCF;vVO1kT}JGiW22i4H*|%OhNrCb;~r*W=2Sz=x4NhYGnftg0AF0C1A?088)=%M zncxV7+zL;8AO9K}T3-w-if6crmV;uBlTyNQF;*t8Ba^!|aPwGBGQTW#VTe=P=2YxkQr%xI;y^>~`)ncIMQv>ftJUCk{Te~?7cYI@P-pv)3x_3Y4Qg9~e6XGw| z{)p~Ht9E;w{!G3H&e>SRcA%3AQh(G*JN9iMY_B-h%x<{GO=4|uSF$!D9ZeQ=a4Qcu zh!xSIPUPQS-{>_v%eXyPfX8`i9e-sN7_e06PCXMS229v3?N*sq52H7)MkmM1F9KTPpIqYXF$ARw;)Gea~su`^e2bg}>60mqECk0Wje@_$p)NxZKb&pM59 zqFb+FJn_jeaaTkfwH`u1L0z)acF%=$9j(3{zAxY5M*@$LhoVZ&B8~S+4+qmu1~>?3 z?qzK9YBbQh0A(B+3fICi7DQ>K$}&~}lA=XW|9;xXva1_TC<;KTd z)Rio01?f`W`YG5`l~t#^EF5MqEUeHIlX6X$pDx;;wTo&@-(55^>T-_ibO8D@2O-Fi z9^g0%E`7K+oD>hoGXtwhSkb7(GBss$vq7@!)J)*f3+j^H=xCEfRb=eK+f-SUaEsAt z#E7Bk1_HEWSEwveCtL*Y9>QfZMKU&CZ-6sPR>0+ZEy_axx86?W}CvQlTpT)suvPXz65BAwPekt3(OP{ugv*EFqq+{kgsd zj2#&AZbZNw2J?#GOW7;ZPjwNEfY!?O>D~68oli4NTSJ6)5T$UYUly*QD-G<&kbkTx zd6Y(0#4xIAwHo);*Lk+zc<+6Moocgc(-YajOk;%gWj<3%6x40JKD2G^>4b~usfaPO5B<}b4@Eq+AoCL zr5jC$Lra%!RC{N}Y!WX+qtqGf>&p6vuMwi6d9pkbJ1`6LMRJPvUDaA6&57S@Wa1Fp zuAvtc!z`g4y`4>z7!6zO@;6n%jvh9-%2Suz9u6vS-+7=bS?sfDG=j+D2Q~quXG&t$ z0rfuW@xL+3CWH=-Jfi5N=n`aN>X086)s8O|*l!)r-D{>~z}4#cCmUmoH8o4SI*z8D z-W5K3-atWDRHy^$vv?J7BCdWhfUCu&JZ@XVgy!0eTiUi>TH7q`=t0T~U2sihQ;R+3m)3cJPVV&F;XVgtNtbAkA7d@arW^_ z@mYrqE3xIA^bs^aqiWe_H${*SNPgl(KMLv_=vhbX3K+_;IEN$$gJ@F!Z`D>IovagV zuuAEFt)&L@&*73No5SWYiDNaT+PFEq>y+GXDKrG-G>5n=S(qLbXi++N3+EA6VLoQG zdD1%lkPm0q-Ac5Zn&J71M#;aaS65%_pXj&+s93jKTzIY8Y2lJ^OIw__*J~B`A?lgC zv5#dO;?vrVCC$|(o*d*g>GH%h>3StJ=~mAg|2DV>mm^)1TGiS@ZmE{^&v2Z2onZn_ z8gaosx-`VU_Jb4y7kZl%r|5*x{)v67%J0S=;E(TqlyI_2+e3WH%E!=^My;x4Nh(LG z9mD)iGTViIn_;>_V2lF;92guEG;>Y1bRD#LkbTl7iU`a41vs6N`XAd%B{Df;#z)BJ*O3-W0!BS2KJB ze1935?{~vlMgxfP62p!D7Y5i+On2KjAF|!_#{bz_2pl@>x4ux)#6f!@7M|E@^%WO6 zF;D~G3TcFGrk}Ow3Awwxg>@RaE07+fht+Qcpq09)Q9*LV9g4p?{noTD^Z>EwHip?p5x{UB zPaMC}GEpH$B~#noYQgSXOg*c;lW|d8=MHId4Vc*@ghoRzON8Lc2_f(hR`Q+cEs@Rd zRXi;)BZcJKF6{eWJHT2a;OJjs6Mll4z0l{bKa`GHH!+PW1YX2TeX{V`6g*VO;a?rZ z$Nj!OVuin?zRFSI1^t&7Juv|ZwEek2%k^6DcVMk^>mqfq?2SdaH30vh0Qo!wV-*fq zMGKZ-@zU4;>t)bs=*EuQ){u+uQ{uskTCM^^HkYDPm{;qbvcWIJp7%$r?^LD8EgAPn zRIeca#o*JNTybO6m)~zCuAR`|75R}8qODZSoPVR`+~J^p6}?SneBYS`TUKo2J!2mj zVX~mb!0XoQkt}}MI+YP&I!lMq_i`T& z#~y+&Z!h5;^W|zj{F6*tZ}v>g71!3uRz+Q1KDE1(-IJ`}8DO)qUsoZA77pIub9WnC zZEJrm+lnu$?zR?=Pu;(e(y~N5_&!n>93=ntR(SA3>Wc*giW`3lvT;6NlA8x1h zb@uHHv!%}H&I9vmjyt@48#1C02LS`q=KXkPy|LK-OKS=fPc-H{JC~b0%Ash~SdBBL z+QnWEpB^2vdNRMwpjF80EmqrU)nKY&NCC8-3ZyuD&mhG*ENhmN&y%@H{>tiYSuRxZ zRR{r1TJGV`WdY-@Uw#`yqo59ASV%i3JkQAC79KzSM!sWU_$TyHHgR!|IIg*t?5bGP z=Wea9h5Gicds=Y&R^L}d<(f<@{r}_a9fCv&+bqnoZQHhO+qP}nw(Y80wr$(CbxXH6 z^>@eYI%2vf7nvEk`8FAm=R5Do^JI2;TC=j#pEQ#d+sjSsuKzSGZ&NaE4qxw-ly>td zwd&oI`yGu*+=2G*uLKad6LUV+sRAL@G!+D8Aon55Rf-cL^*hg*Y{b@9L~403wIN@c&B26| z5JGaI2m%$Dk~{qIa|2W$A(e95%Is~%94iXgv8P|hJ{SP7Ll+v7DZ#mCHlGa084#KF zTm=WK%%Go+TC&IZ`DDiEomMvEuoH=@44*XsV6MEk9?b+wo8_zpZ{1)zE5E^geDjhlZ^iO7+~gl1~Pm&FllnG1S>v) zX+SA#kla~l#wnz@G43yh4v0E(eX=$7zX_Ww6n4p5q*edmn|b5ADxQaw!jT6fddq>yqFw)MJ*BkcDDvzp>QQVlH7(7;;>U zv=Y<_$un>8fRIE%TA}cv?2J;32@HIGkjhP21HaEKAqxx>y69Q8=F)`5p=4Iod1eXZK3O3W$KI7e4% zg!lG?(VDMbQ|u`h`mNPoV{Y?Tc}N>#O=f=5*4SajKKTtD;^#E}FyS^=0NoVt*$8Cxd|X_`jD8rWv_ zEDJCnX9FH3N&<)Hnk>+#u=1&c~d14H(^^bDFsw+@o@84(IT3B zJ%&%I1G%#F{rRQ5_fb0r*~U{^>+PGe@OToPRdIW2(1`Q~p(Cnn@C$}Ie$^e&F`lz z1Zci-)>sSE#^>TNYSH20-!rZ~ZtR@iFm zMNKb)UpvARRPPJ@C8>xLYjW%O@)ZLAQF;xWvA`C(-E_uG8!{BKg1fr5u!|h-S<5HzCxK_hawqkMnu{cfI6-BS&vXzIG=+mRx&w$xAxT z4xLs;do!v!K$V@dEu>u0Wt?%@$bgrq+mQq&J2q)aY25?j!`Y6wSHYkT^`>-$U1mK& zp--&4=PbvHW=9Re`J)g?^V(C>9`mt7wH6n@=D8%?h|kZ)mff+m6(F3c?V$SjoCoX9 znQdt&!5Q+W(#t`C{hHqO2j)OFIoqYO{UZB>4!0q>Yr&zldP8CTFUv1|qf2+Q{-6WE zm7Hzb;rE@1&8P{#tUWz0D(hR&%YG8i#?&aAOTX|y>izLyEZdCOQt{PM|Lf74t9s$M z{~-pi+XJ)X+@|v$H&YYF-}A=Nk+&OG&d$CBkA9XMy>c$-?dhvbdI1;Oji-z= zb0>Ik9BjHu*<@E%`q^)*Z0!rC785*=N7LrJ+-yRg(eF;|8XN;j&q%AC`G)tkg4H{) zFXvrOQhxY7xWaYBF17<4ooAcU)B?V_Oxsd((Wbcb5>ey0RA4NQ8UEpd>?g_FVC9qS z9flhNZ+RcNM0C)?hT+vpFzYPsqnXjoAQ3&afaj%|p(LOk?K76zE_~+t$+^Z>&x*KM zK{C(=pubq{c^o2#t-6vnF}FLWUA;5R=;Dome(vnkL(6+42NkbVnzTR?Xp+h|0F)H8 zG{qMDaOPevVHfTLs>tXL?x2m$>Nogm)XaIx4_NpSd|wpC67XgoOMHGBDZ|V@HXQS^ zQy)}_*Z^^s9)TUBpd3%P6>h(9y?%lWEPWI;{?4Iu$lYR0c_t+e49N@= zdMJGu1412#c^^<1JHm9KEh60QRxiY?Z=0dHwo+wEFL)S=!r?24p2 zk}0FyL1e0t1W|RuQ7X-7jWc_fm)^iKpO-h#ajJbuCAOTFt1eGMs96; zVvMJ;GVc4*8nxj~V@Y4ngT@t{c!6aGI!bA{e@@lwnPE3=tQs?vNK+FCixw9f>fSP=Kk4-4jXW}?i$>mPwh^b zv$&nt-Mj(y8hNaZP1`)wveq9}Oh|tk8`^z%$kr=vR2zg-%u+5*0VCNdrsI&lJ}N}l zw#6h{bh1|FaOHcSQ|9h&!&pbLG?8nAbp0T*jL}(D+k$bSkjGwkAy0VH1yj?O$9`)+ zDuOMD%6`#q>2ifhizPtGtbr$7sd^_JaP|~CVL7+oX$5M#Y`wL!^K~{L&Y*+NLU9Pt zcONFd1(_i(Nlh~@IjJcgJ|bZ5%=X)9$MbCc?K1kPXkJV!UX{-Fq*C{`*>i^f zyS=)hwVM^2Vw_u&Ly?B5t5YB~{Py$m&cCgDn$(36q?z*wvLa=lB`A}`yi<9N*uTFzs|9W3(`txTB6Yju` zR!9RX9heWejOad{0hyZaqrV^ZkL%O$1;32{7b?*$C|xuM+d2f3;%{_PhA4%t8(@qdD)^$@FyC^2Ee^n|?kD^?L1!X<1tE?nS7 zl;}9I&M&rZmcHEi`7*OLb?)g)TTTB?VxPUw0K^yIZjd301lqH7_NL`(lD)57zQ=f9 zT&y6HudX2BX3Nf!uQbEl-8nmY@ATy8%zR;a`)>1R%U3_8_~p#olAHc!}ZkHSpnlPBvtNHx9 z(^s2}2cF78LK4)exAD~1`dBGHtX8v;vksy=Pc8#pDz1tD`Tw)x%u7RJ3y2~Srr78!R?M`_af6K1Bg5p* zBGu9s%8s?eF>M;fv1ozHHSE_WWLkvc&1Xo6Z;s60U-k+bJF%0{*CzWzW;H+kB7*|R z{{$2;jOdS~yfb5v*zM-sL!Wi{GY;fLm=^HyL(5Hvx!I~{gaBM@KoZ3`xv&`w4E=mR zzWvbJN|2d*5nWHA@u{M{IIW_q|AH>Mzr7O_f*8%`?d9O`X+o60o@8JVQ!P!rY80$Q< z04lzQNyUp?#S6+QLCgY+HApPff3DzySFcbRfiLeWaEd*_eO2-p*o0xI5xx`+)l30GQWm%3|FXWLzqO zCe&o|-!jltjH9%dNhJ|vo1}+Xm8_Z)x%9JSLGx0!gKSGw^crb#9i)3~m(~U!X(BCL zJ==4D>jdcKdd;mtSlp>bI!;mC?k$el{cV&d-V_80EfFDRm}HDdZJ!a;k_o*u+;a?% z*{ToD{*s%!%CMo5;|Y=Am4CL|B9WkvSD%#E+li2gOPVC(ZIn-RJ0Jwq>+TzwrG zDzMiXIXEE*DH4A08od`xAa=Nxrh`Nrdt2O|&5U!y%yUA-7DP~m95%^467r_#H&gP1 zDL7wr`<$7^FIx0mZuOBGu&5T#kkXdt`zpXPQ=LxpQ4?#C%NjpK6B%u>`dY%JujY zB6S8<7m@vOIqmp9CHQ@N7v}f>5=p^Zkf}cTB%D)7aQqzl^Du`q$A|Sr@@{q?A4rqbsN4@otr1bsE3vQljJ3Crh z_bN#hAN$K!L_JvEs-lGzJ9@4`hbqL7(VCW}PU?ZLq3=@scNJDA?RqOqqy@-{s{v7m z@>ZV5Xt4aXlIwMWFU(a-%Nj?UAOxKx|86Ix)l{m8e8y{5Ka$df_Q-tsiV-lkR8-KW z7_ENrcZ>u=)FPC%p$%PKW5m4rUiOE=m)+QxAa5D2j$>NWT%FxrS^Ii(a~A2t=#$)bnLqiazT!sF@}gVKpL;J(UtbkF@?_C8-O(mF%!Lw zORrKRPkge*%9GWg)eFBl(e_W3`3xA{tMfq(r|a-w`Vihl@8R4pkJ)7@Lu1ocGlQm^ zAAgbf0?fy`Oi2piJIgjgQ|f6LlBam;IH-L#vPGflRQ$$s;q)0&ad1%2Qc)X+QpciC zV6py|mw19&sbP7;9nZ#$QX{IhMbU~&CKSmHz3@ ze2B(yMC@UL>xfQ0^56~+t5^T^MRV`I)T{0p*7Pnf4aqmv&ybBjH@@GIGx?VJ>m@n} zJ2Xww}Z-od^VvfArR8uZqv3oqmI9 zfPMrnd0kx9*;(~|Mb)`PxP*u#U|-{yI3&pCF&~d89NI?AOWi zDrpM{dm*xZ!-gl4+xlx!U;**3c8Dd5vEYpHkufHX!aApuf1QR z`kwvv1Le$LQa68YoHM_H!0fnHcDD_F%Y-L=FZwmJA+MmIKqPP4nH-mQW3I1y#b1KL=!A_F+LvliV z-_8h0{-fO+GQ<-Y-lPtx8)^dX~%&bkY= zRtXtTE;N0Mv~z$=PrF0*Vm=Y%f2w(OwC&_w*PUwCS(pL%0Y_7w$_0&LIg=C!M3BUt z2F4Cs-by~}{=9?L|6-a5A`>|(*-|7|d6V{+7~c=6ppYZHrmt3U|E7>Fn`EYuwtdon zErBDX&Sf3nXd4~Wp32IK4u84}#f=BH)&d){V2`;+7G-B*{=}-DBmv%eeO_fcGv;yV z*Us|g>2j9ukqt#ZjBgs+XK(gHJwRy>i(~yYAVgWa@luK(Yl(x%Sk^Z0Ki3fJo$Ycz z_8v}R0m>e8212=QgpiNLXaO__)eWh?Vf0)>WcCOMCrorB9vxOgj>`fF+9OUZi9i~+ zYJH9{eryI7|7EecL$j+tOg^a`f|p};>5J0D4fsDVWB^@^`wM(cI}MRaAJCvOlAKlf z_N5}TN0o_x#tqscSVs$h8IIGw5enpYO6*Y{lz?UcUQ_6TZG!FsD&6A`N01f+O7O`0 zLUsUXNpwzIn-}-(EkKAzVs0qnPf3WRQC2LNMuAtqiet1;Uw!R|H~leJorB$j@rPfs>Ga({PEfG~4@-RW65^wQvR4uR6dN_RLmd<0LmDEa$eeNp{!B7u(1LeLLq=`9T#*BO>>C22S zkeXmSpRTO6xRHf=%H42?U=qI{ZpEn(m)oSe+UXijE4!WM)d1P1h>(p#spXCJibPlk zC)BmEm8cv29UK!igXn!8Z7^G9|51VJ0N3`gx?=&XHD6+_S|w4GhY$oQvzM3zT!RvGTDVQ zl|#lzG{Eo(1NEfoBWKhht)!hMhKrSoyoA)dQwjGUOAWjVKV5y8>N}SDfs|D{>6I>U zryPqHle>GQYC@NLd)&C0k7}PVhMg9;C~Qq)YZrS0v(AVXsaV!hGMqaWR$VMyDJ@`k zj?>;$;LFdd-c^;Vf~T% zK}d6vEExMPxL9K}QZxc?#9M8k1ITgWSs(z_q8^A(w_%|U0y0sjEr9WM#q7`c`BOOx zqaHI@wAab^9jfIkOHBSLJI(RcVae0HHo{kkuF`Lo=K3Srhr{6#C=0ux(|$-rK*6z4 zKt^dlQ$>qZENH$RdX9FyAWDZG@UP;dBCL3LI1fLEG>Zo$#@@`Vu1vK*GSwqfty&Xy zi6k`57{IEoVCS~6iz%mu0xL!Zl?0-MuB!4nD%Jfab6Heb_mU5ANa`@UxViw_{6VD)28l+8 zN~HKAI{`@O6wLDa+s;IgI$sw_98_D70jZ(@7z?8ZX{%}>Qhy4BqMg(`WG z<4|XnPYAWkqY!_0XaU9tJwkLtADCS0J)@-l$*!98R0Z!mD!9)G+#ha`70Ba6$A)5u?kjv`3ju)n1FaNMk|J6G1ij?Q458*%Hs6{a z9}xL3bfhBW`zOW#uq-Zz)5-}kgIA8EN%a%(L#Rq7?(M)L|4Cw(GQ?6`a52&V*=dGg zg}g0tXZLXvHq+==tWv@Tc}LjnD{MR8$-snC+Ot19MN=lC^~G}Rq3#%Pmq8^l%^G|x zX{pS&khm)r0{LgE+VDBv`C$LNmoUYQ4Q{9nparkb~YUw@6ZFR|3f)}{8jwt zXry1kcHpgVWZT(#F1E+ws-x08O^;XN5zD&c#mWh2K+Zu)2IMR1E8VJb3tE9Qdxo_| zm$JK=K&_}%SXL$hln2)ORMKr{Jc1%2pj=P?HqE9#xtE^3MkD0nYG;a?)K{euOhvcR z1;vGzD?u5~Awd8xw0UU}F#?Dmpq~yG^yxU=%JD%n*-yvYl0w~m+0mx@s)EO%)PqRW z5;}jcCMe`67KVhUia7zxa_V-+N@cDt%F^_sB;>`1*+QOjt?L}kqSQhoJ6^C0K<-@*Hi#1p z<`hF9qX{f@qAs17{)=g7ZDQ@JN%<^)=+7^Z?O&z@wkhTxIdb*N$<(w0`Mx>?r1yeR zdT=By9GplyMlGNg*vLbE#=RfnQ)YlR*Wi6xfR0vS*5;)6YLneb&eOPq3|cb+ z1s3D5!ZMeofl6e`pr|*7?odakb>7B!mpS=d?!+^b!pmB&7W z7WJI`k?l9GgBw^`}GCnWGtszq^KWRM*{H7x3JZ=b?;@LQ_Si`s*Do!&Fl-)5#}^hdBq8T3J< z41*tD@+mySAl$?Z07G?O>;oUy=!odP4@nEi1p4i@-X-7qqN8$x#S0$5H9m1WVLw{$ z^#3t#0|TerC!qlV{aiK*;Lrx)XdEJe@D}}(b06ql0@=5Q(xXh z)Veny@n(Ag#BG8g&c?*#1j#cNN5&OZ7Kr^Y=)xxS`Fx$3uIlYVBq({{C~?pz>WrJN zd#tK1d41h5pz>u)OEb9l9_54T?Fpo3YD-*ExAv5^1v zhq0t}H2O!zhOQ>;Vw2npt*HKPmRGqyhIn9BXHLxO>)*Y+AsCH=CIhNKw)uwyub;=2 zUrO4D<7d~u`6M##^fCvZfm-Zq)1!icPUHPK5U66pyV;GPk7-9>wj{s(i31)4;v6Hw zV9KWjiIole+nmg8!&`=ZBtOoehXC1NgVpW5wv|QLwe0JmoR9iVzhWg%sjJqm%gTew0Po5(Ot@q|Q3I#WY`AM>ifG@aqg4XTg;sZ`( z_2Ae!3#81bc)p};zsWdU{s;B4Wx!SFHM#G}0N^j}~Mz{!IabGdT@K|F@t zuHw$p72v-OUTquH2NTweM!+PJ(!&yMh^Upj^7MfT&;`Y!(p`D*$iRPaDiQ;dCxTfz zqC|3nPYE;CrYmh-_hyQ$dwAqB>(c4rbYuspLJ8 zYX!F{tB~;~Pghzo4UN~aDEzFxW!EX(cACj*dq`iGO{Ed{c3v5y8v%~!@hZY10 z%M*o#ay`T4g(fe`?ALL%1CS0+9xreun-X2ujWW393|6=?7!l(*??95OBv~kqTc%tF zTjW5HR(P-EmWoBb&O!M^sqUn0KVo(qngKZG%Lp>mfiR^VGd@UMAeB1o5YnW>=RyQb z02vAe-ol}SeUx+l*Cx+!vc?FW#aX*Tot2?F@Y&UriA{<8A}o3u^Y+KIos1hp!W2A{ z6ZI4vWFGk^I~Xs3NGj(!QVY!ONs{-I!ATGT)CVna1K`I@!TQfE{Nbw z8b5{j5EBDbzor`5BCOmEvsFT#$0Nu9fZryd#KFP5-_oRdB`!`!(64qtYZb`GBuJSz z7OAp_oI$*u>0LBnG+o#wFp9Or7|w2{DUCy8dzxons9@ZjjnfYY<(6B3Li`+!r*W0U zl<={PyG_huykcT#0;tU~+ls_@ao)A&5~`HD>1}u~`nXxGd;;2E38DJj9a_}UdQ)GF zsyesqT}Phw4{Eo^jlu^rRSj%ERQIaWk2p4C_aIjdnO*6i$yBDr%=pg?g1K;-} z7f-;0qBU2X1JxB`bnMH{{9$m`mI;;<^4R!RF#t=|rcE0?Amy5Zn@#5Vm%wJxSX}%j z^lNap1c8=Jyk)SwXz+#26JSYJEARSq?eFrdLew9@UxOF8iQ=u-CLHy8^0tA>+#6Kw z1i(I6)eoj2c@Ro?>w7sAc(vtzUW9D`hWiJG!DY!D8uxUiL2?c(5HqKSk7Q6NR6X~5 z4WWTL0-`cIL>>Wwb#P&U=8P`FyV=2tlS@ic+eiYbUAsox+(D&C8R=d&4OfWm;NTjO z^4fR!H?U$WNyy|D##%6QI*It^0)iWP;KMY4N0#@mzmzio-6!t!@34%(Fb5R}6bnXJ z2xB7)mK)S}&h&tJ(6bPH`~zS${)|LJPeAP74OH=wvVae$BM@jGiY#8RU~-~(dv>06 zSMT6i(>hl;Eywro=PSEA*4nBd9|#u$l*j@_JA9wK8S#BEn{PqDB3(K;>>ETe6odLi zQ3x5fjclG8jLSM4?ReqlW8obgSvOenoxOQHlj4QpX$T))HVjcSfdXd+A#xK6kw5K* zdoz;~xbscRNbo7bX5e77xHRM{|j&z9t@TcoiYTjx*QJ#pDDl30dI};mg zG-_fp6*boq-LRgG)*RVsYbZWYKHxKTNtS0E8dnRp*tEX<&YTo2nGmryqoUoIgIA||r5VVU^l)*xc;`p1uXLWXQoO||Pp^5A&kb~ZsCC}J3dkWdeL0iE&Uz1f z=-p$if9+Z&jrh!#!}k^?_WBYmf2N}C)t0a=WVsc?SWu2%C z4)Xn;p7hSa>8oyvel?(&jhRxrb3H$5%ti)!IE;U8J3YDWe|r-!@aaRupl1g-`q&9< z@E~CLZb8J@I~!<+0!~|hA)V=&6f};>XZSQ&0PfBi*vc;WEScy;8K&Rq01tU%4iJVb zB@H%hM%$;y@xO&c-TUjnD<9CJUu7DBAkWhHEuj0Y=ga{LOBn>|7owpOAkKtFS5$ZSAT#Pa3AfKl2SU`%M|4-N5Ccy+ z@eAUO?Il-Y_jXA&ovRU;tv(l1x&!tKgdnfMSny?%kPBIntaLM>Cw^MC&VO&~?)4=d z#qm)3^G7rP;skGd()Y?TIlN)vH8E^s80{>MmtY-Gf+fUk^7guTHta-D zR#jcJ#VteMr4mF$H;x@Emb~JSB6t!cpxwJRmv$t|%1BNSyuyU^I#%5bGnsJ3XM%~* zjEwxEOQR9kYCz0+OHa&MQ8K!A2t|N4m2cIM*K`zRMu5p%XoWW89nYB1lEa?;t(@ux zgtkwNW+*X*K0``6{U0g7Kxbinvjdflt6lm6kBTUoA=QG>WfjIHa4@M&cKv__wK5YD zpn?dCJf~(+VMLp_qSwu&Vv)cl!(N6H!vq{O&7yLV!m1t@+Lggp6<1Y->q&bM>Cx$8 zqJ};{=R%O1!zO6We#Fr#efZT%$}O^lzpJ8U=X7IpkqUB`o@C__*PJUK zzp75Bplqd<-B-~f3FRVS3qY}!9;22*zog1Mm!upD`Wj9*i$PE?>VSZP(4tV|Dy{Vl z>YrWpM61>SHaf)}fHajGE7FSvwgEL%#nLc;A-KxA?UO83qNpwfoRe)4bH#P-z9_?r%k@f? z0bQ&S`m|la<4x(`(TjbesI(sA2Tk&_SE|1{EFv-1PSUx8iz+M*zkYW#WF z-T1kb3QM}Czs>!!jSg9re2Ax5_;~K-B}(?7n|`v+vY&elA7E;zcj$q?%#zWqe;c9n zopH_>RkzlxT;`>1^L_8l=$`I;2vZPK3{2@Pvk=KCPVd0d!jS`bO)Z_<1^+y;d_O+d zC0%QqjJ$i7UhRmw$&|JMbS@KDFC(ZK5He6QJy4<{oc07@W+<#x@lA4yw0FD*ygWC{ zOyblkNItuFX-?`^tR|;Nx|;YH;vk@8&siLB$0t?RI5>ZNEIub#qG*4l`D3Y%PY4QF zc-VBAQN$OgzVN(ANF|So-(QShsh1ompa1*+oH;HHnn(eJO;kQEQ1)iMYXEIKGhE<~ zx%rO%o?8ZgC;?_PEPx!kA@n-@ztk^nbY0(3$Ua;=#66nMx!#Ym;;`Bla?Fjssald& zcUq4@`k8QhbO{3|`ly0ZFKi8@YFij-pha0jO=%Uj7?0k#O|TQ~wF-x~>|x#w?5~+1 zydH8=#W{V1CzJKcdRC+S>x>!Te42=O#W~~UzZlOvV!Z!#tBmrD(tFpOR25W?^eaIg z$QH-<_PGz&h1UuTW%0V`8xn(N33Nr%OXAQy)NZJ~E+z%7WA-W}SSG1xgzuRx(0_#PBBn-m z!G6WYirkkN&$To6W+=XSc+M8H)jyX{382SbY9L$BTp*3OKd;HSELb8{Sv~st&ee|+ zAs~NlCiXs$X6^+gKBvW620w#tXm#2Fwptb@TF(|g-iwhXXbYP?YU_&_sLbPq%8dv;~&X9${aV_2)T8@2D}TI$4%2$q3N}>`nT|ld!407(5Izs7M%qA|R8Hz>N)7 zbx8JNaRs?@-kdVnDoW8@Pyxk7!B|A+2Wp^qFbN-Rw}@R3yGCgdwM6^DAbbn$dpL;G zUME7~FMRV-CzUNyjlCotC%k8W{;TN%umJ^w_7_h4A9v!veG7o!1J+?$;Xl{^_hA0t z2hKz-%}wpx{(~lVrdL&g1pv?EJkonRDl!H+C^B~SfCc~rIsffV{IAphY?Kse0ssj7 z|6B0C7FV{n`HlGhe}~*|cr2Ak*wgm@p*nfD7DHVE;2<{)pawG@8MYSU!rn%17=|gB zR#GfzW=i4-xXRzz@4e>5r7)$c&f9s%V~ArnDlIN`(N|)`Z>;E`*^n6z?7NTtO)6z} zqp}xeGRPTubkpO5`kat!ZPlPe)0~zD1WwL5n~HtNm|4W(BMUl<8EXUDjo)XD%PHAl zDsSmY=G)rY{dRvLMrZtJK$0XP>&|Kn*7jiRY@z=qNY;5=py7uCT;IU!kJo)M*F+1_ zl~9Zb!QDP6=cn=Dq!(*ISTY(eR(w8?Fcw77D^taT1mHluj<@U;u!^>FA}>lxrKCOs zvY0{#Rf@--U5aOlfVz|FUB7BlqyZocZI!;@{Gc zcppl^1m{B-*d%XbY~0;3Q48wlv+qb6l`YCuBfwp2>XcosT2^-1;Ec6pV6*f&S6iHc z9-8HvISNly7f#jz0wlL63Km0|(FA=oq2dn~S;9F1$QPM221Ak!{5Kj)0WxY5{rVI~ zJg+t_QvqohoEBE=DI_27j47*0+`y4ez@VLTJ}4Oi$Z1oUTE8SFfQ zvT7UzfJBB&bRt>FDaV3T-W!ocw1+Vnk-PFyhs3lSCm`jBbShLB!B9m-Gwrl~VtmmZ zlwplA92=_6yw7;-DY-zD=hU-s9ptXoxHm(l0}Gr149L%~AYT-<&@Sj3u>{=B0(~I_ z5m>eD{`YA=7Thnub!j-^uSv?bIBrHr-Sjpfkzrs@U0|r8g~>og|FEE&V~a!-pqvED z&fNxKpm!YuHsT%5?6UT7bTh@l8nHeQM?h}6Q_v^`ScMA7p}}sv6!qz+;5jWEWQXfZkXI4w$}tbgx1Vbgzi&ug~Ry#qdCYz@MlQx`J%zuTqBiq5KY!{0LaZ z!If%}S0)fqXUR(M;GR^1DhxQOGo5CEl2#d32<)Z~xMlQD&}AMHCWqDWFAM0GA>A!? zrnYd^3ZM>2ZF*^vB24psi56HgM=YO48%%>);lnrf8?qyHvOIFjg}GY8T1DfU%^QF` zYI}o;R=nQaw;Z*1|Fq6T>m$aaL2QIZx=M89c(k8#=m4HTL1>Y>F?y-NiD(*`NI_aI zu`@)q5;pF2rr^^;*)zJJlt}&f1&;%Szog~4ZBw?Md1yu1g+uCME`Y{JBUPkDp_6aX z8au~ecv=sbOLD)X8?_=bD!ceKN0>uqz#$LBldUxFZ@?w6gjEjaT$GYSPVM7rjo_Un z_9F)D5sIDJ%;GTktg!1IxX)A&!TT6!`*w@OYSD~0zHfUJgpqWtk%Wt^0wjPMW0mE6 zJs_IU<9_qLOQBaHvI;IM3Ut=VJqWZB;e;pGD!QPDmuPA8Fs~3Q;&J`wW$RfMjHu_U-DEh?b^O`Fgp9#x}tC7)7x%rSd7$B(f>c3Hj1$F5Ge-i2%tU zcSm*%LMR9j_p$2*+04r^-`|AmRT-```6~u!S;w@xA$pcjHUC|E=#WL)RF5JBn{H9-{`9@tgwPcT zcXwFDuTA*5z6vyT&hV6T0a1OX$1(HxDgnRMF#oGQs z8AW8cZeK9lF1-5OK-SH*>%RW;*?+oF%EDwIP4PL03y$1`t*a;6O-L4hS43t~V`y)w zW1j7D8^Ril~u95YIIZDv2TBRui3_n@%C zvRp~=rbfdU_`QGPxKYdMM2Ke5YlaaN78QV0itb=52Zx3Px}pR=8eoVAD2+F$CoAx>n1Y)w9*bYBPQIxF2Ljv2+f^J$MLgGEBCIN#!+x+BD8>i)&v zgImsU{5PE{U`;{+Yj0ZfWX}&mwrpfQK!(_f!Dx<9sL8fAp$4=9Rd@^2S(fZHKopCbtgN)w{Eo4^5MIl$(MHoLP9=MNcSC} z-MDAn%t+t#*tYH=ZZWgS)+Sf4Xf;Wv&h*FamJ4);oYY&Sp7$O$G$#P@QlzbK6s?vp zBA~HfeTn>#j6ijSBZutpIB@xegS$Goa+z#}^R^p2 z?}Lv&!DGnQ3GmJys(d4b{fJ8?Vd z7~ChA1pS%gpe>xr{Nxr{{sw*inccP4m%>QuD_yb0nShEv{_8xDf8zOdBy@8Ppk?xh zD7cH5FwBksIwi1JrU%;!)2@ej9kNbEb%4Bvpnr`zJz{f%I{hYf zILy;y$yH^sIu{f>!N(?OAlH?cv11FwqD8sfx}e4#sK%^$%D|@LMUZ4}UUF=Rt2Ccc zNQLw>4!EID{xjIY*6zhOEyg&SJy$9|>*a%3PM;@vfQcrkk=)z^6V7cxF82q^HSjf_ zw&m>+=YQyVy5F-`e^Jp`QxQ_C3#dUVaCtNrdGRn+*C9ip^jWe(XvHk+S{D&lZ?Y3= z__kbGd&GQgPF=0R{7hcH!kt4FJUd@vIIeY-J^Vg-SHGvA`zIx~S8Mn6iq;A!k~XnqLP^hS3nBOQ{snUE})-B0D;ZfH`OsBD23-DAr?MnU$;#71uuK znWNE3i=`s;6QZj^|0pXO!w284U$)A2%F_xHuHE(a+2xr3WIe3L`ZepT1MvJ)-@8VC znaS~(>)+#)yW}#;#sD9}Z9U~pEJ&uw=5$`2Cd^{H*p6Uer>+u8tvw9`71Et&WmZoR zlq*h%SSam9T%n5(bZ^Di5O+rryfPXyk&J`WRXrlHR1Fer<8Y1wSfXMo0g$iw5-G%! zV2Rt?ZLjWO&`ltSuoBgVPvjUX)!*IhE=o{ZmllO8>Ir3(MQ0+M6bJeD49qLI%hagZFQLSFy!eT=`mp9pfK(ZF`z`_M5kgKu2Gem%U)nWHA4`GNmoAFjG#*JZcMZ#} zpvT@AsK1Ks#!P$UN4KnsiLwWs0tG!+DXETVn5cff!^Zyl z&^-NT!M4spVbWG9#07}EhDcPwXs|Ukw;OIy=}$kU9rGT#LAWheIXp%n4bOR zT?JX%web7#^6m2a`1I}Z@o8seW@IZmyD9q562AQ2^DE8D%`EvF%eto?iAAhgEw@+`eq`OG_%e;En1M*i|l4u)t!V5i!eIE_@Ead7F zwi4V9_KloL+xErL;`E!6EVsfwGgqWl(LZ?-itKnOwBOpU%}srQuN|9oONEw0gaZu{ z>DN6yE2I>c`QP)b!Gy@+ljzyU|efL z${IvRLZ7*){_9xj%RZcIIJbC|?O@;+9Go@fDtGOVy?bkh84kJxwHv#8|D(J>Glmpb zHzR#FEy=6x5@)k>ffH)21^cakU#_-lBJT!RV_G<18$IwF=eV2axs3~5b*9DcS1UKO zZHg~*{*7HVxkE$4@EyNt#X^r+Rb5dV)eA%0sJp~pDB@ory=5}2hoYytE!^koQEmdU z7m=1T(492!dxfDo7XzSU->qQJkqxS`^TC#N4RKHx#)4_#UiBr(Rp?}}m=-;|n`JXx z0GOdUARZmax4+Kq=Ws)Z^C0v6bbWunIsMF42bK;D^_prEPg95JsUzQytJO#{Bp5!G zX@NTZb+*q=dViwiquyg#dyK;1WShS-yrn~N@v_Qdpw6gB!A^X|VWS25fTq;gk^TRz zpaBI?5^Wg6N~Riy0B~V2pUtZ{wfrb@8X0#8?N3s`1VJ?F{K;0@Ac)DQJ&Hu_bh&@m zeq%*B-d+g@2E9#rL$u;5DEFw;*Ic_Lx)EZa#_aU;!RJ=GNdqJa60-lH2771x zHL6%0Uk|yHbWHpp>KDZ zWQ*IVySJEoD=}5sb#u=eSlpCak}bc(12K=c9)6fFkKeDGysc1N#jJWEkeL+khF6G` z^-knhAEc1n{M-CdSh8}h%Ly7eNo4}0MM6xO^oaeDj_d&g=+RmIhcweeoX`th29hv` zl^O-A{QfE+!4`$eWx#RDi+0?R;e%$F)~~I3jks~(`=h7pU^W22s9#0>JzRI_OEKi; z_y{uZ8)an>B0mK>;xkViKgvoerLklvBPEb`#a|BaGJtC8{td6M*H>D6`h6C>3a{{b z#9lgf5$ezX!`V4?hZ1PZI<}LQWW}~^+qP}nwyhQ0wr$(C?cD5pU-ua2j`Ps{6MFXi zs%n-w99r!pVV3Lj-dmVj0!-+W0%>+rL{%YgK7~{VH1|`tA;s^Vl5k#@g+I>Ae%G2r zi`fD-VR?uBeSqBD7IXW)5hM{f9=OLt*iM3KmCJo?G5j{z!2ofD3XVb)F|Rt3h7YST z)+lQYDljwYC9?I)C2nyrhLt+S=IR~C=xr*p`W7-f3MTbiDkH)T7)%{~qs1G<-+(Hy zAJM5{7C85@GSdqHpp=EsCa^ZvUyF62#m3)5ARKu$wD2*Lkk%M6$a@ zNI9%tafK77T+W1h-3p}8|Afq)-Jr;12ubT5Q}c`@Lr!Fbfry9o(>}&^3{(hIemA+YRk@2Dl8KLA+x`vR75r?6o+6?&Z|9&oCi)3ptQERY-eI#a?56tqKx6Qoo?e1ZYLiH4A>Xt$SS@0pCwweR#<^ak3`|=DALz%zO`wF}@nhDih~3My9fCw`@_pa&^#-nYlIx z)HH8!@B0K5r+fY#vmy=XOo30-fJO2$qvK3IpfsCZa+q5c8w;KnY=Mis`#(Auv#2{= z={GXfy6VNwY?r7AY!GoCt~cUPu>y0#g=k=}7x*vw3(Y!&QKolkFss-expNW*`8Z1>FH?c@T4hf65~Z;9oaH;$y=`Pq-&dty2cPEq)^?uw z608I~UI~{|4UL3nD41AsqSX$R4jD)e-Q4cmXW0s4`}K_*DQp=K&UBg0IojAwKk4=q zc_Jz1+3Y^)KHb$wmrd)@%T~BaBp!232pQ17Rd$50ng!PTk%B(YED{^z9jPQ$)r^$1 z4QBLfiR_p?AxOVm%9Mn-+Pp;3_(vxsjU+6Tm0g7m8>sAmF>o}wP_w&WMsEOjcIPS& z_5|?No<{tg2Tk%885aTy`tY@PH9XLCgU$dQ$m`kq*!hp$Z|5$QlI{1P|9@EZf2Y_A zzffKLe@C%@TY&7WjNKFs&72){rTFFe1to?5XPn)nx@L3md+C2gRg0-N3L8RZVZ_Jt%2P~Gt!RvsQ44tk359y5p^UvjNl`G4GM9_MI0MD4|EgZNPje9= z3d`;kR#`{m1o=S2jnUSw#?7IiI12=0X!#hOV1U)lVru++cIv=twz;zaOmQ{B{MvTu zQklVImIKu+U`2#+wDxLq1ZBd>q`~XAR`rHVEkJbi?gXq7@3m5>0tN2!WW8PSbc-jY z=zccVV-kI54PXwmPDOY?;`x(ycuw*FBLd3-8Wy=3fOr9QvTh)Cqb<=ZGE?jGgg+4^RCc1TPBd?6qOM@$e`0@o0HC(9GC24Lx7;p4 zn4$yAa2W*jP+{FqW3YMj2LL|@Nb4|i*$9^|3=NngDz`!B2tRXu=cT_prIDIcwq{2Qzp{kv@!-I*u? z8q`^VDwxT6&bG4T`-=OsK zPG<0|kJ?_qmeyonyEe+P}uKl`R5UoHRMX`x$fYzX8R&)G&>#(+n*iB>igo3dvS|Qms_PR#IZ{f?S zDTv7L`<_7+o(OqZ1&MZjDn&uO- z{MeG-x`0<%;y2GfZ@?Zz>-sh?fk(rf=47i~4!3<6VvI`b^tr~~7_oG&N=S8tOs*AI z%v+oe-zUx%Zy%Z!I8joKUghyc{D2x4fsh?6rZ|)1YZSoDa<(kiJJvaYH zBUM&DEFMy5JxJqHcDYel@1>t8;@fUp|L5NrlvDq^4O;X388Fldn)^@KNMnB#o9|7R zt*pk`T3?@!DK6He0LyTbx0D15dJ)~1b%i0!o+IVoorRCg7xXjB4r*Osu1|i`n#Qur z9snI9x(C-cv#Y&3l5&JQlYGiaH07s=%tOm8p&E`i1yS8uMatL4Ka3JHP9mC)lp!x| zJZ!H-LFZS8bKBD?TgCuH>x&yWv!P#b_1$0|WXOXS3mwgB&qO)P0yXJjEmC-tU(T{E zyYV02?cur?`2Os*w7cRfa?#?65mN|n7a|`9iC3(vq8AOuUCvd;TYQbGpmW|c3~QTc zuZdT#nLf?*{1M{!k(Da0X*StwgKvHC@3tALzQ#T}qabetC}AHnQ$Ny={$A_MvE4uL zbHDM)cPUZP_Zs?j&%WIy|1GcT*d3pbPssmFL^sGVIZrSEfd9Xbt{cq>J71KuPOOsRNk-(ZEoD}17p>MA9qvjg8QD)J7lPt(!kGkr zc&H@Vw|BZ3f#U$gTU9X17BT+9&efN789=%c&bJZG=!g;549N4wJ8`~HO9!=V^XsW)y9FD|oN z)_&{P%*X)yjI>3jb&hY5I~hyoC)Q{H`N(WF>l9l`YpJ0 zCXJ|R_iKRea^?gF-+6~dN4I-gn#kGK$^LPAe|K=Qf1BuQk%RE6NWu-;jv%#!7m-Hp z`oOw(kqs+ zK9rciaj5utaM{ff6Iv+43aCB#+Za+BCJ>4G zr;HJ6vitrDDnDhib8P`e8axmhbj5vDf6hy$N*90Yu21)dC?xSX-0gcd{OCSFeZS5Z zMLmJbV92QS$iA=VkrJ019Ff-zTx2Rg8Hz9HAP?6Cyo@a+a+I%u`$v%A1~MtVvibU( zrjiX8+1&hN$mp)vp|4IMI@kC(EKBD$vl@4{2VnLC>*hf5Vbetnyj%f$zfPKcGveFFYmb2KjsUe>X!)Z8;!Q)K zjMICMV^BaqntHh?5van2UiNs}b~_D~Mm}fZ{2bbAtyBGRpxJ8t$|6l1EA8gwcUnmh zjX5hGPH3sJo_*|R znk-0yDO8_2tCOWW2z^XWSk=@?$j*ro#9Gu7{!Z;)&FK#ibsR^s;}(p1E!KMaO4Sy% zEgv=FXeq_M0 zsIs(1$u(WmW*z8JS9K`RCqMa=^Kl%p-9{9z!Jd8n^CPQl56C!ja!2l z7$UXR?MN1bJCROU$zq3R$51EAfdt1`|{QRp`qQL?sx-^-%BLljmDWA&EI-1m|O@P(Q zd$-+O;pa?&=@GbuieQDBdw41Ao6|6```nK6!jXK(sS})d(8UPzO`ffrGX`tri8sHtfW8NkO(a7!w`c1u--CgAR@gaCw-t8+G z&+4-^rREi%b$j<&x1B+9SzG`g!;d}A=T**MBwZki)+oGY=2XIHjB^f&p$X*C32%aJ1X=YF-;Z6!5{l6!qr4^7|Es2AL%lm!;CK!+41Rh`C3H*`3ftp|wYiQZW36IHLkV4pIEV?RE? z)yENeLrcYH15wQMCmM#SIjCSKw#>85Wcyh)1#Cr+_{4DdtL;w(R4=4L)xfOq307e1 z1b{DF=iA4DfqhY+L=R}pVgR9$ezt_S+rNFI!dYRpKhZgAoBGtz_Y_(}c)F2fsS1$y zPey+@Jtu+S8kUk2UF1W6X17i|v0qsc%>7I7>-pYxBkCYmbO1lMhMoTiDbltMW>*bh zJ}|{o98T-{^HzbCmKyJRieT1p(Yi(y!57?7+H|`zx@4X8_hW)? zG8jVVfiKpga217`y>^0Osxe7&LA#t1)kBA7fu&*sVeob<;1o6Xz`->HMkuDu@$e=!) zj&9~IgYSY${Tto79~ws#$sqNhLOAQ*xyV*kkxXE3$B=}2rW!|VDcC#({Uv?cz5v3i zYSX)~Npi#dGBu#2a;ou)VtjCxqsqj&sqmVgzxeb`tpXF~64?bWrG76bY;N-F56#I$ z9n4b_@dfHy-kkfACcs!MAE~tgZsMy!%g1KX7br^tnGc}lNUA*D$=#_IX`*)&X|5S5 z=*r&TQos3_sN8Anu4=_B9Jx!6n}?}8bnYvr)ow89zd3BtaAwRIW>rsO209jtr5@0>vlm4mws~tNL}>1bSZ$_?<5^ z@i`aqojRksK*(G74Cp*2T;SK+CkKz}ON0U0d_jh)F{25Aiy#AtV2Ws5;W$H4^*Fo( z$c?hXpPf5a$R+??4m)V6>vIp62lrceaG~j#HD}}>MMd1Jq>lc@HfB%9M|Dyb1bR+< zO8fBxXr}jx_c>R7nWR0`+?}Q`(#>*ZpqrDBzB9eCWS>9Hp67*E+5u`Nx8fyBHIgvy zv*N6YO-&7*Oic+3LxFr_kjo_|@rL)jC>JOSxwRY;)~;})irhyj+JxcZ^)=9BJe$c% zsEk4zTu-&cHi`IzjkKOeC!7&rojT-i5TpmMM9WXppBb)^cH9nMF15b{Ln!%Org3l@ zR4q46ElhP-{#j&OG1IEHOI>GoN*C00qU5y-dX=?E~Sf52FxUAxS31K;W!f@dVwzWVl99Na^p7vG5AI4a31$>kCTtWP=~R|=V= z!@&Zil>wP2-(heGyIj6(@UQ#TjvN?6u=?>ys!om_2w|$SwQR?5Lxo0{)CVCLp^!yA z-<3YN$gN;RUA)6u0%W21wp503Rk)A#@{kA15{!m6)lT9 zuh&#URu4HFU-MKZI-^-!ooMy$Hcy>$`BgQoi=c6&Kxe3ME}d5Cs1<&|E7d>LKX7&? zMSnYr<*GZ5rUtqlhaOwQ{GMLsVPAobq4NCa+#$d}-<7VB9Y5e-F--1$3&fvQ?c1?O zo9a-(sTcWtz-ApgOqeo86J(CO()Y;&E0*k6E3;v$#cT8ddk1ri!1SHjk`X)+~|SpH&sWK z209lymeVDzziN1q(P0IZ91-1=Pyn+?NF7k6<#Airvbki1$-7~j9N|r6S=^CR#WqkL zQjHA!$qiC74tn5h#OrOP9@5M-ciUo;V}Q+`Pv=m4ROO;lw!{m$6;%5h2beLGRy&yt zZwwwWZn~K>WEF&+5XXTGkj-zG5JUF0sdoT|w_1&J3P4Mf@cw340?j-y1@>}}^o_UG z<1OCoI}ANWC4X$xQEbMH+m9Mm`Jv7yE|x=E_;L0gd0iUzrj0cb4Ak+yMAb_y=oVYhM~ z-%TcTw(EClk_zUZv(t~hpoYnx*w+?L8dn}1|6cmTxJ>MZlDPHg!f#i^oW8kY1e2xm zci0Me{cQTNp_u60+;`lZw}Tk{30gRrx#;r@>O#sOa<>6LwKni|X8|v@BoHV7e}`Q5 zSMcJF@=qv)3ZfGSQZAq1oWubM>shhf_ss%)54IoYARC7$+yTjp!|U~^3T)=%Yw`{b z>Q%DU#8LxPJuj`{I42a-)z>qT{R;K$-;LVMeyUh%Zz!$l@U5%nq%CA5K?s>*!yXyY zj2oWsphV>n&+ecDLDbnOwpj@V(9s_>*508C7Y}r1MrBjRx5yyFB$<(%Xp+hvYaZyb z;yB|SFeKcWo#5rMRZ}0nnNO=>Q|tPYno$1HL-5?=(l}}(ErGQhy7~*|^^tztF%z(Z z$vazQ?aY)h91oM`cw)2l&vW(6Y4*xaM)z~>I*;jPwIbwseMEJ8VJ_S<)xUKQ0w8Tv z;tGwFo}481;NM=A{4>rR5)k%*ZO}Qlem-TQe1-@m2~7s+n$o{bkk0#gn^5T#b%xnF zK6s%PyzXEkf-gE4($l5@A3>Okx|*r1lIcvatDgZ~$w2z8(fHKNyNuv8vh3Y4`LM#2 zZE6iobG)Hv+U>wF!_IA)GZeJUgEd8A?=HYfDp}R##|dU-WHWVcnx)4I=Az{%-rQt~ zDn~^moae`$@wSu)=$i9ge{j zo-Wj>6naoAjIo-2UEod{1-V?@Vp<3=6#>QMS(2?N{2Tipp&jw$yHP8$7QL>H5MYp2 zrI-%@QHH`OWG*VKumuK3?g2}qY1MBp9J}+=wQ$D;GE!+1hV^BzLIPIdZc6k@Y?({G z935ild)~Pl;Ic#{aj^iRF$q72B;K3=OztLyh)PHD`K4;Io1-I<#VY8tp`((_ZEtZI zQXpf=@iMQaq9klwODI`BK`jM}a+JnLy+g~1_H4g|J=Z7=8El?b^Dkj6WI-7aoNdK0 z7S#9=?D8l3tMql`lAsbxNiLMw7%mo-w)XRv@X|J!>e5-MJWzT_LBG z%}mas>neasZXrl3pahBLD|sb;Pf-FoaV5xfBzO{39Ho@!oTI)&d>l0Z3-?>Ka-K-= z7kJAQS&{*oXD9<&v?1<*(wtx=tCqPnC%Pe%g$AZeC{%-YQ0!6u?2J#vqb92D1+?Zl z6>r76)nO?@ahk^1>!d$LDTD6nxX;$_wI!6j8L(gh6j!uiDMeMm4*N-dQI8GOT^hml z##t}x6%x-%`(AE4{85Iu7evH|P)kNMAPMb@{%K7KTZSVriaP6LE=3|UjUq3FV+Cf? zCkboODFoQsK2RHf6hl$MvfOtv7(?e43x|a7{|47T4%AjzRK|@KY6cs`zrZ}u~@em)PB!x8JT1 z=rQQsHvskY%i1VwZT)^x0w5cXP-o;b2gx3U7-~sg9KRS-X2bYhgd$op0;Odeq> z*31Eo*mU9K^jZ=vfjxw4bD^W$d5rCD&8Jq@P?0js%@tJCm)zzLP8wRLGxRMZnaL%D z3Fo47_t7Su4y3)Z)zUPvmJ8rsg*;1`2!iZ1UWi+}rmx|KqHH26`V5dyC| zG3tvY{N=ecT4!o+rhqHExlN zH~0R!($v-F#RPzs2->$o^=y*5H7@*SyQJRt5p!Ofl+6j8b{#7Cp!PG9=%bPW!wf#s zi;Ve~KZ+5cH@-rg(Ng4ctpL^w3O4t(3abCfVcKmnn-T4EdEhsIi?dIH&gp4^NzlY* zUbu3#jrsNSKc7D!t`Rj`DmEWW+Hi`CH|Act1P}T{#JJ_EFE_!A>RQ)4Y-AD=IcdMT z52^(Jk#ooJN-6v|=6?hgL`BB!QFH)+|Hvl)T~OhZ1pwgr-wP`L*I)2IYbr-v=Bk+D z2|G`e^;=(RkWP4eYryy}X6x3cb#^n@897MIa4;!om_obDRda)fZ zUD`c1arF#@1P3vrRA9g?+OLqAAHR}{=h+}R@-K()*^^IYr@FO8JyQNCz=S*SMjs{}F>uFSSbw$;jdpSU`Pb#-)~jQ}74bSb z#^quM4E%-3cx%cV;a$QT3x5FsC?npv+@>(r-jYoE4zeK%owHwF&`zS1*g;(t@G z+C4$o+kW04@7ppXbJB~82Ein`-ECk=svj?we)223%+x1&LKs|?K&KV3Z5jViGaPdu zA~!7F?Wqo?C)NvR(7b>L%H>~2zM25gf%{p{+BS8+oWzgtvy{;4cDnoC?Vm1vOdKRu zM81$#-RNV1$h|=kRsu@YLD|35F&uBzhU;L~!VX}$$)3hRMwMSA- z<4zjjHs7a=?}j?XxB2^Vc_A1Pz77>5&^{S1-ejm6>&Z1uDbx#6F4Ste||08?CmM#M$ zfi!UVST}hOxlR3sVyk4)Ud7}*m+*2ZBT6J~OwJMjQpk14(Vp?u6SeBEUQN>O%A9|B z3IIN&B+|i0wr@vZB?yRx%0qSsv9Xu}ia_cCkNtN_0^M7Ew8_I6VSzWx@#Nlx5N_m; zTjiD&r@99~%UA9Hub#;zA7m7ak`Jk7+xr?8H_k?!akn&=)QzQH9dC1k!W)TmHJk9v zQ8>vDJ3$)Wv*BYq4)2$Nvrdb!am*7M6^$yvA2M#U~r}?UzBc{aJbY1JZ_o)R0GW`_9Bu=T{%xY=3 zA`zO!PkW@B-bC4tW;zCYAVUPrUZM)VNuc)`{kWuZAO`)jO);vItkzaSsTa|V#m*3n zIMoL77u6B{n9?#CI!PzqtAwltYF`Vr)Hd6$Ax^Z+o+h>d@+BM)G#PUYCVaiWXJcl|9F2j zcc)85fGo;BYG__Hm{N_=aG9r>Wx~zR7MS8P1&+=@2ee*y7?(V-VyZ@bwjC-P1q2&n z#0hYOJHiwS483alKDrvLMk-3K0Bqii;)H;u+pXu@bN_4Vz=_m5=pT3Ny0s$zQ_rRy zeJ)<}uVaL)BGZ7{H>$gxyzyOMYqu~yu)W-;^u$`WasD!tx~0ugqC0U@cT7Bl$uZ@}fluyg(iO3r$p(5)nyc9L#wC899ej zJ#L+*ttLrd^T%X`f%791_X`{SC7kg&1q-`Xh*#nbHiI-8O_BNU;04wj#=OB~XQN|v zK2eW)k+krHJ8JHZb6*Y7D?b>b5G=eQ0mc2SE2f)ddM@gj*y_0J{qCx1(6a|Qt6=6a zIcXsQ)HN(!#0uOoEi@k}s8EDrtp=Yh_DDcKtB6cmeGDj32^3lD3k*p~Z$1{*t0{PA z5y2ebP$eS20ir~(1`hhLV(Q#QbB|-v5=60i$lbb?Y)<}p zp@|SEzZJ^{%|lThnK`y3_+Lv=R5^dh%!r5;>7v;sb(>`4HeA8t5jW z2I9AH3ImE_C4kCo9eOGke;*|wK=%8jgfz;Eg#GQbH%Aev^Mv(@0E5J``GZZ7K7UYg z$7%J3Xo^`hg{GG}fn?>Hx#O3&60YXQt)qD=o(Y9sFiU*yG;aH@(fRzp%8U^U5V;CG zb4I2N{|HHc2w#f>y@pbdiY9Ly+@-`YV8M!$NWeU;T-(nxp|iWU%RIqsUEl|Z6Rmm%Yh(`bV=qx<2Db+;hfqIcA z^At)fgjVZr%W2Ao)BJl2(@fS$9)qCx2g@CjX9aMk0pyAfEwy_509X#V2pogmSPl@B z9o%9utF*nw4bTFzYVzTomOn&xdilRzjygoVSFhUSca9>jQSDNxzdk4-?MDR36hTRQ zE@J(~fiLxQ=jEgwU zcV2dqFmi$aaZ+%<=D(QIA48;Ah9tUnvvGvWnWiK<;-b@JPWe`~6EAlrXz9s!;+n%t zx>!4OX$;*msmB4f6uZMi^b$lxqABEZrCtSr%e8vCj=ox<6RVr`OVJ6{tn*BK&__7{ zk%ntCyoUgA%0SipUPJPdGPGczb|}fmV)yT%xfdEwtK$e;pt7g@98sbgD-8tEV(7gT zY=tzudf4H(h4r2DOK9N8AmjkePke?he&;$ZNXlK2OU_o=4ci{t*R;Yi7x3#%u z4X{NY11TBOe5W-c&@(TgrE)DDJDr58t6`S(?SUA;_EsE$7@3Rl*B@5%z8Gs1GPi!P z>8<*mp^WCWaCIYCa$qF|=>yN@QZ|-J!Zbg^!yGihDmBSFOXjb}j%xnd#dsV+LLSrQ zEfU#i+~_V=QgBoxsTWI0UfLj1p6l5j)N`7yQ&VNuhMYFDr0FjSkH%{7P(xAiVW6cy zix7BT-=YHBNf&5_6X-X4^=cs+0f`<|zV3~k2ZK%Tl^7REsp|o%A&vz;3w1^@LlZvI zS9VH`)hOR$X0O3l!C5UyuAgJ6W_H^^7)wpI>bNaj^+ngTFr*A}+Gr|~^W56QPdvOi zOFu`DeVb*CBh8x1V`|Eq`5Ntj>D#7l_^VUshFEmh#emDJsHoci!lw(w%bht>V(C8u zXCgyxzv!dAza7w?UJiwskl_)2fQtS^E-b2`vBk`}ksu7kunHEABmal%1TB?Z*P_+m zKhu2Ng0DQXVp!)>j~m~mLxw#Gj?wgYt2MN**^+A&T-1U z9lMkj6?!;uoug~WBJ?Q!Ms*1Zn`5wLNk9iVU<;eL=T6Pfy5&qsU0d4?_f>z7=r7c| zjOH@IkeRvb)S6MgckH=aL2g7m0Jl$HpFpkc2|TG3Yt02J%I2I4BHCOrOKLCeGz@+5 z-j?g!9nO@V2k&5@9#4*><>QI9hLhYObOOOZpp#`9!2auS18~_t0D4njoR|3u0i-uJ ztg}HqMhZ@bf?z6P)X0M@rH)h%`UpJIBta_S);_If9cky;{fhP3yRu3=?l7bB|0cvXg);h{k;02K8?9qCcoHB!08NK zskAY6nbaxBbil?4n=h27&9^?702Jam`pW$00rX(&R@w>6Kiefl46~3Sv|7P&qXy`PqzL z!gaoXuKZ9Eg4!nT)kBaVZ^m{`v>QgroY` z0$+lxaM6G^1scH|4`rNr$d}V&Nvg06Lif(ygK9r)Lery5U-kR^@yQa2+3x`*giO90 z6*#2an0M6d%^w@Vci77GByf>F-)rPp^#hpih}A8!t7}6!82gW%)5z_>bg81O|2$5R zS^-y0P#irBvIJMfU}~bZC5!mwwv5rEPqa_`%C%^%O zn9|!AK?)R~W=%R4^rLYTlRlfDc z$|)xI^uSg;6aN~7_9n=$G4TRw6M-^S#jY>=*lW>0&<0ukSQr9X%Q|Xmp(0XD1dxBtwjDkC z7|e@&d!MVQku|6WPY&K@EOkX!TD02 zP8N!&4QW8)b2Lb`a~7F~rBp{JTL^j_X_|z%^*&Q?Znm74@NVs-GrLF@bVFFB@l>W) zS2gL6mEsJL?Bs7=*ZA07h=zxKgKE*7cE!#ExV9ox3l%m6MMOYiY9OjdB6Ep_lPD%= zgeTA<6XP0E3VDnseg@31YpgtRsZgz7SF zH0N*I{JdprwJLvMPI_4Tg)qmt4h{Zuf1@`bR&kaClFWlc!!kC zDOlK$P)YE_IUoZnDBYTX=fWg^%P4Y~T*RzTx%qd^ZFDVou>gi+xJQk6MKGDSkD$!B zD=H)@s~Tp*DNXGNtLzVApVm?TS~WQyV(?%=UjOmMLEN5P8v*G493_u}7Z7{$eZw$i zDX$q&lgt|Q>zo7#CDR{uXRwbruzXp&Gcbs#Ai8_&tlpnvVSszcU`KoFuECf4L}2p+ z22Kx!Ba2`^%}0bibRS$Z)w%}9%n$H&lz5xz)mau>@eV=lfVAd&3e~860_r!|>q;%? zDu?x{9I5;s6bC<7!}XRe&2j20E&^vcI4@lF@euq_WALDzoibfyj}W#)}PErU7w=10aO^o zrV_Pb{ER~t9p^N*&+!@G&BZ!sTd2F`B*!`O^KS4S zYm$~iOoSn07sG1?3ZThYcV9&vQmn`W@DgeFjP5g_ajc#Py=Z=h`RB_E@6rO57~jD5 zoW3M12M?)FGXa)EC|X)n)g|>m0bl%5K_q;^s+QhyL;%^is^2aw{$G{WDS?VB_HP#M zKREiogX&6E007bd9jI1vFgG&SH?_6Vw=(z8clxa_{r@4>mW~@D2|2Mn2IFlCVt)gK z-l{DkJuWHg4bP@+?-X1y*(>qsQTF@*qC<^_E<4++Le^Tr2rYZxxcQn zajviH?+9pCxnw{BeO0+=)mcnu_9^4Rq8f<0HIi6?d>a-hZg2E!=X8O-p41)ozuL&yd(*e}t z^>|I*kXSX87T^t3>KP1=1bUnAjr}o4cy&yAhQ#~rzcVc|1{t3TvcpkSy5QD)TG8qs z*yBvVTGPpGb!stnYMCh2QP7NWWGfVeAofXU(C9=E+4X)Bm92&qQ=}zv26)T#I*lUh zwSGx^s>2!GM2!pJF->JN=CjAn&;t`vZ_2~TjE?m1&2&z74wvuO`Qgypj_mMBjjr^x z$4;N;ZeKfoR}!so-98`mKJCZkrl~!Yl9+ox&kOp6xd?7b3#EVHswCXTJ5va6?BB~; zp!4Vlwum=nu!j8|x4))k7>_bZ%Gvv?flqNBPzvdeyN7#V0PxyeF@Q^mn&LF%=-I|1 z1+0(=AIx{3t)ZBM@?!HHB8;Y#Fsp9|Z@xWV!x5meNT{h+P@9Ilw@e8OKTvVP8r1%c zydspnftRYVn6brslp1Y@UNqjmTupA^8tIoKV$XCBj&iC@w=B=OE^@9$=DQ*lU9H<#u7lK6sIX1Jt*3 zLzpSF3vkvb=zwuKQgc8cgxXs0u)mVztE`s>V3SbLF#vl;00RoK>_nQS7c)~hVj|Nl z6)fzrk=@}$@@OAJfcoARnUj2g_ViEkzuBAojJ&ViBe8@K9jv+*tI6$ef}d`6h*fqU z56K?DV2Wr-x|!PKFr4T!R?{{Bl!%QZgE*n-MQf0 zq6hK}Bm&XoX){?UAKzKEOE`7{Gu1n0HJ2tZPVv#=)LXhX*ww0g?poo1mF2x}D&R3! zs)c30-g(2u#oY_yoj*Fl&~=e(`Qw92K%Y!2&w&D?j`~#^BSRU7l#<-YQ6#@=v=sEO!wbsWE5j)6xx^M z;dvNDbOhI*A~k1UHi(D38Qc`;@&8%_B8||fUUT3Z1n@O3IA67Yxy@F<{$?UikiqqBWp;%FD-};)9mknpqrp=xUNatD`W#r;5}jnc7ji@rrK-#sZq=#EWxQOX{iOIoA71M z5vi1=ja@^?o*%(}WiuG?4|(z+KI-aj^e6}KI?UmE?OTvRS%LwV1TFxU|I*nn|Cv8U zTBU`>ku*Zd3BXVXVu6|5ZeINX%BOt`g%M$<3-lkEiYpOha0=tZsG{r7oUAueST-E* zMMOrxieSs8I5HDddEFrIF@;B4YV;(Y!EvYqVPyw=*^6~Yq{QqxpISwH{Vq}4TtutC zy+MnzG#ja8E|;vkQqZF&tT*Rke=NOm_Xo-dlht5*iUmiB&4*k&fE*k>Od^h)l9N6d zC|=^Z##48cXRpDOvUXDp`L!^FFOeHiR6npiNBG;&@=Q4@nxUrt)ZzW zLV62+RfDA4s*bQNm4wY?!1!l!7J3e~$sdU@(oOv3=|*wfDIvj{5A{d7`KjmsaCVN( znTFk(PV&UIZQHh;j_r=E4mx%^wr$(V6Wg|Jb~yd+nh*0~SIx}+4|mnN*LkhuJa&a> zzW?$l?yxxu7)h?--M_7%p3#AF2Is6a=4VQ1giE&3kt`2XW^(s?ZVYPK!Ban46;^;9 zdLbb_WWqB|484k&f}%w`Oddg`q?S{!g9-;N0T2#@DQIJ>f_r~@AvI1? z(2`dcbdTKc4ip81`{JFP5OIv7!^6vjPGs^m{(clw#wK`Ey7GQO0V6A;YPhiJpl zLR7~jRa105xzTsRCYRPG8psk?tp-lXM?#Tn*v-z6&q!%8rBkRMP83k)NGWpj>sG_J zt*FCjfv`ibl_G_vshjIVZa95=!Cq*6Hz`UNZ zhAOl^WDhxFPD3{G`DC zaYNQx?b|K_jiYJ)WIARj#H#rdY7c#7W~>6yo?}lXUCAmiw1pYYefwT;P!h$|X!D6v znEc)M+yyb0u_kjt^f5W!zcc3{Tg>IJOE`}j=VT<}$d;SvHSCf}!`g*qtuGS9WTR5R z6KL6y%VWZ} zQlYVs2>KkfJrO+_jdS>Pfg!qx_DeOH+LOn~q^~1TsYZMV7 zf-rSQ9=uv($_Feh;cDZz$j76TmVEO#2Y13_6-%%%$s@adbX6Q`O5lX3epMh$=B}o$ zhQI0)>tHI~7a?o_g9RDaX(OSH&J3dMl3OY0`jqL?{vPt zCp`Tfw(dB0^~xYjWjx-(dpltwS@(fJniV%{yK9!U>$$@Kw$Jd-$!9Q$77!s(;l~Cd zp>3r70N<|$q{R@b%TK0*OX-c2KKl1+F6symNo+tmHcd+Xy?qTPa5*>6x!l|md^0_Hx44ba)gT0H z^s{1A%>zxZG8GXx+Jp){oEL-Fl>K=x+<(|)lj7kz`KHNAH9|&~cHw7eu#$|8Xwpqq z)fa+I+QQ^+-2zDx1(l!@{0)?OnmAPnCF^do!2W?woCiwX8agiA&zlCh=HAcRD>Z+3 zJ6$kuuO2G^ScZf+(~oN+zw@p_-eBNVdXUf5+nLeSVWTWdbNaEOJPn@R>^G{X#a$N% zfH3O%G|MPM0&bfS9R^z?zXjcds-2;)XKf;_oM`%aVI`h!oDHN zmr|JHivFloSE0BSStnBn24CVw3up|V8c`~r;MY|JsQ;k61fd>QJ`E*4iisI>go97H zTBdKm^DjxU9;3O8C*<$<wri=iJ6}pnD7RgF!c-4Q&Q*WCi^Nx_ zZ(=O*GJ3{DwMz5v<7dgRSo9wBX8p!3@Fuy{IcU24lFm=z8WfWxs4cdZnF_ zwa(Fq2~@N(6u9|`35o~NW|cxQMf<)L^DrXtP&dW$QqlKwaa--ChDHIUv}Lr`x(^RW z=cncmjZB^AUQ~#GtVkj>;qdpvnbABk!k(k0ryf=0%W-7a)^4!!#^qF~@2eRrfA(vU z0ae{7Vm2xdLdP327s$q&!Jl8*74vySxX*m12BFFM<+RIQvN0vX@=)y^4Qk&3$*lLF zBAvg=_sC5UV^zJ9upvtBwmTh9WQXfyj{9dXhStMBMS zt$6A)WK*-b2QNq!{`NvekL@aJXzk1Yc(j3EcMIpwJikVZ4@u3BFQ=#=cMmVZxpmzgkG}W6s+pWB+D8ZEcS^IEzKocU}%iS5lCdFNVB< zDm;F^-LL#<`J9g_@mV8G9T)pXQ-|dF$(#9j8g4L=LUQA+@1Eb|-+w^zJ|cw8pCW8C{OrMfi<2LTk|z4ktw^-f zF(+!EKjWY5{+q^|g`E^uyy+w3(XASP#w{EL;>ZdIrTIqW_x%+gi7(*3LB~BnNm_&NH z_PaTd@m_%tQMD z=JpT#O8~69dCir0`va{EKM1v=7_>epeM4wEH0LR7xUazRVTf)_U`&oU-uoNCP-&5G zd1Ry7h|?C*U)zAOL5F3pI&{C1#t3fvNH*1&#(5x=Q7JESBPngO(0{Ku0;;V-Mfx>! zMVj5yp}c6@z}h{0N5^0Hl6-}C(Z)CT$2LbjyD|zf_ltHXW2k+W6G~r3+d6a_n1Ih` zXN|C28lHZTeak=x%n&T#kMv8hv{lmzChR7RQ>wC-)z|)u6g6k_VQgBWyUVD)8cI(0 zFxav}mF#PgF1W$(^svl+>Uk4C$P~&>^$rX73U9HGG&P_8(kqsN$d1vRmK z(iBD8J;T%QNR2imQ!AY)#i}{H~NVV(}V^ExT)5amXj7hY@CX3VI!N0l0!oq zbvvdXvcQDGf<@`j3(g?FpN9B=#vp{L-u~d)jPC$#tZ&{&u3dlO$o zv&fE-eeZpd2D%R;u@0o%JPMs1kc9vrGN$ZCkR|K8^5=EMC@0-n&cw`1=-QIzoLB9f z2a%E5T1Xqz)md~rG8s~DP1E^D_mYQgElK*j3?+%+(*?*OFSWum#-&s6Gn4bI z{*o=M>WQxhfL0wC++8^VKIUra9kHQr;#R+;HGfI>SCop$uDd;sQN9%Y@Ig=@o}g;| zVhsCnEp*$yJ7Y^KeUq+739N&6+% z7~LwH2SrFoLi;2q(lo7H%Lae>N%*U=cIOi6{Wzu|Qo`ZqY$H>cdx?wX&uJZ68QF+& zXTm)h7q1O2JB(Ld|H&n0dvs`H407LI34pkDAE6B^4t~~Or(d5z;Ctv@3A2 zN87V&^ajXDF1iEHQ!Oj-?^=e=zv~cgTRECRto$3dR$QSr3ewe16k{B$mq+ZsNbo(x zV`8s!y7`ON#8&4=+%`Whos$U&_q9O>*Z^-^Ra8J1e;6iErtgVQ|EoUa?n5jx9Q|YT zu6ws=Dh<0v-VgSwBNUGiG9)BXy-pr@eB_tr>~Eqfqtd5=J+lmaH1RLZ%&KNTtr>Rf z)@d2R+l?nznw#`1t9(JdBuF%D86dxw7lnV)%6J1-LJArMhVjpm~E*Fpsi-x z(1eU~-6palz!EMgmb2pU4nv0g7PXpb~=rZkBu`EJ;#K#Y!j% zed&bOuiklIg7YawBLDMh>DGd5j7wT*DPaPSlLcUM{!hr%FqAg>)_u?3SKnkh# zvkfN}`=5~T568o>S#O^jb)A&Ha z51o45pKF#OL&(?=#Ry)w0P@9SDl|rlb=i#GF1_{_>f@=DgGs|H4I1TyBo=so5VA%a zzt>IMC=CMCsuQZTjUgYK_zQ)CQKej^1w$;{G954edXW64KnWxD+IqwvkMfR#m<+6V zA>o5l5_4|`A(gBXfx3UTY&qhQQ|~uP$4bvi4GBjX(!iukGhIcg>#ao1*(KP}A&P?gS5{l0r31Nwj>3h+B87w9^;K4lHqX8;q}z?l|V5kHNeTeps?X z;1=^6=l;^rnT{HX>BH&s;JzDx_k*;p`2noCm+Q+34}*goqz;&k|ME?hs$}h)5Z9C3 zuTl1(Yb}(yajE6v=QU{sTj@QKp}FsDj+Ber*G*?+Q@4NIo?NBFywbAG9tL!FeXMDR&3+pxsTrY{o>US6sJYoj`GiS1xM` zf>LNdOvuH9c5AO>CFxoqS}dD9L=7+&`QzKG{Ug-!qiJM6!+p__oNyww@OrAQ@ z_FRgjfQKhCG3#YXAdQtw&KG^X{8gapf*J(q3}t%H>4>(<;v_A zMLD36^ng2ct1MlK7x4*sD)i?z3|~gC1mwX2d9s2^9^c>oZIiM3_<+sekVcBRwd=oL zqB=kN1`b(_Vuvx4+J}oYpUql{Xm+bh4QHAH5wH>REI@CX#I>)H6ZGHrB_JYt;o31t zyb~pXa|MXR1RDp>eoyuG{^X+DjxvfOqhQnI%a`#E@=T9WV7I0$`R6kkHa=ttCW>^vLhTC)8LE%LX%0sFUq)|Bt z4FgX6j2>@-5yA#s-0`9mC`tdg^QV@(wC#lLv?_XAO*tPdPKn{_5UnXyGu^&$f+69@ zjtpn5ceAw{?PRD8(BFgkqA(8h8H0>U6!aPGI-^8kgtyFQeC2}|g3r){5v2xk(S<&X zWFs^ysFQb<{g72_l8H+%7M@DLhMPCO17;`fAs9*pWJu2`s{s8; z%bie@Zu*Rz_~-W**^8dSoHV-yw$MPY%MxlmA@HiRpDyxC8SS8QM0^Bk-Llg7P%V@k zR3rZSQY-l`R+`*Kow{+WYZFJaq1kIcx{^KG>al{$XOiSt-f^u*>=w6i7zH@WM6rs9 zgnQOdh;~Zo;X<;7fpb}s2F4&lT)dC2bsr|Tt^`2dqaq#D&F(>Xy6EW@kC8E=7J@sr z1X2*oP&-1if!(H&PAFSo3<09~*f-=wHZ9|V9GF1MKvV@-VH6cC+@tU(#i8Jw9SVyu z+737%CM_`o&<-{?J8^w;hYKhy=@xn zWP>PF%(_d_DkB}>18~QMJB%O*zPf7h(y|knT+n7)#d||nqqmvmg^e$g>;mR8;#GS3 zgMr3rdFqrva2>eH(fB`l0zEc-F>8e|n-3+yeTwUy|YC4Dxr z%okeeK4-l_2;8;)Iql#<4Qf&&G%EEJL!nbR;oiTI(+p9x=D+e7R+O^k6AUsxnkBa3 zbucrUP2&UTN9r`C!U7QW)@kn*(alq=OD*O(=_bAT?fJ0Vr{D`tbOwpHwS*<5wZrbS z2NZNen{YymI`vHdH9Gl=`8N*VVAQ6z-vm6x%zr|7fQ~#I*r#}T2VDVYtoP-E4?+)S&F#Jh@ZyF>9*HEEfwf|#9#_Ztmz#6 zsV#D7{9bA8ep{xTv5~;`r|l@Qd9k6H#%W_T(qL%Ki)6u6YT;*a6&So7*rOm)aBtDR z0iOH%&mFDGP1PZb7B9~JU8xKF8->2{fG6$>`sNC^#|Zi%xRm?JxRmQ#e?HUGa{jKv zy-^&JYDj|oA%qXvq5%2fb)pL={Sd3X$d_18Q0f@!{56WnN(MkrjjvBfAQ+IS=m9Sb zu9~d&E#}P(T3zbRoAQ*dnj^Q#IA4;uoQ=zMg_WcODk@Zj&>8jyvCEt3odo^B+10Al zrd+yyNY+FDbtHYXXvC*A7G{ViFDTGlT5ct?jHLWyLeZ5qz1+FoWI}bgPc#uPFdY4( zQ2P5PyUxE7!kz3-xwnZIt@c*+SBU~nFX7_6A&_V91Y(m+8@BfVd%9C>o>Nw*~i+|PiT-G}9Fe6{*y{c2l4wOiC+_3*?B|3xL*Gl&5 zu-FcLtf@GJ$sOt#LI8W2e$GwRN~rId5=520dsoOos1MFc z?poHoc0WLIj(SJaC0B|1!iGMfSeo~jMbut8%eUnbG$(Mqusiy?x)OJpBEt%8zyDrC*%gM!JMb)`!{ zWLk_8MF^w0REB%VJ!9;%%^{jIMi7NOuV0qj@?Gc42YO86X54SZmBW`IiUKvn);NSk^|!&{9gj-ZK1hdehJ zTNTG-<8UD)s4acE2tg3|4XO$?mfbFI&Sct-c%EaUe$r!ec51At*-R;5+gcbGl$D{{ z#!m?0ENn4@0zyV|4sTl5s6x%aACzXvARPRwdwijXNR^TYnKH(jOcsIJYMLLV&QNKaPIGWF7ieGM?Ic_bO9W(n+A6nlY3IlNYw1 zj~%PFyC$8AYH3_FXd)6uP;6E?d&0nMrJS3xdN|?GgvBSxHGkev}nxj1vPj>%9-C z1QnnzyB^S=WB@zVKedIe=EMWH)bLP+bUMk=F`IYoq`X-d)A!n3i z?n*Z4XN&Dyion$)n?LImKg`a06_H{7l*qp~sm_ub9E^*2JQd{dunV74{rxy1{Wvt4 z_!jQ_o^_sNlqd^+C`Oc`jeiIRDs(I_UdVGltF}F0Acvp#QIj?3h*ec4yAY?@bTiL; z-@}oK!#QuTdMrtR>jWuUecLfb?q~N|BNXxrq&}b9!XLVGE&SUTev9zw;GqV>xoO}n z*Y0Ecwz9!1*?@%hZ@CWvy3QcGt~2`((KZ)dyas?*DqUrRsoA^gM)Kb%!5#1yHast znb>(xp)Z@LY#QBKbFXy%Yh0wjWA*$j`uy$A`ZxWaEYD$M{PFgP$J8`(`nrb1+=Hz( zMTIcVH(_lH_*lfMaD(PlVDP{mA*U`oSX7Uj#pLj~ra| zh?st9Q5i_QM_)}-(yI7mV{cp85Su0(1peH4FVvB8%$z(z1`G)dm~BDhDy3{;BwXYn z$J=PzK@Bmv>t_AjwI=Uk2Xy{>ybpA5)r+$FMO z*+v=r5afwB@1_+LuV3~l1tY|Gf{?% z%Yvpn&K3UjFI?=Wdr|OHM#6K&z3hFML)s_uJ8dewVUu@F-+8Z5_RPHbQ?B$SF9>owmVsoG&s-%1z_$ z$&;BnHqQ**;^+ejdwqzzWN4g7qF%1?qV0wxEvD*XJajh|re(JviP#mS^<(#WI%JC-ir}OGdC1#%`4$tU{9H8eP6v&Z>@{DY9J7Sl^M!`su#+ z=_{>5uZ6b1P*9u$=h#6ediZB!-)CSSGU_@YR>;V=Yo`xtJ~*Xjr!;V1rvxDO;q1tN zuhKIRa>3nc0&?{m33#R$*ih>`N`u${lX#NXee2}2c^Z0ELaH7HfMLaR)r_$^)aDAe zNxKf*)OHe_jOP^dhwS_p7?60ss^q(d=M2VTZd#^Bze}F^teV> zNd$FM1kGdz;4Inv>UP+pSvAGJ{`yAv;QCM0*3Af3yNL<{@}EHMzmM7wS^mezmH#_x z`~S1%>Rh;Nw4r?KePaBazf+EoU-QVN6*^WOQSe3E;Huwu^6v2@hD|_@_m_?HGvDm( z?u3g2CrU`{%zU5UJ~WHaqQ`uHHTLM=i;KaUuS<`H2L&O902Fij1$td*W#J6$ zA1GhkOaIa5PJh$n{?q5)7^}f*bR(>J>?w{aTI3BvgVUFOJmzdU4J1vk{>Y$DPUJ^Z zGjpP9gqY=afnODJna5!tddS>6z(zC%Z2e~BL$owYv6@;Z_DwhsewZB zdwKY{ySO5Xjc9T`uMGYDR}Fx~^?lk64qLZkL26W7zzwC)1sx`ZJIQ#>R3MQP8im!J zvme1shd55EX>6!f%jNSFsSo$zHF2PqmMN~}a$9Lreq27SnX(v@J+Bp8uQ~L6$s5_u zGFdG#h{fB3VI{#LLt%?ZBWxAw6~$6ha?PbBS87J~N});^1R72OxF}pnk2HoPoI!JU zi6nbD2urTh7-pI_VLv1My~SYGWaMEKnnX_3;{~}vCaU90dz;V6ny7Q7?E(~X>IJJG zMBn-e29G|KI&P+Cor^QE6IVCk&73nQVG=&t>pNGY3o9g&p?-eFNc2^*Fp#S z!pn&h3K<}+>8!qjEocT$6cYNFMWw@uT5J;z*qr6F1j6sc$~M`ui^gO|OR>S|t1 zH%~pgwViym`^tTX2$~fXwl!CFXGh1WD3s7E zQCrk08jJ1!@iJ$HSKP6v2Vz9^=w{QY%yCwtyW%huec}{)LVozbgX(UDoRGyya!$%+ zk}~3XY#L}>;RC<`1PK?hN)rmJbsV;$p25>4>Bt(dRv)U@%+4CU2gASp0e*3rjK%nq zlLWFCa`s*N!*xEV^>^gi2xp){B-~+7@*!C8a~34J9r>P2G@I?ZXe#bADcMvz9@3<4 zvY|vM60O3Luq>mP^DsPgrOIXg^;mAmtgl#Dli8I`MLrX4KfK6q~rYQEnaF@UVn7YMq1L=nK{|3hjFNwcehNn0VI z6Gkuk5l6qK{Ln~!eh5C|g+5WfTcKno4{|v|9j#HY%zm#q^d-Lmr)Rxk&sy$w{P-qK z!MC9V%m)qR-7RQKrM$R(GTn&9F-}}^x7ocbd%C9CDFI~ zO%oTKty~M{9F*hXw>Hgye!^Hd1xWwAg& zsnj=MR@l;(k4gzrC}s{{IW@w2a;zjjM@P96gJp*MVi<-YknyF z)_y>l(St5nUhs8aj@;m^Y>`z*j}v#&-rb)9H{e!7vHyEQXtVg)NFL=>^i-KmtVZAuC#yEIOJ4A5~SjpEmB7C=83!V>s+BZ zw&?u_KwxGb!od5pt{mu`xz+>>Kz38}10_CV6kgkF{N?L~fK8FujSvlUS)N#OQCS`wc#IH%dDE%X=+!Kh#h<&02~1g;;|U_)yszxopQJ>RHtpp! z$Ny4kYL%q7rMl9N2|!M-dm|-Kcv8Uw2|NeR1VCWUD}u5kBq}p$BQA@;O!iOg{o(uV zFhfvCIN!Xry|RMo9on~T@}(htxv&9+hY#xp_zo3&DS_&72~D*fuOi2vwoN$?{)Co- ziLHBA86oOz9zjHmY#e>U9dqt`t+wcz^x};bvE}zMGkv~WpyMm944tibjzomKz&37z zZg;q%1peTGJMRn2be#Q@Zvm)=1x0SmYpskXnV|uv6~#|;#{~}Cw(hjF7aSxY!rEo5a|Iwvf$ob@=rCl^6f~+W(AO{Dg%LH^P|ySR5r+EO;0y%U^!}#%V!&vlSF& znMs!+wlj4n?Lne_b@f-ru^7*Ta=g~Hnmt$E=MOa0ppT3jkUPsnfBX(#uG;=tA(5_y zgJXjc2b{R2=lpJ36Z;r>UW*gZSesHKb7iXcc9W5sSRyRy^Z56kPn6n!Nx0TZeHRcU z2QB4qBCM(?r8f{v6g2Mie7SEd-9r8TQ4Q9KGKSvw4l88%&y37d*YYr&pug+*#T zs~E<6*9I47^DFiDDFZpRGgQ#PC+ZzwJr}kLWBS2wFXT(>1Ryz@MM`}qu zcYhH^NmIVPM&&g7-u5N9`=Pfd{u->n$mfLcGUa2P@8b}&%gXas+2K7?fC>`45R>^>|0!-i{8 z0&IkI57nbP(wJ#GW{-Mcmi*_2-r*CAd>UvueGyQLA$0ma>4$tU!9fP?D8Z{3k8~P1 zN0a<+>R}&!bTxzbmOV<#pJYNe6-z9Si(!>VWi!^Jw3Ncsu+mhjpa(9gn_Q%6#LxH6 z{=1EV#)+MRur~08+Yt45GYBqPcFgX1<^Gj8eCjZ$sPRPwC2^VKi4$0polQC+Xw0ZQHdl zPr4!%0GtT~hmq#Emac-0)916$P20(#Fa7`n@12w5-xymC@D~i~w5c>zq@u|^#r-`a%D!;Ftf*A zmoeG`{tFF{hCM93Op>B6G(SSrU(moKt+vfb)HTgjtC0&{QPD2537nZmkv9=z)g2hYay^>n4pbT|f0EWT`vx(qXv4jBn7zb$;^xCM(U(1r zLgB|<(NS^_D+0mPr$b8fGYA8oDD8nK?Abjmv!uqT4Cbnw0RxBfI6j;CCB6Nn*;16K zVP2i(EpfJ&lc=9p^Tk_qvLp>!`H?up-U3m{CJG88+CXPpF(6iche=4tsD%c<+mP2R z&X2tDA(E8~l-^=vyULgH=?7ZnJ;jqD)B=v8EXv=ktye`;QNfw9L zc7;HN-RjtRSV*j+Zi3P~*Hb_;hssj05P_RNojSYW;4C^zp-MN3%B^37ScNwJ~k}9ul zSbtO0rBd4~f7`21d)U;oM1KvFjAY{>WLT}$2WBo1p!jiAOi9>H0=`n<_$69g^HH9z zX%;GJie`So8G^?1kA5d0-d&~OA?&i94nQz`r3#z&);2pp8JV6Zp5rFJpp#Q;=V1|=t;*PX<&hH1d3(J+ zS~a=S{Ha+ziDw%trdikXTYI~4IO~rrrh~R;J4>55+sT#jG2d18-JITn#cd%H+p%NxJ(jqe*%YNJi zV5kv3n`F@A1AU?K>ktMkQuq&r`I#mB@Aebb_Bn2YIxerx3PwY|y???$Sb_(x)?%eg zeFrHdLSg>z`f`ovuQDDDw3_#&iX*fXNzBlNi(|nnZ&E+!hdb0$O!ij3FF*~^+%ilgprk(mtV-YtLV$m_B2 z^tEiphQMikbxe%I%HBoor5lj#x#L)(KTIaOAsdE2oa(yYqkvihHFlz#lR6XclBhs6 zs~bb_F7V0+*m-kblu^Nbz_0Ga8hJtV0*~1=;G&&MhFGUM{lz$e?@@WaMF=+R%rJlAh!fN4og(JwV>mKW7-FvDwASqt45w9MyOHaC$nRf3kN4==|kvJZV$r^ zlv;?ib*4woC2fH`fD(qg==bMXDf`QNNP`IB>+!3t_`URn* zi0d>Q)(xo?2n%W$gM?$k4n~PLix35()8FOvB$9?C1Ag|0lf7v?K^LQuE0eXrvBg5K zzQ-pv3sl|prOVK5`UF+c2Z_fTo*ykYP z2-|VU##C$~mNSM&4l4p^PL2#_jz~+WgEdY#QdO_Y>9^_&B&DI`xRr&6YJOvX8rvO+ z-htGG`w1E@Sm-@(n$zS)Ldy(RB{zshJI}wmxzE-uF~SWclQIVydtqXRh|Ux1;Y|&G zY{3CXJPvM4S|j3ORTL13b5;dQXyJj<$)?kyv5Ddkk>nm=){P=@Y#IK$fVlfIkz=-(YXhp7j>#ubz zM=fMUWbe$5Epfw1x5O&0^I;G~14HSg7cuV z9Bo75bsWRi2CFWaxq;Q*JQ4@H!p9y7d!&OBG)--EtjC@cAznTWrd>6(zex5}IWg0| zb72&8LB*-zIpLjH6OR6AnGqKHTng2Lfsv1NN?n0tkQj4 z#0)Y=2D8tctPR`6n&88aNd{UVaqpjN`CQvlOwGtz`2Y+gHitt4@vC#{22?Mz8OR$& zV~Rpe$wPUbYFhMt{M>9hr6cE$Mmoh}VQJw6-(1kmsiBMi<=9pw)-Gd(U?x?F&f&=h z*5iWTI{XE7>5|}+z-;};&}f&i3_v^s1>{3c@b6l;bFq)s3~<4QU>AZSo7|fP>t%MX zGVb2!&pT}II@UBw>OxExvt;Iu8!G(;7QMSQ(%qj&O0dvSv<=u_5}syyOY~XC6#A7T zU;D~k-bl-?zrg@`0=W<8NSifeT(&kY(bKg!efU!FD&m6Zlzo)nm%6w;qiVz5Ymf;} z{0DB7ObyI!#4WT1&Q~l1YaRFC?Y4ou1Cs_<1Zt+ONP!={6Eot4)1;d~`Jjocc2&l? zfe#8E6BG+|$P`vCU`7@gXiTUBY!F8y8N&!5;VK5lS_g^24)&+k^V;u^@JR`uFGvIF zZBjOX2v0D$lk`x;{(A*apQeTD=hkeZrc+sXdUgG)xyu}0Vg`hu?n9QyI+fGkP@wW0 zr%POHRo|0#k>xcIjDbt3)6~%qLEPqGFpcuc?m19f4V4`u6@O>W|7j{GC5s7e(ifSv z*=0!MZ#cq@Ba8={i>{!>Nle-$Xba|{hd|#-(XxP8P{rh;DZc@fNx!b{A^J^W^9fpjFZXUVrD^j>w?p<2&*{#93LRs9AMcpA=s%T_Hw>08}ye_F+N) zr0#f_U}`>-8>Mx2KH|4o>R=T<-};q>>vd>=E1I^0Jvx!$qv7lmcOu(vVkS*oEFth@BpVg}UZ+K-aDIUT3eb#MgoX0=R8b(4r@e&6Cfnek-C8kaKlDUb#8 z!Yaj7(FRe}SPM3;_okX%9QmH(quY8AGkxD;6J0Q;DVqHe+7@rB!O$D`wXRXtp@3FK7S_3bb1#+{cLdcrYuJzzHH#zqjXL^h5^?{^JL`LHB}S3Azt-fIlRS9 zkc;@L1m{%O*zz(k)CG{QuK_#$odL$?J{}JOWtL3E2h_D><=LoH-PoYma?9*ypO7kx zhf0gx_N>lK5ObEet1DaoqW7Y;&zl`{UYsZ9CH1FJ>z!(Z1D8x7?FDsLSZIq6%bOyt zw9-IZD+p^gY)gd_z09Txq#lTkUCotb2gq&_4n>XUGZOEG)q|5jb>X~4uW$3#oGJFp zKor+hjiW@Bi`+*Y;1?CsSUr(Y+_*snbzUwT3M=1RwFKHGRbirt^zDG(2(*Ljbr634 zi?w$O5+!c7J=?Zz+wR@kZQHhO+qP}nwr$(CXMbmI#N3AyF?UW(MN~c1b49KEul!}M z*o<(SigPVU?N`coAlwY)#+H8r;&hjI!1<+i?$y7(U1zLXOmA+s))r_e88=Shy9Dl% z5D{Jo{}~aNrid&Zb<#$k%>%u)9QgEXLBwnjc5BD1Ppon4K@HFG^;rPD7(jjrq~l|C z3H~@B;VHd4a|YcMJ1ywSa-7+@>fPjfBOlH`>>&A$bI_ZBaiqfXt4D`=Ns`iVz>j^U z5E^_~+@1hS>T9)Ht1H&pHOT{#W;Olt@eVACwQuKj7$|?Ysh?QaVbi$jIp^=cWWnxL zx9e5aL<)m@9LdD8T9FQoCd8$3(X=UmN(o#@u#C}WhFm3)GGT`CuLlQJvISku7b1`Z zpHji}Cn6wADzS>PqHOk3ei>hR)`+u#nofZ6h&%pGE;fM_wBA?bX(;x$nJr~IN2b>4 z&WDQ5Gz(y+@ot9slN({b?EM!=iS`k>M?vYGcA|{vM4Pr*v{$wKIEP8{iU6C}jRp>n z12(w28E~5%qLwmSib&WNge_ig67j^`>18apeihutT*_g3*wDml;b|x1#LO=ax2aG5 z+M>|BoxqIqT)nrkJ<6FEw=T}T%qW4}RcbuTkQyWh=c}@A1L)H=V}gyxZ0(Wr4}k7H zi7<#43HN9z-)J^N#8s&$5?UV<`2b~;*$qy{hh6^Ms@1?7E9*WGmG;C}5S4{Wgyo*X zqF{XyOILa2U=PWc?g{lkW(`Hx=m3!&#H{hl&dPhR4a`#AD_9`270zI7T}LfLA8x%R zr9$p66fSe#xzAF9WSx2aUA}nSyp8d&{0>;Z{5i8ln}(y^DKl_1JA^hLo<#aI`JPiQ zQ92;@kZWB2PJ0cv)vH7OQGiP)NzbO}A^=@59b1MAj`mJ*E0-w1UxNtKLy~V2ea2iI zhrnsNE*bUsh(~K-J;k~PXdG8XsJM>-EGpct4;R)|f2+EeF}y+qL(2qZ=cI^Vk$Q5n z&z-RjzVJHqb)(zfXx*XAX}TiNd&_H5s7!_M_>?dOwGw<7A55FVo1zjcV%{d;`c6r9 z;&lCf74nJ0NKXmOT$Z#Js zJgMjGZ5!1mgDA32Si5cxS)U_7ay<0gxaH2pFoG8}e}u}Md&a+`nY{d?^jEmt+(5gs z){Vls*NK7MP3WqpJTNXT7O3mvL?`w~JjhqIJOd}QwmeSXW5hg3%A}9XFbHrYVOr~3 zo=ZhluGEH5AV39KXao_qZ)xk4BS-UEMfPb!JJg>_N+&>zM3cpWZy)0wD=D6o-RHxNsG9;TLT(TK4I0|p_ zGj6W?Dp`^70~)3v z=Lrp90Yhz|avWp)b7o*gE|6#h{l1K@FjWDHD-#P`v{{p#Q?UB`5&@R8SBjrenHf)( z;w9&3!k_5MlrFh8rI~81oN}u-WbG=J+>|eJmy;aQUXn_f<v1VkNbHwSqpdfh2Ir)eVY1)N@lA1A!! znl!ikhnJEzpS`Yad2M>|I;{Orkyk(h6bcL;Q zkEJ?FMVHw|N1H|+Rw{d?C7X$<&OpeDO1{v@@@zRR{G3_CoV}EjsPAla5s6 z)KERGgr%^f@@zzlGUv3Vx8{*r6T5jNAC%67!Y=AEt8vE!bc;pQyj1fie^aA>IU%pM z|F{!ex9}oSC>yAlOPbEPCR(*wnUki`L`anx4H4CTly_BVbgNm#Y)}ej9wG?18WfL^n%K=um)Q!Pv!;2WHX4A zOb=BQB6Ouw3C1*gG|*NoR>%hsF7RA7y*4|9$1HyhiYpY;Tu}uM(C|NAl6jlzqRihM z&hLyhLvW69{>X0lzyT4l5@l{D1pEY{CufUChI3i&2Z2%HfpBFCB zkrM%!t360A4m*lo$ek_99K#J5QRL_i`0B%+LNL`cl3H3^p1 z8|9O^M0I{<>oDs!V8nTC0I{`cZZ)QQg9Vz{gr@vFy-GUBR^iVEj5042cx(V2F8uIm9s1YJh8Q-PFz(&$3|-*KF* zR-99UAS+vL+OU8E23q^Dco+`sqmu^&zIZr5bJyl<+U&i#jfb>wC2m9n?@vF zo}h^@lzMi*a!A-boq*|K=KGhi&nS4xI^q3iX;U3mdVs3*+ zT3ShXaY)F|$cDnVfxR+NH8c+k9T{@@eA8RKzB2Oyqbv{7268XV`6jSk+#&8;_MGo6 zmQYtqYG9FM9io3JtU4t&^$(U@J9l)Z(`D-9#>AwIbT;=4iu?kgSt*uKyy_w^rBZPf zC}(5Bd$iaPjxU!EiZ&mX=6tfTx-&NFb1s87?Kdc9pJAaBbn(&3lxA-iv3f75wz?^? zo@EwV`*tQeZ6sD#PY2jqOB3zud-WEIBy*_QeU~&c#@wxY8lAFl{Mj9u_qpTF1W;*+ z1lPM)f2PW;_+jsx#IgCI#Lwo_I;e<=v#m+_q7xc!BKqalU&w_-@?{^3<+{e8hxDm) z*>HWf6Z`t$?N z)Nz$=%7?6?u9gaM! zm#U6|FN&_ZOFE7Zi+BBN-7RUa8CP-7N~ACx^-2)tAh*lw93u2P zIi}-a;$7U$>*KdL0vaL--Z`8!Ouyyn3;Z8V3TDah2KeWB|3`WLdrg8s002<@pJ|e! zv6YE{k%g_fjnn^z75{$_C{=6Q%rUf|nOct4WTZN^&h1$9Eb0LAdnd*>CXRKnWEz;m zAT(yQy(070&&}5?z^{ao>l1A8ZhSiy;ap(-Oav8 zjgvNo8fDDYbgGZNBTln=C<*oP2b~h{K|i??b>-A`10e$hbV@5KNOi#Ejim4;=E$nB zNl~>52j%sU`{-X1jd924 zIMmj-GNNg*$^{8(^<0929b_rgGGlNudCCdv3M|7iLlAMW!{Cn6;+PP@WpyHJtw}0i z00$NkwwGZd(#ao3gt=urNL&yYx^050+dKjQkfYoJKejd{(#&KUi)lJc zp<=*}~+lKl4yIfPdkLB(ACVS=-f6e?<` z4>5kU1S(KsIf6(ObP`n11GRDuK_S?R5(orK*p#+82KjR1Z+=Ky=&&ed%XB%!d>xTu zWrb%HX3!KpojX=T-;&sKKyLyd zc)52F!v%dSI-0D8vhV@WX?1hBhoz1)ym;GY6zDt;!Izv~10vo}v48xv8To)1U3hNA^ZJ`-1%Z4KjyZ*rX4*%`6p>HELZ_lB^0vo> z9}x0P1JjsN7yZ6x7;wnD>NN`kzHLJU+aQQd544!{{oa9980c?kjF5q%rNY+R!`xUR zF|@$?#T;qX+=jKub};rp1(Dg1r$q4M3$+VjjU>DB@86~Drm%7JEn2d*@whThim5zyKXD)wTKjw~upswT*D1@$RH0exk z8_v>;+wY@Ljeq$Gqi}Ldc0e?p$sLo$YvEKID>=;0Tf0WY5P~O@x(83)6LMM!civgH zMyzHdO!+5szvy-^U?KNRnrP)(K!qez!G*g-cMRW;U}TxG(Ww*(s1M)@AvV^R7}&1J zkERS!0=3|`3{2{1_HY3k@>!<2898lMo(5Q}j7zbWR#D3)(X@#&ZNrA5C}u_A7+ke) ztmspnb|SW?y%}$)+fwxi9mj*UcXx}fWJ=6m3$R@bZD7zln9W+%j#fXVrggYT4BM;j z^*c+5KH2+}3CL-#V8*lN38jH(RK2Ok=OiONKle`1W=~;g4Mw(g&z@kWqI{Ec z5DFP?4SVfnwArJ{Jlpzw1&grO8~mW9D<4xuYkY_JET|l@)Lj!xCdBKqN;>IiFrn2J zy-M&L`rYpugI2J3-{u96)agtVNA)T?M5A;kM z#OfObq0U+cK6N8HO>t-v$8!q(FD-~Lu030|sfe4*jnU&gBNIOiFF zx067h&TbZ`yv@`3bAD|?HZbm5NF@EON*pv-#AG&er8dhO2S# zxJSDMh((EJiGzO!?w1+y07rlB*(71$ZjWh z&F+3hJx6nV?yf$@X8(w2CCeVXy5*?(CtHprQ3ejuU?VG-o71)yRAyzlM125p5)P_htM!!Pnu9U zT5@$Kc5Ipp500vt_4ohP75+lVqxJu%kpI!a|3@K#1Co^i{?`=|2mm1Y|EEI!ucMpA zUV$OV{{MYDyFmj0f}8;Z0Q}eEn)lzP8}@{Mn{F6pVuU256^cxDCly3R;$tZ+HN%U? z@#+UxNd)Q(P1v_XW8AuWy)XOLw~I(N$FF9hbOjsc`Saz? zY6q$i&b4@=>5P!Vd8YRm$1YXp()O^(*pQJ#nFPh-Cfo| zKmokaQQJ{!iP9(kUi}8h`s#!X6WtCg%sl9DTqmc7LP2Bgt817jLe`lm@JKe2#<0y-40*y9*{-cE|+NDoJvQ6Zl_SCEHvXXkLF1ACYFWtu;H zL)+t?5Q#%GMm`Wlk{J`4LL6{Wp~;ELb0PdDrx;+75oM$3gXo5%{A;}m*JC|@O5Sv& znxK38t%vS>bgNuOn&nK9OihnJme!7#%IflPdpvBPk5@WUad3OzA1NCDpOd7Q_5r=o_kR?ViF|btq?JGM?A3`_BBSd{wyW8V)Zv;v@f&ujb z0zlI1?t(}pB67gyEa`#3LKb3{na%SmLiAw%MR)6yT_T^MC~OadBHT^Zhw(<|NAsB% zx+Z4A903tSCe|ZKWs=J41*HHsU4r;CX%F9~auU+$SWL@=7bHb^r4V)=%wpm2u|e<42upN1YBOztSlyo3P8ud= zm;e|hm!P#k2FfO5S#amHSW~oR)W-^B6q$86Tv(xd)WWwYn*!Nn_q5M1CPW8MSQ>rs z{CrY$5_?Ks3nH*95lC^6rhe&JlTu`goQ(vr{zX#BOz8;*as^8_c_(u4uZYw@=n>Fz zv*Czkg=s0BKv0L9{99Ctc~iyd!zS08C(Z-%Uw}2)xH^1xkRUe(&t=BF@z<7N15MZn z99u*h0aToz6-pZqZWhzgL@CS$2bx$2W@|9YDO~~T%MXV{3pXqSz*Lq4r+*%27Ru}%d#rO6&R;%p@lhdYGvv(ra{?>B zazuZlCx9xm*KvDQ!yFZ&-h!C^Uo;%7ueSUl2n~JBm1UdK$4L+vQT+*sH(;ruEF>Gx$` z4g#aTg8oi~1)ERlj@0pUKCy?&pr3|8pvWvHt*NzwQi_(ds8vm5&BoAEOrZDP;Hnz)gt&^?-V5a}d}0I#0@RtHD zkg;w$ouxJqfESg(sK-8%`dQO!HV>G97^3z->};!?8KV7K_o|((;j0aO#%yY`KB}G}5W8A+v$#Cb$3+W`!RHr%o)`<9ni4$w zgoEet@HCouSbAvc>+UR7Y#FjEZyk&gewDHLQ?N0w^>FsH4#uXqX`6|Fa=U^ikj+q0$6+S(U9mnd8Qep>c1^&SEpoJRk3z{Xa zX~(WB|5EtkZd}Ckg9`}Uz##g7HKSJDVg-&A0L93_XsoZH!O0erh#S~n^IWJv%;~Hk z>o_ck;%~gV+}c4=pDM=Y-$Bkv0O>PCZR|3K?BelYAp;=1FvvFz#175Yvx8vy5=NN* z1GBV@t^Py^ee0)BJNk~Mc@(ZKlHnkYe}CYKCl^>t_O8V%X=Y~%umj7JY`QO;@c!<0 zAL7N^bv2poUQxDZoGDhES(w_ibPA>LDuh6GX9RZ-te^HOYh1gR9^BQ<=gw94EoT@- z;|%;p==WiJ-Z#n(i~V!IXR;nUqKvR9-XhpQGBW;_mFgGoZ;|;|QE;!@ztbz+<8^H9 z4F#fA1s>AGKUbHLmayJC#UsI2Rb0`6Jv*|lM%_0tIeG}8f%o{eFm1L}0pVs^5D@w6s z*jF}FfFneOEO`j>4xJ#}ArWLwUY8{O0kzFGi%OpJtSyxBu_T+%_KsHS4-YX4r+og} zW#5(^j^H5D%&$XS>x94UH%GHH%CsQ!#Wrl2k@p#^$fRQgJJ*7!D;n3ZrD5^VqvHQv zOF@AH*u+OPODHC_F%n|;!9RL9u#+>!6x$Jd5Ug>idBd0Y!X)K%%B3&h#4wdLLKJB$ zVl+NAPuC;awzqWK>AkonYUKfU^(5NiLE{trMmJ9bG2r9+BBnOjx3W9={64E&f6Xju zM=UM>XH%|#pzsBA{?fj?r@Atpu%0l?#fdZNHBcyi`NRHz(0*mshAXzQE*_R9khuyRU!mnEY<3>o`M$B5rv9j@Jlr}`(KpwMRdmRMAr=8|Qf`Fp z(E-rBqzAO?sjdq2%(-$8CU=Q;13tQ0eokI}IIaDsW(^^?BZfWH62ESSk`}N<8s>7P zN>af(X*OhTRXI!&C49l8aja?rM~X3z;|;tL&svIMH1KVbrbjqR#oQ~iNU{!CEdG*K zz{b)CCl!-M6e2jQcYivL#QxP}b)@Xn#8cdnllpCvq+7-fIUK0F$@j1AgF~|fa}qA9 z^D*P~3>Pd#+koT^LlqZC#Tilf38ER>kjyn#2Cv9mBx0$g);L#tG_b_FP!obQgI?OH zNv8sL%hLl^oOYg9!+U^l@IeKa-Ul7IGcS_6;Tuu4w~%DMKV-%zeaHsC9-{C_ zKD2LGxfNg7RPXtyjI#=H4z|OsmM;pY@k(Qc)sj|!Bg-Q+D!avb>A^}&o7pzXCzJ{F zE?#*xf6%~gM%7yNM3N=dWqs89sJP?#-(kr%PUIH2eskFN7@Ys51Cj-sy}`JHUn>76 zWA=y5Z|3X3H94+p91s~V6VJ*-p;LZjsYZR55;6Se6dbk_q77upR`obI>&{CQGS#dk>?ZdHWjY`1}qTCc+5MilSz$@m=B?nq;~e zS4xtRGr*6sjU?QaWRhA0m~o|ag&UmO$l@KZSZy|sW4Ib+9zXBjd3;}e1WUKG4QUO; z878K;4F`q8tH2F1KF-C+Q*tw;E5eLB@WVh$Z~cW#jPZVdvIQ|J^%j}4&p1^~5j`Re zF!{Kux=_CydhzjgM1eUt@##K(IVzbo>_twWN><}@5_Qrne}T*Di!Wc3IM;hTM?(|K z%rp2jXwP4M>6a5NIen9K80xnEK9D6)ee-MNYbrx?1(@a28nrFtGj43%$&R|^g=bPV z^iz(*L}h{V;N;yGfZa4y>9AN&^QZ}MS{x=mCqZA*ITt@G9k%_*meb4D{{UOoBM&;~ z3YB-KaFk<|7+>)hYYCf|GYh%#LF4`#0x=kK(HX&J!6pN700Tszcz#p%$U2at z8|xRZcg2yt{c|PH>l-#-+3PPJxm`niHF-y-ks^s}A%4mwRvY7_n8#^Z*(G`{X&D%fXJsp`qxHcG4$#Own7OJ)^3(oJBPIUYYBm z!~Onge_t3xBRBqTx$q>A@CJhT`x-@WJ%z4)=E$yB+>5k2$G%WSmGYQYdO5!Jlbp1w zQ^K}6r=#{g+`yYtKn*>^kD|hWB)f7w0rCh2(Ca2`sE0Z!O`dgxQ1^OXH#Kgbci=R4 zmTjN5vd$r3DieCbXzEOz50++$tTlT;@|+YqS-6aJcaeCCt!E=?`qM`-Z8njk4YaS64P|@DDSMCPlSrvDe7{zpd}^wY`CFtv9KGi*euE*cG7o~@ zB-7NDo=1oGSVAk+i&)V&iN^>r*ezV#PAIm6f&muI#f8RTS#DEx8(3x1&`Y!&^Mv#! zh4LKvto`gPTTUYOc6+8&E*8(5Q2V35iy`~{9gj>?^uHfkWOqS)+}VMFxXnBJd<n_Vf7FEVw&K_Z5dJ1B*SISQ7R*lASq zu*RVLe6WGb{>s}hQaOu%PyBQi=5Y_HV7Do-SCc$cjseH4DQPQmM(yVQn$%QQNo{b8@UTBzI+M!R{9or-#_KSt0I~5(2 z-srKoMfM6VNK%fOrK(s=)TfW0vsRdbW{_`bB^Wl!`bHf+|3FKL^BSqtWkfRlA!#*f zJuwU5j+Nx$3vU#C*54`H>G!u@4^d~W&OQKS#`f!kMxN)>1DML*c$k}7Hx_&0(UNC= z_oK}Vr8Gtam!QVx7g&s9?#1?L=wsI|QUKOsti<+&deX9723?#!$_QGNBrhMlDpi9+ z(hOm$miF@TrF(V%nn68vq$liEZUCZZ`Tlu7PgGy18rZ{ z;BGfUa@Aecin0?=g;b@Bj$tE?S-HMK+C?EQC3qqMD||7?`c6;C=3j=ex`h6qMOryz zgGq!ut!>4A9lvI-*uQ3k*Qi-cK0w{MbVmyJRLt(K=C1+ySv+BFY@*U8JLLFSP>lsA zKT7zaXN(jE+!vG`k5=Db&=zJ98y}tt>v%S!&$YRf(D8mi2MyV-p~F|V<^=H!ndPcy zjmrRIw~k&U#7Yhv-_lp-_=75q#p)9P{D>1FI{&*XIZ<(SVAO4E2CPnC&7qx7|FwGI zu~?-5OVfBX0xZk4W=H{P?w&>d{Igvvy;QdXd5HNZ`VW9wlRK4DvKK-9BR>(4q~ zx6N}969(M-)!qmR&3a$C{A}JMi^}^ehpra-llYEfpb;NJe+T1&MjCR0zALeI6nJJ?mw>XW}`z;>&+sB|Nz{-@3y1OutSCbH)Iu)x2-=qi#5|&?6~_j82V*W$F;0# zzBzVXZe<1&v;iPRf(@lZa9*;3DZOqL3xRTBgIuM&WcBF|t!o8a&pN1NbPP{R zQGtc%K7mLimpMG$jBCWJUnGt>y9rO~pt6yNOS@vwtm@HRx>f;?SE=S{I4<$zhpR(2 z0s#PPNPtTWJ^ZL6@46J+S~9ge&7Br;OU=cfSbj334V~)!ibrPONEU1~S zQ;rUeeS7j^2y%It9<(lcCKx)Wzdd4;7>`UK+ALqx8(>bNiTG)N9AtFFDK^xJWz*U( zx3jqssXB*!88hi11J8NpUn-||_`aOn?$2IcE zN)S^!Feip6?~D%=c9@T? z>@9ODW}A7YtkqN^Q zf`_Nfm`${TIPe#&3O?7a*?x@dkA3s%9T9TN{LEB)A{3o{(0u)mP+1txocI9Flb@Zo zykO#w^*5M4t>>+=7*3`YeYUkwR47GVIVcqo~$=p!0#;^XzSM1o~{Eggm4{)0Qg&gU7rAZ1yEjR zz^=}P7UKxhU^Cm7)axmIwQXTh^!-I~_MHwP$n5T?pDw|?AiTNks1-)gTqhQ*yB{{i zkk(ge;XWZgb_rzKOw>yPiDsfr0z_Mx_Q1|IhT-~j?!b|FZp3pkWiBR{Wgg8=p^jd5 zk|Q8{+|il5v4yykeoe$dE`JzcanX9k6g&PHqD|YWifYFPm!>GjXjUvTa)Adprfos! z)ijZs?p|lL7-VxBdHyJs8^hI~>#ef{dD28Meh zQ?kjGE%#Qi%t$M|C~$M|sIhNmZ2m1dru!oDa&Xz@v;Y0h z=e~Pg5B!C7*TQP5SY^1$WfJgCCzfwXqsbhPmbdo$s4rtYT&{hdTDCh70eN^0L} zFNBseNnmD?uePWb7MoF~OPc0*WrLeLJ&}aQ6-{FUH>DS1hUwP5cH3#LcGS;o-(Z<) zxI?=g;L@9Tqwd}yZKYkkY1-^|i8$oo$e4Brt#K;kvz@xtvvZJuBR^OA)6k_XMfhrpo7)uM$P;@CM;qLu(BC6LV~6dc@D>Eqwt=F4v_QW%0AARX6* zcMOyibN2BiwE{1Vg|53jpByS_uF;_9p;?_QmV)f<)amqAu2y430*kkWsmh`#wqmX4 zn9mqav11eDI|L5H%bsM;PtlXHe_=8P{*wH`Ye(eKanYxO%c1O=RY7$DVeB8aDa1zu z;f)J~f(_L~f-rJZ>b7T$z%31G$cepH0RLJHYHFav<^uUtJ)Wxvs3g?+ROgq|Q@)|7 z3lv9xJ~Q7AQ2L_)^L}AH#q7^C`e|?% zgWoMAwPLtBG+M?xymnziYBL?=HY>&9KRjO8Dk(J#n6lQbuF>S}Ve202dCC6_qhoCw zA!S^NU@>(L{VVjwcEd3-&}eIV?BL$%>MIh-CJ z1O3KEl!XLI6aDH5GMCBPw}Lvy4*cQ3W)(-lEo4k;tv}eC6w`b!?4%@RPxAcV5!Wm9 zCcG|vhOf{KhBxnktC+;t7!4tw&b50XCnpr_F8oHDkVLPw6MnPQ!91C#SJ~`p30|0? z3*o_AGr7w$?eN+P6B!N&EN4LBR`ruV?1P&ZLnb2vI z9^3Bg+sGPt3WPromQja*rnieNlXjj=UTNN4nBo4RLwh=6QkG&Y>y_L~>EQXQ0mH5q zS<$=ef4((0N?h@P-mYa+c#l4$X4Jl~f3KFzf?lAD^T45CUqwDXi_3n$@l>s*uwP_Q zP{*>Z$t96*9h7BlxixJ@$kNJ^M;3D8<*Ms}!gec@emlsu6SB2VKAgY_fd1Uh3Q6@) zn%wciBJ=D;m;i17`KuMJK14Jwz1s?%2&0U`ESFr$IT5Ag_ejAS)&Ej?9se6A(7t-f z(A+a}CPC9~L-g?a@wsvwBd*J0#GT%XgSpz z+)<~sV6bDKz^4Ao7sZr}23^{J;F5gM25eqU#94(aXK1vsK%A!vo~XCIXvwd3ifIP( zI~Oa65V;|e{TcgNA*Iq>3o5fUkh6M!?o~K0g%s}COGAzHP)SUv1x?MdUYyEC{-tmQ zos8;Z?p=91V9ph;Q<`;rYmyiEscOboccw3K<=Dl}Xd6iNvs@2kTFw!wlj94iJ6qY9 zG>ZTX61Nylk!AXUcII!aNVN#u=B1f=w0>-{*WBvNi$LX#iVEUC=M0y{b#38XWQKec zqq<`wxKydnr3#~;<2~h%gg3#!(rlzzN7u8~cR9i$*StnWaG0091jp#1l6$|ETNfXe?2P7yV>F?P_mGWRex`tM23{{v3t--1{yPNd%% z-Fb9f(!JrpL|M%@d+4FeN3?Lo`oxOP!viE{EIFpAHg}A*wa->vS4%uB44Cz4mFrNs z@bvf&&F{DJPSVar|IG4;epP>vubfB!bLz`(Kjp!M1Ke}q)}X)l63!^TA~wcIE}l5x3|$k^wHVa{p2{nE(v3diFz?! zj_f@@W=b$01^uF+L(x-b1-U+Ys&LXSd8QP?ET4kbToa=75gCGFbnXG?h1t_|G^_n) z8DiA}8rgwau8jC*d#)dnZ4e~bais$5c^b0I^W)|pWl(>DpVo5@IXakRY9X!X8GrPd zdf?PQAEUzCP${iKYGD|H*?y%5BnpQt@p$2CWkwM!>7|=@^w|N_f^&y|DZZdc!$3;J znQmRUm>Zi43&p{WUF@1;7R_)d_?}2cP9BzrGc~__?`zn*zFvnXFC+J7yHk6$w0qk3 z+b=8kLnB>Vf30u`I7g1DIqc%+U=^O`kxLzsDP_aM;e_*iP{SAUnY|axf(*zG+xbnI zB=(?Lu(Ah*FvLB&kp-v@H`8Aff|kUB6U9m$g)*kQPujuy^ndV0YzPi8bjIaGnlheh zjQ3uOxgWCZabB=+DJAj&H8-)rU3L`;U7KYmvzvnTP!9G^?pp>!Y!@C*NDaawOB zQ)pNxIyI%2st1;(k?8|bhHn(cJp)Y>5EOU;sbs5a;LRCn=@EaTxddH(q z#u+Bsba~!rYFy7Cl+g3nswr-hA>Q38O|qdl+;BhZsyFQjqMMSwugK-AhWHMU1U_Y_ zV)nG-$6p+PbVwKOh>if@woi#A4+(<~8Q-Tbre7c^=T8r~sw{qrF=(2(Vo+_EJa@R)7^u5H1=FKQ=(y0lVTCkk{7o&zKI5aDW9ZdCQm^O3Aqj zVR4AzFWaYyMUS5ePZAp>@(OAd?;yeXow#J-jqUIxMJq$+IBuMDszV8QsifM+)_ zshQdpyG91a#wXlskbzpMSihNM4J%Qt@aDbxaA1q@LB2=FSluDJvDZTy+HItu=Ev)K2r�MKhF)g2t?-(@#M{D?@=QQ? z_oGZ37~fWCZe{Qid-QvUswg)}RGuXXWsW^Iqv5n@MSuN*BgH*^y)1?Suvu^*O_Pet zU2c;0QMD+7oKv4vKg;b3P6vV}Hwlr$JYaY=YoKeKO@0xRPNuFLM8k*IaASJ671pWl z8osS$a8J`N?B7wKS_%1MGItL`%oFPv$k|5%9UTrkxf%dx<{H2zgmhX>otw!svzjK< zNZJ|PM9fnjAYi%b)?_;xj4Myd7RNU9y`ypva6Uk?Nr#&~E#CE~a>oXfuK#1e{`67s zMmZy|QH};F`nSz2n=BSBwsu$QlZ^`70OOnW0CVrU;DF~RKRN;UstQj1m8|mU!sIzJ z#YGEu@0^s{aNX+$yb#+mVbV66L0Y@}Q|F*3mE+^<28n&3&=o6x=gmDeQ_L8Od7cng zo1Md>rjod)VnJoZ(lj;M@|7g>)oK|@6>TI#K{Pc>9cSVzQ;JyKQ8-z-Cwgkq#I+S| zh>uU!Hff7b%>ugpGS!Hbp9)pV$NIavy0dxoYyveJ)k6{Eogn~Y{MN-naJtHiUI*xW z-eMY*vxU9=0$uX?g{q?QxLZNO6=ZOK+Cz~&?Sg+K zS9O_qTf^2VBnuxtGEVho@2w`JHjd5Foseu3L$i+SgL9oV2Eys~KuI=a$BHPc#Q zj4WEthwLow25s__qH%PrED%ZM@R>x&eV;Utn0V97PjB>#YZY2GVWOAHa z%EfwK+Xl$)mW@7ef&KjQ!pPe4sOKJ)8hWR3*t4TM@{6on=YGBO{7_OdNOGXJ?3@h? zo6>Fytj z=!m8(GuCZm9Bk6^wz!*NwgrCPgLZ%F*@U-yRv!!$Q_Wv+7f@_u_I+LDrCvxkMw?H8 zd~=)cQ;|UT-k6=F8FBqs5^1K)>QPX}Mn(VV>Av_n1YlX^94EA+CTwT5k{<2Stv+ct)YjLnj7&ETG2-$MLxPW!d=Z?r>lXjiThw;pau3&8NXS>xL!Ql;1i*yv@!~Q4QvJjS@ zPn3{yAkNff$_5x)G-0D=cz5+=jeA}+zMiifSWE70^hO`iULE~A*glOqm{MM4e|20{ zx>3hnKYQ%7E+32W#s^-;c0T3}dUC|!suWg(I4Tq}=9hlV-AS9zLSH_(0z5oi-AgKa z^axo0Qd?|%&&u`}W_K|uik{HG@U@2gb|q5m;T{l8VK|J$(9|3QhWrTHI} z+Gn-4Z>{r>bop`;i|MIFCC|bMTs=^VGzG&;)b!ZxTBu`jS+6f?h z;6q~OfbJSawpdPMZz&~>?p!MVL$Q<*#UqheV|z~IqWIszrYS+dqLP4b)@cJ2RUH`{ zVYNCU<6%KRy9N%?`~B3)r^YCvn8)3eM6r;oW*A{0oLV3kge%Z12QVNw|7MGc&DATo zG>L@(Y5!;`nF&Fu_@V6oi?VYH&IEYceQaABZEV}Nxv_2Awr$%^-q_yQw(aEXzfOI1 z&c#;;S5wtDQ&TlHJ^gg|uW2wC#HuFDek7zZ?t@E`0;OM5phjR@DI$;ZcjA`*wny>J zT@G4)>04cNWRofbPxN@ZIPix4&~4`c0H5}Ei8!Hly1l*b?B5&9PFSGp-qu+0(gWpS z7Cf-;H(+tTpGY*hHa4U@7;lL|)$LZH-Wl2!8}OM7%^mtxbPsA%E&G%bej_n>S~U-GX~ehoFee#rO? z4h!Mm(WnOow`PTpCQ;Uj;TFF7i1I%$iBv&Ol66wMYRhsJAp?WbS3&`b^9Z>Rt_M#n z3|qbIKE+vDL4}6Mn3u)rs0?qc3~g~TwQkkJdGa^QqmwpAfg>;myw(?k2Cl)te%jh>+Za zAr6%+7A^s4-$np2BhiV3_LmF|=tDh{lxg-$L|P_)g^UO^*GvB0Mw-%B_+}H3JxL*$ z#MIucAhcqp8a$qAFkw)};!C<|J_jhqah10vl^Ihenj*t1w<%!kKc;6=at0>3T6Y3= z;+nK^sjy6c{=kb0`HK3WD&CeJAy_LDNH^;f0}*^!@^}-M2y&I1m$Ru9gn6+3d090} zDB+`(#0W(uKov+Q<7CL5x4jlYV?+m((V#R9U=Sk5NgoQ(&)2zIG-`X9YY)^bw-S%c zp0YO!bBrgOUI^aqj3UE@IGh*Vdnx#orqWgMR%obZl@3#6sMAd zdSanJrP;whO4(V{IY6e~L0qx~qU8#>>p;V0TICo|YO5Sy%n0IF7U;XEx$iNHFObL< z<(`j88IQKNrZk=p)muO!AyA`GBngcmUG9(+m}fYn&t@)EsgRT&f?2H}g7qM~gZIeg z?4cN67eY>paeLHs^cJi$))qXz;z4aWJrbp~Ft8ZZDy6y>bV5Kuq7~Z1azdp^XWo|5 z_-W-DF$&WDC;#g2TyraCzrZ2iVRt@CqYO%ayfN$V6g%p4w#;dj(4X z5yitJ%dG~z9>KgS6@L}suO;ByJ|6Lm_qFM0B59xPpt?Csx zV)K-W%e|44hUosIy(<%ToDXvM#x6{?ub#fv-z+FJ<3Y^DgKh_D_byqTy7 z+FbZqtNvlVQ>Xn5{-I~zLG7D0ppXXIe~S8?tI+^5GYA5oh4IoZ0}b$oEMRl~;ht!1 zn0Y~NAbX21roZk#dC0C0MD~RIWc$bViNSq#_9b_6AVbZq*`bLeq$YNaga9q+xuZAv zBN6||q0{&;o^EsKNS)L)9j6&G?3(D^(B0`K6E@@ z6AQKfcDgsN!`Uf&GEnB-nM|&Y2-|@AtbO=PX^JB|%lh&Bo-5!a?pXj0!v9ngd(Qy_ zvC+e)R&-o|91a9ls+6#@xv&jw4bI9Yrpauxa|y0pPiDx>mj192RqJj{!#^IZ7xf3UiRVc z=t7yLG@28`A+u($8WyaOrPxtPT%hiV+$Gok%t;9&QY9!9I*|;mo|4{OG(OBAQ?}x> zWTNCvDcF&$pLcH&o{}&0fZ|PJZtm~z{S_&c7iplm##I(=L89XACEV8c%GrW`xvsy4 zWp8a(jlzxLX}Z&m!ow#matOF(W7i(-dqOIQm)U;Q4J-F$MkBLKZ{&kbU-j5nm=<)} zLyV6lrEn_e=Z0y!YcFKwURN5SPl6CAC|FS0N8FWg5s~yaW7`!6gk`oJ0D(b)$ zg9gmKt8&4l@t;}LI4%4w=OA%I?c~GFa-YU!u|g2s$_7i6w?-&#E8}uOaEZvdP4b}r z#<$}~)-!xZ_A|9R*UoZ{r|zm@j(l5IhtQ6k4>};H6-gRLRU@i9$QX(<7STfm2Qi&f zkKWID>aA_3oy=?aiO+o&j-0?3i~60Ti_>XIJW0UWdt7pYq%U}~fgWYnX`&luJzjH{ zxm5bXSeV!lj<*~31)#Aeg$UO~@&Y5F4jC8%R}f42T+NL;0CrZQ^(n{{_Gwd3TZ*R$Wu*;XAlB^1-4|vY(Se`;pJ@l zG$>tSJrL?EZ*gM#bi4IualDD29ino#4A2qnejB_PM7We$+{)l`ES#=$xKCbkyUO2I za)p@}-}?WyZX`K?EVK1|)r_1>7i34#<1SW-NF$yI1tMNDg6OVGs%*pM z&-8YOfO+M*X?v*n1>(F2S_k}V?n~TK)#Bb2NP*o=7HcWkjLW{Sfq6t)hcL{xT*u#h z^V*O#zrujleeHs}f5#T;hPDMu)5^!Wk|;&!N5Tf{&X2!hA?LJL{}rZV;CzIvAfG}wr9Kz6K^QNByI$0u$pU5S9QlEcsGM;ZSl2pf~Cx?iFJ{^6i$jrAl+kE%=H)JSS?revH+IqT!&O{ zH6^7Hi+PHE&YI>;27adrnn|gNc`FE01Fr!V-9)rvK>d_#yQ2KOB~1W(o#2UTROULX z+-3uEjt|z43*;>_QF*udfR3$NR%wF_l&8#cXD^P{ynFBkyi2GCS`?aIX|jinN~aQJ za6N+=!+7Xz%HM?%@)RLGYccEIPTzdkxs#S5x+KlWIKRJo$c4SUbXDg9`O6nWCj}Ia z@Tb=%aHbi_U?zfdjX=;9Oso?hGehm-Bv9nT)V_Y2vdiF;8ZAfD#3IAGW@@Z}7NSVW zWwun!KXVrYz%BD}ct?1Rs#N_kn8cqfY<2J>OIDyk#PH?;S87xTkaQEs`No#pKga4+A7?VEt9*=g9ui@aL8?f%nw{%zgpI$xaF5i`sKH_Wm+ z>KYZ?)9eIX@dY}7rD2X(SW4=+l1u?u1I zcniK{+7`}T`tyFNlZs!OgM}G|fI4@nk~MI>`^?dq63M{0a+C(EkQW5tM9DMx84EuL zpbTOA;5Hy?rEc)mghLSyTY(dA9@WDMCn$?3=t_Lfi#erFo=~}A9Uw5BE5AU6bw*8X z%m+zxEp0{f9jZP%?-UkXlp&mx`3FW5N2K{vy=vbbCHUNR-7^WQOGrcM9>kx7Ai!;q z=Mu-9!BV$Q5pO@$VG{9SE$fB~uanK_4hiEFm{iw~&JB5u-YUAijxl#gY2pErH_5^7B8U~@fvXzEdQ!Z&g?>R0k|i993z~GH}Qr|!}X~&(H!sBEB#9R zzmmOuU~XUCS4iLQ4oJGl!Yv5bJhp<-z;Hj^-f5+=Um@bA{BaGYaKGdA>u51Bdm+hb zhO%X1OB83w^dD>XLY!m#$3_?Do3s4;uhVV`SpqOnMmTcCzdWy27q*sJP2hW zX&Fjf4_21lfX|*3ul^|RVyvy&NHbC}%Mf!Q{TdO;op-hKQ@NIBo|sjpxP zW!W%Wdi3=9X=QAipGOvSYI|n?Xp$`Pm+Mmoz5mpWFUET)TDdUILew=H%|Bk+Lp?QN z6vU`|>C@*Jol>k)vu+i(nSP#$WtlFW|7-G_`%9-@qd9TMQeYd83>_OvXMziW4i zz)%$*p&dpM-R%6ctMbQl6o7d^zml@bACv67u{fY|(vi&&+0CKh0Wad3i6Z z#kMu5@CUd~bvq8|uV#%Fud!D*R6<%+)-%6mmVd!Od3!mouI`M+UA|AB8s;PWPJ{jJ z=hs2?uEh61k>+b&_R9%Uw^JW{Ik8rn35u*l2xG0{3uR#AQIHrx-wwZarH;pc{UF~S zI_dF0p{EAWJhu?0vd*l+e#4%*4}#JT^7r5DD?*hlMwo&NCEmr+|Sv( zB$o4FIKQS@biY)~^XJc5SN%y-0g)Q%Dqfep0dc?^Uz0ubt%4ojVYOAIo6b!%{3FWUS~&UR4wtM=&19xjvw3FpSX)=%E^v%3Xt9?L zo^5M?UXK*~N}oZhX_jYrg@%lFg0Kjk`1Yoq(1>0Pl2*YXP@ws*spp+Yl)+JheX-gf zhH5Nd{_<7eNIhs7=Qw;DlGT*O8xU{;doCurNuhO#J4t-W-3HPW@&eItDERzS-bl2; zCDYfka$aCE6k>DP>cGa6p{T?wyrv*B{5FqmZuw;;Qt(Nq&$NbpvTp~?!iFsp+7-;e>D4-rb}i$mS!D6%qU^!a+baJA7b>JX0Z z+()x@VdZ&_uiigr`S*zY5G;#wdiESzfq5gtAze+7zD(`bJ~USxBE#J!eTqLHh9i?H$_ZYr!SJM2S_Z5 zEsY_wc|71B{k+tuoRVc61S4GrB%aJNFe{V2czm&&NY z9%PIrPZl#p1U`BCQ#Z9{YHjLrW0DDSYM`IaZNMANHjFdLL^6HlxskyjYWhC5^_)Yh z99%zgl8i9P2#cPem%Z5)-GYyFa%SCnp<%<12{qQ53j+I z6~Ui*5_hihVX6(T?Glh`ks9HPV*id#LTzOGN)Q&f$+CtL#1a4G%F8~DK1*dnDs3AS zjRa;J7g7SdzaO8Zdc|&MrY$?uQQleG-aMRo9^c7!m3QPRUsa(4RUwC4UCpj2+j<1& zRC4yz6MNUzBaZBKg;luBm-?piTHa5?{$)-&wr^U*l02!Z|w;Y@kDQ5=tpy>D*ysID8@-Q zW}H_mIg2s>9d|m2(^!4uh;w#Z`<_4O#uW$uo6r&D0EkgBz&2WRRbi1MU>;=^3|2lF z>INLqu&{seWwRnw}RffxBf@DasXNu&8W_Qq;=8pwfv}#ObgGmrs$kQ;70_7_o%J+D%Qo7|rU)>gMG$uFU9LEv^ zqte8$B})wsk_uN2Bz&)a!V4bV7tfFoJ3b`jyaOB#{C~3pdN115BHm5wem}c!AcBs} zKx8u;_H{oP7>Fm1bbG4ViE&@OXsxN)!Es-`xmn@@kiO)TrCNMB*O7H6gIllWeL_dy ze`(L#J-grR66Kkk@^x>YucLdxI`*J{DKsgxit8{_4vIK8WkUSoDwmdg$e_chV6P&)Qg{H9badv24|Q zMu8Evh1allN!&$x2l!M)zaUVMAY@JuP<3e|z9d?sK^pr!(j!6fb0_*Yhi!QO>FQex z(9y|92axyE=>Ci&_&G4Vb9I|)9oD=5x{0#uUbn?uVn>ML;WmB~Zhil98$KauTspR& zVxRmtICgE5aIG5tBGR&UjT*f2$u(UfpPZ%}@1#ZI_)&_9_|$RjDujH5>mTYL_H{HdQks&ycb$%DRo}J2gdt($vYxYYM}R30=M} z(gFiXyE=+LThg&zhoBdYqI|TnzlGznsd-54?zD7BTer~C?H{y8fwshbe_?0aSKHhB zCr$px{b_Hy(EaNL@#g2_O5V=*&*xj-Fu@LuZtu?rKY#bv#SS0s_w)Cbyd9sncK7>H z+5UnapO5>;i5`CsJ>TnARork=FSSX@>q3>@cZd4}zu(X8@xkcu2Vztk|IgRfhGDzm zCt{uN+vD@}s8FA;$Jg~r-uCzXN|Y$$(0&e~_vf?nU5oq;{X`z^2o7Jn`%l{N ztQ}wXx7OYBQr-^0>*FkMiT?ZOs!VS}??d{|sSd->?`dygW2G11^<;4OqR0RF^)>2P z@94na^Y!|^Rn^Ad`*!v+3>T@V)BSeC-s}Cx`*Wkp?WVZ}@H0wp$CtdIj`4otSng)0 z_w}}w^$>?H{dIN~#$LytVs)ne9k(v`m-CxC-5>S4 zVfB}g_G3RBsD$M} z&n1T6cmHId-_?3o9953iS4Eb{PsP=hs=-d%d(zYB#Of1}AH}>=(~hYgCb|g~te!@` z(AN$o{upsr*A5TK28a%+r1ZtJ;a%FsXF7S;KJ6zBCB~5nZirH1n@+&OgS9zJ-Bp?lt!tnHbcio6J? zl5KWl`lR}uGX~^Ig??pYW1xp}?7NJAiQwzzyyz#GKyz!GzAfW@>aFRg+P5Ozu&(J3A?B>+sHxiqF@MACv6a&v%Z2TracF*XP3e%f;L0br-<9CBGKS;q84TE^qsX zXZLmgLs)Rm#^MncRX6jT0K@F;6jVCH8nN%`gfy@Qjs81FPkXr+o=C&vl4&+nAK&-j zV*%03uGqfn;)Q>AWM`8^{rPUv?s2qk$L#<&P0Prhql9WVscZvDLw9&Q|oeW8* z*Gr>ab%UuF1qrxW{6gI6ef|D`v7`5W<&W(Bhc|epe{EnU$~<|5i=MAJO z{d~O=@FSEyfB(8&N((ahx%(dU)A{~9J{frHqQM(}&hVoj`9l1f4EcGP9R2&UoJ-OB zd7#-013?odN{b`i4%jKN8S?C+1_jW!VMb8}Qb}lQ^jA^2b8ieXsZjC84uIe{+N9!R zt{qctpu64y6rPUCLPV>tjPCNj46|yg`Wn1{7<&M-RTPgeDJx3eD!lC!MHQCK14mSN zA*NC$-P-PKVZ&vJy#P(`-ma~$56Ve9zgM3l?&Jvr^IOcF-g1k(yZeJIH&Nr;Mtx)K zPjukRj2p~}E|kU9g6~&h^vku-BE;_n`&`yJy2ZBS{^pEKNS5fE&w!OD#Lv~~<>D8` zB%iHX?Tl)NZrB}yk2I%!Fs2_^R;QS$+ga@H%K`OHD(#Yq+2s;%FA8RYr>uW3_s@y? z4WN$i-}7*{G%E^LCfoI+!MJom;-|=wj~R7*)F{a<_~U8&((0|?(Q94fimKgw-!*F& z*JegvpS-$l6r;pXqaLPefH*O0n`i`h^YqB7oA9s7-q`o;?WxgAHSTJXYi9qvE=2BA z{h+ea+cFAUtG(U`!;d}hR6l}z+Npo=Y*^h)S!6;oM2|*-pHbVItoD*D5`9RHz-o2K zJh`TWTlBYgNaG$Ws795JSIPRI>s8+=t8k%#tu0rv*n={lTl!A?)5k1pxz;}#k`Q1x zop-q)sK}f{!z#PVj4J|31Q|KS10&0sK8mD2X3+@8IEc&en9H+gVXcour5?@Y*}{35 z*d*NWdgWT7a4mKaevVPcz`$?pC9$LEyY?(y`Ll6g__Z-&qDPzd1|xDHj67og(7#~` z@A>tT*S6}w=LSKdX_?vh=|2!ueR5F#d#lB74b{Gf|8L9&-s#rvh=@JF2k$Q)^RjMR z4!vjYMgBkpfVc74UOL*Tpa=OPxm%u$BBWIh*U*p?TA4xx8)h2MrLLDAnOb8Ja1A(F;%)rzn zoUUJp)I=8$^Q?}kQn?b+mCX4G0j`Aq9Un{C1~1;OZv6yI)|KpVB~<0h-ed0pgmr_l zOr)wLdk1{`2%rJ@bZpijY>}yb^_MVLu)7xyHB}NnOXhB_wup2oYWpmm_e_CzSnK(o zo`xH?!J7ueFjxYiZx6;%!xd%d9&~N!v;}bFpoa^t#HMmM zytxL?r`LAZw!0in&3Gb#17F}2qL2%x%p$`SO|VzFG)m|%zFW+o^v{rT>8zPE%}@S1 zlgi8Mzek15rLWFNe9M6C)8XggP)Y^O);ivYIk;XnT=P8w|FAmw5SX=f`F8pU}S`(!e6DTOKKdbGt1X}@?pucR#YoS zn#{x?JPxXSa4>5dYAp~QQ+s&!Q=Tx z2u-u&9K$;lts*7P01;L9VKBW9g<}BIfb%Zy6Na+>@`sC5#?DHD2npW2XcwR?UijP{ zp{+CujY{-qwqlCK-5d6_xEt zccR?a+25S}gT*kJ`4Bn|2OiL)JmBnUA}Tm{m2&6R5KAvch(9Sd&ZsBO{p%==(VPg1 z+maFU06VTzElErVzTh|(8=EN2C-c0qS=slIYDb=)kzUiGBne953`!X0hfyl0Ya1-HigDxOSB zMLcnRcQKCFd@&>^fpKNkKB{xZrt; z34A+vL|lg+7BdEjhsf2Kn%`OarrQ@x6uZ8Wt)ghy~B~N1TnkSyMuofk1|i zm`%tUa8j=lwvV>D8O}e124|QkKS0utYCuBXBUS!DBJm0!zn!Neh2e9Fv1%SvQ~S>z ziDmrE<*HNLa@KtHdLyd=$I(eLjYs+jRkA15J`It79!ltp?(FB>?}0F}U>1(ZA$1hi zDA^4%4K9-{dY2|WcP)~n7D{`}r)6;21-;Sc<3o=HYf8uk-f?9ACb3BVkcuj$vN`>2 z1}8Kk15y>df>=pYJcYSvdpKCT7Fgr+=Pd!gLK^fwi!RsMC}={;z(LY-T`Y#?QAwr& z(fVXT3GsqKuVTADf+5!HiSNTXQo6Z$gz ztRZ=rAb)#oF&&GJ0N@DsM}S)+F9)cGSHt@-Kx8oSb$x&4l>S^6APU*r<}iq;(C#as zpSBNSglTg}IW7)H9VOPgl=D`NtjF_`z0`xl@;dZ>DZ8IryjBRGrz@Iq(cA{A${m_` zEY0FrHq!{*XLYRU6k#P@ANj~v6((ESr5n8{@t(_f94uu3bMWLF-{|7zb7ydte~4rE z7&$Jg7`!3VY%>#c5-;r%dp_`jF7+Q^a0r7e{OWsuzBZY%G^~nE%YhA)S8Ji=&a&rg zQk8_%2`)D?Qy<^p9tZ6MFr;Kh@ymeX#l#{m_(z39D^IK`RLui#QM6!UlfFst>Ho6h ztTv|ll5lPY7p=f{*vi*OZW~YNFPj-$W8R^v2S%vC8bZSmb7om+IkSQg+kE=#_OId4 zw{_f8LF#pQC6ya=qv5DL0isN-J>G}dpKF+`z}(Y+MPeN@B0rMJ@`AjgFi^?Rm5Pdj zH8(UeQgUFlx)3leA^L>*yz#wDrJZ@1fwv+<7d#v<6Eg$bK}O6BUu6-@f|60xu=8@*ikE9ZCqJj(43R1u9g= zMDx#;It&*XGkHsU$6X0QPvq$2@sAf#`XmZAE>s&(mngMl?+zi!n`!O6)b9R;Kfe}z zbQ`QKA`>RweA7lRLw=MNb{dXPP^!FCXPkabitFVLs_M)JqJW+g2d0r>4&Q-bdVqnU z|KJi&c6@S}P=uY-Vyf)nT*Kcb#B{8Z z_KZ+>7P6!URw|GgooLb$YkU$nBOPvFj^9OoS659Mku zVQscV7t$J2?m4xlO7taD{IF>g!^5{dcgA9Q?#>ti3lb1sIY>;%fdvj0UlBkZ^i)38r);OB z7DLHvKA-Et+rnk2D;qCX3PbKGZX!epB&4x&=ZvNSsM+p{q*u=nC$>C-xK`Lml_m$P z4WF~^1Z#J>8?sE=qyd#`Xl;=^aAs#eGljS?ydurjGR!AO^^25=d%z z7SWLz)CI1E{9rZ5{nw!C_mM+dYPF$ItmedMEp)=N6bGV2VRljIwsQGl6a@cN5fOq> zObs<@HZ$_g<(cK$f`|c~mztgT7tKD~#A^(~^fw92OY8;57Pd29KOpup8p^A-{wpab zQ9rbw^+kENW72wMeHXie8WcFU!IK$jmvadM9?M;>l^zr!7uSt5_(xL zShKlde}v{+ee$rW1|z>i*`>))yW)?pVwdrww|ZeAM(ee7#L_|Z(^FBUhg}uvZ3{{M z2v!mWJmS2H1*qI_%}z%syUyY`2pVS>=5jLNrRjry1mQcZaWJafnjAS0g!);CCkTM- zuQ*Zg5H=s-!Vo==2o_eTa^*YI1!gqQXyph-8-*MY6vbu`10{1X6;%lCcoTy|gAKoh ze}k*Dv|zPn5A=MyKVOfxvR3lG+c}Ik9^HrMy-+Ocpwkp9xh5U^lab7+V2xbO!Re0xw}?>KX#0T&>yb;4FXv@*HMGsEJphEVz@i`J$-J8Nvt3%F%Ljg~!i%If@%W zj0K3cIJJ<#qV40xc`GMbHpS|&fcXS|IXmzeE%T_>Y%Ux$RrA7kJ=;@FM1!liK_%gcB;cm0&fZTXv}UO%9{+Ic9I|Nm)3d-)qX*r=Y}78Gj)d9XGy-GpyOwH zDc{N$Ma0~|D0+YADM z%;20a-xL=*(i1DIxpMfKHhkwA1@(8L&H~a=U?rk75lI(Tw`o;785tXMXMv-s<;Ap* zr&`4N<2zy)x*#1%LCyw$)crFn@_>-8;Zf4#%w1s-oXyt;VTdN4xs!mfl1Tuwe^Be_ z3};R>UlYBF-(JSfZ6{CA3BVz`^dZ&NpHd{C{#N^a`L!FA7Cw(QTY3@SB{7q9rA`!- zirO;d8U)ugvTd9B-2Zipy3J&TL_YI@l+2_$_r7Z3pPLUbiz33frTCHTf?6kt3F=5< z>5)7Q&V6!E7QDX$15$8)<5Hu(T~hn;&u549bnIH@Z_tw{f@gQn97i-kQcFO(z?kaq zNvqF{>)Xx6Ly!UPw}z`3!Wdk5-nb}8A>!2&@L!16`W52ilMNC0T(M`9T+bQRcOhDC!kvX0{G?}34uo^jmsyWCq%3sa z-PT{xHLQzBa$(ITD7=_93Jsgm$0+YceFzb^iyt##1t=YPQ;&JRRD3>jxsFq$=H!B; zH`4LS=7EoElZxf_WFe|R5fu6UVjUv7Z0I46v0UO3(B+=7Fyg1f(zwr zKfp+iAe;KlIum4~MOZ~_$pR(KZIBwe$ebUFtVTF@FMu`cR5W7dl;C(|1qTAYaeBKB zU#yLT8zl8`rzU(E`N5sY_Uk44mW+pbKtSaWR0gJ0UD|W*SlRp0m#!6NU`I;%=eF4# z1o>;X+TSB>fWV;UMm|MRfRFkJp_o>Tc#+t{YCPVwUic%>ya6v-e^EFXUofzcfP{D8 zE(0+F3XD{BTMUZ`CES4OGC2};>Ceu?KiP7jTd~X2_Id-P z^=QvM%Es)Y(Cwxj>ahh&KgYV2%_5!Vz)R?0(BrjOUitla*XMy2^8wjtv2U(pCxX*R zCn!|?)z}0SUVu{jS1chLej{7gNde^&%=2uu+MoW}sxI zB8=A!B(FNR%PzA&Pc>ga6b2&?d}4sqN`N3weD?nE5RFi-4@2G0V$|*fnN;$;9wK@< zon#kyNwJt-u{1S37?6ov|!LHC4WQ6OMY@Ly-Pnsz>rbvJ_~ zaU>FScs&CXjHo-6h=7N_gJJWRt_n5>%zXld5wpbX7XO`1c7#(d=6;YN=-9|ZENni8 zb&l7o7xc9-h2xBAAXkDWVhg}uY58)$4fqgDYDZ)iH?Hpx==xE^I=3%F>yv1sNnlX$ zJ7aBW^75LmX$3uND<}1#!BqpVk$;!Rw;logTv9TwWnLjr4KkgUqD8U4aX==|ENz%P zZE|a(q0^MT>-)Z>QGCt!&kPn~u1_L4`xeI9TaBuYEc(FI7fYIH5|~4q+h|@QLA1v@ zf+b_0n4^|wzL3W)BjV&V!>@GU5bNuSBlUGJwjM`G++-gSOCF8dBEs^yV4WaxD!_}%hx&+=#c zSnUXF+t2Z$vvgcC-DZV3*JIk2^dM^onnv4g-Z&Yq89TyC*f%SYp5og13I;=1{VLQU zn5NwKUdOUjYn1BmNEU~Bp8q6g1hMSML>wQBM8w<|l+tVJ*p>WTx;oh_2Dn`lahZU% z3TPA?91<_TnRziY3tum-WnnxX^R;Q6E|rY6zT;KM20z@a(Y?tD9*U65HN{L7B1q3J z_L>*VGwZ{!4Rr%1uH{-A|Guko?(5vJc5Vxn%!wr}O+P^#;Okg{b=dY)6+Nf@Hf@jO z*4Z!f?3%AlvYUM^K=0G}Kzcs>vfN*^+chHeyBJP5-2v$~^}qKOZa3WWkWepn_`~J! zo!+t+ul2}iZVjH?Ee$E;8z8!{Ff`8-Dk0vZ2@INQG(xC5rvR3Fgw??Udb_EhD1qkK zue-*#9AWx#T(*gPybEht(65#7m~rGYBwYW&L0e@=Q!zTM!CUyOD8E7MLE2xPF7DiL znYgzi5eEMv-<{6GcNF&OS$hOgY#7ZP1g2cYeddK_QiS(qL{sua`NGy3?GZTJNfFMN zkR9QG_@GF!aL1V|&vf6<*TwQmBo4xLkbC!AF)SJ%`&H&`QGGTKq#*dVj>ZQMYQ)#p z2ajxK127694Kfnc#Om*UIkRaF`S6Ob(`ZVnyNX~O52HVy;FFUseB+F881H`YzodOKqFaVgL zapwS+;{Fw2682kV%(F3@0KdhfC|8ceF(WjzcFzp1a~9iTZ|#VgHAtU$VZ(V=b$T6A zjmP1B)U%w&-warp-<8<_#)D&4pD5Eawa{E%nXl$-z};;+Ni)sVu5q|a=4!r63N&5q z%kZpa?(sv9>6${08r-JpK$&o=U|7DIQFY9+?XZ!{nK371hE(W`v(g@m4!-m{LJGo8 zjupi}wq260pI#U_yQHU%Z$<6k1$5A!^k9Oksij(6P8r6C7JFuBh^1m?gE=aLELeaoE z_(4A?LzP}V>kx+ewv%!B?x^HO?e}zU)pMx*FQeyvnOQK5K{g42=H$9P=^?}{Rj2ZU z&E!f=72WGP&EZzhPxmY{MB>~kGF8OPT_acM{u!oeJtZE|f>6Dxj`^l7K4T;_+p)jj zlK#bKn-Z34eC5O`q0h?+3SYK=()J5~xwCY&yp!of}a-qq?yDPwM{%iO$w8nL&WPk2rGy~mmse45UBYUW! za5fkopZtk0UnREAvFC<64kYVpe(NUNBqAk&@Zr>q&imSl+7TDehxf(Ua^@mZEa1uJ zd&#r)Fvv>1b0pN88c>p;G73I{5!`Tj(W6A{wXW#sbtzbTt9!a;`L$ML=2x9Hv?D~J z%L-~KXf=Y?QNRO;5!rP-j%A?y*l}?Ng^HD}i4$m|-{TWxcwT{mSb_tGeE#83ZPc=Y z3hB%r6ePx6sK^xuhsXiL?R6}KKsFr_MNx+>N< znY{yLd(SNXB95Me+do8^Qb1@0D55_Iaaj$T0W)RqCkXCQ>xgT4y-KUdr4VQQ4*-!s zZoePvP5X^5{B1RcMItOuw^aQCaU_bt^4w|qcMk2j*_mFEB%@ITJJ^0%7{QZZOHhuhM@ zKHHF9laa;hCP8O5O*L8Ngvw8Zy@_#%N~$gEs9Ia3e)|tWy2?5^&uFcvDxi*Gjra^+ z2AMh4)A#o`lwK0DDvJ8!vT{uP^`LkUHy1i6ZueJ~!WXaVyZr^c2Sd4Q2ZB_9sSlgh z7&lL-vj-@DW0`($kDYRToK0yC*n_XDQS#eb(hg?NIO`+zuQ9UMxI{A#^Q$Gi#s|Gq z0VDdaY(!5JQ=ELAhajh7t%4V*4mf3F$F*@G;G{PA`vLl`27>V+@br1XB8dUpyFdqA z!V^E>)FTl7ZaZ7T2b_8g!nKkQ=8v zWv-*;I=%`3@B!KYAVaSou|`b1UD1c@=Oela`QPZS*!B*w_-h^t;Fj*jUOV_bBY!<8qBjtLTDWONuC zPK`v6{iH^98o5uzu{$D)K#CWL<`+=z?)viOAncV2v6=?Ks-KT7P~ z9qU5mb2o^3jOr32h_B&S(sGcvl%|;Yyq0DZ+hWr2i>W`<3o8gMH%l^5xpa!YupZM$ zD|0Xn5T@+zezL;!VsYpiV5a@M+>)CFEQ=1mCO@&NR@J^tm0Qj%>q^6~OHjgwtV3|y zviei>)%%H|fyo$TG!y`YHO#HBpSAN8z004N5Ktdp55#0`A5VFFcm*N3fyLl@Uc@bs zs}ZQpg`D;@litnq27;5jc2pE^o-$wEXjXCYXznHms18X=-#QkPRp!yAf3NkV`OCHH z_Q7O049g~?{5SNC*M*@v9Hp<A(5 zn!WRI&mdJh0=ww32-Oi6i?Ph&2q|{Fivo?oN@R%3@oD?3u)45p6u@>T+-xjJgY{~->3|B7VEACMk2Y_f#kRt69tm-Jgcp5f zzTOle)Qh*aSV>;*pl`w?5jMJn@NaEXOjU)8LLwwldPj~x@eB6LEipmq2=>ze(m_nd znutOY5D1&mfDq=FQ9uau(+nU)nFtODu$~l{3S{n4p%vP=$6f`lkdJQ2qpgE&#)BH| z=`NpCx#?k`Zv{)^Ty^{X!aamE+AA;RCvK^+R|@km5@;{9l%G2!Jo-u`t6xvy*TE}Z zXO&Uj0>x>nTzeFl2Pvvsk><@S2Nx-aGs^*H?h(Pys#ZM(T80nyF$Joy7#J@GW6Obr zAfP1yJ$0NY$jAa-7~Iph{*IhDc*{eGmGC6OUnIg*ycvTO%EGh~-N8P{gKvHngG*-+KX{@9lgfsDk|#Izv`#b1`KwkF7!@{5&)01c5y0uWVy+V_D3{Kw z?n;sC3jjT+0aR!WKd$hD=3I@fb{H#w(ue?x6?-_m0SS%8aSufNgD0%(PLqZzGq`lQ zK_Xg`QD}1%{r8(c6pc`>Q}(A3sKImmZ<}KB@Px3_jt@6M!5Mqw@f5f zkcM0VBYM?W%CIGk0+G#9Si&_ycX5)kuv|k?Vjv(EzVZ$@sC!y%I|4$E&1<%-Glh2qj z^8LeA{zc8*aI%TU+>JRuL(U~4bJ5X|<5_;;haK-@zry+F20)J_9~}!sm`D8*(NZaB zxzorIbI>&^F)C}eD(^H+v@&ziVp(X(Bhqox&=}CpPR#;t9`VdCr)nAY6sSMWi3ng5 zBY)hPd)afyxqxcG3JUn3R|HVdeq0(9q+bsVicoXmfnt&ctmIR75f&o6H(*2S911fz zJ}Qa=rx7SH+TI2%n)_hK@AmXY`KtiaX=%Q9wzoIRiTsQJvC!y+&B=oB4nA>^vgq`p z1(t%H+Rd<(KL{s3=OKkd9DWH|l6Pw*v}Ie{TP>7>s--btVRpc302Do&%J zegp#bS*_O`V@QPBZ>124vB4UFOrVUj)dPyUkUtn=TU4|$VtkhLfXvr-9HvZQ_mZ+* zxes4nx$o@~`qxtioUqBxNfb~9oH9odA+-oB%<=0YDeJLj13)2&T8y^8=sO-t#vkJv zT6W#NJdpsMtz%KvB)U%Z{V1AI$D%OH<$;}@r&|;@62p)Vk;N5y@}*sS!Of;teqhxp z_-h^WVLcLlR}cE}Q^+4zmku&kY{Lk}Sg~KjF*fwhoRzV`x8m%KjhIrB+n-s*m^nGz zLB~6z?XGdW5klZI-kurDXcHo!Lxge`^?1;J^Pql^C%eyX&AK?=Zb6|Tufl6jlDUj} zw+LQGN?wORF$IzU(1M-JIfYyluWSIZDwS7e(K%LIjVi7b)1Y7Fogq+8**1nJ(9mUY z@wR;moSk9>6}b8BOn7e?LoasPHTwEFC@{URmd zfZG&9B|t+F&7#`%Z(!)wK5b~ND4Yc)-=t-h_GrZdUWSW~U|=ZzqchkZj=)SA)6S4A zXfTgwXR@_?H189#HD6~Z2CfUfh*^44cJBpWksOX#kZuaNLmZIEplk-+AU?YHY{aY$ zIasU|Q7q3Vz#ee~;(7(bXZqSaBz(?vytX4TA?zFJJ5B3MoTPxe$WevHKN~{j=*-8jq79WhjupTf;9BZB%vJ9~+ zT(Gl!>0%mYlljb0oohzf!Ea(+nE3`s+STC*GVUQ0D9HV+7AAaNvV~1e?FRqT&BtQlq8F{#|t9%VUp)!vE#dS(n9&H=UAjg?woD+ezLm+7J0-wBUyg;BY29R_L1MmehyZyBszwP~zt0t_$ zL-BzpH1sUmkQ6>WUd+i=#@e4!1x%ZB={ic=J3(%>tv+fs&WcQG*1jfBWelVYnd_2c zl_#&_EQ-!8e|8!5yVuGF#sFj;re4`>b2ZJ6wGq0_1q~~wI0DEZL6C}1cx1rPLmn!F zM5h+rwL+E)<2Qr(_$K%MrN9$sT#N<@Mm>1kMo<4h|gRbn>N;m3lZcF;YbAnCtmiIT?s^rrK2{G=9dDILhFe(mWEcyh_un6_EdXOBWc0y zN?;b>W41hfKirNoc2^kZ%z&%QM4w>xO{xAjcZdCUbL^MqD1={bZ&Q0SYUS(IV4y;w z(74;c!xZWZR_A-Qds2B|BsA)TzKIC{r6D-4(n)pvrO$|8N009K8=g#N{f+MU8-r?q zS{3Q|Tg?9o?pQo1#3R>-4I|RWRN{EJ-|uY#6^67n*&0C~YxI>pEoGx{`jo*7>8&7? zK0SFXGh$Q;y#nd%jqw18N?LNOEt98OQbGBvofL-1p!SUne>wYGLIrVfs)jiPqFmr;0x*e(dz%;#Mo0pqP$XUX$vXEn|b;I__P4RbyX&RN{J?? zeSCX+wMmohi^VbjmM8Er-%vy!+bzKOv^*eJTrrUz@i>kv>C+MgSsfmpJ*OuqGy)ln zfo79q5@b&%b|n{mMsX5!)4q}`2Gs&5=zN-m8y`2V!Zrcd8FxB=y`+FP9h4)D6#ov;eQf#Vnw{!#*m(-SzNv5*5YO!HekrwnT!X(C z3;UHb?YER;3dv0ZHxduA3Yc&0pB(FGzowS#TUL?=S&4+eb*v+^=M-a6JSppO(#0)E zd;+$I1Lfz7MG!*vgo7pFiHfQU8OsJwyO6UeB>f*d1LNK8WsB~h_TkujIa+H|}^L)Uy#@_gt~JWUlMCw>Y!ah?)4%^ZXz@9HFe#T5#ev`GonfuZ0T`eG$U zIVlCC!LMKvnm-8D30GMU-5vUdV8pwdL{`Yy9~|u}CjrgCkZ8hw;dnPYMJ5e>|M0l9 zb%QyVBj`mft4(r+CXzCf&-y)038APyS*n|Lkg$)nq?YN#HKDo^MPC$mM<~&;=O72B zWzqB(-{U=L^|+oz$ECaczj}GhlifiC(v<9oF404XdmL<19u0fEX%=L*AISK8CQpc_!$Y4Ey$lvg*&ubzEA#zK`OvW$+cE z@>2{AHejU@VG=DpVR4Nx3qWdM$j6_PLMR9{$30vQ81}Kh_bt z%A@;MJRi2&sF+rO#bdetnEJtuy{NAH=8MG*DD_k2N3X!$%#gO$kHnGYDJo0a=fd+O zoh(nxI&H`y?nwI!onLefOJyuDih<2YnB6GB8_ed@T-XdtB6}z=Msr0N8b+AaklFic z+qc(<~rpi#SYVjZ^sJ(dVE2l710b_H>j1^q{ z0e-th(LqIknax6uiLlv11Xxv;ysOEm-fns&8pmWT%E zh5(RGOSnCs8Xn!7rRGebyr(llns-BpblG?O!X7Rx&Y1{E(s_aea-t}Zft)COu`H-w z7HDq@;Xcu{jd_fr@`;oYawG8cC=e*xsE>1RkU@!|gGWNF2+Y_Eqn%>(0I8&&gxsl} z6{h3v`5V#-QfKI>dsOPfroCoVH?1xR(>JG8FWKV$Op;-iM3CHRJRZ-i1p>GxQN757 z#kO>+Y?H{_#5vf<<2^7IabvkFr|=Zt(@bz6(8MF)i9r!4aElCjH5V4GK&mu?Ec3Um zz08o6mm4~dgYs39x94a^j}WU=dnnZgwf7-V9@YD5WZKXfW5KD-06wU zJfB`Gep@vl|GGYQbO!bs-w`<2o(>+eu$9}2he%^@G3U|vJ2xY49%Bd+?rc^UI%K#b z(XeG6V~8}2BZ1T-r%B^%bSD8AL;z~N4xGMN<0&#=5E|N4m51A2*#~bir1~0NDZag# zRjhe+r--l}sbb9x(DL>IT~u4Ckyg+nH3r3w-cb9fomosR9qr3-_{n;MC$z_;-LQ>n z@H8H+kUV#}rGqX_6ml`TG>t$ow%doHZ0KZ7;4VyaU>|3lA@KVaSJYB3c zK)9!D%c0VCBQ40Ul-ZHR%jFs`)Z;r&HY$>H#4qVMixx7m$%!{@$BO|yd*vNyHazrd z>mzgqNhK*7^yuA?zKr_n`7~^qJX>Jgb83p`)L$hB8W~jlD5rF%>tr8o%&(Ltb~Pa{ z3**69v|^-%rLqePr<}O-AhzKMNexk*AWsiKoJZehja8ng?a1o;C(5=JCg*J1ksXh! z@#_Zlz1sm{mE9*)?%TF^I|6CvREvv9VCLaw#26WILa z3rbag*=XKv?{HW9DuZ{V#~@f#_p*8FOAkW^qR|dl!4yp=N70G-wb~e8VEAIHlR-Y5 zrp|})J!*ZBAuCuy0V(E59wq~&VQ>PMl;?Avz{Oy@ufO$tD>kV*O{!az{NNNVgYJUo z{NK=qL z6Raa|{i9(P(=$;z25SGnJJO|`d$JgeiPCafxgqly;@CdTh99G6gMdLiWdu;%VT=0F zHFkmKK`*WgG!dlC!@?8y1OTD-ZS(^HoWd*o`GE1(=U0b?KQ1uB3gg&Fq;<5(+~f(v zGgeqLWfS`-hY2{9uC`+bfv4?P-fBCb5P0H{xKT6@Foxy4Lfl1(HoLSQU&w9Osd^n> z7)D?2^yNLzVLL31=)UXEK8?LsYff&UBvglTi$rL6sA$$K)OatMFV9NQGyU zO3x-7PT@tI0xv=orS&q5%(&lOE#dP*4|?_&o7U94u+N|!W0X&kc{SD=eQLybth_cZ z6P)q}Z~iyeo3VKqcX9EVx4o0sCzBAqcngcqv^!(+^${>F-oi#;noE<+mTA!z7N2SP zV^xpw78ajra%a&cynH^7f~_OKwwRqIH%?brKm2!2#3B(hXtS&Ua{OJ~f;bZUwlGxY zMc**+6WNEgVb~lB1S2dpl#t8*jtk{Ek~xfx3yx@Wj5H-xF+){6eWK1(|C)otDG_#t zXq`S$=Ze<2X6%Web@D`=DO%0xfGH7nhG?BWQRj-*(}W1ypZ4R4!sbTenMPoi6km_b zg91e+#h-%Goj65jsd4v$sc4Tbwer9k92*CL6`TYTcTg~qV59Ud? zs~3w+uT@S#2g;O+hs#Hx(#;6OZ8*N_UiPlNW6-xfSIr@?Q4^ji+%^Z{lNbWvQAPGUtN!1aG6j&fV3v%1#0z+V(BR!$gNsgY4 z;o9K7TtG$Fb0NA3<7P9@Vt{!lhK_?=j{pL5nhWpD0t5IL672J^QJ~jDW}q&8MiaBz z9Ck^~!mc?B(^ahgDJPg#nEra9=3rpEt^L;3a+$B}XeO5A>ulK#psVD!?44rt!9I89 zFwswPCiad4)jx~Trgci|kG9v%{r(u(XwQ&qZScflo89;`IM+OCWSyY;F&Y0EG7rcl zAULP9+9ZM4L0ma1?m#9GFo&Y`FR=_%MOEz;IyQe~{&4E420EUMs)0&$4^0A$B!MYj zQykk!XH+%sa;uYcwJaP8JFd?6GqL^L&uZJa5*g}Aa1I`n?Atlru-`l&ZTTWOFR78c z@}8$qxug;4>m_hp0-t}hp>T`AGl>O~NoG?UpTQ)H`TAgY|Lca6lI~J}ELS7S9@YIrvu1?#V2HIx zct>dNt`n!<;hlE%R`suba&SRfxKzoE;NrE>p$!oNFkK^5GGdxX8IWln9bVZMF!?hh z)Pzb0=>uZ$Ge8_Wk0IB=zdtc;AV~!lVYg&Z>U)J^_6w7O9aaUKaM(v4;auv`a=BY| z7jZQoT;et`29K3MS5@CW$&(v|_G=4!&flkbwM4gerqbjWdk)>)5#*^C0IMHh!eHH( zw)o1#rF{iANByL#t&Sjy)!;b~xoWE;YQds;{zTV*Zjv=ZqRsOsCuRrzR>Sb? zVMZ;n6P`fM;OdEpy_W&@{mt1LY`K_DFsOSv_TCnP63FC;Q4bH8J)D6gyC&essSpCp zfj>OV)uMwr6}NDxF%nS-Y6?LWeC`@WmUJw#ARiaV1`lZnc|Rf)JhCl5Ba{sYLgs01 zfD$=A76wwrLW+^MSv60Rvt6L>4-ir>bAuK?p8|O-GMlbLJJW|9TEp};9oO~`APOZu zXaju(PTH&~s_$Gw;FDXxr50umYp)txpFDs#u+93G?Sr|nO-SS;^Y}P;t2HuSkuyGU z{wj{~z`IdCj;6S$Dd}no`kH1Xo9`d4@-L4y*Boric7`(I-$~@uqIWZPm_DqWB?$Xv`4DXmPheC%B>dxNV+K41^DYW-hCKg-bqx zPylIVp5XywC2xTZunYS5O{-UIhYs$J`FeyS>H^ucRyts(e4MpOq*PpsOGjE9_GyU& zD@anDWE`ZoFqf; z)11jYN}DCD9}FwuY?*wvQ@m>H+g)M7-xJzsJ*CS_cWLVPkS5zqHKUQ}2zX(+!;#qd2Yu z*GT^2d?|PzQ8tYszpB=tgjkjW1DnvxuM2Qf2CJkkN|lHgIFUdw_Y{Q)Fs~y}VSoil zbS+()ePUNweCxlET5Z?gJSO+uB}&DcJ-fBbVr$(`4MrA={5OB1wTy1QdL~Wp-JajU z#7dkr9C5^yhyh~2;1$`J6RU{Kd{!@Cw37T3jpQCGiw9re_gQRFz|VacW(=S}gLDj5 z^HYEh<@HczmS%@sr&B3nR|@RaNOy1wNefvWXzU#CrLs^PvJna7t+7UIXPt#=hKo`k zsN$wUji9-YCE6Xd^|D!kSBkfT8G$(#{~!IX?0R-$v|aTN1U;h6s~QRee4l#~0dta0Zg zz<*D9S8@Rs1b{}=QQ1z$0BlCjV`RGnc^g}1zfZThJ)?>Z9!>mKvS0Ykrt0etV8Rs1 z{$W~C9b`iq1#j9zp=M~@`KS@vARTxDeN&H)sg1}{l7fWYxCT3(x?=?Jq#?mGbUOIp zfjkgmou0v|B5;{!7P% z6f>0Nr*7viPdIGmxj8*04B> z*SPZl!xM%SJJHt?{F1<9a_`tgfnAw+%M_^Xs}{-)>Eo?bI&nTc6(ef^V3j@^&HU59 zhBGU|y2heBezRPL(O9&kdx@A?YX`fhdSe~Cm-vG@)zriT)x$&gn%2I0yXw@~;B54i z!oT@)S0H+<_}jc;Fc>`jjyD6MECwWad-rmjQ@bcV)x$ar(@;x5R9>SN(Pt-YwnMEV za8&DQq+ydBi5~JHlCJ@_3Tv45aN@#B@ytUlDunn_{P0lgnzlewyzWR8nx2T0eC#c` z<(WGp48}C-r4!`syZS+Tqg}4E8Cw|7T&Aw@QII(rw^ z`?u1TQ-?wOml%{FH(fcTQJXtx`fku#1XKZC0j1CKrQ|jh8;RZmc~b+$+i)H`O4IUV zNb`uhq|t~D>0_Z3F8|6=e-W{$b_Vm5%49M5I*rF_`OLG&O`xs#i?Q2RSk zb{C$e1tasvX09R;_mP_`n{A3j;b+_AoYc@Z*$mA%e0w%Dz`P8G#%eXb&DU!5srcLe z0dexGFJLjPM|{j z2>I-*lS3^bZgp~~RZKhhut;+pdQ30WunOyA%q9d{)acoSus4lQRG>-Ogg6wMo`}=3 z3Hf>-riZ_{X7=hXU}@09F-%ej1}A@^#=_+s|7? zjw@uG1FFxj^#Rt{5&Cgdbx*rGGQaNRt2U*tXs>6TL`!du#`410cAo z!vSJ95+;Z$Fa(1&K(vpZIo|$8`Ht;NI?I)#@*FZUOauVK#m9qrBJ_h6z(A79BSN}t zOh|ca6==NCLB&751C7Lhm5+)N$to7ua&+*j!BxG^?(Q?p-Bt<`o!$w}!Rnwz&`)w$ zQhz(w=91DK96=99=@>^;Qwo6hq5M^%rpIaR1djlKOFYF%Q^iN^+z%>GX#3e9}`_ppMy7c{**Pa45USvrC9h@Hc9 zuZ_{`!-^=9R32^5ZAEFq5`oMDClY(+Z%AqMC=bVrA*mzwUWq_!u`P@i;Y_8-V3TOA zeqi{c$1I0{7g8AI!y^go4LAg5p~wvL%FUP+%)zi5&f`94INc7@eee1!T5J{Ist$>Z zIyk-#GwBqWz9QbJ$W<8}8gnyXafuu+an@lT3i-(V0Yg4|%ES`#F`|0h&e60vEt7Wv zV?AGH_hi$X+p*f(93FlPcW+TxOZA|_;0Avm)bO66P)*XtBCo`zN=aanboXw@6~D>J z3Sq})_c}?B%Dy)*Bh@4?g<&s|1`}bWz2v!PG%N-P5ks;YjH`Z{hQ5(hJ zp$k&}KRO%)oWc-*=!y~0vX|O!-jIm3wfX@ZER<>k{>h8zz!-Z6cq&?ko7;1x62{k2 zJ}x@eA)h#CbdW`_O}^wSVTaTN)m;b0EQwg^U4kpYtGIYF1Fs;+#(WFvGG|O;-}iH_wvrh|65V z9S0df9MI1PYql{RbHVnt<(%zjYs1D7Emc2#K?~5YWlCm?A0G$?2-pY#EpWylfh=)m zs|Of0p3G@RjSVT&NyyU(T$Uf356H8(;v59}F)nw)eN&9#(Mw514E^wL`qz%55ky+-1Uy{dW6n9PBvLf`N;zkcyQ!8jZ3Z( z00l@4G|UmZ59%wrFBv%OW{UvIF=rv}3IkS5zq(`fnmLt?QeR4xZ9 zr+E;nL4ZoBHvVUk3M_mBwbndnB@ZgI`ohbxovx>u&@}`G0Y%3mEvN{$2--^J3A`(X z&Q_w}5-q$e*r)@a2>D(BU{jXz#6;BfjzUfy?^LAs;|H5cm8Yn5Hb$&zamx)Cc+sV3 zD%P#BY7A1#mzISfHX6DB^as!eRBz^R+RHNmhi(6jdpGNB1aI@>Mg2>cA1^BxS0lEcFn5zzj=pac5Nmk@slDumLQ&V{tG{Nt4O{M{ob!WI3=o)-h-ebwv@az9NC490}Hxr@^f=b#(us2bxS9py-#zmx3_4Z1;E3qXEF~t5F8BmBL0s&Zx$|ug5$BxYKyx9=hIqa6^7LdCL!S#Jv)j zIKlAo)O}oaQD0ruS@*OoqQ1VXgDDLm8)nE5M>2;&gP3G`?8bv3M10w##TZ^ehHR7} z8)oSCQMZ4xC0m5)M3GS_+=06DU26lw{4&WF*EBH4xNfAB7YP`ui6n0sLJf?>fK0H& zt;OAni#EJ#B<2}8@HT!b)gN*`YARqF)#^Yvy!>UdO?IgQLY$L-25H}!hkOgNbIz|V z36SJ8pr+?u5c5E}=17iL+m$SLy))!XUdxmXrjk}d!Y2E3GzMF zHwNaV3h-*!w}esOPA@f!&a;jN{rOfPP9{0Za7+Z9;em9zEDqW(s0PYpah_z-7M-D; zjZ9Ce)OAW}RRO{F2|3)7jka{I>fZz>&UU-|Xi~oD{O;BEhJL*c?M}LVm;#jgFI`70 zM6aLvo8KIv0_@<&Ay=5hU*-o)^Co}qcD0(d$9UQbY2rA6L^x&ZEkOgtLxlx+fDfkcfHpq=6-wmj&)cx#M#LD z$vbV#JM?T$+LI^P-b|muVGc|-k1~kdJc^}qItMDxC56G@mw6y8_f9k9-jst?e+F9R z4=^O#Ll&}qTKFg=?ZqS5(Y~^ykT~QD8-=9(fCN3@;M!Sy6cUGMbBRJyu40ZKzEGo( zQ5ZetD1^@IG2<6<6mo~_y*YLY>zLe2R2CG&EZK%54ygnT$C+3H8`EcUacxE%dIh!_ z6)ndO3@ScEG617+P2K>o_$D6_usFw7=J_3?kustIzRLGUq0Hlu>hUP^IP`i}=Jsc) z%6t^AJu7n&Wqx>YWag?XyL(r1ql-uGEX?PIa+`9SUE6g>luHEMVmMchu&RddwdvgV zy3rELCk1vqfN}=dwmk{tgxxx+!NaS-HNdB>1ES+cU^j<`p!A6#2y!;au9}#`;Gwz9 za~L9#TbX*H<8tght}~{UqE1>to!xVKiV`r1tu-$V3{1mc3_AVoD+ls>g=a}ns~>ry z0D7YP5o95LUIN;oTpVw=*ip*wE`8;4T5jk7Di^&B45nf8YBmrGxoe9=QTJtU7){O} zH6W=MTMwI2L(b_euoO6##SM(lFzhQU65FKQ?8oGp8Z;x#3J)`cK3=iSshy+bOrkoV zufr7`9anlDr$=it2s{bun-d>@8uo^d>Fur-q6+-yo269%D;E{5Fvt3o2lN3DOVJ*9 z>3K)!B2n(BuP^iNN8Vzw_KHB!wz39I(%!Kh?E^GXyC*!TT5F6%y@y=8Bwd!UDTc5} z8kmg@o(;hBo{yth2tEIjI6%j6MNF{qT+MEVMFt4RZ{hV7ehof5V;g0!Wu`H4kCf+=C!5Wexisy(Zc zaP*5?C+Sf!>AY=~fVqJM#f$A6RwdG>xRDc#?$uN|!y#lA{f-77*|2{>^0#`fl^Vp8 z9G+m}lRS42v+C$8$}XTty6v zM>V~IMt5St#_Uotv%*}6poN9H=>-Wh%<^1~6fD!)`g{g2Wg>vCMJcTMydBjxe?%MU z?!uHmBE{V5wdI5S5h*Tr#nzi3zr9_54sFc?SI)uDn}jZrofyK2u&P`$&-4OT?cCbh^8U9XgN zNNo?jVG$S@+gaCd2_U#Zg?ptq869UQ(V8kIsal-L(W!6-!;1LOnqZoO}0gy{lve!ut3Zp~1+Ocu8uzTMNRgYrS|BT&52a=g!qS6uOq zyerJuRG2d0o;9XrMw8kU<|OPhTNz@X^v7@eYzpz3y>Se2GYS^SameBkCOJBLFbD$y z2G!fIPnb$~xhCM+1NBZiaUr7;X4=WC$h_f}9+E8y2y2}?{$+-ReIpOiw}z? z;9o)lM&*&yGklz7e$$7BhbJf|z)}({>32mc#>;G#NB#gghZT=bk30vwh_T`aytBgc zgcRR%FpV8-j9}V%?S=;!t8Y7dNeM^P3BE&RJ>L3)-REcGJz+=a0y`?ALM0={$CQT_ z21c6Q1te!>05vVzL(*iAi#hR~jlS87~KhmMb5l9>)rXYPs9O)}? z!!Hh*3d=8xM=qDURaY4BjKFO0C46^E>>hF8G&UoED69Mz7c=Xow z;v&}7V0zA;VIKqy1k@7SPY~OBdZHu_p7RjJW-LG!X+A&N-dQds@=S1djuh7^*BvM_ z_NBaLo5!k0SFq+Afz~91>gT@^i( z_nc%g-yJ>~4b!Z+Z?+N$-fLKak^#hlj?h47<$kukIh+% z>V4D)10$XG-cPtClx||4?B&sTO>M;hVK@_yV7U{p_D&&2Fu zi5R(u7k6cCjJ~%qZPJ~d@XUp{I?Lc?+Dst;6GWsy<9Tn!uuePgC*NI(pb!OwW)3-J z_4yc`tEZ0=iggi@;+dpwgJK0#DKqL}B&S}UqrC}4d$YoxsM2~49j6mIPN3hFXZ)C~ z`CCbTfvfj1%~>|IiUXO*yNko~Ua>(nsl&fxb+p=#*x>^mQ*T^{OsE~nVNn~i3x@zb zI!x0E0s>?XeF?l>^-}*lK67R0gb~|#%>zFI?zSX?CS{vKH>SXvs+fm!yS!lkv@LVA zV{#A6N7VDPy)>58fmkcU;+&BP1??xjQ*A69v=7Szfm@x)KtdWE35uQ*!Gqbth#it+Z-_l? zbtK?%r4JBifwv%(T`o9^5fv-i$o(yH`_=P#A_ z*Bi9QGc=QZU#Rnfu;UFkS-GBy5y0y*wsr^4LftK@RWKzny46nRWCC~ zKRqaiLu638^s0WuolrqcL1ys)JLr;_5mie#!xnU9hFUL~wINMYB(}{?)MGJyhN8Z| zfzzJ#6ZP)hVtt!`$?+30+4BV}5m((c*r$j^z$34Rm)=7!D2=@!ru;FgoiWQlO?~+u z)!u{k0|J^Kul6+s&Igg#&57izR-DrAscA9qiNI?Nz8> zZg-RID?TVIZf+V~d~04DHdi-EfBEP&A9mJ7AJj#EZ5REmeO3Q}%<7F9C{_wzq!AY(=8oF=avE<*9**R|4IJ{x5(xJe z#Xc|=ok?S?Cme@Lm1c=w|?pG8?fP-PZn1rdd0jP-;SlB1)3hrFWdtE)|NWld4* z(j&~P)p#rO-=B1g)wGu;wu|DH$5|0VP}4#&;CgAN$6>Q-x<8#STf-70&)VbfhvRLY zJ^1-+O2$yt1^8oTXX-s@&kt{y!s0B|o=iQ8iC6Z7`m7n%*4%SB)t<|yv#QM>40**p znPg{HI#*_SDeH#|opoNrF&J$gXvlW4I%gXQPEQL2oq)@rz(d}Fk^FHWpe;Znd}Sh@8%U&jibMC*f`XTh(t?w*C`k;3x;d_#dI@+XY9ID89Sjl})P=yGSjzE}6c{2&VIjzeP zvgw&wkT{sHz#uZ{XIK@Vqw(9>uk+uW=&*Rs=b#pdicD?#E7Ib6D5$eEsO2G}Ih!7e zv_MF)u=IeB1`&;bY}#iW!qP3D`lOfMkc}#AN@r&{1-V&m4vOZY*08B@26PB>75L{{ z*VQ7mA%7nT4lGcQI2(mH05}er!|?l`^E+#yek6LnH=4a417j`1YHG<>LR#cK*w)ie zX7EN>kkMv%#KvB?+G9y`8iOzNkA>&A4-vAILukmua;XLVuL+$)PTxrS(LeFab+ z+p;e1?(UM{PH=a32@b&m!QCaeCj|IA>K?Zs^s?7W$x&Yijmv*1f%tB*_+5?9c3v;tGNDD5SNMA7hOIV*LEitHa5 ztO&(;HQ|UbA~|?@4B@$0?f^xd3^g=!+Mg)st>jY=Yu@slsf%n4?-t97O1VEJ1Fs-Z zVbAZHjBfaxsB}wIBPy}0W-n9GcJNSzgDP>`NzSRqj^L z6h5~@2SjuR^F`cz{KEs`9nC_wr8%}GL6kpxKYz1n3tn|LtWNy{y_O7_g@JYD!AjMg zyA)OepE`}uUX?E0X=zhvRAScFldIpR?)&nZ5ak|^vd%NLTg%o>wVqUBUs#L#8j-+I z5fUQz^WwZ9Vbp1wpTZ+Qt8xW-(9!rW38?5THzvEgBr5zvlyKnaXGhe=yS8n^`rZxH z<&wmk^2do&hDc@NU=uGktqp(M35a?VoQz0!Qa4&ysEqy@ty%9CPdQ%b zeH=SoHkt`jAsl*R5E&lZ_bMF+5o5lxlSK(CReCD@4CJ;(51X6V zevgT1kb!(>4O#Yzs!l=`PpmtQ0=v56&mEHNUd1#H8ixbat14rZpGIh`kx8RwA0?}P zpy9=vY-S-Q_kXuO)<${yy1YCpA=ILMS$3oRRn75>zm$|IlL{E(G{s^P2d62y7{M2$ z3EmI=?w6l<<>M#Au)f17f+fb4uXkyxn(Ygv8Ip$Z1}fsZ1ao?X)e6GgsU8}jN?$RD zk@#JG0m>qa#^0W}H&EvAZ1NkQh~8%*SCT{p1cdPRucdgEBaWs>jW&Ps%kjn?$w_0W z7jf#?7GTMYm1RNwJ%+XufcFLhTN28`OVH@NvL?N)KQMLG4&@4qJIqL%g|wCiV}K~; zu%hq?>CsVmpW4RKbf}n`+tb7JIq6eG$w1vy z$2dFH2-EJzK7RY7`o@Y|feQRsR%XO*<46oslT3}w{52z6j!rgy)o@L)QOD|NlE>Ie z<$&Y-bSIfh3>&t0I;v1^dvJGwcX7Wz3XyVLAT@ta99sCvSR6RK)aCWjA7a2Sn5RY$ zjGDQV3Je@Vg~U%5;k$6V4GmcGn3FI#%_S9{e>guikr7d&uC;0$X4fdr0@}NYY`A6I z{ZuSUhQZN0xKrz)5UR_%G!jCLdJ*d);sW!pbdJsk*6!*7aZaee6y;{5o*q2qxL_?x8rhX9ELUTa zi7jTutjKTCDsMf0EWG{J;Y;Zdj8@AUmEcrnLGs0dB>%mTqbQT_c&O1=s^FhXD7cp0 zW~Fu}BBmTHL>b4*&nB0RUs)BCqQa5vh{2+1Ly%FC!K1M5pi-rsb%eWBqMduCug>*6 z#LmO1&xgT8;T9kQp;|>X$MF5tgHyb^jD^WhKAiP~-h|*i1H1`A&)Nof2F#ck0D1<@ za#<8w)TYGeCFg7-3Be-L1AoiIBn2C5{GGy3Inl~PLx_kwM>&AseFXCNur~5ns~Dp3 zFOkvPw*j@~yR`X(@m~73_{eDzj*ow+Fx>6_)PWCO9nX zpYK4}-W66xH3vz`ukL6LD+zI(yp1;1+5dxVZfgvO1$E~``%vSSk#z9c97;-;^$d-Vh_Uw+=h@3OJRo*nX0 z$wh1To*mrV`F`5o=M5Ks?$)|L13|~g`kh(B!LGEa^2j8*i%VK7iUY5KkIk?w-Kvn@ zwjs$!>vwZZ>u`A2^CXuOpD|Wab01*d*1!zJax)TsDqs;z|J7ua7L6>Dq`pL(=p^f4 zV8uvnsZsPUKP7HVqsfs?8XKJ;lLI*x=WS$Y^i5^~6P;kHe}VzWVs!fK^Xeuyzrnt` zvk_XZ3z`|1(JE6vhj4tbtz*BUEK?3baT{KB6$T`ov-nnSrKmqMZ2O}W(6XLoZQKA zXB?e{CO)K+RZ1`ZyOL#ZoZ|9n-#eGs{&OpfvuoUY8J=?{A-_QePYGr9{L3-P zX-eYv=_9{x3!A|;eq;bI89`Yy>_ZdA`>sZ|^|)EFvS{v((hk#?Tcp=Z_i?_Df4GWv zDvr!aLS@I!(LPu+u2%>AJu4+PT}e)(M9! zZs9FMjyB))d!I64Qp-UrEeOn9%xhQd)|@YpqtrVy0YoF`Qvnj=SWW#+`*cR@kGm}N3#&h8?aVwgX3?TU@%DATF2NQw#*R-( z;&FfvkCg--B2c9?+jUdP@mW?% zjyyc$tirwhmi^;;zQxVQo`E=%G2DrbtjM@*me5j*N6Zwdt(Dr6{hbf;Bdyp+BO^^n zzw=2qD#L6jkt6c9CZ@a%18jZM==me~!>K0ieFt(}{8~QDui~fIWHzxSGu-ks!MagA z(ZnvB#~frMEo;o}37aN+%W4zyT69ixSD^i(9fA3oxRsL!-Gj){$=sV@i>RDutUszg zsn!w6o2^Q1a?ry^!^^4S?y zn!;`__e>E>(ED5O(irqStB?liAX!}IN4n~~_L0BmV}*r&uZZYFJY#Y=SD;L)Fp zqUfVpj3TsIOdQp(qBgpvEkSW-!~K1drc{Hj)|(}?0pd4N=;!8$9n3F3BP-(IvPJ!o zNo?hltKOJ)X4ww4Z_{P7GZs5TPaS)kW?EG%$g%~Cn_8buO-rM&m2w~NZhuyI9&`B- zq_^l~$)#(_MY=Vw4(D6E65O)OVz(m^9>a5Y+Gyi!>|G)*-3gf$hXt4BA|tf@`$vif36EoQg!+k9nHFe|h%yM6-4 zL8%hv^Z2M|4ZB8)u__*2Ji#h`(^m`XFy7`UzWd*Qq(m~it&>Od;O_f>5~)mNivP?w zJ2qR4R|ZF}OdICMe~+&#zi|1diza6FPRB^l^4LI*SGIVn^{>ZqecXGz7?RNg*S>@H-!;OVg*nvmar$oq|J;?)Dmo~RZ_5>OR_(E|hExWmeR zzzAJzI#+FAri2UP-$oy2&({e){`R>>1s+zMrd~bqjrmd93ht%qrx3E__s{!)N&EM1 zy`g?Tj>&aFl0d6fy0YBAL2QC*^(m=-{30`EMP9#!jIn*flf5#wfDjL9aQ}$OWwVO@ zDC;V$-n4uByK=w?{0p_y08#0fxWpj zv!`XkG$+o&1ip395B-1we734V(TH|%Y`#j$u{gKFfSiMl-+WL_p+f{bs8WA-Zn~@0 zcI`pDRmCTB*|=?)$P4>-%|X!iHP>`C{Vuu~^<4i@sxW%xi@ppT3Wn^LJnb;)N)e0( z* zl3kS4^W1b_$n?Fp8{86n8~fG-zfYZS^2X)qjy*j2Zn#{n#SmbqOmnnqBR>hMQeJU%&6@p0# z5-M0_IPBwSqg5K5A&G_BDAp2B99LlAfP)VD zO(RU|)5GF*R(ZJ^1?XwKMDY(Q@x3xNj}*B*_>o9@NfY6FbLgU#XqVq@OOfHSY0+Ky zli-o^Hh)7wDz(UiVfmarw<)P!_HYx}h!Q4$P?EF!rNU8QdQlIjRcT2tzQl{OmVmqi z?;m$*g<8>%UKl`on2oHo6oBq4O^_mXZzVj!&;45hhX@u=iz2p~Wz}(5j@Wu?#QWS44VQE5ImF~4 zJoZ9JK9y9EVZs-qWiLHISwq$DS||wWObMqQX7nR*AC-5>L3-fqV!Yu^fen~@!_&0} zbsp!&@ghcx(h4n2%)^XA7P2kFJUR9O& zx(nM9ugf=QnnDJ-^<)wuR5;hME=?rgCCR|D#q&1xfA!TomW0${hTBUuyT*RB*V#%} zY~YVhy~!4Pl37}$#gOD%-V9&52{hzd2k_l zqJ@?OnsXl)oYm+Of~-LOG)E|?%;G{Vu$YV}ItZHJ%|2^0f6WMaX9-h8kw-cS!&%M- z2mdsk#&;qs3=UMwbz_e@(lt@}L7yD>q2#I=ary`azAdt6g!|vA|MK)Y2ao=`d&EPM zn)dMGY?H>QO&<3feYm?h=LdsSmw4e#-8%<%{)5k_5SQq47zN62qQ%HRjVQ)q_YbJi z{WO=eB$x3a_&oKvfn=zA5pOemo?M7r)T?sZVqxb~?V27^WOgY)dwN)%N3UsPZh}<^ zcjOQm_&M$dP2LNPBx?)h8;9A%ZQR*{q)D)_k*f&Grz3^{?F6tyN^P~Ti3yP?_UuW+ zP05gC0)dY22yp$kDCbl#$1yQ#G3(PK^^Qm5xN?wY4;-<`=jYdNMp?$hi7x@{FMs<={#c6c%wlB?M3K-R@x?aD` zxn{(6s(6Y940nMYR{e=zuBKA~y(jmG*JP;BVe z7NU@Or2s#E`%ao9@}+B=XN#X5-H0T{Q23qbXp~Ne36#@8;p!Lg5$R|zaT_7Fv@{5B zC>tTxC4=F3L5dSvULSTT1o#DN@<^!S8+;Wvs4J$tIb-Nwf=hGzhUhIGPIDzo@0ZQ% zz-=6GO$zx-&>E!c9u7rb$aba8j^A-_q@87{!e&h69`^nk@5>#ww&vO0PBgd~iWvPd zhQOrrl_ul%s=u)O$3rSYtpK|ta)=Q%mJ2UqmT^`r59tXEFN2I)dW)zxTv}ht?V|=< zp(dxH8{YDJVFD{%#_$1;TD#2fyfYdYFxEcO#Yxi7I4%UXDn1+4l`Zvwiw=D{!uD#* zPN@vtI-hlLf@k7;--kBu?WOv1$q;;qrbsZ;&C{tUs|uZJ9U8FUZ)Zw20lZ>yQUnu#ykvYuYWBET8)PBfpt&F=G~aWV3ff5UC22iI(dhERh@+S@(5 z(51|xH@lsU2K6e@Zr$M5xR5)Xew{3GyPs|<0(`!XBU~RGbxlQ&eD*V!7}&}8Xdt)y zj*w2>*RH(L0N3`GOG)0N7|w{_PyGrjio2w9KlKfvxz@ZEo-W-x9K(d=GZcZ+XEoY4 zh@$1qTeyu=N-I`ME8)v@ErLYh*cgi&@NI|H48GlOqOdJtb{vd<1k?{_NSc(rbda|X z;srISuH(CrReG6)yfa4WZs;z#c|uShfQ2?^FlZ-oXIdqYD`QL)TI93E2tM_X7BsW( zu=o4A`su7jCEi3*RGoCfVgUzHr+7cwZLJ z+Sw{-ZqPFWCIa0DivK==OIUM-GHwZbgV+nxxKK>{MI|VSE9G$8=DH;>(OnXiV&?4? z1oGZxIG86B6LHxbSc=43-0Ev;PDltmxN>z3^)ujwIA4mNN++a+GHar&%Xj4PWE?rL^_-Js&;`uPd)Gy}V5M&gV z4Du?d^b0t!=~tJ++6LU>DA{j`aleagmi4!eVv53LLYxsC0 zwbw3Y=JGi!Nf3TdVKfhxV>@tXkv?UDpBu)17;@dqhr=GW3wA-+ZA`c`+uk!Gn+5)c zaB3Yfo3`x0-YD=HW8BK!Fn$lKwOn3$4z?eEn_u>QA?6NwZ;xf&Id~yOC#XID^IulSed+F#nMuQo$3SgiL{lXZtPJT7A1`7M@05C zJCO@~)-0@Wx4z!u5Ri`6eNnQ?Vziv~)SEi0E*n&3d1p&zGH4QyxbcRP(<86u>M(0}++{8u^63H1Cxy6bx1CyfTk);o=$e}$ z6{TByI{D(;6`852`jXtf%IN;Z8QyOggCCZLmjji+$NLy>iO7bb2S04#8xs^BOIa5T zIp>D?C~H+~XZ%j;t)KeQg>WZHVzpw+#?5`8Y(qYSuz=M*?oe4~58I;{@x|LVeo=ao z4W5+0l4GSi_XCW0%9XlVOI2_Hb#=eJB68tJs z8`6*wUZ`PWZ@(C4+rBLIeCNQV-HVn%2Jut`u{%#WL3KUT6!BJW2TCA;vzpCA*3)Lz z+NkCO#UImoc5IKZvaeUnG9-cTtf!82Pk^t?LLE{@SflcLWOJ{vDlZq1xm>okiolV! zstm><4+W&VBd+|aB*hUskscj(L`2i(WzkGy4sFY+8nG(4-6iK1jkaREegh|irfEi% zO%^SIRs^Ma_Q=GyePcB&zo{&3fC!U~o@r-ZflaiZTe(HzTXEEbG{^bFsU<}8&4*KB zTS_F2cV90DkdkS>*?TZG1`LfqDzjuQJojk^eOc61vhIr?{Ukf3%q-qK7A8N+OL32o zimAOEe<>Ei{2Q0=dnU>T%lzbyb23X|VtDI(uG6Bu5n+$rSPyu7jK$rPy!Dr@r70rRUu5IkH9nR1mP5o44B1y%9JR)DC_F;~AY|xg=9- zAcONDfJ&jnnPf-uCQ3SOXP^{*dnq6u4~eiJ*NDc1SY9Hd3r>*o9z1GIEpQ4}p}5n6 z(S+Gw-_H*EVC&}G$S~xvXD-+5e9QleuI(^XL6TMpjg=XEpLFiBV<~LgIJa_VKHr;y zv_Fp-!@-w(feuQsc`oKb@_lHW4$N`W_T{Pe$IEv-u+e6GNO}xTr1vZ=meGvEs-h!^ z#yE_O>Y^hI6+Trp#^DWg9%3ek+l~WD6+{o>Rf^7}nBCOMX{9$B4HD$ykhKgqy;Ul8 zfu-~nMp>37zF)PS(IZ9AMF+Cb%LU0>fER-hmm-r~G7?Xe&93=2yMxty((Vmhzl0~E z%frL%nPrI=(X|bW+1v4?{Pt4yaLl^SgR^~m@{nf#s|C?2XawWsmW2mqIvs}ObWOk9 zf$axp2~5p-*l_t#vb6Zkqbbo&>Wj~5JCP;S0y%C^qMAb5ct<}rJ-+ERZ3#kr z5=3NC@Mrv0Qo$f)11(+xmyy>n662=ktk#DmD7Wz`1<4zyRrA)ougPM4GT4s6Vpr$( z@w45hW-lB;ja!Dd^HywsbZ&LmQ;AR0KPzFjPCDby8TL7K_P&j{*x7Qb3ZZEz`;kl1 z1b=e@XEu|ekgu<}+tXm-HILim6Njv~DhCM}9;OE?pDHX)W#v|5DgFn+HMvI2#XQ2? zyE!ri3h$JCbC4=nQgbs%v|6F8jD6w^qUp4l=sR?|ZB44Gz^DC{Hf5f-ylpE?BX78>tngyj3$jKd8^?PXWC{boG;xoE&N zQ-7D_{rN{X*^Y(2)`TIn`z_A|M57ninD?z`fUXFE6|^~Pyy2)-+7%q@UehUE=NpLg z zHQxOwE@QSRhqb4zr0 z%k;-6&-E#?Wjp(u`}6Q=>q8gmh)~__=IP7r!wbtn$Tpimi49})soznHuN61v)hvlG zzw0P}GrvK*3YhBGshII)0q(xTqd5mNKijsa?vl&_XgbyR-tBnXd4dr?G zUV$y&{QX?P?EJc16}P8Sb1)4S(N*7EL;LK@iCo{*HfEJ*WM)Zj@{L?2r;+*T61K{@ z>2AZPHjj#OGBA4a8512eFNB&ARf~J?XnONcjbI!qG!U+OrL!F09@iU2Ecm{ixl4wJ}APEri)_qo-Se*m96xsf}!-I&>F z#&Lexa1`N~`{URgvT0m8o=&$%jITq(i~`EF`}5!w>>od(bILu1`7Ch zH09yCL&4*8)3j}EWrwtiv!}VcY)FRTv$LnsPt}gkEib(v-ce{?1jhgl+nQs zZ-a$h$_60^`IDP8nWRyNFin29zQ-26F_|K;sD>4==#6J_sPj`*_c|0w=vrGAwyM$~ zm3956FDupdkjrN*sVSfO`AE!P*oM(tR(n=TeCpn+)xOcC(qd*|H_}kgwlEhiMNoK@e)02Komt{a$bArO>qLKGTg*zH*F0VH zAQ%+5KG{znuW4zj_T5JliBL~XFbY(CANKC$DU(hFL)b?nQ3v-Ag{!z!@>_4=?Yt_s z>QDLm*GFGoXjItPee{U66+Sk#6PgqK5JDu%Kyj^;b~vaI%QhpQ0X|E={IG9cda*St zIHr3?&Pi&&O&dQGS{kA0)8E^Rz8;iFJ)+b}wUFU6-ii(Vru{U3 zR!9~dNDuCb&=V6miP%Bx>IBg`rhVaRVT_NecdvuKaTRkkz^!6z@FbpgC|++_AHG3N zWv>zR_^@OZXqU`>ZC;JUcZ5$^uYuk>=M_CkF<*|}!#8a(u)b*OlSHNreP!P0x)cQ6*YHd3ppuMhjReN&TxS4$2a_aoR#xccbz zfcnD;BjnN5lX~Lm!7cqN?TKaX;0c7(8dVT;^_qT5YoOawkzGNSYbk5y!VlvtSLL6J z#`XG}NN=3`80jPRq@D*U8{U%ZI#iacoI6aaTVTi2Dl9uHYxr5~+7 zztVSNaOi5#yQWTRrNd``x7Pl|sURB-@~X zn$&V4scdOm+j+zmy296k_roc~d1rGDY5z_{nqB1k5GYUa)gx#-wnmB7>pMF(+~(7m z2t}`3^B)g?6b=vYTuUqz7!J-9SCO_vJ7q^OQxnR>?5pEm`tx)2h17Qi1K8EsSPQtO zH;FsGo4TmD)8FoLO?&YKfBA(&D^X{1$Hx7=_{JM)*Fcle;RDWYstpF|A=QWqO!`^u z20vA#L-Cz^P}7;><`Bu!wm^(iuAnQ*$x?^@2`0}C#!|E!)$TZqn-|a5i?F~Z0n$Ma zX|XHmj^(V3A^g_x$@}bnr>V{x%J+s;`q-G-FSXu=-omtgx%kU>otC*9cYmWWJtzGi@rkwHJ5w*LM`p;#}C!;kt253&f z7P}jpeto#4S{L(Av(pO)Dn(8EQKtwc`Y%~GgI$W{P;A;rH~i{21#1mDw?geF-xhHL z6C{lnZ+#gOmUMl?-qe@%eBItrdK;`m6v+bXYxFVC8=b$&aQjR`jCw68S6Rj`p`MWoeYbDg~4#t`h3_8tY{m-%os7^qh-}^-sb(OQ#SejLm3K{ znUB7GJT-FE`}&ziUKEqByiCvFo7$`oSYIivfo}?%zz3df{zkeOb*&L4S~f9lk`Srh$}?J-0XlL?%+5jbF0BCFio&X_7rAQXk8?HK zHETqATmq^du-_7RAz}?jpe07;ST%`$4%v!jC`&sOw+`KWW_n^A{l6or8M>Io7Ey21$y|pZV6@_ z_TF?F=U(9MKN|aQT4|}Bylshv8~GebfAj4&v;wbT=KS49hy6U9yD-}tV zQG_-(snZLg!Y@6=6Mj`GG8+jpJ6jZUW%r+?j5M!4aur)Le-W^l`zT4}sPiKT`sJ>` zPZU+NWvdBN(#@Znd(e@*G2CSArS&Ss{zlmw(Gq$raaXx9(2xnyp=--Hta!BE4i?oJK!s~4L>b?9Yl zZ%tYnmmfV}CRbOVw+n7kL%UE(H(I^bOd*iGH zMVjTqlIoLj!N^Uz5QDLRULm+}KhcB3keSg`hiAi*IM2@EFCfUoZQKLmAVk9E{y>m( z2BKB2LyH!jqyNbc$0aR)LGcg)=4ee+=`Y2Dp#MJ4pokOPVxjQ2^Y9ua`57Y2jQZqTbT~y?j~>S0H+(Epav{MHGun zE}rW?1d^?IM4voJ3ZUlR*x=R&(dOo!W-vJPwA@{(3g|NlE+R z6$mA`udtW_lv}ypla0IeWp?X}ka0%TD-HzlUvc2W_Iej1b~vIBmR<2v7@cD4{lltq znvG~!;f5L1TYyhGMM)6kKus%AlkUM_caKO9a5RddclaQqPgr#5a8yuGj5=sF$iQpYb(za zyxB54g7NQq??qqNs|#)hynu!cd|Q=px}Qk;3*_}9h@JN)|5k}g&o^z8LM@Cf1Tkw6 z&y1Db|ATR$vuJp!mas`mp^4lZzy|-HHM*P0j>}~pGAgbCtkBf~%@(x(I~6N)KW+JM zTE9+^CV&}+5YK-@{px&`w22&1*N|p?Cd?w5hRxlep)vAIFdD!N9LRNP*o2b-&IM>* zhxi0BKFn|(XW+misW8?i280)p7v2L=pjO9Al5 zW;Z1U2c{Xau}l7$BU7AHj{={}n^MEuSxAtrYrQC(OBrnavy@61aaLODh-`xQYuIR*GGrz|0+o)Fp&QPuAhUH@XNo&IHU!=)|Oz52E++W z`wAI|F{o=85T8)i#^KKD2{C1rZ$NYQb-d0=1bYYv;K-54#;(6Daci}#k`Oc{5$r|a zBcaG&hyAxDEaSUI@Bj{oe87Q)xgYgEQXOz0W1dC?+?qxV7{Fa!Ks%~1(4+=eM#R!#d{cGrPe~7&d-(`0C`W?u*t5z{9Pw2Qag`K^Ry1 zi@9{TSJwE^F9K`YXpa3l7o>n)f|{42aeuupol*ZqPx&L6O7iN(H>le6H=n z`$(ve!fy)$?c&oQAi$&)LI9>h4?oojKQSKce2EhY0U$S`;?=-3uzOzdd|upQoF79| z8nePnWprRUaR8TN9cKO07BW5t4KRiTFh&N_fEd6drYVEYMQkTgVvw$f;9Y_N6Jjj@ zOeiL7foqrsTuh4bAO~7Q3;-!1oHNw_$Aq4{Uzfbad^MpBC8(dWTbQ!v@Usnvpg9$= zF9N+G{)3+sIvee)z@z9wI*#6j;KFZ3CiXUVz`iv6qmGfYb&Ddp&+2jPqqJ*GyI}|M zz*QJEdN%7+N<6vxDh_m_jYwYzqZ4~CQu2Fc{&<6@&vI~D2kd_Q)13da61^6dRk*ts z;t#EIDsV#K*UPq{%0qLDCw$QkDx{!Pa@UP=-X}SY!EdNhdbZLBa>F-`aV+{y6^l*5p_dpnN7Vs60Oq@z{ zO|SVUqJ$bN~jpPJ0S7_oJ151f;RD4PfSre`hJ z8uHBsV3e-b|1T~7hyL{E(xf1y|J_?wNe3Pr)(w@w2$=4zuq;R*^wPLw5pP_u9FTM1 zK-!stJAe>JzrUlu^+pExO~ew>&wP`e`(}dxbq2tn3B*2x1p0s2Dk0PNAFrFrIp!p? z?EpmbZBQ7vpef`Boly>I;|vJvXO7q9j$aeR*8MX&y6*puZpUWMXTnnWFl6t{4k#}% ziSku8AAU>Yu6Zb^{dza?`JPa_BF7~QO&Irec-b^~BiTQ`)TC#IWvNPGl7WDuuLI|5 zJn-+aR`VMi(S#DdfvLYH;By(aH}KOLko=>e=I0=`XAuX=h1MQHu8*`*gvA`P>dzKZo!a1!InTFb=dL;)I$@; zncW{iriG^pguUU|xguo6pTAARzM%)n&`RI3B`gx!;SAg<0C0-2?YyH}&Nv%dyohI{ zw+!N#qT(8gqM#I@@PH2vG=T;=yoh?WT(_J|v!1B|5*#`wGZ^R;2NB>lK(bSxAUC#Q zfxn?aG*R)5p4TWDAfT8MAnLKjceB%RxC+g;w>O3>FPpeu05`tT!-r&L;2zuRsAPDD z@7Dvw2R_gu5e2Z-#^TKl_vLL_A=996eiUz_dCUe6eOgPo3lziLBLs5n)I1{G%ZaIT zT~7)b`LU9Vt8;~r0cVHGJYFDZ(GR9@*+W)$*mHB|#dVb#&)~L0K=`nT=l{k@)bLk9 z`D0X@2@oFIA_;%x!AGO8CWL&AT5OU0dVrN`qu0xmL082vKJs^A+-*_cZDmv_agm8n z`63B}{Oh&p>)vZgA<>SjzV*j4{*HYLewqU|e{M=6&i92pIBd)KHA$dCH5IKfg=${H zWEL_tkcUJ64a9FC5-akTfE(;oW1pMSpPRNB37G>-afg|_Qa78wv_3@laSq|G68o;w zu!58wV1f&VY#;N`25eW}Ur*d&IRfl)q_hn3uof*LE z_7`+eQb-2`^`MaO&J6134(7ii^nLpwL_l@JN~WNY+?s;ud?E@F^J}ES8(gnQCss&N zae-E_Fh`m_`kTwdj594jw6&q&Xq-lXS`So^gh7ZQ>G`8I6oRhu!1{;{EP31)*G)4y zFl4|9q}GdWq$<}DWa7>4p`hU7Y~wXh-srJFQW;Li@lUeK^6+qj_Fx6X+zb}BB5ryq ztC0JHGZU0DT3H~UFn^pfoS8BdTz@tJ&d&!#|H86>eBwXnj*cP)K7y zWoAlURheLOL;#=|t#Vv2n1fmTe>xPE8xcYtVaB`ilfU+lp*1u0_o3ig2tAqwC9@A` z6U}Jz+A>@)KzTek?0|l*m!`j$#>~{NG8!C6ehGu(OuzwUUjD5Mj3WlCPkX|g2r74n zBq<4XHlYH-2Wkn~29`02DTQr;y|RE@pAiT^aS`rcM+4;7Vb<3I8{6sbclZ||X?TFY z`VoMDk}n`1nznITniU^L1j3WxuoPS{P;Leg5WZ4y@$^e9oN|+R_O}IQBEiYCfs_nn zY5)Q05FjZXu$TXnL)9`tUxU&x-6Y^;Z~$^jPI-c(U3KzZ zM9E4_8Q!5fOHum8vY$rSuU-QR{MeSAf#gb%0;lO6Gu1uznE z?6<}SG+{~bXXiMtiQqW&Yo?iv__r@^T#}<|X$P?}vP!wjBh)DzJGuDOM`Cc0NgUM1 zygHdHT`91iJJrxdv5bX+*Wj~#0K_$XkY3}wqFD0RB=L$BN@f2K#CAX8K)lcz(LAux z-F~p_31bkb21ak`X@bLerC`t!3kiUUkFZ}wI%074Y8DpdfA4!qV5E-HaQ6~r&>RpP z8MYIV0%Dyt`pXOf!>hpbgP_rtkC?-fn7apGdYX~Q#i(f1=1ggL5I#iWF@Oax0x9yYtgmghm{STz zRPN5&L|&8P-9j?ZGU^}-tn*4IZP2c)vNxb5eE?PVAO>RnB_PH2AVx6~Dz=fgcvH4K zVjlJY0y+Fg^N4>nj|-+kmmE;NM3_A@82g984R8#le-Wws_h73v02AkY=)p7OP`Nm7 zGx7#91Zx8@kY+#xFjEjo8CBuuDsVp%i0K2lrxWZxQ$XvSHxZkx00>gNKA+8b$Min& zL_eIKH2_J7dh?nCDPS7z9h*RkqH-44_rybRv&(VP)(5%}?=JGc$g}tLbfLbb3A<+N z%Ngk_u5Ef{;Xsx%tPM{ND&pbOljrJ=j%)K2RGtfv&;wDF!fNPimG9E$wFn3_0n=k? z9kTNFi0uQRa|b#GgwA0^B13@f6x?^ML*ut>1!vm=B%lisxcsePaOl{~?%v>lZ#MXI z%O9%p@kMZ{FcNk_I2Mo(7hlr3?oK?q>_S* z6+65;?PPVo6;kMZ-uKcfDL4;U5a8=U+ZdpweAOsWMfi%~E9Q9@eR-at%?uM922unN zXaI_M6?Y3*m~JC#nZ3>dp`LHxO)ee~`xp$M+S#!JK~YN#sll=df4P+>x)A?+cbyh8 z7=y5&mmUTXL}~s)RPZlEHRZ!Taj8odBS-RP3hI8==77+cIOxvCDooU5#A)%@{UAnV zU{pE*1o`d(wXy&%HlSzdfLK2q7mtv+_Ne^WFKk#DH{-Yv?9J*;<^5-J4ieg zjmw|E*lzg^L?_M7FZ&kVk?`aIMqfJt1mw#AGUZ`o)OII-%Kd_V!p#lv?}I|LglGfs zf1k_IFgpiCg_j;S_HB1Z_$87b!@9xsqJh{zT0T>Qh#kZcWZ4?9IF;rYT}(c*(dKQ` z^~g(DeIekXFqrLOYk+L}45D85Zxi?NXg;k^3)sf+CM0MZ4OJtc&56`%f>Htqt(*Ws z)dN9CpvDVIA>PW&Neuy6z_3)Opb03qV8ghM$GD15xbNpYp#;=w0&#^78VIhHnI)*I zN*aK+Y*X>&$A4~bK%cNm`Q+vbz8)pOGCpPyN7mWL2aGlJ7eM4Z*)>-7IzO^l6B`g& zbFv~GTL&Ili@ILnEMfyTknB&t7pJe#Uq%K}I|hA!84d7fre#;D4;)qDxMo@a6C2R; zpuX-RuC*|(wKJ|)@C%6m_xsQs(x)GDZ#eg#FlYFH4uXNR91zhZGL#t=k^mMju_H^y zJgY5q?O^)e0-NxG9)TMbR%M&y`5ntb4FZynEbow16tMpc9h5KVn;r_2v^ib!W+7#J zY2(O0gaSY20!4U02I*4PfI__6gOotfz;-_mndie&aDq_U;PeXheJ1v91q1N81D@Xf z(Nq8F(c-rG6a57Ak9fofP>mzGy;0a=Yh*7P$#QYG!=JiXNlY?=t3$Kv7)>SwGSIT$;_1Kpo(qC^Qt-ktnMwdFJt6WA&nx zP9z7Es;gfkGpk)T%ODVnDkYZ^f(&gNzS;#O4LN?}Izg%V`?RX7n|JTILDpqd_vuv> zHp>94v@7=@%nqFfW>z;}+wKALjjwR5c6l|WbUT=%qA6Dw?7UH8u9SLW2&Qf0}`>^`ho>B;2`a z@x|%)mRg`37+1LK?*(kn*F4GK9*JGgObfHBxPGn-z(P0FkbV5Wa0Xh5lf20@@)!Xq z*Mnx8pAJ4kcumI70ylbj`U`e=Gdxi*-hyD<#WPd@f^qaVOU5gVV3@$=?y|6!Pc*YOwr=b-r}kuuv|{(E=@ldvFXf%jhq zDg$|sjt8^@@+=kHo(`FfK41abA&B))FUJM;I^(Q<2`XgN^x|gj791`PBvY$#xWKMU zv3NlPn05gtcYhT@qYoOtAt=Sy7l2FG!lfyT-o{BOv{QKu#t{V^{uN`y-;e`D0nZC+ zXQ$eJ{lyXQ4*r1&h+fYi@=ZZ_MNGZ~&O;35OtX5X*&SCZg{fJ->}XNIGJL|R7Gglh zI&eWj>7NU_dC%4dc~mWWrY*oS;kdcLAw+Q&cnO>$R0eSdn$pblz$du0L1&WBKHU^3 z;x`OMxB?wANoArfCCaOYDyuKhH=su$z{8EdC#4T?kV-fEhwNYY4(FMtETk(%;iQrS z6{grXl83{f0#yN44z&dwQ0@wf=&1k3{rNkKZG*Q`SN__| z%dMd9`KuA;a0!r*Ec0ur`(G(qG{Q{1Ff+2s{`RC{7AW^iG(dYzeOmrTG@c@HlF-wq zA=TsJc}cM^kb1~KG_?Qs;Fv&sO>6UTp{!D#STephbBOm0uC4^Re0q&_{wwl{Jf=td z=dnu!5Jo>E_`g|CE>_}H`9EyEV{|0n7cM*#CllMYZQGdGw(VqMCllMYZQD-AX2-_d z{QmdD`+m4<^;+GhPu1?KI#v5T&$CbOEdyK4FZK;vBJ!6@zjvGdrRDoge7@n=a_O}G zw4e+M8v`Yn@PD{QF)!qQ9S-pS!(~DTcgH;%Y5)7tS#<(LhHw8Ai2*i0ngc4Zf_O&j za{3=8{eQlzwT^_eW|WP7_GYXO$baK}uT9ARk%G~0XHk(VwkCHRJnEC_w!7tR6p?ssFcKh3fZ7?t`nqr*d3) z7e-e`M1C`wAYuCNtNJ~n|A__v-}uTko}`Y*29Q(hZR-c7gFLGD{crm24epv^h~W#( zDD&|2hknAW=*9M4XH~kr`$E1n)!ydi!!l))Q|bCx^$!@p_-$5Lt4(i<^r}|AywASpOqEv57zboBRH2sx+#H zr=s27{W|^+#D0?q>3PbQEM=Ql{Lz&EY`$~0uzuUz7_Be<&t}gN4JCH2GV2$<#KCv> z8x1Em!?ZIJo08Nec6Lp+heGA{qmlz~1OQO@0{{q*L|1VMd6h0WC zlq;(JgH!l@FF&9;q$;x{)SM7Xsj2YY`FkNOn*6aU_qvgw^rFE`Lu>v-$IbXp{@k%r z^#5{xAIc>7dKk?8ny!l;FJg2r{C>KY0j=s5pa3JaPe0{ATf&SghR65ZULEZj(;k)u zkb;HrseeD6px<~j5(~$1aCIgc^;B=1Ro~m=cAb}HZY@?`!z*e$y54xG;nf%v$>}up z;UY{670|1y>#(eq2hU zpnD(uXYtqkCkf#BgkrCJ3u$8CoqpgMqB5$##`C0P>!obQ-uRU*kiTDa z$ustlD)2FPf?(Z55=My9HgnxZO@0HXi<0r3T`tSY4f9Y)wx zRYMb}p+_8@x-xLWs@#QNKv69ux%odEnFNYzGGv&FYB5P--};t@CY#&c_omlqFh!yA zJ;e)}Z-RvXeRT%`iJ=b?(DZ#m0fHo!<>ycO7Nl(K32>S_*wLmSF-67Hm?_ZTZO@<} zcN~)RCh@yuVEd%74ln!`8Z zi8*Af&nI6o@cM0Kz#6qt6R-^q@0&etWtKXIpi-xW-CB6CQ z2C9$zkvey&*PG>rbf;T$i`Qqp+v(Hdj4Bh-&tJ#akkdi{1!=w}BvG(1ncFG0>Ry2lA%XtCv!ucdqAC7*|Y?iWWRkO?=zPl1(= znNv1)p;x&H}2TB z3c~xY&(3yjeqtS!rsQ{eN_b$hKeqDp=vhV;6lm$aXy?$c-IXK<*^?eMp*v&ivL(0G zG->Hh=|!mxXW`eXRZ`QgM3MhiHXN{ui9|tRC^;2R(t=puo9ohIbr14!1-~ z5HEBK^uQkEz{q_(nIWAKqct6JuH`+YC8_$gy3-xAYVhfA?d%*s1pK{=ng z{=(uvU&xc3SOnI&2Yy21PWR)q%_ioS4Qq>br*k9G8d!z+a;<_?`66eK>;?BbCNfKr z&d0mMbhnKXE!x5TX$=H9W%mt_@(O|I=8W{SgZ9Tf;^t^x_cbSWh43^j*N5{Tp&Yt>CE6fa~BavI%n;}na?oY?^Fzd+KcaIQJ zkQeV!2cP+liT^yv;+*f>^JRt}uj~j%Gc%F|=`3b+9(kGblEN@7i~kxs{dy~3hg(ww zZ~q^r}r)mc-Kaxg%-+Y4-^Z9i^kl%%!90jtSK} zXgAL38#p4Pr*$inoU@E5hT}G(uq0eu;9M(LkU}6GX?+RzExwP4yU&3%0x}uUDnYH; za~OrqP@+9sh5hv`QrZ#`A0LXn%!z#L=ghnnP4m-VBWkZ{ru6!e>Hg6pgEuk0-Q`T! z6Ger-4TM^K!mmrFXp~!@RWo>JC~>Jn;4H4@qaSqf=o8GvAb&#H>Oa75(~V_uSOyqN zyg4ABaNg0<6O8^fcl6{c=cW03hBDST@p}b)G61N9$7r2u+=4Sr%c%uCH!9!Ia{$<# z8KvxdO*l5L7GrKvL=)|}2<`8c?dW3a8t)%iX@JFK!r#QIm-~FMCN=yDn(HC2nY+$ky3R+oym*sl}nh2u2B%5W!*r5sHtt z&WSz>6_CM_)!^VWk&69|M#86*z4O)nQLJ^-6_+1AX{^IM{F`dfpRBe9tbswU(gXX% zW&V&X)`-b_869!#3tCf9HG<_5^ciqB^?vi|k`nC`?J3ZUFq4=W$4YSWTw7Y%F1Qja z>b&e_D%+hFwYYXM?^Az+X_}0S+y3+vyN~V6X!^^|<0n6li4+qHBglJxqi}RM**I!{ z$JDCQq$9T(1pM5P@Jd8GuB?W{@TbCfOka&|$a{K}cIK}-VvQ#``7!D>u9LfwU7jwJ zY*%Ur*p+H$%!adaM>D!7!oN3~)!jABS=Dx&QdeRMLCtxp-U*RGp#epd%Oq0{dz zpNm&E%}!doqI`d?bH#q^wi$i(qeL_jZ8^7l;-4Acb94%~=r3ZAA84RdlF}PH_8hEu zM2MB!q3yT+;+Th@6YQ?RcLQ7*7Hv)yis{iwe5d|l7%w!poNexF&j7jtg(T2ZXF?iZ z4$XSumgEG?^mEMyb;EVGDDFG@?N;|GAQjL`TG=0>b_N|+gBab79=CnVzczTEFAfd0 zTx+6jsd_gkbf?Udmtj%WwyW%bJlD4Vo%)zMrxkZv>NY-T*aq!#mA+++1^3mj_VtB9V%YqUvN=5eM619dz~o71jMBDvJ|%4MGKjmD{tg?~Q(Y&z&}HP<9_!cjbBre2-V!ik!^T0DGz5<+@W9r^u*K&H1mbubHfZGq zE*B(?Pj|b?tBgnB;P&GKG&y4K2fh?NYrl(n{k#F2CD{mDq5%^f*_5`kX&QI_%fh=VU4DQaoc){QfNzQsQjwC`OcjLVxuz9{vnQf*{OdqUL#q&8q#DMJboZ#1e zZy$5z6svKKT^8OwZRoe3;fh{7x-0+e2!;AI~+6gEk3y{u)cwW2zVVPA-~ zLd+Glsdjo#RRU0ShLY6!*T!-0)*WSLkkg4M!4BAkaU?yuHmqx|O`8v6Phft87zD;1 zplCXe8izJ9z$Opm=_?5}P!sT&W&bl;=p!qX;915X)SHRcxd9OnIi+A?NmZLjQAuhy zAsLiDTV^Om&OA|hrR%LWb8QY^OsgEaf>TKqL*y*U6*C^$v;c_xRg6`HU9^~vC`lt4MR1UXWA@VX zW3JqMpUZW*{@>pz9f(U8+qnw8mAL0 zmO5T_@&}UIceCU!(>$oo8wMl8MQi+k5fz71eyR&hwDNs*Hk!H6MV9YGpjK;;ET3d$a z@@%0F&Jy{8p^aHb5s$r4o>BX%r1^u{82H&_-s$`;oZU9NaY4$GeS@tHefU#X>+VNv z??d)*S{pZhx3Dqi)I}^;+`CzyXt({cYQR=J6io6ElFRxRIW;VtP=BC@-d4NJVXXC_ zr@kZVIo~E7-=*R*6oq~;q3#!?J2iu~J#Oxynd~!j6aDWgeJ{RYR%n^4j5|HgN;Zlg zQuQQ{+N<1|?diAqpaZQ|#ia}?8Tvw?%FVj=xtRO6xMrs`a((+B76%y7vg6`^KP~K5m5Eg-=-RpU z6Y}h(#EXIlL$N>(aoL5R`4K`Rf@J?mAQyMj6QY<+a0T&3@kk(BbZiFUn0JH)fGS`= z6(*P25KA+RvbL&KPtygICxJdAz;AZm_!Z~bIdcMjK9OG9sv}DCRB_;b;s2>$CS;Hz zTSxumhDZ%sHZ5Hpro4ZIle%B`ay7RZkJ0p8PWNkhyD^>W{#7@uG#Sn<*TT~u&W_PG z-4ZE*3kgrKOYpZ1L)Y;|suG3@ID^Uy9V!a7qsR!S0#I*ff z&`QuhZ_P$OHMDl^Ulh^+mw4l=8L|aQ@sEMMRjZ3H zUZIhnt#fSy>EFH1MT-%A`C0$QN|Ik3!pUX>NDh38pqt zh3wkcw+IJQ!OVn}*H?{DYK0%TA`Gx1Y_mTO5}G z%C&iXe+HY(RCWXb`ly+HT#jds9ZcicKR9Q98nZFiJ{wOJ@o;Sk>@_$1(ub9acB$x_ zH-ZMN;GKUqY8*qY&F5-Mh01Te{mKrqT+8`hJ)M+-ZCQ~VOxNm2-Z%qxd}a*g&(R!E z(yUklkQ(dY^Vu$6sqWA3(XD_p?#NKU>}h$wk2;z;-eyra7B0v~Bp9zYejG`<$tSttC=w({dohuo z_sA(-P|luDOi|}yQc&F>=@rv_#Pry}E$5mGKKsP5+EL-2(RAKAwx}lhr|s7U&sDqoElqMkivSv!7hCvhc^7#&VJA3UOH;QcRCGjhkmN?q zem=62%B30dag{8!(JA<08!rPO{q=8H5=z%xC)rsn?FVKrX*1&vw2dykgmpse*9|J- zRBkL^vMSpiBZ05{bRX z|M$uVAB`O)9P zba*1egm~L^|74YCmn1l_9l1r{EZe~1{NiV;Xhmx?%0X$)sm45qZ`!*FNfd%So zrZ-2#a$yYHY<0D+gU&66u+0Gs*4W!eJ{rWeCRI>ZN3-GWt38PawW ziNTxPl4uIYp>w5>;ZJSK&zTj-j=E{J3da}&7PwN@5c$*fV}9)?ir>oABQ*ZTHYZ_U3jy&iMu8^59ux8=NEiv#Sj&&lY6Zu5}5ro6+Tv zXFXEJ?IDPbAP1XYg%jcSk|NIvp7!8#Iykzsv~B*eQJtHvwp413PR*hj^j30ynJ5pA z^s7cY@}=D5hGkr~|E1x{fVmM}x!U<=g2eSf8l(QK?#llIG=T@vnmuQ?TSeuS4GLI);}Q24fG)%3$9?(xwTxTwg1h@)vmYgL0*WV|g_+?R7b*(J}AxVkmSI``UTt3H!XUym!$0#3b@mF!ChJgTnIEQL$X8S!$m5_(zzrB*4u#y~qt#w&~(iv^J7; zVO1Nhc0vMemnn`1(3^?@JX^e?xcn6ru!;Pl{>&tJUH+-Fj!D^a6%J~y9A6S>|qgT7wC+h z?D2=E=aMnZs$fJP2fMtXls)xK%Q~u-dKFt}HA1{x(AJ$B$Yp)TwX3W| z`Z2qTp-m=xn;iNUIh_6Mg#@OtHI|OlNY@B04z$J8O7H%PXf;|qhlC<1{gv*p{*BqP zk8@KGiQT(LQqkuIvoqSngnYF6ezMcnX^heucf+&~S1_PCMt6+`l|i=L17s%c-Hh7O z^l!sbHYJ=SOgD0=$<^}L9zatJh6-*JE{WEjTWxp(sO>p%cnB+Wo;1_lc0Lt7Em9xf z?jN2G6*|VCT%zYb*&CMsFrgG(ol}u0L1V^gv9`Ya~)YIlIv70z5Z0EE63t%`(5*>O8IM6aUCTxgn($KA@#Ay2^GxW>>v^2 zaZ2n-PYuGm+Tjb}YZls~K5ZA%{W}bEmdh(n(GH%=m0L5HaqvCEtfkqi$5*Dm(g>6W zqNQ$f58_UC5ra-vYRAa*$6e=9Lg+eWwuXVXl(=<{6Q9ycnhmQ?r_dM^oMPjoG2N=k5~sfx0-HZ zPg<%oJ)}51M~WO23E$CXjSh@R^2QwQxJOZV<=X?)9oGnKhiy;hq^tZZUaa9979ekg zb6&!1E=QS%Z;dGaIC~jt)Ox!lC7M>Ym_?~R>C%WBy-`*aW}8HI6y^zW=&b0>IB4U~ zlS4yFfQSsfc>RgmV)x~VaYj|_n)Lwpv0rF!k5 zll-``wi58g-|sC_IIu7C{_=KQPQdUyk2H!@hfP=g$1Z1eI#vhXx^pdZ(N23W%CLrm zy=kASA51Fk8ES8%+kSY`O+9t}{41+RwFIcW73N2iyNa>0jlS9ZVGEz-ea^bEy&mYD z(z`C@wGs<06t-Z){g%N(xVtTbP8ir{N1iC8uv!zFYV@6_wu1n^dGYr7t$uCISir>j zcO55JLk;vH;+%HzZ?3>?7%-BnzW)|0qbW1Loutb9A48X@^Ukb>iEzfBx9R6kug2gs zZ_=1iURMH3SVo&uAyT*1eA;j95*`#lUDz~X^%YH&?PAZR63}xY3 z@#kAl3!BMvvQH63E=IsTnylPq`3#I#Asspujh|39aGju}yhhxb`p;0fy$+pYo>2UE zU_OEKK$IzpL!De{{(A28S7;`Ruq*}1bgn%g;xI~inp}-+ibex|rcj+&wp>gR_7fkF z6BO^ipIo_XFO%QPk>lud4cOj(+(WB%D$wUb?Y)WKMZBwKFSb5nTLqKHV?_XH_8iDG z5q9EEkxK-1&P=r(>mhHmL2+gNuoO@qzG^iT&Ej9*bOcUPP-tIr=Hh7Y5@bnJ4zuNC zPXqlNW-~VpDcY^-e}epd8;(_V@pCkt6N20}K6C&3^Y@sdasxMyH6e!kkJyycuk#5{ z6a2PEY!60nTr5vfIBj71arALdpdS~mhy3)(IJiS3zXEMY<80KEr>2SDlc!!TM`l%t z=ebrV%buC;=yUUX;grgVc|Dre>v>ir`vq51ZMS}k;d-e=XwW_*Myd%2+CAvn{uUPY$b2lMKkV= z;L#9aJh;BZW{Xg7LC!SIre3HlCa|A0V_?}&XR+mN$L7$@)+{bV z+t#=+6tujUwd@{rv7G(@VO3ciV;g;vnEF`{ng1fHE6{^ZD( zTO|zF=ley}A@0xxZad!Y6g*yN*F(TOl0|*P-mkOou7wh8Jb4vt2D#{7(pE5+Pg^rZ zm$Im7QC^ZZ3jE_({_kvtA+99s{;jzi>qllW1EV$QSG_kc)9qs9bZ&hSyZ=!n^)j|u)HNS3&tMKbjPjq8$jqzagD8zh zBJA4XcJL^DE8s^KXTT#30}tIBcAkIbwLjYukxTL)^HL1gZtJfQ4`pHT?UvTVw|{i4p_D2NiTKSAYZmKSc8&{u-vFa6u;LBy!&Q=XUT>} za>vH5wfjJf!Z=2L?Owout^iUN0q(V3+odqqM72Xy`t0fu+1~v9^+8hLkkQ(x&Ksvx zbp^VY&rbi6>2Gzl;OJ{tb;G-JJvT^CMl)xFqpo^z|83aLX$)z*9>vJ}iJC#Tp|@>x zn`YI}q*jgUGJKiblZ#Q`lo0I|&e?huDsoBlmJSjjOTtj>oV zIv1!!kXby4BBFpm$+_no@f*&#IsR2}^^~B$WBX@rE^2L>LAz@O zk4w)Toaa-mKqnk=t7IkU{n5%XQqi3Sw#xmxa{O)YBZCqp??jP|gcDUEP*#yX8ww9g_|eYI z1cKgcEI`o?u`b&SJ89_eT|2WrOF5Ij679?C-Rk*}e7q7wpsmvyLF{<+RxqnlrA1hUsGX&8RR)`U zn28$r7l%ur-hX!>e<5~({7`tdP2@52l5JP$=x*2M56f&-{R>~XAJt$iUT#7KC+I_- zCYv!lpI&S$8(Ve5bf2%bQbqWFTD64DHiV9j@~bstTNQyL8+JqzVe|O%PJg-Tfx`fM z<%b#hu$Az4LD)*yoj%|S!_ibbCYc3+^sjyV=PUPJB02=XSiMlOm3MvGIDlRgh0Vsi zFa3A9N44`Uc8llIU4qJ{nkv?OE@!4FIqoR(63luDf;>;8m>>_So1R{q?V7Jn!=M>U zGhj2wuyM36MSWScmDfa-Xpq7$-6g@aa7Xh^cE@Krr^Wk(BUb&3Tt6^Vn{*~QC94N4 zq~VoDoq7OdmAF%bHd~F7RAyD27^N-NUZhQXqJ4%KUl%&R#Ohu--)arZ{V)Do%XaPq zoO9Muk=9NFLiIVPFv4Iq{MDn%9lOiJ-!i0-Hl#p55_Syl+3|%bgT@xXvQG=99uJcR zV5{!RJ*qPtQ0%0Oh&C3+dJvcyxro1tG$tJi2K%jf50VuU7Okg)^KW3$pKn$VQ~L|x zT{FHA+U=i{cp?Po_id#}0mFv}IIA0XpGkXy(VL%1_Cz|C#!Nez;sR&MVvCZyy9tol z+G598|fR~jeHWI}81!Y`Ni z(1hS3(6;aZT%08~oQ&M@SgBgQ@dQMb3L~y}N1#h*4fWb~+2N3l{z8jjRniKJ=zh{( z+Y}sxw}EMf+0E1R)I|ta%19rUl$y$i77n_j*#Ms3Pk(#wu{7t^Nc(yyUW7MG|*D1-L(Qw`{ z`^Hk-^foyP<4F#ah(VQ{43YB#iO250f8aU`TNB0oJ~0f48!wKOH!lNOX2!iT{RD?N zbH(X&yn5~ouy(GcIg1N)th7FuF`K4ykyj0*d9uUn)$TWk+GfWUtEr3TVPbE+bXH*@ zt|h8hU7>dOKNE$YGPV`5#w@fVRRSk@T0ya{o+&^>oio*Ks0s~Dy#nEBrhh8wlys}x z2G(Q<)MW)$dLX$_adXxiwk{goP(14*OtE<{B7vi{psqQliQVAClsH5pg#=|QN6N%| zW?I++nc~)$-xF=tR`4ceKukLuwR0SXe>t8+ZPDpu=2NT+3(RHjK*`OawRfV5?n{l{hE6E7Ud^#ge>E}JTm zYT0ZlDqg%xuxVV7iHD36e1M21eeKA;JE{021*80empp0RpSBSNQ9n2h}~ao-@|#7WD*t z-ss>rsNEMKLK%LxnNOENSy~93OE=dX2p3y(+a&h|Br{37y9y~V_!NAo;7F)>nkndJ zT*{=We?1eUc$x0WF&3e@XJ1L%No~KM5zCx~C2W$by=pFe393?V?{qn)nEO?0RPQk$ z>WrXj%`E(Ks#Sz*2OC)%@9T&*={U>RODgU!TXu4m zvcDZCExxLY;lgyEvBjlLl~tCrzm^czT;S~;1TMYkDIB4l?P^@yb%Ltn#taZh zZn$0sm`82sW|~hV8_~*8(raKY-ef8ukEVHy)8Vff9d>F$_uwIvJRsBr8|{j&f_T+e z8A>}J2t?=aj0 zsfrK5Nxhetk6)F~o)WMrR3cDma%UhRVS>+BR!xCTO302<3+s<5#DxbOvvLa zVVIAZ9{r-t7yv#9UtrauB`91`lW|DL_vh`GYcq?(z@6D_e}B{0aUe;Ms*cq2qb>R~ zKfQg20HzwN%Z~QT;tfm6`@c&bc3c*%&A)bokvDqddnDt4H!_g0KXs}e+}62HhV53abzCKruC!;wdQHV(phE8 zk4@2Vcpn=&-kA-HU4+NN_bO4JCv0Mz2IrMI+I<&K7T_T)?P7bjHolU1G`QygJo7eK zjgpUI$bwL_g!(v-=Z;mAX3HkT1ZjTMA-=DDvP=$MgJB?7@SRYe=hZ01G14v6t7Bd> zeiBPokDB?|jxr);3CdmE2idD(19zwFA#-60-pVVh<5Sg7zQT;z)MeR%IOd>I*Bue& zE&gY^#h>{^!ee_9eCnaH?h1aBuBhgJD4)*A!A}Q{(Y64{kO=-V``Vv&%yHQ8#<}(7 z5!oR!+s5a_G6TymW3P8#ar9?9C(rTd^O!leWSMbEzlg%(n#O)|j->kV|E7&3xs6xO zbblxJoSf9)XO6;#AC$<*Skr7fm|2p1LSLdu3sDGj9rAIv-klD$-g!0@Z5mMT(9%1*NE3++1W-;1f_;1?vhK_jFM6^ z;5Pxj=lLQsWkweXitdw7kCfT+T-O;HMgRgcyZ${1W$h2C*%*oy9~QtqL$zOUyE(qG z^;biee?7xRIJ@36=0=!av`zw%o`A!yL)W`D*PUDYx0zDSekL|EU64Jo-cTlYSI_6N zbD8|g@Uv-(EVwM!cn$<*Sy%2a8$b0jDsvySPuF1<`kB3Y>bH>x3s04<<7GEzU zEF%Po_L^d0g|cNz9_uTw)-6V2rau#+ASB!o^0tQU&!~+96%}-&_iQ}OV9TBYRswhJEtDmpn3>KSiV1+PD0jgSRC8V-)D2+`l zC_^Z)k(xT+VfrB(&CLRB#}ABbQZ)LNtDqG^H@iMO|8YXL=CE^!ZntjS2rQYtWh_i$8pu^6yb17R81e0yQ57IP*pH zYGIoePbyY)K6N1w>>$OU%MlmH2PW#rlg~o%g^EJm3avh z`{?AQP)oi)+DG8NLvVVRRUswch-SnF`uOD_A@E(tYAm1N&b$faKBHkvHM5&q#eA0? zX(qo^6SR#c3Mp@|9&W9;_t7Q9hhI3my;k25}Wu*9xD7Lsp+4=Jh{x2gXRn;XQLW=!eU z@2Vbt-*;nE0<=%GHJly9aFq3cC7zJTZ_T3eQR^pCaG`0$-+bx&Q6f=NVLWI zB;dRwM)=12+(mN;A5SN7{6-s-`x3+-c5(T*3F@@RQX*eYpfa`SvxJ%xr=7(b+1x3=lk6D5%9Mu;;zzi#lX@r| zg5OCtKps4>SO=OnCvXhw72sFIG~r-g0$t8Erp>lDiD~gb5hfDJ0YPT4=A}kwk{2~| zad%)z%W=}ge(B*e+pIR;n9qnQxNn^ADu5Ek9+KDU^A&7+dRh^Klby<$-fR}(>77ZN z*t1vi0X8fx>{?W%E8W8YlB0XM8x80ozJ1Bp4;+OJ-|}MWYpQn79oHQu!CJ?X3I2+z z2E*uNopHu#%50tESe?B4>slhGvoBniWkUrhx?c|0;~QO;n)KYe>)a9&kU0G&A^vV* z0v1P(yb$WX0QdN>7KiFSToDrWupV91=-tn}DP~z`#JqNh z18K!w?6O!U@D%UZ@jhfZq_&zLu4@`QwI&mp15>i+X<1V0m!Y~BWEl4+Uojc(7pYEe z^OM1*ovn#tKStQ;M|?UTox%@o$Z=_S8cm2ibKJYMrV^Y9*v7&~(}LPVm|JldX+xaa z7eG5!oN7keiWX#ZeZ#X9?qY%$X@w_{j;{aNO~VFab0zR^O>*B~m<1C)B-Q@Qsw5Mm z1y6^3E23&`M*uRtO(5atp##BRQ$vndNbFB{EgL$mT;8vPc-wm|#+&fUplXH9CiVt#ggt8NS9ri~b?s#sT#bAL4q6k-NT z@bvEl@XIy}9wDD8)=py-8`IG!OLsDCT*0Wjt-Pkal%uX7Vwp%ys6eL0_Nm0Ooh0LB z`@A^*8t;o&84vb)Cq>ANWA#XTgEjvF(yOSzVlJhLdE+@fY8rI+W4M}Gjw>eoqr2I?0%2(j5rq93FN3R#OLs4)A&CYSJbQ0;fwx`C5|5q_r_&<^!@u-GtLXJ zH4cKd*=ak%Hq6r1Y&*DgxR$+LTKqjNp&+5=RT{@~$cU+pm;L5*WD@@L=)hm_RBg<& zh+bvP!*V|G67+~gB0+XQSGZBRJg)nfZwjihbFR7>zjTu?p4)vU!WQ5K~cxx!KBSpTa^-wkCbOUN>NdAA;M= z{_S8zw$OE@zIem6*L`&>3tdy6onAX2C<*cO`FjeN&z@p;QT^f8_}vahG9?Ch*~4rk)Z|abSum)S7ZWVt;uH0#f*vvhSB`$sNTEieD~Py!n_# z`XzLwnkBNMkHkk-GXdYJx+FSvu`HnZ`!kv+tYzDKRK^T zZ4b6ryiIz}+W{x#l2EuoOhjkT?kCB%1SRtI7d3}>#i9e7c>n?MGpu|$r@E-27eqP_ zn4Rshv>)MJwQ&&>HIV3JG>My|jpONc4vBpVte&Pxb(u|JxpCjxVi)3QcU%bn^Aj^z zp?s3!z2{5GD@`HrZB$5yxE)vLxg~J5w|za3V+c#hR}nLJ^(JyEl;d~1iTyAV@RS1D z7uNfUhjg)$o3CtAO1O4{N~JV*hFRN>ujc5avhcFe3fbyw|1=Is751aO6S&{A@4WB+ z3aQ;5KLajb30O{*hdABT@OT3vYmGv4Cy~`@zvfk#;@!=o0?&; zLi+Uea%a()+-sYd@=6`3!{Mg(5oZ7(DDe4iXl}SlTGv^)v~@F*GOPu=tNJ4vy3B|q zOBL8%O;ZXg=+(-kc4Dtxc%;=# zKEAPU>hYQPx^g+JnJeP(@}Z5*8OAlBgRK>Qe(+jD-UIY&)G|eW)lCWh({Ou(ogLt{ zG!GXsVJ{#F8~Us{W+$?djj7UWm!r>H?^0r`*|@B0S51mDuFyHX58NPa5>7`*YNqUi z97$Hx)InWulVk=T*cSp=Q{Bc-v5zO9n~?-NA(_%mkrzeWFBH=mPQ&9EA|KH$`#ib2 zYCj?9yKH{UC_f#)K29sIU3T}@-fYlaQEC6N^Bl`Sn?a?oJR_#r%ZMlYctad|rrV4!Sh;R9 zfi2I`h3U)j7}g>Sl3x0mAf_$Iq1kI~s?m8rIkcU%H-#s^0mzuM7&$Azt62r);T|+D zzutV*4CYF&OQDiEVkJ~t01J+Ze$%k#2ax9MeVW1@P|&3S z92pKF&=bLJf6WKS%G}zt$-~%Cny4;jU!YY2>#Uuij|Xt=rk@r!$Rd*rCdr^aJ*T=O9F;nXLp;3&GZ-8-U#J zslS&2m1UX2bzkL(DZof8QTYqTuphp*;I0J71H!XeQ7Fq~P3BDH}&Z@J$v^#TR|l*QYX$w$UcCWlB7@YT>$>x1<= zQoEZhuR%&Wm%4>T9z>?}9G49$w^R-{Q^V2SixqvW4-uy45WYjt2A^q*-TZdc8NB=7RCB@xMBS^ytvry zn{6-!!c*z^-jn8IT>LMw#Za(=f7(iP0D^QU8IV@5)v)hI1&VO35B|t{lfKyYnAW7C zkNsh4TE!A5PIpVX5_}(1NJW?Y%5#t~W?)InMsX2=Y#3gcZq?HAp7=DdW1~YvoIyi~z@kp1QUjF#1Y^k)Y|# z`?=C!!uYv1D&2OZkZuIt*Hq_w^=a*4Lvy0q_O4eO0>dGtqPIyQI#Og3rr$nP^zXn% zUb{g)D`P{`&@ydAd(e5mF$pY`3+xxfo~w;+Si}x z`Sn44_i=e?zljnUt_`N%wP-%+c5Su2%2G4cD5}#%8fIZReW1-QZk)hFh+0pJ^|wuQ zoX_{?EcDpfVAchi#(ie5^w>&IkC52NbYGiTNe3TSWk8?jGXtirE4|Z84fEgk)&g~; zW}n;PMyL`GV8n?kBxBfgQ*7Gf>-H9{d-L<5C5X3sfSd#6yjU27L z*MiMhM&q@+xTXG>VR8NzZI&WwEMkgXn$C)0;a3sM0M@EXy8YLY&J=(~wsBKqDNA;I zD8{#DAtV>`_tnDSncy>wfg9C)I-Rq?ppIBeUjB+syBD&2Bm~7^$AxY5Z=m`cw)ID~ zNl((otGcbU1<}r>2C+`SVO=+uHY?^$hF>Z*srUz-+y*Nb4#b-`A;@b78&m?`S?2RK zZj!)NM+I{=E?4u&o2mr^mkKgcs(S@Cl^)`KTyPN9Rf_>O%Ne5Yi-q-hi((i{oK#)e zie25623`WE!9is#G@c^-8X(GX?xg_S89%8kxJ)wIX&dil|3cEYOcnXoW_aKJ$O77rJtrP2uVzB3}73RJH_XVf?M61gww{(2g5bx)Po6 z!?$j({%2rAml0Ec$8&7#Fy?g(e~_E=wfx82vmQ)to1VWxkD;lY<2qJ}wEPC0wd6RD z3ZCm_h?@WK3lNHMhL#b_5Tzfa);`8G5A7CITM2L4f@^^>l+UXDByP{PAr< z4u^oAv``Q_C zi*e}IauWj~huKEn&FHktcSi1kSE%Urmvm<@^;f5IPbJxr2AmRxTZ78*lX!O;(`jF) z2m(7M>vmvK(g6hbSY=NV2eR?%4mON4(n3y)5|K=5Mz`ux8MG%^4;+v(k=hvBv2+S| zY2&dXBC&U83-x#y#S()CBg1hPTfY@k_-t}rl6ay#skCX#oTlg3cl2%R>rd!jDlbo* z^>EpDMN=QN7;E_kD#}PBhwN@|G=%n%_%W z*T&i3r>VL=w4=KU#qaOE@6SCwQ}~6hjbDCWwNiffTY2BJpU`9bqk4QFoF5Z2-_K&6SJ2U_w$SE)Yz`rgfsy1>P;s{??dW?mN^b$cbudZapv=&#f)XfmH667k4Y)@os zhS!>1R)Sc!J6uf{ERbw0iV6KsehNz(^W1Xj$yP;xBv-(iY*gd1{VRybDV*qAMb926Dt?L|wG z(tJ!PvIY$N@(e~Mhu-PULzO->sEjm#-3{zgNRj0TG{N~&?9AtvVSOD@f>sU4ae|RT z4+ScVlX}!S2LFNp>o_@}sRb>vzjx}5xw*8Xgj4&F(P*=M~dPH zK#z6}$P43ql1638kX_yh1Jo<-VA=>VFY2H=gqDWi%iNHZ+L?(X7no=!r7cp5)7n@a zk$;0dPMAskZs^{(AzlOP=1P)@Id-;<+pE)t+k^QwOx=Y*t1zD^NHXkOEiGG#ziqx) zjVKVmDG~}~)e|Yq=q6S;)$PCoU&%om&&0X=Dt z!QZ6fr^VleYMxjbRV2>tKTs;d>NF6(Lvz9RR?0c#I;T%L%ODubeX-Oy8-ZKtf0i`v zPl(l8DgYK{X$33pY;VMhTF4-yWOm)vxnx*tyzv@@(}~;~G>DNYU*x4D(>6q_Gs_)@ z`&v8n#*-agnNTb3qbtuU6vL8>eU9jH>sq1r5Y03IU zPjM5+^H9ezVU;y?QJd5Cec+zsj&tos+lA=DpMvOk+#+&(5QIRIlp;rkt%5fwHJ1%dCiK%+o#>TcTuswc&7dSi zq|?*c9Jw4#%ob2)PPPTdKmob5%y7=I;N1eKz`z4p9bLlT(C=McyYj7p93)}}=^b$M zD3&&-guvAmH-ufkU`i@ul5_21gb5){D zbcu=+XF@1NWx4y9I7}$^s|AYc^|gT#LZQWL7`hH7>{6D@I!E&>9+g~5Ldy>YVmin>ZDM#5F7Z_`K(N+7QPFea<1fq&W9TDI)FS1agfav6hMz#U#H7^{@BwkrmhGHHMlje1kW3DmOaqhs?!p;5GC|N&)C?f$M{2Lt*K~PnQB*W7jkf*I zAjaQ(x}t(zUrph_FAHUTEFZ#L$L*>~HbhFR9C?t{TYlir&oofB6unK_tok~vcpD)O z^uE6uetS+dCIU)jkG`T5KTD)b^SdC`ZMy#*hDd9fA0Fw1+h~s|e5vyX1zb+~z-)U# zpZksc8vUi%HD`NBsD;h$4(TY8FsuR6m32UYC*n4{1i*85+9OaehMc`Zc!s8mC{6I! zv>cyj=P%o^#gd8hEV-XZiv3yVag+n80USIT{9jT(x@)WtpeSK7D z=B83Kkm8JsT$`=cbL3cXOHKP%_4Kj3w9wHzhL`(HZ)QqQg)yJKM}r`ySyfa+rV!C1 zV0}{v*I=?u%W%AZn}B^+azo(z&jM1jzHW2K#FUlo&;HtX(0`n^nN+}-{s-Fram|14 zw3&GSIfeQ!X#1ZXc1mNyc7p+-`<@!&-4I*=zT@c-ivo&;0t$r(8;+C}$armu*hJ%D z2Yaa!HL?q3tYjYy!jRY1)zy@8{g!EFoMh_d^Z4HM-QhWaHc!kW0}k0bBdyRpDVZKG z(&zKoVNS+GXV#WnRz%CKk0wP%GsU|>r(VxGBUK`oF*Oa=&#mvL{NY-?nKfI9X)^uXxC)EIHI)whaSxfUkL=v}_}WwjGi1EehmbNoA@ zVDJ8HvcYVnD5j^q!{lRUroPn1_Z5f{MtTW(i5-4SxBC3OMJ@cJ>4bS&Iz+Of%2U@U zyqLcVxL=;oXjdX)9}wF|WD&?5pGYlV;53}m_>-20<${sKvHSy@uwkGm=6n;*Q1^+7 z(@W{&)1OZPY-HU%SAe>lE9rI0Y`T5h7f9YvUEs3I^z;1j;um&)uOqPZab5>ttwx{c z=UWVzd1Kcjl$Yb#eR>!`u)q-5Z4MmaX$S=;G$x3FrlN_llr)5$R5(JQZg^o+yZ{2R zR4yOp7rPEaHK{av5wV7aG{#Rgt#FmB$N>qZc)v$w*-mlCWDq#)@QC{0{VrrSq}F74 zL}o%;bd(K?C;|qA@v`C$;z^x< z^O7(q9OI}QL)w@C!XEV`xoQ>WsXbCC2sEU%&^R@BVD@>mk6sV!+3)*bp}tah5enf%Z0P@`&Nx4{nclTirh_a8fFY+Y__(zw~AZaA)N zMz&(u^8*SwBnxNJVkT~~K)>z8C1)QGPrLNf@f&6k;U~gNP&&Z0K^y3k{dY=X%7EfT z*Y%T9+=u8mzJ&~2tmu0v98WrKrkj_l3E&J$TX?5rTj;-L7jX+RUcxAM%ulo7IPY$q zoq4tIDndg0HA>6mKgZzB4UHAH_02$&-BBos^nuwAY?Vuz;S7}Ge98ZJO2Pb-Qs~(K zS4xrA@J4u-o$#r`Iwk^^MszT5-yXNCh#$pzT50N% zXJP@8nHzw;zz)Yca;2#%5gEbzP~5d5x?XThEBOgnx|hh16?ypq%e;m8dLF|-)fa^#x=U9ISgqP$VMgUkj#i)K1DcA3gnAo81Of=~y^YTaV5GIb2(kM_q zMVbSLmdO0UzHjzZHYFu?m7`7hB?k+sUo~32CXPrHpOE_j^s0Iqy0@tn=0RKdQKh0z z{L^1`jGknhyxP0;cfeD{LR7Ujo<0!^fuHAYZMu5AsGAes3#9VJ<#_vT3&X4}#67~c zb7#&MkkpDad5}Fo-Y)=UH`v`S$F)Iip6|N9OBWuCq{QZBK!~|*@wI1yb2txK&BY?) zXzsksZrsfefh-w`Jfb?~$}42=cpkqCAI0NopGG6>23J=I*v}JEwfa}TMrL}Dly+BP z+o+0RVP;pcvdmpk8PVXUXr|H|c&=UA;xwKPMi15x~V-eI8n9tD6<+~3+&d% z(sOw{RR#ZXK>lBu#iirU^k80S7Li84+@^^?p`l`(ocHP zMEQv9?q+ZPdG2upa5h9lUeLs`m|s*5Ji2s3? z{{o(WBn(*lN%{YlGX8a=|K9_Ty|s&(g{>3)zhsPDjsxA7gMTYy{Ckw!L;?U1`OhCF zWM^YzXDj4p;bbCcVQb*%A!qOOKjYq|nvL9nD8g5+9wU-svcE(7yM3i&$EhGgJlhb( zZA)0Nam}U6YEsjMR$W2!%J=r#qZATEFiwhRN+d|DnVFkuZiboZnR9=a0p<`*f&Wah zI4BWV*c4@(KmYIJU+1yseGJ^}03zrXf+)iw{74=@n26sFh5xRIhsJeE1=lk#=ZBR4g+iPh zC2f??M>m8|BN4vsmjMn5Z7?Y~&J5MY*4+|kjWHaq7>>8BMK@|M#as5w=FDuhHOZ>upFpCE=IvRG^1``C8w!uS zc_>e%_TSkm5t4P5K z7ieSp+|qaDEa!EYErTqqlD4(;+Ae!mCi2XjMnpJYlGcu#m( z6wc#8RWmL|0Sd15$C|^A239W?oGxT|>&|6C%rrZI%QyDi=~JFo?*$f>)tp{i0j3IR z_;}%3m#zidFUSd0RNqSh&4v5J#iI19)IgV_?>+~0qD2j(hIn)BF!zoOIUM9)w<&)6 zzP*BDR1Ri?1MUo4{hL12w2E7{f9FVwv?#RQXtun}K?Z#0X2wmWeco-<}kwsk2jo#6Cx^$9(SQeXu(In}&MADg{5$=-vk_X9)7G!0zy72p{Jvy3_=v z{a$6R$qJtb(qcFPgFcpxcQ8CGWS9BVXEKb(Ik-P^QNGuOe7%_wJ3ZZ#Ns4=6MVFkb z#x+l3*hb@-ysDLW_y9hAF@dBh&;wTPSHiJYY?c%;zw z!TlJg;}(s37Qr>Z=l?WLx;KDZ(2m<3E0)Q_2Ne^%86r~ti4svy_f3if*+Cr^fAj5h z`p*7fSl=dpYWGjz&@x9!;Q$2y_y@87J(fSB0ssjAKViAb{~F4t)c!vTTiqY;T+y@< zHb^%S>0+V!P+uan0ZUyAF4USL%%jC*++kt2>c^+(E0NtU%eh(qD1PVT=BiGCrH; zYfg1{aGN%j!LA${1%BwS2Ya8c^ti!p37ocKASbyoGK(H zBN#6*TaZMlhHr(|p`k#eWBKvSADE+&sxQt|Km#QL^zy!$WBm|6YcM*14{5!_{8*D~ee*safJW(Av1Ut($cJaN8gVfZGfeIYv1_50cjQtivT9(+GOs>G-lq z9!|yqpW@W`!L#uprI6y~f$DMlhaWFsQC+(K^&b)*Lo9eQ7Z#p0m9e&vqqb-%MwPvN ze{P>UrCfdj2|f~aqn z+;xjMwusE8p71&Y?9l_SmpjT{%-%e{UHkLS!ok^h7aJS*GjJL=#eOP!9=u1fsf&vD z%bOF+>zY?aG&X)wILe$Y$ev0Hm9{r^Z9Vxam;)!r_8HaN31O$u0sdZ=aSs}a3&dI; zldTU?YAQ{*Xsi`DTu`^SL@X~1^tdPIoQYD+;z9+_`mm0hlg;Voa;ddCS%YGOI?M{} zm5w9E!VJ&QZw8ieo%8!@UHQRA?r35Stc(B#=d%t{sjUSVXiZzcYPrM0vZ*_b~WjYkRzHbKxdog(7vV#r6(drZ~J^htWS zqfZP_zbNV;P)01e*NC+=b+kTGc|eg|B04Oh)8MjfI95I7DH^*x!<BM=jK;8&?Zsc;A}{KUHq_)RuP^GH z^RjV`_x0HUCxg+@7&$%Rsec5~m`gcV(OiI-EZ0ZsnD zT3MKJroEYQ;3##na|$fP_eqKof1@ObAS6;adPja>MxKCZ@McWmOc1h&+Q|ybBfPm9 z4*&gJ6g0ctG{|PlG&}?rq9Al0;WfuHaE?2e)zCf&fAB;z@oXo+kK#Ed^qz3?Lj-=QfFw*`i{LEowJ$+|wEG&lX0yw_F-=8Mc zYp|p-6A?M*aq?}%OmV+~!(a(`MakA-;Ep1QLDzfm9KDi0QVaN<9unV4zsr;E8OrzD zo?piMb-0m(C1~25EM$bkwsq(ltHT8uXEtvGN5OoG%W&%#5p6!CDOs4TpBgF*_iw`q zJzqRzPTI}cPR;IcTd*iD0f1n|VWn^_n?q!VZ)6N^H3YjXnn>UhFeG&(-kPNMN$r7L zKc#80{pt2&pS!cMCw308M)Fk067=Hm~BTz*B5 zRoG+tFzg3K;a2i|#;H5tKb9bynI>sq!NUXl6mF-l#2v>xy%TdM@Y|dPw<9JPU-=^o z+L)1*D3Ao(#==b#pJ33#Ze74C9Uad4MPVe(w#0D96zYr!wqjMx?0Iw5ax^H8S1$>MCjvO?~Q{oLmLfK;&lKR48 zw%`RFDbE7#*N15e)?~yUyyF32j%bZu+``257EVHrx|T6CNui9%u5kc*fbu4g?XPjp z(vuP-8ywi;r!P)lUwtV)FN({H7R>MGr*;!YB@bqI49|Hb5;8rnNu-aIj|Rpugvb1Y z_#|hPsshCN?J`Fpste@rO|)so?wYF&gsQ`>H>#Omkls&-0Dz`wpByFVPVa_5Q_?>b zLe3%?*bi@19|CSdV@`Q$r}R|LSvac47J?Pe3W!czMZOORtWn_ng$%^xDPb?}9!@6r zL7yJ;>F{|%qg0#PDXM3gjA78MXvp#=nF`Yc;$Xp_YltSE6zh=5#VfnI5HxR3O%Dh2VJ0-vWS_c&K{2}5tod$Z#$*ej;H*52*x<8Qq5#S6o za3mk78t72I#aA!Ch=(%N3;zI^Jci4%)q)KWnQ{bn*|VvxE8j@9uE|SXu5adjdRScS zS+tLp9L9m)D*?daH&Avax|d_t;Q|e4`3)-zhN`}8Q}RLxg;xN^FGODsH{yG?2@EzF zCUdzlbFmw-2m^9Ik1buTGHHXZ1_xBIM;XbauckkxI&{yA&_)weh+<~-m>W`0x2CnY zV-nl)wo>gG`B&D3j;mDPtw~~a%MeQk;}4osg6p9o&qV28=#THur1MyoCcH;-@;9tm zwKq)_DZi8KH`%0QD-RTXMVSgK9`+QRbEZGa0X6t|88yI-6Srelo7#IUNYtEHCHvF6 zO~W@{!}@5xUYCufX%tp)Oqo2HV06*5#p*}SkCv!ibXg#!QoU$pnGX|ubaiZOXpLC3 zCWiszxC9hK@O9SXJmROh*>XZV)MC-MBM@LB34#Ghct zvlC!vX{&Gm(%<_1#mKg?8B~M6!b>W1YR9ABgH9_O3QFzRi>=c}CH&2f!*n@eS`Fur zAaeecL3w6zEoZl&3|&pTq(Kys!>p~7sXN1%{`Bg^oCLs6VDG4e!y#e?v=Y+DTOXKD zMLd!RCLsK(LZ&y+!|X!@I@-#L();?X;>Il%MaAKLNbO0dg+PhnzYxhMcyJ`_TCRLN5XQFKAOJj z1P{JJE2@!~*C^8%RCWQSP~y7|Ys~wKYxIL2FUS8isxI(>2k{Pxz;=v~B%7#c zG_^LPg1;gUi-|N)7t^bq`k7UNQ;HjMsPW7zOB#>;x|D&e#2A z(8IaMV!>9F8XEhxL36B8vX^q(eAhaSH6ZOJqrUdnM#3$d(<)`=#Ax`O6R7Z%xOlk; z9E?iVM;C6_#hp--I%@DWT6Kuq`q1CkTt=;14bMg3IK76f_}|1AJUU!v$aCLDqYg_i zu!A1MPcnlZX57Th_sI{kJ*;=Dz4DDwQX0m@AYUh8Z@UTP^+PbQ14AEwC6n`7@6VIx z>i#C{nW}VQC3q3sh2zhbCj!~Uz%Vc%a_ru zd{M2r2>9(kJF$X-8v$Y3gM)cmVg3GYvif_Sdxd6);4(BN_A*T;U3dK{yK2m0vK!Bd zj@P%O`)KBCWDQ8I@W4WiOi4UFqqKtn8m~?_neDNqYjv=cAic4w$_n?xxgaxig~2|4cO;-&u2>8hv5OOn^_??^w3*d=d*6vdEh=yzLypy{ZQ;^(wFG4T z`3X^@--LpcoMF+UW}uWeta7fcgWw54f6fSgXNRmMMjdoRP{U@4Jh7fe2{B1+5+y`l zdQqjAnE~lWc*Y0aSNv%nyaV`aAOM}V2F12n(l%bGMCqXn&UW$FQB<^{VOipn{i+RW zT-*N0za=o$;qyV1s@Vb~wZrx_xwQ|YJ1&-qHjgeMX@x2uULCAA@dYD&5qIA}vTFY& z-_93LYHs{;GEJAUupDscq8UWL&6r645H`$(WuBs8sCH=V1A^N2pg{d~08m6@vN z56Ug86iaryVQXG}WudaPu#WKyW{)~PbscK00Mft#2U-jz8g$`sFitDP@h>}f#G$_= z*pYL46BMNrl4phtw(0!73ze>I(18wD8{r#>1}g)GtjB^KfGOy?dTNGoN`IlcW-fon zj%`LCugk?xxtOC{=Mk>zu7hhyO&x0f#G#T_`;UL|$HL~}!&*oHfPYxxzvqvHf&c(Q z|G7x<|MSQHy+*O6wPAbEisrMTR(~0lGdAVnya33AX=X{#0&n=74+_R$p3w^Nr#Lj( z(ZcKN(>k%yaJ^F=Y5@pWKYmD4lVnAAvv}x|KwJ;0k;uyVU6}MW#o(4nrj}AFLZ2NE z&LrH32F;xkox3CVtdBRhFrGQ1a7K7mtnn?}HuWx`I78n_|9vh+$=Z@*xD@zAQJ2;E zp^~TSgKVC28B^PChAPt>-j|ufjcNN4E>lo3EZEiV z4$6w-v;(;8Cc{fs{luxm;EkPe+U)@tpzS;zRKJWuP_;tY%SvM)AZNWGgQdnmrOw+M z?O-7r?KDfFkYAGt?KQ3Tb^ZBGbd9ANE~xoTS1bp*OSc=;tN^IsfhOv%XV{W-hD;T(`+(9ru;wxn|$j6gMm*+E{dQ^3$r>Jn>-6KofZcN=mcvIt465eZmV? zSW1JljC0^X9+bGIQqFp$!r;p@)=4hH2FyXFZ#~=|PgY zbc<9n4Jd?F6q+~#ZYk)_I;0}2Xd;1SKA%3oFtVuOn)6h_@4$sqIwJ!ppVSkD&KN(4 zr4vfsk<9b=IHJe^ zLtk#pBS%fGH2`%_A1Bfm_B`aUT)#y9qvc()NcqFBK;-UL1}$|K9S(F(4|L)V+J7e zOL(G}jxq{3D$@?Ua4Vc={4Zb`O~i?S9gCh|NH@0j2ezKLm+aE*-Fb&Qz}cM#Z0$FQ z%_D(bx+);ISGX>65_Y*Aj7FZ)%MJ+g~;}G*PQ| z2|?N;#6hbJ@Lzv+{(3%0Kpt>`*GFxG*R236l)M1WjwTmlr}nT0U?G7U0G^Ok|9(YS z=GBKlv8za+T`j28F%F4oI3M0HW+h>Lm9gvNDQ@d770@z9*W=dXW9 z4uAaOW0=R~7yx=@2n5GwN$02DGm3F)1jyesy}1Rs>TFg}wFSf#toKLjXT)7y%O}EI zJPd?`6KAAmCL$Xeb(4E&9{`v;1RW zdbkED(?=F<7iz#JoqU*jrA=}UcLnaR!)<>`mDu~D0e(JMyWwZOLGF+(b&FB#2woCP z?c_YJw@nTecsr5Y1_QjJ7(a0;cc~3>B&VmV^m@W*HSQ7_ii=}TUt!GVy_+%lO*v7J z*flBlLubg1Wpr#8qTO%mTFo--HBCr6HAE0H=Mt_YH)K4|4MBHSwo!7xpReh5V%wl; zft<|Flmhhj-0Da-QD?605q-dU7ITE^9ma=4kSv}@BZ?HoP+bJJr89KJ^!={kv`D~x zf;PNxVjiBTWE*16Edl$B))LF}-bz9bxH!68$ya+ID81;-gm}v9-Zsei05&Q4D6;E5 z0JKpfIMga*HeDr@^!HT~F=^7l3tSYGp-Wh|MJ$0Iid)F4RyC2as4HAhQ!n1-x@M_o zA4;zIZ1TZ-Tz+Yt*4)y0V&{|huxj*dcbLk0;-mC~dQ`_g@&dexlgw_hMS$$eMhNeD zlOpX>t#GbXPK|37Ygco=_?p>!v|@mr&VvXjpC(FE#Y?!?~8QT5Ra9ZpPWa zC0S6|ry_)>rqm%L)|aL6KzP(clcJ9*RAM33f>ZoWY1GDmJrv3449$pRi@u#_$wpSi zmIuXyl?(bS{2iKM_V9r|YSz`zW4ho^!JtLfMw0wc*_;sm_-q|-cu@N^z7}ZS*VNQ> znb(6=xd^@QV+wbT*8?D+Q6+D+fj6eSy*itdrbS^MbmEjTvHd3VM01O z70_1WUsHZ~GiZI$$9!^p^t)|mhhNXbTMq_|Zw-Wp|b zah`OuYipR9q$I`czC0Xb@XEWH7b`ydu-mpj)9rLv3VkS_BH0xEN^v_P%4zZNBj8F7 z`Z3w!Lq|yucFzX#T?WuEK1;;57o6(9)%^M#$3a@uH_^$;W0vi|JZs3dxMl=*5!0wdXb`;+hbYLie$kdk#9RoNG8b=m*EOM<(*KkhP%cqrQiHim z)5zj~qEwx^PCOgEg4ok~bEZQH@D?}DmjRcDr4U|IpOYpE&YKq&6 zqn&Jk9@@Ez?cQ_riargk->bKmxRv;Qkhb5{9upROXCYsY-*pP1ZCNDydI>#UEG!IR zOF}1Y->qK{`=4_lx(smPc?bZ2e~8q-r&!pD z002DyImHsRwllJlF>yAxGydP4!@C#f&Pn1wRmXCaDMun4+Q?-!9aFa+*c z4MN9v38Nq4aRD0>L~Yguib?wwj?M5D0c==JKrnbSKEqtU>az$+tpvrvv2h!#KV!tg z?=gIu?$_q=hF}&@1vMsH_ zpX@YX=J$&XKm~>7UMgYF!sl)Bg_~d|e>t(Yg-6teN8sWYg%Nr(b!|k1>9s@>oK6A-%Cy?D`ipP$3kJ7Hor&GFgmd6#nEA zhNwpYi4ck3-M5p-xd(XPfz!#6uwpdgBUL_5^C!-S))f?1F(8oG@et`ZOu4sMZ?Bt6ZW@X8cl%ASzN0i4F=EX*qKItK_v5 zGncPs(H)dm-$Wn{}OpJMish?nZBsc-1ZWPr%fDN?L*QlozVpgck;HG-O zY|XS0c2#22qS%`-2=!CQk4S1#!Lv!x@&?oq~S;jJqA#Lf9*@{H6!~^qk zG}gvQ%HWXZSPKev(&rfxmke=;b|X0yK|-=KcC^BE3W1^SfTN(o0J*X`0q73E4?gN5 zx!UC{<8fov!$_Z)WzYC6`(A#&BOLbIF~}-tXuNc2LJK;g?<{jM)Fwzn(SY=MR$zP* zg`!QlKkCIeUY0PVF-qvM+=vEkq2|L5i8ECn$u) z&EmSJ$~W?8#cLlX=Xx;LzIsMFNLolHLcz-}SxF1eEp~F+{ zL|I_xUSIkMQ4Z{r-=$8~ckMR!Zy6CVzGUe(hBIFmZz~$8mT+7X%a)=rBz(6HZ88=& z*$}0c*lUoT)kNgUbkN5MIhb7%%26ZBY?0b$-Op=6L(<;oEVKji-(o~TA8Q{mE5d8m zqZ@4HQAbzoXpC7DE~tYgDVvcVbA3nAYKuxdjtANE{U;G41QF__qAlG^$(7&Spw%U( zR-s~;tl3WQu+Q+BVwWK~V_XVNx?qKtL2w7B)O$tD`4iIM_DY0SFW?GfZV5+i+unhf z)`htM+vs&$mk>@-c`lKh-_i81zyhqUCjx=fT4lQEj_Z{!`6Z-3Q~hNT?68Q{EOr8* zix;dhP@GlFu^tvvt;r7yO;NXtf=rK_L7q+bEM z_dZdMF=U1vSr~=|a+PU@VX(9J=PyK3r%I$`MK>~WsYQ6M^x-5OA5LKWDBG5;=b~I2 z|M2*wMt;(7v(2$#@u#6XrVQk^WTGGOyLoC^ar>FyMM>c4Vn<}8j~%W`FFTKdekv0o9T zOX(^yI~w7+s;!8MnJK@HR;pG&=rS`U!+wPgOy!F^-Nm1ulC`Mw0Q;1bDj9(n2~73|n`Q@;CR|2d(2rqbaFxZU9~B%RiwX%jl9v{586-%Rq;mfXz$q_L#%hpH zHpmCGM)ITp(n*rM^yzj=zhKq&1qhc0W(l*exc)QJ7Vg~#*vJvO4qz%qSxDZVyx7Cz zy__M?=^MN3@lqM!Ol)S!cQIy&E=$`YOD9&0hN(TTs}L`lnlDCUX+oUF)3h0R?+8(< zIG=Pc#2TpGlMW=Vl-drQhU~AAGGozZqd55lpDLWA#=Yg~qb1l=GrQ1VQhiX`(Q*33 zN})WK-<59z%L@g?CK!`jI}eDzbJxunfBQlk6iJa(wr-OyVXQKoacC+kw&eyLR7ohS zVd(P50-+aL%^NUpdVoB`gXckF>>1Bjl5rNvj}!7ZH@;kRMK-@&)Mg2qDkeYKtK4=t z1fl5*vJ2s1>e;ADS14JCjd019Sc}TK)hD+&P9{d03fi60W1k8UIOPJgf;%w{<T_)Y$vC<6}#HFwTjDJXT95CFMRX;Zm~SMyj3TG zJT!P$ECvq0(HRz%lI2pl9(Zk*(TA%CP$O}7yyLjW6FaT~9NL|!dYLjvW41G?_P+*q zxX1?&X#@0TVRb*9Qrm@gs~WRO=Z-RVU7Dq5JpBt1%e83J2AN%`?5Kh-^==tnWfRpG z_&2q8*6$1ZJ#$BC3xBdoUqdZ)s4KRpYwYURbLaynlNWh^EpbU1N9CqZ3Ac9$*LX`J zryGMwDW!WSq;8PPUxLx*NgrwQj<;YJ^xCsLkYb zmrUv@r8yCakk7qX+2lc>j9$fGn4?(_t&IJ zg0|GVXEv}SDG3e#2tlFeL9HD}7{kcNF{vd+6+_n}L4qdwwbtx@YE&9f_d$h|UFCPL zWSW`baa8si+7pt(A-2SFU*}Sq(V_L3RlMH?9t9MB&77QZ_Er}E^0DQ98V_@ez{^+v zYwuRrL0JW~OWu4c-!T1_`E%TrQ%!yUC^0=44oM|#F8vYx7Ky4auzGE!FexP}j%W)_ zk6;wGy9E7@N~&an1Dr|iahhIddeO13Vmo;{b61a-n;S<)Pgl=RuTGXvNBXAD&SY(w znjU;n8WUbgfIL(HI%9(dZTSHC#zP%Q+|H^kIQNa!BvO-6>=bygqz2`W1S*wUj>={j7q^`Kw+2R?<7Ccd7$zhzIqDZp7 z?K(RwSS4)gUK3wK-H<{YKrdqFYO-e3a}?QW2lAxoo)m=Q$irx8ejka7ERIw^Rn~Al zrQ=ARtS{Lovdj1e`UiYU&h&lU!2tmOK+OLfe0u!Vwf_quM7f{Nju!6!CJ_1W6a39; zx^{nkpx!gJtD~UGoi9K_71Yw$mHCOPa#6vmRNQ$h(?loJn-U9wFV`1bu@;iT2LOh4 zcRrp@j>dKw%z;N$Oi8g=L96~IuoPi^W6FO#G;52~bAH0tuTFKGG>)bTdPA9KVQQGd zm8^Wy#@HIUM8hD^?;LzTcu$#Ix6TEf-CzFr^Xm#`xhRA<8VyOlvqtKS{oupSY`w`b$2@T7X?Qj>Qg9Rc0zo@ePb zJJ@F!qtgI$jcgL(W6=ZozESc)@tF4hDv5IH-xIb^2H&Iir{sh+h)XT z#>*<87PGa+cu13SjR|P&<6z=Hi8lW*8;;rcy$csHvEoepwR_^v>mRW`*pE7f;k!=k zWe|AJs4+iXW8smygSMU-}Bg8h=L7QtAifwaj)gMnqag4#JnVPhHwZsUGFy3c%XjhHmmr8f^ZZBW zYjcCDJC4!M)c3xHJ-KPOtOb^+nhXB$8&NDltv*&SrCEcBsmFe+O|{C+p}ky3UXfV1 zBwdtPxOB26xnwj&HK4U36LL|Abm${HuTYhz(~Z zl-RvvLis_6cyl`>oADXEywPf)feALmxOs!Bbgx_uPEv8B%vk6TY7}}7Prs3q8huP% zPuEI)b9H+9N#y$hUlt5zkIh1qE@4Q3ZKPvAGCV**k4iBuiB~K3I#t*ehC)utaRX5> zA2h=8e&jx$d4FE!AnCrVh=p%fPwMex{EJdVG_N0{LO822w%aZmn-O_3_-82fVhi}w zzRva?A>r~D^AoWAUbG51YY+~^HkSl^lY|CYBoaD#ni(S*b};L%lMU*#;h;AR(~)VQ zS%atgp4Nz91mFy7;8uo_5S)BO^ihjWR+mRP#wuJ>#Ez{@)i}{D+FybZ7aK9=5@w$X zSc!_35W@%(3Y-xHkLkBWw&kV~$wwH=Pe%ME+~GiM`jD1g2na^S$suXN1^{~$>H@ag z{e`D9GEI2$gAuK!2N>N(#p*qTRHf((BO&3ORtf7+@pFyuBd|Na%4SDp*G)qkx^7V?Zif_+Mhnj{HKL=9d2!zCCk%CYT zzoA&tky8-4xdPcaod+i2gvbkL9b6sg94zH1vgLoV+lLalBTk~Ey!82qD@V>JezR2_hmhpVtxD_1p5K5IUe zu{fvR9opx1XvW=!45KhSxRELny=Fp(Shz#xX7^vKhv4jRSuerwIL1PX+ghArH1@ki?d3h;a*#F8hw;)+JPB8kJC>r!GY| zrlDLY^KWjItxU=EtwzVwvwa^V;S!-5tS6kT=_ssQX*ruU1!7r_@vgXFZ3`Rdx^|P{ zTi6c08KDVj`Q~cQlmL3_UWxv3Yd^50wNz;Fpi!#yYo;4FJNAsr5(8WwhN@lN10Qs- z9g4-c!d<$^Ce3~^D}piu-kzL5w~Ci%jm$%n(H`!vOduPIo`dU)Ss_ew(jqC*NkXN*_O#*m% zo0@$%x8!g#cK=;X%Y8pUKMx83{4+}beaQZ2UO)Q(K2s^W-)PX;w~AqXOEpt^CQeB}z~)uB=_ZC#9&!i|3k9q1sAJNSKjMC)!)V@32S z#_W_Kx6P9EmYvv%zjhAid1wsZQ7_b!eYnrp-pY9!l+GDFij+mhF)7lfAGeSl?Sa7A<`mTw5 zqnT6Ph#_b-Qge4AS93@(^H&V*D&8csOo%e4Dgh%+y|_xM6@>UEjiY^B%^|J`TVL zSCfC#X1ei{s5!8Uw9tB0Mq1*9GWW{UZ~)c`>zxBH)CQz$){1Bi9HU77uY5Rqc zA@-5je1mML6n-9bt^^hXBZDw5ua)h+2dX>Vdo?#r?`^prtvFh)&{<$M?+eD<> z(w3h=+uc+g?nG+x!G*xQ2c&ln7wNnfpM~1Yx&n~o)GT{wwNygN{Hefl3H@ zoo&h5=HMpimt95atlui6V^X}w#^h^sw=|FIrJH7=D~l!Zi4!XD&wnoi_F?--^0szK z9e1~xLf8-WdMJ4FQzdMp=R?1B7Sx!J=#S8lO)SCwhUpgT6m~#($dK6gOb49if(6L% zp0lKUpt?iPH08x?pT(namaCIa;-~&5o}z`0YYsVN ztKg9}_2)E}?8qESi`c4(g_8IcL7#T6FrxX+7z%>`wHVLC3@}o2|4*7}D_9g!#J&uX zd%*-1x7+|XyJm8F9|8w|@FW{JpNh{b6>?QYEWinF6&$5fK;$u=L3WLdzn(5>4$$QJclvdg{(0BdP5@f&g2i>Lm^izDLq2*lrCB~4;-z6)!mwJb~-J;2_c!S|{axN&CjoW{g7`_=ux71Appm8=NycluYKQ zJD`0qM&`VCwNb}I{R8sCXQhn?z;OLVF<0GS9AMW>V9cL;@V)Z*;zvvr==BO~9hC?= z-I1Ul`~iOcaz=&~zu<@xDLiQF*C!mc$W;va%Y3jQHLs1nO^wh&^>-BBtod)@se%a* zT*;E$?Vr!IKN)Kj@s+Foz*KH@w<>4PI(lu`uvuhPw`OA3*s*C|$$D$2CfHLepcWRJ z`%Zq4O1i^=!Td4$L&=Qjh9nxl=M}ieE7?cDoQDf+PXhlrvTeW!0Q8vX7`YQk|5$_H z8;IJ^CQz9vs-v*h)J!;T3lGGCBu9Jyy4k-u)j!-3dcbmUi>1c@;yjJl_eNyir$sjz zqoECSl&5mmaf#!1g$TMr5cmQ(DrR}IU?aJU&v{l0l)lX)Cw!C7+}uSAc7Vm8i;D;t zL%&{#{RUX$hBj(l`HGOb4a5OAeOEGhSxoc!!}`G)45kyP%r9Ll^BRA!fR z!EEq<*wDL-)wytGBpY(@k<)ps&u$V3V*Uu0MHFEJuMXnnj3z9P$QMKB73MP@zOo-& z3{oa+zA%bTF4@FBDfCdG#f5Jkei1r^`^nZEZl_65GKC3`KtA!4t7B@lD4HnPd5@8X z=q%~l!dh$=)6q%ixK0#)!UZ>#4PGYq=yyqg6#9G`$cpanEW-1h)K9h_6YRk^F9=w! zN#2#xrSl3S9$~B~c2O_r=&K`+vL^GB=0yHPYnUJEXq_L1!|aak35G!UHWj+*m_Oc* z-cZ{_A;Y*B+7EpLKq~I-HB?+nEhgzxKZ}*-x_((?@UnWcqkbqnSZX1ed$m4AKSMu1 zK3seB{*Y>+(IaQo-|wOBIs}~{4{-Ll<8>|y8`PshGH!3^Oy`%Gb?ETrT;6cJ&i4wH zX0Lkf{KWQUd9bwygU(97+kX^vVS1ge^{|q=s_Xp#Zcm#TrvtS{+@uFRVe3x|*`*$S zVgJ^$Nq;7V(OcRY(TQ4y97^T@I_%hy4(#!r$hJ{rOl&i)*&!nkz8EWyY`7&(3eS@L zl*Vw3*`Q6>S3OjkrCXp>GN}t1`*}A4F;XK63Ws2kfN4YBA}pTFzB3fK#kl2%c3G-? zt{z$Hhlc$k7iDiUK~a4KvJFV_t}_srO6D>7LJgH2_G!OG?=?ZBYTJjSdZCUkrI|$g zt(&K+uBTP~;_9=H=csMGJY!%mCDsETK-q@j3eUpBAeLCE?81ra*#zNdgk((t2~EqC zGr()dZODDQHQZ7{(f^ly;xFhOD)eslu&5Ce@Af79NU_`#wp8pSp%12t08COd{HZZf^N&r?dkZ|_%TTg3jvL6X@*~HMU(s91=BUH6t9bnwUss;XG_Afw%RST(_TTF);SMFb%S%2I zQHkDnKTz!Cbry4_aQxJi$!snzNw)a7wD}?isRFbX&1mEmfl|?8C-`cE=_0GvJtKVS z{8D68fDeb6_>wi!fhYy+n_#O$dj+;*Gq~Fl&gX;|C$p!NR_j96W+1(%m}?`YnxQRb z<`1u!*z6YzPG8VVr*4FB_c8PUeY7k|FvkZiTFa25+^Hod<=`1&4lpN;BklyV?XHpb ze(Nd!35KOfYy9l#0-6+dpcw%8WB?4)k2Z&cE&CNHQi z)=KzXfHT`xV=72TW(IwSDZcZ!`Auh_#D*%p&#+H7olB%EZo0?aw(1;qq#c^M*K*KU zcmM*A(>zoYy;8Ib1JiIG%q)@p?C@8IU7UB7vyqJ&JNa7r9W~b#Kfb1_#yT=p$Ef%g zo?-_Tdt~piOV?~I@$5|2g#i}p+<9iQvdkM~Ga4Slp)p2oI3~;e2}ubqFJq(dIHNUL z!ono4$U0<4XsowbYFKbMTnXyJtQ7Q7N+&G87%L-)`t?KvK~6cMJ$~oaVQ2HiUXz2( zw>)5jNvd^X--<&hYw+nxB(2Gry;+exv$Mz?#RF~5DT{ztZuJ0*n`KBha8)xO!&?b5{Wd{v zwnE&DA6HgxPBso|@Au$$LF#q+oFvVwTBpF-Rw;jNC8WT)^i3f)f(fo(QdV)Xx3_b2{uil?7+L^8 z>c3BA{O<)-Tr8YTRQ~2dJDL2yfAQa7H?*vra9Ytmr}YE4S^g*&N@`1)DJvURNk&#< zO(ars%i)ya#)DQgKMOIqlFi{iw?6CeqOTrBy3Vs#P$0F#?C$ULPy6_HTDlB2Yxjqb@Qc0xuf0c7#L*UT5tV%TqT~mNr%j3!lwh< zcDv0Km!DtaRlF1qyyN~*jQ{yqs(^vMPLjQXb@!?L#9g7q566u#@Zi*|MG zfEY7|;>_!Pqk2--%E>`vR@K4W)Y{|e@#E6ckvXr&+#57Ye#~W(7F1k_j>DM9S*DLQ zQ|R|EUxfQd=~-OYeuu~~Cj2mKbO$IdJ>59)sU!IWH1kC8zge0KcD z*(rSLz)V_|t^{h1v8Q+W{Yjo`t!IlH0{bPx!JX`GI_XU1Nf13jva}2FmTQ3SCF~Wbj6-PjWnA|PwO4rXD5@X1(nfR zfJObcZ?DjJ3|BfyT>WSSYxJe}e%k}Z$3$`#+>eUYn7gc5RcuetJTsf4l*s^H-P=kX ztt$r{+b)<$UscC`0BqGb=?xK}lo~LovgJ8!) zOW8`#eERZ29eDr?gk1X~I%Vc(R9?+Gr}}=Ij*R0!jPAmqM+1;d6W+CSHCh3#Ale5q z1vaL$_O?Y7a=(I-X*vk$T&Zco^lX*L9Q)P7a@BDx%dG4PrV*hp(x{t>?w2_WiK+IP zb^K90vhx5?3BfTUkO$?YW~DkeVRVf;FE=j2ze75)pncF4=3y~`bHJ%{bz|jc#7}B- z7361n1bjaoH$!t2+)+!OlXznua9LQf^m|kXF%kWtMN4*nAjQc!t0Ln)y&IAZh65C) zz$|kj!62;TkdR4rfO-8(W|v{?w+f4nkAFxa6Yt z740VEPF-NyEe(BN!@q->4O2QtP4Y5QtReRIHi^@qq8&uZ0%jm^vIvjhk8FZOujlQr z7<_`Iu(QnxNr)M^e~sK2v6vOj$mXbw7n;X24sn>B<*h19}y-N#%_1%Zr z?nGz5igbKKWQAhv>tH{PG-KTA!qtKhSBUfnV4TTIh6KbLH_@{r*;mNp;&NMWLmzew z4S`D-%MTLdy~ijG)NW%7lwo(q7RGQ@mY3U+7EEE|(h>gt`R17S{?r=sWS8neICODp z-phXCiFbJelg5IWh`N4M>G^il_P*lSl01qFU*inl=%7<^lVAdcF9ee^Z4|{Y1hp)Q zX(}CW=_lGpJCyjeE!QMM5t>)CJr*bL)nf4+QKdhiSTk1^=Zi~+OT~{3mx^+BhgwlN z6Bp)75M~319DGFqor*KmzaI;eFRcL)#4j)oF1>v>;eq_Lp@9B7@k)+KhaeRc)Jze+ zlWGY#@XwyF^*MjeFeS4;uA`Q8Rdz$E{yqnp80mO;^#p^`dZb)6s_cnxY1OEJjFF3_ z&QCGY}jS%4Y@w81u{`pHXu6uM46hH#CbWw{j||lVDG8 zH&0x$@{n+=c6d^ukJU7a8mBJ+sk>WwiC;kq00a>9YZdPi>SeLi>iBOe-W|XgzVzY>(tEE(mZGFCRrF$vPl&cnOZ!6MN%x`DK`Vzgjk zaYM!3Rp$-lNeN1)3u!>tN&BlIgW*`>R5+K6eG@e-QYC9ms}U@)&Mas^O;OwC8DG&+ zo1vIobWoM(D%7*Z*nu5jXLiroH+IMMi|e}9a4UAL6PEjD#xbz}Tx5Up0*1Ov7f=P3 z?L>xDz*fdn=thICh7AZ?cI_b1r@|xq z?NX&dwqqY^tGK2S;B<&h5b(Q1C)s8N8J=O%>O_%CPYlgOk>bQYm1-NrPZG7}wu~_Y znOPwYwJnlzouUIxfVn_uI7t71t5=6LnZxzRBSsvf8jD6&9A}VmhC_Bgj2=1UFyfR_`F-4o9yK`eNRv~ zDF;4X^@KaQ@K(5|7EqTl6x;`jnumPv?zZ{}%0Zbqq|;erf^&|s!V5q zCu8W^c97F*J?bTI5gE-#BueC8Kv6@FJ{T_(O-1^cWn)CT8ZK$Z%&&WXu!pW75Y5N& z+^Uw#QT4iYzS7$aD^)%GfK+Q5ozAzu6YQp7$xGzgwF^nktCwXDU+u~XKdpKNM@|9f zb?2g~c-eDgk@h{7WB?Bi6+K?=gk&k1Rs&bH$~Ok)G7Uizt;dMbuG%iv5;zuX-|P*^ zDlx2wG$Z=tEfyBGtJWs6J%~wPYpV|6jxpAFYehz>2v$#118$@8akK0@0b1A-+3K)i zCF)+aq<)ux{v-ctGlnjxSU3B@6QV%r=DW7#SrvhJp7nlny)1B3ju@xg?!|Ex?5ORF zT<37sWK(0u^#xLW{wV(#r|yiEX8yD=sb_3zNW@$)$a1iT><%C;(3MnAaY`?@;@A%G z>z?5z&&(*gtV~fz>YM6ZHh7TEYSY%C~U)(&`eDvVLeLt@!4xc{cd*Bm5_2Ur2Xc z%8(GxttWF90`~Sb|17|%uJ&M1Ne*1g?SR0+`}0wv(UgQQqoP?$cu7^vP9fUbRbOUr z7c>cLG_SoSpdr?0_MDn;Y254WN67gv>TMoZuO$qZogWH|e3_h$p>>=oN_ z*hJ6osygadcw4h0DTndC5slEy1CqyUxB_q=fEdVi%-`{!S^XNkS4 zafenp`a!pF%N5C&r-Bc7mmpa1;qfVz(K;3ON&HH10t}HyA_Nl+SSIB zrd?)gX7)aZJD+dP-dmH;uXlExLg$Mw!gkgYhZ$iL##Yl}|J2ewO3<^JeM-hbdwKjq zNjU?IyN2H+&DY29OqIgG!eWA%#-f(Qs$_-nZC21>1ZsZ1TT{COjPUbik<@(LcY03; zZA3G`QP1U%d||Cp169F=bFrt&GWusTHJn%|GJqTLKPs3Z(?QwTq8H*s4Zx2_NYjFZ zE_9w#a^c2~{k!1awxQyT!;xgK1bAg_NAy3m_g{P6DMU#z5l(ZBnM$FGitju6cF>^H zlK+|m!vWj7Q#dbC6B%lnz$lfbk;W(TAsK@EC@hGya&Eu0D^2CU#~=|#8;@jRdXC__ zbmzj3sf5mP$bnE~pA8fkr5mxfl})n}R`!QS(hgtr=TQzb(L;E|Z)`(D`V|z6V<5WS ziUx-5RMkpqwSG|3S4DCa%m!h+Q2W)Uv>Cya$gIeBoN;5Rwez)|0)0qt6;L?CJ8%Xj zq!2q$+$xnDXmZR8&V_h-y!y*>LSGQzVDTETUWi(Qwl~`DR<7giqOn(EF3T$Ne9|r^ zLwPa|MrzciPC-5?$Drz{FD6kITraJcm#>gep|e{fSeT4~{f$A(FX7UKRI@oWc69R3 z3Ld|)p5Y5Y1Lqs%0}F68Jsw6nd=O7>;-y1E5twURmztn`atfkSXXfjz&YC<0joLuRqryE9ky0oJanOowsLC%q~Zi~y%BZf0l zZ&VG+7@-a}8;F>vh5FNI(^z)iI4rRwHlY4Hny31j12^NqIyEY*eZ+ZtjIv;2a|Mog zrs92s%%yrchp0JvtjKh;xJbH4(Z+iqmb@msqa)g&-aKvs%lsn+Bys;&MT$aGK1M2d zkSH7ZGey(MR~ zLjPfJGuWQJd8~+zU60G>>022$8bR!%bcCPPbx$Sb6jbZ38(@b!+9tmjau>J(Wb@*% z2fJRh~3zA35E6OLLUEl|63CdJ2Lb)|V=-70b!nH|RG<_~a7F`bGsxjo_cPFf56 zq>yeWwcAahTazb*M-MC@{LU68w^Qz-EXgi8PpOU}@{4WQU(brf8F&`0G7DdO{7R-` zN##ddmnpo8CDYAy$FCx}yBm-cDU#M|J0@08N1ht|9$pafAr4JuTWp>{(X{3_yv|-j zn!K=KJ{${qJ8?n%MJ%7{>(+p4+i;p|nze@>U>|es_Q4sQQ7dmmuWcx)`>}V3e`Ytq z(@Mm^UmeyzGxI+eyY?di07C!5?Ea5ws&DV;VrwG%e|~Z2rBwLr~`28st<5-gJvnw-|YdW9fsc zLs<|Rblfwd#Ir-?YS;B`8@-m@!S@9O`^OUk@l%0s|MTpL$+{;zFJmg5A>47^I$Ew@fg*dPj(V zmqDa51?VS&Oc-RCR5i*|xKxUiVBjUM3EAY-&7F1yfq!{HtZ=k`Hd=y9`cxV+Vep2s zt%y@fnSPoEa)t+%G0^15@WYb$i42hHJMd+DCS1A-%~H=W(#>v02|dyo6Sh>Kp7Qjd~7Y1#Z7LI&#wHR3)7Z^WV7Lv9>&5kyXp{yD~;DI+`bMXl2a z%T^B>XZkl>qS}M|09*bWsqYLy-~%N>ltGBZa<2cGal>OcO}aL@B~e%q2DvU9oOQim zg%`d%eq$yG>SMF>G7h4fX!qXS`+j1#(hsZ~st4SjqwN#6TOlcH@1aGYYt(;G*N*o} zcV~Oy^Q*SV!H-$!D~k!1Q6%UK&7!L(?5tP;*sImvkL9m(af>Y)A}Q}FQzD%4r?o1R zg-i{XR_`qAAPNe!Q!qwq2v~~PgftDWyiGl0I|)`5?iOn}5wCVsI=$iD8Z3$Um`FUf zL1xhkC>^i332ab+Fc`nqTJ$h%F1kp$;N!1+&*+VJg8g%Y`LLsnz=@|p4 zaYWe2=X61`$jIvl5UHdJ965?~jAHT`>ql%0m%w`lB|g4ln=Zb;V{1Hi@(y|(#`h69^G>vun#fTfbz}ofIijGkX%9ed( z@T3+!)Ho5fPOqvfP0e%E_jHN4UpeJiEpkghFQpD z7h%B`_qsQaFb!{nglVd?WJm=*w#qtMCyI69{#Wa9Dl)lLqDGa=%nBgkOF|+>ZVZ8@0>J5#iwtDdj5sD7 zOd<=L9Wr<;Zv+E)5RIxH$RY!c1Bi}_V_@ZwJP%Q`vedYl*6TVIoAQTVbk4ZR$`5|+{iO*Icd^hAq0rMM*{4M$dX_-E1#9K z!?p0Pr<~>b&A|2)!=M6Cr_$TBhNQ@IIkQuXl)`I=Yus09EsAWl++SFGa``!Uq%}#e zJU7Y@!#LM3r2{$N&g{Ku<;PNozs~oAdAYc1WxUXMF>%k=qA8k~+q(0mTsjVXdG;J8 z=-iAgKO3~yH@jI{f3$;k=f61cfbudVIq)J(ndckW5F(jAaUz#_HoWoYl4Ztu^^t87jnGnt-e2-rIBkrj?7Y%&Pp3j8 z3n}Mrt*;}KnN$qon^YK)ITVh&r-CKQK@&qV0?G$froYFp#|Spu9-smnc#|?ne#JZL5lfpQ=eF)K^>9t5DsVl*!DsECU$*K;74?3Vgx~jmiDg$C zYoRNhBh2w?g>OX!k2d7oE$o5te_nG=9hCD;J)Z|O@AiHpUXx^mKhH9x6q&Ojb+Wk6 z=4L?Pqk@Xk^!!$P)c~H2K)r784ya;KE8^jz7t4saQyb8_7YkVJV<=l2<&+}6@TToAh}AzIF|t1@J~->#>a8VhO&D5+B>Q}e-4iyz&o@KC z9JheQkKwg{)3w9HH;-WDb$y|eqKQ9s2qpXIpnnnNfQ;tvyW1rE1hLgIr%-gHEZ-IZ z*31A1p&^XBny7tCYtT8OYFPzDYyC(aP=J`}!)vq0$*HEh1wzj-t17YJWpz`eAVkTA850gVeZnG434-fTO@On4c9bqdT(bPM z_$$g(1;R&S`LwFU`rFmzu@pwy@<8qQl?2fCu~d_;aDm@YmO&=DTcbBm`8%DKpFCY4 z-o&0TOqxXJILKqm%+f-5)u|}E1HwXKE^+?g3z(4XKy(}x79b!@VN!rnH_7kkc@lxGR16eEwV#CAv~#@M3g6kbENW zEKGUVjDc>GI56x$fO(8T4_UcD4A`)Y=ZGYsqP7PP8wD$!^v_a0a4Hf-e@mrJ(<+3*;$#<4jN>d36{l88BqyDreveUz$-Tv3aiu?`kH&??+|S5LyN# z?LJw;Rn{}ADm60N$^DFZW#IKqQxrpScQ9hXDhO{wkmfGqX23dg7)k56*X{zE!DR&Y z;hM0QMfp)(kE?lO|Eo z`v)L1rEJ7%1EgPJXr?vAsQVzR2ko<&ugPzy(zaR}=}4xBXHCVjw}SM7>=zx)cRzArU-SknrfQ4bp3*`4hU)M>qgh zvLlJ{JKq5C(IBW-avV8u*p8+km<;yp4!TjZJ6CH^{FBHJGw?Pkj8Xv!VyvXb6l{{} zmS7KNmWn{U7|KyIf0jt=3<_G?Dqu*cM!U|1JFMae!69HB{{=$T3u#BjwH7~~o+P;| z!Ww4CuskD!QfBuT6fZj!xCQb|2{4uy`z)pbF~DLu zo0MrPyww4-E}MyKJkm3_o2VO0PB4!!=nt2_4ZNlc5~2O^I#)rIW@B`bpXFJ2Y&BnNO; zJ56pGI{z&v`}Z1k$yCa{GiF!#oaNG=-8CcZIeDk~*Bstysu$s867*Nb@cuNeF;~w0 zZ+)QV@=JX3n)g9=wQo6nAMEYl(m=h0oaP^p6JY8vxJtV1^yFds{Az`+7@Bq>&GN&Q}+NBMXX|*qDe2obvD-n(_lC#HqJMjyywuMkA=c z^wn4fyz0j08vMBB^zN)h9O)7B!GP%4NWfow?5rEn3z+Q=e%)1AJFAz!gqv6GbvHHr z!_be1C@?P(a3wcKgRnN!6N`bF)5)sqMNk=AHg|CHw#-(rofl2m=2)bT#40o(2$VAF zk$co%r9NfPgo|2-i)9^lOu$cZvmTYlL$Mk>A)~w;Ix;CSF$2cNy*%eg<== z+6M-^_|P$3dD<(W9qk3^_wr5?Vf6P+(EJMKQl(|t?-W)oP@+BNDK=!O>1c_&<<(#A z5|o2hi9|kc@GT|yn+~?Fe7h0~2 zNn2|A1#oKEwvF$~59>V_5LoMrk!xp;$#fxtaP@Fu#FxY!OOgDBNXrMWW=fCM=qQ>` zUQ83sz$tG~wP3`9w6fvMVnyV*GM(}^U=ctV$D-_8fzrfjVbN@mA}V{cvO8>2$?R{^ zknGjXQjeU1WFB}Bu`}zCrwkn!5G9GBk4va!=0BAYk3r-T#uR5_$T222#bY`VQ@F01 z>9ku*q0T$NW*wgCKTv&v(hZm{P%3%R9u2b*26_?XAp|hWg0PK)kEUL@aLxfx1? zFZx-6iXxL9Gg-4&JXrKFM6$0LYZx1pGF44Ai`o4em^-JE_L z^SC$EgpK_KbRc!1U)0`1gUyn= z!dIYGN&j7|4vDkVjSdm%)e*C^|MVNxC*|bEI$`QvFAX_K49r$lu?9@_$tRl1R}ZS_ zB*2=cPC-dlU25t#+a7=PFj^}LV~Qstpg$A&9)xek`Rk#WQVki1Fk`u8(vj@|(g~?= zGD^`q*~4@Vzl0DxdDm3pQjmg*^Y->II6JFtdm*A-jxNC{e+GDH`Qv4XziEPBstn6N z)3jNbo=JcsI#T%9L{Z8ue5H1{iX^VgXuC4jrs#>r2qtErZ|)Com5bpcv}W|Z zdoh^E$vdgI+Sh!fV?$$+XU6V1>KNSd9}hlLE$!+$CB|&)MI=b72`H{q`P4E!!lCn^ zSs(Gw;q$CL$etxRM4T>k4xmB95*Re8a;heghOcDArmJ%JMD>yx0y!{3iZK-gLAv- zxX_!kk6+(gH(ReqH#fLl@r`>H*UvXcO>RCOj_%$jBdtH-Hi+Qo+T20h{E6PO;(>;P z1*nFiywCfdh^a&eLd%(90{$0i@7N=1xHJootu?l7+qP}nwr#AjZQJ%5+qUhQGdt(& z^X5Enc5?rLE4kCvU0q$}l@0F!lP^RmDrX9hSV<9$tJZC|u8&C%!zphd?VbmeR3e!* z3vtL_W4ddEI38-GpPNq*+m<|@_$-01IU0$85Ef1ibk!OdmdtHo>q^}d3#G3D7$)Ub z*K|euxsC!(%Io=XTw{UY8x$ARNy@D4rruJv^8Tru%i`QS=~%~)L~RVXq150*6xLq5 zUbnY~AhU@cZrjKL{&tMP8CP(($ySR>wqJ^GGL>!-bo^Jp2ZD#~DNSB8|DRezXUbmL zk_!8gxo}cSpdvjdw*cH2n*P{A17dw&YuJXnw^g1^`v%RA*I6gbj5~A!Tlo5Oe)fj~ z_aF{rbAVoaUt2Q)365OM47j=sw^X-SGJcfP zib8R2srH%_Q6b>f_cP{Fy>*C0GcuH-zNaEJ=O=oRhNUm1%37+sgf)&G(zfWe}ms;T=XsR zlAzTWuj}aQ?lC;bR6i!pHZsJef`13@q$;@hFG{uCkv*BHAA70yhqXYvrM$S1VwsqT7q_(K^o*q_t^DR^j& zX|W_e3r<(6XUymJgbDt3P>o~3^-h)?%&H|q5F*Ir2GE$m|l)Kqbp5!T-u$-;>S*z}v zHbLY`oJL7zi#kns1<>>T(zB`!fEOFjGEm(CjCkAfWUCT0;qYJ412$^QuTFW7ePx|6 zI;3ybj?PNhsn8H&OA>3Z#q@aGo=8 z*f5Pb6%!N#hC}66In+HMaHP zS))W-wnAb~QVRWK9~qa|OzlLm^~V^I?r|BY$BFeV257gT`9*>?GVxnq9Vknqfl<2o zPOLG30&9o~K-3+X&b{+WXDcKm0y)76mmdx9l#z_eHKP&3U#YI86 zx0%Hx0mi8KY}9wG7hFg6ox=2!K?439<008IF7KAp@(8)Z6&;YBbsihvseNF4m-^wA zm$FzvRm?$Pp-9p!GOW%U8+G(PKcb*v;r+u(V4~$NB9w1Li22)r`1Ow2fRZHVLw;Nt z!RD`ZeHUm+exq!RrO%Xmb}L|KohT>C;L%ZDuBO8}y-HmHiDw$+k+oIv#d?Xjlsk_V zn4XcB%ls%gQl%tyRuoLJR_>KL@Sk#X4<8>eNgF_0o3Cm;U#ZZM#qtiEE?0!X_hH^< z79p8m1i+8e&c(}ycJVbyM-h=0a}C#W3EtBxpFA3`=B)T$*%%}ELk+yMlHY7Vr~)Xyk2 z#*w1n^n4Og4H#8&rbIW)Y=O)$XIZ^n`A-8;-y;jKwny$J>1GdY#Iw=+$EC zyot#o#|EFmxBUjd?+)D=<#XntuQ&YU13K`-$YZnf1Mty-$I0H5vpPT2*r4As#?n5C z43xO-i$$7OU6ul@J9MRBDeA79J=33Hz@mh3nLwMPgJMw|s4cD+OtVzUIAuc-t0*Vm zmqp+TB^)`lU9ksWXI{<^G*!8)yG>y5%25ZmEjC@Ki43hjDuxY1qAQ*lR*+(5bfu|b z3#Qzm0zQ)18+uB)9H@H(BP|wh8qWs8215ruir}qi-!H70U*Rt13Bi@~xBrS#Q5+!` z>#mMsc;|#lw>isxQO*M7CFCv?Cdx$YlpU5rT~Ud{%|uKEhwi?QkrKXJ2xtA`UYn(g z&5Z4=K?CdJ8wkX`55Qxz`@x8Nb-#|So{v7`Y40FC=Q%v_qsMF?&1@e6E}8--<1g* zQ;uGF?HH7_Nj9j zk3|P@2zT^nsri$QD#jKl2lUYhYRpbg&p$YL;T_l`>=l6x1Cj z!`oBp^dt^j;aeb-y5=5za#HG^xWU0a6(&K17s)9f>B8%$$>7yeX|>%d)k0PxCP$KX zO)k;EkeyJH7!{&zj4)eXiaGgihB*v*&oV_fYC?xpcMHX?GnFv=yqaU)4eRlY3y^qS z5RJxc*fge^#d4U*n8r}a@0Y#03tCD<&bUj%U9TKAdAk5@g<) zvDUq2xttzR#r(W0prWN8Io~rc8m6C5j1C1w9qJM-qSyCIJmW;@Y{Bl@g1J!V zvxBu*_tk_&zbwK~hTu=O6&W)%3uap<+CpA&o#rfRp)*x|9A~~Nntiw)%f7tp0dxUa zvZj3;pzWKjhMER^euUmrX7@4}feKnu|1NIiNv!9eV0g>$)nO`>P1YSR7;xR9Mz&7V z0IJLKe-0)H_FOSsN-j~=y;?fPpy5^oY@A0+>7PvRN2J~r2f-1-LXThY7cjzNN#?+? zM}Ug9OOIbxbW=aQQ9);SPD;5}-l`#V$%_Fw1+!Jg~mZG}0RpTCM3f$CxG zjF%c%r3%}6PGytrB9*YUo`5phUa55b?GKU1vDSZ=OIOPNj^~ukrPAaoq4xbCGzpL4 zQ)%Qg{CW&Vp>wEC8?jYg=q|pRwDLD#QS$z#0TN-GBvos55LTv`j-nYXWao&%*A!xn zg#bo9m|0J7?|rx@1uHkXc+WL)!+6tlKPQKm-RwNPJiVXSLhl4VB+lk_J*{nIr{<(= z@?6r)EiqJgtAmyn@M4a|ZWLy_>E^_u9=JRxOY9BtjoP&1A185Ff+^x0VfLH_MAtHqrblXq_Ul@?k_vpIs(FmAe>>=B4VNBmi+b2gCh4^@NmiX$FZh(ID9; z6&bpjjSpU)WO&;mBQ#8qj}tS(I1K>&sZrPDH8^a9UG8f2h+vypRbs(d!6;rF{DE5>MvguP-!RwDM`m*peZ2q~#?Lv)s=fJg3 zUMGF~ppiK@m7q_8!D)Z2qT-wSJ7)2fDOfjUqzjFN)Dewa#}n+D z94wmLgw_RbA!uoNuYgD9AQTWKKLCT({P}iU1zOB%*SUNlY2&)hHgc~6$+YpWk6aYn z3x|7uXufhwh^6M^i(HPBG*hVgFzJW3z6DAe>0q*~RKlQk_W(Z2&{)Z}h>NDdJ$jNw z0O|NJcq|H3(!UzY-uQGj;|FxkWp-sanX+iNGH>8Ym$fL!3Wi}rL7uM`PA;4Yv}N`4kqa??O+P&asCLT{a4`r7C0O;K>Dcp9?2C>Fvt!%UR&+Pc0W^^FCp6 z#{rW}=%8uuwK3i4oP!>D<3n4IP~G-HCxsdx*EKm&D?GGAag#F-luj@wdSmkwLX7r3Ja%4vT`~ z_4-vZRb>QO7uYwAO@MoU7vG#W#O*}6ofnYh8#>MB!cHjUFageR5l&j$oR}7!%Ex$l z>p+&zZ%PyIK$W@KdHCK{#?8w;%B&c{XbvcMHE6i8TbHUv&+aYMO@%B2#Z4H>B|{-D zg8$)vrVgA8yA57E>;WKrxCxSPLCBU4vItsnBw3EX15y=Aj%#-NMpi}?%C~2OrSk!% zuIyk#a|U@4$<_=lJss`ddfKmDy!0Zek(u3qe{C0=w{Gmmji#PNYKh#ei%@eYVx&3_ z{4i>gV`ryfDnzkS;%#jeuX&WUCV4iVG})lBu6L5;CZ%Ovb}gefUYwg;Dc>&xw#>Zz@1t(Gw`Swd2# z((kpMak{L#p#XEFOptUyU@>QpcaW$?^>MaRcK*DHpV!~w;@=~|g0pG7^JK~v6l7J> zI(zCZOba$6jaJ*E5W%wV^hsd1dYrNor_ zu^VECUF3;23fYexqNUhx<>WQbByxI8dVanX8!$`d_-6Z6I2qRMlnhKK@M--pn_wZ+YqQ^6umpE^x`tHD?j3HGD@c!o+z<)!mTAT5WYr zpo3TA`C?Ic%sSePk+ya3;@)Q0bIEoVDE5gwtM)HAUh%eO^ue}G>$yAgt_%9E0(PtO zcDcU74rebaVY3tE{2I0X#PF(y0Y<@z3^?}ra-f_nzC%mSN^qaakD@T=HmDbJZ)%n0 zahp9y4SBA05jNz*P+u1&ewuer=$#SbaYHW@nzb>Y%qR%WK0p%nxD{0VHl{JcoDDrB zPtEltVR1u%Ip=|fK)FT8qAOs^-2S9}Js?=5s3^e!!>L{_#bev@&4cBdDJ0Zr1HMPc zEbl7t_{FIat-1x3EWrkx$<4JD65@v4&i4oShzk)zp*^SldH{=PiyI3}E}rs1lcrsJ zFFm0-Da1D&(@3ss%O2bA3L9@8npY!igiqKFX_nlbQO@}v_h}Q1T%hS|&{J_G*~!1} z2xzpw{WVnZOIC?f&BN1r602~-9HjWQd4s~&^Cs&7?l{&Nh$aXY=jW*_TmX?&lg6b@ z7Oc*4bMG<3x#?Q~F!p(Oty|8=Ne3}<-_DA5jKFzvwKh=gm*cf|MsIao{EfY}bp4QE zB?n|vP%{ah4+=7!LIL%#427~&jl|u1D7OnT*h;0PRx{oOz6adlZnQ~_X)dGum7`ow zyucuY&SOeAP*3n4+aL@gkbS*0vpj$&I@k2W8h*6S3k0)r@AydH<-r0{dM9U^>}n@e zgQS*Eyw%y&Ie=PUTKKf4W9gfG3^{ZODFok>SUYxH&F{>??57!QYCJgXoZdh>`D4XGl2 z35TpaJoDT_J?k6t@q`UfbXM?ill$wfyY0?GPo4}LWl<^=sR1`iYgtnf;O3NdGJ$$c zyZh|JALq3*dDIWO0mb2mUGic9; zw_5478NWFd0+*bKYp;3~$ZRphNygcubHmX}J_?&;2-W9;0jG9Z83Q56OYwOvBcy3A zsuVnvG$mW|9dToer0AJ`K3|p>%2?13J+w*n5N5^v#q^>Le_aqVKv*?)i*Rjt+7+Vp zi0Gzq3PlaurG_z+Aq1{uJAI|4f2CMT^5o3vCbY;sO~eTcq%#X@-MWgQaM3z1{%b-_ zxRwuD+@Cz9m3P*+=V<`3Iceh6f1^)T*QGJ0G`@1)67b$%{2Vi)HmM_LhXmB$EHY5b zn+iQZH?MF}t0)}pg{m=OIGPOlOr5Ibf%5bs)dNJTLAq01sf^lR&VrhbV{1gL%kT>8 zkkSM8?S)eF#5HsO1jm{ayQ*5!D|XH&kNuGtTGa%*&O25mm9jW{^vadh>-hwX>e`+a zTRo1sF>kL0(!wGQ={%#Z?g7Tt4@Vp4*%8Ehls0zLmF zIsuj46pX;&Mpfhz0y3P0a^yZpkqJ?Cf3b?rnkbE*0iePd)jI(!kn`yhM{eZa@14CX@QS^qGeSF})ZlyYv~W&Z+RHq&rXtLfQOg%wZ@GOqH}1*KL9$-zj!X zpd*;TY~Ap&G*+xY*{FTq`7!yU50E~lmo7yJ%)a{rb*Ph)1LKX zzUd@SV^9fw{_gaKOd9}GBtEYps<0Dr*_}?kR}|#KqvH! z&m8iZnIkjaz*pBjdxO_g1xKb<{#=>o*`(oZdHX=q$I*jbTU+#3iy^Af6Q7T6qcWB| z%iFg?bfRW&6D_<#I+x^EB!;u{Hx1L$GcJTlW#aaJ#*@XQ#=TR;6h^xj~ep1`*DX!_`8uQtsc$;&BKI zk5n`jMmNyJ+C&TfJYjp66ClNsYZD{2$*n*J?+{vxs@iy`Qzb&A*0F`I;bwudBqlWy zPPg=AKF(~`DqQX2Hg|fec3Yc-$(D`kingx~ckAt%mZeBd6`$U>dRAK}nZ_83{qW^b zGb~e>$=YYnvd1AZQ0MYUqD{oLD`2#(gqyIrE%WUfS3LG1mEq+stw!hB@=8%16YkcD zMcln{l(v@ebnugf64`Xs)**9tW$nIElq#)tm(wN#rN%)@dttX&a%#R#*k1f*xE3^8 zNFP1o{hBZH=h;)vSt#+(pZNV)E<4w8k*IFym8m#(UyL2H9-oRBLX9!5*N5sX7AXZ) ztkWycrX@yCLf=Ba%3Im$A7o!nzptM`JX}5xJsOVUO2uO+Ouj{}WXzwAv`r3_hgf&j z0SDfv1kGz?8}wA6is2gikk?~Q)s6cSjP{RNyUm#Er(C;&@X?ToHyuqr-HB0$HYPZS z&9TZsW@@a9I?6Y@?A_+Kv59_XPP3`O4pTm_j==ppR6#t9>TOI3#YJBy<&gf&3#tR zE8l)AaLB1h`=Chah<8AqiMV4c+65$yjJfohES5Hti(`pJP-dw-%#Q~XEKgMLDmg3{ zP$?-=GpDyBLBZ2VuxoOp_S&{K+MLd=nqZ~b2wQ~-%=)^Hb>#gcw#+vcWSd8wFqbtZ z5#eoQL}_glJg76!wwXmvZg2Xs;Ga2td)PwLP~!X>fXNk~y61odcgea0RSJ6EE{+0K zlAPx@@0(D**>u|2betke$g(KWzo(8`X4+NYq%5?KN(7NDuUA#Qi0{{$3^qWJC~lAu zcF7u@oh~Is=GP>DdyuMraFl_#PnzB3`NTEFrn2c|ak zHXC(nWHyiU!s#>cVb1-z*m`O=>L(IJpyN7nFs<)6{Lz^! zc3_L#@5f$(3pIbCYd_SFB2!2U>`Lm)k`-&=&XMOp_ilye0U}U7kQC`zU6efLYXQ0{ zq3%qw7)*PMdA~na9l-I>P4F1XaE~}jjgPTvt2}^3z{0@BmKXviBMA8)_#;mHBkd34 zPpJ_MKhG~umk}ct(T>q3sNREi*_2 z&Tr^zJh$?mXn5Da-U}97;w75(%I8#xP@BrX&h`FRRknY|4NH-(t+4Hc+ep__dr>FI zVe;6cqNVv{E+HkIG`&LFqSnY!bz=56M*&epfskw_J1!Mc`7}i}&z3f!IeCN>0mVJm zsEe|DGlo%o#N)u0RU-5myuU7Vfcect$Mm6kfi<(>m~g9bv&?jRI?WQx2f3A!s&Ukx zTD0+)P$>09nL);dIX?6(gWnj`^b@YICsK}rUi(wl|LatFBdab*QK1cIkoUfaU6=m@ z`s|;L<9Kr^Icj+wO@|&pkRgQ^!ur+5?nqfMVK9ZU-}>Nnqvc@0#>GnWTvWaZ^ZYI8 z!0@Ra@7@T*Glip_!j^B}3GfakJUsOW5*zRsN;INv=BhCV+r2@EU&231oGfHTK9eDz z=(_mpEF~~eV3-aWy7nu%%u@S`{Kk!)v^iM2U5({cL)`@|PTt{zXl7h7F`3YluJTB5 z@H5O6U!nv}`9jT~E7&vA+!#8wX;z9x>!5AM=}uf?c^k|5xy+y=tEyQ@qaB+FPV@Neo9cC7m+jh=)$L@kKMJc9-zVP8KdDie+%PLW^uiY? zJ6Et3^}=$w-|?Ip^QBH6{@iU1m;(kZ3A z?Li$zWwf!+&>`^GfqfqjLmu7%pR=cQS-X&^ON6iR|EcFbYNN;8pud((|DRz3?3n*$ zJ^vkQTx@Lh3~lU;|KIhzS^eVo$O`qlwv;^z01!puZ}#BMsZCQX{?dj+KyRjWpNR@B8 zsAY+dO&n| zed+yqe7W!bS#t;E26JXsgB77ZVNIf+dgk|7>|2E189hZu&X+W@L#io&F%aIBr$aof zXz3g#ktK_!Tt)ae9vxVv?jr9cQ`5q&Q|!R0rZgtuLd-JB&@k(fu&aeI-!xkmm1W(J z$&aqV!pWS=!Fif!1#A*-Cv}}E3TnvA7}F(+m+s2)Pl*P$ziPK5o~kB-m~D7pD|Jcp z;3&mU>_VANnNf_f*}W_iW((m^W)&flJH$Y}aQKM&O`7lP5$UVSd1PFQx6rb?lKyv4 zg37Leog;c)lO$%$;oOcKO}h#-6}RMm`2BqyIQL2z34;}amp$bM z+LcOf`NBd;DS~)BcAE-P=F4{jb#?$KJNN;hnYduJwRJmV9QB{?!;+2J=MdJ=I%Jjr z?+K6ZkypF0o&lw-37c_?e_-yRklBmy7=h?)JwpZBgXZX(4mx zcz;s)czz-4WVleT3)$4=YSI!CWoG5rFyrAy0;Quxir7-ud@*|}IrOsVrdW%JTo^4L zrg~&cV@hR-oArj_G#VAfI|Ljb*S!BLR{6j*c-LPj?UOP>q)P-uOVHNQXcrmbIb!iq zykr@89#y}vx3TO{XC7Fvu-3{;-LlYsDC1Ubiu^mJ9`qrxO)aI0o^f`Vh7R|)Rn1`u zGt$k*ShhPg^_Z%!@qEKo3D?GWoAVqYMxj3UFv^ELBDQAkltuyD0fPS2_XDn94pO#+?jpew!QAob* zQLeh~#zZH({p$N$UbH{4tNIN6=j(wqYn)$4U+CR#bo`|6gQ2T+xb3XpR2=S7?03_+ zOq{t?4|)n6i3kwoMjC4jiKag?ZB^4?@XbJ*QhQio)mMe(@Le+qr7`_uIl}k~a*FHZ6`$oh`GJDrS0RFv;QB z;*AoCXsQ|1cl?ziny;mZcBt%pYC~^}%&GoEMUy?nIL`R_Fu9$B!FoV4TdG=rx#q%H z)>06On0YC9e4q`TY-S5Bg3A$5wcJ>j1dy*{0;rC;!)Z@SKldKG!}+&jmSFAvkO?fU zt<>@qAEXYwm#^STxclAL6MZpH@t|h8v)`P(!`W@vk@|)p2+t7^tpW@wnC+|OhUj~V zbTV4ZWc0w*I5|6IqkBSk$*i;iXJT+=%sGuF8=`7WW)?#pGF?uz8$H z6-QA;ET(E{&SYH5me|=jVP0_TR4&wU?8bWBE!s0OSUG0gVg_n2Zf)^g5r(<&@wI#5 z!uiwAu$1L+L2j`6I1-k73PnIymbMIJT!r;NK`)Y}j_U4TTr7>-CL{DAbQdX#sQson9 zlqLg-Lrr2}-(Q?4LCq@(jFyZ|o4U~_+{cjKW_T}M=k&Q;w2f#NH*uj zhdbiK;LWvIb7Y&U{W=CQ8GgQbsEyz2;EI|&<0;$-MB%n!$9tgt#K#H)Iy&q*WMIdQ ze%rO~XwVeQU&te^h)|UfIv$rj+EwAwi|${jli>?)m`K+9i)Q?7^Bj3=-W6K9+*bNa zPRs~&mLPdeu7}FI-hVpRm1ENkQYZj`|MaK-GZUfm>lq;R-!Kv8CId+(?he#6dd67gDb>{_iBx|ICkes`oEhqAwRV@&ZEvOJ? z4UKF|F;K0VUhaCYoQOu;8~9Y*e^W2zWJ>^Xr9N}BQHnxivCO(rb|2jboDJFHII@+zP*#_6#eg)VFZr5G6blz>%Kuf+p8642B`|kjz|of!bXd6m%XDJ&iNLe+6|odQ0C2$m^O- zVGO;e=3Fg~z zp#uRfN7%p2eQ1=Lu;65IdRj^g<@-vs?A~4yOrBSm>-P;m#a6t-WTU$7o)?e6FZf+V z5=8$mD0&d_@O;5uGWSC*XuOV(@Do>#_6I!&e!84**eJCJrj}RXr}gaU^xcxaBR@*& zeLh$E9ZikRn(vh}2c|?Rt2b*F0TcsndhK8sR!0sTX0^8d2{Xo?fUzn3BEkQz@N%OG`jSq_Km88J7?Z(tK_(2bIbWT40OZv=*|A<84#edDQ_ z%@HN(5j7eU>tM}*i~*D-u&zS@OLdvC;t(B}>_h6hkS=9aef2a($P0a4&~@UdCU~%a ziHR27cDWYc`1XkcVzbo-CCW?lN`IgTr1NG?yG6pNqrj4bZ(~k$of%%(_k%TK`g6Z* z89Le-@J6|6Huk=O@9lI|Qbh|jAcFTjksV8_NR@w-Un5g5vFrgqGckcX1~3t7%oWlc zAx1qH@qtIv``ZuyJRlt%Dn*ehRSKX0AsRB7lks^8)60}ibY~8u|K_)1b0RJuLyS9} zeiZ|O#WjJ1I7OtzERu${^|>MMl}^}JCV-u>_i9X$kI(Y{fw3W{5wb4R&zX*5N|3#0 zZfr)H=Yfu~+!!vSm^y8ASGLIE1vi#CXIa6#-((o3UYhH}2(^Z()`)(G`XwmDDCmv4 zNcwaoE5adB|3X|$AVAG*th?jb+!QOdYDm;@%Mc|%EEI16K_Is}LUi+d&wI{NmQZY} zb9CSiyf-nMV{`Ft;|-$ga|%)W=GsfV4RVPbf3Z8QZfx1t89 z-lyt~!y7l=sV#JoLfa}oa#NUnO$j6?u6BT3)5zATJ`LS57{yX$x$=CuqB{FXS|exK zBYW5N)kH4wtE~-2!?!k0|ADESM5+UnjO3l&gY1!oER`)=Q0SkY^(({gBRJwwIyEL}b=}1R`ZwT*#`t%qQ=~_LRkdIJ> zUjO;~9ifnO+bcX$;>=r2!B@Y{LRzrjuk1jI@7-l zw0ZIgk5?Ym-jLc5j%9kmIjFuOn{VA-2NQJhZC1T!5DG^H8MumJJXg-%cW2dN0HdE0 z=wZr16LF8r2dqR|p{`vxoe_65V+W#k_q@@kV z3PjCM@NNe?V(DYCn?2!m$2GW#1NS$+uKhFeK5GH2(u5!?aeQdPbXZTyJVbl#>aIj` zoAUa6T`8x3kVY7%C`UulSaqYav|h*8a;Y~;4yHFrGHGESp6q8^E?rxRaJXQb%!>); z%5m&!AB(;$F9+Qcz@gXBPz6mtxYhb0TdTM$L_VQZb&_lMrQ(EcoX+;$?R*)FI#5sc zfva}^=NCx9Aw0NmY5IOC{{O(|{|v14IRB;Pj*N+ooukM9f(_C*v&9la{GKT->+|nV zAXikj)-R-@nv@o#7J)1}1g}4(W9i%B&io8{6orSf8)1QaB4h|(0&&6|;bh83wye2&>w)n$;1pb&%X*BcSrq2$dcoeCiJjjT z&_CYjQp=LVzqZDS73_xfzA{=1DLWlM*c0@!*Xupo35f2o55>}8YAMIlvK;Y49$=mF zjd>3~ofigxbe)mNvG4<>gz|OzMIhY?<7gOTov1$X65dj1gyCnz{)%FZAs%0#zp)>T z77U<&WGwJiBckN1a_A*RY=Cz=BVr=H5ELH@3AnF%FtVZaz|b zXU8+|-geI$*j^!A7Cw^ZPL18)5?)?-wWB=`7?yM6%HTg9z3kEtZi#eayrgdr6M1v= zVopE5;zhsidZDJ#`cfsEB@G%vq=}1i$$&c28NrOALy?O&K&ZYU-TSsToO?98Fp&-pEHv@eZYzIb{Vl=>F)F-~D=8jzF_Sl^_C^ z{W#gV^YpM|#CQc&UNmm6y`35zfR>=o#?7!2{+V#5z)y+QdtAa$h}If8S^-lK67>+* zv#@80o&kx^oc-e?2M_KFBtYAFA!oNIB-XSr+!o0`pnx~9Wr(G!V>s7Yg6l3}5Oujw z;XN@?8nL2ZBX5u+yeQpx_U%h<+fCZS(s&io+I$a(2_GZ+M+cswQ%e#xXQT%L1V~>7 z;F$L~NCOfZa5??TrrJDHcdwMQ3Op#}Rbr_-+AK6M3`ItFy?P20Fxne7RtLLl)yp;& z)1a=b3v@)8xs*BRV47r5_SF{#8v>SV7krL#RY9TR#aA#VfNfJecbni-+5*Gs1NjaM zDX(Z8MBtL?PnYD>9Kmg6q$Y$zE=Bwt_Gv*9jH~YPY!{vwC$5$DF=U{!YE=V6&n_Uq zMH|*au);o>Vo^AQG;|Y7{ZmYWHmF;%zLJ!=PSp&uj3=Psa`_Q#pR_%1JpW%9j?si< zTT=Ir4BZ~__AXu0`_Qt^+8_xB{^eKZWe*9}cQ!=q*=ycu9NM)dfTR=(Z=}z&rv{mUdZ4bGuzn`}!%%_~C9ExMLt6WAn8w{3uyfP8l{}*;uTWsU4k#J0Cafl810> z3+KDUKpB}+bCm<7CtE5%NfUm?O)@Nk#{0%juH6a}2%5KSEZ#DY7qwD?!XWZOs*q(J z=(|IwS?u7%8PtMfA870N@lr|D9CGGkAn;+=78Dme#~EbLEc&S>AVPPpl&9C!GCFA* zXSwi+giDmiUrG7o^p(8Vre}zQHm)+j0JebCoG3b|+EXD1; z+`?dl@6tuXkr{ecFMT7LdGvR%l77kN2A6y4W|Lg(c4EFh2B()~sBHPOOYI{td`X9X ziJQpOuG7b-a|tL>1TG%xB{yGjX5zVafP3!dBbNqh>csmRM`GyNukGva7}DzuallOX zNBEJ#^jKV5opMk^_u9Xz_BpS{Jep34b;4z~Ju)(!oZ6yc`3WThoA(<;k0#ek8)G{) zEYga;Hpzj~QQ~YG<|OHx-Q;C`TW#MnoBuO|4RDFb5iNY<4wHCzV=~T&1KTYG*!nw0 z?vCX!`)4S=&S`XU>*?IpHKfJQqIuWVEXFA$4E$=hw8VWI2De4Dtkgj1*k%Z&*7=Gu zZPj_VKhFeW!C+W4m2d;MU408;x-6|_MGUT@0~-G@5ON7oZ8Voueny&&X~e@$xFD`6 zGKsFketuxanTL=AYh0M%Vr`#)>%unNzfKu#LL?u7(?tZab|OU$O#m56{U{~tDWP#Y zE{Iz=(xF5Id5en*c_1thK>>TKkco;aMWzEVSIA1259i8Ri&PmIr)&<26A~GL97V{8 zfsDX0L-0rMXfW}ad(2||iz*Qvh>KFPAHm;LIge3C?^vKDMLqJqYB z7)4Bw@B4K2C{WogJyuvEVb#O2ke{k`V4JaRc|Yz7BN$^biW;Qnsj7J0xz>T7VVRg} zm|X8T5?Yf4k*iNm}cfFbx^w$OFHc*WP`rGX~r6C zf}+k%KO1FM{k~reBEle_-XZengdivEAIju4UdJ4>T!=y}9RYf!>CUf=H4@UEHB2#> z&J_+z*om#kT>OEpQHt+{x5}0or+mml#cf9rx97icddTU09M8q66sGE5wYlkH*CR}+ zUgfYGZHBl-RjX1yu4VRIF%rz4=YQEpSYm+W6>**sv^pCbOJ-0TP7Ex2dcS)7T5x63 z{g;mVcsu1Fd1v#s=E|etfrVrE{q&DYD{u!U8^!#XT8`KPGlh*$w29BuGr-`=cBpid z4$kCw{Svq!*YlcdU%fgrN?5^b2}26?N{~jnAC~NrrfQ{6 z(~Fb(66<^Uv`dhjn(W8q{ubftUln+Il|H;dh0oO?oA~3TQL=k7^Q~hnEhz2tkKqA< z=3pE(K_yPqWG|(SLW>M|tZ->3=c=U|Q1f=UjRKu7ok}7&x9<7H)2AGQbRvt^O@IH? zpNJx`&|>qx{&%Z(-k%qVW7=`aiEAU`@@*4#6+aqwdqF^E7v|kKEJ!Xf<>d?6woPof z^TEqC+F~Ik&}5Y=CbKP})G`xLEzR}i`l`$uD6OSYX7!7Uiu!_K-tn>mtJ;tGp*wH zC21Pa2yGoKEnR=)?EXb}S^XNPw;SU-Q5jTFcUE$yOrDo}(V5NC9Btm07u!*7dQOi( zm!j0aeg3!!Jln9$hMC!oMN3?;8TTbE7pR;mu^FqJ8C^&x5l4Pk(nB;HExn${#9&WL z775g_y2aWcJH)Oo3Zl-VINFHD0eclLy>=F{8D&pHc*BKNog9z6|0YTo1J76MofT&O z1i3pa{!9+E>~Md){;+>T|EJv+({;Gr{pGR#(^UV@?Y0)`f4PCRGI6vuvHo9fV5ihK zemAfPzZ4b>0&^bi@^D<@<#KC@sLg12HgdHU1eF7cowQ>JiNz@7r@&k6r~1rgA~K1B z115edeqD1TS1VJanb@`S>AmPMvq}K*XAX2ye9nAA#(0@XAP`HZ#5KuJQIKg8BE~du zg1B{b3_X0aY*@*Q=arHx*H)QP zC4LqG?_aGIbX5}H68RM+hW2>wMA>sUiF!^UBaYV3fqVe{P zv*1Zb^;8vbCXV|>lU1{sCFYx>B-)8rEp4oBGmKZ+Xvvi( zu^`3_D1Dtv2|P(eWV{zK5JZHfNPAfPLP(ZQ*^46`$Lt<HDZHQ0QTmlpb}W2 zL)jN*r5h&fI~!X#%b#VVLWH+=W^*ik?BaZ8e`oB|ahhT$ylsG(IRgCba;{*sQYZCY z%Y4p2LzJo6Y9yQ@gTt!hmbsqOV)bdmUrf^fITI&v7d691qKLZjvCg! z)JgU=x)@*uJR#JH=l~s|-XMHGLg8UZu$kf70|j=no;?ZPR#Y%+y*{AsC{qq>%&+O6#*b@ zXRV>7d})J#cQD`MG_QjmgOrf>5ErY5ogD+G_nWj5J0lxA6MHI4rJp8>8wpQbrMbOS z?J_!}05JnHi9&=tlD5X1$!8QGXXzpM8kOh+|Ty7jXpM9*hI_uZ(f8d<(r}+Fa#G zmu3hVEi1CMZItG`<&>m^+6hpp2m5-S_R8aNv$3^2W&oT-7Qj*Wj zc)@M57I@;b^J4@3U?7byKNSVnwzL%w-$o)jq(FK$glDmjPFRyggcS7Y{JMpgyNc$S z!HLP*sn!ooeCv8`w`irUIS#FQP7329U#Y|U4|C5I^U#!wX0(CxRZ)DSuBa=20+YFF zqaA;CpFLF@#1VIBrKtm*m=pEWUQ*DT+|LhD0$IU$Kg@d{DZu~sR-^N3#Gz@OovX@Q zflg|wA_jHCY?BX3%gr^%_!N&Hzlz3bkd+8du;f$60 z#?5~?^z>_%pxQge_fCAE$sX2}Kda}QvU$P!VB6+Rp-YL)8WnIxBz zwf*p@J|w-s9$(_K3BOR19_NC*+$j6kW+bf6q<+%Ha78p|RV9U&4#Swy-9TA$$a;As z4UTRbgxQr~6Q}6vXVr(C7Y7!nVa148VZ0qQBEfo6bmzw;I0P7oo+q!Fn|cb!{d=QD z!Aglt%bnore#(Zy-%A?G=u)G3>Ey_BE1}2mtmt&eYxT%W#r31aa9Bs!vf7$l>Fy7Z z%wC`}hixpjc`})`d3MN9Lx9E1@K`=0be^17T4JAtA^sYJ4;m8g`4;P&kl`9%%@HUo zdA2V9raJKbPf0DVOa1QsonZZ^aQ^ot^_1-YSW-=mt*!O`UtRs5$5>ZbmX7P<_guXO zl;s=Ze$m7Y?L73`!)Zo3tg=uEogEV;WxqXO6kZaZJx=P+hx4qspkN^V`1RHDN;wkd z^rL5oXNQpf|Qp&MDCXrStLzyY=*l9CvGBPO)c3l(T zUOT$oM>oVQQsy8pWIi}6u*c)5u4iC$W7va#G>t?^Z^Rw?e>8SO$hmly;8e zH)6wOc=l%rC-!1TA)?1*P^!7AQ>ZlXKl&R$nYH?=owX}@PM~dP`Wnz}Lsl2ZJHOo+ zyWZ)&nQ)>@QU~vzZY|y|uQ>Sq2rB(8@SHW;O8)*P>KqdA4e`(iiQ(c@H=jG-YjG+P z70JGX(5nMH(1N1&;*9ed;l4g#M70CStN-!EwNLdmcC2qR%YkeY9joDu18pYa+to84 z^1e|=AQ3CtAvWEm+s=Xs!wyAEXQ-<|?!=?-cnUq&^G>3~5OUIMyj_6NvNn}=;@_sJi)N5i!z*t`{)ZbX- zJ-egZo2#p>r=tyTnd{9kBX;i3cJ?^_1JsZbKfJj)D49y^dI+${@!GS0;i znl=@w6QB*z9c3|1p_`DAqj%0NF`V2)b zekjFHd*;5*q!*t%F0~*qz!g6$zn?n7r`s$K?VB%A{b&;3NH$j33-+CTyYW2_@CXs+ zjqFJ!U=dKX9evJ`Se^ucxw6~Cdm1~zw;w1)C0!y>kd4y$oUrGmHj;c?KB6b8EE7lkV)?I6NOh zR$Vgk=IPV(9WH<#&k;<-4u6D$k;|P|Eb-sWW?3ZMYiJ)BiqTFvrjoG;+&rKZ2}Xz; zOq~Ha_DyWqn!zlXVb~!W!Oa{u2)oKi2}r?&C;=<_?Oh_<%@u)Zxh*3HA^l(!RWiq- zx&_N}&woYpM5g#^K(^124}1t3{lL>ua7 z;xK3|xli(zyj=Eo+o##ltmje)Ytjbl+nBd-h3=&X4mZM6Sr(>+r1r6|(l-?YqJ%b} z1p)N$E#WiSa80B{-MpB|;n$>{M>mXGSG&fjZbvwbso))Q$4}`;tXlo`DG(mR1?YPw z&exw;7+WBD6U*|-uk)t@L+Cg*mLClaRsTHFQDHwZ7zdeBw+*=v zL+eyV>tyc224|vWU{F#Tyd!zAna-F_AA#s(_Bq0X<(K3o;#o{n3%}pmO#-0>u>eOM zS9cfez^61)$M7vr&6(GS+H2OjR-JgkaTspX;@?*{?uuRVk?%7N0CyWED_Q8Vx&YbR zuY_&lI>nPx?f>G55-MN>$`LC@v69y$sj)yZk@yQ(;)x2LwF@FXeiTrCpfV)F?sK6? zyd(yqDuAvaql^Px6V!$!TRC*1xL1+tmk?8;{1XwxJg^XX7S|v1qGdh5kr$48MH5jj zKZT4qtZ{~L#!?a?vr!sGa)A$baN4IWO>Ok3;hg16M0exA7tB$gKVs|~xn!bRi7&{K z^t_JJEZ3({o}-^TwI;6kDU$sdR~Rs2#_ht54q3fvHVsy)syxJ)^eWkO?1KQ*svGN> zPuTsg|NHYLevDTngPI`J&;wdtEj*zgeyF>tH5{jb*DxV;bw4+GKNowHuXdE*OVzr3 zek|)IKX2_d+pg9z*;0z4J-Y6I+kB7|1)6C@4JU1X43J)rPv3W_G;o^LUynaxsYhze!dHw;Y!?L`nBYycyfvRbw^Y0?j}|>QKZsc z3)NL{qtfK9!t0e=GRhSWm=7fjgCT8NYp;F%Yw?udSEAMsV`o`#D+qT4{7} ze(%*G{3$1~lZ}xn$Bwwf|NeHiwjX@$j`&yI@KC4N*r84B3W21%{et4tpf~dJ1n6VC z>*>gBbI%a&H>q0+CAlyJ*h8L;KW;!n0~z?{LZkj>LudQFS?TWn)CiC1(Vlu$O8TZD z+wZbMFfziAtyPQ<9(DR|L@c>>nC$iNxm`%xnt5!_B=&u`I>ptfEwa=9&qT(^ z#PNTo$860D8!a}Z-<9~Z7XCl~8kEsH)t4LsRB&2R&(}hX*(K zE&K9DsUonrRxvtUqH5o{a;H=S<$z&{lJsbnWyBNXI6cv3Zq%e0Z!JBl%*BCbH90_Hm?Ls>GCSqJaw!(XQZefWXb z=(%3Ach%zQr7YOj)5*u)+e7&UfDT_cCmr)@J~0LvIk;-Ydf};K@w&9L7^>O#W;$Ve zi6NMICWVu?(_RrCF2bLELeVW`y`9)>4iGSLD+mnC?-cn6`<0$KV*C76;lpFAc*hxs zXR-L62ebfgKi~fg^P^;92>H3+F0}zgKBZi`{dNO|*;CP431u0k7Sj5mv>eB)k z{w$pqt;z#ON}g7UOe7%(=>+XDhE47!xF^=Zls>6d&ZD+ZO#7=BQ@0bFu9$ z&8k;T=4d}Rg#l27vn|k!j^a zIW;KHNgzb=s)fRU(}EwLpeay^H5@o~FG&j%RlR>=|0M?6?bF2sC?0G1U{)oS(VUvZ zsoG_oDJ;BGe)Ah(z+2LuTmq1mk+4qB4>dn@wH)$9Aum$g1Vo-k1bvZSJg${Rmvd>+ zLGt$LUnP$4nn=NOamqb)uS&J?7yGQD%9I_^_rmFC(?HyPTaYq-9hQsj;?jxL#J@>N7%&l6_shXK zHBfGi(FdAYA0;GOxCh)akN>72j7DWuWd`OE!9kSyt(r;|(u!o{oXbs!`#kJsPdncb zJJf;#t+$O5<_srUNv-m%l3j{TN0)>A_);5h7rTQjWyT&DX9W4zz(QHBLulD)7q+m; zi{BMs%K1L#h2O>=9#IK+d)ge~k|P2jzRZ@L@!Umd{n`F;B`igs=837|&mS&C8#{x= zVEf8L<-Pu?wj(ylM{sZWlUoK4pI641f~lkzxE0QEq0$Pbl#bcFb!aIVS9}rw67|q^ zz=%{isTol11eU~)!#Gs@X;n`J{8uQo@mY7(m|KM~Uq{{2H+Q-6Jef*S4-7f#m>?!m ze^SFgOT{y}s76$4n8e_BWCxO=)C7?K?qXAiiveJuu-Xqn5R(KPgpdEFACUn-27Vwv z)6r+nG|%s89SAm>2r7u)c-1Z29-(W{7_4p)=KQq79LXW6z*`;Ec+E@|*nf^0u>J|` zJ2>W1)#w`r6$yvS>yVYkzK2Zv8MFY#wF)>nB3dccFRFonXHAP9rT1v`{Kq2k>sN6MgGEzN9!bTuZaZ>#;=8>5BtGOFMJq3+J=XlcCyc}A;= zO5);!>7K<;&n! zv12zku<w$0rlx*OnCmEdcW*V5zj=8sopHeRn4=|sL4dO~V0 zU7`D%IcES{sXb^&Y@{0pyVX?zMf}O`ZREg(G#qzvhSk(YV4e$H6YJrT@v@+%Mq50Q zbiGt+A&TsNQNlys$cbWHbrj|u#hgASiMT9$&5%mx4X^+uxw`|~dwFiimEI!GCLJDKknjIyC zeYf+NW-s<+HHM14N)d5YmT)NTP|T5sEQtcDcs6m5t#ixK&^NE#a>)Bv$LEN^OT(EU zE#7NhC2_dX%5S)UXr9~Qh+HZVa+)~@fAZIZNPzJrNRvd>av_8`t zBUqy0o_Tx3T?dZj7lFE`ytP66uI1g8AXgOmGzlgA$%80~`wy$Ug*9%rFf}I%ilj8T z4h9kcu9;f@C}nF92*j?7 zoJCKDTWlh#ERj6!-_6*wO$124_%`0qmUD~zlP}i;Zc~eSq8lX`qo)~Z*ozR6Ql^#; zTfpI?b^fsBm#j(yttK^u|4q*zyz1XLRYoaKHjQr*I*&p-AVEG#4J|-1RWQR`RKFk% zg_Y10DYLGsmW=4aLUHc|ZBH}}g;Dk%;7gq$*jrLF7Ml`r`1v_|_OX^~J$>wqsj?U4D33K-(RA)!jCcv!z;{5LrML8@dliAGtq4UGZaJ@=$!+ z!r>meY2h8Ju!g;;rN{a6Usu5u?O;f@FuyI%Z=3VqH$bGnt*y))0~8vMD<+6dvaTeuYXJA`8nSlc3FT=f373knzSkLo zr~jniq~UK+;%ymKl5jD7Gyq+yCOWItSBP7%2VDe@>60SCy-I7S`epRTr#b!u2MbT5 zix89j*%PV-2h}Tqq+*wqW=!F64iQQ#htVT3#jG=$vG?*DWPT7RmP;Rr=5^Zp+Hk$u zJIM7tB>Z@QXQyhXc4&E^drqd&x1F$0gD=9wc7AZ?r@fm>yfaSykzU4pcYRbt>i%c{djv8WghhjA8iolC^QA_ByenwCDm zBwh1dLTpYp%v2SEB%Jok93HE~%)Z=OR9#7xet$@VHi2vmG0_r)v{dFfhGSM=)1)j6 z4|dJGNt>kDM*)V)z;4quhm~^|MK%4 z!o^$1AlcZ=oTRipvcD3(tu7AkJR#X$!Q>F6jnIOOEd>dTCFAh(fTJ7VaLIJ^lvMOt zc&3Tok)|FsG>_RI0REKTqC7&?V^=eUlH(Fpj-qtU z|4wBJp$vW-qQS_~CkpZND$j6<&)9sTRI`Z*Dng0I_QVtX&$5&adapmJpuKH*fO}LP z!x;m>k1}y?s?e(-@Xgx(ABGdh6#^DQE#MHuz{TmSGk%sa+7M z9iAYpqb|;5`UH_OU~ua~2#{uaMwYh;%h&Z7Q^xnp$7}{xV>;$gb3ZiyrF1dIHpXcA zg86J!(Tel+5kun$PWc7sta*PyL!aGQ12`!XtAvvanIaByR5e5Q4#Cse z>*QH{E;U{~X%ZW1ee!Eg{LteDO#9OkGd zNpwabdO5*|1H}f!zI5Q9m?|PS^S|UZ8Yv80VG<;{?j-=;Dh}t?2eoagq;e^xLQksH zhx-~Y{ffNcNa=n%tVOgD(vvFCB?kluuv&>-WD!-Z|*( z22(zGeS;%teXt!=MtqBF=sKDNT0|_@E|nKdOXazef$K*~D2CsT>3dYwzp!Jf7WX5e zJWyE8PLP>%(O0dDHH#6wc_Br>*Bas!&uA39Ek*Uu8pzY^zORY$PHS1*WX83 znCt~&y-B048Q-4Ol*UxswiVh^M8gStk^tOYWCuEEg8RX0bto#Tgzw#!Lg`>YPJ40T zyx+9GxMJa%vmnQVb#_B9#zyacsEX2_%32oN|`hQT6 zd=AG%EY%K)9`2O~Xd$R)!-9)pK|2>5cIn{y;=+eMZCLx5Liwm%H}@rh(&%i=o^TBp zpcTaE-0^FrZ_UKU^R}PydkZ4t0V|iXT+{ROWd>IB8wbjNGN zuxK0Qec3lfDueKpSx#1ibwckBp;TY)o)d0>Sp@X;VR!w-a!th!f7)i@IH;KG6L9Y> zj_xz^QhxWxE%XN5Fx+m}bQt zd>5H%XegE9+^Ql5GeMPFA8M}ZA9=HS zE#>X67OY@hyxV!ByWK(ysk5{8a)xW?>Kizw=Xd8x zB!4(x;!?rETi>vQ{sK5dxe+y>>_xk_9^nBLDY_#KS~LDP*(h?%SzY|SLoU@C^~R1@>yX`+vDEM{!6y;f z<8e60TvepF3 zdQJVSM=Nc!Hx}j!m>b#W@uakgP%<*M|Gpr}a_Be+;TANF~>-i6ZO^5N}{fJB;zP5lUHOgRM6SyyL!&(?164jfYK561$Ch zCRD4M(;1GZdoM1rdJYb7936M$njJ{jF9Wc6mIdA};8hf_+6-Vi#T%KTZ9_+Xf!H1G zs1Wk#Z1C$k!Y!}o==n|}_=Z*FU~`zBh^0+yF0R`kIt2%K^+`scfj`{6fp_hJtO&+v zTM1%-LVk3JGB0~Q&|Dv{CBX}|8$tTm`uHberEk+b?g( zr~Nl7QT=0m66Q7H12j=uo-(@>mf$RR)#l5RAOkEljTaJChMqO)mNJpg8m0ZbT~~t~ z&8BK$^hciHb^xJ>Rw79Ww#_JQhK!X39v~2i7K+VjvJt&msal{N{$^ATIX)XthyCm} z5k$cHHgjX4f#(gq*CalupY}JR5&J>!Yk_54b0bkU9XXX=jo8sH(#Cmc9-1Q}umo>J zlJ09?dK?6g0&-MUJo$k?Dlv1(mGWmK%O(RCa76~;f0a+?soVbAXbN4TcNFHIYsJRyX#__y$&H zRwLJDESP^JL6>%77AK4vElOypBLO?ER*_^94 z+7+HW9qHu>q?Cz4v%&PJXOP+D<N#$o%9&w+kvaYV>32%hR$wMP!5RFz(9?bJ# zvBAG*)U3(sH@|1pvQGx)m;av4Lv^q5yNcL+KXoY|MsJ)nCJQKsx4{|EIdG#%QjA;e zDhI)Jzgj7ykha3zkKQzNz&lvWL2l}cTGtP&Ts2~^jWiXC%QGa*%ym`S~R_L`%csm?0ezhSO+= z0^>n}kYW~!%l=3htzkJ=r@!kS6Pcgx;zQzoem?Nkk6j>gFTmM;W{XPEy((u0v!*De z<_UcVg9 zZEk1jcm*t;4URuOjUP>u@%ldBoxfYr1AKj0a*8F*%x>2WP0BfOu^Wbvu|1xBU9oik z*h#FO1pa`HtMR8(R;wYlr86U~%SHQnjzkS%AqZKh|J4|xjv8^XK^8@kI<7C%H-W^_ zztN3;`vdSt^cJHKo}Wen1F{lRcP)e-(A2Ly!Pr#@7NU7gLz9-m6e1L2k_x4E&iF-T zoV#m=1F1E^r2RX>qG(lE6L<5z5-mWXP`lc} zT^%#u?^=l60K$2xX)NAUD4H3Kec^qba5CzvA^B`C-}655%la|ig6e(@-Rm@6*1A)~ zbxj;66x~V9!8?39vdb0av-|jXaPY^-gP0Md%0pnWO4et04tm03`--38l@z}L&H8&$ z;&r@&f!SffMemBzt@X~bxAWjCWOCJZmwAD+(1SsAEu=ULtNoVs+2z=6?aZC)&darR z(Qxn5$KZ7p%-qCcyv9KHMKhWr^-Z3aHV*k}Y*-%8yZlar0KalqK+?3G{sGmLCBKCv zPi=H2$mTBTXn$TaCikx-dIPVfM2x$1CI}{a;Ku5->Xq{Wl!D9q(wHOXoL)@%6;7w? z+*y@-at!2cP0Go^XynGo2sWgBeSz7h9sjzqpiSk_@Dv0!NJa<~gvW0YarYRwsKF7x(=GJ80eY(h7g9 zVH=-Ov~NT^Xh*o==3}n<$ma17hIuN>`tEzq?#eg_e%e7JmjShwY)!P?BFP>FYjT`E z+{xNM3@qspCX4f%RM6)!9{T39XxR>vb)Y^6sCVVH*UxII2BwhN^Qx@v>R?b@Q-fz7 zmHQV@Ee#(XeNmbRC;}zNk0dpbACeEHOSf~c`-IaQpq?2lDd^ROvD~m}0$rM7SQ@R? zoY&F`shZg!g#d#gKEdqrmXAT2VzMek`PB8+5vB5Qc}0U*drF%bs8>cw)hvxqC=sBMVpZh|T=x}@oT=9ug?3ipH{m1MHxXlJE5s2B>4Ns0A^Ie~_iBaFJhLR?S;-Vd`7xQPQBwKv!nSKfdiq8D00dERJ+#xX+;kooO{8DfynR&lPG8fmuaRm@CuDJ7DwMf>qb&;~ z%7aP8{_@nhx_+^@1iY*qnqY-L=S^q1Ll_P*u8Y3))1ea&1Vz&lW<~UHT@tlWfRSE| z-#$Q1Qt?NnWD!MyugxmW!w`X4k+^MuWsSnb9&Z2e%{OU7ZmZ(6ou60yYgKXzr9`<2 z+8-@@3Y|H=Cva*6_*SU}#z;W>3eR1=9p^?`-gOlM1Rp=-=oVTBYZh9_T{Mf12i`7W zqV~%PH$ot3Vt8`8BwlTjSVf)}Y*#t(%-?ca)QfMc?^EDzU?YSgn|j|RPxzj=cx%9Y z^llGKJHC$l__3Oa#3a6WpnQ{<10;a)bqU$n%aj>y_1TQICvq*vQF%#ZwLra)Hne6! zD)IuqS6amxxq2zz%2`BoD)MDv_~HH;I2gA8>xW?%=ugExU-WWyW#My|EyMqd7Snp7 zzZtH&Vu}?Zw_$(Uc8BW-4ReW~W=b;TY(h-NI;DiG%WKzF^)z30q=BF42%G?&y#^bf z!!`=22%X-1fCJlTGsc#wjs|7(32lxbf8&p5B@V>eO2GGLX=Gk5#!7F0(7NzF`V%{+ zInSk2CqkbakXVr`QKUoY-;JMVVw@T}_#ZDD&Z`9h-(*_#iS)Ua3!c^^ztkBc&ekny z$>%p*!NfCz^`_5+i$e=)A()$II89pK82tT4IW(oI+vsDdvnZ~9M(i#6B1b%S+Y zA5u-p{^g7CZUD+~~~YEMIjbn7>`Y+7d#sc~=W6EtmyQePKtzO|7*d}~AZ z))WWr3Z0RJTV28_^~i%Uyr%B9m^UHj*Q{>j&uouiUv{?(D2g zGx9)9)iWTI4R_u%1}XtkHMnGC7lzEHP(-(>bW-QlXZr``3GBHqgB|kc5uqBPBCk}q&m?xXeNiUk3?$V0GfK04O$>(pufX$56i4* ztz08k`#pCAKF3bV1_Q|IxDjG|hZ$Tj=TJ&mV5ko5Vg62fzT_?1j^+AeKe8{E-p~j2 zqQ`)s4jZ`6no2qism!Jk;Wwt2%GZmOy8(JIa}+#&^pd~!WKp= z!qLVIA+NdQlWxQrw7zysB;Unpx9HQ_P`*ZE(Ut3}Z_+h+kE_0aM^ve41F}w>)W9ZO z;HmmMU!j3xzl-EwSh-+d2dp( zw>dBN1X(rv3{+$^eS`l8Yweqd$%KDztNsJ8|2@{)AOiph{$H?G$;rXl(CL4%##5|z zA$uT>_MKbGuK43WV(({dPJC)(4Zp<`nWR6*@8KGZP_dR=)aRn1!b*_mljk1eUjH>i zvB5yFwb3XQbfCQ4?tP+Jh^RvwRhmA|yw|B*L&#MqXHpXxhGJ~eQ(tOHmOL{l zt%8NERJv(Fk2OEV`AOa6P}I;q;t^%M%~5|e0eLkuPK$eukFzk!_j5b)^#-23+)>tr z^{up3p0!G|nVl?+uSr6M>a zh4#e?{O5Iy^pSr+zBLhh#E?aeCw{otCQd3#Qof+#$z{zUM3nYg~9D6vh|C9yxlqLJi zyBsP(Ii%X0T6EnrTTWo`dglc7`-h}a2}e?; z7~*zCLWOHh*;5?~CI3^JB-!~`;dQ=_gqV^$(^a_ku#+Ff&11D{0S{MLd5Ib!tLC}T zs*RvYihNZ%TjkM$sIWusOP| zJSVe&ez*&kfKNEf2`11Dch-=cz`#5g?i3-ncl<==#Xn)VGjMP#&+cJV5IchH5g8X} z;yS(h5wVylwrq;=lpg`y^tcW;uX@_PBkGQSKf`mYLi?2DDTuwZXkl|hGRm&p#jW25 zS~~SC(JsRUCDt4(IfOwdAMsvo@m8~i*(P!*|Xcf zq!!^zfLp;N5dj3Yp*70Npplb~T@_2mKmZs#&U=7m4Qw`pa2a0SqQjyrfQc4C*8=Vn z!T1)pARh6Q`6c`8^+TNrBRaWR=**86k0PRVT0Pn<94XFya-JIJeNCd?h}ZZ^a)Vy; zs9iK#qRfe9RDQ}ix=E6_(9_53K7NNQY@a=*!qsQi8}`V|B&$|ayvxX>#EWET+5(jY zahr4GqJp8;UO>3@CV-23n;_pF4n!9oUXwo1H6zIQh^w57bmi`WhaxfixfAeZG2%_U zq*eWO7m8Hin(+2_(_PoN`Pu*2@yc%IXyxowOH*yOsivovg^permz!?+%JRcdwlgTg zV}$d5Z?{8~{8B?Kk_)cMq5d95a4uKMreQbm*4ieMe={U0 z>nBv_+>^G=q(xyF&CI-oUu};Tl^R_II;bjc;y8PyIEz0ltT=n0fL5jcd{{w_OMhM^ zFRW`Emdxu0;)sPm^ojzSUzV>?7{f~4v3;*xw{=awmHG6>g=FpwhlUK*fFHM5W}Hw~)Z>*Fa=-aEa8g`Yu-Yk@oXBh zY%%7Zw9hD4_n1+=I>!D7s;`O%DS6z*zjM<+w(0Pbc}j4NbV#vfq*v#lS!LSlK70@w zk(-^6iTJvd3Z=^?*sX1Aqv3+Qkx8t|t4GE-B@I3f?=tjl zFOYBJ9vBB}LKJ=3rTP!mP5(e#s-plxrG`{b-DJ;Z4W*v~R4P~X_CX3#5aGXLHEQqz zoLLa)+H`pHCb=breB3*}ukS>sPhK70eSp8m;rsMjO>F-1oRKRppSuO5&e*66D2N6Jw@gC#kf*eZxb*7edeebBDNZJr%y%A)yJiCn z6eo{d`6*VM$U;LkOy@lh{y43)pT`DSo@Mu=T5~GwoXU3v6BT_2?BcMcZQg9il7@h7|Sfu+GS}$M9Q4= z70V?nZ;M?@I`u=?h#AsHzvT?mTnn?GR*Sv%IDLz5@?O80Od6k7rp*+#2oA#Hv885` zZ@+6ywben9?RpCpnbuYRQ6Ta2UvyEKT39rS`}Hx-%y}gX)~d-EHDd#L^Q~VWdrk-grCyJ zKww6PW3MP4C|(3>m1O>@6%VF?4Kvonnyj~ z1rY+|#K=LqeTAx1A>w-Kjc~1Qy@zvOm4alm*{AZ+#unKH!BC{N_@dZy-TEze2G6*B zg2V(3N%e9yj*ou)-lE=0b~I{Vl_>+%1@U0UaT1>9Gw+WwnL!S2Sba+p2bO~7F$xJ- z5lS}AX(%G15Ou1?Ax!*6w5=l0V8VPSlc0fE;RO07W>T&*CskQzuH{HLdak(@b2hAO zZ;Ra&a56fkzH>G6qGL(XM`Guig`jDVnI$C)(W|*!X){G5#n>92r9J)Tyv2b( zxJ%T-y|(zE?0us($e^|UuA~ORLnM-Oa*BKt>Nc8>l}l$#I^q9uW2?s)$5e$#aSEvx z*)Rl%6Jmuor$8piM=S)>&k-9~O|N@hGBTe@TX25o2M^(U$Fk_wFc89=zK-Jm{3e{N zdZwIHFQb*o(ElOzWF-4lV<$$f;~Bl1v*+u*FZR2w;UoI=V(Izd{g;2R-!!rZrZl(g zXYtU%i3c~z2Ep`w0YCNweGxka|I>p7Pnwk7m!pILi3umGaU>GEBL@bfj<5JvKgjSO z{otM5eXrsJYFM!Yw(_9`MRU*-Gz~&_*tnXXN*UNBiBy7g>6-38EX45;h6W&;<2<avG%lLxdcdXn`7dppw%gIE1`6L`rllj?QI5NNg5qiG?K%DT^N0LsZE;v%bp3$ zL9MT8lP2n#TTgasm_cRDc3n!ITWu13ZThO(G$gJnjNQ1keA$ES46^vF#ls4|Un%zL zi`w99>f-!Y=?E7!Q>NYxGg5tmJL%u(E44>4YY_(h^f+JUFnN1c@80RA0Hh%JH}!S{ zsfgqy${`6Y{g#kywP3JuSeTf|<#AD3WP zNRo((L?Jkf>KOVyH^W<{<+#I@Hf(R(OAni!c57OIS>(zk-|F-fSfQkCZm zp_dIbN^zb&%@8Si!5?2=mA85<^roR6`+b_emF%ls+C!jUIHgQB1FI;IM311WyfFOjpM|r=rZzD0ZK|V7*1Eg zI0b&Wa@fz{GJln5#a4yFd~cEHX0o%|{8wNWiP;W|*mG$ds0=9#$l6*n`%<{RF_HO( zYoz983SztUwjSm!-yrg%(|BUk=jy)vy8s`$#suwJ!>gZ}cmqnlP$GBmCW3(j#om(mDNF8F8+2_&NQk+VJC}M+bue#a4=pe zX>T6vc1KR;$kZm=I*v03Zm5O1!Z{jz9<}k}oR6%a{K4EQ>O-YFRo!}ZX0nw`G=m+d`kV0itv9aH|^WV18E~$TbX&_nD>vY**jeGw^$ebL&u7SBlEOfNmBle)>uM?ud>Fz>@eY&|q z1d&HI{c-XhlX*aQgrd(Sb64;6w|vI^M8c2qC1-iX?n?044Ct6lP)Q(^p9&rBtZ*tL z8_pHdy9A9a3zW)g%a-R*PwV{g#PG9KdWl!+xLxJUts9GvYT%U{S#_InTcZlSHEUAk zXa(a$<7Y#bgsWQLm*#8#juRWn$5OQoK?`+Y1SacO+cGYJqf7lErrKK#-dohD;5B^L z@RhF-TP4Lmos$>WTFj=_6M>3OlR9Iz12>o6qJAyRZ3lO1p-q&Fmwa0p-k?zKuYqE5 zv`(g()WFtjt{o)uG9=T EORFXO+Kod(6%W1*&E2eLxb9Q~GJA=ZHQg<9*a7}1-B(7f-Z+B2?=&1>{FJ2|dAF{RLE^UXSORNYpt+Q8ub&^6?_ zPWWNKWR0`P?H2MI@>XOQ)u@N^R;k($7YHP_J?}{ax%7&18?Gw4GAj2WZoGF+d9v0E z@A9sbvft`0cYz1Ay3#7>zSKNb;k?`PKCu-gTDobS(Y4VdYOIn4%UwPiJ zRRMh5-g@1dKmQf{B;fe7stW-C@E@f4?_me<_bdPZ1$I=N%&q2JrTnVAk2Ko-#xzk(N}2czJO{QCn%1JG!r-QvG54dPfzCC_)&QBsMnLaH)MD-U z94^{Bg@CrgWXB`p1Qh2}^-N=+T*v|v2E$8n6AOa5drfV*K#feRL+N zspYc*JkN^NRfT^@ZmFqbB+5taU72v_O0{R*WA?WgXdWtNdm8_W-ke@W40uF1!*{r; z`GbAsoO_BKY^WB~R|B$2{#ew_1an><`mF#@{7uzmNWgsh|44hM;7YVF{xi01+qP|6 z9ox3iv2AoZ?AW&Lq+{FGr0?%vGxKn#Zdc8z%6ZAd*$>~(T5GSpfC7sc{$dcY{P65b8qe&f7#uC_T}L&bCj%k%)s4WoZgRmXfs+Ll z>4GCdo(}EzR1>-Y(Xhx-2l58XFnn9a@ahW=n}Uzr`N_RsR6|qg>nk6`Z^5`>NoEHw zmh9d3FhQX)*zJ{l12}Sk^6U(hHBKJfuw7;yetM+U>TjXFu;Cjd4v7cScug;dh8m%F z*!MY;HZ5L!_zXFjxLQr^aHc&}9CtaVY>y8SF8CZtzU58Lx6@=bUq#@>ZHe&FiT=?A z<<&l1d-WFLG`%|3dT=Yn6UEv)#macSmI`zJa2~29_Q!Z!^qRQQF56{mxG?L9ZbaR0 zsp{|LqgPYiF$DdrVCUGMr2lJ{e1=5Hj|2t)_=Eqy8wN7M|DUA;|7(`~y9Gk$n(wx2 z!-${X8Rw5VvrQ+v=RjL}JsNyUM;9yX(&j$hnJ zCm4XA>jpd^k&w6@digTf6?yVDcOX-aiwpx+K`LVoW5V=j4bd?`47|~4JHFsga^ViU zCk4~&HZ!WqRBCnLjTiL}r7?rjWI5?P+NZlt8rLdiEOA=(eOzqtWqrO#Q_WX(b(>7? z(wMA2TK5ofKylDH(X*9*HTQg|_DeC?70cxyJcM2&Y!FC~|D=K6GLM1YXxA}^Ai!K* zi62j%Qq=3-1}`OY+2y>pE5U=UI*dIQBOrQ4@RT0i z6jJaGJ!2Iwr3o*Jy0BGGz4C>%0JM+wfU)wm9zo`iBEE!xG)TN|VD-{C#`Jqe7vLo~ zem^OV@xBoh3!Y8K0ftfJU!g|Sjcc^%N#o4pv>YKNOB=S>kl(FwprZgr`Hb=fQ2GOV zDAl3yZjzz-9Z2!FGeVGF2nX*&e?lOB!c8&^=(Lao3;@EcC|zS9D^>TBjwv8RJ6N3{ zt|aGk9U@?J$noxk}xvGd; zYeFY>U+TjBt#cRV|G31i&aamRKbgwj%70QA~)wQcDQtbR$qePDRkBy`IfC{x5$lGeoi zi$jZF9i|W&0l`TGBPC@p8BC^t#8$j@OQW3#Q!>W37=rk>7Xl!o;m3*!pFI%%4hv{8 zho|gOuZ_we0|tf4)x0({aI)o5MLkL`R4`NU80vRw`(vN@1Q@IP$O-!f9n;6SG!v5I zd8r2F6TvCbvoOx^h6Ux}2Wb!t$-S?V0;%yG|0#Xv^)5`<(A^Q2Pe+EVtj;#B+;*Fe zURt5Mhjq1aq8u`q%2`>2&UrNuz*PU|5K9H}>%&r{5~!f>nmsv)hluLSM8)}c=yBwL zY-1={Eb^_bSF0*E=`zL?hrQy8N}xK&BGX;UF@_vRP>9#R_tqEl%5hVVstB+RG5x-V zUTP88nqQL`g-i63P)`OXOR@|i7_O~OC&tFNy{VYLVS4cyQW1@n4pwI+>!c_VhkE!` zAkx(oDIyl_FjvuTzA^0kOD6Y{v$K2zT&49PA z#V|p^B91$jndK@~;JHd9o1!H2 za!G3?2FTPsF~8+e+Gsf=Sh3tPgt6ymDXC)v7X*4J6bS@1W>tujJOPLvpUiW|imWxhh*ae6A5=o`9j7K|(#4Q;mgUY&`~S>3d2 zNg!RLvnn#nYb$w;Yzr15>`Q@#Ez;xN0+;^P3C$`-u4bbRo*(by_0))|_hhq6|WInrE^!YGJ6 zTDjIMt)VzLc+RmCYqT~0n1!uPaM~nLu`b#I?6b&FV%(gDXv%6?=<+)+-S5+zfi+_0 zaIWei@gPQ#bQ=bfQetQ(*YL*Z<0!aDH8ZVYO4-XoEqTrw-Vpcff{vtFo$srymYKxe zaDoP0QUMOm<0rM~Cj?-tAwb!8vm}hbLrA#5jbqj>h&($87V77i&}d_1hpXS636Z$) z1KA32)LoJr3sn?mcOWHGxy8y0A`s;o3; z`KaJv_5lS#@VElY5Bou&1H0;q+aQ09y2ENG`T7IRaLiB)5>zA>`lcv{mY@T-zF<~& z`+Hhue>NOs39S$9C5zueR;Sv1`sh`F9zjh0XY7TZ=1+NYt4jPDT9NzbmXL-NgQ0=} zSLuG~HW~N6gvpx424zOOVk|H1Uf{VUXIPYV*Ua{luF&_vK8y%Qh+dyqOLaRkF^r z^TkI9cf;^X^V{ZDb+=bb$*J$_8R(h@Pqq6Tt(JeU0=3M;p!8RLSZeT>yfJ!xc9~w@ z3g4U5-SIQ1d}eQd$B7PaVuOwMj=CQ(s~cSAsc=|+$L7<{t!OCyaGBeLB1TZ!mVUvq zyz_gziyAth9=6-EebjJ6JHJHx7RLH5_uA?7x%+LZFX?ni?ZcnG?3G~Ge!*R|X!^?U z-~~PWOm4*6*Q~6rV&#Q=f=bS>KI`*1<@OBHu`rXzBkjy~R6zM2J*_g?(oY+}bjmUf z!)x+~pvGr@kIj_<(T=0#No*X?z})wbog8xAz#IeSO^b|%Pwz-tMJAyG#jc+GF{t0I?gmc>r989sZ8Uq{Ftqv(!5Ct;1G&UhE`_9@}Kw36V1lV3}pMiHqsFM z)LPg%kayK)zo+-ET%^_+*bvgSKD7({1o~4qkoCg(C}i zw_tfY1neMt)Waj8zNQ6Uod3K-(-|XJx=TIFFs^+z@i}=tZamw=_@W#^RE5Zsu`cHA z6IX{QB7p`3sFI5MOBy>}@q?hnMB%4swk4^40SH!XwS<0LyZjapv1zZ`Sn}8a2-Zc< zGJw+amWmd55~E0=kRV$uD_*yqcF-1>HCA&$tl$=41VS01kx4374V@WEq9R+$o#z@A zGg2w_VeZi8L0#_8+vCT%(-C*y#kFD|Dj#GKTd|{zvW*vqmWD>Ix`v@%%WzwtS7>xL zRqa#X4M?_HI8EFn)1RYXZw@r`$q8M}%%gjJl*2*i=RL5DBiWVI=9(Isa}vksqYq8s z)lDDHb;k@PS-KSAoeilJ)|#4CfwjfBwj-s5fm`eIO6<6fu)ig~yJB6wN}^ZSRC!Cn zE-HRnH2$uv9X7Cn3!7HOaVoFo|J0!iwdFkGtN zZ>1xdNn##Ov-yOS>WVQWm91sdxW!UbIof>IqkG%u6Yf)^HPz-Xu<{ z1jp~9>}_~Tl}8;!${G|K5u5o{M>L{=LQaENG5RU667=Gz@5ciH}5@{HS|;%`aiaWZ#z4^Wx>z&Kjzv_d(l8Xcd=x-U*5TBpheCi5iosbx?VQx6 zw>^qw6I*sRs@w)FW?ZD;fE#&HY`j5E`(xp@?D3Fqj<}j=;R*G#S(c>x8;SaRaeF=GPCXW z_1fHFh1;0ft+TI>q+Diz7awM1TX1PB8>vB2MG)KJS4R}=q_FDAUYN7m+PL^Lm{D4y z;Ab=6(Q>DxXw8KdUFps6FbHm)Xcs)Z&bNaSs{CKk2@xhalX>Q*y#BtAR{NGd3S3$z zAiOj`=5U&dNlQv7Mo#laUT7m&a`fDDpwPr>(Ym@M(5kxQly_qDX;U+CSP-{_!C5i( z=y_$<+aB8pBF07N={LcOlUIVQr{N=FjhVeRdgUj2(C1bT(E`{!fWnuckYXvzJgNsk3DFh8uO?y^gQnUZ@0*7x?vCKy^ zHtuz6dMFIhj#egEECsaLP!C7er?X#lNvK%XZZCe)nYO;(qo|rXiwInk{ICZZFs{MI zDhaK5(Es7Tjyr2*Cu@b=J6;rgIjE+aQylH5xU&VLBUoWsUOcvjDSa!R{NrqA$wsFP zBwtE`Jy_U(XiM2&bdX+J#^(jU7S16Fw%$QPb+;lyTik-&LFJeJq{c4qhD@Z0W!kdj zKq{F;SZ~XVnpzLh_G*z+SK;i zkLhKQn5`(PHiBU8&)&yc&PQGPwMQ}0E7y(X^nV&~#=dJuv;hJD{L#g~D+cH*zefFc ziV-)lvoUdY^!P8$M5`*=t#QEkPE~EWblaZJx*u%>Hhir^Sp^zdWwp67SjrU(qFp|M0k6UiYu^{RN_?s@E2VH4zFM%tz~g7%9kKln5d5&)wR zez1f-oVxE__Ez_xYkzlPol*rNPR?_Mfam47=(z0J541~3bL?Pj!Rt}tm<|=75?7m` z7CP3YK{bi;h^m49CJP!qt$#p*@@WAg7>AhrPC<22=rvf3_!{+8U$S)Et^`dRU+3t7 z=a-W`q`v#~aBynv&DxGVP!~B#y|MT7cu@zOy@xvFXKzY_cSe;ZOH>s_rR2e)A~)`o zrJzdn+*GY~JbzzHj+Xek-4nynx)#rOP^Pda$DMt2g;4BWHJ?!y?8E|^pgT1vrlxZu z7D_aX>o5FS4y|^YSAQTVc{e~M-PgXw^#}|V!;wy%BrfM8J}hI9Mr%$5ZXDtoMGZn( zs2c=#!gJKRh16p$*=ElJl27W55y*NsuRr?zb6a{qW)}woc9TsSTzP)>l6|Wm>+sFR zBsngKU3shl3)-~jB+-8P5?laXZ_&?v?P(i>Ingq{57;SD^1QHi+mN24vc8~P-(cBz zx8K1q(^f)8k*SBJ<-F37g4nJRmY(D%Tbo9zdCTQ8!5WR9oCqwQ z{gh==?l@F`#2BR|=0Wjn0`gSkg5GXfcLPQ9r6LEHW0q^=RM}_)`HinDF9`iyuoq87 zV=zo2iRF{4*6wok*Eaji`~We+7Nfmb7}{!ZG-ma4fuEdwc1h&bk+jmxX{~))3W=@vS_s<34gNWG&9t4cnA!qvtj9vn?#7$f zC6CHJOyNCA{m9W%+d1`nd;ZoXFdKvo%(KEG#%)6>&p^Ba-Wjm z@g3Ok3+q1s|2x{A0000Ke}}e+iS2*;0_DkZ=}AgiNmT{MN&2rBa;4B)AE9`UNz7-? z(t(xaVZ#8y;r1;CbmL!MmcF)@l86ytOXGL*?X~?`v-5_ebpITCN;idE@atfI4)^cJ zuKOC1$nP zAuX3FHJBT2lFY@JRXh_kcXgT#PJ&<5CO-_+gtZ*zcwL}-$URaYn-iiU`&t?Bri1E^ zke&iUDmk{?SjEU=b@)iUQ*X=)%@Lb}V-=kO-oo0F~&T^vuD zzJaYR%1<}m<*+@1eM1daR;hD`%};g^rXnTsYLP~*Ijwej{ z#e_Sj#W6dmOqt!}h{uzPXh{1G<<^P;em4L@6->tbD6}Ka3@J~2c{;~arL~k^GlrAK z*}lKh)03}rl#oAqA6A|@wAMCO-gcS^pIH7H+mu>2G;+S*_jGc-+e3IE5W1-goJFVN zk7Z{%y>>mU;alf-W*tA&$KzglBYoVjb3GoWm698>phU0R7%1xNC>P`%3|7?WCZoy~(>TJnU&Q(l7Mpi9Ytwb6&B188l`XdDkooVyAB2PO}+^1`4beROf*^^>o_ZWy3XEB9o= z$h;#VZn>#IJnuq^l~wncsLEkW%)3INQV=?1k#G*#2mqcmoX(>}T8Re#9Ys`$73o?Y z(L!&D!m$l_eRnnEmnpn;2Mtc-I;nQ$Lu9dUqU7b+8UGj|Br@qy1 zIc^ac(U?&3IV0yNB^K~Vg^FR-VSr#Te_KU1b?z0{Sa9+bnV-6%Xy%W1jkKq?EGjp8 zlzR0`nyK26cNhtY7_2aY#593|ev#{Mf=@sZj!7op;!-{6lI-CYJX(jC6|KIlePHuv z$tUbQ%0@#nw&KE*r($OuQhY+U5}3^+uhpSje?s5Qt$%{}%;-9hV5<;WOGTT}su=9oTq`UqJAE8b^Y|H^OAKbsVal12jB zd`r-@j;-TGZC(4(LvRR^X5ZSt6Qm@a-KXl_&j4DhY&lZFIb4d^1ZWQQ60u_ zu(q_>s&M&LcMO;EIlGWH4-)v<)0Kx{qLi_9G`=$+if^(!Mr18gsj!NjhL9Jlj}_IQ zv5x7b-LL~+Ovh#;v=@9$j;^EQcX&>QJ~Q2K*XAAD;1ve{+p0+Z(9hqwFxSvOC5V64 z56zQ>QP!)mob@H`;6mopMAoh-{vfXZwbSUwj)F6F8)0>v|(swL8NnK~SX*^|(9V`^yT zYUjvZnYwFUd}DJ<n$P0JDe(Z~LTTdliE@+RY{x~s=2 z3DiTTAHMHDX`Y$eX)hxX0DwP+?B7is@t4i!{5umT>1^U?;B4V)B4c4|V&JH3XYFd@ z_}`Z9{}eMks>39tvbp>a#SgjwYH8L)mqHeCjRb`PLE%hDQz#mX)O|d4lNgDZEB2p3 zS8UH}$x0VK;H1$y&P#y`7(}hZlYwPk$;$x(Ce2*5WANSHnZUkUu0*+&z)m)Cr(xv$Hx6HW~0n3>w`VoDY8T(O{;+Z(KpM7W8bg4MKK! znyKCA|Jgl_AJumTqyy-ttob^NNJRXc0g&C0-anSHta_mi`Z;eMqeaVfEatH)+q&3@ z6sX(Vp>`^Kmb_P_3@o+kujHdm^uLb!0{Lrpi83`!{mo{Nl=4*YDuc;1E*>?%Y zOFlZrKCMCM!&&so^A{${DaPH-$P}Im*LQ1tBk=_@i!JTVROn`hkYYC^jtkwxM;vSA zuu2>9r0#?MPNC8fB6m0T#gQLz*t8VLv%x-w`g9a3$4yOB4;I7`6NWqd92G&Ugmk1< zQKl#8Aj*?*Pf0{W_?Ya;ZzI&Izn6zPv#?bn_9Q(oDgzj@=cCNMQmmmAorIT=JZVy( zGsYa?29PWVJ8EvgBl%u}K^tIEb0TK3NJ}n=ZA`Y#mE8s-i9mH>L7=2q8zrr=2#wA| zO@RYuemYPl3Zh(~fXOCeJIAh3_VcgO^jVrz#PT0w?{^t_|n* z7Fhu&b`gF%6@8}S!J+s%@d93=OaCMC-A%p+x8P$!+g^s3&?@iebv5|OKg&VNKwp+^ zzrwLUX#YF(mS6v+`#b0*>|C5o%&B$@&pgX9Nfp3wbHt$Co`iPK4lkA#=E3{kOEUP9TD|*`k(IT0yZ_gjX!-Hhd4F`2E}ag z2#dx8Cx_RJB7yIyF-)=Q^|^o4qR+MFcf~>E>$)eip9Zb#*o?-`Y@icDyu%>baqqx5csqwnzrKoVS--btJ>OT~WjGh1Py674@{fXr(-XPrpO-odet=C+ z)cMTrIaf2Dx3|e}nKqr`&USYmG(QwzYx&K<%E+pJ+Cm|EXwdndTo2yye#eDpU+Pwb zlb!n=!~Z9WXB0J%`g1}5BaVNUjrCV60OQ}uM)*rIHg?8eGw|%~9G(A5IU)a#kH|{Z z)3K1UDu$ggAc*#tY1; zU2>UvjdO&hiF8ivRHMq)~s6(Wcb`aTk%1;YA6 zj|~`kv&Bj${R8(uPJ&rA{ZA;ItDcL0kZYUD-W0j8)Yi5}{|Nu|?Ba2MW#I^hUUC(I z-W@fMTc7qTuko2Ti~QDnye-eUQ$Y_ULp|S0^*PmEEWKgMQsl~Q*wmaWceV?; zfVVrOqSDqneIYgRlPvLVo%!riMHCouG(%9#>)6B7u!g=$H5f@s~I47;&E{9UUM6yWxc9juS2%i;~qn8f;m^c|IU(&4E5@g)+a0!eZQfuh+vNaYu0N$5!3Acg3mVn5u($sOB)7u2GCiDCe|xF*1KIT<0;JKI_+YEVXX z`?7t1^d2j?{ev&t_?(7wen)fyF}ttW^|#SBKTN~UooWnTzBPp0p79;pc8(oo3y-wV z-T||amEu9A+BpaMD%FF1Wcg zH49%Zk<=jeOhSvN^FC{0QBNGvQYCBp1tzGvA#r4?F-{gTxZF=ey`fK= zoZKU=a#-GyJGULTw{2bqFt%35c?nPf8?;S$GN7rBkuNA56fKoLVb_p#iO5&W^$}i0 z(Y=nZag1QeHTCnuwDt|65r-%-+@%krAk+w^#Ujm2jp2vQ3U312J=j;QN~&wk?zTEK z|n%NWmSEN|h+n@oRsp)ujKGf^V9u ze!72iaC&a);8c_I&6dwZJV}V^jXW~KA|J?tQ8RuO&TMdJ&tqA$$1o0*9YsG0aXYktVr_CBNcVn!2% zBPM`VlEwFn*3uLZoJ2IrV^I`Oa}hFUOMCpF#SAaa0$?R|%N;cb%h&1c{BaJp=>?_v zDRMfpY^M@hwM%kg?$%#px^Z~AN>u2@=`y*XlbE?e?KGQ)IZryTywMspOj7AF7w{s3 z*wpwfsbWD2zgy}+Jm%=dLT~ReVbzh7Qj=L%oj~FIz~=R4550XfDEyRmIJSkdlefG z1I72V$x3ffd$GI&6?kEH3R5%_1I^bwF>^$dB(fI*#9t=Q@8{`l0Ea3PkFu7r0S@;| z(oC&il;WQK$cM|kGE6_a%K+?}Mb&fILR{BU6Yxv-^ZNMb)sE?$lsR=e>v zZ)t@?^|k3Svx9li77MSt>FW*b)s$@NxN$Ln$|mhr>EL`1}bJ(dYYiOqSrf59LA$MC#FX24i%BRQqM5@^7&}@giK9RrWI|}YV zhQY#A;8Sv6@@sLlVu9bfTom1r61p|;98V$q%4-xIm55ri>2rmnk0dneaI3@*xS3N) z>=qPcXk4q|JI;%_AgfY^l;0#&(fD7h2p1UH!aVp+b<8H^otDS9X{W$~baht}6q6%2 z!*T};+fKJ9_HliG@o)Z)sp89B*M%GMgK;Gcq-rMuHELv_wX9(lY5>mVn&PIf3Zi#x z8DA@r^(_v{z`z@5oZ0WVQCqVZJ}FZCk@xGD9e!ih&$jFL5p!=x4`v=tFN|E+DSAHG zDX=zcX2^AiUu)(v0YnpX}Gi)a!hUE3Z%wWN;zRT zw}rl)(Oph9DkyxP#Rlh03fOmC5m$k7sKB7jey3E*L|Ci|@*=H&l;YilarK&5g0|Dk zKy5)E#SP_Uqo!f6TjhRwp3sj|ut0gCY@m1-)%S{&!%BakBD{_N00XnzoJF6XY-`L{ zTw|FWx*kui+-4x?CHCg&ss&f{$}cCWcahF6GbcNrUs}i2cX85%>QzhY?@Ty)8RSz^ z@%rVvc8pzdwI8ruN|lnHo@RY=@XRl-)k1pMG30&N{K+-CaBVqmJaR6oRO0k0` zfviJOaQl)Ov8qWG1+~pkisKxn$`?i;ZCK;-g9+uyYK+a&TW`Y#YviNc_nO$}F0jws zIBL*FxjxKNCT$g9v9uEv3cPwh*#|2RD>;Z|nRi#Cjj4SkXYAc%=H5sBF+?4fNPyYf zrXjUgoT);ni1QU7GQf9YL)z$0(rnu3h15$6nqtaABNXl%UDxiJ-bBIutboys#?S+Uy^ZX;3t=cMUn5;h)cB z^0C|&cQaD?yRZlC^ea^b>k^{hlL%NPAQcNmSgaIf35uaG)v<0LWh<+QlKRPqI@t)Zhe*P77mem{WIP?fD4;!?V^7yyt| z^ckK4B)wCWI~3!klSw^=hQ`aT36e$1LlIo(SZV))n5DdfjgGTolU3?YlO2el;^FIy zx3epkMQDt9|Ml|W+9n9~*|agsLLzgGPe1Pm_$P{gmBr)1{mS_Ku|WTBn~48D7cXjI zW@7ta!TbL!7cV(ME%zrG4-JA&f)*h1bpUV(QzJ}w?605v^Rxecpv|u^g#PcY6<^tP z3#Y#{l|D*iwqGSj?Wfde4?kp;YL99t936fy`mbZe2Neha1R<#-8AYHxeNRMtf25-% zcYq>6AJdsUqcIC}T6P{4E@T1n0pA8%20JJdbpivbw`{8(x`VEpQ-)ZE*8(Yu9EE&T zu!oCwab}^wfmkP6z)YT#z0h4fvJ6g7hWJ)_nivziK)VPS7&1-h;?g1CdR$%GmApuF zy;L(>7W$)X#yyxDEO%KPEHad={QT-lM3dfto(BV4fC@jW%upa*>rC|s!pVIX^Q{)q z(x6*Skm3ac1ThcV;Az~0UyAuuOOBVb)IkkJc>yDQZ**tvZOD~%lVF;5!W^F2;`UzineK#g{7@cCmx7)O)))dfsUMVCk_GSS z_kc&^^nej-AitdBZ=Ns_0EYvc1r$#skiQZ7RyYJO!+Kh)&nu&_d;kSfS#I3hq}s)Y zsf6|B^@~Ushbt`7pEv7VV_^7Avtu<_ZXk1j8QFqn7~tz+OpZ9C^OA6Y;@^S87A2kU zz@SV!kZF6{`iiw^v+iX=GX^#olH!}%CLe|`Q7(9=RRM82m+J(O3k^UCL7a%c! zLMY`dDVW^`9tbecPCiDuq&#HFE!y4+-RTG#>tiT~xrr511U7z7hfD_Xxc-!jwefHm zUh}s3RR4aE3?L&Z$0`8mM{WQ4k0eiFA_URC{P!Q>{ktS}z6knD|E*x)Xl&tR_m`p! zQT}S}Vu0~^R7W@-TXbEl9x|X{s9#5;(G21kV8|077^|;TO@RrwobmCY}jyfSa}q>OQ344Y1l)ax<3~44l!Ge@yGN_jLpc?lUJL%nQ}O#(w7bo5xdWk!BYtSX-AslB0}8<1vM|z?G5a7mhU2UsLdj}!aMr#s z0@fh^e#Q55m?We=u7#AvZqd%**$0rD%AJ|-oM*3wki#jAFG;?dJpwi1GlzVP3#Dp} zGqYfZ?KRjs?Uu>2JcXKD&Ou*UV_XoSy-F#>0 zx5kgkJMlj@Rc}}vTIfr_e`Naa0>=H4_FvXgC_5XAm^irnMg7gC-Rjr1ZStE#ffA^V z$(*IoYQKV}1R+va@wCl)>aZkTIJ=Qq3~&F(i>|-R97*S%z4Bo2*4+eD<~*3|mklO${vGB5*x)VJS;?htX-z0z$5dQScz3w%81U)S`by*^ zpwR?4Dw7MB9Glri={2O}a&negE?nxh)10%G1)9xLJLk?=zTR+&`<^fD5Q!d#5fSyl zkuF5j={I{_*cg%PUC$Il_;^F&;Z9!FdbSBBZRRgTc@szkHQl0aM%QgBB@f~rKwbQTcK_r zb&RmN1*#H6k$cAE8^MAihTkMzI!+h|U*?0#di-G7*mi4_YpSe_aNiH+7KzGR&keH2 zcH}`;Cx3*$|I-gkL7`K5_LUF(Bc*>AS=3k6BE#P~ZUqBnXA6zLG?K|GYqq;=2wz4L zCM(r-DLH}<%)*~2mCb*SbrCKD2oOdJOLOk4sYS^lOZ2lNED5KoN!GtpBWL^f;rNJ? z7VAza+C;G3PaOj7xn%3*af$d8S>#3>zvG=qmHfJAv_r8yk2J3=_$;8WPhv^^lMNg_ z`gt}KWoxOTwrcx$QkyoX=E20KK+4BK`O>WlQJ32G^H zBzN16t7NulGk3V~@-Vl*{$}~Uwg-ZS z(fcX}VIs9|gfvHLdj8zYmE&9a@N2w~=`!f(O{txVg@HkCo~vxnnsCULwh>Ai7+-;)6R@R9ZAOzkDt zX>V(TYSoJT_bZ61ZI}EM!HY+>rjY{;$snT}X?{qYpad?n+#*By0mzn*+g3z*|T>F0KvFo=F~sT z6#My-7Aq8mQBBqWoq=6_R#835bC+Qm?RxW%K(;Ff2+eJpFfbYrwT}oj$myxRv#MC` z^S;jQz4s9m)Gm*DcNQqmKez~1EsP&Fw+|Zb#kTFnt@wqsW>sy#xjcUwu6HOeth1l{ zn6(j9w%aE^0ob-Rn&=op{zRyG@o`;#7lve$_=E$H%}T^KIPhiw!+Ct@J9B9IWrz+q zYec{8U!ZHY@z7qm_i93rI*?C_Ljs8%&rCger} zzF%}TYXAv3a^S+KVac$JP=jqb)-A*ndr`L*oM2 zWfcdN9mBvJ-b}E{YAxZ6A}hn6O8%Y1`SBX!Z>v33n+{6m17eKy4sXxgkGn>LTc)JA zDoTXYtB$8VDh$c2C-U8bBcA*07+nl}oPe>i<;~(;6f{k-z=L^ADUDbypua3hc!)W2 zoLilct-~4EfVO*=$yOcm-MeRl*tgUrv}|?@)|=DQ$xBgUZ*CPRG<%b26uE<4z`oT^ zVd|*uX5}nJuwn=~OhAk7=B;SAlgG63 zoJ+4^CC-kjsIg|?NJvJL&}?~Qd#@QkEEMI#{YGCrwsODsVA=Y{$5CK3+6@RsIr9T5 zDQJ6H1Lp#GGKD6P#=Ue|giDWN+{gS!^RAk-Zku%j{k4ni2=jwAyoGyP7i~7WN`ZPD zsp>02@|cE{f)g7?^{x>H08St8fRZ+{)^I5faDfQ0kpWvw*G*}vCGzi|Vy zGxSz^A|lyW-XR+(*=v~5nV{9py{QH^YTY+qa$a9r?t5n!ec*rN#&UMT-r>JK3Qj*j-sw-sf!#AQDAZcKBkj^h#l&Z$S;ieIU`tnF zrGpk@6}gLTyE8Gpj~1`G6#{eM!tv*1!EO5aLkfc?`fC{t1p42G0%_L4dMB((r7S!c z0w;yi$X4S(st|ZHHbw%sDew|KZoxjGS@5j2xCcBjv37lxPAqN)OG(0o?3Lj55(Uj! zr}e1Hs_(JvHSQJrlRD)^gA-;q)k5Kk25U%dDovVd4%yoQeNDtv$&vIl2RX>U@8lo5 zwO!|8ZXAJR{%PyMhH*Bg1zmKnCp)-wdvkDW!-?mUjkRJ`b;{i`48LTBW>c}8)Hyr9(cF6TR%qWe;6hA&W7nl;E!9D zIciFyK5rAk0Kjbrm|9jq@>*v!h~>YwWXMND6lJedI8$O#E4vif;R54Th@LM%d0L?< zpjmfXsN&}=xF&n=B$5A=iNUYahQ3d-+I>aO-`O*%E8 z={g2PHX};OU=*_iAxjY&1wrQwkvk^J7Y264(l9-)KHDWCWHp1%L?^yBJr$ZJVP@3% zt$xmW?KU8hbGD0i>2PH1nNAS>)OvoWltBK(8;!j5!I`g(?gISPoc8?rmrsz1`BJFG zoDB@3#@wE9ID}xQ0wp4(IJD+xX|L|^n@6gAeo>$9ZhPAKXY~Oi65zMo{T0Nf?=P^@ z719Bn5Ppw`c7Jdwp4v00{=(%C6#ow{Ac4uMUrC*RK8#`j0OWt?Y5s2?WBvc#F1F5N z&4jx2XUHwt^QMRBGExj`9I}J`M;uH2X1DUtr%VfgyYcSH1=C2*rKKa@AeRL#d zdV7m;eSN&ytNaM&{09S|!+VbmWB4!RMyLnFUkXqcR7 z4#cB=V;0%qU>R2f0BQ;tu$l0XSYaXN4)wbha5x`Gj$4b=xbC2KQz%|0%JUGS-9zRM z%?I%F5wnn$bHHuXYvt&yZf)0sa%fj;jhVCfI-+$>2yh0CeGH%J$-f-D4$5DF8GrMp ztltS%jFNtlE|oKMLhB$@90wMpg`fb?5~_u036sx39)iFnjoDv@S-hoX2Xx?#6)IoY zC$u81*=_Wc6FH>I9F*Kz#y3CeD;n0|MMpuBjO{SXSkKh^xyCv{=5Za!BfTjtB)(+W zyh30c1k4z|SBK5dxao>!GCVO^^!kB)73oprUucR-u+zxTSjF|(oKrF&B|f~ueWUH9 zOo)j==(RtmmryADv_#Tny@MO&=uf6^YK!V%I?*aB(2rDOdDJI^q%V9~Y8PaLvF_SN z8*CxV?-G`*^)cmFzXW0N@X{1yyV;Hh%TE{{3^0j@{z?po4-rj-Hdwvu9jF0OA!fh9 zJg?QWESTN#@jS6l>~aDeVav##%Y`xVlBj4#u}ud~44C<}Mlf1)&+q!WyRzlUvfi(R zGhzxngu6r<+23Rs_KJAsxx8BKv)731t$mc(4$^p<74JuiGJnRP{Q@&rzk1g<_*T<$)cB@ZXczJKmfe;HIDY}I%4ofc&9Tx(02T|0^G~&0q;PIP#*D@ z#}nv|`Yyb%_ z9*R#dKya%=`FSD%U}8YEzldcqF%8(VkhOH`RH?N0Nex9F8Z!ju6Ue?SPj@4|O6MTy z0@l|10#=Ij`#zr}Q3_F{A$Am5R4_#&$Er7oMeF!>na2q55>vLiV}ND~H&XC7b{;%jCjgm|3$^ z=5-yzd0nmy6SxwkWy~#Mh&^UUXp!Jh8WYUfgr~#r!7u`N-*-WIqDtwNa59mH(~b2Q z%+NrAyF+k-Q_Yvm$$&U*@velWH;ouL4T+e)595*fL67HHqcIz#^iHe&1`h-F?DgIWOIf@OyCk15-4y2i!^b5hG)t~RLkPxj1a*{ z9vMxJiyM}kmLHuLjXMUp>xP1(K}X*aJadP_)NEFvb=-eS#UCzpkS7=dg%xb9AMzG4 zNPGrn5=CZDsRmyflGQPSdX*t{gt?_7mb*Zoclr$;KRwaaSb+L1^VZlxL;BDz=KW%! zTsdAONQTf!m778K=+|Hx1OTdj(9Qb(QL&Y)=|S~o`s9P$gM0`q7-2|%s*cc2QJR7A z<#SK(Avo91smu)3;>Iw&5tB!=(W~yoSwaIRy!+z>(LL|wbSRf^?~EYOeO%pYWZ#h; zM8<{r3mgr}LAogflv{vn7%Yu?Ateeequ&`>3P}X|WEa48hNBTn>V9CI`?N^U?}keL zU#(pUIFxPoA4>`CkxD2J_7~@IibZRSqt_SRzy0CJeYL)pcV4b5Ga6T1qL+R*FYM9~X2h5( z1DlEd_M^;VMl8>e{2@^@L8F*dSQ3-@LS^loBSwu^toKj;n%>7UdD-FdcRe>$f0TT` z!BFCg@*o@K$rkgpqpKbJuht(XrlH2veHy%A@y=_??I{MUf(z7&T*ggaq}n$^RB!vV z>C-kC)4#~nQO>{kHQM~zl6(EU_6~i2X>?LjaKN^`yVGF&bu%|ry9;Rv3+}Q*J)JA{H7{@fW?opYc2J^d^LD%2WdF9j zU9K#LQHjqUl76^;3b++@cvHa~ziRcz`D;GE-!#(X%9R$%b#V!=;JdfKTa>M09yoem zIo-r>lj+748pGuDl!s1_i+XG2Cs$+i_KY9opn1Mez(()V z@nfG~`tiXw&g{HQf(=X0v~Tjg6*ms}ktQ%jpJ@z<-{N)gj<`suJR>A`rj=w}+=Wt` z1BIz$ExkZw8X{R>4cQ|RfQo%m@yz*I% zn)DIr@5_siWLVf1AxnRGUG<;Bu`QEmTR zt6;x0G4&1Pg87qbA~sBzD`8WW@rXWsbuz_=!Q5Y#x6N+|lf~L#ys~6W?Ff_0^Q;<_ zHBwEN)LGBzY)}4rpq&v-alJ5P&9fT{jaJ$xOfp`pJ#Qly^_i~__+iV``zljAA4Y_W zUorDgv;AzCZxv-Ib}!5AYgNk4+NZAf!w)uS~vZd3qL3B`C`BD;TUoM0><&&;a*#{eMfJZHF~CW(_@7g ztM#wv4dtv{n{On0F=3Cv9C7R2JIz?r#C`fly^}v(Io8J9Lq>U3-uc-zrbff!9_MY8 zd!Fxp$lEHYW9ELlQT=M~4i+DgIdX=$hTFj!s`tX3(l_7Ssq$L7RAr~t!E@^UYG+Nl zTr4?K=UIXC?GAOFIf>KCik2U&WFLGk@8`4fd;X-`I*GI9xwE3Gx7Y?wZ5>1&ywZ8z zs)@_D|2Su?6nQMWX4_lD>zeD{2l|uee&` zoicsOjQ&;+PwSfv=>LiSTt}(%qCac?)g_~@Sx&OKc=tx%op+ZM10FmM^dVr#xjXBu z+aBw)?wootwjgb*$$^<_k*3WSs(a|N?+(A}Fb)vazUKB}TV|?wbbm%da?~e!f2Gye z78u+<@O+`}j?t@Gjg9QfXMYYH8gE}6@ZMkYQF29Q&3P5kLwZ{VYFS&xpC6m=BSNeB zxpt;j=w+W1^ghd}ZE{W(22%ZY>_2F*Fr2ZosCD!i)ANl5p;{s9*3YFi_QG?V9Y}w`B`b3`b?Jj6Hwg zQEIAqq**+@RBes4`-MXi@n^y=JqvpB*dlaLNU7?Thq;wSG6N=V5nny&YrwX7^P)dV z9??D5WXjfXOX8ew(pgwMqjT7Eo6fKqDJLQy@6rg=fNwTTzO3(M{d3$9r8n7e5^1DU z3XiqYZtu89TX_8Bkr3C$C4C&t>|!sMl)8_-RlmF9dA+*w{9Efc&Kr_+Gs zGHRURNLFC}Pge15hr(eiGlv;JuQ)RDjd@h{19&oK&*v2MY;}_cv6w%6|8I_eDAN z-0iFiJ@X{W!mM-8!p3~kYj4T?X}dvTFmq^{#>^8Db(VdH*h{8PUp8#gO_4Pc&x+|E zo0_RD*TdJV<>+&ajhL^F4v4Od^4mOW>9bWTZgDwfV+OL9r_b4tcPi=r%qZEh{bbY{ zwumPNG|CNXL!u2 z58ZJu>sQ+O8>h&h{kU;;;Ex%063$P4*-qR`Ez-TXH>9ID zbe~(JuKI)dpQV1PfAezJA6XY-H|14v`_uMoAEcg47(D4o>@I!A3(u$DTV{zr+w#is z>9(0nqr#boKeC*9gl1Wv2LaHtV7#>*oHQ{2vCqpI9 zL^^Vm8y#=Id{Vq!^P9Cv)?B^e-&XaXzo$tm(*H@*HTUg|t)eD&^FB*HxpnuUEN9$Y zr#NTNZDaTKk+{O#Gs*i>u*1*#u_to+#~1fGEU|0VsuRWb$Im%Wc9k;>y|pc>W>RON zS5Q=XaEwpismJy`DO@^@x&F|3Wuv8|b`2~J_+j_r?i7-8mE(oWr0TH+9kV>`mMe7{ zzgFc~X}ZaeoLyeT*_--ZddKpv`r|=ztE<1V9D8lZAP2ceV#Br zoN8Hl$9ls46h}tHtY1}|cI#A>Paf_ixA}&B%8S)nO#hR*KFfdfJF{gS;~wj2gF=I( z`8Stw$vL6hPUx4jwWB9)O?}YrXF08AnPtbfoh2J@fqnW>bezhbP!-Y#emh&SuK1y0t$J-PrL{m!0g9 zDIIHj;pdedGNt$I*)q0kGHmYN+wkp5r`QA0y}C<78#YvqUw>QD*ETsM?*4d7=7g)i zY~5d`DMVe*lk%8x4ZRmrZnE<%w2M6*KPTPds&hn&u|!`o2oqxHeYSvoO!sR zVe?^m=dT*aFPsjWrJ3HeYJ1(z^DD_&^FIdPhgzqMVVKfu1?S7x6tyo*8}GPq%Wm<* z2kc(j`b_=?PXKQeUfrvFKdorfp0&@Tw>pgX}))KKSTFSzWmbNa^2QnX%lXJrMjQpX8Ooyz+U^2X?JtK z`erCCk(>DSlIVg;|BrJ%`NoI3l>Q9N;Z8)|EI+el6O2hls(!-jfk&WPh_Qjj+>sIj zPYR>p6H}}>?o*Nfs0?n&b+xaWER+8D`y?&epi;BW0Xi%6?iLn0DxI@cn_u3?Y=YyO zi_IyYk9?c#Z+_2R@$Iyxt!+bZ9sQJ?pYO)_xZ_iG`PBA?_`>=3PtsrhSn#bhc=IS# zOBo4rU`h76ISU6}360)w5OAaP@t|$N8>jYTn0d@^Ka`Q1T9~n~W|%ui%U-ph_+5E{ zL*dD^h{%)r^1B~|&uHHD&{9DoJMi<$NYa9Gn-@ckW)HDdn$zcL!j>iSTr;d!rWoF8UbuK>I63iXB;}V`ms`aJ8i0L z1BDxwiF=0mZiBf)jPQ|*H+dK>D>U04c&$`oSe1?Ho)d6s2$ggVuMvt$i!W$+Js78u zw(h>?Qk`Wh3QMiR*?Yw=Dy}+iQpDN4>wqXFNIC6#bwHt#S6Zx^Nt~FerQ6}WNuBF9 zEstMg*O8mznPw+70_phI5N+<$CU$I@x-RA2?TySSOH^XFuUKkh#GuWN%d%Tu_(7er zmDyUU?T&Q(Hy2?kH~!9YQn}k_>_|-yvgcj-QJIO3iw~u)wVDN2hD9tBkEtImweq(;2re2X zSKysR36?4Ue%q(&Q@Zr9OS@h^kQpdBa!1(43x^ut_IF(JDA!}Dfp6vO$SNoLd;;i73S*yGcts3Gw{DGa6WQ3;JwLN|2%AI_| ze0gQbD>bVP5#N`Ks8w{?nLd)bnm*;{Y6ws~JI7}h%K_(rXrkIeUtFi$Z43R=je><054NQ27rXY<#a_D5qaQ1#a_SA0w1btO`iiT~x&3z8 zPsxgpQ>KO*sf?~2qgT1vYO{IKfVG-ZVrHH;$yQ-ABw4Y#VlhJd*P;@|?UVc2`#?pA2_n9swnm@)q=qmVHL{)?<(OziX zz&IewjzVSl(f_4G$$al`3mx@Bns3gQD52LE!UNnllaU9w!xf@dshH3=M2f8nj99$CruMGF^=2QBG7IM&jhm~o+`rI_ z)e1$t#ch9#5FfdH;Et>5L499eDKCApG4-B>!Kf8Qx>E6zGB_w z2i5j-8s32?hKJMW(hVgguV-^AQdQ@STXgZjhl(Zj_Y~AWXwz%ej_puj4BI?FchwZr z%spvI6X)cA_}uV(H%roQQHtWh8++EDdog>&Dmzz=;eBpvkS3}f{-D??vuuj3{JX{V zr(R~>Z1`lNR5CvEW0T#%@&QX4CMwz29J!rX|K-M%$9GQbdT-HR>Cuz-COhgI%c@mo zJ^j%7Yue|IUC!5QKRi1%QLN*s?Woc2ZxnBi&I!Acxl`&(zhB9t{6vj|ne8KLBbOv+ zuBY7>y?^@5$wg1Tj#GCY@Uv?!Tc3=38YECTM7e~k9nvwRf!TM>qET54?#u80^j`Br zpd~2z`u<}DF1bf+=p)%HO7x>1)UDEP)bRf7=l{K-Ue(@e-Kc}UXIk`Is>f)bK5bnN zu75ew8k!ERp~WkBt)Yv!t)bt|B9aFTY_XDD%0XH~rz5SQb9t?yZ)b_#8r>QhGr0fL zaQ%cqQEaJ3#lzJeUq-8{h?FFWDHa@o!Rn8;jg1@nb3)~?OKX;?dfq8}eRukr>NQd! zV`VQpB&QgiySX6r-jQpU>Wr@#XPjcmzM0l1S?qeXxvKt# zI!Rm0as4FLMqQP-*5XAE2)(#`_3BZ9ryiwiu(DZGZko(f>4-TZz4*hqKBYYuE*U*O&DDEIlzh}y+f!)r`# z7S@tq7hdu{_UzQJtSgllf@E`Rl&6i%Fr*C5X^738zrSx*+1LR)f;)UOORvVYdbDn; zo^5^R>)W7Q&(83p*JvHPMd#nVSGQ0MIV0CIwL0E{dqcEIxSnM|Z!*SE(%r??jlVVY zKQt}beLlP$?b5W@J_|BK&y5?k+U0&l!Mf=XGrCarllt?~ z!PHm9uCoWf5xID+X7qIRSW4>Je)jHT=Z(65-bicB4A+GAzDbMM+>X(zUjaqi!iHJr zzRXwiR-xpN4_?|{^JIGBg(t0IBM_QRs$*O)a{mkkC>XQsx*9Mc~z7j@`RuJyP-JTBsF_} zbevuKp`xr&ZD+qr&o{hjTsI}z*=J#b)Qo;1j?FvzB{NDM$L^BSEbqT)b6v}e70FJ^ z!pzRPT8*f3^Y~Vfo^91!8t)-%G{#`BFQjZ61lsZ5=c+F#I$`9?x?B?aSXY6y`c%l7X z-!D1)0*2g^T(S3ct0AJ@Q-_vX_< zid;v=v&n;(w0)I5^wLZ{!)toLc@dE}%IWJ0=a(j!Iq8n|nHFN_Y^bg zGOa&d`F>@6`l2Sgc(t`w3+~%kFRF6@63J`+J_PXIbT~SUIWsZOOz12j<(9hCTZ1F@Cw%{$r~B8jZdU6Pa32 zpBG+byR-lGM>bo==X!-5n0;qLs2!D4rdj6_zle&n-)BGwoVXn)vdeRSs5K}ADHENfOm6f8qadFoSepNJa$ zMZut{7wZF#uJNf3p8wJ;UgsgaJ$iGwKJ($nNVO#c= z*DEFDn^O6$=b9B$6SR-mDk|nIU2~}a!n#_rx~%9a?||tWhVD9OmfW}hnv&o%6<^XW zzEY11oqOKIZTo>M;j1+k*Ur|RqATs-Y4dZ<107wRH}x^c+f>`0zI#@sGVhFuG2M6T zQ`POCvbX&5|6IbJ#C}oj@%d5Guv6O#kK`5>cCr?QR=ZTd1he59{f-sa?{ z$J@F^7Bg(-XfCK49rT=R(^RUFYCS~Vp!QDMz2yu0p6MFsRH+9O+s>NQJvyp%sN~g3 zrxm5T&#p9cG#qoObAs9WyS|1dtlsbCdwT!w%o9oRiOEMdG(OIyO4ZIBSiKxd`g?xm zPg(Kc>ABe^cDb!D#D^{#_Qg?rEj-6JRb0KIA7^}`{Kji%Flx3{o|5&8E3a~uQqOyiG`(HteNM+y1HRXgO|GwLc(BuNZ6 zNiM+FY0rHS0A$GhUjX`%`jMWp*Ls$}Ph8Uue-#s~T#*le!`>_$pldl=5mYTY_r>ib zSj<#xSa)|X>Nf{uI0gz9$|$TafR2(AcQI5(cmO?6tLtC*@$|9b)%I-*sDi(FHyn?M zkK+9}>uDIiw#)4GNDWqfRkXcNVh5P$6K z(HY@UT-+{I!6DsX>DwEP0I&^u#nIAb!G93~8Ub@aS+?N;3;{eHY>SL)s+F?`yfe^j zi_`~rKMq?_S}0xsJse)}MbN_iY2j2lO>mhQH?=U>@l`8eO#}HNwJqL{!+tVAC@gp7 zzc-cUFQB{z*p}$^` ztWTFj8jeD3l@mZU52Azz(i|9pzfIyVU+?%Y@5ztRNuDrC03(_OpS<)948`R@pMe8C zGS1eoY9NX9QiFSw)FZvbzhZRB)R#qzV)=$qm?1P~7$pL*wWtvhT}#vepX&N=F(UB6 ziO$oPgS}ZP3%Z(9Mt@r(AG`pl6E;xCBTDI#A~2B{v}QbN?@n0#4OGbW8L~`_h+4{5 z4tyC*B5ek3LGl^ikHa>w`5PkNGW{6v`W++;;*J8F+n0cWXKp(;%85I7$ zIRf|&w&s>j?v}qd5`(TjNMG~&g#xm&A$$m((7V_6~)e%eD>M4=6h5rW2|hruXV{4nvY8oF;~;p3SeB+^(EOyoi# zFkI>R(^y?qN&IkyeHSeXh7g4c{vUmmUt9B6IGzmowHxD}Nz~78Ukc~VSvUbkpq95M zPY7O@Vc}oZ(0*4d>C;K1n;!+wnYCMlprD25OAm`cJ4lRc>$q4|y$R$f2g6;^8p68& zS5*9q8y_-PF&QEuB~V1PON@Cb1SWt21yCQ ze4)3c8{n&HO8MwiG?pLbVZaz02d54 z*t-c%PXkx*S||a=I|>1$M?}!@OE0TNM}0oDMr8pA^4%`pkHd~%AOz$OohKm3PmERM zCxG)^L=e)JB?OXd)6^Jbcsn>QkSP9DKH59mr4hVx8<+t4VA~um1d^*GTxW$tL&%p- zM1+7QvcZR-ql4x|At(YGf*Wqv;q&#U;hTu3M#In()Yerl5(3v_)A;3gvEv8(0ziEQ zD0I@>k|_i#f)NE@JA$WFxeo25r%2Y?sR zo+-F>r*Hoi5b{tWSUY!~*UthoI|pYPdU1x$La=%?vip?5y>BM_%``4TcpwIV= z^-BTU?{5$Q!(9;J@a56CnA{eSDhWW*?pq@5FY5wOUv8Gbl_HKaNyBoJ?jTU35;)=c zFJB7S3zqyH4ZTDhrv|Uwwtw)A#O>fhCP5^_UzjRjH)j0>wp*ZG+vsTnu;wR#^3A>Ht^BUK{n%E99_UcmD;kXB!FNg;hrHNFF>+>PTV$2o)aiwuQ`qbm%xh8+I@2O0k{zO!+)jCVZXa7 zfb3>Tws7QD(lOe`52!#VeT)t8(k7AYmkS2Y-qZDmnqF z&kR!WSFm|eFbQ-~o%vG$Nk|Cl_irF%R|K6Vf4tjCt^B+?8%56xlgi2M_*J8SQO_YGh&!sua?K;*)gulizw?cycw zf^7OR5N|dV9?^IBwuAmjh9?CE?`8qfB4cd8(P_rwdm+8hh8mqdN(u?G{{;R+3aF)H zWRMc%(RmuQ3p{Jr_)|kr=M)t6EcIvuWLDoP0-|K%4 zT0k+aHef@|JT(&Sm^kd`t6U#V?fR%iDjjg5Mi}P??F1%BkE7hx1?qCW3E9##8cs9CnM9_@Qxlr&|K7|9H^>e|`=g#JVE zeFK?ve_!tXD@9)`!atx(5fMIS*!buw8GSJag-9DuBF#kcseqSH|1g7p@!>`!2%Blx z*pQxWR=zAkA{_?TfR;|KO0U_(hlT!@j?sVfL3B~@WZ*9bc9P#r5X$Fw=z!~7KsDHs~rsQm*f3i=FsM2(@f0l{13E!OV?bfA>L4L`as<(t93@nYz-Sd{;n z{oevbLRE+~p&YF#XbhuLUt_1d6om^N4CVLE@l+2py((2#10O zw=f79xE>1us=@}8YnT`|4FXmDF@mS|m=!{W##IzQ3X2-#8^L5yX;D$gJr~bZ5$Frp zpqJlWS-Bq8C=NjbI##L6`w!@@9#G$&f;!7ksS~#x;jqKq?Y+$lqQ$DN& zhq@ecO8$Ef4*R-DKOxbiwh%Xpz*S>|^T>a_oCHvv0tGV;`>L2wIIhb0M~8*=^ywgY zm;W12nA_&>9e6{YE-4Jp7gb-yP#{43DSse{ZePj$J4jCmh%CqAzn6n}Zlu66xT3T8 z3xt6CAOz&EH*(mfBmTM^Ktct7NS(zN8{US+V=o~s`h6kZK)bSCnt#RX-ZE;yZ{l9h*(rZT{4=gW5UsEw_MiT)4+*lDFeq#w4_|q|0`@tpzasu#qmWn*!M4VR zogEgud;nNqGyFk!oy>ImE4B~|L?CVc8&a4>@E`u2e# z^$n`I{1;1|?2#V-3DgZJELKO>>GVmrwzA~6B~e(8X`X#B^{3IpZ8-tHv7!w$;Z-5$OAf=#ck ze)kL5KMHb9UufVYjX_9t{W$CeOw3FEjqYIK;L)9iVh}q|w|5v%*kTCr`+aM{5*9r4 z{cpSFsu&{n9u7n(jP3jDu^I$YOCWPWSMeS52~qHMAiI#w?JcoO0};Dmg_OU3)JY~4 zW2WNZiCYtH7JD~cfH>5N_4n{_)PoxgZAG6cWjV51hju z)_@zlTR(l>-EkNv&s7;tAN3^(X{=u)=&C+9;bCGG9g0^k5Qz)=2maQ?PVy%SNvz(| zofX7JUxBE}5@7-lttjxo7eA4hEpIKyf=KkBc8n%+bR-cX z-E$VP6A`AS=&**Ogq=v&2o_g2+)C<6F(8>j!Qgf{iDZQG7}p7)^Ww?gNr69X?g71rWxIzP6>q9c%k%!t|lGqlHhsHn5`|x zra^zkVep*jKr`C~mn67D8{KDF;OB5}kJ}tQ$oX5qUznnVVjoJ3gTR4`!*@wm#pR8G zXfs$xuwO@tg^LSF!VKQN;g`lns_8tp$#89ZTCfUIvKSWwGYfNE+ab(Fpd;NB4rT%b zoWrp(2aXK`H86l?RBMzPG~vQEXCP;|4I?^=2FW#a54pM#*9Wz%voq|#V5<#aRtSpJ z%9D76fue(7DH4{s()z)Dk)rSh2BSkoBL2g2kl0%9y^1iG2|yo5_n zZIB1rjy@7W52M9X!YJ5jmV{8Y%{fuS^V934k&Doio>Ta`M=i>BcxLMW50tlnmD2n<&m%1!97=si&i zJWb_GC~<@Vdor@c<{`1Vi=dtu&crVh8%7ud>e)0nlJKkSmXS7-kAiFrp_>e?vWl+w zsaQtCfRrv}AwcEhQPIqC5F9<8CYabQ@WM}p%$*Zz#)!i&l!S~yrn4r&yMtCi;~5Z$ zpGlV;2QZjn_=(JuD_$%O4kZPu59rvnH5We-HwLTAn-Gf}Zw*gyg6c5oAry|$dH3Q? z#JT7ai0HQrJkq!iLOG6rx9?=96yRs#j&vgbez%XqildKjmPu0}kv1d?3WQUFpN4BR z^x-kX357{ApKnZ>1x1LD%7SWAc?mz0uISB?1|gh30V~eAzkF8%w3i*%5|m28ZTwtp z;vo@@fY&L)Xp~7htraL1Pxv9aWHzXJzd+cT3B|hMDso?!RP~y4VYc6me(Wx#>NEO5VyAs8o zc}4!%>cR-a5f9|@j)N2QgfSpCXohyZm6jRZ+}hoPY}Tz-I9SCGdYnlGcPIhx5!_L% zM$PIitKVD8-Bi9~9S6a@Uo_?SP#Q}$CXpOb1Qn^hCK!%n|42o^!IO7IjDwnrj90@x zklmAUB$6wNT1jkgshKmvgQElC$hBrt{OLVinmFhUUbc9A3WUz45Xn2C=zUG=ExoQC z^`f(atl^Vjyi*tlxAlX}PIW+~s~+xk-B8?QGJDI-_V=#xuHW&S1$9(PL?Rfg8)VA! zQ2YwF_LiRmjS|IjkBp`;X}#EGVNRI8ZLE`gsR%PuzTygQ&--E2k2$YF&7Q(JiM|px zE+#~Pj|~2edm@)DHVWKDBBZWpFMH@fZ`ruhBBP-No)_xjQ1^9rv)YP4Mr>$_MIYW& z828iF7s?xdCfEel(@erA7i}~6xI_rwf50v%VS2-V_0dV*b_p{j#K6KB{zPtVkt6ZM zN|~lzuvz20;HfIg%7$Gg$^lL3|0x&8$Cx>Jh6T951TUg;=|5O?ksnkVbj=0jQbC*p ziqij6E=Sui%LN2NV>);emCJxn26odSz*AWwD3?j?L^+@-^-eDQPux4nKcxC&HEqb2 z=ut$aqNf&lo(72uG7|}%M}|uiW57?RcM?H+7V1#Ud?20mr$;e}%Eb1*Ybq5y%SD&M=fDQC~>vQg~{-brt;qF;Rrt)k2qBBfJC(&)Ct{NFg%(#9rIXv6wM6US()+9 z5%^{FV0d%7F?7|ggsnpde-5ccNI6oVDafBIDMtzvLU|V}I0Q9taQb5CVaj%>ai9PYDGwcZqexX`vJx zsVlfJk&n&rrWNDZ!a}1p3L($|abdEcTIp;h&d&mwa79>Va`Ne`j=^Pjnu*{g=Hz1H zoZM&u_^s~Z&#+em!G$O23D*0fI7FyG1tW^ajOnW2ayJpRmG}u3B%A772iJKC4rKnK zGKZ~vh6q6}9Z&c&O*a=B_L8lt_nC3KMM~z8XWcxxOYH@ zM~(^uuqLQn3SAL)w|&D)mT2yEJ^sz|9dW~08nRU}E5S5mf(mg;TmkXLkT`^7&&uih z7Cf{kcpY>Oea?V5Be+rI!zlR zjw4@*2n6?o4%M#M5@*vDKYF6VM;x5=(>zXbphngP-8g6ol{pdTMAYQJ-5Gwy0^E-# zWJc&VrT0F>*+58(-?)M_6R3F*!yZ==G_FcI5h^{oEcY4@KO<4qYV$pCSoDL#0xg_3 zOd^c99>{{h%Y<-f%^}@3r2%l7+kp2$7eL0u5~uRV{U#1Zkx3Vn^&rM@2m3-F>t~XQ zGqQ?KNQlS2Q~$mcNLhrJO!w1n-1kYG?c+$NV0$jjhv7M>+Q)ms9Ndu+YIG{Rdla}5 z#IaFfsh;-85%CTR(9S4cHmixs=1*SSPjqpgsA3=|Y~wWe$aRu$ZNW?qT|oQCOL1PQ zN?&H$RA0!q62SAJ+wP`s#fQvGO^F6N)(yAn4}gn#uYsN&!eOfx<77g_wUDZJS6>4o zJ_Bz;`OCW;w&ziN@ZFC=v70Y%FGyQ$a|c7CY@wl`quq599|hs1LJSJYqcXj9tg;VK zIS$7&e=`|}O}>neN-vUvYYyRuB;ZuG9w#V|@eTM$bb0umlMw&bXt%w$y*&oLW_&=9 z%8?iNsJMhu=;6+O!SGo`VzKTl$?rwTT~QHS0-#Tv;e7{UO$fStg*9|_GodvK`B)JP z%r*$WT-u$NmRy8r#Tv2`{((On_R10X$PfyaBJ7i&B|?#H0LTOVs{YPceDJ-A0o?D( zRXhb_Sq1qJe-8(TeRl#r76jAzMV}VsXu@?_2B-vD3`Wp+kFh_YOC@@fgdNaXn79MP zfQ++5>%tp5d@OoOV>n#a{EQ7_H-RqLLctZi3j^ljgU1vZZstBf;Kk%p25`S!pJS) z8Qwz*j3&{VijM@D$)v;+^OZ{mznc>Sl6e1zBnD>TBhl5zgP(*5+y;(S&~>Z_#ViFU zg?>ISxf&k{#6-DWnT+3`+zh~04@HPJLaj*IRt{!wlOmziiEh1pcCOddxKR+7ps$$&*}dEE&vxb5K@S6kur09jC+Q$vZ2%d3YiL5mHOUb{RKN_X~fIf!<7Bn^TzdpPlLE1l@GeW^Tbelc)UsD-GSq9$6hu=r4NETegdHuy6kBk-aBsp2f^+1 zqP7P^6!r|FF!V9IE`}gEKA!@yVTi70gnv)^f%Ri<v(R0x*PgF5iB=++R+7|6OQ&~D7D z*5MF|cK)V*@X-O%Ot@Y^-@q|t2jdFDx=Ilq5Ge4s^kQHlEb-`E{~xA(2_3cAoCq; zXrb`vxjV+hp*It!9QTcd%amHsV|12Ye6bgjai_5mKg^3WF%S~wYS3GC@G1d9R)fxsI2$~ZG-$lM{?ggb@nt71agy~+u z%6O)rBYgj{7p(p-rj8EJ8$^fTKQ_%hEy%c)C(rVcJTlO05;VG?b0sG+q8w}}p}dD! z7_5nROhq2tV+Y@#Bz=LJH2Rpb96^*xZ*;ivx80}64b-_(36+7q@Guqagqr+%!Rr5_Kd9;+c^ZQNAIQe1=;-2BpVE)6En^|V z_);wxvG4B%i{5C@cj@v)4PfBW(*+;!`(+T9OD~j16dFkyj(zSA{I8V`M>CH{} zNcFTp@jaCf!j_ODOq@IV-v|UX)`j_)XeQM=@iE~wn|FD zIl2!YlkRdo`UU|9leBY7?MflO$bj}q{=ycAJ+BHMlUa25JOYE4!Qi0qS^D{u7jQKF z{NqJL)@6JYoER`Jn?hheE?%E}IUQato=p(kkM}q5QRvc9C-_1Ze{CFxFj7ow#g;(d zBr``a=@xx~k4evU7Z`BQm|OtK}JiY!5N8epOg_DiYpR_yDoT#(4E}kU|?`y z?%<=4n_Tb|Y@f{PhmS$mWCrx0792e8o7L}BgCu)9Tq&U?aak5057gUQ91Om;yp5cx z3bV1_32JEcNPG;C=H5T0O1; zhmdg;z}o=+ZE^atKm` zA%^FFJkiNkyhwnFStuonZ>kLrk=*{u5V;FPhC}5E?O-Xl2@r8drhri4_@gli1Ol4j zj3JM}pvs}Cgn!&mC%gJ70W#3d;Tshl5y2qB<>rj=lOAvsH)IQ{?Br%5Tqsl~gMgyU zPx_>k3CUieJ^IY)WJ?bkhATSja&a)sllQ4897@vR@bF;-Jm*k{;0WCpB|nA$2{#%o z{Qu$U-lZ69u!OS!!bX8-H_FNcXgM*$9bFuBu^&T7^%gk?6c2rVJ`OUgb?Jg`rHu%W z*%3_CH4%=DGE<5*9t1t6&+G&v*v)46BtkTsn34D4GDHgzq<1j3|bIP>^#H#qFp5PSr9@1O8< zD7q--(FD#^9ikJoXD^Ay#{pFu;`?ek9eYuxpn2JcTBvqr!^w*#GbRZi8JC_}Qz#w9 zL8cZ2 zuj>VLPfH~Rsqox;f=T*8eJ~=mFu@A&$dd#qbq%^A&PeyijB9i_k9{FCMvvfne32ld z?nY1IoDyDXUfK`w!DO&<^zFfe%LF;WC*XodNDI3;HhwVwM{O`Eczk48FfY zoYtpr3nQ06f3C_H!L2i?CrGQi4oRF-i(kHNI4F3zw%~C&>oGn~U61Rr`yHNzi7}bW zEMTu<;k-t_pSFBMfPfbhnf}YGC*ZJjxszhbwQw-xLBNgXF$BIkgr}F!jKK({QNsEA z+Hvq`l~FJp4LodMQ_#h?kT3XnIMJe5=vUl0X!t#vvyBF^Tr%W_{Ko-@J+KoW4H(D5 zSM9<T-r@Lks&%HIkR?KBAP`7>h<+hPnpe7KGcqu7SSofdpavgd&o4lYaH&3&p1 z);bchbaa_KTn!%=cet_e=ZzP@!9d)yPN4;)VGeVG(2A+7g^vOHMhypr($53#<$yBu zhi^jhUruw_s|@f_fRYJR{hWF}xr&2D!PKD9k#L&qfcOzDh}~p-EZk_wm-Yzk#SrJ| zK97LH+X;f<>n1yV6s$uTeiZJB4<8og)k<(kgU!Ai3!f_@%`y<&6LAlGRLo!y2+{09 zq)cXnCLADZd;|sJu>c>7u3G|g1}z{U3ZM5B7SHqN!JXv(k(jA;&8k6OB+>Yyc?=)a zKq@1TJC;tG3NCB=9KlR0nHYgCGTaBR_`{4i$z?8yaFOH&yMqo1&6g1pM|W$BJ2fbp z>FYptA)DJ<;-@vlUGGs1M5)U2(6wNg6}XZREjJn^)O9X?BF)OPVijPwW;zQVGQ0K= zCekGw{9GLNeVaBPI{iw#1e;u(&k*7Q7v=ulpF5x@blqd%Cv{3obpHb=8YG*cA2)E= z(B5@cW9KMq^^Cm~)o$X9B@{bG>cwj$ zMe?2OJb!#E52ZvPBUtfMkni)Xq!Du5BcQ$Lye@tIaI7}pC4AI)8638wcx{{JM%elW zsBNON+&2__47!Ej8wOuq3+;Jnih~PBh3u~l(x?M3h)(c^QSoup_Lx^cX#MI0=O zEw0FALzQ~9pF_YnS~@-kwqZS=Ps1Pr#0Loa z1Z_Tt+DUc|$4nq1G&+zTjxT{h%+fnZX6-bnbs$k6`i;kF{NPCGg%OTwLL=ZQMowjJ zxdoIyLUfFN0-eFaEe}3Q-5=i|z-TAu{EK~X+v%Vu$fzv=H>0i+a&Kj%l_z0Q3q^^s z5U8Wy3TdbJf)Q~M*<3&S;~j+R^0|UVf!u7|gt~eup_3zs;ZI<<_8rSSZU_b)4+f3a zpFvx2Q{e{ZUE4)mI7aU)wUDxV6C}ZCBfGo3H;j0lo;)Fi{5y&h=5(}BPG|Zq%#`dX zRE8hD=L!^KC}K?x5{LOYBu`Vp=7A#I*jx(TUZ3Fl`MrK8S?nn0^}D;cx)J#}E#i39 zEn7v9rvfW91Zy=cVg%fy=`0%eV==#3^-eDQ-M5`&$!hF!iJ(BK)xi_DW+;8Sv%C@v z06JF~4xW4+9T+r(7qCvcnoSRafVl$hd(mGtJ%1U$BzRnWBj8hyG~N&< z9CV(p95qpF42d)>Oz@)UttUlzkR zn#$mfZNwp*WUmX2CJ-{%g3Cu&7(BoCf)tY$N{RE03TOPj!@-@JH}cFnV}d7fZj=%T`7>0WROqERAzdnGJu zpUCznAgnTYGlVv_sl$3f4An=CWA6$Ntp9lir?UZzC)2w5EkPELoK7pz2FpqjBxe!55N)E@Z8gj z=vC>n!3(H@l+YS(JiQl;;FO2GWBBu?8{-#MA zt}iRQ1}9uN^dF!*n#4SMK?yFs;k(@g_KqC&>y8g3HBrC^?F1ZV}IB~y9 z%IwI5JVFF0p}Q!ZXuY6=JYygroXx(8*<{ck)v<#56G-m`8?LDlJ5B23Y!ZfnfaZgz zROQPdIBa7UCQ9zJEId61kR)(;X5-5zvaO(AqyneC3JS9_789nc8(zrE%e*sAh>%F@ zVX5jU$ixIpkleEyFKo{2Wnz8+DGKU02?bl4gbCJ~#t5UanDKalug_mMfed+K0{l@! z0WVvG3ApQ8A1~_7_cs!$5c(g2BM#kwG=q%^)tTuJpXUk>?5-Q&#V_vj?QS@TdmM-x z-IAuf1QR~@OEdHsngczYMqzUA@T2h3(6OZ0A<7mERQU694qGk*6Ac?ibQBG~MhU{e zi@iQkeJKNQL*Y!|e{INNJ7rhQ3RLlQ)4Y{2H^8R>iiP#WKZ3MX~{5$-Jc%CAPBFfHm|f5 zOicmSj&`tLw_t*IXTht{$Y>f~q30R4y&VUjS#WOh*H}1gpY51{T`2A>`fP&BJ{>-1 z)LD@FSk0#{6 n+L6y1puKqcbxioY%G$qy`v3$?C>5y{sp=q+&eg)C4ATDq-pB1T literal 0 HcmV?d00001 From b875b0eeb4f179012408c6e763cf3e60ce0fdbef Mon Sep 17 00:00:00 2001 From: Sanjay Rijal <37138338+zovelsanj@users.noreply.github.com> Date: Wed, 21 Dec 2022 16:54:12 +0545 Subject: [PATCH 09/11] added exposure and vignette details --- README.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/README.md b/README.md index f2e51ae..da1186e 100755 --- a/README.md +++ b/README.md @@ -28,6 +28,15 @@ tested with version 1.3.0. which is included in /thirdparty. +#### 5. Dataset Description: +The dataset used is [TUM dataset](https://vision.in.tum.de/data/datasets/mono-dataset). For photometric calibration, it contains images.zip, pcalib.txt, times.txt and camera.txt files. +- camera.txt contains camera parameters (as per the camera model) normalized to the video frame dimensions. +- pcalib.txt is the output of gamma calibration and contains inverse irradiance values [0, 255]. +- times.txt contains 3 columns: video_frame_number, video_frame_timestamp (absolute/relative time), exposure_values (1/f). For exposure_values TUM_dataset has used sensors but I used another workaround; I captured a static scene without camera motion through various discrete exposure values and +set the exposure values in the times.txt exposure_values column using python. + +**NOTE:** Gamma calibration requires times.txt, camera.txt and images.zip and outputs pcalib.txt +while Vignette calibration requires camera.txt, images.zip and pcalib.txt and outputs vignette.png # Usage: C++ code From e11180e597577a7f745c8325eabf7845d1e280e2 Mon Sep 17 00:00:00 2001 From: Sanjay Rijal <37138338+zovelsanj@users.noreply.github.com> Date: Thu, 5 Jan 2023 11:28:36 +0545 Subject: [PATCH 10/11] added max_G, sorted G for pcalib.txt --- src/main_responseCalib.cpp | 32 ++++++++++++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/src/main_responseCalib.cpp b/src/main_responseCalib.cpp index 4de2303..9b9ac8c 100755 --- a/src/main_responseCalib.cpp +++ b/src/main_responseCalib.cpp @@ -45,7 +45,23 @@ int leakPadding=2; int nits = 10; int skipFrames = 1; - +void swap(double* xp, double* yp) +{ + double temp = *xp; + *xp = *yp; + *yp = temp; +} + +void bubbleSort(double arr[]) +{ + int i, j; + for (i = 0; i < 255; i++) + + // Last i elements are already in place + for (j = 0; j < 255 - i; j++) + if (arr[j] > arr[j + 1]) + swap(&arr[j], &arr[j + 1]); +} Eigen::Vector2d rmse(double* G, double* E, std::vector &exposureVec, std::vector &dataVec, int wh) { @@ -345,9 +361,21 @@ int main( int argc, char** argv ) plotE(E,w,h, buf); } + double max_G = 0; + for(int i = 0; i < 256; i++) + { + if(max_G < G[i]) + { + max_G = G[i]; + } + } + std::cout << " Max G = " << max_G << std::endl; + + bubbleSort(G); // rescale such that maximum response is 255 (fairly arbitrary choice). - double rescaleFactor=255.0 / G[255]; + // double rescaleFactor=255.0 / G[255]; + double rescaleFactor=255.0 / max_G; for(int i=0;i Date: Mon, 12 Jun 2023 09:49:53 +0545 Subject: [PATCH 11/11] dataset description --- README.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index da1186e..601a51d 100755 --- a/README.md +++ b/README.md @@ -29,14 +29,14 @@ tested with version 1.3.0. which is included in /thirdparty. #### 5. Dataset Description: -The dataset used is [TUM dataset](https://vision.in.tum.de/data/datasets/mono-dataset). For photometric calibration, it contains images.zip, pcalib.txt, times.txt and camera.txt files. -- camera.txt contains camera parameters (as per the camera model) normalized to the video frame dimensions. -- pcalib.txt is the output of gamma calibration and contains inverse irradiance values [0, 255]. -- times.txt contains 3 columns: video_frame_number, video_frame_timestamp (absolute/relative time), exposure_values (1/f). For exposure_values TUM_dataset has used sensors but I used another workaround; I captured a static scene without camera motion through various discrete exposure values and -set the exposure values in the times.txt exposure_values column using python. - -**NOTE:** Gamma calibration requires times.txt, camera.txt and images.zip and outputs pcalib.txt -while Vignette calibration requires camera.txt, images.zip and pcalib.txt and outputs vignette.png +The dataset used is [TUM dataset](https://vision.in.tum.de/data/datasets/mono-dataset). For photometric calibration, it contains `images.zip`, `pcalib.txt`, `times.txt` and `camera.txt` files. +- `camera.txt` contains camera parameters (as per the camera model) normalized to the video frame dimensions. +- `pcalib.txt` is the output of gamma calibration and contains inverse irradiance values [0, 255]. +- `times.txt` contains 3 columns: `video_frame_number`, `video_frame_timestamp` (absolute/relative time), exposure_values (1/f). For `exposure_values` TUM_dataset has used sensors but one can use another workaround; capture a static scene without camera motion through various discrete exposure values and +set the exposure values in the `times.txt` `exposure_values` column (generated the files and tested in custom dataset). + +**NOTE:** Gamma calibration requires `times.txt`, `camera.txt` and `images.zip` and outputs `pcalib.txt` +while Vignette calibration requires `camera.txt`, `images.zip` and `pcalib.txt` and outputs `vignette.png` # Usage: C++ code
  2. BG{O|kOn(_DOVL}%8s=vB>}1ByASVO!^nBw!%S3c; zW$U;94a7Wo-JCBmo0GOX&^p5XbAAS)XOm2w)IWY2;oAjW7)F@YF2)}4CW56jMIDbM zcCH`bkVLt+R6%w@+@odsq)}`)zv^l*Zdr`@xfp@j1{FXlS2I7?!V=CM4YxU9pQUt2!X=;Hq^*%E$bX@mFY!BqKY~3eT#e zkvmMNU=Ab;6%{R5=YDy_oWpXa#DVW1rFRcRSqM!;+rmv|``WoV(WFMxHt*@z=z8Jg zGd#xb_a&Gu|CMOJP3nz%4SQ^yMm9QI^pK;`mpnM>0h^KYup{r#;1&}0^D|`Yii1Kt zW0$5l?$waQuQFgjBD68qQ8xbFieQ*!e_=u>Y2M^~UQFQpD`4hzera}@++d8=cx=3pQ+ErT zGafFJDuZc>BE@DeoXMHePC1Trf3fq>5woCdicMD<$S&KAjl><%OdBmEwcX*mDhM`o zU?0np+qCF~wRWyf-~ooCy9wKM$O14uMnpV?@<;~OToyvTRxDyw`?(@}P$~3a>DIsY z0T-g`1Vszp0i{H6?&X9cS1xYNFmbv`i=NDNu0!ePh91-h>$Y?h%gMcu?flaO)~qmO zb({I*Pr=e%CsyunZtkwHZzjdc54KZ1v`8_;&~q{3l|y=@CImKavC}Balzv=u7(YsH;*|QX4?EX$xg1B`909yp#eEa7eCgD!HGU@{!F=r?Q{r;i+EM$1( zsZ-oy4F3^x*`{MY8)ekIZJa5itsC*#rrSPki7X#t3*wTzSa&d=U$adO;-KJQ2LP!} zs4Fwvf z#XL>h!c>k221$1A<3z!A+JGc_rtXI1gzOxPq;(ZB`7bk~;B9k!kEel^yU>u8c-ijM^Wu1Tiv zlG&|J2iBWRR5@Okye1NAREdi?G>g40Uya-#4)o#D*$UK&bss+1kuUC^xY5Hg&y_CH z+YRGi)kb4Igp+u^k|(E!GvSv?m|;odR%=q>*6It=)Ru%|vbd2hdW6UsnQw7bT)FgN zjKo*85TC1rNJVegd#|sj{_2E4A3abCzQH>QO8hi;Da*v&AuW*Ao82dJd@XQgy~cm1 zP&|qY%=N0qQ&53x`^*#7SVE`P)LV~@l*c`6xw}ZZ3KPdFTSz3<633xWOj=lJ z&!(WThcZ`Lmx&vK6(y2ftRh)Fkj(hnxMW>)#p9BT+=Xt_4|>#T@l6tAxnd4uOzYYy z=-$SbF{(8Gk-T3<3e~SvRPKSi&JqoCDgf;dvg?6O+SWJj(0`_o*xEzR8bR1f3O#)| zV2=`8R+_Z<(lVb%&RtKfrBteE`q^$5{vOwS=nI|ZUqm)kc**156(U@#4<8a%S-HFU zki1e;#jKy`-g}E4r$sY!D0xTUXVZK+rwHt+gGFH=#tW!M1}F&hWy^)c0bcJFL=xC-@Tb3}j|df%f2C6@>6!Em#$V$N;-Y ziFh;U{X)D_7LTiwDJ{ve+yh-5@66z!Dh+WL!*H1#Zdzy0Qb_6cz^fi_7}TDmW@(#5;<#|xG zEc@+jqx4=oS{|Hv+?0tf%c?CChxaYfteAVvMp>TID)iQ&U2i<&U1%Cn&(Re}Y_jf1 zP%+MZp~}(h=kJsK0G$2)M=F`qcp7Cu008_)5dC+l1OfAZbN+GX}Ze>b&B^sbirBFc;mI z@qQ9`=>mbSJrGR>bLS;f66y?wm&c?43jL>wv+V2upoZd1HIL8FK}}Dap%+;sod&iP=GihGMN!BeUHWVIf$Os$W;W zS}q~HtWLQBIEsD6H5sa8pWo-`3`o(b`u}6?9il{Qwr;_+ZQHhO+qSKfdD6CR+qP|; zv~AmUzPeSTI=9CC?|UyAdpC9?c4I}vT64vmQ^3xwTSLJNy+ycJcwKNeTKGP81v1o_ z3FndQ`Pu3SwpI)IVLlJo9iA9(??Gs{#OLMexOjocMn z^9pQRo1gsb>X8c57z(;G4q7~v4R#Hu>>N#qI8Kj>j}Q&W2J#3DFbZpD$hi2Za6K-1 zf-Qh~#@*;-&BcLP9G?~jr$eVmr66%AWf}N*k}d=rbmO#*UByQNI*_Y^t^b(XrDP`^ z+tI?YoE}vaXphZ!xDs1te!xKypKTyWnOghXofRfdwxr>1P1OoKYZyPq7v|`W70%BN z;_tx^MR-9(Cp;0vPx>IIAQ!CJg>6D~z%QG!X)CR3^2}KS{<`XAC-%chnqocrH%4?w)hS(P4X(AXK-$w5x`y$vi8lDw&R}p`?ZhAlP@lhPp1+N!MTx{V| z-p%q;I9G*-{8C8DmxHYn^`rFF5Tov`!HkeyKt1Z|VS9&rVekq`Mh^w=Q``^S|7;mR zWFx|5zyJXMYz+T?%aHi1Jn+9G{P?fR>VGEuc%`mwzb=8|bE2MQt3Forr${w7%P%FN zX`CvEs!o+yv|;2KU~v_Xg?Xmf^11bfli8R8Wc^B7-%YXTseLbA%p$67|ZjB1xyjflNuy8k&iq7y3b%B{$!Ra;4qi z#Sy4olAi>|lpl>GY3eRUWEY%%fQw(srZWMhq!u6pgZ!%QWB_(NLQ^1D>QEtEZibt* zCTN>oH}6hYVmiXuP7B3G5O4uH$f4oB z3)sVpOe&UV!pXye1(4m%+g1^K>kTjG-m?o;qWahATw2y~k*RlYh8K)N%+QZUkN%`; zO3%uFZv=bYiAYo!t?IBnWTRa|v1eaS zHzZ!AA!9l|8z4U_Ax$d4x-xIE%=vO|lb(YULR>GNU~;35r#J1wemka(t$XAi)i*I~ z)aZBEN`VD|^A9xTAvyQ`;WnwM(DpdUE8Qs+1ldwyAZag;_ErB(Tq%`gtq3_ zw4zG!RJWFgr>$21__+VQXiN?86v~;4MFc|4NgFFe*g$iV;=c7A(q;196p1}a(S(X| zsk9fYpm_BsFu;upQa8pI<#U;I*7%@a(AzhtnkJQ|5&0U-9QJ!JNWj-eHTJL7()+us zdhGdk2Hq1h>>)Sl+hCQ?5;2@PtLaAXF_AJawq=V~Wn(jr7L|rx!{Ph27?lAQj}rAB z2XL;O))Zn!gXK(}dJOGBT2fi7j59a2BhV~DL~tow-PVwBx@tQ)Imc7UTqp=;-*~>t z1MiAf6^pLx3T#dz5OGaVX5prKRd9)(368c#qit@fnow>1mRnc~pO_-0v{oX8ye%8e zB_ArQ&9ovw%xlt~+wOvdYKxQtbv!#LIISm4SzcH$A1x!SW=x!Ef6`F~_x)fY^7jke zbH;VI1(DA)p~aq5QCqnRq^Diq5ar_Woc`toXw#5kq)*eQt0+(WKE#G;HKVPR&dA|J zz13!p-wv&V?}Cawbr6-d?=Kf8)-PP;UAPB^`q|`>s`{4&DN4PJqnx7%G|l(?*aN*U zc=e3sH6wrS3#JLY;L=y)>K7Wxq^35{P}{rJC-#ZSTlAJ7~97*AEC1>SDZm+I)@lxeyYa9`~6asP7t*pVv;Oy&oUaV-h#kEV z@k04j_lAk2qhH#`A7uhf?*46!Sa$c3PDTg9u5*UYeT*aU&kmb3}V8_%}6uKKjnV?ZNX)a8lsR<6X6|HgFdHW=T%GKuZAK*q(X zDek6gvId98eB>Lkb+lUPo_dk%Gc)K4ov5p>V?Nd_CirTF71Q}hQO~c%qOyITiy+3p z0k~u3zJgm(ZF$sCg(l^4WN*D6b77l??*kctzMD<1I)EQJDm|sB=;3}-@(uP+{5pD# z5-|e-0Q?iB|B7FLzXR4`O5vaP|2x?J>-e>>w=s3L_Mlf)fdv51;XKfLJt!~+*()%1 zb%zE31Udbi(f!|#f4^oXbO8XQ{+H)ewzPGyu{5?cv=RP)e&atcpR0cjNN1Rlq{pl8p+;&4B~Wx_n6tz1kDo1;k{CytiZFx09we1i zj`RbjlTv`++2!Nao040Aw@W$CBt04DjIp%#dM@BPC2@=B3hc&;k6o zXM6oM^V)xH^uh^7W`ZH7IgZk49gloA%!Dzk8-gUT49S8Whdm;ZV`75!NC`RMF;)g~ zL^g9iEeu;Cx=GBEv5-k{6cc`pz|6-?H(zUTcBqR}ZcThV2Qa|vvjM*nI~a99lgEtv zb-P%}UibjW0xJhjJ~)3iYad!W^YiBO=zJi43NW;}T8g*`dLRw;2Z39ZFHtOT_$?qS zw2ps|q-g$(CmiF)_z7$Lsa=pqc5qL0a%T=-kHs$b(qjO_0(()yZ$ZZ)t2zbd0|DnP z1E`x%udfh|5jN00-CR@}UJO{%d6mho1XuP?S7BvRj5r}2;sXL8IOXv`C~u^P*t0+S zZl?wJSOpy7iI$uZdtoG+w@g}Z?vyI|9mLAa>m(vo_5*L*!g^BWs0seBA@2-+W;$T5M z(HJdYz0qBgN_*8j$LbC_{=h4h>^&(bc=u5H@eE>}3mzi?knV^jgf%arF_aT;IK_z& zzU&~%5)e9YIG&`LO9H9oD`W~xr62@QgaZ9-Zc0B)Xs<2;6h(kYUoESHf@fJennVob zK^~>S8cVW<6Wa9Y;|oX%c^)k?p4lENvC#5hR5Ktb*r2q7B?>7!5MqwViU6$B!Z&Kz zTf*j4dcaqu->cGT0V6TYAC$l+Xx>m@P(9muRWBF;^c!1#`+cGpZ-f`{adbIq3lSc8dT=Ck0tJBBLsQpSd!roQ$%SxDQ>` zK>B!0E)&Y=P?G`YRfrU$$$HG2iLG@Xke>vkIOk27&(1~7C?P%oGQaS6u?AqTF-vYZ zo4`)ABsp?v%QQ!3$x>rUle-5Ca|Zi(NdRfUv2Wo3q~&Agb{#n6e1Me!L|(gV*fM`ZbhQJJG!^f1Mu#x-ZYnBZf0s78}K+PR+ z-Bee!thcORZMIdlkt~2f$eF{`PWgwr`BBe#vt}%@Op+o^iFttn4fSjEU4qK_>x2ZR zcQlYQ50Dn-+kZKxeDLOL8*5RGG#oTJ1k;+gI-2#`qV=&rUM+S76-!AK*OQ0}04S^h zW}ZMrAf+q{$QFrIJ>QM-aJg4CQbI3KV+1plllLrS9}AQivJ|sT6gMwGk3N~=1766( z<9HMe{qU2RDj^hn0~o@PM8(cPUCP027~{pQrj2;lQ8I~{vc#s1%=Hc&MeKJmw23SS z7AC=rx+RxfGEQ%&x&_-7L z+O$$O*BT2nDFvz@9$O2`UvS*%P@%GBE4&Pep)D9(p5{E~dnCI-H>sZ!u)aYBHsVv9 zhkmk5k$&athut<}XxJQ;Z2R4W;v_k{bRq%OSj`mQu)&_G1{m&;7&c;3prHYmS;oxx zog!F+xpvo9@I1E0SlXr`@>l}Zh)(rm>H(x2B)iZeKgJ=}aQSHnG-12)4GrVTjJcqM z7^LzktkV8zKBW9UE;EgUL-nE$nxuq{abgy}t!QM>MopvO94Q0@?(tkjqHE77{O}5N z%B!($5*X#MItzgPK60kLPxELtI^hs!iNUomFfON75mWRe>@$Ay=RL~Ln7 zv@$R(>|Y6j6EX5RCHUzZLw#*a>ge-F%8f(HhH{W4R*B_1 z%j4{YcpTn{L>{+7YVzx{EGsUymKg5jwAZ|&o}~fA+`|OK&IdkiD(y7HM7ltbtGf9)Zqo zB3x?-l)a8gp&j>@N?lZ&zLjWArLdkY_{&I6n}sB|14KkmHA4@^1$1(BJrB`wq8z1e zbo@jt(7oL-^FD38Bq)=FWSGuTP5rkxUypvptmDgR4wc-az{a8FhbM zZ7oFrwG1c>zk^`{HD0@!gGUilyvj+z3||itg_o~xk*Xy=w9CT6{Z-CWwL#o5tM;>z zxZw!DY~pE@1du6+1H@8m7hGi2OFKU@$p(dPK!bFiAdE)P37Drn3Rk}2kTA0u>%!oo z=5{DOHKcU*)TRxnE}6w?hCgPxDQD6d{xG>>kh6gr@AlEKXu)vsFr-)waY*81Ht*`t zRsZKG_>ipZcaiwS+4$b={wbp2qOZ!SMeZ-%J1JWkZ;a4g zr{RWt`k)3T`wHtig>g#!JZTUYP3Sq(ItyxFq%9JFcHP7+RiO8u10n}sBZr*=2j6`M z%+NJ`LL`Q0q)2-aifb$MCeHVX1b^tRYJHWHI}R+l=4@>}@aZS1OOj2~44qKrkn!5R zLG`8NiUAQx+#lb{@l_lgrB)J@Vp%x*&Ju}V$TBKGH| z34HfV7$#Yx{3I;7r@&Y6!5|{b%zb=~($h^hM@A%n?HXbOAeLNmqEc9mrbn@LJu~=H zcVR)^xia@tnG+X!iO2;)OY#_RWd&a3mZ=E1tl!y3DZj1!mtv*dS(Z`guJh7FG!78W zE34+U8JjAtFR0aYYDd{L943{P1*U4sKg}YbtyNI3b?`JO=V;>Zgm`ot1=h-_r9)#b z>Y6`_k1#fLlsfa^Z=o~#Y8&EUsqY_em3gD2zh;%H#^Wdv4jt7WJ{ItD8u+s8v{~`z zPs>J2WacQ*fTqE2l}Fk$dK5NI$`}>oqIeJD(vouN445Cd$n!gVR&z6GQ%J)6CD#V5 zc1+wJOKE$`ORk5+KL*Ebk* z$?ljXfmmPN#fWEq+u@dJ=1~w=*leVuAzCS2m>wE84nU@GtwokEGmcLhd+^Mc`?CD( zf$##Rm!}^gzN^+dwgepv_vsAC`4e-*U>Go$u5_?P6@tYpWtUDVbAqZhkHuN~tEkkZ zTiz~eN1i^0H5MmIk?-q_^@CTK$mTqcwk@31K)~jBJYdbT;2cwTI z+u{phF$2^l5oW$iYG~EO#&91JO2b%*S)mnUql9&>`=h@Mq>ZGj5prS(?h@_|jUUY} zm=Jo8@eDU!Cj4FrAd7ARo!7q9a=|XRxuNiTZlZ_-K+6U*T^sQJNdugXdW!@QOgl2n zay=oa>?NHzuZ3@v`A+=d9#tA=k!&D>(m?jK?OHeleB~whz>D*C23#u)8-4EtHEEX9 z>Xi~%{t**ycz@}>W@WnIf1az-51+>4;JDb)cM+=@j&UDAPt?Bg1V*Perx$#@p?5o5 zfz)H+P^32irH*BNuWBx{C;QxVZMHs`1rOu>ctP_Duvm%Yy?gNd^ay=Lru^jn{4BUt zW;#2F0W%J?9Rj{A&7=*clngov&&_KBMsV2JPRC4DEFtCN{ zmNyd#VbvAX2fjWplc`6ikgcdAF^nz)YQ4>^s#0(c`6`(}c)5xDnREVzRnxNGb2H-xYwpS2TKmw;-uSz^ zXr8!-uv_zuH^+0KSZ8HqW8oOo)b&Q@0ubBoDT9uCE0@kt_Xf??u!KiOng)H=_x!NC zvkIIWBXMAK1M^R{d2%Mb6LtCBVt2bxJ`%7Pr;_?m3Ak( z&A@Y4=f*!7=4i=Z^cuz+jw30a4R&;Tjg75w-RgT#zjCT6e>=a)*Y>*P>ggUOre=Ja z?j1MB8l|p)d<=iU-`ug4lp)nRqc3;RX>Nw7-tbtXw1$+ovA`7kfcAx1`y8eB zIO=w*l4Bf%2H*?x3C$j_(#hB-FSfrwtCa$$$cNES8DlZ=%0gDE86m36;UW z-RE%XK@yg>i5dE}YOz6jWq|ilpltf1q?Xy$;p)J79}=+~&)oyz;|079bgY)ZQQ4Z;gju7%kPZ zq89Y77wNP2A0VqKj~Jl)F9`b&boB2*rF$#@0QvueppyPSFw=iVmWDNK?Kj2{ziadv zrvd#@#uG00{e&W%m)=MbD^^3Uc6Y%->d4d=)KF4&mE4kczddvRLPAPzUOi0$U;S+D zjg8E+JP!?*Pp7{Pl`_&LkiW?$Oij#PjE=dk;|j*6(ANTwcU=D1DVL~A7BNK!bC+(G z%wNn;aq*1&)gqtQIq*iW^*9^5u~Y6UVSnO2 zpPfqoZD(Yz^6Pk;6|0*)dSvbGY22?NIHdT3V=O9KxkLRWe_YniHeMD&aomt z?$+6OC1$yti~~P|#rfE7+KuryP4o)Y_S{5>nVG>xw_CY>$`y?fK(W8{nviKzy|t2a zDXS@(JwoJXR}H`XK+?xhd`7*6mHAqr({G9mVARCLVnzrHFzkUG*8)MAwcANo94m4G z)Aed4wsidMTsfjPj?-&&@?$RUD7D4F-7&JRX3|^6C7t>QZV4M)xbdNaUxvt6hQY1yV1(U^ zI8|$0=V5RXi}nW>@F%%7mM(6>z0q{^;^r&t!V>1tk*eOc-E{cHal0AHjxCf#uXl&{ zr@+rqKDhEDE9{p8XRq&c&KjZFVY&nq|Ic}T{!c5E&w#)h8 z<_%fN-0^6<8y3GTaKN|VzPjKUQRx+tPobdXreP-JiLG@*eVQ#t3h>26z5>6#zPG>i zKRyc17MI38egUdwsEh#x_Tj_kOk;Y#LI~eCA?ptx4{6fWwhW=M#*Tk|8!Z^_c_KHE zkwMfZ59cdS^2no_#6d(~BLcdb6D1}?XkRihI?%R7Psa$O3iINjrh!w(AL`x^juJKX z|1Lg|K|Klx$6IAEr^%A;#=N&HjrqeQSw#V&e!)^GAoLU^P0GRg3&EVGzO>e$pvYBe zB=4gF3!(1@Iy@9ZeEcjRq55#Y<$jz?W(-&Z+OPGfbA&IP7h77#9IB|*QK>6zdSh;4 z557#Zm~+m4pFk^AXZ1|BcK(&pw?uu*?grv)S(r5Tw>jIlJ0s^QonHMI%pW0roL+v; zOuguO20pA#3)u#$OmBNzMkn>0}Pob|5Y9OJ1?C7--KFO-i zyYnTT*D#wHuprBTCC@RM_EpsT17eSQ3YqDmnF5CN--gT9@M&J2xhK&YWw;z-22PG> z;kGvLm7c)G-%MvNNFPv4N}^{hFgHTm6bAS_Kque7g~p}Yi!mTb3HU~^23;GQ^5NRl zm+(_Ifd4o%0y^ny#&|>8H0cd1j4jIMN95C_Yn3h=FpN-~j0ng8+B6y7f=c97nncx& zYZVLx%DA>*Vwg14AZ9>Hzm862fH7*d+@Ba#V(>O9n&5MYLE{4rE{$nY=SW!e1x}F# zbudK!@q!ZpDcnpQ$ju*J*<8>EF=#1<$!xbx9@seO2CQpA;!FG`4~d__zB22M9W+2} zrRK6o=v<(RNKipLm?P$DNgj9HvW2H6lYtOst(7BzH1U2HTsVt7&eKo${noAcHQDQX z@`wa<BCliJgn_gJ(GR`mN zd3bh+S$h;$)eRRUZN1A+1V>>wh`}fFkpr|eOZgRp#7$r{D+VQ0fS)y3wI0_MzKU}tC9=UU~9VOvO&wrb)9a* z_?TAM-0o56*e&=e3J(i@Ve!ssLWaSCp7GdeNcwDqFg!G{_VMLjVLo2NKihZ^6XZ7f z0`D!iJ!y;);axJcAbpYx5RaC$^=0J{FVv~~Y+>gJvnv!tN$aP2(8~pvN|j@&Oi-5C ziZIWLiHq@J{k&L6k#TlymRr~`;!!tS34wgWfq< z(U2cF+q;XqvjYGhkoHze9{H=FAi;-o*`K1Z7pW?fPQUF;=?eWbV;4neamO~2h-vJJjj7>loJdtFhPd%%vtse@(b_F)d=K8({mTx=Hb7PSA3^ee63+ks zo+{1%JQWqTcQXC|I;k)JO(*sDUs4j!e>szgrJ=dKouSRY9FhNXhTDv#Ex#f4&f9Ag zLnR97n%MGDw=Pg9?EhRhDeIqOtDamH&I>ung;#416NLBu;p5ymn#xf!S3xwc)AO-~ z7dyYidSoF;9I(sWUoK$dA9I>8gf~D@Flp^5eyHzq`_77Fk}RTuu$orNq5Cpo++;xc z83iea7?T3BEM7ynGEqgE1rYQIV;%09um6HwC9#PS~)^I z(q$cD_r@M2DVD@cCC_)?Z+d<^`V(V%Y5jETW)ihzp2DEAoKU#leY}B%0DzI?6j@q5 zK{sdGUV zITG0=lrth-fbfW@_(3L4A)u{rA8Q6f(eo60Qo+x7=om=(H4Jh9NEbR@X5=7QjMwPQ z35H?R&z9%>NpD^h2T5V(?xc|U=hpq_;ce}E{Oo(_^0o3u{08;XAC1lS#i)yjr=I}0 zSoaZFRZ#D8mM#|VD|Y8|@S%3cpxAt=n|v8E9$=18@{AU;w3}cct57&1m1bmK93~(= zPefXZFizU@?GB&U#EtwGmJm|GXa;Z*V+cNu3_0G2%H7A6sb1n6M7RDC$}aDH!H#+L zy?^|WsSgpO^4oo&8?!&YUE6ERp*J{N8Xzq7P@e@Z{^6?>5H}F&CjP^?wbUSfAL=9`C)cwGMVm52ApXM?$`W*n+t4Mh9V1qy}#a) zpTUe&b~;XbaeHHyl@);8looV`qGL&B()zrOXdP}~i~(huFYp>?6(ab@xkO_KhTnxt zP?>jO%5~GsJxvQ{?TBN10|T^^=bh9_H}Yp48#xO_N*qd{%rCI_4!#;Bb4Q$HD0dZs_-n>s6|7+2T;|;zb?AaaazJyl=#|h&=kZB~`$BOLok?*2 zc82596j;kF3QE*)u<)i~D>4qdcFYqJ)k&2cHnpI>gL*4*Q>#vyikxEujiNzg$wMmg zY*CXc(hh zIl+s$HTTOJ(@oJyxKgdIx9ePs8-kIBg6QP&e>tC3tHl=s%xIbX-veCT>P2n#D zKS_`XK#=4eIo1fv6RnOqtQKm<=WQ|=S{e;dOm_>E@g^wmq}>t1N#!Ui*9)CYFBGGM zjslmLa>qDfMXgX>(q@#yE`@E@gUTgL-}$(KN_@{!kIb?|!CK9!RVn zAFqS`t_F@aGGo$Z7sliV%?BhekY%|Muw%``fOUi-(E(rnT8?MGeNP*HSn9ELj-W2L z(e&L6bqV*jwNoWuH){W4$F~Zl5|4J8+Izgy<@pw3ABS{!JVbt;LS z_dA2^ap@~ygvKGrD2n`#a}@c2QTes=t+9k4E4nn}<0DCEvRUuX2by88vN>tR<){D3 z^$|4W$u6{!vGT5uj96 z-L-3fTaQodSYRlu1g#v%o$#xOa4MI3a~V{-ZC5;=ikf3A;~ZZIa(u#&We}c}3%om7 zu~ORsSqHL$*3&K4aSKh2w@DnG3d^dLWK6px_H~2qYmEx=6Q4eEX^7W1ouQ?`N%w9( zSO!lODd{iU_YoKdmRv)=btd`-W(PxUdTWSWyr?hw8(#Nb&nUWg!J1z_-Fn z59^Obwd^*U<{T&Z1Ni(Vf(i&a3T6I3Pv^Ij*a8E#W5$)- zV0@txUs(<4`kOwItch4b`5x6jHy5&<08CAvJEO$-f zyIXe6PubaGM64{R;T%9|GCgGFR_W8`rbYKt;OnzqSzko(jrxa*Ex5G#f|)c=(@uB>;m{f*vTf3AUYm|?=x;UP|$Lgdt5TSh#V)5<%QZM{&`u&`C3^8=q#^4oR& zrYH{1Q>t3a$r(&od2-H(vrhV?*mv#PuKbuC=95iqFAJCeP^xe-HU{P%Mn#T1QkT|7 z3`$VdGklMN1^RytNTM~cYu}gSHJ1%w7;bag`lez|>DT>PVUNfz^n{TUCu_KcD4-#c zbGnb*WPwT$$>yIGNr2?=kzVllKurn1lExTR~uf#FFWYxuz^j5%3rMPWAup+rCg$ne})M zOoE-$Xa~iR7D#SBWpe8g+o{*Wbya5c?ua-uLtTkXM-!dKj8rHD!wI&&L$mLHLUpdu zJ2f)U>wUcn^k_D=NN(;!R5x7mD6|W{c{%yyX`vt}Y`5P;-gw3CMnmf|LF*-Lq0)I_h6MlnAZikMyq&!@w|e%i2D#5 z0zf|SQ^UQ|h4UyZn$^`XTiFE4{6S*vhyIU$j{#rmu&JI%nUXV!0Bs7KJQsR%% z9TV(%WNw3oS$x+9#p#Z-f7`EV)LNmoYu=`x^mG|CcqoE0e5ZK%UT62R*~LCObh4ti zM0y}r22)SOT7ULVcG0i986b%*OmsQh98m|t3kOWv1%sl4DLW7SlvT5xwoKP+z{?Eo zUT=oDJi2e_a#(K-TM2~0{5yD8$=JLp+}Q%gJkMthMy83>EGw}^m7GRNau3P*(EOkM z{o4Dxj=yDWV}IjYt@(j0GWNnRd_;G9UZr%{w+f}Bt=}IL(VN@1T;KmHDOgZAIrO0c z0RBnm|2?|>Km!24_}?b_|0A-T)`vZoB+_?wZvi`}sBl34Otl)dk+!*Uf+@ZK*vR~` z39ePzNE5S*{ITJs$wTjs`W7!e9-Ev~X_dMaOR~TDGjet{SEU7(K#x zq%!iF>UvO123er@PAN1XU*_57vl>LlhJDEX;0Iyit<7qYvaUhWr0zrR4wMeP;Tw-d zg@YSok562#&tAV?QgJ^&n*DP|FEr=Lu=vSq2rzMX$aP`9_2au){(*1(wc}iI4hOxgS!2nCY?H3&h$S<3-AW)&* zwoGO-J7t$Mjgpba(tmk;WYD@#CCR1HACM#*upsim*2j&**k<)$U3SZ@1yPrbLZ-ed z1>6NqCy>~*YB_VeDvPJmMy(ClRGU>lYse+j=k0A*+WERLVZ``U@{Yis);iUeyy^@Q zj#@=Cu9~a$kfSb_yZ7;}NHnBF2qD&6R*;4NnMfO230JolvJVK3#{(a*piUPQ;WUNb zltunkJ~c7A&aTCPi|ry^&oX3zjMvwb`beNYs59c6BV#sTK5k24w1^jx6{;XRG^9hu zh^$ytn08k`qN0qEB<7!86oFiWBq@+VV?whnwk~ftcyK-0Z<$I4+4L zpC&FYDK7Pa!i?zrymtTiltV^I+A~6jr$PYF0_ViNln}Al!@~s>|O?zpmUX@f!ScB}uT-bd;un z>*r7FhOi}MegmLlQozrN@XfPnF@3_vC5}}|o5EPPK{5&?Tvoeb# z_k|Ci^MsS39*P-6H*x&7t;C3>f=mVCmnuUo{H{(a3*IXiF5>jFAK9PVYqu_QzO3g@ z`Y-Rgo31&@FJ_7rJTidR-FprdnZ{{o0sMwt{c6{_2j6K54{N7^1BMF4s$vf9RX(>8)PckGX&^3x_$eM9Voodl|2p#720-z~R}Z(C-BS z#dTr%Ab90-8zRf8Am{CrlMG;9u0HDxRW?m#P(-lhVeK;o3hp?FX1%REEm1dP5PHQ{ zLLT?`A#wB+y4ddeDn?JSh!N+(_e08E_|OzD15#m^G-YTa11S;nNYu?t;9VXWli5Pc zQ%zZ=dZg&{>u^)|+YC695tDqUiN_JO`UUtZSr~vv1Bk@8E1D+Km}MZ@9zP_EDK@Dd zWaYK3v-U(p?zLV+t?^(b{NEl_tEz>yw$}zOR}Bmi;Ar0;O4IWnFyZ9H1HUg` zaxS!X3M@S;WUpppwp|+K%)5PE8}G1}X2zaY<#S}Oy=LM5;H!*QD1T~NIxX<>`Ks2Y zLX^(kfVpY2NoXboOpRefNu7T#Uwt~eY+m4J_u#vN*>4Ng9c*80d&aJ_wqPR3++kc2 zlwzRx1~@In%Pw|l_y8R#z%9ljjMVSfmy1A>0-`2QTboe-4t| z_2F=WvGc)KczkWPrQFR)#9h2{k`Gm#o{vq{iwqXc#RS;cU3@0%62!x8=3)F84P?o% z06%3Q+mR12O-mPT3yrg|;lcpd|>uZ1`)NjxHXPHJI(t2|)qHCC7?64}j7=jLHn4sll}wx& zAxFX;ID}1z4n2$r*q8-$I$4Rpnb;3tdqzt%q%CQqpSBLCiVygsFM5q0(q$&b$Bq8z zD)iv0W=1HD{fs@AmQ3k3m)(nswW9vf3+?J(F~XA4$XdhAh65Xb^It9*y#cd4QJ*)D z&_AAs44H)k5$JTIU;+DouPgz65eRG#-^inHTqaHDtXq_K(Chi0Hz|6+T8#{J8Cm}V zC$_`Z*%V7D*IqXsBFF~rLE|C%qZf{6gK~s%9U+AL9UpJhc{VmYHc5Cu@Z1I|j zel8je>~J+b$un3OwzHp!7i8zWMgh5dwWPh5-F$-+df}SJOuWHOv($U7_04Ya+tZaZ z`0u@A`)uEfX1*WBl?tbo&tuf*KPpt|n|R;FSs+m=D4>GA$;2!SoY@;&Yx{?2*8T|c z3{})fN&sVU#Mvd(SuaM!+ZCG~SD0dN4!cHCeIba4K?z&9SQ)x9KO=M^2%p?6{OXhZ z&jh&q6U4#X<2K5eqddUEVHCdF{;|fmMUYHDctu1t$5A!1k_~M%{vL^Y0gZEb_r?_p zG9&~BBL(EgtO0J^gBk}h2k~Cb=t{DQ+8s4e!WXkEmsSewPI^^#mXt42xuN$tOs3UU z9BkD?zV0cgI;%qIx*K%74g2Z|K+bxP4JrxRe{Fxq8$6;IjIW*9B8MJ#5xYkbTeWHP zGoarD2hfYXGXrb1fG@{5vVMtFxVw~X9l_~dx4sf~=k6lZH$hyVyV~J4c~q1IPdI{Q zulgv4OqNe>hf8N?jNzd&u{(%I)!T1TQ>?;G?6x$-b!T^7!+vN=?}v6@NQI=Y(w&zw zlG>o>1;E>+?ehV+NO|N_rt~J(7nwY8ENq7QQ`}MKAQh*-ghIF|`e1V?@xiv)RrY*Y zrb<&**w1$Ha`9f|M8)jH%7OWIjb^W-0UB(a8(!5*?yekrf})y+;#+5$y3Q{d850hT zXdtA(^R#fC#oZAIN%>krLD2p+hMM(o>AZ^@#K}hHfwl=TEZQ4W;G8Rp+^h2i2u_1> zw4|3-HB@f}Gaz3;fuXAh6D>ve-!M5E1^fH;3$ z#Oo=hj_Xp+HgncA6tiBW1w3gNx)ok_yf#K5~1^r&Qn3`y~#0W6?05y@@~Rr zH++5+$VJ9}#nKE;w7l>yr;kmv1tkqDe&c(wf3YiV&dy~GgRwswY)u}1Q}R!M1&jUh zBS0oi<;LYBYDt{tD%=8Rj_1BHl|NaXoWTJ@L#C(>x#F=H#Iatv1LvfcWy>BQ`3A5A z!9_hR@aEB8x>`@>#pHnDalChb4sT*I$w#RX9wt7f z`0bP-4wt)AxyqbF`d1jxlTUq=unix!8>RHyQxfs^T2}|c#YBWFXg!IfOR}q0%84vj zdbT2`xQK+8iYP-t#OHfO56OmDyBg_-k^++8((Q1@=C(-(D|*J6x;{E ze+2{nDT@Amxzq~_0KocRmP?X$e-+rAP5*O4BwO9q9!nhI+o#v4NCJ)HRHD#_i=raB zJ~D$t?NY27<*W&3u>Nf8+VU5?jLy%?%yl;~nOYp|<>eH!^TUh-1iW>P;V?4D`&1ee zfjYwhV+0_BgnJj8cGC@m_XiqGiRJ*z!mtoy^FxTRhNP&tzYL(X5lM%}xjkaC)y&BGTa6FM4NG!aZ8VnqsNyYA$`R z!7;yhgJp@7auw~3tG&X{nZzK?w@$D4TL`{eh+whR*V}F1lR+<0dGvVi=CLjCRVG*= zEDa}H6#YZ6R5YW>=?r%%e%M|7bm1Y8v0%e2J`f=0IyN%skijN}D``}CNN0)lke-w7 zJ?eUq`^!%=H|!bv-YLGF*#Z78b`g>t+&SKUr9YU3rEdLxA&-C z0y7-!i;Nh*$A_JO6bG6@+E?=yILOx&u~VV%(+wbbvITP7|1ZwoDM*tB*xGH|wr$(C z?S9*wwx(^{nzn7*wrx+_IP;yGbF(AGNq0Man*an8Hxyp10 z6nNog$OCnQ;xtc*Ssw8s)|EQUb3jJh)DyQM5|YV5rNzBgZOj&O!`5wOwKvyJI z7FuzZpqntL-m36O}j%aXjjNI44CAX0E;$HHH=Gw}Gc{ z$ly#e8ydFWhV^-0id+r03T>BgK%~s$fxW#XU_?%g{%Q!#nq<9vCW!e+LPGmTe(F#p zhn-kYX;y&6CK8WJ|3(n_Ok${#rj=$^?hd}4s4jt~mL#H5y>=#181_%3MQoJ;6(1DSYC==ltv~WC;PF$tXP%VWyLlK zL(Kxq5#>A9K^Zi*wh3G9?#aiG1?a<`aMG%7FfDXdBe}TYZ`MG0W`BRUAjcAe+Lm^# zlW-j2%1jk%^#Sca)q9NFgX3VhH+10Qua9!IZ;8-)W7urUeu96ct={M=t6|Y!p;7r` zByo_&kls>0mn*`Xx?Lw_KPzu0X}|7nK1k@s!wMdO(yX~KNx)n7I+1(+?naCPwI!m6 zYhHFwS~9(s=`L`-PF}L>KJrYn_B{su#U*bOq0@-koYS+ZxcOaes%M6JIR14%R{U?( zu@qGKZNlL1kJKySf9Xn~ke`qJ&?`57Sycq&yG=7Gr6-*44EQJ61Gy3Qy8o*}p&kipOL z9&-1xD>|ZaIX8{vwnb@wzl05EL_qn9!^{cHsmEmd*M#*c`tV70U{vRjpv&{?{nu^d zq{u6`h4RqN_EuOSIL9NV_@H1Q74+6OAGS1Jc5fD!B46mMH-v>_1Bt=n=QrsC%NSrR z6^>h0gZfT^@z}wh|4rdt zc!GjJU-v@nBXt1#pF=-bkjieDb)yJCZs7AI5fAJa48}8?YqO#f_!oY!4u8OgR!dz6 z7TCf`Rl;GZ51hamwA#yJ6qytc(4Y4jap~`oN_8`$UdOHJKyIh}}%mD>w z!ZiAX5LOtJWAuM-0UUoI4f+b`mK~>I4m8EG%=dGF2cZGb6~G4ahmzir!;{xu(}{uj z_R=D%ul}Ukq9>lOa2c{zAt7{u@G}ue5vGoqA=w>VmcOx?g|49|@5yM?NZ6i|vKsc4 zvVbz>Do3H)6A&x8rqK@Qw3v-EQB3ec6fH*;UjsR?9b`NwK7F}q%W0dHXp*EhI>!-R zP=^Ro#q6Q}@Y2xWB@lt-Pq)K+CPPGpzp;VXuP%Bl3BOE?yP|TAEfi*M6PyQe^F3!4&Ig_ z#9_sFj1W5)((p`!%SaY#l1`&|adp8k59vipxu=F1uS<$*C)fHn0b$)UaS%BB^ked) zt#y6SxnQ2V9ENg#Kvy4NT@OIN*{Dl)L4PBVpCK98P&t@p^$q6xp9Ma_%BB;Vwh0l1 zKFX$e#F-@hAieIcq+IgXT@5`bF^k>9Wz!KgMpdif{3U43qELa+08Y-OV= zra2P4qoGMn)2$mpLB4ve<^S;D2bJ?|+M#a%E|FFMR^=VagPHh2+|HBegJJkJ2xee7 zY-*<+!RrbRU`smq%21Wr81k!Uzb%2E*4f|3C-YK68>fTh1k~{9c4S(4&|r=)3$!-P zH!2Dx0jAnR3fNc7JwBDDoVl`5L9fnG=6oH7yW!vmcu9eZdA(OlH5due>7$O1%!YXp zh7ZHy@68zHa6l>+I$YEs69S8o@hy18fkOm?TxB?%vRhR8qtr>J^ihH?0k!-5ky74f zqn1m9mP#%U8W$%HU0Eid8wH~+YZd&mX5oBSE>7+Oxm*^lm?rrJiZ(7fI+~;to|lgO zGqE-a;*-I@+*o)Cc_}$LlP)vF9S>f$!at8;!!;QSs?9>(Pm^}D zlkPm6*gGBVYilT0XU2!iS-U^s|Lhp#Dr8Saoqyyi4X@e(q^*LvDeg?HpZpn9(oH7F z#K-3_x5L666uk}b><1}3{sb_N4Dq%1*9&Y0wtzgrT>;;SxtY`o;nN)7=LNl`12WuHQ= zWEsSBZnPorySi|un>_vU>@`F*zb(nq)0(*X&7kcOzvdO>^`Tv!o)+u@5svH*2??OG ztIUefw0-*jROtA4F~)O&CB9OLDQZOz<3^Ri;*HF)dI}lZs@mB@a@eNh(DmPHQJ*?} zMWNjCL5GYD6d(AcxxXCK_Q!)Tt|=SAvgIkhZ*lRzE2p09!Yotnth`zH+ueM5db!$t z{XCE5cJ%dmSCiJSpF&uF`-Rj;N($(1mXAf8uLB0{7gAu-uD$xDIWC4}5bG*;U8W6s zshCz^kR-DaE3F(g=`vKs=RzK>ngLY)km<4leYj(*0>+8OD5Bz*L6BQjVaJKAKb31J zcu|78gOHqhjQV5746Jd1U)0H+j!uYSRa}m$@Aj$M8&5bse2Y zD<}K6y^>jJ!ghRDJ1YZmjyVjXB_!MndH2mgyTz~<0IU=4M#tZ}->R>HE(pf_qxakI z34jy(&95hMyH$}!647hNc*$sSxiy>=;bL{=akUc6Y3<)N%7#POsNhn;I<(QQ(qf>U1RRWtBKWc-UlMNHpHmU8+>K;LO zMuPV9{1uP4)|`qh4`lh`dab+&lgQyB?y|Z15w=~Hvn&oFldpV|$ycLily9b8Eh53sk zs#kyJTM7q0J)zW6$U*~F(ncy%c{K~tsBVf#pgXldnyG2TBdM)C;L4bO1%vq#q!e{U zGgwpd;hdHi$;zla>f*fYFQx(yl|L zDLdbcAL}hkWh3ZpX?NhDK!9PjUcqi$ewUQBtBJI`^2?eG^<{tF(Hb)G3H$o7vnxvE zTn5ukQJl_-T5)PvWAm?{le3(DB81jc1A3-jhmry%w%kJ{C@k4v8d`v%8(wQ@Y1PO4 zeW^$59G3??SM!Ht+Ox$CM=US2vLXY*qdX0;WnYc;WDJGv8iOTNl$4pQQsqrGAppZ{ z1PMRdQ{1gmV!+>Wjg$sZWMz?=#@!pI{BxK%3$yCF-P+%bTU_(=%Rz^f-I9ns1!+Sf zZKNWfc}a4TK4z~ZlPs#*9w~sZ4L0(t`Ri}$wYMw^RpK~Lhxt1tO4~;%;Yzw{`G&h) zO}~Y~lq_>+BfEJ0)S?19qHbx$cKniu-G~gyHR>~7uq$GJ1a9(=QCGBRssLYqq@e{! zb#0;gP|4zYf?HK7!tP)lly?}uBzNz!W7G^6J)z%k})oX#Uxw2+7;n3^M06C zV!>FpgvF8b`t|r|QtK}3Bx4Dc27NVR#skyhX;>v{Zj+`Md>llu34owJcz(o|vK@zc z%E+c%c*Rn2i&-idzP7AuFeTDTHM%iByxNO+{E%#N1#X$yHO{F#2x=#(r6R9L2hZT@%3y_bHPkcyqp@|s>Q zf0<6>t9KU|oWcsR>Qbxk2LfW1MCTQ@L84(si+V zu_X(gUHOCN=Nx5z7K}Tz8!eFsfs63wmaR_Stw?;GCCqski$zbNLo;H*)j9r=m3Eu^ zr6aLdYv?2tCLAYGc&_SfuMtc0%~$Lky3i z^1VsPz*)}`a(|6j#+4##lT454k@mgUy26^rJCjZ~ds-AuxL>@d%k@v8b|$o%OB?$N zkyfY?P)oQ7As+aHfbOt;A2QY`@UXYR3maj=k;eu}ND4HgxluoLt3*#Z<=y5k(x#!kIKeGesg8gW+ zQ3(E%>-!c$rKW&oIQ;R9Lu~-p*hoJY(}d=gDg_OLx8L~uRUvXp`DG^brwVR^N3qR;J1)R??s~x8Nj&y-pDHJ-!+7lTuSav>N>HtfMLNPlmNeK; z{K4?IE5aUL8i9n{Uvno_Z3(S|>!=H1BIo?$v#j8joMA zxGM0G1O?S%N8u!`xO>xN{z%8#gd=j%WB|dh%rXlrD)_GT z|4p}V_&-zHcJ~iMzLDWr9GsAorBIq;w)>VMX7`D;*=|s}YE6Wa7_S628D{nmL%yT$ z4Vyx}~6fILLQa*4rc~ zlK%I_Gp0iEoCk@Lgh}MG(f#IV43`tG9Pd4QkceQ@nY-Y55(%7?NMuPA2~Cu%s+MsX29vv^E|0`5+C2uWe_i!fXk9)Taa-h5Yk#wq}{ zAu$xhU!)jA`O$B4I-p@p{z{EBx)!3ZTfjtfE+9c92aAqVKFI;mSIa@b^z~G2d(2Kw zy#ym7J9o^12grzeSrpxs&>JanRh033QkX)Izm4LLMx;p65PRUkY_r8vPrAjtV@$%;U>S_kVyq^bUo**ZxHXR-}Tb%Z8EuyGE zA{=`p5bc2ni+w~uH*P!!6ckcWv6gBSZv-2q)g94e3RL7)_S%#U>y9A%XoJjPOqh_% z0t2eiZs8Lejw;S41rRzN+nit3RFZ)9bkPZ(QYh?;FD~adXT}L$-@PUVsbw4OLPYs8 zZY}MbzY-aV=$9kWMBp1F0sR5){sM&x;fiTrW#mF{r07y$UD$q7@K6VLh;nQr@2+#1 zW%hT{tPR(8oCyl3ww_S8X$y*N2#B1e_h+Q*ZR?0VSB%}xNzNWe6 z;y?6bv09jPxBPMF{%Ygm_}lI4{p_g9#^Hs7P!}Bk^OEsLkaZ2Mp*i?Z-cAlDq){2fMX$RRpHy~Mq&$8(Umet^rxg}q>b(lmniRC(IU z7rKyLTcMOeQ40S zTI)6HYh^LXMG@t+m#`+o8$)P7$_RE70mjMdm)^cLp;+&w4}8jI*Xx)uTQFkf!`EHr zD__ImHN7j&BACx#cpf6>vcHo2d1Pz1^M=Ql%ETL4eOznMr5yd70T((tR^L|$dd|>A z@a5#o;qMV^1+LCV$c?BDk=MU-M^$U=#QW|jPoN}v8oR#6p0PgW9JyqDWM-j+bPu$B z!UjX@(=Cu&~;7F|ArX9dh7Yu^D-Ab(Nd%ybn6zrziN-rk)Tp zJ<@|4YW-%G8Eh3;sT`Zs%sV#_1>-PY;E#7^34_QoEW@niBT?nx6PfFI2ZLHcWD-A_ zN3;Q~2uMJ{Oly6N86&hTt9f+s>FujBn{U0C@L3p==GpxBXQe4~%j9J+rr#fq$xhj` zAw?fT%s`0`V#5%)Cv$Vc)P$=v#eyrIEL1AZ)iP|?lFa$|V^46;=)|*9^T!)g6_UZv z_3wi{C76Y?x4aIG9dZ+u7gl-e2I|%?`Hu0Fq;E=@PDuDZa`PncM9KviknaMk#;s}| zmg*QI@>ULS%uSWWD?}QH${hDbu4TMuZLeNr@VTv~iz&KB{@a|ct`QwBT%+VD<+UK> z9#abKJZMw&iEnt%{&wP0p(2ey5l*vmZJzL@nZ>sByPJ_|q*w7PPn#gf%XZ@-qfx|4dK`>-THdn5%x>xhnBy?c@mU zy^vr6T}VKQ%)UM{$E4AUZqQAmW#Nb_dA#8dseHMaS@R^!M-7%XxJX*^`EkB0z{E`P zdC?PLlLV;vWK)9))6@Z$fJ|l~hjOUxL;efQH0gpW`XKA4Xz5Gsf!dLuZ`!xV@iYRQcZ54( z#Bm6Y#$Beyt2;iHS}b8|)fhDRY8ee7T#_=2TbRu)c(!Y*QHbSrqyta|cUQw=J@@^0D{<&T8F0>I;maXa9cR1Kj=G;P z)Wjhvj$8~e)J>{(5sZxWdhQs}fhmgJD#(>99}T#}n%V1t%kEtjz!$J=UI~vWh;dPkcyNf8oWw^}}znZ%{Fr47868tYW1UmZnWIRizplO=K7CYH9e^xQrg|Cc;pHEObzfX@dsfr87mzb+jYc z_0lM=XK^(sh((>>H*Rm+w94K(BEC7rNY`GVTtG8Drx_vpuj={pf;D7|aI9U`(fQEo z%cbiQ;_KY)|36;^pvGCSOHQPcA3w(f2e`Id>y-Y-?3=Qr1uRE5>aVI^RO7!@W z_*R4Z&9mV-f2xe&uZwev>hfhQT}_;FN;}#C_ag!~G?;2B%O{Btr|4I|(FNr#5MG)( zABJYamE5!z)S4<_;W#jnWmFs7{8dL!5`%vh z_dg^1KU-W$(*GaR*Z+uu{~uuR|2%!2#?k+^$#uWo3y1^>*s5@ASPSDHc4L%p*ani; z<+7^p#tdq))UBq&Aw%bsf7tyMT0}OHdPtTws83*q~HFZ&YxP|B$+C)-&~vdD7%;+998n7V|s9l*Krw9FI#RbX+!J5?Zo= zIZQA_4{4Bw(C-ixUdKPz*;J7M4O&Q$VQ7|29(&(!V$_Ny;K6i&b$Gu6wAb~S*MUPE znR3iD;{F^@Lr$22Z75=a1^YB}R1A=E#y!Ag7ILe8#AJ*eUT+TVYlfE|+P*SbwyD2X z$SX3_A=MaF`Y$K3GHIGQjJN#z`TKG3?EdgAZLxBHeLn2v&um<1VXqFOBPx2kYi~+D zxTb8V4iiS8?(J$K-0`dyOe_5XmTMD$B{W@8g(5>itc0XeK2}0jwO*zH`z!^B+9?K- z)(B-hFXAnbv>r}H=OqTQzh>5&bCL_El1_Z~aZjY&s}Wt^M~>|0cpW8M^x zJf8nE#nQ#bCJHYjP~Jm;RB%#!Tdrahrq%l zFd)bs3+av&4)lpwrn%s#bPSmuYeC6sf<=_vnrK2C_BMDxw7&VywoW%JM*c+`mbN0L zfo{()!_=u+bR!Mj08X_h>=b4pMTI(dCTz57h;cOCjB)oGSazNExn;CaZZmArMY0z? zN7HAr1k10-5eRFv9OQOc(Q1t9aM)ho1k;=%5NIlAZV6A82K2PJboFhh6!td(78;V% z!4#X&Z%zeIrSmQ8V7$0+)IY+!wo-zf-+}A_J2>VhCE9Z%e2u&IgaQE-!qO%EQ9Ms1 zf~h^oY!UMk)iU?Epxwn9FI~RKQ$neLzXVMgvc?$$)M*p4*00rtMgXjCHE-|i&MUEqK90)3JDXVv2S7Iw+)WK-`tgLz$kX|DB^QBh(U;urxNZ?a>Sjz9Wo-9BQSun5i~`Yu7vQ3ZsofB-@T%G0gJp49qCxCm!dV_bZrLq zn4C$oZ~SIri80!o!7xvK0DiXp6aKV3;Cl7RYW#|-<_zC*glh&m5rW-=(0(VJVv zwIQ@lx1Xg-pFj|@?jI~=oxtjdjI4q$j`Z6os802nCm5g+VA#9b8jPVU20ZZ>Dj53d zI(HMQz(>pWAaONF3mhj}pq^g3sPva!<4%51qz%yYj<+rF34GNj>rtzr!!wh2#wuSy zNc*%1(+r5J73{F1bC+h8ngt3^O5C~O=TE)kTwB*&mKSK^*&)E<_lLS13@$s5r;@Qa ztoJJtj7c&ymO5HrSyO9LIKKZ)hP7L`m8GK}ciDtp_|2}9(|#hU2B`EM9J=kE`lZC; z>Nn}L7E~A&-gb+PqrU+gt8@9NRc^GoDMPCOn+5tIGK2qia{{|<&tLe;z@nY`>^*bV z5e!n3>``+y;5dN|5%Fi9U}ytqj9)(6KER55Z2l?a z2~nN2^JXAphF#C++Une~NTQ&b|@y zAM^S@-T6N&Qt!I|y&_ezHMX)>1X!Dyxcpz@*!XSS4alPRlr0k#1pe%9CgaG8mS!Dktsrr*>H6|2X?znw+G`xzttE>9I$JO(Kb-3<8kb9}zC?Q_W8 zPJ=z3=FPlZ*yCSN$GFdlzk6`&{kTATXBGVV1)Bx!yD$6f^-HHSra6(tAC0 zJQ1@+6JI zSgyQT0CBra+5X6%Z{%I=)_{a@xi;^-yKnFeC{T6m4sW*zqr9=&h4w7gf!#LTpB-N{ z>{QRA>+SB|Z$)qQTEXWsp)AAGP;~1#I&8?X_PLc zE-3K*GIgA=?Y4nFKO7Hgz#6ojHH3?E8+vm+6MHJ>!R2bCHCJZQn-Q01!grg^ETC@k zgZBIPF`rw0T+G?lA35R7-#5Xl*x?^=p$kSskc3x#eo)r|f(Uj*3D>(1du~^PKx8G$ zV^(Z`oNQy7^RnVxJ&KQ>>6zwypGtfXW(US1jIJUyV^Z`~{58TN$Top|t2-8No=-c(^z+Fl67-LR9?ZCa zJQsXHfIvn^nx&X2yk00})gTTKw`wVzP)^CoZJ6M+joU~4(ReJLcwSdd@%>|j3yX91 z@tuB01QZ2amjH2f6^-Ap>qkj4mqzmuyUj!ON%!VVXR`zkhX{73P)1i43fPNEhT8z(8U7sM1CNaG+oc2wT`)i)wRR7+r@FBtWLhk-2C0Dlk7RjmM>uw9qCPK#X`BH!yRsZLfCf<^7m;!rtSKN7`B9lENWeODj&mCADF&;t zu}V?#@I7`eO?AKV--_+#=#LbDJ+Lq1SFi?{bdro^dvpg%(4K{G?tXs5YNtL<^I*0>ZX`+p4F56v)I>9;dOaDuN(5D7j77KxHw>?nwD{q0P{N z{oL8SkKA=cApCG05;Kg!6sivi=N@j5GL{37q@&J*&`QjBeMMjsA0nLcz~BLTKxI## z<-A;w0k@PlwR7+vnLxp1Y~!n9PqND(0`T5KtYFE5Z$*eBhZe^ldWIZ2*E5rTY_q@F zuG@ONA3By}f8RNSsmfavjBvr^DE35kpjVO!k?O&aU) zU@7N|%a~E7dDi1eDG(B3!sbAb>peYfs<^Rkr`zwpVj0uK;cts6Kct(c4SENDjT9vZ zZ6XhX3L;xzG2^M972c*J(cxIfI7zEvxdDZaqF`m5bc*c#K+oW^3NVUOz=likp!$hD znK2mw`T3uxfE82fFXh;HS%^#mSBM=o40s-kK zJKQR;h$~6cQzvGGnMFx;w|1#ToZOrHuB)_v+qA4z);nX;2v5KfnG8Kjk%niSs?oaW zH^AZmq)clXb(QLg3;}cV*%%4Akt4^GQ@Z537{5UmL|9Y367!=bS%zfmJdIh;+9dy> zv;QG4^;tydvO+>^p;KO-~*0x$d>=)r1w?M49PZBo-E77&cICeaDTg+mYfW zmIofrebH;s42*ja6Bs3mhzkB1!dQ&+4?a!{W-o=1b>_{9M{%3AwGtCz;^j1Hce7=v zejICBsrVFl2a*hR(cW1qv_5!uQtDvM1~Q*jU{qC31?rzL)tLp!yDkY>_D}(2>#2_d z6z>$Bh7chlH<(0$5WKgfN+wLrluctaQm`HsTPuJsYjkY5$}u^u3Bt0*2>LI%0I3yc zOJ@PN-vX|nhb$Q<>zEdDp~F-L%GyR5&@c+VmtpF|V8wRd>u47xp2qGqS)4Hjrz7^9 zyX)1O=%`^AvC6dAMkY(U`V<3I{=fSQwfE}zkv$tB6|iyu3Ef`cr*-OiKOjbd3DEHe z$^v_BZP32J-gix#o##!4l|n{%Ka(vb+Ulr(F-;8N@PhzRc~LJop8TXkYf+<2N6gRo z*(!adNG2HH)ky2k(Pm+c@Nsh>kd|wABM&1&Q{W;09HjEmsRHsNwZ}wG3FKqyWD025t|67R zRAbI1I(Zc@)9hfEikOqCyu=kYlbVNxBws11hKIGl{yQ|{|hup9& z18Gk&1wGCsXg0q3g>z?W*l zH=xf%!pR>k;+qAFZR?ZUtw^Z*X#n)f{8U+#h8jmW`R*1A$+cP zr3G36;(jj3n-vc2*3eJm?*UR$;W%`Ygmj3c?o24I@zKt+FDIz_e99WCiOrVElB|g3 zz|-5#i008uhg;zndR%AUu(mGH1gVERl!u!oRXejh*dhmMQsHf2+b+k5p4~{&tYc$h zY)<6kiDx*-@=Ia!<8a>?jiMMu z7>8|yROwHRzN=6t2N6Bs?ZOpc#;~s|rMxiy1Ih^p6e+VDVU|`@f*5ZdxZxhp2@VAD zGdn`vxu`)5=Mffd(W92=H+(4?HduYELsr7Ho6`<(X#_}_cdYDDx+O_V<1>Xm=wfx@ zDMRds&G2bHJ^G$QQ5lDv4^|+K+(yXJLO$)g#Iu`erXO)mkfu@u-kn>aw($XZV3$*t zO;?DUs4=aIrZ49}Q%M@fS(RE-9z(r?%wla>uKgfwBnKh6yn=27cc2|HvGT4=>d$#> zvAG0j`u#*_lNsPpEI19mO;tY8)!f85ru9+8lW3IjVCOh{I7EMG)I2g59Z^=~L2XdR zyqd7N^tg6Ip`3Wt8_*Jrel`(MSjm7(AAd>>y308hIR!9^0=q!4hlJm&kd#xlONfPZ zPnmHDmaM+f)(S@~5w3123J@gWKh{C#YOCi{1?O~uG<&emn3@k3$|cfzb)0Xy(dvNUK{>iiN3u~tIU(__(3OrvML@DCycV(9RVuC6}o)^4;JZJ(GHEC%+(YmJR^ z0eXwgomqid(3hhQ$ix4=aB^Th%cgGA;`r6fwVuD&*u`S=OuhY_sGz!8{1LOZGK+9W zs*y_gvv6Pz$D0}zR$tS(^a|4*`0h8=-Dw&8jyGwxjDo`n$Ws$<4(48o_?1o= zhC|DNt$@^?3_&UHlHDOr5;CDv5^O_DJD}|>gen&E*kjDv$49X2U;(2;vovElN~kw? z+2JE|pEw>M>bEi)L&iwg%%^E6J6oH7D0}WsTinB0v#yWGNpMW%{F$z{Hvz@wRqfn4 zf6ejB>v{8pn?cxZBTZ04WnFujuiJ238;5^Uwy=pMlk?sL{N>|sFm`#JT)j2=?rDqA zw(#pKu*+ISg^BvI5gaSd8@76!6ux>Ibt0*(k$q@Q>T&|R=Jh_r@*)X*5UGw9q^w6j zTjV@vY>x5ZCAx_=nKlH%8R}iC)67)A5Of>Q1)jni&{CwszEXL4fma@Pz6_nFSHW!m zO_jhaJBp2EfY>(rQhz2WZy}#k7u#T{S_Smt9hd=0(`;_SnH%ldW!qK9%`>)D$EKCf zpFt^Eb5=Cg1-1{;Qv*3U(Wxiq(-z_lKbAH}qK;GVy>vAh`nqxUoHN zhwB)fHfFF-aM_Uq{=S7n8Ov)+J@T`x<_yd$B+C_oLlG{7IuUAB4wY{+7!s- zBRh_$iLGk2*;7GU*0&B9!Q03L1IbDw=)KMRf0HJfe|7BblO(07UFdt~ZIQBc25-h;Y zi^Shc+{-U~EEUB1#J4Yt#3Bn@H7y&)OvGN(%SI-zEr8Th&fyWm%dbN*fI;9S9a_qm z0nVN}v4Ezy*lh+N%asFjAx#viNh*NJN<_u?pf@{=jmeRvqD&j=8~NT#24`9pFV4#p z<1M9zYntP9(l|?20v|tczJv(wIQg=L;^@+R6BTp6mV3n0C1J~oTazMU+F@-%=Fp7{ure7 zM1r8@_s;RB^A{+qBxVHeE9!KMyj;IVim3^QL`H;XV}17cTBMUbIT1y$0TAO1=rS=n zN&D1*S`l`j=ODh7uLFc_ga}6txaE!I#nq@6{oYGi7yj1l)zpZxp1gz65yCRXDc{_s zb(}|Tg^;vLsmN?QSt>V_+t~3Z4P^qUOLX=3=%~r*swe5tqNdSEGdlGGKTD>LzE^U# zSdaYWeZ=>9uEl$D<`Lz2eX(x|x4URtcXsb^{hyl)`ZnQqWqR*?i`qwWbWtf6Zu=x4 zign+Vk~nE(LbXp=MeuxrgJ&+KX|ETZ zn1XQUoq!Eu5Pu~^NCrlu-VR)D@Fb#hXgwtoRCrcsyvSYUcvaml=ifB?ETj%NTEfV-u zKj`gr(o=ykk4-a=bRiL>jI0W3r z7B82ourzpeE_(azbln^yMa-XTp#B(yBtKTtuu9$x@cU|CS3_RWq*LP)yNyPfv=S`U zxQ^U9XRntA8Zh@zFAJYMl8HN!7kcCY03Nlr6AN@&_M`E)fMi_=P!_cxyJPq`D>ZGOOCD4a(HZ^^qM9{Fx!#O$d{fTu+#b*#nm8;dm!^~#Rr0=Cf4 z=(G2nfkN9D;=4(FJy67Tk}_Rdxp>5q$oOb_;z3hEbWfgk$K|zXC1{PC`2N)owpHug z)5HTy+MG<*%h9~W4Bh=d6il9w6dIR-lqyWKEriC@VVgWG;vjpufqAtQpV<4;XXM!6 z*ptO_?ib!j8w-X|m}4Iw-%dhF8t*U)Sv{YD$tN}@?eR*z2Ui*aB{lN)42yC8ranY@ zVq=s`?SlpSMome2@-qLu+OWr0H|GHn1C|O?3s=G_qXGcMfBr<2{y1fo>JtR9k2;mO z#Ra~^hpVxmcoUtO5H03a4AwstI0-a3;tHB<)Df(*fR`7k(*N@=N zM_UksPV$Iy^7Av>{|J$9&q=j35|pMCa&`tP&P1!+8@z8GBSfZ@3rqc;6}OGYbJ}Pl zz~!|UQ-qA0NEI6;tcXZ?ItTvu(%aGqaHB-XPNg$`V!V7FY+s7M8i?dEGPd%hh_^bE z6L}RTn-b15%omkbtL_}7Gq-(pF1?kLv5k0+JiZ{P-*HkRAhoJjN+MEMXHLTNmiEOw zL+FI9Tgh$W>6dV2B}bcE++?^t1IxdQcI-HG{e^Ha(wso8;{i@5_fT`GkODINkkd=+ zauLpD3d4=6(2{*d7kfP09?Eb3=&?DIvHt}%1 zew#ew-Ns7}VT?vifvQdumB)tQn9*{Rj&n(x!YhRw$@)(Z{!kLUn&AvNnfGi(y0WM) zdE4?3AWjO6I8_2nmZ&49V-DfJBK++{P-YviF;l6n89lcZZkAyivf*MG7|YY5RUt7c zo$=H-3bYiR_&d-E&d(h96|t&vX677b&VcHquaf{TxY8)2HNu85V%~F{uYx z{R4-D_P^*^?SzUYqga-R416R&s}S1=bp?aR2?0S7mC)e=$0IHw_XbFXJU4u8yZVEF zt7c&tZjZB8D_E%>hl2-6x3_$z?zzNG2NbR(XR?hlG+CFls4Zs3Cgusb(M0bdw^!HW z9?b#K5S4NCk?p32c}!Ypkr%^Etl&;OJ(=f$nbcZ^q8bkUxrMtsq)r{x4pHe-WOhzz z=+{5{M6@uZwd73qm)ccmQeN~)m8mN=>_1%Ff;9&}f9gZAkhccBHREi97Ci>iL%{lM z3}6{-G?znugl{8G_rkUux^rc$_n((}1EIWYREvIy3o1GikS9f~3K^)xGgx|RT+AnX zeUv<%6QRyo{it)|8y+5-TBpkiL3&kI@&@KH;dGiOlSdf{v!oxwSxTdTf^j^3r{#RT zqFxUSv3|mt)-*z9-=o2^d2mq{B`w6mIq1^BP;8G7h1()!#J~s%ZUWT&(;hkdW@CmE zW+d#6GZqk$h)rA^02=HH#(hNtZ+!$Z(7V9IoXgR#?+S#s{9%C`Lh(;|p>e^Xz?QJW%H5h*TH&y3cB2L{bHMQ3ka~lNjk?;(K-r~y99{-5a3?ix@P@QB zk%@Ag+T}v%SYzyF3NLEvL1T6dpssFgSDY64&pX8*%=sK@^TU7cF0}MrSVB z)nwo7W7Kul1j=h$SI;(PURN2OEp-2|jvc^eM(B9FeM-V;orFQhLaHoq7kj)E zWO}{Eo_+rH%;wh0ak@}1rc)?;hQbSi-jq3I(z*&E(mMG%8uAn5erUD5ioiq4NEDw) z6weDiVBty>iNnXGO>BKLBebg*IF5RY!QOD^nW$JxDZNc1PU~LEXqEO&RC_94@wZ>v zV{UeCPDw?Jc>9YlH=F_;odizao)rN*Qjl#eQro?cL0hY^i}EW14F3bvFTANCd&@ zoq~!*!FgQ5F&Zu!{VS1QVNC;m2;vq$AO`iD*_UC(|sG3>TNq#0teQ} z)2RTCl#l9MG&@o_WqX9Xx1F4V=}E_LuEQgPk*cCo4M1oaM`dPnU^gTN`}#pG6JIVh z>)`PW12$fBhDpGX%XShm4(D;$HIady-d}uL)u*+-xyW4yikan7gD7t{+~QvpJBj8M zFFN#NbLKlWObV|&{bFOC!nMB^=lL`+7!EHy9T-f5(q3uEryt<6z_d5ES^*O>W}-NZ zM)DvYjhJ81UZ(@?w_W-tK^~QE&Q-05w)7X71+sbG)53*g(m*QE=J9QtwZ?6{=lmz{ ztrxl0SGTHP(#v*_@%^;V%D01ssLk>dC#2Hu6E~N8$s366G!iYW&1&0AZSVh_n}?3U}u<2*Ur_0S(28+lth;3AsT`85?{8IYASQo@sEEMTMixK}=Uufu-4so`tK>VlyBkc4h zu5A3z^S}$D!S?$dSRS+RucpW^T7jqpP#TPjJ5m>Gtcc#~EEX!Os@~JN`8lRmzSKgR zRAiAV9(!67OW=zfG>L!(L(7OI{deHx@#Hrp#Ru>0WcE@Iv6u%L|N5VsfvB_@k~-E4 zP_Z5AY~OW%65Cjgw{J;;T;A1Ka5btI3S<)P)wUniOQPzA$Am~TI|!)YeYc!vXa0c7 z;?r3-CHif2Mpi0|8Mcbxx?Cf*cbJuu@0m&`2V||j!<=mikrvR4^Ry{Io{5&5;R{iZ zq$SbXkhFoXhs{ge(;7!%Cpdx?bvo{Q84{1&YMxOv{6S+}K+(Kzi(ud^y~a1NBu{J#ujcEjEo{ZOeD>=szu$S z-)3Njv4KUUSA9*haZyFp`u}#-}OSP*@Zm-rxeWtsB{dL^Rp-sy- zHfGj|EtTHOd6Ff-m@oaQpCc=RY1lN`hs+i=#_r_LtcE854nB5Jq-c@_**3XH2zc(( zwU-DBhOdCd4@ST%FtWHLY?4P5!FSG(glK!uYwZbcpFD4 zCIfPqyT(QDyXaW!r3|FJsirY4D!_zhD&)@Z(&?n7(!ZXHvW!3Kr8iV#0!UoM;zOu( z0;O~rU4g{Z%G9o2{_FtRvf@j`SUxwAm3~yE z`N56QHh~VQR^hHHr!?}3D*?;23HfY+$KW=yXl>G+(w(kb&$*e2 zd|$Rzo|jS|D5{0SrF+g~vqip~6IcVUs}06c6p`9WhHtr3?{GMkLb#{(QK&#~kj5G# zAlC#a(Xl5cg60l~sW{NMlx1QfX$zBdc`SeOZEF6OwV{#xQ4dywOTs5#iVLFNBS7^i zKk_yCJ);5e>Y>@-)$zRwGQV&M*P^KeO9XkRY2*kR`R{YYifxuAQoJS^E?Mb)9=g12 zEXX^SD-Q`%|`O=4Td%MEscbQ8$!snvMG6-a_?UvH5hzmB1Sn_7fp%Ir| zkFJA^Ah8ln#fOsGwVHC-1oVTCNFFe{Yhyy`R$8)qBeC$Gdy)OZ^&7UXo>|#Lm!w&& zH-ppv+4oI<`zX0g008ix6vcnfS5&A10Pz1GOReH2wkD1iMhXT-RwmB>=sxEEd**kW z$HHxsBXRecnqk|nF;V8SzG>Z;kLi#iwn#@~wkan!N0!Nx08;WyfdrexM~3UyrwSk* zq#`J>X6;dI8?HnMupC=0;F_%?_aQvGV+?{vn92|-dV(^KVV5Y`-J2=K4)aIalbf5w zv}wMGF$hRY!9mZeZGr>gZqe)y!i6kGzZSq~qAtP?v_{*GReX=!DY~OrhWISf$>(%w zgmf$!fVnJFzg`DDhfU1LWe9BdMoLY$fp5Rj!|oEKwc`^upJr=tOQ&DXG{vi?9D`TQ zL_CcyXoNjR^BL0v9Rjm4yVTWgI&u;R!F@8IlOY=6=i4FA8~H0w>liN69^50b zn60L9-Lgf(4+h8)K!`>PJg}oQ@c}rag9i$xrihN7?82>l^10vwt_Ih8$YR| zG~3dvBt+_!O}aXwcwZXxBW5xt&-a)1diqM*Pe+6rPhG(I()r3`&m% zy}|?_cl>wrRG^R7$I0RPnejY7c5W{&ES=m=YH=q-z&jm2z3us7ePa#NWaNs{aMfkh z)M84oMRW^=*3Je_tSx*sH{hH@N~?GQONb&3MO@JaI|9vP66OGXaCg~XuZx(Jj(DSm z220AXVVC<&#&b=|GpdHE{KsMHpit{TgK?0YHAT!z5gC+nBg5;IEO2<5pferJCFrl+ z$>K)$e4so?pTmG?iG;bfuTq)u%km&knh0UK4u zBBJ9SBZhywOIDrXE=87U{Qt}VNi5Uc&3vDG$C)53Q3rvUIkOdk&TH|(fAXU(B5m$` z8^c}yiJt1q0m|p!Z3aU9yCdM{vr8%U%p}2tJfH8T3qV*u&UU!d%}1uG5Ag1*9`tK< zp6?Y5h(gTT;Vat=jD{13Q*AHt&%N8z^yQ`zDBa5q6D|8@jTvtpbF3tW$n9vz>woGu zy9x0-R*?4;oYnq&h{}9i9`Dg-fLrl;nm_&Nq;T>L+NXPQA*S_slH1W~5x21n+XCB8RafC%SQ@zO`TLg3`(pXLM{^8&<% zr+1*AMUAXUALv9Eg$($hQO|+M03*)P&Yc)dT<#0Y(o?$#R>8eCe?uFm4lKSll1+I@ z@ld8;XLXM7WYy=!<@xHc7UTgr%jlG?8NR)eqTaNki*Sawu11ndxikYD)4#TuXp+FG z-etkQd71QCCwME=-UM=EJG_fTU1S`#CT&BN7GfJiW5RWu-dStPajM!0;2R0b7N3VC z?{+2J7&*Otod{W#1fI~*l{l@_DU0QU89rr=Hk>!PHVm^KRHXieZj6?cr&coF?hA5RG9&VH|F5-Dneu#(jT2N45(-z_RD zqxp9vnhtoaj=Jr1@_Af(j;(j%_jxwucFcH?7MU_qge4fyrpwNY#+en{kK-%~2V@0f zxcZ|iUPreCP>z&1VH%EcyjCEU--)b-327vWUMz^sHy&qQfr@G#PAfda$m`ZSu(q|r zO-;ZLu#5`zA!cn)ThzR-O{Z?_j`WB?5Dz!BK3IiqPxmZjcRgMhUIog=A_>qc*#PoL zH}-wIve_I9T`yVXDuT7O^z@--ML+iQ__=7#FkgHXNpwrsw~#KN5WY^^H#UV@11rlm zDYcKMWSt?X{n4X=X(&|dDp%K&vZLl=ym64(DGUfPVN1Q*^Gqm?=^a92;RV{M*0w~@ zJou;&2u8AgkzmKT-)a?aH!2zLS2;3bHO(y^FGL( zbp?4Dx28GXvE@)IsbWj=chGO9&~K4iY+l$=Eu|x#$o8w|XUC?DEf&?@lX=!FiwzIA zI)|UR_db1uZiBEHrk#=|RuU@|%1CTSR>_o{*h*}ZFX%SbHqzVhiu+SG752B{RdO*XI-HI>Msx)RU`X6`tF&TD*2=Pv2!{*`Qn6COq5<`Ma0)Z)D z%6FaPja}roA$y+?kgnh_jIbt4)o(K50+#ax`NJvQyW<-&CjmdM7ymLT>l^Vm-2ROj z*k2Ks&c3#1xsbmV4BROZ1oQ0S`9I{O8#^QKVSnG3>w3UE?gN)#_tx)>;=b;|83lR< zChn?1E?+$EjO?MvD4{fa4+Oy33+2pvOB0{<26am6s_z#;){2e(3+^}Am~Z(w zmEY8SP{6MWpBNT)Q4r`jt=`nr{~qa|rs2>VKJoMhOU}Z9KEg?{9mcQTH~$;lr*`+M zw@V9@n`wpb#1LJ{jnvgeOnr4d&h^QyU~{;fh-*(D*za*koQ%W|F$hjmm;z^sNfy3( z+zwT=qv%s16yM4JyTHMBqrSW$jHnK(W9fxM`0Q}^z{s^cHDlI1{x|TkPnKi8%xq5V z`)hqeY^e&l$*jothsOr_0(1!02!pvz*o&)VafUCM2{ZnPNQ}Y%P+`u@dC-UIMuq8h z?a%W&ORX77D7kCcZ*5LpQ z?0T_}pA(bi)TKVqP~`w9X?iSKRvyMs^SP46VW%G>P7Vwhy5Hpx(Bs$P zUgxiYJru?5#}FTy?y{1oD71H*J0A3IqmkTjE#HZA;OQQSXU!f61Cty=S7uWBhx`nf zv&I0JzOgldD=YRNjyXf^=8evB3tea4Pa)Ubu~GAu1jWV4Gf&e{m;f?zPsN8~9FU*muv|aJ3PX!gNME+|o6j zx25d*u6IcJ1jPRFH-Rflwr>50C2N5+RBHgSQ82^05wX{aXF_fr;$!9gnlX`6&h)cC zmqnY5tU#=l>k+>4<@#Mj5V_uK1D`S~fLIC-05NaNIFRY_LykLuZ_G^OsrG4goW^7} zjNrwa_08(hBV$T@_gIKDJCPX~@*{Yzx;c21f0;llrIxX9rZyGirxUK4Gl?To9g3-H z8n6bZwB>o_{rRfi1*^R){Z$-oTVDcP9$XA8^7K}6CZM;{e>h6mVO|Mr7*4Rs?ow^1 zm$vl}Eo-~Ux-C8aX*yd@x;YfJqx6a){TeA5`lfO69M;#8gglw95V#uI>Fz$(UXuG%?$cMvwyxcgaL637(M3uA9X;`Rr1GMhPaPLbk7{-}p) zFugah!wy{ks$jrm!Z(v3!}K1C*#Yw7p7!agaR)TS;!Yf~Sh(=~=;^ ziUK-0R(lH=2S3S!^N4T1ge`o~1Po54N;J>hv^Xj7ly2Ke9DYrrDa3I3Wsm(P@DIZA zLqR%!pHki^NGXZUDpuR0^xhHo9LO>ydjNF{%0S&I0ghiI*#1$Du_WN$UoC&%w%w86SjaMzz0vqyV!RyYRQf zqY@$Y<-YzDo^c_8FxTEbWI8KSNuC|(=tRRa;R?!5E{%4?LALvnmGT^nYcunlNgwUU zA_3o<=guN5KS|3rhCZ7h#b}NDNXSWHNJ8 zlU;0F(s?QzUPY8I1lhakf$W@ zcNBS1MX!ua93)6Io9_V7ghnb;27)4gLCfXZkA4zhllb6sulVV$8gZBDjp1Htw~BeK zzW;e`R)|2BE{a8UsWG36bUqhFGGdmR42NbEMRfJv5={ISl|{Snq|6m-ESweU?m>|! z2Bd_(e^KU%Nk-}lm_t2@oUDL_S6I;8!_rjpyh!7|O1POi15!=gv#2E0sk*SXJ%p!G z+9{w;sY8kX(5NfhK@vIs;&p??VCHq?KAuJC0U0g!LK38~T56R*tCiol(2?Oz*9HTu zc*`wL)_4L7MFRv%PKhr?ctLr1|zA45ys7=>{I6w<*j zXFFcB%?GV4S}FA&P9}_L5RF|(BePje zANZT{+dbe+A|0ZJH_?9KF)b;cW`OqlFwMlDu`XlVzXdiJQ%|d_?lI{qFvtkM?6PT4 z)hc>`-is_U$H9OG8>eQ9Vp1o_2tvTV^MK6b?v3TE@sgT4NlGNvsR`lpi5SgTZR?yo z8{JuVkBY8m&}^prkqfPTbLs@mE>TjMc9ebvpt@*C8*lqsTNSpvvI2~I_895mSikap zo}jf6gbRXK)VrY;-8jIP$SR?8u=$2o1;$1~D?;no*zgsG32f;G@-fGf-AFhR6>PxkMeAXcFH78#s@iEuX`HTA zI(2Q0TTllp_YM+>1DVlZWy1kF%wWywjVAN7!;alT1%%uOFeK=PMG zf=BINprfKu`i!<`4lRJ8+&&Jn7>H_F1&D|L1`nw>GgG*+X=wRkgCvZY(+DcnfP~#b zTCDq_7Yk0gYPU|g89$D%TK8gv?Y@)T^|`&RAzR!Or_}|Eo&` z9c}X6mWzGxK;@R^+wVWc9#zQCiYr6_fd7n_{`=rb9OwTInv*rK|KCSVBN~_g>g7nk zH+_b-(8aD7YmzthY7}v{2QHfUnczrn0l-ig%_5suQiZ9-2kqN8yS~gMCX%r^?E+qx z@C~A{evd~y>9**h%moHShH!5=j3xqd`ShhcHo!sZGG?Z;=k!myJwQWAG^U}4Q4NNc zf6rVEh*0@TvnloOlMg+?)6Qk(O`%O**}P~uwswDCclLh<__81WKmq?66yOZqlYd-9 zUu&N3rCAJ$Y(bhhcA_1ycAM~owsFcU^O<^pj45lM$)rK|h5vzE$tYK*4^_FBJE1xX zM|WtCry_K5;rkgD1{MpXKCjG84%vkiz{?36$*o{so&l>g#hvWLf&5)iS zAe3y^aeTr%oe}y6D?FG@D%xp?I4~WWSs2Uig6&J~1fdb-XpJF2j}qKe-&6+8xhukG zJHc{8behib(iJNP-7rxMCx_X6vkyxrcRPBARd)|4v$u6cLSxWnR6*-f{0(TCHK8z< zGHPGC=ko&KN<)+W7b8E7H6MvUNIMXsf(kMPvbl`zny9an4tXV$MlnNq5%Mm=wO~01RgQL zCznu{0b{ne#xxU3Y!J3RK(C1u5kion+$voMxSv0bGvyF&V3+)1HZXqqomP~6% z;EXI&cJ^0izyH|T*W+AFLo3Hbh{qW9cEb{%KB z>$Z6D;k=MZ=JFWs+hq^wBlz>BBC+xT9;J-4CUw@&2AN7c}N<{jAVdpTjdY(ojR!Hm19lzre1KF>;Z8AgDq=<~W z@xG-*39_IW4+`=?%XYk^7Fm5hy6zYit1d=u!wsfZ=O~YWRX_CYThP#|jk%hd?~mH` zeO_40SWuo-T-^lM(-)zM?Z`zBR;zF_Y!$$ikua$DOsG%`Q?sBZss;`{m8Rt<-ZG~i zN_eXjU?;nLHzrc9M2mkqt+DOOL=Zj;BdQ~61PXQ`n=42K;-dD+#(Trz2fP_m{Hr$M zVR#Z}4+r#v2jLtTU2*%fdFVp{wV8H-dj}iHBo4yHJ~OcjbQ?D|O;#(Ld2GT%{~aPK z&ZGM5)S08w#+hpNAaYMEm3P=4Eiss5BJO5QI`(e%8b_9bkq|FZCguRziVX8C(JDs? z)3(!6Fl6oaxMFx~$f^g2aGRjmDUhcekStPKGJ_%$V1%k-uN!LB>{x8`6R)e0gw;N+ zd^2pJxByTp-e|Z`ES(hBRH-f5Db6vy_l(YA*p1kfK^C!$_H*|!A%$JhNh+XPi+MfB z?ffo%3v=@`zJ@yVR|`eY9mUHy6$~HMw2*K{#2wuCSm~FhsJ6u$WwJwVu@@vOE5C<0 zxTr4lA&%%6GGn8)JNdNs?2u5xF&I35CA+ThX-2*JZx%v0pvuWLA*5#X8f^vU=D^}Ez`Q=W>~RGO&EN6RY58j~N9cbeIer7o|MKvwW!%b6@mThA#*UqQHXYfEp zPM$ES+{m_uG;nVNUR%6R2VgBV5~*Yn94pUAlP#2Qh7@Mh-1LI!8nX22QbyrA&M>Ee z7^&Hkot2giSQfHjDkZB~7 zecV9!km7D%GNJ-srch#oIiz3=nDc8tx=_(1QzL@{3x(%p8dd)<29SXY<@KW5)0l2P zJr625d76)2VE}L9dB#l|*!i65CDwlG@whxu^-}dmYTr=Jfrjb4@wk%3y!KMG+Z1}V zqbi7|6y`L_fCMFRBr39pWz&CtCwbCB@6{{jQNhL`t%;K_kz|)^dlBXa0f@Z@&B+_| z7A3L)_e*rN?z^h%=j>$Y{Zr76r5)?Vj(*nDCzDgtCAs8lR*Ic2Y^}EL;j_He4EAqE zW~y@tL?5i@_urAQs$3mZ%58^bwlJBjgaqQe4zb~U4e{XVax^(?K7qS)h+ei_GiC|m zpS{?uCh}1D5&@%#-naGHB3stuU*Ir(oUBA5LiH=M898vd>+6w3lMPR)>KgEA@kR}> znGKN3ljVaODu~Ih(nYiQsQd4jq@OIt3niE*yVino>{nQpim^@ZWe!hvEm2{$HFMA+ z9969r>{28!>TF-U(Z5ujdg5A6RI;_a56CS;iI&x}TCMwQ#2J*SHj|}uw)e33+cct- zAEV_a5ihSLbRk`>wk}b1og-%|(L|!UWt629iz&LRLe6>NLxn+fK#2K>RC6|9dU{_jeTRzgHH=|Ixrx{?E!D$N#@>bj?2q)g~LlPpzJV zdDxOIY!_`keI)X<%L1Li0+^(xwE#mX{cdY8uPQPF(&c%BhjP?Oc~M1f_?k> z(B{u2Uv{y3C&pow%B;M>0E~nQA>ybdB5EqRu_56V%xf~o^Paqlz%)tuI8y-pM1V%R zMpjtRz*g4{H7{=d44^0WQ_xzmo(%StEkXH0qK+k7RalAfn!GhNhkqEw>RXf!zheF#KZl;_5*tIh+jICeUGH8)w~}4l~Q0 z*hfo3LbuH;#SzT4CSe&La14c0jV%aLV09VQ)KZ{p%&h#NiZvtC=r@Q^|3#X=XQ>J9ls7Ki*Lxa-iWu;0C zsUB*nt!%~l^+;!%m5is09KAXNEo78K0c#pt*GN?~0JVseu)*4rnF(r+wDmPw`pFGm zI?-IpsMg*J`nVMkFJ-)DaAv=h0Ox@wwTr;iS`$sP0z^!Xh@ z1(jsNgphJA#B&DsaWx3S*S2*XFeKQ^88`FUx==xZbwaP3QJX7J&rQ9}KiqY-G8jZW zgPEF?F!V;L1~HFuF3*k@)$WTcrqIZs#Y$<;eM*>E4fH>6oi+m?CRBc$}{+rj60Ty7&6 zbr@vy@0X;DuNB`BG*=0Yz$Y-X`zlP)i-(+Pxb-<-2-1et(oKb=#4Y=9Xnk z+tuS4V9hiNxq98|OENk1!_-mr6ol2^2#(8}dC44jsx^6hu@5cHMaW9D@^j3_cz({{XHfFH^k@o2yYjRt$3oTZ3d z);6^jpRvWSEHq9GGlgw7bIX$sSt@-nqB2wt>-@_l^P@dd>lJ_X`{Qsh{>f(Q-O{Za zgEn|Gi_p``dk{lsm<9QJWyLrG&8O&L(%SYs9>%?8t!SZEe#ZTvz?0iX8mcAnNiwTS zW;NKmHnZBw=|!z|--K-8|HFGjw_K{`i-yMZqDKw(wj0u~B-WDAD}$|8_zc9tcGU}n zEx@kcp7M?@72~;ew^hs^Xx8BNNCHzX-0Ej@gR$ZB3t|mO5ka2*D!GKw>t%xcPQ2RF z*rscEz*yoNTt|M<*-<;{dTC|}Wpz4cJ5~4z(O+ku9GRS|#n<`^`X3=}FYR;S1quN0 zpWpm{zX0OJ005Z(j~9TDwVjdG|1PDkajcX#B_6u`Mv9e2HijAN@oQ^gLP_NO0cwy(qm{kp8D(Ke|@)ki7mw7jrxu4+G3^ZSu=0WU!7kitgY++?fza9@eCX| zjSgdkCab2e3*I%&_ISA9%7y-#f!paZYDk~u!GmsRgz|7-U0c&nA_$h&yNh?YmFjl~ z551oiWaxs1Z1tEoODyCYLg- z6@5DeIK&RLl$Rn0ms;V&-=vZ4sg3u_w;EFnVi)v(qepu{5wnQ)gx zIT_u640qxd1!UI41kTZmj}NklseY&+C%OqBwEPEf-yKu|61_jO>UE85Gw4@m2n?b= zm>&2K3JSo4AxlP^N|foD7cWq8M+*NoRN?N^+CDA>K8_E(Y>!6ff@UxRp%hXTQFF?@ z!ieAKITBCuzBEsADNj@wQ>tsw-I+!ZL_5!Z-w@xt(To(0I9^|*rqy{jJd-V9OO_M{ zTOd`%v!|Aol}d5pkf(sO)*!I(prCzwjxWl=+Vk1$Pa}kNuevz;Pu@aCiRsZ z%o!|i7?G~NVMhjNJtJL&T!U*UK;6&=vbjcR3%P_;7vd4Pc#xj_hfNA0#p%Eo$x*y& zFimDe!x5f(g!DwJw1q^zBRU*5VzE#!f^Bfbv_yRaxxRErhh+F&GZ^RIJ?twI;4HXO zQo`Zi5^s?epV7@ic0Ypuppkh+(1YZEZB#b zzKEfM7=jyT9um3Kh6K7bU~3?y&T^T)pEhtC>-tF-SgH*%D+-_KzfH#&GK(dO=3)i}j;|}MgL+7>E3|;yg{neV@ z0LI)$P@C^iF?JNrfP9K_u4!h^4ccuvW|m?P>VYW6)pQ)mux*1r`1^7JhyoMZI&n(FP<)|8vGU5Ze++{3oD&kW z*s-R+G-K=5aVp~wO7H6gFlpE(C70Kj{vyDQGl?Ul0T_h~V=)V&I*iDS@rT~Wu?Asw zg1>5-JS9J`pN$2i$$YC+>#vc9tbw@L8syZ&S=Nu~B-gI}_F+P(~&>1^t@{I7Cnksn3uVs-8;_gvpBLe+($(gz{1)XKoR4P>D_2q!$Sn zx(-@(KDG;GYdE~Xy&GYF-Lgh1n#Wnf50>O41e((<4T10jZ?ks|?m`Mc*pjuO@&Y^B z5ee6aaF>pqZj{4S10Vp(w$hqNMq9-dQ~xAXFV@n0Q=IUPVq?$nBm+PUN`En4=t_gx zuuJv7(>SytCMzhNjq!px01QOpE2Ro@UEz--?C&8s?oB=-N$|NxLlfL;%GSdMP%OSN zzaXhmSi^DZnek-(m6d4rU#0tm6=AB(gg95iv)2DasrDnDUkE&sdgXw53<%Fv^bcK- zYojCqkHNrri)rG~(IQ7^WPw!>q4e<|gptH1IXhLAGx#JC{)1=(g^5s!*DYojNB}no zhqebM#A-2$13JYFRHon>=5`cmgr`;87+nneT8{dHIIE#~FlsG*g{Zfau>oB+XoCvi zTc9f1Drr+)%Q$@XT{mS~nU{K-aCyoW8*8sw7JS@Kq(Ep z%%!UwBebuTR_eZ#v3kSnuFsE=!+w_Ek0Ug0;Jn_?q1kWV4(XWI=w$B+c^Zf7Gc7GB zu8jP9vB1f7r*92ES4TUusfLvrV>ySyKEe=P+9l_K2lV_;w$Q9o{tF*O6oJNCyZ18A zQU=Akn%t$qZ`y$1F6W20r$Eudm}}#Lm~vg`s6OEz=rx)ob%-MWOb!ZE@>i@DsaO@c zEo0e^%}whDRtnbWgPL`gOi`_i*1w*AtyG)4%`3M8Ot{nWS+qPP-|qAcX6%!ro(~+g zz*Hr$5Ui?7mVRmyBA&*>>8Ml5t+fqcoHbVkv?j9&t&M7VsZslg_8r^#L4ZLoFZE!i zz9ZQ!mi?pEo}3pl4c{#6&$FMx@@C<1-&|cizeYH@y6p3dFY&q3f_|U0R5ax+jJwu^ zgGnErSaByxyP0iop44kKx>n=`{nfFlO={3ovma*LD;g|kQlC7{OBJaXs|CLeansCV zAN2&kvlg*S&4{A-*S8hxIaKHc3ZUM;DgrjWOjT6VGH}&$Bds7A(^A`vHn2j3`LScKM}k46{U$A=$r2~c zh`aOl?y|#dJ#kX)fI>X6)e4p@q2A$J$)#YaCbKD{UV(poJS9=3$`&>DGn5Msd?#z= zH2&6R#4j;@1shch^)^5yYj7zxD4KOe&+;b^WulMp7#sNByRZ1`*Ia}fixNX2OkHhX z{cK9lFWc(G*=V+0rUG3it=jh45{OPVIH-AKS8>U$3#@3;hyYL|s{jzd6*W^7wF5Ra zc%N4{LYS+){8)Z?Eb~dW;UJ_i16|}g^j1HtR0i%*nww*gueuj!aH-(|3X3?KXSr3v z2PvER!1$!_On-HsZH9d>PWj3n``gP`;W^s0Gz!C%$RMo%ln;+Sy6*U&HetdK0Q_5U zWYibZ$>4$2+!#q%R!#O}+{-R{UhvrRKmswY!b`LKl7zf5Qtn4WeuDUjwyj=iUSEIt zh@~m$262gAK~EG}Ww##nFECMV5tfUi*!Smyy{HCY|?DQ?|`*7}i2}Ft41cYjLsS3fDV%e#u z#JFwQ@tt>%vd2vA4*Ff`K_izNRR7*w@kU6|jd;uS((5i>>h<92iI@arENHRU^h|&@ zHux_hG2)|lEy`OJb&(isV&@)pOBEBefLF&vz#OQ}Ir$a}>aqbLJiO=)dLe0Y^JdMY zA!>qj#iJczsHp1?h(>oLfhtKzb??x_HOJnK zVrb~zW@=3!i3j(YyJ($dLJa5kjNjrfb%TlNpwYQoaT8NkEz0z3jO3|y;G<~)& z8||DSYHiC5-mY)sWC_r>58x(y&nS?ysxn8FESj<=%WCwMS#>Du98wjgs|}O|8rVg} zSnYFjhf;8AV8MvC2Rl!)_YtJH9L~4-SgfRW7VG6E*kr^sv+y>j!0OV-MJ-`jT9U#& zp1)+^-|liEKwJK_V5HkFQ^_~&YEoCGYIkv7r;kFi7MJW|&E+a@?GpFWKOA)vh$?y1 z`$Zuu6^XHhbLQ&5b8VH&(BkVmZx5@2$&ah91GI`rmA5;`KTcfB<0eU50G7%=V)^#TC8oYdR8y) zQ)a+^F*~g(wNiScGpnAdXCpReff{|(7JfY%Oi4W`vh0@)f!xW~#b`*iotUJ{P<}$h zZkPtYBivhlor#vQ1A1C6evgp_e~#7-+%T)EX*Vl3pi9imW`Hk`_4YRxQQKQ8c}4Lj z*Gg3%q@vuqg0*vBBNv)FTMT8i2gg&(H}PmUbDN|pbiJCjr_>~WxdINgeffC%IGo_@ zQ?8!)r2s4rCjE7Dpbgm|Ns~|CG($fYAp-9aIpXog%7!66iut$v>J)}oKQO)d_4&&! z`0MKqZ1IBW4h`bpY(Io_igmFd#1!`;)UVc;i?=cBf2#)rV4pnjsy3^nI?{mB5GneFRCbM{-NV@O#@%<+4cQcEq`*U`R@-f9>svztNH5$g zP;T;dDO6H0K&jBb#$rZU#Sgo7ZN(n^81-}OUT^wArFs{(k~OMUv2hbKnV-fJHe!2y z(!7$xi7@YxoHjxcGip{Ib9eOTeeQxJo9%2VFnH6v7dF^qW5$#`Z|4jbh?aF2&2IUa zc~2o-&nUJ{yF`86p3i#p`*XkX&?gXd6Z{pVCr3}vKmU9rtiRrnLVbkYbE zky=dW+0C~#pRape@6%RU#9yxT%`Kv|EyLKkahF}Jn%%?_+j2OD}TmH+a!4+0yLNKbm__cydj7bW7?8UUcMdk72N%r*nks8d+r++ zthu)Z4F-nUvuk@EuidVUXg=Mi(xLUPQD$>+XcS&c4(B27G@;!Tm5Dg9!?$;*hxNva z+oV^NVej^QJ}U&Enk@|vB6~r3ysRGdsD4%Wr=gCq0Dd6kn3&SCR#`MDM(kn}#y;5_ zfvUkE`Xvp7mp#wv*ADxy@MNZlQb0Wg52s?P)qGI%z1d6;9B1(ptr39)UkFI6PCQ|G znFY1t;}sKM@T=3Qd4|rzo=e1q*5Dv6a1n*>=%aa-j;9uqO4xI4K)|@W7-}9#+zR#d zu*y%1k0m3qlFS`&(p%ow^_0yBPkyw8r)6~PdF&*shC9?ow&Fxtidk$E;3pL;+47ZT zGx%wH534KSU6^DdybWVaj#QBn@kk){RZox$w`paxh>#B&gQrDUO#hQx1)v!#1K&c; z&0rT*+&fQUv43z%asyERL{*vBHrBHfylTi=(DDLxk%hXoLKpHSfv1L`B`r|wlX13v z>BbNTM|jIIdfnivYnpfv>3^)D&Fm_Fcggi$kUexZVD=<1J;kUoL6I6^&)yr%5J`A0 zs1t=I<3i-xG2Hi1uior%FUP)cLf(Ap?@Swh5SnOjo0?!IBAG$GvOV>D@-JUt`F~$TfCIScrwU!0DR?0k zbVvo8tRO#WL%}I;z6=G3PX_@cemDY?g=`=wAG>nS>N~wmoXme%kPrkV9BXn_kg&kB zvS2QP6|?s85Ew%;*o!q$S>OA``GGv+K%mwJdj4Y5tk;N~b)X|@jB4VCj}_jKUCs!+Sxze+q+B0h){&7l1an1U}f zA(I6sY64%s4wUImNw{DgCRO=yu@MHZdy1vM|90_#|G=r`sAtlL8Dp@HDl|Yn)IX{r zL$q~x#^8b7BUD%M;t>aZ#w5Qy{C||aLy#y9w1nBVZQHtS+qP}vwr$(CZQHhO+nW2& zY+uBix2&kBZJjtLzs&s6$LUL%-PCO_y>B?7Zq1}5Hi~53HbO(#j+Sik6y-AoUzE>=2xR4EZ8oQ zCnGD5{^I!|;&#eeu^RQ-!WSCddE}Ux?3yYT;#Q2u!35wbg~DD(&wL(OrHtNE*OPNW zxsL$ppoqjAyXG%KN7G`tR~(w-Qdn_5OhP-oKoq9+fBffmhi3B;d8X8o$kO zZ=kh+wZ&C3yns36y);wF=d`&2VHTWtA^(WJ?EF5>?^}*qQ zrD;_v(dox_ImxTz#K*C4Lnzr2EAKb|DYzV1@Tf)imxXD;JRZwsg<8%CYm>0j@_`c_ESrpR|k?f{ae&~|% z-2?DOK6_E#rCs3@OEMa}sB7UuJiG~(*sdNG+-f0e&Q+g<hQo}J#O17x$=hNob-46p32^eQe$$x$gHQS#*t>yZ6*Ck zQkY{IrDGdO3V)=k;?V?Wv4pyDKpz^W&4dM+7AbrsyZrQHCSzaqtlgx_3Z~w0Nu8AQ zeEi;S9V7`K?Gu3(kJdjB9J68y0F9(xKVELvEsL`f;N%`YYa9K;35z5Kj3xV^UukB} z`0TIavg+iWY$g+RKON#ln|r!(X+*%ieL9e(sViQnLyfXD=_eLzuM541aR6mws%bx! ziZ2*hOGkN!@vsX$JRvMutvqE{ycFdURNj>Q!Mv3l>wAG`^F{A29;rTVEmYD3+b2}~0o)SP4 z1Z(E?)N|T!y>iL=1|qva5LvrP+v(!0f|7flT4q3w-u+#l4c5RXEFy&R7UWEqs4%l*^>+K2YgaB{*K zvtR+dj7oI*WjM#xUF(ouWS=fVES0K%?WNG4hXWydov$!$WKJM%@u14^naa4dAx98Jk!UrUZ{^X>15js)ELb-azs1k zTyOa^a)5Iw1X+;5J=oTOsi|ApGV+gNw3-?8S5sk|snf!1f-KXw#ilokgt3}-Ab5ul zmn5-o0Yz>>-%>vd@6j|3M`I~gUMc`KdilqdV=Qe;#Z{0g#^9wZq#K{<>&;kAvT3fw z)g=tm9Sj>wbxj_b6_+MN9J{l;c5wz;cb;F_LUs;tI_Xd+Cuz&T<}*z^lrJ|iQN>W4 zoYG#z&E~Du8fXa5KAx#^w11RXZY)0v$Mnc_V?%izb58F3(K zA#+iNSc$U6dspnJ6{Y{J<+NTn9RD#6G+%s=QlOS+iZI6+&3&_lk!WIlXq?LIYpH$T zKEAf7h_SH92z&}52=r2&)v89DCgHC=+5$I}gEyc22 z*eY$E_B0`;T7BR|fRZ|WfXjIjT<#20a?k4|z*tR%`UE0;Tthce*7yhVoN6dtAj@Kc zS>#>JutW~G^P9YqMp12eg3g}ga{F<(YrGV+xPyt)j^z}`q1^U3x;wB!?ZPeCVJpnG ze7NCauw{hV^pi${eE+=!N`ss){(`WXIyCkA2y{X5>w|=p#e}Bri90@YP{bEr(n9RB z+1pVTBg(b*v`XLP52oe^)zs`l;@KvB`qLVt|G0?Q-V!S7H17;#~)krU*^-vD}u{q7A0WLQ5h0tA~&pBNFzQ<*UZCBG3 zjm%2W06Or!E|2>3atVv7^DYtcu%N7Kr@Vozf|3_>9PU^ZfnAaJXo(^={ytHjoqBMFlTLfb>K7InQWLNdO-yZ(Hcc|hFwfNHFkq4 zMAnRTl&@35a1#)1EuQjP$gn?>N&N;p>h0ACE#_oxm`|h^79P&>V_!GyxuCE(=uH-+ z`*9J`eyZ51YS79&tW?QTD#B&PlBxT*^`_nud9lUnFZC_nPAy|p?R3|*R)e!8m%n&R z)WH8%*6G#vX7q8NmM8c7K^`&j#M+dlinD1`_cljgWvmLH5qz;oT!wj-(|yoR8)%Gkeu&d! z#^r4rm?xI3l-TtM|CqqrDuD8D8VXL!L=k7E1k=D1T|oNz;J5I)!HIy9X+vV1X@uE~+I&|!&9BLk}z?9P^!hkgNbc zg@XN)N5^x3=+A2crza9J8t*n{-H6(3HLl^aOT+m&X3IHUnK-cC;mUk5>#=xl@3^Rp z_O}>3^ZZzvwSGv7CNsEduu2rVMT%Z-Be%xZ?0d(}%Z1sK?}PnPhOAp|QNxaV?p677 z(BjhNqwn$*zaS>n7tckXlA`DGW}G+r)Ho;*br-J05J0*iy_K)5btIjw{ZCHZX}yn5 z?x=Ru`FC5IVNY}~U+e@G5`AODEZ|{+EG1D9gnikr-O4abVGlfRY_A5{zcEx(8CL^z z4u)iZlg3u-PY(2a(N&>lhRQ7&DxA)IFWR4P|8UK*ym~m`CerOMRY?~i$|>pLm90TU zB|S>jZuB}b%L6MSdSU8xAj6`cWemkMpQw5&XGM!@fUap-yBQVBq*iP(;8Ap{@VGNE zQau6Kp=$11SK+EByDhXBp)NYl=KyM0cVfK5wP9|&cwD}k^n?H3$uIMnY%UY7P$# z@y}hdF_9okFR^9&`^h7uh-5MzzPMvhp9(J{96y-8KgCS1{QA0XyiaO<@*c47I&_#6 z%*=XsLUhJ7<7L+)ehczFIpg~kUu=l^&W-BE813F=d41ccfpN%)z-_vf3mv6}QNng= z&=hgJ@!}qei;II-zpDLqwCl81d>Tf8c(r0Ew&Fh=!YqF3 z*K0VwDfM?087+v?shcFa+ad)jRea0+9LT9Dr{l^fjWHCQCaYv?u$G@8r$Hn`wEO$J zcw+eKXY!e`OLAMmW2X$9&{kpwZc=>cI4-89A> z@Cc@Dwx>z+T_dZgQhW}@wD-AxPW-|opr3Bq?1e(In?byzDvLeDt0s@bjCL#|9?$5e zczirMEqm!aiDjzzs%lt0Rzz|*qYpJUM{o~X96_%r>)FKm`h6`+E5YD6mqiFmT$s3WOfBBN7seX`GPA(LgHvE(7h8t-a@Unq20qXKK|lSKL^A} z!4~zd9c8FCq~@5r`0RB495U|tg*)>7#H}rQmk2^lO&2{(} z!ib{P$zy|#VtMzkqi!gFy!tt_8R|oe6l`Fuqhv6uwSW@6s(jt4GfV$7{@tf?Krj&N z^k$dJ=f6vFT{dpZc1USyXz++AK>MF)9xvlf>JftPxRPEIi<$iq_jWh_+sk?5IhDI> z(21RWH;~VRluyi1zmWY@xTtr3fTcE4%Akx+hM%EB259Y}SS`fbF;I5~bnA@idcaPs zUOuyW0$-QMwWEJDeBjbylamA-O&t6UQOt$`iJ@Vzc#>E4u6uaf41(OjG6iSjL^BhO z;*v@}LyRH)eL#Eff;8cpJEd_0g{~zS&YtW6ppdo7jFM^#?3eCWj>$-9u6u>6j zlzvCTrP2K@%nSG=BZ019)u6+`P^-TtR&n=`EWkVI%j%qBHEV(AKHdeav%m*xJKiy# z3I=aAD3qTB?i-`Jkb2ZI1Bj7TsK`-;prmOJ-lU$pG(8E$Fn!bXcOvKEwj&WxeqFd9 zBkQ400a!lp2dOK&?Rm5oiY^=Ys)ylI0(k+0!e3P>?+7)$u!q&qut9zHrK<22NkwsV zs!e62A~4Wuo9#;;!qAP7tq_*V;~a&xY_IdXJh-v z3SVAxD^zFAk)hYYNB{4O?Pm`5L;^P92d~)Bfwv7@$Dtr@@ng<0^#*qRO<}2*t0dgI z-L(bTBPpo`&|y5Tq>*}1Y6FYM&AJ9k`DOKZ=S@-Be^^!eq8(GwbvEganL@T40hv=# zOgafFbk>|)1@w{|&W^zs;QO<{c{7iD$8{jxi#SzPcFx7z&!#}_OM_?3HJfa0Hw$pP z;_f)6lTdzK>Zgy}sJ;jHBj6MYZ#l;DQ<@^B;uVQ;kGQX&DF7+J?reacW{Qh#i#Cxd z5-%A~x0(-zRxt_L=jPOHO2+D5Z}70~#!-IO!=ze3+ZRFTsvQ{HVE8tEY-nw5E!Zlu z=hI*N#oQ>{kq~H6hqQq;1a9fkm5g1Pml3u* zHeB)~6A87Fc~$;;i?c6PtDv_ymqy8qRYx6tPe$oa*S9wfyOA(3%=cj)5H31HGlS}D zYWbP(MKLnv)4yU<6#4>P$nJTFxVX0_KE0symuuB^J zIZ%1Z{JYO82hQ%!R_QJ?hu zTbBKZGF>GufEboO#Chc@L@2KvCXHg{yz>(TyR(`V5GRN_^L8y(z?Fu(I1$havW7g= z<_s(})P%{<{}RKhZ0D7L>vmcb8mdc&1fUAH6A72Y&vxP$0Tk~MeGw@kF${Rdh?(0_ z#p!AU?^DqgFA~VKk(%k-RAS7tyRy*FczR>`@F#zmq5M|7jAkcz|riJfeg? zqcL!W?g+T+E++pDNrP@UM!5i~l*MpwKl0|(C-IMnTEe=pX2;ZMHA}ao&g19+CS-&N+cWOE6W0(t}S{E8a*5N_GysB`LwQm}iZpKnJ1@V)J z6VIrsxW{&`<(U-PI{Fk;sZA9}PM*H_c-Xw}K(a1%g1R zgBKu@WChf#Os{y5Vw--lmoNJZ>yL>mjzlNrr}=ugMW(Lju4J1URcUrUv8Bmx=3XNI z)fX%FOJnv-DOV*^F<|ZI+F_1HwHjArm~vjFB;9;=Xr*k(-To0utL3o~J8RadLI{ z!zm^jTqdlVGvF;8ZFg?5`Wot?Xk!+cu?|_Kd8*j3NHeAx7B;khfCC#!8`DJM)-<^~ zJXe4qFqntOf|w}aPNYh7Vr+O_cr!ah_~&h~`TY+{GSL_r4~?ECOR+e&T!7@8{Em#g z7FKxDZo3gTc{C4d+I%7Zxctq@*$Fn<9?aWL2$2s@orYYEXhnq#VC zgjNuKvJi>S>OqbKLsVNDR!EbVV}y~iPojuG9rylPW8od49s!s|=^^;mvuwq$(cTAR z6)$zUAbEdHr^@>z(%h8-j~>wx`JhhRmDSLXKAJQ^3((<+=j|+t3l$97PWmLrSkv!D zL*z^*%kD%U31^d1ev`r!6GR8{lUz!mLCX^q$}#7otXi$`k)EVZ|Lak;Wnr6=Iygv6 zhJ901Q5VBn*J0v{TwidqJ_4dy##({16l>Ss{OaAeeUa}@=*Nm(8otOIU!QS)q7`$r zrwcuKVaAIQz=Q?Rcy~af}&YN8DEiGz2^OvvRCXIf;$-H zy6*LH7LXI_5JKS_Ii^R38j6co!ED?26xKD9(kp%se+L@{s);!dcZ>VCW|7k3G3DNC z_sw2Rc)F`p{Oid1&{&LjTbbW%XYF%*)+gP~-5y+QIZ?LnRp8HtUxz1Kpl7&|muGXq z?5#&OkxzwohjlE~Z+;Q?>OUXfC%yv9!@Gy_x+t)`7e27%LI-XZ>q4cIiR{`~Dw**` zfKM&*Y56%a5##QV+IB73)yg#k-Wq+_RB^L)(c_u>Yj|F6p3E4rp@mkSWzvOqdOf## zJ=kk6_JT%ifj_}K9X(&_X_I<}g)*7E%srhNk8d|@Qmbb$4+<}{*ByEoDZgvkh<9?V zO0SRB;}k@cUPM9(*|Q;E2c8GTwz*3dEW@KR{m+yv&QaUEbw8hfOdCkm-8bGzmub^}jGr=x7YX)}uk zU)CPImJf5Ac^odIR|hj&ecZygG;O*l`>=LC%M|9OOwZis67E-HE_D7r%pyD~;YpVv z?zvK6M?;iZ?>@P!{t>c{kW=w|+hrWh;6<-#tB#y^km?gU(IduvcYi!K;HpR(;LT z8-Iw`s&D=knX@d9iqy^g-Q45*Z$GYM^zqF9hqU~+1^>_cu>{)x-83TV;^E=`zi-IP z>i_Z=SP_0}dJp_y(z81pQ{jd7$pjKvWSE;Y>Wx7++#x8=jT?)_Q;WXD(XFB8pWaG zO+ApBHsh#dYLU{x$UMZK;>K)`)nUmtZf$Vb3|_|*_3#&uDRJ_Zw+8HJR1vSdom&|m zn(k6hyQ3TsN2s{eDGw;Km{9C93X?GEx&6EG5C?Q++-8bTXr!M7EJ9rG1&=vJ6H*Df zlsTPlGPpm&{<9Ol#Ahw0JKS`pvR!0A_iz2Qx|6uU)VfD45Wonn!R7|przrXvHq`Ds zy!?qu11zT@*;1b_+%h~6j%vF`mczV2>r&$wk`9QVIdo2hm=fIG5GdWAfm+UA=w=^;Y z#-=pUVO)xGa#OR>Fg3NCmaTuf@pELm=1V*4IIer0?(D(xB&l=9D;nFg3K@1i44c`vf<#((%nyl zf1;lumBO|yp~x2;$+<2DK@n(v$i{v$U+ZB~2gphs0+DdKww4?vFN&WbK{Ps!T|4D? z-~kYjU$QT*Db$`rk>P2b*mE&g|ExCZ%jq?~(_>vW2%23^KGCCrZ6G-(X=F9TljC1; zh=qaa2fFhvVg4f_p})fW7V6tN1Q{(%M>QSCI)(dJwTff(S2borTyHl+K<{26N}C={eE=JcUeS7h<6lUe_3n|+>Ii$?DwB# zTf_iHd4>pMkHq~bh88Qa1ZBX~5F$m+V`;kJMvsa)MX6F*`WOvsiNgRQdhd!U zZ(iv$YW<^y(q#VO!g!ef zph>C6(xzN<`mNAqL}vBqL0~gEOm9U6na&6+*`dE2z?MD34*1F~9rdbk%^JP8AadhG zY_5q1)nGIGF#Y(nvjLgU#M8+^cKCnzc9Yt(3 zr*m5Gwz4kUCd~;HrWJsBjk{W|$Cy0}89Un+;#2lt-|cZzwpiAs66QCO1?= zrHz|6-O*(>@0p#;H%F?`SPrQXQP^1ya%Zi~D?vFn_JUq6ybv%jWrR-wjx7vs4|u6OU$Y{n)nqkl7I%1u^9Z@P%{?V&zz z7O)xp*iDa`FQ?-*eL23Oqk)jxNYWVdrZYdqd3d{Af19i`4S(S$^KGKXxU7b7a^o|x zELJZ5EMx-s66Y~oJ?!JQ7xOx7`9;z4-Bs-~=^KGKSb;K|6O*ct>TQu?DulKT`f1)x z8U%qEqk%-OoS$pw)wJ(Cq3GuTwJdJT&%>__VKT?r+)f`SzyBECy*!sz-sHJ@FSG69 zeFLZv3}$H-^`9b{Q_{4ywl-5boi-OY<1DYaxqtXJ9>=-&e>lqqt|vA&nw2We>d>v7 zuVrZZ>t%vEWllbREH~?qsFAy&P1zzkJ;|kf0Y@24*>3r2HNZa7$J3a;j<~|0nKITG}!WPQw z<+uC#yDdWNO-DF*=QNDaeWD$|4#g6v#Nf&!$_*xoiqLnYRdX14wuKebgtF?gd*l^& zXr!^w?ep7z6t*C8{Wy~7@jdo8n=+oSuRWiymggL*_{r89_d8e<4??o2+0{O(0(wL6PF$gZ1(y_(@cCIPVcd*pyS*wAlAi&=(fk z7w3PFY56r=xlMs!W@0fjl>8Xklz_P@hmw=H_g~>L$RFa~DL-chYNOQtIHPgu8bscy zNBwSn_IIBlJ|B`i0OZw{ZLRe?M1R6TDyF>+f$^+q1E%2bHpdJ;;0`(@FtoB>ed5TC zm0XnYj-0Ojq8@NbJ>YyEhC~%*ywE}Ne}WY}XEj>sz=Fle1>O=#J{`cbEiHc49IgSJ zW&YVtN2?#u$=rgO5n+Nq^a>71&m%i1BBrt6-)l{SrI4a%TVLv_I5g`t zY5GP62Uu40oop+|z}iK&`QKWX_Mt~^V>~Ar1J!}b*;9ZEKr_k1hWcyzJA`Zn{sQDo zJCrE(hz|52^OXR!g#ql7wHz(L8Z_wv$}?2r_Ll>&>jj{uD&B8^XXaeM|oao6zL1bsqI~2SFAk4wTEvLIixXa5Bc9gZ%w%XzV zf;ZxzB3mu&1?b7>1pZl_EUcwxzIO=&k-paIc##nXBhz?3iNygJ2bPau65I%+`oec8 z-(Sva(d=B4x99@!Atwv$99R}kyLM0KvEPO{!s3oXY%W(rjO4E@Mk`l^uJnBqkRFLE zP_7g-)!d7_`uh;};l}ayDw0s;HI=}t9&LA)Lz#3KF!}Q16C*1wrx89^F<{*)v5pVW zJeoTdzJ2-taCy+ddj77X9k2#v>Uzf2`YCB_;KJS-M~w`YPIv7`E#Kl{*7p(i(Dy4m zE_FuMbhLcj>$xq3j0!s8m9z(8jcGgG^fIKy3C7-2_Y)RiWWS!rQ$Rl9phdV;%Yi1U zm@pYm(hRjsW47XB)sn(ngYHG|f7G+&J`7~90BtYr9P=)?J8|42^m8yWoI!9{vi|*a zG0^poHn+;awy}lioG!GdtMHa4`fcl?>r0-J2t1hK1Am#wE;_jEzt z%RzQRi+0Xf&_<7Le)D~PWt|(HXrC7)RndUl#0*?yUB21)bi%k0pB(M^00VwE#;?tn z+C-?Q5|{GAj94w+g0gt?bIT*txJc*Vd#>ocIgI*b)lh)3msQj@WI|H1r&x0#f0tXo zc}inD&XRX$q6uf@M$Fu*{`yWf;`T{Vkevd~ zDb%#k#=05dulozUH~DGXPM1Sl3DGR_i820|MqG^%&_b!t?M3uDe%FC3HW-EAv56ok zEJwe6$bMm#j>!`>Z6H@?iRWJB5(*-X_^cx^-={q_=$lY(Y~%9)?1R~kYfkJwAs%^R ztODYEeUucQX&(oqVjg=GEUmdd1{R$fQ(y$uxW+S}0P=CT2=73(?^;kUOK5znUDgHC7$sbx6B+N&BSiJfH(%5)*3?4&wj0oWB zZ%qk{B22lvNH-=7(Z9)?wIu6s_Y`;W;CIiNIQ1P;X4;y#w*rKPZoRGO-i@E{PKEu` ze6ojI;c^3;!p1`CZuu%ED|p4>lBJ)4kpi_=x=){}`2Qje^cNfC{o_BMejbRM@V(yc zEqZ>J@YDG8GVtl?cT`A}zYkE(y(lM>>7z^(mxse)_{Lh@wZ$oS202{Bx6EqJkvCns zCnjZNM5h|4Ar&yG7s6vwsgB4800r&`>)KvGs5C)3h29I*-35n4ZVlW0;EiXmlY1R_ z`re_eudG_gx<%|Vmar(OxVj~CEr!`6Z7@)}xooi-&^I2iL&dGZaVmhI+p4(vHA4^Ss{sm~ zgUtx$Lg&t4o2{$1nRXSK2@Qln>m`n3ZCZ_>d)!^TOZmJNMr%54rhMGE`;VpNb`1ejX_ELw=jhxkwGdjw@6 zf56NLLh=NcUJCmD{mi0Ps&r;qBOpBo53robITQp%7yb@m1x?^tQ5I9O2<;l6q7E3i z2|~ZV07OaUjPa@=gX#&U7LXGkF47H~-6)NH93C1!qjz)SAjb(cQS$M~M1^5grfNh6 zncp`a%iDQ(haoGf2#eiM^U^aSW_OCWTq5v(E7T9AA(zye}0 z_tPF4d@a4EqZhT>3i^MnpzI2LeA+dTWjiUR>QslST}&MO+nkGpmq8&CK=3hB!`RS+?fsok_qbDWeI^+HgS4#oTa zB6WsPUZfPIOXZ9n#7ETofb<-MJJt?CqRkm8&lM*Wy7QtXzo z?-RGjpm-`V1=IJTai`Xm+Bg;dW0!{y(-y5AuS~>nP$~iw+7v!daNRMx#mc`~_gYlQ+$goX|mX~v%Mb=q*Z9ot!379IpBcpZ}S7$uw%{d4 z4^)ni9av?68=edecFA*$r0%3jpWy8!nek!bwuK?#iWtG1vt_Qj=&$D>km@n?DbbyN zATJ~EeVFMOjIu7^`J`Bmn`iM<5#GXBaA>V|4d(Tq6hYF`vC@)U<(srXTq zM93R!Pw$IBo(d@N?#T=7RntvYExUNVoInl$KLJykd}xqm|D%$APhww#jroZ?gO%mO z-XCKKF_VZ0N{)c;0pjOUPLAcw&cyIpAeL1^U%WvS(6g#flo6CP>1Ql0wv<^|M`Bn< zIBWH}Sc_)@MOk&OCsh`VkQFXRGyR>c2wC{SZBz;s!|Mp*z~anI(V8Eb=mxb7ko0jp^qNKo2zP4>2m+kA@ zv)N^2I2~LbPM3cjCLBqA z9i69|smV&YTf|s})4%f&5>@&@C=_!DDpZXB%E0Z=V(j~)SQd6vf~qSD-Iw;%a$NEe zG>B`dQLY9-&BPtbK=UT1(9$kE(d+|6Xz6wCyq#q6!9}`f^Q&mOBBo9jexh|V}kjdd40q(U#&~)N{R-|O6+07^Nk5xYFuTNo$)WYkk z|ABMXm^mUi4~TC9N|D0Kxaw9g zXdawwZjvOYUsJwKV^j-9npl4B>++LW|8|ohB3X!6*zx@2p1FbXaybF7!y25@bwO%w zOC68|jFhVv!pTUgNyS1x>%Pq6UmXhLmq_0~JBkKNn^O72=fI#0RJUZvd#wos)Ikme zBsBpGU3Z3^oZ6>(D?+kEPm|g32;c`o<}jnq@%_5Mm!D*8?wY$pi$y8T$yUZqdZkk z$ic9pbvbgNaV_G9BH?APEp(xWR0AIOeF04+AB*Zc8Qg|qH}H1^jmNuIDTdgGd}{|< zNB+|8KkDa0N?ev7CvEf^;@)Na*WuDVy*6}kb2{ATAb20nAx=|tloDQ?b0z0S!vV!xnH`0sq8m}(XUil5N{Hs^T20aVZCjw6FNa;8R zrH=7qBy%?=V(gSOObB$74X2A7F*lGNso74Q;pN$=#`1o0YHJ>W1&s^))J~isxV42VLx>tS zhx1*xgycf*fD?>W?(=xG@X_8P$vsWp$Ye(pkid^0Z>N2NMBjc_>WYF{p3*?~$p$EM zwuVPQ21bBv$T|j?&J^mtGA4Xz1h$l(t}R2f8<)}bsn%piG2_g8{vCSIg(ytAhvpw_wgzJlf>Byn$xjlyXr1hct0(SZ9x zPDI0wi)=+;NVk5=etQX$G-37e2qD;!kNGflPMECEzLKhuA;C?k8PLjtN+n?%?(g(}xz&3m;_mr40=^yos z8TPnO!lcutFo@$=*WSTsAzGhctpvB94tZg(mrnCd^Jw63368%F+t(L6?khc1gU9i^ zH}jOpq@y2bYCXKDH#Sm6@n)TzSQ<&eVg>6jtmZ48R3=lNJCii#md&pYchl)aw}-|V z4>Ig6XWBn2YY3~Tb@0lz4%$&4#gc8ba#=noLV;?^!E-^L&)IWj*b~*}Pl=I5bUW+4 zgEZh7PNR*ANiU5?{4HriQ#^BiV@C+(o>f!XW=Z0L*P_CLVLaFnfG&ald$2eEGMHG_ z!HA6Q3jN0tX=ck6r0WbmV3Qj{P8Zi2)j8&16^B2#pjCttXqARD$P|A_n_X{`?%&=~h5X38fy3tAR1p@y z*^TX<-szPR57-utntt6oeBHYj+$zajgIJBgLbUZ%@Llruob`A-hmSI_=6;KjN)Yu@ z`9DHu@TIt!U$xWy!kyM8RTaotJOgzB84{R*_uhgU4gaWX)^#GfavZH9`rs;c?!Elp z1*96JRPfn5^Q-uPiu9+bz$Jw$J6jz(Qhk$8agouW>y=BA;0rh<2 zYbiWZ$d5x5pda22_HP~N-VC;HooL=P*%}{gVXP#;sE6ya&p?`l5>dux61g$Kg%-H55ylfiU2`4#AUyS zZ390{$fhlj3XikB^`(9NDF69Vl=dP+DJ2@VjDk_f6cfY4^sEyC{!+AH>;!;y>Gb=4 zu{kEzWJ-puxUI56jIh>8w7wplfbUbGGjX z=UdPc@9_Bo!}$DnX+oq;Usx96`kQPUM5NX6-+Q(^&|+v<>U!GIpJMF!1WKKh-=uEJTI@l-PDBx{F+%w)O;B8aw*NGXBaLFGBxmVlc<^*NiBfRgFqY@Top12w~xJ5tlved(zdH{?d|HsnT| zpCRj6I1vFtqsbttdS61TqazMfSM-JulGW<9$~eZXhB_lgDL1r^xbS;|4KQjAH7W(| zpUcP}{v&UibE_#P)|ZXc38w&|L#B<=+eQWGIv@OqwzAHjIaZ2vX_fBqk?%wyvB~<2>D9CdxTc1 zF+se2RpKPX9GU~C=P;e(HH=0rd&5*nkkwjl*yI4#jz$&I{m{SqFSh1r-hQQT{>J+d zk2s3&o!*q3_s4fxtgZx(o^u{i;?Y1qoM&iMMm8wPf=BQPQxqS!eECPl@29y|K9xc| zlk|8CKXPM~l#5aJXs+Wl>6^YnNQ1bEHpX56{!5f7Ze@Hq9i__68@YN^!re;Nf=bnqe0K=*ucVWM$0~g zRT(w?BlXy+mqCbKkB&AxN4~?AtUsHxPK6N+HjyFPOMRuf4V$T{~Qg8~#`ddNF=$QX(x^d*zPS?dN zgtym~1BP*iV3(oz+UT%vU=1N!Lk{dvO%_1q(01R_Hbo`7$0|}9UALOA_KQm%QYx8} zvhueP5`KwTWBQQw_zdngn>xn!1rC^O;sUy-|jMA zEQ=n0b;alf4vHYr5X_n;vlbBEG$|89EnQ4FjH=Cf>Iv5?E{gnMc#4nj_e;|HaaH+$ zS&;HcH=y;hd8m2X*EXm}scu@6MT1lOAR&CXi5(1TW$Nk8mURsgY!cJLNZ1z|u7P)7 zR`$HVoc(_(&_VL_Nz~W?0RJg-|FdSdi3$L~_J7pu6iw`{EsPADP5yVi?pWPMX_Fn{ zpX;Gs+Kioinsm<23_?32Ey02?edzd1+KfA*8pH)>lX$W#>7{p9@}>-u#%86Ahjrm0BNYKkgRS+giU1L*&g& z7&%c*PKZKYt}M)!IhDjwQ23FXs1eD(X7($o%>_7Fm^#Nw$LsKWbAT~|BVFu(`l@y@ zAR6>DmR4*a7t1cA$EX#R0d^Gb5|$tXm3q zg?I3PjIo9d3Fx_9WGhE_NH5uBb*-(X+PZO{_}Y*F32XJxy5 zLEqn^OFUVe!GkuMRU^ZsveUsM9A$^rBsVk!l^`#Kv9CPHwC8xMxM$sEd~TVR9`|iD zb@x#iqmQh2+!-VvIk1$D)3%gj)N7^V-&BO9DtZgBbYJeqV|s&U&HrL(LTYvS z5!%~Up9rAUxFwB@vz1T7*?R{e6Vtjv|R#xw;yvB{a?i6Nld#H9dR2_WOFA$cayS#LGbNOA88?~43oho>U$o;XRoVxW+PU9`t|I8mnZt=<9C)u+7-N4Ff!B%_?cx*d=BBjCqdrBht#qRZy68xuh$*M4t{foQrd|^T8a3 zQ=)mfv0<$1Yb<$>8P2~+Ah1vZqq{rQqw8KQ7a0W(ClIQsD#`?OqC%QHo?h)sMAa!s zTX;AyNRmwvD^GXBP+`s9S4Yh;U$wiOA4Ah*9PI*+Q4P@=^M^V+yeIPFS!N8uiu*IU zfx*>rCXSyb7$@V2lUpFK?q1B_lsBA!xM4efFVR9OuATABejUa**tGw&&1_xHYTB!^Yzv{7VV$g zpa`S}RY}C;=R$xq_1=rRk|+-<;pA78_bAE_lI_R}3&xYHs$U2_7BX2-*`gL&K`jhb>-7Q2$Wb zv0Ahb%0^J2Vq+ajmKJa)&q#C-DsfHTi6G~G?ZtypZjxAwCgyuS%Z-)F1OaPq^Pfm3 zrjyp&qR@yUnsi+lDUF|wCAi2X$ENJ2cV)9^R!%O5s1+n3U5jRSJL39>#iKx1J@z@q z*mr)wmmf`w6giuErR-LdeIH`dPj@M%Q}v1%x%o#dE^#Ki<92DkMz~I+`Ei(ZIfcmS6B*D2Eu}s*+Dfs1+M%Ebq#__DSD<8l7kG_qzt< zTTvFDZ)1N!|08cSpMRtZ2Lk~32lW0u9Ny#q=Wr-sZ?Et6Ut8Ff#*bWp_-X{rn zq6Pm=&WpygIXZ zyRaO2hU^-V_<>3j<{ByPxO8^H`mn`x*~%x$slHNQV-NJru5~=Pb$0x<{Hk}cOVnWf zPFm*1Sn!|325xpZ{g?{XabCM*8bbk)igyI+zm1W7jKN#X)5jY1Qqih>D(99pdy8C_km#bZt4)8 z5;58;*hz#FM?O~n9I;STosiv;-DzFcvb{o5id`|{Sf5)>eeGXFkiQ% zBng!EgJ$KqzNNquu5qc81>_>BdN~>#7lvg7x}bKy$r4s5NcT7d!A!>z8dqpwdD|7y zPVnY_li#4J&GSU5YjZdh``wzC7aITe;oxb&3wm=QDrlS(Y{(EUJfM={4!c6+Eok4- zc$0FjCJ6^NQ0Xzx746y*JA+14*pVhOYcS9#=R>R0vY* z_G8I8A{D9$y4l~jtIe50MD)8s<4NS|*;^CJ0^}VfgW{WxS0p?iQlROCBVvI%P)nWZ zWCCKbUJY!m<*lVeEQgTD`&+96mM|h#WviT6F1L){={-o2UX21hb|>m&p8hUGq@2|J z8%fGR>U9(*eL2hGk9qBi>b8UAA1t2nQp=ds=K9LUJ=aCN=(gjl5bS5qn^!R6T%*Xd zWsVqsNlF8U5opBLIRD#<5OIaQzv%IrCj+9%k=doc^XP1fnID%5#SB3nG8JfeM!jAa z4=(kbcg2ve`t2fOMr!aX>c}b>Vqs=8{3e4Slyo*e%0^v~3%JEPm(Ts0Rhw$*Yd!UzSEzVVR>GL)9uR(R%W}*k z5Ix1uZ?cJZB>E+~_PG0N;9Ha)?* zeK|JA(>7reuZ+nsxU|*#0R^fvg`r1CIH-+kSsmXb6he*PqOaF$eaNY_vD3nn6lcGX zF_SeL#k^zW0pBFc}&g|Aw!MswQVFRr?4e>%kP|g9s7?_fJ2Hg>zO!5!Xdf8l%3HGwc}DH1(N-> zG9OtmZ;~|~uTWHpOMW~4K>>+7XqDwsHn9_YIuH3ZBaB(c$pB^iq@SU&aymb0Z8*MN zK6YD12fhkP#(e4m!M94evUCVr!AoF@j_@XCT^`z3kNWB+o&5!4Ec>K-WNPN{@T*Yf zUbA6zT3K_MCBHCH(UIO9 z1$^$pYRqO<2S((O!{*JeVVQY6NkiqXS)-M$-69@SyOoYQh7wIt1-3q`Mu)P;1H)P+ z6n96Knp z0ce7}$U_8+ZQfwD-*AZjIydz&SPHSe4oUhEZ>CpB)qP16d$AQ=(Kh4c*kN=;dmVQI zbp$*B?Lq`w`!_0j!kiA)yMYZIsqT`w3n^W{GjD(WRLXMXQ_J!n!2GuUKbu->gJD2# z>8%o3aJI7*T~3!Dc{?{Zo9zkgQ5n6B>*mkz0ks~h?^X(%Bi7H;o8wQe5Ngq5(H05M zr^PG#2k3RfO3uwyAW!1!-H#VIn{%ksYS^f;EA9oYv@KkAt^<7S7Pp`VQ&ob zjGFHmE$(8iuf=!&!vMl3K8%_56C3qUAN2pzA^kT90}*pmW1IhChxFUp7MT;_tE=09 zgoFN3sk zD6N*azMn8_A}PO=ie%S?u!5Yq(2F&}o!=jdHRIi3RBo-)C8mQ0J?I7r8JYTm2@}rT zf<~tiC0Up;0Yi>)g1OzKwn3n&xm^JMYWq7VThcnQcw5+ntl`toXHEh`%Ez0BI*4j+ zB9VJp{1_t&BmHVcnJr-^Matd8YBame;!eOM zyMypo%FTFkH1BbW+ED@(RPUYGVu3tnr*hhY?3}tJ{MJmovd&S(p4Kbp(gF?qNoOeqa{9yobPztRgloD-HwJ8oF-sN}H@4t0!cwq#{Dy*3 zmej!E&g<7M2Tu+k=N5jq_>~^UhAv}*nSx|9!VOPg0w4Kk&35s81;W%|ZE@ddAVh%V zbVVr|!RXj6b%L5mCPa+3QnKhgNI9jX!-R;!0Q>0)NTA6DnU)*r&X<^~jDvh%6=g@iV{%RAAgndg6?p9C37S4Xs-ej zc_E_SY;BF=w=!1}@SBAVbBbz~K-rT8LO&UlX)XmdmCh9!lTuzTQ)nXy$n&ms)xgAw z37;Y9oGEpA$dDn6AnY1(&I|DPbgnBuRg1A>ZNV5IEDyhAn0=lJsx7YrnYF%fbg6kE zb2b0rSWhXkBNt`hSAs09;t`0jQM=VakRXZ`o9U)wO)2G`R?$ z0}=AAq-?(`(1Rqjtr&5MqC1WR=KY6rzBS998rL3ZwNP#o0Km5plWc`S?7hZv;yi1` z@Q@;xDOfEFN3xVvDp0ElMFuo)f?p3HQo3x0b&tm%{lh*i2(E)<&17VyoAef;r>7iV zxA!}c?vNEy@DPvp>ml;%n5X$9)DhDi(qco9&Q%`x`4Ak;kl0Xl4r(=MCHM0)r~Fw! zwlgt)7oG5q#qeAl;zdHNBk-&h9H*Tt%94lN$;J47qrtayzncxo)FDD%Zr5jv97aN? zhJn40<%1zJH|iZJa$(k%Z2?ZFuV^q1S=F~O3o9@nJ9AQIrJStEs!|vIo{iYg;ohsS zm(}%t?a0NYD>k4`*f(hf`o}Ev6^wmpj_sba>j#b=Y|V#5rf@rNPwr$2Z_qrBKde=( zf9cvRBPk}A_r@e+;md~5VGM46Dbylu**qHu{4F{GgF*j@8tXzEknye#3L?%exA$kp zUSCdkNC{q;mfm&826hjKBgbnV1!CU~6O`1!&c$+(c3yJiWTX9HnbM6TKlcU5r*ev- z9D}iIMmU%nbr=8hMNKezs%$K25tDG?S!EZYhc9OLSyJE;%2I+Y8nZ~=8qD`8 zDTxb0zh518H4o(-(9OwXHhq%Avn|bG4Hn20a@X>Fpqs>n4622>+i_?>9daeMaO}C7 zr&M~+fCb-3ZG(U8ViW9bqAZKVCMzA2vTY2#d7*u)TfO(XezUh#*-m)(fkiLalCh@J z`lgi;UdFEv;7|v`(YySWtKO#C5{NW1=4?(u!7??0)QD@rSS<S+J2le|q>Sl7Cm!kC&C47X%$q=!{suCbQK$aRnA$PF z`H5bjyX6RSyUHmB?QKc%t#wq}K7uX8NeI^?Rr`vAxS3*l$5Hf-SOer3W3sd)Z&MZ(Cv0TjYNU*0IeN>?HByPe>c_48r-+Bcps? zhK>My_-$RRxpN{QhRY>4F7nu_!siXSb2OZJ9s$eXv&FCi;_#>FAyPy#q5QONUak70 zqbTC{>>njf_rV3rqK2$)PvC}!i`!%Dp}A8xRb5g8)P>~5bxVs=8;A|jzI6&<5yJ}z z*7;2HPPSHX#tw6Cgy@(E<6Tw%h3{+Lj%P0|97it6MCQhs6`H1)zrriMNjkZ!F!kKO z(8MyfbBL7*nn!2R`HKHU%>==FN!WwuTa3-8{DS_1{f8U~Mz~XV{vikM|3BmapnsCe zk00`XT$MjjTK}oPMab6P_{ThKukUDU|G)e#COdhCAiMwiIk`du0D_zV0|5Mw+u#rU z{m;-uen2@{oKff}{TgH!^COd?wF2=-ePE!U2x{&NBSnHz4x8BTF77kZcv|*JF1=Sh zsp0)i2YSzFS&Y61S&ZMIfxzCy(wg$n7!jl?yn3;rhgsSVZ-MvyLN%UAWE1vUsg_0T zIv9O|=AKEJ=6a*?`8@oLm6_#^`I|c59niy{U(;g4pZGrh&_l>ABQ1%ZQ*{`!$rKRD zNjvC-je5O;F;GHq2T@~=1G8omyPb2?Kvs3Hrg-W#P#3sjuI|PZ0Pe3PU7;lU4c|&^ za>5|^!UKi7cKAJiX5jVedJu>~)U9710GB3wmC+3JE70yI?oy>If;xq=h}3ysq>K?5 zAuVjudgyq7gABHavz!?i4Dg0PnyAPzuud2hW+Lkc z#T(Cj5Q#-j4-y)Mg|mKz*d0QSv?K#z$VO z$H(1o2StkMBr+JzK;)%|0WD43fb3H7K6H?Wp99!9bb`6V1E3#i=pjuXs2b5oEUd{> zlSmfkUbRl`OTC0kEiX&k=nd9Xz&Dlvo3gTZnrJ|^2A2ABhD_*DY3&jhaY_;e6Ey&J zz=WkEAjee3i>y$#^gM!9{N`*V<5%Eid0P08tM=~10*ElY7@w#iMGevS=d28VPtYc7 zOsf#1UmUZ)W8?>J2y3gR+19Hm1|x4L_1sbt;j2%Fw3IxY)!P|^F7!Zx)7(@gE9;!5 zt?MiY?Ty~f2qhKgdtIK9+SD%&EsdHQ7gpjegHoRSGtR$@xSW6yT{ERo37A5hWJK-4 zZ-CAy+=(O@;|W?t z#l8pq+}`kf3;BxzgXFK~q;*jQu`K2OAz?IAW$7sKAUZT6q-RmrSnGj_yO)z2V}_P@ zs#bIa&*A!~jbH1VN8pASAS1;>@QpHwBN1^HKE<7;@dKMbuviQzs??WWoY>(kdetHu z&DrCvP`EJ?ns_e&E<>L7eY1G&LzN(4mJrg6c_rm@j~&cv;|J^%P5(E7XVyCGv+yQ` z4!CmqFI+qWD2g+pjW*BUMSY;EMtbc~#^q+q+3bQM4RD5gbi~SF zHUbm9tdOk&?x4RAo)ZZ!z}E73Is)(|6~Ku-vn3xP0=9qvJ&F9!|}gSP#vukfa-2Rn^<6;kSKIx)`$1 z!_T7^=L1W`-YV9cE`60NJkR+8?=WfVhsa2)6LNrd&)~yskz1K_9nNvMfB|8nxbz}Tbk5s^1Czaj^OG$`iIRPv zvf4Lma{04jh{|8IlKS)IrjemFN^BmKm0S&cUHGSfg}zK$lBS%gRr@)Hcfp_nJf~UBfAq8oR+i9TEL3 z%!wJ?#^##+Y#ko=N89h$TOFU6QyB2OG`oK$j%n0;^#1uG%XbqInxwZ`$W?ZDSM6m0 zO3stq*JDc)>ww`|B<5l>+-B>eE+QSc$uBBaO6Q!Tlvd(PJPaD5R7$i~FME{Zrq?6R zU>VJ=97l#dGcN3ns6P_=MU@sp*5aG!681>Nn zv|{ihn|^c9%uozo@77a(KF6-5LU!BA7_654z>3mT26u)I#B|fZ0RI5ef=9cB7F&Q= zCl28-wk10v9fzPUZ7NLTiYfC(G{({}RfDy-xJmZ8n-z!!>@18Lkk5Jrdp!Gx0@gR9 zw_${ogd(F3EyF=#w@ELw;AF3EIcB>^riQq)+-Q!e?=mzXZQHSK4`6SJ1=~I9$6D#G46wAG_ zGRu;b=C9>0uhO${%{!1}cqQ6xIH1kN)Ujs()fb2Fk#;HXMsutNz0&b`VBB3qi)wJ0vSzMa})L%w`j$yRo|k z^>W#^P;)O#+Df3F*D7v_dhms}A4=2sn$K&(aMgsN!b*(aF&|OILKgF?kZ9bo2+{N4 za}URTc$YOvK)MO^N0SZ&w81R5ZEeL@-w1U?gt?0900s?2q2- z4tGq6eWa;CFC zmjWV{<}r9$u_b6UY^A-(FbUOEqh}8^v7vWJyojEZ(Eudo&@OJ$r1j|9sTt`+;b0Q{ zq!G1c6s2z|%!f5)L@ow6CTF=)vBLnu%vRT?!?cU@_hQM#QF6ApHIprdKMLG?(NK+M zyM6;NNM|1wq~CfTutpy)ks%6Yjm2(RP^1qNB}eQNg~pc(2S1j@8bY3VfxTT=S?RN@MipbZK>a=%3}VU{1^S{@``L!yTunb3!Z=-Ey;*S@O}_r}m9NZJYR( z>hU$zm0X$1f-gR0NjQ0Qr~)BVG9MRzg~6DicXrQ}1N=kfhG@~BLU%MPNf|MTOkVwB zx*z4auZX_+IH0bs;H63_Z(bF-4^fLVWaamGk2_O^cVs9y;NrDXI^f&>#=)E82d>-x zU!TX_104MQh}98pUc6`x)beKhKQgQJQo8rCN(hU>qJERk$91@b+zxJ-Tb`KpS`Dd?tV$M?5`C0J|bGW?6_Jv8nPz}dJr;eL_1=8SOu>zP8_ zmV<8yue%z}p>pj3^x--k52Qh&wC-Ht?}>Ds9j{I-AH3}ym^!jm(Wd(ex34dT)W7VU zXpI?vpJA?pQ(6wxtKVB=Ti*t)FJVKw*Hne(Ov!J}{K}RU+nUJ1lN0?qa6O9pekk7W z7OlJhBVVT`=NEX5qc&vUP`MLrUbAyGn@sLx%TjOmgBh>CVpX|6m*O?!rW7aTc-}~1 zzhHp5a-p<&?YrW-{7mVoN`qMCY1jdR725`KiO|=F7NqkGrJpE>P2m$?UX#R{COeZH zSlWEU!RzW4f+M0xe^qwF<}QV0*1eOzzjWFSaMJA_O)mBL;%wSz^LC#~wh5VDuj`heY92fKTc)ZYdVYhe%2Mx3YRK=&@(5)>P zZrfFqf{p=42wgMf3ANLB30ONj*?rwl4i^7br8u4}f*R0qpd>jOig#XIH&tm;Hn+-p zhNQ~{IVoC7_#^E5gt@-P=UZo6+ib8l`XVKZEKoiLHe&}}o zSEh8jv^hWb4?Fx%r}FQ6m~#vO0G9t$PNr{TWNZC@Z(c6{_iSwD*C(spPRXDrKBt$J zVGMW&w*D?p6CfaEno%wcMPfV*d$;W(CfT$%q@D$5rU4Ub7}mj!cb)CwYEldwP};zd zObO(5+{ZCv$PtgMOp6dZHo7nw_bv2%C}o#=SZXJZOiVmMbmpj6@uP1-0TbpDz_OiZ zn09pPV$f-xweHJUuJ#Ew^rOT~{9e2HdUVn^An}0g zvt2W~D5n+mF}&z8w^JgSmNr>+@#dV*F-nJ8>ZTDbjoeipDxvACfVEw#UbkZ^+8jLC zRy@2zIqLJDgF`aUip%fQ?;|^!laVNjRD$L^0W$c@ACnpTP>2v1Q0nliQ=AY~xV|RM zWmGRz?zE=xpcSp+kFuJupMS4^z4`hcQNMdV>wuL%Qwc97X=LUg;PF)Ii(L{UA=0iw z6qG?x#$>;P##smPU>FDG0MQWQzi0S)J_C_-VpZax=x^VdUq9X(qVF^Fp3jZp436G8 z)Ml4pRJeDcSd-{f_-BR_Yq!Ci#qXGefA{v6AW6 zp~;?JVoF0LC9*l_vkM0SGgC6zPdD{goVcOLbFP%q%@y2{VH5%V)vDgR!jG;3RROu` zO;Y}&fzVoMpwOGGIGp30d8~7sXXmynZX9g#aBb0MH-6~3p?VTXY3(=v2xCe_o4P0_ z{x@GZ-*|_I7$OYPc2Xv6hl0Z)k8Mk>uxH1Ci(obfHXS~QYU7@giiCZKc|^Wl6Q^ ztjdbn;_$e@bzdj*L>G6KhwD8r7H9tfLtFo313ziYm)I$DzKvPu+HCUTn+xCOq@!wtwI7T8MA8(&3gocz6*omwnMW zky{F_BMRbE3i!t&SmMMO(|8Se5^jNFB=IkfBj}t3z6Vn3&&ySUM>vFK(N|3;iFOKO z#{U_!7ILAZrF*wM!$>}t41BfRpadGzpYvc&EBp>y>Yd4J1a!S zp{Xq0AS2fXsZJf~X>QwGR2y9(W90HHUIRP!B{i5_tL_oJ zGva=Kcl7mi^mP`=Z`PQqpzTI275fi{dj^sKDg~xVl!cW~(EQpF9$4Y$?(Pdgq4sNz z#V+6Qw#BaJrAay6(N9PtIyHS~lkojM!Y6Bqcev}8WA%<-XPcBO#QL+=)SJg0g}ZFN z{lvVb+S&IH=72*)I=V6f{m``kAkDwWAX0b$0IvTKgM|K>qgDQ^V|1h1=RYj%r?$@^ zAaEUr(?J7vaPO@@TXuq*)CK|mIur_m*(*(bg1BG7S%JXU^QHoRvZ1MUIBO_v1pf6F z?;T#D4ty2*T%T4EgyUq;pWI`Hc*rt32yx>&JE;R(j4oF|xOyH`xKcxlz*cB?-c(DW zW~d;*I5P1|LRN=q`D2%%=}lbcoyFeX>Gx_loiB)DASDi3dCJUi1F(QVtiA$sSK6dF zqRfo^N{U~X%qTedb924dL`zB-o;y+;kJh{6%MxTpSVLUgWi2l})s8<{HGtU{#)f%p z6>$n4iOT_NdO445;>v%l4wT%bBB>}k=VD^- ziPm&DN^AZ_CYHooW}cu>V?Z+}ZE2E5ue|`&>sarr)(}$Cx~Ulj2DW3gC<1$xT-(bxb-s)f0hZ3}z5PRhOvcOXF!0S0Ut0Oj)jGMOdFb;XWu$ z823H7g$wHm*L`r-bCx1cK%_9wg*#akmTtD^N$qg-u$^5%6+_uB?OcQZ-&z*IkA9k4 z)d9NBfE48uw_Oc8Z6NW$v_ePC!%N^qPs5nf(%D4jRTc?Qd(QLm;oys+$Z1KJWtOdc z${42)eR^c0$YwsUaUqh!NS4$jBuD-5S_(66GZ9ZOe@}o5`oMHR_{X)9Mwpfeo+4KFzzIzFOmT=a}#Td~Innqz+Oh=L&XSyx-oOpmbWAX4zVvPg>6vGd>{C$928 z&RjYI%R#Dfc;jtfno$Y<(TQ!&9@EUPGQb4*)8k6FwdPhU-q1CCMkBDx@PJGg$+%9M zz)8^*P0}dne-;ukxJ@K-@m=pX7!IcI-RUa5bJRdy&S!>c4y7H_Ksd6>Gnq- zPwoyT?HbliW>#hGQPbd}M-0L*G%8=bv2Ag%as=+k5v>P@IY@g-C^P$WlZLAEe+~C5 zINCE~s?w@0r`VDgC(f+8GTjlMf3}g?G}4#<=H|cIv{zcvv>0Az%(8lnl=Y%}CX8^k zoG+d)+)lE-zH0=2hMy+oC;~6gWNv0oh?@%I14 zISyDDupp-BfMUhXyYjc>CuhkzVufZ8En8)IoVe%FAjxO?+n4}f}I zS0W*iCe@jR)b`^-ik}iw-PL;M+uT$aQg@Yw`VpW2b&j|%pPj%xKTnnO_=;R7{R{M; zgZkVPTVNf+iC)wlp`Vr}18gZtaMVcVVd2pt=%rJ=pJZ!n`|cL<|`3KD3~7Na)uE%al83;k0IBN9oHilM($r~zBFHd8LB z&mYKK;1rUqKDRX9Slf2!47!z-`QiO>bS0CcY~z zvrn3cMn!A*BJ|=8WcssGSo$LUetmdVaAfB8F)uD_aLb_td7qdN3<7k+=?-Y6SG3>^y>x|{5r?vBN)pM&OKhfO)^ISX`z2}V$(dweM|%4! zjShWWa}Ot$TZBNqFuPsfk)e-SUS-lvMZh z{h9()i|=>F_gz;(5Tht{&GaU~)05;JB*3aJb^d zjMR>*J;8|Vc#Z+kJEF8Bafp{V>0-)05egH;j*y>izsl8`tkCiwuh<)!h)uCfh#nY& z!b(y@s2qVlP1O>X1I%^#9fG6im_G+@>NzG9C=oC?DJGw z^M}h1g1hC4@BC>Jj54#GgS6o9k{Q=3Q|+VaH=|`MR^)Ra@;h;Rf(W`Ut!X@L=T5=H zzEH53k$R#aB2NgV$+gX+iGGmAAYiR0T0VcyXGT4fl(1A$8J$un3 z3i7lH?h6!zZ!jg+V&`Klri)FI#DP?3lj+mqx}4178Yw;Sg!mHLRQy*|4uy^6tGKEm z71}AIYQd+FNTPF8G2wcMU*_RK3%92fMsOfQiSrXklPm(Z&~ZurqTY0)bC~sb_vE2j z15xfUT`5?(BO~r&@~DlTIk72j!U0kf;`OBO#vgA0{2|5P0j>r*T z@Ht|xY8-+tc4ml1OF<2g~y zw_`l7Ijd0Nf$XS`_Y7T%r>Gwy_=k?gRgODv^DYXE(QV(0pyaGRZUl)%F%@eZw!{I} zoKf;zG^cA`$n$Oc&6byBt`cIav$_VAD&Holdg6YiCn?8O@>uMrO!m(3K5MXVxqZI{ ztA>m6sX{*U24;M%Si))9vb3B&@VVu8En78j?#@`c3u&CR>9k+#XgRLoHnS6T-@O&C zU$L}jdw6l?W@UL#x4&I54IPtNW4d>KjaWLje^NJHHf8MVleM44w08(|fEF2(O;&x# zKdYmUZI7RJ-Y@qe#O5&c6$N<&sgspIh;2U_TdK!k6RuV>D9)vAE#6 zj^FBh6}z!Xuc!8n4;@ouo;VWo1#~d&ui^uHM^NjR8X*a;Tz$BZe2rezQ=G^5NToDV zj~`MXKpJj2quS_!1JqvV0v@^-q)Xk@ww5ESgEohIC>cad(r#ZX{(0QGnyeAujww-6 zY6_d2P7hDhbY}k5#7WvxD&FVHJh~d@tLam325?GIU(m60Re6bE6!OW*w07kg#2q|O zCz$2YJY65!jTg>{20ZND`!N0P)DjzRik$A+P`h8$hpO#EhVJ?{qQR!efVMST46!|} zv6ksyRLel{rNelOe(bS0)4lrX@M-I^ew!+L6S*68IK!jEU0jn(VpVguFk1-Pq;dDz@ij=y>WA}6lKmvl-%DDRT>et1zGeS?lXi{uRq_4H# zlApwmXko#-Z)~aKe$#<&YGzJAe#giRBDY{f6Pf@(SnbDRAR2>I*q_mwXK87Lb+TsW z)4oBy8%Psz%n7QwbioP(j6#@^2LLT9Yt*rUXgMTL&*^E?7BcI^fNP921ksqSk(%Cv zkZ~5Vq|uRseQoThft;c`L`FmDo5hulaoX~mI3n;V-*tqDdbiWV_vuPERrO##AN8QL zaJ|1obELfqfzX_>405jgh%T<;>U4S$q-OgBs)hAb6*z<02IU*UhR*p{{kBR1fmqTf z^0l)dCwlu@KU6^nEp3zx@DWUl20;*qQdo3Y3UkipMrHAR`ReE9qQUFF_nYNi%@^6! z%BZF5JUz>iGTMle*%LH9f$+?E?^t|!1syhGZQp{~1c4aZ4LFqL9+gFv0jfatEW#4G zkeaJ+0l*2Ufe#(A8v4O_e`1Auo~!3r<2Y|1#pQIkScMe$cvH;m)cP;D>wch|bM1xS z8*H@Nh7#|Qw{~VwbtjRRP8w6ZBG}H#cw4*f^u_CJggU=fxhuXeijkYmir2q~so?dV zBV1AUP+t_qhwU0Dba?ZrZm*h?-_if+u1MXs(mw$K0RE}Af7RhXk|tQY3Hg6%oBnlY z{SWKV?qBuiK(C?<3jm(Yxv%rQ|8I3o|GxD7IROA<{=1J~l#|jBk&wm5Tj()0Ny3A*%uW5n z=C9k=RYvM}V&amN8|#$tdgJZoi{9ezni;AQk)}Lk$XCojKIklx;v9rte8vI+@_YBE zG_8g&893Kh@qv@*d@>k3EzxEVHH#K;5*WSKJ!Zlszl<5S0`)!Zap>@fdM$C6NAcg^ zed3kIJnh?z1bV7Y=ZLc?VOWY+d%9f_{;XvRcPa|oH*MWY>@e0`>@@tcA9~s`b986rshf`8dAsg@8{T(Ve{Fb#GwVq_A87*OGQIWp zmkBH%QF90d*NgOh<0!*flE6cQkr)AZXt5!e*GIHFP=Pq(mSW) z=fmw_f;Zv)a$j=tOxZYuQ}L)0LITwk%vYb^C}<;#2(jf-x!%HFdx2!JzD#*?Q(}gu z3|MfYUV=74S8-;Tzxz@L!uq)F#N79T`8Hbg5y;nCxd(1dF=4fI{B3(c1?wAsDW+OO zL^Lq8;DFGrrD9H}c~8w9gHp1tJfJaa{MvB$%#WqjRK<8Y4q+g?d>U`NE_R17i8GHA zEg(tgKxfhWGQH{*-B!uCUM#V_=$RUvE&1ih2QNF6183|EIfdcODjmpiyLQP5f0oP= zSi`?rFrc5SEb*$N5!t}LJLrdV4TTp=Mn`}Wr*6$)>Np!W&Wrq4?}CyX9>HQ`@{5Z7 z8Ox|!;Ah);WI+lS@0^gDKTWCnkrsx4sYYL`Am;8TPIZ!7do~?SgnjJ&p#F2j$ZkS( z_%BMdCQcG!y6C^5Z*4)Vg+aI@NiexR3~B}`szhQ86Euj<28f(&)UdseQZ>dSV@QK`%OuyKAK z(AjS!?B}qu?(>vmTqN!7?2m~bmQC;CcyP?L9IK@4AwlFpFb$Cj_v`HYS{40DT^<0f zBakKs{^+D4oDw3BPd2`%CeQp1w~*4!o$h^HuTN3GJvpmN($A5Kgs2!v&7W5PWo#-z1P6vHZb^TT619h zvw3(O8lf|FL_qHcW!MT;?oER`_rZ+#g>p(Cc`_>z0Rl!mi{;2XEID%V&1uow?1%r*{&bxIs@SMQ?xqnNV_^neOGm8+bj8*~cS2 zlE_V%eC!_~D_8QtHL7Qfb`$AQjA~lqPbHc%z?^c2tD6lyV2zVOo1zc5NnBv(=im?6 z43n{w{WK4BATAl>I5tL@f|}8n-~irL31pUejvl@c%!W(`A#XjF5Dsuf9GWOw_H*KF z-U0yfdtJBxrR5ip4eIv<>JD^V9sl&P$HPtQg8-6*fY6f{#XsZEzGv#2>na38(mN+g zAij!?fM8?Gn>0ut;NLYolSF~6yrx7Y!QYVP$DI9Xn(F2w#BAE+jz!w&taD{*8R8io zIQ7EC=;UjtoG{0#NzY+CUXoGI)%t=p31D)sNp8|54?LACHfI5Na4Y^=xxL2jx2WRQ z1yn5I& zfygT-VcDjd!WFX%-N_86o}!kYD;u~Llz%eC6iCa^c@H_#$CD@@wOXWLR7;i?LL}}K zsMQ-fTZ1eJs4CVG--|2ioHeNo-_?J(uq{Z2!?Jq}1Qi;s9HnRm@H=(*H~lg1X@mY5 z%PueDgH($g1ZKHm2eA|Q86%Vwd%Q}Q%E{K4Bw{^`L&* z$pyKAC@7S4ENVe3r4hjHT~u4)F8bBr*|^_hWEM#G7{@P8+XP5(KFO;SV4Do&@Fk%V zvaY1xc3_@_XzO~kx3GhWm?mV5@LFVDoj3iIfhadM9LVGceYz(lH1@QxFI;h8T zr|K+35K`<51p4-H&dFgQPF7tx z+F+@$CU}XUXyLPr2#jmdXan7|i2-dfIGPu9nZQfAIJv17%H~S3%l^Q5V3q^0Ds~z!BN>DfosVHc{?7EK|EhaMuJ3| zJ#vd70)ls7cGZMUP>S{-Z5rnp9)yVjbJ`XLTK)50$T`DCL35*3e$qTepQ`hjgoS6(n^j|a1V(HJ8X2kzxIH?byZ zOB4>|?1G03vq1D6P??mVPTe**uWtg+>W!3=^@^TxxjBXf2<)=(G2Uz1ROo$W?l|Jq zwSAOSl$2HB$dNak_(c%JO9dS-cb#e?-KlsAXl@zG>H zy8Ytjo89)!eh^FXI=1(;!Owcaz12S+yg74Z7;6lin~sP~Dv9nlQQQ(RA0}7NA6cVw ztKDFm3kgqZE-nRgUO=jdm|XhJ3BaVQ30_!)4qS7al~7b9ALXlv`TcO7zX+z<}p7K*jvKEviJ0|s3A-bljx%CorZ!nnL`B=r{X zxFH4iR&%=$al?5**|_d!wlwidaLzRc#b*YyDDNgXv4^(dUgt&!H^lqhfk{e5ozo49 z_Z-AMySF=-_ghqO8Hu?F5gWYit@Lv_qJYiKiYbch7g60P!H^VDYTnGYxCk-osoOVT znX9Bd@gZ-zLjGDTI?Qu%%;%d#sF=}SLXD{TlYtxBP<8Mba=@&jP z;7i5-hqZU=(lqRrbknwN+qU1dZQHE0ZL?C9th8<0wr#8H>$MO1U>&T{yMMzo#xvuZ zGwui|uCFu68JfHWi7MV3)fc-7xS$BR$n( zdzzOYEpQC)RtF{Uac72?$p97<&Z;U{8TQ>8O+NlLf*Mb%Z+r(EnGzrY{fFN^|K(bV zK3Lnkf&~Kl4{iMS9O8rx1f=}`pF>m}Y~9WNKN>L*krh_?AHc|eJT3oPp{os;S3v4a zPxq%7YQ0BkO?3bvspP-OIHwA^gwsw#^t9N>c&xM^dv@TSj8B@V9U<}TafvYG5G?Y% z%(?JvW>*Z!)IG?1+SBq&AwEABw)3FniM8TrkEBx~4+~epX=j8Z)fDTaQaR~1me`;) zhiSF$-?9dYs97{M;5>m-HPfk8SY7nVj_~Qk+WyM69^K=JmFF4L8&R`#@0Qn_SSO^w zssGh=rq+U}RNlOWgS_WSeC<<|$&1#}*A=FTidm?Zw$o;5i;s9mWKtu-pwCb>rD~}r zdnZB#1HdG=wHEwI3lovbV?kZ<`~xf$H!d~O+(zOZ08U@x)t~-%(-#ILYn`MZG+^4y zCgceO21H1x8xx#u+KfbxQHvP8qZp18KEWq2nw$=GOgisyDa-;LzsY3+_$Ya#bzLl4 zyxuhASgDZcIyR&*&t#bBR6CuDmhG3M&~Xe4I6qQv6dWcNIrzRN%vgR2M2k5Tk_$XW zt0JpXWN7D~08VJJ@d|Vq>PSbz(nT6-?h`pJz zdXP;8@4fdVBM5h7UZfrz?wzctilCl;VAZTnBxun-Dq42URyrTOf}xT4G1GUI?5?_$ z?W&6Mxuc{erIu4c<>+G5mdDz_vKD=dh;~9FY*@T|qfI%H{M+ImmZ+B=&6vWT_HEao zl3%bh2vDE=jNu%GjbYVtY1V=x@`mvw&X%k=#9mOd?8G_iq~Q?H-nd(JK{5?WIO{(- z1xO72t67>B?qz}B@ajwqMOuamP;4y7(_u!3Vhy8VtUH9X)uOzfCoz||LZB;%=td2* z9CH$;)C*;xYcPnGd^w?U`%`x$yin!~qj&tE!9Ib5MAEP=ap-;B8s5=lZ++xe> zMXX2cL(oo3qL5lPtShQ}U?*sQ?|8!#IOj8f3l>bH3+-ID9p%?{eh`0@06={2n!qs7 zABGRKB^A11sbz&G{H}MkIp5DZ^w>rP)YZ#gh2!#Lf_t{CmI%Cb%i_}FWMgfe!CoRq zz%t_iG+By{A8^EXP&w}jOz~k1LlsYBxRRsXxx^^ZouR`BN{s2Q__6d?UGM0^PQ#j% zWmRNda?O1k_ikGSC(~*%11onXpl;ox7-=_f2Axr)O6G`E2Hy1;|1V!eZc+ZfviFdR zDMM6Hly#K{vaZ}id@7baIg7*u(aCSfr3sQX0=YlHwlDFq}aaiq)`PN(gRD z`TM^!*J75;@GBzKp_mN?XOT9;|Mf}!ArGYSY9{YWRH?YWurqaWAGkNz_hOhAyaV&- zv&kFbWjbw%{t7H`LM&nmCT-SQc5eUnZ%c92Bx>NXfdDF(>qS${XLu99hGs?j5s{P$@;yj=KA1kn`y zJeo#4^eL7f@SH#!i()oe^HAi#^_o0)3MxER{ntL0LS|;JG!ID{z7Ad^Vm42S8eEWZ(@${umKEJ5^O851Iaws%J z8MgnDW*K|4c+!7#AdKRKY(m{xS_7-Ou?@PpwhdbG;OJ|}otmhcYIyx^DI9cTX_puJ zU3}T1lU)-q1s}I}_mN47x%7cowI)AN<4yYL@Smk)30;!EBw{ulDH*f!yeBruI#)Zm@EFP!y z@Ar$oK!Cgc1YDA{R*F(C#v6f_mV|Uwp|W~?XX03%Q37RhW5vXy^N=;#5p)#|z)D`N zj>e>XTerkZb$g+c3NsbZV&y9*UhWsICKpWtII;S>p8+BMr}z&Yrj_1ANSc{bGKJ>i zic+jUihljyR=Ee-sAxXGT7|L%tQH~2+%>8!I{E{KtS;HCjvBjj8EJrN_?(&3Kw(-~ zXW4>gR>GfDVKMBSy7((cuX`|9l3}eB2Gh0|Jg|`etqu;8&<(o+f`FM41fzqp4wFdq z=}q-%-Pf>Vo`wB@jR4VQX=XTP|I~pRzFAvpz_=BOirHX4pSG05gI*EPi-f4s??MwG z?GKu97~vc2(Laas!VutNe1SsFDnKKJW#m@YhFL&FzhaM(EGa6C^>>{6vLTEumXwD# z#cE~RnxwDubYGOz%HiN(B$^evy-{*>@`(PH=6RbV4kf%}BEjIaF2K$R;DfU{=N8=h z)KiFd=7QyI{RU^y|1^H9{R{<%_|{8!WqAs@Nxn$r&*S0f?CY|S1JQY11tbTu;;tvF zB<}`N*bBw+H-naeSCL{xlFAjDwhgu5>s3wmI+n2CP)VQld7txiCBV)3kr{8G`t;Oa!h|Gu=6!wdlkhZ z++LOFpxFg04RCw>T=V|iNfFul$_8|nh@zaOs;V&bkyUu=yx`lWCGYqxWOYv-E8RCq z6~wlwlz8~JB|25T@ZGp&)!b)TNTvLF;@6Yl!)H+#g^`%#<@tPD}nWxRpik4h2S%a z!o9#buXaf*F2DC28jG@(DU10QfTss&8Qja?nM{*6 znm1FrHA?Z<)9Xuj(c||$($g4$h-1HQre_h6lPDX5%Jzf9X29R~^iq3L3061p0aGCM z4za?GT{HNjWp^_2c(pg`Ij>dW-}*LS-nssRfsbD<(<3;r=B)&F;y`|O!uqm-kpNw< zK|BY?yoF{Zazt~pi++|;7L+#D0<{_FDkPf{(`Un-CeTZ+Xk0WBWi%Fbh00KK1uDLF z&vRa}i>25a_7~$(t_Hac2W^e(J!)&tTg;-S1;cVHyvRIpn)#t+@>hJuwY|>|BF_1( zDgY7@S9ai;4QjQE6ZgsNuI)Z*WEUT|a?z)RGxR2V?nU z14)I!qSSs6<;7OC^pf`3QW5$t9yH6<#W~+mYb@ z>dyV=H|9DFpAt~r1V8q2cBd$vvG+-|c<8UqGU_VxlE;R!`Pm18+wIYM1QoyU#xy(+ zt}6x(0Lqu9#lP1&I;7nf_+>jE+kps+=D#9u_NRqkEN$YN3%5EPwbEk`aSmLXCZqH% zM1?T1UDpo<7N%_>&n~%m^*(KTJQhFJZMe65Aj^^5SjVtqn;B7`;BSe~lvN;nMZEKqs?-r56?Rd>Xe0#Nx~kGP1be40 zgDOb5oo#J;-4!6m{hWPzrkw2+LzY4hudDSB?1mzjT`jViv07^^WnZpi+o1G@f_^#P zawdQ8>Ks-cFS#81bGG@WzCl)BD;(o}+s@bE+Sl8YR=65)ZXRw(#NZAfqWm^<8So_1 z9jGh0=@HCBuRz2oVz#)$?eY2s{m=A9c%j3`|2Mt=Go%0e>0K)e1SJ3eY0Ni%N1JBNz+Nws2j)sPcF%pwG!C!NzvE%z5gBG@| zxlSO#`s}SiLO9Ds#3sM3sx+`Gj<(!3IJ zzZ0W`D>ua#HQS}!LRe25u*cbU2q7h3h#%)(5-;3qEVdV}Gof2-S`qK@AQ=LH&m(^LP&cHfJx?<6`xp1UZg@@y0xXHd_6@R)gMWOEoS`eiX?l|G?_~5?DWqZ3O9^HV z$%%~E#G&z6i&@G#mFQ1AhDcFRlsMz_ewkjV*fF{|%r5th^uiYr0Xxtc4k?=(b{xUh zWW&kcdW)NF-E~ff>7BgJ?~$doqbgq~XI{P!K-Xv29jGg)js08$vf^)XSeP_qR0#p( zt||Cl3gD;FQiwQ^^<$>v2rpEgZrD9)Y%k)*SUn#2IzstF6x)=TbmWZ5P<}{?Nt?3F zn-M}xxX=XL@Lwq{QtOToq@S}QZHG7^ZuKo`{QB?Tl538r;W_ea=!C2pX0?wf=FIP> z9~>2y-VJ4U<-*EkPl?B9?Em!jDV8SDYW~2-EPk{SwsNu_cV05aqz%&0eGmV=rD?pC ztle)0jF=bHra$%EdhSr8_G3msP3hep$(+2i?Qq7ZAw^*!0a~B|q^k%8WLdotVZ~X9 z&+((3H~l^43uuT>BeXu9=cS~e`u&eXOrM| zFHCs=fvmfA{;JCJ=+YeQ{K{^EOVs=uWwy1CYvHXc!GKm)#RqO#KNqv0>wJ?*D>?2*g?fnc3kwR>8#xFwe&-{oEApnsbkso+Xfa-jtpzGL%R)0 zLw`M6e>hF?wkC;m~A3+GSfV+v2|WK~RCszu(I1CGdS!`~rWTy^0x zH^hQmS<6yqv0RV`d3Kk(nOrRNWoptb@#2mzTcq1^Er2MP=lgq+i72o-k*dg?9eH1y zGOkT92e&v&6J3Eix>I4=6IT<@MupkY;yF}PMFeUS&x@i=XkDGIqZ`$Ym8&|3)dS;c*sqi=8t>*txt}#5T_}P2kWe?ZM3n1Xzc6 zbumcyQbiRBN0)B^Wf$Q|MY5Fa2&|`97Zl`qa$eAYc+|4uql|H+w@ImrCkSc}aG2^MGh+ zt}Nz>UJy9xN8&~VayZ0^RS>x|G}>)+)F+3=+s%wl3qJQgj~D`F9vtBf zqrmn1LrmGR0n*zPs_NRM{fZiGnzhQbl~H*O^S?q%kL*ZmwAS!p#)VU97kM|OyDBm@ z?O0K@w{)^Hf}ZYCiDV5D>o~aW%$C=A9Qb{$-$@U1p5%*@5WW>qL_Fj~6f^UC1ZH|? z#oJH)6fh0++NI`Zzd(qaK1vbGw-}L>I~0(WJN(lU+7a@H*q!-Y+O$b9r7x<|TIAZ) zfPv)<$XBY}TFTqIbEWR982D~7S(8-(f*D~5_3A+a4NyJycGsT>J>kR9P9@Q}nK^H@ zua3dg*P`@aM9Pp&DTCEB5zJf+ww@5Jd(>6g*~|Meq- zKZC9!VzMJzc}`^O#_6TQQC_$u7?-BrNMpFY?9w9CinwGG z8pl@LSVIEdX~*Zr2#Zz0dPf3wI7=-oNzx)ZROxoh%^qV*ApiQs$A{Y*Tz>cWpMkEa zIlz4!pG3nZ(|K|YSFO#>KN$z$MGk;NQ^KE8$1j2omzS0$rH5D|{%TtIGOBk9)^tHu zJ;Q6^X^@-6zz!{-)E2%$E%%szg$bz72}1JJHf8;5%BnkIuGtqRp6b0krfD~o(aaXy z%=rz8`+*TW;h>JWL{F8aQdhiKTf!>e&!nq2+krIs1?@{6MXjoH&M+a>} z{w87n{$OSZg}QjT%~_m&y77}*+K>K4qW~?|(+C+%aL;)5FC_a4>73rYQJn8N&kM5I z(H`o0{O?%#FoF_d{Xy82OHz0W+w$8|M}r3C$+LonXp!M;jAd!!wJIEl1iCl?){zKnN z&38l$=aW?e)7;%w2*>h%KaxELfLu=if5#!FI;t+HR>sWjFNx-zI%89b9o9`#Lnxj) zJ@9GR@qcAPD`>suArSY0n+xN4dsS~KsjcUTT|X$~_=aXkQ5`=$bXrIqo~TyMaK}=o ztb&JxtlDV30(670U{FYd6sRPlL$_sIe+J;0ovc~3oT0F=Zqv@}X zxs#Hi)Ge>Ft0pDxwF}F$MQx{`Rd!eB6DKW0#tqR>Mk3uTBD!Kw&k`)|X-U?^?Z#r_ zM3}e)#tqtuTiMGz!uG7wJIFO?_p~WuF(!p^H5Ty6T$MwS9}J@^-y*t5G$YdAEHPQY zY4p5&C&6Xk<-I8Xf}{`80T*{KWa%8Uu8cpA+_!8@{7RsinY+n0pYj4~RfnwsJ0?o7 zE+JgA+M5D;VQ>+~qYi{|pe{uj)OKdJ#CRb=?LF#2dO+gE_|j=GeIAN&3zMyCA-zt~ zrZ=LfYV}PSI#w{Oqk)Sug2fv@eYGT$hCSEZOravkA~daXu|0+C;tA<7-yQe0{&d%9 z$FI6kq6FVxQJ)rYjxSQoR$s1pLwWfi7~yOgxsyupDe}gvKYovT=JLC!3XFpJR#58o zXYBKzK>3uRSBqNmyuJ{0`}6&d^4UV?EaO(7$2Uez|La)2nkuC5bSwMf;+=--O<>(b zO>bE9P5t?oj z%1;ihZru>5=Epfjew=a1wUrCDr=+TM9V>zBKG0jTRiZ?wGKlhz|+V0j?dh|t9~R^gHV$zGJx0v_Dph`L06 zF4KjnHY?KE$gH)8K{ER$osA~3O)CI{=TFu?iikl2mB6%gawAfodp&EM@sqeL7Rp+I z`@NgKE%rD@Uen=n=z99Yorj1mj(E%nMD6B)ltn;NklsBs;>{hl1m+tY=j|b-iq183 z6>G-qou;`hFC3Acw~VHoP>mmg5s;_t;4L%;tx$?DPzrY)aSC%h0fl7-=3r>PQ7(~y zObb4$WXj$X*cC)bzn`MIh7Ap1yPsD|T-m1TvHWwRYVJ?3^g`ujg0XJ_248c8zb|mI z{!Nu+>0I3Uj)0p9-+>AtfKd;x#o6XfUDyW8uEs-Ha5r8tXV9~B;Ayq$f>lW@QnI(~ z^|bR@=|uB82)2w?Pj7S~d;TdqaZk}6PiAv0q;lIsTMSIgtZtjD3G`pYtlp3==2ocE`$u$^| zF?Y{GUsG~Ku8m#q(zvQBK2i7w^JJ{4HXU6B{SG!hqEU+amR?*KmY>z4_yEE*qzPs|HRh&f1cC-2h^=|;j+<+{8QZn!pi9e zi2T)VKqDi4m2>gyUxa)2wwpZzPE-(?l#iv*yfnkp&$b>AS#LNQrH56G%TkO94A^rl zp?jTti%gz69R=*M3P?{2gMw5eQMxTaG`w}tVnVIH=#|lH!#XhpLT5*gsx!kW-QU)= z!xY)+6-PN8b;Up#>!z2f+Y8rD(7A5;mrb&8&5MQek@9cdKWuPklX54fjUj>4EQGJH zu-q=ZumVbKAwD;SDc)$OQ`B!ZgPCiqKG z-)$y{H4K{F(iRWOjnV*`2kbc${_-LlxCfeJwz~1g4s+TfPg83?zn|aRzdw5V`guHU zO}!mFZhcJ&G7y%woG?8PJUYZW7-C>Oybem7La=SO8)EJ;+(%}Z(1AsVR4WLuD?(B< z9adu5jTGTSZ@LZQ?=Kw2GXq+2hc}?$LK>R+vP$*mN4xl?1?;KkDQ@^yJdCsi9O12f z9TV`qMvhelwj^HJqDcsSFsc{GkrEy9xV+QFHudJc1xk0#YF(rB!D_-M&@2@WM*T|` zdP55kNrx1ik>SAXX5GISDLyO&7V^Lt4x|PG z2mp@r!(dc#LoP8303!5`l%yr*p*bgfb*vYJt3D2+1=72mbB~-RQ1Nk?RU{LAx(=_@ zS4bd>nDNp${0S015c?}pt$0oHbO1l2{;S~@gq6FXN2$-BuL6EQ(_~9;+-xzD>6RA{ zg@ucb?2C?xq74ZgLP+c9=|{m9kLlSZgBfsdxQA3-5|bZJ`#ZcUHov60Gz5;k0G3)_ zf?p!C`RBt6ZP~4cRD%atz6#6SY{&D+?T6Su-!wF z3)-Kj(9HX!h60D+53jHU{l$WcjDoCyq#`@M%q-u0aSAm~S>t%J5*i>|E@+o~&7sFYs`4YezXATtkv;wjEqXmzy3kcN~Rg;OaxC{4R$PbdxA%4efiinGY75Aatz~Oe~40wJZRc z83wN7-9jX-b2ZK^1(I*J8=d-P?QrBeQAzhyVMC<6@EFNleTf)a_y@?6XEN4Y zXpL$Gaq=ZlC*4Lr-vWN|Alx&E3%r)IGFP0(bnEmCGjEY8vMUahL8@i+M_^F}kWIuB zY-TNB5|W$XJS&t3+b^<=cX8o0-XMoQj~MU(y|oVBF60uU-R1BSC>hB>b!I03(+3+p ze}%_73|qgelwWoe;#n&N5%Z(;%kl`O7Kjk!U5E^_Kh&tdpH12%!z|)-ngk9#p^j=l zpmC(Xd8#5pBOMVjHb_aXJiM27wS>qcj{3=_e_XykbS!rL+ zKZO*>&n8yptT?x32?kA#NqGitM=N8`TfVa^P_$I`W0ELxq=Kd_R!PN>_@->~F{V)) zcSF;7oZ95&d&9dP6tBQ5Vk}2&@w9u>9tlz%BZ+pj|Mcb>0KOO{|P(mgfu}& z#E#%(B=d7L1PHG39Ku=TacLI!Y5m-UB|*@G`K7Ve-58g z{DBp5UxCy{6IkP`CZ#pBqoFo=)=G^ec)=m#HOMZ7VhX3JLtC6QHOhLpm|V9hF;N@$ zsK9A?N!-Ph+~qcV32l?aKArFQ%SXz|5iWt0oM6JSRA3F)#JegvbN2=M=zHaNgfbBW zyIPcR3a}4G=5Yd*5hS(|dMJnx!z~LTBYHkb3qziPgzzaNKW{75+u71R7A^iZALz*S zjEvQl>Rxp-_7rcvHl$Kn_}0T&=bQw(?`zCx%?KkT5t@>OP)FcLrN|gQjstr2nS{Vw zOG<4L8hRuG)@8G!MDn+0=ca7Oh_N;N-6w|Jv8;*tD4vVJD^;L5<{1ge>^W*n^YqZ3 z_D)YG2_#TiJ<6`H@Q^*Aqb{6(c`ePi5d!?tI*gT)Re!(3N2{2FO;0S77uN?C2N;-H ztZi+6*P&w?UCHKYJ7mVh@ks1>b^P8TRul9F*Yt&DQy_3_2C4+=}1#Z3Naf93v(w``UfWL z6K2!BcA&7PILk`3q`jP~q9>Y?H9iKmNSK!$V^UNbNn+S1!6@LRZ)D8wIgxMi?VPp= zD%YuF1*!B^)A4p_5pqqS$Xdi8vw^jK={3{s0kiatVKwG$NB^oy)w)wa)MzEDeb~iO?7GOV^%p5mLXbP( zJRd@jr}c1@t-9p!dY^u6D160*3m@H=M}RrA6|B%}F$!z$gnLKgwQ^zLHVOrLBy z6e`dQ_|mKon%8X;-^5in9S3m~XzZ}o^w@oMR^@nto-^*@=Q@CU$LDvx6}K^&G!pok zjvi{hX@3_OD^u9rkm|3C?VH$ljI~m_kCcH7HZ5$J{Y8#OBvSl>->Hcb;hw_=Q^}e& zk$R*xoU5FJ3No*XZxfAB^>B;gY9cJDfCqZu7-c*_!sQAJMJSMev%XIqwb-WdrFQH( zXGmVujol-~s$IpX{y-CI1&V7GK$#hOVnpZsQ&1~AwWV%!jQJ>ADWImQ2FG|cB3))Y zfm%3`Q(x{{1d~fhS4GTK5lg7zHwU{>roUP;KhC`xg<^+4IT6FZd=8pgpHoUS7$}fx zBjug4m^hunbs*t27=^Ht_nl&?(DvE^FdtcWtu>;(TDfa|vG%UJ^%`F}wfE&r_OPA{ zyZD9cTW3GzH2k1BQPl~1kLH;xLXrQSZV1_fcnluFe20aSECQXB34D>pAGEZy`k>+FZ|!gg z`|`wis$koq`ZJ((C37d3g7XhB&>Ba2D0!ZDvi~cIpA~5cX#^e!=sz6!-xFpx?f*+# z)_)y#|A)4$D{XIweJPZmo!^D_q-MZcMivU|{BkT>+_Ple>=_MHWQh_Y!}cgM?}4_- zvK-kreri{c5O^TTWBT@-N?;`yPnGBA)rDdm^@QA-m**$anz7En*wo!uERNZe;i#PzDvd(*X?{t2UBzr?#xj5EQ1J=_=5fWHVEl5#F=wy?-e?1@w2q{5NN$5HUm-`_gygY(|TC{)z zLQupQE-?3gwc*PY*`khDq<%l()~c7ESZr_>fvZ4E25qow7pdTd$pp!@gf^~Fz)(jMChe9{Pzp-;!Kg)8;vaI!BsQ8y~66y%FRSe6p($=x9qJReynHS|C zPBXytmM$%$)-AR`8{;_weN91OCt1Z8)bW;PASa1#W%Toy#L9ClW9ZEM+|`2J=$tL@ z7W;OIh2$VyMtNxXYhlB#sfPdL(6X=jON@qyoznOorDUS8tcb|wsm(Bo2}`R$ z%xWDw!NL+N&$rY7(asiKx3t4GYh@kaWWwsVS9yjI{z6zZGDnq%? z!Da1LeXvC~y2v?V7ED;T8#tK%csq$% zIQ&MleQ`M?=GEt~djVg02>-n0%zIZ{@?@dahE@%%U z-ecy0e@P;1(#fAuX1w*2JVA|FHxaf`?VqO;rOMF~p=3h3(6rf&a^oJPD;&CnPQOLD zD92ngc3?YY+e=QlH#{~84JdlFA0A4rF%Ib-l?uL(ceGlGjP&U69eToIw8f@S5;G(I zc_6XB`;A`0eV_mt0rhN?? zv*Hd1P4jcx_1p#bkV!bVU?eYacSRgK<;nj7PgI*&Dd3_xbAjwnQX+oooXGjX>34)Qh)}ybSo4_fqK9% z70bVPMTmqkr|Ni-=G_-X&MRZIz1lxQYdtg)v?$b1$@XKvQ*kYmUMpwfJR`& zPbtcxYtb}pOazfnTz->8I%H&jWaPxsp$t`RT3?5+w)q2gdg9xz;!OnXB3L*78V&Jp zVp_FGWI~Ob(muIfN__-LZZcBcu)%T?+E1wLtARhZjASZ<8#vE~A{zzBn#C;!hG!xqkstmNQEM|M)EaCYHm^h-U+7=<$58 z_ID_3+cU~XMsIjEryllC3hD1G?%C@D!UKop+?vO2x2rd2&>xQPwF*H_eSrVBKih7( zO(ZAApZ1cE?5A1WW7a0nJWsdYh5}fh;eb-xI1jwr*PkNb_@5Wt+s@R4EtydrV6Q50 zQ{kP*p>5A!y$|b>Ts4)SYy>~++qys73=&+pH0o1Wdp43>mAqez>8n)|z|Shd0hok) zgA=4V^p!th)<2_Al9l*-uL?1a9M%ST$NV<0|LWSRu63?X?b>=)y+R(~foobsb%6W| zkf$Gnx?&ykmI|-9dYRp^cCmC29b;;6cCicud%ZSevw){f{1)L%WAGulhSfoHAT3+Y zIAd$S9|+3hsQeJgj^@R-?&2S$F~^SKznta&$ejOP0JT~I0ZISgI@=`8?Ee)K z+5VrN^#8$ro!`!7gJXW@iFWpEQSv-jSzvQ4%_ZvMnGbUWdu{CT*oy~8I)rW&t(^E@ zHPQaZRSRqYnNY&7x(D|zOJyyPz#-$E+78XKT!c35+KkCe1?W$`HYJgMZf>&`HcOQB z*UMjtn@T>El(7(iQ|F@&=upUo(b#L7T!hSUWFPo4T;!FWlG*Jrb024v>T6PgWu7`f z&Bm7v?Dn^WpIf^*(9J5=rI0TJG1CeRj^2Q6#Gn z3-0|pd7I1s4$#od5wmTVFAFES)~pW@NYa$MuW^(!w-@TS+Glx1RotgAO(d%nE^Rh&)@n41`TJGJ(C-Z;EE8(SLkypLaxp9LRn z`=decn9io(CWJgqe=lrj44gpX=xckmI5tFMB=ZdUWZ2|qbG8jMk;XuG!(X24AtdzL z9VOzxF9X4Dx&H`Z9)|q)S7f|7Tbz|_9&x}E%fGxiBcLiF)YsE@KTk|j+!Eqh>O!C> z60&0JT77w|5VmL0m5V_p+^JSD!WBP}l9%47wh3l0iOpV7&3^|aAWnKf?= z-Q+_*a1;XlhP8m4gkdCzzZeXBgnj;uwWM!SyRh9o0UqD4qzUGcLMC&>g+kx)4XHl@ zzL0fEgXaFNt#A!RuXHD%1e5(h>JTImhd^3G@*c3e&v0oYO5!NhpezQEIV@9A0M%O* zT#Qao5l=Y;&^_RI3B_)*2buZjgC_yie5_>iy zPqSo}q+yOEw%9>~W8&&`@yU!ti?KKUMCunAF+Tnwq>5_+aPB;ir{J;ISQ)?3V~;I+ zmIG;d3-tpez`pq*?_mB$0*eOb=gaLBFkN=4iu9(0=A~CUiH$w2$Lca+iHy?(h8V$+ z{>E-p3vEW-%fb=BBi$5Hq^j;a4ni9?te6#el!9|UlW68IY}06aX9s0R%(+;*G_?%voetY9Eu^5#B(81mD1J8$ol(tdz6<*Ad82V+aE_!g zjl6o-$hg4>P)DjvD3&NV_Ii$LPc4=FzpC1!keU3xfExk^oM%L^rhNq#8!4`eRpj11 zS1JD0s<*hc$Re#1Fpl^*+$juv&qc4RX?rW@Yl`USe$%8vkzR&X+iL2|SGGcBzVt=- zeP<5+;J$&IT2}C0+_8zdjU6=o;btDtfZtU`P>PV$S3w*26vr9X4*Nz1K+G^gOl;IFWv+aX>i*F zaBIjyhJ+N(wqX_+lZ!uieIO)1{7N7s0~=?b6f#pSSr|RM5|9Rnk5fU>AECT6Au>|l zrbS^v5kiPBVP^<3pB=Kbm-Oh@q-?aVD?Bi8-!dz#_gxc6&I=nLP{b7bgQS9kiUJcn z7(Xg6nIbILyH<+L7FA;kWB=b!ysU}WCy7Fwk}Q%}WREj*E_T+dM_jR~c`yiTkA&7C zMX>~)Vcl3CLEu7z(MxKF^<)CdQYnFg1aQM_T9SR}JmDrZ*@!mmFyHjTyACS;kX<>% zt0aqs0ObJafW|mT$k4ols66(>G=NfWNc&Z)%J1!sGM99*af=a z6kUFPacnTukWG4?V4z@t_up@x>Jt^%-qrd3_;YGvZt3js>Gbe-sYd#0s08w>PO6?~ z%GLWWpXaH(lB|W{@W_FQaQgA9uz4U&fo9R7#TiFKyu9GgX2aNzOIDTV@DNWx>gUeX zjocc{RrQG$tt(9&iyfbQ$C{VmS_6~4`+~mktv&EW`xPH!#H{mxm@`>?6>dP}K=M&V zWq<}TH?NTMJ2h3v;p(RexqTNt(KFlTFZ9-@m*Fahjlt$C?aYHjXy5j+Xot3^2t*qZ zRC@~8^8wN!`Y|^}6*)Ed__535S+Il+k2fpOfYgBAbUVoVZuLc6kISM>~@bL`S)(ZzYpe;KGPN57?g2Ab z8UA%(nMU9KAs(h@5HBQ3>XVfsjo?a=qZ2}&P7~_CR(H~bh@yt#3?Bjt23=6oN63)| zUeQ1Y*ubF0`PhbLWlSkrrCL~78F}?7JX4q^QRagC@Y?u+@g0F{A}_<1o5p-+ML~n| zBPDuFAn}Ck!XWDC@OG4S?3{(Z^@c@oHwWx9PfZuflUrQ<)tPEmVX(L$X6ha9Sqdr( z8}Gz5+k3W@S3i@t@iA3s2A!!xu??bQ+}l&oBKK-x8;;L4p(yHC^0{Os8$q+jUDTp0 z_sZ6D$7v|oH-Uons4e*tqw%59y>R*w2}1tLolWYE@S$SWl+s^!Pg>fZOPc#J3ISV^ zpqo__83M3TEqjO06UD1JNw}Nk)MDT=hmN(>H>SA)K^4eG3k(ybu=b>?HIu+#OfSy& zPhdfGFe62;6&W==Nz$3fkYkfI$-WlGvcMiB`N~OICHrMjD?_j(i*1tQ31xo6hi^Vc zoH$Gi{YrvToBxK+9%xH#({4@fBO@%n(_l|wOhiLBuvZO%5h9uo=yeyp^NcvT;P0c&l$n1ZlVXW#o4q^?M4ihh%Iy~fJlO53Q<9aqV#`2h z%!gRq^pESJLe1xT_xvQmhV8BbG-7yVQe~nhGs!S89kI5VxU-p=g6)gIfjCS)673CJ zwUP1>#&iCR)@;Y);Zdzu*L{Q&XY8T8S)VQ!SNAsi&nMQBUrLCck(ol37qcORze{bO z1mhu?f^KOWHX|xnxZoc^ngq&vyBtls^_0+AksjQt748HT1(o7({4$`G@9Z-i1JTiw zM-3+aP#pLj^++rT2+UIztO3NE2tPBGZ>C{EF;{Cu!xO7JMGh3yi|82Dyo(&LuY-`mbp-cWK+PT8B6d$^ZcmYrp~}(7dFyvL^()ZT)@s|fyZ8FeoQQoh7ZW=sqN;vERaU;4PZr1~V=ttfR=xj>iJN+& zU~(1xE~VPdv&t?5ECo@-uy*o@jRbfr(@SC-J3fRiJeTeFxFr3&NPbWP&i_SsRbjk! z{rjuVm)%gJpx2M8tE7M>0l}v+sH4AL{f~R>O{L_;e1(^kO}qkwGpOd0ywMDg2`b_S zf;P+yoM9`V^;qCP0-Kh4!ft|h?C_{i&au4iX;H_~-1a!{=V-BuL*k zSb(v0v_8ln^?q|Fm`LUqlD;_`NM=FhpE57QKyHqfW$LtqVU=j)$h?sx2K-xar(Q_V zTZZUr4rGf^heY*)-`s#2J^#_)I%#aY-=ij|G@CL02fCC0g6nN{ zh@Byb7!0H>VW5DT8HH^QGWHwo0E<8sGeUh=z1o+-$POReK{_UODQN4}3Q?F7j2IljU8tHK;ZmJIjbpDuz)$}8j~LzxFnm_$cW#M< zp*tmZ3?LM?8+JiLxlMprUeGw3v>4BFWuNKjYm@E%dbw?OdsK!@l|L+b3CN@FT0*VB zm#@GYuCn(ro?qIoM9*ggo$jdh*3m?GsA@?sy>ksBeK+(Vl!F@OY{ zr!OBDn1>6)tMuscl72^|AHb#im7j3tgA_@`);bqyTwks2Ik@fRmmga6naIb)C|_J7hk#rut^TXRoaUBOC7kQR*^L?J-ilp z_Eaz)6nbOP-Hj!BW4*S z%5z7L*Wt?ZTh^sr>$1Kz8UMOWvM!Y!rJjcu|5~$;$dec5WtrO~`HJR{zu*z@yCNgb*Y_(MVk?gdb)I-!UMr9F z2&eYdQ0n^t-E&lMMW zpw;$OFP!OYGxaI4tR$#2@}k=;@;p~+EU*UbD$?>D@8_h^3;j744)%N<`J=#-e%Uo zZqz&54a+aMn*sxcSUo(R(-*VT z*Ns1(;sku0`8;JOAtw;pt{Rk%kZPfq&zDM?2KZM#oOX*fIsoM1e^(r(lZVW{_<^B9 zt=wbpzqY+_({TE3DfQ(_^(5f%!>E6uXDSUw?2<2voP$3aIK58ZeyM|+OiGkQJOmra z-6l0XSNKx6i1?q3n_s-?70SzF?$YyIULO8lPPWM2lKA@`9&gACe_y6sCvRW03~ZHD zpsGmLCO`CNhPxgJUFlLRL57fSDTD*^d+RaGwI7kr#@+jPB>pg^`z12*3$WE`h+$ZO z<=J-{y1oPJ-$%{P8w^9U$#Y2q2oI`;Ev1mT|JzIC4*}CC-y6|XwgD1l@o`W6amf%j z4(pppB_nn8n@iz4F zEndtDz0ZFN=nwemx$?Vh{1nHnjX?5wHYr7^^&1^TrRL{kME?qfTApdbs=aqZ_-GMh;Guurx(N(xJzGA1V}Qpj_29{(9S=1ZElcgu}>oQ@ik zCHk&?A&QSZYfH6<{!Z2u6lZ%RTok-g%!K2DyZlmrfc@M-Z`(KKGo35 zT>NsY3HHqDR1fmV5B10|t$Opg5g;DVt%nj}VmiZ5nLs*xrLq>X{wWJUx(<>d_cwmr z{W?W!VcEHEIEBj3TOZ_&C^NyTWgJza54ph`t>`Lk;NVf0fuXwB?umW#i=4Aa9-2hP zz3}5<0A07(>3q+*+Ubz4eW@o@zKTNIEi>0u)P+{#6A8Ia-xb4rOoV&Oc^n?xog;bE zZ>X?!6E%F=mf<&@r4;@h{$b6kXcZpc{wII;>;DTS$GnHbXZ`B||Hl{o?;X=7`Tvzr z@_(78|MmPIn5I0|_L~w(|4dUaHvo9cg~l3P8n@@Hrd*j>j!i}rbNz7cBH0!bDIbV` zn{~-YefFw-?+K)wc|EXnLPm*K7nQXaUaqMnL&8qp_$MYGGKQmpL6J z-Y!q(4{?nV-P#Q#hVCw`gu$3RXVXu?zYxhZCApStNgQtmy~Pi z$BAbolh90%PDIgmYM|HzQQ{39;Te?V@ZP;Ui2!9Kywv9rc96s@1aG2^*136NK+ol} zX5au%2^F}nnzi`DmP`f(8c%O`^xoSJACs%x@#*A7e~uxyzGQp8%`e3RfDG-xY)Dzm z-jjlK-rN%9hyBpV2ogiYj+CK26|mVU^3q@m$7KbGvpgXrjNbi}OE7aAUe`kglDk-9 z1x_Y>Sc5Zx4v<;_+QI@t)Cj&YqmA()=)TVQUIndKGHU?ngM0@0Lv)lpz8ne8N51kg zJSB!8CDUn&1=bvK0UPCSidZyqJnH!+^&})?c6R^{&D%r(2?ZO-+S>t)81i}h}K_@xD9u87w+nPcK57;d$j9tZoPEpFs3 z1iv%r48Nl~k^scp8N%t6>*iM?96SX(gZhM>RK(`S(qcqy4#oguxW~r~b2>g9%LE6m za6n+f#eI?BSa`OY!vU)HSPso5fy!yXbQByG?7F~41$c>;4*?{S#-Jb)wV!r#g55s- z4H5^o1pS6yip9}t4WFca2VS(m$FXZWz8_HQ^koi}-ZsWt3tp!E z!Osb^gIo_atCVIpCd zMhjsP8i>AwB;!X4beEL9Gvgx|2)gz*U8c6MeXC$DuvSvGE40~mDdfoD4`EMHvxB71!~#5qz0L!3hXlT+n3o98JcZw% zvjn^fn@fj3tw;{JrHSoVh&=;NTFJ=mZ&E60VpMmD-M7yQ>LE%Htcm+M_BHD&g-B{g zr`XnP%C@;XS$@#C{I4J3B*PT=O(o-szi>vqdoKzyK>B%fxJ}Nr9t6H!UBSsrwddMS zLJW!D*j{+0l%{jQzY1p=T0;xQkUm3VZsN+N`Z~G%2*SM zV?LXh+|g@3Ag)d@R8dh{4%BzM`#ODRt3Fz_pKbdt>RhXTTJu(RCt7~cdRyjVUpE(?G}!uGtf?i^m)vjDYM& zWpu_UhJ-9=#@_$No~IKHKZ zsw}o4@O7NVf1vAQtNxD8{I&9E=2w8jo})3{;`;1=jEPmLYk!BKuMr3`fe7+SR~5_v zGlWo*Qq;NGPklo7m{q4*)&z;$w6Eux{}TY_Fn^RlGS*X~m^J-&{@7;_%#4O&;EHCZ zD9E5Snku6l6^NANh4*L*%3L?am}Cq>Dh*R;B-RboH2}4NOH6Qz>7ci@B*Hve$OSbL z?gRRmFJejCC$GK`LSkTwDJR|tIAbVCQ$X!e7jpS~ZG?yrkUz|XvPck{&NB4qBSqJl zL`edz=dBumiq3x=!C$Vt+BDqE5-A|5^x8cm&c<3LFkU?oFY_}gh_6>xD)3Q z=l#_(E)V*!MD?I7{upPKm^8+sjgVDZWg=v7>p#{=Gvh^Kc8}W@LOG>@)IWM~Qy(B%qUm<9(hmq$@l1iT zf<~*BNsM4upR{1M?+^-ENGdQCx>p6_n8XtT=m3QV+%uu?tHOEt{jg#BMPZC7j1q!0 zSrvyrF`Y)SP|6k28xpuOgZ4;}#%0h#j|7IQwO1#shQj5#_hd+R)~PdV5RFTvQpL3( zxe3TwTRbjY+0$vIe0^U*e-fu8447CI>Wae-6*t&u}YV83A;#hN-$ z%+oqvW1WxjyjNWgNg8r*ylg(5q-N1WIL0Rq14iHc941I~2SFZnkt(-Z&RnM)IA+)Kncay;GRle@{~s{&I!Oe=#`v1_GWw`lerswvqr`7{Uc&ISjhtGhfS%Ol*M1 z@`#>FaB4J=5?+Zz!-e-Q*RBsyur1{sz%&^1Tw1IH)~O0nk5+vK4~%>y@&Z<~)NqGz zC=MNmCH+c${K7JXGiW$$@+X+&^5&Y80Cp#MFWt5$1kwLb^KUX*>I`oX&YsW;f%(L! zQ$57;8Tv@vhJ^ULP5aHXhGWye6vv(gpr?4PIfWMwpo?t>!6j!j1{mnkeYwu)hxa5e zs@Q@licues0rMzhkH(F`@aAZ540pEVnWx4w~F!5~Eso8-gbB()wT^%(N zqA?T-oS$-plRR%RfYc?QKieclb3yBFqxU3%Wa0!035&x)IaAdEtZcFF7DHs?wDAry zC*B$DaM#N`2~%yJ8AaO6(T1E?N((H<@OZ=1)!(KE;x_#uv<4HktzDy0^^~jGQAdSh z$S@BbaWF_pwHznPLrsyX`fU)J<*#p-EayoGqk#aQcd|S^?5?;W0GC-N%eW$*b2SX! zYJzD|n=t9TvZ!?-aDiyzFy4KN6i=tle-Jc{WnQrI+4#U*s8W?ZQTs;-tPG>cVZI>u z2FE)w*6Ls>+5swwsBiai%Y_4)oYt^_AQ~{$ir3BSP;1$GSK#M#jz*Q^G%&0|+l0n* zm+7+ELG5+|A0DdA8Ebl;&$1HMQqwTC5Y6UzPoD-AifTsygnfer@@u#DZ>*tF*09U9 zw~F*LC@rNl9@FiLxIBuS1YjCc!GVk zXjDV}Sz2=^q#lie#8Cv?Mf--wO|X0#ri_!i+1z$yn0%;!9*e}cUFo2%G{1!wt8Dog)`Z-mRI$gB_j8s-aU_Y*^#3~ z%c)-Jg{fVW>7q8MRaKn^=Yph!)kh6Da6Jy1iYBo$Qlhdy!^WM0hDj&&+(#&%4y*t< zZ##ISg3bbHE2By;S~ctaPaJmu$=(QVpQQQqkC?{U#9{2E4%1kirmvlP=R>uML3W%~ z%Q)A2(+Il3TG%>s+(fxE7j%0A4R8J-9-r3B2)};ot-OCa16$1Y*%u2vJiQaDMqg%v z*DM9Q3z*-sYzJ;>2hv-#dfPz!gVXlnz%+b)Zy|s5UqG%6{9zrlQOo5)rv|`j-gVcN zV@2u=@PA8`HRIC(ZBB29(l5eph<3wgVny^-fwH~g-H01HUf+7U{$1^5U2mzp&8-ei z2zlSh(U0!xKj*vlyE`~)*QeV5C}5W#0<52JJK!I`3*cV3F-)2R@{E{AeDqg5yH;FE zx_Kvjivpvic=p_^Lk7{25DCHQZrLiuk;dzVn(|vEEFYDb=)_9Mk1p=`KG@MIoN`f14C}VN{Vw7e~lSQCT_3 z)Vhk=S=EWfS7-fnN6%DvuGz`W3=mc27kk#gt>DBoMRo1aB;7q$O3ih-YTOjN=ub%a z?ATVK9K{@IbP4y zbf~-DcD?D`7+LdmLt>|U8$%%A^|6>53m4-!cbqS)~gTj|6h(aP7;B&If&pH$36ls9y#+)!Tk?NqhM z|71mW!uv6q3V*jhN2S1P*U-1`W5izav(%rAfj_~++q`AfR;)ZSxAYD%w_K=c%24$- zsIpsp-Ov;vmd`bGCdC$R$P;!OdNL~IqHc>1lzW>bp}km)}i4O=hLr z8+i4wcjved_#+>YKxpLc9*lL%x2FQq?9>dHpaGSSKLJ*mFBGsiE?=Uu+L$8(qqCpe z51`O5#M60> z+y6O8@(YQ4mvkKM8|=3m%J3ZI?nfY~gww6Y{TPbKnLLK#MPpUlLET-R9vx*7s*2w* zA&fAd&X!^*{t0#YGN`7SX{Q5xVQd)rT63JjZ(*Ek;9ndVjHRnj|C4*4hOAVDc)0Ax zaO8Jlt{+$_Gs82c7EQ7xat&L@3s*%5bEz4YWKtEG;CX`yw|#Mcor!L+1VoZlO!l66 znrA47o^u7eRs%M+!9Ryqr+%vd0d%fB(uS&4TN z)i7ae<#%NPynjCh8Luyau^p}$h%1riuO(=`-ilpwSxY9li;P861u6a&4f6KKMdkF` zB_oQFT&AodGk3+@{L;+4Wj!H5)%>vdWSvG|R1`Dtcvm)DHcm_5gjySJ=1FoMSn?bQB~=4R>lMFOr`h z#&y^w4m;{Sbq)Zg?YaC-h!gD`Np(;WL&qt=Pj!i(B5@ZTu$iyQ2L|byi!jWK2jGQi zXyDr6p#7u4wsX@W z3aFh;^TectRO2`xRl%CsE}d7a3Bl1JxyQuXB)gP#{eI?Y{{SHYY0mImi$JmU;=5jK zX_rsBY(PC9j5s50ZJRIWw4SZSi;GiXDv}9lB#GvDXd;M*mxK~Zwxu8?Mja`>g+~ds z-UYKr2W^seC8EDK%YcF+mfkaELcJfcMRXr!nmIDbt9n5-dPgC9#-?M=81rX{W}rUyKOL4oxP>_i7eO}yW`aH1=ctsk2}Tm*b!jE0=(ktOv*FJ+l);$n6%0dkfX zLYN?6|2uxbn28nxyx9;|!Y?oe;F?1vrv&pgBWMfa24#+r6ybvj$_C;%aU`QC2P@nbq0xHG+RmMkA8=Dk!W=mwRa4 zMu#ERKjyuYVY@Ki6;QDy%c9NNS*+|#*}`8u%{aM?3?bj4^UN&9`Ok0+eB-1aP5jOy z9m}!~M#W37KbtUqwrQta3Rb6Ov&6@bSJ0xq)-dE46?L%9(%XuEI)YJ`OW9kW0fWJiXWzCQVcoATTr4$xCt8X(^JDXFawtr+ z;z(?+&ZtHmSUFjo0%%V|Zs*402tAp@YV9@;6RkCd(4u@`jRKT}E%cFWU?10mNTz!C ztEYo$0;JZ|x$-urD@>$~(QxWloz=G)2qaw8%O!=s7g^|@4du<7Ml5S##qA3X!iM0+ zCl2+jF-_b^2NQU1KtK~J~7ule8ONdxPj z3IPNbE6ps`s}PvObQA;^e3VDn)gZR%OQ<(bSUu=kVFo06{AvmL%|K_INy6e zC;;>&k3zp#kTZBlGUS?0Lld&B08ZGic#qx9FGBT-oG>imo|d|h)qoUL&e`HLy^8Cm zxc@ab@wH1X^}Z5Dp_%!V3r-VMfJhQO_CXHvL3Ssl4@BXoLgy^vG!@@(UFCf|7PgV< z$wH;_(*RZW=oRXK^#VJmdO4v->+8JLThKYkuX6jS8FnXbyun!4IA*gD`n4DZBy zcWclUR>7e@EqQ`u&XR?iWBe~?a1^3{9>rucBp>;Fs~{Mv#s#&1O(J(@4V~jUtt4K} zw)HATwP4v0Z~L`GY>jk;*P@34Us>rU4^mQ~@kFqMLsCpTg0#>icLl*ZK66tzdfQo9`- zZ!1t5ZNAw$U=PoML#~^365gMy1xrgw4SnhRL7AaWBudASBOs;wPW`@5?ceBftwPMNw-Z*> zvgwF6s<&!H=~B}x`pU5t{)IH)eZijPRUxt7?%hvR(vt43<=Mn-fBdB;j3h%o)+_9J zO_tZiPMl-CcI~xs(VhXJ>RQWLyfeyMtf;AYf@WJWXf~pTa0Rr!yoRSi*6#MC_YP2KEI-zqLNg{fs6zs215i!YoM%&gzKFK&J z{cjhMIwY4ZO`co13{l^S<(uL0OD7xpiS2=otEwZg=S{P;bypMBLT)RM$$g;%fp;O? z4S(@|(D~#{SZfX{p@+}n4MA?skLOt_C}Z#1NHxA_k}Qy)lh*od7OFMv-fQ_LZk6Q_ zYVg>Q8@%S2Qgqqt-_5jWh8wnQ(M!iEoD6V_tl)bl>v;e8^P>Tt5c(fWNYC^yrxP^-zGOd^0jh1+~Yg#>iziySz z&ilQuc+}gz7CZhL@9;&-y7QdqyX0T#%*&dI9NjhJBB_S#l%bln?QELH5+fS;ey#-e za2n+qrcxQ8rGR1c7yn92P za?J**ppx9sHYSu?#Knz~1aCW%*hZ2WFZBe@N#0^YOT8xhO&mUurjPKVhGKcJ{ApTn z$1aXPRVunmr$>gH9ow_Rq`hmy^K2!0yc6Mub$jt*iUIytJ~StLB!4)si$JjHS1G zr1FaWwC3K`#ii*;M-)?%O!EA|5ZN{nL6l^KSxSU_UIWp}8f$|XqL~+_u8c-Z4`-1D z31vK)WO)I-?uE&xA%8${q?wt+@(;O>z?#lrni3<$;D;n&mvwwc_zIAO>ZLwG z3!lm|EQ$9aG^UYZDS{%1dHE+RI+&EE{!Cnt1MU2U3W7nEurLJRG>FoGH~2pk{I#Nj z!487^a%05PBwe*INp1rE0Rt&xdUVS((e)hj4lXCN5x{e0`4A^0_|Y8=hAi?xpe<)e zN#BSFK#NjpNoEXR0|NCRVo*F1k^=zXpkN@5QAs)p#o!7+0HRfk5Wo?Uw3r8Oy*r`+ z4NW#gK5)d7P#i5varx>4im4KCtd8-nF*4uv>gwevCNNU!mYEKDtTo_tR{+;U8?8+f8wxwhH#xylYIj zS0#E?%of@`$hif9UcTvEYHLn}Cois+Eg5C1CyKuron_lxBgKv;t~9SoLY%Ezc-Y)w ztiiJ|n=M+wafVCl{d||)WCM(`8)-`y7;0-a_CtI&NuG8uI!D1%wyipD7CTmfJOEc`M>(0a(by;A$Tt`-rFs;u)BbP-A%a%ex`)Fq zES3JDsMXTe2HCn`uw*#{iHBM@{jBFDyY|wxxJ!I(T4hajisiQwgJ5wLLt)kuOY?xO zIlgxIusG5WX3siHt>EUhE4QrmE>XCxcGYU})1$8US4DH=%&Vz~`)W$PN`{ zpsSPPE5}Yrt})z1P{HXR8S{x?^uG84 z1n%eJX5jDMY(?DHNG)mX@-I7<90L(Jg5e&)BNNV{Ku@}D7{)5MgM!{#=48ZN@~x~W5sfv z>4QSDR3*WZhm0v2na)p*_y&ou`8o$>%1p?oNo9_+wS~ou?0p6LecbZ^s2*>kl%KpK z5KiP{n`i5KdFDhv=dg63w<3g2_c69AzS1#&!%c_xlYRasnUWGAJ+g8ddZiRn6j6St zsiLJx-XU!Ins-rcBh1Ho_U)Zi<21)XWFNlsEK~iHErERV&J-ccxoj~H?iD_@SIeiY z8@FJyBZD>Ah2Y1IPRBYMI+aI07{HbxPz~}c7#KQk5Y#Cjdh^ppk`UCjW|D9mS+yu? z>LS`pAvP5Ph&^%IM)b7a?g?I z$&~8}KaE3$gte#ih8mEg3zdf;eMM2y0p=*fn|jd)qp>A8b9;!3-eCf3nxC8tdS59o z(P;4I>wdrET{ME8NHs?y=;)HmtQ@4)Yj?@azKLOA5&FJkeO<)E4o)gipmbMC>ASy} zrZ`1nsGU%x(uPiUM!s4rRz6Ov#>sAl9c41s2$%gY)Q{oFg_Yu@a{anOm#=WGiSJG< z>b61W$t<>DKX_euaAhFH;UoP%O+8eiJHMxfQ1j#qSR9RGJ~1vNy^t2>iYn7WzC@Y> z8bhVX@HadXnZQeu2etD3wfA2%Z4?rsXm)3n`S&Z>FfTyCv1zK01T3DEnU$i>@y1g7 zZbZ&IxTve+ZT1T$&xtKn$<5z|INcs|b1zbWR;?Z%B=I|iop_TQYc#WJHSsVDw@{+{(F2gl+y$c-@C=lV}}ol%DK_!Vap#(|Fto7lVb8njt8%s1{MUzrES z@=?ZDEPjhORCy`K<3X%@SGj7${4T{P>Mt5SWJiR!G-;x%iCYz~GCWqEA-W#BbPtcUI^4&q?PQCchdA-OER#MavTxx|(zybrcor0&yXgP!e^nvslINRg-^&~Of25)Z5}IP`EnP@I-}Twu^?Bro z1WXs1>zt%ySNGc1$4oqtWV`M-*mmPPX-AkSUc6wzl7$&t`t0iFh#RwR%5aDIh3k1A zBAR|h(f%+5_V|~ey)$p?<1M>IUG48MejM1&a5(t(-{{-4)wOj~l%cixSECcyS|1Ai zU?ZQ!I5Bs|m6i?G6P9f4s=G^4@9THq7q5%(!rkXG-&Su>P-}I`fnUf$j=NR5L*KxN z2%h*d$2ss4-~4Z!5n&P!o@>7+Z)CQ}zegM34+r}g+yVMKqQ6jJ!0?xS`EKBX@wni; z{5YRiOIXgUS=LwAq%IBMB4nyN_)XgO(}Na+9|Imp;M?cJx5QDK22QXHL7K2H{0k}1 z-3g-Gk?8&T^X5Aty7FYj*U!&{_FlA6b*q4{tiwqTb@l%zyJWu(uQeiLiT6z;&}DJVNu_O=%9pmgil}^RNyx5PV5he zA+B+CW2e0Kdn2%AP;)AV>``FVOL2qo03Gh0ZG0JZ20>#j_+YK@%R} z654fZ>-Lb4eIq|6SmDO2rhpFK?sbqxs4tl`FB%{*@%F(DeWMqb(t;61!=uSRFE18I zufbDOvmvlO^IZ?zymjulA?mq~cl7>S9WUU-{H;s{dc@it+S(t+k&$STATP)XO*7rO zrSvQmLF?e=*X+6d+Z$Iod9Hjz`7^6Z^iX5TG-4P;_FNe_o3;ew{NPr9@tkuzw_UWj zk5zGcqM8~sOXIRDg;_;f@O?1CIW3y0ThfahhiaGU*K|(7`9b=t75X`bwz3AhWvyZ{ z;}SotR$ABVnd@s*yH*3>Ci7-%~%e!5y8oI!m#uZKb z%pz3{{a(4=L8{5d!>*gV4UqxTvNv3l;=E3It>Vu?9_uL8Nt~ zk=@jwDQWM1U3iKzs#gp+jo?awGMSBy1vTQWFUVt7Z1k{=J7J>q)d#X!->==d09 zTM$_0Xse2llh`&#U)&;!b$!C*!a@pnAZR%IoBw4BBfKJPDheaEBVD03805riGK4o9 zjK{zY_8}M<+l}xK@c#x41+$8ylicoj#14V?@-`p8ZU}^`AN(}1W?f%sNRiCQ>$V!N zODAV-kUr)ILd%N4%Z2N>{Aj2JeZ&zR&RBkmCC&#$F0kMc!Heh;Xfn(v1X>nZYPO^x zOBAPbM@Tzpz16ozYay#-+(=*FxRrzkIrt;B^iaimn=<9i|zQRL2a<#E_q=5gf(1YAVjJ-f|N{P5hQi->Rp4N0_0)D_J==aK_P*F0j|eQ4;(NZKSOH3~1l*0n^#FX^NC#QR{v|~{1nAf=58x`OVg1yz z+Dy=jH!Ap_);Og3{?%cqxJEMT+s5oHBvb)1{A#KUe8YB;m7>shFc7sO@+Br&>pvE_ z996&w*RBN{6gmoS#0aH~0Nle@04$AT^G$Md@c;fCscb(ia8qS(Z%Q5h$N|^si|*@_ z_21{gQ)5g-fk!JcNCJTXi_d%+k&TzVyoLxu?T#Tc63lOF4Gtr86=2|!#lV>}axG)d z(01{&l$a?3oM=#j)$VO+iJ}76pz{)0EgDC`fD+r`V$U0QksU*WYUO?=$JvjRG)H@G4cbe{mN2l{&ojuTO* zmljHpD_A0e`m^mt2zpTl0HZR3ceeaCd8%d` zFC!Bd5CW3Im_gN>5gI8C`n=EFu6J&VUoZPr#a$aakb&dTRv_pPL8sb&y|S<$zLxvw z4n8)P`)XcZ$Jb2np>dtFL27?#*MccDS+~32}?|(!4v?e7Shy+Qu3J(ob|FSkrIP#P|LQh zMHTsBY`webiNFmJqMKhJ&N^*e_7t(Ebav|`iN%v-Nqs+jyQH%KuCc*ZXn0L4~ggfV2&%zLJ@oTk}}qf zQwK<$Axnl)2K%*E0@<5UlU7ZVSn*QJP06QYliEg^kEC_m8}Jk za{fHH{$w1#vN9`3EQf`9ZU+8tP2CQLvl0jJ!sua` z!VUltT*$vjr5x*mSB6gavLS*fu^9-Q4k!XMNtqFO^iZD&BFxuwBI%o)%n$_J^Q~IV z^_4oN?GtPJZ1_-4v9!#W{Qt&ws@NooZR=}`1p9mO+NIFx9WE&cqirc{fY;_mN0jy_jpq4OW&3U$loP-BR3}P-qH=*kp1~GVzVWz6 z#nt`Bd$-)8>NgckBs#ZnxJHg?GfjRPa-6jIFpu`$zBFtLrr@>+E}Dx?G?c73K-PB= ztp4GICG%N$K9t8B-EMVMg>~r3GYA2Y{AVQ&0!=lsPhgT5c<3Yx?Cb57gTTF`%OsWg zhvk7X%Ir+fq8Lr+!02pKq9%H-e>a2=(c7XRJ=7QIAULB=Iwu=z*P)^uZp+Cv zX7yH;1Px{2Ut}TLZVbZ)z%^H6W1OrXluU=EBo<}|yE-~5WekQ9Yx8u9IsWzDH4}M^ zn7|K1wyrj`kuWw6d!bv{st3yZ9Tc2vWq=n6CI~KcGmW|CVI?W;?FNFzeXvqX6(gCH z1{B5*v#>s8Ky@zL>N$JM3tTr1OH!=rkNmt(B_IQx9Slb44yhlSH-o7Kh5n+{ zxKO1`k6nZw1h5Ee1eyesz`mcxc5lLzJ3W?6`2L%9GtF=cprnp8p^&PiF+=|fxUyLL zRM^V9k5DNgaRy#(e0s(<(52)p*6F(o&9?YcX+h+z`t_}{Vm`jGWp{|#kSTV+ypiNP z_MZRq>SdLiuWxEG0OQh0IBIS9mfA!lBOHDviMRJVr88cjA22VPn3YHfn9<1%rhpI>mu@yN>Y~GC- z9$2ATRTb9Ogz0F*BHM~mu-LMK*s|*2pERSELXxaUcdgIpCYB3n+U-T=#DD1lxEWjd zx4CGezuGH7&Kgom~}|GfO-7DmR!WWrJykFbMY(kJ{oK|4jy zR8tBt(Ey#`4kV!wKvENQB1(uLI48;b;0YD(B*qyDPli7gujBIP=J57*@bEEN7&P)@ zq45I|CgMpg5uC(Y--jf2ebHuzGicu!g@L8z1nyZ}&m@|c!u@U7{c}+#_&1^~c^B}- z7UHcfc7bgl8WP3&%7shPAo`_w;zdHCI&%Z(!j_6TR80ai^O2ss07P)#FyU=L3vPxM zTATL%n}Yo9rv@1`K5g<*ql4#>^pWIyn)LZB7Osa|C(p!7%0Ii3VLr!C;2zS6E%kYz zCXr%U*~cx3OJFh8DtZE>9EuxZ9d zXC2)TF#D{tE-qZV)mG6-)?Ak6QFwj9zm3ZPg#*j5KGWU;F#sNX3R-_wh7EiG2B4*& z!?(zXZ<({bejMRLexFM@3mtap*DsJ^CsZUN{(id!|8<7j=JE4(B1zV^JUXznxDSx{ ztedKSZ5V({V|@K~$aKZ7h82Z%YnWcWO#blNpck&He^spSw|2qi-Im#?m>*$!a0h${ z`fclTP^bGtjlP@;y`C!BiH&?F<{ti|U|$A&HeJ#x{Ecn6>-FZ^o2QE1J$wYP&kedM z_7usL>`*d!CZn=blbI~!@Y>cEDT$BGqF1DkGDMH;CK|2Q-6YZw(ddQVKQM&*A?ysQ z;T^zg`GR20NtC)Z_meich$Esd2=B~H>7_iTziES2#4YD2(!k9-5CV{Q#c5aH!a99s zqEfR~_xeGjJ$B)C0QLoZ3&IC>$0#5kI!5hSHSoYyzX+JH26<;Mn+8%u@<)-#>Va9T z$Pltv1V!W6xYLhhMx;Y zh`yH_SJ&jxT=m*_8de~E52*5D0#LeQ3t)jZ;iDv6@;#G^Klylqrk}Q+myxZ5N6&%> zG$Jq>+`YpA$s_Ixh4sd&wPjy`U77JI@@C274%Z+@QU0r~&1_Kv}s zL~qw`Y}>YNOl;e>ZQHgzv2kbOOp=LhJ9lhNaOVF$b?SV1s-APs`&M;zb?yGtU0uEQ zzV@}&kL9;nk>0~FEmTN=Wf@@eV21G|r=y0igV#XI|^_&*edhV|s8E}V= zGg*0lG4jsK=C+@(omp{qPFR?y&l`SsBIL{SE6H3>?TUIWkIqk1Nbp6a-Jm&(xxk!R z?qR^ZWrfNM}8wnVHO0mFo5*IchkHYNGYQzwRi)Nx@89d0uwR;ClP4x^DWy^WTOG zwFCeaJuD>`l~4P^^T59DB6aTNv3Ayh@k2yUHC@G&?LSY|JyIhyX$>5%pA0t^u(HA; zIaj{`r!utsXHV*B7Axi`Q0O2Xsc=o|GQZi;CMYo7+uLA^Ky-2>RAJdIAnMt$&Y00Z7x|=by&HgSO#vR2)BjoqDZIJ}s zUyq?7-kjHPt*B%yUJYe>vZg~KDX*ht#y^1Jsip0*tSqRY^c!e{&8Ps5N|IzYQxN5F zt+OyJV-bXE6!;Q(djhlr(U=Eg+QZNaM(bYjwGVM(pRjpOm=aAis|dJh2F1X}!9g1IC$e>X972aMt6n)~GSf?sy`UWp&KG=I zjtLEHEAMQAdop#)7kyBFk857xo})acubw`@wQf+w4xNvK<4n7vpT~>Wa{JV}lj9yY zw=y6k=>}qFQ!8go$;XzsqUp)ckNClxh*s_^L_Zd=6=MtG@Aj&I^xadKIxZ*cCvDDb zJBv_=>hNm9f+lZQ7w1HdAe8{;3+-0L2eU$gA0-6WYo?KNUvnIFmQ|Oc++O$cXd;-^ zt`viNRUaU_YH_8O^Drcc9gNWj->5`R2VeWn3{~l3BG0an>487tnIWIHyK*t-8ep)Z z8rGHnP`Exp)YU_B(<=2;LRj}(Vv3icj3+l(;9j15dr+x9>L9Ic1~4h&*t@=uYAaue z^g;)=`uj8@U6%}NW|D+xk&m(OAz?*F+Qa@=sWJ>$^Vq9DFRu23nM+skoynA2%`GHT zX|~MZ!>d>J{fC%BXbj;YM0}8w`v^3s6d*o)D;t^Oubw=YrR?8N;Hjc;HzKu4Z9XXQ z5PcFqBZkz!Q+GW=a_R47(r-F8usu5?e(UFh6-5(a;1<&29MX+&N3b3P$q2c85XYQsHtfrzf#;x-yC?1& zm^G31ABF#Tp2eeKT~~ZYEjXWJ#ctP(Mm98|v$xQ^Z!u#1?87kWI4u|z!%(j63q#N` z7}~N(79gN@(Hga;3Cv_=n&FYG)2914;lffF1Kg6J!6>}?WT$2-ruX)Yr84X=t{+1j zf)vUuSpyjw$>7M5I~rhtH^s8N{1&Ib5Pj+N^t%AI2<*gxDedG>KJ-hU*M@Q|&B3=; zNf8t_$JtjDhN9262_n8p5D{7gSt;d|&Bpfz-E#Ce4c3k9 z1?cQL8N^mc*(FPXrYk?MHJ2nb%E?^r^MH*?ySzJ`)`z)8J$o-;PCst2gfe9geJETxSA1x`&700 zPs=Xe7-w&_mHb>TwMPXBQUy4+RN-$04rCn91vagz5UMw2o+ow?%hPJ>HyR@q0^kMg zMmfihR&u-R_v`!zFF7){OD-YHdnUs@qs~#S9M;=zetA>zB#o_C-ol7XGj_f-pbUb= z6I6agKN|WT|L%_6$cDCJVOM z5ERX%*jfDjmf724K4rLn+Y8yM)iq!E;IneUfTs{j3aMm791$oVmG^S{TZHd1{Cc&t z@dn7@;)8@LOs2eL_{8)oA0=A~`(upCzLl%x5~PsuU&a61@)k0P_`u2KkzAN~Z`Yk` zpdaY)9dzhN1)OZTcE(QZ=S2Veoe%X{=Cu?bz6xIJzjJ?Qmt87_%U&%z# zaV_`TH$?PRTxFU?2K@upAJAJpPrfhr!b0iKHpw_PFdeoqU~^Cyj9^BID@H>E-GErlR0 z{?It+hMX++ht$fKni8Zm*Mmm}OL%$Fy`;7@8T5s3+_r6YSdrINn6VqnWBv%VS}Th) zD#_L3rXdoKFpH>KupMdF6;xv>LzUt%?XYD`E3ku&p&= z4Kl%*aaPhB>Jp1arF$6oco1E1$U1zF#_01I-K7+~n}IUoE{Q?3!Xs_aK2rDHl#xJ; zyWQ07#GR*rVAFRu+WBRyOn<(qkR$^zoxBuYIkQ}LkBaZHZw4m>-o^woukv01^b$O! zS0s!@r9>Qf)ay8{sb7fese~^D`vubhB>sG5#~#q`A!VUiCI;Pi>~649vZJrt;z0D^ zB}_Ep+bITt%P3+7B`?Q$NKtdm?~m&riZh}*vxJ#5H}eBLvl+7mussFQjywsk1tKis z?#j3cl()7xj|VhCCe@xVsTPHnp@W>uU1MPzP>*kZc}G`-Sj5@g-P*JP!x;VC+60eZ z*kC8z!=87lKU`$Zg#iY!{{oiR$z5Wfo9o+u?q&_zkX1^2fH-wOf!sXb3M;XA8hKMO zA((Vne0~I`;<%(JR0_qUo+U;>Lmj?-{WIwsGyq#-KbCL#KPHqtqgORK&T!tLhH4J? zN2cw(=?VfV9AX8E8U~wzG+lUdio~~rJ(m}qZ85E;Z>%yv@T3t1m;=5%J%UVYyw*Gv zCrg604V&hg{kz9=*`3EK7^=(7abRod6PS5qmPnC&pM<6LHvEN<7JQ zQ!VXGVI&zz?9u-95_1zAX$uw9vuRo##?lM!YdU=3*a$C|&gCnQ$;DjO0YARf8p?d!_7(QQ1 zUIqMw=JSI8{P{&!Tha#?YG4zUqKalYmdQXDoU9{bDD(jZO7{sA^8xNwh05X^NkE`w zd7dE`n#v@Kd6V6IgWk!>RilW(nlJrO-PDF~|BdyZBVRj_r!b?u{#y7Eh!8FBP)g76 zmkE68M;qq}5r?p<1t`u1PrUecgR~d$V@8m*;GjI1$5Ie$co0J}E>W8cbvHLJg=?*L z)<#|}>pVC@wGyV#w<<=p3`Dj4%IaGQ+WUXkS)2ucIjOC0_$@ zcq}Pvv7X@eeGP(T4F;;KIV!8P)fY2AFDm&7xL46o6}_lC;EQ-7l(rtz9@SB>|HQAq zh`>m$yo}#n0LF9f8IjY*eO@o5q^4%XSox7f0N9Fu#DqvWH7P@?z_T%+J!3^Hz8#gl zb}p$hx&3w4@wYK(e;uVCKX?^91Alo*QDd*X7-S!lzFmvf#!T95%?s=9Rz)wQa<7>{ zpLJVT65FZs|7aEv%;tW7Kf4V$eLOn*I5_Kll1uo^tl3B!@Oxt{BZjMntmhEz)syzX zRQDda>Rc|02#jcJV zktf)AdHkYooN-);8nhWh9vC7X;Po0?#VB0B1@fNs@kQhQY-_82YPvzf$g8~YN8{M6 z$UZrk1^jXi7}MU(Q7P(BH;JuhIr{;Rnk||@lLci6FYqDoVi_jqlt)y7z&r%_A@ z+shf2E}wM?eV!_)mBn>(zA*XLeI%fqHP@G2rj(a4kfyjk{pNctq}-^_wJP14-Kyn@ z$_XVH?fKCI_XOX6JyU8hyP8N<&(lC zgp-3x?`Q9><^-Gwqy~2<362+%g|ZmT*3!A}w=Q}cam0{R)ADv*3?oy5#ENyyzr1&5 z*QTW(;hNBw97TAxw2*c7;u-1Ume}TccEj3RV~MtN(ELKN zl?#)d^({`_y3&asM@^~L{*z5$kP{mbk6L~LwP5H@awP%1(6{?zBLm8{Y~e>A1Cg}f zd`KHMq4eKCa3BL;@=Pf>aLb9LKo%UJV?%Ofc_+;mmss9Gw7u4ZiCZg*fzxKpDM&V~t$jM9;uuDx8NJp?+np<91eP%L0Wt_-m zn9K6c=F=V@u~$IMSF2aMr>0NjxYC`<3;yUxZ(uAW)0+S|b)@qqyo0t>q{CXshO-@uFrK)4zgW=Wwrs(>W&PVya2x1uH7+6v zzO$P2cD1w;AS~UC?fW^&O@-?D#WE%sL_{J>*3Ab!ItG`?BQcn|{>cPWl+Ci?W+G3x zLRvI8i)IKSj^boHF1&d-I)VzRN>=R znWI~P^BvU2-G`_hr2~>>hLCd7I+kHH)EW1yybt4q)3Khz4pUTq7T1uzWP7Jh^g|0R zt~Om+-58S@FKM!|+DJrJ#S^n=WHF*OI=-ilpg0e;BrNE#Y4|ZSiWBsKfP8vI-r-S@cJm z*~1@hGJ=LA)rUL6$mlmsay{9NoCkL}tVw^XLZ(6%lkrqJ!ESLi1f(ymjFD>x>M*WOO01SzQJxQvbgF#2dlIeo_MF3YC|=KF%1p_(FYgSz4_< zSXtpD)lCqpho_kcjG2hLqofq@>d|_Dq&R9`aXylBR2&&3a>l^bdU<2|N6T`4V^h&Y#vi8ZATQOIBjn3c681!`av~7Fuqd;6dRpr-YR1(Yj}929&*%~L`Kr&5+SH`o%inncbZTI6nzZZ2={7AR z%tJCxP5i=?WqRFo^&HoX*uYrRUG0NK?9E=WQoM$QE+xQM;1fdX z5vI$98|>#1SkgNh;yYwAW{wDW`Ev*k-Ua9e-hnDy4@8xK_dS;OA;($s?9k4<7)#IT`ryeL(x=3r$12^dao82v)Q8jvl&;Ls2R2uhCedqpT zZlR3B0hX%Xf#RXh&)R8>%vM-CEw;b>>}$ESGH!y~zrVa>jFMel2+xUTVofpq4K3uN z#y1mVJv|UW)-?p6lMRO4KpZ`Lmv%XblN@o>8t;6I>@v4$PS$)qOIBS5@qEO(tgjov z&vgj{GqkL$;Z|_SRlKQDzLQDy-k_^Zml(Q~(b(>>bk}V8_FknVX=Xf>%3YGjC5$(Y zz0DbkJTDPgV`l-Aj;tVSb=VKdc|#Azt&`2`I*JwZ<9T6s6gN~Yk~n>swQDW1nrIrB zHag_B8;@2{KNAQX+JH*Dcf5u?$P+qVTvoL%<2gmm*ZJ`tHS8;#>|C%KSYCW_hHHWK zAL3uB?<Fe8E%Wo(+hnxPBrT`R(fLNLk zuuo$`tTG7r()@N~g8V~NoSon&0Rf`0sW?62_&6nZuWJjGqW`>GxE%6{t z4WQ-vLB2j2*^9;cex3@+z!FPAT^Z$7|Le!HO=qSL&^)oJf!4Cs4S?>Ca znLwmxxf4HEiQe~dH{z&o zmsY77ybhkJl-`du$`a(T?KBAH-$EUOO1uMa;qys(yKb|^XoA0w8W?N`C=1sCR{ymn zHgO(cPvaJa>rjS3f%`dS{eYEvlAe5`Nitn6pR1R^VI!F}EuBotD1kO8v!Wx|T96gl zwwUb6TAmi^9!t8-VNOS)l5VJ=M%F222S=*8mj2n8NIG$)-@t#l-c4S{dySbSpQ5AE zU)~k5>~DrpY5rG!kg{i-vPS~f0tJdhh8p|6 zjiR)*>BK*jbs#Qc>^xW367jINSJNSHcX-RZ_;nqtl~4dHC2Kw2f#o@My@AdRXVcs> zZJkl$gzY(WovW2w92avlZ_0+PY9zlNVkvNtAdeS+%BOmwBm0oWDh;5Z@tn%bq zJX1fJsjq*GFw#q9ch?9EkpE1@g8t8lohS*t)=$5QISs6j#)5eEao_VklRHGU3Cyk1vKknt2$0RXI~@4gXi55wLgnxjn+`C`2-v(3#%MDjEe?8#TQ^Um304<+=3{P7Mm@`|}9< zF28LKu5X47ACkwtR6zXjV;w+l_-G0n1B{|iw)Dxp#_JKNu01=)iOb?e<6T>7! z?V@Lm%k6CoipcdbTIz6I3fumzEG4De-L_k9mnxO{DjtO)j(;3ebO!jb5gM9nzk6;a z8j}qugY}8WKkM9(YaWGd#Z{6V_{ERiJtBg8B+?30O5SDqIM4){V!_RJS7aR|ik|at zT22>`EhUOxm8;aQXffDYYW#xr-F9VD;LFHs(@5)R=JteYH^B8!EB18#sd2#@#Pzn0 z<#DB6O%YeP3{yKCBOS@IcDQRCF*MdBeoq^jsqAcn8;SHUQzq|r&N;bn-H#HwP99e@ zdkTq3klsB3FjLWu5-M_bA+3`D8pXph9dlw=P5LH(4~L;U3iB z*l{S)l9F!FEk5*A9bG^w-;S+uk2i_jTZz(RmRhnEf^>3?7h;eLF4RB)XZl8XYY`7GBn{18| z6&~)8>&h_>2Hfgw;)cbvHwg;?FMf#;DJd3hrnni5no`)D!(5`d1_W^FJz|LMCFx!v z&k=j}-ST*x(^K}>r`~G*io5YiX|H_-ugb~rqG-u3;0JTskayCFHI`YByise{a+EW7 z*4efekuT;Nh8_5fCe@DZ50XCY8EkS^gQMrr9{C7g+)HZ`*pXWf?dAo}6;y}%#QtTl zOg890cqBjRMnOC%t>AHRyvx|II6JHvQb$#pOimTx+ zug>34>3OuV$>;riWd{quN|c&k>*PuFKUuq6LF~Ama2`P;E6eHCVY7?)i%A<7&s_;y zgv9tgk;2e=o&lSK8mu=lY2-0qx@DImWpFv^o!LUGm1`cmjDX$j?!od4rLHQBH^Ml8 zaO&8Y@8Z6rRO_ot@2l(IxrjK@yzg_ZrlKmgeHieowZ%1W$FI@2VN#OLCQY@r;0tB1 zhDjp^HzBD@FJuxYz+nF5&a1m>*j?k&`PcjG723f2a-5{s)NmG>31iXgo0l#~;AkB3cVuKU1BRl=lGjv`X{@I)%@ipoO z(>2Hj{w<={t09VV+%r743wLtI_a$~0z^Y%o81cj&bq?!_hRdZtc^;}nVKXRtb=`bM z4or9Pi#xy%=9fS`_HFWk>m+|X_SST*B?R-eBBQa;>{S?HZhl19fX)C%Ox43+P5hI5 z;|1tw-_&Y1^JIZ&hDnD76|-GCrflE zrB}8qrf#Vyef8WBT)jKw^rG%kF_jfmCTeNJX#dyX_mppyOI-gVjh)TY>tHDNVDzpr z?ZfsjA(BT-<-zmz3SM|vh8qL2)vmuC2y7psTrFLvCC{=HEX*{A#!^Pd zGVtXCB29-ggKXEdYZo@!wFHu)%^KmMG)_i` zSIpR{`usYiVbo8$4boGYI_~<%#5CF`kJ>$ncg<_U&!OYW^y|!y6=^CJ$y&#U=O}lK zA&-BbrR8;H&Gf5N_AU&!r7biOL^(x{WDhA*3th*1$O(Jj2=D1C6U1jRJj*Dq9V1t!2grT_Pa6 z&F9p$=OEhLl=xkI_9b1ms(fAWQg!H34tn)Jq<~($Izu3%Sh#OT4~*IaYU?AU4)_3%cY-8(6)dp~ zY+6lCAwIW}%M&9UTgZ;U2^p{Sc=^C3SY7iasD@(`!N=I_|O zwE#5KLQWn}&-a&q1Jp2ypEjlX6><^lw4>}rY${l0b784?3iHwUn9(3sdu3^H5>wG= z1m;6vMz8ooI^DX+idjE{w3~%K78n74Jz54zIX2RwETJsAR513Ynn}f^RFuneE=qYB z7Cx4l{=IYaK!mB1l#@nBUUNB-jtNq3j3Y_jqsq`NhA96M5+idGwY!=|a>IL%D7lk~ zHm-9BPU&3H=tW#cZU8uX&6F0TgEZ^B04Fc8$1AV>r+`aDp#Ea=M9RxiZl(d)skO5r zY<}$^0P=Efr;WR(>dU)uTkCjjdrTPI2j#FoJIT^m{h%a3glhk;%UVCFq%+W!9!i_z ziSKVh5iKtjRgD-mC_4UY(Jh9-3ciBQ?1jOD8NEwfu*VJ6SJ!Bz8N#Z>6ft zSerNajuHV<4g0;RwUHq-RDGhLeW_q>2P!Lo^XaLAgkZ0F$9-e}zsyKTb0*Y3usRdn zKoGf{_lOCLiXA_3d`rBJy^=krJ#qLi#DfdwP4vH###)bp#@0`=_cwVUeX@Y@cTo1HDvyJ8QFT?LP*7a!c(%s^!l zC`1$1O&4Rn3wI5iX`tTnVbl;PUj&D5nl1KB9jT7u^o1bUyZjBOELyPyMY(-!fY3CM zaS%k4X6;IeGf0X2QDaqCMtnEOiiwH*PMKfA|M3R4W2uA$bAy2V#{u}?djt1yKtPoK zk3?wwf69~M(Y)?oxzxDZ^v70g(1K~FkkaO`e5~X(>RuU#6%-J)iR7xSk2E@yz zSQ#`eU|{Hhref<0-Im+o?A?iDRA4MpHjAWFHZkx-BgFdCnl%*4OJI##Wgoj5X5Z3G z`2DGPFJhL3qa8~03JfZXVZL6_Fd6*lk6mvtT^B`CmRn&4oPlbjXcSCfqB!is z&m&cFoB6%EmNJS}FlE++E@e^isZw5Qr#>2t$6x!(bMSRI?z$Hf79o;F<0-UNvV$6Y8;uEouN!8KHipn-JHHGr4Dk?u= z5MUYzi2Yy4x|#)`yovm-+ZU|@&bG-?Laq{>1W)hjg6X~HtO}7=ekLhNg`7T8g~TBT zHuSHZ1#h}@Xr>0A47>Y{|4RrQVJf)q za1(qIwMoT zN&a?h%JXbMhy`Kn-f>#CdiE=u1Rbr!39(-81b^-wiY^=5@1U8KH$nO}t&o^!kiys* z*c}kjKHFnAX89EZ3cjiptl)21nlPYRsRCVkTr>yZz9WptV~5K=RTvF9Ox(ym!iRwB zZBuS*1o4#O(}fs+a+IOpFGe#Sn#LSHB{Hd*Yk`3zR%s3M;NplTfx0jmiZ(#Xm*Z-| zO)*e)JAAE6fOYdX{ZU~4GAdezj>&lp`?(+mtx`+Bst$xW1*`jN7c11-(gy8Q(})Y5 z?yF&`I=}HhCB}mdu1`WIq2I^J?mD!cpyY{xv%S~>$vZyCGU7O;ob8HN&E-`U_`C=i ztGM<$cgtpM%|4MzkG;pOL{)&wr|LIo+4p$)-t#}5W7&z($-Kp7nUIg}pK68LpBst~ zglTLZHDE5s8KOTVypM_R4_{VJb3)zMUrqLpe6j+&OU0q`=ZYV`!9;-Iz_B8e_mLijk zlB}Z|jou^R3=h_;S9C_A@cU_oZSXKn&@xbC8Juy8G}WhVPk}7&>{+L^X@LDndUc<- zLs^Z(Zs2P5@i^}@DP*Wj;yx)hta88s`J8d^6ft}&-Y}6s#|$1SPcX4 zgC-kO7p?@83ojj=@_~4dc89?TBJ8|gf#F%QbDr|==cVdveTUFuFW>&7OoPf1m4%Wx zG2)Zo{ma!QRn-%4`ncK9CP>Aq@#zGg&(DGB1G(VyePKK9!$_sOwv_XkfwA{u^RM<2 zrwOx^>NdeM8zz0F6SG>JA&#yzlH=GEMdb3nDO=0SwRSh@T*SU!RycR(sqeKNb|<1^ zc1=!4f=Wfoi#s(Dom>^C-8ZfnTC-1^<_yGq`~A^T+1&|L9fSKL$EpCWkJ52lnhICE z_mYOBJ>qa;LrwIi!}9RTa{dE5$HRaHF5J6+cWHj-pMbiH%L@Vw^-X<`6phv&`Pvrbv$+s8guJ91+QEm zP&ZOHcL`1xH6ck3z8^x~K`q@0{w0+}a?{J^NLEe6>uIsh;p^i|Nz?5y$@X zuWg1e3HZa-E;S`K6bi2?bg+3!)EAEgGj|@gs6r~b@*0y;Cs1N>E$fDWI{6~n6i59{ zhx!!M5B3ptg~i;`*aPcBw6dJ}ra)b#qLmQY99U?#k7;>pAj>)HvJJ8MByUiu7F(j2 z_`Qx?=OB{ias;$?H^23Skm`6lwoXY4IXPmIt%B-pofen_#1q-hzi0KwLJA`G4{*OQ z(eD)_Q+=W>;q9_IvICrBVg#M5-H`!&tFnV$;Q!L)x^<`O~cvT#NFb5P8wL& z+I2hNLJ52^YA(ndUk}OE-+}wh_~xM?=gN(JD{pj;+5vJLf0RO*rcd?lr%VXd`c5b(F&6XbWku zTnA1pQ`J!Qrzj6nl4w`%!If&fQ^3(7N@h6(6NY)6da6QOX%1_%xox7KZT`k>)Lb$e zl4&W-a8N#&3X4|FnI|9oDIbRGibx*e;|i?c4PxGXJXwp@4YOnFX59Yq-bW|07I&Fa zSl({Z7_n5?L)?+p4dS&3P0{9wOG~kZ2nu>0op*R;yo-2P8Uc}DqZ3!>d1CYkH5c9PUzoAti>9F2+Q%$Dw>6y}DzL2K6g510js3g8OR4qIPAE3jdDz3ax#f6}DTv3TzuUdV?*N8#e#=)}*^v~Rspl-1?tD)=C^!a~rWMD54j=fLdV7u8Jr=ba9TlDSyc~rB z4}Twt52w3mzJhvuFwL5}^ll85GOgCxswf^3fI+eu?Ik-*VpO6>YpLEVe?DnK`EEuH zMQ`A9nrI8J@I*#2&|jHef}F<)Hp;?02~XBjGu)?|8v|+HD@K@DJs+n~Br)(+>149$ z{+9jR^uUpFa3>rri@AkuvQa4gR`)o{OyGU5UeUM|IB##Ie2a0K@gC48F^0Sx|pOj z;QlKuKV2r_Vgou}NkyP#!SHac@|FAD@g-k|0a#KH0c9gQxv&KXRlPvbi3wO8rGk>d zE-i%}e+WE8p<2I;Fi$FJL`Y_kyDUH-Op86rrLtTVvilv=^e_A)c!WeHf-{2`V{{gnO5U50w-gkz4|V+c`ixnWii z*0#{^x~InL1hlV&E$D)a_6hq!rEbm9_UT$A-HnS5rU|-}lCB3RSqB|l9`Xu?zx<#2 zZYDP~k1dg|@@6a7u2-zVe>I(a}rp(co{@^SiA-+{M=jX45z)^aVNU?2r z7z-mvpscq>gU)C@XTIW@{CWqXYKrPEm?|D7F8+}7!33ajR0SB1Z{{>N4^9-Mo5 zd6LKa##utOf-*|%L8J9l@XF!n`GP30K%7<;eRi>HY zaKQTC5P|aBphnBjap-SADGR5@Rx$~jG#Wd!l!BXfd3pgD%_wk~Q7jX2}fM%|Q{cz2^+mq5IjHaBZSo^WoVf4P)frF(RNazA)HUpsLnC z(4YRJ0y6UgxK$gVpRQDWO*CY=-)wnOQ&F%Fv`VyF9s5n&4#PIlOz+m_G1R(X@tb@LfqB zV#53UVC|`*9y@Kl00K83((=YPftTl|_xs*_f1Ul^16T`soq9y+;?Fu^@$-LkD8P)4 z93fm^NX47|;E8#(Ndc5}%l)JZ8E5Ogmk}?AK3;d9U8mjnSYI4sDF^Kq!X_KyxK&yQ zgWSlYr=-xCgU3~#!joiL)EQ*Bmxw&Dtd4dBUShdX9yL`0Dp^+D1{<^7YidU)pO)1f zY5-0k<*_vKSM|oAf8zNi;mR-JRsV)o)!aXDPL*2Z(t~}xz#%TdRbocyS2D>ir|!c( zYn|v_B;29n(apll5s%Fq5^PbxW?WmF7v4fqnI_B%t+~BoyRywJ@k?SkQWm@RUw>M2 zU|z7_%lzS%B4hi0j7!V+*t)rhUenfIwNtcHf|h=p^Ty%07cxZ01=$Ckis@%#UNf#X zrBjpN`;lzA9or5y+<>1PoG|{dy!x%IKt=j%L_K^G3+-4Z|MZiieH|BboV_ty;O~+M zzJM3d#QpIn5Bd1q1RwdId%(%nFMb5#he<17BD8@!0d!WIZloEGotpB>01R`&FuFs$ zSv-4WUL&GmRolvl?>fuOpPXs()EThSKMYje*>+SL6zP%2bSaj%7`&U)8cT25QuWDd zaBS`B@;!mX7Etn9j4_cG^jCp3uCH(@39IwD6_1gJE5D>8{WvN|S8|M`^JB{4M%G&U zlKSh%(1_xRDKB5zJ#U3cD`pby%5t*GFiqjFQl0Sv%t0F(RGQ@-|HYc(AKzcS-I+h% zJ#Ihw(L;^>FdT=)$1J#o>gK6+cR`SCt@#y>_=KrSVZXJlG*7S`KObJd5n`u(?Iu}U z@JdHM9|^5k6B;ONx#dAOFX;vkiC1kneOjsyAJbiOL3K=odjh%#kXPvH||_Y5z7)_$G2u*V2Ar=eP$`)z$XZY{~;w9{TX z_0$~>V;Sl<^{NSO!Hf&fkch*yhy`RshWmMXo3V}tqBbFAUIwiQk-$giLS7re^9b2P&<{R!5`MQH4TJYioBUe{F44 zo{UsyH6?(CCyuaFQ-{GlkQE;XsaRankKr=@-sX>hCcNw2ry$B0whGn*cDUxp)1S?|DoFZ|3&BM27bjKy65o`LqZ6`> zyg2pQ&MF2G;JHQKulw#tiVgj4SG$p`u}+_nblR&`*+aCc^9X2#96bQ(Fl<2?LC|Yz75V8Nibx&mzR}*`C3ws-13)lZynF_Qw z9XF-X0#>!uQ3i?$bh04+l8qF4ppBUgc*d`_u1zw8W38w9%C`Wv6~=SrPc~20xn)#Z z*nZ&;C;slsui^8sfCBf`rjv8akR7rjjVBkZf^SduNrI@bZFaXC|6cg3)%a(;PC6oO zEgRQ_t6(trWMhvtYbaS78|@;1;bF$lz&^eozxQV0V&7UiOSIBmXF?#0U4`n=GbG}x zROhvJA_46az+21G6Zq22(F|co1}x*ky|A5JXJ+#};s8{HTT->w@e6OA8ENFg^#y6o zsA4X*$67d2*1tb?3tuiS6ReEPH3D3{6zoiBR};}J3RGGb#=}WhCKz2R52~fU=O{oeX37<$ObQ$k4LT^uRk8%o}NaYmW7#x zl!7jMej~vM^sJ9dP&tqq_j|zy*f3WUM4plzFAv_aer_=kAoI~#_0P%HhO?!_MdVvr zoG&dgCSb%&V9)zprq9T{CJ_x2F4kCBqD6Mm#D<5+xX7ZtQV%U$8YkrqA7A)$>YP@e^Z6c}k#tDJ*hkmBVN0@1j% znS_u*??sKkG{FJaV8wmP&JAnS%XfIkP4?48Iw{e4%+A(;jR<>YVD4>6h3{PD9WTfU ziENb25X{DQxpCoo?{0*=&nLYP)Y;)QicOKN%9S4LUxOfG>>mmQs3^L8t=PDPCX@*w9KZ5mr zfZVZ0@r$!bb?uj4CoKhW2|Y$@75nRYI?Z4f+vGV+_r&Q&+^$i4HwV?P@xwFor7IO! zF$a#{o$fYOKRIEZ-f1)5h8XXpjrv?2?iP$0-1j6$NHUZ<;)tAD1hbUv^9 zE<-(<_P}KD>J&}dBvyt8G8TMlMV)d#jhKp#R6`rFC*D!ETR;#!}z-y+Cr;mAH`ndP~Ing20aVhk=T7xUmXE ztw7d&xJsp6jZnk=O+m`Dx*_1I{yxaUoj+$Wns4eoW47)@m#B5smO&`|DjF>MM`%a0 z(sZSe*m;;+nV}c)i3;yYV5yji>F_QLbz=RFhkJYc4K-xCiYxoc@JvC~oMk2LfkwD;W1?fd+UaY3>q(MV<|5|}d?-u$R z)7?`tJY0v^^*RlPH`QDuQ z&;z%)*KoF>f_4-`xWY9|xm^Z7oYm~!I|0>hs37-i16(jab#T0|~YeNlY$ zr==^M>Mn)%M>KI&Ak7{tEWL+Y{Bu+p9hWcMuAhfB68Qb(P_zWq8mu032k@tcqalST zM9s>k49^h73N!WXRsC~{!Lm?~aRxNJ8e`^exI=%1NU(jy zsfd*?`2~He`dHGUmVBnyIxowsy>X08gFKV#$ zAUEgwE@Xr-VH$fM?y8^l4z`+>W)_LVQ_jbz)9Lf zROvuc76h(w5T+-nI_M>@8JEVA$EO4P#LE6UM{~FhovPeI;PT4u53jDm@A&QQJ{`3O zwF-BSOA=|f7rQFo>XR3a{~TI`4waw>C@)@cWG=S1!L)tvt$W? zq&RDSbJCTw%qtu`8B{Ydqxgyd1ZYWz^iL8JfHS1Flrjql)O{<>PkAQ!uw_w-2=lCh z!Jm-#YB21&uMvO9glD(~CeNiO>mke)#ZYC)v8cX8S#o>-QHByC%Y{V8K-%szEO|rw zSdy#v6h)wDV<^IZIIDq-kugHh+8X15k^En*y+e>FQM)Zzwr$(CZQHhO+pbf#ZQHhO z`;^t^@7odm1~=lpzR`os$ibfEXnkvc3tq8i2oz+GE^0i^15;o|=I=@%+amSR?JZ2V zxgyVsxl=GKk9IWaI-i?etT@T{d`{Q#YHQa@pLjyaTrcOl4PNYcJL})I7wsl6T^hJv zaVvP~B`hHN7W0(iCfH?8gRc5oYt_4m?%Nx7cv8qqE~~ zvO-2!uC#4S?A3uAwnThJN$(3dUdOu_-#=9%H(Lc43~xC!TmPc=Z+a&ZRdRKw7`gGt zn?0`r{zdIy9mh?_jnJRwM7qG7>CxwOp7xC?1SNEi_Md0einZL;2X(rP#&H_V8w}#M z>CQcl=1THz-AdK!F1=g0%Df5{_1;Jgj@DKXhnbJh-vhR8L;Kms>;6mHhvi*z93`G> z40lC&M;itx0bHsjS;woi5lp(-Zc;xLL=!06!bZM=bEev0`U8qy?b`h>&a9FChT+Sbk4y2A_?v`I%TKt9gfn&4c+>|etW-Lq9-OQo}`rd(s~#JOKHhG#`A zoI_2cHi>OcR+97W&nW%RQKG>5#~%Pm!7~#vcpKtU%4h#r2DV?qjHaein(OKrQ^9=P7Ib`_M1@YH!To8rV`1$R$5o;q{4Xcqnao~zebqQ zxo@1jI3_*~QPCEd>ELu`4EQ)PxORBMMh$eJyrO)x-_`wq1zMKSJY#Em>n7TUjaS2cMn@OsDhcOa4mXS#w`WeMd#5 zmyEaQ4`EL3SylMBD=)3KoUUf21kZfL4=@*neR#hT?*^&CJO6HWE|I!hCGORZ4aw#F zRG|XxJ9g_G=8(8}nrWT4&vohulPmb=c5$G5gBzN2T)1SGQs$LSl&t{A5bmCHjkyx` z2GPOU?#hc>J69;EOmu@aAonVH;repZ^$r97DrYhV)MfK5p5#0eluk(|zPAJGsKrg5 zp?W%f16{^o9fSW(5hHZmlL$yDnd_*f7(yk|>kBv1oJM7A*WA}r`LLNM$*pTK63aeN za@JtpvM}q)w8qtOS))2kfO>y$x~(eF;E8<0Pqxeki(gkt->M-(<||PvN@CNREDs06 zd8bgJF`~{Wsbo@zEf;%}!avt7Ql-}{acWA-B7QG!7q)W7Pp_SpcQQzvy9iyjAM>ld zr+1NZ@mi*Y^ZohrDDKcO2g6EWpYpP@iPCnm`Pr$3Gp^Uk&8c|@_((ot6d86L4zyyG zKn(?Imhre_S3y@3o3@F7MEh9PbJ+`zpZ!;pO*!YMSj)Bx)AOX-Ic(^3n!D=B*u$;C zk=@jN7QWMY*R4%VKS|9{ub;o&3rUkP^3Tc?Yo9vntttWuYO-y5u@nF$uq71 z_ehn2;lrP-XEur{@TVfr>k4r3m66sDED8glV=N;U;Aij9+ETF`IeE*rc~>Raxt-Q- z71+)_cdnixSL;w)dJ#@7`pytKw z5&nDPL;C;RCs2rkDti8#3jTxr|NT@@$NK+c9nb%#!Qe*Q+kQ&|?sqRQ$Tm=9vQpAH zyo;B_4QfOU>ELTz(rJqZ3Zs!#t~r%7kA!^Y_N5D-liBMdV+ZAYmyLqRGHi&@|2P4s zm6yvxfIE|a^yfwwYEmS$uZNRwwI4+~>a|C%ze9ZTJEWRPuNRvn~IDbzt#p#?y;vmiAR|WsUrv~nl5oE&dqY{~<;({H}P;fo*c)>!@dWzZmrST-=e-g{`!4T``hakn|0-dG{Qvw6P z(!D4MKComQg$NQwmi`99(BVe>A$4XWBp-C;>rj)~MTX*+LaG%6&Zb@h^L9AsUZVxR z|K7yvX66b40zf97-gcb!)eEI;SMtm-o4wm*lU=6Dq!vpOz(`P)?X9>_TLG3 zIM`&e!3IP7({oiDxt-8c@`}4u|3LD*wPQGTt#1{8lh5yvZ~YYh4E5T^qjo+|LGpYArCN`YqK&_RFO;O_aFPnwDz@Zg~$+o&UVZtEDkU|STNk! z7JHSu$#%UA_8iUzZhfAOWqWAheRUjop;7+g+s7gchrQ_zBaOA&ZCX%Yl(#Utj~7- zZ@_vtyREQja0VM9f&AucPh1vU$Epc=igb5ogw|;X7CZSL^nCZ-43dswG5C7f3tF7k zm(=0x?%(|ke+m)+Jl_}qLnv~Cx3(B@PIzKPp|Owd=nlKf981pW!Ye;LXw8R7~7I^82PP&n2o9XCfIu6G*+V+>X4grI-A+edO7 zJ9`H=y9c!zf>hPASs5Y|EK4HAE$Mb7F!;TTA8f$LG23j9Wg}w+LWC8NisOWJA6%*E zE3_AyYq3XbL-C8vJiz+=I7N~1a0R0<@pymPCcpE{$z0C$MZjvg5MGfVZxdniPvygs zGI~lwq43o?BL(u0A@TF2yb=ZYa(>_{AH{ z%=?+)VTa$zRlsBwh5}?9@Za%R zq5?>w8vGVRuvjPC^JAPReXyo3e9~6T24GL!Yrz1!%m?W?wf=9BAB>a!nt zd-v_RDzM@5&}l~jQGXwTD!LHl8oYLeI3w?uldkN|Gn4JixnYUecLK|bw`LhObZ3j{ z$Vd3{!p>_2pZ)H=#L&XFu`8^Nj?@Mb&(5%_@v>0tIzU9< zLO%s#bYr}1`EQ<6$QhQJTwo+2QhD3+_;8PiAW08{qtTgpmNO*V{S83xLZfJY!uwS! zSONM;gEVYvKI&@Y%y>kOCdPWV#rW`%QazyU9?-hin9?+NPNJ2y-Tx3h}275luSq(SwLhd^68!r(}K8s)0d8eR-imn|nnP3^o#{^ggyEPWBqR zR-A=d+`dX0$J$)66q!F&;X#_rD=Ahg&`sB7(odO_aw7y=v;}d7w>377J3*6Hx;r*G z4X-5HN2r|I&yoyA7V2!g;oud@ZK$F-&`C=>=FXFdptc?d+F;wp$w2jFl?C;eMw-uscoD>0o#LAj5JLbt8;fC8Gb3tcj(q{25Bv{N+jxC$@QPBU5_OmIbKUXvy;mWZZc2;&I!sM9Y<8T2-vUy^;O%_S;B z3O-uW!Aeq9wCG;pIweQt56$byQ>_gnbMeUG4DljKZp!SEK;Fgq5muF6LA2V4zIOrr zAxGm8!Wh6%P87*J5)(j<2+2O@b0mSzac?iNfxnWka#>qe9FaAt$p5%xMIB4RHW8ZH zHbd5n8ukU^dV_ps6l{NnZa-clazs77KP3h3!|8d$=;fik{|17wj;@^8mWM$?J9IE3 zv&(H%^t$b)Br^BYVU@xT2HkB9rJG^qAYMsSIp9FCD^?v(!NG4)K!+OL?<{g*vxn3R z_XJep80OC7Wtq4)m&zFO+$SSa=m_HX;)U{^J9If-@?b9GP#z`=S0v0(LOe^GG4p)G zd)O6Xc8}F!S!+yC@y=E4FagZ|lsRP@Yh>c}am2R&DkGGn+ANW(`Adj>=%3FuUc~~+|$l>SlOx4%h|Hp^Loo3S2 z)L(ssr!r<5j(h_K6bTPgy2&Y;(Jxlok3L*-2zESvEhHU>Gwnp%ZW~RR`hl%XHM5T8#eKK!mtNrG2N!{UV1os6&uy>6Bfl2-s-@; zBA-A=t_%vU+^Bxhs$^s7@$m4a2rW<+j1i}}w!ILKjE1yPiRnNFH2Bc0C2@ej1d=I% z#ie-LG!GE&yR^EQk8*{X{Q)!ed1tVbL7w&6Hl~Z(=(ZB82%_oSq&vt%n*DxytkEy1 zG5y}Ao}B1X56$2eLdwSgVS5Om0>Xb<3mNExudS}yl_1~v+^O@9Z=kpCG+$LNO$AG!+YwdQV_D;{| zZmzb~oa4M&>)E6&6HP?!t~ECY)sBg$XIE?2XphO+?Iyl`?f1g27B9swKg-&xO3!NB zqTZH+@aavY*Z_CeSQgoelJFmLGZO@qh$xr6<%*)z14fpdZ zRcw3BcT0(qjjaF7$I*Aonf<}_rv6phr*#!K>rsi^4EvJ)mO$+N-=uS!Nxqi_A+TE@}bl##tQ!o4aj|eQ=739CioprrB2is=#&c41z-B=WT+RG@| zHV2Ga(%rJ&H?WBKL!YMpE4~Z6ip(>1H=)YXtIc2jzkDGu%} zjX+G23Xh-o=)3dYsewKw&X_iP2Pl8Ot^zj5WOQ!ntQRQ3M)58oiDB1Y@}0 zUg7FE`U^`wLq_6*?L~9oVT{;tUa(*{#1wJAct!(sTEkJ>=8$ol4RRn%;?RPO+nF;v zXa8_@=P=t2en$D~+iOq(JVvc!QS%t;-|lzZxXOe@B_uSSMG$KfCxQ!SF4#;Oc;wP> z;07cKFp*j0vA{+KdVWasHuTIR_O^C0=xqC^lkL?Qu8sD*m5cTdjiM-a=(J*OnZuaT zeJ}_PyBv{wBH1<}lDpl%WCT+hU_V%;`V9C1B15{LHyjP1D-uZWn-{f4JJ5y7SeC8v znjI^a-FE4{1B=~>_qWAPO!+ynvfs{3o!Oe`1s}F|lW!)z4E>pEf3{r$jLg5N39xy# zo;Xa+G51(LfsdJ2MY2Ap1LXpA7HluH@! z_v_TXkC?szowghsk3EAM>Z?faKLq?2CMc9d$FN7JrOH$r-zx~Y(+?gVj#G2F1y9?( zW5?2n!7GP%52poWXLH&x9^hjb1n~-n32v7FtNlp+SYK#=5BvCNIZzZLtZIXGRKzi| z0kt+`*PiD`qKVfq7=6a0`Z!rh6$GhKrMUclPUF?SB ztU(D%wCK};_V)Q|o^I*J2i$bDfngzC=i*FA>VmWZdl?B#Xv3glg0-iHj+96Yq|k|m zP5`OM_fXTpeSl3v5Daw<9_&5#)j$ZID@^DQn0t2q1S$hYKzA)bPKRRlw4?c>Iwhv1 z!U6Mm1i^I?0)*>^hV^YI&!kVCpOp<`q&yIeh05o?K*`46OCKkuOs%|HGc8sT=@{1{ zq$=Th_M9L6$*(f=jI6F{=wCA+nhf+OUm5c`i^Ywwk9X==v{j9pPbdFbs{#h?MBf)P zk@s*wwXh+BVTiL=$vSZ(D<*M9o)P@vIp`rG3CA^@05o#Bx;E3-PBJ?S+@1Vk&(9_} z@c9n?NqF*^9a0N!z}o2Yxd=p}?$mT4jmu9G-E|l@=cAs%q2mi^rne28J0}4K!B+Bu z=buu}b0qDI(UmAtS|02@17H`Xa7FOYK_GD1b)3`C+FvLUX7Ob?#ep#pTC8)NFGE+`W!<;2CT#){+S!03x{I)znMo<9445$g+)v`nMR7q7% zt|W>DL2Cg)uwT52W#oWUxcnFk&@YN!PPJ2CwT>^$syGd1C)z~iwn<^Zn?NCg|A&Me2m3izMqx zd$HzJTsz$=8ye09#NaBUnx5QI(%HukOPhQ7T%__zu z@tD(2-Bxf?lG>5DsxM-=m1cyvd`sPzi5q|UD4q;qP((hs&&_Z~ z53r1+nW?Huby#ENYjeq^d+)}5CguTMS&nC*&KKayHNkkP1V#h|qNJ`rsMxGxKHf|$ z#uYe9f#eAnzJ95Ryt5#cdjiFH2#O8IddO-tn&MIB#Z}LVA-~_8oL48bYW-}L)1K`b z*1y;m!~6@$y(@4(bZ*q5=)^HEPQKZkl}QP5FSTT%;;~xTJ0|r}+4WJ0;<>#{XJtAU zT`_RuQ(iE76_`hhD0g2!S>O)#5TPHMg_+q{%jzeSVK@gZe8h8a%0`nvfpaX`ya)Kv z1BaxGaJkr5VC$K1b&6eO-Y_e9TozeMj0v#tSK--fSE|DlBE{>x1DT~ zdyb&A*m5dpay_yQTYOT*4pX?i6^l01Em%I;V$EE!X53gN!v#%@Ip-&Y&ILXt4u0?% zD;8Gr&G;YXJhNdQ;;_6=h2^yP0l@oURUs4Ua2TXvc8(`yYDGq(Vse6QD$`I?d3z$g z@En-&&>7Y3uYufjp}hwNkDwW&cxEdw%itq!H^VqtRNi}Y^1|- z>kS=MJbwHf>q5w=Sy;h@rKINZ{fHZx_@b5B1xPooTB z)GVl6Wh{NQ|5hpIP=U1P^u*~K=aS|v(wp=3dvBHYT9;V6B4H9)RRpr`*y}x2j*5L{3dT)ih&4+h<*pp*mi)+^ zYdi0(y^LBbrczDOl~s-DO*h>fOjc2Pds4ueVLE_Lm5M%r(6uVzsBDe1-!^?%es%Hj zWNx)PRc~5&Uq^y>tSiHxBTt8F_h=68P=1s*>seFu6fVmv>7$M^$;~ER~;-M38Dk7RP?F)=>EXee>qpAc34@}Tnj!} zbv$iQ^-16*eA_4E3N!t2r~oGqB>(aA%`61Tv!fx$8&P=F_J$_o;A=fjd~zN+8=16J$Y*Z*^MJ2jjF`X_|YC zxpaJr@jz4W%~J@bW4}vZ9+}_2903dcRRRS}Ov1>klQwh>s`llen^ihFRm`n6Yoztt z(Ui)~9wxL><5Tnf)RbzuXzG^DTWP)EZ z)8$Ol1&L%phoygVK|Z5xa5@MZ8qQ*hZ4(_TSx+-AzQl{L1~#62^Wrti0O@qe4H7MGbU5TF47 z{xgyP_p`bRHvoXj|5VHP|Ma{5*PQ-e@BdeV|G%HuZ?rG$x5iO_Yx|6XKy@ZdPmK9h zTT><@*{Q4P=O6KCwSo%89>;k?2u;beW`1{HPfrQ)CFlR8z(|NBGT-^x``L%>ZV@MI zt0izsQv}|r4ofG^O;BpjPm?1`t{=AgSHbH{KkvFs9Q^#~yTktrN}lM7AUod4G{ejhyTatu>yOS#^o)Q?Iw8$yC_J|5q`QETKLQKW_7p zJ)|IhZ;rw6F-;L6?Vz1f^|z-_t@h^BzXqJ)-EUpHa_KdGvJo5TK5{QZC;Z}u6*E70 zw?K;VU(vtcJ3ri+*`R>%zxDwy8fcu$o1Z95L92qe{udL^mn0|7ebfF`U&s-lGp2~- znD+CUPCSEis@`2NbeEzt8}l!Y4Ff$mR$(>^QF)^SL+ z2cIw}zMUa~OyR3yW1LhPZNL8n_<_j1XA14A0bVjJ2Bwvje3Ov`?+hm^%`GLpM(zPf zGq7S9gG>**i8(+}%n$1Y5NZTdan`)|c<9~4v;BblF-c$-kAAQS3Wsm%oSyi}x$v;L ziJ0*`jLK|NkOxzz8Adw=^o*I3uIZ$m^l`uw_5gD8wlffws$t5*SkQP_CM3B`pQQ)* zf>3f193cYTv6E_J$~T-)86uB=A9Y_$YM#S|El4h4)*mi6on(ylbNQ@U3gVyY;|N9L z9)P5BP3+WsDN>JYDTR{77ep0{g=zKFdXM)es7b&My@fxbkeRa>8liR+w&i`*9YUrn z#E8NOSyx7|iL)kB4qDa8NX&s}@cVJ3)xg1oo&v$*nhlc$i(C~=8>jjci_dfD{}RP8 z^=;aXEAmyVY86G%sm*nVqZ|Z(9O6b_LVd)V<8dpP=ongr{0Esds_4~`@fsRA+^TIf z;6A?t(yVi34Jsk19kG{cDG2k7TEKMWgQlY058e)Kd>o~2o!N+eay*6Pl>}Vg7b_Gj z)lO>gg>xutwA&AiA@!r(~!}E1K~g)u@2c2(|wJAOoTZd zzx-b|P^c%$!as=2!GfE<0w34dt58pT9eGuRKYe4+5XqSY=0jKAF>u*v=Dk;K7r#bp zF*5SF^5VGmE+^G1sYfG!qg_eADnm(q8XH4?BNv_29Jfyw3wMBL)}RVYPGPvyCBy}1 z+nYjI`dO%i0Im>4a8GNlWK-o@2(S-hof+TGIYENK2J+PLKxM`YKlA~ z+}t9u3K-?O>y?~3ogxr{bM8V@u}Z=fm_rT`V!)8WbxjR1@!T2v>2I2Mb+0Lr9xbEf zdkV9kKPjg=8`&}!C}UQa0fKtGo}tK#ts(L#N8msZFoONS9lb|Cjc~HO8O$tfk{@cL zq$j9jU$e!xUbG$%8}l&?DVgj+l5Y=hSoo}beTeXnN{9qBDL!GafcA9+!V!gP$J`4b zU}#(%&iH~V*<{PlhBFkrkELsSTQa)oX&#(D1Y>_9i~W_#{EcXP@-4Ay6Nvr^_lYFV zK1atZoMGeZJbD8hD72EqmUt^0f*`Er6S=CY|F!F?+EoY#(Ce|LDb=S_;1VgLZ^!`B;{?PNcVMD$^_s>C>F;UEygjE@dDA9EvbbdAn8bgPruUjreO+Ff5Qka zFsK6pdW1jxaFHiu^su=UL{94&!DX!{ zf$}zR7pre@Lvc=-@of3AS52JSWfcOlT-vbSiX%UNrX0B8l%3x}kp?q9 z)xBGmFPkeO?U}WjK&Y@`r_?=|RD-H;7e^==LJyhIDme>48j-wWscasN20(a>$&x9?GLR~2Rgy4^MSf5HViU+I86_hbqr?36oS%DA)%B&B74IE(% zNEW`1uUd2zqm+w&0!icuh1Fz0lT|*@e?z7dNz?*tksP&>j~HP+5TPj_0d!9~Qv)B4 zSOFxsH#SzZ(Z^*Jok4;|;MhBhieJe$accjT%d-gfn&rdO%P21|p0aI1w*`knvS^o8 z{#_RcZ3K=MLm@*MglDkKJk=}@{AjRoubUM+ioXAQc*?_r|9u&V3J~=rXj8 z;;>|}v@Zi}I-?n!?@#BZk5dsFokLv}D8o3nbf*2?Ybox8cgU1iH|3CXkw$vR^MN3y z0ObK$6TWmp+WZw=@rQ`g6w{;A=_6C5IYOgUYHPF*Y;LN(?14oQ!#NVcxdP$T$=o19 zov|gF&h{EUVidtC+Ui_$1LSy%RJv)NRY?AVW##*EV%AA}&?^=ozs*+n2ltLO-Bm+3 zeYUW+qhD8l%taQyN1*NYY`Gwz8(Pdgj^EHX%9Bo$ZNFpiG5=(-_MOSctA6-9=W*M4 z9za2?8oIN8F?Jyz&0HsWB*VRBylr#1IH2s!K+nqn` z-z}1H3JCy$dHO|Q3K%gTe2n!}+{E16b3P7YhZvCI6AcYj!2yy1rL?_&{-OmA4DK&k zogv9Z@^?|D(+XoXA=-3cR`3bnctoS^?sfQO?4DF_dWHa27yNWuN410mKL|` zCl9^mpDY^N1_A+^ZA;h3BgX|iVAqsSNMoS6!mK+O2ne4kw6@D_9~V|T?;b%lyKP4| zfw9!#;YYihmM}-h4lpB%0uht6-Ys2r zZi_e7wAvm8YWgTz)OgZbs079GO8>}fyDD(CZ7BB5H zQASNSKv-~Gz#$>T2uCXJ@wAMA5;QC**z0ezp`rn_jVhymKkYHW*|Q^GbHo^H=MPPc zNr-v}J{@DHNoc*-g-Y3YGiQ$Z%puB^T=)s&tQMpG!cu^-;+}gm2^KZTQMp=f_de1xRxYIw|axbESJQD3ry+EGqP z0D`bOG*<87n=3e*YBN&p9bZ6Y-a|@X7&z=t!*8B~%TK3IWhQH=)qu+032PP%c`L36 zv+=i@cPLOjKn#;o*yoAgWy$NQvf@;3+QVb&xfv98kt++-O1-MX0|E$$o8s1)?XF$E z(TAO?TQ>9ly|#hm>Dni!F6phPL>N_1wL(uzOr_>8fv}w4r3V5G`KuyJQn^~-#&H|e;1-m96N=Z?wt8IEp;_+NJr>p#? z88|P(bOEHzxMa?=qJ2fC<&O>fJ#u@+KtHP|tsOgq2M*W!jLo)y_-N}o*|#trT61@B zHH?m+v$kEt;yX`1TW?#d$?W)!de;p#v&|l;9;?XeD3OEa^`|SDl9lUnL57R&+ZP0M zH2ee{<0CLCJYu~0%^GQ4K2mdeiM1NAZc;6h3GposrA^Db?u}bY$1KzWC})2o=YXbf zSdL^%68G@%Us@$x1~8*%!5{6fEP?V(4>a&=RNp&DhYn2f!>9s%D?Hgz`@x0hXG;b} zw$&B1>F&E^{h$XEp9i{ZolgHTcUCB}1Nx(h_=A}d52Rk)_+4GSnAyPxR}V){$U6Jl zTDstg3vEMk^DK}Qa%(Lpbi@kzv6u9jkm^)TJ%kRrx zhXg-fjZ5!vw~d^9elK|jKiL1#5mE~|W>fw1&Hsn7|My&e104WB@_)+Z|Cha+f|I?8 ztFg=f0fE=B{pXuU_^H)*6a^HHW97c!lWo}Hlw0zg!Zs?iV6*|EU0_qzM4_0J)H?3F zlZa~kN;9#ozZrrdX&pc6;c@Q{SE&Lm!kjV~G=h4|K_U#4-^a~b90mqr%$hx>RsAj4 zvj`}DVj)X99M(W^yld8CH~_*&mI6uekaFyf9I`5%Tk-^^G-q`zv+(pJ3`phPS z#7*W2dO-otTyoksPlFK4L|&kEvG@(+K_?XTMGQrzJDpsk!QY!#2s$P(N8v?&l6kMi zn|(t^8xyJNn;v6?K1c~=nV_J_yf5w83mE_@f?nuznmD1{PJ%(ABQ(lDvB{RkqC{WTsT^Tgk*;lBFx9UEUC~t|>k0HcKWcjJV$a?s_tK zyZu}2{&h97?}MVFr;DTiDn39zYmFj+gP-cCqX*1ND(4 zxuicR48JYLR|~i5fKJZ5I8H6qQ~^;rF=72x@tVvaxz!bRFiZHKk3(t2S8TC$!L>Bm z{)nen976LP*QEd&{f}2*QkArHw)(WF3{xDuZL}1nS<72*=44sKC2H!wmPd*MO!8`( znyXK%f|;~`72~RRRQ)D7-@*pAp%;WKSk<+lFd+HFTe!*5>+CS+-qi<{JZ@ZNUujSt z&@evhb>8)C)iB@rr#h<~A z0S^Wg{o%uZAKBUu+kQ`M?_s?=0Df*S@zqM9M8flV=yg_qEW~5c!{dv` zQ%dN(HFogKY-m-z%o2PBZif%=Xh?nc;$BSh=9Eps5VMwQG-*5t`x$!m)yZ8+RwX`7~jj($zLga%cT4PeZJWxr^^a4A{gP=QYI?-4U< z)L2!?=EruJ4V1@Skll0&_q~;jH;?One!5!$bM`s1uwjDG!VHTV~nn}dn%O& zN{3AoaaPH8JBKHB057XH#{?u9G(y`~ov6C9*Xtn3(dX*AEkmG$Ko~IOw_*{`lb-q2 z?=v*IqaMud^XMt4pIm8`{A7ilRI4ZD4~O>kaxHYS^3~a7t-fq-!<;1x5$WQT0a~!L zPaPR_F|Me>hhT7{HFQZj0PM|B_Jx?^o?eIN1_9_(5!zUPE*fzqZ6-Q zoz_E!H-1T8_#?l8N!Z4v;6B)(xE0i)w*aD!Ohix2*th46QZ+^w_ojw;s1&uijvY_Y zXg6fUSW=r-^fdoTAr*@IJQ?CV-!e#-1oXeQP~F>*ofdSW>sr**cZkQM+bOh9M$9E_ zjGAR@p~XXwO2t};R|x9^GoVErkrydE9rgonsi3lAnE~;LByj$yv%En6CYod#kGDFv z!1k;!$q&q2QSQYZNHxLH-XN|Ps3b2+~D ze5(#>oi*BPw;H``+Ej4IsjsSpqHELsX}GBN;9u*);So*sOu8u23&m$g$H`)I-Ej?* z$mA8y#K-8Vc`Vk`2`(eS3BijOU;A)4R@)QAO^j)kR%RV{-+p3!=1cCb;WFMb;mvoi z5EwP$alD#2;r!Ps#5lNE&9k1xyNUWSgL++&J{>+Ae8dAFB$o`ax~s-DYmH-y%=*1< zec1O8H^CwB$}2b<{`vd=gO>k2j?zg007(5$arD2r6aPN|Ql2~KEsol~Z}s{$&x&gb zx65xQ^RZrYa!d9m$xO$_yPKVvSg}M)?FPR$Nv9^uw%0a(01{E9q#T zdfoheFZ+A%Hcl71vbSdF{1y6pZF;~E^-q}PYKLPydvE=SNob!oY@v|#L=VI^s!ZIJ zxokLsf80AJ?Sc6pnbR*uGpul$2p*rZMZbvSd!KHLSTw>XoYt+Lxvt%Y{<*gY<^2## zAtCq7H9tI1KH=|q&O8yx3h7@01Noa4{xz8;031$yk?a+FO6(+^Wzpo=3x?$6mNt*D z=%V*G=IJ(#`ZoggXr8pPZ3?3-#FlQUcMQTB3Q z0()LCo;-q1qnM=d`mRHaBL^30L4yTj(zj|lfeUZMOq~)E%s?YJ5TO2jv3oiA=y7-S z^>p-|{qF>z5x!MQ%IYt8+EUEp!|o6@L=V<#bm|oLXrxjTJ7aHTGR^7TBSk}B_;{4 zw#yszHS~i4tlA8J9Lhkg8{m|{+-#^83X7zf?;#jr;tT&GZta$det`L&hnfG{&tO$& zps{$BfEl}49#mj8?G2;;2IC10>bBsvsV>lsV>Z9&aWV(P7*Eyg6fax zR1!Wa7tu_JLUQGr8jlC1faLGv%rQv<1*8Mu04hY4d~F`bg(|E8-fK=2cfn=9B&_@f zBtv`wYy$`i!8}6>O;dnM2lpO;Lntsq_zuXVdKeF19gp}hL<|+*BoL)P4Ku*YHRIo@ z0`C?FrL&1fvU?)#S_9idf2-qoBUIKVF3fC_cwD3<#l)JQ_f9O5In_sYC&19QVI5^e?c!fNq-I0SXaw;Mx*l4W)Rl}$~)2Ut4fn&70Q*Ywx; zOCIs#*?4{H4P4};7oJXuxZe0G0DKX=J}Y9`ng#^!B}3&5_8CR1 z+#x0a8d6D#uTFSfJ}J`fxN%00R4g@eAVEksQd!-!{TA*8!Qxdchbv56SUJnm-({^G zZIci|F1^lJs;65f+U~KaRg+OPtCs>r%nI0HxQF~`oZ)5-J(D-iUn~1nX294+AngVP z5dfawg}aUc6AUauMYzC~UjoXjhhl+$ejwr)gNvsmtQ|xxO*riw(F#bB!0@Yh!i>m7 z86v!1%wf{jxG3egwC9{#e*OS*uG8^QZo#-GRFGJL~MVq{j1&lhG?;@&FQn4-uM6jY){pGP_9b14Q>SOTqQ zKE-Y~^_SSf39I%ZB||jelMOOpTakZF4?%QOd2NTP49Pe20)-LTr_m>)sV0 z!T!V;W9*YKbjC^(vB(qfWihfJ;p%H1=Epnfe$EtbZxWEg4pJzfC_Eaw!ndEB>;BE0 zrXyRLauzSu&oo-X!NIC#_)EQD$@-BMaZaDMu$Q}kPhB`PCFR0_xKOYN%^YIuzjeMe z%1`BqGtj9dm8Za&cSw_T>31ZfaJr0 zGcqUMxKcz36Ae6h-x5FQ*O3$JkWs4nIu+1SM|^4?qfBdcn`P*{*NThp=YTm9ILUrm zU!oYHvS@jT=MaYx{{8%h?`d`z4v-V1VNrHW5EMu)H^7a>O`u_$%nBFpnQbON-EsX& z*H`q!B2i*X6fz%L#XzcpfzMdmeTGt=41qKE(`v5p@L{Q@kIeJk%vdcQl4flX`#KG5n$DZZZaiu*y6UL}SB?RK61q)ca ziiNtSMfEaJ<+7lzTX)aJeL4z2@9^;>Y>qiKs{F^Ejwi2FG2xqNVeMp>#4~U{tvg|Y zN~dwfZo1MBrs7M){kWWcuHDrlo5}WK2aK?i*^3=H7Q8?w-;`_nK>3X4ez$(lOmC zt|P4#w4)oCIKI&;DmcT$f%3-ThPHJw!9=qZb$0CR#smifs9e*IeStUg?1KO*rAqmE ze}WYYAyWWrvz%-6E~|bcrjdJi7nai4)CqHu>wS1HW(BTM=4Z<6xX3SN(LoiSKwz6FsghNp?V_M6^MsS~ ztA(`M6YGJO$I&A(^bR;D%OcL5v>s$o2(iM<&gYC?O-V=I;ap57TYL^7SQ{V&xk^JX z#*KexRahMvRtu|Ae?jU*=ytjv0nkeFA?yr>mzu|nR8b60<)T%!@+Q8?#?fdScg++j zy{=`^vDZxI4bs!Vm+0IiTPq&Bs&c(getC#R6X?r|;U7<8E))O02;a|&M>Ba{wVt2f z!?~m6q5O$}BK8CS!C;Xq^k(Jq4%!$5n1e&IZi!83QYR+MS}7rD)VHd^+hN1(*iD}N)WYFqcNw!G z_`fJS$0kvLZOOLn(>`t6wr$(CZQHhO+qP}n=A1h-A8*8q_a7>%_Rh*&IiiwsT$asC zX6hQ#te-uR$`%J7?xA)V$fh~oB$&3R-Py2rD&{!IBM1^kY{Op{g-^9tg!u1P(qRRv zgiMc=>6c6fq7%XVf?I4jFyq6B~Nib!uVbD zYQI_iqGG;9ZD4)DyUaLkV}DpyeY!!2j%j@~0qq}7n|)w3PHxV|(D2Ygd#VL@jrfq{ z8=^X;vJGiSj$)-j+dOGZXLr#2BnM}QeI1yv@^X6EGzJ+~RF=KGuD)65?rRRiQTbL3 zus~eegoBc?EC-XMrbf}FYZgwuUk0R&Pk&dMB9Xl-V-T5Mc7FxOaVd!6>TEb{_dT1p zW%M%yphL1!iD~KW#qaGzG9-ZC*F&g{uHTUQ!Crse))^e7D$JFPlIK6;Hn;V^9h8;D z_C>99N#?P!bcJ<%AlBkwQ+`hayLq%j4MGPK1ry z4z(N}3ae^qmIymZ!3*tLPE<)DG75WY>6w-CWbIQTU?=;xV!jQLR_}PqlX>7n>-0u+ zO#r1}dmA81m208uP+GO%gN3wC*$nB8AFRQ&zcY0zT=l#>Luly*wbvPY>yq+%Hjk@(Y>#NnKD@{4--rOQp6$TF$ zKsr7Q?)R^bw-*N+o$1-VoVo6|G(H@>j$*<_O19CCrVZf0zLntB189+{y7>>KYVGL* zJ?WCeJrbv0Qv|<@i9-Y?W!ATiSuO?dh$z2jqORqRBF2*1&0EU*OSm+9&wf=^AJ_wG zkMc=98>HS2WtcWv8n%HO{d@}iAahl0$x~tFfjtbxVLYe9yY49#i&=vuhlxf!>9dt? zTJ4kB4?;9h&$P#JvShz{VDHb)%I}LqLE2ny?-!5P-?+UV{6n=m-rArsIqJN&dVaww zE3cGUcij}UUia&I$4~&ur;@1QVM<^H8T^Iuwn>ZeycvdTrIK?Olexi%f1gcY41C{% z)5RuArh*izP@SM7J^{A(TdrMW}Rz-#3G`j==H z;Vuj}=_Em-5MV5)rE}&^BM|=DUgs}ICpd5vcgAqKd0SlPmjq4bSKZEJF-{XZ1`BkJ z@125IS~0>zwPpiM#F>i zegj5&g7c>)mc@p(Pi#BYESC8(N||j#GtRr!radX0VwIt)##m7~*JG0ycA{fd4~f{6~cQ@A6!iFaQAK|5Bb)Fg9{_`=52VZ7g%g zO_moF9&2Q)qKC^SS*J*8(+~K#gq6~$VYFMl5j~6 zMs%~8r#|>Ccy?=ee_nWf3u|7>Y0|;cjbQbSU z{RPCJ;lb47)byim@C_eJgsmxZbMKpuT?yI){XJIwUUt9; zZx%O66ZBvjb{Kja+dH_Hsa|}hTcp_enzU*DkXkJJG_R(4ZgRA5`&PtTw4>PheGUhq z{@^<7jV)tJlMM@?bCIf&AyCA(NWKerA1~CM(7j=5WY3im zI1FrVW-p^00eGRh$VRO&@)CgorilGIYm(8<>K(tjAJ3>9T;NFU1-Qv~ z_l*V$&R}CH*+@7!hjId>0ktbonCQ<2L0pOqWX>;yf_M^t*dVw#XOju%RPKrU8Dp4s zpzr>qwF9{R!Fi|el~#|dM*CnyTIo%fQDrp=l`>~KKhuLxWE26KYr)r1{oIQ zYP`YcPq7Sga7~F~!gElyoO1#=2Ho!QO`ux~DREMtW}L`*L^bD%#EYLc(m?g{@-|)i zS~wUPx&O)NhCYnYPkJQTrycfuXkJ|ENR!mc!c z3}YnoC)67J6bfs~wc7^An9<;V3AL3gj3b-9(>(6VMT$_YVagF3()8hHaewq6gJw_W zi{S-Rs9jl$eUMK5_));EEJso2$oUb*QA@5 zF~h>&@`dy1rlmy>^Ryzc=5vckWeW{3-$-nO4iqwAGrD0aV0Kc2O`0g&F1-flD9X{T zE;UOt?s~tzE6Y`av5vI?0by+Gx&z9*$jQ#NTGlC&kMs1`bSS5g%qc=lVX7#4GM2$T zj)rXhzptf6_s8d-Xq9;QOh!cELpn9GeBSp^r@>z*!57hrI%-SGk)%M3%4iPOWfI8f z$kKBnhGYkH-o4PNIerJ`WCINPwy~w3(nz%y)CD5kpf_8h0#tKQNEm%608O2CAzW6``Mn}tsPd6WQe`PKa253 zW1k{7pdJ0?kZV9~;)uR0x1NeG5znSoT_-mM>TA&u56-A=k(o3vuCzNnhl4pr@Zy~s z!x}(rdB7>ev+%+uV~Af922k3OxR$CwE9h6q?^#wa6!H5eg{V_yFvJI~s43I~U(D>V zP?&A<;AmT&ot|dUBS9fwBiN9CczpNGUWUyf0QT}A?YLS{H;+8^I8MJ*tL99(?{8CMvP@f|o z88pZfAVI=1n9WoFi56$(FRhqm{c#9(K#?O@K0ieToS2WCL+368^3(C4d_);PdOC$> z%HoHWYbPb>caSkr2rti&PD#OrAtB6q_X`I|q=mn(hw%s+#p>u^BPY3OZQa(8@X}h6 zxxs)k#LL;sbpzplu>)@y6;)TK8Gmm9Ssh|OV%Ug{R=C#LYEgAq!v9m3AfIzywx!~2 z0r?JNot571+*z14YxPfb^;#a4X)JwKIirhC-f6A<_{2zr0(<=c zB2&FoE=gm?C}HS7YU!&u?y|5W%&DEEmQ@r@-r~;LMz8i3{;E7*MtS`8H9x5LR9=T` zk79T&@vmLHQoYi&Lhfx{eY8FIjt?l`m5g6xFfPKE*3tws=89F~Vr?Or{#tiMcu!gb zEe9{UHhY~BaK?|>`b7e>I7)b-(EVP$yKm(gcjXL5e~4SHcTY;lSAFl-NO_o~MT@tI zRJ=JAGA|UP7ObA+dI|P`1cifiK1ZrSiS#Lgvw^J&4>is?;uAc9n=hfH55~XHxNf~N zfwbeIDNw4(I9O{}4{5__qBGe;5PCt>8n$(abWk1!3O>en&dsTifh`yS1rPpw?rSgU zMc2OpW(-3G?@-`-EV3RB*Sgb)Zn$vw$Z7U^YXwmEpuu0hcar~}4IFYDzW<1$?jwxk z^gpl?5gYDz=8~ia3LG^-cEBeQ5OeA!fnnUq!pQXKcfzbkf7R*pHaxPz1cRn0f8;n4 zw&8neoY%RiSU)-Ph2|;;Uiye@B6nuV5Pr}=Sq^%>V69@Ou#|Z}img8Bjp&9P-M@eG!Vn?nu1=wdsz2yYvhk6lmVh&)Q!;oVtZG`NRcX*>IQaAc zu09XpT)SMK5CdWxx5emgS44PfM8zwgzlm_fpW#!H6`T>6w0orl1_;^<6NtV5v-F8d zuY;8wSWm9jDy4FOe7uf*q5-Df_?5l(h{f{0R0QGJ=*h%1EQHM6j0>@! z2cp&aNVV9&8p*i6g0^OatnJE{G8MiZY>%G{9yc`VSvSf3_SGrmx-ggYx!FZsWBVK1 z&Bi3HiuP5cB198_59Hr?Mvs-QRpXp~W`(f)&mC0A= zzZwW>n?~$(7pv)V8}QJf65r6&YP!3V!RyU0%c0SPeLn793>+N1-*jB;KM)?C?J(z7 z{EM}`d1v7#D1$6Nm4Hq#!=j;BSYMBx2SvJ_DAV^!&}>D?1qm3^8n{%A{s{dFzEP_B zGEJ~I^R>-p9ThRQWHuA7W2QHqqU9$)>61&fD*1wp9V`&G4J8*J z7gwP6dQ>~U24Qty%F{GcF+Olmi#2JTiqhikNEH=*}5=ag!FTccarv%}=YrD{XXtwdItFPC} z3$UnNq_p%Z+j%nBZEa;)?rrUD?ZZSu$d3CjMI8wJ_>&E}1Q= zutGz*K?Ju}WTcdaqwx1p$^mVfFV!{|`6rM5f-vqjXxy1nHG3{<${$1_@jV>b1ZYU2 zx-{G(btEpTF_^Y^_{b!F1b$3fq}cn6P&|i3S-S8<^@={nIBtQgI|dyiy2x)mBsZ*5 z0{=|9v_>OTBaBD=oFQ5NSlac%%zfMtjR86zxB_xF`y+6oWQTl=$&CaMQOh)iFj7!- z+L!uWg6X)xDdD)HIq$ICvT{9wh{ircs20$25CD7%LTqKn_}&muYLEQCQ)&)fus|6V zadLcor(d809-yFrczDwCd^cIRo{<=l3^O$3g86@lc>e*_Ol(H%=mwp}8F8^`)b0H~ zne+hB3P#4V=>;0;=Mi2Tz)N}hFhcW!YuLo+&q#qD`pio5!0GG8M!`f9f$XOaqWtr~ zguOw+98pNt@Y2K%#b2a=b7b)pQfAUc6CsX)GBhBkbHt_!nT~P9_O{Mg)=rWgOEoa} zKIa&0pL13MCq1o}@+{$QslPu){QoYVnWw;Byp47Vot6P$3i<>rzsY* zqfp~jqGoC3hj~C|4T8J5R>!gh$_nY+SP*wd6ZSR+JEm5qNvxx_Lc(=3zU zc~_r*>`R(|>`Qqt>$w2(L;0Cev808DlYagdjk(`ae2+uutru7^G)EY83{b%+SgQa^ zRz7N9cQ`sIDz_};i?vBC*UF^OPP%{bj`5j6drTpROKdC-j`*TLJ*0OlAk63$HDQ5T zaKj+3o_M%Ap0KqRl5o+^_Q-mzy&st64uEhm0@k3}grxd)uAw^59PbQ991&0RkWA@& zW73`AAbu|CeRI^9dYF=VHc73h!UfYPXY~CXxgKeKc*0Wyu-tdbxPrf|*PxJ(49kyk ztY>n@o!%%NY($}Q)}1g6#Arg9nE`6=EqGu~t`k!rg-#VRe@5iwL|lz+RAj5)+HZeI zWi;l_5nvfsHOg&KDxA1$+2gb>%2+?@|3EQ+5NZv1LU} zw1cIsNLWQ5b(WVoZxAUXQU?yM7MX3a4T8%6(`(Ex$H9Hz1(h& z2z;4*CkQU1X_*n9*t5Rq@N6gu3hG9sS`3U@Qf1;A*l`%csxI0?LKmWqefQ*6>`N3a z+ql{p1(>6AjenY3-PK&l@t`6tF>jBpM6cNOFm8e{5v_KB zU~Y`KTl|pa-2xa^Nw}&~?+g=`3~KzUhO0L$pqvW`Fq#6F%elt1SGwkjOIwJD5A!KN zAU!s|xt)4K{QV(Ft3f($K7#OlaDLhb*VbmL^}%H&J}N{&_?D4Ra(vgKdgM#zxeqX4 z7~9}>>3y6g)R;lqqn+atK`3DiKV>bX!{wSQV`_&lA^0$1>I+1qTu(i>HS7mCxG|p< z69H%dEgz@6B3SQe;}M@+&0+Q#=z*{b&U|>}gXYhVr9n8rZJ5I_&&H2kN^cG=es;es z?|tkD{+}yo5ZxW?+uG2)ANOq>&5RCri{FSp9~@w2cB*dQ zIRA=4l9Fm+9m68skw$D(P&My*;DLO@`(p16rc#U_Clk1D;G$!FQ6IXCFU!#mm7}`J zlFG4NhevlQ$9BQ{ZBZUt@!7sLjgbK^Vh3Mw12zutbfD`X15{1%kB^I5F{A>+SQIpo zLpCb#525gtk)Ms~ZVLylxmHr{50dzth5y+K5EO*vH{tv*A_{V(P8QmXBSA^u@bV)R`5MGDS`E|kz{PRWw z;!bMG*f?uL=kncOebb*SmEZ+g!+Kbt)fi7*F_t6)s*fI3?r&Op-@`0nTDjDM^69j{ zcJ({61NXYO$TTGfkG+;8*lxHF+lY7HY_xv+zg8vuZa6pFZ?#T)7_)=FxkBb=VGhE4 zM&|e>-oj@8q(pPGPS2<&K!>7nwI*;CTpJpYMgH;1jDEi@wf^e*zHK{s9WlPfmfbn%lW1D`-7&s}{qh>W`j23F z!&>`O{q>tKzU^)5^qM`p?aHEhPKKl^O+j(1dnc3<^?m>V-v8xn`~SmN!Y=w&&iYQa4vzoxh1<=fcZ%$)LgPXy%v z2YPBAx5LE3vPLGpPk+Kc5pWhT_=(yzlF)7Bkf@+(TRW~}W%FZdh`-LhZ?{_U*aw^ZJ7rO5^I(J!$>N&q*RUe3$ z=LTT7C@llG?i^RoHoi_b^}xiHd*T&_S2Os9bTKyku+E!E{uhK^a^?{)$k$*dAWQq? zy{NmM9#y+F;mH74&xX(TZ?#C_y&_vgDAvmB-t~|C@4uke$KcNT&unKXuFGtUXX&?V zbZ#E{ii1eB2v(Fk3nT!F5XqHfApNB=Ixy-1UchT~^s@3xr3c`$%KA?!UIrL@oK!$! zZqc|M)Z1Y$Dfw&zUAU&wHB%H|64kWY#4k6j;!Fc1ZV&*6tb1InJB+a3`y?I?&^MU; zzvTviJv5X*?tY3?ZFP$E7k!4RGp+xD|4&!&HVOg^|5(#-%yANhn&%YftQa+L~UuVP#8T}05jM#hJ6KTOWWE&W}J z_xWE-^mq*EntaP502KZeIa~H0z;;2{@}7!G7d>Qa7Q`eqjQ*(#$M6c8W zV_CEHa*YcS<#nBEosb&J&!43ikKfb4?(d&Wcu~)X>2vklw=?VCy|cSLGu&{H5gd)j zXRtZjnh$M#K4IxJB7v8)TiRXB-8}dMKz_K(SFXPxh;|jqC-vHI-x18YjCr_t<#;n9 zP1WX{yss{*!rLS&o-$T@Z_o7ci^dGmAyjF2^2e!lw+rNRT1bP2Yz3^oA_brkUHYk9 z8Brzk29=e$GUb=m6Pai$nTZfCKPt&kAAE+3^tZs`VCv|)PA@fsQN2)xdTXPJF&nYh zEor*C)$$DIWj4m9oNa+AABfNb*f`SupzWST8vItS?T3}`TMe@m+C3+QdYH!z0Iq&{ zMrRzM+;|z;q~b#ej#B zjZc_03;+26!KPQ*a{bsuePW8qlNGWD{(eN)1#y{C(OBq)_74M|N#$a5qD>;H9n1to z9%{}-9JoQIh4$OB+W3Jw^e(QMB+OxpyvY&lk|b!t&n{}(x%?#m@Smt6j%jOd0pOr)omSF~?h%`BPe7if@q+_xe2Ekp@` zjM>z$7w?}Fng`@(BY@I)$65oMB=46AF^=Pca5j7QODFV=ifpOL4>k~5?EttzH30Gm zB9~bzj(m^L*{dJ2NKO(Vw8-EYHN9qpy4z@(tpoN4Y3w3f-bRm3uWJ9`s%cYc7P6=n zA};4IgpF7GmY5O10JmrX0$?B$#57?a)qy$NoC4@{>~(P44A90Ffq))Av*>2aU2YyB zkP(L|n?p=W3La?FbF%Wv$O<_7-#mISC6qW+4*EG*xf6p;k?G3dEt|wDUXsv%kW-57R4PgUla*a&3O{D3={R>T>_78# zFC6A@E;7l%A{@^}&lo#qbJ z?N@l=NlIwSoAkXVIe4Excw-N6Gy2Y>g013>vY>leI(==x3>#hCpkbk^n5^B^pqP`ci}5!KW8OQ(Y~#hAjmKrB=vy6L z%sg##=T zOrjqunDXV1s4%1w>0CvSMzGFSjX=EQqI>pnLi&5-Qf@&KWjlNmz$Pg51Az$nR{j2l z0kA&?hDjJ#UdhNwk_xp&4_i3e)26LjL}H&ZFP1YGWZfn;1^U&cYDuJvJheM;Bnfn; z1N5>an`hY-6Sf+GOa+zA`8_$LKCram?4DmW3?rUM{Ui)oOF}X5vj-2&S_C425j34& z1Q&D)I)He7qc)YO3;AR)9@6pt*khhji~CA)Tt*lp1wwK;06$Zv!flZV*0ZB*%e^uy z($hhL#ZL;WW(Go7V_auCiPg19yCmp%?Ke6TFV@R%-skY0{vyxlAy(D+;ue9yN^>iq zrn-JejB@(YFiw!1{@dij`3F3I>H5pgWyx*8mMi_eO`ki1+7l7`n#6Vj*Z5Od#v_Z zw3Fs57r^@c@LdW=LInp7qACh*v@Typ^X9FKjlOKR%MyG<0_f>4MAa~!Tkw9ozdpWM znxszP&`Ru|eceBstBaqj?hARXO-(N<(~(M69v4$7l9$jwYT(Nm{C?iUD@;7DIhy@Q zXPRRHvRMPXO|R2$Oih3wMhg{oSD zsl1Qq@*tA*k=9$^eV7!4(kdR-t;Cb|9fw#-Wte6(`J=wCjAt3rvTMjW=fm4gvcYD? zr0{RP96i}c^Ysub_5RPO>T@dR@4-4ak?_$AMq8oRuxBb&|Jpt${9q;<_i%>rMTqd< zvcV6^RnRD{3{lv(FGdQYmKP!+h&50$cd3}Cb&!+F4Td&$Zq|1?e{Rmt`!@@Da7=M? z%g9({d$@V-b+NJfZNI+?#(kROxkM2)jBejS(Uqmiu$6WY)mB3kDDG;TidyFr&3dpq zfuU`TX%$4_>rkfMm`*ss*fEKPH%&!jO1Mokk?-_M7);e3!Hn~#v|odj*L5iAul~KZ z(eF;>);PGN8gceM{Vw1Yx&Rs51HF_@0n#b~DrADPkJP0aaSSMBty%Zl{v4z_AQ~el z3?4fQrv1$+rFmw=dsn>hb0dmMI)nm#4yKZj_=H7;2o{OL*O`s6DE2dX@a!sQWBijq z`aX~IWuu}yCB2X;Y>#=ulGz6Kb7|mX4M%+3Ry$UJ?(Qd4`*4J4Ifb9-ZySWMT5m`x znC*s3my=N%pCl@`r=|51Yy9*cco_9YP*h2<<3(!8zY&Kh#=cB9<-gG(VPCN&hiTD) zv2%fJ?hcl&&`^%~8uOU*N>4dcZbFM^lF1cac2>o0c2>m9vm-*vwj%sV_D~G!<_j;( z;BR9XcFXr-JAX{QQatC}TRbs;MzX={`tfqXw=3s`-qwE0=rsn3Jh2BSRPFOzI z`WviUT3+O{2KIo;1Tk+77gg0zHzk;!Su%e_qiC4QfcJL8);z|aV@1u)p4%W{1*;HV zh0Nxu1QtoZA0c3y-o!h%p;>R=$LsSq){ zUI$8Q>!={9pHRxxgHk92JoTpc(Zj7{PV8C=VdCj72eCc^E;ds_V8k#LlAz*3!E3u2 zF{GBX{H-5wE_S- zUT#XVb~fo^TxXkL;rI7hudYA^XbB~Cu^?3wCX0GzX!^I zp1ZK(+|V?0c+`$*i#L4ENT#?0&19`tIBG+c^1%01&AW2*1`Fn#uU!}jHOCPdh`tA4 zdeODS`)i4z?b-u<~ z^t)M;JnvDh{_Z`7ILukBGG)D-wrT;eMNoxaBd6n^lNp!b8uKBE(X2yWmvq6()qW7< znE>>Ea*c)IZSA>*IdVzb2!YtZXNxmwwcPu}Wb|Q&)57292Hl911AP_QYu$kS@*&EE z6m)%aOhfUxsT;6vcLRJ{Ce6)4jldRKy;@XnxPb}DGQpv$@d#?(mL&LaWYOZve4g5y z;m@k@)GT3D%Xj5}!5197c1{~ea|H*^`G?uc%SW8>2&CE_h@wRmdVu$ydh3HRf`|3( z%40~3ZgF&_W(!^<9Jsn#@_GJaxR=4l1dy`kT4iDtdsPMUogoEU``Cv z67DM=;D<=l7Bx0GYa{V`oU1~jHSAnBu0C<*JoywpFomyfN3%}u41;FcTQ>a|oIyk} zu*jntHQU~c7=-~wQ3Lh5RM7UqG`t~ktf0Et2V)1j$zP=L3x0z!Gv@c87xqvIFJarL zvUeZZUPI5}!`Uxa5F48E4ZC-6LywGnhQ@Jya?^>ZqMeGT({2}y?#>oy-V4Aj z70lVm|4r1h8+HWTqk{|y$kP%`mzyTOaZ0VFrTxcZPOItb$+AMMdwz|HN};FsHFBN; z<6<3F%zqGYO`yaS_g?0fI}Lv#d;Z{a5DvIV_I<;Q_Q}afyx*xG}ev0ACY^#?=T;$SHj-Gd%lAbgTzj z>}260_)0?Vp^B4EE`t|__A^fFokC0^poZmnjI~%4oZe0&?n)33K7^HG%cg0(TG)T+ zl>@|Guxp6`S{_8w+==)^@S6mT`S`_v(V{{9qU#2G_-8a3gr_Dgr*E{m?b!})MM|3Z=K&qC27Qpb%&mRaV(CwYLJd`{ z3SZpHh8!_;!I3XFPsR3W6izoB{l*5sg+q#FNh^kfx#g9FF z1;`fSO-3I1B+w^cE4%5H{Dg)oEBRY`7tf?gtcIVd>EOl4X}S{hVIG0zBLQ7yxsBwNj2?4E~qX-Rw9QkTSGTj#xQ z$N%V2ejA76KG!jw=8OwanRiYgtzeg|hAhPgZDFuDf{MzP9hb0u`5_DI2B>tC_u~#n zJx5gyLVJ_8&;TX-6@neZy#-X$fGfZ#V*=!Yn$9oB6Tn!D16=Ods~Awsg5Q=gJxZG^ zYj&@k(G}@uOGk-=wcX9QyOvUhgzBSk@+3z%z`)~xC?JNnu4@1<*SYn`X#&b3)qNIj z@(%vAueQz^P&W-%*cx%Kvq-+Rv$^3QfgS>KZ6hUdy$MpSI2z~#3l(6q3ixE`rV%M( zX$V>IzRNtyN0Ud$x!gSNS-BC+Pq5Pt{e<5G*i2CBC)ZoTIQoq8QG(6WoDmiMv_xAw z7-izJnLwDLn4LHj5>1>kU_Pv;R*(1?bKj&ygQ0#H8J>VI;i6DL z?N!K={+tndO~+WYUzS^laG5Rcz?nO5T2H%1)m{GHjtHKg5o&D@Y0&}#t^1|2lBSR- zJ&Eh`--(dGR~c(#2ZJj5sw$+&(0E{k$nOKMfCa*?5Cy?QCaVfOgb~pa9aX%6w{LY9 zbJv?cZjn6QB8EGN#6aQ1KkKZ8D=M^hE+i-)(nv7nv#-~<#j|6T%$u$_;cj&QoyutO zF#BJr||%%o%(QT3!%v=|C% zOs|3I`ziSIapX7Vn~Amaa!xLWLgvsKoqtaZKge z8Y^umZsuD_N@;mB5)Msyu!_76L%0*wBp_IXvk*ArBHE6;voY>I&7Hp|&0;yuL_{yk zA!}&Izps_5C&lY@9Qjj(3{KrPP#;w=PbeumNL=W30->UwuIND$HLPEU;>QmlW^%w+ zVx`6xFV3mYhNwbSe))SYGylI~(bzOT@S#hO{6jtLw*@1VWBHrf|a zN*)dl0OjMHs}#%~u~^fk#-ajS4n;>1-6Xy(w+}?ZX=;pJANwhF^#}neV5&2jmVr!q z1P3UgFg0y2nArN0mbxJt8^t5(#19twN>I=eHmK2f#TXDvZFdZjKj-5{X8EWtFfW1m zPI187?j96*kIR_g=B6gT`0#V0$t~8e!yEE zxy)a(AHRL4w~$~Xb0@m*2yhUO3@S1=2F{U@KVQ2#-L}Jd2x|dl2L0+hi@oN)= z{1fD2c5Ta2pbFVe(|BgiI{}%P2l! zDl8$zOguwW;6dSm+{5@cKURR~Z>5E^3abT#Fx9dVS2XJSO=eqf>e^1G1v!o@B24_R zU1Z&r&3aZZ_Y(ovy2@JDtn!*#@HrvHGT{^~ZuRn-8YokSEB8GO%592vGLQ|k#KdV< zLqHvmopMgZ!EfL5;e4}$Hy3*>xg{{=RZhKRyJnIru%7+{>dO4L2Dw(sJpN#C^RQiv z&KsHLW$bZI=T>B7tzF0#lqGVT=VU+0m9|St2)`Hou$x!*^EZy?8rcT*z$jn3v%Wt( z!(!(#CpA(-ITc*07K&$w!K~7fQTC;b&Ha4$1~ew)EmFF>G7a*2-pxMCn*sOoHbn2U z_54Bh33ykpR-+p>R6nu9z>-`~w;wum`3=Bl5@7`0@K$}__RUHR3Az5^`KRArE~q`Hpz-z9Gnl(hNT+t?_Nj3|(NtQ8Sg;A~{HCO#7a@F!w1MPIay5)`HnW_)(&jzlh`cF!&tTYtCMKlORd(Bb$mynQq##kT+DD64dRVB-) zra?>=a(U3~7ju(^oLXJWy-WX@AldR9B`15`VM>#lOyE|0Mt6Mx|4YxkK=X**v}m#? z*jib}D^U>tNX?xG&ACEz8U_r*=Gg~A+XtVwcDLLiEuh=VH^~U5+Y2V~oaVG?lv7y1 zTXo$ov`P{l35$K83p2BfriwZyR9o%@gWR0R0y{HF*pV0#FI*$lgM>hJ@ze%dgJ3D_ z)crN5(8JBV4z9jZ4C47eR0vTgag`K6({ZvugB|DOU~PJ!+a=`>1KhBEFyYAX73 z2O_nq1*Z-_HbQ*UH6UBmb6VOFfzCOdm~x{#T@2!zR5Ny^^ld7gCNKe>Oj1X;So5U7 zno_n_##moo0{Bk6JKzZa-z&)b5NPyyQZskPz;QCYaRa)K4Gz<%h(IbWA2Y=6O zeDZ3cEOhA;E3Zov=)~s76Jm8qJ1c~mVY?YCWrr%C?B9W?at1^`N6?pXu9)Y#;^kE_qsrRYEgEyK>9grzCXb%k}mOpZgAuw0D?g)O`m@fcv% z{6+IYh|}$gz0NUQt23dua?pS#`J{jb9ahiYND$^w%393Qx2n@UoM16u>KZF-!E$N4 zo;W-t;gZw!RI1QOV{pl=q!IoZb-Eni$-_9Ffy|s1B>h@wPUTcyLC}1+6D3GLw+ROv*}8hm8y2N$#t>oJx;{Va>3JYPL^3^)rIV&FM}*18so*$I>EoDP zB&Z*%Gnu8SQa~+(%c-&pkA{XvUXM{_DCz7maSzR|KG0x?h4d3hHX&4#n-Xmj)YzkF zu)k2xdN>m-`POnNhBes+*wC75Bazi0?w<-wn=MTqgC|x?G)XjZdWqrk(#K?a>R2^et zN*@dh4V!krzH(%j?Y^#5n+ssO>V7J}=3>t~Wxah@bnQkpz#AYtj}VoTb-@>KfdyJD zNn_Yf-FNBk!jq;+q|j6q$0?u)kE-!rIiMinFElFkpHM<&XVIN$G7w%Iu?L zv?@emMID=>BpyX-#xVqVRiR%}&Bnp-4Z09p!S=&f;9Lmm!(ql5KKzwz$Hqu3k1@1? za|tO=O))s>Le|(2Eyjt!tf2Yx9-e`O$30j^&|Ofvjubo+o{v+{BZUN*D)#0eJXD$+ zIc_=!Vw3DWA6^qvpWRWpLq#ZX^Z3jmDu3hqK~W`n_m;zOm7wf{T!QK8HSv3h#Y4h&&5m9(iq%}H8a zXeyeH_4|HSD||_PT4fif4?FE-ghQ{AMp}J3pP^dy0O)2fVK2-}EQ&g{Dx|CZty8;m zc#)=l(q61dZ!WwBqR1;e1%ev#cvj?Ct09cn3RBfAHq;bRsbhmvd_#_Qj_<*T4%fS7 z^0A=7S}g1FZZ>Bqc+N>N~<84nr%%fxT$y<^ zr<^=iQA)GB_*;0*$G=z%B7D)kgqNtdaecRL`F(x2ea6Sei4N|NoAeoU-U)^X7xMx+*29s*eeLfh@7QJ{yj9X43X*~KM zc#No65v7=psL`4sNCEY#pF;Q9F}+`K=V_vWD==ZENRu};ONCMd1(^+%k+7;T9$WLV z#lVPmB!9emSt1_Zp5SY~j-j|VD!UHF@FZk6r94z3?mwx6 ziB@Tlv=jXl^rps-$-SFSOKP`29Z(hVntTvd1)Y1z2SHNC#+r>^patjzti9KZg%k^O z%f*Xk0ZjYHxCw=pk|j@a(`qBogljR)MMI%n!eZ)Qr-J;6K5dxb+vIkfaz!HJ-`N~C zYB!CWK(5~iRAn9CbF9mV;^&O}lT*BN%v<=wVOOov5;w|4e32pVEQE)&mEhpj!Iq7y zUA8Wr1t&XxenNrMaQ9X$RxRmYnKT*duFgz3?tWYrWx{r>-PzA~KTmwxo_s61{S_Dv z?jW1PL#2mN9`(0^K5DmyiRJl)fzPIWjuh>TLY2l~MvtC_wun6R^lCafWz1U7b(i^J zAuH4sYnG4o2T>>U>7??|CIvAh9YF&T0w;_}q?6b@kLNQa?9+=;48S6b)P(OK&;d1z zCKmE#4D&ULIIEzduNFbB(4`pRG1NCOOn5#`02UQ2m2K&|jq}^g@L++Wb}#o4&ViAO zL%PZe#*ZXU0j6u~KhnjZ6ZqmIMI_8sMaQz&%6jm^8Nf=@9QfUp0vs4BO~S#6+=1@; zX{2~c;N^^TSsBCJGayuu0rw|GrZXb8gUBzM#Z|3XnvK6@+Kjp31O!6PP|Sx|yUj+L zpj2wSvG`X6k=2_*4H1sHZNUVvG}uuZ)+c-LYxADYN zML48sMd0-P4bLJm3@h{YA)i?+(phUxr(_y(daI-i>pid94zS2=lCX=h#J zreuV)nT+IfbeYP=mc76g0!9366C5)u4!KNQ`RDxG&Q*M;;U7 zR^t!|7j9?4u+v@{j#t0BqH{T^eeVMjlysIq{HdDJ3yAmNelK|ZP597dh09|YC`?9? zfGL+_vZFzh@E7=AfSVx&Z{Fb-Auwn(g=ZWpI3OAj4|NXIV%4H+pCxqFBjlJz%MMSI zfI<>L5ap>#!s-s#9M@pbdv!G}+S1&6ot4NVJ!lp5AM0m+DH@O!dF#!j7;uJ#8 zd;`{7&@>z;9pXx^1Yvx($dbewCJ>_ejntkjET1%{gC%5UNoEB(E)U31MgX5%sIF`( z(aIgEBPG5_y4(W08b9K}c6lKz8dBs{qDafM8wjw)?j<@_ml7FBdqW&acnAzdU1I>8 z=}9HfVv8VaDl#9SEKes$E)vvI5uC|PbMPT5o`2-!|5`^c`+UGQeW6gHQ)_#Afd^ge z6t#zD6*a7kX=;KUSs6qXk4-8-+GvhQI))}G5f?1910OwsPV^Qg+bUrYxLvoliLBrr zVimHGa;dL1cHdc0*Iu}{T8AhI)xaVoFEwZ@Fib&4UC4hLY21l1AD{BQb`qKBA}c-C>}fXTx6fN zNhf6wp4&~eCYc1C;AE3Mz|s8+JKyd3Z)Kr5C_f30I;ozBIUoJ3o_yzq%d_k%xEHE3 zRZw+7{-?N0z0~!U0=Jn$r`M9Li;UxzwVCFbwb7#|1{FxJy}>g8`1fGvd|&7155*X- z5Hjm{=Lvjpq$X=xOp=#^hG!Tkv{SK|P#GFv8F`ej1{Hz~t(`L@L(PTFp%%#DtRY2z+LcW1iG!jI>1cEU@>j}y|z!TSquIG0>$z#sF{|vB_c3{EX zbSpY{iQ}}qFbwTi`o-g(a9o>%e&Xn5X!avyEU=4;wsAM1U8_G-vARU}>4R%eq+1H8 zlFvp`>c;(mr)=IDyV9gahet`^R&8p5q|{763Kf})RANuo^_vCCXKttOFzA)u$y=$r zT4&GlU%lfux#j6rmrtkWBOLScg{LS9vg=GQW^N%BZT$GLov@S}+r2n#TqZUm$tS1m zG$gv%WE}}Q=_?=PFWHD*r{JIC`=)y3;kA?W>jv@brv9n4)&K9dhAVWN7wr>>#50r) zO(M0hL>OH(_mHAFhhaVFo3X*zlwr#vr5l$;sn(4%JzNMy{Q$SghXr$|!}ad(TeVpX zXhX7ZIP{57hTbGfAP*DL=RWK%PF;m$j;tqO6VD>Ai;ywKp4okiTBtb?m6x{@qDECO z!0tFBhmSM60l%O81ssCDFcU%)0s!EjtmQxQ8GxSwYdo|8r&m#i z1pv?CJk)(TEHDDuFEDa(hXw!yIRgd&_}A&b56AZJgp(DKll@=DgaCj501Ql4`On8= zvj+eW{I_Gu8yH!cIRAKJn*Yy<+cod!KkDDT@3ng^PCDE!ANj8fwhNDRGFdFGf6quP z?Cd&lVQuEwS{sfc6B4glzTbb;DYP0$UyN?LJ<=@<6A1tU0U#0xHm?&lG0}|&Y()3| z1bXs0kQ=_{TMX=71|9C>ON7 z9W#OS0mLmk&Wth^oBehKhC(Ykt8E9zgg9^>-}(x9m-H(-fTXLPUt>QN`bExm6J@g( zQj`rp(TUIWx4!W@p=jwUp&4@A35F*UtA~^9O&P)OOXMi%-NV8@Gqi%X!!H>9$F`<% zzb*gha-pqwInECUjC{WIzh8#6o7vP0Ys++dS3u3SrStAnXTfd5i!4B;a93)#@fEOK%2c=GbJ^I_}a z<$jNPJNdYLJfE#}`S|d5dHA^aW)XIQW$@VXnEoCn*PyC}x0}jroLqd!_i*)a@`A0N z@xP85JfsOpj&rfc|E%PCMrc9!-hZ06dT@7le0}~{>GJlvvvjx7%}!e#Tx`tT+<$@% zBo~0MrFR9#?6|a#!v!we3|zKZ-6bX5guEG?@91zh(%tIfw#>`P;RN{=gsWg@%LNl{ zE@~RBIklJ}Ws{l56%ZfeV~_kb7zk-C$vbC|8N?Ymmj`l&2FWj-^VyeO9!y$t{upy= zo_VyZ@6^a2hpEG4?Q}X1%9eGQ%K16AgudrKz;j~m7Xo7PZ~`loFhE+UFZl+1=utTj zvAqr*EOboPYBOi8ALIv>HeQ_yTQ>zzm6H#dmiLCAZbx(u`hexf3gNI1JlwO*XVEgI zH)Q0y$7yU!SKckxLqa%m){K(%rVgSb41t)sVo`N8-XQXfQgY%b5=4$D1YX{kZ5brw^1Bn9ldZRv}x_l!-!v2;ZwNl(@y^@)49!|>_)htz}EDn?>h71(?k zUJG`mInY4K2Eqbcfm*jbnNaIm7^lVxb!ccKC|ng_x@lTu8X1Y=%(tKvbX)qdERP#< z26|1_KFt7LCc~fi2!`tsxuk*<4=)>E7akC3D+AMUwTq_a_=dp#Uym<7;x(UGK(^%FOhIx%KBNC7jY*FkD z6?5;{nRD)#ROhH8N+c&UuS>=W#U7go4f!>T!4F1>2PV|nFD1&L52hP$h^zroK8L<9 z%rh{0Ee%YtgFS>wun+e*o4^}UJw|p}=oEqia|ntJgc~CpbzU^LUHkbhBMpUQ8;9e>84+;d9>65|`_VmOMoAuAwXxfdV z&)prR$$LKU*KH5s=jSE#`!TPg`K$O9J}fvn*}mGHob25k9kz$A*0IxBi6`D}Z!hJL zO&&58#0AxBT7Tf3NWWb5C!HN0u_&{67je(8uL^NPB|FtV&OgzA(Is#+~YQddiH2 z&&K%Nh+LA74tQrA_>~Ol!0gs=O589Dzz+_-PJ!(?Z9C%-LEjQ$bxE8ApDi@J!JshF z=gCgYC2TbE1yKFp!gT>}&l!=c{5ptyXU&%m0)jZB-V%mL{)b0b?DnXKnAm7eh@<4{wSXWqQxn(DLCdJ{Ol+v59{d z&TDT)2PVz8PixhDp^c_ei)UoP6y{%vSK!wZ8G%Au78mh%8Kc$tab|5q=}CzqJLtSl zawgB=7VF?=0J0$)1Ly)Nmz1v8;-4BrT;!!DRK4*7CbyYY@CQv(QXo|*>8Op7!G^18 zFM-n>2xzJQx=Ht4hKz1N&I)RKBs&%o3+;|#y zPI3)4tQCzo1^Oi-;r0e;8T4c1{3x8D`&85aag*v2(^51ln-o9(4!_6z9q3WDOSTu} z+LL$rdoHG5=x>VGss1evXRHKtfS@nog8Z;X{emjDD1eM*IPH2=*P7xd1Z#Nh1tk3$ zBvjg|7f}Q6z6ftQAAvs$JKnzAnPjGMl&HjURIt=$p=U;F-XycLM-Cl*0X34d6^0ta zTO^#&B`kMVUZ+49>Gm|&RUM`Ou~&vLJVS@p6PHSGCi*@a;>|@g@X9aM1{tfn46#w@ zITbTIyfwXi@i|W+5y`o2{&i`wZ?mM5SW4|JF46$e=Utb1_w=u7!-i$rHFYlcLTK-6>2T&nph`cPUMmZ;vE< zW%yF~$n)mXUx7zp^~j~e$B0e6q?d}M;K1|f1@1T(HHcH<7NrII0ugZvS?UsJLOqEr zQ*V)P<+ps!{a()-qmqx?7BjU!cNRN7fMVEN3F12tY*rMr0{K;HJ`aLfy`(7Pa;CN3 z=RVN~Mbp_S(%Rv1d1D*X(xGqe8I%gu&(q79uP@ft;Z+om)dJWr2^s+kVEL^AF zhWCtF6rlM{f$3~46q5r*f6K5~GSdWoB7MWNnqI&|%Yc)6C=pJ{ZX_ET)@oN9b}~Lp z2w3RIPrrx$;-@Mqm5Q zh+3S_5Cmx`RY3jKQd&#Ep=6?3k9k&>xWJ#sP*LtI$>pP`LXPnq)0DD;dtXQ^k<=?j zeZ-?LIB@K%ukGQ@htfZAv9Ss=)}ar$wyn@^GX!fbz+}iEEvJVfb1OAm!HFT@M$UvU zn~&|zCFc!hxQ>GkNebWgV+ObF^1oH=?m`>?JpZ&2uLC}vOqy*HK>2|=7u5t=dGKGR z1*Jrn>*Fp1*hIUO;3k{w&GLv=^Qxd`@M-d)_nZko_wMC+In@cCBel@BTw!&8%{((= zH~tOx*xtE$IPKn^nabVVKZ<{*p#)m?o}?cy19Jl!Ju@v&OSEt8qHKM@qdjH2-m96| zB?+emI<;ZKAVBhP~S{C$(*GU>`{#%d~GO-h$ z6tcn~d*dzRJew_3_?~t{HqX1TP1BLP_+ER?(7oF<$ha-T7458q3kJ*UR*EBZNu7>I zFpKgq4|h?uWt^aysZK%yXE49WPk{uHwelEAuoYWdKYXyXV;GMuZh#Lh7n17#l=zlZ z5r)(qXNRs9ty%4vsRQ}UzFzLYwo~rV{fB^U^}#oK&G3djF5}3NxqRCXy`J#}JmUJR z@`!AGOWHQCY>%KP=uFi6V-SXQJ_xpmoO4^+b5Hz1Ru-Qi{&kK>TFv9>d5MST7k4)f zUgoJ<*eD|O9hvWSV>Ai$y3F6|4jOCEEko>v`8r;}J&jW*r|SB)nWpygbX1sEV9tr7+SuWsH6zT~+ET)>!w2tJH7>R{~jm zY9qa*Mtapo`h~07Lp{7By5K*aG!qsUBc|bE?Hc$k6Lhw=wKZW8hh`oq+6wrIRl?&| z^_(Z_`^y@L8mgAJNGM~)73zl6e?1{m5vK2Mx7X+Acs#s3Kq{hMaFJBG zi`zy&1;IzCty^VgaH6&k4Y*psTHvd_QI>#m|2=9P_0#{snB2 zB#4DMmaRCJeL!hb?F`jqSN&d2PN<+ESkMqGYyue(9bDmIoUMU13%^c)=A>#wpEbdj ztdi{GCr;`3wXWU_RV`nBd49m2SmuIvuG4X4~0rf@q=9jfw#A%FL^CN;zGm zN4Q%`d!=9^G5i7Im#Rt!#3R_ftxbyz)8f#m{;AcGRp zf{&KJ(~|goRWN;b2cSKPXhQ-f)}MGwcT@aeFs&bt?TAe(`V{pXZH5M*5@o)QqHd=Y z%MO*W=?@Q7(3461y(ZbrQhJCf9ub#&HP)hE-E6lKeoT!)9sbyFrvLs0s@-Y7TlibO zjc5QgjpUocU{9!=A3Gd zj6w?2Fe0SPD6G@+-g?X^%~SGAj6(H0FadYe>9%2>C35M&V#R~wMR6YbtLZG$tmhe( zG&JhW*gtqF|$mk0@zn(9S`Yne0E&pmLDAa;>dp}+mJ&nrJ6T=BaB<) zqU(z(2#aPUs58xw4|5G|T6uE{|hZF11L5B`Y(oj{{XtsFE8K)Ow>?3M)dD zAw2fv2v*6GYZM|peo>(Gs1x1SQ_t`ibVCm0BhP4TJe5|F-uQ6_8D+%-lW12N^^-Pto4*2*>)cvZOmmOkFS9t0i0hjNj9*wFV zjgx}gO*W<|L^57InA9nvJBTWtXdHLK6gUTtBr!s81&~AG^Uo9r=VJ z29@9DXe4|yko!%9?4|>q_Ll)0E%@X)z43RB(2oFoAtL(o2M<;K8M!+9yL6ybBz~NY zq8o6ENKdXm^A0zw6`|Zk-u{^RU&RL#o2-odq;PoukTRVH)_>`67tBu#T2mT5?74)A)`5jm)1VBO^44Vtr zPdD;McZe6J_mrurzHF}>cCSn~v;}AM>@z|JqSB3?jY#`eG`J|u&ktyRRXE3Mi7={T zq!2Ege#d=BSn@*gRa7zZkFTAedUrt_366+iI`!0g)c8F#ZhsfKo!Ws@<1Ov&F>deK zZ{^`lFU7$1O)ry=(9zd9@6)VjLlg6@2}3= z+MCQzh%cqqk{%QErS4k%`H-RMQtLHk?`^Z;m_k_K)}iD=OPZ>#=O#|%yX0&hY!U}E zauGRQ;z;wF*pmb`tw+H!OyqG>`N9F^9%Eo_Yu`rFQ7IKwNxGIQvy#Ue;NM|Amw9a# zi7FckzKi{JP_|qINZ}7swsvRnRo$NCfb^}5OO}}uulVL)rl)X^nCeo*zlBIN4I$fzukeuGXGMNaGBjP+8#LWaRh)acu ziWHz!xs@1O36Unn-&!QkgRnCtaB*2yttqP-LaOb|p;=$mZQwmh8lL58{b&ZaFF+mJ zg;FhK_KA{*rj(^MC+zDzo4XRC+{?4}55ApDzU+=CFjUiq8@MTE6eNVa4yr$i5-Q-A@+ze{aGlJ9?cOn$=) zfPOP?eg6yaVavJ3^u+)G_y_a&uL&%8&;S4;|27)(4-O*gVr%4VVQ2fl5VR>)wUIj% zMfkeWV_cB10UG%udvNH9bO4j81X1Q+;alG9urmI9rDIe}xbOVk-PmFzp3g5yw7!$> zk>jz+z8G9dN=;}$3F>`X6i0vru^#A%3sGcUpX8>@yYKFYPcnU#A>Xou^{YnEZ+Na;Qc7k9@SR<^cWZ0*SD;-ooNj$C2w1~^M!N|$+|L&7{0 z`C3-T?(JcHxWg3`d3l0u$Je=&)GH|urrh9fCaw(WnQsg^xx&WF@#R-TBsR3e4ZW!L z99_Loy(VZRztROMf>A2pjcC3X!>YXC=~wh{RiEoHuxt?3TWlzJ{3zp4A94B60dwT_ zyQ8xg1}@Q2wfT_-vmm$@1JchyHJMZr8Rt5fZx^GLMpYq`=vj6Kqk;K^bAZD5eK>Hq zFYq0P+g+3tpi;rGAe%b$E>N6BZ;45BN8gKJ@(QG!Q<%AWvl!7r{XNfTI2x)1Bdug} zgti*|wn6qJOYCcXyx#`gu6rIiBJf?fkd9KMh|!^61a&@>P;O>*s6p7#R|I{6FoVEu zYGBepTKgS2cHk>>pZG8}a5)C>V0^NH3VR{oGc_yGCqH?NokLBhN_M1Zn0+Wi}UX^@tCsu&(eJ}QZ zt~ft?HWmQT9i~$fLS+f)5q*~* z$18Rn>Ojyyho`IOmg|GV!25&7ZOb+yRbbdJ@4cow%+JkBi8;WF}T zPf=fFXtKkeQo{V|D~~snExF^CMYRjZy?4S_?S@y ze7|`BRqIzY2h*O2h>L0QhHD`mgsZsvp7G|Eu)YzX0lgA;v;>Hulyg{|m#IYa9!^ zP0{BcY5)xoMnZ)o(IG1o_uWc8>S#6nnnb(^0)&tQNqxR}a_X`3=k7~4CZ3QZMSRK@ z{3dJMSjM5w!^w1KLchOvmKI;SCL8f>dyy{x7A2+z^T{IwX$xy6I6TZZS?RA2exMfh z4HkU{1NS8_YgjPj3(wnSgC*jn97c>kgA6lS9g||Qe{6DH!}*p%kFtI++psBzGy$Q+ zuJnF>zZAF+Yt9^zccnjVKz+3}hu}+)G^0=Bs86O#jX(sS(}AA5+TW+;qv}IsKC79y zqsI1Vf41i`8T`$e?suNh#%l1fdK)G9fl@)7z@|K)@z+P`)o$D-TPSaOVPQ8j;-stw zaB}0zm@;FrjMVy2XhUv z0$KKl4MM<<@j#@61@#N&iK2l4I03AIeX3q2v${xwg*iF!b>QXh^evq|ym~r2@qW#D zf->8KU5uv)p-<^4?&apv{8hqhz|r5zXZx)QmqP++aMj$ife&unj;{&u=PmW_G_%tc z91W2BB^r@93-P-7YZfnkZ7DsTve_D6gfqWIhG=u?3nL8t-KR*4$jaOE2e8{AVuFhW zJ)-@a2%|RmS_0QMZ36NE2Ttv2qhe?BAQgh#^gv+xFm0@ z;c5{h-TSllY-p^n_s+{Mro;pCnz^J?_@G%LI@D!Qldch&ei}N%tdQ^{Yn$EbX8-K< z^Ff5@^;2s1W5l(YZO`ECdM!=RS-CP3@f-Uq|K$T%6jH}^u()Ivlxdt2;{tf87Lzmr z)9zv7MJn_07k*cmJrm{KBFSK>BL2H{s6`lT03`4J+Qd5}SG&8Z>^4oOLU$7o-(@#{{Q%U?YuRA&#F} z#>)zGs`Eah^MLXG9lk+$D2q<|O{k3RCH=MJlw0>}L0k~>7$5Aa*m6V#DJbyEvn5S5N8e`5oc*l`8EQimO zsrkLnts?{sYxLVSF8Rb9L~yYx5!aU-S6y`aynNre|C;1rjJ zqlx^SgB1mPm0Zg3<1e5RZM*8gtBi8g(~IKtjl8E$Qz#T*py^c8i8``P=4F3s`y>>& z=mEq_s9!L;Hh_25k2i~dUytq&K0KY-db&6{m3U5(oV}+^{#0%5-(vM#LojRw?#QjO zQovcoZN-_o+hQr=CaT^ibq*9)3kV)*l3j)EMIgFtt*FMh?q7h_2qvy(e}9fl}+%Q=?bdvXPNmw zokdjdM*0d2t5&nAR=26t#xyrQHE(c-wL@K&ax|-NlCeNoW~JR%Q8mlD_y@d;cwfUY z))xVcb<0aY3Bnt>Y4W1Jmtk606Iyp;JzsjtMZ^`3me8b4QPY3cOq@Pj`o+uIp3%Uby5c+Z^z=Gm>WqcvW0y=>1G#FAi51pQem|9ty#c)*oq zp^uKV0+Vvb10v=4Dbz-+L+%HcQYP4U(ts)y`*gGZ2AJUWMfsgJ zt3P%Hz^@?MP*OyT(Bo6-@*0;$03`fNaA#c- zQr1K=`bbjHUBD*yNuRaSR81Cq&?1SpPqP2E(9n7T(TF01r9e15&D6HmGd6oi*j+gj zG62@45|UDut`@^i@tKe3s7}9fYzbR1K9^o0$s{)F=?|>}p)6F&z*>m#cPJGViMr}i zR^$(5S=JX9(&)p$*@L?SJ9kId7jHL4mX7&wNlLp&7MXmiso<0hv;O7eB!P7ciIC$GqWXv~FTBUO_HiXcb+UbjdEOx~A;OQ<0+nHkkz<$r`yln@F zH(tAbkUz+>$N>p}0tNE}>O~R>o{Y~QF_`4987~~IL~u>ax7K7|;qP8&!UZIP-SwNJ zOcLl%_gHUW6aAJmY>9O^w8Mdss_3=3Wvf&PlCRuHoghCF%+U3m`;$)f+9w zZG=wxqLJjP@w20wN8r$F@ONXo*bid7uI_G}m|0uC?jZOb)Tf(84=c55>3VMe7;f-) ziNx6KH_^2=X6<7v*M!{CDho=hFV4Ok3c!K_P;pSnM*tf#Qj^kZenM9IW3Pawi1z;H zfk?1!{x&W%wy8*6f^BbA>bSYM&~AQyWf6LW8S8mymZ>Koi|;?6l3oG)b;;fQ!u3MXG_KA4M@-A52swzhs`q!Xk65* z1=P!&2DPH(479sOckhR-r4{mt*0P|C&@DnN zAnN)QziLeyj*MyL1xe-Q-9}X5>1~MRSrp)^>h|}nq+k*pzsaDtLIu2L*{Rbzp_;YB z8!E*>?URk_y!=?TJWGb#)-b%i1p`4?Wip1PcsQj}!GnE%-Wy&r#76ZokL3M9hJwJ4 z2i@VW!gdPpmq5m3$$d;rRc!@+@zKNLNHr&9dV5I}RlWF1mQ=k=<_K{6GZ<<{TQ}h# zN-L!G_?o*BK|^{wS+TP4Lc&+NQE~gUWO-J!Kz3mu9F5O^}F46;2DVTriGC-pjaB*xo;El1{Hm!hxJ1@fHpAtOI67*5LTY7bl{ z!)|E~sDo5OfIXsALmGzdS=y4<)ysQ~qyc}Pad<|OmB^SzRfxlWH42cAa`bfxTFOvQ zvl24BRt>FWlW+U8pH{&v{VEmd8@uwnPKuR6Ttul#tM+93*hPGdQMKl=rm&()&2;$4 zE?bIKfBlhd@sb`G%Bf_10yvdrLu6NE1qylM-5gqP)bF=hg-KgEM4&>n@W(Bl%-lwl*9<^^4>=H{j$D7 z!BMPh{>i2#?>@s+;{CUMe%8@9v1lbo!>ykA2l_u8WcG4lR8?32fPa4E{(Dj|>%UWy z5>QqDH#xyk)&Kwk|8B_t8zuP1h?FDcN77kd!ba1v(KsR@RwiqTs{yBTWmVl#ZPrwY zM%@7o*gvxfa>RF|5#n9Y{q?jZ0+W%p({ z_KdT#IB%f-J_Vld{+%N45&9qnzu8I-`#2m-e#o@YK-sqoDmR%KE9N|G866i2JIl5W z)1DF-z`Vr>+R{xByFlE$gJkC2Wi1Vu#Vl}V`6PXWbSaMS+q7v-bdIkw$kNHi5DkraNUUe+)G%|6hQz2B;zxuha9lBtoMp0AG3ftWYy_@%+HZigQKLI-x!g;ySnA#f+Lm4!e z*_PI=*6rnYLuI6IC8>U!Cg z(6zf{vywRK*6DH+@R0?jMbNZe8iby#tuSkJ&IFAU3`plP%AUn}t`oskb2R%nf&N7i z{^=Qn1wkknIaHvELx7S@v^_MKGr(EEiH{d4;?nv=@bnb~T@5ESy$Yj;#jK}vdr>xp zxnilk+X9!2bw?^mrtzf+w;{|lND4H@ao2R%{KjxxU5&b`HP!D+fDzA?XF`CTA^{Fk z)88ADW&%JHj-g`JUs>c&0LH{8{O)Z30#bTE9)6-=Of_>vLND25sU%C>DYqT z=FYf81S$2nLmN{e4&{_2qm3Ub+SyG;GGdJ|=!hFfAYq)l<5qTrWb9#ke+$)hQ3+g7 z51@04qL9@A7&scg&7feBV5*$oz9!KiW)zST!4rBoqA)t6!Q9Qaq0M);=Dc!l27X-+ z%LV*++y}pqtOozJE!(Q2#E4DykfS<8YGsl|H%V$m*m{k}fBhsWH-6@&|SwfG7W6y%*E!5e*7wC%IZ`0#%>k+YOD5wgRhDmj1 zie)qSsHtNNszPW*xSVxKUZ#qUcJ`@5cp;kEl(O%5RsRFG?1wP$K6adM=>AUp6@`Xrt~iv^<>o95#(HW6G(+ zX~;|+zN~`<zAN<@Z+?1^agE7ux`BUQ81H1PZs)SL+n5)0(QglNR>R@G&Jphn zYm#MdZQ#+nte7PN-Ku8TS~awNb#*aKNFIJQe&vq|$Ah#N zS!$W8d{`io8nyXw1_BdPy$GQDnKfG99*A@Tj;mWcIIB)m96TsFaCCO|v?A@Ze}i@C zjDde@HB8|X+4xAWPw_6xYgXj!dMmp;)d2nd$!RHj5$K$ab>5u+Y}y;Y+Fu46av!)3 z!)ds$%uFeec6)WJMpx~P)d*`1bQ-Lcza_t>KzZTVvbo@SR@m(|YwVuQE;5gws@0X& znI2`{j~ml1*fXaMH|W!*<9__FZA5Z)={S5W$=s#iK?8}e$pSmuRMp5lb5a1}6Oaxs zpjx4CYUN_~KeHV?9oUhurJq>hj0MYs1j*J^$t+1~wrHl0@1+TXX^bz6o3I5@i<5)Z z#mhRxowVJm$rAxA2$U0)Mal&gpN0#L>9nc?Td-BXEM{6-OK7(O2#MxqnG{qaBBPd@nRy1_huRJM^m3;qtWkufGqU z=!ZXbm&vEIrM92C%QQpaSVpxb`Px`*J)2SCxTmWk_V|KlkcqeB!A>S>? z@$FWyWOjlWRSrc?3KGml7BfwFIY;y9oYC)=*K_2t7wH4`~y!%TLkVVs!&d?O( z`N17^3`yMbwE@&%aJa}@no~qI-kI{3F}XlTb+$}F{t8qt1cGgwu-N;g zj7P8Wz6tGgWqs$hS0*g9 znD{!?YBF~92C#zREk^+WIKt~kIxdrSPYq4Ivt9BL%mC@j*`}4B3&NU zCkE|h{3_PNBU5`cVM#_VqckFLLkn<2k^jfqI|Ydnv}@LF+qSLUwr$(Cx!bmFTf1%B zwr#t6`a5&=$A4lb;>28KMO{>0R7O_ilkZxIr(A?VhPuGVyL@D6Dv114nDSa}Q=o=B zB&=|OFW^9wpd#&RT>i<{bCIbm?$J8d_q_=XJo@~m5j5R&!bJx^lhd^CJnnXnX`-RX zn6tSVz0X4;Ot}g|qf$Cd!nQ|Qp?YYmVaw1_H34fi37b=FF;t!`$Y!cz3q^i0#d5`U z1=8|o6&7p5G0~`u-PU$Gub!vHesQ%(z$i1tNqMCLVZ6qUtnek%sd&!(<^mcD5XMTS z{!hFeI=S+lyTmKG91z?({{1jJ?w2DY4yM`5iqI~Gojgf@g)ko8DKTli3NbqC zfgDLu@p^9xxOm;e%7D(=O{VhuO5o(f-(wF1z8i!m-vTW@;1aVOuk;h!$ExjS`bC)O z!F=2(wIp?hVV`4^3O51GnyPMQgb!w z{O$)8!5h~e2>_$#U9TKQa5qqrblEO%a_{?;K5yG_NLYOqB3{ocm^xix^%04@;< zDTb^%yeHq*n8o?&E}CW3I?@%wdw8xkO~ZISu=ut(UBG3v@r1|sjI+}>Z~XB(RGCjvMS zREQX;1S0e@2rg2F;Pt4P2YrK<5~WyoDe^iD%fUBYBR+?7R1dvl*OLg(9q4NpTT3W5 z8h{SDP_ui!t3N-=w4uLW^ih4DlWC}2`^!n%b-}%K#aHHH6nbk~lpNAv^zU6qH16sJ zI>0M4^d8;l?ZlCzMt1qIgYmcT)Z4XhN*ow6b9k)X!~;~Kw*IeE2=Ebu;oN2KW2fg- zP6xO*$}A^W1NWIuh5}&)yED+rZPAm7TL8l6&-GwM<S9B_7J;73w^K6v{gFbr`&0Z|AT zY4h}gF;NIgfjzYsi5dC9?{~CUU`StikewYMUy42W$X#%)-B^-O1(;mnxaUcE13~Ki zMGH@hTxn-`TKBk%Z8cZ;E4Q=@UU^seYPTc<-OFOq)!3KiB6!J>bKWUa3#Nk18n6rK zIsurJpv=tIB^(ciu@JO(4qJ%lafn|v0Cqq+m+w3dqD4#|{XFb>OK*vAr<}+K#oIk?hAs z6HEn!W=q1WKeyaQ6IWHAyzQEXs%2Cu$}08F(zLh}5^6Ju<91Lr4&D2>sQcZ`1-#z`~~98LefY}%w58brvb?BE2bD}kow4Q z#arcyPH3=rLdhHr62^vjt@k*uX_*cR3lVnR?!wu+6)R@3%L{%4RR)dDW|T#=Q&7qZ zcEnLb>6L?PAWc5oDt0@yQ3FkZjemmM5e|T3mA(nv#d8xDr6kZ#O?uYM*M=3jwSxWj z=v{g(@a&oqW@-xU97@xst^|(r;@9Ece~_Av3>WZAnr#5j>eeV0;eSXyCqNtcr0vR2 zpFU*IJIc=wvE#&-CfNq>qP@HQr|75I)E&C>Hz}nq?}Ge3mXvdM7^#h@s^1gUM#&rl zRB=wKdiC^}vQOMOKJ`i;zp@%rb0pU_KIoddnhx$}E%>yiFTJ$&EyQxS<8L;b+DKa} z28Na;3`Lkc#Drb1MwxF7Ntw5h=qyClJvC^g8UfL|py)l}r1+wX^@3BY)xlKUF%Ro5 zOY1My_DrZ#0;xK24(o7A>Ty)}Ot4cN`t^`Ru8S&V9<{e{%v2HWYl#?48Sad6052?e zb6C&pN;hjEs*1Sff#Ls+^|_9Jp!z2#!7uiHtRLEQ9SubEQjV_?YH=sVc3_o>TD!TR z=5;a2i?5D+1m}5TQW)PJ1Padn#Wcs~hldsbPd0{ae7|(BCaOew%uA?}oE?yCcpiY} zq0i(6`{DCZ?!EVAl3j+!>M|7o78B~xm<=nZ0#~&7ZMysUvFZZ+2Nj7a>&M%DAO@is z7|D`flm`}Nh!s5)(c&#h4mA|pRQ^coB!{AQKn^GXWeIuYuQWV@+27tYkqL$r0+Z0> zsb8jG^9$5ZyAg#&5N^U^I7xZWJTscUn!dtby#+gTW@|sfMN+(x_%L}~<$ez9kQ?w^ z8v)0_5L#DMlB-L&496fU;lAM=(?%O_z@gZDL^S&sRM(m>pxW?=XtAMw4yjRMr5Act zHnIOBdbbk9#bOLmYZ*SR9sbfw+#nzGl=UVxQ9Q#YwSweSc?LeX!fo0D4|W{^jUehc z=wRw-BpPV!+)H1-r!jj|Yeb=DMYS@dQe9GB8Zmc2)3h$5>~<8h4VG15yV`%EuP~u6 zlHSm4`dGuxrQ9d}+|Rb}sEH)gZ!$dOloQ*v{|I?kAXnN5s*aH)l?d2wSvvrnGQm1VJFS!EoX%kFb2SwH{h#csrsYb17 zq!&^|FK|pLA z5@;|t623DmVPf-?Zy8jBY>_#4owaRb%0(VOLxaexu>#W5P2F8cLIC|w(Deih|1)$q zvTMnO7RYxFwJC*R0V!InRYE^5i-bXCGv7GYYupgbYOhZ{K+(&w{S;!teo%8E!pgNV zVsG7*AQ(_9ZuXNAB0yhcv0G-rlsa2ot=QXi+|mL`1Y9#6$)kNCa*SI~m!9nHm0L^p z1pV!8spZqjxmN>kU;#895%yj67U!Khpks&7#vMR(5zu6Uo8;OU)+#8bW4b{iZ9y`v zVS8Ei)Ej0y1nT;T^vR`aP{X!6v8ejapCq{SyCT~L=#PFyb3nnDAdJ{t3h+M*MtB&T zima^J!%!awoHAlpaK93(cYFXfZ~x^pEt-)@{}+3t7x&}C)dI!T02>DH_TW@ho)F9~ zU-Y{NZF*~>?e?Eo-M?*^F|IG^wDdjqGO{O)XWl^2guVn_bF*Mx13G2O{e#=n(CzQ7&!=>X1C>6(yuO0EY?o{`U4b5JzOKjDXAS70Ar$|hs z(lfrUR$%=|%Fwm$wa;0Unni%3uSE+#&cNdK;x=jAB}}?tTm)D5uh?U#-lKQS z*jVJ`e771{jPmD48xNJc1DTm_eM700jhPd%YAb!2Jzr+G*N5Ql@L1kuV`H}*6hZL` z1B23yj{K`sp_G!uNM=q8Kixf;ovjbVk#P z_momd(-A#>ngS9M5I~h`y1X?0BS1|>mP zaXU|9+`*KR0~opYC^o^~P^EerM@|W;(7cs~td*WqjU9llgcd)CZi~8=ojuvPTi&1E zZ#yStD4v4ieHAA02?P>lTu|fe$AA-UGG6>dS3R6>{zIgJt^#rDC=?@@9?{iLB^AtC zDkALFrn7Vu9NYp}rh4-hlr*mnC{-bXscLX!8mBf(4;JdGq;~itm8d}gS6biA+kloY`6FeyfB$)vZ)0temw(Z(+~0^BP1Zy&hE_29JUYI zUdSC)u-y_pO`)dus0aDJDvA(y)&9`t`OkpIAht!BnF!lw9?BI|q!yhJfW>b3_PB zuP&`xG}sJO2)&Z>?r&cy^j30Vc)*0x`GL6`AEK4tyHqezy;b2rLO5KnZuv3DF(A3g zR=p0~cB5${8snHk>oT6eYa@JaKnq*nh#pqRj7gB8p|QSwwkc$&yXuTD_U@o(K=RWS zBRbDTcq=kQCvqAv6YKE)fkNndUBy}cv}~zRa0{~!cvx#QSHrN;IbU#G;Pw#c4okDP zy?cp;68Pz?(OFc{$CJ;FvwwBG%^I9dm+6ISKv3xflOF=HwK+%m2}sVRjpPMrB@gx~ zY&(w$l^Pc?Nq1j`tY*yiTsVj(F46vm5$>51SB6|2zx~;=16i2WAHSv}%xp1t)E1};Q zuJGb?lq&6Em2z*2qFL!+Hvz!FZkDm-ERZ_o$BnpnQ`Gm-VJ|r0#26X3gUDq?mS01@ zbfh&BvN+>;vtkl-7$uXoU=ZL6-S;qrTBawZNSucpbuD26p-osa4sgyDob?vO@=7D+ z>4T&RuNon@{}Za&L*4EY(U~#dElOjq{I`g&(IJP#d+)%Slc;W3DCD3DATUTR5oj;F zo2YIiolks+AAbS=V6w0Qr`h4keRG-Ta@;fcKK=R)_90WU3euc0L1~jIEH$^dEzl?l z4F?HVTs-Pp1UX>==jfc^R;Vra;>cxo9(zbik zZt=j3CbDx!$Vpsa)FOQ_M5#s~yjwe<2~!BG)UhDc*x@8sZ3t^XMMy`Q=XB}?Yf+vM zFc7hvf(+G0nPxr<)+*9F@IjswdUZ_gpZmAtEzoH{GtU%AhvA0L_zQPB9*RmOQ;fQ{q1 z>wo4;!qTI4-StERp+3n(I$b>Q-TW~@)QE0)$3&IX5FI)NQlZwZ>P*sGs;@^>o#!xG zP>v(9p5Ku(0~0S~)lO#b{z_YpgcL_QgFDIlsYCAA+Fu%PuM zjG6ybRZG=?E!`Mlt%Cg)LEnaK6IeN~L-wr52r;yd;;ao@flUD$q@tRUmL_a(LvI=C z-v2D<{K3u-;{J9uAWk_mwnR$N)!75z%(07Rg%qVEUDB!XK!^D-X9IL znE_KN)t^u~;N2B}?dO{7BfRG?kz@^8{pr%+*_o{a!6$r1k~MN2F}(DrAUQUfFW;;J zH-=TLp=9d3HZ|HJ*vy8-R1Z$Gva)0IGGj}>u07kfE&P4>-_(((X;tS$auho;F1N(+ zKU-_lJB$_4k{b_MmNN$ZLkFypQ3cUKg4O-&R`HP1(pRP?>ndy(dEQ<8$x#dt8-^dM z4dg4rMjjc3iZoQy$t>?k@o3xT<}Vb^Rt8lqxwEVfhm6DZFhCIzG2_fs^w|v_6#EkD zlVd!wM$-RkwzUPaY`SxFb#*YbHXP^Cb4NeTxcY33_Vp*cE*#o-@U7=oiSqh0f@V&! zjPbl`O5{;u7e#XfzH?CZq}n`2hD0}+7iI3XOGs_-^VxYrzvhpm_-$wIyVYJlRcNvwAxY;3eh#K*+0(e=umK-ItDeuTCH?qq$u`N2h3&HLNAl zZ+dgMH0J^}*T9<`;Vh4?%|(j4JKP(mdy2lljm8ej=)eJV&o0+1N3Q<*bQsW=k-E_K zCaTVtQ-w`AYB1!{LjBO>6GsW>P_q;fN**PWy6!Yp`#-*`|Izrfdb7o8HbgSOT+9Yh z0x-&kaO(wFK_!h2Pe27)mL&hgF_B8|&!Kv2!2lc&RD>8t(AL!9Jv$NYG%fJi!ljE z;veTtNMaB_pNqfXM}g18%G6N5WZ$l3&_$abSa2I_HJs;dv2D^L37H<{6xsRUX6l+Xw;A4Z%dJ}`GK zMH5?f89e9IJ5Vk;A;O;4RJsv2JbbS-;5^=Kr?I4Ld0a&xfkt~!%2h7n|{WO zRPU&H3%P7VzJ_ZBc13hs#-?QhJBI>rNU#A$$V#LN|}(SK1Y6aPU$sCQ1l5exV9B5QF=# z`Q2?M8voL9rw*YUEy5X_iQ_9GYr8>96JCrr*!=|wG#l>@MA$L zd2AAvsdPWp9b71PT-qJ%I{ktQlip1pDCof@(QIo0gSBUNlw=P;4BD{=^rH|6RqrINwwX>$R&nIhgF^tb*GP)D3uO6AGyRoZs9F@xrSEj|aREz%Xm~p~Bjoo7MJm zW=CbaR97rpol*ag_pZ2-+~}OfD;Oe2p96;-&{$7o6_3|xG z*QW};>CQ>nWA))7Cpl`3t6+Jx6;yl4QiDG_6rpgGOQ;>S`c0`M21`VdV8SR`B^s2hf>lZp6S{+o%esU?W*#||!M$k(nvMNJFD7X8 zCZyjDKtg8sbUQ#`F_<2N(>;Ft*-9Mu+_I2HXbgg=wb%-b#|aGWflGMP8cw;gqbU2X zl||pNqzqceQGhSVxAX?un6yy-h7qeF|>_KZOzW?ke4d0KDrLKESQ#6F{K&MiBQJXa6RKDO_Xa8fL$y&%CZTC%VL3%dKW8%wP^-l(t>V&gy+ehd4V;Tx)Z+FNU4K_Ygl;!V z8Zgo=#&HpqFUs1B9KD|4?)A(1SLwCb#sl6ZuIgXeGvY_hYBZ~X$q<-}oLrBBLsZ|tGWtbA_<`y|{E@>ZAcO3nIY zP32RI;#JV_hWjeSU3u41Dfs~4t1z__qq1ZF;afSm-)rJ~t0C)vq{!9lVZXv6ZL)Ia zuQR06iPLL}I@zle2~8NfxO7y~sEtt?dS%nBJ-rX*R?RjYc|L(dZ)@{5Y+BoqcveAt zv)^7ii0*R+3Ii>LBI~{zy(%PG&uWrX1}#V1~kv% zhp;8%N_5u;Jfyv}JIQNS0^Zew=ZgUtD&*wmaJiTCUP}+VJeCP2SpFOa~pAA0lnnQxoCed=A?ta}Z3nj;U9!M> z%rzJA0*EDCV*Ac*MChXwJb>Iol=YfIcnylNQ3>PDQ%-wY4Cn9i8QoPelF3~mt*7vk1AtVoy zEJof#Dd7GHyxO+gh67DePjpBO4^irKSQ{Ym107>~7hM}hU=VR{TEc&7r>O~Q(2*>` z^X=dZ;}neV%tMhekS`>Of1Zh$8npLeg(gDq>4;Uu$qd-JHg|F($~$s?>fpIw44S`e zE1&xDI+FZd>9=8PrW&zNvAkL3_9IGjzP0_?>&_h1sGOf`EU1`C! zUS57O{>IlI02Wo{g93@DnYz4aG_D*og25GZj1*t3D}IrLHeJKt?*qaNspP)pEta z0Vm|)2Ek6_uy&Xf;UFXjVGk&%8ikzNw5OANWicw-K|!$NpnAfXWv&uOQhui( z2`=cc(6H)=$kv}#^U$;EG=gvXI4+zqAQXB!CMuY>0}<1*YD5|?;6l?6$%d$!d)H`I zj!xC8R@@`s6E8JeLcT=|YKp;j^8&C1QspqQdE-)d*m2{lRAW*CXj=B@Do>4Yhoj#Lh?AO`2qYS6 zS2kY+=|5Cz`6nIf__fQCXw4z69Mv26BN7xxLjYs-6+0{)VoGqwn7PC5pI4;rXYmtS zZG#@0wa6LD{m277H=hD$0BVJKUZllgl>w->QhiMSne>b^$S28_bQgz{IZGs=D@#C% zLlQA-3Zk6jpu-5vv?@DHJ?^T&!&0)x%lEBG>!Q}liz`xzFW@z(zL?U?x5G^e|mR${?B>+?$ z73F-gA&+LMVcx-VKhZjGF87DKY!6S5yKB$e<<3qHpGy0JQQqTksI;42gHg1-z5E%P zk;k>xu8DNkCDMjyR{pQMcChO*)>|?t@X(qS!EWNXN;&eg!8C=jQdl2=m}*o04Mw~3 zzHGlM*Zo+hnUap|Y>>aqGl8CfscXVd+5oMpS$f{xSiN5%eYE2aonjk41WJF6u$cCz z1ihdbkw_K%a1$br@iKs7X*e5tm(cPsAcAMylCU|onVjWPvmG@$SU2-N?W?eBNno9l z!3$t{%|>EGA3e_pK>@h@0J0EWE_YNdnIBQE4c2lxJ9^$2!psyk>`wt5js47y&%em` zV*Wy1TdR$a7IMx`tnR?^>SV!AKE$q=+1m|Dby$xetjna;CI}Kg*=P}?+fV51%Jh|3 zzo`cM#HtQ@tSMdiYwf0f*W`Uc?cdU&)GrR*&`9+_Sw~wo4})1hSvJ3eS$i#6H`Y{i z6|0}D%8RLDEUO=wvQ}z3h5_~ABiveOKtMd7YZWefKqxJV$9iSWeh{6ydFlBJ`vX)D z<4g?@FpMC)AC&4NMUTM6N*a(w-`XK`t<19hT{2D+ZpIY$5ege_CVb`?l)gb`7gnXx zr587;B1M%gM!fTpsz}vHN#5DPI8IrlZ;V3Mf08KWBpJ1~{^*NfXFrhy72x9Od?2rH zr5mt}%=BFF8#Z$~1|N3=R9xLiW;He8>WGohOy`N%Ls?r$^QA!x;x@l;Qy5K75jCL3 zPcfJr30`AzOi@1A@r3@39738hqGqbXZzv6hj?m%SZzf;jq;PbPJ{}a3Pi3;@d;*M- zZ9S`1*C^CMqtRrflaT-2LDpE8MjX{Xd4>Gq$(vr{tBK2h zoWR)crEaL#>mMsWrRPJ3Kz4-wy?Rg{l&Lu_GRM42#xVVp_*BGv{wGgAX{J15X8eE& zOLD5_bZLh3QAx^xf`p;DdeX(tKdzo%W}v;J2Kc%Z_QTRcG&3Fg1nl=Es*}D1eQ2PBsC>` zcnCs}`k&a68wH=^hNF7;NG8!H3_90Q8PFK)hW*uPTim94HJ)>#>4u`)Zq0u51S zAj%6HLHRm-Q#6CB0q;G)NM`97Qw1s%L87tyRB z_Aj4Fky#*SlOJteNenwYa@Uf8U;gEYHapRZBZqBF5D(8$m!C@aGc+6aPel7-tER6_ zG?a_xYgGem^mhOm6^lCSVpcd5f?DYhR+<^x$`8v9Je?gl{$%6E#LRJM-StwZcTUptFMoUrXCdJVlI zhoNasIYH5IlC|{-{S|S|E&4l6gF#;k6@!NW?dcCcMN)dw@s8F*n-J(LYs4AFT=>~I zU>n;bQ1jgGT_6#rdi#2BwZe+Q^TmE${XXc_wT#$j+;@^^y;#h!7o|G)qwWeUv+Qu) z!R$h5TFPd?uwfQuumJ~$2x+N7P{96mZ{4B5>feC zH_8fE$@VJ@BdBI!sVH6pDyb+8^RO)RL8+}M4gr!K9&~D{_ULb)^s2b!&qS+}$4P5y zc=Dto;LQW~12Kd$bV`n2j{s+cEJ=1$r>W7PAP$R;B#nnIz1xoYqoYoE)%dB&SFuZ& z60TCEwABXDpU_1lv7kY`JI?77U(j+5R3ogAj{2q|jb|rOX+wJ@MF@RvDns}lYh}9H zsHk&vkBiv5(kiA-vJ44}z1=K~YBS4ZR)nV)>2wmurK@w^(1(z!#~0~JZPUu5UFc0L zRfv+Ao4{F8;b?0FQwozED}yHuhRc}F)cedW1nWOn2_66aQfzJa5mnkxG?}mDwVsLG zL{N(iu@o_3j(G7ccI2@T4)3n_VSW;vAeo1VLmT3Z5(6gM6o-Em|JjgBBy!I$cI$s{ zavLfXK0So}Y+&i|#g;9e(wi4-OcECmA*(5}#f}z_-iJl&2{F@AKZGgAix*W06VaN2 zl8=p{m4c>r%idQJ=x|X};PpOe2sEiGYY4niC4-J?s3PPVfTk6*Wi7+RaI>X(AP_7x*LFw0IKL}szCzukmK zAnx+?c8&zq6F$pouvsy1y>>)s)DkkwZ~OE>rPt#z`&&1D`Td?|tF8;`9AqM{Wzs`17xOHjnUkXy3Q;^Y0+I)VSZYj`th0lJq{r3<)% zo)isu!*l}Vml*%q3TsIGc_FD@hBgm|Ms=?I=1TnEZlev}t(q?>zemu{tvcS`mC>dx_*EC6UD^gDASvg5;l_Pmh%8poHA-i;&?5I!Y8f z{)XO87&LsLoi-V{vNBZWh8D9mlr+pj>K`gZ>PC#&K{p+Uo)B z3&#YiuonX?79UbTpo`o8%lHhHH9`U>$x$Mp*A^ZH;O&I{*3UW7|8T1eA1OJEk}1bm zaBLK+%KnDq$Oep5B4Dz(zmD4EM7#@3Yo&=0V$~R06hUaA$q~Y(tipTyqaI&=kf@Ku z1@rwt>0rnddvFw4Du)jAB#WTS2bv}axUrC3U2V5E=|&m$^62ht+r!2F`Eok`*UR3; zFm{Ca!}vnW9WsE%r{{)O?&Gi}UwYG65S)lxFwXVk6T3Da#MA-)xJ2@zdO~W)>Q(0R$IvA*KZFHdbrg9Q3W;H0oyMpi&4eC27p5V{tf$t z`6Mt#o;zl9N|OqKp`Kf(t_ZzO@7+st+qsLjGgIDDL}&;gr7LrwBCcmm3Evz#HS0dQ z^qt}^M}d_LJNy_v%qj*v^|MJNX*Bbf_tgca-O<&Pmk6-a*>Lyh+@VzJn}iS)gjZvg zE#@V`duSGQf7zz5SM-@d#PgPS;a@Svb*wJ>sqSLo4!DT z+QJg-6Db)m5hTN(vQwfU_(PGcFUp!6BvNZOO-9M}hh$NYc9$=1J|ciSpOsXPpGS8Y z1c<4X3!w!|d|%z})Y;8ctmQJ6kDK#!^D(7s$IF2JJYgrVh3nbSKrWji2BY_1Dk6Q@ zapl@%A*)V9{t{uuG*g4epV@R&8c)?|-q5QO zELX69N5}k`ZI0A!j?CI$-8MX!5SO==y*)`LXg@0U5W|Kj^-B((iBNO`gGC1f6=PtO zDG>EA0wtjl?9jN;EGSTHb45xf&@GRq&hD=E90C3)qSjiNMkk-US7k4ed2+8rPZ2Z% znmd0ZQTfeM5u?Gq&bR)aqLXKSw5L9^jplO@+MK4d_eC`ae zE7@ZnN!8%^>INS+feYa_i}ycyhxTQeuHfCiQ{v&hoVmwz5xi0yOfs@8mu7HBV*3(_fcAR3B&Wl(cmJwHqCg$p$j`;1#sgkFS~}TI10)RI4kEFLk z%un%+4CIn28{pIu#nKA0F3B$>kbjVC&2=rB2ev>R2AC&G57yv{PYU>e8-s9;iG79? zhsQsU9B`Nqx7+j2YyQrO(wFmmB>iZt1*;hrP0D0pKI>0+ySvj}K-MrpT$nV)Q=hxx ztP_TXM+TH>&y4Gs@ep^~l3P~rhc!A;HALvrYe$&$iSv8-<}~GW2jpZPF8ubC1JU7u za0U!*nwpqgFKL{}?mS9yInNBOpQ}PVYoQfbUm&pYP%l7wy-Te7B{FHu#eUJ|9-%P4 zX;owL%*Z3|JRnv{KJt{me=jc=x(B9W)TAT(3 z%|A*`cvS&4Lc@NxuFF_D*)FTSp;>zLE67ekM!eL07cSa51CkWzZV=Ylq!Dv<($ztb zq9_H9F&}kCcuqZ$I$+W@aP)Kj#0r!`2FJRjg8?B&8K220{paZ2f99BH0yJ{}idn?u z?%bsN_JokoCz2k48eN@Pjg-K?5z9dBYv7{2f)aPph>vrm+YG)pV^@_AAK62V_q>5T zYf6=(YEk{oT_=vr?3w7u;`+pB7z8i`reuXFU*oI{pF(vI_n~LgF34q3=7t78qR#lP zd1s#)ak~$3WKS10!YTb{9Hw!O?}QD+17|@;>R=eXKmg*#tb=BdznKiilmcck4R&iv z7EzsG=qd+&?dy=Csv^^e6IPnZS1sVL-Y68mL0qC{yvb?;6aU!}{f!UJDc!p5jFX zwPtt90SdCDZbpGQ#0&`g-C}sy70wY*84oJ-=m7}jYb`R*E)c&Jgts+jZ5L^X z6@@MQm7f6}R5upBWEF~G*#6qqUsoAN49Mv%}wQBj;}7*Ip|+8FM$;4p?Gu)Y~(lKu%ZUk z`;H$7Rit^$(oh7%J_l>ln{OVm$Ozo}zDcLLy~Pa!V18tvI7rI_BevN;V2-o$#E|Ej zIj^D7-^u?X;P@;AL6+@MtwF1OFpbpx1iHU~iGi1UEa==p?F2wI9M#~T+Wa{9Aa*Wi zD?<7ZL&8)zkxWvhra>G!)@Pp&ZXlGe@hn%fMq;6Az7mR1r02JC;y+fGY0Q#g-Z)`< zT{4yCY*9Exxu3E=iCDT`#mapbK2K|sFC`c%0#FpH1R^~ewidRo3dqQp8yG%m+q>(o7-mkGQapD2U;M>*`Urc74F_F9yqi8FTZ6x zQDM1yr~rvcI~r!d@e8b+;U`8n^X;nBHK4V6MRd@n({=m~*u#dPYS4^}`Eha+g?ur0 z+Dn7Jd#d0n>cchZ!?YJ?$h$ERGKeGdKOe6N&V~C2~w~6g4i!7Ye}FS zfABq0q9yxBoBe|8Jh{=fR1I>!*)uq7<5cChgELfw=bmD<75FN(CBw367jJ~J=li4GWF;gsY*J*5$5iBS! zEtA)2tdhsgDbABNToYuyot*?~Z>Y{(q!fOe3l}Ma-{$HGcaSz@oXZOd$5x9o5yi*L zw|}n1i4yCjx=Rwvn&k!{3pf)!s=4V%rHSqC>BHz__ww=8`*E1JgWbIlxqqepFvDkH zs30li({Roe8*9Ca>B4aqJ+c|nf*5=bm+)vqIOR5lJnRKTz3tA+OK+CabF%ISq(%PE z*@%jTSjj~k$-uyeQ#SN>27VExZIH+EjoX`7SkDZ7ji_Qr7;!x)x#!|+yHrzvQb~3$r9wDV3D$7*__A8@@OB0X z8)XRw3$FKlh3#8gn3L=e{$Q*RZ;>i!#ZS7ix zX38@Yc~A1OppzEh?NjLY$T6J`vU<4M36K=lP$cP2Tf4d`4zx~#S;x~yll2l{FPd>{ zI6k*F)5P!I-LVmlVine=gAHoKA0Af?AU+` zc-3oK*UZvbQ=dEyjib+KMZ(+I9YaH9UcczKP}{)i6%B3jb`2`}(6eO9_kNEWq1*SPv0xw2l0c)THsOJ zrs;7`$nF<}@?|DWt7hB+s0#N#*>h%WH8HH)l)X-CK?p<<;0?aNer4e}r@wU)Y#C!O zxDn(mymS7hgR6bDXu7lkDtLFk4k})fQL9SAbEZno0I4FX-%NrdV;}_MqQF*ZTA)N) zyt>WcG3@cN%FW8rTT^R7du?DT+hyT;_tn92he*pT-3r8^lJ&4S0T|4Ttp9pAdu!D3 znDyU~^J}4u$0j%a%-fHuep{k_Gt&3g(Z~WBD1>7}T=N>DSKVLfWItqu`MkIh!rC)o zbl((EZg>a&J9!BUeb-Fl@lP1fN^5oq7O^8l96UhQ`d!TFnE6PJQgks?%`L|FPugQgCudL7Ul%)Me3FU_y$=5UU zFD;I+xT`q}pGf@40bYze4rVx8QpTIPTVBB|{+UI@JdgIl97Cut5@q&oQTbB=NOYrO z4h}Q)Z$RsXBo*b%6UQir7XL4RpjBGt%Ex8UUU`mv<+?IKx&7H7;$#P?<+fg@p@k%crZ4}2`Ny@BHZ>*)cTbYyS=+_Xt<&s z!7!rN!f6X;`?pQ!jr>G#rnJQ@9r%i5=eJGQjr=Un^&v4HCpuvtjndZcEaZZvlT$yi zRBab?Cw(Tz4?6PgUx@_CFZQHhO+cr-3%zv)tUuWigXL7~L%)7{oy(2OF(o+2?w7UhEIc3brBm9k6hRVXxu^4H(8M^Ji%0$Us)k_#(jaq*41rNS~;mIJY^; zS~1ExVyj{37)Rt6aEwkTmF3mSDyk`-(O_!=ltm_kSaD!_0YD66cG--Rb5mVXS>D-1 zl?PL>!l*H^XnE@Lhc9#2|jJjDiH4yO)Eb+kYyJ zh-NOyg$gs>wIJfMMw2veN+C?RzU5{h$UiVgr)ysDSZ8bgTzRaMa2tud%)n*OPCqLu zGtoJyI;Gl}bWYsYS7&Z9r*d3e_r&^^V)@O>YkO2;&^JK^5jKc6lU(3Omc{pr5*~T5 zd{Rs(T$z5jdACv@Uu(5DV+B}hTCfZ#H<~C5T>fFiW>8osm7Rn!2L5H-1xp8SR!o^j zSBgxLcq*e_DW~0qK$l37O=vLt-pOfJ3dX_UM+1rL7(3f0vgrlPH55Lqsc!!#@DcaC z+tr_ks%Aj}U7%|hGHhtvlF?)X+eU*zG=_>q0iC81Gr#sv7h$>cG~0~y(5lkWD2H)U zbf@1y1Dn=)EKJgRoMgMse60SpcxKti1O|n+@Vx^-TzrS82dQo$flUKJU%@;$)C|Y=|3nc^}8u_2q`t0ZaFRUA9u1b zGvG7qHPaSf`Y#2|g)pG|-U-5sAQN`=ZBv#3T?4kAlM2RWeil7_{%=!`e}9JE+Tbb< zj;kCou=pb3RPjw}@&?4$zRv8P5MMY?qG5rHysNiTw@)l54-#I)#7v33ZQ*(<4G(T} z`iI~s@cATTxcLIV&O+#4t#kWv3Rb=DfFP1j-;TUD{YQyyQl_M&yGIDcFgCIoSnlcH zq;$j&7A!RDn@KI;m8~V0@VpmEqIX|hD|{f8I-`q_{*1bY!HIV`FHc>zzi;}qX;&P4 zS6yQL{WNV=T{5|W>bUxkhKqA*u=VvO=bGNGbtj;gpDyhiw)%^&bmy*}-k?4=LdBlbKc;jc#4_2^M)t#DXj!%d>FT0~`1m-XZ$EeX_i>-cKWM-f zI_yb7I{+82*BRs&wh(wK1MnaM$oH_k2U}Tk%G^>9ZTQ{>uu!iyedBK!F^_kvxVk=G zIt;uEeT#{1mj))g=@QkrSr~kG4f?%cWiYuJT=kAJkGmyIWXx{0h{*g7-9)eM z$q$bVSR>3bJ%fMCSruGeg{gK83OJx+?vfc6x_MNW8@^#~PjpC!FJiMGQ=?S%T9Bo}EJ9lJUJfCRzke4X+u~+_J566k0 z$p%z1%etCb)%4(fm&!o;?D5I_VxCu8oC{-6oFel}9~M>cfXVzu zfWHx-d546nqPzV%kQ?}Zc|lFmh(A-;<^`RK-O`~*3GGM{OccXpKhyfNejXL4lPBIp ziFRb-A9Wk_-jpQnfa|p@L+QJs)I|xV5BFjSuj^q|hR}th6FyElop2JEkFFA~1)Q-| z22~4Y{hsf&XjX9_xwOm(hs&n{hL}X;aRs^{J4Vvc(($9_oyo72=J(K7F%j@^*8!cW z*oo~jxRFI_+ouXyPZ}T?rc8l3j*IG&yJYX7lCAP4G2z%Qh6Lq7la!LFaH&YS6l#~8QruTc<$ik@{tk|fjl#*qDQ}1_a*<6mn)JgdcaQ8&} zRIRwudN0+0oxef37(DUx4SyFZA$7hAb|&!9mIfEi z`5jW7xxx|k-a@6X3XZlw+d&v1bZx5g>|hN^S7oh&v~B&Q=1X&2;u4xOTz7Yts+dRV zl%|$47UeYcpz+Ca<>9}|*ZHW6MWwWI7kx@aQi`u?9%3wgjgB6q@@FiX#hhP7A?^2mSIiX>F8G3Y~urW_C5gWh!(4_H%_3q(`? zklk=4S_;ytJ2+JC&Cil8Z_-%Wa4pZvJY?3am}d2DZ_DW}ntRAddZ8EBWLZ$*7&CGR z=iSIG1Bdq$b-5^{`D@`T7|PWKF!r&2Jy{Y5O7iJPG*k7$FtvQ zd71&CCk*CQ7PNr328(@}p(;${MHrmR@Gks`EUXTv z5IakI9b6&Ep?-VZlW3D9;TxVvR{5QPw(Mtw*S+fyKa3GBj?7eFTa6V)X10ur|DLI& zCl(YJgKf6FYP22;Qi^%uy115{G)dKKFj(#ev?BA%(C=8wl={t92E0)fIOVv?xz(hn zx*!cxtxVL_(5W5ZQU=eJBvB8RrdjFjV)uFz_e#gbDgHP6;`2A52M$4nJ0rJ)1px3b zr}p1hO74LDhs1_|*|z^DvEhG_ZW~Ip{YPvV-uY0(K@k;<+H&{NvC{d6Y?v+ji)`4! zCe|bu%b>+nw~=V^e#ydN(_RPV)W8T_b)RlOIpKQiM?jNY^Nl41(zZ0AF#|+a&%O5( zpo}Q$5`2L_`0}b%TOw@`_nTyBxbH^@WNlO$g{iIQp9hZDHmbZxI(vp277B%f(;W~~ z($Em6nTG@Zvs@Km(gg=q6#*|YWQ2Lxj`ifmIV{{lCN@5X$ZM|1v0XgXZD`YHQ7cKp zsmKz&L)(37sh&J}mD8e5>A)VxQ4Y4p=u5#4p+|KJ>tL{Hm6p?sYRPX7t;M=LTG=$J z9ZqeY@+hTCjZfzY&7qjfG(n<`0@P63*zAoRytK|aTMR*IDsH2{>*k?A5v{a!c4w4K zM|Ygy=$S}U+;G4wL3U3H6}@@CY@&XeJt zQ7Cqz+a-;B5GO{z)(%u{A?2{FRu;a9MP`j0p}=&}QAs=w;agtSj_vC})y{g4^_KeF z>%soW#q;Y;tpLGv^0yZ`JyZv6g8RdC!H%IiM1Kg}=}&{5^ax~5I5H2q%uX@OlEdHb zk=@I@eT7Z=p@MHK(uf8{&fJByF-KNEjtQS!FVZ~c)IU8a-((C}hZ=}u)`y_A`Xd&z z&7uMt%I4k@JMswzw7R0etRz1p@8Q42^>tF*g3HC z2RO-w@OY<-Kq27C?hTpo}q!5z!FZv;Vx=3c(kbK=9$M*7a zIXh$^Us&!qknO=hQpVWl!x@-BU`e71`j+6tv?z1Q{QXvO7+2lkR`V?j& zd>+OQPSG0UiPMJ|u%Pl1kxxZ_Ea@S4)Isc#W*E->vLT|IW*v#XV$J>71P2PtiFDsj zpah=#0D%uJ_I_5Yc!lS%Z_do9MEb~TUVi%bun8%pqJqvZ1il#PO9I|b*_(cf``T|e zmZ*MA4p>tfN{lv4Bu=FeBP3ra69QeuqtC=mcTkD>_*Z@T|J3W7O|$z-__ z!@HIsi{jisDg`<>>KG)v0c#9y9-hbDJ`QiwJa3N9jvQ}x&U-pqI2||cGrK%6UqU2Z zgAwX+ZVb$x8gcYj`3!!)Bsw7^FUFqkn+{(t?#2!;TlY@8Ie5NqXU5hvU%pBfCdS^* z>T*+WkBzcqO>^j?eXg=R8fGe)f#Utnb(UpoKA2{8CC*QBLOU=XyC20B1Q15Mx^eSEvt@JGRK&wN4*}} z;nV5n>g#J%l2jZ?t}=gKWu{5M>W~5*0|RkkQYKuMTdJz7iYXI{fj{lWVGhFSC0Uf3 z!muo_E*k+~@8+hEF|@Xd!X0UjEU}vnLRri$Hz{rYA=?5&el6s>fHNYd1nE=|~qc0wB*bu4ah(zNvXEs&uO^dOR8EZ-{22k8#=+ z9T`82%YBkxgate*rM?}d7rUlkcg&)~y_CKbyb^qCtS8qqTp6)b$MHz*bc%X>r%9I% zwLZ`!8Kr_IEVZQD%zH}P(St?{z}CEMOH+DBV+vvEv}d#9zU5YGlGFC=4}E zi!|vXOR;rl>|~EFqm7(ouk+iuW+h)XEi&C6^yrYTS$y;nzHw~#6P+MmZ)*>T*w}s_ z!vXurERcb5d8q4d%{4pcHK9eipT_}BcTfLu1{luZWWb5FW~SvRuUPPK`$B7g5HE`b z>sDiYI5Vmy!d`WUOS59ARA>Ct0S>cK0T(M+g3K}?tfiMDfUa7^9?at7(&TRtIK5FA z{$oSrV!tblk1Kd~a3Mrj4BldW&JTU@X+VaivANoE3xFHa5ElH3SiQM>7g{5TXG=6U zJy~>Xh-AOMQm>lSmw+XqL{@fSJO>q&S9CelyTP7g0HS!^-uUM;Jpw(!S~G6`6}Lr) zcG$%1pgyY7yO@K533z<+ACJgBsDUL56SHf*9SRyFU%C%Wpd`9+pu)gfS%50NIrf;P z3%Xc$!gkP7m40o|14WUr)L1ikqHK#*WCEgoniai&PWj)uAe%;RR@Eh#sD>^^FEFlt6D9&UOVYyuwwE_Pe z+|VvzVzoB`{|rw=P#H?QI4bWH)rs+Nvr{bmdDd&PZ*Z(sPX>!u3$7|FE?7^7<@E^p zu6)zb6ktotVWr&4s$oxgLYUsbO+t<;AL+jP8i;GRg<&N> zdX-tMuw@N{L+xO`TZ@x=Z;K(-bY#BEh}^*@awe6b;yPZXxON# z53HEGvsRQ`c*ifc8L}c2qMt>+x+TE3xU&!RqJ^G&W?$9XsbbNn5!;fdMYn%a_N?{#Hps!oop!v7CtVW1q89 zlU(|qx|s4eSb2XUL&shI_(16|GVfn)Nwq);W9E#8L4s5ismQf}C=F$9sVIAu82Rn4 ztZunXZsxF<4@Y*{6#OQ#-UF&UnT>_IR11SN9qAZ6Ji z|2AJZ0z7A;jvnv&29n+>lEvRBR5;M*xI4&?Oq?jg%%hTY`IS?k&>U4Xrt4BNSh|AA zodQInjji)U3;;Q?BmCx)lmtu6)iaCBAxzZ{GgXr7nRy5cc)5Nv0zmG^(*WbDMYZ=p z1Lm$BRnTuQU$v#e(6I`}ROr z01@Yk#f19h3_)8}zbL{kYqY7Ty^2J2g_Mbes9+B1!?ThI>}0l9Y!ZDYvsc&jP9$hz zhOx(J1w30u=X#ZTsA(7ispVw`=<5Ol{*6HfK#wZd*#*s%YSX~H+u;Xned_Vea&;4RR0h9>Jg z+8m>HU}4yAv=z%pc-GtLLG@3hL^^x%CpH;q&he)1m&Lg^XVNG6)Vo$h&_q%w%nIA*jjIT39^FmEM42@?xLs*_B zQscfp_1&-b`O2;0IfG-7NU4-TjI0pXsznYYVR$oUpv{B!1u^!0m{T*{&mr8$0KXuePAtc$$3ZT= zh(I~8Nw#N{+Ny2rfwOpN&+;JhUbSeq!mu5d3ocBP%aDWlNSvnl%cDVBmfYw>@m(57 zS-}}?QLew9k86jfJM-B|d^mIxYflWkq3Q2P!%cbK#;CzQ?s^{6VSIXGBtA*sf_zi3 znSTl^e9q|$Q2`tl#%HSUL#gR0pMeGY;AiL3WqeX)c1G*-VK$)Hm>NgB=H}}F4h@?A z1_fWsv(pN9vQh$)wFNvBIx?bWIpL5(>5%H@8LC5~HgK9jI#(!I9d=z_5-W33dQ)6B zkak*?HJj@fE8&-pbzl#zUYTeFNBOc45U6$ue7-4VcAFX;W4 z7sSh~wUEdWHcLz!2(*0nw6v(pwfy%+>*a&GbyMBFrR`JKI;Tpzk@W_`A` zygJz4fp2Qkuo+xG1si<8?S<)e1*c}neZfc0b!c&#@@TF)>QcnmoP6ZH;X{=9xG;Z_ zvwr^!4R0|^Vn1wC!W-^ie~=UJqp|<=wZ8TMqP0vPeFI>0Lc?u?1@^!~@3@Ze; z|EU7fkBI!0L$0M~D<5i^;s>$kM#=~>5&1$?a+-LzUOLkh7ler{`$<$3x)&M?qpF@4 zn>+4iKK*GCY>qk$eq)D_ThR6wW=cI~#ewo7@XHB#m~h>2c6x{UhG{{d2T;wG`wm7s z2(Y!fGc%4`dZ;(st|(Cl1JUsb!_&e>YI}PduEYw`QspItU>zcvzEL$AKryf(6qWeH z!#dp#?W)02@Ik4@6nzh|RjO(T;DuLPNOcCp2-VuZcd#Hxme zm+IxI-%<@_C8gAuh{2T;nvPoiW`$x7^gK|C+0M#GZXO(}0I_poR0bBz`Lj%Zd24*I zd}^%54Cu6k(pIfyu8MOF6VY#`WN5choy;?{sTO>;Ei~Z!B3g$kQ#q!+_%KDRofBa_ z$!2RYpq7bawtDM^haJaezw^9D4~(w$Ke|E`0}=fqE7-XD38BwCq6gsjiNsF7yvRyL3Vq zOoOOC4~Ac$XEn*>t)P8Wy(~1`G}WrtRVH|@Zlx$FrvbL=D6pJl6b9GH)Zy}mobncH zJJpyvR=qi_)W!qVEV#UVG@_$7tms;UkWe9L;2pZUL|Aut4BVvs;d|{iE!y=P7N;E$ zUR4FubC%h^#qhV*ONFk@^y1NQwN~!=sYOfKb2q)k&iXVZEnSiit&42!p>Z%*66))I zj0kO+9MR{>n?VSs7or6T8so9Mg^D~g&uaQb7IP3DsYZg@!< z&c>+#5%sRN7(qPvQbNN;{L$eT2ta@dLLA=O5neG|h+*mob?bN6Z3XdVIY_k+JB#7@ zI`=dKVRtI?ZLi;pH6(WyIF7hnOKjy5erPT3xhw?FZUH*$k4cRU^n|x*nUZA{Kh+Z@ z>C+DCYL@0|k4^P-y05(|-qY0=Cw|knxqHTsMKAT>*tV%lim_ z57sBo=;56ICPfM?h^YVIB9T7%{>6cmm5|@V@pY2nqwTxH8Km!s@1R?AP)fyK^**(n0kMKZ1k{TfmPRRS1&By0wgSkzn#-zJHw0HhMs~? zE|y}DeV?^xo$ezVld6)cM{XMvt>?o=u62XQC!ShlPA7wvKVdFS*>?o=qJW_rWQ}5F zSc2-D^79TmkP{fU!}Ph7UXNiesuyYPbB@_R$?FRdOhY#o+5YJl0ds4nyq51Xv zptM5@dV1qVM?QjCSaVYnsQ~W=N8|%GSd#l zK~SXKT2ScI#69M3lIvx#_;$-oA3o0RE_aXToH#()W`#ez>?Du@DyJL}#FjogkGq7; z+`HU7Bq1QpU=Ze)!o%YSnI&^wGj?r}OgQ&~9E=6iAY!T5GmtW5hdiN;=&QP?7|i#i zn5Q`IAnp*JZT7ZO=f2s-zpQH7+%B+a|Yj)+_r zxyT-MaP3Bl%z%uiW;o#`?~G=xVC}vR+Te3XoTtGeC;geDv#M|ov|7jjJFOTzV7@%& zlyJYCRbze~yb`{p;|82ty~&e~_*HswfDngv<}k6jr)BogoG82fmkmwAh1rv zhe|q90Q+K{83D6`Wf1{J?Dr-u&ZN%3_L{uriFQDHZE81e@JqvL^k%b)L+g0}(9)$a zfWlf=8`f75I$(K&we^ZfV~OU$@@u6l_T~5Lb$78XzE9|W?2FNRKrZ$Zja$=p5p1DV zN60R(p(A{I40N1Rx8(aSZz)GvPZ^qm&+TP^T~sno+r3?(%0nAui=%f3G&Q7b`*WyV zl6#n6fQZPd#a8h_aWi4ca)6zg_Dz~16L&WBc>Y=C2S##aNYon}&6WwiVzo!7tK!Vi z6bd^DeBIqakT3o?RI9L64sz=K0nGD2y<6I3$6b@MgOFo&rThC|D-*!$`^M^ z)ruHG<)}i=8-^TsV^NpPD~s3`Oi)euh^>GGiZmG;yV`t4Z2S0=-;ELPI9yYR|xIi+~E@V?Ua7|SAJxWxY;cW2+P7(ZN;{(J>tH-_h zE8WKx37r{Ll^GNLs*_Fb(H7>_iySO{b$Cl^bh{-T9<{Sc3` zRjKWUWnckG{Pku%nnVF8T2-1<3SwOjI8R#H(R^NErxnRWb43YC`wn+-SCGtWPbhvQ9uQ!jC0yj2{70lXohhJvp zM-}r|5KebSuD>{(azfeM{-~_FBX=^;(!#Kvrn8OO@FpE7*GPRu=7NyqUZ&y7eU^A; z^@<ZdkB@dYd&`d{jFoyn&62` z{x~|Q;~!1CtI^EQMI%}~X$&Z0%kOOZT<^)jmJo3A8?4s?KO{$vpp76GROHv}t6d4~ z0B2uk07~C};x{>mHywYcf0FLGhILtmX!NDfHmhaPR4x zU^pVjx+fpMcirCsR7IXZ{#34k)VZ<(M_BA=SPlgT5~dolnoI&Vq~t^nTB_k%VJ+;L zJFDq{lYHZl*gWW^K%s3>>zQcw#@eP~5Qx%&NPcx!WeCnpK>9%{Ct$CoXXQXF%pyyolmDjSRRsZBcexy@=93Os{MC~AW5T0Ztf5V#`6jAN!P7Fspbg;j#jIwvP zf0o>tIC}HATjJ>E_%LioM^8JbO3OA#UU9;;8q+(|su()DI@ybG^VOfMx*3Xfe!z-E z>P=m)xohBph*p)oQIBCRtZxZp1wqP?&`WIz{t-PWq*7Gd4a7YTQyU8mZr5;4kP3{| zrGz_>H7A5n@ZrE~WU}q79P4vQMjmeAE}gp%mYq26qdIkK_@2qw2GO*1?gDgxYTvdy1k|?uN~&(@%W1x_KEY$# zwbhT&bWg;Vwh6G1wpm+KwzVIiR7k*9XfXf*sMWXQuxj9pf=XFqv^*EpP!QO~f?YEL4x&2R4BVrQU ztOT|{6|3G|g}6m87SJ${9L3T zvCjwu+DDeh?O#6s)*HK4N>J>jB?6mqS_CW|Pub>P{qRNSSTR=1k~XVn^`fyN#cC&3 zTZ0k0%ZbrkSTRV2hGy%u%Js~g!W%zx+QpK%qD(>~dec#2!jCUrfG6w{fIZ8lY9tsMxs)9Fri${1VYDT}S- z<(&|vD;3(pQfKm^vvsGlr76s!IKd>?t(S|;@j zg?_LtDi-TJTBKg7k#)vklkKO)WjdVzKu$zml{$H7@_X)2{!F%IdZ%4L%TiB7u(H%1 zQGE4+Tf*GBcn``Ei-)&0&SCjwyEQac+hrgvbVEy$Gd|Xo)f(>KzZ5p5j`zWj=%`HT z(~(beRNBhY?_Cm2DXrg3o5xWjhA2ACUlp6wCP~TZ(N<*GRw&R86hwyhGaWsZHE5bu zDuz`4G_fb4=+HLL&wPtF%OyrM@H&CSB3SkXKqcwP+pLy?JiISzkgBPHijbzBShHdU zrMRt}FV6@xep2MxoO-Mssz#f7CtKVO43Hl(nbA0`Yi%jQZNrizp?r<**Hu%rg-xrc zowy9dV*>vot~nEP(9Mo-Vh^j|o)krKA$WHYB7DmLu}Zsk-6(+{bj;P~8Ktt!#yDuP zBPnqiz|m>u;pbhK_)?zZMx093WDj+g@6_f2Mi^P`v#3^6_`P{VUB$?)OJ?ac4gO#} zSTYaANp5cv{$%OmvSBmoFFqJwK8>VI{NyTGHu6g{on7^L*M`aBL64T3fbCN zh#Onk8QcGt9M1ouxN1vT{$FvG_e%{sMPeXU$HfEztbU)XgbEw1IUXwp#v1PiRk)E6 zhqcE0j?3@*SZ7Ofh339Ty@G|a?hoFx2Hc$x^)buQHvU|fp+>+Yp;72WItGMJiYeN4 zau9NIJv$vplUOvQsmJ*|sJ40Lq)}!Dd4eGxsEs6kWy!Af4XAZH=l4Bg7z`*3W(rcW z%CTHcxnAmKKUpn{=}xT|Ru+{n?F!Kn@h8T>ncp+kHBJeedKSGD45SLC?m8RWSBDB) z4uq*&eC9}filMII^`dI7cE?%n4C7(izrUDK9$u)$ZzB8JCCaPD~a2 zFCjcrB(>c~5(#SW2xtJ+c8O(@FX(W8-qq)mTCMHMmaZ8NaAl4bJ+N!xR&q!-radoY z?a+$Zn+_tE&+vko*b!ZLCTkz|1c)l0i~rQK>;Rb$UC!#TYMI%)vqRk(NzicRn#u{( z8QQ$xT-(ra>si=~$01ESb)>n!zIzsjRCAB;8mdi=Ik`cxoT)p0d-=6P0FrA=5YVkJpHrE|2|kU z|F;@S=>NoC6^$MLX*W6izgugNlD6#zCyduj4Z(a!hf`M8vpxk~u)g}fC(JZBj_E)) z%vv$-)wlw|m_&!J4`rKlMCFzajby%f_JB|@VIh}I?mm#;GS32<5-4Jgybd66-$fQr z{zw1m7FX@+C1`^wMpUg%X*I&lRGq9K;P9zM&A=a zF$}1bW+IZqa`J6maX>CFuII6W1DewNLWB-)r%UxN^zR{BPvfBRy#v`6kTyQ(YQ7cN z10o8ghciO-7>5E4Z2~tMM6%y(a1G`UIcjRPP?vC!c{Y&;z1C>w=;;1!FBh!noxZ8) z6tMk-z8QK5y`4nKP~*3cMz{lUn6cx6V^K@owzSF9Lvb6pYuvY9pnOWupb5G56YR7| ze(J009Y1U^8FY@hj=1qNvH3v)H7n5c`V@iiB1;Ca3jJWeD@%b$V>1*1Zn(r4JZRXF zKUWTTo_CQ_>6|x_ZdLeFl|W{?n3P=AgO!#(w@1uj&wIPnDe6hHLsek>0q6#FZv0i_ z^M#mmL?^6pq=PrurFr&AWBSueC5+q!J{W9jrSqatHgYPq%<00ql54xp(8=CL$VlhVJygxvkx&rSeAPT*=033Q zkW%?06=-zl`Ac?2oU0?~qA%CQul{i9=5P&{v{f;`a9;5wpTz4Kc8>DBy3&R`wYpB0 zIf4C#^Vrjco2Ll&DF)@G`WdfWU@v2EOs0Y-FTaRHxYwLWFJRvNvQP31l5C7Gh9n%%RFY41WwjX%9D%)Y$`#YU9+D<3Omvwg+Y$%uG*NBEb?w=NVg;<*u z`DC((J^S{k5Q%0yx&rnOUi^|1+V~o20PxS-|9{>t1*{y+Rg4Y)!|n2~ zO7(xXUH;E$|98+oS3H)g8{+jjDY|nLnfliGzO)TitRx&OhMB#%wdw?EYZ+s6aaF93 zqRE}^zD(-hA64fz5>+Ln8Ac{2fgpx0?H5~1HRt!=ylvgaylKBOkX}0&x_n!i7>(E# z=Rzf{oE@+?6+KA<$YsU(PoOtoD7aHyi(kwweR3wX;CVS0A4AP|AR?MxMsn&bCtVpaH%j+RnTjzkbr(61V5hvM;te<8#^5 zRBcYBDSewL+^*amNY>!VfASZ6LFgcDC=pJlyo><(GCO)0H(2YwMA+-r5;N;4ojiYE zKZka&tPz(m>DfaW4NKEak9M6QkHCfwefAnAFyx~7x0?3RF2?Q8kMeEBN=b*bCiEKJ zj^qu(j9MemWZ&G(fLa*oZPF-QHG#m|J%)y;+z8!`Q1rlT7f zu?1flei}QvJvZ`n&g|>TXXRLZkLE$eoADd!_gj@JeFr8u(!k?M=maIu;b%8@lMvKw%; zndU4$=a`Ln3bHi-Q}s2`7xstSbIZrW**bDN`-h>EdAKHOVlQK%;$rVeIe1ff2{IN{ z5!X{gZqNvW-vMCNv>Eys{YNWxA%>Yf75B)}-wh$YVhqY6IC{ng$6}1E-b77liGi%z za-`OHNkU%vXBm_YS&^`uw_=d53-pG_(iwi>3{iDMHc_qmAqBv_a)76o=M{1MqYgd` zkdu`iYN0vERL_A*$xSv)2#|vL*6cI_Oz|wi6U2(MmysPHq=VgynLDh1R z58r~XWsF`k3~p>+&&2ZumzRj%4{N&z9S=6L>&c;G3xI`M za0-A$QqFX*24KgxEC@banY|3U18#|OwUX6pi^{i3() zZ8CBt<-oztZH1C#vp-`)Nyi-ubHvxlZXQ3*rv3E&zVfI+H*Y|CYZfxsqgUKwj@7)$ z)h(mbRp2pz^$kApma4PRV^q?}xR*HC`<(hKL2pHf+>BFp3OiK*#Ht-MW>+@r`^jfu zqE3|ainzY#C(ZGhQ{(+8kCi4lsA%XX0{}B7SVPtS)MD<33}ISU%(kXIWL*&<#~1jf z@ln#j6@V_dn6l?rVIpZ(0ZnhLhP=5ZJ9NiVxL6eH^KZyZ6g07TE#8Yz{Ho!P5Z6VP zNEcN;Y*9i#0+X}e;=alt3i;c*`}WfB#R(zqMKnL`$erlwm=V4xfKq1SZMl(@ZJiKq z9OHG!l0@^7q$(lk${ZWt0UY&R>Pdj@zFWRP2}suSbB&e~C-}x|U6y;PkB;RlGi?Be z+%ILW#qZ$fl_kfj6k-8C*U#tuOUKzBu+-tPvcjO2`FOTp{BOYv5V-f7k9_^LP{a?J zoPfV|A%6A^>|6o%XI@JmzL#PcoOryLIPs&ae-_oJ=lO6E8m|`Gr#Qz38Mb^^aPhFw zS5m5sKV)~!fG*x1M0N#^(hwW-VlPpIY#q8~^j2GlclPD*mxZ!Ba`E84T3QADF_VWf zGaj|})DQ@d0fnKstM9ncX5dR~VN%6&p2dnZ+<3Y_%Y58ut`@rkwt>;+_nA7jSW_*C zE`Wq)uqXEbS1JvNDL2Nbu%4)mHNjr@EnH#A9v1#8ZkpKG3+idglaFv-870S_e^7<2 z-WZ_E^~AwNWjDnHHcV+$^c#ORmqQCz`j(1PQH$Uj!D@IwR;_s_$_L!%g>NT(uUVez z-~yw~4*84y5Cs?F_(5(R589H#z0~3=Qjr}9Ht*}+gMr1p_PqOH!#r;-p=I3}9eGyU zb~r^k11DVlO;2>uo7DH{pM1oFZH+oMM3V66AqR-ULtH7)btsVcg5nE1pv;uH2-!Xe zD$_9XAdi=+*T>c8T=MI7AOmEX9w=~LiRCv`PN1cz&Ut#R;cIJ0&S63Tnu>gr*!~tP zyq2w#nuGZ+cFHl|>Is-~VaBC8P2aANAWN}T*~d;$CsX+1U-&6M3rUAdyqIDBy3wd9 zcxqQp80&le+_!pVqJZPJw%LrpZA^Yz{hd=T;j}FiapgBdjV+a+fOE=$W)PF~wi@_} zYEPfdp$r>HZ5A!9F@ZIsn%gnE{%xP1 z?M9lLfe_tH>-$d*#GKLQ7HOle6C)4KEwZZuBV=Vf(@xhQY?M7_0_bXX;#(=SSNhk< zzxu$*{1KSzesS*IPne^Tth5J5glIUZJgqEOn7p|%?BuJ7u`ZrD311d6dTw_}XaSv# zwh!7fbq*{n)(et&yUSw}z<1w+kFo%{zI5fnM_v;|62ug(P~>O+53@4pI1L?Au*XJF zlg912e0NN0!U-~340d0ReQ6#EbQpB#NTMdj$bO$K=z}w3IjCHJsT5+i`4%bO3bGoq z<(&m0RI)tX;W^36F?g+chDE7f)*aO;RG4xmB~YS|U@_y1`S?~;yZnHUJg+_DAZY<$ ztD_+5X^{0|i~_Gp27y^44E-`et>N!hr-dSDH`@L0gz>)IxO@I_n-kNCmqwk5QU}bn zg)i}fQAr5BNKCtO#`KLJ62wRo)_shm2(5ohibtSL9@Bf&G z{1tY73WRgOHHR5@5WJ3dRewhqcH80k^o7S8)%Nwd@$cfonYrb`18s>_e6Dv8#;`f< z&mosx?{~C|K*w*%i+afR>YdrZS{p9LgB6@1UWW?#zO zm65X3TAV^Zd&}Pr899knwjV`;lgIrD`V3lv39jtr_rX@V`&7dtAIF5|!^r#v-wLR6 zL)iv+a!P-iD4_a-N*3B1#Q|M9A`9^gK`>E%#(_uIiNT<^qrDp^W*eiVpkZN7ZY^Z^ zOZ=!%bX4{dEk5mJI_NPU_6L8vJM2Y#X87yiGnRU-zw9ilhgr`VO41mPA}xv1iE-x5 z^{rMp!84gGN8~U7&gG5!*=3?PYl5c!wlA_QlVBWI!|}#u8S$!8@9^B+lVj2WscsjX z)@o)Z2}o5xpa%aQeq|TX6r)P*5|q1kha6slZ!{B^`b$r2{jciSA7Dp_9MI*whvQ6U)|0H&^t~EEa7$q^*dQBPGCW60?j9ZrH1IW+p-rlvgw+bjbU9up#hk~* zlI&W@hL8+AOk1PoIM9ZIVA#eAquyp8Q)Tm5OG;Pt4_e^Dd z-Ej%67ldJU4vYb8j6b^f!#7+V`Pz?#*nDRu*{65NJP(EFd}oxhMm}Te`<1Iw<3W7} z`V8cVBJPn?$RHYuqA)Z_z|^S!H7p6h8o5+7VeDN~(*@*=5avIob2yh?!?bw#h5rBw)FREYj- zkOj@@9YY3auZ3Fnn_+M0nV1Ee%Ff>**XCO@7%I&cho~jMR|lD?M1t$M5{@`T(B9K9)Ap-9Dx zG4PO@5bK2NHPBck`)lXe`M%fuuFsfD2OojzT_U%|TffMF<#PrRvQ1kTmJ}Rak78G# zP#cMN&d`V-x=y!;;pIcl4i;ku*+z803goVJ-D`8%jrf(1!*DANxT$JXT~Mu|xB6z} zcw6KV*ii{U3Z*{6Z|rT{mo-&N-V4Bw8Xx?D&~l7>^npURcz2ozcwA;Pz+Y-RI1 z(^pJ}l4m`=k=SvBuIGp$|HbcuyNemUrTYQ_ZMPWiS{J}*^Q_m-0;aYYEqFX6o8v1m z04^-wDwD(27wtr(+?yNg9uQ6~!Ku~!mdf8+Kxo^!R$|;UeEE$4wvtobHbYR}-7oIy zCcWdsO=x2$>+(9_9&*S7IQZ;iF(9cLvN0|Tx1N?Y@=ZDldlut-;$%Y*?{b$(M*{z}oU*hlC~zX;@9}0f4RiNZ(2Q#iFVtQTp*UM^sPR@5!STc?pCH5YnA5Dym;8 z*kvS$Q|VM;cWfB~T-cMjZnr6hq^=h;g;}sB^Bj#&YffELtxjDmsnW64BNgF|ycHAD zZrasDm-dP_DHnCnV1Ne?1*?oX(157Oh52>b)Jj%H>u&#pvv&v*C2G4h%eHOXwr$(C zZQHhO+jgCD)hXL{RiE$gxIMZZ-S>;gNsco1AT#&7*ILh_x_}-YZit}LG*Ni?=m6Bp zR@VVlOw%`4AsGCSb(~?yDh4F(=@U^x=~_L5px@qup?5X$_j`tq&C&fnq|oJI|BlxH zi7&1O{o1Qe<=fb`jgBodxx^+*c1E8V)Up{X^O%0vEwtR}&I7%hQ}Mv~SN%jV&|Ikr zhX6UN<2R9%@&g#49G~?tcN*mN$WVYI!(?G*M`Bp2MnVz0CObI3m5&iRNT_9IV8@E7 zr+hJUi(aonrsvMguN1x(cax<36u0T&(g%LYl6@n)^UgQ1))hV)bUX;O@c4Rr=7%HJ zXaZJ(yN#k3AJJ&`>UtYaF*J<(9%JQ{0+ehW2C0FVtT=#x#+$8|&o$otud4&mzq zk~~LmVPP+hsZ5O)#KUI4QRh6ID&hvAZV*(U>#`q3TY6uTnx_(%!$ERkhXfbI(MXlONk8mk$Q6oYt1EaeY8h2%#V#JI=NAc$`6 zIp@I({1A2HEqtHe?5Dd`MWj*RKYz~ zB2n)XFw&(dRSC)W7J;9RE|?xCEC>%t4d3aFqlGkz6^v6;hV(#T!Kxq&GRPOLA}z3* zzRd*kS2^!MIQWpNJB~)2QnI~`5x(X<^Ro0J`=NOrvyY3r6ILLC?44!+J<{wC#w zC0$FlUwS!WA9_U*`4g^puDM|$E4EXDz_4pj z##f8hQSCzSEfr107;d1YFAD5^M&k?B)F!sU?V2{tNpl*yavJDoB%6r?BKw_!F)mp) zg3Uk;G*Q>Ra3M_$LQ}&FGjSs$#l9Tkmg^xEn~MTSv%jdAcmkm?SSJo=oKW`(!3z_E zJ06nLi_B2E2D;H!X(E;AZea&x{K82;dZI<%FvD*C;`{7@++#>HlJmm;93W?uGsdJk z(l9YIE)vTVUS!7gJBZ2&fahW{`eJ}xIo!Mz-S4Hz@$KpO zkbm@c`wXvhTWYtS#v0*hZijDbusK`IEwZkq_;`9_sc@&9G zBKl;IinISt#aRSOiHNH~D&C+ay1?ah%ZLin(vb5qS|zvO`bGG z+*sW7Ua#e7RYr3;W<&LH zq?1#tymhKQ*wzT1fa|UJ50s7E7Avi;Vu5+wUlv0=MQ#5%R` zh*a%S=szD$7Zq`@+O=`?b3jPkd9wxx-mR$S0)xIB!Gf{q2Z?Cafygw?G^sZ#9)-(N zD5H$0?9M(=q-Zy{zI1te0D0bMGWL?v2!eg!c_vsu8tO_*zI~)G9U~k$GL9r-fr0Xl z6C=fB@vRBA&snzls4dqkHqprpt@pu6KW4hCMC(YZXriq4nPagY(=EIc&19zu@I3M} zUN56qTjY=qQnrRg*c689a1x9W^ z`dW%VPTWH&Kt?aS`U{TQYq29WW_eOWrP|b{-d%% z;(nc?c`6fU`>5S8nKKj5FTYX{7kpfT=7&6jp^!SE$lfaifz%56IRmJ8JW6ne-|(5j96^ZW zz-gdTUV9Zs(Z`Rqxp-(WGLrDr;axgj8ohd6>k~|Pq`WjSgs7G5jv=Av3E!GU&pq+5Uh+SA5wpkK^dy3Rc0AU2%qLv832)50EL1d+T{Dr(H?LmL8DWb7g zy6OyZ|LA&0fKK{w?EEutn;~bMZcbxVS+mA!&b-{nE^)P10#7A*@Zj4(!CwOg4ACSa(Q2wIGZJI(XYOa2t`w+YoZ{T1~eX*d`CMS*$t5Z2Y9 zv4SLWO{Zy3(RC-y*6JeDq+9J%TfNFt9}&|^JSbZ;Tk9!G&izAMy~L;1F*Oh{U3`Tk zEMhg5Uh5#cIOC4Gt)yi?{g!A?iHpb5VLu8UJY!o#6t4QqmiR~D!b!04-%pF%JJ+I_ zIRUCsG~U$0=p;&s3QTcu<0>eS0pU1EP!H%G8mwb{c;2lPC+W;bKg8Ld3<Ji-o_sEZL%)m@6M#H^JEg=@)Og>AG)2_g!sXqb~V20!+mQRq$idqtxW zP41nI6=#>`xHL{cNNvZs_>>^Vty^%!C#?PA*^tqmXzZ){v5o7CXIT4rs3C(LvElpQ zH;{T2O~MkxdYWAJT|=8j&Di#R@DEKKPw2UEyDnNlc1WNd1p}N}=mJS1=J;cT$Oy!R zLe)osIE2*-tt>r^>&UVV-bDtK9-QAe>d;I4)GOFe6yw!pDyPI!hZbwFbY!U^s z>-p>xch%u)!tQpnsaKDa1!AiA#)RK?rSq}T4ImMfVj`|YPMcgPV{kuwW8~fl?Zgu{ zec2E|5JRzNe{w=v0w^g-UAIqC+PtvPR)wR7rowdVjKk|z7+j2g-k_z&wRoK;WSw7*`8h@;LTd6ugEerFX1 zyHsQQ#whc!kQ($g%LOnR&|e~{*d>WcW(jz^<8yLi82Qi}wezK{^@VYi@>fY->Tx4G zOT8{Ux@C$tDuOSxm?b__F6!dK{UTMNOhHfij{qLJjQG{Q?+1cd;`CU)y1L@opyk;`Ei^KYRh5clFlCV=D^cu?OUy=$L$GeI zebK=peXxzXy-GPtOjY?jDY8y!LT&^zy!VI9>i;`-Zbv2`8RXYX6nK~ z*9L9qA$BW@L?gx01Ll)i?AxL6Dc}cDh%QT2y+xha?6+m}z#)eRa$+`fq^PHDb+(ID zL6OTSSYIWb3Q~g>gkMoBF{G6mkpCHxMXNXv`T@vrLu#*aV!?GmLZhlPK0(HGmcjeW z;!@EO#Za=)LKV{HU?S(J0;KFdRe5rE!8+lMU1h(wc$I}VH>%IC)5mS(W;#_ygk4rj zkydD3Cf5=x+dL-pk}HE3NI6+$sZk|p!?Z!pJxD>kF8-?EBFc=Ssd_Zo*My8JqQm`f;g)N$w=$0PN3^xf)Pe~S!Q_F4TKp(472Bv z8D(|@XTlU0QL=HRbpKl?fOaU6s^Ui(Re25JGF%fO0i|doyKK_cpDekHaDo?BTh&#Y z#q(ts7MPvyj9av(ofZNoc$Z(8+1BSdV-BGhCG>>I;_XakB`7x^H+dBC9#n=1>?uIp zMzf{RTFW|}!KI?+(!>g)+0LOo+z?PKakkZENZl0!*Y`~1{BOvwXe%wazF_hy?Lvlu zGG!cIaT!gMbydfJVaF1q6&81Hw6P7Rm@;fhj6m=>&$7GS6T<-$j-5LUrlH38wZcf# zYrL9r^y_=eKC}Ul{vx~Fh=3*`myly4w|6d?rGXT0;j@}*E2%swV{Xl(9K(#Vs(uK| zM27pVQZKqbYwM-`J46^!m{AtQlbKaI(M79W7E0Gv=^>q0D8j<>qHq*enoT_JA;{my0v7gt4JG@m=)JW;-nkrp(A2;FW&c(>|tQSrAfoi2N-`>a0pII1igqs>K?@B_{V z_u(JoHH{FPqKs-Q%Lplz;+c!)VDx>1J{dkO*mUK1BV6>TLXdbu;)sGtai7%(>}5P+ zcYk`CbSY|4EwLC`u8J7^jXcR$9GM^HWpnrBXm17EVuX_`Q*M(Be!6G5SzoSfeC{(| z<1RN}4rCOP9_W%0zZ{>Q%>FeC0TR;;ygsX(9XLMqdx3`^*qm?sGse?PnqQnOmy@c< z7CLaOaYnlV1|nLUCc;Ngq;XR}ECJRl)c@`aFPmW_T_f}lk&2=Jx-|{72W6I_=bne1 zVxJY|E{t8}sfQz5aqv3?6OGajZXst0#@qAxYCe~SWqTmH+^}iA@`?}8!qa0tvjX_pGWb)2lB{SxtDAdA--NLR4FjYV$*DFqXfqq6x6#2@9FGqwFX<-eGQr zD1xY=mV+t1Y(6{unRu%JJy41j$#K}kWph2YG4dW4e-krk9>*aTEXvx6yFWyTieM~^>C`@-xAq%L2v6$n@=q(e}p9`&C+Oi`D?i{Tfg_eg3#a?zx0J);2pW&%5 z3}&wvOtyh!F6Exm?^6Rs<>1L^Y#(5O5TY0HsZmp)!s$$ier6YCDazkZdDqo2s8T-c z__q#SZe7poG>7z)e5m^u_E?`R`jDi6*!PV04leqE*@hd0$JMKtOQF!-&za#8h~A+7 zNT!zWY6M|jEnU%;y~h(2<0qT2#E{-z+VxBA`D8Q6(OrUnSe0BJy1Hd<@O%<`v>(bR z{p=>&3fWnFvMb)-gOoi53I9wsT5C1TX~L&Jn-X#5`0%;G(x)y?4vw4);svn#@%(%F zJXWw?EWk3&sf0YkS7I!=_&Ruf+`0d@60SIHGE)ustQ%^?ZdhPrf6wxJdA$Mg;BPXv zNt(qjk-UgkbvSe=BCfyslXf*w;w-OBUxD+ed4*ems1H~S=660IMdRNb!xy3>#ucNO z8@8~;eyYE=x(vQX0FK)Ux!EmEqc)jS>`#iKYn*b!Uz(*#^e3q@d+E(nE3##qr4HPi zralU1sq*cURHLvwDH}yfjz^HP+oWmGF{mR+p}y}>uGJ!sh1!o2QIczs@z?Xkjxsic z9$*ALW!pr^HFg6MTp+6{AP1SHr;BoVYiYsq@pgb@BY2)L#W(I8Fyh#P zCgM6Z%$>JB=yQtPiYmCDnu>K0b{N$NI~?dS>*@_k?4 z_=S?((-acLn+^NJ<^n{_^D6hr4|0&;*p*)+MDyA(gPt)vEF;#aL9IM$p92=~Z_tt~64? z6Wii3%O1;n0})+Z4;PG@y9MjdCjL2x>8JjZd&6a2g?Zp8oWD)keSZ~g8og!f@BZ=| zh2IYy4SHOjY-G;t6lpv8p8KXy!!KI8ZSV3ij=LYKr)llC7asgcR*Szzu zK3@Nffwkr&*{Mv+=C_ivLH^s8X3g>K=}`dIt(U-BC1XUBgOU=%fJ?Q#uOG?A=xw#+VT zt0&>fsaG2X$aJx>t%>App9}lQzaLY{Ub*ea<2HN;K++}($M12^VPYN+X76zu&d`h- z=dOP~2%-m5<_i4gB_Pn4f2R00=V#~~o?l=Dy>FN(4t^#8G(L9_z)UZ|UUv@2U=Dcv zg^z7HS$WZd~(j0Ek=YD;yfl=W!_C4DeK%@7jBC*fB`-%=2_~Fr`={dRUxZBVo?a z=4Y%NQ3OxKISvafI>AQ3p00P-cHEHVhl~x^8w&j;rJFF^6o2g75P#0xqLgxICTv@0 zz#T25M|vA$1z&Or@ff-Me=GV_}7C`CKEajlM(y36GsE&k>UX!EI2eLO9i7~ z25^q;%$=+LD%0BWY2kh2Xo{nEOgx$1A0L|>J%9d|ynL*Dj@l>Y@A^XVVG}64Z&(^a zTv)kL@^ulU&WQpw7N=0D{rVGj{NE9_fOvn!vlaeW`n7fk5DQb|!C-K{wU(OfoBqbw zUpc#aZw0Fy%=AB1{rE6>1|3*r{JcKjb$41TaPzm4?n*lhH@AHlV7;J~)uovH`T3a1 z)$pg}>Ry=79Bv4#KeGz)2yJP+e?p-OjZyCp0i=y+Edyrdiq^VSB2o4f3I`eh{Gclw zi51ST6oOk>tJJq4-~C|P+-`$mEpM^R0|g#GvWYGjU0~~kuyo{gr+SP z&s#Q{6^KlGA18A~ee-ve1N4Dgzn&^P#-liA6LGh9TjB5%hzwCZ=eE1&GSCG$dD z?^bSU^nH#D$x|rF1bLHKbY0bb<&V`Bnn)bR}%j!;O!fa+QzSZPaFh$L&)(M^CK{ zxkh?V{1G>PuFZj$OaSis zv!YT9Lj2&Runp*NvWCe-skDsLt)TDqN1v@x7Eq;(ZN+rjjEnY*%uGUu#Z>Xn0EpDFweGV}v;_UyNGz9w3l6QY z;L+g3G;Jgp3Ypxd`0>l)T3RNO`o{+s{nv*#ik4-y^(aZY9(N zV19ds#2$g8!K{yqBu~__>H2m5YGOi1cp}k>IOb_VM8d-B+GQ0~zK8ReKqRZ_sG7gI zUVzq#%bs2PfJ;&bTIeOBwwr;;SlTW{yGx2;D%_!thC$=f+$yTB^@Qj8GT5c3h10%{5p_U zM5;wG??~Z=j?*;%A~zHdnnZ@vvymPt$zh_$`+LGb5XK@!Ovy!TMybozW8jJ@kR`PtJXwR2KYNDecS zNxXV{_UOJ`js5+$rG+`Gg`6s*0J4&jIQYw8b?VY(~wXl@b3ekACnR%*ag4Yp9;NJxmP)8OoRu?-`CI+AyTlxEY`82g+m@Le1; zC9#myRaigTAarX9`UVOoo(spxqUnlGZpnLtW#!zRS&-OQzZofLNGq*o@t>@PXJ{5ln>LB1o!k6Y496saCSDOT!@w(8M&_``bEqitL zKEg(`(>L@aM#8qyilK&PUt;XNt-qQvq_2m(cdg(vzNnopsl2T*i|ega7|KXB(;3bt z)IvN^l}*husN%O30dyAL9Tw7z`q{WI+l4a2$L|lb$MD*&`~$u?M87)KB)^LupFC8t zO-4-;dH;Alxw13+yhB2+w90)e{x#Yv^ra9bjvL}h)uQJNpEdGD%GZ4uXCMYYY2qg2 zNVO`;a%y)iOa*+Tjk_ArydH^^2Bi-P%BEWdVN*$7YfKxi!W_kQyyuW>bCpS4dT1L8 zjVzJBqSA9bI)a1V@fP(i{pZWV%69T~UD$eVQ291#rS>1{*5+DdQ2JWS=?{>qAjT$3v#0@UcY@tnb@NRq^N7@FoKAO9~+B%v3 zLBL?T8O|*)?vt?`@ff?(a_J9_6ON&booE3(I75M8JA#pnw4n2surl7X-ZTx>>xUpV z@LD0KYHcj8Gx*X3&^4cg394!em-^V|^sG@)!gGf|zXE8{2$R&WLL?|Grcl>w_K%dh z*8*tMplOMtp8^X>G-wbgCXG3oxoOEamU?M5j?Qze(hfDegJ~~%Q#jCFZqRGl`Jrvh<3U3^bhkpHKT-!CvFvG^Qeo~k*U6k| zXgcXVk=$h%67~F-a-5B^zGKhhDLup7y!j5;#Jy;~#JY}@^gx|=lPK2cFB)bwMBZOZ zDS}HP3@wL3pb1E(Uq%FzSi6AYk>q}iaVs|hQZ6@qJi$v^N<*ncJiil%t6b#2GsPdm z@j?Py@Vr!==RV2xRU&*?w7^+4P1=`W1PNuEX`pj_i4fWR{c6P#D2=8Qt6pByoc3 zNWMFQbL{`1a`#`;$02=i=7*b6$CNXr36pS!KqP9|nKk|;#^lmB2V~cy@XkJUExS3P z0fP2?VkmPQ;k5mPrw^3y!f5L)x8$eX@n(|T!RMoOp{0`jyY`~j1Or2YrLf-=(%n?; z#4+tk7*C3eZTNQNwT#%e5dJjZ8m$)2ANTXNi#zAyrJ}za6m>D4+iqg= zXJdlx1~WGTh~-dIiUBgvsaI77sSf7EsLmO@GjwY8o&s?6>RmW-t<0#0S3!{Hr zIL~%t=n13v+e`z`ZtGa!Jgi7#!x!a12$R}6IwFIva|Xs|7N|eY9812eufLyO{XEHe zmIJx#fF`)rvj`d-OD_41SDHfxH4whZOU6l&&7*m`i^|gUl@_+P!2Z|)9@TxvB2Tp_ z21tNroLTTtiA-68ZR6dXFqJkVp~7?1VX9(n(}}R}%fCNwOdf?*|w-LKf_uLzU39VkZ?dw>usnc;qe+ChjUkg~nJN`4x>eo=$ z-)Dw1xbPZ&1E@1SKpz2vg^Spfn}(qjz0aG*;wL*Q7>5Qu{}73r6mL_Igkrx?iGIAv zkF~2lZj0Ta`Bn2{IZR)|q_wGv@T0m z_+nE1>R_l}kW@f&+6-O7Q#Y>)X6HORKYP$cV!jESR9Ev`bldm^ev;O-D&q((Yj~xD z0VEX3Aks&sy*IPDPRrM=-4F}nBK}mvc9=EgFo*(#2YW~YFNr4N)qwU95q_m#okAz3 zQ>@mmKMD!I2zWR~6(K*u7uLIBoAtQ3iM>7?o@Cz`G{?=vl+AZWjyaDwJ!JiC5l zlNMlXqtn^p;`L)(+bN78oIZgP2s&W9kB^mR*)=Ad$~RgFR%A0SqcN@c+_nB*GOFi{ zGcN+K(=5J@Jpq+f?*aM(IY3}AFs)o*0(+ntSdW!2ARyye;LO`#c?4EMA&UVcE@QsZ z@f`s6uYj~7S&ZhpK+r;c;DJy;WY)m9HAj#l7KRW@qc&r>!Ppq{y!yp80E*)|`8dff z97RKKN~g~Gb{=RYh;ip)z*XC_qG|vt7rsWq1`NMaiqOS9w!X)DokIjYjLMHbN1;y; zU~iL5fq)V^XHZl#v(~7rrGN3hO%jrv^Y#c7O8DA=;eUl)@v~>UQw0&SZc^Hq zl(uU3D~{xSP+3*L0#6Xe1fd%@i_J?P7Uj2J-r^!2#<>x~1zEsVj%HbTU0`0m&m^*P z3!!yN0Pn)0szeD=ZgNTNQ;5#PmEJDHPc$>PU-UkqG${e%H8~R17YU-BB3y9bVa+xY z_6Et8fUOac_cLzAX;7M$M+u7b_+K{nhm|sY{R2-M`&NO#;>=|O^iO0#YeaNx70pg< zG>f2z8i5*nIJ^K+MW&J>2wk4M*{hbigWp=xFpSiJr|+}PtLUB1>8H_06_!fk8!GE= z?~-DG%Q~5h(1)I7UcmYH{YmcjNzcNrd^lBlt=CoS=j;yT%MFj{sNm4AY)l} zF#~ZD*t1|=hX(#0bI`w=ZmsgrA4j&fY)4Mq6JXMp3Ml|?_2v)q=U8K~DOm`SPVu8h zP(IbV0!jPU`R5cz@zk|fu$m@aOR&we3bCUB33dMg(vGI>%w*OayK-OE$UBP#i?L4; zekq39PnJW&(Y+psNwIy(5r=Cin7D6-qh228?)vIK2?0$vA%g zNk|7>Krkg^y~~9Ne*N99V5PWKy*G-%M3VxAWr8YElt`IZSR9A~P?mZ7W6Z$o5sT2V z4X+cPns&vDaaIgD7~b1$0{e9013zs{6BF{G;@tcddbZppH>j7YmWn3c2(J;IIz74` zA^ad0V^Xl2g(?NLEoQSX)5a7az%K*L z?U)ewgUGcW8;kJ}Ze@ zbRkQjY$%|yN`}fz%^M8><)QgwGz=T9n(~OTC}K*>m*bF+*LH)K$$pBG>ykcPGz4*} zC1NUo2&>8^L=>d5jOdYJd|x+Rgc0&s-uhJ~t_u5Oa*o3ye7Vsv@|9^?Q>m))ajJpE z)a*~z_%H{P;TU6M}JIdh@HUAs5xGH z7wXV&1bQj2izri8NkY!u?`q{{T&A16`>;myS=w3h5-tEiTsSZ!xryMmys^{-LNy-}J*onU02UF#tIviRJ_WR3jP2+FNf>r5(J&0ylWT3ab z=eRZeqXy?DnTfr91Iw{anr(O2%f4rjF48>+_`1IrfCB@~)Auw#|K2XpthznC_MOo@ zg@=3?z=C^!0HHs7YM!6j<1Ino2U2IcI(C+C;Wo{m5BsTZ$pf_>IQx6BD+Hlei9PIYQx;18{ zSC?L4OW>ftB}+lAIM-exF?Lhpa_K1e#5|s<*qhZ!DKA+bCN2KNNNNgzx z!E9-xA-8=~fUF8l=Z(QkDF3wwNI1L5`63>X&Gqa#)a%pXGxitaVA)2#q4SQ%+Qykh zLM96nEdyiKo16Xs%4RkxvM5$DW?fn8Vp`=cF9{b2{MrB8!AVAVDc2B$v7+NEt@PYQD$7Y&JxY z43FEukR~x+E{=BmDSv<8-Oa~qiqF?*oc!w82(-qNZ8;4@#R|_qBo*F@5FgFFlUvz* zb7bil0!ztsR#}HB)c`_={jMu>Fp-f#4+!p-x*&m?_e?)x+8W|1Lh>{}7NELv6>SL_iI*Ee(4kW8^485|W@ynGnlL(UOq zP>s3sn}(5~!Bl!PNYq;w5o~@4G8%+pgfomMkK?3GW8yv%%3x`pAQM58XqS z+?wFf+6Bsy;|dShFL-*NR1y#v@RvNVT_)vzq0heq({+k91r;Gp!B2+N0u__dEWrr&E}l|`t_Kvh9y=6{S)(Gc;_@;=Z24-|Dqv`9M`({ zVuf8Ks+4@8LT~W50hzX4niRbhj=tF2l1)@X<1uCsWnfl+8&!l22{4Un_9XJD-boDt zW}l;d2)PzX9}E)ESX#q)DL$Wty8r_+WYF<$PqrCw9tXcEmyC4HB-w+;2j9xTkSybl zZT15zZ>xwG=FR(ifMq!0)b)-h4Fae5BAP01;y6$LSYF3VE$ECN5ChZNp&sq;NF;2k zwAa$g5eZOJe!IS>$HqQ z8a7NKrm#-tWQ3PWsNu+u(`Xhsg0$u%k#(!aegS=ed?e-!tj?ZDpGM-v2qOsrZi3wy z7j(tu^o>kfRyjsS9DkS~B(RFHW!8zP5GnY%Bbp_NlvP5!cxy@3zZw*}QX(Nxu`NE1 zCx5p1(zCGO`K3reA~O$)6Vo-H&U=Mr`1zDdvQL+G5lq<8D-KoOdXSB#oT>0io>Y91GhtBhEmUYB2NpgAVOtjq+nMjO29I$ z+Jir7=1Ik*q2cZBxy>rlX$1n#GY?_3B}r-b!_yP>&}g*+6N@=GLi`5F9Jp8!G`0bv z&fNNS)fzP#v!f-&Cmg#alkQ3zgm4-(RkY82D|k8ASDLFH!6= zlEiCkYv61$j(JC0T0_Mvo3^O>Bml*WMXaW0CX3>(rzdX=4q^X0_+|ho%e4=tpN9Os$$L)!HnaA5SwG`78fyyP(%2w9J zq?If)K9leJI)8TeYem>E>!_0mNA}6GqeTaOvmc!?j8C3Jpf6XQ+OQE04}MOTMePcv zlK={UB?QWLX9?Yu6R2CpHXInNewI1wYg8zlBgxEmmVaonAm3rzQaj`6%=07=dr3 zG|o_6V16QG3inCdc=M~Lcj)JDc9Z!M)0a9mMe|xbb17hbQFBi9gaxas+>sg9vssgo zxOI(9J2~aCFN(fFQ8n|haw17Ji=_wl0qtp0(Qd=)eY`xt*D>E5v zauBdP{A|*6w73jb+gO{u|1D2Z)@e+kEUByH0zMi30d@^0Ek?H%G(9wdR{2BTo1)i% z7DwM0*@b9TMaWf!pU<8oI$$3->WlihyG5V~m$05`6O_iSV@SUGm~Sg*d<=`m9&`Fe z2sExQPZQD{dRmK`hNFp80%j>e@9Rq$ctopTVHoe-i`wDm^|7T!9D|6z;ljKvgAqu( z8e~X6+d#HH(r+?*5_UQZCLlsfa#eTP4%5JsI z+GDbEGO5OpRQ(~%ha-_Mw8paqCAzLhOpJc7YkOmxyF_5zXT+KNad*W(wyjjVy8js!h&}qIgv;k~? zxF#!=Kp4_Zr-J+5AsxGU{&BA;@K@Zx7unbmU>BTuH-r=UZWqV9Mce$^xSDL=w{S&o z4jf*up51HE=E$o0J$IGy^eT)SBW!hG4@-bf214gP>^wvd(w=JL3wOs3`papQ$=iEi z(1K3=?uogM@NA0{5rQs@?m@pfswG1`|42S?1#ZFZmtX5OY$I+Y)_~1h?XXzu@n5gi>qZ!l=)-Vo^8tA(C6u`;%|LOrbuzkP-&au58* z#l-C1sV}lLhcmSqyAj?{TV@scZ|i;QTAi?3Mr$^_W`po60TbqJ_9eR7$7R|FU&*Oa zqC98S1GD=$_M2z0n75go0e)+Pl2cdxC&DKa7rvF>3leusL z$FV)j+>%)(DaDEJj%a9RqCz2*l3&!kK_ z!9z)Q5Q%#w>YC~0F+64vD|6$A%}lZr<`LiC-IwyIv4r1*(RCbcZyR52{Sv{=5PfiD~NF!)138ehl};;xe&{l z!jNWgQMWQ&Sm?=mA6;p>5fgpa6~4yIVRqg-(Rc@S;&-jTzd-+Slw^wj#kNHO0Qk@0 z=KtPN@<#bzI!gZMsP+E{45elJKaP?ceMW)6nrjXxn$sKMWsvl)zhoUO*nebiU(iAY zv|DOxNxVp@;&iY4`wJyDyb8aNECW9s1PT&_txht{!|K)Aq4iJXAe6^T1Afs-_6Eur zT+II50syXM&b}u_k;BNz2P)g|Bgr)y;v^WXoVgiJ0o8n@fCy}3igpGXEixHIt0MGo z;j|3!-0BW^UoeLcM=1Lc2e==0*o8FN&0u7I8=oMKvy#npt9cp45Tk)2M{(Ig@iz}3 zdkkBAapyYh!Mx=Vbqzp+`YFDTtj1j;-TxS~xaC4_b0c4bqvXLd#5x1tl%4H^Fxu&P z_Jor{4w~cGkRJsy$8ofVMwJequ8TXa1nO&oARho@J0I-v=L79Coci3iZ9SJ*27@-! zU0fBl)-77}IF|LvChl~{4})Lco88UtqhBu1rfXZ@J?)Qm+4c;ol@#^}50m4;qJwxw z2!rr15sixj`5Zt|3jK)mDVtCfAhG{2?&<=1in&c<0Qcn-gUJP99>?(u)A8}~^@fsy zX20`0nhc@OK&e)68n}h9kU@M$d|G9i75oUZm9D@r zG?T8IVlXgNvzIs9R1c$%#)<0>!bALqb3*!xA9